Commit 957b5cd8004c20865b0df3a76cfb6c471fc47971
1 parent
22bbe2c0
Exists in
master
and in
1 other branch
Adding notifications on param change.
Showing
5 changed files
with
23 additions
and
9 deletions
Show diff stats
src/include/terminal.h
| @@ -50,6 +50,9 @@ G_BEGIN_DECLS | @@ -50,6 +50,9 @@ G_BEGIN_DECLS | ||
| 50 | GParamSpec * luname; | 50 | GParamSpec * luname; |
| 51 | GParamSpec * model; | 51 | GParamSpec * model; |
| 52 | GParamSpec * selection; | 52 | GParamSpec * selection; |
| 53 | + GParamSpec * session_name; | ||
| 54 | + GParamSpec * auto_disconnect; | ||
| 55 | + GParamSpec * remap_file; | ||
| 53 | 56 | ||
| 54 | struct | 57 | struct |
| 55 | { | 58 | { |
src/include/v3270.h
| @@ -238,8 +238,10 @@ | @@ -238,8 +238,10 @@ | ||
| 238 | LIB3270_EXPORT const gchar * v3270_get_default_font_name(); | 238 | LIB3270_EXPORT const gchar * v3270_get_default_font_name(); |
| 239 | 239 | ||
| 240 | LIB3270_EXPORT void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type, const gchar *title, const gchar *message, const gchar *text); | 240 | LIB3270_EXPORT void v3270_popup_message(GtkWidget *widget, LIB3270_NOTIFY type, const gchar *title, const gchar *message, const gchar *text); |
| 241 | + | ||
| 241 | LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); | 242 | LIB3270_EXPORT const gchar * v3270_get_session_name(GtkWidget *widget); |
| 242 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); | 243 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); |
| 244 | + | ||
| 243 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); | 245 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id); |
| 244 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); | 246 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); |
| 245 | LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); | 247 | LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); |
src/terminal/charset.c
| @@ -302,11 +302,9 @@ | @@ -302,11 +302,9 @@ | ||
| 302 | 302 | ||
| 303 | if(text && !error) | 303 | if(text && !error) |
| 304 | { | 304 | { |
| 305 | - | ||
| 306 | GMarkupParseContext * context = g_markup_parse_context_new(&parser,G_MARKUP_TREAT_CDATA_AS_TEXT|G_MARKUP_PREFIX_ERROR_POSITION,&cfg,NULL); | 305 | GMarkupParseContext * context = g_markup_parse_context_new(&parser,G_MARKUP_TREAT_CDATA_AS_TEXT|G_MARKUP_PREFIX_ERROR_POSITION,&cfg,NULL); |
| 307 | g_markup_parse_context_parse(context,text,strlen(text),&error); | 306 | g_markup_parse_context_parse(context,text,strlen(text),&error); |
| 308 | g_markup_parse_context_free(context); | 307 | g_markup_parse_context_free(context); |
| 309 | - | ||
| 310 | } | 308 | } |
| 311 | 309 | ||
| 312 | debug("error=%p",error); | 310 | debug("error=%p",error); |
| @@ -338,5 +336,7 @@ | @@ -338,5 +336,7 @@ | ||
| 338 | g_free(cfg.host); | 336 | g_free(cfg.host); |
| 339 | g_free(cfg.display); | 337 | g_free(cfg.display); |
| 340 | 338 | ||
| 339 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.remap_file); | ||
| 340 | + | ||
| 341 | } | 341 | } |
| 342 | 342 |
src/terminal/properties/init.c
| @@ -93,7 +93,7 @@ | @@ -93,7 +93,7 @@ | ||
| 93 | ); | 93 | ); |
| 94 | 94 | ||
| 95 | // Session name. | 95 | // Session name. |
| 96 | - spec = g_param_spec_string( | 96 | + klass->properties.session_name = g_param_spec_string( |
| 97 | "session_name", | 97 | "session_name", |
| 98 | "session_name", | 98 | "session_name", |
| 99 | _("TN3270 Session name"), | 99 | _("TN3270 Session name"), |
| @@ -104,11 +104,11 @@ | @@ -104,11 +104,11 @@ | ||
| 104 | g_object_class_install_property( | 104 | g_object_class_install_property( |
| 105 | gobject_class, | 105 | gobject_class, |
| 106 | V3270_PROPERTY_SESSION_NAME, | 106 | V3270_PROPERTY_SESSION_NAME, |
| 107 | - spec | 107 | + klass->properties.session_name |
| 108 | ); | 108 | ); |
| 109 | 109 | ||
| 110 | // Auto disconnect | 110 | // Auto disconnect |
| 111 | - spec = g_param_spec_string( | 111 | + klass->properties.auto_disconnect = g_param_spec_string( |
| 112 | "auto_disconnect", | 112 | "auto_disconnect", |
| 113 | "auto_disconnect", | 113 | "auto_disconnect", |
| 114 | _("IDLE minutes for automatic disconnection"), | 114 | _("IDLE minutes for automatic disconnection"), |
| @@ -119,7 +119,7 @@ | @@ -119,7 +119,7 @@ | ||
| 119 | g_object_class_install_property( | 119 | g_object_class_install_property( |
| 120 | gobject_class, | 120 | gobject_class, |
| 121 | V3270_PROPERTY_AUTO_DISCONNECT, | 121 | V3270_PROPERTY_AUTO_DISCONNECT, |
| 122 | - spec | 122 | + klass->properties.auto_disconnect |
| 123 | ); | 123 | ); |
| 124 | 124 | ||
| 125 | // Clipboard | 125 | // Clipboard |
| @@ -138,7 +138,7 @@ | @@ -138,7 +138,7 @@ | ||
| 138 | ); | 138 | ); |
| 139 | 139 | ||
| 140 | // Remap file | 140 | // Remap file |
| 141 | - spec = g_param_spec_string( | 141 | + klass->properties.remap_file = g_param_spec_string( |
| 142 | "remap", | 142 | "remap", |
| 143 | "remap", | 143 | "remap", |
| 144 | _("XML file with remap table"), | 144 | _("XML file with remap table"), |
| @@ -149,7 +149,7 @@ | @@ -149,7 +149,7 @@ | ||
| 149 | g_object_class_install_property( | 149 | g_object_class_install_property( |
| 150 | gobject_class, | 150 | gobject_class, |
| 151 | V3270_PROPERTY_REMAP_FILE, | 151 | V3270_PROPERTY_REMAP_FILE, |
| 152 | - spec | 152 | + klass->properties.remap_file |
| 153 | ); | 153 | ); |
| 154 | 154 | ||
| 155 | // | 155 | // |
src/terminal/properties/set.c
| @@ -171,6 +171,7 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) | @@ -171,6 +171,7 @@ LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name) | ||
| 171 | debug("New session name is \"%s\"",GTK_V3270(widget)->session_name); | 171 | debug("New session name is \"%s\"",GTK_V3270(widget)->session_name); |
| 172 | 172 | ||
| 173 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_SESSION_CHANGED], 0); | 173 | g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[V3270_SIGNAL_SESSION_CHANGED], 0); |
| 174 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.session_name); | ||
| 174 | 175 | ||
| 175 | } | 176 | } |
| 176 | 177 | ||
| @@ -203,6 +204,14 @@ void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id) | @@ -203,6 +204,14 @@ void v3270_set_cursor(GtkWidget *widget, LIB3270_POINTER id) | ||
| 203 | LIB3270_EXPORT void v3270_set_auto_disconnect(GtkWidget *widget, guint minutes) | 204 | LIB3270_EXPORT void v3270_set_auto_disconnect(GtkWidget *widget, guint minutes) |
| 204 | { | 205 | { |
| 205 | g_return_if_fail(GTK_IS_V3270(widget)); | 206 | g_return_if_fail(GTK_IS_V3270(widget)); |
| 206 | - GTK_V3270(widget)->activity.disconnect = minutes; | 207 | + |
| 208 | + v3270 * terminal = GTK_V3270(widget); | ||
| 209 | + | ||
| 210 | + if(terminal->activity.disconnect != minutes) | ||
| 211 | + { | ||
| 212 | + terminal->activity.disconnect = minutes; | ||
| 213 | + g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.auto_disconnect); | ||
| 214 | + } | ||
| 215 | + | ||
| 207 | } | 216 | } |
| 208 | 217 |