Commit edfb6f9262d061f53b52c107b96d6c55b2a831f8

Authored by Perry Werneck
1 parent 9a7ea73f

Implementing build of menus using standard xml files.

src/objects/window/application.ui
@@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<interface>  
3 - <requires lib="gtk+" version="3.0"/>  
4 - <menu id="app-menu">  
5 - <section>  
6 - <item>  
7 - <attribute name="label" translatable="yes">About</attribute>  
8 - <attribute name="action">app.about</attribute>  
9 - </item>  
10 - <item>  
11 - <attribute name="label" translatable="yes">Help</attribute>  
12 - <attribute name="action">app.help</attribute>  
13 - <attribute name="accel">F1</attribute>  
14 - </item>  
15 - <item>  
16 - <attribute name="label" translatable="yes">Quit</attribute>  
17 - <attribute name="action">app.quit</attribute>  
18 - <attribute name="accel">&lt;Primary&gt;q</attribute>  
19 - </item>  
20 - </section>  
21 - </menu>  
22 -</interface>  
23 -  
src/objects/window/application.xml 0 → 100644
@@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<interface>
  3 + <requires lib="gtk+" version="3.0"/>
  4 + <menu id="app-menu">
  5 + <section>
  6 + <item>
  7 + <attribute name="label" translatable="yes">About PW3270</attribute>
  8 + <attribute name="action">app.about</attribute>
  9 + </item>
  10 + <item>
  11 + <attribute name="label" translatable="yes">Preferences</attribute>
  12 + <attribute name="action">app.help</attribute>
  13 + </item>
  14 + <item>
  15 + <attribute name="label" translatable="yes">Quit</attribute>
  16 + <attribute name="action">app.quit</attribute>
  17 + </item>
  18 + </section>
  19 + </menu>
  20 + <menu id='menubar'>
  21 +
  22 + <submenu>
  23 + <attribute name='label' translatable='yes'>_Edit</attribute>
  24 + <section>
  25 + <item>
  26 + <attribute name='label' translatable='yes'>_Copy</attribute>
  27 + <attribute name='action'>app.quit</attribute>
  28 + </item>
  29 + <item>
  30 + <attribute name='label' translatable='yes'>_Paste</attribute>
  31 + <attribute name='action'>app.quit</attribute>
  32 + </item>
  33 + </section>
  34 + <section>
  35 + <item>
  36 + <attribute name='label' translatable='yes'>Plugins</attribute>
  37 + <attribute name='action'>app.quit</attribute>
  38 + </item>
  39 + </section>
  40 + </submenu>
  41 +
  42 + <submenu>
  43 + <attribute name='label' translatable='yes'>_View</attribute>
  44 + <section>
  45 + <item>
  46 + <attribute name='label' translatable='yes'>_Fullscreen</attribute>
  47 + <attribute name='action'>app.quit</attribute>
  48 + </item>
  49 + </section>
  50 + </submenu>
  51 +
  52 + </menu>
  53 +</interface>
src/objects/window/init.c
@@ -50,8 +50,8 @@ @@ -50,8 +50,8 @@
50 gtk_box_pack_start(vBox,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); 50 gtk_box_pack_start(vBox,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0);
51 gtk_box_pack_start(vBox,GTK_WIDGET(widget->notebook),TRUE,TRUE,0); 51 gtk_box_pack_start(vBox,GTK_WIDGET(widget->notebook),TRUE,TRUE,0);
52 52
  53 + gtk_widget_show_all(GTK_WIDGET(vBox));
53 gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(vBox)); 54 gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(vBox));
54 - gtk_widget_show_all(GTK_WIDGET(widget));  
55 55
56 } 56 }
57 57
src/objects/window/terminal.c
@@ -72,6 +72,9 @@ @@ -72,6 +72,9 @@
72 g_signal_connect(G_OBJECT(terminal), "focus-in-event", G_CALLBACK(on_terminal_focus), widget); 72 g_signal_connect(G_OBJECT(terminal), "focus-in-event", G_CALLBACK(on_terminal_focus), widget);
73 g_signal_connect(G_OBJECT(terminal), "session_changed", G_CALLBACK(session_changed),label); 73 g_signal_connect(G_OBJECT(terminal), "session_changed", G_CALLBACK(session_changed),label);
74 74
  75 + gtk_widget_show_all(terminal);
  76 + gtk_widget_show_all(label);
  77 +
