Allows switching GAL or legacy mode in footprint editor (previously, the mode was inherited from the board editor, and was not modifiable without closing the footprint editor) by menu or F9, F11 and F12 keys)

This commit is contained in:
jean-pierre charras 2015-05-19 18:39:05 +02:00
parent 21332b588f
commit 84ba36fa72
18 changed files with 157 additions and 84 deletions

View File

@ -107,7 +107,7 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent,
m_optionsToolBar = NULL; m_optionsToolBar = NULL;
m_gridSelectBox = NULL; m_gridSelectBox = NULL;
m_zoomSelectBox = NULL; m_zoomSelectBox = NULL;
m_HotkeysZoomAndGridList = NULL; m_hotkeysDescrList = NULL;
m_canvas = NULL; m_canvas = NULL;
m_galCanvas = NULL; m_galCanvas = NULL;

View File

@ -243,15 +243,15 @@ void EDA_DRAW_FRAME::AddMenuZoomAndGrid( wxMenu* MasterMenu )
wxString msg; wxString msg;
BASE_SCREEN* screen = m_canvas->GetScreen(); BASE_SCREEN* screen = m_canvas->GetScreen();
msg = AddHotkeyName( _( "Center" ), m_HotkeysZoomAndGridList, HK_ZOOM_CENTER ); msg = AddHotkeyName( _( "Center" ), m_hotkeysDescrList, HK_ZOOM_CENTER );
AddMenuItem( MasterMenu, ID_POPUP_ZOOM_CENTER, msg, KiBitmap( zoom_center_on_screen_xpm ) ); AddMenuItem( MasterMenu, ID_POPUP_ZOOM_CENTER, msg, KiBitmap( zoom_center_on_screen_xpm ) );
msg = AddHotkeyName( _( "Zoom in" ), m_HotkeysZoomAndGridList, HK_ZOOM_IN ); msg = AddHotkeyName( _( "Zoom in" ), m_hotkeysDescrList, HK_ZOOM_IN );
AddMenuItem( MasterMenu, ID_POPUP_ZOOM_IN, msg, KiBitmap( zoom_in_xpm ) ); AddMenuItem( MasterMenu, ID_POPUP_ZOOM_IN, msg, KiBitmap( zoom_in_xpm ) );
msg = AddHotkeyName( _( "Zoom out" ), m_HotkeysZoomAndGridList, HK_ZOOM_OUT ); msg = AddHotkeyName( _( "Zoom out" ), m_hotkeysDescrList, HK_ZOOM_OUT );
AddMenuItem( MasterMenu, ID_POPUP_ZOOM_OUT, msg, KiBitmap( zoom_out_xpm ) ); AddMenuItem( MasterMenu, ID_POPUP_ZOOM_OUT, msg, KiBitmap( zoom_out_xpm ) );
msg = AddHotkeyName( _( "Redraw view" ), m_HotkeysZoomAndGridList, HK_ZOOM_REDRAW ); msg = AddHotkeyName( _( "Redraw view" ), m_hotkeysDescrList, HK_ZOOM_REDRAW );
AddMenuItem( MasterMenu, ID_POPUP_ZOOM_REDRAW, msg, KiBitmap( zoom_redraw_xpm ) ); AddMenuItem( MasterMenu, ID_POPUP_ZOOM_REDRAW, msg, KiBitmap( zoom_redraw_xpm ) );
msg = AddHotkeyName( _( "Zoom auto" ), m_HotkeysZoomAndGridList, HK_ZOOM_AUTO ); msg = AddHotkeyName( _( "Zoom auto" ), m_hotkeysDescrList, HK_ZOOM_AUTO );
AddMenuItem( MasterMenu, ID_POPUP_ZOOM_PAGE, msg, KiBitmap( zoom_fit_in_page_xpm ) ); AddMenuItem( MasterMenu, ID_POPUP_ZOOM_PAGE, msg, KiBitmap( zoom_fit_in_page_xpm ) );

View File

