annotate finch/libgnt/gntmenu.c @ 19299:b3a5e7c45b5c

Allow you to authorize msn buddies to add your yahoo account. Allow you to add msn buddies to your list if you're previously have conversed with them.
author Tim Ringenbach <marv@pidgin.im>
date Sun, 22 Jul 2007 07:30:50 +0000
parents 6a911f06aa46
children 57d350900136 21e67147f9f0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18049
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
1 /**
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
2 * GNT - The GLib Ncurses Toolkit
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
3 *
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
4 * GNT is the legal property of its developers, whose names are too numerous
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
6 * source distribution.
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
7 *
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
8 * This library is free software; you can redistribute it and/or modify
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
9 * it under the terms of the GNU General Public License as published by
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
11 * (at your option) any later version.
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
12 *
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
13 * This program is distributed in the hope that it will be useful,
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
16 * GNU General Public License for more details.
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
17 *
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
18 * You should have received a copy of the GNU General Public License
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
19 * along with this program; if not, write to the Free Software
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
21 */
1cedd520cd18 Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15928
diff changeset
22
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 #include "gntmenu.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 #include "gntmenuitemcheck.h"
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
26 #include <ctype.h>
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 #include <string.h>
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 enum
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 SIGS = 1,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 };
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
34 enum
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
35 {
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
36 ITEM_TEXT = 0,
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
37 ITEM_TRIGGER,
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
38 ITEM_SUBMENU,
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
39 NUM_COLUMNS
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
40 };
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
41
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 static GntTreeClass *parent_class = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 static void (*org_draw)(GntWidget *wid);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 static void (*org_destroy)(GntWidget *wid);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 static void (*org_map)(GntWidget *wid);
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
47 static void (*org_size_request)(GntWidget *wid);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 static gboolean (*org_key_pressed)(GntWidget *w, const char *t);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 gnt_menu_draw(GntWidget *widget)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 chtype type;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 int i;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 if (menu->type == GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 wbkgdset(widget->window, '\0' | COLOR_PAIR(GNT_COLOR_HIGHLIGHT));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 werase(widget->window);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 for (i = 0, iter = menu->list; iter; iter = iter->next, i++) {
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
63 GntMenuItem *item = GNT_MENU_ITEM(iter->data);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 type = ' ' | COLOR_PAIR(GNT_COLOR_HIGHLIGHT);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 if (i == menu->selected)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 type |= A_REVERSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 item->priv.x = getcurx(widget->window) + widget->priv.x;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 item->priv.y = getcury(widget->window) + widget->priv.y + 1;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 wbkgdset(widget->window, type);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 wprintw(widget->window, " %s ", item->text);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72 } else {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 org_draw(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 GNTDEBUG;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 gnt_menu_size_request(GntWidget *widget)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 if (menu->type == GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 widget->priv.height = 1;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 widget->priv.width = getmaxx(stdscr);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 } else {
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
88 org_size_request(widget);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 widget->priv.height = g_list_length(menu->list) + 2;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 menu_tree_add(GntMenu *menu, GntMenuItem *item, GntMenuItem *parent)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 {
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
96 char trigger[4] = "\0 )\0";
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
97
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
98 if ((trigger[1] = gnt_menuitem_get_trigger(item)) && trigger[1] != ' ')
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
99 trigger[0] = '(';
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
100
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
101 if (GNT_IS_MENU_ITEM_CHECK(item)) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 gnt_tree_add_choice(GNT_TREE(menu), item,
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
103 gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, " "), parent, NULL);
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
104 gnt_tree_set_choice(GNT_TREE(menu), item, gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 } else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 gnt_tree_add_row_last(GNT_TREE(menu), item,
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
107 gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, item->submenu ? ">" : " "), parent);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 if (0 && item->submenu) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 GntMenu *sub = GNT_MENU(item->submenu);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 for (iter = sub->list; iter; iter = iter->next) {
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
113 GntMenuItem *it = GNT_MENU_ITEM(iter->data);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 menu_tree_add(menu, it, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118
18447
8fc91e437981 Possible crash fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18444
diff changeset
119 #define GET_VAL(ch) ((ch >= '0' && ch <= '9') ? (ch - '0') : (ch >= 'a' && ch <= 'z') ? (10 + ch - 'a') : 36)
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
120
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
121 static void
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
122 assign_triggers(GntMenu *menu)
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
123 {
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
124 GList *iter;
18447
8fc91e437981 Possible crash fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18444
diff changeset
125 gboolean bools[37];
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
126
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
127 memset(bools, 0, sizeof(bools));
18447
8fc91e437981 Possible crash fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18444
diff changeset
128 bools[36] = 1;
8fc91e437981 Possible crash fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18444
diff changeset
129
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
130 for (iter = menu->list; iter; iter = iter->next) {
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
131 GntMenuItem *item = iter->data;
18447
8fc91e437981 Possible crash fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18444
diff changeset
132 char trigger = tolower(gnt_menuitem_get_trigger(item));
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
133 if (trigger == '\0' || trigger == ' ')
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
134 continue;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
135 bools[(int)GET_VAL(trigger)] = 1;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
136 }
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
137
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
138 for (iter = menu->list; iter; iter = iter->next) {
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
139 GntMenuItem *item = iter->data;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
140 char trigger = gnt_menuitem_get_trigger(item);
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
141 const char *text = item->text;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
142 if (trigger != '\0')
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
143 continue;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
144 while (*text) {
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
145 char ch = tolower(*text++);
18447
8fc91e437981 Possible crash fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18444
diff changeset
146 if (ch == ' ' || bools[(int)GET_VAL(ch)])
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
147 continue;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
148 trigger = ch;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
149 break;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
150 }
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
151 if (trigger == 0)
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
152 trigger = item->text[0];
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
153 gnt_menuitem_set_trigger(item, trigger);
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
154 bools[(int)GET_VAL(trigger)] = 1;
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
155 }
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
156 }
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
157
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 gnt_menu_map(GntWidget *widget)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 if (menu->type == GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 gnt_widget_size_request(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 } else {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 /* Populate the tree */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 GList *iter;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 gnt_tree_remove_all(GNT_TREE(widget));
18444
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
169 /* Try to assign some trigger for the items */
daf41b214ffb Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18440
diff changeset
170 assign_triggers(menu);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171 for (iter = menu->list; iter; iter = iter->next) {
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
172 GntMenuItem *item = GNT_MENU_ITEM(iter->data);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 menu_tree_add(menu, item, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 org_map(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 gnt_tree_adjust_columns(GNT_TREE(widget));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 GNTDEBUG;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 menuitem_activate(GntMenu *menu, GntMenuItem *item)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
184 if (item) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
185 if (item->submenu) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186 GntMenu *sub = GNT_MENU(item->submenu);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 menu->submenu = sub;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 sub->type = GNT_MENU_POPUP; /* Submenus are *never* toplevel */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 sub->parentmenu = menu;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190 if (menu->type != GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191 GntWidget *widget = GNT_WIDGET(menu);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192 item->priv.x = widget->priv.x + widget->priv.width - 1;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
193 item->priv.y = widget->priv.y + gnt_tree_get_selection_visible_line(GNT_TREE(menu));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195 gnt_widget_set_position(GNT_WIDGET(sub), item->priv.x, item->priv.y);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196 GNT_WIDGET_UNSET_FLAGS(GNT_WIDGET(sub), GNT_WIDGET_INVISIBLE);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 gnt_widget_draw(GNT_WIDGET(sub));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 } else if (item->callback) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 item->callback(item, item->callbackdata);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 while (menu) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201 gnt_widget_hide(GNT_WIDGET(menu));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 menu = menu->parentmenu;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
208 static GList*
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
209 find_item_with_trigger(GList *start, GList *end, char trigger)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
210 {
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
211 GList *iter;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
212 for (iter = start; iter != (end ? end : NULL); iter = iter->next) {
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
213 if (gnt_menuitem_get_trigger(iter->data) == trigger)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
214 return iter;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
215 }
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
216 return NULL;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
217 }
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
218
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
219 static gboolean
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
220 check_for_trigger(GntMenu *menu, char trigger)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
221 {
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
222 /* check for a trigger key */
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
223 GList *iter;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
224 GList *nth = g_list_find(menu->list, gnt_tree_get_selection_data(GNT_TREE(menu)));
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
225 GList *find = find_item_with_trigger(nth->next, NULL, trigger);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
226 if (!find)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
227 find = find_item_with_trigger(menu->list, nth->next, trigger);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
228 if (!find)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
229 return FALSE;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
230 if (find != nth) {
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
231 gnt_tree_set_selected(GNT_TREE(menu), find->data);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
232 iter = find_item_with_trigger(find->next, NULL, trigger);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
233 if (iter != NULL && iter != find)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
234 return TRUE;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
235 iter = find_item_with_trigger(menu->list, nth, trigger);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
236 if (iter != NULL && iter != find)
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
237 return TRUE;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
238 }
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
239 gnt_widget_activate(GNT_WIDGET(menu));
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
240 return TRUE;
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
241 }
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
242
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 static gboolean
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 gnt_menu_key_pressed(GntWidget *widget, const char *text)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247 int current = menu->selected;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 if (menu->submenu) {
18875
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
250 GntMenu *sub = menu;
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
251 do sub = sub->submenu; while (sub->submenu);
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
252 if (gnt_widget_key_pressed(GNT_WIDGET(sub), text))
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
253 return TRUE;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255
18874
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
256 if ((text[0] == 27 && text[1] == 0) ||
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
257 (menu->type != GNT_MENU_TOPLEVEL && strcmp(text, GNT_KEY_LEFT) == 0)) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 /* Escape closes menu */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 GntMenu *par = menu->parentmenu;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 if (par != NULL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261 par->submenu = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
262 gnt_widget_hide(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263 } else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 gnt_widget_hide(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 if (menu->type == GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269 if (strcmp(text, GNT_KEY_LEFT) == 0) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270 menu->selected--;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 if (menu->selected < 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272 menu->selected = g_list_length(menu->list) - 1;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 } else if (strcmp(text, GNT_KEY_RIGHT) == 0) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 menu->selected++;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275 if (menu->selected >= g_list_length(menu->list))
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276 menu->selected = 0;
18874
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
277 } else if (strcmp(text, GNT_KEY_ENTER) == 0 ||
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
278 strcmp(text, GNT_KEY_DOWN) == 0) {
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 gnt_widget_activate(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 if (current != menu->selected) {
18875
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
283 GntMenu *sub = menu->submenu;
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
284 while (sub) {
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
285 gnt_widget_hide(GNT_WIDGET(sub));
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
286 sub = sub->submenu;
6a911f06aa46 Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18874
diff changeset
287 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 gnt_widget_draw(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 return TRUE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 } else {
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
292 if (text[1] == '\0') {
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
293 if (check_for_trigger(menu, text[0]))
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
294 return TRUE;
18874
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
295 } else if (strcmp(text, GNT_KEY_RIGHT) == 0) {
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
296 GntMenuItem *item = gnt_tree_get_selection_data(GNT_TREE(menu));
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
297 if (item && item->submenu) {
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
298 menuitem_activate(menu, item);
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
299 return TRUE;
5dd1cfc53666 Make the menus a little more usable.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18531
diff changeset
300 }
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
301 }
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302 return org_key_pressed(widget, text);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 return FALSE;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 gnt_menu_destroy(GntWidget *widget)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 g_list_foreach(menu->list, (GFunc)g_object_unref, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 g_list_free(menu->list);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314 org_destroy(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 gnt_menu_toggled(GntTree *tree, gpointer key)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
319 {
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
320 GntMenuItem *item = GNT_MENU_ITEM(key);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 GntMenu *menu = GNT_MENU(tree);
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
322 gboolean check = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item));
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
323 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), !check);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
324 if (item->callback)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325 item->callback(item, item->callbackdata);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 while (menu) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 gnt_widget_hide(GNT_WIDGET(menu));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 menu = menu->parentmenu;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
330 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333 gnt_menu_activate(GntWidget *widget)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336 GntMenuItem *item;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338 if (menu->type == GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339 item = g_list_nth_data(menu->list, menu->selected);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340 } else {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341 item = gnt_tree_get_selection_data(GNT_TREE(menu));
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 if (item) {
15928
f00f2e283ffb Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 15817
diff changeset
345 if (GNT_IS_MENU_ITEM_CHECK(item))
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 gnt_menu_toggled(GNT_TREE(widget), item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347 else
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
348 menuitem_activate(menu, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
350 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
351
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353 gnt_menu_hide(GntWidget *widget)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
354 {
17707
3c3fc1432a01 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
355 GntMenu *sub, *menu = GNT_MENU(widget);
3c3fc1432a01 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
356
3c3fc1432a01 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
357 while ((sub = menu->submenu))
3c3fc1432a01 Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents: 15928
diff changeset
358 gnt_widget_hide(GNT_WIDGET(sub));
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
359 if (menu->parentmenu)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
360 menu->parentmenu->submenu = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
361 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
362
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
363 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
364 gnt_menu_class_init(GntMenuClass *klass)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
365 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366 GntWidgetClass *wid_class = GNT_WIDGET_CLASS(klass);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 parent_class = GNT_TREE_CLASS(klass);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
369 org_destroy = wid_class->destroy;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
370 org_map = wid_class->map;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
371 org_draw = wid_class->draw;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
372 org_key_pressed = wid_class->key_pressed;
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
373 org_size_request = wid_class->size_request;
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375 wid_class->destroy = gnt_menu_destroy;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 wid_class->draw = gnt_menu_draw;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 wid_class->map = gnt_menu_map;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378 wid_class->size_request = gnt_menu_size_request;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 wid_class->key_pressed = gnt_menu_key_pressed;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 wid_class->activate = gnt_menu_activate;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
381 wid_class->hide = gnt_menu_hide;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
383 parent_class->toggled = gnt_menu_toggled;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
384
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
385 GNTDEBUG;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 static void
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389 gnt_menu_init(GTypeInstance *instance, gpointer class)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391 GntWidget *widget = GNT_WIDGET(instance);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER |
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393 GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_TRANSIENT);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394 GNTDEBUG;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 /******************************************************************************
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398 * GntMenu API
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 *****************************************************************************/
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400 GType
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 gnt_menu_get_gtype(void)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
402 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403 static GType type = 0;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 if(type == 0)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407 static const GTypeInfo info = {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 sizeof(GntMenuClass),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409 NULL, /* base_init */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410 NULL, /* base_finalize */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411 (GClassInitFunc)gnt_menu_class_init,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
412 NULL, /* class_finalize */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 NULL, /* class_data */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 sizeof(GntMenu),
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415 0, /* n_preallocs */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416 gnt_menu_init, /* instance_init */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 NULL /* value_table */
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 };
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 type = g_type_register_static(GNT_TYPE_TREE,
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 "GntMenu",
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422 &info, 0);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 return type;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
426 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 GntWidget *gnt_menu_new(GntMenuType type)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 GntWidget *widget = g_object_new(GNT_TYPE_MENU, NULL);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431 GntMenu *menu = GNT_MENU(widget);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 menu->list = NULL;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 menu->selected = 0;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 menu->type = type;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 if (type == GNT_MENU_TOPLEVEL) {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437 widget->priv.x = 0;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 widget->priv.y = 0;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 } else {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 GNT_TREE(widget)->show_separator = FALSE;
18531
da550279d390 Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18447
diff changeset
441 g_object_set(G_OBJECT(widget), "columns", NUM_COLUMNS, NULL);
18440
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
442 gnt_tree_set_col_width(GNT_TREE(widget), ITEM_TRIGGER, 3);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
443 gnt_tree_set_column_resizable(GNT_TREE(widget), ITEM_TRIGGER, FALSE);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
444 gnt_tree_set_col_width(GNT_TREE(widget), ITEM_SUBMENU, 1);
be10fc22d649 Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18404
diff changeset
445 gnt_tree_set_column_resizable(GNT_TREE(widget), ITEM_SUBMENU, FALSE);
15817
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_NO_BORDER);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449 return widget;
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452 void gnt_menu_add_item(GntMenu *menu, GntMenuItem *item)
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 {
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 menu->list = g_list_append(menu->list, item);
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 }
0e3a8505ebbe renamed gaim-text to finch
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456