Commit 846ee516beecdbf967fe19026d69ef74e31e3084

Authored by perry.werneck@gmail.com
1 parent 4288039a

Implementando suporte para os botões full/unfullscreen

pw3270.cbp
... ... @@ -8,8 +8,8 @@
8 8 <Option compiler="gcc" />
9 9 <Build>
10 10 <Target title="Debug">
11   - <Option output=".bin\Debug\pw3270" prefix_auto="1" extension_auto="1" />
12   - <Option object_output=".obj\Debug\" />
  11 + <Option output=".bin/Debug/pw3270" prefix_auto="1" extension_auto="1" />
  12 + <Option object_output=".obj/Debug/" />
13 13 <Option type="0" />
14 14 <Option compiler="gcc" />
15 15 <Compiler>
... ... @@ -18,8 +18,8 @@
18 18 </Compiler>
19 19 </Target>
20 20 <Target title="Release">
21   - <Option output=".bin\Release\pw3270" prefix_auto="1" extension_auto="1" />
22   - <Option object_output=".obj\Release\" />
  21 + <Option output=".bin/Release/pw3270" prefix_auto="1" extension_auto="1" />
  22 + <Option object_output=".obj/Release/" />
23 23 <Option type="0" />
24 24 <Option compiler="gcc" />
25 25 <Compiler>
... ... @@ -33,7 +33,7 @@
33 33 <Compiler>
34 34 <Add option="-Wall" />
35 35 <Add option="`pkg-config gtk+-3.0 lib3270 --cflags`" />
36   - <Add directory="src\include" />
  36 + <Add directory="src/include" />
37 37 </Compiler>
38 38 <Linker>
39 39 <Add option="`pkg-config gtk+-3.0 lib3270 --libs`" />
... ... @@ -41,273 +41,270 @@
41 41 <Unit filename="Makefile.in" />
42 42 <Unit filename="configure.ac" />
43 43 <Unit filename="pw3270.spec.in" />
44   - <Unit filename="src\gtk\Makefile.in" />
45   - <Unit filename="src\gtk\actions.c">
  44 + <Unit filename="src/gtk/Makefile.in" />
  45 + <Unit filename="src/gtk/actions.c">
46 46 <Option compilerVar="CC" />
47 47 </Unit>
48   - <Unit filename="src\gtk\common\common.h" />
49   - <Unit filename="src\gtk\common\config.c">
  48 + <Unit filename="src/gtk/common/common.h" />
  49 + <Unit filename="src/gtk/common/config.c">
50 50 <Option compilerVar="CC" />
51 51 </Unit>
52   - <Unit filename="src\gtk\fonts.c">
  52 + <Unit filename="src/gtk/fonts.c">
53 53 <Option compilerVar="CC" />
54 54 </Unit>
55   - <Unit filename="src\gtk\globals.h" />
56   - <Unit filename="src\gtk\main.c">
  55 + <Unit filename="src/gtk/globals.h" />
  56 + <Unit filename="src/gtk/main.c">
57 57 <Option compilerVar="CC" />
58 58 </Unit>
59   - <Unit filename="src\gtk\mainwindow.c">
  59 + <Unit filename="src/gtk/mainwindow.c">
60 60 <Option compilerVar="CC" />
61 61 </Unit>
62   - <Unit filename="src\gtk\uiparser\Makefile.in" />
63   - <Unit filename="src\gtk\uiparser\accelerator.c">
  62 + <Unit filename="src/gtk/uiparser/Makefile.in" />
  63 + <Unit filename="src/gtk/uiparser/accelerator.c">
64 64 <Option compilerVar="CC" />
65 65 </Unit>
66   - <Unit filename="src\gtk\uiparser\action.c">
  66 + <Unit filename="src/gtk/uiparser/action.c">
67 67 <Option compilerVar="CC" />
68 68 </Unit>
69   - <Unit filename="src\gtk\uiparser\menu.c">
  69 + <Unit filename="src/gtk/uiparser/menu.c">
70 70 <Option compilerVar="CC" />
71 71 </Unit>
72   - <Unit filename="src\gtk\uiparser\menubar.c">
  72 + <Unit filename="src/gtk/uiparser/menubar.c">
73 73 <Option compilerVar="CC" />
74 74 </Unit>
75   - <Unit filename="src\gtk\uiparser\menuitem.c">
  75 + <Unit filename="src/gtk/uiparser/menuitem.c">
76 76 <Option compilerVar="CC" />
77 77 </Unit>
78   - <Unit filename="src\gtk\uiparser\parsefile.c">
  78 + <Unit filename="src/gtk/uiparser/parsefile.c">
79 79 <Option compilerVar="CC" />
80 80 </Unit>
81   - <Unit filename="src\gtk\uiparser\parser.c">
  81 + <Unit filename="src/gtk/uiparser/parser.c">
82 82 <Option compilerVar="CC" />
83 83 </Unit>
84   - <Unit filename="src\gtk\uiparser\parser.h" />
85   - <Unit filename="src\gtk\uiparser\popup.c">
  84 + <Unit filename="src/gtk/uiparser/parser.h" />
  85 + <Unit filename="src/gtk/uiparser/popup.c">
