Commit 3d803db4a6158aac9c34cab61478ca0929323267

Authored by Perry Werneck
1 parent 92fe45f7
Exists in master and in 1 other branch develop

Implement common settings dialog box.

src/dialogs/settings.c
... ... @@ -35,12 +35,12 @@
35 35  
36 36 /*--[ Implement ]------------------------------------------------------------------------------------*/
37 37  
38   -static void apply(GtkWidget *widget, GtkWidget *terminal)
  38 +static void apply(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget G_GNUC_UNUSED(*terminal))
39 39 {
40 40  
41 41 }
42 42  
43   -static void revert(GtkWidget *widget, GtkWidget *terminal)
  43 +static void revert(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget G_GNUC_UNUSED(*terminal))
44 44 {
45 45  
46 46 }
... ... @@ -76,3 +76,57 @@ LIB3270_EXPORT void v3270_settings_set_terminal_widget(GtkWidget *widget, GtkWid
76 76 g_return_if_fail(GTK_IS_V3270_SETTINGS(widget));
77 77 GTK_V3270_SETTINGS_GET_CLASS(widget)->revert(widget,GTK_V3270_SETTINGS(widget)->terminal);
78 78 }
  79 +
  80 + void on_response(GtkDialog G_GNUC_UNUSED(*dialog), gint response_id, GtkWidget *settings)
  81 + {
  82 + switch(response_id)
  83 + {
  84 + case GTK_RESPONSE_APPLY:
  85 + v3270_settings_apply(settings);
  86 + break;
  87 +
  88 + case GTK_RESPONSE_CANCEL:
  89 + v3270_settings_revert(settings);
  90 + break;
  91 +
  92 + }
  93 +
  94 + }
  95 +
  96 + LIB3270_EXPORT GtkWidget * v3270_settings_dialog_nwidgetew(GtkWidget *terminal, GtkWidget *settings)
  97 + {
  98 +#if GTK_CHECK_VERSION(3,12,0)
  99 +
  100 + gboolean use_header;
  101 + g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL);
  102 +
  103 + GtkWidget * dialog =
  104 + GTK_WIDGET(g_object_new(
  105 + GTK_TYPE_DIALOG,
  106 + "use-header-bar", (use_header ? 1 : 0),
  107 + NULL
  108 + ));
  109 +
  110 +#else
  111 +
  112 + GtkWidget * dialog = gtk_dialog_new();
  113 +
  114 +#endif // GTK 3.12
  115 +
  116 + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),settings,FALSE,FALSE,2);
  117 + v3270_settings_set_terminal_widget(settings,terminal);
  118 +
  119 + g_signal_connect(G_OBJECT(dialog),"response",G_CALLBACK(on_response),settings);
  120 +
  121 + gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE);
  122 +
  123 + // https://developer.gnome.org/hig/stable/visual-layout.html.en
  124 + gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),18);
  125 +
  126 + gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(terminal)));
  127 + gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
  128 + gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
  129 +
  130 +
  131 + return dialog;
  132 + }
... ...
src/include/v3270/settings.h
... ... @@ -64,7 +64,8 @@
64 64 LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget);
65 65 LIB3270_EXPORT void v3270_settings_revert(GtkWidget *widget);
66 66  
67   - LIB3270_EXPORT void v3270_settings_dialog_run(GtkWidget *widget, GtkWidget *terminal);
  67 + LIB3270_EXPORT GtkWidget * v3270_settings_dialog_new(GtkWidget *terminal, GtkWidget *settings);
  68 + // LIB3270_EXPORT gint v3270_settings_dialog_run(GtkWidget *widget, GtkWidget *terminal);
68 69  
69 70 G_END_DECLS
70 71  
... ...