Main Page | Class List | File List | Class Members | Related Pages

app.cpp

00001 /***************************************************************************
00002                            app.cpp
00003                            -------------------
00004     begin                : 2004-05-30 10:30
00005     copyright            : (C) 2004-2005 by Michael Menne
00006     email                : menne@users.sourceforge.net
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  This program is free software; you can redistribute it and/or
00011  modify it under the terms of the GNU General Public License
00012  as published by the Free Software Foundation; either version 2
00013  of the License, or (at your option) any later version.
00014 
00015  This program is distributed in the hope that it will be useful,
00016  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  GNU General Public License for more details.
00019 
00020  You should have received a copy of the GNU General Public License
00021  along with this program; if not, write to the Free Software
00022  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00023  ***************************************************************************/
00024 
00025 #include "app.h"
00026 #include "frame.h"
00027 #include "map.h"
00028 #include "profilemanager.h"
00029 
00030 ofstream logFile("log.txt");
00031 
00032 
00033 #ifndef WIN32
00034 
00035 // expand macro by hand...
00036 wxApp *wxCreateApp()
00037 {
00038     wxApp::CheckBuildOptions( wxBuildOptions() );
00039     return new WDS::CApp;
00040 }
00041 
00042 wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp);
00043 WDS::CApp& WDS::wxGetApp() { return *(WDS::CApp *)wxTheApp; }
00044 
00045 extern int wxEntry( int argc, char **argv );
00046 int main(int argc, char **argv) { return wxEntry(argc, argv); }
00047 
00048 #endif
00049 
00050 namespace WDS
00051 {
00052 
00053 #ifdef WIN32
00054 IMPLEMENT_APP(CApp)
00055 #endif
00056 
00057 bool CApp::OnInit()
00058 {
00059     // PNG unbd ICON Unterstuetzung anschalten
00060     wxImage::AddHandler( new wxPNGHandler );
00061     wxImage::AddHandler( new wxICOHandler );
00062 
00063     // Name der Applikation setzen
00064     SetAppName( "WDSMap" );
00065 
00066 
00067     // Configdatei laden - wxConfig
00068     m_pConfig = new wxFileConfig( GetAppName(), "GMDSoft", "config.cfg", "", wxCONFIG_USE_RELATIVE_PATH  );
00069     wxConfigBase::Set( m_pConfig );
00070 
00071     m_pConfig->SetPath("/General");
00072 
00073     // Breite und Höhe des Frames setzen
00074     int  nWidth     = m_pConfig->Read( "window_width",     800 );
00075     int  nHeight    = m_pConfig->Read( "window_height",    600 );
00076     bool bMaximized = m_pConfig->Read( "window_maximized", 0L  )!=0L;   // Trick zum Laden von bool
00077 
00078     // Load profiles
00079     // NOTE: This MUST happen BEFORE m_pFrame is created,
00080     // because CFrame will use the ProfileManager immediately.
00081     m_pProfileManager = new CProfileManager( m_pConfig );
00082 
00083 
00084     // Neues Frame mit Breite und Höhe aus der Configsatei erstellen
00085     m_pFrame = new CFrame( "WDS Maptool by Smir, Accolon & Isdir", 0, 0, nWidth, nHeight );
00086 
00087     // Pruefen ob das Fenster maximiert angezeigt werden soll
00088     if( bMaximized )
00089     {
00090         m_pFrame->Maximize( true );
00091     }
00092     else
00093     {
00094         m_pFrame->Center();
00095     }
00096 
00097     // Frame anzeigen
00098     m_pFrame->Show(TRUE);
00099     SetTopWindow(m_pFrame);
00100 
00101     // Frame initialisiren. Erst nachdem es mit Show angezeigt wurde!
00102     // Sonst bekommen wir keinen OpenGL Kontext.
00103     m_pFrame->Init( );
00104 
00105     return true;
00106 }
00107 
00108 int CApp::OnExit()
00109 {
00110     // Configdatei neu schreiben
00111     m_pConfig->SetPath("/General");
00112 
00113     // TODO: Werte auslesen und schreiben
00114 //  m_pConfig->Write( "show_town_names", true  );
00115 //  m_pConfig->Write( "hide_town_names", 0.25f ); // TODO: Bloeder Name.
00116 
00117     // save profiles
00118     m_pProfileManager->save();
00119 
00120     // Config Datei löschen. Wird dabei geflushed
00121     if( m_pConfig != NULL )
00122         delete m_pConfig;
00123 
00124     return 0;
00125 }
00126 
00127 CFrame* CApp::GetFrame()
00128 {
00129     return m_pFrame;
00130 }
00131 
00132 CMap* CApp::GetMap()
00133 {
00134     return GetFrame()->GetMap();
00135 }
00136 
00137 CProfileManager* CApp::GetProfileManager()
00138 {
00139     return m_pProfileManager;
00140 }
00141 
00142 }
00143 
00144 // kate: space-indent off; tab-width 4; replace-tabs off;

Generated on Sun Jan 16 18:20:26 2005 for WDSMap by  doxygen 1.3.9.1