86 86 <Option compilerVar="CC" />
87 87 </Unit>
88   - <Unit filename="src\gtk\uiparser\private.h" />
89   - <Unit filename="src\gtk\uiparser\script.c">
  88 + <Unit filename="src/gtk/uiparser/private.h" />
  89 + <Unit filename="src/gtk/uiparser/script.c">
90 90 <Option compilerVar="CC" />
91 91 </Unit>
92   - <Unit filename="src\gtk\uiparser\separator.c">
  92 + <Unit filename="src/gtk/uiparser/separator.c">
93 93 <Option compilerVar="CC" />
94 94 </Unit>
95   - <Unit filename="src\gtk\uiparser\sources.mak" />
96   - <Unit filename="src\gtk\uiparser\testprogram.c">
  95 + <Unit filename="src/gtk/uiparser/sources.mak" />
  96 + <Unit filename="src/gtk/uiparser/toolbar.c">
97 97 <Option compilerVar="CC" />
98 98 </Unit>
99   - <Unit filename="src\gtk\uiparser\toolbar.c">
  99 + <Unit filename="src/gtk/uiparser/toolitem.c">
100 100 <Option compilerVar="CC" />
101 101 </Unit>
102   - <Unit filename="src\gtk\uiparser\toolitem.c">
  102 + <Unit filename="src/gtk/v3270/clipboard.c">
103 103 <Option compilerVar="CC" />
104 104 </Unit>
105   - <Unit filename="src\gtk\v3270\clipboard.c">
  105 + <Unit filename="src/gtk/v3270/draw.c">
106 106 <Option compilerVar="CC" />
107 107 </Unit>
108   - <Unit filename="src\gtk\v3270\draw.c">
  108 + <Unit filename="src/gtk/v3270/genmarshal" />
  109 + <Unit filename="src/gtk/v3270/iocallback.c">
109 110 <Option compilerVar="CC" />
110 111 </Unit>
111   - <Unit filename="src\gtk\v3270\genmarshal" />
112   - <Unit filename="src\gtk\v3270\iocallback.c">
  112 + <Unit filename="src/gtk/v3270/keyboard.c">
113 113 <Option compilerVar="CC" />
114 114 </Unit>
115   - <Unit filename="src\gtk\v3270\keyboard.c">
  115 + <Unit filename="src/gtk/v3270/mouse.c">
116 116 <Option compilerVar="CC" />
117 117 </Unit>
118   - <Unit filename="src\gtk\v3270\mouse.c">
  118 + <Unit filename="src/gtk/v3270/oia.c">
119 119 <Option compilerVar="CC" />
120 120 </Unit>
121   - <Unit filename="src\gtk\v3270\oia.c">
  121 + <Unit filename="src/gtk/v3270/private.h" />
  122 + <Unit filename="src/gtk/v3270/sources.mak" />
  123 + <Unit filename="src/gtk/v3270/v3270.h" />
  124 + <Unit filename="src/gtk/v3270/widget.c">
122 125 <Option compilerVar="CC" />
123 126 </Unit>
124   - <Unit filename="src\gtk\v3270\private.h" />
125   - <Unit filename="src\gtk\v3270\sources.mak" />
126   - <Unit filename="src\gtk\v3270\v3270.h" />
127   - <Unit filename="src\gtk\v3270\widget.c">
  127 + <Unit filename="src/include/lib3270.h" />
  128 + <Unit filename="src/include/lib3270/action_table.h" />
  129 + <Unit filename="src/include/lib3270/actions.h" />
  130 + <Unit filename="src/include/lib3270/config.h.in" />
  131 + <Unit filename="src/include/lib3270/log.h" />
  132 + <Unit filename="src/include/lib3270/popup.h" />
  133 + <Unit filename="src/include/lib3270/selection.h" />
  134 + <Unit filename="src/include/lib3270/session.h" />
  135 + <Unit filename="src/include/pw3270.h" />
  136 + <Unit filename="src/include/rules.mak.in" />
  137 + <Unit filename="src/lib3270/3270ds.h" />
  138 + <Unit filename="src/lib3270/Makefile.in" />
  139 + <Unit filename="src/lib3270/X11keysym.h" />
  140 + <Unit filename="src/lib3270/XtGlue.c">
128 141 <Option compilerVar="CC" />
129 142 </Unit>
130   - <Unit filename="src\include\lib3270.h" />
131   - <Unit filename="src\include\lib3270\action_table.h" />
132   - <Unit filename="src\include\lib3270\actions.h" />
133   - <Unit filename="src\include\lib3270\config.h.in" />
134   - <Unit filename="src\include\lib3270\log.h" />
135   - <Unit filename="src\include\lib3270\popup.h" />
136   - <Unit filename="src\include\lib3270\selection.h" />
137   - <Unit filename="src\include\lib3270\session.h" />
138   - <Unit filename="src\include\pw3270.h" />
139   - <Unit filename="src\include\rules.mak.in" />
140   - <Unit filename="src\lib3270\3270ds.h" />
141   - <Unit filename="src\lib3270\Makefile.in" />
142   - <Unit filename="src\lib3270\X11keysym.h" />
143   - <Unit filename="src\lib3270\XtGlue.c">
  143 + <Unit filename="src/lib3270/actions.c">
