From f35af507573469b7c1692f01922d323bd1000fbc Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sun, 12 Oct 2008 15:50:20 +0200 Subject: Connection Manager password callback improvements --- UGnome.pas | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) (limited to 'UGnome.pas') diff --git a/UGnome.pas b/UGnome.pas index c843e84..dc2529c 100644 --- a/UGnome.pas +++ b/UGnome.pas @@ -1256,7 +1256,7 @@ begin GTK_BUTTONS_NONE, '%s', AMessage); if primary <> nil then g_free (primary); - gtk_window_set_title (PGtkWindow(dialog), 'VFS Question'); +// gtk_window_set_title (PGtkWindow(dialog), 'VFS Question'); // First count the items in the list then add the buttons in reverse order while (TOpenPCharArray(choices)[len] <> nil) @@ -1369,6 +1369,7 @@ var widget: PGtkWidget; group: PGSList; remember_box: PGtkWidget; priv: TVFSAskPasswordCallbackPriv; + s: PChar; begin FillChar(priv, sizeof(priv), 0); radio_forget := nil; @@ -1378,7 +1379,7 @@ begin widget := gtk_dialog_new (); priv.dialog := PGtkDialog(widget); window := PGtkWindow(widget); - gtk_window_set_title (window, 'VFS Question'); +// gtk_window_set_title (window, 'VFS Question'); // Set the dialog up with HIG properties gtk_dialog_set_has_separator (priv.dialog, False); @@ -1392,7 +1393,7 @@ begin gtk_dialog_add_buttons (priv.dialog, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - 'Co_nnect', GTK_RESPONSE_OK, + PChar(LANGConnMgr_ConnectButton), GTK_RESPONSE_OK, nil); gtk_dialog_set_default_response (priv.dialog, GTK_RESPONSE_OK); @@ -1419,7 +1420,7 @@ begin vbox := gtk_vbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0); - can_anonymous := (Integer(flags) and Integer(VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED)) = Integer(VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED); + can_anonymous := (flags and VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED) = VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED; if can_anonymous then begin anon_box := gtk_vbox_new (FALSE, 6); @@ -1436,9 +1437,9 @@ begin end; rows := 0; - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_NEED_PASSWORD)) = Integer(VFS_ASK_PASSWORD_NEED_PASSWORD) then Inc(rows); - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_NEED_USERNAME)) = Integer(VFS_ASK_PASSWORD_NEED_USERNAME) then Inc(rows); - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_NEED_DOMAIN)) = Integer(VFS_ASK_PASSWORD_NEED_DOMAIN) then Inc(rows); + if (flags and VFS_ASK_PASSWORD_NEED_PASSWORD) = VFS_ASK_PASSWORD_NEED_PASSWORD then Inc(rows); + if (flags and VFS_ASK_PASSWORD_NEED_USERNAME) = VFS_ASK_PASSWORD_NEED_USERNAME then Inc(rows); + if (flags and VFS_ASK_PASSWORD_NEED_DOMAIN) = VFS_ASK_PASSWORD_NEED_DOMAIN then Inc(rows); // The table that holds the entries priv.entry_container := gtk_alignment_new (0.0, 0.0, 1.0, 1.0); @@ -1452,34 +1453,47 @@ begin gtk_container_add (GTK_CONTAINER (priv.entry_container), table); Rows := 0; - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_NEED_USERNAME)) = Integer(VFS_ASK_PASSWORD_NEED_USERNAME) then begin + if (flags and VFS_ASK_PASSWORD_NEED_USERNAME) = VFS_ASK_PASSWORD_NEED_USERNAME then begin priv.username_entry := table_add_entry (table, rows, '_Username:', default_user, @priv); Inc(Rows); end; - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_NEED_DOMAIN)) = Integer(VFS_ASK_PASSWORD_NEED_DOMAIN) then begin + if (flags and VFS_ASK_PASSWORD_NEED_DOMAIN) = VFS_ASK_PASSWORD_NEED_DOMAIN then begin priv.domain_entry := table_add_entry (table, rows, '_Domain:', default_domain, @priv); Inc(Rows); end; - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_NEED_PASSWORD)) = Integer(VFS_ASK_PASSWORD_NEED_PASSWORD) then begin + if (flags and VFS_ASK_PASSWORD_NEED_PASSWORD) = VFS_ASK_PASSWORD_NEED_PASSWORD then begin priv.password_entry := table_add_entry (table, rows, '_Password:', nil, @priv); // Inc(Rows); gtk_entry_set_visibility (GTK_ENTRY (priv.password_entry), FALSE); end; - if (Integer(flags) and Integer(VFS_ASK_PASSWORD_SAVING_SUPPORTED)) = Integer(VFS_ASK_PASSWORD_SAVING_SUPPORTED) then begin + if ((flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = VFS_ASK_PASSWORD_SAVING_SUPPORTED) or + ((flags and VFS_ASK_PASSWORD_SAVE_INTERNAL) = VFS_ASK_PASSWORD_SAVE_INTERNAL) then + begin remember_box := gtk_vbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (vbox), remember_box, FALSE, FALSE, 0); - radio_forget := gtk_radio_button_new_with_mnemonic (nil, 'Forget password _immediately'); + if (flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = 0 then s := 'Do not save password' + else s := 'Forget password _immediately'; + radio_forget := gtk_radio_button_new_with_mnemonic (nil, s); gtk_box_pack_start (GTK_BOX (remember_box), radio_forget, FALSE, FALSE, 0); group := gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_forget)); - radio_session := gtk_radio_button_new_with_mnemonic (group, 'Remember password until you _logout'); - gtk_box_pack_start (GTK_BOX (remember_box), radio_session, FALSE, FALSE, 0); + // gnome-keyring only + if (flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = VFS_ASK_PASSWORD_SAVING_SUPPORTED then begin + radio_session := gtk_radio_button_new_with_mnemonic (group, 'Remember password until you _logout'); + gtk_box_pack_start (GTK_BOX (remember_box), radio_session, FALSE, FALSE, 0); + group := gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_session)); + end; - group := gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_session)); - radio_remember := gtk_radio_button_new_with_mnemonic (group, 'Remember _forever'); + if (flags and VFS_ASK_PASSWORD_SAVING_SUPPORTED) = 0 then s := '_Save password in Connection Manager' + else s := 'Remember _forever'; + radio_remember := gtk_radio_button_new_with_mnemonic (group, s); gtk_box_pack_start (GTK_BOX (remember_box), radio_remember, FALSE, FALSE, 0); + + // Select to save password when internal saving is supported + if (flags and VFS_ASK_PASSWORD_SAVE_INTERNAL) = VFS_ASK_PASSWORD_SAVE_INTERNAL + then gtk_toggle_button_set_active(PGtkToggleButton(radio_remember), True); end; // The anonymous option will be active by default, ensure the toggled signal is emitted for it. @@ -1495,9 +1509,9 @@ begin if (priv.domain_entry <> nil) and (domain <> nil) then domain^ := g_strdup(gtk_entry_get_text(priv.domain_entry)); if (priv.password_entry <> nil) and (password <> nil) then password^ := g_strdup(gtk_entry_get_text(priv.password_entry)); if (priv.choice_anon <> nil) and (anonymous <> nil) then anonymous^ := Ord(gtk_toggle_button_get_active(PGtkToggleButton(priv.choice_anon))); - if (password_save <> nil) and (radio_forget <> nil) and (radio_session <> nil) and (radio_remember <> nil) then begin + if (password_save <> nil) and (radio_forget <> nil) and (radio_remember <> nil) then begin if gtk_toggle_button_get_active(PGtkToggleButton(radio_forget)) then password_save^ := VFS_PASSWORD_SAVE_NEVER else - if gtk_toggle_button_get_active(PGtkToggleButton(radio_session)) then password_save^ := VFS_PASSWORD_SAVE_FOR_SESSION else + if (radio_session <> nil) and gtk_toggle_button_get_active(PGtkToggleButton(radio_session)) then password_save^ := VFS_PASSWORD_SAVE_FOR_SESSION else if gtk_toggle_button_get_active(PGtkToggleButton(radio_remember)) then password_save^ := VFS_PASSWORD_SAVE_PERMANENTLY; end; end; -- cgit v1.2.3