summaryrefslogtreecommitdiffstats
path: root/Project/MainFrame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/MainFrame.cpp')
-rw-r--r--Project/MainFrame.cpp167
1 files changed, 124 insertions, 43 deletions
diff --git a/Project/MainFrame.cpp b/Project/MainFrame.cpp
index cb64736..d7eb329 100644
--- a/Project/MainFrame.cpp
+++ b/Project/MainFrame.cpp
@@ -1,11 +1,17 @@
#include "MainFrame.h"
#include "ArtMetro.h"
#include "Workspace.h"
+#include "Bus.h"
+#include "Line.h"
+#include "Transformer.h"
+#include "SyncGenerator.h"
+#include "IndMotor.h"
+#include "SyncMotor.h"
+#include "Load.h"
+#include "Inductor.h"
+#include "Capacitor.h"
-MainFrame::MainFrame() : MainFrameBase(NULL)
-{
-}
-
+MainFrame::MainFrame() : MainFrameBase(NULL) {}
MainFrame::MainFrame(wxWindow* parent, wxLocale* locale) : MainFrameBase(parent)
{
m_locale = locale;
@@ -14,7 +20,7 @@ MainFrame::MainFrame(wxWindow* parent, wxLocale* locale) : MainFrameBase(parent)
}
MainFrame::~MainFrame()
{
- //if(m_artMetro) delete m_artMetro;
+ // if(m_artMetro) delete m_artMetro;
if(m_addElementsMenu) {
m_addElementsMenu->Disconnect(wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(MainFrame::OnAddElementsClick), NULL, this);
@@ -62,6 +68,8 @@ void MainFrame::EnableCurrentProjectRibbon(bool enable)
m_ribbonButtonBarReports->EnableButton(ID_RIBBON_SNAPSHOT, enable);
m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SIMULSETTINGS, enable);
m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_UNDO, enable);
+ m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATEC, enable);
+ m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATECC, enable);
}
void MainFrame::CreateAddElementsMenu()
@@ -160,54 +168,127 @@ void MainFrame::OnStabilitySettingsClick(wxRibbonButtonBarEvent& event) {}
void MainFrame::OnUndoClick(wxRibbonButtonBarEvent& event) {}
void MainFrame::OnAddElementsClick(wxCommandEvent& event)
{
- switch(event.GetId())
- {
- case ID_ADDMENU_BUS:
- // inserir barra
- break;
- case ID_ADDMENU_LINE:
- // inserir linha
- break;
- case ID_ADDMENU_TRANSFORMER:
- // inserir transformador
- break;
- case ID_ADDMENU_GENERATOR:
- // inserir gerador
- break;
- case ID_ADDMENU_LOAD:
- // inserir carga
- break;
- case ID_ADDMENU_CAPACITOR:
- // inserir capacitor
- break;
- case ID_ADDMENU_INDUCTOR:
- // inserir indutor
- break;
- case ID_ADDMENU_INDMOTOR:
- // inserir motor
- break;
- case ID_ADDMENU_SYNCCOMP:
- // inserir compensador sincrono
- break;
+ Workspace* workspace = (Workspace*)m_auiNotebook->GetCurrentPage();
+
+ if(workspace) {
+ if(workspace->GetWorkspaceMode() != MODE_INSERT) {
+ auto elementList = workspace->GetElementList();
+ wxString statusBarText = "";
+ bool newElement = false;
+
+ switch(event.GetId())
+ {
+ case ID_ADDMENU_BUS:
+ {
+ Bus* newBus = new Bus(wxPoint2DDouble(0, 0));
+ elementList.push_back(newBus);
+ statusBarText = _("Insert Bus: Click to insert, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_LINE:
+ {
+ Line* newLine = new Line();
+ elementList.push_back(newLine);
+ statusBarText = _("Insert Line: Click on two buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_TRANSFORMER:
+ {
+ Transformer* newTransformer = new Transformer();
+ elementList.push_back(newTransformer);
+ statusBarText = _("Insert Transformer: Click on two buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_GENERATOR:
+ {
+ SyncGenerator* newGenerator = new SyncGenerator();
+ elementList.push_back(newGenerator);
+ statusBarText = _("Insert Generator: Click on a buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_LOAD:
+ {
+ Load* newLoad = new Load();
+ elementList.push_back(newLoad);
+ statusBarText = _("Insert Load: Click on a buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_CAPACITOR:
+ {
+ Capacitor* newCapacitor = new Capacitor();
+ elementList.push_back(newCapacitor);
+ statusBarText = _("Insert Capacitor: Click on a buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_INDUCTOR:
+ {
+ Inductor* newInductor = new Inductor();
+ elementList.push_back(newInductor);
+ statusBarText = _("Insert Inductor: Click on a buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_INDMOTOR:
+ {
+ IndMotor* newIndMotor = new IndMotor();
+ elementList.push_back(newIndMotor);
+ statusBarText = _("Insert Induction Motor: Click on a buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ case ID_ADDMENU_SYNCCOMP:
+ {
+ SyncMotor* newSyncCondenser = new SyncMotor();
+ elementList.push_back(newSyncCondenser);
+ statusBarText = _("Insert Synchronous Condenser: Click on a buses, ESC to cancel.");
+ newElement = true;
+ }
+ break;
+ }
+ if(newElement) {
+ workspace->SetElementList(elementList);
+ workspace->SetWorkspaceMode(MODE_INSERT);
+ workspace->SetStatusBarText(statusBarText);
+ workspace->Redraw();
+ }
+ }
}
}
void MainFrame::NotebookPageClosed(wxAuiNotebookEvent& event)
-{
+{
if(m_auiNotebook->GetPageCount() == 0) EnableCurrentProjectRibbon(false);
- //Memory leak?
+ // Memory leak?
}
void MainFrame::NotebookPageClosing(wxAuiNotebookEvent& event)
{
- std::vector<Workspace*>::iterator it = m_workspaceList.begin();
+ auto it = m_workspaceList.begin();
while(it != m_workspaceList.end()) {
- Workspace* workspace = *it;
-
- if(event.GetSelection() == m_auiNotebook->GetPageIndex(workspace)) {
- //delete workspace; //Memory leak?
- m_workspaceList.erase(it);
+ if(*it == m_auiNotebook->GetCurrentPage()) {
+ //delete *it; //Memory leak?
+ m_workspaceList.erase(it);
break;
}
it++;
}
- event.Skip();
+ event.Skip();
+}
+void MainFrame::OnRotClockClick(wxRibbonButtonBarEvent& event)
+{
+ Workspace* workspace = (Workspace*)m_auiNotebook->GetCurrentPage();
+ if(workspace) {
+ workspace->RotateSelectedElements();
+ }
+}
+void MainFrame::OnRotCounterClockClick(wxRibbonButtonBarEvent& event)
+{
+ Workspace* workspace = (Workspace*)m_auiNotebook->GetCurrentPage();
+ if(workspace) {
+ workspace->RotateSelectedElements(false);
+ }
}