]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/dbbrowse/dbbrowse.cpp
1. use a manifest constant wxNO_LEN instead of -1 for lengths everywhere
[wxWidgets.git] / demos / dbbrowse / dbbrowse.cpp
index 6a8a70df5ea4cb4edc4f01cca0bbbcd2e6864fae..8f19fc8526ce6ca6b678235e2277932c9dedcf4d 100644 (file)
@@ -1,7 +1,7 @@
 //----------------------------------------------------------------------------------------
 // Name:        dbbrowse.cpp
 // Purpose:     Through ODBC - Databases Browsen
-// Author:      Mark Johnson, mj10777@gmx.net
+// Author:      Mark Johnson
 // Modified by:
 // BJO        : Bart A.M. JOURQUIN
 // Created:     19991127
@@ -9,13 +9,7 @@
 // Licence:     wxWindows license
 // RCS-ID:      $Id$
 //----------------------------------------------------------------------------------------
-//-- all #ifdefs that the whole Project needs. -------------------------------------------
-//----------------------------------------------------------------------------------------
-#ifdef __GNUG__
-#pragma implementation
-#pragma interface
-#endif
-//----------------------------------------------------------------------------------------
+
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 //----------------------------------------------------------------------------------------
@@ -26,6 +20,8 @@
 #ifndef WX_PRECOMP
 #include "wx/wx.h"
 #endif
+
+#include "wx/stockitem.h"
 //----------------------------------------------------------------------------------------
 #ifndef __WXMSW__
 #include "bitmaps/logo.xpm"
@@ -39,9 +35,9 @@
 //-- Some Global Vars for this file ------------------------------------------------------
 //----------------------------------------------------------------------------------------
 BEGIN_EVENT_TABLE(MainFrame, wxFrame)
-    EVT_MENU(QUIT, MainFrame::OnQuit)                  // Program End
-    EVT_MENU(ABOUT, MainFrame::OnAbout)                // Program Discription
-    EVT_MENU(HELP, MainFrame::OnHelp)                  // Program Help
+    EVT_MENU(wxID_EXIT, MainFrame::OnQuit)                  // Program End
+    EVT_MENU(wxID_ABOUT, MainFrame::OnAbout)                // Program Discription
+    EVT_MENU(wxID_HELP, MainFrame::OnHelp)                  // Program Help
 END_EVENT_TABLE()
 
 //----------------------------------------------------------------------------------------
@@ -55,8 +51,8 @@ bool MainApp::OnInit(void)  // Does everything needed for a program start
     wxString Temp0;            // Use as needed
     //---------------------------------------------------------------------------------------
     // set the language to use   // Help.??  (.std = english, .de = german etc.)
-    const char *language = NULL; // czech, german, french, polish
-    const char *langid   = NULL; // std = english , cz, de = german, fr = french, pl = polish
+    const wxChar *language = NULL; // czech, german, french, polish
+    const wxChar *langid   = NULL; // std = english , cz, de = german, fr = french, pl = polish
     wxString   s_LangHelp;       // Directory/Filename.hhp of the Help-Project file
     wxString   s_LangId, s_Language;
     s_Language.Empty(); s_LangId.Empty(); s_LangHelp.Empty();
@@ -91,20 +87,21 @@ bool MainApp::OnInit(void)  // Does everything needed for a program start
         langid   = argv[1];         // cz, std, fr, de , pl
         break;
     case 1:
+    case 0:
         break;
     };
     //---------------------------------------------------------------------------------------
     // Win-Registry : Workplace\HKEY_CURRENT_USERS\Software\%GetVendorName()\%GetAppName()
     //---------------------------------------------------------------------------------------
-    SetVendorName("mj10777");           // Needed to get Configuration Information
-    SetAppName("DBBrowse");            // "" , also needed for s_LangHelp
+    SetVendorName(_T("mj10777"));           // Needed to get Configuration Information
+    SetAppName(_T("DBBrowse"));             // "" , also needed for s_LangHelp
     //---------------------------------------------------------------------------------------
     // we're using wxConfig's "create-on-demand" feature: it will create the
     // config object when it's used for the first time. It has a number of
     // advantages compared with explicitly creating our wxConfig:
     //  1) we don't pay for it if we don't use it
     //  2) there is no danger to create it twice
