wip
This commit is contained in:
parent
f1f69979e6
commit
095af6e77a
|
@ -521,7 +521,7 @@ set( INC_AFTER
|
||||||
|
|
||||||
|
|
||||||
#if ( KICAD_SPICE )
|
#if ( KICAD_SPICE )
|
||||||
# find_package(MathGL2 2.3.4 COMPONENTS wx REQUIRED )
|
#find_package(MathGL2 2.1 COMPONENTS wx REQUIRED )
|
||||||
#endif ()
|
#endif ()
|
||||||
|
|
||||||
# Find Python and other scripting resources
|
# Find Python and other scripting resources
|
||||||
|
|
|
@ -249,7 +249,7 @@ set_source_files_properties( ../common/single_top.cpp PROPERTIES
|
||||||
)
|
)
|
||||||
|
|
||||||
#if (KICAD_SPICE)
|
#if (KICAD_SPICE)
|
||||||
set ( EESCHEMA_LINK_LIBS ${wxWidgets_LIBRARIES} mgl mgl-wx)
|
set ( EESCHEMA_LINK_LIBS ${wxWidgets_LIBRARIES} mgl-wx mgl mgl-wx)
|
||||||
#else()
|
#else()
|
||||||
# set ( EESCHEMA_LINK_LIBS ${wxWidgets_LIBRARIES} )
|
# set ( EESCHEMA_LINK_LIBS ${wxWidgets_LIBRARIES} )
|
||||||
#endif()
|
#endif()
|
||||||
|
|
|
@ -126,18 +126,7 @@ F 6 "R" V 5750 4000 60 0001 C CNN "Spice_Primitive"
|
||||||
-1 0 0 1
|
-1 0 0 1
|
||||||
$EndComp
|
$EndComp
|
||||||
Text Notes 4300 4900 0 60 ~ 0
|
Text Notes 4300 4900 0 60 ~ 0
|
||||||
*.tran 1u 10m\n
|
.tran 1u 10m\n
|
||||||
$Comp
|
|
||||||
L SPICE_PROBE U1
|
|
||||||
U 1 1 573367CB
|
|
||||||
P 4400 3700
|
|
||||||
F 0 "U1" H 4400 3700 60 0001 C CNN
|
|
||||||
F 1 "SPICE_PROBE" H 4400 3700 60 0001 C CNN
|
|
||||||
F 2 "" H 4400 3700 60 0000 C CNN
|
|
||||||
F 3 "" H 4400 3700 60 0000 C CNN
|
|
||||||
1 4400 3700
|
|
||||||
1 0 0 -1
|
|
||||||
$EndComp
|
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
4400 4350 4400 4250
|
4400 4350 4400 4250
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
|
@ -162,36 +151,12 @@ Wire Wire Line
|
||||||
4400 3850 4400 3700
|
4400 3850 4400 3700
|
||||||
Wire Wire Line
|
Wire Wire Line
|
||||||
4400 3700 4500 3700
|
4400 3700 4500 3700
|
||||||
Connection ~ 5650 3700
|
|
||||||
Connection ~ 4400 3700
|
|
||||||
Text Notes 4300 4800 0 60 ~ 0
|
Text Notes 4300 4800 0 60 ~ 0
|
||||||
.include diodes.lib\n
|
.include diodes.lib\n
|
||||||
Text Label 4400 3800 0 60 ~ 0
|
Text Label 4400 3800 0 60 ~ 0
|
||||||
in
|
in
|
||||||
$Comp
|
|
||||||
L SPICE_PROBE U?
|
|
||||||
U 1 1 5734D78F
|
|
||||||
P 4900 3700
|
|
||||||
F 0 "U?" H 4900 3700 60 0001 C CNN
|
|
||||||
F 1 "SPICE_PROBE" H 4900 3700 60 0001 C CNN
|
|
||||||
F 2 "" H 4900 3700 60 0000 C CNN
|
|
||||||
F 3 "" H 4900 3700 60 0000 C CNN
|
|
||||||
1 4900 3700
|
|
||||||
1 0 0 -1
|
|
||||||
$EndComp
|
|
||||||
$Comp
|
|
||||||
L SPICE_PROBE U?
|
|
||||||
U 1 1 5734D7B3
|
|
||||||
P 5400 3700
|
|
||||||
F 0 "U?" H 5400 3700 60 0001 C CNN
|
|
||||||
F 1 "SPICE_PROBE" H 5400 3700 60 0001 C CNN
|
|
||||||
F 2 "" H 5400 3700 60 0000 C CNN
|
|
||||||
F 3 "" H 5400 3700 60 0000 C CNN
|
|
||||||
1 5400 3700
|
|
||||||
1 0 0 -1
|
|
||||||
$EndComp
|
|
||||||
Text Label 5550 3700 0 60 ~ 0
|
Text Label 5550 3700 0 60 ~ 0
|
||||||
rect
|
rect
|
||||||
Text Notes 4300 5000 0 60 ~ 0
|
Text Notes 4300 5000 0 60 ~ 0
|
||||||
.ac dec 10 1 1Meg\n
|
*.ac dec 10 1 1Meg\n
|
||||||
$EndSCHEMATC
|
$EndSCHEMATC
|
||||||
|
|
|
@ -28,6 +28,8 @@ public:
|
||||||
|
|
||||||
const vector<double> GetPlot( std::string name, int max_len = -1);
|
const vector<double> GetPlot( std::string name, int max_len = -1);
|
||||||
|
|
||||||
|
void dump();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
@ -155,13 +157,12 @@ bool NGSPICE::LoadNetlist(const string& netlist)
|
||||||
bool NGSPICE::Command(const string& cmd )
|
bool NGSPICE::Command(const string& cmd )
|
||||||
{
|
{
|
||||||
m_ngSpice_Command( (char*)(cmd + string("\n")).c_str());
|
m_ngSpice_Command( (char*)(cmd + string("\n")).c_str());
|
||||||
|
dump();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
void NGSPICE::dump()
|
||||||
bool NGSPICE::Run()
|
|
||||||
{
|
{
|
||||||
// m_ngSpice_Command("run\n");
|
// m_ngSpice_Command("run\n");
|
||||||
char **plots = m_ngSpice_AllPlots();
|
char **plots = m_ngSpice_AllPlots();
|
||||||
|
@ -189,7 +190,7 @@ bool NGSPICE::Run()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NGSPICE::~NGSPICE()
|
NGSPICE::~NGSPICE()
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,6 +76,9 @@ SIM_PLOT_FRAME::SIM_PLOT_FRAME( KIWAY *aKiway, wxWindow* parent )
|
||||||
{
|
{
|
||||||
m_exporter = NULL;
|
m_exporter = NULL;
|
||||||
m_simulator = NULL;
|
m_simulator = NULL;
|
||||||
|
m_currentPlot = NULL;
|
||||||
|
|
||||||
|
NewPlot();
|
||||||
}
|
}
|
||||||
|
|
||||||
SIM_PLOT_FRAME::~SIM_PLOT_FRAME()
|
SIM_PLOT_FRAME::~SIM_PLOT_FRAME()
|
||||||
|
@ -101,7 +104,7 @@ void SIM_PLOT_FRAME::StartSimulation()
|
||||||
STRING_FORMATTER formatter;
|
STRING_FORMATTER formatter;
|
||||||
|
|
||||||
m_exporter->Format( &formatter, GNL_ALL );
|
m_exporter->Format( &formatter, GNL_ALL );
|
||||||
m_plotPanel->DeleteTraces();
|
//m_plotPanel->DeleteTraces();
|
||||||
|
|
||||||
printf("*******************\n%s\n", (const char *)formatter.GetString().c_str());
|
printf("*******************\n%s\n", (const char *)formatter.GetString().c_str());
|
||||||
|
|
||||||
|
@ -109,7 +112,7 @@ void SIM_PLOT_FRAME::StartSimulation()
|
||||||
m_simulator->Command("run\n");
|
m_simulator->Command("run\n");
|
||||||
|
|
||||||
auto mapping = m_exporter->GetNetIndexMap();
|
auto mapping = m_exporter->GetNetIndexMap();
|
||||||
auto data_t = m_simulator->GetPlot("time");
|
// auto data_t = m_simulator->GetPlot("time");
|
||||||
|
|
||||||
for(auto name : m_exporter->GetProbeList())
|
for(auto name : m_exporter->GetProbeList())
|
||||||
{
|
{
|
||||||
|
@ -117,14 +120,20 @@ void SIM_PLOT_FRAME::StartSimulation()
|
||||||
|
|
||||||
sprintf(spiceName,"V(%d)", mapping[name] );
|
sprintf(spiceName,"V(%d)", mapping[name] );
|
||||||
//printf("probe %s->%s\n", (const char *) name.c_str(), spiceName);
|
//printf("probe %s->%s\n", (const char *) name.c_str(), spiceName);
|
||||||
auto data_y = m_simulator->GetPlot(spiceName);
|
// auto data_y = m_simulator->GetPlot(spiceName);
|
||||||
|
|
||||||
//printf("%d - %d data points\n", data_t.size(), data_y.size() );
|
//printf("%d - %d data points\n", data_t.size(), data_y.size() );
|
||||||
m_plotPanel->AddTrace(wxT("V(") + name + wxT(")"), data_t.size(), data_t.data(), data_y.data(), 0);
|
// m_plotPanel->AddTrace(wxT("V(") + name + wxT(")"), data_t.size(), data_t.data(), data_y.data(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete m_simulator;
|
delete m_simulator;
|
||||||
m_simulator = NULL;
|
m_simulator = NULL;
|
||||||
//m_simulator->Command("quit\n");
|
//m_simulator->Command("quit\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void SIM_PLOT_FRAME::NewPlot()
|
||||||
|
{
|
||||||
|
SIM_PLOT_PANEL *plot = new SIM_PLOT_PANEL ( this, wxID_ANY );
|
||||||
|
m_plotNotebook->AddPage ( plot, wxT("Plot1"), true );
|
||||||
|
m_currentPlot = plot;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ Subclass of SIM_PLOT_FRAME_BASE, which is generated by wxFormBuilder.
|
||||||
|
|
||||||
class SPICE_SIMULATOR;
|
class SPICE_SIMULATOR;
|
||||||
class NETLIST_EXPORTER_PSPICE;
|
class NETLIST_EXPORTER_PSPICE;
|
||||||
|
class SIM_PLOT_PANEL;
|
||||||
|
|
||||||
/** Implementing SIM_PLOT_FRAME_BASE */
|
/** Implementing SIM_PLOT_FRAME_BASE */
|
||||||
class SIM_PLOT_FRAME : public SIM_PLOT_FRAME_BASE
|
class SIM_PLOT_FRAME : public SIM_PLOT_FRAME_BASE
|
||||||
|
@ -24,6 +25,8 @@ class SIM_PLOT_FRAME : public SIM_PLOT_FRAME_BASE
|
||||||
SIM_PLOT_FRAME(KIWAY *aKiway, wxWindow* parent );
|
SIM_PLOT_FRAME(KIWAY *aKiway, wxWindow* parent );
|
||||||
~SIM_PLOT_FRAME();
|
~SIM_PLOT_FRAME();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void SetSchFrame( SCH_EDIT_FRAME* schFrame )
|
void SetSchFrame( SCH_EDIT_FRAME* schFrame )
|
||||||
{
|
{
|
||||||
m_schematicFrame = schFrame;
|
m_schematicFrame = schFrame;
|
||||||
|
@ -31,8 +34,15 @@ class SIM_PLOT_FRAME : public SIM_PLOT_FRAME_BASE
|
||||||
|
|
||||||
void StartSimulation();
|
void StartSimulation();
|
||||||
|
|
||||||
|
void NewPlot();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
virtual void onNewPlot( wxCommandEvent& event ) { NewPlot(); }
|
||||||
|
|
||||||
|
SIM_PLOT_PANEL *m_currentPlot;
|
||||||
SCH_EDIT_FRAME *m_schematicFrame;
|
SCH_EDIT_FRAME *m_schematicFrame;
|
||||||
NETLIST_EXPORTER_PSPICE *m_exporter;
|
NETLIST_EXPORTER_PSPICE *m_exporter;
|
||||||
SPICE_SIMULATOR *m_simulator;
|
SPICE_SIMULATOR *m_simulator;
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "sim_plot_panel.h"
|
|
||||||
|
|
||||||
#include "sim_plot_frame_base.h"
|
#include "sim_plot_frame_base.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -16,61 +14,156 @@ SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE( KIWAY* aKiway, wxWindow* aParent ) :
|
||||||
wxDefaultPosition, wxDefaultSize, KICAD_DEFAULT_DRAWFRAME_STYLE, wxT("Spice Simulation" ) )
|
wxDefaultPosition, wxDefaultSize, KICAD_DEFAULT_DRAWFRAME_STYLE, wxT("Spice Simulation" ) )
|
||||||
|
|
||||||
{
|
{
|
||||||
this->SetSizeHints( wxSize( 1920,1000 ), wxSize( 1920,1000 ) );
|
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||||
|
|
||||||
m_menubar1 = new wxMenuBar( 0 );
|
m_menubar1 = new wxMenuBar( 0 );
|
||||||
m_menu1 = new wxMenu();
|
m_menu1 = new wxMenu();
|
||||||
wxMenuItem* m_menuItem2;
|
wxMenuItem* m_menuItem7;
|
||||||
m_menuItem2 = new wxMenuItem( m_menu1, wxID_ANY, wxString( wxT("Save Plot") ) , wxEmptyString, wxITEM_NORMAL );
|
m_menuItem7 = new wxMenuItem( m_menu1, wxID_ANY, wxString( wxT("New Plot") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
m_menu1->Append( m_menuItem2 );
|
m_menu1->Append( m_menuItem7 );
|
||||||
|
|
||||||
m_menu1->AppendSeparator();
|
m_menu1->AppendSeparator();
|
||||||
|
|
||||||
|
wxMenuItem* m_menuItem8;
|
||||||
|
m_menuItem8 = new wxMenuItem( m_menu1, wxID_ANY, wxString( wxT("Open Workbook") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
|
m_menu1->Append( m_menuItem8 );
|
||||||
|
|
||||||
|
wxMenuItem* m_menuItem2;
|
||||||
|
m_menuItem2 = new wxMenuItem( m_menu1, wxID_ANY, wxString( wxT("Save Workbook") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
|
m_menu1->Append( m_menuItem2 );
|
||||||
|
|
||||||
|
m_menu1->AppendSeparator();
|
||||||
|
|
||||||
wxMenuItem* m_menuItem1;
|
wxMenuItem* m_menuItem1;
|
||||||
m_menuItem1 = new wxMenuItem( m_menu1, wxID_ANY, wxString( wxT("Exit Simulation") ) , wxEmptyString, wxITEM_NORMAL );
|
m_menuItem1 = new wxMenuItem( m_menu1, wxID_ANY, wxString( wxT("Exit Simulation") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
m_menu1->Append( m_menuItem1 );
|
m_menu1->Append( m_menuItem1 );
|
||||||
|
|
||||||
m_menubar1->Append( m_menu1, wxT("File") );
|
m_menubar1->Append( m_menu1, wxT("File") );
|
||||||
|
|
||||||
|
m_menu2 = new wxMenu();
|
||||||
|
wxMenuItem* m_menuItem3;
|
||||||
|
m_menuItem3 = new wxMenuItem( m_menu2, wxID_ANY, wxString( wxT("Zoom In") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
|
m_menu2->Append( m_menuItem3 );
|
||||||
|
|
||||||
|
wxMenuItem* m_menuItem4;
|
||||||
|
m_menuItem4 = new wxMenuItem( m_menu2, wxID_ANY, wxString( wxT("Zoom Out") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
|
m_menu2->Append( m_menuItem4 );
|
||||||
|
|
||||||
|
wxMenuItem* m_menuItem5;
|
||||||
|
m_menuItem5 = new wxMenuItem( m_menu2, wxID_ANY, wxString( wxT("Fit on Screen") ) , wxEmptyString, wxITEM_NORMAL );
|
||||||
|
m_menu2->Append( m_menuItem5 );
|
||||||
|
|
||||||
|
m_menu2->AppendSeparator();
|
||||||
|
|
||||||
|
wxMenuItem* m_menuItem6;
|
||||||
|
m_menuItem6 = new wxMenuItem( m_menu2, wxID_ANY, wxString( wxT("Show grid") ) , wxEmptyString, wxITEM_CHECK );
|
||||||
|
m_menu2->Append( m_menuItem6 );
|
||||||
|
|
||||||
|
m_menubar1->Append( m_menu2, wxT("View") );
|
||||||
|
|
||||||
this->SetMenuBar( m_menubar1 );
|
this->SetMenuBar( m_menubar1 );
|
||||||
|
|
||||||
wxBoxSizer* bSizer1;
|
wxBoxSizer* bSizer1;
|
||||||
bSizer1 = new wxBoxSizer( wxVERTICAL );
|
bSizer1 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
m_auiToolBar1 = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_TB_HORZ_LAYOUT );
|
m_splitter1 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_BORDER );
|
||||||
m_toolZoomIn = m_auiToolBar1->AddTool( wxID_ANY, wxT("Zoom In"), wxNullBitmap /*wxBitmap( wxT("zoom.png"), wxBITMAP_TYPE_ANY )*/, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
|
|
||||||
|
|
||||||
m_auiToolBar1->Realize();
|
|
||||||
|
|
||||||
bSizer1->Add( m_auiToolBar1, 0, wxALL, 5 );
|
|
||||||
|
|
||||||
m_splitter1 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
|
|
||||||
m_splitter1->SetSashGravity( 0.2 );
|
m_splitter1->SetSashGravity( 0.2 );
|
||||||
m_splitter1->SetSashSize( 0 );
|
m_splitter1->SetSashSize( 0 );
|
||||||
m_splitter1->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitter1OnIdle ), NULL, this );
|
m_splitter1->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitter1OnIdle ), NULL, this );
|
||||||
|
|
||||||
m_plotPanel = new SIM_PLOT_PANEL( m_splitter1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
m_panel31 = new wxPanel( m_splitter1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
|
wxBoxSizer* bSizer5;
|
||||||
|
bSizer5 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
m_splitter2 = new wxSplitterWindow( m_panel31, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DBORDER );
|
||||||
|
m_splitter2->Connect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitter2OnIdle ), NULL, this );
|
||||||
|
|
||||||
|
m_panel61 = new wxPanel( m_splitter2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
|
m_panel61->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
|
||||||
|
|
||||||
|
wxBoxSizer* bSizer6;
|
||||||
|
bSizer6 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
m_plotNotebook = new wxAuiNotebook( m_panel61, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_DEFAULT_STYLE );
|
||||||
|
m_plotNotebook->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer6->Add( m_plotNotebook, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
m_panel61->SetSizer( bSizer6 );
|
||||||
|
m_panel61->Layout();
|
||||||
|
bSizer6->Fit( m_panel61 );
|
||||||
|
m_panel7 = new wxPanel( m_splitter2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
|
wxBoxSizer* bSizer7;
|
||||||
|
bSizer7 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
m_staticText2 = new wxStaticText( m_panel7, wxID_ANY, wxT("Signals"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
|
||||||
|
m_staticText2->Wrap( -1 );
|
||||||
|
bSizer7->Add( m_staticText2, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
m_signals = new wxListBox( m_panel7, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_MULTIPLE|wxLB_SORT );
|
||||||
|
bSizer7->Add( m_signals, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
m_staticText21 = new wxStaticText( m_panel7, wxID_ANY, wxT("Parameters"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
|
||||||
|
m_staticText21->Wrap( -1 );
|
||||||
|
bSizer7->Add( m_staticText21, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
m_signals1 = new wxListBox( m_panel7, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_MULTIPLE|wxLB_SORT );
|
||||||
|
bSizer7->Add( m_signals1, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
wxFlexGridSizer* fgSizer1;
|
||||||
|
fgSizer1 = new wxFlexGridSizer( 1, 3, 0, 0 );
|
||||||
|
fgSizer1->SetFlexibleDirection( wxBOTH );
|
||||||
|
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||||
|
|
||||||
|
m_button1 = new wxButton( m_panel7, wxID_ANY, wxT("Probe"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
fgSizer1->Add( m_button1, 0, wxALL, 5 );
|
||||||
|
|
||||||
|
m_button2 = new wxButton( m_panel7, wxID_ANY, wxT("Tune"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
fgSizer1->Add( m_button2, 0, wxALL, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
bSizer7->Add( fgSizer1, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
m_panel7->SetSizer( bSizer7 );
|
||||||
|
m_panel7->Layout();
|
||||||
|
bSizer7->Fit( m_panel7 );
|
||||||
|
m_splitter2->SplitVertically( m_panel61, m_panel7, 0 );
|
||||||
|
bSizer5->Add( m_splitter2, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
m_panel31->SetSizer( bSizer5 );
|
||||||
|
m_panel31->Layout();
|
||||||
|
bSizer5->Fit( m_panel31 );
|
||||||
m_panel3 = new wxPanel( m_splitter1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
m_panel3 = new wxPanel( m_splitter1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
wxBoxSizer* bSizer3;
|
wxBoxSizer* bSizer3;
|
||||||
bSizer3 = new wxBoxSizer( wxVERTICAL );
|
bSizer3 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
m_simConsole = new wxRichTextCtrl( m_panel3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS );
|
m_simConsole = new wxRichTextCtrl( m_panel3, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS );
|
||||||
bSizer3->Add( m_simConsole, 1, wxEXPAND | wxALL, 5 );
|
bSizer3->Add( m_simConsole, 1, wxEXPAND | wxALL, 5 );
|
||||||
|
|
||||||
|
|
||||||
m_panel3->SetSizer( bSizer3 );
|
m_panel3->SetSizer( bSizer3 );
|
||||||
m_panel3->Layout();
|
m_panel3->Layout();
|
||||||
bSizer3->Fit( m_panel3 );
|
bSizer3->Fit( m_panel3 );
|
||||||
m_splitter1->SplitHorizontally( m_plotPanel, m_panel3, 700 );
|
m_splitter1->SplitHorizontally( m_panel31, m_panel3, 700 );
|
||||||
bSizer1->Add( m_splitter1, 1, wxEXPAND, 5 );
|
bSizer1->Add( m_splitter1, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
this->SetSizer( bSizer1 );
|
this->SetSizer( bSizer1 );
|
||||||
this->Layout();
|
this->Layout();
|
||||||
|
|
||||||
this->Centre( wxBOTH );
|
this->Centre( wxBOTH );
|
||||||
|
|
||||||
|
// Connect Events
|
||||||
|
this->Connect( m_menuItem7->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::onNewPlot ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
SIM_PLOT_FRAME_BASE::~SIM_PLOT_FRAME_BASE()
|
SIM_PLOT_FRAME_BASE::~SIM_PLOT_FRAME_BASE()
|
||||||
{
|
{
|
||||||
|
// Disconnect Events
|
||||||
|
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIM_PLOT_FRAME_BASE::onNewPlot ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include <wx/artprov.h>
|
#include <wx/artprov.h>
|
||||||
#include <wx/xrc/xmlres.h>
|
#include <wx/xrc/xmlres.h>
|
||||||
class KIWAY_PLAYER;
|
class KIWAY_PLAYER;
|
||||||
class SIM_PLOT_PANEL;
|
|
||||||
|
|
||||||
#include "kiway_player.h"
|
#include "kiway_player.h"
|
||||||
#include <wx/string.h>
|
#include <wx/string.h>
|
||||||
|
@ -23,12 +22,14 @@ class SIM_PLOT_PANEL;
|
||||||
#include <wx/font.h>
|
#include <wx/font.h>
|
||||||
#include <wx/colour.h>
|
#include <wx/colour.h>
|
||||||
#include <wx/settings.h>
|
#include <wx/settings.h>
|
||||||
#include <wx/aui/aui.h>
|
#include <wx/aui/auibook.h>
|
||||||
#include <wx/aui/auibar.h>
|
|
||||||
#include <wx/panel.h>
|
|
||||||
#include <wx/richtext/richtextctrl.h>
|
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/listbox.h>
|
||||||
|
#include <wx/button.h>
|
||||||
#include <wx/splitter.h>
|
#include <wx/splitter.h>
|
||||||
|
#include <wx/richtext/richtextctrl.h>
|
||||||
#include <wx/frame.h>
|
#include <wx/frame.h>
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -44,12 +45,25 @@ class SIM_PLOT_FRAME_BASE : public KIWAY_PLAYER
|
||||||
protected:
|
protected:
|
||||||
wxMenuBar* m_menubar1;
|
wxMenuBar* m_menubar1;
|
||||||
wxMenu* m_menu1;
|
wxMenu* m_menu1;
|
||||||
wxAuiToolBar* m_auiToolBar1;
|
wxMenu* m_menu2;
|
||||||
wxAuiToolBarItem* m_toolZoomIn;
|
|
||||||
wxSplitterWindow* m_splitter1;
|
wxSplitterWindow* m_splitter1;
|
||||||
SIM_PLOT_PANEL* m_plotPanel;
|
wxPanel* m_panel31;
|
||||||
|
wxSplitterWindow* m_splitter2;
|
||||||
|
wxPanel* m_panel61;
|
||||||
|
wxAuiNotebook* m_plotNotebook;
|
||||||
|
wxPanel* m_panel7;
|
||||||
|
wxStaticText* m_staticText2;
|
||||||
|
wxListBox* m_signals;
|
||||||
|
wxStaticText* m_staticText21;
|
||||||
|
wxListBox* m_signals1;
|
||||||
|
wxButton* m_button1;
|
||||||
|
wxButton* m_button2;
|
||||||
wxPanel* m_panel3;
|
wxPanel* m_panel3;
|
||||||
wxRichTextCtrl* m_simConsole;
|
wxRichTextCtrl* m_simConsole;
|
||||||
|
|
||||||
|
// Virtual event handlers, overide them in your derived class
|
||||||
|
virtual void onNewPlot( wxCommandEvent& event ) { event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SIM_PLOT_FRAME_BASE( KIWAY* aKiway, wxWindow* aParent );
|
SIM_PLOT_FRAME_BASE( KIWAY* aKiway, wxWindow* aParent );
|
||||||
|
@ -60,8 +74,13 @@ class SIM_PLOT_FRAME_BASE : public KIWAY_PLAYER
|
||||||
m_splitter1->SetSashPosition( 700 );
|
m_splitter1->SetSashPosition( 700 );
|
||||||
m_splitter1->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitter1OnIdle ), NULL, this );
|
m_splitter1->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitter1OnIdle ), NULL, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void m_splitter2OnIdle( wxIdleEvent& )
|
||||||
|
{
|
||||||
|
m_splitter2->SetSashPosition( 0 );
|
||||||
|
m_splitter2->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitter2OnIdle ), NULL, this );
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif //__SIM_PLOT_FRAME_BASE_H__
|
#endif //__SIM_PLOT_FRAME_BASE_H__
|
||||||
|
|
|
@ -12,7 +12,7 @@ static int drawPlotFunc( mglGraph *graph )
|
||||||
//graph->SetRanges(-10e-3,10e-3,-2,2);
|
//graph->SetRanges(-10e-3,10e-3,-2,2);
|
||||||
graph->Axis("x");
|
graph->Axis("x");
|
||||||
graph->Label('x',"Time",0);
|
graph->Label('x',"Time",0);
|
||||||
graph->AddRange('x', 0, 10e-3);
|
graph->SetRange('x', 0, 10e-3);
|
||||||
|
|
||||||
graph->Axis("y");
|
graph->Axis("y");
|
||||||
graph->Label('y',"Voltage",0);
|
graph->Label('y',"Voltage",0);
|
||||||
|
@ -47,7 +47,7 @@ SIM_PLOT_PANEL::SIM_PLOT_PANEL( wxWindow * parent,
|
||||||
|
|
||||||
AutoResize = true;
|
AutoResize = true;
|
||||||
SetDraw( drawPlotFunc );
|
SetDraw( drawPlotFunc );
|
||||||
Update();
|
// Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue