Commit 58d051b484f3bcf2840b7f0743d151414695a921

Authored by Perry Werneck
1 parent 17eb7bf9
Exists in master and in 1 other branch develop

Fixing session name change.

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
... ... @@ -64,6 +64,7 @@
64 64 } dbus;
65 65  
66 66 H3270 * hSession;
  67 + GtkWidget * terminal;
67 68 GQuark error_domain;
68 69 };
69 70  
... ...
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
... ...