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,7 +73,7 @@
73 73
74 GObject * ipc3270_new(); 74 GObject * ipc3270_new();
75 GType ipc3270_get_type(void); 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 void ipc3270_export_object(GObject *object, const char *name, GError **error); 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,6 +37,7 @@
37 #include <lib3270/actions.h> 37 #include <lib3270/actions.h>
38 #include <lib3270/properties.h> 38 #include <lib3270/properties.h>
39 #include <lib3270/toggle.h> 39 #include <lib3270/toggle.h>
  40 +#include <v3270.h>
40 41
41 #include <dbus/dbus-glib.h> 42 #include <dbus/dbus-glib.h>
42 #include <dbus/dbus-glib-bindings.h> 43 #include <dbus/dbus-glib-bindings.h>
@@ -49,10 +50,19 @@ G_DEFINE_TYPE(ipc3270, ipc3270, G_TYPE_OBJECT) @@ -49,10 +50,19 @@ G_DEFINE_TYPE(ipc3270, ipc3270, G_TYPE_OBJECT)
49 50
50 static void ipc3270_finalize(GObject *object) { 51 static void ipc3270_finalize(GObject *object) {
51 52
  53 + ipc3270 * ipc = IPC3270(object);
52 debug("ipc3270::%s(%p)",__FUNCTION__,object); 54 debug("ipc3270::%s(%p)",__FUNCTION__,object);
53 55
54 ipc3270_release_object(IPC3270(object)); 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 G_OBJECT_CLASS(ipc3270_parent_class)->finalize(object); 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,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 ipc3270 * ipc = IPC3270(object); 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,6 +64,7 @@
64 } dbus; 64 } dbus;
65 65
66 H3270 * hSession; 66 H3270 * hSession;
  67 + GtkWidget * terminal;
67 GQuark error_domain; 68 GQuark error_domain;
68 }; 69 };
69 70
server/src/plugin/plugin.c
@@ -62,7 +62,7 @@ @@ -62,7 +62,7 @@
62 // Set session handle, this starts the IPC communication. 62 // Set session handle, this starts the IPC communication.
63 GError * error = NULL; 63 GError * error = NULL;
64 64
65 - ipc3270_set_session(ipc,v3270_get_session(terminal)); 65 + ipc3270_set_terminal_widget(ipc,terminal);
66 ipc3270_export_object(ipc,v3270_get_session_name(terminal),&error); 66 ipc3270_export_object(ipc,v3270_get_session_name(terminal),&error);
67 67
68 if(error) { 68 if(error) {
@@ -85,9 +85,8 @@ @@ -85,9 +85,8 @@
85 85
86 char id = lib3270_get_session_id(v3270_get_session(terminal)); 86 char id = lib3270_get_session_id(v3270_get_session(terminal));
87 if(id) { 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 v3270_set_session_name(terminal, widget_name); 89 v3270_set_session_name(terminal, widget_name);
90 - g_free(widget_name);  
91 } 90 }
92 91
93 return 0; 92 return 0;
server/src/testprogram/testprogram.c
@@ -73,34 +73,14 @@ @@ -73,34 +73,14 @@
73 g_message("Module %p was closed",module); 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 if(!module) 78 if(!module)
99 return; 79 return;
100 80
101 GtkWidget * terminal = g_object_get_data(G_OBJECT(button),"terminal"); 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 static void (*call)(GtkWidget *window, GtkWidget *terminal) = NULL; 85 static void (*call)(GtkWidget *window, GtkWidget *terminal) = NULL;
106 if(!g_module_symbol(module,method_name,(gpointer) &call)) 86 if(!g_module_symbol(module,method_name,(gpointer) &call))
@@ -114,36 +94,24 @@ @@ -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 static void session_changed(GtkWidget *widget, GtkWidget *window) { 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 if(v3270_is_connected(widget)) { 104 if(v3270_is_connected(widget)) {
137 const gchar *host = v3270_get_hostname(widget); 105 const gchar *host = v3270_get_hostname(widget);
138 106
139 if(host && *host) 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 else 109 else
142 - title = g_strdup_printf("%s",v3270_get_session_name(widget)); 110 + title = g_strdup_printf("%s",name);
143 111
144 } else { 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 gtk_window_set_title(GTK_WINDOW(window),title); 117 gtk_window_set_title(GTK_WINDOW(window),title);
@@ -210,9 +178,25 @@ @@ -210,9 +178,25 @@
210 } 178 }
211 // Create trace window 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 GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0); 198 GtkWidget * box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
214 GtkWidget * trace = v3270_trace_new(terminal); 199 GtkWidget * trace = v3270_trace_new(terminal);
215 - GtkWidget * toolbar = gtk_toolbar_new();  
216 GtkToolItem * start = gtk_toggle_tool_button_new(); 200 GtkToolItem * start = gtk_toggle_tool_button_new();
217 201
218 gtk_widget_set_sensitive(GTK_WIDGET(start),module != NULL); 202 gtk_widget_set_sensitive(GTK_WIDGET(start),module != NULL);
@@ -223,18 +207,16 @@ @@ -223,18 +207,16 @@
223 g_signal_connect(GTK_WIDGET(start), "toggled", G_CALLBACK(toggle_started_trace), module); 207 g_signal_connect(GTK_WIDGET(start), "toggled", G_CALLBACK(toggle_started_trace), module);
224 gtk_widget_set_tooltip_text(GTK_WIDGET(start),"Start/Stop plugin module"); 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 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), start, -1); 212 gtk_toolbar_insert(GTK_TOOLBAR(toolbar), start, -1);
227 213
228 gtk_toolbar_insert(GTK_TOOLBAR(toolbar),gtk_separator_tool_item_new(),-1); 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 gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0); 216 gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,0);
236 gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0); 217 gtk_box_pack_start(GTK_BOX(box),trace,TRUE,TRUE,0);
237 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace")); 218 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),box,gtk_label_new("Trace"));
  219 + */
238 } 220 }
239 221
240 // Setup and show main window 222 // Setup and show main window