21 #include "wx/colordlg.h" 
   23 #if wxCHECK_VERSION(2, 5, 0) 
   24 #if !WXWIN_COMPATIBILITY_2_4 
   25 #include "wx/numdlg.h" 
   29 #include <wx/wfstream.h> 
   31 #include <wx/xrc/xmlres.h> 
   32 #include <wx/docview/xh_a2dmenu.h> 
   36 #include "wx/canextobj/sttoolext.h" 
   38 #if wxART2D_USE_CANEXTOBJ 
   44 #endif //wxART2D_USE_GDSIO 
   46 #include "images/smile.xpm" 
   58 a2dEditorMultiFrameViewConnector::a2dEditorMultiFrameViewConnector( wxClassInfo* EditorClassInfo )
 
   61     m_editorClassInfo = EditorClassInfo;
 
   68 void a2dEditorMultiFrameViewConnector::OnPostCreateDocument( 
a2dTemplateEvent& event )
 
   79         wxLogMessage( wxT( 
"No view available for this document in a2dEditorMultiFrameViewConnector" ) );
 
   85         wxLogMessage( wxT( 
"a2dEditorMultiFrameViewConnector no view was created" ) );
 
  103             editorFrame->
Create( 
false, 
false,
 
  110             editorFrame->SetDrawingPart( canvas->GetDrawingPart() );
 
  111             drawer->
SetDisplayWindow( editorFrame->GetDrawingPart()->GetDisplayWindow() );
 
  124             drawer->
SetDisplayWindow( editorFrame->GetDrawingPart()->GetDisplayWindow() );
 
  127         editorFrame->Enable();
 
  128         editorFrame->Show( 
true );
 
  130     else if ( drawer->
GetViewTypeName() == wxT( 
"Drawing Anti Aliased View Frame" ) )
 
  136             editorFrame->
Create( 
false,
 
  145             editorFrame->SetDrawingPart( canvas->GetDrawingPart() );
 
  146             drawer->
SetDisplayWindow( editorFrame->GetDrawingPart()->GetDisplayWindow() );
 
  160             drawer->
SetDisplayWindow( editorFrame->GetDrawingPart()->GetDisplayWindow() );
 
  163         editorFrame->Enable();
 
  164         editorFrame->Show( 
true );
 
  167         wxLogMessage( wxT( 
"a2dEditorMultiFrameViewConnector not a -Drawing View Frame-, no view was created" ) );
 
  176 a2dEditorFrameEvent::a2dEditorFrameEvent( 
a2dEditorFrame* editorFrame, wxEventType type, 
int id )
 
  177     : wxEvent( id, type )
 
  179     SetEventObject( editorFrame );
 
  187 wxEvent* a2dEditorFrameEvent::Clone( 
void )
 const 
  192 DEFINE_EVENT_TYPE( a2dEVT_THEME_EVENT )
 
  193 DEFINE_EVENT_TYPE( a2dEVT_INIT_EVENT )
 
  196 const 
long TOOLOPTION_FIRST = wxNewId();
 
  197 const 
long TOOLOPTION_ONTOP = TOOLOPTION_FIRST;
 
  198 const 
long TOOLOPTION_RECTANGLE = wxNewId();
 
  199 const 
long TOOLOPTION_REDRAW = wxNewId();
 
  200 const 
long TOOLOPTION_COPY = wxNewId();
 
  202 const 
long TOOLOPTION_FILLED = wxNewId();
 
  203 const 
long TOOLOPTION_WIRE = wxNewId();
 
  204 const 
long TOOLOPTION_INVERT = wxNewId();
 
  205 const 
long TOOLOPTION_WIRE_ZERO_WIDTH = wxNewId();
 
  206 const 
long TOOLOPTION_INVERT_ZERO_WIDTH = wxNewId();
 
  207 const 
long TOOLOPTION_LAST = TOOLOPTION_INVERT_ZERO_WIDTH;
 
  209 const 
long MSHOW_T = wxNewId();
 
  210 const 
long MSHOW_FIRST = wxNewId();
 
  211 const 
long MSHOW_LIBPOINTS = wxNewId();
 
  212 const 
long MSHOW_LIB = wxNewId();
 
  213 const 
long MSHOW_LAST = MSHOW_LIB;
 
  215 const 
long MSCREEN_T = wxNewId();
 
  220 const 
long Layer_view = wxNewId();
 
  221 const 
long a2dShapeClipboard_Copy = wxNewId();
 
  222 const 
long a2dShapeClipboard_Paste = wxNewId();
 
  223 const 
long a2dShapeClipboard_Drag = wxNewId();
 
  227     EVT_MENU( wxID_EXIT, a2dEditorFrame::Quit )
 
  232     EVT_MENU( wxID_ABOUT, a2dEditorFrame::OnAbout )
 
  233     EVT_MENU( wxID_UNDO, a2dEditorFrame::OnUndo )
 
  234     EVT_MENU( wxID_REDO, a2dEditorFrame::OnRedo )
 
  237     EVT_DO( a2dEditorFrame::OnDoEvent )
 
  238     EVT_UNDO( a2dEditorFrame::OnUndoEvent )
 
  242     EVT_CLOSE( a2dEditorFrame::OnCloseWindow )
 
  244     EVT_ACTIVATE( a2dEditorFrame::OnActivate )
 
  247     EVT_INIT_EVENT( a2dEditorFrame::OnInit )
 
  249     EVT_MENU( MSCREEN_T, a2dEditorFrame::FillData )
 
  253     EVT_MENU( a2dShapeClipboard_Copy,  a2dEditorFrame::OnCopyShape)
 
  254     EVT_MENU( a2dShapeClipboard_Paste, a2dEditorFrame::OnPasteShape)
 
  255     EVT_MENU( a2dShapeClipboard_Drag,  a2dEditorFrame::OnDragSimulate)
 
  256     EVT_UPDATE_UI( a2dShapeClipboard_Paste, a2dEditorFrame::OnUpdatePasteShape)
 
  257     EVT_UPDATE_UI( a2dShapeClipboard_Copy, a2dEditorFrame::OnUpdateCopyShape)
 
  261 a2dEditorFrame::a2dEditorFrame()
 
  264     m_initialized = 
false;
 
  265     m_drawingPart = NULL;
 
  271     m_initialized = 
false;
 
  272     m_drawingPart = NULL;
 
  275     Create( 
true, isParent, parent, pos, size, style );
 
  279                              wxFrame* parent, 
const wxPoint& pos , 
const wxSize& size, 
long style )
 
  281     m_drawingPart = NULL;
 
  282     m_initialized = 
false;
 
  289         m_drawingPart = canvas->GetDrawingPart();
 
  300     SetIcon( wxString( wxT( 
"chrt_icn" ) ) );
 
  319         m_drawingPart->
SetGrid( 
false );
 
  322     m_initialized = 
true;
 
  337     wxASSERT_MSG( docmanager, wxT( 
"a2dCentralCanvasCommandProcessor is needed by a2dEditorFrame" ) );
 
  349     pathList.Add( wxT( 
"../common/icons" ) );
 
  358 a2dEditorFrame::~a2dEditorFrame()
 
  362 void a2dEditorFrame::OnActivateViewSentFromChild( 
a2dViewEvent& viewevent )
 
  373             m_drawingPart = canview->GetDrawingPart();
 
  382             m_drawingPart = canview->GetDrawingPart();
 
  384             if ( canview && m_drawingPart->GetDrawing() && m_drawingPart->GetDrawing()->GetCommandProcessor() )
 
  386                 m_drawingPart->GetDrawing()->ConnectEvent( wxEVT_MENUSTRINGS, 
this );
 
  387                 m_drawingPart->GetDrawing()->ConnectEvent( wxEVT_DO, 
this );
 
  388                 m_drawingPart->GetDrawing()->ConnectEvent( wxEVT_UNDO, 
this );
 
  389                 m_drawingPart->GetDrawing()->ConnectEvent( wxEVT_REDO, 
this );
 
  394             m_drawingPart = canview->GetDrawingPart();
 
  395             if ( m_drawingPart->GetDrawing() && m_drawingPart->GetDrawing()->GetCommandProcessor() )
 
  398                 m_drawingPart->GetDrawing()->DisconnectEvent( wxEVT_DO, 
this );
 
  399                 m_drawingPart->GetDrawing()->DisconnectEvent( wxEVT_UNDO, 
this );
 
  400                 m_drawingPart->GetDrawing()->DisconnectEvent( wxEVT_REDO, 
this );
 
  410     wxTheClipboard->Clear();
 
  411     if ( !event.CanVeto() )
 
  417 void a2dEditorFrame::OnUndo( wxCommandEvent& WXUNUSED( event ) )
 
  419     if ( !m_drawingPart )
 
  422     if ( m_drawingPart->GetDrawing() && m_drawingPart->GetDrawing()->GetCommandProcessor() )
 
  423         m_drawingPart->GetDrawing()->GetCommandProcessor()->Undo();
 
  426 void a2dEditorFrame::OnRedo( wxCommandEvent& WXUNUSED( event ) )
 
  428     if ( !m_drawingPart )
 
  431     if ( m_drawingPart->GetDrawing() && m_drawingPart->GetDrawing()->GetCommandProcessor() )
 
  432         m_drawingPart->GetDrawing()->GetCommandProcessor()->Redo();
 
  435 void a2dEditorFrame::Update()
 
  440 void a2dEditorFrame::Quit( wxCommandEvent& WXUNUSED( event ) )
 
  447     if ( !m_initialized )
 
  457     if ( !m_drawingPart )
 
  460     if ( 
m_editMenu && m_drawingPart->GetDrawing() && 
event.GetEventObject() == m_drawingPart->GetDrawing()->GetCommandProcessor() )
 
  477     wxString cmdName = 
event.GetCommand()->GetName();
 
  479     if ( !m_drawingPart )
 
  482     if ( m_drawingPart->GetDrawing() && 
event.GetEventObject() == m_drawingPart->GetDrawing()->GetCommandProcessor() )
 
  487 void a2dEditorFrame::OnComEvent( 
a2dComEvent& event )
 
  492         a2dObject* 
object = 
property->GetRefObjectNA();
 
  514         SetStatusText( m_drawingPart->GetDrawing()->GetHabitat()->GetConnectionGenerator()->GetRouteMethodAsString(), 4 );
 
  516         wxUint16 lay = m_drawingPart->GetDrawing()->GetHabitat()->GetLayer();
 
  552     else if ( event.GetId() == a2dHabitat::sig_changedLayer )
 
  555         wxUint16 lay = m_drawingPart->GetDrawing()->GetHabitat()->GetLayer();
 
  563 void a2dEditorFrame::OnMenu( wxCommandEvent& event )
 
  565     if ( event.GetId() == Layer_view )
 
  574     else if ( event.GetId() == MSHOW_LIBPOINTS )
 
  576         ConnectDocument( a2dGetCmdh()->GetLibraryPoints() );
 
  620 void a2dEditorFrame::SetToolDragingMode( wxCommandEvent& event )
 
  622     m_menuBar->Check( TOOLOPTION_ONTOP, 
false );
 
  623     m_menuBar->Check( TOOLOPTION_RECTANGLE, 
false );
 
  624     m_menuBar->Check( TOOLOPTION_REDRAW, 
false );
 
  625     m_menuBar->Check( TOOLOPTION_COPY, 
false );
 
  626     if ( event.GetId() == TOOLOPTION_ONTOP )
 
  629         m_menuBar->Check( TOOLOPTION_ONTOP, 
true );
 
  631     if ( event.GetId() == TOOLOPTION_RECTANGLE )
 
  634         m_menuBar->Check( TOOLOPTION_RECTANGLE, 
true );
 
  636     if ( event.GetId() == TOOLOPTION_REDRAW )
 
  639         m_menuBar->Check( TOOLOPTION_REDRAW, 
true );
 
  641     if ( event.GetId() == TOOLOPTION_COPY )
 
  644         m_menuBar->Check( TOOLOPTION_COPY, 
true );
 
  648 void a2dEditorFrame::SetToolDrawingMode( wxCommandEvent& event )
 
  650     m_menuBar->Check( TOOLOPTION_FILLED, 
false );
 
  651     m_menuBar->Check( TOOLOPTION_WIRE, 
false );
 
  652     m_menuBar->Check( TOOLOPTION_INVERT, 
false );
 
  653     m_menuBar->Check( TOOLOPTION_WIRE_ZERO_WIDTH, 
false );
 
  654     m_menuBar->Check( TOOLOPTION_INVERT_ZERO_WIDTH, 
false );
 
  656     if ( event.GetId() == TOOLOPTION_FILLED )
 
  659         m_menuBar->Check( TOOLOPTION_FILLED, 
true );
 
  661     if ( event.GetId() == TOOLOPTION_WIRE )
 
  664         m_menuBar->Check( TOOLOPTION_WIRE, 
true );
 
  666     if ( event.GetId() == TOOLOPTION_INVERT )
 
  669         m_menuBar->Check( TOOLOPTION_INVERT, 
true );
 
  671     if ( event.GetId() == TOOLOPTION_WIRE_ZERO_WIDTH )
 
  674         m_menuBar->Check( TOOLOPTION_WIRE_ZERO_WIDTH, 
true );
 
  676     if ( event.GetId() == TOOLOPTION_INVERT_ZERO_WIDTH )
 
  679         m_menuBar->Check( TOOLOPTION_INVERT_ZERO_WIDTH, 
true );
 
  685     Connect( 
id, wxEVT_COMMAND_MENU_SELECTED, ( wxObjectEventFunction ) wxStaticCastEvent( wxCommandEventFunction, func ) );
 
  686     parentMenu->Append( 
id, text, helpString, check );
 
  689 void a2dEditorFrame::RemoveFromMenu( 
int id, wxMenu* parentMenu, wxObjectEventFunctionM func )
 
  691     Disconnect( 
id, wxEVT_COMMAND_MENU_SELECTED, ( wxObjectEventFunction ) wxStaticCastEvent( wxCommandEventFunction, func ) );
 
  692     parentMenu->Delete( 
id );
 
  695 void a2dEditorFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) )
 
  697     ( void )wxMessageBox( _T( 
"a2dEditorFrame\nKlaas Holwerda 2002" ),
 
  698                           _T( 
"About a2dEditorFrame" ), wxICON_INFORMATION | wxOK );
 
  801 void a2dEditorFrame::ShowLibs( wxCommandEvent& event )
 
  803     if ( event.GetId() == MSHOW_LIBPOINTS )
 
  805         ConnectDocument( a2dGetCmdh()->GetLibraryPoints() );
 
  811 void a2dEditorFrame::CreateStatusBarThemed( 
const wxString& themeName )
 
  813     CreateStatusBar( 6 );
 
  814     int widths[] = { 80, 120, -1, -1 , -1, -1 };
 
  815     SetStatusWidths( 6, widths );
 
  820     if ( themeName == wxT( 
"test" ) )
 
  822     if ( themeName == wxT( 
"default" ) )
 
  823         CreateThemeDefault();
 
  826 void a2dEditorFrame::SetupToolbar()
 
  829     wxToolBar* toolbar = 
