Commit aacf668284e813375efc52b3f6d6337b9ce0ebec

Authored by Perry Werneck
1 parent 89ca5628
Exists in master and in 1 other branch develop

Settings dialog sections should have diferent settings on windows.

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);
... ...