--- a/ui/gtk/menu.h Tue Apr 01 11:50:32 2014 +0200 +++ b/ui/gtk/menu.h Tue Apr 01 11:53:10 2014 +0200 @@ -43,8 +43,11 @@ typedef struct UiStMenuItem UiStMenuItem; typedef struct UiCheckItem UiCheckItem; typedef struct UiCheckItemNV UiCheckItemNV; +typedef struct UiMenuItemList UiMenuItemList; -typedef GtkWidget*(*ui_menu_add_f)(GtkWidget *, UiMenuItemI*, UiObject*); +typedef struct UiActiveMenuItemList UiActiveMenuItemList; + +typedef GtkWidget*(*ui_menu_add_f)(GtkWidget *, int, UiMenuItemI*, UiObject*); struct UiMenuItemI { ui_menu_add_f add_to; @@ -84,15 +87,34 @@ char *varname; }; +struct UiMenuItemList { + UiMenuItemI item; + ui_callback callback; + void *userdata; + UiList *list; +}; + +struct UiActiveMenuItemList { + UiObject *object; + GtkMenuShell *menu; + int index; + int oldcount; + UiList *list; + ui_callback callback; + void *userdata; +}; + GtkWidget *ui_create_menubar(UiObject *obj); -void add_menu_widget(GtkWidget *parent, UiMenuItemI *item, UiObject *obj); -void add_menuitem_widget(GtkWidget *parent, UiMenuItemI *item, UiObject *obj); -void add_menuitem_st_widget(GtkWidget *p, UiMenuItemI *item, UiObject *obj); -void add_menuseparator_widget(GtkWidget *p, UiMenuItemI *item, UiObject *obj); -void add_checkitem_widget(GtkWidget *p, UiMenuItemI *item, UiObject *obj); -void add_checkitemnv_widget(GtkWidget *p, UiMenuItemI *item, UiObject *obj); +void add_menu_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_menuitem_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj); +void add_menuitem_st_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); +void add_menuseparator_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); +void add_checkitem_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); +void add_checkitemnv_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); +void add_menuitem_list_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); +void ui_update_menuitem_list(UiEvent *event, UiActiveMenuItemList *list); void ui_menu_event_wrapper(GtkMenuItem *item, UiEventData *event); void ui_menu_event_toggled(GtkCheckMenuItem *ci, UiEventData *event); int ui_checkitem_get(UiInteger *i);