Commit c9d59970d3a3660a63d76517a5626e83bd5ba74e
1 parent
e6dbb5cd
Exists in
master
and in
1 other branch
Session name is now a widget property.
Showing
5 changed files
with
33 additions
and
5 deletions
Show diff stats
src/testprogram/testprogram.c
| @@ -95,11 +95,15 @@ static void activate(GtkApplication* app, gpointer user_data) { | @@ -95,11 +95,15 @@ static void activate(GtkApplication* app, gpointer user_data) { | ||
| 95 | 95 | ||
| 96 | const gchar *url = getenv("LIB3270_DEFAULT_HOST"); | 96 | const gchar *url = getenv("LIB3270_DEFAULT_HOST"); |
| 97 | if(url) { | 97 | if(url) { |
| 98 | + | ||
| 98 | v3270_set_url(terminal,url); | 99 | v3270_set_url(terminal,url); |
| 99 | v3270_connect(terminal); | 100 | v3270_connect(terminal); |
| 100 | - gtk_window_set_title(GTK_WINDOW(window), url); | 101 | + gchar * title = g_strdup_printf("%s - %s", v3270_get_session_name(terminal), url); |
| 102 | + gtk_window_set_title(GTK_WINDOW(window), title); | ||
| 103 | + g_free(title); | ||
| 104 | + | ||
| 101 | } else { | 105 | } else { |
| 102 | - gtk_window_set_title(GTK_WINDOW(window), "Window"); | 106 | + gtk_window_set_title(GTK_WINDOW(window), v3270_get_session_name(terminal)); |
| 103 | } | 107 | } |
| 104 | 108 | ||
| 105 | g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); | 109 | g_signal_connect(terminal,"popup",G_CALLBACK(popup_menu),NULL); |
src/v3270/private.h
| @@ -216,6 +216,7 @@ G_BEGIN_DECLS | @@ -216,6 +216,7 @@ G_BEGIN_DECLS | ||
| 216 | PROP_LUNAME, | 216 | PROP_LUNAME, |
| 217 | PROP_AUTO_DISCONNECT, | 217 | PROP_AUTO_DISCONNECT, |
| 218 | PROP_URL, | 218 | PROP_URL, |
| 219 | + PROP_SESSION_NAME, | ||
| 219 | 220 | ||
| 220 | /* Toggles - always the last one, the real values are PROP_TOGGLE+LIB3270_TOGGLE */ | 221 | /* Toggles - always the last one, the real values are PROP_TOGGLE+LIB3270_TOGGLE */ |
| 221 | PROP_TOGGLE | 222 | PROP_TOGGLE |
src/v3270/properties.c
| @@ -70,6 +70,10 @@ | @@ -70,6 +70,10 @@ | ||
| 70 | v3270_set_url(GTK_WIDGET(object),g_value_get_string(value)); | 70 | v3270_set_url(GTK_WIDGET(object),g_value_get_string(value)); |
| 71 | break; | 71 | break; |
| 72 | 72 | ||
| 73 | + case PROP_SESSION_NAME: | ||
| 74 | + v3270_set_session_name(GTK_WIDGET(object),g_value_get_string(value)); | ||
| 75 | + break; | ||
| 76 | + | ||
| 73 | default: | 77 | default: |
| 74 | if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) | 78 | if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) |
| 75 | { | 79 | { |
| @@ -117,6 +121,10 @@ | @@ -117,6 +121,10 @@ | ||
| 117 | } | 121 | } |
| 118 | break; | 122 | break; |
| 119 | 123 | ||
| 124 | + case PROP_SESSION_NAME: | ||
| 125 | + g_value_set_string(value,v3270_get_session_name(GTK_WIDGET(object))); | ||
| 126 | + break; | ||
| 127 | + | ||
| 120 | default: | 128 | default: |
| 121 | if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) | 129 | if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) |
| 122 | { | 130 | { |
| @@ -185,6 +193,14 @@ | @@ -185,6 +193,14 @@ | ||
| 185 | G_PARAM_READABLE|G_PARAM_WRITABLE); | 193 | G_PARAM_READABLE|G_PARAM_WRITABLE); |
| 186 | g_object_class_install_property(gobject_class,PROP_AUTO_DISCONNECT,v3270_properties[PROP_URL]); | 194 | g_object_class_install_property(gobject_class,PROP_AUTO_DISCONNECT,v3270_properties[PROP_URL]); |
| 187 | 195 | ||
| 196 | + v3270_properties[PROP_SESSION_NAME] = g_param_spec_string( | ||
| 197 | + "session_name", | ||
| 198 | + "session_name", | ||
| 199 | + "The TN3270 Session Name", | ||
| 200 | + g_get_application_name(), | ||
| 201 | + G_PARAM_READABLE|G_PARAM_WRITABLE); | ||
| 202 | + g_object_class_install_property(gobject_class,PROP_SESSION_NAME,v3270_properties[PROP_SESSION_NAME]); | ||
| 203 | + | ||
| 188 | // Toggle properties | 204 | // Toggle properties |
| 189 | int f; | 205 | int f; |
| 190 | 206 |
src/v3270/widget.c
| @@ -1629,8 +1629,14 @@ const gchar * v3270_get_luname(GtkWidget *widget) | @@ -1629,8 +1629,14 @@ const gchar * v3270_get_luname(GtkWidget *widget) | ||
| 1629 | 1629 | ||
| 1630 | const gchar * v3270_get_session_name(GtkWidget *widget) | 1630 | const gchar * v3270_get_session_name(GtkWidget *widget) |
| 1631 | { | 1631 | { |
| 1632 | - if(!GTK_IS_V3270(widget) || GTK_V3270(widget)->session_name == NULL) | 1632 | +#ifdef DEBUG |
| 1633 | + v3270 * terminal = GTK_V3270(widget); | ||
| 1634 | + debug("Session name: [%s] Application name: [%s]",terminal->session_name, g_get_application_name()); | ||
| 1635 | +#endif // DEBUG | ||
| 1636 | + | ||
| 1637 | + if(!(GTK_IS_V3270(widget) && GTK_V3270(widget)->session_name)) | ||
| 1633 | return g_get_application_name(); | 1638 | return g_get_application_name(); |
| 1639 | + | ||
| 1634 | return GTK_V3270(widget)->session_name; | 1640 | return GTK_V3270(widget)->session_name; |
| 1635 | } | 1641 | } |
| 1636 | 1642 |
v3270.cbp
| @@ -8,10 +8,11 @@ | @@ -8,10 +8,11 @@ | ||
| 8 | <Option compiler="gcc" /> | 8 | <Option compiler="gcc" /> |
| 9 | <Build> | 9 | <Build> |
| 10 | <Target title="Debug"> | 10 | <Target title="Debug"> |
| 11 | - <Option output=".bin/Debug/v3270" imp_lib="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="1" extension_auto="1" /> | 11 | + <Option output=".bin/Debug/libv3270" prefix_auto="1" extension_auto="1" /> |
| 12 | <Option object_output=".obj/Debug/" /> | 12 | <Option object_output=".obj/Debug/" /> |
| 13 | - <Option type="3" /> | 13 | + <Option type="1" /> |
| 14 | <Option compiler="gcc" /> | 14 | <Option compiler="gcc" /> |
| 15 | + <Option use_console_runner="0" /> | ||
| 15 | <Compiler> | 16 | <Compiler> |
| 16 | <Add option="-g" /> | 17 | <Add option="-g" /> |
| 17 | <Add option="-DDEBUG=1" /> | 18 | <Add option="-DDEBUG=1" /> |