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

Pcbnew: Console python: use a wxMiniFrame to show the console and remove the...

Pcbnew: Console python: use a wxMiniFrame to show the console and remove the management by a EDA_PANEINFO, which was not the right way to manage this console.
parents 359e6485 7e431a0d
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -100,13 +100,6 @@ class PCB_EDIT_FRAME : public PCB_BASE_EDIT_FRAME
        throw( IO_ERROR, PARSE_ERROR );

protected:

#ifdef KICAD_SCRIPTING_WXPYTHON
    // Panel used to let user talk with internal scripting
    wxWindow* m_pythonPanel;
    bool m_pythonPanelShow;                   ///< Visibility flag for Python Console
#endif

    PCB_LAYER_WIDGET* m_Layers;

    DRC* m_drc;                                 ///< the DRC controller, see drc.cpp
@@ -130,6 +123,24 @@ protected:
    void createPopUpBlockMenu( wxMenu* menu );
    void createPopUpMenuForMarkers( MARKER_PCB* aMarker, wxMenu* aPopMenu );


    // Has meaning only if DKICAD_SCRIPTING_WXPYTHON option is on
    /**
     * @return the frame name identifier for the python console frame
     */
    static const wxChar * pythonConsoleNameId()
    {
        return wxT( "PythonConsole" );
    }

    /**
     * @return a pointer to the python console frame, or NULL if not exist
     */
    static wxWindow * findPythonConsole()
    {
       return FindWindowByName( pythonConsoleNameId() );
    }

    /**
     * Function syncLayerWidgetLayer
     * updates the currently layer "selection" within the PCB_LAYER_WIDGET.
+0 −15
Original line number Diff line number Diff line
@@ -484,21 +484,6 @@ public:
        CaptionVisible( false );
        return *this;
    }

    /**
     * Function ScriptingConsolePane
     * Change *this to a python scripting console pane for KiCad.
     * Used in Pcbnew
     */
    EDA_PANEINFO& ScriptingConsolePane()
    {
        CloseButton( false );
        Floatable( true );
        Resizable( true );
        return *this;
    }


};

#endif  // WXSTRUCT_H_
+20 −36
Original line number Diff line number Diff line
@@ -82,8 +82,6 @@

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

#include <pcb_draw_panel_gal.h>
@@ -330,10 +328,6 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
    m_RecordingMacros = -1;
    m_microWaveToolBar = NULL;
    m_useCmpFileForFpNames = true;
#if defined(KICAD_SCRIPTING_WXPYTHON)
    m_pythonPanel = NULL;
    m_pythonPanelShow = false;
#endif

    m_rotationAngle = 900;

@@ -1001,39 +995,29 @@ void PCB_EDIT_FRAME::UpdateTitle()
#if defined(KICAD_SCRIPTING_WXPYTHON)
void PCB_EDIT_FRAME::ScriptingConsoleEnableDisable( wxCommandEvent& aEvent )
{
    if( m_pythonPanel == NULL )
    {
        // Add the scripting panel
        EDA_PANEINFO  pythonAuiPane;
        pythonAuiPane.ScriptingConsolePane();
        pythonAuiPane.Caption( wxT( "Python Scripting" ) );
        pythonAuiPane.MinSize( 300, 150 );

    #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) );
    }
    wxMiniFrame * pythonPanelFrame = (wxMiniFrame *) findPythonConsole();
    bool pythonPanelShown = false;

    m_pythonPanelShow = ! m_pythonPanelShow;
    m_auimgr.GetPane( PYTHONCONSOLE_STRID ).Show( m_pythonPanelShow );
    if( pythonPanelFrame == NULL )
    {
        long style = wxCAPTION|wxCLOSE_BOX|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxRESIZE_BORDER|wxFRAME_FLOAT_ON_PARENT;
        pythonPanelFrame = new wxMiniFrame( this, wxID_ANY, wxT("Python console"), wxDefaultPosition, wxDefaultSize,
                                         style, pythonConsoleNameId() );
        wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL );

    m_auimgr.Update();
        wxWindow * pythonPanel = CreatePythonShellWindow( pythonPanelFrame );
        sizer->Add( pythonPanel, 1, wxEXPAND | wxALL, 5 );
        pythonPanelFrame->SetSizer( sizer );
        pythonPanelFrame->SetSize( wxSize( 600, 300 ) );
        pythonPanelFrame->Layout();
        pythonPanelFrame->Centre();
    }
    else
        pythonPanelShown = pythonPanelFrame->IsShown();

    pythonPanelShown = ! pythonPanelShown;
    pythonPanelFrame->Show( pythonPanelShown );
}
#endif

+4 −3
Original line number Diff line number Diff line
@@ -106,12 +106,13 @@ void PCB_EDIT_FRAME::OnUpdateLayerSelectBox( wxUpdateUIEvent& aEvent )
    m_SelLayerBox->SetLayerSelection( GetActiveLayer() );
}

#ifdef KICAD_SCRIPTING_WXPYTHON
// Used only when the DKICAD_SCRIPTING_WXPYTHON option is on
void PCB_EDIT_FRAME::OnUpdateScriptingConsoleState( wxUpdateUIEvent& aEvent )
{
    aEvent.Check( m_pythonPanelShow );
    wxMiniFrame * pythonPanelFrame = (wxMiniFrame *) findPythonConsole();
    bool pythonPanelShown = pythonPanelFrame ? pythonPanelFrame->IsShown() : false;
    aEvent.Check( pythonPanelShown );
}
#endif

void PCB_EDIT_FRAME::OnUpdateZoneDisplayStyle( wxUpdateUIEvent& aEvent )
{