75 gtk_notebook_append_page(GTK_NOTEBOOK(window->notebook),terminal,label); 78 gtk_notebook_append_page(GTK_NOTEBOOK(window->notebook),terminal,label);
76 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(window->notebook),gtk_notebook_get_n_pages(GTK_NOTEBOOK(window->notebook)) > 1); 79 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(window->notebook),gtk_notebook_get_n_pages(GTK_NOTEBOOK(window->notebook)) > 1);
77 80
src/objects/window/testprogram/testprogram.c
@@ -41,6 +41,8 @@ @@ -41,6 +41,8 @@
41 41
42 GtkWidget * window = pw3270_application_window_new(app); 42 GtkWidget * window = pw3270_application_window_new(app);
43 43
  44 + gtk_application_window_set_show_menubar(GTK_APPLICATION_WINDOW(window),TRUE);
  45 +
44 // Create terminal widget 46 // Create terminal widget
45 pw3270_terminal_new(window); 47 pw3270_terminal_new(window);
46 pw3270_terminal_new(window); 48 pw3270_terminal_new(window);
@@ -48,7 +50,9 @@ @@ -48,7 +50,9 @@
48 // Setup and show main window 50 // Setup and show main window
49 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); 51 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
50 gtk_window_set_default_size (GTK_WINDOW (window), 800, 500); 52 gtk_window_set_default_size (GTK_WINDOW (window), 800, 500);
51 - gtk_widget_show_all(window); 53 +
  54 + // gtk_widget_show_all(window);
  55 + gtk_window_present(GTK_WINDOW(window));
52 56
53 } 57 }
54 58
@@ -85,7 +89,7 @@ GtkWidget * pw3270_toolbar_new(void) { @@ -85,7 +89,7 @@ GtkWidget * pw3270_toolbar_new(void) {
85 return toolbar; 89 return toolbar;
86 } 90 }
87 91
88 -static void preferences_activated(GSimpleAction * action, GtkApplication *application) { 92 +static void preferences_activated(GSimpleAction * action, GVariant *parameter, gpointer application) {
89 93
90 debug("%s",__FUNCTION__); 94 debug("%s",__FUNCTION__);
91 95
@@ -97,7 +101,7 @@ static void quit_activated(GSimpleAction * action, GVariant *parameter, gpointer @@ -97,7 +101,7 @@ static void quit_activated(GSimpleAction * action, GVariant *parameter, gpointer
97 101
98 } 102 }
99 103
100 -void startup(GtkApplication *application, gpointer user_data) { 104 +void startup(GtkApplication *app) {
101 105
102 static GActionEntry app_entries[] = { 106 static GActionEntry app_entries[] = {
103 { 107 {
@@ -131,32 +135,30 @@ void startup(GtkApplication *application, gpointer user_data) { @@ -131,32 +135,30 @@ void startup(GtkApplication *application, gpointer user_data) {
131 }; 135 };
132 136
133 g_action_map_add_action_entries( 137 g_action_map_add_action_entries(
134 - G_ACTION_MAP(application), 138 + G_ACTION_MAP(app),
135 app_entries, 139 app_entries,
136 G_N_ELEMENTS(app_entries), 140 G_N_ELEMENTS(app_entries),
137 - application 141 + app
138 ); 142 );
139 143
140 - GtkBuilder * builder = gtk_builder_new_from_file("application.ui"); 144 + GtkBuilder * builder = gtk_builder_new_from_file("application.xml");
141 145
142 debug("Builder: %p",builder); 146 debug("Builder: %p",builder);
143 147
144 - GMenuModel * app_menu = G_MENU_MODEL(gtk_builder_get_object(builder, "app-menu"));  
145 - debug("app-menu: %p", app_menu);  
146 - gtk_application_set_app_menu(application, app_menu);  
147 -  
148 -  
149 - // gtk_application_set_menubar(application, G_MENU_MODEL(gtk_builder_get_object(builder, "app-menubar"))); 148 + gtk_application_set_app_menu(GTK_APPLICATION (app), G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
  149 + gtk_application_set_menubar(GTK_APPLICATION (app), G_MENU_MODEL (gtk_builder_get_object (builder, "menubar")));
150 150
151 g_object_unref(builder); 151 g_object_unref(builder);
  152 +
152 } 153 }
153 154
  155 +
154 int main (int argc, char **argv) { 156 int main (int argc, char **argv) {
155 157
156 GtkApplication *app; 158 GtkApplication *app;
157 int status; 159 int status;
158 160
159 - app = gtk_application_new ("br.com.bb.pw3270",G_APPLICATION_FLAGS_NONE); 161 + app = gtk_application_new("br.com.bb.pw3270",G_APPLICATION_HANDLES_OPEN);
160 162
161 g_signal_connect (app, "activate", G_CALLBACK(activate), NULL); 163 g_signal_connect (app, "activate", G_CALLBACK(activate), NULL);
162 g_signal_connect (app, "startup", G_CALLBACK(startup), NULL); 164 g_signal_connect (app, "startup", G_CALLBACK(startup), NULL);