summaryrefslogtreecommitdiffstats
path: root/Project
diff options
context:
space:
mode:
Diffstat (limited to 'Project')
-rw-r--r--Project/ControlEditor.h6
-rw-r--r--Project/ControlEditorDC.cpp31
-rw-r--r--Project/ControlEditorDC.h24
-rw-r--r--Project/Project.project2
-rw-r--r--Project/WorkspaceDC.cpp4
5 files changed, 61 insertions, 6 deletions
diff --git a/Project/ControlEditor.h b/Project/ControlEditor.h
index fbd8f79..3f77422 100644
--- a/Project/ControlEditor.h
+++ b/Project/ControlEditor.h
@@ -138,7 +138,7 @@ class ControlEditor : public ControlEditorBase
virtual void SetElementsList(std::vector<ControlElement*> elementList) { m_elementList = elementList; }
virtual void SetConnectionsList(std::vector<ConnectionLine*> connectionList) { m_connectionList = connectionList; }
virtual void SetControlContainer(ControlElementContainer* ctrlContainer) { m_ctrlContainer = ctrlContainer; }
- protected:
+
virtual void OnClose(wxCloseEvent& event);
virtual void OnTestClick(wxCommandEvent& event);
virtual void OnButtonOKClick(wxCommandEvent& event) { Close(); }
@@ -155,8 +155,10 @@ class ControlEditor : public ControlEditorBase
virtual void OnMouseMotion(wxMouseEvent& event);
virtual void OnPaint(wxPaintEvent& event);
virtual void LeftClickDown(wxMouseEvent& event);
-
+
void BuildControlElementPanel();
+
+ protected:
void SetViewport();
int GetNextID();
diff --git a/Project/ControlEditorDC.cpp b/Project/ControlEditorDC.cpp
new file mode 100644
index 0000000..84e212d
--- /dev/null
+++ b/Project/ControlEditorDC.cpp
@@ -0,0 +1,31 @@
+#include "ControlEditorDC.h"
+#include "Camera.h"
+
+ControlEditorDC::ControlEditorDC(wxWindow* parent, int ioflags) : ControlEditor(parent, nullptr, ioflags)
+{
+ BuildControlElementPanel();
+ m_camera = new Camera();
+ m_selectionRect = wxRect2DDouble(0, 0, 0, 0);
+ // m_camera->SetScale(1.2);
+ m_ioFlags = ioflags;
+
+ this->GetSizer()->Remove(this->GetSizer()->GetChildren()[0]->GetId()); // remove m_glCanvas object from sizer
+
+ delete m_glCanvas; // Delete GLCanvas to allow drawing with wxDC
+ m_glCanvas = nullptr;
+ SetBackgroundColour(wxColour(255, 255, 255));
+ SetBackgroundStyle(wxBG_STYLE_PAINT); // To allow wxBufferedPaintDC works properly.
+ Redraw();
+}
+
+ControlEditorDC::~ControlEditorDC()
+{
+ // Recreate the GLCanvas. This is necessary to prevent WorkspaceBase destructor access nullpr.
+ // Also avoid the code editing of WorkspaceBase, since is automatically generated by wxCrafter.
+ // TODO(?): Find a better way to solve this problem.
+ m_glCanvas = new wxGLCanvas(this);
+}
+
+void ControlEditorDC::OnPaint(wxPaintEvent& event)
+{
+}
diff --git a/Project/ControlEditorDC.h b/Project/ControlEditorDC.h
new file mode 100644
index 0000000..74e509a
--- /dev/null
+++ b/Project/ControlEditorDC.h
@@ -0,0 +1,24 @@
+#ifndef CONTROLEDITORDC_H
+#define CONTROLEDITORDC_H
+
+#include "ControlEditor.h"
+
+#include <wx/graphics.h>
+#include <wx/dcbuffer.h>
+
+class ControlEditorDC : public ControlEditor
+{
+public:
+ ControlEditorDC(wxWindow* parent,
+ int ioflags = IOControl::IN_TERMINAL_VOLTAGE | IOControl::IN_VELOCITY | IOControl::OUT_FIELD_VOLTAGE |
+ IOControl::OUT_MEC_POWER);
+ ~ControlEditorDC();
+
+ virtual void Redraw() { this->Refresh(); }
+
+protected:
+ virtual void OnPaint(wxPaintEvent& event);
+ virtual void OnIdle(wxIdleEvent& event) {} // Prevent OpenGL checks
+};
+
+#endif // CONTROLEDITORDC_H
diff --git a/Project/Project.project b/Project/Project.project
index 74cb0a2..5460bd7 100644
--- a/Project/Project.project
+++ b/Project/Project.project
@@ -124,6 +124,7 @@
<File Name="Workspace.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="simulation GUI">
+ <File Name="ControlEditorDC.cpp"/>
<File Name="StabilityEventList.cpp"/>
<File Name="ChartView.cpp"/>
<File Name="ControlEditor.cpp"/>
@@ -258,6 +259,7 @@
<File Name="Workspace.h"/>
</VirtualDirectory>
<VirtualDirectory Name="simulation GUI">
+ <File Name="ControlEditorDC.h"/>
<File Name="StabilityEventList.h"/>
<File Name="ChartView.h"/>
<File Name="ControlEditor.h"/>
diff --git a/Project/WorkspaceDC.cpp b/Project/WorkspaceDC.cpp
index 947b248..1333314 100644
--- a/Project/WorkspaceDC.cpp
+++ b/Project/WorkspaceDC.cpp
@@ -65,10 +65,6 @@ WorkspaceDC::WorkspaceDC(wxWindow* parent, wxString name, wxStatusBar* statusBar
this->GetSizer()->Remove(this->GetSizer()->GetChildren()[0]->GetId()); // remove m_glCanvas object from sizer
- //for (int i = 0; i < this->GetSizer()->GetChildren().GetCount(); ++i) {
- //wxMessageBox(wxString::Format("%d", this->GetSizer()->GetChildren()[i]->GetId()));
- //}
-
delete m_glCanvas; // Delete GLcanvas to allow drawing with wxDC
m_glCanvas = nullptr;
SetBackgroundColour(wxColour(255, 255, 255));