Project: Devchekio
Code Location: https://devchekio.svn.sourceforge.net/svnroot/devchekio
Browse
/
Download File
menu.cpp
/*
    The menu.cpp file is to decalre the Main Menu arrary for the main window.
    It then structures, builds and displays the menu.
*/


//sets up menu array
static GtkItemFactoryEntry menuentries[]=
{
       {"/_File",                 NULL,             NULL,                   0, "<Branch>",    GTK_STOCK_FILE},
       {"/File/_New",             "<CTRL>N",        G_CALLBACK(on_new),     0, "<StockItem>", GTK_STOCK_NEW},
       {"/File/_Open",            "<CTRL>O",        G_CALLBACK(on_open),    0, "<StockItem>", GTK_STOCK_OPEN},
       {"/File/_Save",            "<CTRL>S",        G_CALLBACK(on_save),    0, "<StockItem>", GTK_STOCK_SAVE},
       {"/File/Save _As",         "<Shift><CTRL>S", G_CALLBACK(on_save_as), 0, "<StockItem>", GTK_STOCK_SAVE_AS},
       {"/File/Save A_ll",        NULL,             G_CALLBACK(on_save_all_menu), 0, "<StockItem>"},
       {"/File/---",              NULL,             NULL,                   0, "<Separator>"},
       //{"/File/Print Pre_view",   "<Shift><CTRL>P", NULL,                   0, "<StockItem>", GTK_STOCK_PRINT_PREVIEW},
       //{"/File/_Print",           "<CTRL>P",        NULL,                   0, "<StockItem>", GTK_STOCK_PRINT},
       //{"/File/---",              NULL,             NULL,                   0, "<Separator>"},
       {"/File/_Close tab",       "<Shift><CTRL>T", G_CALLBACK(on_tab_x),   0, "<StockItem>", GTK_STOCK_CLOSE},
       {"/File/_Quit",            "<CTRL>Q",        G_CALLBACK(destroyapp), 0, "<StockItem>", GTK_STOCK_QUIT},

       {"/_Edit",	              NULL,             NULL,                   0, "<Branch>",    GTK_STOCK_EDIT },
       {"/Edit/_Undo",            "<CTRL>Z",        G_CALLBACK(on_undo),    0, "<StockItem>", GTK_STOCK_UNDO},
       {"/Edit/_Redo",            "<CTRL>Y",        G_CALLBACK(on_redo),    0, "<StockItem>", GTK_STOCK_REDO},
       {"/Edit/---",              NULL,             NULL,                   0, "<Separator>"},
       {"/Edit/Cu_t",             "<CTRL>X",        G_CALLBACK(on_cut),     0, "<StockItem>", GTK_STOCK_CUT},
       {"/Edit/_Copy",            "<CTRL>C",        G_CALLBACK(on_copy),    0, "<StockItem>", GTK_STOCK_COPY},
       {"/Edit/_Paste",           "<CTRL>V",        G_CALLBACK(on_paste),   0, "<StockItem>", GTK_STOCK_PASTE},
       {"/Edit/_Delete",          NULL,             G_CALLBACK(on_del),     0, "<StockItem>", GTK_STOCK_DELETE},
       {"/Edit/---",              NULL,             NULL,                   0, "<Separator>"},
       {"/Edit/Select _All",      "<CTRL>A",        G_CALLBACK(on_sel_all), 0, "<StockItem>", GTK_STOCK_SELECT_ALL},
       //{"/Edit/_Go to Line",      "<CTRL>G",        NULL,                   0, "<StockItem>"},
       
	   //{"/_Search",	              NULL,             NULL,                   0, "<Branch>"},
	   //{"/Search/_Find",          "<CTRL>F",        G_CALLBACK(on_search),  0, "<StockItem>", GTK_STOCK_FIND},
	   /*{"/Search/Find _Next",     "<CTRL>G",        G_CALLBACK(on_find),    0, "<StockItem>"},
	   {"/Search/Find _Previous", "<Shift><CTRL>G", G_CALLBACK(on_find_p),  0, "<StockItem>"},
	   {"/Search/_Replace",       "<CTRL>H",        NULL,                   0, "<StockItem>", GTK_STOCK_FIND_AND_REPLACE},
	   */
    {"/_View",                NULL,	            NULL,                   0, "<Branch>" },
    {"/View/_Next Page",      "<Alt><CTRL>N",   G_CALLBACK(on_nextp),    0, "<StockItem>",    GTK_STOCK_GO_FORWARD},
    {"/View/_Previous Page",  "<Alt><CTRL>P",   G_CALLBACK(on_prevp),    0, "<StockItem>",    GTK_STOCK_GO_BACK},
    {"/View/---",             NULL,             NULL,                   0, "<Separator>"},
    {"/View/_Full Screen",    NULL,	            G_CALLBACK(on_fullscn), 0, "<CheckItem>",     GTK_STOCK_FULLSCREEN},
    {"/View/_Word Wrap",      NULL,	            G_CALLBACK(on_wrap),    0, "<CheckItem>" },
    {"/View/_Line Numbers",   NULL,	            G_CALLBACK(on_linen),   0, "<CheckItem>" },

   	   {"/_Help",                NULL,	            NULL,                   0, "<Branch>",    GTK_STOCK_HELP},
       {"/Help/_About",          NULL,	            G_CALLBACK(on_about),   0, "<StockItem>", GTK_STOCK_ABOUT}
       //{"/Help/_Online Support", NULL,	            NULL,                   0, "<StockItem>"}
};

//sets the size of the array
static gint nmenuentries=sizeof(menuentries)/sizeof(menuentries[0]);

//translates the menu array into a widget
static GtkWidget *get_menubar_menu(GtkWidget *window)
{
       g_print("Building Menu...\n");
       
       //temp vars
       GtkItemFactory *item_factory;
       GtkAccelGroup *accel_group;

       //adds to the window
       accel_group=gtk_accel_group_new();
       item_factory=gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);
       gtk_item_factory_create_items(item_factory, nmenuentries, menuentries, NULL);
       gtk_window_add_accel_group(GTK_WINDOW (window), accel_group);
       return gtk_item_factory_get_widget(item_factory, "<main>");
}