00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "a2dprec.h"
00012
00013 #ifdef __BORLANDC__
00014 #pragma hdrstop
00015 #endif
00016
00017 #ifndef WX_PRECOMP
00018 #include "wx/wx.h"
00019 #endif
00020
00021 #include "wx/colordlg.h"
00022
00023 #if wxCHECK_VERSION(2, 5, 0)
00024 #if !WXWIN_COMPATIBILITY_2_4
00025 #include "wx/numdlg.h"
00026 #endif
00027 #endif
00028
00029 #include <wx/wfstream.h>
00030 #if wxUSE_XRC
00031 #include <wx/xrc/xmlres.h>
00032 #include <wx/docview/xh_a2dmenu.h>
00033 #endif
00034
00035 #include "wx/editor/canedit.h"
00036 #include "wx/editor/doccancom.h"
00037 #include "wx/editor/fontdlg.h"
00038 #include "wx/editor/sttoolext.h"
00039 #include "wx/editor/groupdlg.h"
00040
00041 #if wxART2D_USE_CANEXTOBJ
00042 #include "wx/canextobj/canextmod.h"
00043 #endif
00044
00045 #if wxART2D_USE_GDSIO
00046 #include "wx/gdsio/gdsio.h"
00047 #endif //wxART2D_USE_GDSIO
00048
00049 #include "images/smile.xpm"
00050
00051 IMPLEMENT_CLASS(a2dEditorMultiFrameViewConnector, a2dFrameViewConnector )
00052 IMPLEMENT_DYNAMIC_CLASS(a2dEditorFrame, a2dDocumentFrame )
00053
00054
00055 A2D_BEGIN_EVENT_TABLE( a2dEditorMultiFrameViewConnector, a2dFrameViewConnector )
00056 A2D_EVT_POST_CREATE_DOCUMENT( a2dEditorMultiFrameViewConnector::OnPostCreateDocument )
00057 A2D_EVT_POST_CREATE_VIEW( a2dEditorMultiFrameViewConnector::OnPostCreateView )
00058 A2D_END_EVENT_TABLE()
00059
00060 a2dEditorMultiFrameViewConnector::a2dEditorMultiFrameViewConnector( wxClassInfo *EditorClassInfo )
00061 :a2dFrameViewConnector()
00062 {
00063 m_editorClassInfo = EditorClassInfo;
00064 m_initialStyle = a2dCanvasGlobals->m_initialDocChildFrameStyle;
00065 m_initialPos = a2dCanvasGlobals->m_initialDocChildFramePos;
00066 m_initialSize = a2dCanvasGlobals->m_initialDocChildFrameSize;
00067 }
00068
00069
00070 void a2dEditorMultiFrameViewConnector::OnPostCreateDocument( a2dTemplateEvent& event )
00071 {
00072
00073
00074
00075 a2dViewTemplate* viewtempl;
00076 viewtempl = a2dDocviewGlobals->GetDocviewCommandProcessor()->SelectViewType( event.GetDocument(),
00077 m_viewTemplates.size()?m_viewTemplates:a2dDocviewGlobals->GetDocviewCommandProcessor()->GetViewTemplates() );
00078
00079 if ( !viewtempl )
00080 {
00081 wxLogMessage(wxT("No view available for this document in a2dEditorMultiFrameViewConnector") );
00082 return;
00083 }
00084
00085 if ( !viewtempl->CreateView( event.GetDocument(), event.GetFlags() ) )
00086 {
00087 wxLogMessage( wxT("a2dEditorMultiFrameViewConnector no view was created") );
00088 return;
00089 }
00090 }
00091
00092
00093 void a2dEditorMultiFrameViewConnector::OnPostCreateView( a2dTemplateEvent& event )
00094 {
00095 a2dCanvasView* drawer = (a2dCanvasView*) event.GetView();
00096
00097
00098
00099 if ( drawer->GetViewTypeName() == wxT("Drawing View Frame") )
00100 {
00101 a2dEditorFrame* editorFrame;
00102 if (m_editorClassInfo)
00103 {
00104 editorFrame = (a2dEditorFrame*) m_editorClassInfo->CreateObject();
00105 drawer->SetBufferSize( m_initialSize.GetWidth(), m_initialSize.GetHeight() );
00106 editorFrame->Create( true, false,
00107 drawer,
00108 m_docframe,
00109 GetInitialPosition(),
00110 GetInitialSize(),
00111 GetInitialStyle()
00112 );
00113 editorFrame->Init();
00114 }
00115 else
00116 {
00117 drawer->SetBufferSize( m_initialSize.GetWidth(), m_initialSize.GetHeight() );
00118 editorFrame = new a2dEditorFrame( false,
00119 drawer,
00120 m_docframe,
00121 GetInitialPosition(),
00122 GetInitialSize(),
00123 GetInitialStyle()
00124 );
00125 editorFrame->Init();
00126 }
00127 editorFrame->Enable();
00128 editorFrame->Show(true);
00129 }
00130 else if ( drawer->GetViewTypeName() == wxT("Drawing Anti Aliased View Frame") )
00131 {
00132 a2dEditorFrame* editorFrame;
00133 if (m_editorClassInfo)
00134 {
00135 editorFrame = (a2dEditorFrame*) m_editorClassInfo->CreateObject();
00136 drawer->SetBufferSize( m_initialSize.GetWidth(), m_initialSize.GetHeight() );
00137 editorFrame->Create( true,
00138 false,
00139 drawer,
00140 m_docframe,
00141 GetInitialPosition(),
00142 GetInitialSize(),
00143 GetInitialStyle()
00144 );
00145 editorFrame->Init();
00146 }
00147 else
00148 {
00149 drawer->SetBufferSize( m_initialSize.GetWidth(), m_initialSize.GetHeight() );
00150 editorFrame = new a2dEditorFrame( false,
00151 drawer,
00152 m_docframe,
00153 GetInitialPosition(),
00154 GetInitialSize(),
00155 GetInitialStyle()
00156 );
00157 editorFrame->Init();
00158 }
00159 editorFrame->Enable();
00160 editorFrame->Show(true);
00161 }
00162 else
00163 wxLogMessage( wxT("a2dEditorMultiFrameViewConnector not a -Drawing View Frame-, no view was created") );
00164
00165
00166 m_docframe->Refresh();
00167 }
00168
00169
00170
00171
00172 a2dEditorFrameEvent::a2dEditorFrameEvent( a2dEditorFrame* editorFrame, wxEventType type, int id )
00173 : wxEvent( id, type )
00174 {
00175 SetEventObject(editorFrame);
00176 }
00177
00178 a2dEditorFrame* a2dEditorFrameEvent::GetEditorFrame() const
00179 {
00180 return wxDynamicCast( GetEventObject(), a2dEditorFrame );
00181 }
00182
00183 wxEvent* a2dEditorFrameEvent::Clone(void) const
00184 {
00185 return new a2dEditorFrameEvent( GetEditorFrame(), m_eventType, m_id );
00186 }
00187
00188 DEFINE_EVENT_TYPE(a2dEVT_THEME_EVENT)
00189 DEFINE_EVENT_TYPE(a2dEVT_INIT_EVENT)
00190
00191
00192 const long TOOLOPTION_FIRST = wxNewId();
00193 const long TOOLOPTION_ONTOP = TOOLOPTION_FIRST;
00194 const long TOOLOPTION_RECTANGLE = wxNewId();
00195 const long TOOLOPTION_REDRAW = wxNewId();
00196 const long TOOLOPTION_COPY = wxNewId();
00197
00198 const long TOOLOPTION_FILLED = wxNewId();
00199 const long TOOLOPTION_WIRE = wxNewId();
00200 const long TOOLOPTION_INVERT = wxNewId();
00201 const long TOOLOPTION_WIRE_ZERO_WIDTH = wxNewId();
00202 const long TOOLOPTION_INVERT_ZERO_WIDTH = wxNewId();
00203 const long TOOLOPTION_LAST = TOOLOPTION_INVERT_ZERO_WIDTH;
00204
00205 const long MSHOW_T = wxNewId();
00206 const long MSHOW_FIRST = wxNewId();
00207 const long MSHOW_LIBPOINTS = wxNewId();
00208 const long MSHOW_LIB = wxNewId();
00209 const long MSHOW_LAST = MSHOW_LIB;
00210
00211 const long MSCREEN_T = wxNewId();
00212
00213
00214
00215
00216 const long Layer_view = wxNewId();
00217
00218 BEGIN_EVENT_TABLE(a2dEditorFrame, a2dDocumentFrame)
00219
00220 EVT_MENU(wxID_EXIT, a2dEditorFrame::Quit)
00221
00222
00223
00224
00225 EVT_MENU( wxID_ABOUT, a2dEditorFrame::OnAbout)
00226 EVT_MENU( wxID_UNDO, a2dEditorFrame::OnUndo)
00227 EVT_MENU( wxID_REDO, a2dEditorFrame::OnRedo)
00228 EVT_MENUSTRINGS( a2dEditorFrame::OnSetmenuStrings )
00229
00230 EVT_DO( a2dEditorFrame::OnDoEvent )
00231 EVT_UNDO( a2dEditorFrame::OnUndoEvent )
00232
00233 EVT_COM_EVENT( a2dEditorFrame::OnComEvent )
00234
00235 EVT_CLOSE( a2dEditorFrame::OnCloseWindow)
00236
00237 EVT_ACTIVATE( a2dEditorFrame::OnActivate)
00238
00239 EVT_THEME_EVENT( a2dEditorFrame::OnTheme )
00240 EVT_INIT_EVENT( a2dEditorFrame::OnInit )
00241
00242 EVT_MENU( MSCREEN_T, a2dEditorFrame::FillData )
00243
00244 END_EVENT_TABLE()
00245
00246
00247 #define DOC ((a2dCanvasView*)m_view.Get())->GetCanvasDocument()
00248
00249 a2dEditorFrame::a2dEditorFrame()
00250 : a2dDocumentFrame()
00251 {
00252 m_initialized = false;
00253 }
00254
00255 a2dEditorFrame::a2dEditorFrame( bool isParent, a2dCanvasView* view,
00256 wxFrame* parent, const wxPoint& pos, const wxSize& size, long style )
00257 : a2dDocumentFrame()
00258 {
00259 m_initialized = false;
00260
00261
00262 Create( true, isParent, view, parent, pos, size, style );
00263 }
00264
00265 bool a2dEditorFrame::Create( bool createCanvas, bool isParent, a2dCanvasView* view,
00266 wxFrame* parent, const wxPoint& pos ,const wxSize& size, long style )
00267 {
00268 m_initialized = false;
00269
00270 a2dDocviewGlobals->GetEventDistributer()->Register( this );
00271
00272 bool res = a2dDocumentFrame::Create( isParent, parent, view, -1, wxT("canvas editor") , pos, size, style);
00273
00274 if ( createCanvas )
00275 {
00276 m_canvas = new a2dCanvas( view, this, -1, pos, size, a2dCanvasGlobals->m_initialWorldCanvasStyle );
00277
00278 if ( view )
00279 {
00280 view->SetDisplayWindow( m_canvas );
00281 if ( DOC )
00282 SetTitle( DOC->GetTitle() );
00283 }
00284 }
00285
00286
00287
00288 return res;
00289 }
00290
00291 void a2dEditorFrame::OnInit( a2dEditorFrameEvent& initEvent )
00292 {
00293 #ifdef __WXMSW__
00294 SetIcon(wxString( wxT("chrt_icn") ));
00295 #endif
00296
00297 m_editMenu = NULL;
00298
00299
00300
00301 m_canvas->SetScaleOnResize(false);
00302
00303
00304 m_canvas->SetScrollMaximum( 0, 0, 1000, 1000 );
00305
00306 m_canvas->SetScrollStepX(100);
00307
00308 m_canvas->SetScrollStepY(100);
00309
00310
00311
00312
00313
00314
00315
00316 if ( m_canvas->GetView() )
00317 {
00318 a2dFill backgr = a2dFill(wxColour(255,255,255 ));
00319 m_canvas->SetBackgroundFill(backgr);
00320
00321 m_canvas->SetGridStroke( a2dStroke(wxColour(239,5,64 ),0,a2dSTROKE_DOT) );
00322
00323
00324
00325 m_canvas->SetGridSize(2);
00326 m_canvas->SetGridX(100);
00327 m_canvas->SetGridY(100);
00328
00329
00330 m_canvas->SetGrid(false);
00331 m_canvas->SetGridAtFront(true);
00332 }
00333 m_initialized = true;
00334 }
00335
00336 void a2dEditorFrame::OnTheme( a2dEditorFrameEvent& themeEvent )
00337 {
00338 a2dEditorFrame* ef = themeEvent.GetEditorFrame();
00339 ef->Theme();
00340
00341 wxUint16 lay = a2dGetCmdhEditor()->GetLayer();
00342 SetStatusText( m_canvas->GetCanvasDocument()->GetLayerSetup()->GetName(lay), 1);
00343 }
00344
00345 void a2dEditorFrame::Init()
00346 {
00347 a2dCentralCanvasCommandProcessor* docmanager = a2dGetCmdhEditor();
00348 wxASSERT_MSG( docmanager, wxT("a2dCentralCanvasCommandProcessor is needed by a2dEditorFrame") );
00349
00350 m_contr = new a2dStToolContr( m_canvas->GetCanvasView(), this );
00351
00352
00353
00354 m_contr->SetZoomFirst( true );
00355
00356 wxPathList pathList;
00357 pathList.Add( wxT("../common/icons") );
00358
00359 a2dEditorFrameEvent tevent( this, a2dEVT_INIT_EVENT );
00360 ProcessEvent( tevent );
00361
00362 a2dEditorFrameEvent ievent( this, a2dEVT_THEME_EVENT );
00363 ProcessEvent( ievent );
00364 }
00365
00366 a2dEditorFrame::~a2dEditorFrame()
00367 {
00368 a2dDocviewGlobals->GetEventDistributer()->Unregister( this );
00369 }
00370
00371 void a2dEditorFrame::OnCloseWindow(wxCloseEvent& event)
00372 {
00373 a2dDocument* doc = NULL;
00374 if ( m_view )
00375 doc = m_view->GetDocument();
00376
00377 if ( !event.CanVeto() )
00378 {
00379 }
00380
00381 event.Skip();
00382
00383 }
00384
00385 void a2dEditorFrame::OnUndo(wxCommandEvent& WXUNUSED(event))
00386 {
00387 if ( DOC->GetCommandProcessor())
00388 DOC->GetCommandProcessor()->Undo();
00389 }
00390
00391 void a2dEditorFrame::OnRedo(wxCommandEvent& WXUNUSED(event))
00392 {
00393 if ( DOC->GetCommandProcessor())
00394 DOC->GetCommandProcessor()->Redo();
00395 }
00396
00397 void a2dEditorFrame::Update()
00398 {
00399 m_canvas->GetCanvasView()->Update( a2dCANVIEW_UPDATE_ALL );
00400 }
00401
00402 void a2dEditorFrame::Quit(wxCommandEvent& WXUNUSED(event) )
00403 {
00404 Close(true);
00405 }
00406
00407 void a2dEditorFrame::OnActivate(wxActivateEvent& event)
00408 {
00409 if ( !m_initialized )
00410 return;
00411
00412 a2dComEvent newview( this, &a2dCanvasView::sm_changedActiveView );
00413 a2dDocviewGlobals->GetEventDistributer()->ProcessEvent( newview );
00414
00415 event.Skip();
00416 }
00417
00418 void a2dEditorFrame::OnSetmenuStrings( a2dCommandProcessorEvent& event )
00419 {
00420 if ( m_editMenu && m_view && m_view->GetDocument() && event.GetEventObject() == m_view->GetDocument()->GetCommandProcessor() )
00421 {
00422 m_editMenu->SetLabel(wxID_UNDO, event.GetUndoMenuLabel());
00423 m_editMenu->Enable(wxID_UNDO, event.CanUndo());
00424
00425 m_editMenu->SetLabel(wxID_REDO, event.GetRedoMenuLabel());
00426 m_editMenu->Enable(wxID_REDO, event.CanRedo());
00427 }
00428 }
00429
00430 void a2dEditorFrame::OnUndoEvent( a2dCommandProcessorEvent& WXUNUSED(event) )
00431 {
00432
00433 }
00434
00435 void a2dEditorFrame::OnDoEvent( a2dCommandProcessorEvent& event )
00436 {
00437 wxString cmdName = event.GetCommand()->GetName();
00438
00439 if ( m_canvas->GetCanvasView() )
00440 {
00441 if ( event.GetCommand()->GetCommandId() == &a2dCommand_SetLayer::Id )
00442 {
00443 wxUint16 lay = a2dGetCmdhEditor()->GetLayer();
00444 SetStatusText( m_canvas->GetCanvasDocument()->GetLayerSetup()->GetName(lay), 1);
00445 }
00446 }
00447 }
00448
00449 void a2dEditorFrame::OnComEvent( a2dComEvent& event )
00450 {
00451 if ( event.GetEventComId() == &a2dComEvent::sm_changedProperty )
00452 {
00453 a2dNamedProperty *property = event.GetProperty();
00454 a2dObject *object = property->GetRefObjectNA();
00455
00456 if ( 0 != wxDynamicCast( property, a2dStrokeProperty ) )
00457 {
00458 a2dStroke stroke = ((a2dStrokeProperty*)property)->GetValue();
00459 }
00460 else if ( 0 != wxDynamicCast( property, a2dFillProperty ) )
00461 {
00462 a2dFill fill = ((a2dFillProperty*)property)->GetValue();
00463 }
00464 else
00465 event.Skip();
00466 }
00467 else if ( event.GetEventComId() == &a2dStToolContr::sm_showCursor && GetStatusBar() )
00468 {
00469 a2dStToolContr* contr = wxStaticCast( event.GetEventObject(), a2dStToolContr );
00470
00471 wxPoint mpos = contr->GetMousePosition();
00472
00473 double mouse_worldx, mouse_worldy;
00474 contr->GetCanvasView()->MouseToToolWorld( mpos.x, mpos.y, mouse_worldx, mouse_worldy );
00475
00476 wxString unitmeasure = contr->GetCanvasView()->GetCanvasDocument()->GetUnits();
00477 double scaleToMeters = contr->GetCanvasView()->GetCanvasDocument()->GetUnitsScale();
00478
00479 double multi = 1;
00480 a2dDoMu::GetMultiplierFromString( unitmeasure, multi );
00481
00482 mouse_worldx *= scaleToMeters/multi;
00483 mouse_worldy *= scaleToMeters/multi;
00484
00485 wxString str;
00486 str.Printf( _T("%6.3f,%6.3f"), mouse_worldx, mouse_worldy );
00487
00488 if ( contr->GetFirstTool() )
00489 str = str + _T(" ") + unitmeasure + _T(" :") + contr->GetFirstTool()->GetClassInfo()->GetClassName();
00490
00491
00492 SetStatusText( str );
00493 wxUint16 lay = a2dGetCmdh()->GetLayer();
00494 SetStatusText( m_canvas->GetCanvasDocument()->GetLayerSetup()->GetName(lay), 1);
00495 }
00496
00497 else
00498 event.Skip();
00499 }
00500
00501 void a2dEditorFrame::OnMenu(wxCommandEvent& event)
00502 {
00503 if ( event.GetId() == Layer_view )
00504 {
00505 a2dSmrtPtr<a2dCanvasDocument> doc = new a2dCanvasDocument();
00506 doc->SetDocumentTypeName( _T("a2dCanvasDocument") );
00507 doc->Append( DOC->GetLayerSetup() );
00508
00509 a2dView* createdview;
00510 createdview = a2dDocviewGlobals->GetDocviewCommandProcessor()->AddDocumentCreateView( doc, _T("Drawing View Frame") );
00511
00512 doc->SetCanvasDocumentRecursive();
00513 }
00514 else if ( event.GetId() == MSHOW_LIBPOINTS )
00515 {
00516 ConnectDocument( a2dGetCmdhEditor()->GetLibraryPoints() );
00517 m_contr->Zoomout();
00518 }
00519 else
00520 event.Skip();
00521 }
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560 void a2dEditorFrame::SetToolDragingMode( wxCommandEvent& event )
00561 {
00562 m_menuBar->Check(TOOLOPTION_ONTOP,false);
00563 m_menuBar->Check(TOOLOPTION_RECTANGLE,false);
00564 m_menuBar->Check(TOOLOPTION_REDRAW,false);
00565 m_menuBar->Check(TOOLOPTION_COPY,false);
00566 if ( event.GetId() == TOOLOPTION_ONTOP )
00567 {
00568 m_contr->SetDragMode(wxDRAW_ONTOP);
00569 m_menuBar->Check(TOOLOPTION_ONTOP,true);
00570 }
00571 if ( event.GetId() == TOOLOPTION_RECTANGLE )
00572 {
00573 m_contr->SetDragMode(wxDRAW_RECTANGLE);
00574 m_menuBar->Check(TOOLOPTION_RECTANGLE,true);
00575 }
00576 if ( event.GetId() == TOOLOPTION_REDRAW )
00577 {
00578 m_contr->SetDragMode(wxDRAW_REDRAW);
00579 m_menuBar->Check(TOOLOPTION_REDRAW,true);
00580 }
00581 if ( event.GetId() == TOOLOPTION_COPY )
00582 {
00583 m_contr->SetDragMode(wxDRAW_COPY);
00584 m_menuBar->Check(TOOLOPTION_COPY,true);
00585 }
00586 }
00587
00588 void a2dEditorFrame::SetToolDrawingMode( wxCommandEvent& event )
00589 {
00590 m_menuBar->Check(TOOLOPTION_FILLED,false);
00591 m_menuBar->Check(TOOLOPTION_WIRE,false);
00592 m_menuBar->Check(TOOLOPTION_INVERT,false);
00593 m_menuBar->Check(TOOLOPTION_WIRE_ZERO_WIDTH,false);
00594 m_menuBar->Check(TOOLOPTION_INVERT_ZERO_WIDTH,false);
00595
00596 if ( event.GetId() == TOOLOPTION_FILLED )
00597 {
00598 m_contr->SetDrawMode(a2dFILLED);
00599 m_menuBar->Check(TOOLOPTION_FILLED,true);
00600 }
00601 if ( event.GetId() == TOOLOPTION_WIRE )
00602 {
00603 m_contr->SetDrawMode(a2dWIREFRAME);
00604 m_menuBar->Check(TOOLOPTION_WIRE,true);
00605 }
00606 if ( event.GetId() == TOOLOPTION_INVERT )
00607 {
00608 m_contr->SetDrawMode(a2dWIREFRAME_INVERT);
00609 m_menuBar->Check(TOOLOPTION_INVERT,true);
00610 }
00611 if ( event.GetId() == TOOLOPTION_WIRE_ZERO_WIDTH )
00612 {
00613 m_contr->SetDrawMode(a2dWIREFRAME_ZERO_WIDTH);
00614 m_menuBar->Check(TOOLOPTION_WIRE_ZERO_WIDTH,true);
00615 }
00616 if ( event.GetId() == TOOLOPTION_INVERT_ZERO_WIDTH )
00617 {
00618 m_contr->SetDrawMode(a2dWIREFRAME_INVERT_ZERO_WIDTH);
00619 m_menuBar->Check(TOOLOPTION_INVERT_ZERO_WIDTH,true);
00620 }
00621 }
00622
00623 void a2dEditorFrame::AddFunctionToMenu( int id, wxMenu* parentMenu, const wxString& text, const wxString& helpString, wxObjectEventFunctionM func, bool check )
00624 {
00625 Connect( id, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) wxStaticCastEvent(wxCommandEventFunction, func ) );
00626 parentMenu->Append( id, text, helpString, check );
00627 }
00628
00629 void a2dEditorFrame::RemoveFromMenu( int id, wxMenu* parentMenu, wxObjectEventFunctionM func )
00630 {
00631 Disconnect( id, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) wxStaticCastEvent(wxCommandEventFunction, func ) );
00632 parentMenu->Delete( id );
00633 }
00634
00635 void a2dEditorFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
00636 {
00637 (void)wxMessageBox( _T("a2dEditorFrame\nKlaas Holwerda 2002"),
00638 _T("About a2dEditorFrame"), wxICON_INFORMATION | wxOK );
00639 }
00640
00641 void a2dEditorFrame::ConnectDocument( a2dCanvasDocument* doc, a2dCanvasView* drawer )
00642 {
00643 if ( !doc )
00644 return;
00645
00646
00647 a2dViewList allviews;
00648 doc->ReportViews( &allviews );
00649
00650 if ( !drawer || wxNOT_FOUND == allviews.IndexOf( drawer ) )
00651 {
00652 if ( m_canvas->GetCanvasView() )
00653 m_canvas->GetCanvasView()->SetDocument( doc );
00654 }
00655 else
00656 {
00657 m_canvas->SetCanvasView( drawer );
00658 }
00659
00660
00661
00662
00663 if ( m_view)
00664 {
00665 m_view->SetDisplayWindow( NULL );
00666 }
00667
00668 m_view->SetDisplayWindow( m_canvas );
00669 m_view->Update();
00670 if ( m_view->GetDocument() )
00671 {
00672
00673 }
00674 m_view->Activate( true );
00675 }
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740 void a2dEditorFrame::ShowLibs(wxCommandEvent &event)
00741 {
00742 if ( event.GetId() == MSHOW_LIBPOINTS )
00743 {
00744 ConnectDocument( a2dGetCmdhEditor()->GetLibraryPoints() );
00745 m_contr->Zoomout();
00746 }
00747
00748 }
00749
00750 void a2dEditorFrame::CreateStatusBarThemed( const wxString& themeName )
00751 {
00752 CreateStatusBar( 2 );
00753 int widths[] = { -1, 100 };
00754 SetStatusWidths( 2, widths );
00755 }
00756
00757 void a2dEditorFrame::Theme( const wxString& themeName )
00758 {
00759 if ( themeName == wxT("test") )
00760 CreateThemeTest();
00761 if ( themeName == wxT("default") )
00762 CreateThemeDefault();
00763 }
00764
00765 void a2dEditorFrame::SetupToolbar()
00766 {
00767
00768 wxToolBar* toolbar = new wxToolBar(this,wxNewId(),wxDefaultPosition,wxDefaultSize,wxTB_HORIZONTAL|wxTB_FLAT|wxTB_DOCKABLE);
00769 toolbar->SetMargins( 2, 2 );
00770 SetToolBar(toolbar);
00771
00772 #ifndef __UNIX__
00773 toolbar->SetToolBitmapSize(wxSize(32,32));
00774 #endif
00775
00776 AddCmdToToolbar( CmdMenu_PushTool_Zoom );
00777 AddCmdToToolbar( CmdMenu_PushTool_DrawPolygonL );
00778 AddCmdToToolbar( CmdMenu_PushTool_DrawPolygonL_Splined );
00779 AddCmdToToolbar( CmdMenu_PushTool_DrawPolylineL );
00780 AddCmdToToolbar( CmdMenu_PushTool_DrawPolylineL_Splined );
00781 AddCmdToToolbar( CmdMenu_PushTool_DrawRectangle );
00782 AddCmdToToolbar( CmdMenu_PushTool_DrawCircle );
00783 AddCmdToToolbar( CmdMenu_PushTool_DrawEllipse );
00784 AddCmdToToolbar( CmdMenu_PushTool_DrawEllipticArc );
00785 AddCmdToToolbar( CmdMenu_PushTool_DrawEllipticArc_Chord );
00786 AddCmdToToolbar( CmdMenu_PushTool_DrawArc );
00787 AddCmdToToolbar( CmdMenu_PushTool_DrawArc_Chord );
00788 AddCmdToToolbar( CmdMenu_PushTool_DrawText );
00789 AddCmdToToolbar( CmdMenu_PushTool_Image );
00790 AddCmdToToolbar( CmdMenu_PushTool_Rotate );
00791 AddCmdToToolbar( CmdMenu_PushTool_Drag );
00792 AddCmdToToolbar( CmdMenu_PushTool_Copy );
00793 AddCmdToToolbar( CmdMenu_PushTool_Delete );
00794 AddCmdToToolbar( CmdMenu_PushTool_RecursiveEdit );
00795 AddCmdToToolbar( CmdMenu_PushTool_Select );
00796 AddCmdToToolbar( CmdMenu_PushTool_Select2 );
00797 AddCmdToToolbar( CmdMenu_Selected_SelectAll );
00798 AddCmdToToolbar( CmdMenu_Selected_DeSelectAll );
00799 AddCmdToToolbar( CmdMenu_Selected_Delete );
00800 AddCmdToToolbar( CmdMenu_PushTool_DragMulti );
00801 AddCmdToToolbar( CmdMenu_PushTool_CopyMulti );
00802 AddCmdToToolbar( CmdMenu_PushInto );
00803
00804 toolbar->Realize();
00805 }
00806
00807 void a2dEditorFrame::CreateThemeDefault()
00808 {
00809 CreateStatusBarThemed( wxT("default") );
00810
00811 m_menuBar = new wxMenuBar;
00812 SetMenuBar(m_menuBar);
00813
00814
00815
00816
00817 wxMenu* file_menu = new wxMenu;
00818 AddCmdMenu( file_menu, CmdMenu_FileOpen );
00819 AddCmdMenu( file_menu, CmdMenu_FileClose );
00820 AddCmdMenu( file_menu, CmdMenu_FileSave );
00821 AddCmdMenu( file_menu, CmdMenu_FileSaveAs );
00822 AddCmdMenu( file_menu, CmdMenu_Print );
00823 file_menu->AppendSeparator();
00824 AddCmdMenu( file_menu, CmdMenu_PrintView );
00825 AddCmdMenu( file_menu, CmdMenu_PreviewView );
00826 AddCmdMenu( file_menu, CmdMenu_PrintDocument );
00827 AddCmdMenu( file_menu, CmdMenu_PreviewDocument );
00828 AddCmdMenu( file_menu, CmdMenu_PrintSetup );
00829 file_menu->AppendSeparator();
00830
00831 wxMenu* file_import = new wxMenu;
00832 file_menu->Append( wxNewId(), wxT("import file"), file_import, _("Import a file") );
00833 AddCmdMenu( file_import, CmdMenu_FileImport );
00834
00835 wxMenu* file_export_as = new wxMenu;
00836 file_menu->Append( wxNewId(), wxT("Export As"), file_export_as, _("Export in other format") );
00837 AddCmdMenu( file_export_as, CmdMenu_FileExport );
00838
00839 file_export_as->AppendSeparator();
00840 AddCmdMenu( file_export_as, CmdMenu_ViewAsImage_Png );
00841 AddCmdMenu( file_export_as, CmdMenu_ViewAsImage_Bmp );
00842 AddCmdMenu( file_export_as, CmdMenu_DocumentAsImage_Png );
00843 AddCmdMenu( file_export_as, CmdMenu_DocumentAsImage_Bmp );
00844 #if wxART2D_USE_SVGIO
00845 AddCmdMenu( file_export_as, CmdMenu_ViewAsSvg );
00846 #endif //wxART2D_USE_SVGIO
00847 file_menu->AppendSeparator();
00848
00849 if ( m_isParentFrame )
00850 AddCmdMenu( file_menu, CmdMenu_Exit );
00851
00852 m_editMenu = new wxMenu;
00853 m_editMenu->Append(wxID_UNDO, _("&Undo"));
00854 m_editMenu->Append(wxID_REDO, _("&Redo"));
00855
00856 DOC->GetCommandProcessor()->Initialize();
00857
00858 Connect( MSHOW_FIRST, MSHOW_LAST, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &a2dEditorFrame::ShowLibs );
00859
00860 wxMenu* optionMenu = new wxMenu;
00861 AddFunctionToMenu( TOOLOPTION_ONTOP, optionMenu, _("Drag &OnTop"), _("Drag on top of other objects"), &a2dEditorFrame::SetToolDragingMode, true);
00862 AddFunctionToMenu( TOOLOPTION_RECTANGLE, optionMenu, _("Drag &Rectangle"), _("Drag using a rectangle"), &a2dEditorFrame::SetToolDragingMode,true);
00863 AddFunctionToMenu( TOOLOPTION_REDRAW, optionMenu, _("Drag Re &Draw"), _("Drag and redraw all objects all the time"), &a2dEditorFrame::SetToolDragingMode,true);
00864 AddFunctionToMenu( TOOLOPTION_COPY, optionMenu, _("Drag &Copy"), _("Drag copy of original untill finished drag"), &a2dEditorFrame::SetToolDragingMode,true);
00865 AddFunctionToMenu( TOOLOPTION_FILLED, optionMenu, _("Drag/Draw Filled"), _("Drag/Draw filled objects"), &a2dEditorFrame::SetToolDragingMode,true);
00866 AddFunctionToMenu( TOOLOPTION_WIRE, optionMenu, _("Drag/Draw OutLine"), _("Drag/Draw an wireframe/outline of object"), &a2dEditorFrame::SetToolDrawingMode,true);
00867 AddFunctionToMenu( TOOLOPTION_INVERT, optionMenu, _("Drag/Draw Invert"), _("Drag/Draw an inverted wireframe of object"), &a2dEditorFrame::SetToolDrawingMode,true);
00868 AddFunctionToMenu( TOOLOPTION_WIRE_ZERO_WIDTH, optionMenu, _("Drag/Draw OutLine zero"), _("Drag/Draw zero width wireframe/outline of object"), &a2dEditorFrame::SetToolDrawingMode,true);
00869 AddFunctionToMenu( TOOLOPTION_INVERT_ZERO_WIDTH, optionMenu, _("Drag/Draw Invert zero"), _("Drag/Draw a zero width inverted wireframe of object"), &a2dEditorFrame::SetToolDrawingMode,true);
00870 optionMenu->AppendSeparator();
00871 AddCmdMenu( optionMenu, CmdMenu_Option_SplinePoly );
00872 AddCmdMenu( optionMenu, CmdMenu_Option_CursorCrosshair );
00873 AddCmdMenu( optionMenu, CmdMenu_Option_RescaleAtReSize );
00874 AddCmdMenu( optionMenu, CmdMenu_Option_ReverseLayers );
00875 AddCmdMenu( optionMenu, CmdMenu_SetYAxis );
00876
00877 wxMenu* toolMenu = new wxMenu;
00878
00879 AddCmdMenu( toolMenu, CmdMenu_PushTool_FastSelect );
00880 AddCmdMenu( toolMenu, CmdMenu_PushTool_FastSelect2 );
00881 AddCmdMenu( toolMenu, CmdMenu_PushTool_RecursiveEdit );
00882 AddCmdMenu( toolMenu, CmdMenu_PushTool_MultiEdit );
00883 AddCmdMenu( toolMenu, CmdMenu_PushTool_Drag );
00884 AddCmdMenu( toolMenu, CmdMenu_PushTool_Copy );
00885 AddCmdMenu( toolMenu, CmdMenu_PushTool_Rotate );
00886 AddCmdMenu( toolMenu, CmdMenu_PushTool_Delete );
00887 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawText );
00888 AddCmdMenu( toolMenu, CmdMenu_PushTool_Image );
00889 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawRectangleFast );
00890 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawCircleFast );
00891 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawLine );
00892 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawLineScaledArrow );
00893 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawEllipse );
00894 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawEllipticArc );
00895 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawEllipticArc_Chord );
00896 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawArc );
00897 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawArc_Chord );
00898 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawPolylineLFast );
00899 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawPolygonLFast );
00900 AddCmdMenu( toolMenu, CmdMenu_PushTool_Property );
00901 AddCmdMenu( toolMenu, CmdMenu_PushTool_FastDragMulti );
00902 AddCmdMenu( toolMenu, CmdMenu_PushTool_FastCopyMulti );
00903 AddCmdMenu( toolMenu, CmdMenu_PushTool_Measure );
00904 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawWirePolylineL );
00905 AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawVPath );
00906
00907 toolMenu->AppendSeparator();
00908 AddCmdMenu( toolMenu, CmdMenu_LineBegin );
00909 AddCmdMenu( toolMenu, CmdMenu_LineEnd );
00910 AddCmdMenu( toolMenu, CmdMenu_LineScale );
00911 AddCmdMenu( toolMenu, CmdMenu_SetNormalizeFactor );
00912
00913
00914
00915
00916
00917 wxMenu* drawMenu = new wxMenu;
00918 AddCmdMenu( drawMenu, CmdMenu_ShowDlgStructure );
00919 AddFunctionToMenu( MSHOW_LIBPOINTS, drawMenu, _("Point Library"), _("a library used for end and begin points of lines"), &a2dEditorFrame::OnMenu );
00920
00921 wxMenu* refMenu = new wxMenu;
00922
00923 AddCmdMenu( refMenu, CmdMenu_Refresh );
00924 AddCmdMenu( refMenu, CmdMenu_PushInto );
00925 AddCmdMenu( refMenu, CmdMenu_NewGroup );
00926 AddCmdMenu( refMenu, CmdMenu_NewPin );
00927
00928 wxMenu* performMenu = new wxMenu;
00929 wxMenu* selected = new wxMenu;
00930 wxMenu* groups = new wxMenu;
00931
00932
00933
00934
00935 performMenu->Append( wxNewId(), wxT("selected objects"), selected, _("operation on selected objects") );
00936
00937 AddCmdMenu( selected, CmdMenu_Selected_SelectAll );
00938 AddCmdMenu( selected, CmdMenu_Selected_DeSelectAll );
00939 AddCmdMenu( selected, CmdMenu_Selected_Delete );
00940 AddCmdMenu( selected, CmdMenu_Selected_MoveXY );
00941 AddCmdMenu( selected, CmdMenu_Selected_MoveLayer );
00942 AddCmdMenu( selected, CmdMenu_Selected_CopyXY );
00943 AddCmdMenu( selected, CmdMenu_Selected_CopyLayer );
00944 AddCmdMenu( selected, CmdMenu_Selected_Transform );
00945 AddCmdMenu( selected, CmdMenu_Selected_Group );
00946 AddCmdMenu( selected, CmdMenu_Selected_ImageToRectangles );
00947 AddCmdMenu( selected, CmdMenu_Selected_ImageToRectangles );
00948 AddCmdMenu( selected, CmdMenu_Selected_ToTop );
00949 AddCmdMenu( selected, CmdMenu_Selected_ToBack );
00950 AddCmdMenu( selected, CmdMenu_Selected_SetStyle );
00951 AddCmdMenu( selected, CmdMenu_Selected_ConvertToPolygonPolylinesWithArcs );
00952 AddCmdMenu( selected, CmdMenu_Selected_ConvertToPolygonPolylinesWithoutArcs );
00953 AddCmdMenu( selected, CmdMenu_Selected_ConvertToPolylines );
00954 AddCmdMenu( selected, CmdMenu_Selected_ConvertLinesArcs );
00955 AddCmdMenu( selected, CmdMenu_Selected_ConvertPolygonToArcs );
00956 AddCmdMenu( selected, CmdMenu_Selected_ConvertPolylineToArcs );
00957 AddCmdMenu( selected, CmdMenu_Selected_ConvertToVPaths );
00958 AddCmdMenu( selected, CmdMenu_Selected_UnGroup );
00959 AddCmdMenu( selected, CmdMenu_Selected_UnGroupDeep );
00960 AddCmdMenu( selected, CmdMenu_Selected_Merge );
00961 AddCmdMenu( selected, CmdMenu_Selected_Offset );
00962 AddCmdMenu( selected, CmdMenu_Selected_CreateRing );
00963
00964 wxMenu* ungroupObjects = new wxMenu;
00965 refMenu->Append( wxNewId(), wxT("ungroup objects"), ungroupObjects, _("un-group selected objects") );
00966 AddCmdMenu( ungroupObjects, CmdMenu_Selected_UnGroup );
00967 AddCmdMenu( ungroupObjects, CmdMenu_Selected_UnGroupDeep );
00968
00969 #if wxART2D_USE_KBOOL
00970
00971 // group like operation
00972
00973 performMenu->Append( wxNewId(), wxT("layer groups"), groups, _("operation on objects in layer groups") );
00974 AddCmdMenu( groups, CmdMenu_ShowDlgGroups );
00975 AddCmdMenu( groups, CmdMenu_GroupAB_Offset );
00976 AddCmdMenu( groups, CmdMenu_GroupAB_Smooth );
00977 AddCmdMenu( groups, CmdMenu_GroupAB_CreateRing );
00978 AddCmdMenu( groups, CmdMenu_GroupAB_Delete );
00979 AddCmdMenu( groups, CmdMenu_GroupAB_Move );
00980 AddCmdMenu( groups, CmdMenu_GroupAB_Copy );
00981 AddCmdMenu( groups, CmdMenu_GroupAB_ToArcs );
00982
00983 wxMenu* booleanObjects = new wxMenu;
00984 groups->Append( wxNewId(), wxT("boolean objects"), booleanObjects, _("boolean group A-B objects") );
00985
00986
00987 AddCmdMenu( booleanObjects, CmdMenu_GroupAB_Or );
00988 AddCmdMenu( booleanObjects, CmdMenu_GroupAB_And );
00989 AddCmdMenu( booleanObjects, CmdMenu_GroupAB_Exor );
00990 AddCmdMenu( booleanObjects, CmdMenu_GroupAB_AsubB );
00991 AddCmdMenu( booleanObjects, CmdMenu_GroupAB_BsubA );
00992
00993 #endif //wxART2D_USE_KBOOL
00994
00995 AddCmdMenu( performMenu, CmdMenu_EmptyDocument );
00996 AddCmdMenu( performMenu, CmdMenu_EmptyShownObject );
00997
00998 wxMenu* menuSettings = new wxMenu;
00999
01000 AddCmdMenu( menuSettings, CmdMenu_ShowDlgStyle );
01001 AddCmdMenu( menuSettings, CmdMenu_SetFont );
01002 AddCmdMenu( menuSettings, CmdMenu_SetBackgroundStyle );
01003 AddCmdMenu( menuSettings, CmdMenu_DrawGridLines );
01004 AddCmdMenu( menuSettings, CmdMenu_DrawGridAtFront );
01005 AddCmdMenu( menuSettings, CmdMenu_DrawGrid );
01006 AddCmdMenu( menuSettings, CmdMenu_SetSnap );
01007 AddCmdMenu( menuSettings, CmdMenu_SetDrawWireFrame );
01008
01009 wxMenu* menuLayers = new wxMenu;
01010
01011 wxMenu* savelayersLoc = new wxMenu;
01012 menuLayers->Append( wxNewId(), wxT("save layerfile"), savelayersLoc, _("save layer file to chosen location") );
01013 {
01014 AddCmdMenu( savelayersLoc, CmdMenu_SaveLayers );
01015 AddCmdMenu( savelayersLoc, CmdMenu_SaveLayersHome );
01016 AddCmdMenu( savelayersLoc, CmdMenu_SaveLayersLastDir );
01017 AddCmdMenu( savelayersLoc, CmdMenu_SaveLayersCurrentDir );
01018 }
01019 wxMenu* loadlayersLoc = new wxMenu;
01020 menuLayers->Append( wxNewId(), wxT("load layerfile"), loadlayersLoc, _("load layer file from chosen location") );
01021 {
01022 AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayers );
01023 AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayersHome );
01024 AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayersLastDir );
01025 AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayersCurrentDir );
01026 }
01027 AddCmdMenu( menuLayers, CmdMenu_SetLayerDlg );
01028 AddCmdMenu( menuLayers, CmdMenu_SetLayerDlgModeless );
01029 AddCmdMenu( menuLayers, CmdMenu_SetTargetDlg );
01030
01031 AddFunctionToMenu( Layer_view, menuLayers, _("Show layer view"), _("layers of this document"), &a2dEditorFrame::OnMenu, true );
01032
01033 wxMenu* layerDlgInit = new wxMenu;
01034 menuLayers->Append( wxNewId(), wxT("LayerDlg"), layerDlgInit, _("Show LayerDlg") );
01035 AddCmdMenu( layerDlgInit, CmdMenu_ShowDlgLayersDocument );
01036 AddCmdMenu( layerDlgInit, CmdMenu_ShowDlgLayersGlobal );
01037
01038 wxMenu* orderDlgInit = new wxMenu;
01039 menuLayers->Append( wxNewId(), wxT("OrderDlg"), orderDlgInit, _("Show OrderDlg") );
01040 AddCmdMenu( orderDlgInit, CmdMenu_ShowDlgLayerOrderDocument );
01041 AddCmdMenu( orderDlgInit, CmdMenu_ShowDlgLayerOrderGlobal );
01042
01043 wxMenu *dlg_menu = new wxMenu;
01044
01045 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgPathSettings );
01046 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgSettings );
01047 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgTrans );
01048 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgTools );
01049 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgStyle );
01050 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgSnap );
01051 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgStructure );
01052 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgIdentify );
01053 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgMeasure );
01054 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgCoordEntry );
01055
01056
01057 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgLayersDocument );
01058 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgGroups );
01059 AddCmdMenu( dlg_menu, CmdMenu_ShowDlgPropEdit );
01060
01061 #if defined(_DEBUG)
01062 wxMenu* drawTest = new wxMenu;
01063 drawTest->Append(MSCREEN_T, wxT("test screen"), wxT("whatever"));
01064 #endif
01065
01066 wxMenu* help_menu = new wxMenu;
01067 AddFunctionToMenu( wxID_ABOUT, help_menu, _("&About"), _("&About"), &a2dEditorFrame::OnAbout );
01068
01069 m_menuBar->Append( file_menu, _("&File") );
01070 m_menuBar->Append( m_editMenu, _("&Edit") );
01071 m_menuBar->Append( optionMenu, _("&Options") );
01072 m_menuBar->Append( toolMenu, _("&Tools") );
01073 m_menuBar->Append( drawMenu, _("&Show") );
01074 m_menuBar->Append( refMenu, _("&Action") );
01075 m_menuBar->Append( performMenu, _("&Perform Operation") );
01076 m_menuBar->Append( menuSettings, _("Settings") );
01077 m_menuBar->Append( menuLayers, _("Layers") );
01078 m_menuBar->Append( dlg_menu, _("&Dialogs"));
01079 #if defined(_DEBUG)
01080 m_menuBar->Append( drawTest, _("&Test"));
01081 #endif
01082 m_menuBar->Append( help_menu, _("&Help") );
01083
01084 SetupToolbar();
01085
01086
01087
01088 }
01089
01090 void a2dEditorFrame::CreateThemeXRC()
01091 {
01092 CreateStatusBarThemed( wxT("default") );
01093
01094 m_menuBar = new wxMenuBar;
01095 SetMenuBar(m_menuBar);
01096
01097 #if wxUSE_XRC
01098 if(wxXmlResource::Get())
01099 {
01100 wxXmlResource::Get()->InitAllHandlers();
01101 wxXmlResource::Get()->AddHandler(new a2dMenuBarXmlHandler);
01102 wxXmlResource::Get()->AddHandler(new a2dMenuXmlHandler);
01103 wxXmlResource::Get()->AddHandler(new a2dToolBarXmlHandler);
01104
01105 wxString art2d = a2dGeneralGlobals->GetWxArt2DVar( true );
01106 art2d += wxT("art/resources/");
01107
01108
01109 wxString aResName = wxT("a2dEditorFrame.xrc");
01110 if(!wxXmlResource::Get()->Load( art2d + aResName))
01111 wxMessageBox(wxString::Format(_("Error load XRC-file '%s'.\nWorking directory is '%s'"),aResName.c_str(),wxGetCwd().c_str()));
01112 }
01113
01114 wxXmlResource::Get()->LoadObject(this, wxT("frameMenu"), wxT("a2dMenuBar"));
01115 wxXmlResource::Get()->LoadObject(this, wxT("toolbar"), wxT("a2dToolBar"));
01116 #endif
01117 }
01118
01119 void a2dEditorFrame::CreateThemeTest()
01120 {
01121
01122
01123
01124
01125
01126
01127
01128
01129
01130
01131
01132
01133 CreateThemeDefault();
01134
01135 }
01136
01137 void a2dEditorFrame::OnUpdateUI( wxUpdateUIEvent& event )
01138 {
01139 }
01140
01141 void a2dEditorFrame::FillData(wxCommandEvent& event)
01142 {
01143 a2dCanvasObject* datatree = m_canvas->GetShowObject();
01144
01145 a2dRect *tr = new a2dRect(-500,750,900,80 );
01146 tr->SetStroke(wxColour(229,5,64 ),0);
01147 tr->SetFill(wxColour(0,117,245));
01148 datatree->Append( tr );
01149
01150 a2dCanvasObjectReference* ref1 = new a2dCanvasObjectReference(1500,-500, tr );
01151
01152 ref1->SetRotation(35);
01153 datatree->Append( ref1 );
01154
01155
01156 a2dText* tt=new a2dText( _T("Hello NON rotated text in a2dCanvas World"), -500, 750,
01157 a2dFont( 80.0, wxDECORATIVE, wxITALIC ) );
01158 tt->SetFill(wxColour(0,10,200));
01159 tt->SetStroke(*wxGREEN);
01160 datatree->Append( tt );
01161
01162 a2dText* tt2=new a2dText( _T("Hello NON rotated \ntext in\n a2dCanvas World"), -500, 550,
01163 a2dFont( 50.0 ,wxDECORATIVE, wxITALIC ) );
01164 tt2->SetFill( *a2dTRANSPARENT_FILL );
01165 tt2->SetStroke(*wxGREEN);
01166 datatree->Append( tt2 );
01167
01168
01169 a2dArc* aca2 = new a2dArc( -630.0,350.0, -730.0,-200.0, -730.0,250.0 );
01170 aca2->SetFill(*a2dTRANSPARENT_FILL);
01171 aca2->SetStroke( wxColour(1,215,6 ), 10, a2dSTROKE_SOLID);
01172 datatree->Prepend( aca2 );
01173
01174
01175 m_canvas->SetMappingShowAll();
01176 }
01177