144 144 <Option compilerVar="CC" />
145 145 </Unit>
146   - <Unit filename="src\lib3270\actions.c">
  146 + <Unit filename="src/lib3270/actionsc.h" />
  147 + <Unit filename="src/lib3270/ansi.c">
147 148 <Option compilerVar="CC" />
148 149 </Unit>
149   - <Unit filename="src\lib3270\actionsc.h" />
150   - <Unit filename="src\lib3270\ansi.c">
  150 + <Unit filename="src/lib3270/ansic.h" />
  151 + <Unit filename="src/lib3270/api.h" />
  152 + <Unit filename="src/lib3270/apl.c">
151 153 <Option compilerVar="CC" />
152 154 </Unit>
153   - <Unit filename="src\lib3270\ansic.h" />
154   - <Unit filename="src\lib3270\api.h" />
155   - <Unit filename="src\lib3270\apl.c">
  155 + <Unit filename="src/lib3270/aplc.h" />
  156 + <Unit filename="src/lib3270/appres.h" />
  157 + <Unit filename="src/lib3270/arpa_telnet.h" />
  158 + <Unit filename="src/lib3270/cg.h" />
  159 + <Unit filename="src/lib3270/charset.c">
156 160 <Option compilerVar="CC" />
157 161 </Unit>
158   - <Unit filename="src\lib3270\aplc.h" />
159   - <Unit filename="src\lib3270\appres.h" />
160   - <Unit filename="src\lib3270\arpa_telnet.h" />
161   - <Unit filename="src\lib3270\cg.h" />
162   - <Unit filename="src\lib3270\charset.c">
  162 + <Unit filename="src/lib3270/charsetc.h" />
  163 + <Unit filename="src/lib3270/childc.h" />
  164 + <Unit filename="src/lib3270/ctlr.c">
163 165 <Option compilerVar="CC" />
164 166 </Unit>
165   - <Unit filename="src\lib3270\charsetc.h" />
166   - <Unit filename="src\lib3270\childc.h" />
167   - <Unit filename="src\lib3270\ctlr.c">
  167 + <Unit filename="src/lib3270/ctlr.h" />
  168 + <Unit filename="src/lib3270/ctlrc.h" />
  169 + <Unit filename="src/lib3270/dialogc.h" />
  170 + <Unit filename="src/lib3270/fallbacks.c">
168 171 <Option compilerVar="CC" />
169 172 </Unit>
170   - <Unit filename="src\lib3270\ctlr.h" />
171   - <Unit filename="src\lib3270\ctlrc.h" />
172   - <Unit filename="src\lib3270\dialogc.h" />
173   - <Unit filename="src\lib3270\fallbacks.c">
  173 + <Unit filename="src/lib3270/ft.c">
174 174 <Option compilerVar="CC" />
175 175 </Unit>
176   - <Unit filename="src\lib3270\ft.c">
  176 + <Unit filename="src/lib3270/ft_cut.c">
177 177 <Option compilerVar="CC" />
178 178 </Unit>
179   - <Unit filename="src\lib3270\ft_cut.c">
  179 + <Unit filename="src/lib3270/ft_cut_ds.h" />
  180 + <Unit filename="src/lib3270/ft_cutc.h" />
  181 + <Unit filename="src/lib3270/ft_dft.c">
180 182 <Option compilerVar="CC" />
181 183 </Unit>
182   - <Unit filename="src\lib3270\ft_cut_ds.h" />
183   - <Unit filename="src\lib3270\ft_cutc.h" />
184   - <Unit filename="src\lib3270\ft_dft.c">
  184 + <Unit filename="src/lib3270/ft_dft_ds.h" />
  185 + <Unit filename="src/lib3270/ft_dftc.h" />
  186 + <Unit filename="src/lib3270/ftc.h" />
  187 + <Unit filename="src/lib3270/globals.h" />
  188 + <Unit filename="src/lib3270/glue.c">
185 189 <Option compilerVar="CC" />
186 190 </Unit>
187   - <Unit filename="src\lib3270\ft_dft_ds.h" />
188   - <Unit filename="src\lib3270\ft_dftc.h" />
189   - <Unit filename="src\lib3270\ftc.h" />
190   - <Unit filename="src\lib3270\globals.h" />
191   - <Unit filename="src\lib3270\glue.c">
  191 + <Unit filename="src/lib3270/gluec.h" />
  192 + <Unit filename="src/lib3270/host.c">
192 193 <Option compilerVar="CC" />
193 194 </Unit>
194   - <Unit filename="src\lib3270\gluec.h" />
195   - <Unit filename="src\lib3270\host.c">
  195 + <Unit filename="src/lib3270/hostc.h" />
  196 + <Unit filename="src/lib3270/icmdc.h" />
  197 + <Unit filename="src/lib3270/keypadc.h" />
  198 + <Unit filename="src/lib3270/kybd.c">
196 199 <Option compilerVar="CC" />
197 200 </Unit>
198   - <Unit filename="src\lib3270\hostc.h" />
199   - <Unit filename="src\lib3270\icmdc.h" />
200   - <Unit filename="src\lib3270\keypadc.h" />
201   - <Unit filename="src\lib3270\kybd.c">
  201 + <Unit filename="src/lib3270/kybdc.h" />
  202 + <Unit filename="src/lib3270/localdefs.h" />
  203 + <Unit filename="src/lib3270/log.c">
