Refactor: Move DIALOG_PLUGIN_OPTIONS to common and use enum for event ID
This commit is contained in:
parent
d526362d31
commit
a119bd604d
|
@ -125,6 +125,8 @@ set( COMMON_DLG_SRCS
|
|||
dialogs/dialog_page_settings_base.cpp
|
||||
dialogs/dialog_paste_special.cpp
|
||||
dialogs/dialog_paste_special_base.cpp
|
||||
dialogs/dialog_plugin_options.cpp
|
||||
dialogs/dialog_plugin_options_base.cpp
|
||||
dialogs/dialog_text_entry_base.cpp
|
||||
dialogs/dialog_page_settings.cpp
|
||||
dialogs/dialog_print_generic.cpp
|
||||
|
|
|
@ -0,0 +1,282 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2013 CERN
|
||||
* Copyright (C) 2013-2023 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
|
||||
*/
|
||||
|
||||
|
||||
#include <dialogs/dialog_plugin_options.h>
|
||||
#include <grid_tricks.h>
|
||||
#include <lib_table_base.h>
|
||||
#include <widgets/wx_grid.h>
|
||||
#include <widgets/std_bitmap_button.h>
|
||||
#include <bitmaps.h>
|
||||
#include <macros.h>
|
||||
|
||||
|
||||
#define INITIAL_HELP \
|
||||
_( "Select an <b>Option Choice</b> in the listbox above, and then click the <b>Append Selected Option</b> button." )
|
||||
|
||||
|
||||
DIALOG_PLUGIN_OPTIONS::DIALOG_PLUGIN_OPTIONS( wxWindow* aParent,
|
||||
const wxString& aNickname,
|
||||
const STRING_UTF8_MAP& aPluginOptions,
|
||||
const wxString& aFormattedOptions,
|
||||
wxString* aResult ) :
|
||||
DIALOG_PLUGIN_OPTIONS_BASE( aParent ),
|
||||
m_choices( aPluginOptions ),
|
||||
m_callers_options( aFormattedOptions ),
|
||||
m_result( aResult ),
|
||||
m_initial_help( INITIAL_HELP ),
|
||||
m_grid_widths_dirty( true )
|
||||
{
|
||||
SetTitle( wxString::Format( _( "Options for Library '%s'" ), aNickname ) );
|
||||
|
||||
// Give a bit more room for combobox editors
|
||||
m_grid->SetDefaultRowSize( m_grid->GetDefaultRowSize() + 4 );
|
||||
|
||||
m_grid->SetSelectionMode( wxGrid::wxGridSelectionModes::wxGridSelectRows );
|
||||
|
||||
// add Cut, Copy, and Paste to wxGrid
|
||||
m_grid->PushEventHandler( new GRID_TRICKS( m_grid ) );
|
||||
|
||||
// Option Choices Panel:
|
||||
if( m_choices.size() )
|
||||
{
|
||||
unsigned int row = 0;
|
||||
|
||||
for( STRING_UTF8_MAP::const_iterator it = m_choices.begin(); it != m_choices.end();
|
||||
++it, ++row )
|
||||
{
|
||||
wxString item = FROM_UTF8( it->first.c_str() );
|
||||
|
||||
m_listbox->InsertItems( 1, &item, row );
|
||||
}
|
||||
}
|
||||
|
||||
m_html->SetPage( m_initial_help );
|
||||
|
||||
// Configure button logos
|
||||
m_append_button->SetBitmap( KiBitmap( BITMAPS::small_plus ) );
|
||||
m_delete_button->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
|
||||
|
||||
// initial focus on the grid please.
|
||||
SetInitialFocus( m_grid );
|
||||
|
||||
SetupStandardButtons();
|
||||
}
|
||||
|
||||
|
||||
DIALOG_PLUGIN_OPTIONS ::~DIALOG_PLUGIN_OPTIONS()
|
||||
{
|
||||
// destroy GRID_TRICKS before m_grid.
|
||||
m_grid->PopEventHandler( true );
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_PLUGIN_OPTIONS::TransferDataToWindow()
|
||||
{
|
||||
if( !DIALOG_SHIM::TransferDataToWindow() )
|
||||
return false;
|
||||
|
||||
// Fill the grid with existing aOptions
|
||||
std::string options = TO_UTF8( m_callers_options );
|
||||
|
||||
STRING_UTF8_MAP* props = LIB_TABLE::ParseOptions( options );
|
||||
|
||||
if( props )
|
||||
{
|
||||
if( (int) props->size() > m_grid->GetNumberRows() )
|
||||
m_grid->AppendRows( props->size() - m_grid->GetNumberRows() );
|
||||
|
||||
int row = 0;
|
||||
|
||||
for( STRING_UTF8_MAP::const_iterator it = props->begin(); it != props->end();
|
||||
++it, ++row )
|
||||
{
|
||||
m_grid->SetCellValue( row, 0, FROM_UTF8( it->first.c_str() ) );
|
||||
m_grid->SetCellValue( row, 1, it->second );
|
||||
}
|
||||
|
||||
delete props;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_PLUGIN_OPTIONS::TransferDataFromWindow()
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return false;
|
||||
|
||||
if( !DIALOG_SHIM::TransferDataFromWindow() )
|
||||
return false;
|
||||
|
||||
STRING_UTF8_MAP props;
|
||||
const int rowCount = m_grid->GetNumberRows();
|
||||
|
||||
for( int row = 0; row<rowCount; ++row )
|
||||
{
|
||||
std::string name = TO_UTF8( m_grid->GetCellValue( row, 0 ).Trim( false ).Trim() );
|
||||
UTF8 value = m_grid->GetCellValue( row, 1 ).Trim( false ).Trim();
|
||||
|
||||
if( name.size() )
|
||||
{
|
||||
props[name] = value;
|
||||
}
|
||||
}
|
||||
|
||||
*m_result = LIB_TABLE::FormatOptions( &props );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int DIALOG_PLUGIN_OPTIONS::appendRow()
|
||||
{
|
||||
int row = m_grid->GetNumberRows();
|
||||
|
||||
m_grid->AppendRows( 1 );
|
||||
|
||||
// wx documentation is wrong, SetGridCursor does not make visible.
|
||||
m_grid->MakeCellVisible( row, 0 );
|
||||
m_grid->SetGridCursor( row, 0 );
|
||||
|
||||
return row;
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::appendOption()
|
||||
{
|
||||
int selected_row = m_listbox->GetSelection();
|
||||
if( selected_row != wxNOT_FOUND )
|
||||
{
|
||||
wxString option = m_listbox->GetString( selected_row );
|
||||
|
||||
int row_count = m_grid->GetNumberRows();
|
||||
int row;
|
||||
|
||||
for( row=0; row<row_count; ++row )
|
||||
{
|
||||
wxString col0 = m_grid->GetCellValue( row, 0 );
|
||||
|
||||
if( !col0 ) // empty col0
|
||||
break;
|
||||
}
|
||||
|
||||
if( row == row_count )
|
||||
row = appendRow();
|
||||
|
||||
m_grid->SetCellValue( row, 0, option );
|
||||
m_grid_widths_dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----<event handlers>------------------------------------------------------
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onListBoxItemSelected( wxCommandEvent& event )
|
||||
{
|
||||
// change the help text based on the m_listbox selection:
|
||||
if( event.IsSelection() )
|
||||
{
|
||||
std::string option = TO_UTF8( event.GetString() );
|
||||
UTF8 help_text;
|
||||
|
||||
if( m_choices.Value( option.c_str(), &help_text ) )
|
||||
m_html->SetPage( help_text );
|
||||
else
|
||||
m_html->SetPage( m_initial_help );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onListBoxItemDoubleClicked( wxCommandEvent& event )
|
||||
{
|
||||
appendOption();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onAppendOption( wxCommandEvent& )
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return;
|
||||
|
||||
appendOption();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onAppendRow( wxCommandEvent& )
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return;
|
||||
|
||||
appendRow();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onDeleteRow( wxCommandEvent& )
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return;
|
||||
|
||||
int curRow = m_grid->GetGridCursorRow();
|
||||
|
||||
m_grid->DeleteRows( curRow );
|
||||
m_grid_widths_dirty = true;
|
||||
|
||||
curRow = std::max( 0, curRow - 1 );
|
||||
m_grid->MakeCellVisible( curRow, m_grid->GetGridCursorCol() );
|
||||
m_grid->SetGridCursor( curRow, m_grid->GetGridCursorCol() );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onGridCellChange( wxGridEvent& aEvent )
|
||||
{
|
||||
m_grid_widths_dirty = true;
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onUpdateUI( wxUpdateUIEvent& )
|
||||
{
|
||||
if( m_grid_widths_dirty && !m_grid->IsCellEditControlShown() )
|
||||
{
|
||||
int width = m_grid->GetClientRect().GetWidth();
|
||||
|
||||
m_grid->AutoSizeColumn( 0 );
|
||||
m_grid->SetColSize( 0, std::max( 72, m_grid->GetColSize( 0 ) ) );
|
||||
|
||||
m_grid->SetColSize( 1, std::max( 120, width - m_grid->GetColSize( 0 ) ) );
|
||||
|
||||
m_grid_widths_dirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLUGIN_OPTIONS::onSize( wxSizeEvent& aEvent )
|
||||
{
|
||||
m_grid_widths_dirty = true;
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
@ -8,11 +8,11 @@
|
|||
#include "widgets/std_bitmap_button.h"
|
||||
#include "widgets/wx_grid.h"
|
||||
|
||||
#include "dialog_fp_plugin_options_base.h"
|
||||
#include "dialog_plugin_options_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
DIALOG_FP_PLUGIN_OPTIONS_BASE::DIALOG_FP_PLUGIN_OPTIONS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||
DIALOG_PLUGIN_OPTIONS_BASE::DIALOG_PLUGIN_OPTIONS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||
{
|
||||
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||
|
||||
|
@ -116,26 +116,26 @@ DIALOG_FP_PLUGIN_OPTIONS_BASE::DIALOG_FP_PLUGIN_OPTIONS_BASE( wxWindow* parent,
|
|||
this->Centre( wxBOTH );
|
||||
|
||||
// Connect Events
|
||||
m_grid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onGridCellChange ), NULL, this );
|
||||
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onSize ), NULL, this );
|
||||
m_grid->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onUpdateUI ), NULL, this );
|
||||
m_append_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onAppendRow ), NULL, this );
|
||||
m_delete_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onDeleteRow ), NULL, this );
|
||||
m_listbox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onListBoxItemSelected ), NULL, this );
|
||||
m_listbox->Connect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onListBoxItemDoubleClicked ), NULL, this );
|
||||
m_append_choice_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onAppendOption ), NULL, this );
|
||||
m_grid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onGridCellChange ), NULL, this );
|
||||
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onSize ), NULL, this );
|
||||
m_grid->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onUpdateUI ), NULL, this );
|
||||
m_append_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onAppendRow ), NULL, this );
|
||||
m_delete_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onDeleteRow ), NULL, this );
|
||||
m_listbox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onListBoxItemSelected ), NULL, this );
|
||||
m_listbox->Connect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onListBoxItemDoubleClicked ), NULL, this );
|
||||
m_append_choice_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onAppendOption ), NULL, this );
|
||||
}
|
||||
|
||||
DIALOG_FP_PLUGIN_OPTIONS_BASE::~DIALOG_FP_PLUGIN_OPTIONS_BASE()
|
||||
DIALOG_PLUGIN_OPTIONS_BASE::~DIALOG_PLUGIN_OPTIONS_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
m_grid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onGridCellChange ), NULL, this );
|
||||
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onSize ), NULL, this );
|
||||
m_grid->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onUpdateUI ), NULL, this );
|
||||
m_append_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onAppendRow ), NULL, this );
|
||||
m_delete_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onDeleteRow ), NULL, this );
|
||||
m_listbox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onListBoxItemSelected ), NULL, this );
|
||||
m_listbox->Disconnect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onListBoxItemDoubleClicked ), NULL, this );
|
||||
m_append_choice_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FP_PLUGIN_OPTIONS_BASE::onAppendOption ), NULL, this );
|
||||
m_grid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onGridCellChange ), NULL, this );
|
||||
m_grid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onSize ), NULL, this );
|
||||
m_grid->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onUpdateUI ), NULL, this );
|
||||
m_append_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onAppendRow ), NULL, this );
|
||||
m_delete_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onDeleteRow ), NULL, this );
|
||||
m_listbox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onListBoxItemSelected ), NULL, this );
|
||||
m_listbox->Disconnect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onListBoxItemDoubleClicked ), NULL, this );
|
||||
m_append_choice_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLUGIN_OPTIONS_BASE::onAppendOption ), NULL, this );
|
||||
|
||||
}
|
|
@ -11,13 +11,13 @@
|
|||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="event_generation">connect</property>
|
||||
<property name="file">dialog_fp_plugin_options_base</property>
|
||||
<property name="file">dialog_plugin_options_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="image_path_wrapper_function_name"></property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">dialog_fp_plugin_options</property>
|
||||
<property name="name">dialog_plugin_options</property>
|
||||
<property name="namespace"></property>
|
||||
<property name="path">.</property>
|
||||
<property name="precompiled_header"></property>
|
||||
|
@ -45,7 +45,7 @@
|
|||
<property name="id">wxID_ANY</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">DIALOG_FP_PLUGIN_OPTIONS_BASE</property>
|
||||
<property name="name">DIALOG_PLUGIN_OPTIONS_BASE</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">-1,-1</property>
|
||||
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER</property>
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
@ -36,9 +36,9 @@ class WX_GRID;
|
|||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class DIALOG_FP_PLUGIN_OPTIONS_BASE
|
||||
/// Class DIALOG_PLUGIN_OPTIONS_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class DIALOG_FP_PLUGIN_OPTIONS_BASE : public DIALOG_SHIM
|
||||
class DIALOG_PLUGIN_OPTIONS_BASE : public DIALOG_SHIM
|
||||
{
|
||||
private:
|
||||
|
||||
|
@ -66,9 +66,9 @@ class DIALOG_FP_PLUGIN_OPTIONS_BASE : public DIALOG_SHIM
|
|||
|
||||
public:
|
||||
|
||||
DIALOG_FP_PLUGIN_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER );
|
||||
DIALOG_PLUGIN_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER );
|
||||
|
||||
~DIALOG_FP_PLUGIN_OPTIONS_BASE();
|
||||
~DIALOG_PLUGIN_OPTIONS_BASE();
|
||||
|
||||
};
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
#include "lib_table_grid_tricks.h"
|
||||
#include "lib_table_grid.h"
|
||||
|
||||
|
||||
LIB_TABLE_GRID_TRICKS::LIB_TABLE_GRID_TRICKS( WX_GRID* aGrid ) : GRID_TRICKS( aGrid )
|
||||
{
|
||||
}
|
||||
|
@ -27,6 +28,14 @@ LIB_TABLE_GRID_TRICKS::LIB_TABLE_GRID_TRICKS( WX_GRID* aGrid ) : GRID_TRICKS( aG
|
|||
|
||||
void LIB_TABLE_GRID_TRICKS::showPopupMenu( wxMenu& menu, wxGridEvent& aEvent )
|
||||
{
|
||||
if( m_grid->GetGridCursorCol() == COL_OPTIONS )
|
||||
{
|
||||
menu.Append( LIB_TABLE_GRID_TRICKS_OPTIONS_EDITOR,
|
||||
_( "Options Editor..." ),
|
||||
_( "Edit options" ) );
|
||||
menu.AppendSeparator();
|
||||
}
|
||||
|
||||
bool showActivate = false;
|
||||
bool showDeactivate = false;
|
||||
LIB_TABLE_GRID* tbl = static_cast<LIB_TABLE_GRID*>( m_grid->GetTable() );
|
||||
|
@ -73,7 +82,11 @@ void LIB_TABLE_GRID_TRICKS::doPopupSelection( wxCommandEvent& event )
|
|||
int menu_id = event.GetId();
|
||||
LIB_TABLE_GRID* tbl = (LIB_TABLE_GRID*) m_grid->GetTable();
|
||||
|
||||
if( menu_id == LIB_TABLE_GRID_TRICKS_ACTIVATE_SELECTED
|
||||
if( menu_id == LIB_TABLE_GRID_TRICKS_OPTIONS_EDITOR )
|
||||
{
|
||||
optionsEditor( m_grid->GetGridCursorRow() );
|
||||
}
|
||||
else if( menu_id == LIB_TABLE_GRID_TRICKS_ACTIVATE_SELECTED
|
||||
|| menu_id == LIB_TABLE_GRID_TRICKS_DEACTIVATE_SELECTED )
|
||||
{
|
||||
bool selected_state = menu_id == LIB_TABLE_GRID_TRICKS_ACTIVATE_SELECTED;
|
||||
|
@ -95,3 +108,16 @@ void LIB_TABLE_GRID_TRICKS::doPopupSelection( wxCommandEvent& event )
|
|||
GRID_TRICKS::doPopupSelection( event );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool LIB_TABLE_GRID_TRICKS::handleDoubleClick( wxGridEvent& aEvent )
|
||||
{
|
||||
if( aEvent.GetCol() == COL_OPTIONS )
|
||||
{
|
||||
optionsEditor( aEvent.GetRow() );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -138,6 +138,11 @@ public:
|
|||
protected:
|
||||
DIALOG_EDIT_LIBRARY_TABLES* m_dialog;
|
||||
|
||||
virtual void optionsEditor( int aRow )
|
||||
{
|
||||
DisplayError( m_dialog, _( "optionsEditor not implemented in SYMBOL_GRID_TRICKS" ) );
|
||||
}
|
||||
|
||||
/// handle specialized clipboard text, with leading "(sym_lib_table" or
|
||||
/// spreadsheet formatted text.
|
||||
virtual void paste_text( const wxString& cb_text ) override
|
||||
|
|
|
@ -432,7 +432,7 @@ public:
|
|||
* <dd>This eventually is what shows up into the fp-lib-table "options"
|
||||
* field, possibly combined with others.</dd>
|
||||
* <dt>internationalized description</dt>
|
||||
* <dd>The internationalized description is displayed in DIALOG_FP_SCH_PLUGIN_OPTIONS.
|
||||
* <dd>The internationalized description is displayed in DIALOG_PLUGIN_OPTIONS.
|
||||
* It may be multi-line and be quite explanatory of the option.</dd>
|
||||
* </dl>
|
||||
* <br>
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2023 KiCad Developers, see AUTHORS.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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _DIALOG_PLUGIN_OPTIONS_H_
|
||||
#define _DIALOG_PLUGIN_OPTIONS_H_
|
||||
|
||||
#include <dialog_plugin_options_base.h>
|
||||
#include <string_utf8_map.h>
|
||||
|
||||
/**
|
||||
* DIALOG_PLUGIN_OPTIONS
|
||||
* is an options editor in the form of a two column name/value
|
||||
* spreadsheet like (table) UI.
|
||||
*/
|
||||
class DIALOG_PLUGIN_OPTIONS : public DIALOG_PLUGIN_OPTIONS_BASE
|
||||
{
|
||||
public:
|
||||
DIALOG_PLUGIN_OPTIONS( wxWindow* aParent, const wxString& aNickname,
|
||||
const STRING_UTF8_MAP& aPluginOptions, const wxString& aFormattedOptions,
|
||||
wxString* aResult );
|
||||
|
||||
~DIALOG_PLUGIN_OPTIONS() override;
|
||||
|
||||
bool TransferDataToWindow() override;
|
||||
|
||||
bool TransferDataFromWindow() override;
|
||||
|
||||
private:
|
||||
const wxString& m_callers_options;
|
||||
wxString* m_result;
|
||||
STRING_UTF8_MAP m_choices;
|
||||
wxString m_initial_help;
|
||||
bool m_grid_widths_dirty;
|
||||
|
||||
int appendRow();
|
||||
|
||||
void appendOption();
|
||||
|
||||
//-----<event handlers>------------------------------------------------------
|
||||
void onListBoxItemSelected( wxCommandEvent& event ) override;
|
||||
|
||||
void onListBoxItemDoubleClicked( wxCommandEvent& event ) override;
|
||||
|
||||
void onAppendOption( wxCommandEvent& ) override;
|
||||
|
||||
void onAppendRow( wxCommandEvent& ) override;
|
||||
|
||||
void onDeleteRow( wxCommandEvent& ) override;
|
||||
|
||||
void onGridCellChange( wxGridEvent& aEvent ) override;
|
||||
|
||||
void onUpdateUI( wxUpdateUIEvent& ) override;
|
||||
|
||||
void onSize( wxSizeEvent& aEvent ) override;
|
||||
};
|
||||
|
||||
|
||||
#endif // _DIALOG_PLUGIN_OPTIONS_H_
|
||||
|
|
@ -24,6 +24,8 @@
|
|||
#include <string_utils.h>
|
||||
#include <wx/grid.h>
|
||||
|
||||
class LIB_TABLE_GRID_TRICKS;
|
||||
|
||||
const wxColour COLOUR_ROW_ENABLED( 0, 0, 0 );
|
||||
const wxColour COLOUR_ROW_DISABLED( 100, 100, 100 );
|
||||
|
||||
|
@ -47,6 +49,8 @@ enum COL_ORDER
|
|||
*/
|
||||
class LIB_TABLE_GRID : public wxGridTableBase
|
||||
{
|
||||
friend class LIB_TABLE_GRID_TRICKS;
|
||||
|
||||
public:
|
||||
|
||||
//-----<wxGridTableBase overloads>-------------------------------------------
|
||||
|
|
|
@ -25,12 +25,19 @@ class LIB_TABLE_GRID_TRICKS : public GRID_TRICKS
|
|||
{
|
||||
LIB_TABLE_GRID_TRICKS_ACTIVATE_SELECTED = GRIDTRICKS_FIRST_CLIENT_ID,
|
||||
LIB_TABLE_GRID_TRICKS_DEACTIVATE_SELECTED,
|
||||
LIB_TABLE_GRID_TRICKS_LIBRARY_SETTINGS
|
||||
LIB_TABLE_GRID_TRICKS_LIBRARY_SETTINGS,
|
||||
LIB_TABLE_GRID_TRICKS_OPTIONS_EDITOR
|
||||
};
|
||||
|
||||
public:
|
||||
explicit LIB_TABLE_GRID_TRICKS( WX_GRID* aGrid );
|
||||
|
||||
virtual ~LIB_TABLE_GRID_TRICKS(){};
|
||||
|
||||
void showPopupMenu( wxMenu& menu, wxGridEvent& aEvent ) override;
|
||||
void doPopupSelection( wxCommandEvent& event ) override;
|
||||
|
||||
protected:
|
||||
virtual void optionsEditor( int aRow ) = 0;
|
||||
bool handleDoubleClick( wxGridEvent& aEvent ) override;
|
||||
};
|
||||
|
|
|
@ -74,8 +74,6 @@ set( PCBNEW_DIALOGS
|
|||
dialogs/dialog_find_base.cpp
|
||||
dialogs/dialog_footprint_wizard_list.cpp
|
||||
dialogs/dialog_footprint_wizard_list_base.cpp
|
||||
dialogs/dialog_fp_plugin_options.cpp
|
||||
dialogs/dialog_fp_plugin_options_base.cpp
|
||||
dialogs/dialog_gen_footprint_position.cpp
|
||||
dialogs/dialog_gen_footprint_position_file_base.cpp
|
||||
dialogs/dialog_gencad_export_options.cpp
|
||||
|
|
|
@ -1,304 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||
* Copyright (C) 2013 CERN
|
||||
* Copyright (C) 2013-2022 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
|
||||
*/
|
||||
|
||||
|
||||
#include <invoke_pcb_dialog.h>
|
||||
#include <dialog_fp_plugin_options_base.h>
|
||||
#include <fp_lib_table.h>
|
||||
#include <grid_tricks.h>
|
||||
#include <widgets/wx_grid.h>
|
||||
#include <widgets/std_bitmap_button.h>
|
||||
#include <bitmaps.h>
|
||||
#include <macros.h>
|
||||
|
||||
|
||||
#define INITIAL_HELP \
|
||||
_( "Select an <b>Option Choice</b> in the listbox above, and then click the <b>Append Selected Option</b> button." )
|
||||
|
||||
|
||||
using std::string;
|
||||
|
||||
|
||||
/**
|
||||
* DIALOG_FP_PLUGIN_OPTIONS
|
||||
* is an options editor in the form of a two column name/value
|
||||
* spreadsheet like (table) UI. It takes hints from a pcbnew PLUGIN as to
|
||||
* supported options.
|
||||
*/
|
||||
class DIALOG_FP_PLUGIN_OPTIONS : public DIALOG_FP_PLUGIN_OPTIONS_BASE
|
||||
{
|
||||
|
||||
public:
|
||||
DIALOG_FP_PLUGIN_OPTIONS( wxWindow* aParent, const wxString& aNickname,
|
||||
const wxString& aPluginType, const wxString& aOptions,
|
||||
wxString* aResult ) :
|
||||
DIALOG_FP_PLUGIN_OPTIONS_BASE( aParent ),
|
||||
m_callers_options( aOptions ),
|
||||
m_result( aResult ),
|
||||
m_initial_help( INITIAL_HELP ),
|
||||
m_grid_widths_dirty( true )
|
||||
{
|
||||
SetTitle( wxString::Format( _( "Options for Library '%s'" ), aNickname ) );
|
||||
|
||||
// Give a bit more room for combobox editors
|
||||
m_grid->SetDefaultRowSize( m_grid->GetDefaultRowSize() + 4 );
|
||||
|
||||
m_grid->SetSelectionMode( wxGrid::wxGridSelectionModes::wxGridSelectRows );
|
||||
|
||||
// add Cut, Copy, and Paste to wxGrid
|
||||
m_grid->PushEventHandler( new GRID_TRICKS( m_grid ) );
|
||||
|
||||
// Option Choices Panel:
|
||||
|
||||
IO_MGR::PCB_FILE_T pi_type = IO_MGR::EnumFromStr( aPluginType );
|
||||
PLUGIN::RELEASER pi( IO_MGR::PluginFind( pi_type ) );
|
||||
|
||||
pi->FootprintLibOptions( &m_choices );
|
||||
|
||||
if( m_choices.size() )
|
||||
{
|
||||
unsigned int row = 0;
|
||||
|
||||
for( STRING_UTF8_MAP::const_iterator it = m_choices.begin(); it != m_choices.end();
|
||||
++it, ++row )
|
||||
{
|
||||
wxString item = FROM_UTF8( it->first.c_str() );
|
||||
|
||||
m_listbox->InsertItems( 1, &item, row );
|
||||
}
|
||||
}
|
||||
|
||||
m_html->SetPage( m_initial_help );
|
||||
|
||||
// Configure button logos
|
||||
m_append_button->SetBitmap( KiBitmap( BITMAPS::small_plus ) );
|
||||
m_delete_button->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
|
||||
|
||||
// initial focus on the grid please.
|
||||
SetInitialFocus( m_grid );
|
||||
|
||||
SetupStandardButtons();
|
||||
}
|
||||
|
||||
~DIALOG_FP_PLUGIN_OPTIONS() override
|
||||
{
|
||||
// destroy GRID_TRICKS before m_grid.
|
||||
m_grid->PopEventHandler( true );
|
||||
}
|
||||
|
||||
bool TransferDataToWindow() override
|
||||
{
|
||||
if( !DIALOG_SHIM::TransferDataToWindow() )
|
||||
return false;
|
||||
|
||||
// Fill the grid with existing aOptions
|
||||
string options = TO_UTF8( m_callers_options );
|
||||
|
||||
STRING_UTF8_MAP* props = LIB_TABLE::ParseOptions( options );
|
||||
|
||||
if( props )
|
||||
{
|
||||
if( (int) props->size() > m_grid->GetNumberRows() )
|
||||
m_grid->AppendRows( props->size() - m_grid->GetNumberRows() );
|
||||
|
||||
int row = 0;
|
||||
|
||||
for( STRING_UTF8_MAP::const_iterator it = props->begin(); it != props->end();
|
||||
++it, ++row )
|
||||
{
|
||||
m_grid->SetCellValue( row, 0, FROM_UTF8( it->first.c_str() ) );
|
||||
m_grid->SetCellValue( row, 1, it->second );
|
||||
}
|
||||
|
||||
delete props;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TransferDataFromWindow() override
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return false;
|
||||
|
||||
if( !DIALOG_SHIM::TransferDataFromWindow() )
|
||||
return false;
|
||||
|
||||
STRING_UTF8_MAP props;
|
||||
const int rowCount = m_grid->GetNumberRows();
|
||||
|
||||
for( int row = 0; row<rowCount; ++row )
|
||||
{
|
||||
string name = TO_UTF8( m_grid->GetCellValue( row, 0 ).Trim( false ).Trim() );
|
||||
UTF8 value = m_grid->GetCellValue( row, 1 ).Trim( false ).Trim();
|
||||
|
||||
if( name.size() )
|
||||
{
|
||||
props[name] = value;
|
||||
}
|
||||
}
|
||||
|
||||
*m_result = LIB_TABLE::FormatOptions( &props );
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
const wxString& m_callers_options;
|
||||
wxString* m_result;
|
||||
STRING_UTF8_MAP m_choices;
|
||||
wxString m_initial_help;
|
||||
bool m_grid_widths_dirty;
|
||||
|
||||
int appendRow()
|
||||
{
|
||||
int row = m_grid->GetNumberRows();
|
||||
|
||||
m_grid->AppendRows( 1 );
|
||||
|
||||
// wx documentation is wrong, SetGridCursor does not make visible.
|
||||
m_grid->MakeCellVisible( row, 0 );
|
||||
m_grid->SetGridCursor( row, 0 );
|
||||
|
||||
return row;
|
||||
}
|
||||
|
||||
void appendOption()
|
||||
{
|
||||
int selected_row = m_listbox->GetSelection();
|
||||
if( selected_row != wxNOT_FOUND )
|
||||
{
|
||||
wxString option = m_listbox->GetString( selected_row );
|
||||
|
||||
int row_count = m_grid->GetNumberRows();
|
||||
int row;
|
||||
|
||||
for( row=0; row<row_count; ++row )
|
||||
{
|
||||
wxString col0 = m_grid->GetCellValue( row, 0 );
|
||||
|
||||
if( !col0 ) // empty col0
|
||||
break;
|
||||
}
|
||||
|
||||
if( row == row_count )
|
||||
row = appendRow();
|
||||
|
||||
m_grid->SetCellValue( row, 0, option );
|
||||
m_grid_widths_dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
//-----<event handlers>------------------------------------------------------
|
||||
|
||||
void onListBoxItemSelected( wxCommandEvent& event ) override
|
||||
{
|
||||
// change the help text based on the m_listbox selection:
|
||||
if( event.IsSelection() )
|
||||
{
|
||||
string option = TO_UTF8( event.GetString() );
|
||||
UTF8 help_text;
|
||||
|
||||
if( m_choices.Value( option.c_str(), &help_text ) )
|
||||
m_html->SetPage( help_text );
|
||||
else
|
||||
m_html->SetPage( m_initial_help );
|
||||
}
|
||||
}
|
||||
|
||||
void onListBoxItemDoubleClicked( wxCommandEvent& event ) override
|
||||
{
|
||||
appendOption();
|
||||
}
|
||||
|
||||
void onAppendOption( wxCommandEvent& ) override
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return;
|
||||
|
||||
appendOption();
|
||||
}
|
||||
|
||||
void onAppendRow( wxCommandEvent& ) override
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return;
|
||||
|
||||
appendRow();
|
||||
}
|
||||
|
||||
void onDeleteRow( wxCommandEvent& ) override
|
||||
{
|
||||
if( !m_grid->CommitPendingChanges() )
|
||||
return;
|
||||
|
||||
int curRow = m_grid->GetGridCursorRow();
|
||||
|
||||
m_grid->DeleteRows( curRow );
|
||||
m_grid_widths_dirty = true;
|
||||
|
||||
curRow = std::max( 0, curRow - 1 );
|
||||
m_grid->MakeCellVisible( curRow, m_grid->GetGridCursorCol() );
|
||||
m_grid->SetGridCursor( curRow, m_grid->GetGridCursorCol() );
|
||||
}
|
||||
|
||||
void onGridCellChange( wxGridEvent& aEvent ) override
|
||||
{
|
||||
m_grid_widths_dirty = true;
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
void onUpdateUI( wxUpdateUIEvent& ) override
|
||||
{
|
||||
if( m_grid_widths_dirty && !m_grid->IsCellEditControlShown() )
|
||||
{
|
||||
int width = m_grid->GetClientRect().GetWidth();
|
||||
|
||||
m_grid->AutoSizeColumn( 0 );
|
||||
m_grid->SetColSize( 0, std::max( 72, m_grid->GetColSize( 0 ) ) );
|
||||
|
||||
m_grid->SetColSize( 1, std::max( 120, width - m_grid->GetColSize( 0 ) ) );
|
||||
|
||||
m_grid_widths_dirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
void onSize( wxSizeEvent& aEvent ) override
|
||||
{
|
||||
m_grid_widths_dirty = true;
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void InvokePluginOptionsEditor( wxWindow* aCaller, const wxString& aNickname,
|
||||
const wxString& aPluginType, const wxString& aOptions,
|
||||
wxString* aResult )
|
||||
{
|
||||
DIALOG_FP_PLUGIN_OPTIONS dlg( aCaller, aNickname, aPluginType, aOptions, aResult );
|
||||
|
||||
dlg.ShowModal();
|
||||
}
|
|
@ -56,6 +56,7 @@
|
|||
#include <pcb_edit_frame.h>
|
||||
#include <env_paths.h>
|
||||
#include <dialogs/dialog_edit_library_tables.h>
|
||||
#include <dialogs/dialog_plugin_options.h>
|
||||
#include <footprint_viewer_frame.h>
|
||||
#include <footprint_edit_frame.h>
|
||||
#include <kiway.h>
|
||||
|
@ -251,8 +252,6 @@ public:
|
|||
};
|
||||
|
||||
|
||||
#define MYID_OPTIONS_EDITOR 15151
|
||||
|
||||
|
||||
class FP_GRID_TRICKS : public LIB_TABLE_GRID_TRICKS
|
||||
{
|
||||
|
@ -264,7 +263,7 @@ public:
|
|||
protected:
|
||||
DIALOG_EDIT_LIBRARY_TABLES* m_dialog;
|
||||
|
||||
void optionsEditor( int aRow )
|
||||
void optionsEditor( int aRow ) override
|
||||
{
|
||||
FP_LIB_TABLE_GRID* tbl = (FP_LIB_TABLE_GRID*) m_grid->GetTable();
|
||||
|
||||
|
@ -273,9 +272,14 @@ protected:
|
|||
LIB_TABLE_ROW* row = tbl->at( (size_t) aRow );
|
||||
const wxString& options = row->GetOptions();
|
||||
wxString result = options;
|
||||
STRING_UTF8_MAP choices;
|
||||
|
||||
InvokePluginOptionsEditor( m_dialog, row->GetNickName(), row->GetType(), options,
|
||||
&result );
|
||||
IO_MGR::PCB_FILE_T pi_type = IO_MGR::EnumFromStr( row->GetType() );
|
||||
PLUGIN::RELEASER pi( IO_MGR::PluginFind( pi_type ) );
|
||||
pi->FootprintLibOptions( &choices );
|
||||
|
||||
DIALOG_PLUGIN_OPTIONS dlg( m_dialog, row->GetNickName(), choices, options, &result );
|
||||
dlg.ShowModal();
|
||||
|
||||
if( options != result )
|
||||
{
|
||||
|
@ -285,36 +289,6 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
bool handleDoubleClick( wxGridEvent& aEvent ) override
|
||||
{
|
||||
if( aEvent.GetCol() == COL_OPTIONS )
|
||||
{
|
||||
optionsEditor( aEvent.GetRow() );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void showPopupMenu( wxMenu& menu, wxGridEvent& aEvent ) override
|
||||
{
|
||||
if( m_grid->GetGridCursorCol() == COL_OPTIONS )
|
||||
{
|
||||
menu.Append( MYID_OPTIONS_EDITOR, _( "Options Editor..." ), _( "Edit options" ) );
|
||||
menu.AppendSeparator();
|
||||
}
|
||||
|
||||
LIB_TABLE_GRID_TRICKS::showPopupMenu( menu, aEvent );
|
||||
}
|
||||
|
||||
void doPopupSelection( wxCommandEvent& event ) override
|
||||
{
|
||||
if( event.GetId() == MYID_OPTIONS_EDITOR )
|
||||
optionsEditor( m_grid->GetGridCursorRow() );
|
||||
else
|
||||
LIB_TABLE_GRID_TRICKS::doPopupSelection( event );
|
||||
}
|
||||
|
||||
/// handle specialized clipboard text, with leading "(fp_lib_table", OR
|
||||
/// spreadsheet formatted text.
|
||||
void paste_text( const wxString& cb_text ) override
|
||||
|
|
|
@ -72,20 +72,6 @@ class KIWAY;
|
|||
*/
|
||||
void InvokePcbLibTableEditor( KIWAY* aKiway, wxWindow* aCaller );
|
||||
|
||||
|
||||
/**
|
||||
* Function InvokePluginOptionsEditor
|
||||
* calls DIALOG_FP_PLUGIN_OPTIONS dialog so that plugin options set can be edited.
|
||||
*
|
||||
* @param aCaller is the wxTopLevelWindow which is invoking the dialog.
|
||||
* @param aNickname is the footprint library whose options are being edited.
|
||||
* @param aPluginType is something that will pass through IO_MGR::EnumFromStr().
|
||||
* @param aOptions is the options string on calling into this function.
|
||||
* @param aResult is where to put the result of the editing.
|
||||
*/
|
||||
void InvokePluginOptionsEditor( wxWindow* aCaller, const wxString& aNickname,
|
||||
const wxString& aPluginType, const wxString& aOptions, wxString* aResult );
|
||||
|
||||
/**
|
||||
* Function InvokeExportSVG
|
||||
* shows the Export SVG dialog
|
||||
|
|
|
@ -538,7 +538,7 @@ public:
|
|||
* <dd>This eventually is what shows up into the fp-lib-table "options"
|
||||
* field, possibly combined with others.</dd>
|
||||
* <dt>internationalized description</dt>
|
||||
* <dd>The internationalized description is displayed in DIALOG_FP_PLUGIN_OPTIONS.
|
||||
* <dd>The internationalized description is displayed in DIALOG_PLUGIN_OPTIONS.
|
||||
* It may be multi-line and be quite explanatory of the option.</dd>
|
||||
* </dl>
|
||||
* <br>
|
||||
|
|
Loading…
Reference in New Issue