00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __A2DCANVASEDIT_H__
00013 #define __A2DCANVASEDIT_H__
00014
00015
00016 #ifndef WX_PRECOMP
00017 #include "wx/wx.h"
00018 #endif
00019
00020 #include "wx/txtstrm.h"
00021
00022 #include "a2dprivate.h"
00023
00024 #include "wx/canvas/canmod.h"
00025 #include "wx/editor/sttool.h"
00026 #include "wx/editor/edit.h"
00027 #include "wx/editor/styledialg.h"
00028 #include "wx/editor/strucdlg.h"
00029 #include "wx/editor/tooldlg.h"
00030 #include "wx/editor/doccancom.h"
00031
00032
00033 class A2DEDITORDLLEXP a2dEditorMultiFrameViewConnector : public a2dFrameViewConnector
00034 {
00035 DECLARE_CLASS( a2dEditorMultiFrameViewConnector )
00036 A2D_DECLARE_EVENT_TABLE()
00037
00038 public:
00039
00040 a2dEditorMultiFrameViewConnector( wxClassInfo *EditorClassInfo = (wxClassInfo *) NULL );
00041
00042 void OnPostCreateDocument( a2dTemplateEvent& event );
00043
00044
00045 void OnPostCreateView( a2dTemplateEvent& event );
00046
00047
00048 wxClassInfo* m_editorClassInfo;
00049 };
00050
00051
00052 extern const long TOOLOPTION_FIRST;
00053 extern const long TOOLOPTION_ONTOP;
00054 extern const long TOOLOPTION_RECTANGLE;
00055 extern const long TOOLOPTION_REDRAW;
00056 extern const long TOOLOPTION_COPY;
00057
00058 extern const long TOOLOPTION_FILLED;
00059 extern const long TOOLOPTION_WIRE;
00060 extern const long TOOLOPTION_INVERT;
00061 extern const long TOOLOPTION_WIRE_ZERO_WIDTH;
00062 extern const long TOOLOPTION_INVERT_ZERO_WIDTH;
00063 extern const long TOOLOPTION_LAST;
00064
00065
00066 extern const long MSHOW_T;
00067 extern const long MSHOW_FIRST;
00068 extern const long MSHOW_LIBPOINTS;
00069 extern const long MSHOW_LIB;
00070 extern const long MSHOW_LAST;
00071
00072
00073
00074 extern const long Layer_view;
00075
00076 class A2DEDITORDLLEXP a2dEditorFrame;
00077
00078
00079
00080
00081
00082
00083
00084
00085 class A2DGENERALDLLEXP a2dEditorFrameEvent: public wxEvent
00086 {
00087 public:
00088 a2dEditorFrameEvent( a2dEditorFrame* editorFrame, wxEventType type, int id = 0 );
00089
00090 a2dEditorFrame* GetEditorFrame() const;
00091
00092 wxEvent* Clone(void) const;
00093 };
00094
00095 BEGIN_DECLARE_EVENT_TYPES()
00096
00097 DECLARE_EXPORTED_EVENT_TYPE( A2DEDITORDLLEXP, a2dEVT_THEME_EVENT, 1 )
00098 DECLARE_EXPORTED_EVENT_TYPE( A2DEDITORDLLEXP, a2dEVT_INIT_EVENT, 1 )
00099 END_DECLARE_EVENT_TYPES()
00100
00101 typedef void ( wxEvtHandler::*a2dEditorFrameEventFunction ) ( a2dEditorFrameEvent& );
00102
00103 #define a2dEditorFrameEventHandler(func) \
00104 (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(a2dEditorFrameEventFunction, &func)
00105
00106
00107
00108
00109
00110
00111 #define EVT_THEME_EVENT(func) wx__DECLARE_EVT0( a2dEVT_THEME_EVENT, a2dEditorFrameEventHandler( func ))
00112 #define EVT_INIT_EVENT(func) wx__DECLARE_EVT0( a2dEVT_INIT_EVENT, a2dEditorFrameEventHandler( func ))
00113
00114
00115
00116
00117 class A2DEDITORDLLEXP a2dEditorFrame : public a2dDocumentFrame
00118 {
00119
00120 public:
00121
00122 typedef void (a2dEditorFrame::*wxObjectEventFunctionM)(wxCommandEvent&);
00123
00124 public:
00125
00126 DECLARE_DYNAMIC_CLASS(a2dEditorFrame)
00127
00128
00129
00130
00131
00132
00133
00134
00135 a2dEditorFrame();
00136
00137 a2dEditorFrame( bool isParent, a2dCanvasView* drawer, wxFrame* parent,
00138 const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE);
00139
00140
00141
00142
00143
00144 bool Create( bool createCanvas, bool isParent, a2dCanvasView* drawer, wxFrame* parent,
00145 const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE);
00146
00147
00148 void Init();
00149
00150 void Theme( const wxString& themeName = wxT("default") );
00151
00152 ~a2dEditorFrame();
00153
00154 virtual void CreateStatusBarThemed( const wxString& themeName = wxT("default") );
00155
00156 void SetupToolbar();
00157
00158
00159 wxMenu* GetEditMenu() { return m_editMenu; }
00160
00161 void Update();
00162
00163 void ConnectDocument( a2dCanvasDocument* doc, a2dCanvasView* drawer = NULL );
00164
00165 a2dCanvas* GetCanvas() { return (a2dCanvas*) m_view->GetDisplayWindow(); }
00166
00167
00168 a2dStToolContr* GetToolController() { return m_contr; }
00169
00170
00171 void SetToolController( a2dStToolContr* contr ) { m_contr = contr; }
00172
00173
00174
00175
00176
00177
00178
00179
00180 void AddFunctionToMenu( int id, wxMenu* parentMenu, const wxString& text, const wxString& helpString, wxObjectEventFunctionM func, bool check = false );
00181
00182 void RemoveFromMenu( int id, wxMenu* parentMenu, wxObjectEventFunctionM func );
00183
00184 void SetToolDragingMode( wxCommandEvent& event );
00185
00186 void SetToolDrawingMode( wxCommandEvent& event );
00187
00188 void OnUndoEvent( a2dCommandProcessorEvent& event );
00189
00190 void OnDoEvent( a2dCommandProcessorEvent& event );
00191
00192
00193 void OnActivate(wxActivateEvent& event);
00194
00195
00196 void OnSetmenuStrings( a2dCommandProcessorEvent& event );
00197
00198
00199 void OnCloseWindow(wxCloseEvent& event);
00200
00201 void OnComEvent( a2dComEvent& event );
00202
00203
00204 a2dSmrtPtr<a2dStToolContr> m_contr;
00205
00206 void OnUndo(wxCommandEvent& event);
00207 void OnRedo(wxCommandEvent& event);
00208
00209 void Quit(wxCommandEvent& event);
00210
00211 void OnAbout( wxCommandEvent &event );
00212
00213 void ShowLibs(wxCommandEvent &event);
00214
00215 void PlaceFromLibByRef();
00216 void PlaceFromLibByCopy();
00217
00218 void OnMenu(wxCommandEvent &event);
00219
00220 void CreateThemeTest();
00221 void CreateThemeDefault();
00222 void CreateThemeXRC();
00223
00224
00225 protected:
00226
00227 void FillData(wxCommandEvent& event);
00228
00229 void OnUpdateUI( wxUpdateUIEvent& event );
00230
00231 void OnTheme( a2dEditorFrameEvent& themeEvent );
00232
00233 void OnInit( a2dEditorFrameEvent& initEvent );
00234
00235 a2dCanvas* m_canvas;
00236
00237 wxMenuBar* m_menuBar;
00238
00239
00240 wxMenu* m_editMenu;
00241
00242 bool m_initialized;
00243
00244 DECLARE_EVENT_TABLE()
00245 };
00246
00247
00248
00249
00250
00251 #endif
00252
00253