From: Vadim Zeitlin Date: Mon, 24 Jan 2000 18:26:54 +0000 (+0000) Subject: added wxGetPasswordFromUser(), dialogs sample shows it, documented it X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a294c6d53ed8be5b92c31e1eb7e3366ba1642fa7?ds=inline added wxGetPasswordFromUser(), dialogs sample shows it, documented it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index c955171a8a..02ad05fa76 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -48,6 +48,8 @@ all (GUI): - TIFF support added (libtiff required and included in the distribution) - PCX files can now be written (24 bit only so far) +- wxTextEntryDialog may be used for entering passwords (supports wxTE_PASSWORD) + wxMSW: - support for enhanced metafiles added, support for copying/pasting metafiles diff --git a/docs/latex/wx/function.tex b/docs/latex/wx/function.tex index 507e0339f3..4ec3c25aec 100644 --- a/docs/latex/wx/function.tex +++ b/docs/latex/wx/function.tex @@ -609,6 +609,19 @@ Dialog is centered on its {\it parent} unless an explicit position is given in +\membersection{::wxGetPasswordFromUser}\label{wxgetpasswordfromuser} + +\func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\ + \param{const wxString\& }{default\_value = ``"}, \param{wxWindow *}{parent = NULL}} + +Similar to \helpref{wxGetTextFromUser}{wxgettextfromuser} but the text entered +in the dialog is not shown on screen but replaced with stars. This is intended +to be used for entering passwords as the function name implies. + +\wxheading{Include files} + + + \membersection{::wxGetTextFromUser}\label{wxgettextfromuser} \func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\ diff --git a/docs/latex/wx/textdlg.tex b/docs/latex/wx/textdlg.tex index ef13e0b1d5..2cd79bfc80 100644 --- a/docs/latex/wx/textdlg.tex +++ b/docs/latex/wx/textdlg.tex @@ -35,7 +35,9 @@ Constructor. Use \helpref{wxTextEntryDialog::ShowModal}{wxtextentrydialogshowmod \docparam{defaultValue}{The default value, which may be the empty string.} -\docparam{style}{A dialog style, specifying the buttons (wxOK, wxCANCEL) and an optional wxCENTRE style.} +\docparam{style}{A dialog style, specifying the buttons (wxOK, wxCANCEL) +and an optional wxCENTRE style. Additionally, wxTextCtrl styles (such as +{\tt wxTE\_PASSWORD} may be specified here.} \docparam{pos}{Dialog position.} diff --git a/include/wx/generic/textdlgg.h b/include/wx/generic/textdlgg.h index 61b9117583..7f6cb35a2c 100644 --- a/include/wx/generic/textdlgg.h +++ b/include/wx/generic/textdlgg.h @@ -22,20 +22,23 @@ class WXDLLEXPORT wxTextCtrl; -// Handy dialog functions (will be converted into classes at some point) WXDLLEXPORT_DATA(extern const wxChar*) wxGetTextFromUserPromptStr; WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString; +#define wxTextEntryDialogStyle (wxOK | wxCANCEL | wxCENTRE) + +// ---------------------------------------------------------------------------- +// wxTextEntryDialog: a dialog with text control, [ok] and [cancel] buttons +// ---------------------------------------------------------------------------- + class WXDLLEXPORT wxTextEntryDialog : public wxDialog { - DECLARE_DYNAMIC_CLASS(wxTextEntryDialog) - public: wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxGetTextFromUserPromptStr, const wxString& value = wxEmptyString, - long style = wxOK | wxCANCEL | wxCENTRE, + long style = wxTextEntryDialogStyle, const wxPoint& pos = wxDefaultPosition); void SetValue(const wxString& val) { m_value = val; } @@ -51,6 +54,7 @@ protected: private: DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxTextEntryDialog) }; // ---------------------------------------------------------------------------- @@ -66,5 +70,11 @@ wxGetTextFromUser(const wxString& message, int y = -1, bool centre = TRUE); +wxString WXDLLEXPORT +wxGetPasswordFromUser(const wxString& message, + const wxString& caption = wxGetTextFromUserPromptStr, + const wxString& default_value = wxEmptyString, + wxWindow *parent = (wxWindow *) NULL); + #endif // __TEXTDLGH_G__ diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 59873ce715..c54c263b5f 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -78,13 +78,14 @@ bool MyApp::OnInit(void) file_menu->Append(DIALOGS_LOG_DIALOG, "&Log dialog\tCtrl-L"); file_menu->Append(DIALOGS_MESSAGE_BOX, "&Message box\tCtrl-M"); file_menu->Append(DIALOGS_TEXT_ENTRY, "Text &entry\tCtrl-E"); + file_menu->Append(DIALOGS_PASSWORD_ENTRY, "&Password entry\tCtrl-P"); file_menu->Append(DIALOGS_NUM_ENTRY, "&Numeric entry\tCtrl-N"); file_menu->Append(DIALOGS_SINGLE_CHOICE, "&Single choice\tCtrl-S"); file_menu->AppendSeparator(); file_menu->Append(DIALOGS_TIP, "&Tip of the day\tCtrl-T"); file_menu->AppendSeparator(); file_menu->Append(DIALOGS_FILE_OPEN, "&Open file\tCtrl-O"); - file_menu->Append(DIALOGS_FILES_OPEN, "&Open files\tCtrl-Q"); + file_menu->Append(DIALOGS_FILES_OPEN, "Open &files\tCtrl-Q"); file_menu->Append(DIALOGS_FILE_SAVE, "Sa&ve file"); file_menu->Append(DIALOGS_DIR_CHOOSE, "&Choose a directory\tCtrl-D"); file_menu->AppendSeparator(); @@ -233,10 +234,27 @@ void MyFrame::NumericEntry(wxCommandEvent& WXUNUSED(event) ) wxMessageBox(msg, "Numeric test result", wxOK | icon, this); } -void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event) ) +void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event)) { - wxTextEntryDialog dialog(this, "This is a small sample\nA long, long string to test out the text entrybox", - "Please enter a string", "Default value", wxOK|wxCANCEL); + wxString pwd = wxGetPasswordFromUser("Enter password:", + "Passowrd entry dialog", + "", + this); + if ( !!pwd ) + { + wxMessageBox(wxString::Format("Your password is '%s'", pwd.c_str()), + "Got password", wxOK | wxICON_INFORMATION, this); + } +} + +void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event)) +{ + wxTextEntryDialog dialog(this, + "This is a small sample\n" + "A long, long string to test out the text entrybox", + "Please enter a string", + "Default value", + wxOK | wxCANCEL); if (dialog.ShowModal() == wxID_OK) { @@ -386,22 +404,23 @@ BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(DIALOGS_CHOOSE_COLOUR, MyFrame::ChooseColour) - EVT_MENU(DIALOGS_CHOOSE_FONT, MyFrame::ChooseFont) - EVT_MENU(DIALOGS_LOG_DIALOG, MyFrame::LogDialog) - EVT_MENU(DIALOGS_MESSAGE_BOX, MyFrame::MessageBox) - EVT_MENU(DIALOGS_TEXT_ENTRY, MyFrame::TextEntry) - EVT_MENU(DIALOGS_NUM_ENTRY, MyFrame::NumericEntry) - EVT_MENU(DIALOGS_SINGLE_CHOICE, MyFrame::SingleChoice) - EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen) - EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen) - EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave) - EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose) - EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip) + EVT_MENU(DIALOGS_CHOOSE_COLOUR, MyFrame::ChooseColour) + EVT_MENU(DIALOGS_CHOOSE_FONT, MyFrame::ChooseFont) + EVT_MENU(DIALOGS_LOG_DIALOG, MyFrame::LogDialog) + EVT_MENU(DIALOGS_MESSAGE_BOX, MyFrame::MessageBox) + EVT_MENU(DIALOGS_TEXT_ENTRY, MyFrame::TextEntry) + EVT_MENU(DIALOGS_PASSWORD_ENTRY, MyFrame::PasswordEntry) + EVT_MENU(DIALOGS_NUM_ENTRY, MyFrame::NumericEntry) + EVT_MENU(DIALOGS_SINGLE_CHOICE, MyFrame::SingleChoice) + EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen) + EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen) + EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave) + EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose) + EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip) #if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW - EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric) - EVT_MENU(DIALOGS_CHOOSE_FONT_GENERIC, MyFrame::ChooseFontGeneric) + EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric) + EVT_MENU(DIALOGS_CHOOSE_FONT_GENERIC, MyFrame::ChooseFontGeneric) #endif - EVT_MENU(wxID_EXIT, MyFrame::OnExit) + EVT_MENU(wxID_EXIT, MyFrame::OnExit) END_EVENT_TABLE() diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h index c1173e38df..5992fcf63b 100644 --- a/samples/dialogs/dialogs.h +++ b/samples/dialogs/dialogs.h @@ -35,6 +35,7 @@ public: void MessageBox(wxCommandEvent& event); void SingleChoice(wxCommandEvent& event); void TextEntry(wxCommandEvent& event); + void PasswordEntry(wxCommandEvent& event); void NumericEntry(wxCommandEvent& event); void FileOpen(wxCommandEvent& event); void FilesOpen(wxCommandEvent& event); @@ -64,20 +65,24 @@ public: // Menu IDs -#define DIALOGS_CHOOSE_COLOUR 1 -#define DIALOGS_CHOOSE_COLOUR_GENERIC 2 -#define DIALOGS_CHOOSE_FONT 3 -#define DIALOGS_CHOOSE_FONT_GENERIC 4 -#define DIALOGS_MESSAGE_BOX 5 -#define DIALOGS_SINGLE_CHOICE 6 -#define DIALOGS_TEXT_ENTRY 7 -#define DIALOGS_FILE_OPEN 8 -#define DIALOGS_FILES_OPEN 9 -#define DIALOGS_FILE_SAVE 10 -#define DIALOGS_DIR_CHOOSE 11 -#define DIALOGS_TIP 12 -#define DIALOGS_NUM_ENTRY 13 -#define DIALOGS_LOG_DIALOG 14 +enum +{ + DIALOGS_CHOOSE_COLOUR = 1, + DIALOGS_CHOOSE_COLOUR_GENERIC, + DIALOGS_CHOOSE_FONT, + DIALOGS_CHOOSE_FONT_GENERIC, + DIALOGS_MESSAGE_BOX, + DIALOGS_SINGLE_CHOICE, + DIALOGS_TEXT_ENTRY, + DIALOGS_PASSWORD_ENTRY, + DIALOGS_FILE_OPEN, + DIALOGS_FILES_OPEN, + DIALOGS_FILE_SAVE, + DIALOGS_DIR_CHOOSE, + DIALOGS_TIP, + DIALOGS_NUM_ENTRY, + DIALOGS_LOG_DIALOG +}; #endif diff --git a/src/generic/textdlgg.cpp b/src/generic/textdlgg.cpp index e5e86c96e1..d34210a7c9 100644 --- a/src/generic/textdlgg.cpp +++ b/src/generic/textdlgg.cpp @@ -87,7 +87,9 @@ wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, topsizer->Add( CreateTextSizer( message ), 0, wxALL, 10 ); // 2) text ctrl - m_textctrl = new wxTextCtrl(this, wxID_TEXT, value, wxDefaultPosition, wxSize(300, -1)); + m_textctrl = new wxTextCtrl(this, wxID_TEXT, value, + wxDefaultPosition, wxSize(300, -1), + style & ~wxTextEntryDialogStyle); topsizer->Add( m_textctrl, 1, wxEXPAND | wxLEFT|wxRIGHT, 15 ); #if wxUSE_STATLINE