Commit a2abb207 authored by jean-pierre charras's avatar jean-pierre charras
Browse files

Pcbnew, python console: make it not dockable (workaround to avoid the fact hot...

Pcbnew, python console: make it not dockable (workaround to avoid the fact hot keys which are used in the main menu are not sent to the console, in docked mode)
Minor cosmetic enhancement.
parents 2ff53e95 ba2c7632
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -107,7 +107,7 @@ protected:
#ifdef KICAD_SCRIPTING_WXPYTHON
#ifdef KICAD_SCRIPTING_WXPYTHON
    // Panel used to let user talk with internal scripting
    // Panel used to let user talk with internal scripting
    wxWindow* m_pythonPanel;
    wxWindow* m_pythonPanel;
    bool m_pythonPanelHidden;
    bool m_pythonPanelShow;                   ///< Visibility flag for Python Console
#endif
#endif


    PCB_LAYER_WIDGET* m_Layers;
    PCB_LAYER_WIDGET* m_Layers;
@@ -1524,7 +1524,9 @@ public:
     * Function ScriptingConsoleEnableDisable
     * Function ScriptingConsoleEnableDisable
     * enables or disabled the scripting console
     * enables or disabled the scripting console
     */
     */
    void ScriptingConsoleEnableDisable( wxCommandEvent& event );
    void ScriptingConsoleEnableDisable( wxCommandEvent& aEvent );

    void OnUpdateScriptingConsoleState( wxUpdateUIEvent& aEvent );


    void OnSelectAutoPlaceMode( wxCommandEvent& aEvent );
    void OnSelectAutoPlaceMode( wxCommandEvent& aEvent );


+2 −2
Original line number Original line Diff line number Diff line
@@ -534,8 +534,8 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
#if defined(KICAD_SCRIPTING_WXPYTHON)
#if defined(KICAD_SCRIPTING_WXPYTHON)
    AddMenuItem( toolsMenu, ID_TOOLBARH_PCB_SCRIPTING_CONSOLE,
    AddMenuItem( toolsMenu, ID_TOOLBARH_PCB_SCRIPTING_CONSOLE,
                 _( "&Scripting Console" ),
                 _( "&Scripting Console" ),
                 _( "Show/Hide the Scripting console" ),
                 _( "Show/Hide the Python Scripting console" ),
                 KiBitmap( book_xpm ) );
                 KiBitmap( py_script_xpm ) );
#endif
#endif


    wxMenu* designRulesMenu = new wxMenu;
    wxMenu* designRulesMenu = new wxMenu;
+39 −31
Original line number Original line Diff line number Diff line
@@ -72,6 +72,8 @@


#if defined(KICAD_SCRIPTING) || defined(KICAD_SCRIPTING_WXPYTHON)
#if defined(KICAD_SCRIPTING) || defined(KICAD_SCRIPTING_WXPYTHON)
#include <python_scripting.h>
#include <python_scripting.h>
// The name of the pane info handling the python console:
#define PYTHONCONSOLE_STRID   wxT( "PythonPanel" )
#endif
#endif


#include <class_draw_panel_gal.h>
#include <class_draw_panel_gal.h>
@@ -203,6 +205,8 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME )
    EVT_TOOL( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, PCB_EDIT_FRAME::Access_to_External_Tool )
    EVT_TOOL( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, PCB_EDIT_FRAME::Access_to_External_Tool )
#ifdef KICAD_SCRIPTING_WXPYTHON
#ifdef KICAD_SCRIPTING_WXPYTHON
    EVT_TOOL( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, PCB_EDIT_FRAME::ScriptingConsoleEnableDisable )
    EVT_TOOL( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, PCB_EDIT_FRAME::ScriptingConsoleEnableDisable )
    EVT_UPDATE_UI( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE,
                   PCB_EDIT_FRAME::OnUpdateScriptingConsoleState )
