28 |
28 |
29 #ifndef MENU_H |
29 #ifndef MENU_H |
30 #define MENU_H |
30 #define MENU_H |
31 |
31 |
32 #include "../ui/menu.h" |
32 #include "../ui/menu.h" |
33 #include <ucx/list.h> |
33 #include "../common/menu.h" |
|
34 #include <cx/list.h> |
34 #include "toolkit.h" |
35 #include "toolkit.h" |
|
36 |
35 |
37 |
36 #ifdef __cplusplus |
38 #ifdef __cplusplus |
37 extern "C" { |
39 extern "C" { |
38 #endif |
40 #endif |
39 |
41 |
40 typedef struct UiMenuItemI UiMenuItemI; |
42 UIMENU ui_create_menu(UiMenuBuilder *builder, UiObject *obj); |
41 typedef struct UiMenu UiMenu; |
43 void ui_widget_set_contextmenu(GtkWidget *widget, UIMENU menu); |
42 typedef struct UiMenuItem UiMenuItem; |
44 |
43 typedef struct UiStMenuItem UiStMenuItem; |
45 #if GTK_MAJOR_VERSION <= 3 |
44 typedef struct UiCheckItem UiCheckItem; |
|
45 typedef struct UiCheckItemNV UiCheckItemNV; |
|
46 typedef struct UiMenuItemList UiMenuItemList; |
|
47 |
46 |
48 typedef struct UiActiveMenuItemList UiActiveMenuItemList; |
47 typedef struct UiActiveMenuItemList UiActiveMenuItemList; |
49 |
48 |
50 typedef GtkWidget*(*ui_menu_add_f)(GtkWidget *, int, UiMenuItemI*, UiObject*); |
49 typedef void(*ui_menu_add_f)(GtkWidget *, int, UiMenuItemI*, UiObject*); |
51 |
|
52 struct UiMenuItemI { |
|
53 ui_menu_add_f add_to; |
|
54 }; |
|
55 |
|
56 struct UiMenu { |
|
57 UiMenuItemI item; |
|
58 char *label; |
|
59 UcxList *items; |
|
60 UiMenu *parent; |
|
61 }; |
|
62 |
|
63 struct UiMenuItem { |
|
64 UiMenuItemI item; |
|
65 ui_callback callback; |
|
66 char *label; |
|
67 void *userdata; |
|
68 UcxList *groups; |
|
69 }; |
|
70 |
|
71 struct UiStMenuItem { |
|
72 UiMenuItemI item; |
|
73 ui_callback callback; |
|
74 char *stockid; |
|
75 void *userdata; |
|
76 UcxList *groups; |
|
77 }; |
|
78 |
|
79 struct UiCheckItem { |
|
80 UiMenuItemI item; |
|
81 char *label; |
|
82 ui_callback callback; |
|
83 void *userdata; |
|
84 }; |
|
85 |
|
86 struct UiCheckItemNV { |
|
87 UiMenuItemI item; |
|
88 char *label; |
|
89 char *varname; |
|
90 }; |
|
91 |
|
92 struct UiMenuItemList { |
|
93 UiMenuItemI item; |
|
94 ui_callback callback; |
|
95 void *userdata; |
|
96 UiList *list; |
|
97 }; |
|
98 |
50 |
99 struct UiActiveMenuItemList { |
51 struct UiActiveMenuItemList { |
100 UiObject *object; |
52 UiObject *object; |
101 GtkMenuShell *menu; |
53 GtkMenuShell *menu; |
102 int index; |
54 int index; |
103 int oldcount; |
55 int oldcount; |
104 UiList *list; |
56 UiList *list; |
105 ui_callback callback; |
57 ui_getvaluefunc getvalue; |
106 void *userdata; |
58 ui_callback callback; |
|
59 void *userdata; |
107 }; |
60 }; |
108 |
61 |
109 GtkWidget *ui_create_menubar(UiObject *obj); |
62 GtkWidget *ui_create_menubar(UiObject *obj); |
|
63 |
|
64 void ui_add_menu_items(GtkWidget *parent, int i, UiMenu *menu, UiObject *obj); |
110 |
65 |
111 void add_menu_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj); |
66 void add_menu_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj); |
112 void add_menuitem_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj); |
67 void add_menuitem_widget(GtkWidget *parent, int i, UiMenuItemI *item, UiObject *obj); |
113 void add_menuitem_st_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
68 void add_menuitem_st_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
114 void add_menuseparator_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
69 void add_menuseparator_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
115 void add_checkitem_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
70 void add_checkitem_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
|
71 void add_radioitem_widget(GtkWidget *p, int index, UiMenuItemI *item, UiObject *obj); |
116 void add_checkitemnv_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
72 void add_checkitemnv_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
117 void add_menuitem_list_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
73 void add_menuitem_list_widget(GtkWidget *p, int i, UiMenuItemI *item, UiObject *obj); |
118 |
74 |
119 void ui_update_menuitem_list(UiEvent *event, UiActiveMenuItemList *list); |
75 void ui_update_menuitem_list(UiEvent *event, UiActiveMenuItemList *list); |
120 void ui_menu_event_wrapper(GtkMenuItem *item, UiEventData *event); |
76 void ui_menu_event_wrapper(GtkMenuItem *item, UiEventData *event); |
121 void ui_menu_event_toggled(GtkCheckMenuItem *ci, UiEventData *event); |
77 void ui_menu_event_toggled(GtkCheckMenuItem *ci, UiEventData *event); |
122 int64_t ui_checkitem_get(UiInteger *i); |
78 int64_t ui_checkitem_get(UiInteger *i); |
123 void ui_checkitem_set(UiInteger *i, int64_t value); |
79 void ui_checkitem_set(UiInteger *i, int64_t value); |
124 |
80 |
|
81 #endif /* GTK_MAJOR_VERSION <= 3 */ |
|
82 |
|
83 #if GTK_MAJOR_VERSION >= 4 |
|
84 |
|
85 typedef void(*ui_gmenu_add_f)(GMenu *, int, UiMenuItemI*, UiObject*); |
|
86 |
|
87 typedef struct UiActiveGMenuItemList UiActiveGMenuItemList; |
|
88 struct UiActiveGMenuItemList { |
|
89 UiObject *object; |
|
90 GMenu *menu; |
|
91 char action[32]; |
|
92 int index; |
|
93 int oldcount; |
|
94 UiVar *var; |
|
95 ui_getvaluefunc getvalue; |
|
96 ui_callback callback; |
|
97 void *userdata; |
|
98 }; |
|
99 |
|
100 void ui_gmenu_add_menu_items(GMenu *parent, int i, UiMenu *menu, UiObject *obj); |
|
101 |
|
102 void ui_gmenu_add_menu(GMenu *parent, int index, UiMenuItemI *item, UiObject *obj); |
|
103 void ui_gmenu_add_menuitem(GMenu *parent, int index, UiMenuItemI *item, UiObject *obj); |
|
104 void ui_gmenu_add_menuseparator(GMenu *p, int index, UiMenuItemI *item, UiObject *obj); |
|
105 void ui_gmenu_add_checkitem(GMenu *p, int index, UiMenuItemI *item, UiObject *obj); |
|
106 void ui_gmenu_add_radioitem(GMenu *p, int index, UiMenuItemI *item, UiObject *obj); |
|
107 void ui_gmenu_add_menuitem_list(GMenu *p, int index, UiMenuItemI *item, UiObject *obj); |
|
108 |
|
109 void ui_activate_event_wrapper(GSimpleAction* self, GVariant* parameter, UiEventData *event); |
|
110 void ui_menu_list_item_activate_event_wrapper(GSimpleAction* self, GVariant* parameter, UiEventData *event); |
|
111 void ui_update_gmenu_item_list(UiEvent *event, UiActiveGMenuItemList *list); |
|
112 |
|
113 #endif |
|
114 |
|
115 |
125 #ifdef __cplusplus |
116 #ifdef __cplusplus |
126 } |
117 } |
127 #endif |
118 #endif |
128 |
119 |
129 #endif /* MENU_H */ |
120 #endif /* MENU_H */ |