X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8f4a9a1025aace6f5f82aa4c05c5ceb651b86dd4..a0232aa5207651deaf980c68f79546eed6327af7:/samples/mobile/wxedit/wxedit.cpp diff --git a/samples/mobile/wxedit/wxedit.cpp b/samples/mobile/wxedit/wxedit.cpp index d9e0c53c4e..73a259c9ed 100644 --- a/samples/mobile/wxedit/wxedit.cpp +++ b/samples/mobile/wxedit/wxedit.cpp @@ -2,13 +2,9 @@ // Name: wxedit.cpp // Author: Robert Roebling // Created: 04/07/02 -// Copyright: +// Copyright: ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ - #pragma implementation "wxedit.cpp" -#endif - // For compilers that support precompilation #include "wx/wxprec.h" @@ -34,22 +30,22 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame) EVT_MENU(ID_ABOUT, MyFrame::OnAbout) - + EVT_MENU(ID_NEW, MyFrame::OnNew) EVT_MENU(ID_OPEN, MyFrame::OnOpen) EVT_MENU(ID_SAVE, MyFrame::OnSave) EVT_MENU(ID_SAVEAS, MyFrame::OnSaveAs) EVT_MENU(ID_QUIT, MyFrame::OnQuit) - + EVT_MENU(ID_COPY, MyFrame::OnCopy) EVT_MENU(ID_CUT, MyFrame::OnCut) EVT_MENU(ID_PASTE, MyFrame::OnPaste) EVT_MENU(ID_DELETE, MyFrame::OnDelete) - + EVT_MENU_RANGE(ID_LAST_1, ID_LAST_3, MyFrame::OnLastFiles) - + EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_UPDATE_UI(-1,MyFrame::OnUpdateUI) + EVT_UPDATE_UI(wxID_ANY,MyFrame::OnUpdateUI) END_EVENT_TABLE() MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title, @@ -58,28 +54,30 @@ MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title, { // Create menu and status bar. CreateMyMenuBar(); +#if wxUSE_STATUSBAR CreateStatusBar(1); - SetStatusText( "Welcome to wxEdit!" ); - + SetStatusText( _T("Welcome to wxEdit!") ); +#endif // wxUSE_STATUSBAR + // Create edit control. Since it is the only // control in the frame, it will be resized // to file it out. - m_text = new wxTextCtrl( this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); - + m_text = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + // Read .ini file for file history etc. wxConfig *conf = (wxConfig*) wxConfig::Get(); - int entries = 0; - conf->Read( "/History/Count", &entries ); - + int entries = 0; + conf->Read( _T("/History/Count"), &entries ); + for (int i = 0; i < entries; i++) { wxString tmp; - tmp.Printf( "/History/File%d", (int)i ); - + tmp.Printf( _T("/History/File%d"), (int)i ); + wxString res; conf->Read( tmp, &res ); - + if (!res.empty()) AddToHistory( res ); } @@ -88,19 +86,19 @@ MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title, void MyFrame::MakeHistory() { wxMenuBar *mb = GetMenuBar(); - + wxASSERT( mb ); int max = m_history.GetCount(); if (max > HISTORY_ENTRIES) max = HISTORY_ENTRIES; - + for (int i = 0; i < max; i++) { wxMenu *menu = NULL; mb->FindItem( ID_LAST_1 + i, &menu ); wxASSERT( menu ); - + wxFileName fname( m_history[(size_t)i] ); menu->SetLabel( ID_LAST_1 + i, fname.GetFullName() ); } @@ -110,12 +108,12 @@ void MyFrame::AddToHistory( const wxString &fname ) { // Fill menu with history index int index = m_history.Index( fname ); - + if (index != wxNOT_FOUND) - m_history.Remove( (size_t) index ); - + m_history.RemoveAt( (size_t) index ); + m_history.Insert( fname, 0 ); - + // Update menu MakeHistory(); } @@ -123,48 +121,48 @@ void MyFrame::AddToHistory( const wxString &fname ) void MyFrame::CreateMyMenuBar() { wxMenu *file_menu = new wxMenu; - file_menu->Append( ID_ABOUT, "About...", "Program info" ); + file_menu->Append( ID_ABOUT, _T("About..."), _T("Program info") ); file_menu->AppendSeparator(); - file_menu->Append( ID_NEW, "New...", "New text" ); - file_menu->Append( ID_OPEN, "Open...", "Open text" ); - file_menu->Append( ID_SAVE, "Save", "Save text" ); - file_menu->Append( ID_SAVEAS, "Save as...", "Save text as..." ); + file_menu->Append( ID_NEW, _T("New..."), _T("New text") ); + file_menu->Append( ID_OPEN, _T("Open..."), _T("Open text") ); + file_menu->Append( ID_SAVE, _T("Save"), _T("Save text") ); + file_menu->Append( ID_SAVEAS, _T("Save as..."), _T("Save text as...") ); file_menu->AppendSeparator(); - file_menu->Append( ID_QUIT, "Quit...", "Quit program" ); + file_menu->Append( ID_QUIT, _T("Quit..."), _T("Quit program") ); wxMenu *edit_menu = new wxMenu; - edit_menu->Append( ID_COPY, "Copy" ); - edit_menu->Append( ID_CUT, "Cut" ); - edit_menu->Append( ID_PASTE, "Paste" ); + edit_menu->Append( ID_COPY, _T("Copy") ); + edit_menu->Append( ID_CUT, _T("Cut") ); + edit_menu->Append( ID_PASTE, _T("Paste") ); edit_menu->AppendSeparator(); - edit_menu->Append( ID_DELETE, "Delete" ); - + edit_menu->Append( ID_DELETE, _T("Delete") ); + wxMenu *history_menu = new wxMenu; - history_menu->Append( ID_LAST_1, "No file." ); - history_menu->Append( ID_LAST_2, "No file." ); - history_menu->Append( ID_LAST_3, "No file." ); - + history_menu->Append( ID_LAST_1, _T("No file.") ); + history_menu->Append( ID_LAST_2, _T("No file.") ); + history_menu->Append( ID_LAST_3, _T("No file.") ); + wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append( file_menu, "&File" ); - menu_bar->Append( edit_menu, "&Edit" ); - menu_bar->Append( history_menu, "&History" ); - + menu_bar->Append( file_menu, _T("&File") ); + menu_bar->Append( edit_menu, _T("&Edit") ); + menu_bar->Append( history_menu, _T("&History") ); + SetMenuBar( menu_bar ); } -void MyFrame::OnCopy( wxCommandEvent &event ) +void MyFrame::OnCopy( wxCommandEvent& WXUNUSED(event) ) { } -void MyFrame::OnCut( wxCommandEvent &event ) +void MyFrame::OnCut( wxCommandEvent& WXUNUSED(event) ) { } -void MyFrame::OnPaste( wxCommandEvent &event ) +void MyFrame::OnPaste( wxCommandEvent& WXUNUSED(event) ) { } -void MyFrame::OnDelete( wxCommandEvent &event ) +void MyFrame::OnDelete( wxCommandEvent& WXUNUSED(event) ) { } @@ -174,63 +172,79 @@ void MyFrame::OnLastFiles( wxCommandEvent &event ) if (!m_filename.empty()) AddToHistory( m_filename ); - + size_t index = event.GetId() - ID_LAST_1; - - wxASSERT( index < m_history.GetCount() ); - - m_filename = m_history[index]; - - m_text->Clear(); - m_text->LoadFile( m_filename ); - - SetStatusText( m_filename ); + + if( index < m_history.GetCount() ) + { + m_filename = m_history[index]; + + m_text->Clear(); + m_text->LoadFile( m_filename ); + +#if wxUSE_STATUSBAR + SetStatusText( m_filename ); +#endif // wxUSE_STATUSBAR + } + else + { + wxMessageBox( + _T("This entry is empty. It should be filled once you will start opening."), + _T("Empty entry"), + wxOK | wxICON_INFORMATION, + this + ); + } } -void MyFrame::OnNew( wxCommandEvent &event ) +void MyFrame::OnNew( wxCommandEvent& WXUNUSED(event) ) { if (!Discard()) return; m_text->Clear(); - + if (!m_filename.empty()) AddToHistory( m_filename ); - + m_filename = wxEmptyString; - - SetStatusText( "" ); + +#if wxUSE_STATUSBAR + SetStatusText( wxEmptyString ); +#endif // wxUSE_STATUSBAR } -void MyFrame::OnOpen( wxCommandEvent &event ) +void MyFrame::OnOpen( wxCommandEvent& WXUNUSED(event) ) { +#if wxUSE_FILEDLG if (!Discard()) return; - wxFileDialog dialog( this, "Open text", "", "", - "Text file (*.txt)|*.txt|" - "Any file (*)|*", - wxOPEN|wxFILE_MUST_EXIST ); + wxFileDialog dialog( this, _T("Open text"), wxEmptyString, wxEmptyString, + _T("Text file (*.txt)|*.txt|Any file (*)|*"), + wxFD_OPEN|wxFD_FILE_MUST_EXIST ); if (dialog.ShowModal() == wxID_OK) { m_text->Clear(); #ifdef __WXX11__ + // requires wxUSE_UNIV_TEXTCTRL to be set to 0 +#if 0 wxFileName fname( dialog.GetPath() ); - if ((fname.GetExt() == "cpp") || - (fname.GetExt() == "c") || - (fname.GetExt() == "h") || - (fname.GetExt() == "cxx") || - (fname.GetExt() == "hxx")) + if ((fname.GetExt() == _T("cpp")) || + (fname.GetExt() == _T("c")) || + (fname.GetExt() == _T("h")) || + (fname.GetExt() == _T("cxx")) || + (fname.GetExt() == _T("hxx"))) { m_text->SetLanguage( wxSOURCE_LANG_CPP ); } else - if (fname.GetExt() == "py") + if (fname.GetExt() == _T("py")) { m_text->SetLanguage( wxSOURCE_LANG_PYTHON ); } else - if ((fname.GetExt() == "pl") || - (fname.GetExt() == "pm")) + if ((fname.GetExt() == _T("pl")) || + (fname.GetExt() == _T("pm"))) { m_text->SetLanguage( wxSOURCE_LANG_PYTHON ); } @@ -238,77 +252,86 @@ void MyFrame::OnOpen( wxCommandEvent &event ) { m_text->SetLanguage( wxSOURCE_LANG_NONE ); } +#endif #endif m_filename = dialog.GetPath(); m_text->LoadFile( m_filename ); - + +#if wxUSE_STATUSBAR SetStatusText( m_filename ); +#endif // wxUSE_STATUSBAR } +#endif // wxUSE_FILEDLG } -void MyFrame::OnSave( wxCommandEvent &event ) +void MyFrame::OnSave( wxCommandEvent& WXUNUSED(event) ) { - if (m_filename.empty()) - OnSaveAs( event ); - else - m_text->SaveFile( m_filename ); + Save(); } -void MyFrame::OnSaveAs( wxCommandEvent &event ) +void MyFrame::OnSaveAs( wxCommandEvent& WXUNUSED(event) ) { - wxFileDialog dialog( this, "Open text", "", "", - "Text file (*.txt)|*.txt|" - "Any file (*)|*", - wxSAVE|wxOVERWRITE_PROMPT ); +#if wxUSE_FILEDLG + wxFileDialog dialog( this, _T("Open text"), wxEmptyString, wxEmptyString, + _T("Text file (*.txt)|*.txt|Any file (*)|*"), + wxFD_SAVE|wxFD_OVERWRITE_PROMPT ); if (dialog.ShowModal() == wxID_OK) { m_filename = dialog.GetPath(); m_text->SaveFile( m_filename ); - + +#if wxUSE_STATUSBAR SetStatusText( m_filename ); +#endif // wxUSE_STATUSBAR } +#endif // wxUSE_FILEDLG } -void MyFrame::OnAbout( wxCommandEvent &event ) +void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) { - wxMessageDialog dialog( this, "Welcome to wxEdit\n(C)opyright Robert Roebling", - "About wxEdit", wxOK|wxICON_INFORMATION ); + wxMessageDialog dialog( this, _T("Welcome to wxEdit\n(C)opyright Robert Roebling"), + _T("About wxEdit"), wxOK|wxICON_INFORMATION ); dialog.ShowModal(); } -void MyFrame::OnQuit( wxCommandEvent &event ) +void MyFrame::OnQuit( wxCommandEvent& WXUNUSED(event) ) { - Close( TRUE ); + Close( true ); } bool MyFrame::Save() { - m_text->SaveFile(); - - return TRUE; + wxCommandEvent event; + + if (m_filename.empty()) + OnSaveAs( event ); + else + m_text->SaveFile( m_filename ); + + return true; } bool MyFrame::Discard() { if (m_text->IsModified()) { - wxMessageDialog dialog( this, "Text has been\nmodified! Save?", - "wxEdit", wxYES_NO|wxCANCEL|wxICON_EXCLAMATION ); - + wxMessageDialog dialog( this, _T("Text has been\nmodified! Save?"), + _T("wxEdit"), wxYES_NO|wxCANCEL|wxICON_EXCLAMATION ); + int ret = dialog.ShowModal(); - + if (ret == wxID_CANCEL) - return FALSE; - + return false; + if (ret == wxID_YES) { if (!Save()) - return FALSE; + return false; } } - - return TRUE; + + return true; } void MyFrame::OnUpdateUI( wxUpdateUIEvent &event ) @@ -316,48 +339,56 @@ void MyFrame::OnUpdateUI( wxUpdateUIEvent &event ) switch (event.GetId()) { case ID_COPY: - event.Enable( FALSE ); + event.Enable( false ); break; case ID_CUT: - event.Enable( FALSE ); + event.Enable( false ); break; case ID_PASTE: - event.Enable( FALSE ); + event.Enable( false ); break; case ID_DELETE: +#ifdef __WXUNIVERSAL__ event.Enable( m_text->HasSelection() ); +#else + { + long selFrom, selTo; + m_text->GetSelection(& selFrom, & selTo); + event.Enable( selFrom != selTo ); + } +#endif break; default: break; } } -void MyFrame::OnCloseWindow( wxCloseEvent &event ) +void MyFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) ) { // Save changes? - if (!Discard()) return; - + if (!Discard()) return; + // Add current to history if (!m_filename.empty()) AddToHistory( m_filename ); - // Write .ini file + // Write .ini file wxConfig *conf = (wxConfig*) wxConfig::Get(); - + int max = HISTORY_ENTRIES; if (m_history.GetCount() < (size_t)max) max = m_history.GetCount(); - - conf->Write( "/History/Count", max ); - + + conf->Write( _T("/History/Count"), max ); + for (int i = 0; i < max; i++) { wxString tmp; - tmp.Printf( "/History/File%d", (int)i ); - + tmp.Printf( _T("/History/File%d"), (int)i ); + conf->Write( tmp, m_history[(size_t)i] ); } - + // Flush and delete config delete wxConfig::Set( NULL ); @@ -371,23 +402,18 @@ void MyFrame::OnCloseWindow( wxCloseEvent &event ) IMPLEMENT_APP(MyApp) -MyApp::MyApp() -{ -} - bool MyApp::OnInit() { - SetVendorName("Free world"); - SetAppName("wxEdit"); - - MyFrame *frame = new MyFrame( NULL, -1, "wxEdit", wxPoint(20,20), wxSize(500,340) ); - frame->Show( TRUE ); - - return TRUE; + SetVendorName(_T("Free world")); + SetAppName(_T("wxEdit")); + + MyFrame *frame = new MyFrame( NULL, wxID_ANY, _T("wxEdit"), wxPoint(20,20), wxSize(500,340) ); + frame->Show( true ); + + return true; } int MyApp::OnExit() { return 0; } -