#endif
#endif
    // Option toolbar
    // Option toolbar
    EVT_TOOL( ID_TB_OPTIONS_DRC_OFF,
    EVT_TOOL( ID_TB_OPTIONS_DRC_OFF,
@@ -316,13 +320,13 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
    m_RecordingMacros = -1;
    m_RecordingMacros = -1;
    m_microWaveToolBar = NULL;
    m_microWaveToolBar = NULL;
    m_useCmpFileForFpNames = true;
    m_useCmpFileForFpNames = true;

#if defined(KICAD_SCRIPTING_WXPYTHON)
    m_rotationAngle = 900;

#ifdef KICAD_SCRIPTING_WXPYTHON
    m_pythonPanel = NULL;
    m_pythonPanel = NULL;
    m_pythonPanelShow = false;
#endif
#endif


    m_rotationAngle = 900;

    for ( int i = 0; i < 10; i++ )
    for ( int i = 0; i < 10; i++ )
        m_Macros[i].m_Record.clear();
        m_Macros[i].m_Record.clear();


@@ -415,7 +419,8 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :


    if( m_microWaveToolBar )    // The auxiliary vertical right toolbar (currently microwave tools)
    if( m_microWaveToolBar )    // The auxiliary vertical right toolbar (currently microwave tools)
        m_auimgr.AddPane( m_microWaveToolBar,
        m_auimgr.AddPane( m_microWaveToolBar,
                          wxAuiPaneInfo( vert ).Name( wxT( "m_microWaveToolBar" ) ).Right().Layer( 1 ).Position(1).Hide() );
                          wxAuiPaneInfo( vert ).Name( wxT( "m_microWaveToolBar" ) ).
                          Right().Layer( 1 ).Position(1).Hide() );


    if( m_drawToolBar )    // The main right vertical toolbar
    if( m_drawToolBar )    // The main right vertical toolbar
        m_auimgr.AddPane( m_drawToolBar,
        m_auimgr.AddPane( m_drawToolBar,
@@ -445,23 +450,6 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
        m_auimgr.AddPane( m_messagePanel,
        m_auimgr.AddPane( m_messagePanel,
                          wxAuiPaneInfo( mesg ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );
                          wxAuiPaneInfo( mesg ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );



#if defined(KICAD_SCRIPTING_WXPYTHON)
    // Add the scripting panel
    EDA_PANEINFO  pythonAuiInfo;
    pythonAuiInfo.ScriptingToolbarPane();
    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

    ReFillLayerWidget();        // this is near end because contents establish size
    ReFillLayerWidget();        // this is near end because contents establish size


    m_Layers->ReFillRender();   // Update colors in Render after the config is read
    m_Layers->ReFillRender();   // Update colors in Render after the config is read
@@ -1093,19 +1081,39 @@ void PCB_EDIT_FRAME::UpdateTitle()
#if defined(KICAD_SCRIPTING_WXPYTHON)
#if defined(KICAD_SCRIPTING_WXPYTHON)
void PCB_EDIT_FRAME::ScriptingConsoleEnableDisable( wxCommandEvent& aEvent )
void PCB_EDIT_FRAME::ScriptingConsoleEnableDisable( wxCommandEvent& aEvent )
{
{
    if ( m_pythonPanelHidden )
    if( m_pythonPanel == NULL )
    {
    {
        m_auimgr.GetPane( m_pythonPanel ).Show();
        // Add the scripting panel
        m_pythonPanelHidden = false;
        EDA_PANEINFO  pythonAuiPane;
    }
        pythonAuiPane.ScriptingToolbarPane();
    else
        pythonAuiPane.Caption( wxT( "Python Scripting" ) );
    {
        pythonAuiPane.MinSize( 300, 150 );
        m_auimgr.GetPane( m_pythonPanel ).Hide();

        m_pythonPanelHidden = true;
    #if 1   // Set to 0 to make the Python console dockable
        // Currently the console is not dockable. Reasons:
        // * When docked there is an issue with accelerator keys used in the main menu:
        //   these keys are not sent to the console, even if it has the focus
        // * The console is more easy to move if it is not dockable
        pythonAuiPane.Dockable( false ).Float();

        // Gives a reasonnable position to the console
        wxPoint pos = m_canvas->GetScreenPosition();
        pythonAuiPane.FloatingPosition( pos.x + 10, pos.y + 10 );
        pythonAuiPane.FloatingSize( 600, 200 );
    #else
        pythonAuiPane.BestSize( 600, 200 );
        pythonAuiPane.LeftDockable( false ).RightDockable( false );
    #endif

        m_pythonPanel = CreatePythonShellWindow( this );
        m_auimgr.AddPane( m_pythonPanel,
                          pythonAuiPane.Name( PYTHONCONSOLE_STRID ).Bottom().Layer(9) );
    }
    }


    m_auimgr.Update();
    m_pythonPanelShow = ! m_pythonPanelShow;
    m_auimgr.GetPane( PYTHONCONSOLE_STRID ).Show( m_pythonPanelShow );


    m_auimgr.Update();
}
}
#endif
#endif


+5 −5
Original line number Original line Diff line number Diff line
@@ -307,16 +307,16 @@ void PCB_EDIT_FRAME::ReCreateHToolbar()
                            KiBitmap( web_support_xpm ),
                            KiBitmap( web_support_xpm ),
                            _( "Fast access to the Web Based FreeROUTE advanced router" ) );
                            _( "Fast access to the Web Based FreeROUTE advanced router" ) );


    m_mainToolBar->AddSeparator();

    // Access to the scripting console
    // Access to the scripting console
#ifdef KICAD_SCRIPTING_WXPYTHON
#ifdef KICAD_SCRIPTING_WXPYTHON
    m_mainToolBar->AddSeparator();

    m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString,
    m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString,
                            KiBitmap( py_script_xpm ),
                            KiBitmap( py_script_xpm ),
                            _( "Show/Hide the Scripting console" ) );
                            _( "Show/Hide the Python Scripting console" ),

                            wxITEM_CHECK );
    m_mainToolBar->AddSeparator();
#endif
#endif

    // after adding the buttons to the toolbar, must call Realize() to reflect the changes
    // after adding the buttons to the toolbar, must call Realize() to reflect the changes
    m_mainToolBar->Realize();
    m_mainToolBar->Realize();
}
}
+6 −0
Original line number Original line Diff line number Diff line
@@ -109,6 +109,12 @@ void PCB_EDIT_FRAME::OnUpdateLayerSelectBox( wxUpdateUIEvent& aEvent )
    m_SelLayerBox->SetLayerSelection( GetActiveLayer() );
    m_SelLayerBox->SetLayerSelection( GetActiveLayer() );
}
}


#ifdef KICAD_SCRIPTING_WXPYTHON
void PCB_EDIT_FRAME::OnUpdateScriptingConsoleState( wxUpdateUIEvent& aEvent )
{
    aEvent.Check( m_pythonPanelShow );
}
#endif


void PCB_EDIT_FRAME::OnUpdateZoneDisplayStyle( wxUpdateUIEvent& aEvent )
void PCB_EDIT_FRAME::OnUpdateZoneDisplayStyle( wxUpdateUIEvent& aEvent )
{
{