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

Pcbnew, python console: refinements.

parent 30497943
Loading
Loading
Loading
Loading
+9 −18
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@
#include <tools/placement_tool.h>
#include <tools/common_actions.h>

#include <scripting/python_console_frame.h>

#if defined(KICAD_SCRIPTING) || defined(KICAD_SCRIPTING_WXPYTHON)
#include <python_scripting.h>
@@ -211,11 +212,12 @@ 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

    // has meaning only with KICAD_SCRIPTING_WXPYTHON enabled
    EVT_TOOL( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, PCB_EDIT_FRAME::ScriptingConsoleEnableDisable )
    EVT_UPDATE_UI( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE,
                   PCB_EDIT_FRAME::OnUpdateScriptingConsoleState )
#endif

    // Option toolbar
    EVT_TOOL( ID_TB_OPTIONS_DRC_OFF,
                    PCB_EDIT_FRAME::OnSelectOptionToolbar )
@@ -992,34 +994,23 @@ void PCB_EDIT_FRAME::UpdateTitle()
}


#if defined(KICAD_SCRIPTING_WXPYTHON)
wxSize PYTHON_CONSOLE_FRAME::m_frameSize;   ///< The size of the PYTHON_CONSOLE_FRAME frame, stored during a session
wxPoint PYTHON_CONSOLE_FRAME::m_framePos;   ///< The position ofPYTHON_CONSOLE_FRAME  the frame, stored during a session

void PCB_EDIT_FRAME::ScriptingConsoleEnableDisable( wxCommandEvent& aEvent )
{

    wxMiniFrame * pythonPanelFrame = (wxMiniFrame *) findPythonConsole();
    wxWindow * pythonPanelFrame = findPythonConsole();
    bool pythonPanelShown = false;

    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 );

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

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


void PCB_EDIT_FRAME::OnSelectAutoPlaceMode( wxCommandEvent& aEvent )
+98 −0
Original line number Diff line number Diff line
/*
 * This program source code file is part of KiCad, a free EDA CAD application.
 *
 * Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
 * Copyright (C) 2004-2014 KiCad Developers, see change_log.txt for contributors.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, you may find one here:
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * or you may search the http://www.gnu.org website for the version 2 license,
 * or you may write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 */

/**
 * @file python_console_frame.h
 */

#ifndef PYTHON_CONSOLE_FRAME_H_
#define PYTHON_CONSOLE_FRAME_H_



/**
 * Class PYTHON_CONSOLE_FRAME is a simple derived class from wxMiniFrame
 * to handle the scripting python console
 */
class PYTHON_CONSOLE_FRAME : public wxMiniFrame
{
private:
    static wxSize m_frameSize;   ///< The size of the frame, stored during a session
    static wxPoint m_framePos;   ///< The position of the frame, stored during a session

public:

    PYTHON_CONSOLE_FRAME( wxWindow* aParent, const wxString& aFramenameId )
        : wxMiniFrame( aParent, wxID_ANY, wxT("Python console"), wxDefaultPosition, wxDefaultSize,
                       wxCAPTION|wxCLOSE_BOX|wxRESIZE_BORDER|wxFRAME_FLOAT_ON_PARENT,
                       aFramenameId )
    {
        wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL );

#if defined(KICAD_SCRIPTING_WXPYTHON)
        wxWindow * pythonPanel = CreatePythonShellWindow( pythonPanelFrame );
        sizer->Add( pythonPanel, 1, wxEXPAND | wxALL, 5 );
#endif
        SetSizer( sizer );
        SetMinSize( wxSize( 400, 200 ) );

        if( m_frameSize.x <= 0 || m_frameSize.y <= 0 )
            SetSize( wxSize( 600, 300 ) );
        else
            SetSize( m_frameSize );

        if( m_framePos.x == 0 && m_framePos.y == 0 )
            Centre();
        else
            SetPosition( m_framePos );

        Layout();

        // Connect Events
        this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( PYTHON_CONSOLE_FRAME::OnClose ) );
    }

    ~PYTHON_CONSOLE_FRAME()
    {
        // Disconnect Events
        this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( PYTHON_CONSOLE_FRAME::OnClose ) );
    }

private:

    void  OnClose( wxCloseEvent& event )
    {
        if( !IsIconized() )
        {
            m_frameSize = GetSize();
            m_framePos = GetPosition();
        }

        event.Skip();
    }

//    DECLARE_EVENT_TABLE()
};

#endif    // PYTHON_CONSOLE_FRAME_H_
+1 −1
Original line number Diff line number Diff line
@@ -309,7 +309,7 @@ void PCB_EDIT_FRAME::ReCreateHToolbar()
                            _( "Fast access to the Web Based FreeROUTE advanced router" ) );

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

    m_mainToolBar->AddTool( ID_TOOLBARH_PCB_SCRIPTING_CONSOLE, wxEmptyString,