new wxToolBar( 
this, wxNewId(), wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL | wxTB_FLAT | wxTB_DOCKABLE );
 
  830     toolbar->SetMargins( 2, 2 );
 
  831     SetToolBar( toolbar );
 
  834     toolbar->SetToolBitmapSize( wxSize( 32, 32 ) );
 
  879 void a2dEditorFrame::CreateThemeDefault()
 
  881     CreateStatusBarThemed( wxT( 
"default" ) );
 
  883     m_menuBar = 
new wxMenuBar;
 
  884     SetMenuBar( m_menuBar );
 
  889     wxMenu* file_menu = 
new wxMenu;
 
  893     AddCmdMenu( file_menu, CmdMenu_FileSaveAs() );
 
  895     file_menu->AppendSeparator();
 
  897     AddCmdMenu( file_menu, CmdMenu_PreviewView() );
 
  898     AddCmdMenu( file_menu, CmdMenu_PrintDocument() );
 
  899     AddCmdMenu( file_menu, CmdMenu_PreviewDocument() );
 
  900     AddCmdMenu( file_menu, CmdMenu_PrintSetup() );
 
  901     file_menu->AppendSeparator();
 
  903     wxMenu* file_import = 
new wxMenu;
 
  904     file_menu->Append( wxNewId(), wxT( 
"import file" ), file_import, _( 
"Import a file" ) );
 
  905     AddCmdMenu( file_import, CmdMenu_FileImport() );
 
  907     wxMenu* file_export_as = 
