diff options
Diffstat (limited to 'Project/MainFrame.cpp')
-rw-r--r-- | Project/MainFrame.cpp | 167 |
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); + } } |