Eeschema: add direct acces to LibEdit in popup menu, when a component is selected ( Whishlist #788621 ). This new command calls Libedit and load the lib component corresponding to the selected schematic component.
This commit is contained in:
parent
fb8a6bf164
commit
09c038be5c
|
@ -92,6 +92,11 @@ bool LIB_ALIAS::IsRoot() const
|
||||||
return name.CmpNoCase( root->GetName() ) == 0;
|
return name.CmpNoCase( root->GetName() ) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CMP_LIBRARY* LIB_ALIAS::GetLibrary()
|
||||||
|
{
|
||||||
|
return root->GetLibrary();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function SaveDoc
|
* Function SaveDoc
|
||||||
|
|
|
@ -102,6 +102,8 @@ enum id_eeschema_frm
|
||||||
ID_POPUP_SCH_GETINFO_MARKER,
|
ID_POPUP_SCH_GETINFO_MARKER,
|
||||||
ID_POPUP_END_RANGE,
|
ID_POPUP_END_RANGE,
|
||||||
|
|
||||||
|
ID_POPUP_SCH_CALL_LIBEDIT_AND_LOAD_CMP,
|
||||||
|
|
||||||
// Unit select context menus command IDs.
|
// Unit select context menus command IDs.
|
||||||
ID_POPUP_SCH_SELECT_UNIT_CMP,
|
ID_POPUP_SCH_SELECT_UNIT_CMP,
|
||||||
ID_POPUP_SCH_SELECT_UNIT1,
|
ID_POPUP_SCH_SELECT_UNIT1,
|
||||||
|
|
|
@ -39,18 +39,57 @@ void LIB_EDIT_FRAME::DisplayLibInfos()
|
||||||
|
|
||||||
|
|
||||||
/* Function to select the current library (working library) */
|
/* Function to select the current library (working library) */
|
||||||
void LIB_EDIT_FRAME::SelectActiveLibrary()
|
void LIB_EDIT_FRAME::SelectActiveLibrary( CMP_LIBRARY* aLibrary )
|
||||||
{
|
{
|
||||||
CMP_LIBRARY* Lib;
|
if( aLibrary == NULL )
|
||||||
|
aLibrary = SelectLibraryFromList( this );
|
||||||
Lib = SelectLibraryFromList( this );
|
if( aLibrary )
|
||||||
if( Lib )
|
|
||||||
{
|
{
|
||||||
m_library = Lib;
|
m_library = aLibrary;
|
||||||
}
|
}
|
||||||
DisplayLibInfos();
|
DisplayLibInfos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* function LoadComponentAndSelectLib
|
||||||
|
* Select the current active library.
|
||||||
|
* aLibrary = the CMP_LIBRARY aLibrary to select
|
||||||
|
* aLibEntry = the lib component to load from aLibrary (can be an alias
|
||||||
|
* return true if OK.
|
||||||
|
*/
|
||||||
|
bool LIB_EDIT_FRAME::LoadComponentAndSelectLib( LIB_ALIAS* aLibEntry, CMP_LIBRARY* aLibrary )
|
||||||
|
{
|
||||||
|
if( GetScreen()->IsModify()
|
||||||
|
&& !IsOK( this, _( "Current part not saved.\n\nDiscard current changes?" ) ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
SelectActiveLibrary( aLibrary );
|
||||||
|
return LoadComponentFromCurrentLib( aLibEntry );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function LoadComponentFromCurrentLib
|
||||||
|
* load a lib component from the current active library.
|
||||||
|
* @param aLibEntry = the lib component to load from aLibrary (can be an alias
|
||||||
|
* @return true if OK.
|
||||||
|
*/
|
||||||
|
bool LIB_EDIT_FRAME::LoadComponentFromCurrentLib( LIB_ALIAS* aLibEntry )
|
||||||
|
{
|
||||||
|
if( !LoadOneLibraryPartAux( aLibEntry, m_library ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
g_EditPinByPinIsOn = m_component->UnitsLocked() ? true : false;
|
||||||
|
m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
|
||||||
|
|
||||||
|
GetScreen()->ClearUndoRedoList();
|
||||||
|
Zoom_Automatique( false );
|
||||||
|
DrawPanel->Refresh();
|
||||||
|
SetShowDeMorgan( m_component->HasConversion() );
|
||||||
|
m_HToolBar->Refresh();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function LoadOneLibraryPart
|
* Function LoadOneLibraryPart
|
||||||
|
@ -106,17 +145,8 @@ void LIB_EDIT_FRAME::LoadOneLibraryPart( wxCommandEvent& event )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !LoadOneLibraryPartAux( LibEntry, m_library ) )
|
if( ! LoadComponentFromCurrentLib( LibEntry ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_EditPinByPinIsOn = m_component->UnitsLocked() ? true : false;
|
|
||||||
m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
|
|
||||||
|
|
||||||
GetScreen()->ClearUndoRedoList();
|
|
||||||
Zoom_Automatique( false );
|
|
||||||
DrawPanel->Refresh();
|
|
||||||
SetShowDeMorgan( m_component->HasConversion() );
|
|
||||||
m_HToolBar->Refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -222,9 +222,25 @@ private:
|
||||||
|
|
||||||
// General:
|
// General:
|
||||||
void SaveOnePartInMemory();
|
void SaveOnePartInMemory();
|
||||||
void SelectActiveLibrary();
|
|
||||||
|
/**
|
||||||
|
* function SelectActiveLibrary
|
||||||
|
* Select the current active library.
|
||||||
|
* @param aLibrary = the CMP_LIBRARY aLibrary to select, or NULL
|
||||||
|
* to select from a list
|
||||||
|
*/
|
||||||
|
void SelectActiveLibrary( CMP_LIBRARY* aLibrary = NULL);
|
||||||
|
|
||||||
void SaveActiveLibrary( wxCommandEvent& event );
|
void SaveActiveLibrary( wxCommandEvent& event );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function LoadComponentFromCurrentLib
|
||||||
|
* load a lib component from the current active library.
|
||||||
|
* @param aLibEntry = the lib component to load from aLibrary (can be an alias
|
||||||
|
* @return true if OK.
|
||||||
|
*/
|
||||||
|
bool LoadComponentFromCurrentLib( LIB_ALIAS* aLibEntry );
|
||||||
|
|
||||||
bool LoadOneLibraryPartAux( LIB_ALIAS* LibEntry, CMP_LIBRARY* Library );
|
bool LoadOneLibraryPartAux( LIB_ALIAS* LibEntry, CMP_LIBRARY* Library );
|
||||||
|
|
||||||
void DisplayCmpDoc();
|
void DisplayCmpDoc();
|
||||||
|
@ -272,6 +288,15 @@ private:
|
||||||
void EditField( wxDC* DC, LIB_FIELD* Field );
|
void EditField( wxDC* DC, LIB_FIELD* Field );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* function LoadComponentAndSelectLib
|
||||||
|
* Select the current active library.
|
||||||
|
* @param aLibrary = the CMP_LIBRARY aLibrary to select
|
||||||
|
* @param aLibEntry = the lib component to load from aLibrary (can be an alias
|
||||||
|
* @return true if OK.
|
||||||
|
*/
|
||||||
|
bool LoadComponentAndSelectLib( LIB_ALIAS* aLibEntry, CMP_LIBRARY* aLibrary );
|
||||||
|
|
||||||
/* Block commands: */
|
/* Block commands: */
|
||||||
virtual int ReturnBlockCommand( int aKey );
|
virtual int ReturnBlockCommand( int aKey );
|
||||||
virtual void HandleBlockPlace( wxDC* DC );
|
virtual void HandleBlockPlace( wxDC* DC );
|
||||||
|
|
|
@ -299,6 +299,12 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component )
|
||||||
_( "Unit" ), component_select_unit_xpm );
|
_( "Unit" ), component_select_unit_xpm );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( !Component->GetFlags() )
|
||||||
|
{
|
||||||
|
ADD_MENUITEM( editmenu, ID_POPUP_SCH_CALL_LIBEDIT_AND_LOAD_CMP, _( "Edit with Libedit" ),
|
||||||
|
library_xpm );
|
||||||
|
}
|
||||||
|
|
||||||
ADD_MENUITEM_WITH_SUBMENU( PopMenu, editmenu, ID_POPUP_SCH_GENERIC_EDIT_CMP,
|
ADD_MENUITEM_WITH_SUBMENU( PopMenu, editmenu, ID_POPUP_SCH_GENERIC_EDIT_CMP,
|
||||||
_( "Edit Component" ), edit_component_xpm );
|
_( "Edit Component" ), edit_component_xpm );
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,6 @@
|
||||||
#include "wxEeschemaStruct.h"
|
#include "wxEeschemaStruct.h"
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "macros.h"
|
|
||||||
#include "protos.h"
|
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
#include "lib_rectangle.h"
|
#include "lib_rectangle.h"
|
||||||
#include "lib_pin.h"
|
#include "lib_pin.h"
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "class_library.h"
|
#include "class_library.h"
|
||||||
#include "wxEeschemaStruct.h"
|
#include "wxEeschemaStruct.h"
|
||||||
#include "class_sch_screen.h"
|
#include "class_sch_screen.h"
|
||||||
|
#include "sch_component.h"
|
||||||
|
|
||||||
#include "dialog_helpers.h"
|
#include "dialog_helpers.h"
|
||||||
#include "netlist_control.h"
|
#include "netlist_control.h"
|
||||||
|
@ -79,6 +80,7 @@ BEGIN_EVENT_TABLE( SCH_EDIT_FRAME, EDA_DRAW_FRAME )
|
||||||
EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END, SCH_EDIT_FRAME::SetLanguage )
|
EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END, SCH_EDIT_FRAME::SetLanguage )
|
||||||
|
|
||||||
EVT_TOOL( ID_TO_LIBRARY, SCH_EDIT_FRAME::OnOpenLibraryEditor )
|
EVT_TOOL( ID_TO_LIBRARY, SCH_EDIT_FRAME::OnOpenLibraryEditor )
|
||||||
|
EVT_TOOL( ID_POPUP_SCH_CALL_LIBEDIT_AND_LOAD_CMP, SCH_EDIT_FRAME::OnOpenLibraryEditor )
|
||||||
EVT_TOOL( ID_TO_LIBVIEW, SCH_EDIT_FRAME::OnOpenLibraryViewer )
|
EVT_TOOL( ID_TO_LIBVIEW, SCH_EDIT_FRAME::OnOpenLibraryViewer )
|
||||||
|
|
||||||
EVT_TOOL( ID_TO_PCB, SCH_EDIT_FRAME::OnOpenPcbnew )
|
EVT_TOOL( ID_TO_PCB, SCH_EDIT_FRAME::OnOpenPcbnew )
|
||||||
|
@ -707,13 +709,39 @@ void SCH_EDIT_FRAME::OnOpenLibraryViewer( wxCommandEvent& event )
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::OnOpenLibraryEditor( wxCommandEvent& event )
|
void SCH_EDIT_FRAME::OnOpenLibraryEditor( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
|
SCH_COMPONENT* component = NULL;
|
||||||
|
if( event.GetId() == ID_POPUP_SCH_CALL_LIBEDIT_AND_LOAD_CMP )
|
||||||
|
{
|
||||||
|
SCH_ITEM* item = GetScreen()->GetCurItem();
|
||||||
|
if( (item == NULL) || (item->GetFlags() != 0) ||
|
||||||
|
( item->Type() != SCH_COMPONENT_T ) )
|
||||||
|
{
|
||||||
|
wxMessageBox( _("Error: not a component or no component" ) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
component = (SCH_COMPONENT*) item;
|
||||||
|
}
|
||||||
|
|
||||||
if( m_LibeditFrame )
|
if( m_LibeditFrame )
|
||||||
m_LibeditFrame->Show( true );
|
{
|
||||||
|
if( m_LibeditFrame->IsIconized() )
|
||||||
|
m_LibeditFrame->Iconize( false );
|
||||||
|
m_LibeditFrame->Raise();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
m_LibeditFrame = new LIB_EDIT_FRAME( this,
|
m_LibeditFrame = new LIB_EDIT_FRAME( this,
|
||||||
wxT( "Library Editor" ),
|
wxT( "Library Editor" ),
|
||||||
wxPoint( -1, -1 ),
|
wxPoint( -1, -1 ),
|
||||||
wxSize( 600, 400 ) );
|
wxSize( 600, 400 ) );
|
||||||
|
if( component )
|
||||||
|
{
|
||||||
|
LIB_ALIAS* entry = CMP_LIBRARY::FindLibraryEntry( component->GetLibName() );
|
||||||
|
if( entry == NULL ) // Should not occur
|
||||||
|
return;
|
||||||
|
CMP_LIBRARY* library = entry->GetLibrary();
|
||||||
|
m_LibeditFrame->LoadComponentAndSelectLib( entry, library );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
*/
|
*/
|
||||||
static const int PcbZoomList[] =
|
static const int PcbZoomList[] =
|
||||||
{
|
{
|
||||||
5, 10, 15, 22, 30, 45, 70, 100, 150, 220, 350, 500, 800, 1200,
|
5, 10, 15, 20, 30, 45, 70, 100, 150, 220, 350, 500, 800, 1200,
|
||||||
2000, 3500, 5000, 10000, 20000
|
2000, 3500, 5000, 10000, 20000
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue