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,12 +35,12 @@
35 35
36 /*--[ Implement ]------------------------------------------------------------------------------------*/ 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,3 +76,57 @@ LIB3270_EXPORT void v3270_settings_set_terminal_widget(GtkWidget *widget, GtkWid
76 g_return_if_fail(GTK_IS_V3270_SETTINGS(widget)); 76 g_return_if_fail(GTK_IS_V3270_SETTINGS(widget));
77 GTK_V3270_SETTINGS_GET_CLASS(widget)->revert(widget,GTK_V3270_SETTINGS(widget)->terminal); 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,7 +64,8 @@
64 LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget); 64 LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget);
65 LIB3270_EXPORT void v3270_settings_revert(GtkWidget *widget); 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 G_END_DECLS 70 G_END_DECLS
70 71