#ifndef MENU_H
#define MENU_H
#include "../ui/menu.h"
#include <ucx/list.h>
#include "toolkit.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct UiMenuItemI UiMenuItemI;
typedef struct UiMenu UiMenu;
typedef struct UiMenuItem UiMenuItem;
typedef struct UiStMenuItem UiStMenuItem;
typedef struct UiCheckItem UiCheckItem;
typedef struct UiCheckItemNV UiCheckItemNV;
typedef struct UiMenuItemList UiMenuItemList;
typedef struct UiActiveMenuItemList UiActiveMenuItemList;
typedef GtkWidget*(*ui_menu_add_f)(GtkWidget *,
int, UiMenuItemI*, UiObject*);
struct UiMenuItemI {
ui_menu_add_f add_to;
};
struct UiMenu {
UiMenuItemI item;
char *label;
UcxList *items;
UiMenu *parent;
};
struct UiMenuItem {
UiMenuItemI item;
ui_callback callback;
char *label;
void *userdata;
UcxList *groups;
};
struct UiStMenuItem {
UiMenuItemI item;
ui_callback callback;
char *stockid;
void *userdata;
UcxList *groups;
};
struct UiCheckItem {
UiMenuItemI item;
char *label;
ui_callback callback;
void *userdata;
};
struct UiCheckItemNV {
UiMenuItemI item;
char *label;
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,
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);
int64_t ui_checkitem_get(UiInteger *i);
void ui_checkitem_set(UiInteger *i,
int64_t value);
#ifdef __cplusplus
}
#endif
#endif