202 204 <Option compilerVar="CC" />
203 205 </Unit>
204   - <Unit filename="src\lib3270\kybdc.h" />
205   - <Unit filename="src\lib3270\localdefs.h" />
206   - <Unit filename="src\lib3270\log.c">
  206 + <Unit filename="src/lib3270/macros.c">
207 207 <Option compilerVar="CC" />
208 208 </Unit>
209   - <Unit filename="src\lib3270\macros.c">
  209 + <Unit filename="src/lib3270/mkfb.c">
210 210 <Option compilerVar="CC" />
211 211 </Unit>
212   - <Unit filename="src\lib3270\mkfb.c">
  212 + <Unit filename="src/lib3270/objects.h" />
  213 + <Unit filename="src/lib3270/paste.c">
213 214 <Option compilerVar="CC" />
214 215 </Unit>
215   - <Unit filename="src\lib3270\objects.h" />
216   - <Unit filename="src\lib3270\paste.c">
  216 + <Unit filename="src/lib3270/popupsc.h" />
  217 + <Unit filename="src/lib3270/print.c">
217 218 <Option compilerVar="CC" />
218 219 </Unit>
219   - <Unit filename="src\lib3270\popupsc.h" />
220   - <Unit filename="src\lib3270\print.c">
  220 + <Unit filename="src/lib3270/printc.h" />
  221 + <Unit filename="src/lib3270/printer.c">
221 222 <Option compilerVar="CC" />
222 223 </Unit>
223   - <Unit filename="src\lib3270\printc.h" />
224   - <Unit filename="src\lib3270\printer.c">
  224 + <Unit filename="src/lib3270/printerc.h" />
  225 + <Unit filename="src/lib3270/proxy.c">
225 226 <Option compilerVar="CC" />
226 227 </Unit>
227   - <Unit filename="src\lib3270\printerc.h" />
228   - <Unit filename="src\lib3270\proxy.c">
  228 + <Unit filename="src/lib3270/proxyc.h" />
  229 + <Unit filename="src/lib3270/resolver.c">
229 230 <Option compilerVar="CC" />
230 231 </Unit>
231   - <Unit filename="src\lib3270\proxyc.h" />
232   - <Unit filename="src\lib3270\resolver.c">
  232 + <Unit filename="src/lib3270/resolverc.h" />
  233 + <Unit filename="src/lib3270/resources.c">
233 234 <Option compilerVar="CC" />
234 235 </Unit>
235   - <Unit filename="src\lib3270\resolverc.h" />
236   - <Unit filename="src\lib3270\resources.c">
  236 + <Unit filename="src/lib3270/resources.h" />
  237 + <Unit filename="src/lib3270/rpq.c">
237 238 <Option compilerVar="CC" />
238 239 </Unit>
239   - <Unit filename="src\lib3270\resources.h" />
240   - <Unit filename="src\lib3270\rpq.c">
  240 + <Unit filename="src/lib3270/savec.h" />
  241 + <Unit filename="src/lib3270/screen.c">
241 242 <Option compilerVar="CC" />
242 243 </Unit>
243   - <Unit filename="src\lib3270\savec.h" />
244   - <Unit filename="src\lib3270\screen.c">
  244 + <Unit filename="src/lib3270/screen.h" />
  245 + <Unit filename="src/lib3270/screenc.h" />
  246 + <Unit filename="src/lib3270/scrollc.h" />
  247 + <Unit filename="src/lib3270/see.c">
245 248 <Option compilerVar="CC" />
246 249 </Unit>
247   - <Unit filename="src\lib3270\screen.h" />
248   - <Unit filename="src\lib3270\screenc.h" />
249   - <Unit filename="src\lib3270\scrollc.h" />
250   - <Unit filename="src\lib3270\see.c">
  250 + <Unit filename="src/lib3270/seec.h" />
  251 + <Unit filename="src/lib3270/selection.c">
251 252 <Option compilerVar="CC" />
252 253 </Unit>
253   - <Unit filename="src\lib3270\seec.h" />
254   - <Unit filename="src\lib3270\selection.c">
  254 + <Unit filename="src/lib3270/sf.c">
255 255 <Option compilerVar="CC" />
256 256 </Unit>
257   - <Unit filename="src\lib3270\sf.c">
  257 + <Unit filename="src/lib3270/sfc.h" />
  258 + <Unit filename="src/lib3270/shlobj_missing.h" />
  259 + <Unit filename="src/lib3270/statusc.h" />
  260 + <Unit filename="src/lib3270/tables.c">
258 261 <Option compilerVar="CC" />
259 262 </Unit>
260   - <Unit filename="src\lib3270\sfc.h" />
261   - <Unit filename="src\lib3270\shlobj_missing.h" />
262   - <Unit filename="src\lib3270\statusc.h" />
263   - <Unit filename="src\lib3270\tables.c">
  263 + <Unit filename="src/lib3270/tablesc.h" />
  264 + <Unit filename="src/lib3270/telnet.c">
