Commit 367599abedee4ad93fc1eb3c44895d0f4fd689a6
1 parent
79a02067
Exists in
master
and in
4 other branches
Implementing keypad view/hide menus.
Showing
9 changed files
with
243 additions
and
167 deletions
Show diff stats
src/include/pw3270.h
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | #define I_(string) g_intern_static_string (string) | 52 | #define I_(string) g_intern_static_string (string) |
53 | 53 | ||
54 | 54 | ||
55 | - void pw3270_load_placeholders(GtkBuilder * builder); | 55 | + void pw3270_load_placeholders(GApplication *application, GtkBuilder * builder); |
56 | // GtkWidget * pw3270_frame_new(GtkWidget * child, const gchar *title); | 56 | // GtkWidget * pw3270_frame_new(GtkWidget * child, const gchar *title); |
57 | 57 | ||
58 | // Application settings widget | 58 | // Application settings widget |
src/include/pw3270/application.h
@@ -77,6 +77,7 @@ | @@ -77,6 +77,7 @@ | ||
77 | 77 | ||
78 | // Tools | 78 | // Tools |
79 | GtkBuilder * pw3270_application_get_builder(const gchar *name); | 79 | GtkBuilder * pw3270_application_get_builder(const gchar *name); |
80 | + | ||
80 | void gtk_container_remove_all(GtkContainer *container); | 81 | void gtk_container_remove_all(GtkContainer *container); |
81 | 82 | ||
82 | // Actions | 83 | // Actions |
src/include/pw3270/keypad.h
@@ -54,7 +54,7 @@ | @@ -54,7 +54,7 @@ | ||
54 | 54 | ||
55 | GList * pw3270_keypad_model_new_from_xml(GList *keypads, const gchar *filename); | 55 | GList * pw3270_keypad_model_new_from_xml(GList *keypads, const gchar *filename); |
56 | GtkWidget * pw3270_keypad_get_from_model(GObject *model); | 56 | GtkWidget * pw3270_keypad_get_from_model(GObject *model); |
57 | - const gchar * pw3270_keypad_model_get_action_name(GObject *model); | 57 | + const gchar * pw3270_keypad_model_get_name(GObject *model); |
58 | const gchar * pw3270_keypad_model_get_label(GObject *model); | 58 | const gchar * pw3270_keypad_model_get_label(GObject *model); |
59 | 59 | ||
60 | typedef enum _keypad_position { | 60 | typedef enum _keypad_position { |
src/main/placeholders.c
@@ -35,14 +35,42 @@ | @@ -35,14 +35,42 @@ | ||
35 | 35 | ||
36 | #include "private.h" | 36 | #include "private.h" |
37 | #include <pw3270/application.h> | 37 | #include <pw3270/application.h> |
38 | + #include <pw3270/keypad.h> | ||
38 | #include <lib3270.h> | 39 | #include <lib3270.h> |
39 | #include <lib3270/log.h> | 40 | #include <lib3270/log.h> |
40 | 41 | ||
41 | /*---[ Implement ]----------------------------------------------------------------------------------*/ | 42 | /*---[ Implement ]----------------------------------------------------------------------------------*/ |
42 | 43 | ||
43 | - void pw3270_load_placeholders(GtkBuilder * builder) { | 44 | + static GMenu * get_keypad_menu(GApplication *application) { |
44 | 45 | ||
45 | - GObject * placeholder = gtk_builder_get_object(builder, "font-select-placeholder"); | 46 | + GList * keypads = pw3270_application_get_keypad_models(application); |
47 | + | ||
48 | + if(!keypads) | ||
49 | + return NULL; | ||
50 | + | ||
51 | + GMenu * menu = g_menu_new(); | ||
52 | + | ||
53 | + // Create keypad items. | ||
54 | + GList *item; | ||
55 | + for(item = keypads;item;item = g_list_next(item)) { | ||
56 | + GObject * model = G_OBJECT(item->data); | ||
57 | + g_autofree gchar * action_name = g_strconcat("win.keypad.",pw3270_keypad_model_get_name(model),NULL); | ||
58 | + g_menu_append(menu,pw3270_keypad_model_get_label(model),action_name); | ||
59 | + } | ||
60 | + | ||
61 | + return menu; | ||
62 | + | ||
63 | + } | ||
64 | + | ||
65 | + void pw3270_load_placeholders(GApplication *application, GtkBuilder * builder) { | ||
66 | + | ||
67 | + GObject * placeholder; | ||
68 | + size_t ix; | ||
69 | + | ||
70 | + // | ||
71 | + // Load fonts | ||
72 | + // | ||
73 | + placeholder = gtk_builder_get_object(builder, "font-select-placeholder"); | ||
46 | 74 | ||
47 | if(placeholder && G_IS_MENU(placeholder)) { | 75 | if(placeholder && G_IS_MENU(placeholder)) { |
48 | 76 | ||
@@ -52,7 +80,6 @@ | @@ -52,7 +80,6 @@ | ||
52 | PangoFontFamily **families; | 80 | PangoFontFamily **families; |
53 | pango_context_list_families(gdk_pango_context_get_for_screen(gdk_screen_get_default()),&families, &n_families); | 81 | pango_context_list_families(gdk_pango_context_get_for_screen(gdk_screen_get_default()),&families, &n_families); |
54 | 82 | ||
55 | - size_t ix; | ||
56 | for(ix=0; ix < (size_t) n_families; ix++) | 83 | for(ix=0; ix < (size_t) n_families; ix++) |
57 | { | 84 | { |
58 | if(!pango_font_family_is_monospace(families[ix])) | 85 | if(!pango_font_family_is_monospace(families[ix])) |
@@ -66,5 +93,30 @@ | @@ -66,5 +93,30 @@ | ||
66 | 93 | ||
67 | } | 94 | } |
68 | 95 | ||
96 | + // | ||
97 | + // View options | ||
98 | + // | ||
99 | + GMenu * keypad_menu = get_keypad_menu(application); | ||
100 | + | ||
101 | + if(keypad_menu) { | ||
102 | + | ||
103 | + static const gchar * placeholders[] = { | ||
104 | + "view-menu-placeholder", | ||
105 | + "view-when-offline-placeholder", | ||
106 | + "view-when-online-placeholder" | ||
107 | + }; | ||
108 | + | ||
109 | + for(ix = 0; ix < G_N_ELEMENTS(placeholders); ix++) { | ||
110 | + | ||
111 | + placeholder = gtk_builder_get_object(builder, placeholders[ix]); | ||
112 | + | ||
113 | + if(placeholder) { | ||
114 | + g_menu_append_item(G_MENU(placeholder), g_menu_item_new_submenu(_("Keypads"),G_MENU_MODEL(keypad_menu))); | ||
115 | + } | ||
116 | + | ||
117 | + } | ||
118 | + | ||
119 | + g_object_unref(keypad_menu); | ||
120 | + } | ||
69 | 121 | ||
70 | } | 122 | } |
src/objects/application/application.c
@@ -415,7 +415,7 @@ | @@ -415,7 +415,7 @@ | ||
415 | 415 | ||
416 | gtk_application_set_menubar(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "menubar"))); | 416 | gtk_application_set_menubar(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "menubar"))); |
417 | 417 | ||
418 | - pw3270_load_placeholders(builder); | 418 | + pw3270_load_placeholders(application, builder); |
419 | 419 | ||
420 | g_object_unref(builder); | 420 | g_object_unref(builder); |
421 | 421 |
src/objects/keypad/model.c
@@ -351,7 +351,7 @@ | @@ -351,7 +351,7 @@ | ||
351 | return (KEYPAD_POSITION) PW_KEYPAD_MODEL(model)->position; | 351 | return (KEYPAD_POSITION) PW_KEYPAD_MODEL(model)->position; |
352 | } | 352 | } |
353 | 353 | ||
354 | - const gchar * pw3270_keypad_model_get_action_name(GObject *model) { | 354 | + const gchar * pw3270_keypad_model_get_name(GObject *model) { |
355 | g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model), NULL); | 355 | g_return_val_if_fail(PW_IS_KEYPAD_MODEL(model), NULL); |
356 | return PW_KEYPAD_MODEL(model)->name; | 356 | return PW_KEYPAD_MODEL(model)->name; |
357 | } | 357 | } |
src/objects/window/window.c
@@ -194,9 +194,11 @@ | @@ -194,9 +194,11 @@ | ||
194 | g_signal_connect(widget,"hide",G_CALLBACK(keypad_hide),model); | 194 | g_signal_connect(widget,"hide",G_CALLBACK(keypad_hide),model); |
195 | g_signal_connect(widget,"show",G_CALLBACK(keypad_show),model); | 195 | g_signal_connect(widget,"show",G_CALLBACK(keypad_show),model); |
196 | 196 | ||
197 | + g_autofree gchar * action_name = g_strconcat("keypad.",pw3270_keypad_model_get_name(model),NULL); | ||
198 | + | ||
197 | GPropertyAction * action = | 199 | GPropertyAction * action = |
198 | g_property_action_new( | 200 | g_property_action_new( |
199 | - pw3270_keypad_model_get_action_name(model), | 201 | + action_name, |
200 | widget, | 202 | widget, |
201 | "visible" | 203 | "visible" |
202 | ); | 204 | ); |
@@ -243,7 +245,7 @@ | @@ -243,7 +245,7 @@ | ||
243 | gtk_notebook_set_action_widget(widget->notebook,new_tab,GTK_PACK_START); | 245 | gtk_notebook_set_action_widget(widget->notebook,new_tab,GTK_PACK_START); |
244 | } | 246 | } |
245 | 247 | ||
246 | - widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); | 248 | + widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); |
247 | gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | 249 | gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); |
248 | 250 | ||
249 | // | 251 | // |
@@ -447,6 +449,7 @@ | @@ -447,6 +449,7 @@ | ||
447 | // Get builder | 449 | // Get builder |
448 | // | 450 | // |
449 | g_autoptr(GtkBuilder) builder = pw3270_application_get_builder("window.xml"); | 451 | g_autoptr(GtkBuilder) builder = pw3270_application_get_builder("window.xml"); |
452 | + pw3270_load_placeholders(G_APPLICATION(application), builder); | ||
450 | 453 | ||
451 | // Load popup menus. | 454 | // Load popup menus. |
452 | const gchar * popup_menus[PW3270_APP_WINDOW_POPUP_COUNT] = { | 455 | const gchar * popup_menus[PW3270_APP_WINDOW_POPUP_COUNT] = { |
ui/application.xml
@@ -79,7 +79,6 @@ | @@ -79,7 +79,6 @@ | ||
79 | 79 | ||
80 | </submenu> | 80 | </submenu> |
81 | 81 | ||
82 | - | ||
83 | <item> | 82 | <item> |
84 | <attribute name="label" translatable="yes">Application preferences</attribute> | 83 | <attribute name="label" translatable="yes">Application preferences</attribute> |
85 | <attribute name="action">app.preferences</attribute> | 84 | <attribute name="action">app.preferences</attribute> |
ui/window.xml
@@ -274,181 +274,191 @@ | @@ -274,181 +274,191 @@ | ||
274 | 274 | ||
275 | <menu id="popup-over-unselected-area"> | 275 | <menu id="popup-over-unselected-area"> |
276 | 276 | ||
277 | - <submenu> | ||
278 | - | ||
279 | - <attribute name='label' translatable='yes'>_Edit</attribute> | ||
280 | - | ||
281 | - <section> | ||
282 | - | ||
283 | - <item> | ||
284 | - <attribute name="label" translatable="yes">Paste from clipboard</attribute> | ||
285 | - <attribute name="action">win.paste</attribute> | ||
286 | - </item> | ||
287 | - | ||
288 | - <item> | ||
289 | - <attribute name="label" translatable="yes">Paste next</attribute> | ||
290 | - <attribute name="action">win.paste-next</attribute> | ||
291 | - </item> | ||
292 | - | ||
293 | - <item> | ||
294 | - <attribute name="label" translatable="yes">Paste from text file</attribute> | ||
295 | - <attribute name="action">win.paste-file</attribute> | ||
296 | - </item> | ||
297 | - | ||
298 | - </section> | ||
299 | - | ||
300 | - <section> | ||
301 | - | ||
302 | - <item> | ||
303 | - <attribute name="label" translatable="yes">Select all</attribute> | ||
304 | - <attribute name="action">win.select-all</attribute> | ||
305 | - </item> | ||
306 | - | ||
307 | - <item> | ||
308 | - <attribute name="label" translatable="yes">Select Field</attribute> | ||
309 | - <attribute name="action">win.select-field</attribute> | ||
310 | - </item> | ||
311 | - | ||
312 | - <item> | ||
313 | - <attribute name="label" translatable="yes">Reselect</attribute> | ||
314 | - <attribute name="action">win.reselect</attribute> | ||
315 | - </item> | ||
316 | - | ||
317 | - </section> | ||
318 | - | ||
319 | - <section> | 277 | + <submenu> |
320 | 278 | ||
321 | - <item> | ||
322 | - <attribute name="label" translatable="yes">Clear</attribute> | ||
323 | - <attribute name="action">win.clear</attribute> | ||
324 | - </item> | 279 | + <attribute name='label' translatable='yes'>_Edit</attribute> |
325 | 280 | ||
326 | - <item> | ||
327 | - <attribute name="label" translatable="yes">Erase input</attribute> | ||
328 | - <attribute name="action">win.erase_input</attribute> | ||
329 | - </item> | 281 | + <section> |
330 | 282 | ||
331 | <item> | 283 | <item> |
332 | - <attribute name="label" translatable="yes">Delete Field</attribute> | ||
333 | - <attribute name="action">win.delete_field</attribute> | 284 | + <attribute name="label" translatable="yes">Paste from clipboard</attribute> |
285 | + <attribute name="action">win.paste</attribute> | ||
334 | </item> | 286 | </item> |
335 | 287 | ||
336 | <item> | 288 | <item> |
337 | - <attribute name="label" translatable="yes">Erase to end of field</attribute> | ||
338 | - <attribute name="action">win.erase_eof</attribute> | 289 | + <attribute name="label" translatable="yes">Paste next</attribute> |
290 | + <attribute name="action">win.paste-next</attribute> | ||
339 | </item> | 291 | </item> |
340 | 292 | ||
341 | <item> | 293 | <item> |
342 | - <attribute name="label" translatable="yes">Erase to end of line</attribute> | ||
343 | - <attribute name="action">win.erase_eol</attribute> | 294 | + <attribute name="label" translatable="yes">Paste from text file</attribute> |
295 | + <attribute name="action">win.paste-file</attribute> | ||
344 | </item> | 296 | </item> |
345 | 297 | ||
346 | - </section> | ||
347 | - | ||
348 | - </submenu> | 298 | + </section> |
349 | 299 | ||
350 | - <item> | ||
351 | - <attribute name="label" translatable="yes">Save screen</attribute> | ||
352 | - <attribute name="action">win.save.screen</attribute> | ||
353 | - </item> | 300 | + <section> |
354 | 301 | ||
355 | - <item> | ||
356 | - <attribute name="label" translatable="yes">Print screen</attribute> | ||
357 | - <attribute name="action">win.print.screen</attribute> | ||
358 | - </item> | 302 | + <item> |
303 | + <attribute name="label" translatable="yes">Select all</attribute> | ||
304 | + <attribute name="action">win.select-all</attribute> | ||
305 | + </item> | ||
359 | 306 | ||
360 | - <item> | ||
361 | - <attribute name="label" translatable="yes">Send/Receive files</attribute> | ||
362 | - <attribute name="action">win.file.transfer</attribute> | ||
363 | - </item> | 307 | + <item> |
308 | + <attribute name="label" translatable="yes">Select Field</attribute> | ||
309 | + <attribute name="action">win.select-field</attribute> | ||
310 | + </item> | ||
364 | 311 | ||
365 | - <submenu> | 312 | + <item> |
313 | + <attribute name="label" translatable="yes">Reselect</attribute> | ||
314 | + <attribute name="action">win.reselect</attribute> | ||
315 | + </item> | ||
366 | 316 | ||
367 | - <attribute name='label' translatable='yes'>Options</attribute> | 317 | + </section> |
368 | 318 | ||
369 | - <section> | 319 | + <section> |
370 | 320 | ||
371 | <item> | 321 | <item> |
372 | - <attribute name="label" translatable="yes">Cross hair cursor</attribute> | ||
373 | - <attribute name="action">win.crosshair</attribute> | 322 | + <attribute name="label" translatable="yes">Clear</attribute> |
323 | + <attribute name="action">win.clear</attribute> | ||
374 | </item> | 324 | </item> |
375 | 325 | ||
376 | <item> | 326 | <item> |
377 | - <attribute name="label" translatable="yes">Resize on alternate screen</attribute> | ||
378 | - <attribute name="action">win.altscreen</attribute> | 327 | + <attribute name="label" translatable="yes">Erase input</attribute> |
328 | + <attribute name="action">win.erase_input</attribute> | ||
379 | </item> | 329 | </item> |
380 | 330 | ||
381 | <item> | 331 | <item> |
382 | - <attribute name="label" translatable="yes">Alert sound</attribute> | ||
383 | - <attribute name="action">win.beep</attribute> | 332 | + <attribute name="label" translatable="yes">Delete Field</attribute> |
333 | + <attribute name="action">win.delete_field</attribute> | ||
384 | </item> | 334 | </item> |
385 | 335 | ||
386 | - </section> | ||
387 | - | ||
388 | <item> | 336 | <item> |
389 | - <attribute name="label" translatable="yes">Monocase</attribute> | ||
390 | - <attribute name="action">win.monocase</attribute> | 337 | + <attribute name="label" translatable="yes">Erase to end of field</attribute> |
338 | + <attribute name="action">win.erase_eof</attribute> | ||
391 | </item> | 339 | </item> |
392 | 340 | ||
393 | <item> | 341 | <item> |
394 | - <attribute name="label" translatable="yes">Dynamic font spacing</attribute> | ||
395 | - <attribute name="action">win.dynamic-font-spacing</attribute> | 342 | + <attribute name="label" translatable="yes">Erase to end of line</attribute> |
343 | + <attribute name="action">win.erase_eol</attribute> | ||
396 | </item> | 344 | </item> |
345 | + | ||
346 | + </section> | ||
347 | + | ||
348 | + </submenu> | ||
349 | + | ||
350 | + <submenu> | ||
351 | + | ||
352 | + <attribute name='label' translatable='yes'>Options</attribute> | ||
353 | + | ||
354 | + <section> | ||
355 | + | ||
356 | + <item> | ||
357 | + <attribute name="label" translatable="yes">Cross hair cursor</attribute> | ||
358 | + <attribute name="action">win.crosshair</attribute> | ||
359 | + </item> | ||
360 | + | ||
361 | + <item> | ||
362 | + <attribute name="label" translatable="yes">Resize on alternate screen</attribute> | ||
363 | + <attribute name="action">win.altscreen</attribute> | ||
364 | + </item> | ||
365 | + | ||
366 | + <item> | ||
367 | + <attribute name="label" translatable="yes">Alert sound</attribute> | ||
368 | + <attribute name="action">win.beep</attribute> | ||
369 | + </item> | ||
370 | + | ||
371 | + </section> | ||
372 | + | ||
373 | + <item> | ||
374 | + <attribute name="label" translatable="yes">Monocase</attribute> | ||
375 | + <attribute name="action">win.monocase</attribute> | ||
376 | + </item> | ||
377 | + | ||
378 | + <item> | ||
379 | + <attribute name="label" translatable="yes">Dynamic font spacing</attribute> | ||
380 | + <attribute name="action">win.dynamic-font-spacing</attribute> | ||
381 | + </item> | ||
397 | 382 | ||
398 | - <section> | 383 | + <section> |
399 | 384 | ||
400 | - </section> | 385 | + <item> |
386 | + <attribute name="label" translatable="yes">Smart paste</attribute> | ||
387 | + <attribute name="action">win.smartpaste</attribute> | ||
388 | + </item> | ||
401 | 389 | ||
402 | - <section> | 390 | + <item> |
391 | + <attribute name="label" translatable="yes">Paste with left margin</attribute> | ||
392 | + <attribute name="action">win.marginedpaste</attribute> | ||
393 | + </item> | ||
403 | 394 | ||
404 | - <item> | ||
405 | - <attribute name="label" translatable="yes">Smart paste</attribute> | ||
406 | - <attribute name="action">win.smartpaste</attribute> | ||
407 | - </item> | 395 | + <item> |
396 | + <attribute name="label" translatable="yes">Blank Fill</attribute> | ||
397 | + <attribute name="action">win.blankfill</attribute> | ||
398 | + </item> | ||
408 | 399 | ||
409 | - <item> | ||
410 | - <attribute name="label" translatable="yes">Paste with left margin</attribute> | ||
411 | - <attribute name="action">win.marginedpaste</attribute> | ||
412 | - </item> | 400 | + </section> |
401 | + | ||
402 | + <section> | ||
413 | 403 | ||
414 | <item> | 404 | <item> |
415 | - <attribute name="label" translatable="yes">Blank Fill</attribute> | ||
416 | - <attribute name="action">win.blankfill</attribute> | 405 | + <attribute name="label" translatable="yes">Full screen</attribute> |
406 | + <attribute name="action">win.fullscreen</attribute> | ||
417 | </item> | 407 | </item> |
418 | 408 | ||
419 | - </section> | 409 | + </section> |
420 | 410 | ||
421 | - <section> | 411 | + </submenu> |
412 | + | ||
413 | + <submenu id="view-when-online-placeholder"> | ||
414 | + | ||
415 | + <attribute name='label' translatable='yes'>View</attribute> | ||
422 | 416 | ||
423 | <item> | 417 | <item> |
424 | - <attribute name="label" translatable="yes">Show toolbar</attribute> | 418 | + <attribute name="label" translatable="yes">Toolbar</attribute> |
425 | <attribute name="action">win.toolbar</attribute> | 419 | <attribute name="action">win.toolbar</attribute> |
426 | </item> | 420 | </item> |
427 | 421 | ||
428 | <item> | 422 | <item> |
429 | - <attribute name="label" translatable="yes">Show menu</attribute> | 423 | + <attribute name="label" translatable="yes">Top menu</attribute> |
430 | <attribute name="action">win.menubar</attribute> | 424 | <attribute name="action">win.menubar</attribute> |
431 | </item> | 425 | </item> |
432 | 426 | ||
427 | + </submenu> | ||
428 | + | ||
429 | + <section> | ||
430 | + | ||
433 | <item> | 431 | <item> |
434 | - <attribute name="label" translatable="yes">Full screen</attribute> | ||
435 | - <attribute name="action">win.fullscreen</attribute> | 432 | + <attribute name="label" translatable="yes">Save screen</attribute> |
433 | + <attribute name="action">win.save.screen</attribute> | ||
434 | + </item> | ||
435 | + | ||
436 | + <item> | ||
437 | + <attribute name="label" translatable="yes">Print screen</attribute> | ||
438 | + <attribute name="action">win.print.screen</attribute> | ||
439 | + </item> | ||
440 | + | ||
441 | + <item> | ||
442 | + <attribute name="label" translatable="yes">Send/Receive files</attribute> | ||
443 | + <attribute name="action">win.file.transfer</attribute> | ||
436 | </item> | 444 | </item> |
437 | 445 | ||
438 | </section> | 446 | </section> |
439 | 447 | ||
440 | - </submenu> | 448 | + <section> |
441 | 449 | ||
442 | - <item> | ||
443 | - <attribute name="label" translatable="yes">Disconnect</attribute> | ||
444 | - <attribute name="action">win.disconnect</attribute> | ||
445 | - </item> | 450 | + <item> |
451 | + <attribute name="label" translatable="yes">Disconnect</attribute> | ||
452 | + <attribute name="action">win.disconnect</attribute> | ||
453 | + </item> | ||
446 | 454 | ||
447 | - <item> | ||
448 | - <attribute name="label" translatable="yes">Close window</attribute> | ||
449 | - <attribute name="action">win.close</attribute> | ||
450 | - </item> | 455 | + <item> |
456 | + <attribute name="label" translatable="yes">Close window</attribute> | ||
457 | + <attribute name="action">win.close</attribute> | ||
458 | + </item> | ||
451 | 459 | ||
460 | + </section> | ||
461 | + | ||
452 | </menu> | 462 | </menu> |
453 | 463 | ||
454 | <menu id="popup-over-oia"> | 464 | <menu id="popup-over-oia"> |
@@ -472,73 +482,84 @@ | @@ -472,73 +482,84 @@ | ||
472 | 482 | ||
473 | <menu id="popup-when-offline"> | 483 | <menu id="popup-when-offline"> |
474 | 484 | ||
475 | - <item> | ||
476 | - <attribute name="label" translatable="yes">_Connect</attribute> | ||
477 | - <attribute name="action">win.connect</attribute> | ||
478 | - </item> | ||
479 | - | ||
480 | - <item> | ||
481 | - <attribute name="label" translatable="yes">Session properties</attribute> | ||
482 | - <attribute name="action">win.session.properties</attribute> | ||
483 | - </item> | ||
484 | - | ||
485 | <submenu> | 485 | <submenu> |
486 | 486 | ||
487 | - <attribute name="label" translatable="yes">Screen size</attribute> | 487 | + <attribute name='label' translatable='yes'>Options</attribute> |
488 | 488 | ||
489 | <item> | 489 | <item> |
490 | - <attribute name="label" translatable="yes">Model 2 - 80x24</attribute> | ||
491 | - <attribute name="action">win.model-number</attribute> | ||
492 | - <attribute name="target">2</attribute> | ||
493 | - </item> | ||
494 | - <item> | ||
495 | - <attribute name="label" translatable="yes">Model 3 - 80x32</attribute> | ||
496 | - <attribute name="action">win.model-number</attribute> | ||
497 | - <attribute name="target">3</attribute> | ||
498 | - </item> | ||
499 | - <item> | ||
500 | - <attribute name="label" translatable="yes">Model 4 - 80x43</attribute> | ||
501 | - <attribute name="action">win.model-number</attribute> | ||
502 | - <attribute name="target">4</attribute> | 490 | + <attribute name="label" translatable="yes">Dynamic font spacing</attribute> |
491 | + <attribute name="action">win.dynamic-font-spacing</attribute> | ||
503 | </item> | 492 | </item> |
493 | + | ||
504 | <item> | 494 | <item> |
505 | - <attribute name="label" translatable="yes">Model 5 - 132x27</attribute> | ||
506 | - <attribute name="action">win.model-number</attribute> | ||
507 | - <attribute name="target">5</attribute> | 495 | + <attribute name="label" translatable="yes">Full screen</attribute> |
496 | + <attribute name="action">win.fullscreen</attribute> | ||
508 | </item> | 497 | </item> |
509 | 498 | ||
499 | + <submenu> | ||
500 | + | ||
501 | + <attribute name="label" translatable="yes">Screen size</attribute> | ||
502 | + | ||
503 | + <item> | ||
504 | + <attribute name="label" translatable="yes">Model 2 - 80x24</attribute> | ||
505 | + <attribute name="action">win.model-number</attribute> | ||
506 | + <attribute name="target">2</attribute> | ||
507 | + </item> | ||
508 | + <item> | ||
509 | + <attribute name="label" translatable="yes">Model 3 - 80x32</attribute> | ||
510 | + <attribute name="action">win.model-number</attribute> | ||
511 | + <attribute name="target">3</attribute> | ||
512 | + </item> | ||
513 | + <item> | ||
514 | + <attribute name="label" translatable="yes">Model 4 - 80x43</attribute> | ||
515 | + <attribute name="action">win.model-number</attribute> | ||
516 | + <attribute name="target">4</attribute> | ||
517 | + </item> | ||
518 | + <item> | ||
519 | + <attribute name="label" translatable="yes">Model 5 - 132x27</attribute> | ||
520 | + <attribute name="action">win.model-number</attribute> | ||
521 | + <attribute name="target">5</attribute> | ||
522 | + </item> | ||
523 | + | ||
524 | + </submenu> | ||
525 | + | ||
510 | </submenu> | 526 | </submenu> |
511 | 527 | ||
512 | - <submenu> | 528 | + <submenu id="view-when-offline-placeholder"> |
513 | 529 | ||
514 | - <attribute name='label' translatable='yes'>Options</attribute> | 530 | + <attribute name='label' translatable='yes'>View</attribute> |
515 | 531 | ||
516 | <item> | 532 | <item> |
517 | - <attribute name="label" translatable="yes">Dynamic font spacing</attribute> | ||
518 | - <attribute name="action">win.dynamic-font-spacing</attribute> | 533 | + <attribute name="label" translatable="yes">Toolbar</attribute> |
534 | + <attribute name="action">win.toolbar</attribute> | ||
519 | </item> | 535 | </item> |
520 | 536 | ||
521 | <item> | 537 | <item> |
522 | - <attribute name="label" translatable="yes">Show toolbar</attribute> | ||
523 | - <attribute name="action">win.toolbar</attribute> | 538 | + <attribute name="label" translatable="yes">Main menu</attribute> |
539 | + <attribute name="action">win.menubar</attribute> | ||
524 | </item> | 540 | </item> |
525 | 541 | ||
542 | + </submenu> | ||
543 | + | ||
544 | + <section> | ||
545 | + | ||
526 | <item> | 546 | <item> |
527 | - <attribute name="label" translatable="yes">Show menu</attribute> | ||
528 | - <attribute name="action">win.menubar</attribute> | 547 | + <attribute name="label" translatable="yes">_Connect</attribute> |
548 | + <attribute name="action">win.connect</attribute> | ||
529 | </item> | 549 | </item> |
530 | 550 | ||
531 | <item> | 551 | <item> |
532 | - <attribute name="label" translatable="yes">Full screen</attribute> | ||
533 | - <attribute name="action">win.fullscreen</attribute> | 552 | + <attribute name="label" translatable="yes">Session properties</attribute> |
553 | + <attribute name="action">win.session.properties</attribute> | ||
534 | </item> | 554 | </item> |
535 | 555 | ||
536 | - </submenu> | ||
537 | 556 | ||
538 | - <item> | ||
539 | - <attribute name="label" translatable="yes">Close window</attribute> | ||
540 | - <attribute name="action">win.close</attribute> | ||
541 | - </item> | 557 | + <item> |
558 | + <attribute name="label" translatable="yes">Close window</attribute> | ||
559 | + <attribute name="action">win.close</attribute> | ||
560 | + </item> | ||
561 | + | ||
562 | + </section> | ||
542 | 563 | ||
543 | </menu> | 564 | </menu> |
544 | 565 |