Move symbol management to a standard Save As... model.
Also brings horizontal toolbar in line with Pcbnew and Eeschema. And updates the EDA_LIST_DIALOG to current practices. This finishes the removal of the active library concept from the Symbol Editor (started with the new component tree in 5.0). Fixes: lp:1740717 * https://bugs.launchpad.net/kicad/+bug/1740717
This commit is contained in:
parent
e55bb9e748
commit
822ebf6955
|
@ -16,32 +16,32 @@ EDA_LIST_DIALOG_BASE::EDA_LIST_DIALOG_BASE( wxWindow* parent, wxWindowID id, con
|
|||
wxBoxSizer* bSizerMain;
|
||||
bSizerMain = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_filterLabel = new wxStaticText( this, wxID_ANY, _("Filter:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_filterLabel->Wrap( -1 );
|
||||
m_filterLabel->SetToolTip( _("Enter a string to filter items.\nOnly names containing this string will be listed") );
|
||||
|
||||
bSizerMain->Add( m_filterLabel, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_filterBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerMain->Add( m_filterBox, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
wxBoxSizer* bMargins;
|
||||
bMargins = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_listLabel = new wxStaticText( this, wxID_ANY, _("Items:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_listLabel->Wrap( -1 );
|
||||
bSizerMain->Add( m_listLabel, 0, wxRIGHT|wxLEFT, 5 );
|
||||
bMargins->Add( m_listLabel, 0, wxALL, 5 );
|
||||
|
||||
m_listBox = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES|wxALWAYS_SHOW_SB|wxVSCROLL );
|
||||
m_listBox = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES|wxALWAYS_SHOW_SB|wxRAISED_BORDER|wxVSCROLL );
|
||||
m_listBox->SetMinSize( wxSize( -1,200 ) );
|
||||
|
||||
bSizerMain->Add( m_listBox, 3, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||
bMargins->Add( m_listBox, 3, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||
|
||||
m_filterBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bMargins->Add( m_filterBox, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_staticTextMsg = new wxStaticText( this, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextMsg->Wrap( -1 );
|
||||
bSizerMain->Add( m_staticTextMsg, 0, wxRIGHT|wxLEFT, 5 );
|
||||
bMargins->Add( m_staticTextMsg, 0, wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_messages = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY );
|
||||
m_messages->SetMinSize( wxSize( -1,80 ) );
|
||||
|
||||
bSizerMain->Add( m_messages, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
bMargins->Add( m_messages, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
bSizerMain->Add( bMargins, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_sdbSizer = new wxStdDialogButtonSizer();
|
||||
m_sdbSizerOK = new wxButton( this, wxID_OK );
|
||||
|
@ -60,22 +60,16 @@ EDA_LIST_DIALOG_BASE::EDA_LIST_DIALOG_BASE( wxWindow* parent, wxWindowID id, con
|
|||
this->Centre( wxBOTH );
|
||||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( EDA_LIST_DIALOG_BASE::onClose ) );
|
||||
m_filterBox->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::textChangeInFilterBox ), NULL, this );
|
||||
m_listBox->Connect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( EDA_LIST_DIALOG_BASE::onListItemActivated ), NULL, this );
|
||||
m_listBox->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( EDA_LIST_DIALOG_BASE::onListItemSelected ), NULL, this );
|
||||
m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::onCancelClick ), NULL, this );
|
||||
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::onOkClick ), NULL, this );
|
||||
m_filterBox->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::textChangeInFilterBox ), NULL, this );
|
||||
}
|
||||
|
||||
EDA_LIST_DIALOG_BASE::~EDA_LIST_DIALOG_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( EDA_LIST_DIALOG_BASE::onClose ) );
|
||||
m_filterBox->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::textChangeInFilterBox ), NULL, this );
|
||||
m_listBox->Disconnect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( EDA_LIST_DIALOG_BASE::onListItemActivated ), NULL, this );
|
||||
m_listBox->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( EDA_LIST_DIALOG_BASE::onListItemSelected ), NULL, this );
|
||||
m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::onCancelClick ), NULL, this );
|
||||
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::onOkClick ), NULL, this );
|
||||
m_filterBox->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( EDA_LIST_DIALOG_BASE::textChangeInFilterBox ), NULL, this );
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,8 +18,8 @@
|
|||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
|
@ -35,10 +35,9 @@ class EDA_LIST_DIALOG_BASE : public DIALOG_SHIM
|
|||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_filterLabel;
|
||||
wxTextCtrl* m_filterBox;
|
||||
wxStaticText* m_listLabel;
|
||||
wxListCtrl* m_listBox;
|
||||
wxTextCtrl* m_filterBox;
|
||||
wxStaticText* m_staticTextMsg;
|
||||
wxTextCtrl* m_messages;
|
||||
wxStdDialogButtonSizer* m_sdbSizer;
|
||||
|
@ -46,12 +45,9 @@ class EDA_LIST_DIALOG_BASE : public DIALOG_SHIM
|
|||
wxButton* m_sdbSizerCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void onClose( wxCloseEvent& event ) = 0;
|
||||
virtual void textChangeInFilterBox( wxCommandEvent& event ) = 0;
|
||||
virtual void onListItemActivated( wxListEvent& event ) = 0;
|
||||
virtual void onListItemSelected( wxListEvent& event ) = 0;
|
||||
virtual void onCancelClick( wxCommandEvent& event ) = 0;
|
||||
virtual void onOkClick( wxCommandEvent& event ) = 0;
|
||||
virtual void textChangeInFilterBox( wxCommandEvent& event ) = 0;
|
||||
|
||||
|
||||
public:
|
||||
|
|
|
@ -35,10 +35,9 @@
|
|||
|
||||
|
||||
// wxWidgets spends *far* too long calcuating column widths (most of it, believe it or
|
||||
// not, in repeatedly creating/destorying a wxDC to do the measurement in).
|
||||
// Use default column widths instead. (Note that these will be scaled down proportionally
|
||||
// to fit the available space when the dialog is instantiated.)
|
||||
static int DEFAULT_COL_WIDTHS[] = { 400, 200 };
|
||||
// not, in repeatedly creating/destroying a wxDC to do the measurement in).
|
||||
// Use default column widths instead.
|
||||
static int DEFAULT_COL_WIDTHS[] = { 200, 600 };
|
||||
|
||||
|
||||
|
||||
|
@ -48,7 +47,7 @@ EDA_LIST_DIALOG::EDA_LIST_DIALOG( EDA_DRAW_FRAME* aParent, const wxString& aTitl
|
|||
const wxString& aSelection,
|
||||
void( *aCallBackFunction )( wxString&, void* ),
|
||||
void* aCallBackFunctionData,
|
||||
bool aSortList ) :
|
||||
bool aSortList, bool aShowHeaders ) :
|
||||
EDA_LIST_DIALOG_BASE( aParent, wxID_ANY, aTitle )
|
||||
{
|
||||
m_sortList = aSortList;
|
||||
|
@ -56,15 +55,18 @@ EDA_LIST_DIALOG::EDA_LIST_DIALOG( EDA_DRAW_FRAME* aParent, const wxString& aTitl
|
|||
m_cb_data = aCallBackFunctionData;
|
||||
m_itemsListCp = &aItemList;
|
||||
|
||||
m_filterBox->SetHint( _( "Filter" ) );
|
||||
|
||||
initDialog( aItemHeaders, aSelection );
|
||||
|
||||
if( !aShowHeaders )
|
||||
m_listBox->SetSingleStyle( wxLC_NO_HEADER, true );
|
||||
|
||||
// DIALOG_SHIM needs a unique hash_key because classname is not sufficient
|
||||
// because so many dialogs share this same class, with different numbers of
|
||||
// columns, different column names, and column widths.
|
||||
m_hash_key = TO_UTF8( aTitle );
|
||||
|
||||
m_filterBox->SetFocus();
|
||||
|
||||
m_sdbSizerOK->SetDefault();
|
||||
|
||||
// this line fixes an issue on Linux Ubuntu using Unity (dialog not shown),
|
||||
|
@ -109,9 +111,9 @@ void EDA_LIST_DIALOG::initDialog( const wxArrayString& aItemHeaders, const wxStr
|
|||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::SetFilterLabel( const wxString& aLabel )
|
||||
void EDA_LIST_DIALOG::SetFilterHint( const wxString& aHint )
|
||||
{
|
||||
m_filterLabel->SetLabel( aLabel );
|
||||
m_filterBox->SetHint( aHint );
|
||||
}
|
||||
|
||||
|
||||
|
@ -121,6 +123,12 @@ void EDA_LIST_DIALOG::SetListLabel( const wxString& aLabel )
|
|||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::SetOKLabel( const wxString& aLabel )
|
||||
{
|
||||
m_sdbSizerOK->SetLabel( aLabel );
|
||||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::textChangeInFilterBox( wxCommandEvent& event )
|
||||
{
|
||||
wxString filter;
|
||||
|
@ -216,12 +224,6 @@ void EDA_LIST_DIALOG::InsertItems( const std::vector< wxArrayString >& itemList,
|
|||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::onCancelClick( wxCommandEvent& event )
|
||||
{
|
||||
EndModal( wxID_CANCEL );
|
||||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::onListItemSelected( wxListEvent& event )
|
||||
{
|
||||
if( m_cb_func )
|
||||
|
@ -240,18 +242,6 @@ void EDA_LIST_DIALOG::onListItemActivated( wxListEvent& event )
|
|||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::onOkClick( wxCommandEvent& event )
|
||||
{
|
||||
EndModal( wxID_OK );
|
||||
}
|
||||
|
||||
|
||||
void EDA_LIST_DIALOG::onClose( wxCloseEvent& event )
|
||||
{
|
||||
EndModal( wxID_CANCEL );
|
||||
}
|
||||
|
||||
|
||||
/* Sort alphabetically, case insensitive.
|
||||
*/
|
||||
static int wxCALLBACK myCompareFunction( wxIntPtr aItem1, wxIntPtr aItem2,
|
||||
|
|
|
@ -224,11 +224,9 @@ enum id_eeschema_frm
|
|||
ID_LIBEDIT_IMPORT_PART,
|
||||
ID_LIBEDIT_EXPORT_PART,
|
||||
ID_LIBEDIT_SAVE_PART,
|
||||
ID_LIBEDIT_SAVE_PART_AS,
|
||||
ID_LIBEDIT_REVERT_PART,
|
||||
ID_LIBEDIT_REMOVE_PART,
|
||||
ID_LIBEDIT_CUT_PART,
|
||||
ID_LIBEDIT_COPY_PART,
|
||||
ID_LIBEDIT_PASTE_PART,
|
||||
ID_LIBEDIT_DUPLICATE_PART,
|
||||
|
||||
/* Library editor horizontal toolbar IDs. */
|
||||
|
|
|
@ -204,10 +204,6 @@ static EDA_HOTKEY HkCreatePin( _HKI( "Create Pin" ), HK_LIBEDIT_CREATE_PIN, 'P'
|
|||
static EDA_HOTKEY HkInsertPin( _HKI( "Repeat Pin" ), HK_REPEAT_LAST, WXK_INSERT );
|
||||
static EDA_HOTKEY HkMoveLibItem( _HKI( "Move Library Item" ), HK_LIBEDIT_MOVE_GRAPHIC_ITEM, 'M' );
|
||||
|
||||
// Load/save files
|
||||
static EDA_HOTKEY HkSaveAllLib( _HKI( "Save All Libraries" ), HK_SAVE_ALL_LIBS, 'S' + GR_KB_CTRL,
|
||||
ID_LIBEDIT_SAVE_ALL_LIBS );
|
||||
|
||||
// Autoplace fields
|
||||
static EDA_HOTKEY HkAutoplaceFields( _HKI( "Autoplace Fields" ), HK_AUTOPLACE_FIELDS, 'O',
|
||||
ID_AUTOPLACE_FIELDS );
|
||||
|
@ -324,7 +320,6 @@ static EDA_HOTKEY* schematic_Hotkey_List[] =
|
|||
// List of hotkey descriptors for library editor
|
||||
static EDA_HOTKEY* libEdit_Hotkey_List[] =
|
||||
{
|
||||
&HkSaveAllLib,
|
||||
&HkCreatePin,
|
||||
&HkInsertPin,
|
||||
&HkMoveLibItem,
|
||||
|
|
|
@ -71,7 +71,6 @@ enum hotkey_id_commnand {
|
|||
HK_ADD_GRAPHIC_TEXT,
|
||||
HK_ADD_GRAPHIC_POLYLINE,
|
||||
HK_ADD_NOCONN_FLAG,
|
||||
HK_SAVE_ALL_LIBS,
|
||||
HK_LEFT_CLICK,
|
||||
HK_LEFT_DCLICK,
|
||||
HK_LEAVE_SHEET,
|
||||
|
|
|
@ -104,12 +104,10 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
|
|||
EVT_TOOL( ID_LIBEDIT_IMPORT_PART, LIB_EDIT_FRAME::OnImportPart )
|
||||
EVT_TOOL( ID_LIBEDIT_EXPORT_PART, LIB_EDIT_FRAME::OnExportPart )
|
||||
EVT_TOOL( ID_LIBEDIT_SAVE_PART, LIB_EDIT_FRAME::OnSavePart )
|
||||
EVT_TOOL( ID_LIBEDIT_SAVE_PART_AS, LIB_EDIT_FRAME::OnSavePartAs )
|
||||
EVT_TOOL( ID_LIBEDIT_REVERT_PART, LIB_EDIT_FRAME::OnRevertPart )
|
||||
EVT_TOOL( ID_LIBEDIT_REMOVE_PART, LIB_EDIT_FRAME::OnRemovePart )
|
||||
EVT_TOOL( ID_LIBEDIT_CUT_PART, LIB_EDIT_FRAME::OnCopyCutPart )
|
||||
EVT_TOOL( ID_LIBEDIT_COPY_PART, LIB_EDIT_FRAME::OnCopyCutPart )
|
||||
EVT_TOOL( ID_LIBEDIT_PASTE_PART, LIB_EDIT_FRAME::OnPasteDuplicatePart )
|
||||
EVT_TOOL( ID_LIBEDIT_DUPLICATE_PART, LIB_EDIT_FRAME::OnPasteDuplicatePart )
|
||||
EVT_TOOL( ID_LIBEDIT_DUPLICATE_PART, LIB_EDIT_FRAME::OnDuplicatePart )
|
||||
|
||||
// Main horizontal toolbar.
|
||||
EVT_TOOL( ID_TO_LIBVIEW, LIB_EDIT_FRAME::OnOpenLibraryViewer )
|
||||
|
@ -174,10 +172,10 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
|
|||
// Update user interface elements.
|
||||
EVT_UPDATE_UI( wxID_PASTE, LIB_EDIT_FRAME::OnUpdatePaste )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_REVERT_LIBRARY, LIB_EDIT_FRAME::OnUpdateLibModified )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_EXPORT_PART, LIB_EDIT_FRAME::OnUpdateEditingPart )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_EXPORT_PART, LIB_EDIT_FRAME::OnUpdateHavePart )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_SAVE_PART, LIB_EDIT_FRAME::OnUpdatePartModified )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_SAVE_PART_AS, LIB_EDIT_FRAME::OnUpdateHavePart )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_REVERT_PART, LIB_EDIT_FRAME::OnUpdatePartModified )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_PASTE_PART, LIB_EDIT_FRAME::OnUpdateClipboardNotEmpty )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, LIB_EDIT_FRAME::OnUpdateEditingPart )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_CHECK_PART, LIB_EDIT_FRAME::OnUpdateEditingPart )
|
||||
EVT_UPDATE_UI( ID_LIBEDIT_GET_FRAME_EDIT_PART, LIB_EDIT_FRAME::OnUpdateEditingPart )
|
||||
|
@ -495,6 +493,14 @@ void LIB_EDIT_FRAME::OnUpdateSearchTreeTool( wxUpdateUIEvent& aEvent )
|
|||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnUpdateHavePart( wxUpdateUIEvent& aEvent )
|
||||
{
|
||||
LIB_ID libId = getTargetLibId();
|
||||
|
||||
aEvent.Enable( libId.IsValid() );
|
||||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnUpdateEditingPart( wxUpdateUIEvent& aEvent )
|
||||
{
|
||||
LIB_PART* part = GetCurPart();
|
||||
|
@ -541,12 +547,6 @@ void LIB_EDIT_FRAME::OnUpdateLibModified( wxUpdateUIEvent& aEvent )
|
|||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnUpdateClipboardNotEmpty( wxUpdateUIEvent& aEvent )
|
||||
{
|
||||
aEvent.Enable( !!m_copiedPart );
|
||||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnUpdateUndo( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( GetCurPart() && GetScreen() &&
|
||||
|
@ -592,7 +592,8 @@ void LIB_EDIT_FRAME::OnUpdateSaveAll( wxUpdateUIEvent& event )
|
|||
break;
|
||||
}
|
||||
|
||||
event.SetText( modified > 1 ? _( "Save All &Libraries..." ) : _( "Save All &Libraries" ) );
|
||||
event.SetText( AddHotkeyName( modified > 1 ? _( "&Save..." ) : _( "&Save All" ),
|
||||
g_Libedit_Hokeys_Descr, HK_SAVE ) );
|
||||
event.Enable( modified > 0 );
|
||||
}
|
||||
|
||||
|
|
|
@ -292,6 +292,7 @@ public:
|
|||
* the remaining unsaved changes.
|
||||
*/
|
||||
void OnSavePart( wxCommandEvent& aEvent );
|
||||
void OnSavePartAs( wxCommandEvent& aEvent );
|
||||
|
||||
/**
|
||||
* Reverts unsaved changes in a part, restoring to the last saved state.
|
||||
|
@ -303,8 +304,7 @@ public:
|
|||
*/
|
||||
void OnRemovePart( wxCommandEvent& aEvent );
|
||||
|
||||
void OnCopyCutPart( wxCommandEvent& aEvent );
|
||||
void OnPasteDuplicatePart( wxCommandEvent& aEvent );
|
||||
void OnDuplicatePart( wxCommandEvent& aEvent );
|
||||
|
||||
void OnSelectAlias( wxCommandEvent& event );
|
||||
void OnSelectPart( wxCommandEvent& event );
|
||||
|
@ -336,6 +336,7 @@ public:
|
|||
void OnUpdateSelectTool( wxUpdateUIEvent& aEvent );
|
||||
void OnUpdateEditingPart( wxUpdateUIEvent& event );
|
||||
void OnUpdatePartModified( wxUpdateUIEvent& aEvent );
|
||||
void OnUpdateHavePart( wxUpdateUIEvent& aEvent );
|
||||
void OnUpdateLibModified( wxUpdateUIEvent& aEvent );
|
||||
void OnUpdateClipboardNotEmpty( wxUpdateUIEvent& aEvent );
|
||||
void OnUpdateUndo( wxUpdateUIEvent& event );
|
||||
|
@ -786,9 +787,6 @@ private:
|
|||
///> Clipboard buffer storing LIB_ITEMs
|
||||
BLOCK_SELECTOR m_clipboard;
|
||||
|
||||
// Copy/cut/paste buffer to move parts between libraries
|
||||
std::unique_ptr<LIB_PART> m_copiedPart;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
|
|
|
@ -53,24 +53,15 @@
|
|||
#include <cmp_tree_model_adapter.h>
|
||||
|
||||
#include <dialogs/dialog_lib_new_component.h>
|
||||
|
||||
#include <dialog_helpers.h>
|
||||
|
||||
void LIB_EDIT_FRAME::DisplayLibInfos()
|
||||
{
|
||||
wxString lib = GetCurLib();
|
||||
wxString title = _( "Symbol Library Editor - " );
|
||||
wxString title = _( "Symbol Library Editor" );
|
||||
|
||||
if( !lib.empty() && Prj().SchSymbolLibTable()->HasLibrary( lib ) )
|
||||
{
|
||||
wxString fileName = Prj().SchSymbolLibTable()->GetFullURI( lib );
|
||||
|
||||
title += lib + " (" + fileName + ")";
|
||||
|
||||
if( wxFileName::FileExists( fileName ) && !wxFileName::IsFileWritable( fileName ) )
|
||||
title += " " + _( "[Read Only]" );
|
||||
}
|
||||
else
|
||||
title += _( "no library selected" );
|
||||
if( GetCurPart() )
|
||||
title += wxT( " - " ) + GetCurPart()->GetLibId().Format();
|
||||
|
||||
SetTitle( title );
|
||||
}
|
||||
|
@ -374,6 +365,104 @@ void LIB_EDIT_FRAME::OnSavePart( wxCommandEvent& aEvent )
|
|||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnSavePartAs( wxCommandEvent& aEvent )
|
||||
{
|
||||
LIB_ID old_lib_id = getTargetLibId();
|
||||
wxString old_name = old_lib_id.GetLibItemName();
|
||||
wxString old_lib = old_lib_id.GetLibNickname();
|
||||
LIB_PART* part = m_libMgr->GetBufferedPart( old_name, old_lib );
|
||||
|
||||
if( part )
|
||||
{
|
||||
SYMBOL_LIB_TABLE* tbl = Prj().SchSymbolLibTable();
|
||||
wxArrayString headers;
|
||||
std::vector< wxArrayString > itemsToDisplay;
|
||||
std::vector< wxString > libNicknames = tbl->GetLogicalLibs();
|
||||
|
||||
headers.Add( _( "Nickname" ) );
|
||||
headers.Add( _( "Description" ) );
|
||||
|
||||
for( const auto& name : libNicknames )
|
||||
{
|
||||
wxArrayString item;
|
||||
item.Add( name );
|
||||
item.Add( tbl->GetDescription( name ) );
|
||||
itemsToDisplay.push_back( item );
|
||||
}
|
||||
|
||||
EDA_LIST_DIALOG dlg( this, _( "Save Symbol As" ), headers, itemsToDisplay, old_lib,
|
||||
nullptr, nullptr, /* sort */ false, /* show headers */ false );
|
||||
dlg.SetListLabel( _( "Save in library:" ) );
|
||||
dlg.SetOKLabel( _( "Save" ) );
|
||||
|
||||
wxBoxSizer* bNameSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxStaticText* label = new wxStaticText( &dlg, wxID_ANY, _( "Name:" ),
|
||||
wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bNameSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
wxTextCtrl* nameTextCtrl = new wxTextCtrl( &dlg, wxID_ANY, old_name,
|
||||
wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bNameSizer->Add( nameTextCtrl, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
wxSizer* mainSizer = dlg.GetSizer();
|
||||
mainSizer->Prepend( bNameSizer, 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
// Move nameTextCtrl to the head of the tab-order
|
||||
if( dlg.GetChildren().DeleteObject( nameTextCtrl ) )
|
||||
dlg.GetChildren().Insert( nameTextCtrl );
|
||||
|
||||
dlg.SetInitialFocus( nameTextCtrl );
|
||||
|
||||
dlg.Layout();
|
||||
mainSizer->Fit( &dlg );
|
||||
|
||||
if( dlg.ShowModal() != wxID_OK )
|
||||
return; // canceled by user
|
||||
|
||||
wxString new_lib = dlg.GetTextSelection();
|
||||
|
||||
if( new_lib.IsEmpty() )
|
||||
{
|
||||
DisplayError( NULL, _( "No library specified. Symbol could not be saved." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
wxString new_name = nameTextCtrl->GetValue();
|
||||
new_name.Trim( true );
|
||||
new_name.Trim( false );
|
||||
new_name.Replace( " ", "_" );
|
||||
|
||||
if( new_name.IsEmpty() )
|
||||
{
|
||||
DisplayError( NULL, _( "No symbol name specified. Symbol could not be saved." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
// Test if there is a component with this name already.
|
||||
if( m_libMgr->PartExists( new_name, new_lib ) )
|
||||
{
|
||||
wxString msg = wxString::Format( _( "Symbol \"%s\" already exists in library \"%s\"" ),
|
||||
new_name, new_lib );
|
||||
DisplayError( this, msg );
|
||||
return;
|
||||
}
|
||||
|
||||
LIB_PART new_part( *part );
|
||||
new_part.SetName( new_name );
|
||||
|
||||
fixDuplicateAliases( &new_part, new_lib );
|
||||
m_libMgr->UpdatePart( &new_part, new_lib );
|
||||
m_treePane->GetCmpTree()->SelectLibId( LIB_ID( new_lib, new_part.GetName() ) );
|
||||
|
||||
if( isCurrentPart( old_lib_id ) )
|
||||
loadPart( new_name, new_lib, m_unit );
|
||||
|
||||
m_libMgr->RemovePart( old_name, old_lib );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnRemovePart( wxCommandEvent& aEvent )
|
||||
{
|
||||
LIB_ID libId = getTargetLibId();
|
||||
|
@ -393,30 +482,7 @@ void LIB_EDIT_FRAME::OnRemovePart( wxCommandEvent& aEvent )
|
|||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnCopyCutPart( wxCommandEvent& aEvent )
|
||||
{
|
||||
int unit = 0;
|
||||
auto cmpTree = m_treePane->GetCmpTree();
|
||||
LIB_ID partId = cmpTree->GetSelectedLibId( &unit );
|
||||
LIB_PART* part = m_libMgr->GetBufferedPart( partId.GetLibItemName(), partId.GetLibNickname() );
|
||||
|
||||
if( !part )
|
||||
return;
|
||||
|
||||
LIB_ID libId = getTargetLibId();
|
||||
m_copiedPart.reset( new LIB_PART( *part ) );
|
||||
|
||||
if( aEvent.GetId() == ID_LIBEDIT_CUT_PART )
|
||||
{
|
||||
if( isCurrentPart( libId ) )
|
||||
emptyScreen();
|
||||
|
||||
m_libMgr->RemovePart( libId.GetLibItemName(), libId.GetLibNickname() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LIB_EDIT_FRAME::OnPasteDuplicatePart( wxCommandEvent& aEvent )
|
||||
void LIB_EDIT_FRAME::OnDuplicatePart( wxCommandEvent& aEvent )
|
||||
{
|
||||
int unit = 0;
|
||||
LIB_ID libId = m_treePane->GetCmpTree()->GetSelectedLibId( &unit );
|
||||
|
@ -425,14 +491,7 @@ void LIB_EDIT_FRAME::OnPasteDuplicatePart( wxCommandEvent& aEvent )
|
|||
if( !m_libMgr->LibraryExists( lib ) )
|
||||
return;
|
||||
|
||||
LIB_PART* srcPart = nullptr;
|
||||
|
||||
if( aEvent.GetId() == ID_LIBEDIT_DUPLICATE_PART )
|
||||
srcPart = m_libMgr->GetBufferedPart( libId.GetLibItemName(), lib );
|
||||
else if( aEvent.GetId() == ID_LIBEDIT_PASTE_PART )
|
||||
srcPart = m_copiedPart.get();
|
||||
else
|
||||
wxFAIL;
|
||||
LIB_PART* srcPart = m_libMgr->GetBufferedPart( libId.GetLibItemName(), lib );
|
||||
|
||||
if( !srcPart )
|
||||
return;
|
||||
|
@ -456,7 +515,10 @@ void LIB_EDIT_FRAME::fixDuplicateAliases( LIB_PART* aPart, const wxString& aLibr
|
|||
|
||||
while( m_libMgr->PartExists( newName, aLibrary ) )
|
||||
{
|
||||
newName = wxString::Format( "%s_%d", alias->GetName(), sfx );
|
||||
if( sfx == 0 )
|
||||
newName = wxString::Format( "%s_copy", alias->GetName() );
|
||||
else
|
||||
newName = wxString::Format( "%s_copy%d", alias->GetName(), sfx );
|
||||
++sfx;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,9 +38,6 @@
|
|||
#include "lib_edit_frame.h"
|
||||
|
||||
|
||||
/**
|
||||
* @brief (Re)Create the menubar for the part editor frame
|
||||
*/
|
||||
void LIB_EDIT_FRAME::ReCreateMenuBar()
|
||||
{
|
||||
// wxWidgets handles the Mac Application menu behind the scenes, but that means
|
||||
|
@ -54,7 +51,6 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
// Menu File:
|
||||
wxMenu* fileMenu = new wxMenu;
|
||||
|
||||
// Creating/loading libraries
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_NEW_LIBRARY,
|
||||
_( "&New Library..." ),
|
||||
|
@ -63,19 +59,24 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_ADD_LIBRARY,
|
||||
_( "&Add Library..." ),
|
||||
_( "Add &Library..." ),
|
||||
_( "Adds a previously created library" ),
|
||||
KiBitmap( add_library_xpm ) );
|
||||
|
||||
// Separator
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_NEW_PART,
|
||||
_( "New S&ymbol..." ),
|
||||
_( "Create a new empty symbol" ),
|
||||
KiBitmap( new_component_xpm ) );
|
||||
|
||||
fileMenu->AppendSeparator();
|
||||
|
||||
// Save library variants
|
||||
text = AddHotkeyName( _( "&Save" ), g_Libedit_Hokeys_Descr, HK_SAVE );
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_SAVE_LIBRARY,
|
||||
_( "&Save Library" ),
|
||||
_( "Save the current library" ),
|
||||
KiBitmap( save_library_xpm ) );
|
||||
ID_LIBEDIT_SAVE_ALL_LIBS,
|
||||
text,
|
||||
_( "Save changes" ),
|
||||
KiBitmap( save_xpm ) );
|
||||
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_SAVE_LIBRARY_AS,
|
||||
|
@ -83,31 +84,40 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
_( "Save the current library to a new file" ),
|
||||
KiBitmap( save_as_xpm ) );
|
||||
|
||||
text = AddHotkeyName( _( "Save All &Libraries" ), g_Libedit_Hokeys_Descr, HK_SAVE_ALL_LIBS );
|
||||
AddMenuItem( fileMenu, ID_LIBEDIT_SAVE_ALL_LIBS, text, _( "Save all library changes" ),
|
||||
KiBitmap( save_xpm ) );
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_SAVE_PART_AS,
|
||||
_( "Save Symbol As..." ),
|
||||
_( "Saves a copy of the current symbol" ),
|
||||
KiBitmap( save_part_xpm ) );
|
||||
|
||||
// Separator
|
||||
fileMenu->AppendSeparator();
|
||||
|
||||
// Export as png file
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_IMPORT_PART,
|
||||
_( "&Import Symbol..." ),
|
||||
_( "Import a symbol to the current library" ),
|
||||
KiBitmap( import_part_xpm ) );
|
||||
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_EXPORT_PART,
|
||||
_( "&Export Symbol..." ),
|
||||
_( "Export the current symbol" ),
|
||||
KiBitmap( export_part_xpm ) );
|
||||
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_GEN_PNG_FILE,
|
||||
_( "Export Current View as &PNG..." ),
|
||||
_( "Export PNG..." ),
|
||||
_( "Create a PNG file from the current view" ),
|
||||
KiBitmap( plot_xpm ) );
|
||||
|
||||
// Export as SVG file
|
||||
AddMenuItem( fileMenu,
|
||||
ID_LIBEDIT_GEN_SVG_FILE,
|
||||
_( "Create S&VG File..." ),
|
||||
_( "Export SVG..." ),
|
||||
_( "Create a SVG file from the current symbol" ),
|
||||
KiBitmap( plot_svg_xpm ) );
|
||||
|
||||
// Separator
|
||||
fileMenu->AppendSeparator();
|
||||
|
||||
// Quit
|
||||
AddMenuItem( fileMenu,
|
||||
wxID_EXIT,
|
||||
_( "&Quit" ),
|
||||
|
@ -117,16 +127,13 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
// Edit menu
|
||||
wxMenu* editMenu = new wxMenu;
|
||||
|
||||
// Undo
|
||||
text = AddHotkeyName( _( "&Undo" ), g_Libedit_Hokeys_Descr, HK_UNDO );
|
||||
|
||||
AddMenuItem( editMenu,
|
||||
wxID_UNDO,
|
||||
text,
|
||||
_( "Undo last edit" ),
|
||||
KiBitmap( undo_xpm ) );
|
||||
|
||||
// Redo
|
||||
text = AddHotkeyName( _( "&Redo" ), g_Libedit_Hokeys_Descr, HK_REDO );
|
||||
AddMenuItem( editMenu,
|
||||
wxID_REDO,
|
||||
|
@ -134,6 +141,34 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
_( "Redo the last undo command" ),
|
||||
KiBitmap( redo_xpm ) );
|
||||
|
||||
editMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( editMenu,
|
||||
ID_LIBEDIT_GET_FRAME_EDIT_PART,
|
||||
_( "&Properties..." ),
|
||||
_( "Edit symbol properties" ),
|
||||
KiBitmap( part_properties_xpm ) );
|
||||
|
||||
AddMenuItem( editMenu,
|
||||
ID_LIBEDIT_GET_FRAME_EDIT_FIELDS,
|
||||
_( "&Fields..." ),
|
||||
_( "Edit field properties" ),
|
||||
KiBitmap( edit_text_xpm ) );
|
||||
|
||||
editMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( editMenu,
|
||||
ID_LIBEDIT_EDIT_PIN_BY_TABLE,
|
||||
_( "Pin &Table..." ),
|
||||
_( "Show pin table" ),
|
||||
KiBitmap( pin_table_xpm ) );
|
||||
|
||||
AddMenuItem( editMenu,
|
||||
ID_LIBEDIT_CHECK_PART,
|
||||
_( "Electrical Rules &Checker" ),
|
||||
_( "Check duplicate and off grid pins" ),
|
||||
KiBitmap( erc_xpm ) );
|
||||
|
||||
// Menu View:
|
||||
wxMenu* viewMenu = new wxMenu;
|
||||
|
||||
|
@ -180,63 +215,6 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
_( "Toggles the search tree visibility" ),
|
||||
KiBitmap( search_tree_xpm ) );
|
||||
|
||||
// Menu Part:
|
||||
wxMenu* partMenu = new wxMenu;
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_NEW_PART,
|
||||
_( "&New Symbol..." ),
|
||||
_( "Create a new empty symbol" ),
|
||||
KiBitmap( new_component_xpm ) );
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_SAVE_PART,
|
||||
_( "&Save Symbol" ),
|
||||
_( "Saves the current symbol to the library" ),
|
||||
KiBitmap( save_part_xpm ) );
|
||||
|
||||
partMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_IMPORT_PART,
|
||||
_( "&Import Symbol..." ),
|
||||
_( "Import a symbol to the current library" ),
|
||||
KiBitmap( import_part_xpm ) );
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_EXPORT_PART,
|
||||
_( "&Export Symbol..." ),
|
||||
_( "Export the current symbol" ),
|
||||
KiBitmap( export_part_xpm ) );
|
||||
|
||||
partMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_GET_FRAME_EDIT_PART,
|
||||
_( "&Properties..." ),
|
||||
_( "Edit symbol properties" ),
|
||||
KiBitmap( part_properties_xpm ) );
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_GET_FRAME_EDIT_FIELDS,
|
||||
_( "&Fields..." ),
|
||||
_( "Edit field properties" ),
|
||||
KiBitmap( edit_text_xpm ) );
|
||||
|
||||
partMenu->AppendSeparator();
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_EDIT_PIN_BY_TABLE,
|
||||
_( "Pi&n Table..." ),
|
||||
_( "Show pin table" ),
|
||||
KiBitmap( pin_table_xpm ) );
|
||||
|
||||
AddMenuItem( partMenu,
|
||||
ID_LIBEDIT_CHECK_PART,
|
||||
_( "Electrical Rules Checker" ),
|
||||
_( "Check duplicate and off grid pins" ),
|
||||
KiBitmap( erc_xpm ) );
|
||||
|
||||
// Menu Place:
|
||||
wxMenu* placeMenu = new wxMenu;
|
||||
|
||||
|
@ -349,7 +327,6 @@ void LIB_EDIT_FRAME::ReCreateMenuBar()
|
|||
menuBar->Append( fileMenu, _( "&File" ) );
|
||||
menuBar->Append( editMenu, _( "&Edit" ) );
|
||||
menuBar->Append( viewMenu, _( "&View" ) );
|
||||
menuBar->Append( partMenu, _( "&Symbol" ) );
|
||||
menuBar->Append( placeMenu, _( "&Place" ) );
|
||||
menuBar->Append( preferencesMenu, _( "P&references" ) );
|
||||
menuBar->Append( helpMenu, _( "&Help" ) );
|
||||
|
|
|
@ -116,35 +116,16 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
|
|||
_( "Create a new library" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_ADD_LIBRARY, wxEmptyString,
|
||||
KiScaledBitmap( add_library_xpm, this ),
|
||||
KiScaledBitmap( open_library_xpm, this ),
|
||||
_( "Add an existing library" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_SAVE_ALL_LIBS, wxEmptyString,
|
||||
KiScaledBitmap( save_library_xpm, this ),
|
||||
_( "Save all libraries" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_NEW_PART, wxEmptyString,
|
||||
KiScaledBitmap( new_component_xpm, this ),
|
||||
_( "Create new symbol" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_SAVE_PART, wxEmptyString,
|
||||
KiScaledBitmap( save_part_xpm, this ),
|
||||
_( "Save current symbol" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_IMPORT_PART, wxEmptyString,
|
||||
KiScaledBitmap( import_part_xpm, this ),
|
||||
_( "Import symbol" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_EXPORT_PART, wxEmptyString,
|
||||
KiScaledBitmap( export_part_xpm, this ),
|
||||
_( "Export symbol" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_mainToolBar->AddTool( wxID_PASTE, wxEmptyString, KiScaledBitmap( paste_xpm, this ),
|
||||
_( "Paste" ) );
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_SAVE_ALL_LIBS, wxEmptyString,
|
||||
KiScaledBitmap( save_xpm, this ),
|
||||
_( "Save libraries" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
|
@ -156,21 +137,6 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
|
|||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_PART, wxEmptyString,
|
||||
KiScaledBitmap( part_properties_xpm, this ),
|
||||
_( "Edit symbol properties" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, wxEmptyString,
|
||||
KiScaledBitmap( text_xpm, this ),
|
||||
_( "Edit field properties" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_CHECK_PART, wxEmptyString, KiScaledBitmap( erc_xpm, this ),
|
||||
_( "Check duplicate and off grid pins" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
msg = AddHotkeyName( HELP_ZOOM_REDRAW, g_Libedit_Hokeys_Descr, HK_ZOOM_REDRAW, IS_COMMENT );
|
||||
m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString,
|
||||
KiScaledBitmap( zoom_redraw_xpm, this ), msg );
|
||||
|
@ -191,12 +157,13 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
|
|||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_mainToolBar->AddTool( ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString,
|
||||
KiScaledBitmap( morgan1_xpm, this ),
|
||||
_( "Show as \"De Morgan\" normal symbol" ), wxITEM_CHECK );
|
||||
m_mainToolBar->AddTool( ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString,
|
||||
KiScaledBitmap( morgan2_xpm, this ),
|
||||
_( "Show as \"De Morgan\" convert symbol" ), wxITEM_CHECK );
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_PART, wxEmptyString,
|
||||
KiScaledBitmap( part_properties_xpm, this ),
|
||||
_( "Edit symbol properties" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, wxEmptyString,
|
||||
KiScaledBitmap( text_xpm, this ),
|
||||
_( "Edit field properties" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
|
@ -204,6 +171,22 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
|
|||
KiScaledBitmap( datasheet_xpm, this ),
|
||||
_( "Show associated datasheet or document" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_TABLE, wxEmptyString,
|
||||
KiScaledBitmap( pin_table_xpm, this ),
|
||||
_( "Show pin table" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_CHECK_PART, wxEmptyString, KiScaledBitmap( erc_xpm, this ),
|
||||
_( "Check duplicate and off grid pins" ) );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_mainToolBar->AddTool( ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString,
|
||||
KiScaledBitmap( morgan1_xpm, this ),
|
||||
_( "Show as \"De Morgan\" normal symbol" ), wxITEM_CHECK );
|
||||
m_mainToolBar->AddTool( ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString,
|
||||
KiScaledBitmap( morgan2_xpm, this ),
|
||||
_( "Show as \"De Morgan\" convert symbol" ), wxITEM_CHECK );
|
||||
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
m_partSelectBox = new wxComboBox( m_mainToolBar,
|
||||
|
@ -222,16 +205,13 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
|
|||
0, nullptr, wxCB_READONLY );
|
||||
m_mainToolBar->AddControl( m_aliasSelectBox );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
KiScaledSeparator( m_mainToolBar, this );
|
||||
|
||||
msg = _( "Synchronized pin edit mode\n"
|
||||
"Synchronized pin edit mode propagates to other units all pin changes except pin number modification.\n"
|
||||
"Enabled by default for multiunit parts with interchangeable units." );
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_SYNC_PIN_EDIT, wxEmptyString,
|
||||
KiScaledBitmap( pin2pin_xpm, this ), msg, wxITEM_CHECK );
|
||||
m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_TABLE, wxEmptyString,
|
||||
KiScaledBitmap( pin_table_xpm, this ),
|
||||
_( "Show pin table" ) );
|
||||
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect the changes
|
||||
m_mainToolBar->Realize();
|
||||
|
|
|
@ -40,7 +40,7 @@ CMP_TREE_PANE::CMP_TREE_PANE( LIB_EDIT_FRAME* aParent, LIB_MANAGER* aLibMgr )
|
|||
wxBoxSizer* boxSizer = new wxBoxSizer( wxVERTICAL );
|
||||
m_tree = new COMPONENT_TREE( this, &SYMBOL_LIB_TABLE::GetGlobalLibTable(),
|
||||
m_libMgr->GetAdapter(), COMPONENT_TREE::SEARCH );
|
||||
boxSizer->Add( m_tree, 1, wxEXPAND | wxALL, 5 );
|
||||
boxSizer->Add( m_tree, 1, wxEXPAND, 5 );
|
||||
|
||||
SetSizer( boxSizer ); // should remove the previous sizer according to wxWidgets docs
|
||||
Layout();
|
||||
|
@ -65,28 +65,26 @@ CMP_TREE_PANE::CMP_TREE_PANE( LIB_EDIT_FRAME* aParent, LIB_MANAGER* aLibMgr )
|
|||
KiBitmap( new_component_xpm ) );
|
||||
AddMenuItem( menuLibrary.get(), ID_LIBEDIT_IMPORT_PART, _( "&Import Symbol..." ),
|
||||
KiBitmap( import_part_xpm ) );
|
||||
AddMenuItem( menuLibrary.get(), ID_LIBEDIT_PASTE_PART, _( "Paste Symbol" ),
|
||||
KiBitmap( paste_xpm ) );
|
||||
|
||||
std::unique_ptr<wxMenu> menuPart = std::make_unique<wxMenu>();
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_EDIT_PART, _( "&Edit Symbol" ),
|
||||
KiBitmap( edit_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_REMOVE_PART, _( "Remove Symbol" ),
|
||||
KiBitmap( delete_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_EXPORT_PART, _( "E&xport Symbol..." ),
|
||||
KiBitmap( export_part_xpm ) );
|
||||
|
||||
menuPart->AppendSeparator();
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_SAVE_PART, _( "&Save Symbol" ),
|
||||
KiBitmap( save_part_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_SAVE_PART_AS, _( "Save Symbol As..." ),
|
||||
KiBitmap( save_part_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_DUPLICATE_PART, _( "Duplicate Symbol" ),
|
||||
KiBitmap( duplicate_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_REMOVE_PART, _( "Delete Symbol" ),
|
||||
KiBitmap( delete_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_REVERT_PART, _( "Revert Symbol" ),
|
||||
KiBitmap( undo_xpm ) );
|
||||
|
||||
menuPart->AppendSeparator();
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_CUT_PART, _( "Cut Symbol" ),
|
||||
KiBitmap( cut_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_COPY_PART, _( "Copy Symbol" ),
|
||||
KiBitmap( copy_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_DUPLICATE_PART, _( "Duplicate Symbol" ),
|
||||
KiBitmap( duplicate_xpm ) );
|
||||
AddMenuItem( menuPart.get(), ID_LIBEDIT_EXPORT_PART, _( "E&xport Symbol..." ),
|
||||
KiBitmap( export_part_xpm ) );
|
||||
|
||||
// Menu displayed when nothing is selected
|
||||
std::unique_ptr<wxMenu> menuNoSelection = std::make_unique<wxMenu>();
|
||||
|
|
|
@ -64,7 +64,7 @@ COMPONENT_TREE::COMPONENT_TREE( wxWindow* aParent, SYMBOL_LIB_TABLE* aSymLibTabl
|
|||
0, wxALIGN_CENTER | wxALL, 5 );
|
||||
#endif
|
||||
|
||||
search_sizer->Add( m_query_ctrl, 1, wxALL | wxEXPAND, 5 );
|
||||
search_sizer->Add( m_query_ctrl, 1, wxLEFT | wxTOP | wxEXPAND, 5 );
|
||||
sizer->Add( search_sizer, 0, wxEXPAND, 5 );
|
||||
|
||||
m_query_ctrl->Bind( wxEVT_TEXT, &COMPONENT_TREE::onQueryText, this );
|
||||
|
@ -77,7 +77,7 @@ COMPONENT_TREE::COMPONENT_TREE( wxWindow* aParent, SYMBOL_LIB_TABLE* aSymLibTabl
|
|||
new wxDataViewCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_SINGLE );
|
||||
m_adapter->AttachTo( m_tree_ctrl );
|
||||
|
||||
sizer->Add( m_tree_ctrl, 1, wxALL | wxEXPAND, 5 );
|
||||
sizer->Add( m_tree_ctrl, 1, wxLEFT | wxTOP | wxEXPAND, 5 );
|
||||
|
||||
// Description panel
|
||||
if( aWidgets & DETAILS )
|
||||
|
|
|
@ -64,6 +64,7 @@ public:
|
|||
* @param aCallBackFunction = callback function to display comments
|
||||
* @param aCallBackFunctionData = a pointer to pass to @a aCallBackFunction
|
||||
* @param aSortList = true to sort list items by alphabetic order.
|
||||
* @param aShowHeaders = true if the list should have headers.
|
||||
*/
|
||||
EDA_LIST_DIALOG( EDA_DRAW_FRAME* aParent, const wxString& aTitle,
|
||||
const wxArrayString& aItemHeaders,
|
||||
|
@ -71,12 +72,13 @@ public:
|
|||
const wxString& aRefText,
|
||||
void (* aCallBackFunction)( wxString& text, void* data ) = NULL,
|
||||
void* aCallBackFunctionData = NULL,
|
||||
bool aSortList = false );
|
||||
bool aSortList = false, bool aShowHeaders = true );
|
||||
|
||||
// ~EDA_LIST_DIALOG() {}
|
||||
|
||||
void SetFilterLabel( const wxString& aLabel );
|
||||
void SetFilterHint( const wxString& aHint );
|
||||
void SetListLabel( const wxString& aLabel );
|
||||
void SetOKLabel( const wxString& aLabel );
|
||||
|
||||
void Append( const wxArrayString& aItemStr );
|
||||
void InsertItems( const std::vector<wxArrayString>& aItemList, int aPosition = 0 );
|
||||
|
@ -91,9 +93,6 @@ public:
|
|||
wxString GetTextSelection( int aColumn = 0 );
|
||||
|
||||
private:
|
||||
void onClose( wxCloseEvent& event ) override;
|
||||
void onCancelClick( wxCommandEvent& event ) override;
|
||||
void onOkClick( wxCommandEvent& event ) override;
|
||||
void onListItemSelected( wxListEvent& event ) override;
|
||||
void onListItemActivated( wxListEvent& event ) override;
|
||||
void textChangeInFilterBox(wxCommandEvent& event) override;
|
||||
|
|
|
@ -714,40 +714,38 @@ bool FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary( wxString activeLibrary, MODUL
|
|||
for( unsigned i = 0; i < nicknames.size(); i++ )
|
||||
{
|
||||
wxArrayString item;
|
||||
|
||||
item.Add( nicknames[i] );
|
||||
item.Add( tbl->GetDescription( nicknames[i] ) );
|
||||
|
||||
itemsToDisplay.push_back( item );
|
||||
}
|
||||
|
||||
EDA_LIST_DIALOG dlg( this, FMT_SAVE_MODULE, headers, itemsToDisplay, libraryName );
|
||||
dlg.SetFilterLabel( _( "Library Filter:" ) );
|
||||
dlg.SetListLabel( _( "Save in Library:" ) );
|
||||
EDA_LIST_DIALOG dlg( this, FMT_SAVE_MODULE, headers, itemsToDisplay, libraryName,
|
||||
nullptr, nullptr, /* sort */ false, /* show headers */ false );
|
||||
dlg.SetListLabel( _( "Save in library:" ) );
|
||||
dlg.SetOKLabel( _( "Save" ) );
|
||||
|
||||
wxSizer* mainSizer = dlg.GetSizer();
|
||||
wxBoxSizer* bNameSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxStaticLine* separator = new wxStaticLine( &dlg, wxID_ANY, wxDefaultPosition,
|
||||
wxDefaultSize, wxLI_HORIZONTAL );
|
||||
mainSizer->Prepend( separator, 0, wxEXPAND|wxBOTTOM|wxTOP, 10 );
|
||||
wxStaticText* label = new wxStaticText( &dlg, wxID_ANY, _( "Name:" ),
|
||||
wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bNameSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
wxTextCtrl* nameTextCtrl = new wxTextCtrl( &dlg, wxID_ANY, footprintName,
|
||||
wxDefaultPosition, wxDefaultSize, 0 );
|
||||
mainSizer->Prepend( nameTextCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
bNameSizer->Add( nameTextCtrl, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
wxTextValidator nameValidator( wxFILTER_EXCLUDE_CHAR_LIST );
|
||||
nameValidator.SetCharExcludes( MODULE::StringLibNameInvalidChars( false ) );
|
||||
nameTextCtrl->SetValidator( nameValidator );
|
||||
|
||||
wxStaticText* label = new wxStaticText( &dlg, wxID_ANY, _( "Footprint Name:" ),
|
||||
wxDefaultPosition, wxDefaultSize, 0 );
|
||||
mainSizer->Prepend( label, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
wxSizer* mainSizer = dlg.GetSizer();
|
||||
mainSizer->Prepend( bNameSizer, 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
// Move nameTextCtrl to the head of the tab-order
|
||||
if( dlg.GetChildren().DeleteObject( nameTextCtrl ) )
|
||||
dlg.GetChildren().Insert( nameTextCtrl );
|
||||
|
||||
nameTextCtrl->SetFocus();
|
||||
dlg.SetInitialFocus( nameTextCtrl );
|
||||
|
||||
dlg.Layout();
|
||||
mainSizer->Fit( &dlg );
|
||||
|
|
Loading…
Reference in New Issue