Loading kicad/kicad.cpp +173 −63 Original line number Original line Diff line number Diff line /********************************/ /*****************************************************************************/ /* kicad.cpp - module principal */ /** /********************************/ * @file kicad.cpp * @brief Main kicad library manager file */ /*****************************************************************************/ #ifdef __GNUG__ #ifdef __GNUG__ #pragma implementation #pragma implementation Loading @@ -13,13 +18,9 @@ #include <wx/image.h> #include <wx/image.h> //#define SPLASH_OK #ifdef SPLASH_OK #ifdef USE_SPLASH_IMAGE /* Define Splash Image */ #define SPLASH_IMAGE logo_kicad.png #define SPLASH_IMAGE logo_kicad.png #include "wx/splash.h" #include "wx/splash.h" #include "wx/mediactrl.h" #include "wx/mediactrl.h" #endif #endif Loading @@ -35,95 +36,174 @@ #include <pyhandler.h> #include <pyhandler.h> #endif #endif /* Routines exportees */ /* Export functions */ /* fonctions importees */ /* Import functions */ char *GetFileName(char *FullPathName); char *GetFileName(char *FullPathName); void ShowLogo(char * FonteFileName); void ShowLogo(char * FonteFileName); /* Routines locales */ /* Local functions */ /************************************/ /************************************/ /* Called to initialize the program */ /* Called to initialize the program */ /************************************/ /************************************/ // Create a new application object // Create a new application object IMPLEMENT_APP(WinEDA_App) IMPLEMENT_APP(WinEDA_App) #ifdef KICAD_PYTHON #ifdef KICAD_PYTHON using namespace boost::python; using namespace boost::python; /*****************************************************************************/ // Global functions: // Global functions: /*****************************************************************************/ static WinEDA_MainFrame& GetMainFrame() { return *( wxGetApp().m_MainFrame ); } static WinEDA_MainFrame& GetMainFrame() { return *( wxGetApp().m_MainFrame ); } static void WinEDAPrint( str msg ) { GetMainFrame().PrintMsg( PyHandler::MakeStr( msg ) + wxT("\n") ); } static void WinEDAPrint( str msg ) { GetMainFrame().PrintMsg( PyHandler::MakeStr( msg ) + wxT("\n") ); } static void WinEDAClear() { GetMainFrame().ClearMsg(); } static void WinEDAClear() { GetMainFrame().ClearMsg(); } static object GetTypeExt( enum TreeFileType type ) { return PyHandler::Convert( WinEDA_PrjFrame::GetFileExt( type ) ); } static object GetTypeExt( enum TreeFileType type ) { return PyHandler::Convert( WinEDA_PrjFrame::GetFileExt( type ) ); } /*****************************************************************************/ // WinEDA_MainFrame Special binding functions: // WinEDA_MainFrame Special binding functions: // (one line functions are simple wrappers) // (one line functions are simple wrappers) /*****************************************************************************/ object WinEDA_MainFrame::GetPrjName() const { return PyHandler::Convert( m_PrjFileName ); } object WinEDA_MainFrame::GetPrjName() const { return PyHandler::Convert( m_PrjFileName ); } object WinEDA_MainFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } object WinEDA_MainFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } WinEDA_PrjFrame* WinEDA_MainFrame::GetTree() const { return m_LeftWin; } WinEDA_PrjFrame* WinEDA_MainFrame::GetTree() const { return m_LeftWin; } /** * @brief TODO */ /*****************************************************************************/ void WinEDA_MainFrame::AddFastLaunchPy( object & button ) void WinEDA_MainFrame::AddFastLaunchPy( object & button ) /*****************************************************************************/ { { wxBitmapButton * btn; wxBitmapButton * btn; bool success = wxPyConvertSwigPtr( button.ptr(), (void**)&btn, _T("wxBitmapButton")); bool success = wxPyConvertSwigPtr( button.ptr(), (void**)&btn, _T("wxBitmapButton")); if ( !success ) return; if(!success) return; Py_INCREF( button.ptr() ); Py_INCREF( button.ptr() ); btn->Reparent( m_CommandWin ); btn->Reparent( m_CommandWin ); m_CommandWin->AddFastLaunch( btn ); m_CommandWin->AddFastLaunch( btn ); } } /*****************************************************************************/ // WinEDA_PrjFrame Special binding functions: // WinEDA_PrjFrame Special binding functions: // (one line functions are simple wrappers) // (one line functions are simple wrappers) /*****************************************************************************/ // TODO To WxWidgets ? object WinEDA_PrjFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } // TODO Get ? object WinEDA_PrjFrame::GetFtExPy( enum TreeFileType type ) const { return PyHandler::Convert( GetFileExt( type ) ); } // Get python menu object WinEDA_PrjFrame::GetMenuPy( enum TreeFileType type ) { return object( handle<>( borrowed( wxPyMake_wxObject( GetContextMenu( (int) type ), false ) ) ) ); } // Get tree control object WinEDA_PrjFrame::GetTreeCtrl() { return object( handle<>( borrowed( wxPyMake_wxObject( m_TreeProject, false ) ) ) ); } // Get current menu object WinEDA_PrjFrame::GetCurrentMenu() { return object( handle<>( borrowed( wxPyMake_wxObject( m_PopupMenu, false ) ) ) ); } object WinEDA_PrjFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } object WinEDA_PrjFrame::GetFtExPy( enum TreeFileType type ) const { return PyHandler::Convert( GetFileExt( type ) ); } object WinEDA_PrjFrame::GetMenuPy( enum TreeFileType type ) { return object( handle<>( borrowed( wxPyMake_wxObject( GetContextMenu( (int) type ), false ) ) ) ); } object WinEDA_PrjFrame::GetTreeCtrl() { return object( handle<>( borrowed( wxPyMake_wxObject( m_TreeProject, false ) ) ) ); } object WinEDA_PrjFrame::GetCurrentMenu() { return object( handle<>( borrowed( wxPyMake_wxObject( m_PopupMenu, false ) ) ) ); } void WinEDA_PrjFrame::NewFilePy( const str & name, enum TreeFileType type, object & id ) /** * @brief TODO */ /*****************************************************************************/ void WinEDA_PrjFrame::NewFilePy( const str & name, enum TreeFileType type, object & id ) /*****************************************************************************/ { { wxTreeItemId root; wxTreeItemId root; if (! wxPyConvertSwigPtr( id.ptr(), (void**)&root, _T("wxTreeItemId") ) ) return; if (! wxPyConvertSwigPtr( id.ptr(), (void**)&root, _T("wxTreeItemId") ) ) return; NewFile( PyHandler::MakeStr( name ), type, root ); NewFile( PyHandler::MakeStr( name ), type, root ); } } /** * @brief Add a file to the tree under root, or m_root if conversion is wrong */ /*****************************************************************************/ void WinEDA_PrjFrame::AddFilePy( const str & file, object & root ) void WinEDA_PrjFrame::AddFilePy( const str & file, object & root ) /* Add a file to the tree under root, or m_root if conversion is wrong */ /*****************************************************************************/ { { wxTreeItemId * theroot = &m_root; wxTreeItemId * theroot = &m_root; if ( !wxPyConvertSwigPtr( root.ptr(), (void**)&root, _T("wxTreeItemId") ) ) if ( !wxPyConvertSwigPtr( root.ptr(), (void**)&root, _T("wxTreeItemId") ) ) { { theroot = &m_root; theroot = &m_root; } } AddFile( PyHandler::MakeStr( file ), *theroot ); AddFile( PyHandler::MakeStr( file ), *theroot ); } } /** * @brief convert wxTreeItem into TreePrjItemData */ /*****************************************************************************/ TreePrjItemData * WinEDA_PrjFrame::GetItemData( const object & item ) TreePrjItemData * WinEDA_PrjFrame::GetItemData( const object & item ) /* convert wxTreeItem into TreePrjItemData */ /*****************************************************************************/ { { wxTreeItemId *id = NULL; wxTreeItemId *id = NULL; if ( !wxPyConvertSwigPtr( item.ptr(), (void**)&id, _T("wxTreeItemId") ) ) return NULL; if (!wxPyConvertSwigPtr( item.ptr(), (void**)&id, _T("wxTreeItemId"))) { return NULL; } return dynamic_cast<TreePrjItemData *>( m_TreeProject->GetItemData( *id ) ); return dynamic_cast<TreePrjItemData *>( m_TreeProject->GetItemData( *id ) ); } } /*****************************************************************************/ // TreePrjItemData Special binding functions // TreePrjItemData Special binding functions // (one line functions are simple wrappers) // (one line functions are simple wrappers) /*****************************************************************************/ // Python rename bool TreePrjItemData::RenamePy( const str & newname, bool check ) { return Rename( PyHandler::MakeStr(newname), check ); } // Get python directory object TreePrjItemData::GetDirPy() const { return PyHandler::Convert( GetDir() ); } bool TreePrjItemData::RenamePy( const str & newname, bool check ) { return Rename( PyHandler::MakeStr(newname), check ); } // Get python filename object TreePrjItemData::GetDirPy() const { return PyHandler::Convert( GetDir() ); } object TreePrjItemData::GetFileNamePy() const object TreePrjItemData::GetFileNamePy() const { return PyHandler::Convert( GetFileName() ); } { return PyHandler::Convert( GetFileName() ); } object TreePrjItemData::GetMenuPy() { return object( handle<>( borrowed( wxPyMake_wxObject( &m_fileMenu, false ) ) ) ); } // kicad module init function // Get python menu // ( this function is called from PyHandler to init the kicad module ) object TreePrjItemData::GetMenuPy() { return object( handle<>( borrowed( wxPyMake_wxObject( &m_fileMenu, false ) ) ) ); } /** * @brief KiCad python module init, \n * This function is called from PyHandler to init the kicad module */ /*****************************************************************************/ static void py_kicad_init() static void py_kicad_init() /*****************************************************************************/ { { def( "GetMainFrame", &GetMainFrame, return_value_policy< reference_existing_object >() ); def( "GetMainFrame", &GetMainFrame, return_value_policy< reference_existing_object >() ); def( "GetTypeExtension", &GetTypeExt ); def( "GetTypeExtension", &GetTypeExt ); Loading Loading @@ -156,6 +236,7 @@ static void py_kicad_init() .value( "DIRECTORY", TREE_DIRECTORY ) .value( "DIRECTORY", TREE_DIRECTORY ) .value( "MAX", TREE_MAX ); .value( "MAX", TREE_MAX ); class_<WinEDA_PrjFrame>( "TreeWindow" ) class_<WinEDA_PrjFrame>( "TreeWindow" ) // wx Interface // wx Interface .def( "ToWx", &WinEDA_PrjFrame::ToWx ) .def( "ToWx", &WinEDA_PrjFrame::ToWx ) Loading @@ -168,14 +249,38 @@ static void py_kicad_init() .def( "RemoveFilter", &WinEDA_PrjFrame::RemoveFilterPy ) .def( "RemoveFilter", &WinEDA_PrjFrame::RemoveFilterPy ) .def( "GetFilters", &WinEDA_PrjFrame::GetFilters, return_value_policy < copy_const_reference >() ) .def( "GetFilters", &WinEDA_PrjFrame::GetFilters, return_value_policy < copy_const_reference >() ) .def( "GetCurrentMenu", &WinEDA_PrjFrame::GetCurrentMenu ) .def( "GetCurrentMenu", &WinEDA_PrjFrame::GetCurrentMenu ) // Project tree control .def( "AddState", &WinEDA_PrjFrame::AddStatePy ) .def( "GetTreeCtrl", &WinEDA_PrjFrame::GetTreeCtrl ) /** Project tree control **/ .def( "GetItemData", &WinEDA_PrjFrame::GetItemData, return_value_policy < reference_existing_object >() ) .def( "FindItemData", &WinEDA_PrjFrame::FindItemData, return_value_policy < reference_existing_object >() ) // AddState .def( "NewFile", &WinEDA_PrjFrame::NewFilePy ) .def( "AddState", .def( "AddFile", &WinEDA_PrjFrame::AddFilePy ) &WinEDA_PrjFrame::AddStatePy ) ; // GetTreeCtrl .def( "GetTreeCtrl", &WinEDA_PrjFrame::GetTreeCtrl ) // GetItemData .def( "GetItemData", &WinEDA_PrjFrame::GetItemData, return_value_policy < reference_existing_object >() ) // FindItemData .def( "FindItemData", &WinEDA_PrjFrame::FindItemData, return_value_policy < reference_existing_object >() ) // NewFile .def( "NewFile", &WinEDA_PrjFrame::NewFilePy ) // AddFile .def( "AddFile", &WinEDA_PrjFrame::AddFilePy ) ; /* ENDOF class_<WinEDA_PrjFrame>( "TreeWindow" ) */ class_<WinEDA_MainFrame>( "MainFrame" ) class_<WinEDA_MainFrame>( "MainFrame" ) // Wx interface // Wx interface Loading @@ -188,18 +293,25 @@ static void py_kicad_init() } } // common module init function /** * @brief Common python module init */ /*****************************************************************************/ static void py_common_init() static void py_common_init() /*****************************************************************************/ { { def( "Print", &WinEDAPrint ); def( "Print", &WinEDAPrint ); def( "Clear", &WinEDAClear ); def( "Clear", &WinEDAClear ); } } #endif #endif /*****************************************************************************/ bool WinEDA_App::OnInit() bool WinEDA_App::OnInit() /*****************************************************************************/ { { wxImage::AddHandler(new wxPNGHandler); wxImage::AddHandler(new wxPNGHandler); Loading Loading @@ -236,8 +348,8 @@ bool WinEDA_App::OnInit() m_MainFrame->m_LeftWin->ReCreateTreePrj(); m_MainFrame->m_LeftWin->ReCreateTreePrj(); SetTopWindow(m_MainFrame); SetTopWindow(m_MainFrame); /* Splash Screen Logo */ /* Splash screen logo */ #ifdef SPLASH_OK #ifdef USE_SPLASH_IMAGE wxString logoname( wxString(m_BinDir) + _T("logokicad.png") ); wxString logoname( wxString(m_BinDir) + _T("logokicad.png") ); wxBitmap splash_screen; wxBitmap splash_screen; if ( splash_screen.LoadFile( logoname, wxBITMAP_TYPE_PNG ) ) if ( splash_screen.LoadFile( logoname, wxBITMAP_TYPE_PNG ) ) Loading @@ -247,7 +359,7 @@ bool WinEDA_App::OnInit() 3000, m_MainFrame, wxID_ANY, wxDefaultPosition, wxDefaultSize, 3000, m_MainFrame, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxSTAY_ON_TOP); wxSIMPLE_BORDER|wxSTAY_ON_TOP); } } #endif #endif /* USE_SPLASH_IMAGE */ m_MainFrame->Show(TRUE); m_MainFrame->Show(TRUE); m_MainFrame->Raise(); m_MainFrame->Raise(); Loading @@ -265,5 +377,3 @@ bool WinEDA_App::OnInit() return TRUE; return TRUE; } } // vim: tabstop=4 : noexpandtab : kicad/mainframe.cpp +48 −42 Original line number Original line Diff line number Diff line Loading @@ -21,16 +21,19 @@ #include "kicad.h" #include "kicad.h" /****************/ /* Constructor */ /****************/ // Constructor /*****************************************************************************/ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, wxWindow* parent, const wxString& title, wxWindow* parent, const wxPoint& pos, const wxSize& size ) : const wxString& title, const wxPoint& pos, const wxSize& size ) : WinEDA_BasicFrame( parent, KICAD_MAIN_FRAME, eda_app, title, pos, size ) WinEDA_BasicFrame( parent, KICAD_MAIN_FRAME, eda_app, title, pos, size ) /*****************************************************************************/ { { wxString msg; wxString msg; wxString line; wxSize clientsize; wxSize clientsize; m_FrameName = wxT( "KicadFrame" ); m_FrameName = wxT( "KicadFrame" ); Loading @@ -44,8 +47,10 @@ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, GetSettings(); GetSettings(); if( m_Parent->m_EDA_Config ) if( m_Parent->m_EDA_Config ) { { m_Parent->m_EDA_Config->Read( wxT( "LeftWinWidth" ), &m_LeftWin_Width ); m_Parent->m_EDA_Config->Read( wxT( "LeftWinWidth" ), m_Parent->m_EDA_Config->Read( wxT( "CommandWinWidth" ), &m_CommandWin_Height ); &m_LeftWin_Width ); m_Parent->m_EDA_Config->Read( wxT( "CommandWinWidth" ), &m_CommandWin_Height ); } } SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); Loading Loading @@ -91,13 +96,14 @@ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, m_DialogWin->SetFont( *g_StdFont ); m_DialogWin->SetFont( *g_StdFont ); // m_CommandWin is the box with buttons which launch eechema, pcbnew ... // m_CommandWin is the box with buttons which launch eechema, pcbnew ... m_CommandWin = new WinEDA_CommandFrame( this, ID_MAIN_COMMAND, m_CommandWin = new WinEDA_CommandFrame( this, ID_MAIN_COMMAND, wxPoint( m_LeftWin_Width, wxPoint( m_LeftWin_Width, 0 ), 0 ), wxSize( clientsize.x, m_CommandWin_Height ), wxSize( clientsize.x, m_CommandWin_Height ), wxNO_BORDER | wxSW_3D ); wxNO_BORDER | wxSW_3D ); wxString line; msg = wxGetCwd(); msg = wxGetCwd(); line.Printf( _( "Ready\nWorking dir: %s\n" ), msg.GetData() ); line.Printf( _( "Ready\nWorking dir: %s\n" ), msg.GetData() ); PrintMsg( line ); PrintMsg( line ); Loading @@ -108,11 +114,9 @@ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, } } /***************/ /*****************************************************************************/ /* Destructor */ /***************/ WinEDA_MainFrame::~WinEDA_MainFrame() WinEDA_MainFrame::~WinEDA_MainFrame() /*****************************************************************************/ { { if( m_Parent->m_EDA_Config ) if( m_Parent->m_EDA_Config ) { { Loading @@ -127,7 +131,6 @@ WinEDA_MainFrame::~WinEDA_MainFrame() /*******************************************************/ /*******************************************************/ void WinEDA_MainFrame::PrintMsg( const wxString& text ) void WinEDA_MainFrame::PrintMsg( const wxString& text ) /*******************************************************/ /*******************************************************/ /* /* * Put text in the dialog frame * Put text in the dialog frame */ */ Loading Loading @@ -394,6 +397,7 @@ void WinEDA_MainFrame::OnRefresh( wxCommandEvent& event ) } } /*********************************/ /*********************************/ void WinEDA_MainFrame::ClearMsg() void WinEDA_MainFrame::ClearMsg() /*********************************/ /*********************************/ Loading @@ -401,11 +405,13 @@ void WinEDA_MainFrame::ClearMsg() m_DialogWin->Clear(); m_DialogWin->Clear(); } } #ifdef KICAD_PYTHON #ifdef KICAD_PYTHON /*****************************************************************************/ void WinEDA_MainFrame::OnRefreshPy() void WinEDA_MainFrame::OnRefreshPy() /*****************************************************************************/ { { m_LeftWin->ReCreateTreePrj(); m_LeftWin->ReCreateTreePrj(); } } #endif #endif Loading
kicad/kicad.cpp +173 −63 Original line number Original line Diff line number Diff line /********************************/ /*****************************************************************************/ /* kicad.cpp - module principal */ /** /********************************/ * @file kicad.cpp * @brief Main kicad library manager file */ /*****************************************************************************/ #ifdef __GNUG__ #ifdef __GNUG__ #pragma implementation #pragma implementation Loading @@ -13,13 +18,9 @@ #include <wx/image.h> #include <wx/image.h> //#define SPLASH_OK #ifdef SPLASH_OK #ifdef USE_SPLASH_IMAGE /* Define Splash Image */ #define SPLASH_IMAGE logo_kicad.png #define SPLASH_IMAGE logo_kicad.png #include "wx/splash.h" #include "wx/splash.h" #include "wx/mediactrl.h" #include "wx/mediactrl.h" #endif #endif Loading @@ -35,95 +36,174 @@ #include <pyhandler.h> #include <pyhandler.h> #endif #endif /* Routines exportees */ /* Export functions */ /* fonctions importees */ /* Import functions */ char *GetFileName(char *FullPathName); char *GetFileName(char *FullPathName); void ShowLogo(char * FonteFileName); void ShowLogo(char * FonteFileName); /* Routines locales */ /* Local functions */ /************************************/ /************************************/ /* Called to initialize the program */ /* Called to initialize the program */ /************************************/ /************************************/ // Create a new application object // Create a new application object IMPLEMENT_APP(WinEDA_App) IMPLEMENT_APP(WinEDA_App) #ifdef KICAD_PYTHON #ifdef KICAD_PYTHON using namespace boost::python; using namespace boost::python; /*****************************************************************************/ // Global functions: // Global functions: /*****************************************************************************/ static WinEDA_MainFrame& GetMainFrame() { return *( wxGetApp().m_MainFrame ); } static WinEDA_MainFrame& GetMainFrame() { return *( wxGetApp().m_MainFrame ); } static void WinEDAPrint( str msg ) { GetMainFrame().PrintMsg( PyHandler::MakeStr( msg ) + wxT("\n") ); } static void WinEDAPrint( str msg ) { GetMainFrame().PrintMsg( PyHandler::MakeStr( msg ) + wxT("\n") ); } static void WinEDAClear() { GetMainFrame().ClearMsg(); } static void WinEDAClear() { GetMainFrame().ClearMsg(); } static object GetTypeExt( enum TreeFileType type ) { return PyHandler::Convert( WinEDA_PrjFrame::GetFileExt( type ) ); } static object GetTypeExt( enum TreeFileType type ) { return PyHandler::Convert( WinEDA_PrjFrame::GetFileExt( type ) ); } /*****************************************************************************/ // WinEDA_MainFrame Special binding functions: // WinEDA_MainFrame Special binding functions: // (one line functions are simple wrappers) // (one line functions are simple wrappers) /*****************************************************************************/ object WinEDA_MainFrame::GetPrjName() const { return PyHandler::Convert( m_PrjFileName ); } object WinEDA_MainFrame::GetPrjName() const { return PyHandler::Convert( m_PrjFileName ); } object WinEDA_MainFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } object WinEDA_MainFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } WinEDA_PrjFrame* WinEDA_MainFrame::GetTree() const { return m_LeftWin; } WinEDA_PrjFrame* WinEDA_MainFrame::GetTree() const { return m_LeftWin; } /** * @brief TODO */ /*****************************************************************************/ void WinEDA_MainFrame::AddFastLaunchPy( object & button ) void WinEDA_MainFrame::AddFastLaunchPy( object & button ) /*****************************************************************************/ { { wxBitmapButton * btn; wxBitmapButton * btn; bool success = wxPyConvertSwigPtr( button.ptr(), (void**)&btn, _T("wxBitmapButton")); bool success = wxPyConvertSwigPtr( button.ptr(), (void**)&btn, _T("wxBitmapButton")); if ( !success ) return; if(!success) return; Py_INCREF( button.ptr() ); Py_INCREF( button.ptr() ); btn->Reparent( m_CommandWin ); btn->Reparent( m_CommandWin ); m_CommandWin->AddFastLaunch( btn ); m_CommandWin->AddFastLaunch( btn ); } } /*****************************************************************************/ // WinEDA_PrjFrame Special binding functions: // WinEDA_PrjFrame Special binding functions: // (one line functions are simple wrappers) // (one line functions are simple wrappers) /*****************************************************************************/ // TODO To WxWidgets ? object WinEDA_PrjFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } // TODO Get ? object WinEDA_PrjFrame::GetFtExPy( enum TreeFileType type ) const { return PyHandler::Convert( GetFileExt( type ) ); } // Get python menu object WinEDA_PrjFrame::GetMenuPy( enum TreeFileType type ) { return object( handle<>( borrowed( wxPyMake_wxObject( GetContextMenu( (int) type ), false ) ) ) ); } // Get tree control object WinEDA_PrjFrame::GetTreeCtrl() { return object( handle<>( borrowed( wxPyMake_wxObject( m_TreeProject, false ) ) ) ); } // Get current menu object WinEDA_PrjFrame::GetCurrentMenu() { return object( handle<>( borrowed( wxPyMake_wxObject( m_PopupMenu, false ) ) ) ); } object WinEDA_PrjFrame::ToWx() { return object( handle<>( borrowed( wxPyMake_wxObject( this, false ) ) ) ); } object WinEDA_PrjFrame::GetFtExPy( enum TreeFileType type ) const { return PyHandler::Convert( GetFileExt( type ) ); } object WinEDA_PrjFrame::GetMenuPy( enum TreeFileType type ) { return object( handle<>( borrowed( wxPyMake_wxObject( GetContextMenu( (int) type ), false ) ) ) ); } object WinEDA_PrjFrame::GetTreeCtrl() { return object( handle<>( borrowed( wxPyMake_wxObject( m_TreeProject, false ) ) ) ); } object WinEDA_PrjFrame::GetCurrentMenu() { return object( handle<>( borrowed( wxPyMake_wxObject( m_PopupMenu, false ) ) ) ); } void WinEDA_PrjFrame::NewFilePy( const str & name, enum TreeFileType type, object & id ) /** * @brief TODO */ /*****************************************************************************/ void WinEDA_PrjFrame::NewFilePy( const str & name, enum TreeFileType type, object & id ) /*****************************************************************************/ { { wxTreeItemId root; wxTreeItemId root; if (! wxPyConvertSwigPtr( id.ptr(), (void**)&root, _T("wxTreeItemId") ) ) return; if (! wxPyConvertSwigPtr( id.ptr(), (void**)&root, _T("wxTreeItemId") ) ) return; NewFile( PyHandler::MakeStr( name ), type, root ); NewFile( PyHandler::MakeStr( name ), type, root ); } } /** * @brief Add a file to the tree under root, or m_root if conversion is wrong */ /*****************************************************************************/ void WinEDA_PrjFrame::AddFilePy( const str & file, object & root ) void WinEDA_PrjFrame::AddFilePy( const str & file, object & root ) /* Add a file to the tree under root, or m_root if conversion is wrong */ /*****************************************************************************/ { { wxTreeItemId * theroot = &m_root; wxTreeItemId * theroot = &m_root; if ( !wxPyConvertSwigPtr( root.ptr(), (void**)&root, _T("wxTreeItemId") ) ) if ( !wxPyConvertSwigPtr( root.ptr(), (void**)&root, _T("wxTreeItemId") ) ) { { theroot = &m_root; theroot = &m_root; } } AddFile( PyHandler::MakeStr( file ), *theroot ); AddFile( PyHandler::MakeStr( file ), *theroot ); } } /** * @brief convert wxTreeItem into TreePrjItemData */ /*****************************************************************************/ TreePrjItemData * WinEDA_PrjFrame::GetItemData( const object & item ) TreePrjItemData * WinEDA_PrjFrame::GetItemData( const object & item ) /* convert wxTreeItem into TreePrjItemData */ /*****************************************************************************/ { { wxTreeItemId *id = NULL; wxTreeItemId *id = NULL; if ( !wxPyConvertSwigPtr( item.ptr(), (void**)&id, _T("wxTreeItemId") ) ) return NULL; if (!wxPyConvertSwigPtr( item.ptr(), (void**)&id, _T("wxTreeItemId"))) { return NULL; } return dynamic_cast<TreePrjItemData *>( m_TreeProject->GetItemData( *id ) ); return dynamic_cast<TreePrjItemData *>( m_TreeProject->GetItemData( *id ) ); } } /*****************************************************************************/ // TreePrjItemData Special binding functions // TreePrjItemData Special binding functions // (one line functions are simple wrappers) // (one line functions are simple wrappers) /*****************************************************************************/ // Python rename bool TreePrjItemData::RenamePy( const str & newname, bool check ) { return Rename( PyHandler::MakeStr(newname), check ); } // Get python directory object TreePrjItemData::GetDirPy() const { return PyHandler::Convert( GetDir() ); } bool TreePrjItemData::RenamePy( const str & newname, bool check ) { return Rename( PyHandler::MakeStr(newname), check ); } // Get python filename object TreePrjItemData::GetDirPy() const { return PyHandler::Convert( GetDir() ); } object TreePrjItemData::GetFileNamePy() const object TreePrjItemData::GetFileNamePy() const { return PyHandler::Convert( GetFileName() ); } { return PyHandler::Convert( GetFileName() ); } object TreePrjItemData::GetMenuPy() { return object( handle<>( borrowed( wxPyMake_wxObject( &m_fileMenu, false ) ) ) ); } // kicad module init function // Get python menu // ( this function is called from PyHandler to init the kicad module ) object TreePrjItemData::GetMenuPy() { return object( handle<>( borrowed( wxPyMake_wxObject( &m_fileMenu, false ) ) ) ); } /** * @brief KiCad python module init, \n * This function is called from PyHandler to init the kicad module */ /*****************************************************************************/ static void py_kicad_init() static void py_kicad_init() /*****************************************************************************/ { { def( "GetMainFrame", &GetMainFrame, return_value_policy< reference_existing_object >() ); def( "GetMainFrame", &GetMainFrame, return_value_policy< reference_existing_object >() ); def( "GetTypeExtension", &GetTypeExt ); def( "GetTypeExtension", &GetTypeExt ); Loading Loading @@ -156,6 +236,7 @@ static void py_kicad_init() .value( "DIRECTORY", TREE_DIRECTORY ) .value( "DIRECTORY", TREE_DIRECTORY ) .value( "MAX", TREE_MAX ); .value( "MAX", TREE_MAX ); class_<WinEDA_PrjFrame>( "TreeWindow" ) class_<WinEDA_PrjFrame>( "TreeWindow" ) // wx Interface // wx Interface .def( "ToWx", &WinEDA_PrjFrame::ToWx ) .def( "ToWx", &WinEDA_PrjFrame::ToWx ) Loading @@ -168,14 +249,38 @@ static void py_kicad_init() .def( "RemoveFilter", &WinEDA_PrjFrame::RemoveFilterPy ) .def( "RemoveFilter", &WinEDA_PrjFrame::RemoveFilterPy ) .def( "GetFilters", &WinEDA_PrjFrame::GetFilters, return_value_policy < copy_const_reference >() ) .def( "GetFilters", &WinEDA_PrjFrame::GetFilters, return_value_policy < copy_const_reference >() ) .def( "GetCurrentMenu", &WinEDA_PrjFrame::GetCurrentMenu ) .def( "GetCurrentMenu", &WinEDA_PrjFrame::GetCurrentMenu ) // Project tree control .def( "AddState", &WinEDA_PrjFrame::AddStatePy ) .def( "GetTreeCtrl", &WinEDA_PrjFrame::GetTreeCtrl ) /** Project tree control **/ .def( "GetItemData", &WinEDA_PrjFrame::GetItemData, return_value_policy < reference_existing_object >() ) .def( "FindItemData", &WinEDA_PrjFrame::FindItemData, return_value_policy < reference_existing_object >() ) // AddState .def( "NewFile", &WinEDA_PrjFrame::NewFilePy ) .def( "AddState", .def( "AddFile", &WinEDA_PrjFrame::AddFilePy ) &WinEDA_PrjFrame::AddStatePy ) ; // GetTreeCtrl .def( "GetTreeCtrl", &WinEDA_PrjFrame::GetTreeCtrl ) // GetItemData .def( "GetItemData", &WinEDA_PrjFrame::GetItemData, return_value_policy < reference_existing_object >() ) // FindItemData .def( "FindItemData", &WinEDA_PrjFrame::FindItemData, return_value_policy < reference_existing_object >() ) // NewFile .def( "NewFile", &WinEDA_PrjFrame::NewFilePy ) // AddFile .def( "AddFile", &WinEDA_PrjFrame::AddFilePy ) ; /* ENDOF class_<WinEDA_PrjFrame>( "TreeWindow" ) */ class_<WinEDA_MainFrame>( "MainFrame" ) class_<WinEDA_MainFrame>( "MainFrame" ) // Wx interface // Wx interface Loading @@ -188,18 +293,25 @@ static void py_kicad_init() } } // common module init function /** * @brief Common python module init */ /*****************************************************************************/ static void py_common_init() static void py_common_init() /*****************************************************************************/ { { def( "Print", &WinEDAPrint ); def( "Print", &WinEDAPrint ); def( "Clear", &WinEDAClear ); def( "Clear", &WinEDAClear ); } } #endif #endif /*****************************************************************************/ bool WinEDA_App::OnInit() bool WinEDA_App::OnInit() /*****************************************************************************/ { { wxImage::AddHandler(new wxPNGHandler); wxImage::AddHandler(new wxPNGHandler); Loading Loading @@ -236,8 +348,8 @@ bool WinEDA_App::OnInit() m_MainFrame->m_LeftWin->ReCreateTreePrj(); m_MainFrame->m_LeftWin->ReCreateTreePrj(); SetTopWindow(m_MainFrame); SetTopWindow(m_MainFrame); /* Splash Screen Logo */ /* Splash screen logo */ #ifdef SPLASH_OK #ifdef USE_SPLASH_IMAGE wxString logoname( wxString(m_BinDir) + _T("logokicad.png") ); wxString logoname( wxString(m_BinDir) + _T("logokicad.png") ); wxBitmap splash_screen; wxBitmap splash_screen; if ( splash_screen.LoadFile( logoname, wxBITMAP_TYPE_PNG ) ) if ( splash_screen.LoadFile( logoname, wxBITMAP_TYPE_PNG ) ) Loading @@ -247,7 +359,7 @@ bool WinEDA_App::OnInit() 3000, m_MainFrame, wxID_ANY, wxDefaultPosition, wxDefaultSize, 3000, m_MainFrame, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxSTAY_ON_TOP); wxSIMPLE_BORDER|wxSTAY_ON_TOP); } } #endif #endif /* USE_SPLASH_IMAGE */ m_MainFrame->Show(TRUE); m_MainFrame->Show(TRUE); m_MainFrame->Raise(); m_MainFrame->Raise(); Loading @@ -265,5 +377,3 @@ bool WinEDA_App::OnInit() return TRUE; return TRUE; } } // vim: tabstop=4 : noexpandtab :
kicad/mainframe.cpp +48 −42 Original line number Original line Diff line number Diff line Loading @@ -21,16 +21,19 @@ #include "kicad.h" #include "kicad.h" /****************/ /* Constructor */ /****************/ // Constructor /*****************************************************************************/ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, wxWindow* parent, const wxString& title, wxWindow* parent, const wxPoint& pos, const wxSize& size ) : const wxString& title, const wxPoint& pos, const wxSize& size ) : WinEDA_BasicFrame( parent, KICAD_MAIN_FRAME, eda_app, title, pos, size ) WinEDA_BasicFrame( parent, KICAD_MAIN_FRAME, eda_app, title, pos, size ) /*****************************************************************************/ { { wxString msg; wxString msg; wxString line; wxSize clientsize; wxSize clientsize; m_FrameName = wxT( "KicadFrame" ); m_FrameName = wxT( "KicadFrame" ); Loading @@ -44,8 +47,10 @@ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, GetSettings(); GetSettings(); if( m_Parent->m_EDA_Config ) if( m_Parent->m_EDA_Config ) { { m_Parent->m_EDA_Config->Read( wxT( "LeftWinWidth" ), &m_LeftWin_Width ); m_Parent->m_EDA_Config->Read( wxT( "LeftWinWidth" ), m_Parent->m_EDA_Config->Read( wxT( "CommandWinWidth" ), &m_CommandWin_Height ); &m_LeftWin_Width ); m_Parent->m_EDA_Config->Read( wxT( "CommandWinWidth" ), &m_CommandWin_Height ); } } SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); Loading Loading @@ -91,13 +96,14 @@ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, m_DialogWin->SetFont( *g_StdFont ); m_DialogWin->SetFont( *g_StdFont ); // m_CommandWin is the box with buttons which launch eechema, pcbnew ... // m_CommandWin is the box with buttons which launch eechema, pcbnew ... m_CommandWin = new WinEDA_CommandFrame( this, ID_MAIN_COMMAND, m_CommandWin = new WinEDA_CommandFrame( this, ID_MAIN_COMMAND, wxPoint( m_LeftWin_Width, wxPoint( m_LeftWin_Width, 0 ), 0 ), wxSize( clientsize.x, m_CommandWin_Height ), wxSize( clientsize.x, m_CommandWin_Height ), wxNO_BORDER | wxSW_3D ); wxNO_BORDER | wxSW_3D ); wxString line; msg = wxGetCwd(); msg = wxGetCwd(); line.Printf( _( "Ready\nWorking dir: %s\n" ), msg.GetData() ); line.Printf( _( "Ready\nWorking dir: %s\n" ), msg.GetData() ); PrintMsg( line ); PrintMsg( line ); Loading @@ -108,11 +114,9 @@ WinEDA_MainFrame::WinEDA_MainFrame( WinEDA_App* eda_app, } } /***************/ /*****************************************************************************/ /* Destructor */ /***************/ WinEDA_MainFrame::~WinEDA_MainFrame() WinEDA_MainFrame::~WinEDA_MainFrame() /*****************************************************************************/ { { if( m_Parent->m_EDA_Config ) if( m_Parent->m_EDA_Config ) { { Loading @@ -127,7 +131,6 @@ WinEDA_MainFrame::~WinEDA_MainFrame() /*******************************************************/ /*******************************************************/ void WinEDA_MainFrame::PrintMsg( const wxString& text ) void WinEDA_MainFrame::PrintMsg( const wxString& text ) /*******************************************************/ /*******************************************************/ /* /* * Put text in the dialog frame * Put text in the dialog frame */ */ Loading Loading @@ -394,6 +397,7 @@ void WinEDA_MainFrame::OnRefresh( wxCommandEvent& event ) } } /*********************************/ /*********************************/ void WinEDA_MainFrame::ClearMsg() void WinEDA_MainFrame::ClearMsg() /*********************************/ /*********************************/ Loading @@ -401,11 +405,13 @@ void WinEDA_MainFrame::ClearMsg() m_DialogWin->Clear(); m_DialogWin->Clear(); } } #ifdef KICAD_PYTHON #ifdef KICAD_PYTHON /*****************************************************************************/ void WinEDA_MainFrame::OnRefreshPy() void WinEDA_MainFrame::OnRefreshPy() /*****************************************************************************/ { { m_LeftWin->ReCreateTreePrj(); m_LeftWin->ReCreateTreePrj(); } } #endif #endif