ui/gtk/menu.c

branch
newapi
changeset 255
ebdce2bb62be
parent 253
087cc9216f28
child 263
a0ea718ab1d8
equal deleted inserted replaced
254:13997c76859b 255:ebdce2bb62be
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) {
72 ls = (UiMenu*)ls->item.next; 71 ls = (UiMenu*)ls->item.next;
73 } 72 }
74 73
75 return mb; 74 return mb;
76 } 75 }
77
78 void add_menu_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj) {
79 // TODO
80 }
81
82 #ifdef DEPRECATED_TOOLKIT
83 76
84 void add_menu_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj) { 77 void add_menu_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj) {
85 UiMenu *menu = (UiMenu*)item; 78 UiMenu *menu = (UiMenu*)item;
86 79
87 GtkWidget *menu_widget = gtk_menu_new(); 80 GtkWidget *menu_widget = gtk_menu_new();
130 if(i->groups) { 123 if(i->groups) {
131 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);
132 } 125 }
133 } 126 }
134 127
128 /*
135 void add_menuitem_st_widget( 129 void add_menuitem_st_widget(
136 GtkWidget *parent, 130 GtkWidget *parent,
137 int index, 131 int index,
138 UiMenuItemI *item, 132 UiMenuItemI *item,
139 UiObject *obj) 133 UiObject *obj)
165 159
166 if(i->groups) { 160 if(i->groups) {
167 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);
168 } 162 }
169 } 163 }
164 */
170 165
171 void add_menuseparator_widget( 166 void add_menuseparator_widget(
172 GtkWidget *parent, 167 GtkWidget *parent,
173 int index, 168 int index,
174 UiMenuItemI *item, 169 UiMenuItemI *item,
178 GTK_MENU_SHELL(parent), 173 GTK_MENU_SHELL(parent),
179 gtk_separator_menu_item_new()); 174 gtk_separator_menu_item_new());
180 } 175 }
181 176
182 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) {
183 UiCheckItem *ci = (UiCheckItem*)item; 178 UiMenuCheckItem *ci = (UiMenuCheckItem*)item;
184 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label); 179 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label);
185 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget); 180 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget);
186 181
187 if(ci->callback) { 182 if(ci->callback) {
188 UiEventData *event = malloc(sizeof(UiEventData)); 183 UiEventData *event = malloc(sizeof(UiEventData));
202 G_CALLBACK(ui_destroy_userdata), 197 G_CALLBACK(ui_destroy_userdata),
203 event); 198 event);
204 } 199 }
205 } 200 }
206 201
202 void add_radioitem_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj) {
203 // TODO
204 }
205
206 /*
207 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) {
208 UiCheckItemNV *ci = (UiCheckItemNV*)item; 208 UiCheckItemNV *ci = (UiCheckItemNV*)item;
209 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label); 209 GtkWidget *widget = gtk_check_menu_item_new_with_mnemonic(ci->label);
210 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget); 210 gtk_menu_shell_append(GTK_MENU_SHELL(p), widget);
211 211
218 value = 0; 218 value = 0;
219 } else { 219 } else {
220 // TODO: error 220 // TODO: error
221 } 221 }
222 } 222 }
223 */
223 224
224 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) {
225 UiMenuItemList *il = (UiMenuItemList*)item; 226 UiMenuItemList *il = (UiMenuItemList*)item;
226 const CxAllocator *a = obj->ctx->allocator; 227 const CxAllocator *a = obj->ctx->allocator;
227 228
231 232
232 ls->object = obj; 233 ls->object = obj;
233 ls->menu = GTK_MENU_SHELL(p); 234 ls->menu = GTK_MENU_SHELL(p);
234 ls->index = index; 235 ls->index = index;
235 ls->oldcount = 0; 236 ls->oldcount = 0;
236 ls->list = il->list; 237
238 // TODO:
239 //ls->list = il->list;
240
237 ls->callback = il->callback; 241 ls->callback = il->callback;
238 ls->userdata = il->userdata; 242 ls->userdata = il->userdata;
239 243
240 ls->list->observers = ui_add_observer( 244 ls->list->observers = ui_add_observer(
241 ls->list->observers, 245 ls->list->observers,
476 if(groups) { 480 if(groups) {
477 uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, groups); 481 uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, groups);
478 cxListDestroy(groups); 482 cxListDestroy(groups);
479 } 483 }
480 } 484 }
481
482 #endif

mercurial