28 |
28 |
29 #import "../ui/menu.h" |
29 #import "../ui/menu.h" |
30 #import "toolkit.h" |
30 #import "toolkit.h" |
31 #import "../../ucx/list.h" |
31 #import "../../ucx/list.h" |
32 |
32 |
|
33 typedef struct UiAbstractMenuItem { |
|
34 int (*update)(id window, void *item); |
|
35 void *item_data; |
|
36 } UiAbstractMenuItem; |
|
37 |
33 typedef struct UiMenuItem { |
38 typedef struct UiMenuItem { |
34 NSMenuItem *item; |
39 NSMenuItem *item; |
35 int state; |
40 int state; |
36 } UiMenuItem; |
41 } UiMenuItem; |
37 |
42 |
38 typedef struct UiStateItem { |
43 typedef struct UiStateItem { |
39 NSMenuItem *item; |
44 NSMenuItem *item; |
40 char *var; |
45 char *var; |
41 } UiStateItem; |
46 } UiStateItem; |
42 |
47 |
|
48 typedef struct UiMenuItemList { |
|
49 NSMenu *menu; |
|
50 NSMenuItem *first; |
|
51 UiList *list; |
|
52 int index; |
|
53 int oldcount; |
|
54 ui_callback callback; |
|
55 void *data; |
|
56 } UiMenuItemList; |
|
57 |
43 @interface UiMenuDelegate : NSObject <NSMenuDelegate> { |
58 @interface UiMenuDelegate : NSObject <NSMenuDelegate> { |
44 UcxList *items; |
59 UcxList *items; // UiStateItem* |
|
60 UcxList *itemlists; // UiMenuItemList* |
45 } |
61 } |
46 |
62 |
47 - (void)menuNeedsUpdate:(NSMenu*) menu; |
63 - (void) menuNeedsUpdate:(NSMenu*) menu; |
48 |
64 |
49 - (void) addItem:(NSMenuItem*) item var: (char*)name; |
65 - (void) addItem:(NSMenuItem*) item var: (char*)name; |
50 |
66 |
|
67 - (void) addList:(UiList*) list menu:(NSMenu*)menu index: (int)i callback: (ui_callback)f data:(void*) data; |
|
68 |
51 - (UcxList*) items; |
69 - (UcxList*) items; |
|
70 |
|
71 - (UcxList*) lists; |
52 |
72 |
53 @end |
73 @end |
54 |
74 |
55 |
75 |
56 void ui_menu_init(); |
76 void ui_menu_init(); |
57 UiMenuDelegate* ui_menu_delegate(); |
77 UiMenuDelegate* ui_menu_delegate(); |
58 |
78 |
59 int ui_menuitem_get(UiInteger *i); |
79 int ui_menuitem_get(UiInteger *i); |
60 void ui_menuitem_set(UiInteger *i, int value); |
80 void ui_menuitem_set(UiInteger *i, int value); |
|
81 |
|
82 int ui_update_item(id window, void *data); |
|
83 int ui_update_item_list(id window, void *data); |