new wxMenu;
 
  908     file_menu->Append( wxNewId(), wxT( 
"Export As" ), file_export_as, _( 
"Export in other format" ) );
 
  909     AddCmdMenu( file_export_as, CmdMenu_FileExport() );
 
  911     file_export_as->AppendSeparator();
 
  912     AddCmdMenu( file_export_as, CmdMenu_ViewAsImage_Png() );
 
  913     AddCmdMenu( file_export_as, CmdMenu_ViewAsImage_Bmp() );
 
  914     AddCmdMenu( file_export_as, CmdMenu_DocumentAsImage_Png() );
 
  915     AddCmdMenu( file_export_as, CmdMenu_DocumentAsImage_Bmp() );
 
  916 #if wxART2D_USE_SVGIO 
  917     AddCmdMenu( file_export_as, CmdMenu_ViewAsSvg() );
 
  918 #endif //wxART2D_USE_SVGIO 
  919     file_menu->AppendSeparator();
 
  925     m_editMenu->Append( wxID_UNDO, _( 
"&Undo" ) );
 
  926     m_editMenu->Append( wxID_REDO, _( 
"&Redo" ) );
 
  928     Connect( MSHOW_FIRST, MSHOW_LAST, wxEVT_COMMAND_MENU_SELECTED, ( wxObjectEventFunction ) &a2dEditorFrame::ShowLibs );
 
  930     wxMenu* optionMenu = 
new wxMenu;
 
  931     AddFunctionToMenu( TOOLOPTION_ONTOP, optionMenu, _( 
"Drag &OnTop" ), _( 
"Drag on top of other objects" ), &a2dEditorFrame::SetToolDragingMode, 
true );
 
  932     AddFunctionToMenu( TOOLOPTION_RECTANGLE, optionMenu, _( 
"Drag &Rectangle" ), _( 
"Drag using a rectangle" ), &a2dEditorFrame::SetToolDragingMode, 
true );
 
  933     AddFunctionToMenu( TOOLOPTION_REDRAW, optionMenu, _( 
"Drag Re &Draw" ), _( 
"Drag and redraw all objects all the time" ), &a2dEditorFrame::SetToolDragingMode, 
true );
 
  934     AddFunctionToMenu( TOOLOPTION_COPY, optionMenu, _( 
"Drag &Copy" ), _( 
"Drag copy of original untill finished drag" ), &a2dEditorFrame::SetToolDragingMode, 
true );
 
  935     AddFunctionToMenu( TOOLOPTION_FILLED, optionMenu, _( 
"Drag/Draw Filled" ), _( 
"Drag/Draw filled objects" ), &a2dEditorFrame::SetToolDragingMode, 
true );
 
  936     AddFunctionToMenu( TOOLOPTION_WIRE, optionMenu, _( 
"Drag/Draw OutLine" ), _( 
"Drag/Draw an wireframe/outline of object" ), &a2dEditorFrame::SetToolDrawingMode, 
true );
 
  937     AddFunctionToMenu( TOOLOPTION_INVERT, optionMenu, _( 
"Drag/Draw Invert" ), _( 
"Drag/Draw an inverted wireframe of object" ), &a2dEditorFrame::SetToolDrawingMode, 
true );
 
  938     AddFunctionToMenu( TOOLOPTION_WIRE_ZERO_WIDTH, optionMenu, _( 
"Drag/Draw OutLine zero" ), _( 
"Drag/Draw zero width wireframe/outline of object" ), &a2dEditorFrame::SetToolDrawingMode, 
true );
 
  939     AddFunctionToMenu( TOOLOPTION_INVERT_ZERO_WIDTH, optionMenu, _( 
"Drag/Draw Invert zero" ), _( 
"Drag/Draw a zero width inverted wireframe of object" ), &a2dEditorFrame::SetToolDrawingMode, 
true );
 
  940     optionMenu->AppendSeparator();
 
  941     AddCmdMenu( optionMenu, CmdMenu_Option_SplinePoly() );
 
  942     AddCmdMenu( optionMenu, CmdMenu_Option_CursorCrosshair() );
 
  943     AddCmdMenu( optionMenu, CmdMenu_Option_RescaleAtReSize() );
 
  944     AddCmdMenu( optionMenu, CmdMenu_Option_ReverseLayers() );
 
  948     wxMenu* cameleonMenu = 
