Simulator improvements.
1) Add highlighting to simProbe and simTune tools. 2) Probe tool should accept wires and pins, not wires and components. 3) Give simulator window a flat look to match rest of Kicad. 4) Collapse whitespace out of simulator window. 5) Add some error messages. 6) Add some whitespace to simulation setting dialog.
This commit is contained in:
parent
6c0a3b4534
commit
23d824de66
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 5 2018)
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
@ -439,12 +439,18 @@ DIALOG_SIM_SETTINGS_BASE::DIALOG_SIM_SETTINGS_BASE( wxWindow* parent, wxWindowID
|
|||
|
||||
bSizer1->Add( m_simPages, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
wxBoxSizer* bSizer88;
|
||||
bSizer88 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_fixPassiveVals = new wxCheckBox( this, wxID_ANY, _("Adjust passive symbol values (e.g. M -> Meg; 100 nF -> 100n)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer1->Add( m_fixPassiveVals, 0, wxALL, 5 );
|
||||
bSizer88->Add( m_fixPassiveVals, 0, wxALL, 5 );
|
||||
|
||||
m_fixIncludePaths = new wxCheckBox( this, wxID_ANY, _("Add full path for .include library directives"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_fixIncludePaths->SetValue(true);
|
||||
bSizer1->Add( m_fixIncludePaths, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
bSizer88->Add( m_fixIncludePaths, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
bSizer1->Add( bSizer88, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
m_sdbSizer = new wxStdDialogButtonSizer();
|
||||
m_sdbSizerOK = new wxButton( this, wxID_OK );
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
<property name="file">dialog_sim_settings_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">DIALOG_SIM_SETTINGS_BASE</property>
|
||||
<property name="namespace"></property>
|
||||
|
@ -6602,6 +6601,15 @@
|
|||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizer88</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
|
@ -6778,6 +6786,8 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxALIGN_RIGHT</property>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 5 2018)
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
|
|
@ -245,9 +245,12 @@ COLOR4D SCH_PAINTER::getRenderColor( const EDA_ITEM* aItem, int aLayer, bool aDr
|
|||
if( aItem->Type() == SCH_LINE_T )
|
||||
color = static_cast<const SCH_LINE*>( aItem )->GetLineColor();
|
||||
|
||||
if( aItem->IsBrightened() ) // Selection disambiguation, etc.
|
||||
if( aItem->IsBrightened() && !aDrawingShadows ) // Selection disambiguation, etc.
|
||||
{
|
||||
color = m_schSettings.GetLayerColor( LAYER_BRIGHTENED );
|
||||
|
||||
if( aLayer == LAYER_DEVICE_BACKGROUND || aLayer == LAYER_SHEET_BACKGROUND )
|
||||
color = color.WithAlpha( 0.2 );
|
||||
}
|
||||
else if( aItem->IsSelected() )
|
||||
{
|
||||
|
|
|
@ -490,8 +490,18 @@ void SIM_PLOT_FRAME::addPlot( const wxString& aName, SIM_PLOT_TYPE aType, const
|
|||
{
|
||||
SIM_TYPE simType = m_exporter->GetSimType();
|
||||
|
||||
if( !SIM_PLOT_PANEL::IsPlottable( simType ) )
|
||||
return; // TODO else write out in console?
|
||||
if( simType == ST_UNKNOWN )
|
||||
{
|
||||
m_simConsole->AppendText( _( "Error: simulation type not defined!\n" ) );
|
||||
m_simConsole->SetInsertionPointEnd();
|
||||
return;
|
||||
}
|
||||
else if( !SIM_PLOT_PANEL::IsPlottable( simType ) )
|
||||
{
|
||||
m_simConsole->AppendText( _( "Error: simulation type doesn't support plotting!\n" ) );
|
||||
m_simConsole->SetInsertionPointEnd();
|
||||
return;
|
||||
}
|
||||
|
||||
// Create a new plot if the current one displays a different type
|
||||
SIM_PLOT_PANEL* plotPanel = CurrentPlot();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 1 2018)
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
@ -11,7 +11,7 @@
|
|||
|
||||
SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : KIWAY_PLAYER( parent, id, title, pos, size, style, name )
|
||||
{
|
||||
this->SetSizeHints( wxSize( 200,200 ), wxDefaultSize );
|
||||
this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
|
||||
|
||||
m_mainMenu = new wxMenuBar( 0 );
|
||||
m_fileMenu = new wxMenu();
|
||||
|
@ -42,7 +42,7 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
m_fileMenu->AppendSeparator();
|
||||
|
||||
wxMenuItem* m_exitSim;
|
||||
m_exitSim = new wxMenuItem( m_fileMenu, wxID_CLOSE, wxString( _("Exit Simulation") ) , wxEmptyString, wxITEM_NORMAL );
|
||||
m_exitSim = new wxMenuItem( m_fileMenu, wxID_CLOSE, wxString( _("Close Simulation") ) + wxT('\t') + wxT("CTRL+W"), wxEmptyString, wxITEM_NORMAL );
|
||||
m_fileMenu->Append( m_exitSim );
|
||||
|
||||
m_mainMenu->Append( m_fileMenu, _("File") );
|
||||
|
@ -108,7 +108,7 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
|
||||
m_sizerMain->Add( m_toolBar, 0, wxEXPAND, 5 );
|
||||
|
||||
m_splitterLeftRight = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
|
||||
m_splitterLeftRight = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DSASH|wxSP_LIVE_UPDATE|wxNO_BORDER );
|
||||
m_splitterLeftRight->SetSashGravity( 0.7 );
|
||||
m_splitterLeftRight->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterLeftRightOnIdle ), NULL, this );
|
||||
m_splitterLeftRight->SetMinimumPaneSize( 50 );
|
||||
|
@ -118,7 +118,7 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
|
||||
m_sizer11 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_splitterPlotAndConsole = new wxSplitterWindow( m_panelLeft, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
|
||||
m_splitterPlotAndConsole = new wxSplitterWindow( m_panelLeft, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DSASH|wxSP_LIVE_UPDATE );
|
||||
m_splitterPlotAndConsole->SetSashGravity( 0.8 );
|
||||
m_splitterPlotAndConsole->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterPlotAndConsoleOnIdle ), NULL, this );
|
||||
m_splitterPlotAndConsole->SetMinimumPaneSize( 50 );
|
||||
|
@ -129,6 +129,8 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
m_sizerPlot = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_plotNotebook = new wxAuiNotebook( m_plotPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_CLOSE_ON_ALL_TABS|wxAUI_NB_MIDDLE_CLICK_CLOSE|wxAUI_NB_TAB_MOVE|wxAUI_NB_TAB_SPLIT|wxAUI_NB_TOP );
|
||||
m_plotNotebook->SetMinSize( wxSize( 200,-1 ) );
|
||||
|
||||
m_welcomePanel = new wxPanel( m_plotNotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_sizer8 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
@ -163,7 +165,7 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
m_sizer8->Fit( m_welcomePanel );
|
||||
m_plotNotebook->AddPage( m_welcomePanel, _("a page"), false, wxNullBitmap );
|
||||
|
||||
m_sizerPlot->Add( m_plotNotebook, 1, wxEXPAND | wxALL, 5 );
|
||||
m_sizerPlot->Add( m_plotNotebook, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_plotPanel->SetSizer( m_sizerPlot );
|
||||
|
@ -177,7 +179,7 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
m_simConsole = new wxTextCtrl( m_panelConsole, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY );
|
||||
m_simConsole->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
|
||||
|
||||
m_sizerConsole->Add( m_simConsole, 1, wxALL|wxEXPAND, 5 );
|
||||
m_sizerConsole->Add( m_simConsole, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelConsole->SetSizer( m_sizerConsole );
|
||||
|
@ -195,62 +197,69 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
|
||||
m_sideSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_splitterSignals = new wxSplitterWindow( m_sidePanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
|
||||
m_splitterSignals->SetSashGravity( 0.3 );
|
||||
m_splitterSignals = new wxSplitterWindow( m_sidePanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DSASH|wxSP_LIVE_UPDATE );
|
||||
m_splitterSignals->SetSashGravity( 0.33 );
|
||||
m_splitterSignals->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterSignalsOnIdle ), NULL, this );
|
||||
m_splitterSignals->SetMinimumPaneSize( 20 );
|
||||
|
||||
m_panelSignals = new wxPanel( m_splitterSignals, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_panelSignals->SetMinSize( wxSize( -1,100 ) );
|
||||
wxBoxSizer* bSizer10;
|
||||
bSizer10 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxStaticBoxSizer* sbSizer1;
|
||||
sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( m_panelSignals, wxID_ANY, _("Signals") ), wxVERTICAL );
|
||||
m_staticText2 = new wxStaticText( m_panelSignals, wxID_ANY, _("Signals"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText2->Wrap( -1 );
|
||||
bSizer10->Add( m_staticText2, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_signals = new wxListView( sbSizer1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL );
|
||||
sbSizer1->Add( m_signals, 1, wxALL|wxEXPAND, 5 );
|
||||
m_signals = new wxListView( m_panelSignals, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL );
|
||||
bSizer10->Add( m_signals, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelSignals->SetSizer( sbSizer1 );
|
||||
m_panelSignals->SetSizer( bSizer10 );
|
||||
m_panelSignals->Layout();
|
||||
sbSizer1->Fit( m_panelSignals );
|
||||
bSizer10->Fit( m_panelSignals );
|
||||
m_panelCursorsAndTune = new wxPanel( m_splitterSignals, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_panelCursorsAndTune->SetMinSize( wxSize( -1,300 ) );
|
||||
|
||||
wxBoxSizer* bSizer9;
|
||||
bSizer9 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_splitterTuneValues = new wxSplitterWindow( m_panelCursorsAndTune, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
|
||||
m_splitterTuneValues = new wxSplitterWindow( m_panelCursorsAndTune, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DSASH|wxSP_LIVE_UPDATE|wxNO_BORDER );
|
||||
m_splitterTuneValues->SetSashGravity( 0.5 );
|
||||
m_splitterTuneValues->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterTuneValuesOnIdle ), NULL, this );
|
||||
m_splitterTuneValues->SetMinimumPaneSize( 20 );
|
||||
|
||||
m_panelCursors = new wxPanel( m_splitterTuneValues, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_panelCursors->SetMinSize( wxSize( -1,100 ) );
|
||||
wxBoxSizer* bSizer12;
|
||||
bSizer12 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxStaticBoxSizer* sbSizer3;
|
||||
sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( m_panelCursors, wxID_ANY, _("Cursors") ), wxVERTICAL );
|
||||
m_staticText3 = new wxStaticText( m_panelCursors, wxID_ANY, _("Cursors"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText3->Wrap( -1 );
|
||||
bSizer12->Add( m_staticText3, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_cursors = new wxListCtrl( sbSizer3->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL );
|
||||
sbSizer3->Add( m_cursors, 1, wxALL|wxEXPAND, 5 );
|
||||
m_cursors = new wxListCtrl( m_panelCursors, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL );
|
||||
bSizer12->Add( m_cursors, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelCursors->SetSizer( sbSizer3 );
|
||||
m_panelCursors->SetSizer( bSizer12 );
|
||||
m_panelCursors->Layout();
|
||||
sbSizer3->Fit( m_panelCursors );
|
||||
bSizer12->Fit( m_panelCursors );
|
||||
m_tunePanel = new wxPanel( m_splitterTuneValues, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
m_tunePanel->SetMinSize( wxSize( -1,200 ) );
|
||||
wxBoxSizer* bSizer13;
|
||||
bSizer13 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_tuneSizerStb = new wxStaticBoxSizer( new wxStaticBox( m_tunePanel, wxID_ANY, _("Tune") ), wxHORIZONTAL );
|
||||
m_staticText4 = new wxStaticText( m_tunePanel, wxID_ANY, _("Tune"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText4->Wrap( -1 );
|
||||
bSizer13->Add( m_staticText4, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_tuneSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
m_tuneSizerStb->Add( m_tuneSizer, 1, wxEXPAND, 5 );
|
||||
bSizer13->Add( m_tuneSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_tunePanel->SetSizer( m_tuneSizerStb );
|
||||
m_tunePanel->SetSizer( bSizer13 );
|
||||
m_tunePanel->Layout();
|
||||
m_tuneSizerStb->Fit( m_tunePanel );
|
||||
bSizer13->Fit( m_tunePanel );
|
||||
m_splitterTuneValues->SplitHorizontally( m_panelCursors, m_tunePanel, 0 );
|
||||
bSizer9->Add( m_splitterTuneValues, 1, wxEXPAND, 5 );
|
||||
|
||||
|
@ -271,22 +280,23 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
|
||||
this->SetSizer( m_sizerMain );
|
||||
this->Layout();
|
||||
m_sizerMain->Fit( this );
|
||||
|
||||
this->Centre( wxBOTH );
|
||||
|
||||
// Connect Events
|
||||
m_fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuNewPlot ), this, m_newPlot->GetId());
|
||||
m_fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuOpenWorkbook ), this, m_openWorkbook->GetId());
|
||||
m_fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveWorkbook ), this, m_saveWorkbook->GetId());
|
||||
m_fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveImage ), this, m_saveImage->GetId());
|
||||
m_fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveCsv ), this, m_saveCsv->GetId());
|
||||
m_fileMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuExit ), this, m_exitSim->GetId());
|
||||
m_viewMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomIn ), this, m_zoomIn->GetId());
|
||||
m_viewMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomOut ), this, m_zoomOut->GetId());
|
||||
m_viewMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomFit ), this, m_zoomFit->GetId());
|
||||
m_viewMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuShowGrid ), this, m_showGrid->GetId());
|
||||
this->Connect( m_newPlot->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuNewPlot ) );
|
||||
this->Connect( m_openWorkbook->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuOpenWorkbook ) );
|
||||
this->Connect( m_saveWorkbook->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveWorkbook ) );
|
||||
this->Connect( m_saveImage->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveImage ) );
|
||||
this->Connect( m_saveCsv->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveCsv ) );
|
||||
this->Connect( m_exitSim->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuExit ) );
|
||||
this->Connect( m_zoomIn->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomIn ) );
|
||||
this->Connect( m_zoomOut->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomOut ) );
|
||||
this->Connect( m_zoomFit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomFit ) );
|
||||
this->Connect( m_showGrid->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuShowGrid ) );
|
||||
this->Connect( m_showGrid->GetId(), wxEVT_UPDATE_UI, wxUpdateUIEventHandler( SIM_PLOT_FRAME_BASE::menuShowGridUpdate ) );
|
||||
m_viewMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuShowLegend ), this, m_showLegend->GetId());
|
||||
this->Connect( m_showLegend->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuShowLegend ) );
|
||||
this->Connect( m_showLegend->GetId(), wxEVT_UPDATE_UI, wxUpdateUIEventHandler( SIM_PLOT_FRAME_BASE::menuShowLegendUpdate ) );
|
||||
m_plotNotebook->Connect( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, wxAuiNotebookEventHandler( SIM_PLOT_FRAME_BASE::onPlotChanged ), NULL, this );
|
||||
m_plotNotebook->Connect( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, wxAuiNotebookEventHandler( SIM_PLOT_FRAME_BASE::onPlotClose ), NULL, this );
|
||||
|
@ -297,7 +307,18 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id, const
|
|||
SIM_PLOT_FRAME_BASE::~SIM_PLOT_FRAME_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
this->Disconnect( wxID_NEW, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuNewPlot ) );
|
||||
this->Disconnect( wxID_OPEN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuOpenWorkbook ) );
|
||||
this->Disconnect( wxID_SAVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveWorkbook ) );
|
||||
this->Disconnect( ID_SAVE_AS_IMAGE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveImage ) );
|
||||
this->Disconnect( ID_SAVE_AS_CSV, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuSaveCsv ) );
|
||||
this->Disconnect( wxID_CLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuExit ) );
|
||||
this->Disconnect( wxID_ZOOM_IN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomIn ) );
|
||||
this->Disconnect( wxID_ZOOM_OUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomOut ) );
|
||||
this->Disconnect( wxID_ZOOM_FIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuZoomFit ) );
|
||||
this->Disconnect( ID_MENU_SHOW_GRID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuShowGrid ) );
|
||||
this->Disconnect( ID_MENU_SHOW_GRID, wxEVT_UPDATE_UI, wxUpdateUIEventHandler( SIM_PLOT_FRAME_BASE::menuShowGridUpdate ) );
|
||||
this->Disconnect( ID_MENU_SHOW_LEGEND, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::menuShowLegend ) );
|
||||
this->Disconnect( ID_MENU_SHOW_LEGEND, wxEVT_UPDATE_UI, wxUpdateUIEventHandler( SIM_PLOT_FRAME_BASE::menuShowLegendUpdate ) );
|
||||
m_plotNotebook->Disconnect( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED, wxAuiNotebookEventHandler( SIM_PLOT_FRAME_BASE::onPlotChanged ), NULL, this );
|
||||
m_plotNotebook->Disconnect( wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE, wxAuiNotebookEventHandler( SIM_PLOT_FRAME_BASE::onPlotClose ), NULL, this );
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,11 +1,12 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 1 2018)
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
#ifndef __SIM_PLOT_FRAME_BASE_H__
|
||||
#define __SIM_PLOT_FRAME_BASE_H__
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
|
@ -28,7 +29,6 @@
|
|||
#include <wx/textctrl.h>
|
||||
#include <wx/splitter.h>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/frame.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -81,13 +81,15 @@ class SIM_PLOT_FRAME_BASE : public KIWAY_PLAYER
|
|||
wxBoxSizer* m_sideSizer;
|
||||
wxSplitterWindow* m_splitterSignals;
|
||||
wxPanel* m_panelSignals;
|
||||
wxStaticText* m_staticText2;
|
||||
wxListView* m_signals;
|
||||
wxPanel* m_panelCursorsAndTune;
|
||||
wxSplitterWindow* m_splitterTuneValues;
|
||||
wxPanel* m_panelCursors;
|
||||
wxStaticText* m_staticText3;
|
||||
wxListCtrl* m_cursors;
|
||||
wxPanel* m_tunePanel;
|
||||
wxStaticBoxSizer* m_tuneSizerStb;
|
||||
wxStaticText* m_staticText4;
|
||||
wxBoxSizer* m_tuneSizer;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
|
@ -112,7 +114,7 @@ class SIM_PLOT_FRAME_BASE : public KIWAY_PLAYER
|
|||
|
||||
public:
|
||||
|
||||
SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Spice Simulator"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 511,468 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("SIM_PLOT_FRAME") );
|
||||
SIM_PLOT_FRAME_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Spice Simulator"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("SIM_PLOT_FRAME") );
|
||||
|
||||
~SIM_PLOT_FRAME_BASE();
|
||||
|
||||
|
@ -142,3 +144,4 @@ class SIM_PLOT_FRAME_BASE : public KIWAY_PLAYER
|
|||
|
||||
};
|
||||
|
||||
#endif //__SIM_PLOT_FRAME_BASE_H__
|
||||
|
|
|
@ -427,6 +427,13 @@ void SCH_EDITOR_CONTROL::doCrossProbeSchToPcb( const TOOL_EVENT& aEvent, bool aF
|
|||
|
||||
|
||||
#ifdef KICAD_SPICE
|
||||
|
||||
static KICAD_T wiresAndPins[] = { SCH_LINE_T, SCH_PIN_T, SCH_SHEET_PIN_T, EOT };
|
||||
static KICAD_T fieldsAndComponents[] = { SCH_COMPONENT_T, SCH_FIELD_T, EOT };
|
||||
|
||||
#define HITTEST_THRESHOLD_PIXELS 5
|
||||
|
||||
|
||||
int SCH_EDITOR_CONTROL::SimProbe( const TOOL_EVENT& aEvent )
|
||||
{
|
||||
PICKER_TOOL* picker = m_toolMgr->GetTool<PICKER_TOOL>();
|
||||
|
@ -439,10 +446,8 @@ int SCH_EDITOR_CONTROL::SimProbe( const TOOL_EVENT& aEvent )
|
|||
picker->SetClickHandler(
|
||||
[this] ( const VECTOR2D& aPosition )
|
||||
{
|
||||
KICAD_T wiresAndComponents[] = { SCH_LINE_T, SCH_COMPONENT_T, SCH_SHEET_PIN_T, EOT };
|
||||
|
||||
EE_SELECTION_TOOL* selTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
EDA_ITEM* item = selTool->SelectPoint( aPosition, wiresAndComponents );
|
||||
EDA_ITEM* item = selTool->SelectPoint( aPosition, wiresAndPins );
|
||||
|
||||
if( !item )
|
||||
return false;
|
||||
|
@ -457,7 +462,7 @@ int SCH_EDITOR_CONTROL::SimProbe( const TOOL_EVENT& aEvent )
|
|||
(SIM_PLOT_FRAME*) m_frame->Kiway().Player( FRAME_SIMULATOR, false );
|
||||
|
||||
if( simFrame )
|
||||
simFrame->AddVoltagePlot( obj->GetNetName() );
|
||||
simFrame->AddVoltagePlot( UnescapeString( obj->GetNetName() ) );
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -466,6 +471,37 @@ int SCH_EDITOR_CONTROL::SimProbe( const TOOL_EVENT& aEvent )
|
|||
return true;
|
||||
} );
|
||||
|
||||
picker->SetMotionHandler(
|
||||
[this] ( const VECTOR2D& aPos )
|
||||
{
|
||||
EE_COLLECTOR collector;
|
||||
collector.m_Threshold = KiROUND( getView()->ToWorld( HITTEST_THRESHOLD_PIXELS ) );
|
||||
collector.Collect( m_frame->GetScreen()->GetDrawItems(), wiresAndPins, (wxPoint) aPos );
|
||||
|
||||
EE_SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
selectionTool->GuessSelectionCandidates( collector, aPos );
|
||||
|
||||
EDA_ITEM* item = collector.GetCount() == 1 ? collector[ 0 ] : nullptr;
|
||||
|
||||
if( m_pickerItem != item )
|
||||
{
|
||||
if( m_pickerItem )
|
||||
selectionTool->UnbrightenItem( m_pickerItem );
|
||||
|
||||
m_pickerItem = item;
|
||||
|
||||
if( m_pickerItem )
|
||||
selectionTool->BrightenItem( m_pickerItem );
|
||||
}
|
||||
} );
|
||||
|
||||
picker->SetFinalizeHandler(
|
||||
[this] ( const int& aFinalState )
|
||||
{
|
||||
if( m_pickerItem )
|
||||
m_toolMgr->GetTool<EE_SELECTION_TOOL>()->UnbrightenItem( m_pickerItem );
|
||||
} );
|
||||
|
||||
std::string tool = aEvent.GetCommandStr().get();
|
||||
m_toolMgr->RunAction( ACTIONS::pickerTool, true, &tool );
|
||||
|
||||
|
@ -485,8 +521,6 @@ int SCH_EDITOR_CONTROL::SimTune( const TOOL_EVENT& aEvent )
|
|||
picker->SetClickHandler(
|
||||
[this] ( const VECTOR2D& aPosition )
|
||||
{
|
||||
KICAD_T fieldsAndComponents[] = { SCH_COMPONENT_T, SCH_FIELD_T, EOT };
|
||||
|
||||
EE_SELECTION_TOOL* selTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
EDA_ITEM* item = selTool->SelectPoint( aPosition, fieldsAndComponents );
|
||||
|
||||
|
@ -501,7 +535,8 @@ int SCH_EDITOR_CONTROL::SimTune( const TOOL_EVENT& aEvent )
|
|||
return false;
|
||||
}
|
||||
|
||||
SIM_PLOT_FRAME* simFrame = (SIM_PLOT_FRAME*) m_frame->Kiway().Player( FRAME_SIMULATOR, false );
|
||||
SIM_PLOT_FRAME* simFrame =
|
||||
(SIM_PLOT_FRAME*) m_frame->Kiway().Player( FRAME_SIMULATOR, false );
|
||||
|
||||
if( simFrame )
|
||||
simFrame->AddTuner( static_cast<SCH_COMPONENT*>( item ) );
|
||||
|
@ -509,6 +544,37 @@ int SCH_EDITOR_CONTROL::SimTune( const TOOL_EVENT& aEvent )
|
|||
return true;
|
||||
} );
|
||||
|
||||
picker->SetMotionHandler(
|
||||
[this] ( const VECTOR2D& aPos )
|
||||
{
|
||||
EE_COLLECTOR collector;
|
||||
collector.m_Threshold = KiROUND( getView()->ToWorld( HITTEST_THRESHOLD_PIXELS ) );
|
||||
collector.Collect( m_frame->GetScreen()->GetDrawItems(), fieldsAndComponents, (wxPoint) aPos );
|
||||
|
||||
EE_SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
||||
selectionTool->GuessSelectionCandidates( collector, aPos );
|
||||
|
||||
EDA_ITEM* item = collector.GetCount() == 1 ? collector[ 0 ] : nullptr;
|
||||
|
||||
if( m_pickerItem != item )
|
||||
{
|
||||
if( m_pickerItem )
|
||||
selectionTool->UnbrightenItem( m_pickerItem );
|
||||
|
||||
m_pickerItem = item;
|
||||
|
||||
if( m_pickerItem )
|
||||
selectionTool->BrightenItem( m_pickerItem );
|
||||
}
|
||||
} );
|
||||
|
||||
picker->SetFinalizeHandler(
|
||||
[this] ( const int& aFinalState )
|
||||
{
|
||||
if( m_pickerItem )
|
||||
m_toolMgr->GetTool<EE_SELECTION_TOOL>()->UnbrightenItem( m_pickerItem );
|
||||
} );
|
||||
|
||||
std::string tool = aEvent.GetCommandStr().get();
|
||||
m_toolMgr->RunAction( ACTIONS::pickerTool, true, &tool );
|
||||
|
||||
|
|
|
@ -41,7 +41,8 @@ class SCH_EDITOR_CONTROL : public wxEvtHandler, public EE_TOOL_BASE<SCH_EDIT_FRA
|
|||
public:
|
||||
SCH_EDITOR_CONTROL() :
|
||||
EE_TOOL_BASE<SCH_EDIT_FRAME>( "eeschema.EditorControl" ),
|
||||
m_probingPcbToSch( false )
|
||||
m_probingPcbToSch( false ),
|
||||
m_pickerItem( nullptr )
|
||||
{ }
|
||||
|
||||
~SCH_EDITOR_CONTROL() { }
|
||||
|
@ -176,7 +177,8 @@ private:
|
|||
void setTransitions() override;
|
||||
|
||||
private:
|
||||
bool m_probingPcbToSch; ///> Recursion guard when cross-probing to PCBNew
|
||||
bool m_probingPcbToSch; // Recursion guard when cross-probing to PCBNew
|
||||
EDA_ITEM* m_pickerItem; // Current item for picker highlighting.
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue