diff --git a/src/include/terminal.h b/src/include/terminal.h index e445fba..ba2bd4a 100644 --- a/src/include/terminal.h +++ b/src/include/terminal.h @@ -47,6 +47,8 @@ G_BEGIN_DECLS V3270_SETTING_UNLOCK_DELAY, V3270_SETTING_COLOR_TYPE, V3270_SETTING_HOST_TYPE, + V3270_SETTING_CRL_PROTOCOL, + V3270_SETTING_TERMINAL_COLORS, V3270_SETTING_COUNT ///< @brief Number of setting properties. } V3270_SETTING; diff --git a/src/terminal/keyfile.c b/src/terminal/keyfile.c index 26d7e2a..3077724 100644 --- a/src/terminal/keyfile.c +++ b/src/terminal/keyfile.c @@ -39,6 +39,12 @@ static void save_by_pspec(GtkWidget *widget, GParamSpec *pspec, GKeyFile *key_file, const gchar *group_name) { + if(!pspec) + { + g_warning("Invalid property"); + return; + } + const gchar * name = g_param_spec_get_name(pspec); GValue value = G_VALUE_INIT; @@ -162,6 +168,12 @@ static void load_by_pspec(GtkWidget *widget, GParamSpec *pspec, GKeyFile *key_file, const gchar *group_name) { + if(!pspec) + { + g_warning("Invalid property"); + return; + } + const gchar * name = g_param_spec_get_name(pspec); GError * error = NULL; @@ -214,8 +226,6 @@ g_return_if_fail(GTK_IS_V3270(widget)); size_t ix; - GString * str; - v3270 * terminal = GTK_V3270(widget); v3270Class * klass = GTK_V3270_GET_CLASS(widget); @@ -231,24 +241,6 @@ for(ix = 0; ix < V3270_SETTING_COUNT; ix++) save_by_pspec(widget,klass->properties.settings[ix],key_file,group_name); - // Save V3270 colors - str = g_string_new(""); - for(ix=0; ixstr - ); - - g_string_free(str,TRUE); - } /// @brief This function adds the terminal settings from widget to key_file. @@ -275,9 +267,6 @@ for(ix = 0; ix < V3270_SETTING_COUNT; ix++) load_by_pspec(widget,klass->properties.settings[ix],key_file,group_name); - // Load V3270 colors - v3270_set_colors(widget,g_key_file_get_string(key_file,group_name,"colors",NULL)); - g_object_thaw_notify(G_OBJECT(widget)); return TRUE; diff --git a/src/terminal/properties/get.c b/src/terminal/properties/get.c index 420411d..96cc3aa 100644 --- a/src/terminal/properties/get.c +++ b/src/terminal/properties/get.c @@ -121,6 +121,22 @@ g_value_set_boolean(value,v3270_get_trace(GTK_WIDGET(object))); break; + case V3270_PROPERTY_TERMINAL_COLORS: + { + size_t ix; + GString * str = g_string_new(""); + for(ix=0; ixproperties.online }, - { "associated-lu", &klass->properties.associated_lu }, - { "url", &klass->properties.settings[V3270_SETTING_URL] }, - { "model-number", &klass->properties.settings[V3270_SETTING_MODEL_NUMBER] }, - { "has-selection", &klass->properties.selection }, - { "oversize", &klass->properties.settings[V3270_SETTING_OVERSIZE] }, - { "host-charset", &klass->properties.settings[V3270_SETTING_HOST_CHARSET] }, - { "unlock-delay", &klass->properties.settings[V3270_SETTING_UNLOCK_DELAY] }, - { "color-type", &klass->properties.settings[V3270_SETTING_COLOR_TYPE] }, - { "host-type", &klass->properties.settings[V3270_SETTING_HOST_TYPE] }, + { "connected", &klass->properties.online }, + { "associated-lu", &klass->properties.associated_lu }, + { "url", &klass->properties.settings[V3270_SETTING_URL] }, + { "model-number", &klass->properties.settings[V3270_SETTING_MODEL_NUMBER] }, + { "has-selection", &klass->properties.selection }, + { "oversize", &klass->properties.settings[V3270_SETTING_OVERSIZE] }, + { "host-charset", &klass->properties.settings[V3270_SETTING_HOST_CHARSET] }, + { "unlock-delay", &klass->properties.settings[V3270_SETTING_UNLOCK_DELAY] }, + { "color-type", &klass->properties.settings[V3270_SETTING_COLOR_TYPE] }, + { "host-type", &klass->properties.settings[V3270_SETTING_HOST_TYPE] }, + { "crl-preferred-protocol", &klass->properties.settings[V3270_SETTING_CRL_PROTOCOL] }, }; size_t ix; @@ -207,6 +208,21 @@ klass->properties.trace ); + // Colors + klass->properties.settings[V3270_SETTING_TERMINAL_COLORS] = + g_param_spec_string( + "colors", + "colors", + _("The terminal colors"), + v3270_default_colors, + G_PARAM_READABLE|G_PARAM_WRITABLE + ); + + g_object_class_install_property( + gobject_class, + V3270_PROPERTY_TERMINAL_COLORS, + klass->properties.settings[V3270_SETTING_TERMINAL_COLORS] + ); // // Create dynamic properties diff --git a/src/terminal/properties/private.h b/src/terminal/properties/private.h index 0089340..ee4d204 100644 --- a/src/terminal/properties/private.h +++ b/src/terminal/properties/private.h @@ -56,9 +56,9 @@ V3270_PROPERTY_DYNAMIC_SPACING = 7, ///< @brief Toggle dynamic font spacing. V3270_PROPERTY_LU_NAMES = 8, ///< @brief The LU names list. V3270_PROPERTY_TRACE = 9, ///< @brief Is the trace widget active? + V3270_PROPERTY_TERMINAL_COLORS = 10, ///< @brief Terminal colors. - - V3270_PROPERTY_DYNAMIC = 10 ///< @brief Id of the first LIB3270 internal property. + V3270_PROPERTY_DYNAMIC = 11 ///< @brief Id of the first LIB3270 internal property. }; G_GNUC_INTERNAL void v3270_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); diff --git a/src/terminal/properties/set.c b/src/terminal/properties/set.c index bffe2ba..6b11bf0 100644 --- a/src/terminal/properties/set.c +++ b/src/terminal/properties/set.c @@ -135,6 +135,10 @@ v3270_set_trace(GTK_WIDGET(object), g_value_get_boolean(value)); break; + case V3270_PROPERTY_TERMINAL_COLORS: + v3270_set_colors(GTK_WIDGET(object),g_value_get_string(value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); diff --git a/src/terminal/windows/registry.c b/src/terminal/windows/registry.c index e9e367a..e28b7bd 100644 --- a/src/terminal/windows/registry.c +++ b/src/terminal/windows/registry.c @@ -41,6 +41,12 @@ static void save_by_pspec(GtkWidget *widget, GParamSpec *pspec, HKEY hKey) { + if(!pspec) + { + g_warning("Invalid property"); + return; + } + const gchar * name = g_param_spec_get_name(pspec); GValue value = G_VALUE_INIT; @@ -127,6 +133,12 @@ static void load_by_pspec(GtkWidget *widget, GParamSpec *pspec, HKEY hKey) { + if(!pspec) + { + g_warning("Invalid property"); + return; + } + const gchar * name = g_param_spec_get_name(pspec); BYTE data[4097]; @@ -210,19 +222,6 @@ for(ix = 0; ix < V3270_SETTING_COUNT; ix++) save_by_pspec(widget,klass->properties.settings[ix],hKey); - // Save V3270 colors - str = g_string_new(""); - for(ix=0; ixstr,strlen(str->str)+1); - - g_string_free(str,TRUE); - RegCloseKey(hKey); } -- libgit2 0.21.2