2 * (GLABELS) Label and Business Card Creation program for GNOME
4 * menus.c: GLabels menus module
6 * Copyright (C) 2001-2002 Jim Evins <evins@snaught.com>.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 * This file is based on gedit-menus.c from gedit2:
26 * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
27 * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
37 BonoboUIVerb gl_verbs [] = {
38 BONOBO_UI_VERB ("FileNew", gl_cmd_file_new),
39 BONOBO_UI_VERB ("FileOpen", gl_cmd_file_open),
40 BONOBO_UI_VERB ("FileSave", gl_cmd_file_save),
41 BONOBO_UI_VERB ("FileSaveAs", gl_cmd_file_save_as),
42 BONOBO_UI_VERB ("FilePrint", gl_cmd_file_print),
43 BONOBO_UI_VERB ("FileClose", gl_cmd_file_close),
44 BONOBO_UI_VERB ("FileCloseAll", gl_cmd_file_close_all),
45 BONOBO_UI_VERB ("FileExit", gl_cmd_file_exit),
46 BONOBO_UI_VERB ("EditCut", gl_cmd_edit_cut),
47 BONOBO_UI_VERB ("EditCopy", gl_cmd_edit_copy),
48 BONOBO_UI_VERB ("EditPaste", gl_cmd_edit_paste),
49 BONOBO_UI_VERB ("EditDelete", gl_cmd_edit_delete),
50 BONOBO_UI_VERB ("EditSelectAll", gl_cmd_edit_select_all),
51 BONOBO_UI_VERB ("EditUnSelectAll", gl_cmd_edit_unselect_all),
52 BONOBO_UI_VERB ("ToolsArrow", gl_tools_arrow),
53 BONOBO_UI_VERB ("ToolsText", gl_tools_text),
54 BONOBO_UI_VERB ("ToolsBox", gl_tools_box),
55 BONOBO_UI_VERB ("ToolsLine", gl_tools_line),
56 BONOBO_UI_VERB ("ToolsEllipse", gl_tools_ellipse),
57 BONOBO_UI_VERB ("ToolsImage", gl_tools_image),
58 BONOBO_UI_VERB ("ToolsBarcode", gl_tools_barcode),
59 BONOBO_UI_VERB ("ToolsZoomIn", gl_tools_zoomin),
60 BONOBO_UI_VERB ("ToolsZoomOut", gl_tools_zoomout),
61 BONOBO_UI_VERB ("ToolsZoom1to1", gl_tools_zoom1to1),
62 BONOBO_UI_VERB ("ToolsMergeProperties", gl_tools_merge_properties),
63 BONOBO_UI_VERB ("ToolsObjectProperties", gl_tools_object_properties),
64 BONOBO_UI_VERB ("ToolsRaiseObjects", gl_tools_raise_objects),
65 BONOBO_UI_VERB ("ToolsLowerObjects", gl_tools_lower_objects),
66 BONOBO_UI_VERB ("SettingsPreferences", gl_cmd_settings_preferences),
67 BONOBO_UI_VERB ("HelpContents", gl_cmd_help_contents),
68 BONOBO_UI_VERB ("About", gl_cmd_help_about),
73 gchar* gl_menus_no_docs_sensible_verbs [] = {
75 "/commands/FileSaveAs",
76 "/commands/FilePrint",
77 "/commands/FilePrintPreview",
78 "/commands/FileClose",
79 "/commands/FileCloseAll",
84 "/commands/EditPaste",
85 "/commands/EditDelete",
86 "/commands/EditSelectAll",
87 "/commands/EditUnSelectAll",
88 "/commands/ToolsArrow",
89 "/commands/ToolsText",
90 "/commands/ToolsLine",
92 "/commands/ToolsEllipse",
93 "/commands/ToolsImage",
94 "/commands/ToolsBarcode",
95 "/commands/ToolsZoomIn",
96 "/commands/ToolsZoomOut",
97 "/commands/ToolsZoom1to1",
98 "/commands/ToolsMergeProperties",
99 "/commands/ToolsObjectProperties",
100 "/commands/ToolsRaiseObjects",
101 "/commands/ToolsLowerObjects",
106 gchar* gl_menus_not_modified_doc_sensible_verbs [] = {
107 "/commands/FileSave",
114 gl_menus_set_verb_sensitive (BonoboUIComponent *ui_component, gchar* cname, gboolean sensitive)
116 g_return_if_fail (cname != NULL);
117 g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
119 bonobo_ui_component_set_prop (
120 ui_component, cname, "sensitive", sensitive ? "1" : "0", NULL);
124 gl_menus_set_verb_list_sensitive (BonoboUIComponent *ui_component, gchar** vlist, gboolean sensitive)
126 g_return_if_fail (vlist != NULL);
127 g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
129 for ( ; *vlist; ++vlist)
131 bonobo_ui_component_set_prop (
132 ui_component, *vlist, "sensitive", sensitive ? "1" : "0", NULL);
137 gl_menus_set_verb_state (BonoboUIComponent *ui_component, gchar* cname, gboolean state)
139 g_return_if_fail (cname != NULL);
140 g_return_if_fail (BONOBO_IS_UI_COMPONENT (ui_component));
142 bonobo_ui_component_set_prop (
143 ui_component, cname, "state", state ? "1" : "0", NULL);
147 gl_menus_add_menu_item (BonoboWindow *window, const gchar *path,
148 const gchar *name, const gchar *label,
149 const gchar *tooltip, const gchar *stock_pixmap,
152 BonoboUIComponent *ui_component;
156 g_return_if_fail (window != NULL);
157 g_return_if_fail (path != NULL);
158 g_return_if_fail (label != NULL);
159 g_return_if_fail (cb != NULL);
161 item_path = g_strconcat (path, name, NULL);
162 ui_component = bonobo_mdi_get_ui_component_from_window (BONOBO_WINDOW (window));
163 if (!bonobo_ui_component_path_exists (ui_component, item_path, NULL)) {
166 xml = g_strdup_printf ("<menuitem name=\"%s\" verb=\"\""
168 " _tip=\"%s\" hident=\"0\" />", name,
172 if (stock_pixmap != NULL) {
173 cmd = g_strdup_printf ("<cmd name=\"%s\""
174 " pixtype=\"stock\" pixname=\"%s\" />",
178 cmd = g_strdup_printf ("<cmd name=\"%s\" />", name);
182 bonobo_ui_component_set_translate (ui_component, path,
185 bonobo_ui_component_set_translate (ui_component, "/commands/",
188 bonobo_ui_component_add_verb (ui_component, name, cb, NULL);
198 gl_menus_remove_menu_item (BonoboWindow *window, const gchar *path,
201 BonoboUIComponent *ui_component;
204 g_return_if_fail (window != NULL);
205 g_return_if_fail (path != NULL);
206 g_return_if_fail (name != NULL);
208 item_path = g_strconcat (path, name, NULL);
209 ui_component = bonobo_mdi_get_ui_component_from_window (BONOBO_WINDOW (window));
211 if (bonobo_ui_component_path_exists (ui_component, item_path, NULL)) {
214 cmd = g_strdup_printf ("/commands/%s", name);
216 bonobo_ui_component_rm (ui_component, item_path, NULL);
217 bonobo_ui_component_rm (ui_component, cmd, NULL);
226 gl_menus_add_menu_item_all (const gchar *path, const gchar *name,
227 const gchar *label, const gchar *tooltip,
228 const gchar *stock_pixmap,
233 top_windows = glabels_get_top_windows ();
234 g_return_if_fail (top_windows != NULL);
238 BonoboWindow* window = BONOBO_WINDOW (top_windows->data);
241 gl_menus_add_menu_item (window, path, name, label, tooltip,
244 top_windows = g_list_next (top_windows);
249 gl_menus_remove_menu_item_all (const gchar *path, const gchar *name)
253 top_windows = glabels_get_top_windows ();
254 g_return_if_fail (top_windows != NULL);
258 BonoboWindow* window = BONOBO_WINDOW (top_windows->data);
261 gl_menus_remove_menu_item (window, path, name);
264 top_windows = g_list_next (top_windows);