264 265 <Option compilerVar="CC" />
265 266 </Unit>
266   - <Unit filename="src\lib3270\tablesc.h" />
267   - <Unit filename="src\lib3270\telnet.c">
  267 + <Unit filename="src/lib3270/telnetc.h" />
  268 + <Unit filename="src/lib3270/testprogram.c">
268 269 <Option compilerVar="CC" />
269 270 </Unit>
270   - <Unit filename="src\lib3270\telnetc.h" />
271   - <Unit filename="src\lib3270\testprogram.c">
  271 + <Unit filename="src/lib3270/tn3270e.h" />
  272 + <Unit filename="src/lib3270/toggle.h" />
  273 + <Unit filename="src/lib3270/toggles.c">
272 274 <Option compilerVar="CC" />
273 275 </Unit>
274   - <Unit filename="src\lib3270\tn3270e.h" />
275   - <Unit filename="src\lib3270\toggle.h" />
276   - <Unit filename="src\lib3270\toggles.c">
  276 + <Unit filename="src/lib3270/togglesc.h" />
  277 + <Unit filename="src/lib3270/trace_ds.c">
277 278 <Option compilerVar="CC" />
278 279 </Unit>
279   - <Unit filename="src\lib3270\togglesc.h" />
280   - <Unit filename="src\lib3270\trace_ds.c">
  280 + <Unit filename="src/lib3270/trace_dsc.h" />
  281 + <Unit filename="src/lib3270/utf8.c">
281 282 <Option compilerVar="CC" />
282 283 </Unit>
283   - <Unit filename="src\lib3270\trace_dsc.h" />
284   - <Unit filename="src\lib3270\utf8.c">
  284 + <Unit filename="src/lib3270/utf8c.h" />
  285 + <Unit filename="src/lib3270/util.c">
285 286 <Option compilerVar="CC" />
286 287 </Unit>
287   - <Unit filename="src\lib3270\utf8c.h" />
288   - <Unit filename="src\lib3270\util.c">
  288 + <Unit filename="src/lib3270/utilc.h" />
  289 + <Unit filename="src/lib3270/version.c">
289 290 <Option compilerVar="CC" />
290 291 </Unit>
291   - <Unit filename="src\lib3270\utilc.h" />
292   - <Unit filename="src\lib3270\version.c">
  292 + <Unit filename="src/lib3270/w3misc.c">
293 293 <Option compilerVar="CC" />
294 294 </Unit>
295   - <Unit filename="src\lib3270\w3misc.c">
  295 + <Unit filename="src/lib3270/w3miscc.h" />
  296 + <Unit filename="src/lib3270/widec.h" />
  297 + <Unit filename="src/lib3270/winvers.c">
296 298 <Option compilerVar="CC" />
297 299 </Unit>
298   - <Unit filename="src\lib3270\w3miscc.h" />
299   - <Unit filename="src\lib3270\widec.h" />
300   - <Unit filename="src\lib3270\winvers.c">
  300 + <Unit filename="src/lib3270/winversc.h" />
  301 + <Unit filename="src/lib3270/xio.c">
301 302 <Option compilerVar="CC" />
302 303 </Unit>
303   - <Unit filename="src\lib3270\winversc.h" />
304   - <Unit filename="src\lib3270\xio.c">
305   - <Option compilerVar="CC" />
306   - </Unit>
307   - <Unit filename="src\lib3270\xioc.h" />
308   - <Unit filename="src\lib3270\xl.h" />
309   - <Unit filename="ui\00default.xml" />
310   - <Unit filename="ui\99debug.xml" />
  304 + <Unit filename="src/lib3270/xioc.h" />
  305 + <Unit filename="src/lib3270/xl.h" />
  306 + <Unit filename="ui/00default.xml" />
  307 + <Unit filename="ui/99debug.xml" />
311 308 <Unit filename="valgrind.suppression" />
312 309 <Extensions>
313 310 <code_completion />
... ...
src/gtk/actions.c
... ... @@ -186,8 +186,41 @@ static void action_pakey(GtkAction *action, GtkWidget *widget)
186 186 lib3270_pakey(GTK_V3270(widget)->host,(int) g_object_get_data(G_OBJECT(action),"pakey"));
187 187 }
188 188  
  189 +static void action_fullscreen(GtkAction *action, GtkWidget *widget)
  190 +{
  191 + lib3270_set_toggle(GTK_V3270(widget)->host,LIB3270_TOGGLE_FULL_SCREEN,1);
  192 +}
  193 +
  194 +static void action_unfullscreen(GtkAction *action, GtkWidget *widget)
  195 +{
  196 + lib3270_set_toggle(GTK_V3270(widget)->host,LIB3270_TOGGLE_FULL_SCREEN,0);
  197 +}
  198 +
189 199 void ui_connect_pakey(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id)
190 200 {
191 201 g_object_set_data(G_OBJECT(action),"pakey",(gpointer) atoi(id));
192 202 g_signal_connect(action,"activate",G_CALLBACK(action_pakey),widget);
193 203 }
  204 +
  205 +void ui_connect_index_action(GtkAction *action, GtkWidget *widget, int ix, GtkAction **lst)
  206 +{
  207 + trace("action(%d): %p",ix,action);
  208 +
  209 + switch(ix)
  210 + {
  211 + case ACTION_PASTENEXT:
  212 + break;
  213 +
  214 + case ACTION_FULLSCREEN:
  215 + g_signal_connect(action,"activate",G_CALLBACK(action_fullscreen),widget);
  216 + break;
  217 +
  218 + case ACTION_UNFULLSCREEN:
  219 + g_signal_connect(action,"activate",G_CALLBACK(action_unfullscreen),widget);
  220 + break;
  221 +
  222 + default:
  223 + g_warning("Action \"%s\" has unexpected id %d",gtk_action_get_name(action),ix);
  224 + gtk_action_set_sensitive(action,FALSE);
  225 + }
  226 +}