@ -190,7 +190,7 @@ LIB_EDIT_FRAME::LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
SetShowDeMorgan( false ); SetShowDeMorgan( false );
m_drawSpecificConvert = true; m_drawSpecificConvert = true;
m_drawSpecificUnit = false; m_drawSpecificUnit = false;
m_HotkeysZoomAndGridList = g_Libedit_Hokeys_Descr; m_hotkeysDescrList = g_Libedit_Hokeys_Descr;
m_editPinsPerPartOrConvert = false; m_editPinsPerPartOrConvert = false;
m_repeatPinStep = DEFAULT_REPEAT_OFFSET_PIN; m_repeatPinStep = DEFAULT_REPEAT_OFFSET_PIN;

View File

@ -319,7 +319,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ):
m_printMonochrome = true; m_printMonochrome = true;
m_printSheetReference = true; m_printSheetReference = true;
SetShowPageLimits( true ); SetShowPageLimits( true );
m_HotkeysZoomAndGridList = g_Schematic_Hokeys_Descr; m_hotkeysDescrList = g_Schematic_Hokeys_Descr;
m_dlgFindReplace = NULL; m_dlgFindReplace = NULL;
m_findReplaceData = new wxFindReplaceData( wxFR_DOWN ); m_findReplaceData = new wxFindReplaceData( wxFR_DOWN );
m_undoItem = NULL; m_undoItem = NULL;

View File

@ -99,7 +99,7 @@ LIB_VIEW_FRAME::LIB_VIEW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrame
icon.CopyFromBitmap( KiBitmap( library_browse_xpm ) ); icon.CopyFromBitmap( KiBitmap( library_browse_xpm ) );
SetIcon( icon ); SetIcon( icon );
m_HotkeysZoomAndGridList = g_Viewlib_Hokeys_Descr; m_hotkeysDescrList = g_Viewlib_Hokeys_Descr;
m_cmpList = NULL; m_cmpList = NULL;
m_libList = NULL; m_libList = NULL;
m_listPowerCmpOnly = false; m_listPowerCmpOnly = false;

View File

@ -79,8 +79,8 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ):
m_show_layer_manager_tools = true; m_show_layer_manager_tools = true;
m_showAxis = true; // true to show X and Y axis on screen m_showAxis = true; // true to show X and Y axis on screen
m_showBorderAndTitleBlock = false; // true for reference drawings. m_showBorderAndTitleBlock = false; // true for reference drawings.
m_HotkeysZoomAndGridList = GerbviewHokeysDescr; m_hotkeysDescrList = GerbviewHokeysDescr;
m_SelLayerBox = NULL; m_SelLayerBox = NULL;
m_DCodeSelector = NULL; m_DCodeSelector = NULL;
m_displayMode = 0; m_displayMode = 0;

View File

@ -56,7 +56,7 @@ protected:
wxSingleInstanceChecker* m_file_checker; ///< prevents opening same file multiple times. wxSingleInstanceChecker* m_file_checker; ///< prevents opening same file multiple times.
EDA_HOTKEY_CONFIG* m_HotkeysZoomAndGridList; EDA_HOTKEY_CONFIG* m_hotkeysDescrList;
int m_LastGridSizeId; // the command id offset (>= 0) of the last selected grid int m_LastGridSizeId; // the command id offset (>= 0) of the last selected grid
// 0 is for the grid corresponding to // 0 is for the grid corresponding to
// a wxCommand ID = ID_POPUP_GRID_LEVEL_1000. // a wxCommand ID = ID_POPUP_GRID_LEVEL_1000.

View File

@ -625,14 +625,14 @@ public:
void Show3D_Frame( wxCommandEvent& event ); void Show3D_Frame( wxCommandEvent& event );
/** /**
* Function UseGalCanvas * Virtual function UseGalCanvas
* Enables/disables GAL canvas. * Enables/disables GAL canvas.
* @param aEnable determines if GAL should be active or not. * @param aEnable determines if GAL should be active or not.
*/ */
void UseGalCanvas( bool aEnable ); void UseGalCanvas( bool aEnable );
/** /**
* Function ChangeCanvas * Function SwitchCanvas
* switches currently used canvas (default / Cairo / OpenGL). * switches currently used canvas (default / Cairo / OpenGL).
*/ */
void SwitchCanvas( wxCommandEvent& aEvent ); void SwitchCanvas( wxCommandEvent& aEvent );

View File

