Commit 58d051b484f3bcf2840b7f0743d151414695a921
1 parent
17eb7bf9
Exists in
master
and in
1 other branch
Fixing session name change.
Showing
5 changed files
with
46 additions
and
52 deletions
Show diff stats
common/src/include/lib3270/ipc-glib.h
| ... | ... | @@ -73,7 +73,7 @@ |
| 73 | 73 | |
| 74 | 74 | GObject * ipc3270_new(); |
| 75 | 75 | GType ipc3270_get_type(void); |
| 76 | - void ipc3270_set_session(GObject *object, H3270 *hSession); | |
| 76 | + void ipc3270_set_terminal_widget(GObject *object, GtkWidget *widget); | |
| 77 | 77 | void ipc3270_export_object(GObject *object, const char *name, GError **error); |
| 78 | 78 | |
| 79 | 79 | /** | ... | ... |
server/src/core/linux/gobject.c
| ... | ... | @@ -37,6 +37,7 @@ |
| 37 | 37 | #include <lib3270/actions.h> |
| 38 | 38 | #include <lib3270/properties.h> |
| 39 | 39 | #include <lib3270/toggle.h> |
| 40 | +#include <v3270.h> | |
| 40 | 41 | |
| 41 | 42 | #include <dbus/dbus-glib.h> |
| 42 | 43 | #include <dbus/dbus-glib-bindings.h> |
| ... | ... | @@ -49,10 +50,19 @@ G_DEFINE_TYPE(ipc3270, ipc3270, G_TYPE_OBJECT) |
| 49 | 50 | |
| 50 | 51 | static void ipc3270_finalize(GObject *object) { |
| 51 | 52 | |
| 53 | + ipc3270 * ipc = IPC3270(object); | |
| 52 | 54 | debug("ipc3270::%s(%p)",__FUNCTION__,object); |
| 53 | 55 | |
| 54 | 56 | ipc3270_release_object(IPC3270(object)); |
| 55 | 57 | |
| 58 | + g_autofree gchar * widget_name = g_strdup(v3270_get_session_name(ipc->terminal)); | |
| 59 | + gchar * ptr = strrchr(widget_name,':'); | |
| 60 | + if(ptr) | |
| 61 | + *ptr = 0; | |
| 62 | + | |
| 63 | + v3270_set_session_name(ipc->terminal,widget_name); | |
| 64 | + lib3270_set_session_id(ipc->hSession, 0); | |
| 65 | + | |
| 56 | 66 | G_OBJECT_CLASS(ipc3270_parent_class)->finalize(object); |
| 57 | 67 | } |
| 58 | 68 | |
| ... | ... | @@ -218,10 +228,12 @@ void ipc3270_add_terminal_introspection(GString *introspection) { |
| 218 | 228 | |
| 219 | 229 | } |
| 220 | 230 | |
| 221 | -void ipc3270_set_session(GObject *object, H3270 *hSession) { | |
| 231 | +void ipc3270_set_terminal_widget(GObject *object, GtkWidget *terminal) { | |
| 222 | 232 | |
| 223 | 233 | ipc3270 * ipc = IPC3270(object); |
| 224 | - ipc->hSession = hSession; | |
| 234 | + | |
| 235 | + ipc->terminal = terminal; | |
| 236 | + ipc->hSession = v3270_get_session(terminal); | |
| 225 | 237 | |
| 226 | 238 | } |
| 227 | 239 | ... | ... |
server/src/core/linux/gobject.h
server/src/plugin/plugin.c
| ... | ... | @@ -62,7 +62,7 @@ |
| 62 | 62 | // Set session handle, this starts the IPC communication. |
| 63 | 63 | GError * error = NULL; |
| 64 | 64 | |
| 65 | - ipc3270_set_session(ipc,v3270_get_session(terminal)); | |
| 65 | + ipc3270_set_terminal_widget(ipc,terminal); | |
| 66 | 66 | ipc3270_export_object(ipc,v3270_get_session_name(terminal),&error); |
| 67 | 67 | |
| 68 | 68 | if(error) { |
| ... | ... | @@ -85,9 +85,8 @@ |
| 85 | 85 | |
| 86 | 86 | char id = lib3270_get_session_id(v3270_get_session(terminal)); |
| 87 | 87 | if(id) { |
| 88 | - gchar * widget_name = g_strdup_printf("%s:%c",v3270_get_session_name(terminal),id); | |
| 88 | + g_autofree gchar * widget_name = g_strdup_printf("%s:%c",v3270_get_session_name(terminal),id); | |
| 89 | 89 | v3270_set_session_name(terminal, widget_name); |
| 90 | - g_free(widget_name); | |
| 91 | 90 | } |
| 92 | 91 | |
| 93 | 92 | return 0; | ... | ... |
server/src/testprogram/testprogram.c
| ... | ... | @@ -73,34 +73,14 @@ |
| 73 | 73 | g_message("Module %p was closed",module); |
| 74 | 74 | } |
| 75 | 75 | |
| 76 | - static void toggle_ds_trace(GtkToggleToolButton *button, GtkWidget *terminal) | |
| 77 | - { | |
| 78 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_DS_TRACE,gtk_toggle_tool_button_get_active(button)); | |
| 79 | - } | |
| 80 | - | |
| 81 | - static void toggle_event_trace(GtkToggleToolButton *button, GtkWidget *terminal) | |
| 82 | - { | |
| 83 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_EVENT_TRACE,gtk_toggle_tool_button_get_active(button)); | |
| 84 | - } | |
| 85 | - | |
| 86 | - static void toggle_ssl_trace(GtkToggleToolButton *button, GtkWidget *terminal) | |
| 87 | - { | |
| 88 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_SSL_TRACE,gtk_toggle_tool_button_get_active(button)); | |
| 89 | - } | |
| 90 | - | |
| 91 | - static void toggle_screen_trace(GtkToggleToolButton *button, GtkWidget *terminal) | |
| 92 | - { | |
| 93 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_SCREEN_TRACE,gtk_toggle_tool_button_get_active(button)); | |
| 94 | - } | |
| 95 | - | |
| 96 | - static void toggle_started_trace(GtkToggleToolButton *button, GModule *module) | |
| 76 | + static void toggle_started(GtkToggleButton *button, GModule *module) | |
| 97 | 77 | { |
| 98 | 78 | if(!module) |
| 99 | 79 | return; |
| 100 | 80 | |
| 101 | 81 | GtkWidget * terminal = g_object_get_data(G_OBJECT(button),"terminal"); |
| 102 | 82 | |
| 103 | - const gchar * method_name = (gtk_toggle_tool_button_get_active(button) ? "pw3270_plugin_start" : "pw3270_plugin_stop"); | |
| 83 | + const gchar * method_name = (gtk_toggle_button_get_active(button) ? "pw3270_plugin_start" : "pw3270_plugin_stop"); | |
| 104 | 84 | |
| 105 | 85 | static void (*call)(GtkWidget *window, GtkWidget *terminal) = NULL; |
| 106 | 86 | if(!g_module_symbol(module,method_name,(gpointer) &call)) |
| ... | ... | @@ -114,36 +94,24 @@ |
| 114 | 94 | |
| 115 | 95 | } |
| 116 | 96 | |
| 117 | - static GtkToolItem * create_tool_item(GtkWidget *terminal, const gchar *label, const gchar *tooltip, GCallback callback) | |
| 118 | - { | |
| 119 | - GtkToolItem * item = gtk_toggle_tool_button_new(); | |
| 120 | - gtk_tool_button_set_label(GTK_TOOL_BUTTON(item),label); | |
| 121 | - | |
| 122 | - g_signal_connect(GTK_WIDGET(item), "toggled", G_CALLBACK(callback), terminal); | |
| 123 | - | |
| 124 | - if(tooltip) | |
| 125 | - gtk_widget_set_tooltip_text(GTK_WIDGET(item),tooltip); | |
| 126 | - | |
| 127 | - return item; | |
| 128 | - } | |
| 129 | - | |
| 130 | 97 | static void session_changed(GtkWidget *widget, GtkWidget *window) { |
| 131 | 98 | |
| 132 | - g_autofree gchar * title = NULL; | |
| 99 | + g_autofree gchar * title = NULL; | |
| 100 | + const gchar * name = v3270_get_session_name(widget); | |
| 133 | 101 | |
| 134 | - g_message("Session name was changed"); | |
| 102 | + g_message("Session name was changed to \"%s\"", name); | |
| 135 | 103 | |
| 136 | 104 | if(v3270_is_connected(widget)) { |
| 137 | 105 | const gchar *host = v3270_get_hostname(widget); |
| 138 | 106 | |
| 139 | 107 | if(host && *host) |
| 140 | - title = g_strdup_printf("%s - %s",v3270_get_session_name(widget),host); | |
| 108 | + title = g_strdup_printf("%s - %s",name,host); | |
| 141 | 109 | else |
| 142 | - title = g_strdup_printf("%s",v3270_get_session_name(widget)); | |
| 110 | + title = g_strdup_printf("%s",name); | |
| 143 | 111 | |
| 144 | 112 | } else { |
| 145 | 113 | |
| 146 | - title = g_strdup_printf("%s - Disconnected",v3270_get_session_name(widget)); | |
| 114 | + title = g_strdup_printf("%s - Disconnected",name); | |
| 147 | 115 | } |
| 148 | 116 | |
| 149 | 117 | gtk_window_set_title(GTK_WINDOW(window),title); |
| ... | ... | @@ -210,9 +178,25 @@ |
| 210 | 178 | } |
| 211 | 179 | // Create trace window |
| 212 | 180 | { |
| 181 | + GtkWidget * trace = v3270_trace_new(terminal); | |
| 182 | + GtkWidget * start = gtk_toggle_button_new_with_label("Enable"); | |
| 183 | + GtkWidget * buttons = v3270_trace_get_button_box(trace); | |
| 184 | + | |
| 185 | + gtk_widget_set_sensitive(GTK_WIDGET(start),module != NULL); | |
| 186 | + | |
| 187 | + g_object_set_data(G_OBJECT(start),"terminal",terminal); | |
| 188 | + | |
| 189 | + g_signal_connect(GTK_WIDGET(start), "toggled", G_CALLBACK(toggle_started), module); | |
| 190 | + gtk_widget_set_tooltip_text(GTK_WIDGET(start),"Start/Stop plugin module"); | |
| 191 | + | |
| 192 | + gtk_box_pack_start(GTK_BOX(buttons),start,FALSE,FALSE,0); | |
| 193 | + gtk_box_reorder_child(GTK_BOX(buttons),start,0); | |
| 194 | + | |
| 195 | + gtk_notebook_append_page(GTK_NOTEBOOK(notebook),trace,gtk_label_new("Trace")); | |
| 196 | + | |
| 197 | + /* | |
| 213 | 198 | GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); |
| 214 | 199 | GtkWidget * trace = v3270_trace_new(terminal); |
| 215 | - GtkWidget * toolbar = gtk_toolbar_new(); | |
| 216 | 200 | GtkToolItem * start = gtk_toggle_tool_button_new(); |
| 217 | 201 | |
| 218 | 202 | gtk_widget_set_sensitive(GTK_WIDGET(start),module != NULL); |
| ... | ... | @@ -223,18 +207,16 @@ |
| 223 | 207 | g_signal_connect(GTK_WIDGET(start), "toggled", G_CALLBACK(toggle_started_trace), module); |
| 224 | 208 | gtk_widget_set_tooltip_text(GTK_WIDGET(start),"Start/Stop plugin module"); |
| 225 | 209 | |
| 210 | + v3270_trace_button_box_insert(trace,start); | |
| 211 | + | |
| 226 | 212 | gtk_toolbar_insert(GTK_TOOLBAR(toolbar), start, -1); |
| 227 | 213 | |
| 228 | 214 | gtk_toolbar_insert(GTK_TOOLBAR(toolbar),gtk_separator_tool_item_new(),-1); |
| 229 | 215 | |
| 230 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "DS Trace","Toggle DS Trace",G_CALLBACK(toggle_ds_trace)),-1); | |
| 231 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Event Trace","Toggle Event Trace",G_CALLBACK(toggle_event_trace)),-1); | |
| 232 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "Screen Trace","Toggle Screen Trace",G_CALLBACK(toggle_screen_trace)),-1); | |
| 233 | - gtk_toolbar_insert(GTK_TOOLBAR(toolbar),create_tool_item(terminal, "SSL Trace","Toggle SSL Trace",G_CALLBACK(toggle_ssl_trace)),-1); | |
| 234 | - | |
| 235 | 216 | gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0); |
| 236 | 217 | gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0); |
| 237 | 218 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace")); |
| 219 | + */ | |
| 238 | 220 | } |
| 239 | 221 | |
| 240 | 222 | // Setup and show main window | ... | ... |