diff --git a/src/testprogram/testprogram.c b/src/testprogram/testprogram.c index ecae7b4..3df27c6 100644 --- a/src/testprogram/testprogram.c +++ b/src/testprogram/testprogram.c @@ -95,11 +95,15 @@ static void activate(GtkApplication* app, gpointer user_data) { const gchar *url = getenv("LIB3270_DEFAULT_HOST"); if(url) { + v3270_set_url(terminal,url); v3270_connect(terminal); - gtk_window_set_title(GTK_WINDOW(window), url); + gchar * title = g_strdup_printf("%s - %s", v3270_get_session_name(terminal), url); + gtk_window_set_title(GTK_WINDOW(window), title); + g_free(title); + } else { - gtk_window_set_title(GTK_WINDOW(window), "Window"); + gtk_window_set_title(GTK_WINDOW(window), v3270_get_session_name(terminal)); } g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); diff --git a/src/v3270/private.h b/src/v3270/private.h index da61376..8392667 100644 --- a/src/v3270/private.h +++ b/src/v3270/private.h @@ -216,6 +216,7 @@ G_BEGIN_DECLS PROP_LUNAME, PROP_AUTO_DISCONNECT, PROP_URL, + PROP_SESSION_NAME, /* Toggles - always the last one, the real values are PROP_TOGGLE+LIB3270_TOGGLE */ PROP_TOGGLE diff --git a/src/v3270/properties.c b/src/v3270/properties.c index 2fd9031..d6ba335 100644 --- a/src/v3270/properties.c +++ b/src/v3270/properties.c @@ -70,6 +70,10 @@ v3270_set_url(GTK_WIDGET(object),g_value_get_string(value)); break; + case PROP_SESSION_NAME: + v3270_set_session_name(GTK_WIDGET(object),g_value_get_string(value)); + break; + default: if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) { @@ -117,6 +121,10 @@ } break; + case PROP_SESSION_NAME: + g_value_set_string(value,v3270_get_session_name(GTK_WIDGET(object))); + break; + default: if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) { @@ -185,6 +193,14 @@ G_PARAM_READABLE|G_PARAM_WRITABLE); g_object_class_install_property(gobject_class,PROP_AUTO_DISCONNECT,v3270_properties[PROP_URL]); + v3270_properties[PROP_SESSION_NAME] = g_param_spec_string( + "session_name", + "session_name", + "The TN3270 Session Name", + g_get_application_name(), + G_PARAM_READABLE|G_PARAM_WRITABLE); + g_object_class_install_property(gobject_class,PROP_SESSION_NAME,v3270_properties[PROP_SESSION_NAME]); + // Toggle properties int f; diff --git a/src/v3270/widget.c b/src/v3270/widget.c index 54c7ad1..e17add8 100644 --- a/src/v3270/widget.c +++ b/src/v3270/widget.c @@ -1629,8 +1629,14 @@ const gchar * v3270_get_luname(GtkWidget *widget) const gchar * v3270_get_session_name(GtkWidget *widget) { - if(!GTK_IS_V3270(widget) || GTK_V3270(widget)->session_name == NULL) +#ifdef DEBUG + v3270 * terminal = GTK_V3270(widget); + debug("Session name: [%s] Application name: [%s]",terminal->session_name, g_get_application_name()); +#endif // DEBUG + + if(!(GTK_IS_V3270(widget) && GTK_V3270(widget)->session_name)) return g_get_application_name(); + return GTK_V3270(widget)->session_name; } diff --git a/v3270.cbp b/v3270.cbp index bd68fda..100f37b 100644 --- a/v3270.cbp +++ b/v3270.cbp @@ -8,10 +8,11 @@