]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/mobile/wxedit/wxedit.cpp
fixed OSX bundles bkl code to handle conditional targets correctly
[wxWidgets.git] / samples / mobile / wxedit / wxedit.cpp
index d9e0c53c4e9a142304d8b471d1f907024334d502..b6043f9e66954eb4021275e8498bbc373c56ae2c 100644 (file)
@@ -2,13 +2,9 @@
 // Name:        wxedit.cpp
 // Author:      Robert Roebling
 // Created:     04/07/02
 // 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"
 
 // For compilers that support precompilation
 #include "wx/wxprec.h"
 
 
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
     EVT_MENU(ID_ABOUT, MyFrame::OnAbout)
 
 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_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(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_MENU_RANGE(ID_LAST_1, ID_LAST_3, MyFrame::OnLastFiles)
-    
+
     EVT_CLOSE(MyFrame::OnCloseWindow)
     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,
 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();
 {
     // Create menu and status bar.
     CreateMyMenuBar();
+#if wxUSE_STATUSBAR
     CreateStatusBar(1);
     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.
     // 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();
 
     // 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;
     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 );
         wxString res;
         conf->Read( tmp, &res );
-        
+
         if (!res.empty())
             AddToHistory( 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();
 void MyFrame::MakeHistory()
 {
     wxMenuBar *mb = GetMenuBar();
-    
+
     wxASSERT( mb );
 
     int max = m_history.GetCount();
     if (max > HISTORY_ENTRIES)
         max = HISTORY_ENTRIES;
     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 );
     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() );
     }
         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 );
 {
     // Fill menu with history index
     int index = m_history.Index( fname );
-    
+
     if (index != wxNOT_FOUND)
     if (index != wxNOT_FOUND)
-        m_history.Remove( (size_t) index );
-    
+        m_history.RemoveAt( (size_t) index );
+
     m_history.Insert( fname, 0 );
     m_history.Insert( fname, 0 );
-    
+
     // Update menu
     MakeHistory();
 }
     // Update menu
     MakeHistory();
 }
@@ -123,48 +121,48 @@ void MyFrame::AddToHistory( const wxString &fname )
 void MyFrame::CreateMyMenuBar()
 {
     wxMenu *file_menu = new wxMenu;
 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->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->AppendSeparator();
-    file_menu->Append( ID_QUIT, "Quit...", "Quit program" );
+    file_menu->Append( ID_QUIT, _T("Quit..."), _T("Quit program") );
 
     wxMenu *edit_menu = new wxMenu;
 
     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->AppendSeparator();
-    edit_menu->Append( ID_DELETE, "Delete" );
-    
+    edit_menu->Append( ID_DELETE, _T("Delete") );
+
     wxMenu *history_menu = new wxMenu;
     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();
     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 );
 }
 
     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 );
 
     if (!m_filename.empty())
         AddToHistory( m_filename );
-        
+
     size_t index = event.GetId() - ID_LAST_1;
     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 (!Discard()) return;
 
     m_text->Clear();
-    
+
     if (!m_filename.empty())
         AddToHistory( m_filename );
     if (!m_filename.empty())
         AddToHistory( m_filename );
-        
+
     m_filename = wxEmptyString;
     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;
 
     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__
     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() );
         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
         {
             m_text->SetLanguage( wxSOURCE_LANG_CPP );
         }
         else
-        if (fname.GetExt() == "py")
+        if (fname.GetExt() == _T("py"))
         {
             m_text->SetLanguage( wxSOURCE_LANG_PYTHON );
         }
         else
         {
             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 );
         }
         {
             m_text->SetLanguage( wxSOURCE_LANG_PYTHON );
         }
@@ -238,77 +252,86 @@ void MyFrame::OnOpen( wxCommandEvent &event )
         {
             m_text->SetLanguage( wxSOURCE_LANG_NONE );
         }
         {
             m_text->SetLanguage( wxSOURCE_LANG_NONE );
         }
