Commit 2ce8f403343a6465c576be54065d10bb6bf07cc6
1 parent
7f2f69c0
Exists in
master
and in
1 other branch
Refactoring host settings dialog.
Showing
4 changed files
with
31 additions
and
164 deletions
Show diff stats
src/dialogs/settings/host.c
| @@ -38,6 +38,7 @@ | @@ -38,6 +38,7 @@ | ||
| 38 | #include <lib3270/log.h> | 38 | #include <lib3270/log.h> |
| 39 | #include <lib3270/toggle.h> | 39 | #include <lib3270/toggle.h> |
| 40 | #include <lib3270/properties.h> | 40 | #include <lib3270/properties.h> |
| 41 | + #include <v3270/settings/url.h> | ||
| 41 | 42 | ||
| 42 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 43 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
| 43 | 44 | ||
| @@ -52,21 +53,21 @@ | @@ -52,21 +53,21 @@ | ||
| 52 | { | 53 | { |
| 53 | { | 54 | { |
| 54 | .left = 2, | 55 | .left = 2, |
| 55 | - .top = 2, | 56 | + .top = 3, |
| 56 | .width = 2, | 57 | .width = 2, |
| 57 | .grid = CONNECTION, | 58 | .grid = CONNECTION, |
| 58 | .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP, | 59 | .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP, |
| 59 | }, | 60 | }, |
| 60 | { | 61 | { |
| 61 | .left = 4, | 62 | .left = 4, |
| 62 | - .top = 2, | 63 | + .top = 3, |
| 63 | .width = 1, | 64 | .width = 1, |
| 64 | .grid = CONNECTION, | 65 | .grid = CONNECTION, |
| 65 | .id = LIB3270_TOGGLE_RECONNECT, | 66 | .id = LIB3270_TOGGLE_RECONNECT, |
| 66 | }, | 67 | }, |
| 67 | { | 68 | { |
| 68 | .left = 5, | 69 | .left = 5, |
| 69 | - .top = 2, | 70 | + .top = 3, |
| 70 | .width = 1, | 71 | .width = 1, |
| 71 | .grid = CONNECTION, | 72 | .grid = CONNECTION, |
| 72 | .id = LIB3270_TOGGLE_KEEP_ALIVE, | 73 | .id = LIB3270_TOGGLE_KEEP_ALIVE, |
| @@ -94,8 +95,6 @@ | @@ -94,8 +95,6 @@ | ||
| 94 | 95 | ||
| 95 | enum _entry | 96 | enum _entry |
| 96 | { | 97 | { |
| 97 | - ENTRY_HOSTNAME, | ||
| 98 | - ENTRY_SRVCNAME, | ||
| 99 | ENTRY_OVERSIZE, | 98 | ENTRY_OVERSIZE, |
| 100 | ENTRY_REMAP_FILE, | 99 | ENTRY_REMAP_FILE, |
| 101 | ENTRY_LU_NAMES, | 100 | ENTRY_LU_NAMES, |
| @@ -206,32 +205,6 @@ | @@ -206,32 +205,6 @@ | ||
| 206 | 205 | ||
| 207 | static const struct EntryFieldDefinition entryfields[] = { | 206 | static const struct EntryFieldDefinition entryfields[] = { |
| 208 | { | 207 | { |
| 209 | - .left = 0, | ||
| 210 | - .top = 0, | ||
| 211 | - .width = 5, | ||
| 212 | - .height = 1, | ||
| 213 | - .grid = CONNECTION, | ||
| 214 | - | ||
| 215 | - .label = N_( "_Host" ), | ||
| 216 | - .tooltip = N_("Address or name of the host to connect."), | ||
| 217 | - .max_length = 0xFF, | ||
| 218 | - .width_chars = 50, | ||
| 219 | - | ||
| 220 | - }, | ||
| 221 | - { | ||
| 222 | - .left = 0, | ||
| 223 | - .top = 1, | ||
| 224 | - .width = 1, | ||
| 225 | - .height = 1, | ||
| 226 | - .grid = CONNECTION, | ||
| 227 | - | ||
| 228 | - .label = N_( "_Service" ), | ||
| 229 | - .tooltip = N_("Port or service name."), | ||
| 230 | - .max_length = 6, | ||
| 231 | - .width_chars = 7, | ||
| 232 | - }, | ||
| 233 | - | ||
| 234 | - { | ||
| 235 | .top = 1, | 208 | .top = 1, |
| 236 | .left = 3, | 209 | .left = 3, |
| 237 | .width = 2, | 210 | .width = 2, |
| @@ -258,9 +231,9 @@ | @@ -258,9 +231,9 @@ | ||
| 258 | }, | 231 | }, |
| 259 | 232 | ||
| 260 | { | 233 | { |
| 261 | - .left = 2, | ||
| 262 | - .top = 1, | ||
| 263 | - .width = 3, | 234 | + .left = 0, |
| 235 | + .top = 2, | ||
| 236 | + .width = 5, | ||
| 264 | .height = 1, | 237 | .height = 1, |
| 265 | .grid = CONNECTION, | 238 | .grid = CONNECTION, |
| 266 | 239 | ||
| @@ -279,12 +252,12 @@ | @@ -279,12 +252,12 @@ | ||
| 279 | struct | 252 | struct |
| 280 | { | 253 | { |
| 281 | GtkEntry * entry[G_N_ELEMENTS(entryfields)]; ///< @brief Entry fields for host & service name. | 254 | GtkEntry * entry[G_N_ELEMENTS(entryfields)]; ///< @brief Entry fields for host & service name. |
| 282 | - GtkComboBox * ssl; ///< @brief SSL Connection? | ||
| 283 | GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes. | 255 | GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes. |
| 284 | GtkComboBox * charset; ///< @brief Charset combo box. | 256 | GtkComboBox * charset; ///< @brief Charset combo box. |
| 285 | GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks. | 257 | GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks. |
| 286 | GtkSpinButton * auto_disconnect; ///< @brief Auto disconnect. | 258 | GtkSpinButton * auto_disconnect; ///< @brief Auto disconnect. |
| 287 | GtkSpinButton * unlock_delay; ///< @brief Unlock delay. | 259 | GtkSpinButton * unlock_delay; ///< @brief Unlock delay. |
| 260 | + GtkWidget * url; ///< @brief The URL entry widget. | ||
| 288 | 261 | ||
| 289 | } input; | 262 | } input; |
| 290 | 263 | ||
| @@ -339,19 +312,7 @@ static gboolean oversize_validate(GtkEditable *editable) { | @@ -339,19 +312,7 @@ static gboolean oversize_validate(GtkEditable *editable) { | ||
| 339 | static void update_valid(V3270HostSelectWidget *settings, gboolean valid) { | 312 | static void update_valid(V3270HostSelectWidget *settings, gboolean valid) { |
| 340 | 313 | ||
| 341 | if(valid) { | 314 | if(valid) { |
| 342 | - | ||
| 343 | - // Check required inputs. | ||
| 344 | - | ||
| 345 | - static const int required[] = { ENTRY_HOSTNAME, ENTRY_SRVCNAME }; | ||
| 346 | - size_t ix; | ||
| 347 | - | ||
| 348 | - for(ix = 0; ix < G_N_ELEMENTS(required); ix++) { | ||
| 349 | - const gchar * chars = gtk_editable_get_chars(GTK_EDITABLE(settings->input.entry[required[ix]]),0,-1); | ||
| 350 | - if(!*chars) { | ||
| 351 | - valid = FALSE; | ||
| 352 | - break; | ||
| 353 | - } | ||
| 354 | - } | 315 | + valid = v3270_url_edit_is_valid(settings->input.url); |
| 355 | } | 316 | } |
| 356 | 317 | ||
| 357 | if(valid) { | 318 | if(valid) { |
| @@ -362,12 +323,14 @@ static void update_valid(V3270HostSelectWidget *settings, gboolean valid) { | @@ -362,12 +323,14 @@ static void update_valid(V3270HostSelectWidget *settings, gboolean valid) { | ||
| 362 | 323 | ||
| 363 | } | 324 | } |
| 364 | 325 | ||
| 326 | +/* | ||
| 365 | static void required_changed(GtkEditable *editable, GtkWidget *settings) { | 327 | static void required_changed(GtkEditable *editable, GtkWidget *settings) { |
| 366 | 328 | ||
| 367 | const gchar * chars = gtk_editable_get_chars(editable,0,-1); | 329 | const gchar * chars = gtk_editable_get_chars(editable,0,-1); |
| 368 | update_valid(GTK_V3270HostSelectWidget(settings),(*chars ? TRUE : FALSE)); | 330 | update_valid(GTK_V3270HostSelectWidget(settings),(*chars ? TRUE : FALSE)); |
| 369 | 331 | ||
| 370 | } | 332 | } |
| 333 | +*/ | ||
| 371 | 334 | ||
| 372 | static void oversize_changed(GtkEditable *editable, GtkWidget *settings) { | 335 | static void oversize_changed(GtkEditable *editable, GtkWidget *settings) { |
| 373 | update_valid(GTK_V3270HostSelectWidget(settings), oversize_validate(editable)); | 336 | update_valid(GTK_V3270HostSelectWidget(settings), oversize_validate(editable)); |
| @@ -454,18 +417,10 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | @@ -454,18 +417,10 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | ||
| 454 | { | 417 | { |
| 455 | GtkWidget *grids[GRID_COUNT]; | 418 | GtkWidget *grids[GRID_COUNT]; |
| 456 | 419 | ||
| 457 | - { | ||
| 458 | - size_t grid; | ||
| 459 | - | ||
| 460 | - for(grid = 0; grid < G_N_ELEMENTS(grids); grid++) | ||
| 461 | - grids[grid] = gtk_grid_new(); | ||
| 462 | - | ||
| 463 | - } | 420 | + grids[CONNECTION] = v3270_url_edit_new(); |
| 421 | + grids[EMULATION] = gtk_grid_new(); | ||
| 464 | 422 | ||
| 465 | // Connection properties | 423 | // Connection properties |
| 466 | - gtk_grid_set_row_spacing(GTK_GRID(grids[CONNECTION]),6); | ||
| 467 | - gtk_grid_set_column_spacing(GTK_GRID(grids[CONNECTION]),12); | ||
| 468 | - | ||
| 469 | gtk_grid_attach( | 424 | gtk_grid_attach( |
| 470 | GTK_GRID(widget), | 425 | GTK_GRID(widget), |
| 471 | v3270_dialog_section_new(_("Connection"),_("Network connection settings"),grids[CONNECTION]), | 426 | v3270_dialog_section_new(_("Connection"),_("Network connection settings"),grids[CONNECTION]), |
| @@ -486,10 +441,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | @@ -486,10 +441,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | ||
| 486 | { | 441 | { |
| 487 | v3270_settings_create_entry_fields(entryfields, G_N_ELEMENTS(entryfields), grids, widget->input.entry); | 442 | v3270_settings_create_entry_fields(entryfields, G_N_ELEMENTS(entryfields), grids, widget->input.entry); |
| 488 | 443 | ||
| 489 | - // Custom settings | ||
| 490 | - // gtk_entry_set_placeholder_text(widget->input.entry[ENTRY_SRVCNAME],"telnet"); | ||
| 491 | - | ||
| 492 | - gtk_widget_set_hexpand(GTK_WIDGET(widget->input.entry[ENTRY_HOSTNAME]),TRUE); | ||
| 493 | gtk_widget_set_hexpand(GTK_WIDGET(widget->input.entry[ENTRY_REMAP_FILE]),TRUE); | 444 | gtk_widget_set_hexpand(GTK_WIDGET(widget->input.entry[ENTRY_REMAP_FILE]),TRUE); |
| 494 | 445 | ||
| 495 | gtk_entry_set_icon_from_icon_name(widget->input.entry[ENTRY_REMAP_FILE],GTK_ENTRY_ICON_SECONDARY,"document-open"); | 446 | gtk_entry_set_icon_from_icon_name(widget->input.entry[ENTRY_REMAP_FILE],GTK_ENTRY_ICON_SECONDARY,"document-open"); |
| @@ -500,8 +451,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | @@ -500,8 +451,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | ||
| 500 | g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_REMAP_FILE]),"changed",G_CALLBACK(remap_file_changed),widget); | 451 | g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_REMAP_FILE]),"changed",G_CALLBACK(remap_file_changed),widget); |
| 501 | 452 | ||
| 502 | g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_OVERSIZE]),"changed",G_CALLBACK(oversize_changed),widget); | 453 | g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_OVERSIZE]),"changed",G_CALLBACK(oversize_changed),widget); |
| 503 | - g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_HOSTNAME]),"changed",G_CALLBACK(required_changed),widget); | ||
| 504 | - g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_SRVCNAME]),"changed",G_CALLBACK(required_changed),widget); | ||
| 505 | 454 | ||
| 506 | } | 455 | } |
| 507 | 456 | ||
| @@ -516,8 +465,8 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | @@ -516,8 +465,8 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | ||
| 516 | 465 | ||
| 517 | gtk_spin_button_set_increments(widget->input.auto_disconnect,1,1); | 466 | gtk_spin_button_set_increments(widget->input.auto_disconnect,1,1); |
| 518 | 467 | ||
| 519 | - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),label,0,2,1,1); | ||
| 520 | - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),GTK_WIDGET(widget->input.auto_disconnect),1,2,1,1); | 468 | + gtk_grid_attach(GTK_GRID(grids[CONNECTION]),label,0,3,1,1); |
| 469 | + gtk_grid_attach(GTK_GRID(grids[CONNECTION]),GTK_WIDGET(widget->input.auto_disconnect),1,3,1,1); | ||
| 521 | g_signal_connect(G_OBJECT(widget->input.auto_disconnect),"output",G_CALLBACK(spin_format),widget); | 470 | g_signal_connect(G_OBJECT(widget->input.auto_disconnect),"output",G_CALLBACK(spin_format),widget); |
| 522 | } | 471 | } |
| 523 | 472 | ||
| @@ -540,43 +489,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | @@ -540,43 +489,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget) | ||
| 540 | 489 | ||
| 541 | } | 490 | } |
| 542 | 491 | ||
| 543 | - // SSL input | ||
| 544 | - { | ||
| 545 | - GtkWidget *label = gtk_label_new_with_mnemonic(_( "_Security" )); | ||
| 546 | - gtk_widget_set_halign(label,GTK_ALIGN_END); | ||
| 547 | - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),label,0,3,1,1); | ||
| 548 | - | ||
| 549 | - GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new(1,G_TYPE_STRING); | ||
| 550 | - | ||
| 551 | - widget->input.ssl = GTK_COMBO_BOX(gtk_combo_box_new_with_model(model)); | ||
| 552 | - | ||
| 553 | - GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new(); | ||
| 554 | - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget->input.ssl), text_renderer, TRUE); | ||
| 555 | - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget->input.ssl), text_renderer, "text", 0, NULL); | ||
| 556 | - | ||
| 557 | - static const gchar * levels[] = | ||
| 558 | - { | ||
| 559 | - N_("Unsecure"), | ||
| 560 | - N_("SSL/TLS") | ||
| 561 | - }; | ||
| 562 | - | ||
| 563 | - size_t level; | ||
| 564 | - for(level = 0; level < G_N_ELEMENTS(levels); level++) | ||
| 565 | - { | ||
| 566 | - GtkTreeIter iter; | ||
| 567 | - gtk_list_store_append((GtkListStore *) model, &iter); | ||
| 568 | - gtk_list_store_set((GtkListStore *) model, &iter, 0, levels[level], -1); | ||
| 569 | - }; | ||
| 570 | - | ||
| 571 | - /* | ||
| 572 | - widget->input.ssl = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic(_( "_Secure connection." ))); | ||
| 573 | - gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.ssl),_( "Check for SSL secure connection." )); | ||
| 574 | - gtk_widget_set_halign(GTK_WIDGET(widget->input.ssl),GTK_ALIGN_START); | ||
| 575 | - */ | ||
| 576 | - | ||
| 577 | - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),GTK_WIDGET(widget->input.ssl),1,3,2,1); | ||
| 578 | - } | ||
| 579 | - | ||
| 580 | // Toggle checkboxes | 492 | // Toggle checkboxes |
| 581 | v3270_settings_create_toggle_buttons(toggleList, G_N_ELEMENTS(toggleList), grids, widget->input.toggles); | 493 | v3270_settings_create_toggle_buttons(toggleList, G_N_ELEMENTS(toggleList), grids, widget->input.toggles); |
| 582 | 494 | ||
| @@ -725,20 +637,7 @@ static void apply(GtkWidget *w, GtkWidget *terminal) | @@ -725,20 +637,7 @@ static void apply(GtkWidget *w, GtkWidget *terminal) | ||
| 725 | H3270 *hSession = v3270_get_session(terminal); | 637 | H3270 *hSession = v3270_get_session(terminal); |
| 726 | 638 | ||
| 727 | // Apply URL | 639 | // Apply URL |
| 728 | - { | ||
| 729 | - g_autofree gchar * url = | ||
| 730 | - g_strconcat( | ||
| 731 | - (gtk_combo_box_get_active(widget->input.ssl) > 0 ? "tn3270s://" : "tn3270://"), | ||
| 732 | - gtk_entry_get_text(widget->input.entry[ENTRY_HOSTNAME]), | ||
| 733 | - ":", | ||
| 734 | - gtk_entry_get_text(widget->input.entry[ENTRY_SRVCNAME]), | ||
| 735 | - NULL | ||
| 736 | - ); | ||
| 737 | - | ||
| 738 | - debug("URL=[%s]",url); | ||
| 739 | - lib3270_set_url(hSession,url); | ||
| 740 | - | ||
| 741 | - } | 640 | + lib3270_set_url(hSession,v3270_url_edit_get_url(widget->input.url)); |
| 742 | 641 | ||
| 743 | // Apply LU names | 642 | // Apply LU names |
| 744 | v3270_set_lunames(terminal,gtk_entry_get_text(widget->input.entry[ENTRY_LU_NAMES])); | 643 | v3270_set_lunames(terminal,gtk_entry_get_text(widget->input.entry[ENTRY_LU_NAMES])); |
| @@ -801,42 +700,7 @@ static void load(GtkWidget *w, GtkWidget *terminal) | @@ -801,42 +700,7 @@ static void load(GtkWidget *w, GtkWidget *terminal) | ||
| 801 | H3270 *hSession = v3270_get_session(terminal); | 700 | H3270 *hSession = v3270_get_session(terminal); |
| 802 | V3270HostSelectWidget *widget = GTK_V3270HostSelectWidget(w); | 701 | V3270HostSelectWidget *widget = GTK_V3270HostSelectWidget(w); |
| 803 | 702 | ||
| 804 | - const gchar * u = lib3270_get_url(hSession); | ||
| 805 | - | ||
| 806 | - if(u) | ||
| 807 | - { | ||
| 808 | - | ||
| 809 | - g_autofree gchar * url = g_strdup(u); | ||
| 810 | - | ||
| 811 | - gtk_combo_box_set_active(widget->input.ssl,(g_str_has_prefix(u,"tn3270s") ? 1 : 0)); | ||
| 812 | -// gtk_toggle_button_set_active(widget->input.ssl,g_str_has_prefix(u,"tn3270s")); | ||
| 813 | - | ||
| 814 | - gchar *hostname = strstr(url,"://"); | ||
| 815 | - if(!hostname) | ||
| 816 | - { | ||
| 817 | - g_message("Invalid URL: \"%s\" (no scheme)",url); | ||
| 818 | - } | ||
| 819 | - else | ||
| 820 | - { | ||
| 821 | - hostname += 3; | ||
| 822 | - | ||
| 823 | - gchar *srvcname = strchr(hostname,':'); | ||
| 824 | - | ||
| 825 | - if(srvcname) | ||
| 826 | - { | ||
| 827 | - *(srvcname++) = 0; | ||
| 828 | - } | ||
| 829 | - else | ||
| 830 | - { | ||
| 831 | - srvcname = "23"; | ||
| 832 | - } | ||
| 833 | - | ||
| 834 | - gtk_entry_set_text(widget->input.entry[ENTRY_HOSTNAME],hostname); | ||
| 835 | - gtk_entry_set_text(widget->input.entry[ENTRY_SRVCNAME],srvcname); | ||
| 836 | - | ||
| 837 | - } | ||
| 838 | - | ||
| 839 | - } | 703 | + v3270_url_edit_set_url(widget->input.url,lib3270_get_url(hSession)); |
| 840 | 704 | ||
| 841 | // Load LU names | 705 | // Load LU names |
| 842 | g_autofree gchar * lunames = v3270_get_lunames(terminal); | 706 | g_autofree gchar * lunames = v3270_get_lunames(terminal); |
src/dialogs/settings/url.c
| @@ -122,7 +122,7 @@ | @@ -122,7 +122,7 @@ | ||
| 122 | gtk_entry_set_width_chars(GTK_ENTRY(widget->entry.host),50); | 122 | gtk_entry_set_width_chars(GTK_ENTRY(widget->entry.host),50); |
| 123 | gtk_entry_set_placeholder_text(GTK_ENTRY(widget->entry.host),_("The tn3270 host name")); | 123 | gtk_entry_set_placeholder_text(GTK_ENTRY(widget->entry.host),_("The tn3270 host name")); |
| 124 | gtk_widget_set_tooltip_text(widget->entry.host,g_dgettext(GETTEXT_PACKAGE,labels[0].tooltip)); | 124 | gtk_widget_set_tooltip_text(widget->entry.host,g_dgettext(GETTEXT_PACKAGE,labels[0].tooltip)); |
| 125 | - gtk_grid_attach(GTK_GRID(widget),widget->entry.host,1,0,4,1); | 125 | + gtk_grid_attach(GTK_GRID(widget),widget->entry.host,1,0,5,1); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | // Create the service/port field. | 128 | // Create the service/port field. |
| @@ -160,7 +160,7 @@ | @@ -160,7 +160,7 @@ | ||
| 160 | }; | 160 | }; |
| 161 | 161 | ||
| 162 | gtk_widget_set_tooltip_text(widget->entry.ssl,g_dgettext(GETTEXT_PACKAGE,labels[2].tooltip)); | 162 | gtk_widget_set_tooltip_text(widget->entry.ssl,g_dgettext(GETTEXT_PACKAGE,labels[2].tooltip)); |
| 163 | - gtk_grid_attach(GTK_GRID(widget),widget->entry.ssl,3,1,2,1); | 163 | + gtk_grid_attach(GTK_GRID(widget),widget->entry.ssl,3,1,3,1); |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | // Create labels. | 166 | // Create labels. |
| @@ -256,3 +256,14 @@ | @@ -256,3 +256,14 @@ | ||
| 256 | return edit->url; | 256 | return edit->url; |
| 257 | } | 257 | } |
| 258 | 258 | ||
| 259 | + gboolean v3270_url_edit_is_valid(GtkWidget *widget) { | ||
| 260 | + g_return_val_if_fail(GTK_IS_V3270URLEdit(widget),FALSE); | ||
| 261 | + | ||
| 262 | + V3270URLEdit *edit = GTK_V3270URLEdit(widget); | ||
| 263 | + | ||
| 264 | + const gchar *host = gtk_entry_get_text(GTK_ENTRY(edit->entry.host)); | ||
| 265 | + if(!*host) | ||
| 266 | + return FALSE; | ||
| 267 | + | ||
| 268 | + return TRUE; | ||
| 269 | + } |
src/include/v3270/settings/url.h
| @@ -52,6 +52,7 @@ | @@ -52,6 +52,7 @@ | ||
| 52 | GtkWidget * v3270_url_edit_new(); | 52 | GtkWidget * v3270_url_edit_new(); |
| 53 | void v3270_url_edit_set_url(GtkWidget *widget, const gchar *url); | 53 | void v3270_url_edit_set_url(GtkWidget *widget, const gchar *url); |
| 54 | const gchar * v3270_url_edit_get_url(GtkWidget *widget); | 54 | const gchar * v3270_url_edit_get_url(GtkWidget *widget); |
| 55 | + gboolean v3270_url_edit_is_valid(GtkWidget *widget); | ||
| 55 | 56 | ||
| 56 | G_END_DECLS | 57 | G_END_DECLS |
| 57 | 58 |
src/testprogram/toolbar.c
| @@ -34,7 +34,6 @@ | @@ -34,7 +34,6 @@ | ||
| 34 | #include <v3270/colorscheme.h> | 34 | #include <v3270/colorscheme.h> |
| 35 | #include <v3270/dialogs.h> | 35 | #include <v3270/dialogs.h> |
| 36 | #include <v3270/settings.h> | 36 | #include <v3270/settings.h> |
| 37 | - #include <v3270/settings/url.h> | ||
| 38 | #include <v3270/selection.h> | 37 | #include <v3270/selection.h> |
| 39 | #include <v3270/trace.h> | 38 | #include <v3270/trace.h> |
| 40 | #include <lib3270/log.h> | 39 | #include <lib3270/log.h> |
| @@ -71,13 +70,6 @@ | @@ -71,13 +70,6 @@ | ||
| 71 | 70 | ||
| 72 | static void preferences_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | 71 | static void preferences_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) |
| 73 | { | 72 | { |
| 74 | - GtkWidget * dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL); | ||
| 75 | - | ||
| 76 | - gtk_container_add(GTK_CONTAINER(dialog),v3270_url_edit_new()); | ||
| 77 | - gtk_widget_show_all(dialog); | ||
| 78 | - | ||
| 79 | - | ||
| 80 | - /* | ||
| 81 | size_t ix; | 73 | size_t ix; |
| 82 | GtkWidget * dialog = v3270_settings_dialog_new(); | 74 | GtkWidget * dialog = v3270_settings_dialog_new(); |
| 83 | 75 | ||
| @@ -103,7 +95,6 @@ | @@ -103,7 +95,6 @@ | ||
| 103 | g_signal_connect(dialog,"response",G_CALLBACK(v3270_setttings_dialog_response),NULL); | 95 | g_signal_connect(dialog,"response",G_CALLBACK(v3270_setttings_dialog_response),NULL); |
| 104 | 96 | ||
| 105 | gtk_widget_show_all(dialog); | 97 | gtk_widget_show_all(dialog); |
| 106 | - */ | ||
| 107 | 98 | ||
| 108 | } | 99 | } |
| 109 | 100 |