Commit 8074e03783cd8ac725b456455fb54991e95b54b1

Authored by Perry Werneck
1 parent d9af1465

Refactoring session rename method.

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  
... ...