00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __HippFrame__
00022 #define __HippFrame__
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <wx/wx.h>
00032 #include <wx/propdlg.h>
00033 #include <wx/bookctrl.h>
00034 #include <wx/docview.h>
00035 #include <wx/spinctrl.h>
00036 #include <wx/config.h>
00037 #include <wx/confbase.h>
00038
00039 #include "WxWidgetsWindow.h"
00040 #include <H3D/GlobalSettings.h>
00041 #include <H3D/StereoInfo.h>
00042
00043 #include <H3D/Group.h>
00044 #include <H3D/Transform.h>
00045 #include <H3D/Scene.h>
00046 #include <H3D/KeySensor.h>
00047 #include <H3D/SpaceWareSensor.h>
00048 #include <H3D/DeviceInfo.h>
00049 #include <H3D/ResourceResolver.h>
00050 #include <H3D/NavigationInfo.h>
00051 #include <H3D/X3D.h>
00052
00053 #include <H3DUtil/Console.h>
00054
00055 #include "ConsoleDialog.h"
00056 #include "H3DViewerTreeViewDialog.h"
00057 #include "H3DViewerConfig.h"
00058 #include "WxFrameBase.h"
00059 #include "HippConsole.h"
00060 #include <wx/log.h>
00061 #include "FrameRateDialog.h"
00062 #include "PreferencesDialog.h"
00063
00064
00065 using namespace std;
00066 using namespace H3D;
00067
00068 namespace hipp {
00069
00090 class HippFrame: public WxFrameBase
00091 {
00092 DECLARE_CLASS(HippFrame)
00093 public:
00094 HippFrame(wxDocManager *manager, wxFrame *_parent, wxWindowID _id, const wxString & _title, const wxPoint & _pos, const wxSize & _size, long _style = wxDEFAULT_FRAME_STYLE);
00095 wxMenu *helpMenu, *navigationDevices;
00096 wxFileHistory *recentFiles;
00097 void clearData();
00098 void OnMRUFile(wxCommandEvent & event);
00099 void OnOpenFileURL(wxCommandEvent & event);
00100 void OnBackground(wxCommandEvent & event);
00101 void OnHapticBackground(wxCommandEvent & event);
00102 bool getHapticBackgroundEnable() const;
00103 void OnToggle(wxCommandEvent & event);
00104 void OnThicknessReduce(wxCommandEvent & event);
00105 void OnThicknessIncrease(wxCommandEvent & event);
00106 void OnExit(wxCommandEvent & event);
00107 void OnCopy(wxCommandEvent & event);
00108 void OnPaste(wxCommandEvent & event);
00109 void OnCut(wxCommandEvent & event);
00110 void OnDelete(wxCommandEvent & event);
00111 void OnSelectNone(wxCommandEvent & event);
00112 void OnClear(wxCommandEvent & event);
00113 void OnWindowExit(wxCloseEvent & event);
00114 void OnAbout(wxCommandEvent & event);
00115 void ShowConsole(wxCommandEvent & event);
00116 void ShowTreeView(wxCommandEvent & event);
00117 void ShowFrameRate(wxCommandEvent & event);
00118 void ShowCppLog(wxCommandEvent & event);
00119 void ShowPreferences(wxCommandEvent & event);
00120 void GetSelection(wxMenuEvent & event);
00121
00122
00123 void OnChangeVPHorizontal(wxCommandEvent& event);
00124 void OnChangeVPVertical(wxCommandEvent& event);
00125 void OnChangeVPEasel(wxCommandEvent& event);
00126 void OnChangeVPSlanted(wxCommandEvent& event);
00127 void SetDrawingBoardAngle (int draw_angle);
00128
00129 wxString GetCurrentFilename();
00130 void SetCurrentFilename(wxString);
00131
00132
00133 void DoUpdateSelectedCurveStatus(wxCommandEvent & event);
00134 void UpdateStatusBar(wxString str);
00135
00136
00137 void OnProperties(wxCommandEvent & event);
00138 void OnEnlarge(wxCommandEvent& event);
00139 void OnShrink(wxCommandEvent& event);
00140 void OnScale(wxCommandEvent& event);
00141 void OnFill(wxCommandEvent& event);
00142 void OnMoveRight(wxCommandEvent& event);
00143 void OnMoveLeft(wxCommandEvent& event);
00144 void OnMoveUp(wxCommandEvent& event);
00145 void OnMoveDown(wxCommandEvent& event);
00146 void OnTransformToRectangle(wxCommandEvent& event);
00147 void OnTransformToCircle(wxCommandEvent& event);
00148 void OnTransformToLine(wxCommandEvent & event);
00149 void OnTransformToVLine(wxCommandEvent & event);
00150 void OnTransformToHLine(wxCommandEvent & event);
00151 void OnOrder(wxCommandEvent & event);
00152
00153 H3DWindowNode *getGlWindow() const
00154 {
00155 return glwindow;
00156 }
00157
00158 void updateFrameRates()
00159 {
00160 frameRates->updateFrameRates();
00161 }
00162
00163 bool getPrintModeBW(){
00164 return file_print_options->IsChecked(hippID_BW);
00165 }
00166
00167 inline wxMenuBar *getMenuBar()
00168 {
00169 return menuBar;
00170 }
00171
00172 inline wxMenu *getEditMenu()
00173 {
00174 return editMenu;
00175 }
00176
00177 inline AutoRef<Transform> getTransform(){
00178 return t;
00179 }
00180
00181 inline void ClearSceneGraph(){
00182 t->children->clear();
00183 viewpoint.reset(NULL);
00184 }
00185
00186
00187 bool* getPenWhitePtr() const;
00188 int* getPenWidthPtr() const;
00189 void savePenColour(bool b);
00190 void savePenWidth(int width);
00191 bool* togglePenColour();
00192
00193 AutoRef<Scene> scene;
00194 AutoRef<KeySensor> ks;
00195 AutoRef<SpaceWareSensor> ss;
00196 AutoRef<Transform> t;
00197
00198 AutoRef<Node> viewpoint;
00199 AutoRef<Group> g;
00200 AutoRef<GlobalSettings> global_settings;
00201
00202 private:
00203 void LoadH3D();
00204 WxWidgetsWindow *glwindow;
00205 AutoRef<StereoInfo> stereo_info;
00206 NavigationInfo *mynav;
00207 DeviceInfo *mydevice;
00208 bool lastDeviceStatus;
00209 wxConfigBase *h3dConfig;
00210 HippConsole *console;
00211 wxLogTextCtrl *logger;
00212 wxLogChain *logChain;
00213 int selection;
00214 int navTypeCount;
00215 int deviceCount;
00216 H3DHapticsDevice *myH3Ddevice;
00217 string stylus_file;
00218 bool avatar_collision;
00219 bool hapticBackgroundEnable;
00220 bool* penWhitePtr;
00221 bool penWhite;
00222 int* penWidthPtr;
00223 int penWidth;
00224
00225 public:
00226 consoleDialog * theConsole;
00227 H3DViewerTreeViewDialog * tree_view_dialog;
00228 FrameRateDialog * frameRates;
00229 wxLogWindow * cppLog;
00230 PreferencesDialog *preferences_dialog;
00231
00232
00233
00234
00235 friend class HippView;
00236
00237 map< int, X3DViewpointNode * > itemIdViewpointMap;
00238
00239 protected:
00240 DECLARE_EVENT_TABLE()
00241 virtual void OnOpenFile( wxCommandEvent& event );
00242 };
00243
00244 enum
00245 { FRAME_EXIT = wxID_HIGHEST + 1,
00246 FRAME_OPEN,
00247 FRAME_OPEN_URL,
00248 FRAME_CLOSE,
00249 FRAME_CHOOSEDIR,
00250 FRAME_FULLSCREEN,
00251 FRAME_RESTORE,
00252 FRAME_MIRROR,
00253 FRAME_CONSOLE,
00254 FRAME_TREEVIEW,
00255 FRAME_FRAMERATE,
00256 FRAME_SELECTION,
00257 FRAME_VIEWPOINT,
00258
00259
00260 FRAME_VERTICAL_BOARD,
00261 FRAME_HORIZONTAL_BOARD,
00262 FRAME_EASEL_BOARD,
00263 FRAME_SLANTED_BOARD,
00264
00265 FRAME_NAVIGATION = 6500,
00266 FRAME_DEVICE = 6550,
00267 FRAME_CHOOSERENDERER = 6600,
00268 FRAME_OPENHAPTICS,
00269 FRAME_CHAI3D,
00270 FRAME_GODOBJECT,
00271 FRAME_RUSPINI,
00272 FRAME_RENDERMODE,
00273 FRAME_MONO,
00274 FRAME_QUADBUFFERED,
00275 FRAME_HORZSPLIT,
00276 FRAME_HORZSPLITKEEPASPECT,
00277 FRAME_VERTSPLIT,
00278 FRAME_VERTSPLITKEEPASPECT,
00279 FRAME_HORZINTERLACED,
00280 FRAME_VERTINTERLACED,
00281 FRAME_CHECKERINTERLACED,
00282 FRAME_SHARPDISPLAY,
00283 FRAME_REDBLUE,
00284 FRAME_REDGREEN,
00285 FRAME_REDCYAN,
00286 FRAME_DEVICECONTROL,
00287 FRAME_HAPTICSCONTROL,
00288
00289 FRAME_COPY,
00290 FRAME_PASTE,
00291 FRAME_CUT,
00292 FRAME_BACKGROUND
00293 };
00294 }
00295 #endif // __HippFrame__