new wxMenu;
 
  949     AddCmdMenu( cameleonMenu,CmdMenu_ShowDlgCameleonModal() ); 
 
  950     AddCmdMenu( cameleonMenu,CmdMenu_ShowDiagram() ); 
 
  951     AddCmdMenu( cameleonMenu,CmdMenu_ShowSymbol() ); 
 
  953     AddCmdMenu( cameleonMenu,CmdMenu_Selected_CameleonSymbol() );             
 
  954     AddCmdMenu( cameleonMenu,CmdMenu_Selected_CameleonDiagram() );             
 
  955     AddCmdMenu( cameleonMenu,CmdMenu_Selected_CloneCameleonFromInst() );             
 
  956     AddCmdMenu( cameleonMenu,CmdMenu_Selected_FlattenCameleon() );             
 
  957     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_CameleonInst() );             
 
  958     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_CameleonInstDlg() );             
 
  959     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_Cameleon() ); 
 
  960     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_Cameleon_BuildIn() ); 
 
  961     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_Port() ); 
 
  962     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_CameleonRefDlg() );         
 
  963     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_CameleonRefDlg_Symbol() );         
 
  964     AddCmdMenu( cameleonMenu,CmdMenu_PushTool_CameleonRefDlg_Diagram() );         
 
  966     wxMenu* toolMenu = 
new wxMenu;
 
  968     AddCmdMenu( toolMenu, CmdMenu_PushTool_FastSelect() );
 
  969     AddCmdMenu( toolMenu, CmdMenu_PushTool_FastSelect2() );
 
  970     AddCmdMenu( toolMenu, CmdMenu_PushTool_RecursiveEdit() );
 
  971     AddCmdMenu( toolMenu, CmdMenu_PushTool_MultiEdit() );
 
  972     AddCmdMenu( toolMenu, CmdMenu_PushTool_Drag() );
 
  973     AddCmdMenu( toolMenu, CmdMenu_PushTool_Copy() );
 
  974     AddCmdMenu( toolMenu, CmdMenu_PushTool_Rotate() );
 
  975     AddCmdMenu( toolMenu, CmdMenu_PushTool_Delete() );
 
  976     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawText() );
 
  977     AddCmdMenu( toolMenu, CmdMenu_PushTool_Image() );
 
  978     AddCmdMenu( toolMenu, CmdMenu_PushTool_Link() );
 
  979     AddCmdMenu( toolMenu, CmdMenu_PushTool_FollowLinkDocDrawCam() );
 
  980     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawRectangleFast() );
 
  981     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawCircleFast() );
 
  982     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawLine() );
 
  983     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawLineScaledArrow() );
 
  984     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawEllipse() );
 
  985     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawEllipticArc() );
 
  986     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawEllipticArc_Chord() );
 
  987     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawArc() );
 
  988     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawArc_Chord() );
 
  989     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawPolylineLFast() );
 
  990     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawPolygonLFast() );
 
  991     AddCmdMenu( toolMenu, CmdMenu_PushTool_Property() );
 
  992     AddCmdMenu( toolMenu, CmdMenu_PushTool_FastDragMulti() );
 
  993     AddCmdMenu( toolMenu, CmdMenu_PushTool_FastCopyMulti() );
 
  994     AddCmdMenu( toolMenu, CmdMenu_PushTool_Measure() );
 
  995     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawWirePolylineL() );
 
  996     AddCmdMenu( toolMenu, CmdMenu_PushTool_DrawVPath() );
 
  997     AddCmdMenu( toolMenu, CmdMenu_PushTool_Port() );
 
  998     AddCmdMenu( toolMenu, CmdMenu_PushTool_Cameleon() );
 
 1000     toolMenu->AppendSeparator();
 
 1001     AddCmdMenu( toolMenu, CmdMenu_RotateObject90Left() );
 
 1002     AddCmdMenu( toolMenu, CmdMenu_RotateObject90Right() );
 
 1006     AddCmdMenu( toolMenu, CmdMenu_SetNormalizeFactor() );
 
 1012     wxMenu* drawMenu = 
new wxMenu;
 
 1013     AddCmdMenu( drawMenu, CmdMenu_ShowDlgStructure() );
 
 1014     AddFunctionToMenu( MSHOW_LIBPOINTS, drawMenu, _( 
"Point Library" ), _( 
"a library used for end and begin points of lines" ), &a2dEditorFrame::OnMenu );
 
 1016     wxMenu* refMenu = 
new wxMenu;
 
 1023     wxMenu* performMenu = 
new wxMenu;
 
 1024     wxMenu* selected = 
new wxMenu;
 
 1025     wxMenu* groups = 
