From 8074e03783cd8ac725b456455fb54991e95b54b1 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Mon, 10 Feb 2020 14:22:23 -0300 Subject: [PATCH] Refactoring session rename method. --- src/objects/window/page.c | 57 +++++++++++++++++++++++++++++++++++++++++++-------------- src/objects/window/terminal.c | 12 ++++++++---- 2 files changed, 51 insertions(+), 18 deletions(-) diff --git a/src/objects/window/page.c b/src/objects/window/page.c index 04119c0..d400d8b 100644 --- a/src/objects/window/page.c +++ b/src/objects/window/page.c @@ -32,6 +32,7 @@ #include #include #include + #include #include #include #include @@ -241,26 +242,37 @@ } + static void on_rename_session_response(GtkDialog *dialog, gint response_id, GtkWidget *terminal) { + + if(response_id == GTK_RESPONSE_APPLY) { + + v3270_set_session_name(terminal, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(dialog),"entry")))); + g_signal_emit_by_name(terminal,"save-settings"); + + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); + } + static void rename_session(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget *terminal) { debug("%s",__FUNCTION__); - /* - GtkWidget * dialog = pw3270_settings_dialog_new( - _("Rename session"), - GTK_WINDOW(gtk_widget_get_toplevel(terminal)) + GtkWidget * dialog = v3270_dialog_new_with_buttons( + _("Rename Session"), + terminal, + _("Apply"), GTK_RESPONSE_APPLY, + _("Cancel"), GTK_RESPONSE_CANCEL, + NULL ); - // https://developer.gnome.org/hig/stable/visual-layout.html.en - GtkWidget * content = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); - gtk_container_set_border_width(GTK_CONTAINER(content),18); - - GtkWidget * box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,12); - gtk_box_pack_start(GTK_BOX(content),box,TRUE,TRUE,0); + g_signal_connect(G_OBJECT(dialog),"response",G_CALLBACK(on_rename_session_response),terminal); + // Create controls. + GtkWidget * box = v3270_dialog_set_content_area(dialog,gtk_box_new(GTK_ORIENTATION_HORIZONTAL,12)); - // Create label. - GtkWidget *label = gtk_label_new(_("Session name")); + // Create label.rename + GtkWidget *label = gtk_label_new(_("New session name")); gtk_label_set_xalign(GTK_LABEL(label),1); gtk_box_pack_start(GTK_BOX(box),label,FALSE,TRUE,0); @@ -272,6 +284,8 @@ gtk_entry_set_placeholder_text(GTK_ENTRY(entry),G_STRINGIFY(PRODUCT_NAME)); gtk_entry_set_input_purpose(GTK_ENTRY(entry),GTK_INPUT_PURPOSE_ALPHA); + g_object_set_data(G_OBJECT(dialog),"entry",entry); + { g_autofree gchar * session_name = g_strdup(v3270_get_session_name(terminal)); @@ -285,14 +299,29 @@ gtk_box_pack_start(GTK_BOX(box),entry,FALSE,TRUE,0); + + // Show dialog. gtk_widget_show_all(dialog); - if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY) { - v3270_set_session_name(terminal, gtk_entry_get_text(GTK_ENTRY(entry))); + /* + GtkWidget * dialog = pw3270_settings_dialog_new( + _("Rename session"), + GTK_WINDOW(gtk_widget_get_toplevel(terminal)) + ); + // https://developer.gnome.org/hig/stable/visual-layout.html.en + gtk_container_set_border_width(GTK_CONTAINER(content),18); + + + gtk_widget_show_all(dialog); + + if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_APPLY) { + + v3270_set_session_name(terminal, gtk_entry_get_text(GTK_ENTRY(entry))); g_signal_emit_by_name(terminal,"save-settings"); + } gtk_widget_destroy(dialog); diff --git a/src/objects/window/terminal.c b/src/objects/window/terminal.c index f3fca1d..a7a4312 100644 --- a/src/objects/window/terminal.c +++ b/src/objects/window/terminal.c @@ -290,6 +290,12 @@ gboolean v3270_allow_custom_settings(GtkWidget *widget) { +#if defined(DEBUG) + + return TRUE; + +#else + const struct SessionDescriptor * descriptor = (const struct SessionDescriptor *) g_object_get_data(G_OBJECT(widget),"session-descriptor"); if(!(descriptor && *descriptor->filename)) @@ -299,15 +305,13 @@ return FALSE; #ifdef _WIN32 - return TRUE; - #else - return !g_str_has_prefix(descriptor->filename,g_get_user_config_dir()); - #endif // _WIN32 +#endif // DEBUG + } -- libgit2 0.21.2