]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxGetPasswordFromUser(), dialogs sample shows it, documented it
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 24 Jan 2000 18:26:54 +0000 (18:26 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 24 Jan 2000 18:26:54 +0000 (18:26 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/function.tex
docs/latex/wx/textdlg.tex
include/wx/generic/textdlgg.h
samples/dialogs/dialogs.cpp
samples/dialogs/dialogs.h
src/generic/textdlgg.cpp

index c955171a8a0351f375df1e7cf386d49612b404e9..02ad05fa76451fb7f7bd3f76c1c4485e6af435f8 100644 (file)
@@ -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
index 507e0339f31de88376bebdf56b130839fcccf5fd..4ec3c25aec25710950aba9cdbaf36622e8efd39a 100644 (file)
@@ -609,6 +609,19 @@ Dialog is centered on its {\it parent} unless an explicit position is given in
 
 <wx/textdlg.h>
 
+\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}
+
+<wx/textdlg.h>
+
 \membersection{::wxGetTextFromUser}\label{wxgettextfromuser}
 
 \func{wxString}{wxGetTextFromUser}{\param{const wxString\& }{message}, \param{const wxString\& }{caption = ``Input text"},\\
index ef13e0b1d5da05035c5cbde530db363e90aa8670..2cd79bfc80f0b7d08ee737fdf2cc463b4f3f9277 100644 (file)
@@ -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.}
 
index 61b9117583b36ae5b634106d2aa81f01b1221a1f..7f6cb35a2ca41ac0a78fbfc0390b5507636a27f6 100644 (file)
 
 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__
index 59873ce7158eb7a47a8fc6266a996b0d93d1ffdd..c54c263b5f86e1ab18bbb9b6693990bfae532bdc 100644 (file)
@@ -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()
 
index c1173e38df01abd39811823ae15c17e188321eb5..5992fcf63b176bf77ae07af646fb76477b1a6210 100644 (file)
@@ -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
 
index e5e86c96e1e7506a846bb3ec2366c29056b20e62..d34210a7c9f6319fe9537b5a67cbc6877fe54b21 100644 (file)
@@ -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