+#endif
 #endif
 
         m_filename = dialog.GetPath();
         m_text->LoadFile( m_filename );
 #endif
 
         m_filename = dialog.GetPath();
         m_text->LoadFile( m_filename );
-    
+
+#if wxUSE_STATUSBAR
         SetStatusText( m_filename );
         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 (dialog.ShowModal() == wxID_OK)
     {
         m_filename = dialog.GetPath();
         m_text->SaveFile( m_filename );
-    
+
+#if wxUSE_STATUSBAR
         SetStatusText( m_filename );
         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();
 }
 
     dialog.ShowModal();
 }
 
-void MyFrame::OnQuit( wxCommandEvent &event )
+void MyFrame::OnQuit( wxCommandEvent& WXUNUSED(event) )
 {
 {
-     Close( TRUE );
+     Close( true );
 }
 
 bool MyFrame::Save()
 {
 }
 
 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())
     {
 }
 
 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();
         int ret = dialog.ShowModal();
-        
+
         if (ret == wxID_CANCEL)
         if (ret == wxID_CANCEL)
-            return FALSE;
-            
+            return false;
+
         if (ret == wxID_YES)
         {
             if (!Save())
         if (ret == wxID_YES)
         {
             if (!Save())
-                return FALSE;
+                return false;
         }
     }
         }
     }
-    
-    return TRUE;
+
+    return true;
 }
 
 void MyFrame::OnUpdateUI( wxUpdateUIEvent &event )
 }
 
 void MyFrame::OnUpdateUI( wxUpdateUIEvent &event )
@@ -316,48 +339,56 @@ void MyFrame::OnUpdateUI( wxUpdateUIEvent &event )
     switch (event.GetId())
     {
         case ID_COPY:
     switch (event.GetId())
     {
         case ID_COPY:
-            event.Enable( FALSE );
+            event.Enable( false );
             break;
         case ID_CUT:
             break;
         case ID_CUT:
-            event.Enable( FALSE );
+            event.Enable( false );
             break;
         case ID_PASTE:
             break;
         case ID_PASTE:
-            event.Enable( FALSE );
+            event.Enable( false );
             break;
         case ID_DELETE:
             break;
         case ID_DELETE:
+#ifdef __WXUNIVERSAL__
             event.Enable( m_text->HasSelection() );
             event.Enable( m_text->HasSelection() );
+#else
+            {
+              long selFrom, selTo;
+              m_text->GetSelection(& selFrom, & selTo);
+              event.Enable( selFrom != selTo );
+            }
+#endif
             break;
         default:
             break;
     }
 }
 
             break;
         default:
             break;
     }
 }
 
-void MyFrame::OnCloseWindow( wxCloseEvent &event )
+void MyFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
 {
     // Save changes?
 {
     // Save changes?
-    if (!Discard()) return;    
-    
+    if (!Discard()) return;
+
     // Add current to history
     if (!m_filename.empty())
         AddToHistory( m_filename );
 
     // Add current to history
     if (!m_filename.empty())
         AddToHistory( m_filename );
 
-    // Write .ini file    
+    // Write .ini file
     wxConfig *conf = (wxConfig*) wxConfig::Get();
     wxConfig *conf = (wxConfig*) wxConfig::Get();
-    
+
     int max = HISTORY_ENTRIES;
     if (m_history.GetCount() < (size_t)max)
         max = m_history.GetCount();
     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;
     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] );
     }
         conf->Write( tmp, m_history[(size_t)i] );
     }
-    
+
     // Flush and delete config
     delete wxConfig::Set( NULL );
 
     // Flush and delete config
     delete wxConfig::Set( NULL );
 
@@ -371,23 +402,21 @@ void MyFrame::OnCloseWindow( wxCloseEvent &event )
 
 IMPLEMENT_APP(MyApp)
 
 
 IMPLEMENT_APP(MyApp)
 
-MyApp::MyApp()
-{
-}
-
 bool MyApp::OnInit()
 {
 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;
+    if ( !wxApp::OnInit() )
+        return false;
+
+    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;
 }
 }
 
 int MyApp::OnExit()
 {
     return 0;
 }
-