new wxMenu;
 
 1030     performMenu->Append( wxNewId(), wxT( 
"selected objects" ), selected, _( 
"operation on selected objects" ) );
 
 1032     AddCmdMenu( selected, CmdMenu_Selected_SelectAll() );
 
 1033     AddCmdMenu( selected, CmdMenu_Selected_DeSelectAll() );
 
 1034     AddCmdMenu( selected, CmdMenu_Selected_Delete() );
 
 1035     AddCmdMenu( selected, CmdMenu_Selected_MoveXY() );
 
 1036     AddCmdMenu( selected, CmdMenu_Selected_MoveLayer() );
 
 1037     AddCmdMenu( selected, CmdMenu_Selected_CopyXY() );
 
 1038     AddCmdMenu( selected, CmdMenu_Selected_CopyLayer() );
 
 1039     AddCmdMenu( selected, CmdMenu_Selected_Transform() );
 
 1040     AddCmdMenu( selected, CmdMenu_Selected_Rotate() );
 
 1041     AddCmdMenu( selected, CmdMenu_Selected_RotateObject90Right() );
 
 1042     AddCmdMenu( selected, CmdMenu_Selected_RotateObject90Left() );
 
 1043     AddCmdMenu( selected, CmdMenu_Selected_Align_MinX() );
 
 1044     AddCmdMenu( selected, CmdMenu_Selected_Align_MaxX() );
 
 1045     AddCmdMenu( selected, CmdMenu_Selected_Align_MinY() );
 
 1046     AddCmdMenu( selected, CmdMenu_Selected_Align_MaxY() );
 
 1047     AddCmdMenu( selected, CmdMenu_Selected_Align_MidX() );
 
 1048     AddCmdMenu( selected, CmdMenu_Selected_Align_MidY() );
 
 1049     AddCmdMenu( selected, CmdMenu_Selected_Group() );
 
 1050     AddCmdMenu( selected, CmdMenu_Selected_ImageToRectangles() );
 
 1051     AddCmdMenu( selected, CmdMenu_Selected_ToTop() );
 
 1052     AddCmdMenu( selected, CmdMenu_Selected_ToBack() );
 
 1053     AddCmdMenu( selected, CmdMenu_Selected_SetStyle() );
 
 1054     AddCmdMenu( selected, CmdMenu_Selected_SetExtStyle() );
 
 1055     AddCmdMenu( selected, CmdMenu_Selected_ConvertToPolygonPolylinesWithArcs() );
 
 1056     AddCmdMenu( selected, CmdMenu_Selected_ConvertToPolygonPolylinesWithoutArcs() );
 
 1057     AddCmdMenu( selected, CmdMenu_Selected_ConvertToPolylines() );
 
 1058     AddCmdMenu( selected, CmdMenu_Selected_ConvertLinesArcs() );
 
 1059     AddCmdMenu( selected, CmdMenu_Selected_ConvertPolygonToArcs() );
 
 1060     AddCmdMenu( selected, CmdMenu_Selected_ConvertPolylineToArcs() );
 
 1061     AddCmdMenu( selected, CmdMenu_Selected_ConvertToVPaths() );
 
 1062     AddCmdMenu( selected, CmdMenu_Selected_UnGroup() );
 
 1063     AddCmdMenu( selected, CmdMenu_Selected_UnGroupDeep() );
 
 1064     AddCmdMenu( selected, CmdMenu_Selected_Merge() );
 
 1065     AddCmdMenu( selected, CmdMenu_Selected_Offset() );
 
 1066     AddCmdMenu( selected, CmdMenu_Selected_CreateRing() );
 
 1068     wxMenu* ungroupObjects  = 
new wxMenu;
 
 1069     refMenu->Append( wxNewId(), wxT( 
"ungroup objects" ), ungroupObjects, _( 
"un-group selected objects" ) );
 
 1070     AddCmdMenu( ungroupObjects, CmdMenu_Selected_UnGroup() );
 
 1071     AddCmdMenu( ungroupObjects, CmdMenu_Selected_UnGroupDeep() );
 
 1073 #if wxART2D_USE_KBOOL 
 1077     performMenu->Append( wxNewId(), wxT( 
"layer groups" ), groups, _( 
"operation on objects in layer groups" ) );
 
 1078     AddCmdMenu( groups, CmdMenu_ShowDlgGroups() );
 
 1079     AddCmdMenu( groups, CmdMenu_GroupAB_Offset() );
 
 1080     AddCmdMenu( groups, CmdMenu_GroupAB_Smooth() );
 
 1081     AddCmdMenu( groups, CmdMenu_GroupAB_CreateRing() );
 
 1082     AddCmdMenu( groups, CmdMenu_GroupAB_Delete() );
 
 1083     AddCmdMenu( groups, CmdMenu_GroupAB_Move() );
 
 1084     AddCmdMenu( groups, CmdMenu_GroupAB_Copy() );
 
 1085     AddCmdMenu( groups, CmdMenu_GroupAB_ToArcs() );
 
 1087     wxMenu* booleanObjects  = 
new wxMenu;
 
 1088     groups->Append( wxNewId(), wxT( 
"boolean objects" ), booleanObjects, _( 
"boolean group A-B objects" ) );
 
 1091     AddCmdMenu( booleanObjects, CmdMenu_GroupAB_Or() );
 
 1092     AddCmdMenu( booleanObjects, CmdMenu_GroupAB_And() );
 
 1093     AddCmdMenu( booleanObjects, CmdMenu_GroupAB_Exor() );
 
 1094     AddCmdMenu( booleanObjects, CmdMenu_GroupAB_AsubB() );
 
 1095     AddCmdMenu( booleanObjects, CmdMenu_GroupAB_BsubA() );
 
 1097 #endif //wxART2D_USE_KBOOL 
 1099     AddCmdMenu( performMenu, CmdMenu_EmptyDocument() );
 
 1100     AddCmdMenu( performMenu, CmdMenu_EmptyShownObject() );
 
 1102     wxMenu* menuSettings = 
new wxMenu;
 
 1104     AddCmdMenu( menuSettings, CmdMenu_ShowDlgStyle() );
 
 1105     AddCmdMenu( menuSettings, CmdMenu_SetFont() );
 
 1106     AddCmdMenu( menuSettings, CmdMenu_SetBackgroundStyle() );
 
 1107     AddCmdMenu( menuSettings, CmdMenu_DrawGridLines() );
 
 1108     AddCmdMenu( menuSettings, CmdMenu_DrawGridAtFront() );
 
 1109     AddCmdMenu( menuSettings, CmdMenu_DrawGrid() );
 
 1110     AddCmdMenu( menuSettings, CmdMenu_SetSnap() );
 
 1111     AddCmdMenu( menuSettings, CmdMenu_SetDrawWireFrame() );
 
 1113     wxMenu* menuLayers = 
new wxMenu;
 
 1115     wxMenu* savelayersLoc  = 
new wxMenu;
 
 1116     menuLayers->Append( wxNewId(), wxT( 
"save layerfile" ), savelayersLoc, _( 
"save layer file to chosen location" ) );
 
 1118         AddCmdMenu( savelayersLoc, CmdMenu_SaveLayers() );
 
 1119         AddCmdMenu( savelayersLoc, CmdMenu_SaveLayersHome() );
 
 1120         AddCmdMenu( savelayersLoc, CmdMenu_SaveLayersLastDir() );
 
 1121         AddCmdMenu( savelayersLoc, CmdMenu_SaveLayersCurrentDir() );
 
 1123     wxMenu* loadlayersLoc  = 
