diff options
Diffstat (limited to 'Project')
-rw-r--r-- | Project/Bus.h | 2 | ||||
-rw-r--r-- | Project/Element.h | 3 | ||||
-rw-r--r-- | Project/Line.cpp | 32 | ||||
-rw-r--r-- | Project/Line.h | 10 | ||||
-rw-r--r-- | Project/MainFrame.cpp | 4 | ||||
-rw-r--r-- | Project/Project.mk | 2 | ||||
-rw-r--r-- | Project/Release/Bus.cpp.o | bin | 15231 -> 15853 bytes | |||
-rw-r--r-- | Project/Release/Element.cpp.o | bin | 4934 -> 5581 bytes | |||
-rw-r--r-- | Project/Release/Line.cpp.o | bin | 3314 -> 12836 bytes | |||
-rw-r--r-- | Project/Release/Line.cpp.o.d | 342 | ||||
-rw-r--r-- | Project/Release/MainFrame.cpp.o | bin | 117620 -> 117620 bytes | |||
-rw-r--r-- | Project/Release/PSP-UFU.exe | bin | 3244991 -> 3249482 bytes | |||
-rw-r--r-- | Project/Release/Workspace.cpp.o | bin | 91417 -> 93816 bytes | |||
-rw-r--r-- | Project/Workspace.cpp | 75 |
14 files changed, 424 insertions, 46 deletions
diff --git a/Project/Bus.h b/Project/Bus.h index ac271b7..0c9d374 100644 --- a/Project/Bus.h +++ b/Project/Bus.h @@ -9,7 +9,7 @@ class Bus : public Element Bus(); Bus(wxPoint2DDouble position); ~Bus(); - virtual void Insert(Element* parent, wxPoint2DDouble position = wxPoint2DDouble(0.0, 0.0)) { SetPosition(position); }; + virtual bool AddParent(Element* parent, wxPoint2DDouble position) {return true;} virtual bool Contains(wxPoint2DDouble position) const; virtual bool Intersects(wxRect2DDouble rect) const; virtual void Draw(wxPoint2DDouble translation, double scale) const; diff --git a/Project/Element.h b/Project/Element.h index a104ec5..dfffba2 100644 --- a/Project/Element.h +++ b/Project/Element.h @@ -41,7 +41,7 @@ class Element double GetAngle() const { return m_angle; } bool IsPickboxShown() const { return m_showPickbox; } // Pure-virtuals methods - virtual void Insert(Element* parent, wxPoint2DDouble position) = 0; + virtual bool AddParent(Element* parent, wxPoint2DDouble position) = 0; virtual void Draw(wxPoint2DDouble translation, double scale) const = 0; virtual void Rotate() = 0; virtual bool Contains(wxPoint2DDouble position) const = 0; @@ -51,6 +51,7 @@ class Element virtual wxCursor GetBestPickboxCursor() const = 0; // General methods + virtual void AddPoint(wxPoint2DDouble point) {}; virtual void StartMove(wxPoint2DDouble position); virtual void Move(wxPoint2DDouble position); void ResetPickboxes() { m_activePickboxID = ID_PB_NONE; } diff --git a/Project/Line.cpp b/Project/Line.cpp index 5879555..d0df0a2 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -2,11 +2,33 @@ Line::Line() {} Line::~Line() {} -bool Line::Contains(wxPoint2DDouble position) const {} +bool Line::Contains(wxPoint2DDouble position) const { return false; } void Line::Draw(wxPoint2DDouble translation, double scale) const {} -wxCursor Line::GetBestPickboxCursor() const {} -void Line::Insert(Element* parent, wxPoint2DDouble position) {} -bool Line::Intersects(wxRect2DDouble rect) const {} +wxCursor Line::GetBestPickboxCursor() const { return wxCURSOR_ARROW; } +bool Line::AddParent(Element* parent, wxPoint2DDouble position) +{ + if(parent) { + if(m_parentList.size() == 0) { + m_parentList.push_back(parent); + m_pointList.push_back(position); // First point + return false; + } + else if(parent != m_parentList[0]) + { + m_parentList.push_back(parent); + m_pointList.push_back(position); // Last point + return true; + } + } + return false; +} +bool Line::Intersects(wxRect2DDouble rect) const { return false; } void Line::MovePickbox(wxPoint2DDouble position) {} -bool Line::PickboxContains(wxPoint2DDouble position) {} +bool Line::PickboxContains(wxPoint2DDouble position) { return false; } void Line::Rotate() {} +void Line::AddPoint(wxPoint2DDouble point) +{ + if(m_parentList.size() != 0) { + m_pointList.push_back(point); + } +} diff --git a/Project/Line.h b/Project/Line.h index d98a1c5..fd68585 100644 --- a/Project/Line.h +++ b/Project/Line.h @@ -1,6 +1,8 @@ #ifndef LINE_H #define LINE_H +#include <wx/msgdlg.h> + #include "Element.h" class Line : public Element @@ -8,14 +10,18 @@ class Line : public Element public: Line(); ~Line(); - virtual bool Contains(wxPoint2DDouble position) const; + virtual bool Contains(wxPoint2DDouble position) const; virtual void Draw(wxPoint2DDouble translation, double scale) const; virtual wxCursor GetBestPickboxCursor() const; - virtual void Insert(Element* parent, wxPoint2DDouble position); + virtual bool AddParent(Element* parent, wxPoint2DDouble position); virtual bool Intersects(wxRect2DDouble rect) const; virtual void MovePickbox(wxPoint2DDouble position); virtual bool PickboxContains(wxPoint2DDouble position); virtual void Rotate(); + virtual void AddPoint(wxPoint2DDouble point); + protected: + std::vector<Element*> m_parentList; + std::vector<wxPoint2DDouble> m_pointList; }; #endif // LINE_H diff --git a/Project/MainFrame.cpp b/Project/MainFrame.cpp index aa9164e..c9ab732 100644 --- a/Project/MainFrame.cpp +++ b/Project/MainFrame.cpp @@ -14,8 +14,8 @@ MainFrame::MainFrame(wxWindow* parent, wxLocale* locale) : MainFrameBase(parent) } MainFrame::~MainFrame() { - if(!m_artMetro) delete m_artMetro; - if(!m_addElementsMenu) { + //if(m_artMetro) delete m_artMetro; + if(m_addElementsMenu) { m_addElementsMenu->Disconnect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::OnAddElementsClick), NULL, this); delete m_addElementsMenu; diff --git a/Project/Project.mk b/Project/Project.mk index c0d7cc5..d8a7e7f 100644 --- a/Project/Project.mk +++ b/Project/Project.mk @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=Thales -Date :=08/08/2016 +Date :=09/08/2016 CodeLitePath :="C:/Program Files/CodeLite" LinkerName :=C:/TDM-GCC-64/bin/g++.exe SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o Binary files differindex 04f54ec..f8d4fc3 100644 --- a/Project/Release/Bus.cpp.o +++ b/Project/Release/Bus.cpp.o diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o Binary files differindex 0c54126..efeeec9 100644 --- a/Project/Release/Element.cpp.o +++ b/Project/Release/Element.cpp.o diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o Binary files differindex 763e73f..1eb02e9 100644 --- a/Project/Release/Line.cpp.o +++ b/Project/Release/Line.cpp.o diff --git a/Project/Release/Line.cpp.o.d b/Project/Release/Line.cpp.o.d index b73a7bb..684bf28 100644 --- a/Project/Release/Line.cpp.o.d +++ b/Project/Release/Line.cpp.o.d @@ -1,3 +1,343 @@ -Release/Line.cpp.o: Line.cpp Line.h +Release/Line.cpp.o: Line.cpp Line.h \ + C:/wxWidgets-3.1.0/include/wx/msgdlg.h \ + C:/wxWidgets-3.1.0/include/wx/defs.h \ + C:/wxWidgets-3.1.0/include/wx/platform.h \ + C:/wxWidgets-3.1.0/include/wx/compiler.h \ + C:/wxWidgets-3.1.0/lib/gcc_dll/mswu/wx/setup.h \ + C:/wxWidgets-3.1.0/include/wx/msw/libraries.h \ + C:/wxWidgets-3.1.0/include/wx/msw/gccpriv.h \ + C:/wxWidgets-3.1.0/include/wx/chkconf.h \ + C:/wxWidgets-3.1.0/include/wx/msw/chkconf.h \ + C:/wxWidgets-3.1.0/include/wx/version.h \ + C:/wxWidgets-3.1.0/include/wx/cpp.h \ + C:/wxWidgets-3.1.0/include/wx/dlimpexp.h \ + C:/wxWidgets-3.1.0/include/wx/debug.h \ + C:/wxWidgets-3.1.0/include/wx/chartype.h \ + C:/wxWidgets-3.1.0/include/wx/windowid.h \ + C:/wxWidgets-3.1.0/include/wx/msw/winundef.h \ + C:/wxWidgets-3.1.0/include/wx/features.h \ + C:/wxWidgets-3.1.0/include/wx/dialog.h \ + C:/wxWidgets-3.1.0/include/wx/toplevel.h \ + C:/wxWidgets-3.1.0/include/wx/nonownedwnd.h \ + C:/wxWidgets-3.1.0/include/wx/window.h \ + C:/wxWidgets-3.1.0/include/wx/event.h \ + C:/wxWidgets-3.1.0/include/wx/object.h \ + C:/wxWidgets-3.1.0/include/wx/memory.h \ + C:/wxWidgets-3.1.0/include/wx/string.h \ + C:/wxWidgets-3.1.0/include/wx/wxcrtbase.h \ + C:/wxWidgets-3.1.0/include/wx/strvararg.h \ + C:/wxWidgets-3.1.0/include/wx/strconv.h \ + C:/wxWidgets-3.1.0/include/wx/buffer.h \ + C:/wxWidgets-3.1.0/include/wx/fontenc.h \ + C:/wxWidgets-3.1.0/include/wx/unichar.h \ + C:/wxWidgets-3.1.0/include/wx/stringimpl.h \ + C:/wxWidgets-3.1.0/include/wx/beforestd.h \ + C:/wxWidgets-3.1.0/include/wx/afterstd.h \ + C:/wxWidgets-3.1.0/include/wx/stringops.h \ + C:/wxWidgets-3.1.0/include/wx/iosfwrap.h \ + C:/wxWidgets-3.1.0/include/wx/msgout.h \ + C:/wxWidgets-3.1.0/include/wx/xti.h C:/wxWidgets-3.1.0/include/wx/rtti.h \ + C:/wxWidgets-3.1.0/include/wx/flags.h \ + C:/wxWidgets-3.1.0/include/wx/xti2.h \ + C:/wxWidgets-3.1.0/include/wx/clntdata.h \ + C:/wxWidgets-3.1.0/include/wx/hashmap.h \ + C:/wxWidgets-3.1.0/include/wx/wxcrt.h \ + C:/wxWidgets-3.1.0/include/wx/gdicmn.h \ + C:/wxWidgets-3.1.0/include/wx/list.h \ + C:/wxWidgets-3.1.0/include/wx/vector.h \ + C:/wxWidgets-3.1.0/include/wx/scopeguard.h \ + C:/wxWidgets-3.1.0/include/wx/except.h \ + C:/wxWidgets-3.1.0/include/wx/meta/movable.h \ + C:/wxWidgets-3.1.0/include/wx/meta/pod.h \ + C:/wxWidgets-3.1.0/include/wx/meta/if.h \ + C:/wxWidgets-3.1.0/include/wx/math.h \ + C:/wxWidgets-3.1.0/include/wx/cursor.h \ + C:/wxWidgets-3.1.0/include/wx/gdiobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/gdiimage.h \ + C:/wxWidgets-3.1.0/include/wx/msw/cursor.h \ + C:/wxWidgets-3.1.0/include/wx/utils.h \ + C:/wxWidgets-3.1.0/include/wx/filefn.h \ + C:/wxWidgets-3.1.0/include/wx/arrstr.h \ + C:/wxWidgets-3.1.0/include/wx/versioninfo.h \ + C:/wxWidgets-3.1.0/include/wx/meta/implicitconversion.h \ + C:/wxWidgets-3.1.0/include/wx/mousestate.h \ + C:/wxWidgets-3.1.0/include/wx/kbdstate.h \ + C:/wxWidgets-3.1.0/include/wx/longlong.h \ + C:/wxWidgets-3.1.0/include/wx/platinfo.h \ + C:/wxWidgets-3.1.0/include/wx/dynarray.h \ + C:/wxWidgets-3.1.0/include/wx/thread.h \ + C:/wxWidgets-3.1.0/include/wx/tracker.h \ + C:/wxWidgets-3.1.0/include/wx/typeinfo.h \ + C:/wxWidgets-3.1.0/include/wx/any.h \ + C:/wxWidgets-3.1.0/include/wx/datetime.h \ + C:/wxWidgets-3.1.0/include/wx/anystr.h \ + C:/wxWidgets-3.1.0/include/wx/variant.h \ + C:/wxWidgets-3.1.0/include/wx/meta/convertible.h \ + C:/wxWidgets-3.1.0/include/wx/meta/removeref.h \ + C:/wxWidgets-3.1.0/include/wx/font.h \ + C:/wxWidgets-3.1.0/include/wx/msw/font.h \ + C:/wxWidgets-3.1.0/include/wx/colour.h \ + C:/wxWidgets-3.1.0/include/wx/msw/colour.h \ + C:/wxWidgets-3.1.0/include/wx/region.h \ + C:/wxWidgets-3.1.0/include/wx/msw/region.h \ + C:/wxWidgets-3.1.0/include/wx/intl.h \ + C:/wxWidgets-3.1.0/include/wx/translation.h \ + C:/wxWidgets-3.1.0/include/wx/language.h \ + C:/wxWidgets-3.1.0/include/wx/scopedptr.h \ + C:/wxWidgets-3.1.0/include/wx/checkeddelete.h \ + C:/wxWidgets-3.1.0/include/wx/validate.h \ + C:/wxWidgets-3.1.0/include/wx/palette.h \ + C:/wxWidgets-3.1.0/include/wx/msw/palette.h \ + C:/wxWidgets-3.1.0/include/wx/accel.h \ + C:/wxWidgets-3.1.0/include/wx/msw/accel.h \ + C:/wxWidgets-3.1.0/include/wx/msw/window.h \ + C:/wxWidgets-3.1.0/include/wx/settings.h \ + C:/wxWidgets-3.1.0/include/wx/msw/nonownedwnd.h \ + C:/wxWidgets-3.1.0/include/wx/iconbndl.h \ + C:/wxWidgets-3.1.0/include/wx/icon.h \ + C:/wxWidgets-3.1.0/include/wx/iconloc.h \ + C:/wxWidgets-3.1.0/include/wx/msw/icon.h \ + C:/wxWidgets-3.1.0/include/wx/weakref.h \ + C:/wxWidgets-3.1.0/include/wx/meta/int2type.h \ + C:/wxWidgets-3.1.0/include/wx/msw/toplevel.h \ + C:/wxWidgets-3.1.0/include/wx/containr.h \ + C:/wxWidgets-3.1.0/include/wx/sharedptr.h \ + C:/wxWidgets-3.1.0/include/wx/atomic.h \ + C:/wxWidgets-3.1.0/include/wx/msw/wrapwin.h \ + C:/wxWidgets-3.1.0/include/wx/msw/dialog.h \ + C:/wxWidgets-3.1.0/include/wx/panel.h \ + C:/wxWidgets-3.1.0/include/wx/msw/panel.h \ + C:/wxWidgets-3.1.0/include/wx/stockitem.h \ + C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h Element.h \ + C:/wxWidgets-3.1.0/include/wx/geometry.h Line.h: + +C:/wxWidgets-3.1.0/include/wx/msgdlg.h: + +C:/wxWidgets-3.1.0/include/wx/defs.h: + +C:/wxWidgets-3.1.0/include/wx/platform.h: + +C:/wxWidgets-3.1.0/include/wx/compiler.h: + +C:/wxWidgets-3.1.0/lib/gcc_dll/mswu/wx/setup.h: + +C:/wxWidgets-3.1.0/include/wx/msw/libraries.h: + +C:/wxWidgets-3.1.0/include/wx/msw/gccpriv.h: + +C:/wxWidgets-3.1.0/include/wx/chkconf.h: + +C:/wxWidgets-3.1.0/include/wx/msw/chkconf.h: + +C:/wxWidgets-3.1.0/include/wx/version.h: + +C:/wxWidgets-3.1.0/include/wx/cpp.h: + +C:/wxWidgets-3.1.0/include/wx/dlimpexp.h: + +C:/wxWidgets-3.1.0/include/wx/debug.h: + +C:/wxWidgets-3.1.0/include/wx/chartype.h: + +C:/wxWidgets-3.1.0/include/wx/windowid.h: + +C:/wxWidgets-3.1.0/include/wx/msw/winundef.h: + +C:/wxWidgets-3.1.0/include/wx/features.h: + +C:/wxWidgets-3.1.0/include/wx/dialog.h: + +C:/wxWidgets-3.1.0/include/wx/toplevel.h: + +C:/wxWidgets-3.1.0/include/wx/nonownedwnd.h: + +C:/wxWidgets-3.1.0/include/wx/window.h: + +C:/wxWidgets-3.1.0/include/wx/event.h: + +C:/wxWidgets-3.1.0/include/wx/object.h: + +C:/wxWidgets-3.1.0/include/wx/memory.h: + +C:/wxWidgets-3.1.0/include/wx/string.h: + +C:/wxWidgets-3.1.0/include/wx/wxcrtbase.h: + +C:/wxWidgets-3.1.0/include/wx/strvararg.h: + +C:/wxWidgets-3.1.0/include/wx/strconv.h: + +C:/wxWidgets-3.1.0/include/wx/buffer.h: + +C:/wxWidgets-3.1.0/include/wx/fontenc.h: + +C:/wxWidgets-3.1.0/include/wx/unichar.h: + +C:/wxWidgets-3.1.0/include/wx/stringimpl.h: + +C:/wxWidgets-3.1.0/include/wx/beforestd.h: + +C:/wxWidgets-3.1.0/include/wx/afterstd.h: + +C:/wxWidgets-3.1.0/include/wx/stringops.h: + +C:/wxWidgets-3.1.0/include/wx/iosfwrap.h: + +C:/wxWidgets-3.1.0/include/wx/msgout.h: + +C:/wxWidgets-3.1.0/include/wx/xti.h: + +C:/wxWidgets-3.1.0/include/wx/rtti.h: + +C:/wxWidgets-3.1.0/include/wx/flags.h: + +C:/wxWidgets-3.1.0/include/wx/xti2.h: + +C:/wxWidgets-3.1.0/include/wx/clntdata.h: + +C:/wxWidgets-3.1.0/include/wx/hashmap.h: + +C:/wxWidgets-3.1.0/include/wx/wxcrt.h: + +C:/wxWidgets-3.1.0/include/wx/gdicmn.h: + +C:/wxWidgets-3.1.0/include/wx/list.h: + +C:/wxWidgets-3.1.0/include/wx/vector.h: + +C:/wxWidgets-3.1.0/include/wx/scopeguard.h: + +C:/wxWidgets-3.1.0/include/wx/except.h: + +C:/wxWidgets-3.1.0/include/wx/meta/movable.h: + +C:/wxWidgets-3.1.0/include/wx/meta/pod.h: + +C:/wxWidgets-3.1.0/include/wx/meta/if.h: + +C:/wxWidgets-3.1.0/include/wx/math.h: + +C:/wxWidgets-3.1.0/include/wx/cursor.h: + +C:/wxWidgets-3.1.0/include/wx/gdiobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/gdiimage.h: + +C:/wxWidgets-3.1.0/include/wx/msw/cursor.h: + +C:/wxWidgets-3.1.0/include/wx/utils.h: + +C:/wxWidgets-3.1.0/include/wx/filefn.h: + +C:/wxWidgets-3.1.0/include/wx/arrstr.h: + +C:/wxWidgets-3.1.0/include/wx/versioninfo.h: + +C:/wxWidgets-3.1.0/include/wx/meta/implicitconversion.h: + +C:/wxWidgets-3.1.0/include/wx/mousestate.h: + +C:/wxWidgets-3.1.0/include/wx/kbdstate.h: + +C:/wxWidgets-3.1.0/include/wx/longlong.h: + +C:/wxWidgets-3.1.0/include/wx/platinfo.h: + +C:/wxWidgets-3.1.0/include/wx/dynarray.h: + +C:/wxWidgets-3.1.0/include/wx/thread.h: + +C:/wxWidgets-3.1.0/include/wx/tracker.h: + +C:/wxWidgets-3.1.0/include/wx/typeinfo.h: + +C:/wxWidgets-3.1.0/include/wx/any.h: + +C:/wxWidgets-3.1.0/include/wx/datetime.h: + +C:/wxWidgets-3.1.0/include/wx/anystr.h: + +C:/wxWidgets-3.1.0/include/wx/variant.h: + +C:/wxWidgets-3.1.0/include/wx/meta/convertible.h: + +C:/wxWidgets-3.1.0/include/wx/meta/removeref.h: + +C:/wxWidgets-3.1.0/include/wx/font.h: + +C:/wxWidgets-3.1.0/include/wx/msw/font.h: + +C:/wxWidgets-3.1.0/include/wx/colour.h: + +C:/wxWidgets-3.1.0/include/wx/msw/colour.h: + +C:/wxWidgets-3.1.0/include/wx/region.h: + +C:/wxWidgets-3.1.0/include/wx/msw/region.h: + +C:/wxWidgets-3.1.0/include/wx/intl.h: + +C:/wxWidgets-3.1.0/include/wx/translation.h: + +C:/wxWidgets-3.1.0/include/wx/language.h: + +C:/wxWidgets-3.1.0/include/wx/scopedptr.h: + +C:/wxWidgets-3.1.0/include/wx/checkeddelete.h: + +C:/wxWidgets-3.1.0/include/wx/validate.h: + +C:/wxWidgets-3.1.0/include/wx/palette.h: + +C:/wxWidgets-3.1.0/include/wx/msw/palette.h: + +C:/wxWidgets-3.1.0/include/wx/accel.h: + +C:/wxWidgets-3.1.0/include/wx/msw/accel.h: + +C:/wxWidgets-3.1.0/include/wx/msw/window.h: + +C:/wxWidgets-3.1.0/include/wx/settings.h: + +C:/wxWidgets-3.1.0/include/wx/msw/nonownedwnd.h: + +C:/wxWidgets-3.1.0/include/wx/iconbndl.h: + +C:/wxWidgets-3.1.0/include/wx/icon.h: + +C:/wxWidgets-3.1.0/include/wx/iconloc.h: + +C:/wxWidgets-3.1.0/include/wx/msw/icon.h: + +C:/wxWidgets-3.1.0/include/wx/weakref.h: + +C:/wxWidgets-3.1.0/include/wx/meta/int2type.h: + +C:/wxWidgets-3.1.0/include/wx/msw/toplevel.h: + +C:/wxWidgets-3.1.0/include/wx/containr.h: + +C:/wxWidgets-3.1.0/include/wx/sharedptr.h: + +C:/wxWidgets-3.1.0/include/wx/atomic.h: + +C:/wxWidgets-3.1.0/include/wx/msw/wrapwin.h: + +C:/wxWidgets-3.1.0/include/wx/msw/dialog.h: + +C:/wxWidgets-3.1.0/include/wx/panel.h: + +C:/wxWidgets-3.1.0/include/wx/msw/panel.h: + +C:/wxWidgets-3.1.0/include/wx/stockitem.h: + +C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h: + +Element.h: + +C:/wxWidgets-3.1.0/include/wx/geometry.h: diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o Binary files differindex 8d43ca7..6701a43 100644 --- a/Project/Release/MainFrame.cpp.o +++ b/Project/Release/MainFrame.cpp.o diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe Binary files differindex 837fa40..0135e56 100644 --- a/Project/Release/PSP-UFU.exe +++ b/Project/Release/PSP-UFU.exe diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o Binary files differindex 0ddf120..4f94218 100644 --- a/Project/Release/Workspace.cpp.o +++ b/Project/Release/Workspace.cpp.o diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 107d859..2bfeeac 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -58,12 +58,11 @@ Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : Workspace::~Workspace() { - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { - if(!(*it)) delete *it; - it++; + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + if(*it) delete *it; } - if(!m_camera) delete m_camera; + m_elementList.clear(); + if(m_camera) delete m_camera; } void Workspace::OnPaint(wxPaintEvent& event) @@ -79,11 +78,9 @@ void Workspace::OnPaint(wxPaintEvent& event) // Draw // Elements - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; element->Draw(m_camera->GetTranslation(), m_camera->GetScale()); - it++; } // Selection rectangle @@ -136,13 +133,31 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) { bool foundElement = false; if(m_mode == MODE_INSERT) { - m_mode = MODE_EDIT; + // Too confuse... + Element* newElement = *(m_elementList.end() - 1); + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + if(typeid(*element) == typeid(Bus)) { + element->SetSelected(); + foundElement = true; + if(newElement->AddParent(element, m_camera->ScreenToWorld(event.GetPosition()))) { + m_mode = MODE_EDIT; + } + } + } + } + if(!foundElement) { + if(typeid(*newElement) == typeid(Line)) { + newElement->AddPoint(m_camera->ScreenToWorld(event.GetPosition())); + } + } + foundElement = true; } else { bool clickPickbox = false; - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; element->ResetPickboxes(); // Reset pickbox state. element->StartMove(m_camera->ScreenToWorld(event.GetPosition())); @@ -162,9 +177,9 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) m_mode = MODE_MOVE_ELEMENT; } } - it++; } } + if(!foundElement) { m_mode = MODE_SELECTION_RECT; m_startSelRect = m_camera->ScreenToWorld(event.GetPosition()); @@ -178,8 +193,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) void Workspace::OnLeftClickUp(wxMouseEvent& event) { bool foundPickbox = false; - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(m_mode == MODE_SELECTION_RECT) { @@ -208,14 +222,14 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) element->ShowPickbox(false); } } - - it++; } if(!foundPickbox) { SetCursor(wxCURSOR_ARROW); } - m_mode = MODE_EDIT; + if(m_mode != MODE_INSERT) { + m_mode = MODE_EDIT; + } m_selectionRect = wxRect2DDouble(0, 0, 0, 0); Redraw(); UpdateStatusBar(); @@ -227,9 +241,10 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) { case MODE_INSERT: { - std::vector<Element*>::iterator it = m_elementList.end() - 1; - Element* element = *it; - element->Insert(NULL, m_camera->ScreenToWorld(event.GetPosition())); + Element* newElement = *(m_elementList.end() - 1); + if(typeid(*newElement) == typeid(Bus)) { + newElement->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); + } Redraw(); } break; @@ -245,8 +260,7 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) { bool foundPickbox = false; bool redraw = false; - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(element->IsSelected()) { if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { @@ -270,7 +284,6 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) SetCursor(wxCURSOR_ARROW); } } - it++; } if(redraw) Redraw(); } @@ -278,28 +291,24 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) case MODE_MOVE_PICKBOX: { - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(element->IsSelected()) { element->MovePickbox(m_camera->ScreenToWorld(event.GetPosition())); Redraw(); } - it++; } } break; case MODE_MOVE_ELEMENT: { - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(element->IsSelected()) { element->Move(m_camera->ScreenToWorld(event.GetPosition())); Redraw(); } - it++; } } break; @@ -347,7 +356,9 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) } void Workspace::OnMiddleUp(wxMouseEvent& event) { - m_mode = MODE_EDIT; + if(m_mode != MODE_INSERT) { + m_mode = MODE_EDIT; + } UpdateStatusBar(); } void Workspace::OnScroll(wxMouseEvent& event) @@ -378,13 +389,11 @@ void Workspace::OnKeyDown(wxKeyEvent& event) break; case 'R': // Rotate the selected elements. { - std::vector<Element*>::iterator it = m_elementList.begin(); - while(it != m_elementList.end()) { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(element->IsSelected()) { element->Rotate(); } - it++; } Redraw(); } |