Commit aacf668284e813375efc52b3f6d6337b9ce0ebec
1 parent
89ca5628
Exists in
master
and in
1 other branch
Settings dialog sections should have diferent settings on windows.
Showing
4 changed files
with
52 additions
and
13 deletions
Show diff stats
src/dialogs/save/save.c
| ... | ... | @@ -324,6 +324,10 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ |
| 324 | 324 | if(filename) |
| 325 | 325 | gtk_entry_set_text(GTK_ENTRY(dialog->filename),filename); |
| 326 | 326 | |
| 327 | +#ifdef G_OS_UNIX | |
| 328 | + gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); | |
| 329 | +#endif // G_OS_UNIX | |
| 330 | + | |
| 327 | 331 | gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(widget))); |
| 328 | 332 | gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); |
| 329 | 333 | gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); | ... | ... |
src/dialogs/settings/host.c
| ... | ... | @@ -436,7 +436,7 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) |
| 436 | 436 | |
| 437 | 437 | gtk_grid_attach( |
| 438 | 438 | GTK_GRID(widget), |
| 439 | - v3270_dialog_create_frame(grids[CONNECTION],_("Connection")), | |
| 439 | + v3270_dialog_section_new(_("Connection"),_("Network connection settings"),grids[CONNECTION]), | |
| 440 | 440 | 0,0,10,5 |
| 441 | 441 | ); |
| 442 | 442 | |
| ... | ... | @@ -446,7 +446,7 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) |
| 446 | 446 | |
| 447 | 447 | gtk_grid_attach( |
| 448 | 448 | GTK_GRID(widget), |
| 449 | - v3270_dialog_create_frame(grids[EMULATION],_("Emulation")), | |
| 449 | + v3270_dialog_section_new(_("Emulation"),_("TN3270 Emulation settings"),grids[EMULATION]), | |
| 450 | 450 | 0,6,10,5 |
| 451 | 451 | ); |
| 452 | 452 | ... | ... |
src/dialogs/tools.c
| ... | ... | @@ -44,27 +44,60 @@ |
| 44 | 44 | return grid; |
| 45 | 45 | } |
| 46 | 46 | |
| 47 | - GtkWidget * v3270_dialog_create_frame(GtkWidget * child, const gchar *title) | |
| 48 | - { | |
| 49 | - GtkFrame * frame = GTK_FRAME(gtk_frame_new("")); | |
| 50 | - g_autofree gchar * markup = g_strdup_printf("<b>%s</b>",title); | |
| 51 | - GtkWidget * label = gtk_label_new(NULL); | |
| 47 | + GtkWidget * v3270_dialog_section_new(const gchar * title, const gchar *tooltip, GtkWidget *child) { | |
| 48 | + | |
| 49 | + // https://developer.gnome.org/hig/stable/visual-layout.html.en | |
| 50 | + | |
| 51 | + GtkFrame * frame = GTK_FRAME(gtk_frame_new("")); | |
| 52 | + GtkWidget * label = gtk_label_new(NULL); | |
| 53 | + | |
| 54 | +#ifdef G_OS_UNIX | |
| 55 | + { | |
| 56 | + // Unix/Linux version, follow gnome guidelines | |
| 57 | + g_autofree gchar * markup = g_strdup_printf("<b>%s</b>",title); | |
| 58 | + gtk_label_set_markup(GTK_LABEL(label),markup); | |
| 59 | + | |
| 60 | + g_object_set(G_OBJECT(frame),"margin-top",6,NULL); | |
| 61 | + | |
| 62 | + gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_NONE); | |
| 63 | + | |
| 64 | + } | |
| 65 | +#else | |
| 66 | + { | |
| 67 | + // Non Unix/Linux, use the windows style. | |
| 68 | + gtk_label_set_text(GTK_LABEL(label),title); | |
| 69 | + } | |
| 70 | +#endif // G_OS_UNIX | |
| 52 | 71 | |
| 53 | - gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_NONE); | |
| 54 | - gtk_label_set_markup(GTK_LABEL(label),markup); | |
| 55 | 72 | gtk_frame_set_label_widget(GTK_FRAME(frame),label); |
| 56 | - gtk_container_set_border_width(GTK_CONTAINER(child),12); | |
| 57 | 73 | |
| 58 | - gtk_container_add(GTK_CONTAINER(frame),GTK_WIDGET(child)); | |
| 74 | + if(child) { | |
| 75 | + gtk_container_set_border_width(GTK_CONTAINER(child),12); | |
| 76 | + gtk_container_add(GTK_CONTAINER(frame),GTK_WIDGET(child)); | |
| 77 | + | |
| 78 | + if(GTK_IS_GRID(child)) { | |
| 79 | + gtk_grid_set_row_spacing(GTK_GRID(child),6); | |
| 80 | + gtk_grid_set_column_spacing(GTK_GRID(child),12); | |
| 81 | + } | |
| 82 | + | |
| 83 | + } | |
| 59 | 84 | |
| 60 | - g_object_set(G_OBJECT(frame),"margin-top",6,NULL); | |
| 85 | + if(tooltip) { | |
| 86 | + gtk_widget_set_tooltip_markup(label,tooltip); | |
| 87 | + } | |
| 61 | 88 | |
| 62 | 89 | return GTK_WIDGET(frame); |
| 90 | + | |
| 91 | + } | |
| 92 | + | |
| 93 | + | |
| 94 | + GtkWidget * v3270_dialog_create_frame(GtkWidget * child, const gchar *title) { | |
| 95 | + return v3270_dialog_section_new(title,NULL,child); | |
| 63 | 96 | } |
| 64 | 97 | |
| 65 | 98 | GtkWidget * v3270_box_pack_frame(GtkWidget *box, GtkWidget *child, const gchar *title, const gchar *tooltip, GtkAlign align, gboolean expand, gboolean fill, guint padding) |
| 66 | 99 | { |
| 67 | - GtkWidget * frame = v3270_dialog_create_frame(child,title); | |
| 100 | + GtkWidget * frame = v3270_dialog_section_new(title,NULL,child); | |
| 68 | 101 | gtk_widget_set_halign(GTK_WIDGET(frame),align); |
| 69 | 102 | gtk_box_pack_start(GTK_BOX(box),frame,expand,fill,padding); |
| 70 | 103 | ... | ... |
src/include/v3270/dialogs.h
| ... | ... | @@ -38,6 +38,8 @@ |
| 38 | 38 | LIB3270_EXPORT GtkWidget * v3270_dialog_new_with_buttons(const gchar *title, GtkWidget *widget, const gchar *first_button_text, ...) G_GNUC_NULL_TERMINATED; |
| 39 | 39 | LIB3270_EXPORT GtkWidget * v3270_dialog_set_content_area(GtkWidget *dialog, GtkWidget *content_area); |
| 40 | 40 | |
| 41 | + LIB3270_EXPORT GtkWidget * v3270_dialog_section_new(const gchar * title, const gchar *tooltip, GtkWidget *child); | |
| 42 | + | |
| 41 | 43 | LIB3270_EXPORT void v3270_error_popup(GtkWidget *widget, const gchar *title, const gchar *summary, const gchar *body); |
| 42 | 44 | |
| 43 | 45 | LIB3270_EXPORT GtkWidget * v3270_save_dialog_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, const gchar *filename); | ... | ... |