new wxMenu;
 
 1124     menuLayers->Append( wxNewId(), wxT( 
"load layerfile" ), loadlayersLoc, _( 
"load layer file from chosen location" ) );
 
 1126         AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayers() );
 
 1127         AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayersHome() );
 
 1128         AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayersLastDir() );
 
 1129         AddCmdMenu( loadlayersLoc, CmdMenu_LoadLayersCurrentDir() );
 
 1131     AddCmdMenu( menuLayers, CmdMenu_SetLayerDlg() );
 
 1132     AddCmdMenu( menuLayers, CmdMenu_SetLayerDlgModeless() );
 
 1133     AddCmdMenu( menuLayers, CmdMenu_SetTargetDlg() );
 
 1135     AddFunctionToMenu( Layer_view, menuLayers, _( 
"Show layer view" ), _( 
"layers of this document" ), &a2dEditorFrame::OnMenu, 
true );
 
 1137     wxMenu* layerDlgInit  = 
new wxMenu;
 
 1138     menuLayers->Append( wxNewId(), wxT( 
"LayerDlg" ), layerDlgInit, _( 
"Show LayerDlg" ) );
 
 1139     AddCmdMenu( layerDlgInit, CmdMenu_ShowDlgLayersDocument() );
 
 1140     AddCmdMenu( layerDlgInit, CmdMenu_ShowDlgLayersDrawing() );
 
 1141     AddCmdMenu( layerDlgInit, CmdMenu_ShowDlgLayersGlobal() );
 
 1143     wxMenu* orderDlgInit  = 
new wxMenu;
 
 1144     menuLayers->Append( wxNewId(), wxT( 
"OrderDlg" ), orderDlgInit, _( 
"Show OrderDlg" ) );
 
 1145     AddCmdMenu( orderDlgInit, CmdMenu_ShowDlgLayerOrderDocument() );
 
 1146     AddCmdMenu( orderDlgInit, CmdMenu_ShowDlgLayerOrderGlobal() );
 
 1148     wxMenu* dlg_menu = 
new wxMenu;
 
 1150     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgPathSettings() );
 
 1151     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgSettings() );
 
 1152     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgTrans() );
 
 1153     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgTools() );
 
 1154     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgStyle() );
 
 1155     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgSnap() );
 
 1156     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgStructure() );
 
 1157     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgIdentify() );
 
 1158     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgMeasure() );
 
 1159     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgCoordEntry() );
 
 1162     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgLayersDocument() );
 
 1163     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgGroups() );
 
 1164     AddCmdMenu( dlg_menu, CmdMenu_ShowDlgPropEdit() );
 
 1167     wxMenu* drawTest = 
new wxMenu;
 
 1168     drawTest->Append( MSCREEN_T, wxT( 
"test screen" ), wxT( 
"whatever" ) );
 
 1171     wxMenu* help_menu = 
new wxMenu;
 
 1172     AddFunctionToMenu( wxID_ABOUT, help_menu, _( 
"&About" ), _( 
"&About" ), &a2dEditorFrame::OnAbout );
 
 1174     m_menuBar->Append( file_menu, _( 
"&File" ) );
 
 1175     m_menuBar->Append( 
m_editMenu, _( 
"&Edit" ) );
 
 1176     m_menuBar->Append( optionMenu, _( 
"&Options" ) );
 
 1177     m_menuBar->Append( cameleonMenu,  _( 
"&Cameleons" ) );
 
 1178     m_menuBar->Append( toolMenu, _( 
"&Tools" ) );
 
 1179     m_menuBar->Append( drawMenu, _( 
"&Show" ) );
 
 1180     m_menuBar->Append( refMenu, _( 
"&Action" ) );
 
 1181     m_menuBar->Append( performMenu, _( 
"&Perform Operation" ) );
 
 1182     m_menuBar->Append( menuSettings, _( 
"Settings" ) );
 
 1183     m_menuBar->Append( menuLayers, _( 
"Layers" ) );
 
 1184     m_menuBar->Append( dlg_menu, _( 
"&Dialogs" ) );
 
 1186     m_menuBar->Append( drawTest, _( 
"&Test" ) );
 
 1188     m_menuBar->Append( help_menu, _( 
"&Help" ) );
 
 1196 void a2dEditorFrame::CreateThemeXRC()
 
 1198     CreateStatusBarThemed( wxT( 
"default" ) );
 
 1200     m_menuBar = 
new wxMenuBar;
 
 1201     SetMenuBar( m_menuBar );
 
 1204     if( wxXmlResource::Get() )
 
 1206         wxXmlResource::Get()->InitAllHandlers();
 
 1212         art2d += wxT( 
"art/resources/" );
 
 1215         wxString aResName = wxT( 
"a2dEditorFrame.xrc" );
 
 1216         if( !wxXmlResource::Get()->Load( art2d + aResName ) )
 
 1217             wxMessageBox( wxString::Format( _( 
"Error load XRC-file '%s'.\nWorking directory is '%s'" ), aResName.c_str(), wxGetCwd().c_str() ) );
 
 1220     wxXmlResource::Get()->LoadObject( 
this, wxT( 
"frameMenu" ), wxT( 
"a2dMenuBar" ) );
 
 1221     wxXmlResource::Get()->LoadObject( 
this, wxT( 
"toolbar" ), wxT( 
"a2dToolBar" ) );
 
 1223     m_editMenu = m_menuBar->GetMenu( m_menuBar->FindMenu( wxT(
"Edit") ) );
 
 1227 void a2dEditorFrame::CreateThemeTest()
 
 1241     CreateThemeDefault();
 
 1245 void a2dEditorFrame::OnUpdateUI( wxUpdateUIEvent& event )
 
 1249 void a2dEditorFrame::FillData( wxCommandEvent& event )
 
 1254     tr->
SetStroke( wxColour( 229, 5, 64 ), 0 );
 
 1255     tr->
SetFill( wxColour( 0, 117, 245 ) );
 
 1261     datatree->
Append( ref1 );
 
 1264     a2dText* tt = 
new a2dText( _T( 
"Hello NON rotated text in a2dCanvas World" ), -500, 750,
 
 1265                                a2dFont( 80.0, wxDECORATIVE, wxITALIC ) );
 
 1266     tt->
SetFill( wxColour( 0, 10, 200 ) );
 
 1270     a2dText* tt2 = 
new a2dText( _T( 
"Hello NON rotated \ntext in\n a2dCanvas World" ), -500, 550,
 
 1271                                 a2dFont( 50.0 , wxDECORATIVE, wxITALIC ) );
 
 1277     a2dArc* aca2 = 
