| File: | frontends/gtk/menu.c |
| Warning: | line 571, column 2 The left operand of '!=' is a garbage value |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* | |||
| 2 | * Copyright 2009 Mark Benjamin <netsurf-browser.org.MarkBenjamin@dfgh.net> | |||
| 3 | * | |||
| 4 | * This file is part of NetSurf, http://www.netsurf-browser.org/ | |||
| 5 | * | |||
| 6 | * NetSurf is free software; you can redistribute it and/or modify | |||
| 7 | * it under the terms of the GNU General Public License as published by | |||
| 8 | * the Free Software Foundation; version 2 of the License. | |||
| 9 | * | |||
| 10 | * NetSurf is distributed in the hope that it will be useful, | |||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| 13 | * GNU General Public License for more details. | |||
| 14 | * | |||
| 15 | * You should have received a copy of the GNU General Public License | |||
| 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 17 | */ | |||
| 18 | ||||
| 19 | #include <stdlib.h> | |||
| 20 | #include <stdbool.h> | |||
| 21 | ||||
| 22 | #include <gdk/gdkkeysyms.h> | |||
| 23 | #include <gtk1/gtk1.h> | |||
| 24 | ||||
| 25 | #include "utils/messages.h" | |||
| 26 | ||||
| 27 | #include "gtk/compat.h" | |||
| 28 | #include "gtk/menu.h" | |||
| 29 | #include "gtk/warn.h" | |||
| 30 | #include "gtk/accelerator.h" | |||
| 31 | ||||
| 32 | /** | |||
| 33 | * Adds image menu item to a menu. | |||
| 34 | * | |||
| 35 | * \param menu the menu to add the item to | |||
| 36 | * \param item_out a pointer to the item's location in the menu struct | |||
| 37 | * \param message the menu item I18n lookup value | |||
| 38 | * \param group the 'global' in a gtk sense accelerator group | |||
| 39 | * \return true if sucessful and \a item_out updated else false. | |||
| 40 | */ | |||
| 41 | ||||
| 42 | static bool_Bool | |||
| 43 | nsgtk_menu_add_image_item(GtkMenu *menu, | |||
| 44 | GtkWidget **item_out, | |||
| 45 | const char *message, | |||
| 46 | GtkAccelGroup *group) | |||
| 47 | { | |||
| 48 | unsigned int key; | |||
| 49 | GdkModifierType mod; | |||
| 50 | GtkWidget *item; | |||
| 51 | const char *accelerator_desc; /* accelerator key description */ | |||
| 52 | ||||
| 53 | item = nsgtk_image_menu_item_new_with_mnemonic(messages_get(message)); | |||
| 54 | if (item == NULL((void*)0)) { | |||
| 55 | return false0; | |||
| 56 | } | |||
| 57 | ||||
| 58 | accelerator_desc = nsgtk_accelerator_get_desc(message); | |||
| 59 | if (accelerator_desc != NULL((void*)0)) { | |||
| 60 | gtk_accelerator_parse(accelerator_desc, &key, &mod); | |||
| 61 | if (key > 0) { | |||
| 62 | gtk_widget_add_accelerator(item, | |||
| 63 | "activate", | |||
| 64 | group, | |||
| 65 | key, | |||
| 66 | mod, | |||
| 67 | GTK_ACCEL_VISIBLE); | |||
| 68 | } | |||
| 69 | } | |||
| 70 | gtk_menu_shell_append(GTK_MENU_SHELL(menu)((((GtkMenuShell*) (void *) ((menu))))), item); | |||
| 71 | gtk_widget_show(item); | |||
| 72 | ||||
| 73 | *item_out = item; | |||
| 74 | ||||
| 75 | return true1; | |||
| 76 | } | |||
| 77 | ||||
| 78 | #define NEW_MENU(n, m)n = malloc(sizeof(*n)); if (n == ((void*)0)) { return ((void* )0); } n->m_menu = ((((GtkMenu*) (void *) ((gtk_menu_new() ))))) \ | |||
| 79 | n = malloc(sizeof(*n)); \ | |||
| 80 | if (n == NULL((void*)0)) { \ | |||
| 81 | return NULL((void*)0); \ | |||
| 82 | } \ | |||
| 83 | n->m##_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))) | |||
| 84 | ||||
| 85 | #define IMAGE_ITEM(p, q, r, s, t)nsgtk_menu_add_image_item(s->p_menu, &(s->q_menuitem ), "r", t)\ | |||
| 86 | nsgtk_menu_add_image_item(s->p##_menu, &(s->q##_menuitem), #r, t) | |||
| 87 | ||||
| 88 | #define CHECK_ITEM(p, q, r, s)do { s->q_menuitem = ((((GtkCheckMenuItem*) (void *) ((gtk_check_menu_item_new_with_mnemonic ( messages_get("r"))))))); if ((s->q_menuitem != ((void*)0 )) && (s->p_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((s->p_menu))))), ((((GtkWidget *) (void *) ((s->q_menuitem)))))); gtk_widget_show(((((GtkWidget *) (void *) ((s->q_menuitem)))))); } } while(0) \ | |||
| 89 | do { \ | |||
| 90 | s->q##_menuitem = GTK_CHECK_MENU_ITEM( \((((GtkCheckMenuItem*) (void *) ((gtk_check_menu_item_new_with_mnemonic ( messages_get(#r))))))) | |||
| 91 | gtk_check_menu_item_new_with_mnemonic(\((((GtkCheckMenuItem*) (void *) ((gtk_check_menu_item_new_with_mnemonic ( messages_get(#r))))))) | |||
| 92 | messages_get(#r)))((((GtkCheckMenuItem*) (void *) ((gtk_check_menu_item_new_with_mnemonic ( messages_get(#r)))))));\ | |||
| 93 | if ((s->q##_menuitem != NULL((void*)0)) && (s->p##_menu != NULL((void*)0))) { \ | |||
| 94 | gtk_menu_shell_append(GTK_MENU_SHELL(s->p##_menu)((((GtkMenuShell*) (void *) ((s->p##_menu))))), \ | |||
| 95 | GTK_WIDGET(s->q##_menuitem)((((GtkWidget*) (void *) ((s->q##_menuitem)))))); \ | |||
| 96 | gtk_widget_show(GTK_WIDGET(s->q##_menuitem)((((GtkWidget*) (void *) ((s->q##_menuitem)))))); \ | |||
| 97 | } \ | |||
| 98 | } while(0) | |||
| 99 | ||||
| 100 | #define SET_SUBMENU(q, r)do { r->q_submenu = nsgtk_menu_q_submenu(group); if ((r-> q_submenu != ((void*)0)) && (r->q_submenu->q_menu != ((void*)0)) && (r->q_menuitem != ((void*)0))) { gtk_menu_item_set_submenu(((((GtkMenuItem*) (void *) ((r-> q_menuitem))))), ((((GtkWidget*) (void *) ((r->q_submenu-> q_menu)))))); } } while(0) \ | |||
| 101 | do { \ | |||
| 102 | r->q##_submenu = nsgtk_menu_##q##_submenu(group); \ | |||
| 103 | if ((r->q##_submenu != NULL((void*)0)) && \ | |||
| 104 | (r->q##_submenu->q##_menu != NULL((void*)0)) && \ | |||
| 105 | (r->q##_menuitem != NULL((void*)0))) { \ | |||
| 106 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(r->q##_menuitem)((((GtkMenuItem*) (void *) ((r->q##_menuitem))))), \ | |||
| 107 | GTK_WIDGET(r->q##_submenu->q##_menu)((((GtkWidget*) (void *) ((r->q##_submenu->q##_menu)))) )); \ | |||
| 108 | } \ | |||
| 109 | } while(0) | |||
| 110 | ||||
| 111 | #define ADD_NAMED_SEP(q, r, s)do { s->r_separator = gtk_separator_menu_item_new(); if (( s->r_separator != ((void*)0)) && (s->q_menu != ( (void*)0))) { gtk_menu_shell_append(((((GtkMenuShell*) (void * ) ((s->q_menu))))), s->r_separator); gtk_widget_show(s-> r_separator); } } while(0) \ | |||
| 112 | do { \ | |||
| 113 | s->r##_separator = gtk_separator_menu_item_new(); \ | |||
| 114 | if ((s->r##_separator != NULL((void*)0)) && (s->q##_menu != NULL((void*)0))) { \ | |||
| 115 | gtk_menu_shell_append(GTK_MENU_SHELL(s->q##_menu)((((GtkMenuShell*) (void *) ((s->q##_menu))))), s->r##_separator); \ | |||
| 116 | gtk_widget_show(s->r##_separator); \ | |||
| 117 | } \ | |||
| 118 | } while(0) | |||
| 119 | ||||
| 120 | #define ADD_SEP(q, r)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (r->q_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((r->q_menu))))), w); gtk_widget_show (w); } } while(0) \ | |||
| 121 | do { \ | |||
| 122 | GtkWidget *w = gtk_separator_menu_item_new(); \ | |||
| 123 | if ((w != NULL((void*)0)) && (r->q##_menu != NULL((void*)0))) { \ | |||
| 124 | gtk_menu_shell_append(GTK_MENU_SHELL(r->q##_menu)((((GtkMenuShell*) (void *) ((r->q##_menu))))), w); \ | |||
| 125 | gtk_widget_show(w); \ | |||
| 126 | } \ | |||
| 127 | } while(0) | |||
| 128 | ||||
| 129 | #define ATTACH_PARENT(parent, msgname, menuv, group)do { menuv = ((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic (messages_get("msgname"))))))); gtk_menu_shell_append(parent, ((((GtkWidget*) (void *) ((menuv)))))); gtk_widget_show((((( GtkWidget*) (void *) ((menuv)))))); gtk_menu_item_set_submenu (menuv, ((((GtkWidget*) (void *) ((menuv_menu)))))); gtk_menu_set_accel_group (menuv_menu, group); } while(0) \ | |||
| 130 | do { \ | |||
| 131 | /* create top level menu entry and attach to parent */ \ | |||
| 132 | menuv = GTK_MENU_ITEM(gtk_menu_item_new_with_mnemonic(messages_get(#msgname)))((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic( messages_get(#msgname))))))); \ | |||
| 133 | gtk_menu_shell_append(parent, GTK_WIDGET(menuv)((((GtkWidget*) (void *) ((menuv)))))); \ | |||
| 134 | gtk_widget_show(GTK_WIDGET(menuv)((((GtkWidget*) (void *) ((menuv)))))); \ | |||
| 135 | /* attach submenu to parent */ \ | |||
| 136 | gtk_menu_item_set_submenu(menuv, GTK_WIDGET(menuv##_menu)((((GtkWidget*) (void *) ((menuv##_menu)))))); \ | |||
| 137 | gtk_menu_set_accel_group(menuv##_menu, group); \ | |||
| 138 | } while(0) | |||
| 139 | ||||
| 140 | /** | |||
| 141 | * creates an export submenu | |||
| 142 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 143 | */ | |||
| 144 | static struct nsgtk_export_submenu * | |||
| 145 | nsgtk_menu_export_submenu(GtkAccelGroup *group) | |||
| 146 | { | |||
| 147 | struct nsgtk_export_submenu *ret; | |||
| 148 | ret = malloc(sizeof(struct nsgtk_export_submenu)); | |||
| 149 | ||||
| 150 | if (ret == NULL((void*)0)) { | |||
| 151 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 152 | return NULL((void*)0); | |||
| 153 | } | |||
| 154 | ||||
| 155 | ret->export_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 156 | if (ret->export_menu == NULL((void*)0)) { | |||
| 157 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 158 | free(ret); | |||
| 159 | return NULL((void*)0); | |||
| 160 | } | |||
| 161 | ||||
| 162 | IMAGE_ITEM(export, savepage, gtkSavePage, ret, group)nsgtk_menu_add_image_item(ret->export_menu, &(ret-> savepage_menuitem), "gtkSavePage", group); | |||
| 163 | IMAGE_ITEM(export, plaintext, gtkPlainText, ret, group)nsgtk_menu_add_image_item(ret->export_menu, &(ret-> plaintext_menuitem), "gtkPlainText", group); | |||
| 164 | IMAGE_ITEM(export, pdf, gtkPDF, ret, group)nsgtk_menu_add_image_item(ret->export_menu, &(ret-> pdf_menuitem), "gtkPDF", group); | |||
| 165 | return ret; | |||
| 166 | } | |||
| 167 | ||||
| 168 | /** | |||
| 169 | * creates a scaleview submenu | |||
| 170 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 171 | */ | |||
| 172 | ||||
| 173 | static struct nsgtk_scaleview_submenu * | |||
| 174 | nsgtk_menu_scaleview_submenu(GtkAccelGroup *group) | |||
| 175 | { | |||
| 176 | struct nsgtk_scaleview_submenu *ret = | |||
| 177 | malloc(sizeof(struct nsgtk_scaleview_submenu)); | |||
| 178 | if (ret == NULL((void*)0)) { | |||
| 179 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 180 | return NULL((void*)0); | |||
| 181 | } | |||
| 182 | ret->scaleview_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 183 | if (ret->scaleview_menu == NULL((void*)0)) { | |||
| 184 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 185 | free(ret); | |||
| 186 | return NULL((void*)0); | |||
| 187 | } | |||
| 188 | IMAGE_ITEM(scaleview, zoomplus, gtkZoomPlus, ret, group)nsgtk_menu_add_image_item(ret->scaleview_menu, &(ret-> zoomplus_menuitem), "gtkZoomPlus", group); | |||
| 189 | IMAGE_ITEM(scaleview, zoomnormal, gtkZoomNormal, ret, group)nsgtk_menu_add_image_item(ret->scaleview_menu, &(ret-> zoomnormal_menuitem), "gtkZoomNormal", group); | |||
| 190 | IMAGE_ITEM(scaleview, zoomminus, gtkZoomMinus, ret, group)nsgtk_menu_add_image_item(ret->scaleview_menu, &(ret-> zoomminus_menuitem), "gtkZoomMinus", group); | |||
| 191 | return ret; | |||
| 192 | } | |||
| 193 | ||||
| 194 | /** | |||
| 195 | * creates a tab navigation submenu | |||
| 196 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 197 | */ | |||
| 198 | ||||
| 199 | static struct nsgtk_tabs_submenu *nsgtk_menu_tabs_submenu(GtkAccelGroup *group) | |||
| 200 | { | |||
| 201 | struct nsgtk_tabs_submenu *ret; | |||
| 202 | ret = malloc(sizeof(struct nsgtk_tabs_submenu)); | |||
| 203 | if (ret == NULL((void*)0)) { | |||
| 204 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 205 | return NULL((void*)0); | |||
| 206 | } | |||
| 207 | ret->tabs_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 208 | if (ret->tabs_menu == NULL((void*)0)) { | |||
| 209 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 210 | free(ret); | |||
| 211 | return NULL((void*)0); | |||
| 212 | } | |||
| 213 | IMAGE_ITEM(tabs, nexttab, gtkNextTab, ret, group)nsgtk_menu_add_image_item(ret->tabs_menu, &(ret->nexttab_menuitem ), "gtkNextTab", group); | |||
| 214 | IMAGE_ITEM(tabs, prevtab, gtkPrevTab, ret, group)nsgtk_menu_add_image_item(ret->tabs_menu, &(ret->prevtab_menuitem ), "gtkPrevTab", group); | |||
| 215 | IMAGE_ITEM(tabs, closetab, gtkCloseTab, ret, group)nsgtk_menu_add_image_item(ret->tabs_menu, &(ret->closetab_menuitem ), "gtkCloseTab", group); | |||
| 216 | ||||
| 217 | return ret; | |||
| 218 | } | |||
| 219 | ||||
| 220 | ||||
| 221 | /** | |||
| 222 | * creates a toolbars submenu | |||
| 223 | * | |||
| 224 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 225 | */ | |||
| 226 | static struct nsgtk_toolbars_submenu * | |||
| 227 | nsgtk_menu_toolbars_submenu(GtkAccelGroup *group) | |||
| 228 | { | |||
| 229 | struct nsgtk_toolbars_submenu *tmenu; | |||
| 230 | ||||
| 231 | tmenu = malloc(sizeof(struct nsgtk_toolbars_submenu)); | |||
| 232 | if (tmenu == NULL((void*)0)) { | |||
| 233 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 234 | return NULL((void*)0); | |||
| 235 | } | |||
| 236 | ||||
| 237 | tmenu->toolbars_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 238 | if (tmenu->toolbars_menu == NULL((void*)0)) { | |||
| 239 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 240 | free(tmenu); | |||
| 241 | return NULL((void*)0); | |||
| 242 | } | |||
| 243 | ||||
| 244 | CHECK_ITEM(toolbars, menubar, gtkMenuBar, tmenu)do { tmenu->menubar_menuitem = ((((GtkCheckMenuItem*) (void *) ((gtk_check_menu_item_new_with_mnemonic( messages_get("gtkMenuBar" ))))))); if ((tmenu->menubar_menuitem != ((void*)0)) && (tmenu->toolbars_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((tmenu->toolbars_menu))))), ( (((GtkWidget*) (void *) ((tmenu->menubar_menuitem)))))); gtk_widget_show (((((GtkWidget*) (void *) ((tmenu->menubar_menuitem)))))); } } while(0); | |||
| 245 | if (tmenu->menubar_menuitem != NULL((void*)0)) { | |||
| 246 | gtk_check_menu_item_set_active(tmenu->menubar_menuitem, TRUE(!(0))); | |||
| 247 | } | |||
| 248 | ||||
| 249 | CHECK_ITEM(toolbars, toolbar, gtkToolBar, tmenu)do { tmenu->toolbar_menuitem = ((((GtkCheckMenuItem*) (void *) ((gtk_check_menu_item_new_with_mnemonic( messages_get("gtkToolBar" ))))))); if ((tmenu->toolbar_menuitem != ((void*)0)) && (tmenu->toolbars_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((tmenu->toolbars_menu))))), ( (((GtkWidget*) (void *) ((tmenu->toolbar_menuitem)))))); gtk_widget_show (((((GtkWidget*) (void *) ((tmenu->toolbar_menuitem)))))); } } while(0); | |||
| 250 | if (tmenu->toolbar_menuitem != NULL((void*)0)) { | |||
| 251 | gtk_check_menu_item_set_active(tmenu->toolbar_menuitem, TRUE(!(0))); | |||
| 252 | } | |||
| 253 | ||||
| 254 | ADD_SEP(toolbars, tmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (tmenu->toolbars_menu != ((void*)0)) ) { gtk_menu_shell_append(((((GtkMenuShell*) (void *) ((tmenu ->toolbars_menu))))), w); gtk_widget_show(w); } } while(0); | |||
| 255 | ||||
| 256 | IMAGE_ITEM(toolbars, customize, gtkCustomize, tmenu, group)nsgtk_menu_add_image_item(tmenu->toolbars_menu, &(tmenu ->customize_menuitem), "gtkCustomize", group); | |||
| 257 | ||||
| 258 | return tmenu; | |||
| 259 | } | |||
| 260 | ||||
| 261 | /** | |||
| 262 | * creates a debugging submenu | |||
| 263 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 264 | */ | |||
| 265 | ||||
| 266 | static struct nsgtk_developer_submenu * | |||
| 267 | nsgtk_menu_developer_submenu(GtkAccelGroup *group) | |||
| 268 | { | |||
| 269 | struct nsgtk_developer_submenu *dmenu = | |||
| 270 | malloc(sizeof(struct nsgtk_developer_submenu)); | |||
| 271 | if (dmenu == NULL((void*)0)) { | |||
| 272 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 273 | return NULL((void*)0); | |||
| 274 | } | |||
| 275 | dmenu->developer_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 276 | if (dmenu->developer_menu == NULL((void*)0)) { | |||
| 277 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 278 | free(dmenu); | |||
| 279 | return NULL((void*)0); | |||
| 280 | } | |||
| 281 | ||||
| 282 | IMAGE_ITEM(developer, viewsource, gtkPageSource, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu ->viewsource_menuitem), "gtkPageSource", group); | |||
| 283 | IMAGE_ITEM(developer, toggledebugging, gtkToggleDebugging, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu ->toggledebugging_menuitem), "gtkToggleDebugging", group); | |||
| 284 | IMAGE_ITEM(developer, debugboxtree, gtkDebugBoxTree, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu ->debugboxtree_menuitem), "gtkDebugBoxTree", group); | |||
| 285 | IMAGE_ITEM(developer, debugdomtree, gtkDebugDomTree, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu ->debugdomtree_menuitem), "gtkDebugDomTree", group); | |||
| 286 | ||||
| 287 | return dmenu; | |||
| 288 | } | |||
| 289 | ||||
| 290 | /** | |||
| 291 | * creates the file menu | |||
| 292 | * | |||
| 293 | * \param group The gtk 'global' accelerator reference | |||
| 294 | * \return The new file menu or NULL on error | |||
| 295 | */ | |||
| 296 | static struct nsgtk_file_menu *nsgtk_menu_file_submenu(GtkAccelGroup *group) | |||
| 297 | { | |||
| 298 | struct nsgtk_file_menu *fmenu; | |||
| 299 | ||||
| 300 | fmenu = malloc(sizeof(struct nsgtk_file_menu)); | |||
| 301 | if (fmenu == NULL((void*)0)) { | |||
| 302 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 303 | return NULL((void*)0); | |||
| 304 | } | |||
| 305 | ||||
| 306 | fmenu->file_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 307 | if (fmenu->file_menu == NULL((void*)0)) { | |||
| 308 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 309 | free(fmenu); | |||
| 310 | return NULL((void*)0); | |||
| 311 | } | |||
| 312 | ||||
| 313 | IMAGE_ITEM(file, newwindow, gtkNewWindow, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> newwindow_menuitem), "gtkNewWindow", group); | |||
| 314 | IMAGE_ITEM(file, newtab, gtkNewTab, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> newtab_menuitem), "gtkNewTab", group); | |||
| 315 | IMAGE_ITEM(file, openfile, gtkOpenFile, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> openfile_menuitem), "gtkOpenFile", group); | |||
| 316 | IMAGE_ITEM(file, closewindow, gtkCloseWindow, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> closewindow_menuitem), "gtkCloseWindow", group); | |||
| 317 | ADD_SEP(file, fmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (fmenu->file_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((fmenu->file_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 318 | IMAGE_ITEM(file, export, gtkExport, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> export_menuitem), "gtkExport", group); | |||
| 319 | ADD_SEP(file, fmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (fmenu->file_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((fmenu->file_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 320 | IMAGE_ITEM(file, printpreview, gtkPrintPreview, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> printpreview_menuitem), "gtkPrintPreview", group); | |||
| 321 | IMAGE_ITEM(file, print, gtkPrint, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> print_menuitem), "gtkPrint", group); | |||
| 322 | ADD_SEP(file, fmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (fmenu->file_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((fmenu->file_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 323 | IMAGE_ITEM(file, quit, gtkQuitMenu, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu-> quit_menuitem), "gtkQuitMenu", group); | |||
| 324 | SET_SUBMENU(export, fmenu)do { fmenu->export_submenu = nsgtk_menu_export_submenu(group ); if ((fmenu->export_submenu != ((void*)0)) && (fmenu ->export_submenu->export_menu != ((void*)0)) && (fmenu->export_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((fmenu->export_menuitem))))), ((((GtkWidget*) (void *) ((fmenu->export_submenu->export_menu )))))); } } while(0); | |||
| 325 | ||||
| 326 | return fmenu; | |||
| 327 | } | |||
| 328 | ||||
| 329 | /** | |||
| 330 | * creates an edit menu | |||
| 331 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 332 | */ | |||
| 333 | ||||
| 334 | static struct nsgtk_edit_menu *nsgtk_menu_edit_submenu(GtkAccelGroup *group) | |||
| 335 | { | |||
| 336 | struct nsgtk_edit_menu *ret = malloc(sizeof(struct nsgtk_edit_menu)); | |||
| 337 | if (ret == NULL((void*)0)) { | |||
| 338 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 339 | return NULL((void*)0); | |||
| 340 | } | |||
| 341 | ret->edit_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 342 | if (ret->edit_menu == NULL((void*)0)) { | |||
| 343 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 344 | free(ret); | |||
| 345 | return NULL((void*)0); | |||
| 346 | } | |||
| 347 | IMAGE_ITEM(edit, cut, gtkCut, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->cut_menuitem ), "gtkCut", group); | |||
| 348 | IMAGE_ITEM(edit, copy, gtkCopy, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->copy_menuitem ), "gtkCopy", group); | |||
| 349 | IMAGE_ITEM(edit, paste, gtkPaste, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->paste_menuitem ), "gtkPaste", group); | |||
| 350 | IMAGE_ITEM(edit, delete, gtkDelete, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->delete_menuitem ), "gtkDelete", group); | |||
| 351 | ADD_SEP(edit, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->edit_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->edit_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 352 | IMAGE_ITEM(edit, selectall, gtkSelectAll, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->selectall_menuitem ), "gtkSelectAll", group); | |||
| 353 | ADD_SEP(edit, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->edit_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->edit_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 354 | IMAGE_ITEM(edit, find, gtkFind, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->find_menuitem ), "gtkFind", group); | |||
| 355 | ADD_SEP(edit, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->edit_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->edit_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 356 | IMAGE_ITEM(edit, preferences, gtkPreferences, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->preferences_menuitem ), "gtkPreferences", group); | |||
| 357 | ||||
| 358 | return ret; | |||
| 359 | } | |||
| 360 | ||||
| 361 | /** | |||
| 362 | * creates a view menu | |||
| 363 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 364 | */ | |||
| 365 | ||||
| 366 | static struct nsgtk_view_menu *nsgtk_menu_view_submenu(GtkAccelGroup *group) | |||
| 367 | { | |||
| 368 | struct nsgtk_view_menu *ret = malloc(sizeof(struct nsgtk_view_menu)); | |||
| 369 | if (ret == NULL((void*)0)) { | |||
| 370 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 371 | return NULL((void*)0); | |||
| 372 | } | |||
| 373 | ret->view_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 374 | if (ret->view_menu == NULL((void*)0)) { | |||
| 375 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 376 | free(ret); | |||
| 377 | return NULL((void*)0); | |||
| 378 | } | |||
| 379 | IMAGE_ITEM(view, scaleview, gtkScaleView, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->scaleview_menuitem ), "gtkScaleView", group); | |||
| 380 | SET_SUBMENU(scaleview, ret)do { ret->scaleview_submenu = nsgtk_menu_scaleview_submenu (group); if ((ret->scaleview_submenu != ((void*)0)) && (ret->scaleview_submenu->scaleview_menu != ((void*)0)) && (ret->scaleview_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((ret->scaleview_menuitem))))) , ((((GtkWidget*) (void *) ((ret->scaleview_submenu->scaleview_menu )))))); } } while(0); | |||
| 381 | IMAGE_ITEM(view, fullscreen, gtkFullScreen, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->fullscreen_menuitem ), "gtkFullScreen", group); | |||
| 382 | ADD_SEP(view, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->view_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->view_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 383 | IMAGE_ITEM(view, toolbars, gtkToolbars, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->toolbars_menuitem ), "gtkToolbars", group); | |||
| 384 | SET_SUBMENU(toolbars, ret)do { ret->toolbars_submenu = nsgtk_menu_toolbars_submenu(group ); if ((ret->toolbars_submenu != ((void*)0)) && (ret ->toolbars_submenu->toolbars_menu != ((void*)0)) && (ret->toolbars_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((ret->toolbars_menuitem))))), ((((GtkWidget*) (void *) ((ret->toolbars_submenu->toolbars_menu )))))); } } while(0); | |||
| 385 | IMAGE_ITEM(view, tabs, gtkTabs, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->tabs_menuitem ), "gtkTabs", group); | |||
| 386 | SET_SUBMENU(tabs, ret)do { ret->tabs_submenu = nsgtk_menu_tabs_submenu(group); if ((ret->tabs_submenu != ((void*)0)) && (ret->tabs_submenu ->tabs_menu != ((void*)0)) && (ret->tabs_menuitem != ((void*)0))) { gtk_menu_item_set_submenu(((((GtkMenuItem* ) (void *) ((ret->tabs_menuitem))))), ((((GtkWidget*) (void *) ((ret->tabs_submenu->tabs_menu)))))); } } while(0); | |||
| 387 | ADD_SEP(view, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->view_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->view_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 388 | IMAGE_ITEM(view, savewindowsize, gtkSaveWindowSize, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->savewindowsize_menuitem ), "gtkSaveWindowSize", group); | |||
| 389 | ||||
| 390 | return ret; | |||
| 391 | } | |||
| 392 | ||||
| 393 | /** | |||
| 394 | * creates a nav menu | |||
| 395 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 396 | */ | |||
| 397 | ||||
| 398 | static struct nsgtk_nav_menu *nsgtk_menu_nav_submenu(GtkAccelGroup *group) | |||
| 399 | { | |||
| 400 | struct nsgtk_nav_menu *ret = malloc(sizeof(struct nsgtk_nav_menu)); | |||
| 401 | if (ret == NULL((void*)0)) { | |||
| 402 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 403 | return NULL((void*)0); | |||
| 404 | } | |||
| 405 | ret->nav_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 406 | if (ret->nav_menu == NULL((void*)0)) { | |||
| 407 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 408 | free(ret); | |||
| 409 | return NULL((void*)0); | |||
| 410 | } | |||
| 411 | ||||
| 412 | IMAGE_ITEM(nav, back, gtkBack, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->back_menuitem ), "gtkBack", group); | |||
| 413 | IMAGE_ITEM(nav, forward, gtkForward, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->forward_menuitem ), "gtkForward", group); | |||
| 414 | IMAGE_ITEM(nav, stop, gtkStop, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->stop_menuitem ), "gtkStop", group); | |||
| 415 | IMAGE_ITEM(nav, reload, gtkReload, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->reload_menuitem ), "gtkReload", group); | |||
| 416 | IMAGE_ITEM(nav, home, gtkHome, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->home_menuitem ), "gtkHome", group); | |||
| 417 | ADD_SEP(nav, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->nav_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->nav_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 418 | IMAGE_ITEM(nav, localhistory, gtkLocalHistory, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->localhistory_menuitem ), "gtkLocalHistory", group); | |||
| 419 | IMAGE_ITEM(nav, globalhistory, gtkGlobalHistory, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->globalhistory_menuitem ), "gtkGlobalHistory", group); | |||
| 420 | ADD_SEP(nav, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->nav_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->nav_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 421 | IMAGE_ITEM(nav, addbookmarks, gtkAddBookMarks, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->addbookmarks_menuitem ), "gtkAddBookMarks", group); | |||
| 422 | IMAGE_ITEM(nav, showbookmarks, gtkShowBookMarks, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->showbookmarks_menuitem ), "gtkShowBookMarks", group); | |||
| 423 | ADD_SEP(nav, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->nav_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->nav_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 424 | IMAGE_ITEM(nav, openlocation, gtkOpenLocation, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->openlocation_menuitem ), "gtkOpenLocation", group); | |||
| 425 | ||||
| 426 | return ret; | |||
| 427 | } | |||
| 428 | ||||
| 429 | /** | |||
| 430 | * creates the tools menu | |||
| 431 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 432 | */ | |||
| 433 | static struct nsgtk_tools_menu *nsgtk_menu_tools_submenu(GtkAccelGroup *group) | |||
| 434 | { | |||
| 435 | struct nsgtk_tools_menu *ret = malloc(sizeof(struct nsgtk_tools_menu)); | |||
| 436 | if (ret == NULL((void*)0)) { | |||
| 437 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 438 | return NULL((void*)0); | |||
| 439 | } | |||
| 440 | ret->tools_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 441 | if (ret->tools_menu == NULL((void*)0)) { | |||
| 442 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 443 | free(ret); | |||
| 444 | return NULL((void*)0); | |||
| 445 | } | |||
| 446 | ||||
| 447 | IMAGE_ITEM(tools, downloads, gtkDownloads, ret, group)nsgtk_menu_add_image_item(ret->tools_menu, &(ret->downloads_menuitem ), "gtkDownloads", group); | |||
| 448 | IMAGE_ITEM(tools, showcookies, gtkShowCookies, ret, group)nsgtk_menu_add_image_item(ret->tools_menu, &(ret->showcookies_menuitem ), "gtkShowCookies", group); | |||
| 449 | IMAGE_ITEM(tools, developer, gtkDeveloper, ret, group)nsgtk_menu_add_image_item(ret->tools_menu, &(ret->developer_menuitem ), "gtkDeveloper", group); | |||
| 450 | SET_SUBMENU(developer, ret)do { ret->developer_submenu = nsgtk_menu_developer_submenu (group); if ((ret->developer_submenu != ((void*)0)) && (ret->developer_submenu->developer_menu != ((void*)0)) && (ret->developer_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((ret->developer_menuitem))))) , ((((GtkWidget*) (void *) ((ret->developer_submenu->developer_menu )))))); } } while(0); | |||
| 451 | ||||
| 452 | return ret; | |||
| 453 | } | |||
| 454 | ||||
| 455 | /** | |||
| 456 | * creates a help menu | |||
| 457 | * \param group the 'global' in a gtk sense accelerator reference | |||
| 458 | */ | |||
| 459 | static struct nsgtk_help_menu *nsgtk_menu_help_submenu(GtkAccelGroup *group) | |||
| 460 | { | |||
| 461 | struct nsgtk_help_menu *ret = malloc(sizeof(struct nsgtk_help_menu)); | |||
| 462 | if (ret == NULL((void*)0)) { | |||
| 463 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 464 | return NULL((void*)0); | |||
| 465 | } | |||
| 466 | ret->help_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 467 | if (ret->help_menu == NULL((void*)0)) { | |||
| 468 | nsgtk_warning(messages_get("NoMemory"), 0); | |||
| 469 | free(ret); | |||
| 470 | return NULL((void*)0); | |||
| 471 | } | |||
| 472 | IMAGE_ITEM(help, contents, gtkContents, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->contents_menuitem ), "gtkContents", group); | |||
| 473 | IMAGE_ITEM(help, guide, gtkGuide, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->guide_menuitem ), "gtkGuide", group); | |||
| 474 | IMAGE_ITEM(help, info, gtkUserInformation, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->info_menuitem ), "gtkUserInformation", group); | |||
| 475 | ADD_SEP(help, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (ret->help_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((ret->help_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 476 | IMAGE_ITEM(help, about, gtkAbout, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->about_menuitem ), "gtkAbout", group); | |||
| 477 | ||||
| 478 | return ret; | |||
| 479 | } | |||
| 480 | ||||
| 481 | ||||
| 482 | /** | |||
| 483 | * Generate menubar menus. | |||
| 484 | * | |||
| 485 | * Generate the main menu structure and attach it to a menubar widget. | |||
| 486 | */ | |||
| 487 | struct nsgtk_bar_submenu * | |||
| 488 | nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkAccelGroup *group) | |||
| 489 | { | |||
| 490 | struct nsgtk_bar_submenu *nmenu; | |||
| 491 | ||||
| 492 | nmenu = calloc(1, sizeof(struct nsgtk_bar_submenu)); | |||
| 493 | if (nmenu == NULL((void*)0)) { | |||
| 494 | return NULL((void*)0); | |||
| 495 | } | |||
| 496 | ||||
| 497 | /* create sub menus */ | |||
| 498 | nmenu->file_submenu = nsgtk_menu_file_submenu(group); | |||
| 499 | nmenu->edit_submenu = nsgtk_menu_edit_submenu(group); | |||
| 500 | nmenu->view_submenu = nsgtk_menu_view_submenu(group); | |||
| 501 | nmenu->nav_submenu = nsgtk_menu_nav_submenu(group); | |||
| 502 | nmenu->tools_submenu = nsgtk_menu_tools_submenu(group); | |||
| 503 | nmenu->help_submenu = nsgtk_menu_help_submenu(group); | |||
| 504 | ||||
| 505 | if (menubar != NULL((void*)0)) { | |||
| 506 | nmenu->bar_menu = GTK_MENU_BAR(menubar)((((GtkMenuBar*) (void *) ((menubar))))); | |||
| 507 | ||||
| 508 | /* attach menus to menubar */ | |||
| 509 | ATTACH_PARENT(menubar, gtkFile, nmenu->file_submenu->file, group)do { nmenu->file_submenu->file = ((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic(messages_get("gtkFile") )))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void * ) ((nmenu->file_submenu->file)))))); gtk_widget_show((( ((GtkWidget*) (void *) ((nmenu->file_submenu->file))))) ); gtk_menu_item_set_submenu(nmenu->file_submenu->file, ((((GtkWidget*) (void *) ((nmenu->file_submenu->file_menu )))))); gtk_menu_set_accel_group(nmenu->file_submenu->file_menu , group); } while(0); | |||
| 510 | ATTACH_PARENT(menubar, gtkEdit, nmenu->edit_submenu->edit, group)do { nmenu->edit_submenu->edit = ((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic(messages_get("gtkEdit") )))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void * ) ((nmenu->edit_submenu->edit)))))); gtk_widget_show((( ((GtkWidget*) (void *) ((nmenu->edit_submenu->edit))))) ); gtk_menu_item_set_submenu(nmenu->edit_submenu->edit, ((((GtkWidget*) (void *) ((nmenu->edit_submenu->edit_menu )))))); gtk_menu_set_accel_group(nmenu->edit_submenu->edit_menu , group); } while(0); | |||
| 511 | ATTACH_PARENT(menubar, gtkView, nmenu->view_submenu->view, group)do { nmenu->view_submenu->view = ((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic(messages_get("gtkView") )))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void * ) ((nmenu->view_submenu->view)))))); gtk_widget_show((( ((GtkWidget*) (void *) ((nmenu->view_submenu->view))))) ); gtk_menu_item_set_submenu(nmenu->view_submenu->view, ((((GtkWidget*) (void *) ((nmenu->view_submenu->view_menu )))))); gtk_menu_set_accel_group(nmenu->view_submenu->view_menu , group); } while(0); | |||
| 512 | ATTACH_PARENT(menubar, gtkNavigate, nmenu->nav_submenu->nav, group)do { nmenu->nav_submenu->nav = ((((GtkMenuItem*) (void * ) ((gtk_menu_item_new_with_mnemonic(messages_get("gtkNavigate" ))))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) ((nmenu->nav_submenu->nav)))))); gtk_widget_show((( ((GtkWidget*) (void *) ((nmenu->nav_submenu->nav)))))); gtk_menu_item_set_submenu(nmenu->nav_submenu->nav, ((( (GtkWidget*) (void *) ((nmenu->nav_submenu->nav_menu))) ))); gtk_menu_set_accel_group(nmenu->nav_submenu->nav_menu , group); } while(0); | |||
| 513 | ATTACH_PARENT(menubar, gtkTools, nmenu->tools_submenu->tools, group)do { nmenu->tools_submenu->tools = ((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic(messages_get("gtkTools" ))))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) ((nmenu->tools_submenu->tools)))))); gtk_widget_show (((((GtkWidget*) (void *) ((nmenu->tools_submenu->tools )))))); gtk_menu_item_set_submenu(nmenu->tools_submenu-> tools, ((((GtkWidget*) (void *) ((nmenu->tools_submenu-> tools_menu)))))); gtk_menu_set_accel_group(nmenu->tools_submenu ->tools_menu, group); } while(0); | |||
| 514 | ATTACH_PARENT(menubar, gtkHelp, nmenu->help_submenu->help, group)do { nmenu->help_submenu->help = ((((GtkMenuItem*) (void *) ((gtk_menu_item_new_with_mnemonic(messages_get("gtkHelp") )))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void * ) ((nmenu->help_submenu->help)))))); gtk_widget_show((( ((GtkWidget*) (void *) ((nmenu->help_submenu->help))))) ); gtk_menu_item_set_submenu(nmenu->help_submenu->help, ((((GtkWidget*) (void *) ((nmenu->help_submenu->help_menu )))))); gtk_menu_set_accel_group(nmenu->help_submenu->help_menu , group); } while(0); | |||
| 515 | } | |||
| 516 | ||||
| 517 | return nmenu; | |||
| 518 | } | |||
| 519 | ||||
| 520 | ||||
| 521 | /* exported function documented in gtk/menu.h */ | |||
| 522 | struct nsgtk_burger_menu *nsgtk_burger_menu_create(GtkAccelGroup *group) | |||
| 523 | { | |||
| 524 | struct nsgtk_burger_menu *nmenu; | |||
| 525 | ||||
| 526 | NEW_MENU(nmenu, burger)nmenu = malloc(sizeof(*nmenu)); if (nmenu == ((void*)0)) { return ((void*)0); } nmenu->burger_menu = ((((GtkMenu*) (void *) ((gtk_menu_new()))))); | |||
| 527 | ||||
| 528 | IMAGE_ITEM(burger, file, gtkFile, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu-> file_menuitem), "gtkFile", group); | |||
| 529 | SET_SUBMENU(file, nmenu)do { nmenu->file_submenu = nsgtk_menu_file_submenu(group); if ((nmenu->file_submenu != ((void*)0)) && (nmenu ->file_submenu->file_menu != ((void*)0)) && (nmenu ->file_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->file_menuitem))))), ( (((GtkWidget*) (void *) ((nmenu->file_submenu->file_menu )))))); } } while(0); | |||
| 530 | ||||
| 531 | IMAGE_ITEM(burger, edit, gtkEdit, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu-> edit_menuitem), "gtkEdit", group); | |||
| 532 | SET_SUBMENU(edit, nmenu)do { nmenu->edit_submenu = nsgtk_menu_edit_submenu(group); if ((nmenu->edit_submenu != ((void*)0)) && (nmenu ->edit_submenu->edit_menu != ((void*)0)) && (nmenu ->edit_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->edit_menuitem))))), ( (((GtkWidget*) (void *) ((nmenu->edit_submenu->edit_menu )))))); } } while(0); | |||
| 533 | ||||
| 534 | IMAGE_ITEM(burger, view, gtkView, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu-> view_menuitem), "gtkView", group); | |||
| 535 | SET_SUBMENU(view, nmenu)do { nmenu->view_submenu = nsgtk_menu_view_submenu(group); if ((nmenu->view_submenu != ((void*)0)) && (nmenu ->view_submenu->view_menu != ((void*)0)) && (nmenu ->view_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->view_menuitem))))), ( (((GtkWidget*) (void *) ((nmenu->view_submenu->view_menu )))))); } } while(0); | |||
| 536 | ||||
| 537 | IMAGE_ITEM(burger, nav, gtkNavigate, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu-> nav_menuitem), "gtkNavigate", group); | |||
| 538 | SET_SUBMENU(nav, nmenu)do { nmenu->nav_submenu = nsgtk_menu_nav_submenu(group); if ((nmenu->nav_submenu != ((void*)0)) && (nmenu-> nav_submenu->nav_menu != ((void*)0)) && (nmenu-> nav_menuitem != ((void*)0))) { gtk_menu_item_set_submenu((((( GtkMenuItem*) (void *) ((nmenu->nav_menuitem))))), ((((GtkWidget *) (void *) ((nmenu->nav_submenu->nav_menu)))))); } } while (0); | |||
| 539 | ||||
| 540 | IMAGE_ITEM(burger, tools, gtkTools, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu-> tools_menuitem), "gtkTools", group); | |||
| 541 | SET_SUBMENU(tools, nmenu)do { nmenu->tools_submenu = nsgtk_menu_tools_submenu(group ); if ((nmenu->tools_submenu != ((void*)0)) && (nmenu ->tools_submenu->tools_menu != ((void*)0)) && ( nmenu->tools_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->tools_menuitem))))), ( (((GtkWidget*) (void *) ((nmenu->tools_submenu->tools_menu )))))); } } while(0); | |||
| 542 | ||||
| 543 | IMAGE_ITEM(burger, help, gtkHelp, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu-> help_menuitem), "gtkHelp", group); | |||
| 544 | SET_SUBMENU(help, nmenu)do { nmenu->help_submenu = nsgtk_menu_help_submenu(group); if ((nmenu->help_submenu != ((void*)0)) && (nmenu ->help_submenu->help_menu != ((void*)0)) && (nmenu ->help_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->help_menuitem))))), ( (((GtkWidget*) (void *) ((nmenu->help_submenu->help_menu )))))); } } while(0); | |||
| 545 | ||||
| 546 | return nmenu; | |||
| 547 | } | |||
| 548 | ||||
| 549 | ||||
| 550 | /* exported function documented in gtk/menu.h */ | |||
| 551 | struct nsgtk_popup_menu *nsgtk_popup_menu_create(GtkAccelGroup *group) | |||
| ||||
| 552 | { | |||
| 553 | struct nsgtk_popup_menu *nmenu; | |||
| 554 | ||||
| 555 | NEW_MENU(nmenu, popup)nmenu = malloc(sizeof(*nmenu)); if (nmenu == ((void*)0)) { return ((void*)0); } nmenu->popup_menu = ((((GtkMenu*) (void *) ( (gtk_menu_new()))))); | |||
| 556 | ||||
| 557 | IMAGE_ITEM(popup, back, gtkBack, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> back_menuitem), "gtkBack", group); | |||
| 558 | IMAGE_ITEM(popup, forward, gtkForward, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> forward_menuitem), "gtkForward", group); | |||
| 559 | IMAGE_ITEM(popup, stop, gtkStop, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> stop_menuitem), "gtkStop", group); | |||
| 560 | IMAGE_ITEM(popup, reload, gtkReload, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> reload_menuitem), "gtkReload", group); | |||
| 561 | ||||
| 562 | ADD_NAMED_SEP(popup, first, nmenu)do { nmenu->first_separator = gtk_separator_menu_item_new( ); if ((nmenu->first_separator != ((void*)0)) && ( nmenu->popup_menu != ((void*)0))) { gtk_menu_shell_append( ((((GtkMenuShell*) (void *) ((nmenu->popup_menu))))), nmenu ->first_separator); gtk_widget_show(nmenu->first_separator ); } } while(0); | |||
| 563 | ||||
| 564 | IMAGE_ITEM(popup, cut, gtkCut, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> cut_menuitem), "gtkCut", group); | |||
| 565 | IMAGE_ITEM(popup, copy, gtkCopy, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> copy_menuitem), "gtkCopy", group); | |||
| 566 | IMAGE_ITEM(popup, paste, gtkPaste, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> paste_menuitem), "gtkPaste", group); | |||
| 567 | ||||
| 568 | ADD_NAMED_SEP(popup, second, nmenu)do { nmenu->second_separator = gtk_separator_menu_item_new (); if ((nmenu->second_separator != ((void*)0)) && (nmenu->popup_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((nmenu->popup_menu))))), nmenu ->second_separator); gtk_widget_show(nmenu->second_separator ); } } while(0); | |||
| 569 | ||||
| 570 | IMAGE_ITEM(popup, toolbars, gtkToolbars, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> toolbars_menuitem), "gtkToolbars", group); | |||
| 571 | SET_SUBMENU(toolbars, nmenu)do { nmenu->toolbars_submenu = nsgtk_menu_toolbars_submenu (group); if ((nmenu->toolbars_submenu != ((void*)0)) && (nmenu->toolbars_submenu->toolbars_menu != ((void*)0)) && (nmenu->toolbars_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->toolbars_menuitem)))) ), ((((GtkWidget*) (void *) ((nmenu->toolbars_submenu-> toolbars_menu)))))); } } while(0); | |||
| ||||
| 572 | ||||
| 573 | IMAGE_ITEM(popup, tools, gtkTools, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu-> tools_menuitem), "gtkTools", group); | |||
| 574 | SET_SUBMENU(tools, nmenu)do { nmenu->tools_submenu = nsgtk_menu_tools_submenu(group ); if ((nmenu->tools_submenu != ((void*)0)) && (nmenu ->tools_submenu->tools_menu != ((void*)0)) && ( nmenu->tools_menuitem != ((void*)0))) { gtk_menu_item_set_submenu (((((GtkMenuItem*) (void *) ((nmenu->tools_menuitem))))), ( (((GtkWidget*) (void *) ((nmenu->tools_submenu->tools_menu )))))); } } while(0); | |||
| 575 | ||||
| 576 | return nmenu; | |||
| 577 | } | |||
| 578 | ||||
| 579 | ||||
| 580 | /* exported function documented in gtk/menu.h */ | |||
| 581 | struct nsgtk_link_menu * | |||
| 582 | nsgtk_link_menu_create(GtkAccelGroup *group) | |||
| 583 | { | |||
| 584 | struct nsgtk_link_menu *nmenu; | |||
| 585 | ||||
| 586 | NEW_MENU(nmenu, link)nmenu = malloc(sizeof(*nmenu)); if (nmenu == ((void*)0)) { return ((void*)0); } nmenu->link_menu = ((((GtkMenu*) (void *) ( (gtk_menu_new()))))); | |||
| 587 | ||||
| 588 | IMAGE_ITEM(link, opentab, gtkOpentab, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu-> opentab_menuitem), "gtkOpentab", group); | |||
| 589 | IMAGE_ITEM(link, openwin, gtkOpenwin, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu-> openwin_menuitem), "gtkOpenwin", group); | |||
| 590 | ||||
| 591 | ADD_SEP(link, nmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != ( (void*)0)) && (nmenu->link_menu != ((void*)0))) { gtk_menu_shell_append (((((GtkMenuShell*) (void *) ((nmenu->link_menu))))), w); gtk_widget_show (w); } } while(0); | |||
| 592 | ||||
| 593 | IMAGE_ITEM(link, save, gtkSavelink, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu-> save_menuitem), "gtkSavelink", group); | |||
| 594 | IMAGE_ITEM(link, bookmark, gtkBookmarklink, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu-> bookmark_menuitem), "gtkBookmarklink", group); | |||
| 595 | IMAGE_ITEM(link, copy, gtkCopylink, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu-> copy_menuitem), "gtkCopylink", group); | |||
| 596 | ||||
| 597 | return nmenu; | |||
| 598 | } | |||
| 599 | ||||
| 600 | ||||
| 601 | /* exported function documented in gtk/menu.h */ | |||
| 602 | nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu *menu) | |||
| 603 | { | |||
| 604 | gtk_widget_destroy(GTK_WIDGET(menu->bar_menu)((((GtkWidget*) (void *) ((menu->bar_menu)))))); | |||
| 605 | ||||
| 606 | free(menu->file_submenu->export_submenu); | |||
| 607 | free(menu->file_submenu); | |||
| 608 | free(menu->edit_submenu); | |||
| 609 | free(menu->view_submenu->tabs_submenu); | |||
| 610 | free(menu->view_submenu->toolbars_submenu); | |||
| 611 | free(menu->view_submenu->scaleview_submenu); | |||
| 612 | free(menu->view_submenu); | |||
| 613 | free(menu->nav_submenu); | |||
| 614 | free(menu->tools_submenu->developer_submenu); | |||
| 615 | free(menu->tools_submenu); | |||
| 616 | free(menu->help_submenu); | |||
| 617 | free(menu); | |||
| 618 | ||||
| 619 | return NSERROR_OK; | |||
| 620 | } | |||
| 621 | ||||
| 622 | /* exported function documented in gtk/menu.h */ | |||
| 623 | nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu *menu) | |||
| 624 | { | |||
| 625 | gtk_widget_destroy(GTK_WIDGET(menu->burger_menu)((((GtkWidget*) (void *) ((menu->burger_menu)))))); | |||
| 626 | ||||
| 627 | free(menu->file_submenu->export_submenu); | |||
| 628 | free(menu->file_submenu); | |||
| 629 | free(menu->edit_submenu); | |||
| 630 | free(menu->view_submenu->tabs_submenu); | |||
| 631 | free(menu->view_submenu->toolbars_submenu); | |||
| 632 | free(menu->view_submenu->scaleview_submenu); | |||
| 633 | free(menu->view_submenu); | |||
| 634 | free(menu->nav_submenu); | |||
| 635 | free(menu->tools_submenu->developer_submenu); | |||
| 636 | free(menu->tools_submenu); | |||
| 637 | free(menu->help_submenu); | |||
| 638 | free(menu); | |||
| 639 | ||||
| 640 | return NSERROR_OK; | |||
| 641 | } | |||
| 642 | ||||
| 643 | ||||
| 644 | /* exported function documented in gtk/menu.h */ | |||
| 645 | nserror nsgtk_popup_menu_destroy(struct nsgtk_popup_menu *menu) | |||
| 646 | { | |||
| 647 | gtk_widget_destroy(GTK_WIDGET(menu->popup_menu)((((GtkWidget*) (void *) ((menu->popup_menu)))))); | |||
| 648 | ||||
| 649 | free(menu->toolbars_submenu); | |||
| 650 | free(menu->tools_submenu->developer_submenu); | |||
| 651 | free(menu->tools_submenu); | |||
| 652 | free(menu); | |||
| 653 | ||||
| 654 | return NSERROR_OK; | |||
| 655 | } | |||
| 656 | ||||
| 657 | ||||
| 658 | /* exported function documented in gtk/menu.h */ | |||
| 659 | nserror nsgtk_link_menu_destroy(struct nsgtk_link_menu *menu) | |||
| 660 | { | |||
| 661 | gtk_widget_destroy(GTK_WIDGET(menu->link_menu)((((GtkWidget*) (void *) ((menu->link_menu)))))); | |||
| 662 | ||||
| 663 | free(menu); | |||
| 664 | ||||
| 665 | return NSERROR_OK; | |||
| 666 | } |