@ -62,7 +62,7 @@ PL_EDITOR_FRAME::PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
m_showAxis = false; // true to show X and Y axis on screen m_showAxis = false; // true to show X and Y axis on screen
m_showGridAxis = true; m_showGridAxis = true;
m_showBorderAndTitleBlock = true; // true for reference drawings. m_showBorderAndTitleBlock = true; // true for reference drawings.
m_HotkeysZoomAndGridList = PlEditorHokeysDescr; m_hotkeysDescrList = PlEditorHokeysDescr;
m_originSelectChoice = 0; m_originSelectChoice = 0;
SetDrawBgColor( WHITE ); // default value, user option (WHITE/BLACK) SetDrawBgColor( WHITE ); // default value, user option (WHITE/BLACK)
SetShowPageLimits( true ); SetShowPageLimits( true );

View File

@ -114,7 +114,7 @@ FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway,
icon.CopyFromBitmap( KiBitmap( module_wizard_xpm) ); icon.CopyFromBitmap( KiBitmap( module_wizard_xpm) );
SetIcon( icon ); SetIcon( icon );
m_HotkeysZoomAndGridList = g_Module_Viewer_Hokeys_Descr; m_hotkeysDescrList = g_Module_Viewer_Hokeys_Descr;
m_wizardName.Empty(); m_wizardName.Empty();
SetBoard( new BOARD() ); SetBoard( new BOARD() );

View File

@ -319,6 +319,7 @@ EDA_HOTKEY* module_edit_Hotkey_List[] = {
&HkMoveItem, &HkRotateItem, &HkEditBoardItem, &HkMoveItem, &HkRotateItem, &HkEditBoardItem,
&HkMoveItemExact, &HkDuplicateItem, &HkDuplicateItemAndIncrement, &HkMoveItemExact, &HkDuplicateItem, &HkDuplicateItemAndIncrement,
&HkCreateArray, &HkDelete, &HkSaveModule, &HkCreateArray, &HkDelete, &HkSaveModule,
&HkCanvasDefault, &HkCanvasCairo, &HkCanvasOpenGL,
NULL NULL
}; };

View File

