From 957b5cd8004c20865b0df3a76cfb6c471fc47971 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 18 Oct 2019 14:46:42 -0300 Subject: [PATCH] Adding notifications on param change. --- src/include/terminal.h | 3 +++ src/include/v3270.h | 2 ++ src/terminal/charset.c | 4 ++-- src/terminal/properties/init.c | 12 ++++++------ src/terminal/properties/set.c | 11 ++++++++++- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/include/terminal.h b/src/include/terminal.h index 3d03a17..02df2cf 100644 --- a/src/include/terminal.h +++ b/src/include/terminal.h @@ -50,6 +50,9 @@ G_BEGIN_DECLS GParamSpec * luname; GParamSpec * model; GParamSpec * selection; + GParamSpec * session_name; + GParamSpec * auto_disconnect; + GParamSpec * remap_file; struct { diff --git a/src/include/v3270.h b/src/include/v3270.h index 6e9e4c8..52b682c 100644 --- a/src/include/v3270.h +++ b/src/include/v3270.h @@ -238,8 +238,10 @@ LIB3270_EXPORT const gchar * v3270_get_default_font_name(); LIB3270_EXPORT void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type, const gchar *title, const gchar *message, const gchar *text); + LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); + LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); diff --git a/src/terminal/charset.c b/src/terminal/charset.c index c1ed312..6504e99 100644 --- a/src/terminal/charset.c +++ b/src/terminal/charset.c @@ -302,11 +302,9 @@ if(text && !error) { - GMarkupParseContext * context = g_markup_parse_context_new(&parser,G_MARKUP_TREAT_CDATA_AS_TEXT|G_MARKUP_PREFIX_ERROR_POSITION,&cfg,NULL); g_markup_parse_context_parse(context,text,strlen(text),&error); g_markup_parse_context_free(context); - } debug("error=%p",error); @@ -338,5 +336,7 @@ g_free(cfg.host); g_free(cfg.display); + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.remap_file); + } diff --git a/src/terminal/properties/init.c b/src/terminal/properties/init.c index 59e82ca..00d7725 100644 --- a/src/terminal/properties/init.c +++ b/src/terminal/properties/init.c @@ -93,7 +93,7 @@ ); // Session name. - spec = g_param_spec_string( + klass->properties.session_name = g_param_spec_string( "session_name", "session_name", _("TN3270 Session name"), @@ -104,11 +104,11 @@ g_object_class_install_property( gobject_class, V3270_PROPERTY_SESSION_NAME, - spec + klass->properties.session_name ); // Auto disconnect - spec = g_param_spec_string( + klass->properties.auto_disconnect = g_param_spec_string( "auto_disconnect", "auto_disconnect", _("IDLE minutes for automatic disconnection"), @@ -119,7 +119,7 @@ g_object_class_install_property( gobject_class, V3270_PROPERTY_AUTO_DISCONNECT, - spec + klass->properties.auto_disconnect ); // Clipboard @@ -138,7 +138,7 @@ ); // Remap file - spec = g_param_spec_string( + klass->properties.remap_file = g_param_spec_string( "remap", "remap", _("XML file with remap table"), @@ -149,7 +149,7 @@ g_object_class_install_property( gobject_class, V3270_PROPERTY_REMAP_FILE, - spec + klass->properties.remap_file ); // diff --git a/src/terminal/properties/set.c b/src/terminal/properties/set.c index 1a83765..6faf24a 100644 --- a/src/terminal/properties/set.c +++ b/src/terminal/properties/set.c @@ -171,6 +171,7 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) debug("New session name is \"%s\"",GTK_V3270(widget)->session_name); g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_SESSION_CHANGED], 0); + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.session_name); } @@ -203,6 +204,14 @@ void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id) LIB3270_EXPORT void v3270_set_auto_disconnect(GtkWidget *widget, guint minutes) { g_return_if_fail(GTK_IS_V3270(widget)); - GTK_V3270(widget)->activity.disconnect = minutes; + + v3270 * terminal = GTK_V3270(widget); + + if(terminal->activity.disconnect != minutes) + { + terminal->activity.disconnect = minutes; + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.auto_disconnect); + } + } -- libgit2 0.21.2