... ...
src/gtk/globals.h
... ... @@ -39,6 +39,16 @@
39 39  
40 40 #include "v3270/v3270.h"
41 41  
  42 + // Special actions
  43 + enum
  44 + {
  45 + ACTION_PASTENEXT,
  46 + ACTION_FULLSCREEN,
  47 + ACTION_UNFULLSCREEN,
  48 +
  49 + ACTION_COUNT
  50 + };
  51 +
42 52 // Configuration
43 53 #include "common/common.h"
44 54  
... ...
src/gtk/mainwindow.c
... ... @@ -73,22 +73,37 @@
73 73 "selection",
74 74 NULL
75 75 };
  76 +
  77 + static const gchar *actionname[ACTION_COUNT+1] = { "pastenext",
  78 + "setfullscreen",
  79 + "resetfullscreen"
  80 + };
76 81 /*--[ Implement ]------------------------------------------------------------------------------------*/
77 82  
78   - static void save_toggle(GtkWidget *widget, LIB3270_TOGGLE id, gboolean toggled, const gchar *name, GtkWindow *toplevel)
  83 + static void toggle_changed(GtkWidget *widget, LIB3270_TOGGLE id, gboolean toggled, const gchar *name, GtkWindow *toplevel)
79 84 {
80 85 gchar *nm = g_ascii_strdown(name,-1);
81   - trace("Toggle \"%s\" in widget %p is %s toplevel=%p",nm,widget,toggled ? "Active" : "Inactive",toplevel);
82 86 set_boolean_to_config("toggle",nm,toggled);
83 87 g_free(nm);
84 88  
85 89 if(id == LIB3270_TOGGLE_FULL_SCREEN)
86 90 {
  91 + GtkAction **action = (GtkAction **) g_object_get_data(G_OBJECT(toplevel),"named_actions");
  92 +
  93 + if(action[ACTION_FULLSCREEN])
  94 + gtk_action_set_visible(action[ACTION_FULLSCREEN],!toggled);
  95 +
  96 + if(action[ACTION_UNFULLSCREEN])
  97 + gtk_action_set_visible(action[ACTION_UNFULLSCREEN],toggled);
  98 +
87 99 if(toggled)
88 100 gtk_window_fullscreen(GTK_WINDOW(toplevel));
89 101 else
90 102 gtk_window_unfullscreen(GTK_WINDOW(toplevel));
91 103 }
  104 +
  105 + #warning TODO: Update toggle actions.
  106 +
92 107 }
93 108  
94 109 static void disconnected(GtkWidget *widget, GtkActionGroup **group)
... ... @@ -226,6 +241,7 @@
226 241 H3270 * host = v3270_get_session(terminal);
227 242 gchar * path = build_data_filename("ui",NULL);
228 243 GtkActionGroup **group;
  244 + GtkAction **action;
229 245 GtkWidget **popup;
230 246 int f;
231 247  
... ... @@ -247,9 +263,10 @@
247 263 }
248 264  
249 265 // Create window
250   - window = ui_parse_xml_folder(path,groupname,popupname,terminal,widget_setup);
  266 + window = ui_parse_xml_folder(path,groupname,popupname,actionname,terminal,widget_setup);
251 267 group = g_object_get_data(G_OBJECT(window),"action_groups");
252 268 popup = g_object_get_data(G_OBJECT(window),"popup_menus");
  269 + action = (GtkAction **) g_object_get_data(G_OBJECT(window),"named_actions");
253 270  
254 271 // Setup action groups
255 272 gtk_action_group_set_sensitive(group[ACTION_GROUP_SELECTION],FALSE);
... ... @@ -258,8 +275,15 @@
258 275 gtk_action_group_set_sensitive(group[ACTION_GROUP_PASTE],FALSE);
259 276 disconnected(terminal, (gpointer) group);
260 277  
  278 + // Setup actions
  279 + if(action[ACTION_FULLSCREEN])
  280 + gtk_action_set_visible(action[ACTION_FULLSCREEN],!lib3270_get_toggle(host,LIB3270_TOGGLE_FULL_SCREEN));
  281 +
  282 + if(action[ACTION_UNFULLSCREEN])
  283 + gtk_action_set_visible(action[ACTION_UNFULLSCREEN],lib3270_get_toggle(host,LIB3270_TOGGLE_FULL_SCREEN));
  284 +
261 285 // Connect widget signals
262   - g_signal_connect(terminal,"toggle_changed",G_CALLBACK(save_toggle),window);
  286 + g_signal_connect(terminal,"toggle_changed",G_CALLBACK(toggle_changed),window);
