ui/gtk/menu.c

changeset 29
3fc287f06305
parent 0
2483f517c562
equal deleted inserted replaced
28:1ecc1183f046 29:3fc287f06305
43 #include <cx/array_list.h> 43 #include <cx/array_list.h>
44 44
45 45
46 static ui_menu_add_f createMenuItem[] = { 46 static ui_menu_add_f createMenuItem[] = {
47 /* UI_MENU */ add_menu_widget, 47 /* UI_MENU */ add_menu_widget,
48 /* UI_MENU_SUBMENU */ add_menu_widget,
49 /* UI_MENU_ITEM */ add_menuitem_widget, 48 /* UI_MENU_ITEM */ add_menuitem_widget,
50 /* UI_MENU_STOCK_ITEM */ add_menuitem_st_widget,
51 /* UI_MENU_CHECK_ITEM */ add_checkitem_widget, 49 /* UI_MENU_CHECK_ITEM */ add_checkitem_widget,
52 /* UI_MENU_CHECK_ITEM_NV */ add_checkitemnv_widget, 50 /* UI_MENU_RADIO_ITEM */ add_radioitem_widget,
53 /* UI_MENU_ITEM_LIST */ add_menuitem_list_widget, 51 /* UI_MENU_ITEM_LIST */ add_menuitem_list_widget,
54 /* UI_MENU_ITEM_LIST_NV */ NULL, // TODO 52 /* UI_MENU_CHECKITEM_LIST */ add_menuitem_list_widget,
53 /* UI_MENU_RADIOITEM_LIST */ add_menuitem_list_widget,
55 /* UI_MENU_SEPARATOR */ add_menuseparator_widget 54 /* UI_MENU_SEPARATOR */ add_menuseparator_widget
56 }; 55 };
57 56
58 // private menu functions 57 // private menu functions
59 GtkWidget *ui_create_menubar(UiObject *obj) { 58 GtkWidget *ui_create_menubar(UiObject *obj) {
124 if(i->groups) { 123 if(i->groups) {
125 uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, i->groups); 124 uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, i->groups);
126 } 125 }
127 } 126 }
128 127
128 /*
129 void add_menuitem_st_widget( 129 void add_menuitem_st_widget(
130 GtkWidget *parent, 130 GtkWidget *parent,
131 int index, 131 int index,
132 UiMenuItemI *item, 132 UiMenuItemI *item,
133 UiObject *obj) 133 UiObject *obj)
159 159
160 if(i->groups) { 160 if(i->groups) {
161 uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, i->groups); 161 uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, i->groups);
162 } 162 }
163 } 163 }
164 */
164 165
165 void add_menuseparator_widget( 166 void add_menuseparator_widget(
166 GtkWidget *parent, 167 GtkWidget *parent,
167 int index, 168 int index,
168 UiMenuItemI *item, 169 UiMenuItemI *item,
172 GTK_MENU_SHELL(parent), 173 GTK_MENU_SHELL(parent),
173 gtk_separator_menu_item_new()); 174 gtk_separator_menu_item_new());
174 } 175 }
175 176
176 void add_checkitem_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) { 177 void add_checkitem_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) {
177 UiCheckItem *ci = (UiCheckItem*)item; 178 UiMenuCheckItem *ci = (UiMenuCheckItem*)item;
178 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label); 179 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label);
179 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget); 180 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget);
180 181
181 if(ci->callback) { 182 if(ci->callback) {
182 UiEventData *event = malloc(sizeof(UiEventData)); 183 UiEventData *event = malloc(sizeof(UiEventData));
196 G_CALLBACK(ui_destroy_userdata), 197 G_CALLBACK(ui_destroy_userdata),
197 event); 198 event);
198 } 199 }
199 } 200 }
200 201
202 void add_radioitem_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) {
203 // TODO
204 }
205
206 /*
201 void add_checkitemnv_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) { 207 void add_checkitemnv_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) {
202 UiCheckItemNV *ci = (UiCheckItemNV*)item; 208 UiCheckItemNV *ci = (UiCheckItemNV*)item;
203 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label); 209 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label);
204 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget); 210 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget);
205 211
212 value = 0; 218 value = 0;
213 } else { 219 } else {
214 // TODO: error 220 // TODO: error
215 } 221 }
216 } 222 }
223 */
217 224
218 void add_menuitem_list_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) { 225 void add_menuitem_list_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) {
219 UiMenuItemList *il = (UiMenuItemList*)item; 226 UiMenuItemList *il = (UiMenuItemList*)item;
220 const CxAllocator *a = obj->ctx->allocator; 227 const CxAllocator *a = obj->ctx->allocator;
221 228
225 232
226 ls->object = obj; 233 ls->object = obj;
227 ls->menu = GTK_MENU_SHELL(p); 234 ls->menu = GTK_MENU_SHELL(p);
228 ls->index = index; 235 ls->index = index;
229 ls->oldcount = 0; 236 ls->oldcount = 0;
230 ls->list = il->list; 237
238 // TODO:
239 //ls->list = il->list;
240
231 ls->callback = il->callback; 241 ls->callback = il->callback;
232 ls->userdata = il->userdata; 242 ls->userdata = il->userdata;
233 243
234 ls->list->observers = ui_add_observer( 244 ls->list->observers = ui_add_observer(
235 ls->list->observers, 245 ls->list->observers,

mercurial