From 3b8f2a551b3b4c8f5cacb96c4d05dabf367811cd Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Fri, 10 Aug 2012 23:53:50 +0200 Subject: [PATCH] pcbnew: Show/Hide button for scripting console --- include/wxPcbStruct.h | 7 +++++++ pcbnew/menubar_pcbframe.cpp | 8 ++++++++ pcbnew/pcbframe.cpp | 26 ++++++++++++++++++++++++-- pcbnew/pcbnew_id.h | 1 + pcbnew/scripting/TODO.txt | 12 +++++++++--- pcbnew/scripting/tests/test1.py | 11 ++++------- pcbnew/scripting/tests/test2.py | 12 ++++-------- pcbnew/tool_pcb.cpp | 8 ++++++++ 8 files changed, 65 insertions(+), 20 deletions(-) diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 086e604889..fe8ebcb289 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -89,6 +89,7 @@ protected: #ifdef KICAD_SCRIPTING_WXPYTHON // Panel used to let user talk with internal scripting wxWindow* m_pythonPanel; + bool m_pythonPanelHidden; #endif PCB_LAYER_WIDGET* m_Layers; @@ -1397,6 +1398,12 @@ public: // Autoplacement: void AutoPlace( wxCommandEvent& event ); + /** + * Function ScriptingConsoleEnableDisable + * enables or disabled the scripting console + */ + void ScriptingConsoleEnableDisable( wxCommandEvent& event ); + void OnSelectAutoPlaceMode( wxCommandEvent& aEvent ); /** diff --git a/pcbnew/menubar_pcbframe.cpp b/pcbnew/menubar_pcbframe.cpp index 1be09ce1cc..7aca1f9b44 100644 --- a/pcbnew/menubar_pcbframe.cpp +++ b/pcbnew/menubar_pcbframe.cpp @@ -554,6 +554,14 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() _( "Fast access to the Web Based FreeROUTE advanced router" ), KiBitmap( web_support_xpm ) ); +#ifdef KICAD_SCRIPTING_WXPYTHON + /* Scripting */ + AddMenuItem( toolsMenu, ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, + _( "&Scripting Console" ), + _( "Show/Hide the Scripting console" ), + KiBitmap( book_xpm ) ); +#endif + /* Design Rules menu */ wxMenu* designRulesMenu = new wxMenu; diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index 0e6f8c6ff7..087de07bbe 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -174,7 +174,9 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME ) EVT_TOOL( ID_TOOLBARH_PCB_MODE_MODULE, PCB_EDIT_FRAME::OnSelectAutoPlaceMode ) EVT_TOOL( ID_TOOLBARH_PCB_MODE_TRACKS, PCB_EDIT_FRAME::OnSelectAutoPlaceMode ) EVT_TOOL( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, PCB_EDIT_FRAME::Access_to_External_Tool ) - +#ifdef KICAD_SCRIPTING_WXPYTHON + EVT_TOOL( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, PCB_EDIT_FRAME::ScriptingConsoleEnableDisable ) +#endif // Option toolbar EVT_TOOL( ID_TB_OPTIONS_DRC_OFF, PCB_EDIT_FRAME::OnSelectOptionToolbar ) @@ -410,11 +412,13 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( wxWindow* parent, const wxString& title, pythonAuiInfo.Caption( wxT( "Python Scripting" ) ); pythonAuiInfo.MinSize( wxSize( 200, 100 ) ); pythonAuiInfo.BestSize( wxSize( GetClientSize().x/2, 200 ) ); - + pythonAuiInfo.Hide(); + m_pythonPanel = CreatePythonShellWindow( this ); m_auimgr.AddPane( m_pythonPanel, pythonAuiInfo.Name( wxT( "PythonPanel" ) ).Bottom().Layer(9) ); + m_pythonPanelHidden = true; #endif @@ -786,6 +790,24 @@ void PCB_EDIT_FRAME::UpdateTitle() SetTitle( title ); } +#ifdef KICAD_SCRIPTING_WXPYTHON +void PCB_EDIT_FRAME::ScriptingConsoleEnableDisable( wxCommandEvent& aEvent ) +{ + if ( m_pythonPanelHidden ) + { + m_auimgr.GetPane( m_pythonPanel ).Show(); + m_pythonPanelHidden = false; + } + else + { + m_auimgr.GetPane( m_pythonPanel ).Hide(); + m_pythonPanelHidden = true; + } + + m_auimgr.Update(); + +} +#endif void PCB_EDIT_FRAME::OnSelectAutoPlaceMode( wxCommandEvent& aEvent ) { diff --git a/pcbnew/pcbnew_id.h b/pcbnew/pcbnew_id.h index 7636d2cadb..0a0ecc9bde 100644 --- a/pcbnew/pcbnew_id.h +++ b/pcbnew/pcbnew_id.h @@ -235,6 +235,7 @@ enum pcbnew_ids ID_TOOLBARH_PCB_MODE_MODULE, ID_TOOLBARH_PCB_MODE_TRACKS, ID_TOOLBARH_PCB_FREEROUTE_ACCESS, + ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, diff --git a/pcbnew/scripting/TODO.txt b/pcbnew/scripting/TODO.txt index 3c7adaabe7..089f72cbbc 100644 --- a/pcbnew/scripting/TODO.txt +++ b/pcbnew/scripting/TODO.txt @@ -1,5 +1,11 @@ -* finish wizard implementation -* cleanup -* better build script helpers +* think about documentation, how to do it +* toolbar button and menu for scripting console +* Action plugins: + right click hooks, + toolbar hooks, + menu hooks, +* IO plugins +* better footprint wizard (preview in footprint wizard list) + diff --git a/pcbnew/scripting/tests/test1.py b/pcbnew/scripting/tests/test1.py index 82d73dcd23..b507e33090 100644 --- a/pcbnew/scripting/tests/test1.py +++ b/pcbnew/scripting/tests/test1.py @@ -1,14 +1,11 @@ +import pcbnew + pcb = pcbnew.GetBoard() -m = pcb.m_Modules - -while m: +for m in pcb.GetModules(): print m.GetPosition() - p = m.m_Pads - while p: + for p in m.GetPads() print "p=>",p.GetPosition(),p.GetPadName() print p.GetPosition() - p = p.Next() - m = m.Next() diff --git a/pcbnew/scripting/tests/test2.py b/pcbnew/scripting/tests/test2.py index 4cda914932..e14028c3dd 100644 --- a/pcbnew/scripting/tests/test2.py +++ b/pcbnew/scripting/tests/test2.py @@ -1,14 +1,10 @@ +import pcbnew + pcb = pcbnew.GetBoard() -m = pcb.m_Modules.item() - -while m: +for m in pcb.GetModules(): print m.GetReference(),"(",m.GetValue(),") at ", m.GetPosition() - m.SetValue("pepe") - p = m.m_Pads.item() - while p: + for p in m.GetPads() print " pad",p.GetPadName(), "at",p.GetPosition() - p = p.Next() - m = m.Next() diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index 4c4b8ff73f..9f20d9372d 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -300,6 +300,14 @@ void PCB_EDIT_FRAME::ReCreateHToolbar() m_mainToolBar->AddSeparator(); + // Access to the scripting console +#ifdef KICAD_SCRIPTING_WXPYTHON + m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString, + KiBitmap( book_xpm ), + _( "Show/Hide the Scripting console" ) ); + + m_mainToolBar->AddSeparator(); +#endif // after adding the buttons to the toolbar, must call Realize() to reflect the changes m_mainToolBar->Realize(); }