263 287 g_signal_connect(terminal,"disconnected",G_CALLBACK(disconnected),group);
264 288 g_signal_connect(terminal,"connected",G_CALLBACK(connected),group);
265 289 g_signal_connect(terminal,"update_config",G_CALLBACK(update_config),0);
... ...
src/gtk/uiparser/parsefile.c
... ... @@ -182,10 +182,24 @@
182 182 }
183 183 else
184 184 {
  185 + int ix = -1;
  186 +
185 187 action = GTK_ACTION(create(nm,NULL,NULL,NULL));
186 188 g_hash_table_insert(info->actions,nm,action);
187 189  
188   - if(g_strcasecmp(name,"quit"))
  190 + if(info->actionname)
  191 + {
  192 + int f;
  193 + for(f=0;info->actionname[f] && ix < 0;f++)
  194 + {
  195 + if(!g_strcasecmp(nm,info->actionname[f]))
  196 + ix = f;
  197 + }
  198 + }
  199 +
  200 + if(ix >= 0)
  201 + ui_connect_index_action(info->action[ix] = action,info->center_widget,ix,info->action);
  202 + else if(g_strcasecmp(name,"quit"))
189 203 connect(action,info->center_widget,name,id);
190 204 else
191 205 g_signal_connect(action,"activate",G_CALLBACK(gtk_main_quit), NULL);
... ...
src/gtk/uiparser/parser.c
... ... @@ -206,20 +206,18 @@ void parser_build(struct parser *p, GtkWidget *widget)
206 206  
207 207 }
208 208  
209   -static void release_popups(GtkWidget **popup)
  209 +static void release_list(GObject **obj)
210 210 {
211 211 int f;
212   - for(f=0;popup[f] != ((GtkWidget *) -1);f++)
  212 + for(f=0;obj[f] != ((GObject *) -1);f++)
213 213 {
214   -// trace("%s[%d]=%p",__FUNCTION__,f,popup[f]);
215   - if(popup[f])
216   - g_object_unref(popup[f]);
  214 + if(obj[f])
  215 + g_object_unref(obj[f]);
217 216 }
218   -
219   - g_free(popup);
  217 + g_free(obj);
220 218 }
221 219  
222   -GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, GtkWidget *widget, const UI_WIDGET_SETUP *setup)
  220 +GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, const gchar **actionname, GtkWidget *widget, const UI_WIDGET_SETUP *setup)
223 221 {
224 222 struct parser p;
225 223 GDir * dir;
... ... @@ -272,11 +270,16 @@ GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, con
272 270 p.popupname = popupname;
273 271 p.strings = g_string_chunk_new(0);
274 272 p.setup = setup;
  273 + p.actionname = actionname;
275 274  
276 275 sz = (g_strv_length((gchar **) p.popupname));
277 276 p.popup = g_new0(GtkWidget *,sz+1);
278 277 p.popup[sz] = (GtkWidget *) -1;
279   - g_object_set_data_full(G_OBJECT(p.toplevel),"popup_menus",(gpointer) p.popup, (GDestroyNotify) release_popups);
  278 + g_object_set_data_full(G_OBJECT(p.toplevel),"popup_menus",(gpointer) p.popup, (GDestroyNotify) release_list);
  279 +
  280 + sz = (g_strv_length((gchar **) p.actionname));
  281 + p.action = g_new0(GtkAction *,sz);
  282 + g_object_set_data_full(G_OBJECT(p.toplevel),"named_actions",(gpointer) p.action, (GDestroyNotify) g_free);
280 283  
281 284 for(current = g_list_first(file);current;current = g_list_next(current))
282 285 {
... ...
src/gtk/uiparser/parser.h
... ... @@ -51,8 +51,9 @@
51 51 void (*setup)(GtkWidget *widget, GtkWidget *obj);
52 52 } UI_WIDGET_SETUP;
53 53  
54   - GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, GtkWidget *widget, const UI_WIDGET_SETUP *itn);
  54 + GtkWidget * ui_parse_xml_folder(const gchar *path, const gchar ** groupname, const gchar **popupname, const gchar **actionname, GtkWidget *widget, const UI_WIDGET_SETUP *itn);
55 55 void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
  56 + void ui_connect_index_action(GtkAction *action, GtkWidget *widget, int ix, GtkAction **lst);
