2 * irreco - Ir Remote Control
3 * Copyright (C) 2007 Arto Karppinen (arto.karppinen@iki.fi)
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
23 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
25 * Make sure that typedefs are available before we include anything elese.
27 * This makes sure that whatever other structures that depend on structures
28 * defined in this file will compile OK recardles of header inclusion order.
30 #ifndef __IRRECO_BUTTON_H_TYPEDEF__
31 #define __IRRECO_BUTTON_H_TYPEDEF__
32 typedef struct _IrrecoButton IrrecoButton
;
33 typedef struct _IrrecoButtonLayout IrrecoButtonLayout
;
34 typedef struct _IrrecoButtonStyle IrrecoButtonStyle
;
35 typedef void (*IrrecoButtonCallback
) (IrrecoButton
* irreco_button
,
38 IRRECO_BACKGROUND_DEFAULT
= 0,
39 IRRECO_BACKGROUND_COLOR
,
40 IRRECO_BACKGROUND_IMAGE
41 } IrrecoButtonLayoutBgType
;
43 #endif /* __IRRECO_BUTTON_H_TYPEDEF__ */
47 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
49 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
50 #ifndef __IRRECO_BUTTON_H__
51 #define __IRRECO_BUTTON_H__
53 #include "irreco_data.h"
54 #include "irreco_button_layout.h"
55 #include "irreco_button_style.h"
56 #include "irreco_cmd_chain_manager.h"
57 #include "irreco_hardkey_map.h"
61 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
63 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
68 typedef enum _IrrecoButtonType
{
69 IRRECO_BTYPE_NONE
= 0,
70 IRRECO_BTYPE_GTK_BUTTON
, /* Vanilla GTK button. */
71 IRRECO_BTYPE_SINGLE_IMAGE
, /* Image button without secondary image. */
72 IRRECO_BTYPE_DOUBLE_IMAGE
/* Image button. */
78 typedef enum _IrrecoButtonState
{
85 * Button specific data.
87 struct _IrrecoButton
{
90 /* Button configuration. */
91 IrrecoButtonStyle
*style
;
96 IrrecoCmdChainManager
*cmd_chain_manager
;
97 IrrecoCmdChainId cmd_chain_id
;
98 /*IrrecoCmdChain *cmd_chain;*/
101 IrrecoButtonLayout
*irreco_layout
;
102 IrrecoButtonType type
;
104 GtkWidget
*widget_up
;
105 GtkWidget
*widget_down
;
106 GtkWidget
*widget_label
;
109 IrrecoButtonState state
;
114 gulong motion_handler_id
;
115 gulong press_handler_id
;
116 gulong release_handler_id
;
117 gulong destroy_handler_id
;
118 gulong size_request_handler_id
;
119 gulong extra_handler_id
;
124 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
126 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
127 IrrecoButton
*irreco_button_create(IrrecoButtonLayout
* irreco_layout
,
131 IrrecoButtonStyle
* style
,
132 IrrecoCmdChainManager
* manager
);
133 void irreco_button_destroy(IrrecoButton
* irreco_button
);
134 void irreco_button_set_title(IrrecoButton
* irreco_button
, const gchar
* title
);
135 void irreco_button_set_cmd_chain_id(IrrecoButton
* irreco_button
,
136 IrrecoCmdChainId cmd_chain_id
);
137 void irreco_button_set_cmd_chain(IrrecoButton
* irreco_button
,
138 IrrecoCmdChain
* cmd_chain
);
139 IrrecoCmdChain
*irreco_button_get_cmd_chain(IrrecoButton
* irreco_button
);
140 void irreco_button_set_style(IrrecoButton
* irreco_button
, IrrecoButtonStyle
* style
);
141 void irreco_button_create_widget(IrrecoButton
* irreco_button
);
142 void irreco_button_destroy_widget(IrrecoButton
* irreco_button
);
143 void irreco_button_down(IrrecoButton
* irreco_button
);
144 void irreco_button_up(IrrecoButton
* irreco_button
);
145 void irreco_button_move(IrrecoButton
* irreco_button
, gint
* x
, gint
* y
);
146 void irreco_button_to_front(IrrecoButton
* irreco_button
);
147 void irreco_button_flash(IrrecoButton
* irreco_button
);
148 void irreco_button_layout_set_name(IrrecoButtonLayout
* irreco_layout
,
150 void irreco_button_layout_set_size(IrrecoButtonLayout
* irreco_layout
, gint width
,
154 #endif /* __IRRECO_BUTTON_H__ */