Commit 8074e03783cd8ac725b456455fb54991e95b54b1

Authored by Perry Werneck
1 parent d9af1465

Refactoring session rename method.

src/objects/window/page.c
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 #include <pw3270/application.h> 32 #include <pw3270/application.h>
33 #include <lib3270/toggle.h> 33 #include <lib3270/toggle.h>
34 #include <v3270/settings.h> 34 #include <v3270/settings.h>
  35 + #include <v3270/dialogs.h>
35 #include <v3270/actions.h> 36 #include <v3270/actions.h>
36 #include <v3270/print.h> 37 #include <v3270/print.h>
37 #include <pw3270.h> 38 #include <pw3270.h>
@@ -241,26 +242,37 @@ @@ -241,26 +242,37 @@
241 242
242 } 243 }
243 244
  245 + static void on_rename_session_response(GtkDialog *dialog, gint response_id, GtkWidget *terminal) {
  246 +
  247 + if(response_id == GTK_RESPONSE_APPLY) {
  248 +
  249 + v3270_set_session_name(terminal, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(dialog),"entry"))));
  250 + g_signal_emit_by_name(terminal,"save-settings");
  251 +
  252 + }
  253 +
  254 + gtk_widget_destroy(GTK_WIDGET(dialog));
  255 + }
  256 +
244 static void rename_session(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget *terminal) { 257 static void rename_session(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget *terminal) {
245 258
246 debug("%s",__FUNCTION__); 259 debug("%s",__FUNCTION__);
247 260
248 - /*  
249 - GtkWidget * dialog = pw3270_settings_dialog_new(  
250 - _("Rename session"),  
251 - GTK_WINDOW(gtk_widget_get_toplevel(terminal)) 261 + GtkWidget * dialog = v3270_dialog_new_with_buttons(
  262 + _("Rename Session"),
  263 + terminal,
  264 + _("Apply"), GTK_RESPONSE_APPLY,
  265 + _("Cancel"), GTK_RESPONSE_CANCEL,
  266 + NULL
252 ); 267 );
253 268
254 - // https://developer.gnome.org/hig/stable/visual-layout.html.en  
255 - GtkWidget * content = gtk_dialog_get_content_area(GTK_DIALOG(dialog));  
256 - gtk_container_set_border_width(GTK_CONTAINER(content),18);  
257 -  
258 - GtkWidget * box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,12);  
259 - gtk_box_pack_start(GTK_BOX(content),box,TRUE,TRUE,0); 269 + g_signal_connect(G_OBJECT(dialog),"response",G_CALLBACK(on_rename_session_response),terminal);
260 270
  271 + // Create controls.
  272 + GtkWidget * box = v3270_dialog_set_content_area(dialog,gtk_box_new(GTK_ORIENTATION_HORIZONTAL,12));
261 273
262 - // Create label.  
263 - GtkWidget *label = gtk_label_new(_("Session name")); 274 + // Create label.rename
  275 + GtkWidget *label = gtk_label_new(_("New session name"));
264 gtk_label_set_xalign(GTK_LABEL(label),1); 276 gtk_label_set_xalign(GTK_LABEL(label),1);
265 gtk_box_pack_start(GTK_BOX(box),label,FALSE,TRUE,0); 277 gtk_box_pack_start(GTK_BOX(box),label,FALSE,TRUE,0);
266 278
@@ -272,6 +284,8 @@ @@ -272,6 +284,8 @@
272 gtk_entry_set_placeholder_text(GTK_ENTRY(entry),G_STRINGIFY(PRODUCT_NAME)); 284 gtk_entry_set_placeholder_text(GTK_ENTRY(entry),G_STRINGIFY(PRODUCT_NAME));
273 gtk_entry_set_input_purpose(GTK_ENTRY(entry),GTK_INPUT_PURPOSE_ALPHA); 285 gtk_entry_set_input_purpose(GTK_ENTRY(entry),GTK_INPUT_PURPOSE_ALPHA);
274 286
  287 + g_object_set_data(G_OBJECT(dialog),"entry",entry);
  288 +
275 { 289 {
276 g_autofree gchar * session_name = g_strdup(v3270_get_session_name(terminal)); 290 g_autofree gchar * session_name = g_strdup(v3270_get_session_name(terminal));
277 291
@@ -285,14 +299,29 @@ @@ -285,14 +299,29 @@
285 299
286 gtk_box_pack_start(GTK_BOX(box),entry,FALSE,TRUE,0); 300 gtk_box_pack_start(GTK_BOX(box),entry,FALSE,TRUE,0);
287 301
  302 +
  303 + // Show dialog.
288 gtk_widget_show_all(dialog); 304 gtk_widget_show_all(dialog);
289 305
290 - if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY) {  
291 306
292 - v3270_set_session_name(terminal, gtk_entry_get_text(GTK_ENTRY(entry)));  
293 307
  308 + /*
  309 + GtkWidget * dialog = pw3270_settings_dialog_new(
  310 + _("Rename session"),
  311 + GTK_WINDOW(gtk_widget_get_toplevel(terminal))
  312 + );
294 313
  314 + // https://developer.gnome.org/hig/stable/visual-layout.html.en
  315 + gtk_container_set_border_width(GTK_CONTAINER(content),18);
  316 +
  317 +
  318 + gtk_widget_show_all(dialog);
  319 +
  320 + if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY) {
  321 +
  322 + v3270_set_session_name(terminal, gtk_entry_get_text(GTK_ENTRY(entry)));
295 g_signal_emit_by_name(terminal,"save-settings"); 323 g_signal_emit_by_name(terminal,"save-settings");
  324 +
296 } 325 }
297 326
298 gtk_widget_destroy(dialog); 327 gtk_widget_destroy(dialog);
src/objects/window/terminal.c
@@ -290,6 +290,12 @@ @@ -290,6 +290,12 @@
290 290
291 gboolean v3270_allow_custom_settings(GtkWidget *widget) { 291 gboolean v3270_allow_custom_settings(GtkWidget *widget) {
292 292
  293 +#if defined(DEBUG)
  294 +
  295 + return TRUE;
  296 +
  297 +#else
  298 +
293 const struct SessionDescriptor * descriptor = (const struct SessionDescriptor *) g_object_get_data(G_OBJECT(widget),"session-descriptor"); 299 const struct SessionDescriptor * descriptor = (const struct SessionDescriptor *) g_object_get_data(G_OBJECT(widget),"session-descriptor");
294 300
295 if(!(descriptor && *descriptor->filename)) 301 if(!(descriptor && *descriptor->filename))
@@ -299,15 +305,13 @@ @@ -299,15 +305,13 @@
299 return FALSE; 305 return FALSE;
300 306
301 #ifdef _WIN32 307 #ifdef _WIN32
302 -  
303 return TRUE; 308 return TRUE;
304 -  
305 #else 309 #else
306 -  
307 return !g_str_has_prefix(descriptor->filename,g_get_user_config_dir()); 310 return !g_str_has_prefix(descriptor->filename,g_get_user_config_dir());
308 -  
309 #endif // _WIN32 311 #endif // _WIN32
310 312
  313 +#endif // DEBUG
  314 +
311 } 315 }
312 316
313 317