Commit 8074e03783cd8ac725b456455fb54991e95b54b1
1 parent
d9af1465
Exists in
master
and in
4 other branches
Refactoring session rename method.
Showing
2 changed files
with
51 additions
and
18 deletions
Show diff stats
src/objects/window/page.c
| ... | ... | @@ -32,6 +32,7 @@ |
| 32 | 32 | #include <pw3270/application.h> |
| 33 | 33 | #include <lib3270/toggle.h> |
| 34 | 34 | #include <v3270/settings.h> |
| 35 | + #include <v3270/dialogs.h> | |
| 35 | 36 | #include <v3270/actions.h> |
| 36 | 37 | #include <v3270/print.h> |
| 37 | 38 | #include <pw3270.h> |
| ... | ... | @@ -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 | 257 | static void rename_session(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget *terminal) { |
| 245 | 258 | |
| 246 | 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 | 276 | gtk_label_set_xalign(GTK_LABEL(label),1); |
| 265 | 277 | gtk_box_pack_start(GTK_BOX(box),label,FALSE,TRUE,0); |
| 266 | 278 | |
| ... | ... | @@ -272,6 +284,8 @@ |
| 272 | 284 | gtk_entry_set_placeholder_text(GTK_ENTRY(entry),G_STRINGIFY(PRODUCT_NAME)); |
| 273 | 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 | 290 | g_autofree gchar * session_name = g_strdup(v3270_get_session_name(terminal)); |
| 277 | 291 | |
| ... | ... | @@ -285,14 +299,29 @@ |
| 285 | 299 | |
| 286 | 300 | gtk_box_pack_start(GTK_BOX(box),entry,FALSE,TRUE,0); |
| 287 | 301 | |
| 302 | + | |
| 303 | + // Show dialog. | |
| 288 | 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 | 323 | g_signal_emit_by_name(terminal,"save-settings"); |
| 324 | + | |
| 296 | 325 | } |
| 297 | 326 | |
| 298 | 327 | gtk_widget_destroy(dialog); | ... | ... |
src/objects/window/terminal.c
| ... | ... | @@ -290,6 +290,12 @@ |
| 290 | 290 | |
| 291 | 291 | gboolean v3270_allow_custom_settings(GtkWidget *widget) { |
| 292 | 292 | |
| 293 | +#if defined(DEBUG) | |
| 294 | + | |
| 295 | + return TRUE; | |
| 296 | + | |
| 297 | +#else | |
| 298 | + | |
| 293 | 299 | const struct SessionDescriptor * descriptor = (const struct SessionDescriptor *) g_object_get_data(G_OBJECT(widget),"session-descriptor"); |
| 294 | 300 | |
| 295 | 301 | if(!(descriptor && *descriptor->filename)) |
| ... | ... | @@ -299,15 +305,13 @@ |
| 299 | 305 | return FALSE; |
| 300 | 306 | |
| 301 | 307 | #ifdef _WIN32 |
| 302 | - | |
| 303 | 308 | return TRUE; |
| 304 | - | |
| 305 | 309 | #else |
| 306 | - | |
| 307 | 310 | return !g_str_has_prefix(descriptor->filename,g_get_user_config_dir()); |
| 308 | - | |
| 309 | 311 | #endif // _WIN32 |
| 310 | 312 | |
| 313 | +#endif // DEBUG | |
| 314 | + | |
| 311 | 315 | } |
| 312 | 316 | |
| 313 | 317 | ... | ... |