2 #ifndef __BST_MENUS_H__
3 #define __BST_MENUS_H__
12 typedef struct _BstChoice BstChoice;
14 GtkWidget* bst_choice_menu_createv (
const gchar *menu_path,
15 BstChoice *first_choice,
17 void bst_choice_menu_add_choice_and_free (GtkWidget *menu,
19 void bst_choice_menu_set_item_sensitive (GtkWidget *menu,
22 GtkWidget* bst_choice_dialog_createv (BstChoice *first_choice,
23 ...) G_GNUC_NULL_TERMINATED;
24 gboolean bst_choice_selectable (GtkWidget *widget);
25 guint bst_choice_modal (GtkWidget *widget,
28 guint bst_choice_get_last (GtkWidget *widget);
29 void bst_choice_destroy (GtkWidget *choice);
33 #define BST_CHOICE_TITLE(name) (bst_choice_alloc (BST_CHOICE_TYPE_TITLE, \
34 (name), NULL, BST_STOCK_NONE, 0))
35 #define BST_CHOICE(id, name, bst_icon) (bst_choice_alloc (BST_CHOICE_TYPE_ITEM, \
36 (name), (void*) (size_t) (id), \
37 BST_STOCK_ ## bst_icon, 0))
38 #define BST_CHOICE_D(id, name, bst_icon) (bst_choice_alloc (BST_CHOICE_TYPE_ITEM | \
39 BST_CHOICE_FLAG_DEFAULT, \
40 (name), (void*) (size_t) (id), \
41 BST_STOCK_ ## bst_icon, 0))
42 #define BST_CHOICE_S(id, name, icon, s) (bst_choice_alloc (BST_CHOICE_TYPE_ITEM | \
43 ((s) ? (BstChoiceFlags) 0 : BST_CHOICE_FLAG_INSENSITIVE), \
44 (name), (void*) (size_t) (id), \
45 BST_STOCK_ ## icon, 0))
46 #define BST_CHOICE_SUBMENU(nam,menu,icn) (bst_choice_alloc (BST_CHOICE_TYPE_SUBMENU, \
47 (nam), (menu), BST_STOCK_ ## icn, 0))
48 #define BST_CHOICE_TEXT(name) (bst_choice_alloc (BST_CHOICE_TYPE_TEXT, \
49 (name), NULL, BST_STOCK_NONE, 0))
50 #define BST_CHOICE_SEPERATOR (bst_choice_alloc (BST_CHOICE_TYPE_SEPARATOR, \
51 NULL, NULL, BST_STOCK_NONE, 0))
52 #define BST_CHOICE_END (NULL)
58 BST_CHOICE_TYPE_SEPARATOR = 0,
59 BST_CHOICE_TYPE_TITLE = 1,
60 BST_CHOICE_TYPE_TEXT = 2,
61 BST_CHOICE_TYPE_ITEM = 3,
62 BST_CHOICE_TYPE_SUBMENU = 4,
63 BST_CHOICE_TYPE_MASK = 0xff,
64 BST_CHOICE_FLAG_INSENSITIVE = (1 << 8),
65 BST_CHOICE_FLAG_DEFAULT = (1 << 9),
66 BST_CHOICE_FLAG_MASK = (~BST_CHOICE_TYPE_MASK)
68 BstChoice* bst_choice_alloc (BstChoiceFlags type,
69 const gchar *choice_name,
71 const gchar *icon_stock_id,
78 constexpr BstChoiceFlags operator& (BstChoiceFlags s1, BstChoiceFlags s2) {
return BstChoiceFlags (s1 & (
long long unsigned) s2); }
79 inline BstChoiceFlags& operator&= (BstChoiceFlags &s1, BstChoiceFlags s2) { s1 = s1 & s2;
return s1; }
80 constexpr BstChoiceFlags operator| (BstChoiceFlags s1, BstChoiceFlags s2) {
return BstChoiceFlags (s1 | (
long long unsigned) s2); }
81 inline BstChoiceFlags& operator|= (BstChoiceFlags &s1, BstChoiceFlags s2) { s1 = s1 | s2;
return s1; }
82 constexpr BstChoiceFlags operator~ (BstChoiceFlags s1) {
return BstChoiceFlags (~(
long long unsigned) s1); }