00001 #ifndef _MAIN_WX_WINDOW_H_
00002 #define _MAIN_WX_WINDOW_H_
00003
00004
00005
00006 #include "wx/wxprec.h"
00007
00008 #ifdef __BORLANDC__
00009 #pragma hdrstop
00010 #endif
00011
00012 #ifndef WX_PRECOMP
00013 #include "wx/wx.h"
00014 #endif
00015
00016 #if !wxUSE_THREADS
00017 #error "This module requires thread support!"
00018 #endif // wxUSE_THREADS
00019
00020 #include "wx/thread.h"
00021 #include "wx/toolbar.h"
00022 #ifdef WIN32
00023 #include "../win/resource.h"
00024 #else
00025 #include "../wx/resource.h"
00026 #endif
00027
00028 #include"CutPlane.h"
00029 #include<vector>
00030
00031
00032
00033 class wxFileHistory;
00034 class wxToolBarToolBase;
00035 class wxToolBarBase;
00036
00037
00038 namespace FemViewer {
00039
00040 class GraphicsSettings;
00041 class ViewManager;
00042 class ModelCtrl;
00043
00044 namespace WxGUI {
00045
00046 wxDECLARE_EVENT(wxEVT_COMMAND_MYTHREAD_COMPLETED, wxThreadEvent);
00047 wxDECLARE_EVENT(wxEVT_COMMAND_MYTHREAD_UPDATE, wxThreadEvent);
00048
00049
00050
00051 class wxMainWindow;
00052 class wxRenderCanvas;
00053
00054 class RenderThread : public wxThread
00055 {
00056 public:
00057 RenderThread(wxMainWindow *pcanvas,unsigned delay = 16)
00058 : wxThread(wxTHREAD_DETACHED)
00059 , _handler(pcanvas)
00060 , _iRefreshDelay(delay)
00061 { ; }
00062 ~RenderThread();
00063
00064 protected:
00065 virtual void* Entry();
00066
00067 wxMainWindow* _handler;
00068 unsigned _iRefreshDelay;
00069 };
00070
00071
00072
00073
00074
00075 class wxMainWindow : public wxFrame
00076 {
00077 friend class RenderThread;
00078
00079 public:
00080
00081
00082 public:
00084 wxMainWindow(const int width,const int height,
00085 const wxChar * title);
00086 ~wxMainWindow(void);
00087
00088 void DoInit(int cmd = 0);
00089 void Update();
00090
00091
00092 void StartRenderThread();
00093 void DoPauseThread();
00094 void DoResumeThread();
00095 void OnThreadUpdate(wxThreadEvent& event);
00096 void OnThreadCompletion(wxThreadEvent& event);
00097
00098
00099
00100
00101
00102
00103
00104 protected:
00105
00106
00107
00108
00109 private:
00110
00111 ModelCtrl *m_pMCtrl;
00112
00113 ViewManager *m_pVMngr;
00114
00115 GraphicsSettings *m_gsettings;
00116
00117
00119 wxMenu *m_filemenu;
00120 wxMenu *m_viewmenu;
00121 wxMenu *m_cfgmenu;
00122 wxMenu *m_rendermenu;
00123 wxMenu *m_helpmenu;
00125 wxMenuBar *m_menubar;
00127 wxRenderCanvas *m_canvas;
00129 wxStatusBar *m_status;
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 #ifndef _USE_FV_LIB
00149 wxFileHistory *m_fhistory;
00150 #endif
00151 private:
00153 void OnChar(wxKeyEvent& event);
00154
00155 #ifndef _USE_FV_LIB
00156 void OnMenuFileOpen(wxCommandEvent& event);
00157 #endif
00158 void OnMenuFileRefresh(wxCommandEvent& event);
00159 void OnMenuFileReload(wxCommandEvent& event);
00160 void OnMenuFileReset(wxCommandEvent& event);
00161 void OnMenuFileHistory(wxCommandEvent& event);
00162 void OnMenuFileQuit(wxCommandEvent& event);
00163
00164
00165 void OnMenuViewProjection(wxCommandEvent& event);
00166 void OnMenuChangeView(wxCommandEvent& event);
00167 void OnMenuViewMode(wxCommandEvent& event);
00168 void OnMenuViewNew(wxCommandEvent& event);
00169 void OnMenuViewNext(wxCommandEvent& event);
00170 void OnMenuViewPrevious(wxCommandEvent& event);
00171 void OnMenuViewDumpCurr(wxCommandEvent& event);
00172 void OnMenuViewDumpAll(wxCommandEvent& event);
00173
00174
00175 void OnMenuConfigAxes(wxCommandEvent& event);
00176 void OnMenuConfigGrid(wxCommandEvent& event);
00177 void OnMenuConfigCutPlane(wxCommandEvent& event);
00178 void OnMenuConfigBkgColor(wxCommandEvent& event);
00179 void OnMenuConfigLight(wxCommandEvent& event);
00180 void OnMenuConfigReset(wxCommandEvent& event);
00181 void OnMenuConfigSave(wxCommandEvent& event);
00182 void OnMenuConfigLegendEdit(wxCommandEvent& event);
00183 void OnMenuConfigModuleApprox(wxCommandEvent& event);
00184
00185
00186 void OnMenuRenderSolutionSettings(wxCommandEvent& event);
00187 void OnMenuRenderDraw(wxCommandEvent& event);
00188 void OnMenuRenderDumpScreen(wxCommandEvent& event);
00189 void OnMenuRenderSettings(wxCommandEvent& event);
00190 void OnMenuRenderCutPlaneParams(wxCommandEvent& event);
00191 void OnUpdateMenuItemCutPlane(wxUpdateUIEvent& event);
00192
00193
00194 void OnMenuHelpAbout(wxCommandEvent& event);
00195
00196
00197 void OnToolLeftClick(wxCommandEvent& event);
00198
00199 void ScreenShot(const wxString& path);
00200 void OnIdle(wxIdleEvent &event);
00201 void OnCloseWindow(wxCloseEvent & event);
00202
00203
00204
00205 void CreateWndToolBar();
00206 void PopulateToolbar(wxToolBarBase* toolBar);
00207
00208
00209 void SetTitle(const wxString& title);
00210 void UpdateStatusBar();
00211
00212 wxDECLARE_EVENT_TABLE();
00213 };
00214
00215 }
00216 }
00217 #endif
00218