GTK+ Forums Forum Index GTK+ Forums
Discussion forum for GTK+ and Programming. Ask questions, troubleshoot problems, view and post example code, or express your opinions.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Submenu

 
Post new topic   Reply to topic    GTK+ Forums Forum Index -> GTK+ Programming
Author Message
alen121
Familiar Face


Joined: 28 Sep 2007
Posts: 33

PostPosted: Fri Sep 28, 2007 11:21 am    Post subject: Submenu Reply with quote

Submenu
I want to create a submenu for view containing file1(check item) and file2(check item) . what code should I write to create a submenu for a menu item
Like view?

Can you write this for me .
Code: (Plaintext)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <gtk/gtk.h>

gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
gtk_main_quit();
return FALSE;
}

int main(int argc , char *argv[])
{
gtk_init(&argc,&argv);
GtkWidget *window;
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);

GtkWidget *vbox;
vbox=gtk_vbox_new(FALSE,1);
gtk_widget_show(vbox);
gtk_container_add(GTK_CONTAINER(window),vbox);

GtkWidget *menubar;

menubar=gtk_menu_bar_new();
gtk_widget_set_size_request(GTK_WIDGET(menubar),200,40);
gtk_widget_show(menubar);

GtkWidget *hbox;
hbox=gtk_hbox_new(FALSE,1);

gtk_widget_show(hbox);
gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);
gtk_box_pack_start_defaults(GTK_BOX(hbox),menubar);
GtkWidget *menu;
menu=gtk_menu_new();
GtkWidget *view;
GtkWidget *quit;
view= gtk_image_menu_item_new_from_stock(GTK_STOCK_MISSING_IMAGE,NULL);
GtkWidget *separator=gtk_separator_menu_item_new();
quit= gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT,NULL);
gtk_widget_show (view);
gtk_widget_show(separator);
gtk_widget_show (quit);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),view);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),separator);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),quit);
GtkWidget *file;
file= gtk_menu_item_new_with_mnemonic("_File");
gtk_widget_show (file);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), menu);
gtk_menu_bar_append (GTK_MENU_BAR (menubar), file);
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(delete_event),NULL);
g_signal_connect(G_OBJECT(quit),"activate",G_CALLBACK(delete_event),NULL);
gtk_main();
return 0;
}
...
Back to top
alen121
Familiar Face


Joined: 28 Sep 2007
Posts: 33

PostPosted: Sat Sep 29, 2007 9:39 am    Post subject: Reply with quote

Noone can help me? :(
Back to top
alen121
Familiar Face


Joined: 28 Sep 2007
Posts: 33

PostPosted: Sat Sep 29, 2007 3:21 pm    Post subject: Reply with quote

I saw an example like this in Foundations of GTK+ page 328 figure 9-3 . But the code which created submenu for Sources item was not written . if Mr. openldev or other put the complete code of that program here for me I will be really appreciated :D
Back to top
Micah Carrick
Never Seen the Sunlight


Joined: 21 Sep 2005
Posts: 497
Location: Portland, OR USA

PostPosted: Sun Sep 30, 2007 8:15 pm    Post subject: Reply with quote

As is stated on page 328 in Foundations of GTK+ Development:

Quote:
Submenus in GTK+ are not created by a separate type of menu item widget but by calling gtk_menu_item_set_submenu().


You're already using them in your code.

Here is a modified version of Andrew's menu code from Chapter 9 (menubars.c) which creates a View menu in the File menu with "Hello!" as a submenu.

Code: (Plaintext)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <gtk/gtk.h>



int main (int argc,

          char *argv[])

{

  GtkWidget *window, *menubar, *file, *edit, *help, *filemenu, *editmenu, *helpmenu;

  GtkWidget *new, *open, *cut, *copy, *paste, *contents, *about;
  GtkWidget *view, *viewmenu, *hello; // Added by Micah

  GtkAccelGroup *group;



  gtk_init (&argc, &argv);



  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title (GTK_WINDOW (window), "Menu Bars");

  gtk_widget_set_size_request (window, 250, -1);

 

  g_signal_connect (G_OBJECT (window), "destroy",

                    G_CALLBACK (gtk_main_quit), NULL);



  group = gtk_accel_group_new ();

  menubar = gtk_menu_bar_new ();

  file = gtk_menu_item_new_with_label ("File");

  edit = gtk_menu_item_new_with_label ("Edit");

  help = gtk_menu_item_new_with_label ("Help");
  view = gtk_menu_item_new_with_label ("View"); // Added by Micah

  filemenu = gtk_menu_new ();

  editmenu = gtk_menu_new ();

  helpmenu = gtk_menu_new ();

  viewmenu = gtk_menu_new (); // Added by Micah
 

  gtk_menu_item_set_submenu (GTK_MENU_ITEM (file), filemenu);

  gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit), editmenu);

  gtk_menu_item_set_submenu (GTK_MENU_ITEM (help), helpmenu);

  gtk_menu_item_set_submenu (GTK_MENU_ITEM (view), viewmenu); // Added by Micah
 

  gtk_menu_shell_append (GTK_MENU_SHELL (menubar), file);

  gtk_menu_shell_append (GTK_MENU_SHELL (menubar), edit);

  gtk_menu_shell_append (GTK_MENU_SHELL (menubar), help);

 

  /* Create the File menu content. */

  new = gtk_image_menu_item_new_from_stock (GTK_STOCK_NEW, group);

  open = gtk_image_menu_item_new_from_stock (GTK_STOCK_OPEN, group);
  gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), new);

  gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), open);

 
  hello = gtk_menu_item_new_with_mnemonic("_Hello!"); // Added by Micah

  gtk_menu_shell_append (GTK_MENU_SHELL (viewmenu), hello); // Added by Micah
  gtk_menu_shell_append (GTK_MENU_SHELL (filemenu), view); // Added by Micah
 

  /* Create the Edit menu content. */

  cut = gtk_image_menu_item_new_from_stock (GTK_STOCK_CUT, group);

  copy = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY, group);

  paste = gtk_image_menu_item_new_from_stock (GTK_STOCK_PASTE, group);

  gtk_menu_shell_append (GTK_MENU_SHELL (editmenu), cut);

  gtk_menu_shell_append (GTK_MENU_SHELL (editmenu), copy);

  gtk_menu_shell_append (GTK_MENU_SHELL (editmenu), paste);

 

  /* Create the Help menu content. */

  contents = gtk_image_menu_item_new_from_stock (GTK_STOCK_HELP, group);

  about = gtk_image_menu_item_new_from_stock (GTK_STOCK_ABOUT, group);

  gtk_menu_shell_append (GTK_MENU_SHELL (helpmenu), contents);

  gtk_menu_shell_append (GTK_MENU_SHELL (helpmenu), about);

 

  gtk_container_add (GTK_CONTAINER (window), menubar);

  gtk_window_add_accel_group (GTK_WINDOW (window), group);



  gtk_widget_show_all (window);

  gtk_main ();

  return 0;

}
Back to top
Display posts from previous:   
Post new topic   Reply to topic    GTK+ Forums Forum Index -> GTK+ Programming All times are GMT
Page 1 of 1

 


Powered by phpBB © 2001, 2005 phpBB Group
CodeBB 1.0 Beta 2
Protected by Anti-Spam ACP