56 57 void ui_connect_toggle(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
57 58 void ui_connect_pfkey(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
58 59 void ui_connect_pakey(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id);
... ...
src/gtk/uiparser/private.h
... ... @@ -59,9 +59,11 @@
59 59 GObject * element;
60 60 GtkWidget * center_widget;
61 61 GtkWidget ** popup; /**< Popup widgets */
  62 + GtkAction ** action; /**< Named actions */
62 63 GStringChunk * strings;
63 64 const gchar ** group; /**< Action group list */
64 65 const gchar ** popupname; /**< Popup names */
  66 + const gchar ** actionname; /**< Action names */
65 67 GHashTable * actions; /**< List of actions */
66 68 GHashTable * element_list[UI_ELEMENT_COUNT];
67 69 const UI_WIDGET_SETUP * setup;
... ...
src/gtk/uiparser/testprogram.c
... ... @@ -14,6 +14,12 @@ void activated(GtkAction *action, GtkWidget *widget)
14 14 trace("Action %s activated on widget %p",gtk_action_get_name(action),widget);
15 15 }
16 16  
  17 +void ui_connect_index_action(GtkAction *action, GtkWidget *widget, int ix, GtkAction **lst)
  18 +{
  19 + trace("%s: Connecting indexed action %d",__FUNCTION__,ix);
  20 + g_signal_connect(action,"activate",G_CALLBACK(activated),widget);
  21 +}
  22 +
17 23 void toggled(GtkToggleAction *action, GtkWidget *widget)
18 24 {
19 25 trace("Action %s toggled on widget %p",gtk_action_get_name(GTK_ACTION(action)),widget);
... ... @@ -52,20 +58,26 @@ void show_popup(GtkWidget *button, GtkWidget *menu)
52 58  
53 59 int main (int argc, char *argv[])
54 60 {
55   - static const gchar *groupname[] = { "default",
56   - "online",
57   - "offline",
58   - "selection",
59   - "clipboard",
60   - "filetransfer",
61   - "paste",
62   - NULL };
63   -
64   - static const gchar *popupname[] = { "default",
65   - "selection",
66   - "offline",
67   - "dock",
68   - NULL };
  61 + static const gchar *groupname[] = { "default",
  62 + "online",
  63 + "offline",
  64 + "selection",
  65 + "clipboard",
  66 + "filetransfer",
  67 + "paste",
  68 + NULL };
  69 +
  70 + static const gchar *popupname[] = { "default",
  71 + "selection",
  72 + "offline",
  73 + "dock",
  74 + NULL };
  75 +
  76 + static const gchar *actionname[] = { "pastenext",
  77 + "setfullscreen",
  78 + "resetfullscreen",
  79 + NULL };
  80 +
69 81 int f;
70 82 GtkWidget * window;
71 83 gchar * path;
... ... @@ -78,7 +90,7 @@ int main (int argc, char *argv[])
78 90 hbox = gtk_hbox_new(FALSE,5);
79 91 vbox = gtk_vbox_new(FALSE,5);
80 92 path = build_data_filename("ui",NULL);
81   - window = ui_parse_xml_folder(path,groupname,popupname,vbox,NULL);
  93 + window = ui_parse_xml_folder(path,groupname,popupname,actionname,vbox,NULL);
82 94 g_free(path);
83 95  
84 96 popup = g_object_get_data(G_OBJECT(window),"popup_menus");
... ...
src/gtk/uiparser/uiparser.cbp
... ... @@ -7,8 +7,8 @@
7 7 <Option compiler="gcc" />
8 8 <Build>
9 9 <Target title="Debug">
10   - <Option output=".bin\Debug\uiparser" prefix_auto="1" extension_auto="1" />
11   - <Option object_output=".obj\Debug\" />
  10 + <Option output=".bin/Debug/uiparser" prefix_auto="1" extension_auto="1" />
  11 + <Option object_output=".obj/Debug/" />
12 12 <Option type="1" />
13 13 <Option compiler="gcc" />
14 14 <Compiler>
... ... @@ -17,8 +17,8 @@
17 17 </Compiler>
18 18 </Target>
19 19 <Target title="Release">
20   - <Option output=".bin\Release\uiparser" prefix_auto="1" extension_auto="1" />
21   - <Option object_output=".obj\Release\" />
  20 + <Option output=".bin/Release/uiparser" prefix_auto="1" extension_auto="1" />
  21 + <Option object_output=".obj/Release/" />
22 22 <Option type="0" />
23 23 <Option compiler="gcc" />
24 24 <Compiler>
... ... @@ -32,13 +32,13 @@
32 32 <Compiler>
33 33 <Add option="-Wall" />
34 34 <Add option="`pkg-config gtk+-2.0 --cflags`" />
35   - <Add directory="..\..\include" />
  35 + <Add directory="../../include" />
36 36 </Compiler>
37 37 <Linker>
38 38 <Add option="`pkg-config gtk+-2.0 --libs`" />
39 39 </Linker>
40   - <Unit filename="..\common\common.h.in" />
41   - <Unit filename="..\common\config.c">
  40 + <Unit filename="../common/common.h.in" />
  41 + <Unit filename="../common/config.c">
42 42 <Option compilerVar="CC" />
43 43 </Unit>
44 44 <Unit filename="accelerator.c">
... ... @@ -83,7 +83,6 @@
83 83 <Unit filename="toolitem.c">
84 84 <Option compilerVar="CC" />
85 85 </Unit>
86   - <Unit filename="..\..\..\ui\default.xml" />
87 86 <Extensions>
88 87 <code_completion />
89 88 <debugger />
... ...
src/lib3270/screen.c
... ... @@ -86,6 +86,10 @@ static unsigned short color_from_fa(unsigned char fa);
86 86  
87 87 static void addch(H3270 *session, int baddr, unsigned char c, unsigned short attr)
88 88 {
  89 + // If set to keep selection adjust corresponding flag based on the current state
  90 + if(lib3270_get_toggle(session,LIB3270_TOGGLE_KEEP_SELECTED))
  91 + attr |= (session->ea_buf[baddr].attr & LIB3270_ATTR_SELECTED);
  92 +
89 93 if(session->ea_buf[baddr].chr == c && session->ea_buf[baddr].attr == attr)
90 94 return;
91 95  
... ...