-    
+
     // application and vendor name are used by wxConfig to construct the name
     // of the config file/registry key and must be set before the first call
     // to Get() if you want to override the default values (the application
@@ -112,81 +109,81 @@ bool MainApp::OnInit(void)  // Does everything needed for a program start
     //---------------------------------------------------------------------------------------
     p_ProgramCfg = wxConfigBase::Get();  // Get Program Configuration from Registry
     // p_ProgramCfg->DeleteAll();           // This is how the Config can be erased
-    p_ProgramCfg->SetPath("/");          // Start at root
+    p_ProgramCfg->SetPath(_T("/"));          // Start at root
     //---------------------------------------------------------------------------------------
     //-- Set the Language and remember it for the next time. --------------------------------
     //---------------------------------------------------------------------------------------
     if (langid == NULL) // No Parameter was given
     {
         Temp0.Empty();
-        p_ProgramCfg->Read("/Local/langid",&Temp0); // >const char *langid< can't be used here
-        if (Temp0 == "")
-            langid = "std";  // Standard language is "std" = english
+        p_ProgramCfg->Read(_T("/Local/langid"),&Temp0); // >const char *langid< can't be used here
+        if (Temp0.empty())
+            langid = _T("std");  // Standard language is "std" = english
         else
             langid = Temp0;
     }
-    Temp0.Printf("%s",langid);
+    Temp0.Printf(_T("%s"),langid);
     //---------------------------------------------------------------------------------------
     // Support the following languages  (std = english)
-    if ((Temp0 == "a")  || (Temp0 == "cz") || (Temp0 == "de") ||
-        (Temp0 == "fr") || (Temp0 == "pl"))
+    if ((Temp0 == _T("a"))  || (Temp0 == _T("cz")) || (Temp0 == _T("de")) ||
+        (Temp0 == _T("fr")) || (Temp0 == _T("pl")))
     { // The three-letter language-string codes are only valid in Windows NT and Windows 95.
-        if (Temp0 == "cz")
-            language = "czech";  // csy or czech
-        if ((Temp0 == "de") || (Temp0 == "a"))
+        if (Temp0 == _T("cz"))
+            language = _T("czech");  // csy or czech
+        if ((Temp0 == _T("de")) || (Temp0 == _T("a")))
         {
-            language = "german";  // deu or german
-            if (Temp0 == "a")
-            { langid = Temp0 = "de"; }  // Austrian = german
+            language = _T("german");  // deu or german
+            if (Temp0 == _T("a"))
+            { langid = Temp0 = _T("de"); }  // Austrian = german
         } // german / austrian
-        if (Temp0 == "fr")
-            language = "french";  // fra or french
-        if (Temp0 == "pl")
-            language = "polish";  // plk or polish
+        if (Temp0 == _T("fr"))
+            language = _T("french");  // fra or french
+        if (Temp0 == _T("pl"))
+            language = _T("polish");  // plk or polish
         if (!m_locale.Init(language, langid, language)) // Don't do this for english (std)
         { // You should recieve errors here for cz and pl since there is no cz/ and pl/ directory
-            wxLogMessage("-E-> %s : SetLocale error : langid(%s) ; language(%s)",GetAppName().c_str(),langid,language);
-            langid = "std";
-            language = "C";  // english, english-aus , -can , -nz , -uk , -usa
+            wxLogMessage(_T("-E-> %s : SetLocale error : langid(%s) ; language(%s)"),GetAppName().c_str(),langid,language);
+            langid = _T("std");
+            language = _T("C");  // english, english-aus , -can , -nz , -uk , -usa
         }
         else
         { // Read in Foreign language's text for GetAppName() and Help
             Temp0 = GetAppName();
             Temp0 = Temp0.Lower();
             m_locale.AddCatalog(Temp0.c_str());
-            m_locale.AddCatalog("help");
+            m_locale.AddCatalog(_T("help"));
         }
     } // Support the following languages  (std = english)
     else
     {
-        langid = "std";
-        language = "C";  // english, english-aus , -can , -nz , -uk , -usa
+        langid = _T("std");
+        language = _T("C");  // english, english-aus , -can , -nz , -uk , -usa
     }