new  a2dArc( -630.0, 350.0, -730.0, -200.0, -730.0, 250.0 );
 
 1283     m_drawingPart->SetMappingShowAll();
 
 1286 void a2dEditorFrame::OnDragSimulate(wxCommandEvent& event)
 
 1289     drag->SetDropAndDrop( 
true );
 
 1294 void a2dEditorFrame::OnCopyShape(wxCommandEvent& WXUNUSED(event))
 
 1297     a2dDnDCanvasObjectDataCVG* copied = 
new a2dDnDCanvasObjectDataCVG( part);
 
 1298     copied->SetExportWidthHeightImage( 10000 );
 
 1311         copied->Reconnect();
 
 1313         wxClipboardLocker clipLocker;
 
 1316             wxLogError(wxT(
"Can't open the clipboard"));
 
 1321         wxTheClipboard->AddData( copied );
 
 1325 void a2dEditorFrame::OnPasteShape(wxCommandEvent& WXUNUSED(event))
 
 1327     wxClipboardLocker clipLocker;
 
 1330         wxLogError(wxT(
"Can't open the clipboard"));
 
 1338         a2dDnDCanvasObjectDataCVG shapeDataObject( part);
 
 1340         shapeDataObject.SetImportWidthHeightImage( 10000 );
 
 1341         if ( wxTheClipboard->GetData(shapeDataObject) )
 
 1348             setflags2.SetSkipNotRenderedInDrawing( 
true );
 
 1366                 (
a2dStToolContr *) (part->GetCanvasToolContr())->PushTool( dragnew );
 
 1370                 wxLogStatus(wxT(
"No shape on the clipboard"));
 
 1375             wxLogStatus(wxT(
"No shape on the clipboard"));
 
 1380 void a2dEditorFrame::OnUpdatePasteShape( wxUpdateUIEvent& event  )
 
 1383     a2dDnDCanvasObjectDataCVG shapeDataObject( part);
 
 1384     wxDataFormat formats[10];
 
 1385     shapeDataObject.GetAllFormats( formats );
 
 1386     int nr = shapeDataObject.GetFormatCount();
 
 1390     for ( 
int i = 0 ; i < nr ; i++ )
 
 1392         ret |= wxTheClipboard->IsSupported( formats[i] );
 
 1395     event.Enable( ret );
 
 1398 void a2dEditorFrame::OnUpdateCopyShape( wxUpdateUIEvent& event  )
 
 1414     event.Enable( ret );
 
