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.