-    s_Language.Printf("%s",language);                       // language is a pointer
-    s_LangId.Printf("%s",langid);                           // langid   is a pointer
-    p_ProgramCfg->Write("/Local/language",s_Language);
-    p_ProgramCfg->Write("/Local/langid",s_LangId);
-    s_LangHelp.Printf("help.%s/%s.hhp",s_LangId.c_str(),GetAppName().c_str()); // "help.std/Garantie.hhp";
+    s_Language.Printf(_T("%s"),language);                       // language is a pointer
+    s_LangId.Printf(_T("%s"),langid);                           // langid   is a pointer
+    p_ProgramCfg->Write(_T("/Local/language"),s_Language);
+    p_ProgramCfg->Write(_T("/Local/langid"),s_LangId);
+    s_LangHelp.Printf(_T("help.%s/%s.hhp"),s_LangId.c_str(),GetAppName().c_str()); // "help.std/Garantie.hhp";
     s_LangHelp = s_LangHelp.Lower();                       // A must for Linux
     //---------------------------------------------------------------------------------------
-    Temp0 = "NONE";                               // I don't remember why I did this
-    p_ProgramCfg->Write("/NONE",Temp0);           // I don't remember why I did this
-    p_ProgramCfg->Write("/Paths/NONE",Temp0);     // I don't remember why I did this
-    p_ProgramCfg->Write("/MainFrame/NONE",Temp0); // I don't remember why I did this
+    Temp0 = _T("NONE");                               // I don't remember why I did this
+    p_ProgramCfg->Write(_T("/NONE"),Temp0);           // I don't remember why I did this
+    p_ProgramCfg->Write(_T("/Paths/NONE"),Temp0);     // I don't remember why I did this
+    p_ProgramCfg->Write(_T("/MainFrame/NONE"),Temp0); // I don't remember why I did this
     //---------------------------------------------------------------------------------------
-    p_ProgramCfg->Write("/Paths/Work",wxGetCwd()); // Get current Working Path
-    p_ProgramCfg->SetPath("/");
+    p_ProgramCfg->Write(_T("/Paths/Work"),wxGetCwd()); // Get current Working Path
+    p_ProgramCfg->SetPath(_T("/"));
     //---------------------------------------------------------------------------------------
     // restore frame position and size, if empty start Values (1,1) and (750,600)
-    int x = p_ProgramCfg->Read("/MainFrame/x", 1), y = p_ProgramCfg->Read("/MainFrame/y", 1),
-        w = p_ProgramCfg->Read("/MainFrame/w", 750), h = p_ProgramCfg->Read("/MainFrame/h", 600);
+    int x = p_ProgramCfg->Read(_T("/MainFrame/x"), 1), y = p_ProgramCfg->Read(_T("/MainFrame/y"), 1),
+        w = p_ProgramCfg->Read(_T("/MainFrame/w"), 750), h = p_ProgramCfg->Read(_T("/MainFrame/h"), 600);
     //---------------------------------------------------------------------------------------
     // Create the main frame window
-    Temp0.Printf("%s - %s",GetAppName().c_str(),GetVendorName().c_str());
-    frame = new MainFrame((wxFrame *) NULL,(char *) Temp0.c_str(),wxPoint(x,y),wxSize(w,h));
+    Temp0.Printf(_T("%s - %s"),GetAppName().c_str(),GetVendorName().c_str());
+    frame = new MainFrame((wxFrame *) NULL,(wxChar *) Temp0.c_str(),wxPoint(x,y),wxSize(w,h));
     //---------------------------------------------------------------------------------------
