Commit 5fc33710f910e2009d7c6e4e08d72ca4b25abf2a

Authored by Perry Werneck
1 parent 5c5fa189

Implementing application actions.

src/objects/window/actions.c 0 → 100644
... ... @@ -0,0 +1,66 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  19 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  20 + *
  21 + * Este programa está nomeado como - e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + * References:
  29 + *
  30 + * https://fossies.org/linux/gtk+/examples/plugman.c
  31 + *
  32 + */
  33 +
  34 + #include "private.h"
  35 + #include <pw3270/application.h>
  36 +
  37 + void pw3270_application_quit_activated(GSimpleAction * action, GVariant *parameter, gpointer application) {
  38 +
  39 + g_print("Exiting application\n");
  40 +
  41 + GList *list = gtk_application_get_windows(GTK_APPLICATION(application));
  42 +
  43 + while(list) {
  44 +
  45 + GtkWidget * window = GTK_WIDGET(list->data);
  46 + list = list->next;
  47 +
  48 + gtk_widget_destroy(window);
  49 +
  50 + }
  51 +
  52 + }
  53 +
  54 + void pw3270_application_new_tab_activated(GSimpleAction * action, GVariant *parameter, gpointer application) {
  55 +
  56 + debug("%s",__FUNCTION__);
  57 + pw3270_terminal_new(GTK_WIDGET(gtk_application_get_active_window(GTK_APPLICATION(application))));
  58 +
  59 + }
  60 +
  61 + void pw3270_application_new_window_activated(GSimpleAction * action, GVariant *parameter, gpointer application) {
  62 +
  63 + debug("%s",__FUNCTION__);
  64 + g_application_activate(application);
  65 +
  66 + }
... ...
src/objects/window/application.c
... ... @@ -88,42 +88,27 @@
88 88 //
89 89 static GActionEntry app_entries[] = {
90 90 {
91   - "app.about",
92   - action_activated,
93   - NULL,
94   - NULL,
95   - NULL
  91 + .name = "about",
  92 + .activate = action_activated,
96 93 },
97 94 {
98   - "app.preferences",
99   - action_activated,
100   - NULL,
101   - NULL,
102   - NULL
  95 + .name = "preferences",
  96 + .activate = action_activated,
103 97 },
104 98  
105 99 {
106   - "app.quit",
107   - action_activated,
108   - NULL,
109   - NULL,
110   - NULL
  100 + .name = "quit",
  101 + .activate = pw3270_application_quit_activated,
111 102 },
112 103  
113 104 {
114   - "app.new_tab",
115   - action_activated,
116   - NULL,
117   - NULL,
118   - NULL
  105 + .name = "new_tab",
  106 + .activate = pw3270_application_new_tab_activated,
119 107 },
120 108  
121 109 {
122   - "app.new_window",
123   - action_activated,
124   - NULL,
125   - NULL,
126   - NULL
  110 + .name = "new_window",
  111 + .activate = pw3270_application_new_window_activated,
127 112 }
128 113  
129 114 };
... ...
src/objects/window/private.h
... ... @@ -61,4 +61,9 @@
61 61  
62 62 };
63 63  
  64 + // Actions
  65 + G_GNUC_INTERNAL void pw3270_application_quit_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
  66 + G_GNUC_INTERNAL void pw3270_application_new_tab_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
  67 + G_GNUC_INTERNAL void pw3270_application_new_window_activated(GSimpleAction * action, GVariant *parameter, gpointer application);
  68 +
64 69 #endif // PRIVATE_H_INCLUDED
... ...
src/objects/window/ui/application.xml
... ... @@ -8,6 +8,10 @@
8 8 <attribute name="action">app.about</attribute>
9 9 </item>
10 10 <item>
  11 + <attribute name="label" translatable="yes">New Window</attribute>
  12 + <attribute name="action">app.new_window</attribute>
  13 + </item>
  14 + <item>
11 15 <attribute name="label" translatable="yes">Preferences</attribute>
12 16 <attribute name="action">app.help</attribute>
13 17 </item>
... ...
src/objects/window/ui/window.xml
... ... @@ -12,7 +12,7 @@
12 12 <attribute name="action">app.help</attribute>
13 13 </item>
14 14 <item>
15   - <attribute name="label" translatable="yes">Quit</attribute>
  15 + <attribute name="label" translatable="yes">Quit PW3270</attribute>
16 16 <attribute name="action">app.quit</attribute>
17 17 </item>
18 18 </section>
... ...
src/objects/window/window.cbp
... ... @@ -42,6 +42,9 @@
42 42 <Unit filename="../../include/pw3270/application.h" />
43 43 <Unit filename="../../include/pw3270/toolbar.h" />
44 44 <Unit filename="../../include/pw3270/window.h" />
  45 + <Unit filename="actions.c">
  46 + <Option compilerVar="CC" />
  47 + </Unit>
45 48 <Unit filename="application.c">
46 49 <Option compilerVar="CC" />
47 50 </Unit>
... ...