static const a2dCanvasObjectFlagsMask SELECTED2
Display Part of a a2dDrawing, in which a2dCanvasObjects are shown. 
wxPoint2DDouble a2dPoint2D
this to define if coordinate numbers are integer or doubles 
(In) Visible property that can be added to Docview Objects. 
#define wxDynamicCast(obj, className)
Define wxDynamicCast so that it will give a compiler error for unrelated types. 
Base class for all types of strokes, understood by a2dDrawer2D classes. 
void SetRoot(a2dDrawing *root, bool recurse=true)
Sets this object to a a2dCanvasDocument. 
wxUint16 GetLayer() const 
layer set for new objects. 
a2dPoint2D GetCentre() const 
get centre 
a2dCanvasObjectReference is a reference to any a2dCanvasObject derived class. 
static const a2dSignal sm_changedProperty
a2dView * AddDocumentCreateView(a2dDocument *newDoc, const wxString &viewTypeName=wxT(""), a2dDocumentFlagMask documentflags=a2dREFDOC_NEW, a2dTemplateFlagMask docTemplateFlags=a2dTemplateFlag::VISIBLE, a2dTemplateFlagMask viewTemplateFlags=a2dTemplateFlag::VISIBLE)
adds the given document, and creates a view for it. 
void SetRotation(double rotation)
Sets a rotation of this object. 
View on a a2dCanvasDocument. 
The a2dViewTemplate class is used to model the relationship between a document class and a view class...
wxClassInfo * m_editorClassInfo
For dynamic creation of appropriate instances. 
a2dCanvasObject * GetRootObject() const 
get the root object, which holds the objects in the document 
const a2dViewTemplateList & GetViewTemplates()
returns a reference to the a2dViewTemplateList, which contains all a2dViewTemplate's. 
a2dDrawing * GetRoot() const 
get a2dCanvasDocument of the object. 
virtual void SetDisplayWindow(wxWindow *display)
Set the display window. 
#define EVT_DO(func)
event sent from a2DocumentCommandProcessor when a command is initially done 
virtual bool Update(UpdateMode mode)
Update the state of the object according to its current position etc. 
wxString & GetUndoMenuLabel()
by default this is a2dCommandProcessor::GetUndoMenuLabel() 
Defines a font to be set to a2dDrawer2D or stored in a2dCanvsObject etc. 
void AddCmdToToolbar(const a2dMenuIdItem &cmdId)
add items to toolbar using a predefined command ID. 
void OnActivate(wxActivateEvent &event)
intercepted to initialize redo and undo menu's 
void SetBackgroundFill(const a2dFill &backgroundfill)
background fill for the canvas 
a2dDrawing * GetDrawing() const 
get the root object, which holds the objects in the document. 
void SetGrid(bool grid)
Set grid on/off. 
a2dView * GetView()
Get the view created. 
a2dEditorFrame()
this makes dynamic creation possible ( e.g. a derived a2dEditorFrame ) 
a2dView event, to report events in the a2dView class 
a2dCanvasObject is the base class for Canvas Objects. 
wxPoint & GetInitialPosition()
Get position used for new created views or frames or windows. 
Docview framework its controlling class. 
virtual void SetBufferSize(int w, int h)
sets buffersize ( if used ) for the a2dDrawer2D 
a2dLayers * GetLayerSetup()
Get the layersettings for the canvas. 
bool GetActive()
when ::wxEVT_ACTIVATE_VIEW get activation value of the event 
a2dCanvasObjectList * GetChildObjectList()
get the list where the child objects are stored in. 
#define EVT_MENUSTRINGS(func)
event sent to a2dCommandProcessorEvents to adjust menu strings (e.g. for current undo/redo command) ...
void OnPostCreateView(a2dTemplateEvent &event)
Creates a a2dEditorFrame and sets its its a2dCanvas as the DisplayWindow for the view. 
bool GetSelected() const 
is the object selected flag set 
void SetGridSize(wxUint16 gridsize)
set size of grid circle 
bool IsVisible() const 
get visibility (rendering depends on layer settings also) 
bool Create(bool createCanvas, bool isParent, wxFrame *parent, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE)
delayed creation of window. 
Holds a view on a a2dDocument. 
used to theme a a2dEditorFrame 
void SetGridX(double gridx)
Set grid distance in X. 
event sent to a2dViewConnector 
a2dText is an abstract base class. 
void SetGridAtFront(bool gridatfront)
Set grid setting for drawing grid in front or back. 
a2dDocument * GetDocument()
the document created. 
bool Create(bool parentFrame, wxWindow *frame, a2dView *view=NULL, wxWindowID id=-1, const wxString &title=wxT("a2dDocumentFrame"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE, const wxString &name=wxT("frame"))
Constructor for two-step-creation (2nd step) 
void AddCmdMenu(wxMenu *parentMenu, const a2dMenuIdItem &cmdId)
add a menu to the parent menu, and connect it to the eventhandler of the frame 
wxSize m_initialSize
size for new frames 
bool ProcessEvent(wxEvent &event)
Modified event handler to also sent event to a2dView or wxDocviewCommonEvents. 
#define forEachIn(listtype, list)
easy iteration for a2dlist 
#define EVT_COM_EVENT(func)
static wxEvtHandler for communication event 
The a2dDocumentFrame class provides a default frame for displaying documents. 
Creates and Connect a wxEditorFrame + a2dCanvas with a view. 
#define wxStaticCast(obj, className)
The wxWindows 2.4.2 wxStaticCast is buggy. It evaluates its argument twice. 
#define EVT_POST_CREATE_VIEW(func)
sent from a view template after it created a view 
a2dCanvasObject * GetShowObject() const 
return pointer of then currently shown object on the drawer. 
A2DGENERALDLLEXP a2dSmrtPtr< a2dGeneralGlobal > a2dGeneralGlobals
a global pointer to get to global instance of important classes. 
a2dCanvas and a2dCanvasView meet eachother here. 
void Translate(double x, double y)
relative translate the object to position x,y in world coordinates 
#define EVT_POST_CREATE_DOCUMENT(func)
sent from a doc template after it created a document 
#define EVT_ACTIVATE_VIEW_SENT_FROM_CHILD(func)
event sent from view and its display up the parent chain. 
void Prepend(a2dCanvasObject *obj)
prepend a a2dCanvasObject to the childobjects 
static const a2dCanvasObjectFlagsMask SELECTED
bool CanRedo()
by default this is a2dCommandProcessor::CanRedo() 
uses a wxFrame to hold new views or to create child wxFrame's to hold new views. 
#define EVT_THEME_EVENT(func)
static wxEvtHandler for theme event, send from a2dEditorFrame 
wxFrame * m_docframe
the frame which receives events and often redirect those to the document manager. ...
set a2dCanvasObjects flags in a hierarchy of a a2dCanvasDocument 
void OnSetmenuStrings(a2dCommandProcessorEvent &event)
handler for event to set undo redo menustrings 
a2dCanvas is used to display one of the a2dCanvasObjects which are part of a a2dCanvasDocument object...
wxMenu * m_editMenu
to hold undo redo menu's which are reinitialized at activation of view 
bool CanUndo()
by default this is a2dCommandProcessor::CanUndo() 
All updates of these modes force an update (e.g. update non-pending valid bounding boxes) ...
a2dCommandProcessor * GetCommandProcessor() const 
Returns a pointer to the command processor associated with this document. 
a2dDocument * GetDocument() const 
get the document of the view 
a2dDocviewGlobal * a2dDocviewGlobals
a global pointer to get to global instance of important classes. 
void SetStroke(const wxColour &strokecolor, double width=0, a2dStrokeStyle style=a2dSTROKE_SOLID)
Set a stroke for the object which will be used instead of the layer stroke. 
void SetGridY(double gridy)
Set grid distance in Y. 
long GetInitialStyle()
Get style used for new created a2dDocumentFrame. 
sepcialized Frame for editor of a2dCanvas 
void SetGridStroke(const a2dStroke &gridstroke)
set stroke used for grid drawing 
void Theme(const wxString &themeName=wxT("default"))
setup menu 
property to hold a a2dStroke type variable to be associated with a a2dObject 
Each a2dCanvasView needs to have a a2dCanvasDocument set in order to render data. ...
bool GetRelease() const 
get release flag 
bool m_isParentFrame
is this the docframe or not. 
virtual a2dView * CreateView(a2dDocument *doc, a2dDocumentFlagMask flags=a2dREFDOC_NON)
Creates a new view for the given document. 
a2dCanvasObject * SetShowObject(const wxString &name)
set object available in the a2dDrawing to be shown on the drawer 
void AddFunctionToMenu(int id, wxMenu *parentMenu, const wxString &text, const wxString &helpString, wxObjectEventFunctionM func, bool check=false)
add a menu which executes a function 
a2dViewTemplateList m_viewTemplates
templates for views 
wxString & GetRedoMenuLabel()
by default this is a2dCommandProcessor::GetRedoMenuLabel() 
Event sent to a2dCommandProcessor. 
virtual bool EliminateMatrix()
reduce matrix to identity 
void OnCloseWindow(wxCloseEvent &event)
called on Close window 
a2dDocumentCommandProcessor * GetDocviewCommandProcessor() const 
Gets a2dDocumentCommandProcessor pointer. 
static const wxEventType sm_showCursor
The a2dBoundingBox class stores one a2dBoundingBox of a a2dCanvasObject. 
wxSize & GetInitialSize()
GGet size used for new created views or frames or windows. 
a2dDrawing * GetDrawing() const 
get drawing via top object 
void SetDocumentTypeName(const wxString &name)
Sets the document type name for this document. See the comment for documentTypeName. 
a2dCanvasGlobal * a2dCanvasGlobals
global a2dCanvasGlobal to have easy access to global settings 
#define EVT_UNDO(func)
event sent from a2DocumentCommandProcessor when a command is undone 
a command wrapper specially designed to work with wxArt2D docview classes and rest. 
all headers in the editor module 
void Append(a2dCanvasObject *obj)
append a a2dCanvasObject to the childobjects 
virtual a2dViewTemplate * SelectViewType(a2dDocument *doc, const a2dViewTemplateList &list, const wxString &viewTypeName=wxT(""), bool sort=false, a2dTemplateFlagMask viewTemplateFlags=a2dTemplateFlag::VISIBLE)
Returns a view template by asking the user. 
GdsII format input and output. 
property to hold a a2dFill type variable to be associated with a a2dObject 
bool DisconnectEvent(wxEventType type, wxEvtHandler *eventSink)
a2dSmrtPtr< a2dView > m_view
a2dBoundingBox & GetBbox()
get boundingbox in world coordinates exclusive stroke width relative to its parent ...
a2dSmrtPtr< a2dStToolContr > m_contr
tool controller to be defined by user 
void SetFill(const a2dFill &fill)
Set a fill for the object which will be used instead of the layer fill. 
const a2dFill * a2dTRANSPARENT_FILL
global a2dFill stock object for TRANSPARENT filling 
wxString GetViewTypeName() const 
get type name of the view.