-    // Set the Backgroundcolour (only need if your are NOT using wxSYS_COLOUR_BACKGROUND)
-    frame->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BACKGROUND));
+    // Set the Backgroundcolour (only needed if you are NOT using wxSYS_COLOUR_BACKGROUND)
+    frame->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BACKGROUND));
     // frame->SetBackgroundColour(wxColour(255, 255, 255));
     // frame->SetBackgroundColour(* wxWHITE);
     //---------------------------------------------------------------------------------------
@@ -206,31 +203,33 @@ bool MainApp::OnInit(void)  // Does everything needed for a program start
     // Make a menubar
     wxMenu *file_menu = new wxMenu;
     wxMenu *help_menu = new wxMenu;
-    
-    help_menu->Append(HELP, _("&Help"));
+
+    help_menu->Append(wxID_HELP, wxGetStockLabel(wxID_HELP));
     help_menu->AppendSeparator();
-    help_menu->Append(ABOUT, _("&About"));
-    file_menu->Append(QUIT, _("E&xit"));
-    
+    help_menu->Append(wxID_ABOUT, _("&About"));
+    file_menu->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT));
+
     wxMenuBar *menu_bar = new wxMenuBar;
     menu_bar->Append(file_menu, _("&File"));
     menu_bar->Append(help_menu, _("&Help"));
     frame->SetMenuBar(menu_bar);
+#if wxUSE_STATUSBAR
     frame->CreateStatusBar(1);
     Temp0.Printf(_("%s has started !"),p_ProgramCfg->GetAppName().c_str());
     frame->SetStatusText(Temp0, 0);
+#endif // wxUSE_STATUSBAR
     //---------------------------------------------------------------------------------------
     int width, height;
     frame->GetClientSize(&width, &height);
     //---------------------------------------------------------------------------------------
-    frame->p_Splitter = new DocSplitterWindow(frame,-1);
+    frame->p_Splitter = new DocSplitterWindow(frame,wxID_ANY);
     // p_Splitter->SetCursor(wxCursor(wxCURSOR_PENCIL));
     frame->pDoc                       = new MainDoc();
     frame->pDoc->p_MainFrame          = frame;
     frame->pDoc->p_Splitter           = frame->p_Splitter;
     frame->pDoc->p_Splitter->pDoc     = frame->pDoc;       // ControlBase: saving the Sash
     //---------------------------------------------------------------------------------------
-    //-- Problem : GetClientSize(Width,Hight) are not the same as the values given in the ---
+    //-- Problem : GetClientSize(Width,Height) are not the same as the values given in the ---
     //--            construction of the Frame.                                            ---
     //-- Solved  : GetClientSize is called here and the difference is noted. When the     ---
     //--           Window is closed the diff. is added to the result of GetClientSize.    ---
@@ -244,27 +243,27 @@ bool MainApp::OnInit(void)  // Does everything needed for a program start
     // You should recieve errors here for fr since there is no help.fr/ directory
     if (!frame->p_Help->AddBook(s_LangHelp))      // Use the language set
     { // You should recieve errors here for fr since there is no help.fr/ but a fr/ directory
-        wxLogMessage("-E-> %s : AddBook error : s_LangHelp(%s)",GetAppName().c_str(),s_LangHelp.c_str());
+        wxLogMessage(_T("-E-> %s : AddBook error : s_LangHelp(%s)"),GetAppName().c_str(),s_LangHelp.c_str());
     }
     frame->pDoc->p_Help = frame->p_Help;          // Save the information to the document
     //---------------------------------------------------------------------------------------
-    frame->Show(TRUE);                            // Show the frame
+    frame->Show(true);                            // Show the frame
     SetTopWindow(frame);                          // At this point the frame can be seen
     //---------------------------------------------------------------------------------------
     // If you need a "Splash Screen" because of a long OnNewDocument, do it here
     if (!frame->pDoc->OnNewDocument())
-        frame->Close(TRUE);
+        frame->Close(true);
     // Kill a "Splash Screen" because OnNewDocument, if you have one
     //---------------------------------------------------------------------------------------