@ -110,7 +110,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar()
// Save module // Save module
text = AddHotkeyName( _( "&Save Footprint in Active Library" ), text = AddHotkeyName( _( "&Save Footprint in Active Library" ),
g_Module_Editor_Hokeys_Descr, HK_SAVE_MODULE ); m_hotkeysDescrList, HK_SAVE_MODULE );
AddMenuItem( fileMenu, ID_MODEDIT_SAVE_LIBMODULE, text, AddMenuItem( fileMenu, ID_MODEDIT_SAVE_LIBMODULE, text,
_( "Save footprint in active library" ), _( "Save footprint in active library" ),
@ -155,13 +155,13 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar()
wxMenu* editMenu = new wxMenu; wxMenu* editMenu = new wxMenu;
// Undo // Undo
text = AddHotkeyName( _( "&Undo" ), g_Module_Editor_Hokeys_Descr, HK_UNDO ); text = AddHotkeyName( _( "&Undo" ), m_hotkeysDescrList, HK_UNDO );
AddMenuItem( editMenu, wxID_UNDO, AddMenuItem( editMenu, wxID_UNDO,
text, _( "Undo last action" ), text, _( "Undo last action" ),
KiBitmap( undo_xpm ) ); KiBitmap( undo_xpm ) );
// Redo // Redo
text = AddHotkeyName( _( "&Redo" ), g_Module_Editor_Hokeys_Descr, HK_REDO ); text = AddHotkeyName( _( "&Redo" ), m_hotkeysDescrList, HK_REDO );
AddMenuItem( editMenu, wxID_REDO, AddMenuItem( editMenu, wxID_REDO,
text, _( "Redo last action" ), text, _( "Redo last action" ),
KiBitmap( redo_xpm ) ); KiBitmap( redo_xpm ) );
@ -213,30 +213,54 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar()
* in other words HK_ZOOM_IN and HK_ZOOM_OUT *are NOT* accelerators * in other words HK_ZOOM_IN and HK_ZOOM_OUT *are NOT* accelerators
* for Zoom in and Zoom out sub menus * for Zoom in and Zoom out sub menus
*/ */
text = AddHotkeyName( _( "Zoom &In" ), g_Module_Editor_Hokeys_Descr, text = AddHotkeyName( _( "Zoom &In" ), m_hotkeysDescrList,
HK_ZOOM_IN, IS_ACCELERATOR ); HK_ZOOM_IN, IS_ACCELERATOR );
AddMenuItem( viewMenu, ID_ZOOM_IN, text, HELP_ZOOM_IN, KiBitmap( zoom_in_xpm ) ); AddMenuItem( viewMenu, ID_ZOOM_IN, text, HELP_ZOOM_IN, KiBitmap( zoom_in_xpm ) );
text = AddHotkeyName( _( "Zoom &Out" ), g_Module_Editor_Hokeys_Descr, text = AddHotkeyName( _( "Zoom &Out" ), m_hotkeysDescrList,
HK_ZOOM_OUT, IS_ACCELERATOR ); HK_ZOOM_OUT, IS_ACCELERATOR );
AddMenuItem( viewMenu, ID_ZOOM_OUT, text, HELP_ZOOM_OUT, KiBitmap( zoom_out_xpm ) ); AddMenuItem( viewMenu, ID_ZOOM_OUT, text, HELP_ZOOM_OUT, KiBitmap( zoom_out_xpm ) );
text = AddHotkeyName( _( "&Fit on Screen" ), g_Module_Editor_Hokeys_Descr, text = AddHotkeyName( _( "&Fit on Screen" ), m_hotkeysDescrList,
HK_ZOOM_AUTO ); HK_ZOOM_AUTO );
AddMenuItem( viewMenu, ID_ZOOM_PAGE, text, HELP_ZOOM_FIT, AddMenuItem( viewMenu, ID_ZOOM_PAGE, text, HELP_ZOOM_FIT,
KiBitmap( zoom_fit_in_page_xpm ) ); KiBitmap( zoom_fit_in_page_xpm ) );
text = AddHotkeyName( _( "&Redraw" ), g_Module_Editor_Hokeys_Descr, HK_ZOOM_REDRAW ); text = AddHotkeyName( _( "&Redraw" ), m_hotkeysDescrList, HK_ZOOM_REDRAW );
AddMenuItem( viewMenu, ID_ZOOM_REDRAW, text, AddMenuItem( viewMenu, ID_ZOOM_REDRAW, text,
HELP_ZOOM_REDRAW, KiBitmap( zoom_redraw_xpm ) ); HELP_ZOOM_REDRAW, KiBitmap( zoom_redraw_xpm ) );
viewMenu->AppendSeparator(); viewMenu->AppendSeparator();
// 3D view // 3D view
text = AddHotkeyName( _( "&3D Viewer" ), g_Module_Editor_Hokeys_Descr, HK_3D_VIEWER ); text = AddHotkeyName( _( "&3D Viewer" ), m_hotkeysDescrList, HK_3D_VIEWER );
AddMenuItem( viewMenu, ID_MENU_PCB_SHOW_3D_FRAME, text, _( "Show footprint in 3D viewer" ), AddMenuItem( viewMenu, ID_MENU_PCB_SHOW_3D_FRAME, text, _( "Show footprint in 3D viewer" ),
KiBitmap( three_d_xpm ) ); KiBitmap( three_d_xpm ) );
// Add canvas selection
viewMenu->AppendSeparator();
text = AddHotkeyName( _( "&Switch canvas to default" ), m_hotkeysDescrList,
HK_CANVAS_DEFAULT );
AddMenuItem( viewMenu, ID_MENU_CANVAS_DEFAULT,
text, _( "Switch the canvas implementation to default" ),
KiBitmap( tools_xpm ) );
text = AddHotkeyName( _( "Switch canvas to Open&GL" ), m_hotkeysDescrList,
HK_CANVAS_OPENGL );
AddMenuItem( viewMenu, ID_MENU_CANVAS_OPENGL,
text, _( "Switch the canvas implementation to OpenGL" ),
KiBitmap( tools_xpm ) );
text = AddHotkeyName( _( "Switch canvas to &Cairo" ), m_hotkeysDescrList,
HK_CANVAS_CAIRO );
AddMenuItem( viewMenu, ID_MENU_CANVAS_CAIRO,
text, _( "Switch the canvas implementation to Cairo" ),
KiBitmap( tools_xpm ) );
//-------- Place menu -------------------- //-------- Place menu --------------------
wxMenu* placeMenu = new wxMenu; wxMenu* placeMenu = new wxMenu;

View File

@ -69,7 +69,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
_( "Clear current board and initialize a new one" ), _( "Clear current board and initialize a new one" ),
KiBitmap( new_pcb_xpm ) ); KiBitmap( new_pcb_xpm ) );
text = AddHotkeyName( _( "&Open" ), g_Board_Editor_Hokeys_Descr, HK_LOAD_BOARD ); text = AddHotkeyName( _( "&Open" ), m_hotkeysDescrList, HK_LOAD_BOARD );
AddMenuItem( filesMenu, ID_LOAD_FILE, text, AddMenuItem( filesMenu, ID_LOAD_FILE, text,
_( "Delete current board and load new board" ), _( "Delete current board and load new board" ),
KiBitmap( open_brd_file_xpm ) ); KiBitmap( open_brd_file_xpm ) );
@ -106,7 +106,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
filesMenu->AppendSeparator(); filesMenu->AppendSeparator();
text = AddHotkeyName( _( "&Save" ), g_Board_Editor_Hokeys_Descr, HK_SAVE_BOARD ); text = AddHotkeyName( _( "&Save" ), m_hotkeysDescrList, HK_SAVE_BOARD );
AddMenuItem( filesMenu, ID_SAVE_BOARD, text, AddMenuItem( filesMenu, ID_SAVE_BOARD, text,
_( "Save current board" ), _( "Save current board" ),
KiBitmap( save_xpm ) ); KiBitmap( save_xpm ) );
@ -118,7 +118,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
// when not under a project mgr, we are free to change filenames, cwd ... // when not under a project mgr, we are free to change filenames, cwd ...
if( Kiface().IsSingle() ) // not when under a project mgr (pcbnew is run as stand alone) if( Kiface().IsSingle() ) // not when under a project mgr (pcbnew is run as stand alone)
{ {
text = AddHotkeyName( _( "Sa&ve As..." ), g_Board_Editor_Hokeys_Descr, HK_SAVE_BOARD_AS ); text = AddHotkeyName( _( "Sa&ve As..." ), m_hotkeysDescrList, HK_SAVE_BOARD_AS );
AddMenuItem( filesMenu, ID_SAVE_BOARD_AS, text, AddMenuItem( filesMenu, ID_SAVE_BOARD_AS, text,
_( "Save the current board as..." ), _( "Save the current board as..." ),
KiBitmap( save_as_xpm ) ); KiBitmap( save_as_xpm ) );
@ -127,7 +127,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
// but do not change the current board file name // but do not change the current board file name
else else
{ {
text = AddHotkeyName( _( "Sa&ve Copy As..." ), g_Board_Editor_Hokeys_Descr, HK_SAVE_BOARD_AS ); text = AddHotkeyName( _( "Sa&ve Copy As..." ), m_hotkeysDescrList, HK_SAVE_BOARD_AS );
AddMenuItem( filesMenu, ID_COPY_BOARD_AS, text, AddMenuItem( filesMenu, ID_COPY_BOARD_AS, text,
_( "Save a copy of the current board as..." ), _( "Save a copy of the current board as..." ),
KiBitmap( save_as_xpm ) ); KiBitmap( save_as_xpm ) );

View File

@ -993,15 +993,3 @@ void FOOTPRINT_EDIT_FRAME::SetActiveLayer( LAYER_ID aLayer )
GetGalCanvas()->Refresh(); GetGalCanvas()->Refresh();
} }
void FOOTPRINT_EDIT_FRAME::UseGalCanvas( bool aEnable )
{
EDA_DRAW_FRAME::UseGalCanvas( aEnable );
if( aEnable )
{
SetBoard( m_Pcb );
updateView();
GetGalCanvas()->StartDrawing();
}
}

View File

@ -123,6 +123,9 @@ public:
*/ */
void ReCreateMenuBar(); void ReCreateMenuBar();
// The Tool Framework initalization, for GAL mode
void setupTools();
void ToolOnRightClick( wxCommandEvent& event ); void ToolOnRightClick( wxCommandEvent& event );
void OnSelectOptionToolbar( wxCommandEvent& event ); void OnSelectOptionToolbar( wxCommandEvent& event );
void OnConfigurePaths( wxCommandEvent& aEvent ); void OnConfigurePaths( wxCommandEvent& aEvent );
@ -164,6 +167,12 @@ public:
*/ */
void Show3D_Frame( wxCommandEvent& event ); void Show3D_Frame( wxCommandEvent& event );
/**
* Function SwitchCanvas
* switches currently used canvas (default / Cairo / OpenGL).
*/
void SwitchCanvas( wxCommandEvent& aEvent );
bool GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 ); bool GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 );
void OnVerticalToolbar( wxCommandEvent& aEvent ); void OnVerticalToolbar( wxCommandEvent& aEvent );

