00001 #ifndef __main__
00002 #define __main__
00003 
00004 #include <osg/Node>
00005 #include <wx/wx.h>
00006 #include <wx/progdlg.h>
00007 #include <wx/splash.h>
00008 #include <osgDB/ReadFile>
00009 #include "util.h"
00010 #include "IController.h"
00011 #include "MainFrame.h"
00012 #include "SceneManager.h"
00013 #include "IToolController.h"
00014 #include "IContextMenuController.h"
00015 #include "CameraManipulator.h"
00016 #include "FreeformCameraController.h"
00017 #include "MountedCameraController.h"
00018 #include "XMLIO.h"
00019 #include "SelectToolController.h"
00020 #include "TranslationToolController.h"
00021 #include "RotationToolController.h"
00022 #include "ScaleToolController.h"
00023 #include "ContextMenuController.h"
00024 #include "InsertObjectController.h"
00025 
00026 
00027 
00028 class App: public wxApp, IController  {
00029 public:
00030         
00031         
00032 
00033         App();
00034         ~App();
00035 
00036     virtual bool OnInit();
00037         virtual int OnExit();
00038 
00039         void preloadData(wxProgressDialog* progressDialog);
00040 
00041 
00042         
00043 
00044         void onOpen();
00045         void onExit();
00046 
00047         void onNoTool();
00048         void onSelectTool();
00049         void onRotationTool();
00050         void onTranslationTool();
00051         void onScaleTool();
00052         void onInsertTool(osg::Node* model, const char* fileName);
00053 
00054         void onInsertSceneObject(const char* fileName);
00055         void onModelPreview(const char* fileName);
00056 
00057         void onImportXMLScene();
00058         void onEmportXMLScene();
00059 
00060         void onCanvasMouseLeftUp(int x, int y);
00061         void onCanvasMouseLeftDown(int x, int y);
00062 
00063     void onCanvasMouseMiddleUp(int x, int y);
00064         void onCanvasMouseMiddleDown(int x, int y);
00065 
00066         void onCanvasMouseRightUp(int x, int y);
00067         void onCanvasMouseRightDown(int x, int y);
00068 
00069         void onCanvasMouseMove(int x, int y);
00070         void onCanvasMouseWheel(int x, int y, int d);
00071 
00072         void onCanvasKeyUp(int key);
00073         void onCanvasKeyDown(int key);
00074 
00075 protected:
00076         XMLIO *_XMLParser;
00077 
00078     ICameraController*          _activeCameraController;
00079         IToolController*            _activeToolController;
00080         IContextMenuController*     _contextMenuController;
00081 
00082     FreeformCameraController*   _freeformCameraController;
00083     MountedCameraController*    _mountedCameraController;
00084 
00085         MainFrame*      _mainFrame;
00086 
00087         SceneManager&   _sceneManager;
00088 
00089     map<string, osg::ref_ptr<osg::Node>> _objectNodes;
00090 
00091     bool _insertMode;
00092 };
00093 
00094 
00095 #endif