-    p_ProgramCfg->Flush(TRUE);        // save the configuration
-    return TRUE;
+    p_ProgramCfg->Flush(true);        // save the configuration
+    return true;
 } // bool MainApp::OnInit(void)
 
 //----------------------------------------------------------------------------------------
 // My frame constructor
 //----------------------------------------------------------------------------------------
-MainFrame::MainFrame(wxFrame *frame, char *title,  const wxPoint& pos, const wxSize& size):
-wxFrame(frame, -1, title,  pos, size)
+MainFrame::MainFrame(wxFrame *frame, wxChar *title,  const wxPoint& pos, const wxSize& size):
+wxFrame(frame, wxID_ANY, title,  pos, size)
 {
     p_Splitter = NULL; pDoc = NULL; p_Help = NULL;    // Keep the Pointers clean !
     //--- Everything else is done in MainApp::OnInit() --------------------------------------
@@ -275,7 +274,7 @@ MainFrame::~MainFrame(void)
 {
     // Close the help frame; this will cause the config data to get written.
     if (p_Help->GetFrame()) // returns NULL if no help frame active
-        p_Help->GetFrame()->Close(TRUE);
+        p_Help->GetFrame()->Close(true);
     delete p_Help;  // Memory Leak
     p_Help = NULL;
     // save the control's values to the config
@@ -285,16 +284,16 @@ MainFrame::~MainFrame(void)
     int x, y, w, h;
     GetPosition(&x, &y);
     GetClientSize(&w, &h); w -= DiffW; h -= DiffH;
-    p_ProgramCfg->Write("/MainFrame/x", (long) x);
-    p_ProgramCfg->Write("/MainFrame/y", (long) y);
-    p_ProgramCfg->Write("/MainFrame/w", (long) w);
-    p_ProgramCfg->Write("/MainFrame/h", (long) h);
-    p_ProgramCfg->Write("/MainFrame/Sash", (long) pDoc->Sash);
+    p_ProgramCfg->Write(_T("/MainFrame/x"), (long) x);
+    p_ProgramCfg->Write(_T("/MainFrame/y"), (long) y);
+    p_ProgramCfg->Write(_T("/MainFrame/w"), (long) w);
+    p_ProgramCfg->Write(_T("/MainFrame/h"), (long) h);
+    p_ProgramCfg->Write(_T("/MainFrame/Sash"), (long) pDoc->Sash);
     // clean up: Set() returns the active config object as Get() does, but unlike
     // Get() it doesn't try to create one if there is none (definitely not what
     // we want here!)
     // delete wxConfigBase::Set((wxConfigBase *) NULL);
-    p_ProgramCfg->Flush(TRUE);        // saves   Objekt
+    p_ProgramCfg->Flush(true);        // saves   Objekt
     if (pDoc)                         // If we have a Valid Document
         delete pDoc;                     // Cleanup (MainDoc::~MainDoc)
 } // MainFrame::~MainFrame(void)
@@ -302,14 +301,14 @@ MainFrame::~MainFrame(void)
 //----------------------------------------------------------------------------------------
 void MainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
 {
-    Close(TRUE);
+    Close(true);
 }
 
 //----------------------------------------------------------------------------------------
 void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
     wxString Temp0, Temp1;
-    Temp0.Printf(_("%s\nMark Johnson\nBerlin, Germany\nmj10777@gmx.net\n (c) 2000"),p_ProgramCfg->GetAppName().c_str());
+    Temp0.Printf(_("%s\nMark Johnson\nBerlin, Germany\nwxWindows@mj10777.de\n (c) 2000"),p_ProgramCfg->GetAppName().c_str());
     Temp1.Printf(_("About %s"),p_ProgramCfg->GetAppName().c_str());
     wxMessageDialog dialog(this, Temp0,Temp1,wxOK|wxCANCEL);
     dialog.ShowModal();
@@ -318,6 +317,6 @@ void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 //----------------------------------------------------------------------------------------
 void MainFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
 {
-    p_Help->Display("Main page");
+    p_Help->Display(_T("Main page"));
 }
 //----------------------------------------------------------------------------------------