View File

@ -165,6 +165,11 @@ BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME )
// Menu 3D Frame // Menu 3D Frame
EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, FOOTPRINT_EDIT_FRAME::Show3D_Frame ) EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, FOOTPRINT_EDIT_FRAME::Show3D_Frame )
// Switching canvases
EVT_MENU( ID_MENU_CANVAS_DEFAULT, FOOTPRINT_EDIT_FRAME::SwitchCanvas )
EVT_MENU( ID_MENU_CANVAS_CAIRO, FOOTPRINT_EDIT_FRAME::SwitchCanvas )
EVT_MENU( ID_MENU_CANVAS_OPENGL, FOOTPRINT_EDIT_FRAME::SwitchCanvas )
EVT_UPDATE_UI( ID_MODEDIT_DELETE_PART, FOOTPRINT_EDIT_FRAME::OnUpdateLibSelected ) EVT_UPDATE_UI( ID_MODEDIT_DELETE_PART, FOOTPRINT_EDIT_FRAME::OnUpdateLibSelected )
EVT_UPDATE_UI( ID_MODEDIT_SELECT_CURRENT_LIB, FOOTPRINT_EDIT_FRAME::OnUpdateSelectCurrentLib ) EVT_UPDATE_UI( ID_MODEDIT_SELECT_CURRENT_LIB, FOOTPRINT_EDIT_FRAME::OnUpdateSelectCurrentLib )
EVT_UPDATE_UI( ID_MODEDIT_EXPORT_PART, FOOTPRINT_EDIT_FRAME::OnUpdateModuleSelected ) EVT_UPDATE_UI( ID_MODEDIT_EXPORT_PART, FOOTPRINT_EDIT_FRAME::OnUpdateModuleSelected )
@ -197,6 +202,9 @@ END_EVENT_TABLE()
#define FOOTPRINT_EDIT_FRAME_NAME wxT( "ModEditFrame" ) #define FOOTPRINT_EDIT_FRAME_NAME wxT( "ModEditFrame" )
// Store the canvas mode during a session:
static enum PCB_DRAW_PANEL_GAL::GalType galmode = PCB_DRAW_PANEL_GAL::GAL_TYPE_NONE;
FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
PCB_BASE_EDIT_FRAME( aKiway, aParent, FRAME_PCB_MODULE_EDITOR, wxEmptyString, PCB_BASE_EDIT_FRAME( aKiway, aParent, FRAME_PCB_MODULE_EDITOR, wxEmptyString,
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
@ -205,7 +213,7 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
m_showBorderAndTitleBlock = false; // true to show the frame references m_showBorderAndTitleBlock = false; // true to show the frame references
m_showAxis = true; // true to show X and Y axis on screen m_showAxis = true; // true to show X and Y axis on screen
m_showGridAxis = true; // show the grid origin axis m_showGridAxis = true; // show the grid origin axis
m_HotkeysZoomAndGridList = g_Module_Editor_Hokeys_Descr; m_hotkeysDescrList = g_Module_Editor_Hokeys_Descr;
// Give an icon // Give an icon
wxIcon icon; wxIcon icon;
@ -216,9 +224,9 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
updateTitle(); updateTitle();
// Create GAL canvas // Create GAL canvas
PCB_BASE_FRAME* parentFrame = static_cast<PCB_BASE_FRAME*>( Kiway().Player( FRAME_PCB, true ) );
PCB_DRAW_PANEL_GAL* drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_FrameSize, PCB_DRAW_PANEL_GAL* drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_FrameSize,
parentFrame->GetGalCanvas()->GetBackend() ); galmode != PCB_DRAW_PANEL_GAL::GAL_TYPE_NONE ?
galmode : PCB_DRAW_PANEL_GAL::GAL_TYPE_CAIRO );
SetGalCanvas( drawPanel ); SetGalCanvas( drawPanel );
SetBoard( new BOARD() ); SetBoard( new BOARD() );
@ -293,8 +301,8 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
// Add the layer manager ( most right side of pcbframe ) // Add the layer manager ( most right side of pcbframe )
m_auimgr.AddPane( m_Layers, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Layer( 2 ) ); m_auimgr.AddPane( m_Layers, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Layer( 2 ) );
// Layers manager is visible and served only in GAL canvas mode. // Layers manager is visible
m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( true ); // parentFrame->IsGalCanvasActive() ); m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( true );
// The left vertical toolbar (fast acces to display options) // The left vertical toolbar (fast acces to display options)
m_auimgr.AddPane( m_optionsToolBar, m_auimgr.AddPane( m_optionsToolBar,
@ -309,31 +317,8 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
wxAuiPaneInfo( mesg_pane ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) ); wxAuiPaneInfo( mesg_pane ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );
// Create the manager and dispatcher & route draw panel events to the dispatcher // Create the manager and dispatcher & route draw panel events to the dispatcher
m_toolManager = new TOOL_MANAGER; setupTools();
m_toolManager->SetEnvironment( GetBoard(), drawPanel->GetView(), UseGalCanvas( galmode != PCB_DRAW_PANEL_GAL::GAL_TYPE_NONE );
drawPanel->GetViewControls(), this );
m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
if( parentFrame->IsGalCanvasActive() )
{
drawPanel->SetEventDispatcher( m_toolDispatcher );
m_toolManager->RegisterTool( new SELECTION_TOOL );
m_toolManager->RegisterTool( new EDIT_TOOL );
m_toolManager->RegisterTool( new DRAWING_TOOL );
m_toolManager->RegisterTool( new POINT_EDITOR );
m_toolManager->RegisterTool( new PCBNEW_CONTROL );
m_toolManager->RegisterTool( new MODULE_TOOLS );
m_toolManager->RegisterTool( new PLACEMENT_TOOL );
m_toolManager->GetTool<SELECTION_TOOL>()->EditModules( true );
m_toolManager->GetTool<EDIT_TOOL>()->EditModules( true );
m_toolManager->GetTool<DRAWING_TOOL>()->EditModules( true );
m_toolManager->ResetTools( TOOL_BASE::RUN );
m_toolManager->InvokeTool( "pcbnew.InteractiveSelection" );
UseGalCanvas( true );
}
if( m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).IsShown() ) if( m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).IsShown() )
{ {
@ -448,24 +433,12 @@ const wxChar* FOOTPRINT_EDIT_FRAME::GetFootprintEditorFrameName()
BOARD_DESIGN_SETTINGS& FOOTPRINT_EDIT_FRAME::GetDesignSettings() const BOARD_DESIGN_SETTINGS& FOOTPRINT_EDIT_FRAME::GetDesignSettings() const
{ {
// get the BOARD_DESIGN_SETTINGS from the parent editor, not our BOARD.
// @todo(DICK) change the routing to some default or the board directly, parent may not exist
// PCB_BASE_FRAME* parentFrame = (PCB_BASE_FRAME*) Kiway().Player( FRAME_PCB, true );
// wxASSERT( parentFrame );
return GetBoard()->GetDesignSettings(); return GetBoard()->GetDesignSettings();
} }
void FOOTPRINT_EDIT_FRAME::SetDesignSettings( const BOARD_DESIGN_SETTINGS& aSettings ) void FOOTPRINT_EDIT_FRAME::SetDesignSettings( const BOARD_DESIGN_SETTINGS& aSettings )
{ {
// set the BOARD_DESIGN_SETTINGS into parent editor, not our BOARD.
// @todo(DICK) change the routing to some default or the board directly, parent may not exist
// PCB_BASE_FRAME* parentFrame = (PCB_BASE_FRAME*) Kiway().Player( FRAME_PCB, true );
// wxASSERT( parentFrame );
GetBoard()->SetDesignSettings( aSettings ); GetBoard()->SetDesignSettings( aSettings );
} }
@ -926,3 +899,81 @@ void FOOTPRINT_EDIT_FRAME::OnConfigurePaths( wxCommandEvent& aEvent )
{ {
Pgm().ConfigurePaths( this ); Pgm().ConfigurePaths( this );
} }
void FOOTPRINT_EDIT_FRAME::SwitchCanvas( wxCommandEvent& aEvent )
{
int id = aEvent.GetId();
bool use_gal = false;
switch( id )
{
case ID_MENU_CANVAS_DEFAULT:
galmode = PCB_DRAW_PANEL_GAL::GAL_TYPE_NONE;
break;
case ID_MENU_CANVAS_CAIRO:
galmode = EDA_DRAW_PANEL_GAL::GAL_TYPE_CAIRO;
use_gal = GetGalCanvas()->SwitchBackend( EDA_DRAW_PANEL_GAL::GAL_TYPE_CAIRO );
break;
case ID_MENU_CANVAS_OPENGL:
galmode = EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL;
use_gal = GetGalCanvas()->SwitchBackend( EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL );
break;
}
UseGalCanvas( use_gal );
}
void FOOTPRINT_EDIT_FRAME::setupTools()
{
PCB_DRAW_PANEL_GAL* drawPanel = static_cast<PCB_DRAW_PANEL_GAL*>( GetGalCanvas() );
// Create the manager and dispatcher & route draw panel events to the dispatcher
m_toolManager = new TOOL_MANAGER;
m_toolManager->SetEnvironment( GetBoard(), drawPanel->GetView(),
drawPanel->GetViewControls(), this );
m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
drawPanel->SetEventDispatcher( m_toolDispatcher );
m_toolManager->RegisterTool( new SELECTION_TOOL );
m_toolManager->RegisterTool( new EDIT_TOOL );
m_toolManager->RegisterTool( new DRAWING_TOOL );
m_toolManager->RegisterTool( new POINT_EDITOR );
m_toolManager->RegisterTool( new PCBNEW_CONTROL );
m_toolManager->RegisterTool( new MODULE_TOOLS );
m_toolManager->RegisterTool( new PLACEMENT_TOOL );
m_toolManager->GetTool<SELECTION_TOOL>()->EditModules( true );
m_toolManager->GetTool<EDIT_TOOL>()->EditModules( true );
m_toolManager->GetTool<DRAWING_TOOL>()->EditModules( true );
m_toolManager->ResetTools( TOOL_BASE::RUN );
m_toolManager->InvokeTool( "pcbnew.InteractiveSelection" );
}
void FOOTPRINT_EDIT_FRAME::UseGalCanvas( bool aEnable )
{
EDA_DRAW_FRAME::UseGalCanvas( aEnable );
if( aEnable )
{
SetBoard( m_Pcb );
m_toolManager->ResetTools( TOOL_BASE::GAL_SWITCH );
updateView();
GetGalCanvas()->SetEventDispatcher( m_toolDispatcher );
GetGalCanvas()->StartDrawing();
}
else
{
m_toolManager->ResetTools( TOOL_BASE::GAL_SWITCH );
// Redirect all events to the legacy canvas
GetGalCanvas()->SetEventDispatcher( NULL );
}
}

View File

@ -121,7 +121,7 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent
icon.CopyFromBitmap( KiBitmap( modview_icon_xpm ) ); icon.CopyFromBitmap( KiBitmap( modview_icon_xpm ) );
SetIcon( icon ); SetIcon( icon );
m_HotkeysZoomAndGridList = g_Module_Viewer_Hokeys_Descr; m_hotkeysDescrList = g_Module_Viewer_Hokeys_Descr;
m_libList = new wxListBox( this, ID_MODVIEW_LIB_LIST, m_libList = new wxListBox( this, ID_MODVIEW_LIB_LIST,
wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_HSCROLL ); wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_HSCROLL );

View File

@ -316,7 +316,7 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
m_SelLayerBox = NULL; m_SelLayerBox = NULL;
m_show_microwave_tools = false; m_show_microwave_tools = false;
m_show_layer_manager_tools = true; m_show_layer_manager_tools = true;
m_HotkeysZoomAndGridList = g_Board_Editor_Hokeys_Descr; m_hotkeysDescrList = g_Board_Editor_Hokeys_Descr;
m_hasAutoSave = true; m_hasAutoSave = true;
m_RecordingMacros = -1; m_RecordingMacros = -1;
m_microWaveToolBar = NULL; m_microWaveToolBar = NULL;