2
* C Interface: ptkutils
4
* Description: Some GUI utilities
7
* Author: Hong Jen Yee (PCMan) <pcman.tw (AT) gmail.com>, (C) 2006
9
* Copyright: See COPYING file that comes with this distribution
14
I don't like GtkUIManager provided by gtk+, so I implement my own. ;-)
25
#define PTK_STOCK_MENU_ITEM( id, cb ) { id, NULL, G_CALLBACK(cb), 0, 0, NULL, NULL }
26
#define PTK_MENU_ITEM( label, cb, key, mod ) { label, NULL, G_CALLBACK(cb), key, mod, NULL, NULL }
27
#define PTK_CHECK_MENU_ITEM( label, cb, key, mod ) { label, (char*)1, G_CALLBACK(cb), key, mod, NULL, NULL }
28
#define PTK_RADIO_MENU_ITEM( label, cb, key, mod ) { label, (char*)2, G_CALLBACK(cb), key, mod, NULL, NULL }
29
#define PTK_IMG_MENU_ITEM( label, icon, cb, key, mod ) { label, icon, G_CALLBACK(cb), key, mod, NULL, NULL }
30
#define PTK_POPUP_MENU( label, sub ) { label, NULL, NULL, 0, 0, sub, NULL }
31
#define PTK_POPUP_IMG_MENU( label, icon, sub ) { label, icon, NULL, 0, 0, sub, NULL }
32
#define PTK_SEPARATOR_MENU_ITEM { NULL, (char *)(-1), NULL, 0, 0, NULL, 0}
33
#define PTK_MENU_END {0}
34
#define PTK_IS_STOCK_ITEM( ent ) ( ent->label && (*(guint32*)ent->label) == *(guint32*)"gtk-" )
35
#define PTK_IS_CHECK_MENU_ITEM( ent ) ( ent->stock_icon == (char*)1 )
36
#define PTK_IS_RADIO_MENU_ITEM( ent ) ( ent->stock_icon == (char*)2 )
38
struct _PtkMenuItemEntry
40
const char* label; /* or stock id */
41
const char* stock_icon; /* or menu type 1: check, 2: radio */
45
struct _PtkMenuItemEntry* sub_menu;
48
typedef struct _PtkMenuItemEntry PtkMenuItemEntry;
50
#define PTK_STOCK_TOOL_ITEM( id, cb ) { id, NULL, NULL, G_CALLBACK(cb), NULL, NULL }
51
#define PTK_TOOL_ITEM( label, icon, tooltip, cb ) { label, icon, tooltip, G_CALLBACK(cb), NULL, NULL }
52
#define PTK_CHECK_TOOL_ITEM( label, icon, tooltip, cb ) { label, icon, tooltip, G_CALLBACK(cb), (PtkMenuItemEntry*)1, NULL }
53
#define PTK_RADIO_TOOL_ITEM( label, icon, tooltip, cb ) { label, icon, tooltip, G_CALLBACK(cb), (PtkMenuItemEntry*)2, NULL }
54
#define PTK_MENU_TOOL_ITEM( label, icon, tooltip, menu ) { label, icon, tooltip, NULL, menu, NULL }
55
#define PTK_SEPARATOR_TOOL_ITEM { NULL, NULL, NULL, -1, NULL, NULL}
56
#define PTK_TOOL_END {0}
57
#define PTK_IS_CHECK_TOOL_ITEM( ent ) ( ent->menu == (PtkMenuItemEntry*)1 )
58
#define PTK_IS_RADIO_TOOL_ITEM( ent ) ( ent->menu == (PtkMenuItemEntry*)2 )
59
#define PTK_IS_SEPARATOR_TOOL_ITEM( ent ) ( ent->callback == G_CALLBACK(-1) )
61
struct _PtkToolItemEntry
63
const char* label; /* or stock id */
64
const char* stock_icon; /* or menu type 1: check, 2: radio */
67
struct _PtkMenuItemEntry* menu; /* NULL: normal, 1: check, 2: radio, > 2: menu */
70
typedef struct _PtkToolItemEntry PtkToolItemEntry;
72
GtkWidget* ptk_menu_new_from_data( PtkMenuItemEntry* entries,
74
GtkAccelGroup* accel_group );
76
void ptk_menu_add_items_from_data( GtkWidget* menu,
77
PtkMenuItemEntry* entries,
79
GtkAccelGroup* accel_group );
81
GtkWidget* ptk_toolbar_add_items_from_data( GtkWidget* toolbar,
82
PtkToolItemEntry* entries,
84
GtkTooltips* tooltips );
86
void ptk_show_error(GtkWindow* parent, const char* message );