diff options
author | Thales1330 <thaleslima.ufu@gmail.com> | 2016-11-23 17:08:20 -0200 |
---|---|---|
committer | Thales1330 <thaleslima.ufu@gmail.com> | 2016-11-23 17:08:20 -0200 |
commit | 8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a (patch) | |
tree | 1e25777555f6964409a6dce64fb1bd722d0e55ae | |
parent | 8d78d8c052550b9efc1a7de39aa4b776be002396 (diff) | |
download | PSP.git-8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a.tar.gz PSP.git-8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a.tar.xz PSP.git-8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a.zip |
Text under implementation
40 files changed, 3282 insertions, 789 deletions
diff --git a/.codelite/.tern-port b/.codelite/.tern-port index 531455e..7f8f52f 100644 --- a/.codelite/.tern-port +++ b/.codelite/.tern-port @@ -1 +1 @@ -49337
\ No newline at end of file +56486
\ No newline at end of file diff --git a/.codelite/PSP.session b/.codelite/PSP.session index a67c62a..ae7ec32 100644 --- a/.codelite/PSP.session +++ b/.codelite/PSP.session @@ -1,75 +1,89 @@ <?xml version="1.0" encoding="UTF-8"?> <Session Name="C:\Users\Thales\Documents\GitHub\PSP\PSP.workspace"> - <int Value="6" Name="m_selectedTab"/> + <int Value="10" Name="m_selectedTab"/> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\PSP.workspace" Name="m_workspaceName"/> <TabInfoArray Name="TabInfoArray"> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Workspace.cpp" Name="FileName"/> - <int Value="856" Name="FirstVisibleLine"/> - <int Value="873" Name="CurrentLine"/> + <int Value="405" Name="FirstVisibleLine"/> + <int Value="405" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Workspace.h" Name="FileName"/> - <int Value="53" Name="FirstVisibleLine"/> - <int Value="71" Name="CurrentLine"/> + <int Value="18" Name="FirstVisibleLine"/> + <int Value="37" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\MainFrame.cpp" Name="FileName"/> <int Value="167" Name="FirstVisibleLine"/> - <int Value="198" Name="CurrentLine"/> + <int Value="186" Name="CurrentLine"/> + <wxArrayString Name="Bookmarks"/> + <IntVector Name="CollapsedFolds"/> + </TabInfo> + <TabInfo> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\MainFrame.h" Name="FileName"/> + <int Value="3" Name="FirstVisibleLine"/> + <int Value="17" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Element.cpp" Name="FileName"/> - <int Value="322" Name="FirstVisibleLine"/> - <int Value="341" Name="CurrentLine"/> + <int Value="0" Name="FirstVisibleLine"/> + <int Value="25" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Element.h" Name="FileName"/> - <int Value="186" Name="FirstVisibleLine"/> - <int Value="203" Name="CurrentLine"/> + <int Value="105" Name="FirstVisibleLine"/> + <int Value="130" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> - <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\ElectricCalculation.h" Name="FileName"/> - <int Value="18" Name="FirstVisibleLine"/> - <int Value="29" Name="CurrentLine"/> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Text.h" Name="FileName"/> + <int Value="8" Name="FirstVisibleLine"/> + <int Value="26" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> - <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\ElectricCalculation.cpp" Name="FileName"/> - <int Value="367" Name="FirstVisibleLine"/> - <int Value="390" Name="CurrentLine"/> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Text.cpp" Name="FileName"/> + <int Value="29" Name="FirstVisibleLine"/> + <int Value="35" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> - <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\PowerFlow.h" Name="FileName"/> - <int Value="0" Name="FirstVisibleLine"/> - <int Value="7" Name="CurrentLine"/> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Bus.h" Name="FileName"/> + <int Value="21" Name="FirstVisibleLine"/> + <int Value="39" Name="CurrentLine"/> + <wxArrayString Name="Bookmarks"/> + <IntVector Name="CollapsedFolds"/> + </TabInfo> + <TabInfo> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Bus.cpp" Name="FileName"/> + <int Value="42" Name="FirstVisibleLine"/> + <int Value="49" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> - <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\PowerFlow.cpp" Name="FileName"/> - <int Value="228" Name="FirstVisibleLine"/> - <int Value="258" Name="CurrentLine"/> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\wxGLString.cpp" Name="FileName"/> + <int Value="243" Name="FirstVisibleLine"/> + <int Value="256" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> - <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\IndMotor.cpp" Name="FileName"/> - <int Value="19" Name="FirstVisibleLine"/> - <int Value="54" Name="CurrentLine"/> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\wxGLString.h" Name="FileName"/> + <int Value="79" Name="FirstVisibleLine"/> + <int Value="76" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> diff --git a/.codelite/PSP.tags b/.codelite/PSP.tags Binary files differindex 5029ea5..f833400 100644 --- a/.codelite/PSP.tags +++ b/.codelite/PSP.tags diff --git a/.codelite/compilation.db b/.codelite/compilation.db Binary files differindex d7a9493..eba4d38 100644 --- a/.codelite/compilation.db +++ b/.codelite/compilation.db diff --git a/.codelite/compile_commands.json b/.codelite/compile_commands.json index 84734aa..1fa0735 100644 --- a/.codelite/compile_commands.json +++ b/.codelite/compile_commands.json @@ -1,9 +1,9 @@ [{ "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", - "command": "C:/TDM-GCC-64/bin/g++.exe -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -I. -I. -MG -MP -MT./Release/ElectricCalculation.cpp.o -MF./Release/ElectricCalculation.cpp.o.d -MM ElectricCalculation.cpp", - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElectricCalculation.cpp" + "command": "C:/TDM-GCC-64/bin/g++.exe -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -I. -I. -MG -MP -MT./Release/Text.cpp.o -MF./Release/Text.cpp.o.d -MM Text.cpp", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Text.cpp" }, { "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", - "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/ElectricCalculation.cpp -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -o ./Release/ElectricCalculation.cpp.o -I. -I.", - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElectricCalculation.cpp" + "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/Text.cpp -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -o ./Release/Text.cpp.o -I. -I.", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Text.cpp" }]
\ No newline at end of file diff --git a/.codelite/refactoring.db b/.codelite/refactoring.db Binary files differindex 665b0bf..935c527 100644 --- a/.codelite/refactoring.db +++ b/.codelite/refactoring.db diff --git a/Project/ClassDiagram.dia b/Project/ClassDiagram.dia Binary files differnew file mode 100644 index 0000000..fc8f0ad --- /dev/null +++ b/Project/ClassDiagram.dia diff --git a/Project/ClassDiagram.dia~ b/Project/ClassDiagram.dia~ Binary files differnew file mode 100644 index 0000000..a522114 --- /dev/null +++ b/Project/ClassDiagram.dia~ diff --git a/Project/Element.h b/Project/Element.h index 672723f..f872267 100644 --- a/Project/Element.h +++ b/Project/Element.h @@ -124,11 +124,11 @@ class Element bool IsOnline() const { return m_online; } // Pure-virtuals methods virtual bool AddParent(Element* parent, wxPoint2DDouble position) = 0; - virtual void Draw(wxPoint2DDouble translation, double scale) const = 0; virtual bool Contains(wxPoint2DDouble position) const = 0; virtual bool Intersects(wxRect2DDouble rect) const = 0; // General methods + virtual void Draw(wxPoint2DDouble translation, double scale) const {}; virtual void Rotate(bool clockwise = true) {} virtual bool GetContextMenu(wxMenu& menu) { return false; } virtual void AddPoint(wxPoint2DDouble point) {} diff --git a/Project/Project.mk b/Project/Project.mk index 02c8ea2..350b273 100644 --- a/Project/Project.mk +++ b/Project/Project.mk @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=Thales -Date :=10/11/2016 +Date :=23/11/2016 CodeLitePath :="C:/Program Files/CodeLite" LinkerName :=C:/TDM-GCC-64/bin/g++.exe SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC @@ -64,10 +64,10 @@ AS := C:/TDM-GCC-64/bin/as.exe CodeLiteDir:=C:\Program Files\CodeLite WXWIN:=C:\wxWidgets-3.1.0 WXCFG:=gcc_dll\mswu -Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) \ - $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) \ - $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) \ - $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) +Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/Text.cpp$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) \ + $(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) \ + $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) \ + $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) @@ -108,6 +108,14 @@ $(IntermediateDirectory)/main.cpp$(PreprocessSuffix): main.cpp $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix): win_resources.rc $(RcCompilerName) -i "C:/Users/Thales/Documents/GitHub/PSP/Project/win_resources.rc" $(RcCmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(RcIncludePath) +$(IntermediateDirectory)/Text.cpp$(ObjectSuffix): Text.cpp $(IntermediateDirectory)/Text.cpp$(DependSuffix) + $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Text.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Text.cpp$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/Text.cpp$(DependSuffix): Text.cpp + @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Text.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Text.cpp$(DependSuffix) -MM Text.cpp + +$(IntermediateDirectory)/Text.cpp$(PreprocessSuffix): Text.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix)Text.cpp + $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix): ArtMetro.cpp $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ArtMetro.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IncludePath) $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix): ArtMetro.cpp @@ -116,6 +124,14 @@ $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix): ArtMetro.cpp $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix): ArtMetro.cpp $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix)ArtMetro.cpp +$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix): wxGLString.cpp $(IntermediateDirectory)/wxGLString.cpp$(DependSuffix) + $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/wxGLString.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IncludePath) +$(IntermediateDirectory)/wxGLString.cpp$(DependSuffix): wxGLString.cpp + @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/wxGLString.cpp$(DependSuffix) -MM wxGLString.cpp + +$(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix): wxGLString.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix)wxGLString.cpp + $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix): MainFrame.cpp $(IntermediateDirectory)/MainFrame.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrame.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IncludePath) $(IntermediateDirectory)/MainFrame.cpp$(DependSuffix): MainFrame.cpp diff --git a/Project/Project.project b/Project/Project.project index 93e6455..b0314e9 100644 --- a/Project/Project.project +++ b/Project/Project.project @@ -28,9 +28,11 @@ <File Name="ElectricCalculation.cpp"/> <File Name="PowerFlow.cpp"/> </VirtualDirectory> + <File Name="Text.cpp"/> </VirtualDirectory> <VirtualDirectory Name="view"> <File Name="ArtMetro.cpp"/> + <File Name="wxGLString.cpp"/> </VirtualDirectory> <VirtualDirectory Name="controller"> <File Name="MainFrame.cpp"/> @@ -70,9 +72,11 @@ <File Name="ElectricCalculation.h"/> <File Name="PowerFlow.h"/> </VirtualDirectory> + <File Name="Text.h"/> </VirtualDirectory> <VirtualDirectory Name="view"> <File Name="ArtMetro.h"/> + <File Name="wxGLString.h"/> </VirtualDirectory> <VirtualDirectory Name="controller"> <File Name="MainFrame.h"/> diff --git a/Project/Project.txt b/Project/Project.txt index 8815120..3a80728 100644 --- a/Project/Project.txt +++ b/Project/Project.txt @@ -1 +1 @@ -./Release/main.cpp.o ./Release/win_resources.rc.o ./Release/ArtMetro.cpp.o ./Release/MainFrame.cpp.o ./Release/Workspace.cpp.o ./Release/MainFrameBitmaps.cpp.o ./Release/WorkspaceBitmaps.cpp.o ./Release/BusFormBitmaps.cpp.o ./Release/ElementFormBitmaps.cpp.o ./Release/MainFrameBase.cpp.o ./Release/WorkspaceBase.cpp.o ./Release/ElementForm.cpp.o ./Release/Bus.cpp.o ./Release/Line.cpp.o ./Release/Transformer.cpp.o ./Release/Machines.cpp.o ./Release/SyncGenerator.cpp.o ./Release/IndMotor.cpp.o ./Release/Branch.cpp.o ./Release/SyncMotor.cpp.o ./Release/Shunt.cpp.o ./Release/Load.cpp.o ./Release/Inductor.cpp.o ./Release/Capacitor.cpp.o ./Release/Element.cpp.o ./Release/ElectricCalculation.cpp.o ./Release/PowerFlow.cpp.o ./Release/BusForm.cpp.o ./Release/GeneratorStabForm.cpp.o ./Release/LineForm.cpp.o ./Release/SwitchingForm.cpp.o ./Release/TransformerForm.cpp.o ./Release/LoadForm.cpp.o ./Release/ReactiveShuntElementForm.cpp.o ./Release/IndMotorForm.cpp.o ./Release/SyncMachineForm.cpp.o +./Release/main.cpp.o ./Release/win_resources.rc.o ./Release/Text.cpp.o ./Release/ArtMetro.cpp.o ./Release/wxGLString.cpp.o ./Release/MainFrame.cpp.o ./Release/Workspace.cpp.o ./Release/MainFrameBitmaps.cpp.o ./Release/WorkspaceBitmaps.cpp.o ./Release/BusFormBitmaps.cpp.o ./Release/ElementFormBitmaps.cpp.o ./Release/MainFrameBase.cpp.o ./Release/WorkspaceBase.cpp.o ./Release/ElementForm.cpp.o ./Release/Bus.cpp.o ./Release/Line.cpp.o ./Release/Transformer.cpp.o ./Release/Machines.cpp.o ./Release/SyncGenerator.cpp.o ./Release/IndMotor.cpp.o ./Release/Branch.cpp.o ./Release/SyncMotor.cpp.o ./Release/Shunt.cpp.o ./Release/Load.cpp.o ./Release/Inductor.cpp.o ./Release/Capacitor.cpp.o ./Release/Element.cpp.o ./Release/ElectricCalculation.cpp.o ./Release/PowerFlow.cpp.o ./Release/BusForm.cpp.o ./Release/GeneratorStabForm.cpp.o ./Release/LineForm.cpp.o ./Release/SwitchingForm.cpp.o ./Release/TransformerForm.cpp.o ./Release/LoadForm.cpp.o ./Release/ReactiveShuntElementForm.cpp.o ./Release/IndMotorForm.cpp.o ./Release/SyncMachineForm.cpp.o diff --git a/Project/Release/Branch.cpp.o b/Project/Release/Branch.cpp.o Binary files differindex 098ca04..374429b 100644 --- a/Project/Release/Branch.cpp.o +++ b/Project/Release/Branch.cpp.o diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o Binary files differindex d26c1c8..03402fd 100644 --- a/Project/Release/Bus.cpp.o +++ b/Project/Release/Bus.cpp.o diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o Binary files differindex 9554b8e..3cd8e8f 100644 --- a/Project/Release/Capacitor.cpp.o +++ b/Project/Release/Capacitor.cpp.o diff --git a/Project/Release/ElectricCalculation.cpp.o b/Project/Release/ElectricCalculation.cpp.o Binary files differindex bcf3329..79d5b45 100644 --- a/Project/Release/ElectricCalculation.cpp.o +++ b/Project/Release/ElectricCalculation.cpp.o diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o Binary files differindex b4b995e..99f0e28 100644 --- a/Project/Release/Element.cpp.o +++ b/Project/Release/Element.cpp.o diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o Binary files differindex 457e288..4517019 100644 --- a/Project/Release/IndMotor.cpp.o +++ b/Project/Release/IndMotor.cpp.o diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o Binary files differindex 574b196..029ea12 100644 --- a/Project/Release/Inductor.cpp.o +++ b/Project/Release/Inductor.cpp.o diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o Binary files differindex fa75f95..c1a688c 100644 --- a/Project/Release/Line.cpp.o +++ b/Project/Release/Line.cpp.o diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o Binary files differindex dcb917f..8a96a09 100644 --- a/Project/Release/Load.cpp.o +++ b/Project/Release/Load.cpp.o diff --git a/Project/Release/Machines.cpp.o b/Project/Release/Machines.cpp.o Binary files differindex cba99a6..78e4dd9 100644 --- a/Project/Release/Machines.cpp.o +++ b/Project/Release/Machines.cpp.o diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o Binary files differindex 14a4801..2b8cc1a 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 74c25d7..02fc6d6 100644 --- a/Project/Release/PSP-UFU.exe +++ b/Project/Release/PSP-UFU.exe diff --git a/Project/Release/Shunt.cpp.o b/Project/Release/Shunt.cpp.o Binary files differindex 475aad5..e898859 100644 --- a/Project/Release/Shunt.cpp.o +++ b/Project/Release/Shunt.cpp.o diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o Binary files differindex de9598c..d0c6b6e 100644 --- a/Project/Release/SyncGenerator.cpp.o +++ b/Project/Release/SyncGenerator.cpp.o diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o Binary files differindex 9c9dc33..1d035f2 100644 --- a/Project/Release/SyncMotor.cpp.o +++ b/Project/Release/SyncMotor.cpp.o diff --git a/Project/Release/Text.cpp.o b/Project/Release/Text.cpp.o Binary files differnew file mode 100644 index 0000000..ae85016 --- /dev/null +++ b/Project/Release/Text.cpp.o diff --git a/Project/Release/Text.cpp.o.d b/Project/Release/Text.cpp.o.d new file mode 100644 index 0000000..7f1d70f --- /dev/null +++ b/Project/Release/Text.cpp.o.d @@ -0,0 +1,884 @@ +Release/Text.cpp.o: Text.cpp Text.h Element.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 \ + C:/wxWidgets-3.1.0/include/wx/geometry.h \ + C:/wxWidgets-3.1.0/include/wx/menu.h \ + C:/wxWidgets-3.1.0/include/wx/menuitem.h \ + C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \ + C:/wxWidgets-3.1.0/include/wx/bitmap.h \ + C:/wxWidgets-3.1.0/include/wx/image.h \ + C:/wxWidgets-3.1.0/include/wx/stream.h \ + C:/wxWidgets-3.1.0/include/wx/imagbmp.h \ + C:/wxWidgets-3.1.0/include/wx/imagpng.h \ + C:/wxWidgets-3.1.0/include/wx/imaggif.h \ + C:/wxWidgets-3.1.0/include/wx/imagpcx.h \ + C:/wxWidgets-3.1.0/include/wx/imagjpeg.h \ + C:/wxWidgets-3.1.0/include/wx/imagtga.h \ + C:/wxWidgets-3.1.0/include/wx/imagtiff.h \ + C:/wxWidgets-3.1.0/include/wx/imagpnm.h \ + C:/wxWidgets-3.1.0/include/wx/imagxpm.h \ + C:/wxWidgets-3.1.0/include/wx/imagiff.h \ + C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h \ + C:/wxWidgets-3.1.0/include/wx/ownerdrw.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \ + C:/wxWidgets-3.1.0/include/wx/msw/menu.h \ + C:/wxWidgets-3.1.0/include/wx/log.h \ + C:/wxWidgets-3.1.0/include/wx/generic/logg.h wxGLString.h \ + C:/wxWidgets-3.1.0/include/wx/wx.h C:/wxWidgets-3.1.0/include/wx/hash.h \ + C:/wxWidgets-3.1.0/include/wx/app.h \ + C:/wxWidgets-3.1.0/include/wx/eventfilter.h \ + C:/wxWidgets-3.1.0/include/wx/build.h \ + C:/wxWidgets-3.1.0/include/wx/cmdargs.h \ + C:/wxWidgets-3.1.0/include/wx/init.h \ + C:/wxWidgets-3.1.0/include/wx/msw/init.h \ + C:/wxWidgets-3.1.0/include/wx/msw/app.h \ + C:/wxWidgets-3.1.0/include/wx/stopwatch.h \ + C:/wxWidgets-3.1.0/include/wx/time.h \ + C:/wxWidgets-3.1.0/include/wx/timer.h \ + C:/wxWidgets-3.1.0/include/wx/module.h \ + C:/wxWidgets-3.1.0/include/wx/wxcrtvararg.h \ + C:/wxWidgets-3.1.0/include/wx/frame.h \ + C:/wxWidgets-3.1.0/include/wx/statusbr.h \ + C:/wxWidgets-3.1.0/include/wx/control.h \ + C:/wxWidgets-3.1.0/include/wx/msw/control.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h \ + C:/wxWidgets-3.1.0/include/wx/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/msw/frame.h \ + C:/wxWidgets-3.1.0/include/wx/dc.h C:/wxWidgets-3.1.0/include/wx/brush.h \ + C:/wxWidgets-3.1.0/include/wx/msw/brush.h \ + C:/wxWidgets-3.1.0/include/wx/pen.h \ + C:/wxWidgets-3.1.0/include/wx/msw/pen.h \ + C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h \ + C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h \ + C:/wxWidgets-3.1.0/include/wx/dcclient.h \ + C:/wxWidgets-3.1.0/include/wx/dcmemory.h \ + C:/wxWidgets-3.1.0/include/wx/dcprint.h \ + C:/wxWidgets-3.1.0/include/wx/dcscreen.h \ + C:/wxWidgets-3.1.0/include/wx/button.h \ + C:/wxWidgets-3.1.0/include/wx/anybutton.h \ + C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h \ + C:/wxWidgets-3.1.0/include/wx/msw/button.h \ + C:/wxWidgets-3.1.0/include/wx/dataobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \ + C:/wxWidgets-3.1.0/include/wx/ctrlsub.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h \ + C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h \ + C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h \ + C:/wxWidgets-3.1.0/include/wx/checkbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h \ + C:/wxWidgets-3.1.0/include/wx/checklst.h \ + C:/wxWidgets-3.1.0/include/wx/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/checklst.h \ + C:/wxWidgets-3.1.0/include/wx/choice.h \ + C:/wxWidgets-3.1.0/include/wx/msw/choice.h \ + C:/wxWidgets-3.1.0/include/wx/scrolbar.h \ + C:/wxWidgets-3.1.0/include/wx/msw/scrolbar.h \ + C:/wxWidgets-3.1.0/include/wx/stattext.h \ + C:/wxWidgets-3.1.0/include/wx/msw/stattext.h \ + C:/wxWidgets-3.1.0/include/wx/statbmp.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statbmp.h \ + C:/wxWidgets-3.1.0/include/wx/statbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statbox.h \ + C:/wxWidgets-3.1.0/include/wx/radiobox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/radiobox.h \ + C:/wxWidgets-3.1.0/include/wx/radiobut.h \ + C:/wxWidgets-3.1.0/include/wx/msw/radiobut.h \ + C:/wxWidgets-3.1.0/include/wx/textctrl.h \ + C:/wxWidgets-3.1.0/include/wx/textentry.h \ + C:/wxWidgets-3.1.0/include/wx/msw/textentry.h \ + C:/wxWidgets-3.1.0/include/wx/ioswrap.h \ + C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h \ + C:/wxWidgets-3.1.0/include/wx/slider.h \ + C:/wxWidgets-3.1.0/include/wx/msw/slider.h \ + C:/wxWidgets-3.1.0/include/wx/gauge.h \ + C:/wxWidgets-3.1.0/include/wx/msw/gauge.h \ + C:/wxWidgets-3.1.0/include/wx/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/recguard.h \ + C:/wxWidgets-3.1.0/include/wx/dirdlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/dirdlg.h \ + C:/wxWidgets-3.1.0/include/wx/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/tbarbase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/imaglist.h \ + C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h \ + C:/wxWidgets-3.1.0/include/wx/combobox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/combobox.h \ + C:/wxWidgets-3.1.0/include/wx/layout.h \ + C:/wxWidgets-3.1.0/include/wx/sizer.h \ + C:/wxWidgets-3.1.0/include/wx/choicdlg.h \ + C:/wxWidgets-3.1.0/include/wx/generic/choicdgg.h \ + C:/wxWidgets-3.1.0/include/wx/textdlg.h \ + C:/wxWidgets-3.1.0/include/wx/generic/textdlgg.h \ + C:/wxWidgets-3.1.0/include/wx/valtext.h \ + C:/wxWidgets-3.1.0/include/wx/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/mdi.h \ + C:/wxWidgets-3.1.0/include/wx/msw/mdi.h Bus.h BusForm.h ElementForm.h \ + C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h \ + C:/wxWidgets-3.1.0/include/wx/filesys.h \ + C:/wxWidgets-3.1.0/include/wx/filename.h \ + C:/wxWidgets-3.1.0/include/wx/file.h \ + C:/wxWidgets-3.1.0/include/wx/convauto.h \ + C:/wxWidgets-3.1.0/include/wx/artprov.h \ + C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h \ + C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h \ + C:/wxWidgets-3.1.0/include/wx/notebook.h \ + C:/wxWidgets-3.1.0/include/wx/bookctrl.h \ + C:/wxWidgets-3.1.0/include/wx/withimages.h \ + C:/wxWidgets-3.1.0/include/wx/msw/notebook.h \ + C:/wxWidgets-3.1.0/include/wx/statline.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statline.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/property.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h \ + C:/wxWidgets-3.1.0/include/wx/hashset.h \ + C:/wxWidgets-3.1.0/include/wx/tokenzr.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/props.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h \ + C:/wxWidgets-3.1.0/include/wx/headerctrl.h \ + C:/wxWidgets-3.1.0/include/wx/headercol.h \ + C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h \ + C:/wxWidgets-3.1.0/include/wx/spinbutt.h \ + C:/wxWidgets-3.1.0/include/wx/range.h \ + C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h \ + C:/wxWidgets-3.1.0/include/wx/listctrl.h \ + C:/wxWidgets-3.1.0/include/wx/listbase.h \ + C:/wxWidgets-3.1.0/include/wx/systhemectrl.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h \ + C:/wxWidgets-3.1.0/include/wx/persist.h \ + C:/wxWidgets-3.1.0/include/wx/confbase.h \ + C:/wxWidgets-3.1.0/include/wx/base64.h \ + C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h \ + C:/wxWidgets-3.1.0/include/wx/persist/window.h \ + C:/wxWidgets-3.1.0/include/wx/display.h \ + C:/wxWidgets-3.1.0/include/wx/vidmode.h \ + C:/wxWidgets-3.1.0/include/wx/persist/bookctrl.h \ + C:/wxWidgets-3.1.0/include/wx/persist/treebook.h \ + C:/wxWidgets-3.1.0/include/wx/treebook.h \ + C:/wxWidgets-3.1.0/include/wx/treectrl.h \ + C:/wxWidgets-3.1.0/include/wx/treebase.h \ + C:/wxWidgets-3.1.0/include/wx/itemid.h \ + C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h Line.h LineForm.h Branch.h \ + Transformer.h SyncGenerator.h Machines.h IndMotor.h SyncMotor.h Load.h \ + LoadForm.h Shunt.h Inductor.h Capacitor.h + +Text.h: + +Element.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: + +C:/wxWidgets-3.1.0/include/wx/geometry.h: + +C:/wxWidgets-3.1.0/include/wx/menu.h: + +C:/wxWidgets-3.1.0/include/wx/menuitem.h: + +C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h: + +C:/wxWidgets-3.1.0/include/wx/bitmap.h: + +C:/wxWidgets-3.1.0/include/wx/image.h: + +C:/wxWidgets-3.1.0/include/wx/stream.h: + +C:/wxWidgets-3.1.0/include/wx/imagbmp.h: + +C:/wxWidgets-3.1.0/include/wx/imagpng.h: + +C:/wxWidgets-3.1.0/include/wx/imaggif.h: + +C:/wxWidgets-3.1.0/include/wx/imagpcx.h: + +C:/wxWidgets-3.1.0/include/wx/imagjpeg.h: + +C:/wxWidgets-3.1.0/include/wx/imagtga.h: + +C:/wxWidgets-3.1.0/include/wx/imagtiff.h: + +C:/wxWidgets-3.1.0/include/wx/imagpnm.h: + +C:/wxWidgets-3.1.0/include/wx/imagxpm.h: + +C:/wxWidgets-3.1.0/include/wx/imagiff.h: + +C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h: + +C:/wxWidgets-3.1.0/include/wx/ownerdrw.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h: + +C:/wxWidgets-3.1.0/include/wx/msw/menu.h: + +C:/wxWidgets-3.1.0/include/wx/log.h: + +C:/wxWidgets-3.1.0/include/wx/generic/logg.h: + +wxGLString.h: + +C:/wxWidgets-3.1.0/include/wx/wx.h: + +C:/wxWidgets-3.1.0/include/wx/hash.h: + +C:/wxWidgets-3.1.0/include/wx/app.h: + +C:/wxWidgets-3.1.0/include/wx/eventfilter.h: + +C:/wxWidgets-3.1.0/include/wx/build.h: + +C:/wxWidgets-3.1.0/include/wx/cmdargs.h: + +C:/wxWidgets-3.1.0/include/wx/init.h: + +C:/wxWidgets-3.1.0/include/wx/msw/init.h: + +C:/wxWidgets-3.1.0/include/wx/msw/app.h: + +C:/wxWidgets-3.1.0/include/wx/stopwatch.h: + +C:/wxWidgets-3.1.0/include/wx/time.h: + +C:/wxWidgets-3.1.0/include/wx/timer.h: + +C:/wxWidgets-3.1.0/include/wx/module.h: + +C:/wxWidgets-3.1.0/include/wx/wxcrtvararg.h: + +C:/wxWidgets-3.1.0/include/wx/frame.h: + +C:/wxWidgets-3.1.0/include/wx/statusbr.h: + +C:/wxWidgets-3.1.0/include/wx/control.h: + +C:/wxWidgets-3.1.0/include/wx/msw/control.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h: + +C:/wxWidgets-3.1.0/include/wx/tooltip.h: + +C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h: + +C:/wxWidgets-3.1.0/include/wx/msw/frame.h: + +C:/wxWidgets-3.1.0/include/wx/dc.h: + +C:/wxWidgets-3.1.0/include/wx/brush.h: + +C:/wxWidgets-3.1.0/include/wx/msw/brush.h: + +C:/wxWidgets-3.1.0/include/wx/pen.h: + +C:/wxWidgets-3.1.0/include/wx/msw/pen.h: + +C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h: + +C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h: + +C:/wxWidgets-3.1.0/include/wx/dcclient.h: + +C:/wxWidgets-3.1.0/include/wx/dcmemory.h: + +C:/wxWidgets-3.1.0/include/wx/dcprint.h: + +C:/wxWidgets-3.1.0/include/wx/dcscreen.h: + +C:/wxWidgets-3.1.0/include/wx/button.h: + +C:/wxWidgets-3.1.0/include/wx/anybutton.h: + +C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h: + +C:/wxWidgets-3.1.0/include/wx/msw/button.h: + +C:/wxWidgets-3.1.0/include/wx/dataobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h: + +C:/wxWidgets-3.1.0/include/wx/ctrlsub.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h: + +C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h: + +C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h: + +C:/wxWidgets-3.1.0/include/wx/checkbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h: + +C:/wxWidgets-3.1.0/include/wx/checklst.h: + +C:/wxWidgets-3.1.0/include/wx/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/checklst.h: + +C:/wxWidgets-3.1.0/include/wx/choice.h: + +C:/wxWidgets-3.1.0/include/wx/msw/choice.h: + +C:/wxWidgets-3.1.0/include/wx/scrolbar.h: + +C:/wxWidgets-3.1.0/include/wx/msw/scrolbar.h: + +C:/wxWidgets-3.1.0/include/wx/stattext.h: + +C:/wxWidgets-3.1.0/include/wx/msw/stattext.h: + +C:/wxWidgets-3.1.0/include/wx/statbmp.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statbmp.h: + +C:/wxWidgets-3.1.0/include/wx/statbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statbox.h: + +C:/wxWidgets-3.1.0/include/wx/radiobox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/radiobox.h: + +C:/wxWidgets-3.1.0/include/wx/radiobut.h: + +C:/wxWidgets-3.1.0/include/wx/msw/radiobut.h: + +C:/wxWidgets-3.1.0/include/wx/textctrl.h: + +C:/wxWidgets-3.1.0/include/wx/textentry.h: + +C:/wxWidgets-3.1.0/include/wx/msw/textentry.h: + +C:/wxWidgets-3.1.0/include/wx/ioswrap.h: + +C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h: + +C:/wxWidgets-3.1.0/include/wx/slider.h: + +C:/wxWidgets-3.1.0/include/wx/msw/slider.h: + +C:/wxWidgets-3.1.0/include/wx/gauge.h: + +C:/wxWidgets-3.1.0/include/wx/msw/gauge.h: + +C:/wxWidgets-3.1.0/include/wx/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/recguard.h: + +C:/wxWidgets-3.1.0/include/wx/dirdlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/dirdlg.h: + +C:/wxWidgets-3.1.0/include/wx/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/tbarbase.h: + +C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/imaglist.h: + +C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h: + +C:/wxWidgets-3.1.0/include/wx/combobox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/combobox.h: + +C:/wxWidgets-3.1.0/include/wx/layout.h: + +C:/wxWidgets-3.1.0/include/wx/sizer.h: + +C:/wxWidgets-3.1.0/include/wx/choicdlg.h: + +C:/wxWidgets-3.1.0/include/wx/generic/choicdgg.h: + +C:/wxWidgets-3.1.0/include/wx/textdlg.h: + +C:/wxWidgets-3.1.0/include/wx/generic/textdlgg.h: + +C:/wxWidgets-3.1.0/include/wx/valtext.h: + +C:/wxWidgets-3.1.0/include/wx/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/mdi.h: + +C:/wxWidgets-3.1.0/include/wx/msw/mdi.h: + +Bus.h: + +BusForm.h: + +ElementForm.h: + +C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h: + +C:/wxWidgets-3.1.0/include/wx/filesys.h: + +C:/wxWidgets-3.1.0/include/wx/filename.h: + +C:/wxWidgets-3.1.0/include/wx/file.h: + +C:/wxWidgets-3.1.0/include/wx/convauto.h: + +C:/wxWidgets-3.1.0/include/wx/artprov.h: + +C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h: + +C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h: + +C:/wxWidgets-3.1.0/include/wx/notebook.h: + +C:/wxWidgets-3.1.0/include/wx/bookctrl.h: + +C:/wxWidgets-3.1.0/include/wx/withimages.h: + +C:/wxWidgets-3.1.0/include/wx/msw/notebook.h: + +C:/wxWidgets-3.1.0/include/wx/statline.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statline.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/property.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h: + +C:/wxWidgets-3.1.0/include/wx/hashset.h: + +C:/wxWidgets-3.1.0/include/wx/tokenzr.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/props.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h: + +C:/wxWidgets-3.1.0/include/wx/headerctrl.h: + +C:/wxWidgets-3.1.0/include/wx/headercol.h: + +C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h: + +C:/wxWidgets-3.1.0/include/wx/spinbutt.h: + +C:/wxWidgets-3.1.0/include/wx/range.h: + +C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h: + +C:/wxWidgets-3.1.0/include/wx/listctrl.h: + +C:/wxWidgets-3.1.0/include/wx/listbase.h: + +C:/wxWidgets-3.1.0/include/wx/systhemectrl.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h: + +C:/wxWidgets-3.1.0/include/wx/persist.h: + +C:/wxWidgets-3.1.0/include/wx/confbase.h: + +C:/wxWidgets-3.1.0/include/wx/base64.h: + +C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h: + +C:/wxWidgets-3.1.0/include/wx/persist/window.h: + +C:/wxWidgets-3.1.0/include/wx/display.h: + +C:/wxWidgets-3.1.0/include/wx/vidmode.h: + +C:/wxWidgets-3.1.0/include/wx/persist/bookctrl.h: + +C:/wxWidgets-3.1.0/include/wx/persist/treebook.h: + +C:/wxWidgets-3.1.0/include/wx/treebook.h: + +C:/wxWidgets-3.1.0/include/wx/treectrl.h: + +C:/wxWidgets-3.1.0/include/wx/treebase.h: + +C:/wxWidgets-3.1.0/include/wx/itemid.h: + +C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h: + +Line.h: + +LineForm.h: + +Branch.h: + +Transformer.h: + +SyncGenerator.h: + +Machines.h: + +IndMotor.h: + +SyncMotor.h: + +Load.h: + +LoadForm.h: + +Shunt.h: + +Inductor.h: + +Capacitor.h: diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o Binary files differindex 8411f2c..d4555cd 100644 --- a/Project/Release/Transformer.cpp.o +++ b/Project/Release/Transformer.cpp.o diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o Binary files differindex 94d2379..f384585 100644 --- a/Project/Release/Workspace.cpp.o +++ b/Project/Release/Workspace.cpp.o diff --git a/Project/Release/Workspace.cpp.o.d b/Project/Release/Workspace.cpp.o.d index 0fe984b..580e64d 100644 --- a/Project/Release/Workspace.cpp.o.d +++ b/Project/Release/Workspace.cpp.o.d @@ -239,7 +239,50 @@ Release/Workspace.cpp.o: Workspace.cpp Workspace.h \ C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \ C:/wxWidgets-3.1.0/include/wx/msw/menu.h Line.h LineForm.h Branch.h \ Transformer.h SyncGenerator.h Machines.h IndMotor.h SyncMotor.h Load.h \ - LoadForm.h Shunt.h Inductor.h Capacitor.h PowerFlow.h \ + LoadForm.h Shunt.h Inductor.h Capacitor.h Text.h wxGLString.h \ + C:/wxWidgets-3.1.0/include/wx/wx.h C:/wxWidgets-3.1.0/include/wx/hash.h \ + C:/wxWidgets-3.1.0/include/wx/stopwatch.h \ + C:/wxWidgets-3.1.0/include/wx/timer.h \ + C:/wxWidgets-3.1.0/include/wx/module.h \ + C:/wxWidgets-3.1.0/include/wx/wxcrtvararg.h \ + C:/wxWidgets-3.1.0/include/wx/frame.h \ + C:/wxWidgets-3.1.0/include/wx/msw/frame.h \ + C:/wxWidgets-3.1.0/include/wx/dcmemory.h \ + C:/wxWidgets-3.1.0/include/wx/dcprint.h \ + C:/wxWidgets-3.1.0/include/wx/dcscreen.h \ + C:/wxWidgets-3.1.0/include/wx/dataobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \ + C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h \ + C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h \ + C:/wxWidgets-3.1.0/include/wx/checklst.h \ + C:/wxWidgets-3.1.0/include/wx/msw/checklst.h \ + C:/wxWidgets-3.1.0/include/wx/scrolbar.h \ + C:/wxWidgets-3.1.0/include/wx/msw/scrolbar.h \ + C:/wxWidgets-3.1.0/include/wx/statbmp.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statbmp.h \ + C:/wxWidgets-3.1.0/include/wx/radiobox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/radiobox.h \ + C:/wxWidgets-3.1.0/include/wx/radiobut.h \ + C:/wxWidgets-3.1.0/include/wx/msw/radiobut.h \ + C:/wxWidgets-3.1.0/include/wx/slider.h \ + C:/wxWidgets-3.1.0/include/wx/msw/slider.h \ + C:/wxWidgets-3.1.0/include/wx/gauge.h \ + C:/wxWidgets-3.1.0/include/wx/msw/gauge.h \ + C:/wxWidgets-3.1.0/include/wx/dirdlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/dirdlg.h \ + C:/wxWidgets-3.1.0/include/wx/combobox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/combobox.h \ + C:/wxWidgets-3.1.0/include/wx/layout.h \ + C:/wxWidgets-3.1.0/include/wx/choicdlg.h \ + C:/wxWidgets-3.1.0/include/wx/generic/choicdgg.h \ + C:/wxWidgets-3.1.0/include/wx/textdlg.h \ + C:/wxWidgets-3.1.0/include/wx/generic/textdlgg.h \ + C:/wxWidgets-3.1.0/include/wx/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/mdi.h \ + C:/wxWidgets-3.1.0/include/wx/msw/mdi.h PowerFlow.h \ ElectricCalculation.h Workspace.h: @@ -760,6 +803,98 @@ Inductor.h: Capacitor.h: +Text.h: + +wxGLString.h: + +C:/wxWidgets-3.1.0/include/wx/wx.h: + +C:/wxWidgets-3.1.0/include/wx/hash.h: + +C:/wxWidgets-3.1.0/include/wx/stopwatch.h: + +C:/wxWidgets-3.1.0/include/wx/timer.h: + +C:/wxWidgets-3.1.0/include/wx/module.h: + +C:/wxWidgets-3.1.0/include/wx/wxcrtvararg.h: + +C:/wxWidgets-3.1.0/include/wx/frame.h: + +C:/wxWidgets-3.1.0/include/wx/msw/frame.h: + +C:/wxWidgets-3.1.0/include/wx/dcmemory.h: + +C:/wxWidgets-3.1.0/include/wx/dcprint.h: + +C:/wxWidgets-3.1.0/include/wx/dcscreen.h: + +C:/wxWidgets-3.1.0/include/wx/dataobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h: + +C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h: + +C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h: + +C:/wxWidgets-3.1.0/include/wx/checklst.h: + +C:/wxWidgets-3.1.0/include/wx/msw/checklst.h: + +C:/wxWidgets-3.1.0/include/wx/scrolbar.h: + +C:/wxWidgets-3.1.0/include/wx/msw/scrolbar.h: + +C:/wxWidgets-3.1.0/include/wx/statbmp.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statbmp.h: + +C:/wxWidgets-3.1.0/include/wx/radiobox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/radiobox.h: + +C:/wxWidgets-3.1.0/include/wx/radiobut.h: + +C:/wxWidgets-3.1.0/include/wx/msw/radiobut.h: + +C:/wxWidgets-3.1.0/include/wx/slider.h: + +C:/wxWidgets-3.1.0/include/wx/msw/slider.h: + +C:/wxWidgets-3.1.0/include/wx/gauge.h: + +C:/wxWidgets-3.1.0/include/wx/msw/gauge.h: + +C:/wxWidgets-3.1.0/include/wx/dirdlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/dirdlg.h: + +C:/wxWidgets-3.1.0/include/wx/combobox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/combobox.h: + +C:/wxWidgets-3.1.0/include/wx/layout.h: + +C:/wxWidgets-3.1.0/include/wx/choicdlg.h: + +C:/wxWidgets-3.1.0/include/wx/generic/choicdgg.h: + +C:/wxWidgets-3.1.0/include/wx/textdlg.h: + +C:/wxWidgets-3.1.0/include/wx/generic/textdlgg.h: + +C:/wxWidgets-3.1.0/include/wx/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/mdi.h: + +C:/wxWidgets-3.1.0/include/wx/msw/mdi.h: + PowerFlow.h: ElectricCalculation.h: diff --git a/Project/Release/wxGLString.cpp.o b/Project/Release/wxGLString.cpp.o Binary files differnew file mode 100644 index 0000000..a64ae4d --- /dev/null +++ b/Project/Release/wxGLString.cpp.o diff --git a/Project/Release/wxGLString.cpp.o.d b/Project/Release/wxGLString.cpp.o.d new file mode 100644 index 0000000..f88a2b2 --- /dev/null +++ b/Project/Release/wxGLString.cpp.o.d @@ -0,0 +1,699 @@ +Release/wxGLString.cpp.o: wxGLString.cpp wxGLString.h \ + C:/wxWidgets-3.1.0/include/wx/wx.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/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/dynarray.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/hash.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/arrstr.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/log.h \ + C:/wxWidgets-3.1.0/include/wx/thread.h \ + C:/wxWidgets-3.1.0/include/wx/generic/logg.h \ + C:/wxWidgets-3.1.0/include/wx/event.h \ + C:/wxWidgets-3.1.0/include/wx/clntdata.h \ + C:/wxWidgets-3.1.0/include/wx/gdicmn.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/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/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/app.h \ + C:/wxWidgets-3.1.0/include/wx/eventfilter.h \ + C:/wxWidgets-3.1.0/include/wx/build.h \ + C:/wxWidgets-3.1.0/include/wx/cmdargs.h \ + C:/wxWidgets-3.1.0/include/wx/init.h \ + C:/wxWidgets-3.1.0/include/wx/msw/init.h \ + C:/wxWidgets-3.1.0/include/wx/msw/wrapwin.h \ + C:/wxWidgets-3.1.0/include/wx/msw/app.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/stream.h \ + C:/wxWidgets-3.1.0/include/wx/stopwatch.h \ + C:/wxWidgets-3.1.0/include/wx/time.h \ + C:/wxWidgets-3.1.0/include/wx/timer.h \ + C:/wxWidgets-3.1.0/include/wx/module.h \ + C:/wxWidgets-3.1.0/include/wx/wxcrtvararg.h \ + C:/wxWidgets-3.1.0/include/wx/window.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/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/containr.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/toplevel.h \ + C:/wxWidgets-3.1.0/include/wx/nonownedwnd.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/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/frame.h \ + C:/wxWidgets-3.1.0/include/wx/statusbr.h \ + C:/wxWidgets-3.1.0/include/wx/control.h \ + C:/wxWidgets-3.1.0/include/wx/msw/control.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h \ + C:/wxWidgets-3.1.0/include/wx/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/msw/frame.h \ + C:/wxWidgets-3.1.0/include/wx/bitmap.h \ + C:/wxWidgets-3.1.0/include/wx/image.h \ + C:/wxWidgets-3.1.0/include/wx/imagbmp.h \ + C:/wxWidgets-3.1.0/include/wx/imagpng.h \ + C:/wxWidgets-3.1.0/include/wx/imaggif.h \ + C:/wxWidgets-3.1.0/include/wx/imagpcx.h \ + C:/wxWidgets-3.1.0/include/wx/imagjpeg.h \ + C:/wxWidgets-3.1.0/include/wx/imagtga.h \ + C:/wxWidgets-3.1.0/include/wx/imagtiff.h \ + C:/wxWidgets-3.1.0/include/wx/imagpnm.h \ + C:/wxWidgets-3.1.0/include/wx/imagxpm.h \ + C:/wxWidgets-3.1.0/include/wx/imagiff.h \ + C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h \ + C:/wxWidgets-3.1.0/include/wx/dc.h C:/wxWidgets-3.1.0/include/wx/brush.h \ + C:/wxWidgets-3.1.0/include/wx/msw/brush.h \ + C:/wxWidgets-3.1.0/include/wx/pen.h \ + C:/wxWidgets-3.1.0/include/wx/msw/pen.h \ + C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h \ + C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h \ + C:/wxWidgets-3.1.0/include/wx/geometry.h \ + C:/wxWidgets-3.1.0/include/wx/dcclient.h \ + C:/wxWidgets-3.1.0/include/wx/dcmemory.h \ + C:/wxWidgets-3.1.0/include/wx/dcprint.h \ + C:/wxWidgets-3.1.0/include/wx/dcscreen.h \ + C:/wxWidgets-3.1.0/include/wx/button.h \ + C:/wxWidgets-3.1.0/include/wx/anybutton.h \ + C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h \ + C:/wxWidgets-3.1.0/include/wx/msw/button.h \ + C:/wxWidgets-3.1.0/include/wx/menuitem.h \ + C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \ + C:/wxWidgets-3.1.0/include/wx/ownerdrw.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \ + C:/wxWidgets-3.1.0/include/wx/menu.h \ + C:/wxWidgets-3.1.0/include/wx/msw/menu.h \ + C:/wxWidgets-3.1.0/include/wx/dialog.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/dialog.h \ + C:/wxWidgets-3.1.0/include/wx/msgdlg.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 \ + C:/wxWidgets-3.1.0/include/wx/dataobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \ + C:/wxWidgets-3.1.0/include/wx/ctrlsub.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h \ + C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h \ + C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h \ + C:/wxWidgets-3.1.0/include/wx/checkbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h \ + C:/wxWidgets-3.1.0/include/wx/checklst.h \ + C:/wxWidgets-3.1.0/include/wx/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/checklst.h \ + C:/wxWidgets-3.1.0/include/wx/choice.h \ + C:/wxWidgets-3.1.0/include/wx/msw/choice.h \ + C:/wxWidgets-3.1.0/include/wx/scrolbar.h \ + C:/wxWidgets-3.1.0/include/wx/msw/scrolbar.h \ + C:/wxWidgets-3.1.0/include/wx/stattext.h \ + C:/wxWidgets-3.1.0/include/wx/msw/stattext.h \ + C:/wxWidgets-3.1.0/include/wx/statbmp.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statbmp.h \ + C:/wxWidgets-3.1.0/include/wx/statbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statbox.h \ + C:/wxWidgets-3.1.0/include/wx/radiobox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/radiobox.h \ + C:/wxWidgets-3.1.0/include/wx/radiobut.h \ + C:/wxWidgets-3.1.0/include/wx/msw/radiobut.h \ + C:/wxWidgets-3.1.0/include/wx/textctrl.h \ + C:/wxWidgets-3.1.0/include/wx/textentry.h \ + C:/wxWidgets-3.1.0/include/wx/msw/textentry.h \ + C:/wxWidgets-3.1.0/include/wx/ioswrap.h \ + C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h \ + C:/wxWidgets-3.1.0/include/wx/slider.h \ + C:/wxWidgets-3.1.0/include/wx/msw/slider.h \ + C:/wxWidgets-3.1.0/include/wx/gauge.h \ + C:/wxWidgets-3.1.0/include/wx/msw/gauge.h \ + C:/wxWidgets-3.1.0/include/wx/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/recguard.h \ + C:/wxWidgets-3.1.0/include/wx/dirdlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/dirdlg.h \ + C:/wxWidgets-3.1.0/include/wx/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/tbarbase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/imaglist.h \ + C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h \ + C:/wxWidgets-3.1.0/include/wx/combobox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/combobox.h \ + C:/wxWidgets-3.1.0/include/wx/layout.h \ + C:/wxWidgets-3.1.0/include/wx/sizer.h \ + C:/wxWidgets-3.1.0/include/wx/choicdlg.h \ + C:/wxWidgets-3.1.0/include/wx/generic/choicdgg.h \ + C:/wxWidgets-3.1.0/include/wx/textdlg.h \ + C:/wxWidgets-3.1.0/include/wx/generic/textdlgg.h \ + C:/wxWidgets-3.1.0/include/wx/valtext.h \ + C:/wxWidgets-3.1.0/include/wx/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/mdi.h \ + C:/wxWidgets-3.1.0/include/wx/msw/mdi.h + +wxGLString.h: + +C:/wxWidgets-3.1.0/include/wx/wx.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/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/dynarray.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/hash.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/arrstr.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/log.h: + +C:/wxWidgets-3.1.0/include/wx/thread.h: + +C:/wxWidgets-3.1.0/include/wx/generic/logg.h: + +C:/wxWidgets-3.1.0/include/wx/event.h: + +C:/wxWidgets-3.1.0/include/wx/clntdata.h: + +C:/wxWidgets-3.1.0/include/wx/gdicmn.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/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/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/app.h: + +C:/wxWidgets-3.1.0/include/wx/eventfilter.h: + +C:/wxWidgets-3.1.0/include/wx/build.h: + +C:/wxWidgets-3.1.0/include/wx/cmdargs.h: + +C:/wxWidgets-3.1.0/include/wx/init.h: + +C:/wxWidgets-3.1.0/include/wx/msw/init.h: + +C:/wxWidgets-3.1.0/include/wx/msw/wrapwin.h: + +C:/wxWidgets-3.1.0/include/wx/msw/app.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/stream.h: + +C:/wxWidgets-3.1.0/include/wx/stopwatch.h: + +C:/wxWidgets-3.1.0/include/wx/time.h: + +C:/wxWidgets-3.1.0/include/wx/timer.h: + +C:/wxWidgets-3.1.0/include/wx/module.h: + +C:/wxWidgets-3.1.0/include/wx/wxcrtvararg.h: + +C:/wxWidgets-3.1.0/include/wx/window.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/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/containr.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/toplevel.h: + +C:/wxWidgets-3.1.0/include/wx/nonownedwnd.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/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/frame.h: + +C:/wxWidgets-3.1.0/include/wx/statusbr.h: + +C:/wxWidgets-3.1.0/include/wx/control.h: + +C:/wxWidgets-3.1.0/include/wx/msw/control.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h: + +C:/wxWidgets-3.1.0/include/wx/tooltip.h: + +C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h: + +C:/wxWidgets-3.1.0/include/wx/msw/frame.h: + +C:/wxWidgets-3.1.0/include/wx/bitmap.h: + +C:/wxWidgets-3.1.0/include/wx/image.h: + +C:/wxWidgets-3.1.0/include/wx/imagbmp.h: + +C:/wxWidgets-3.1.0/include/wx/imagpng.h: + +C:/wxWidgets-3.1.0/include/wx/imaggif.h: + +C:/wxWidgets-3.1.0/include/wx/imagpcx.h: + +C:/wxWidgets-3.1.0/include/wx/imagjpeg.h: + +C:/wxWidgets-3.1.0/include/wx/imagtga.h: + +C:/wxWidgets-3.1.0/include/wx/imagtiff.h: + +C:/wxWidgets-3.1.0/include/wx/imagpnm.h: + +C:/wxWidgets-3.1.0/include/wx/imagxpm.h: + +C:/wxWidgets-3.1.0/include/wx/imagiff.h: + +C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h: + +C:/wxWidgets-3.1.0/include/wx/dc.h: + +C:/wxWidgets-3.1.0/include/wx/brush.h: + +C:/wxWidgets-3.1.0/include/wx/msw/brush.h: + +C:/wxWidgets-3.1.0/include/wx/pen.h: + +C:/wxWidgets-3.1.0/include/wx/msw/pen.h: + +C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h: + +C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h: + +C:/wxWidgets-3.1.0/include/wx/geometry.h: + +C:/wxWidgets-3.1.0/include/wx/dcclient.h: + +C:/wxWidgets-3.1.0/include/wx/dcmemory.h: + +C:/wxWidgets-3.1.0/include/wx/dcprint.h: + +C:/wxWidgets-3.1.0/include/wx/dcscreen.h: + +C:/wxWidgets-3.1.0/include/wx/button.h: + +C:/wxWidgets-3.1.0/include/wx/anybutton.h: + +C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h: + +C:/wxWidgets-3.1.0/include/wx/msw/button.h: + +C:/wxWidgets-3.1.0/include/wx/menuitem.h: + +C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h: + +C:/wxWidgets-3.1.0/include/wx/ownerdrw.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h: + +C:/wxWidgets-3.1.0/include/wx/menu.h: + +C:/wxWidgets-3.1.0/include/wx/msw/menu.h: + +C:/wxWidgets-3.1.0/include/wx/dialog.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/dialog.h: + +C:/wxWidgets-3.1.0/include/wx/msgdlg.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: + +C:/wxWidgets-3.1.0/include/wx/dataobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h: + +C:/wxWidgets-3.1.0/include/wx/ctrlsub.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h: + +C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h: + +C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h: + +C:/wxWidgets-3.1.0/include/wx/checkbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h: + +C:/wxWidgets-3.1.0/include/wx/checklst.h: + +C:/wxWidgets-3.1.0/include/wx/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/checklst.h: + +C:/wxWidgets-3.1.0/include/wx/choice.h: + +C:/wxWidgets-3.1.0/include/wx/msw/choice.h: + +C:/wxWidgets-3.1.0/include/wx/scrolbar.h: + +C:/wxWidgets-3.1.0/include/wx/msw/scrolbar.h: + +C:/wxWidgets-3.1.0/include/wx/stattext.h: + +C:/wxWidgets-3.1.0/include/wx/msw/stattext.h: + +C:/wxWidgets-3.1.0/include/wx/statbmp.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statbmp.h: + +C:/wxWidgets-3.1.0/include/wx/statbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/statbox.h: + +C:/wxWidgets-3.1.0/include/wx/radiobox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/radiobox.h: + +C:/wxWidgets-3.1.0/include/wx/radiobut.h: + +C:/wxWidgets-3.1.0/include/wx/msw/radiobut.h: + +C:/wxWidgets-3.1.0/include/wx/textctrl.h: + +C:/wxWidgets-3.1.0/include/wx/textentry.h: + +C:/wxWidgets-3.1.0/include/wx/msw/textentry.h: + +C:/wxWidgets-3.1.0/include/wx/ioswrap.h: + +C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h: + +C:/wxWidgets-3.1.0/include/wx/slider.h: + +C:/wxWidgets-3.1.0/include/wx/msw/slider.h: + +C:/wxWidgets-3.1.0/include/wx/gauge.h: + +C:/wxWidgets-3.1.0/include/wx/msw/gauge.h: + +C:/wxWidgets-3.1.0/include/wx/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/recguard.h: + +C:/wxWidgets-3.1.0/include/wx/dirdlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/dirdlg.h: + +C:/wxWidgets-3.1.0/include/wx/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/tbarbase.h: + +C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/imaglist.h: + +C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h: + +C:/wxWidgets-3.1.0/include/wx/combobox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/combobox.h: + +C:/wxWidgets-3.1.0/include/wx/layout.h: + +C:/wxWidgets-3.1.0/include/wx/sizer.h: + +C:/wxWidgets-3.1.0/include/wx/choicdlg.h: + +C:/wxWidgets-3.1.0/include/wx/generic/choicdgg.h: + +C:/wxWidgets-3.1.0/include/wx/textdlg.h: + +C:/wxWidgets-3.1.0/include/wx/generic/textdlgg.h: + +C:/wxWidgets-3.1.0/include/wx/valtext.h: + +C:/wxWidgets-3.1.0/include/wx/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/mdi.h: + +C:/wxWidgets-3.1.0/include/wx/msw/mdi.h: diff --git a/Project/Text.cpp b/Project/Text.cpp new file mode 100644 index 0000000..25c9b85 --- /dev/null +++ b/Project/Text.cpp @@ -0,0 +1,65 @@ +#include "Text.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" + +Text::Text() : Element() +{ + SetText(m_text); +} + +Text::Text(wxPoint2DDouble position) : Element() +{ + SetText(m_text); + SetPosition(position); +} + +Text::~Text() {} + +bool Text::Contains(wxPoint2DDouble position) const +{ + wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle); + return m_rect.Contains(ptR); +} + +void Text::Draw(wxPoint2DDouble translation, double scale, wxDC& dc) +{ + if(consolidate) { + glString.setFont(wxFont(10, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); + glString.consolidate(&dc); + //glString.bind(); + consolidate = false; + } + /*if(m_selected) { + glColor4d(0.0, 0.5, 1.0, 0.5); + wxGLString backSelection(m_text); + backSelection.setFont(wxFont(10, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD)); + backSelection.consolidate(&dc); + backSelection.bind(); + backSelection.render(m_position.m_x, m_position.m_y); + }*/ + + glColor4d(0.0, 0.0, 0.0, 1.0); + //glString.render(m_position.m_x, m_position.m_y); +} + +bool Text::Intersects(wxRect2DDouble rect) const +{ + if(m_angle == 0.0 || m_angle == 180.0) return m_rect.Intersects(rect); + return RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0); +} + +void Text::SetText(wxString text) +{ + m_text = text; + glString = text; + + consolidate = true; +} diff --git a/Project/Text.h b/Project/Text.h new file mode 100644 index 0000000..0ff8d17 --- /dev/null +++ b/Project/Text.h @@ -0,0 +1,39 @@ +#ifndef TEXT_H +#define TEXT_H + +#include "Element.h" +#include "wxGLString.h" + +class wxGLString; +class Bus; +class Line; +class Transformer; +class SyncGenerator; +class IndMotor; +class SyncMotor; +class Load; +class Inductor; +class Capacitor; + +class Text : public Element +{ + public: + Text(); + Text(wxPoint2DDouble position); + ~Text(); + + virtual bool AddParent(Element* parent, wxPoint2DDouble position) { return true; }; + virtual bool Contains(wxPoint2DDouble position) const; + virtual void Draw(wxPoint2DDouble translation, double scale, wxDC& dc); + virtual bool Intersects(wxRect2DDouble rect) const; + virtual wxString GetText() const { return m_text; } + virtual void SetText(wxString text); + +protected: + + wxString m_text = _("Text"); + wxGLString glString; + bool consolidate = true; +}; + +#endif // TEXT_H diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 2976c58..029737c 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -11,6 +11,8 @@ #include "Inductor.h" #include "Capacitor.h" +#include "Text.h" + #include "PowerFlow.h" // Camera @@ -62,8 +64,8 @@ Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : m_selectionRect = wxRect2DDouble(0, 0, 0, 0); for(int i = 0; i < NUM_ELEMENTS; ++i) { - m_elementNumber[i] = 1; - } + m_elementNumber[i] = 1; + } const int widths[4] = {-3, -1, 100, 100}; m_statusBar->SetStatusWidths(4, widths); @@ -72,8 +74,8 @@ Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : Workspace::~Workspace() { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - if(*it) delete *it; - } + if(*it) delete *it; + } m_elementList.clear(); if(m_camera) delete m_camera; } @@ -92,9 +94,15 @@ void Workspace::OnPaint(wxPaintEvent& event) // Elements for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - element->Draw(m_camera->GetTranslation(), m_camera->GetScale()); - } + Element* element = *it; + element->Draw(m_camera->GetTranslation(), m_camera->GetScale()); + } + + // Texts + for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { + Text* text = *it; + text->Draw(m_camera->GetTranslation(), m_camera->GetScale(), dc); + } // Selection rectangle glLineWidth(1.0); @@ -146,85 +154,82 @@ void Workspace::SetViewport() void Workspace::OnLeftClickDown(wxMouseEvent& event) { bool foundElement = false; - if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT) { - // Get the last element inserted on the list. - Element* newElement = *(m_elementList.end() - 1); - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - // Clicked in any element. - if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - // Click at a bus. - if(typeid(*element) == typeid(Bus)) { - // Select the bus. - element->SetSelected(); - foundElement = true; // Element found. - // Add the new element's parent. If the element being inserted returns true, back to - // edit mode. - if(newElement->AddParent(element, m_camera->ScreenToWorld(event.GetPosition()))) { - ValidateElementsVoltages(); - m_mode = MODE_EDIT; - } - } - } - } - // The line element can have an indefined number of points. - if(!foundElement) { - if(typeid(*newElement) == typeid(Line)) { - newElement->AddPoint(m_camera->ScreenToWorld(event.GetPosition())); - } - } - foundElement = true; - } - else - { - bool clickPickbox = false; - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - element->ResetPickboxes(); // Reset pickbox state. - - // Set movement initial position (not necessarily will be moved). - element->StartMove(m_camera->ScreenToWorld(event.GetPosition())); - - // Click in selected element node. - if(element->NodeContains(m_camera->ScreenToWorld(event.GetPosition())) != 0 && - element->IsSelected()) - { - m_mode = MODE_MOVE_NODE; - foundElement = true; - } - - // Click in an element. - else if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) - { - if(!foundElement) { - // Select and show pickbox. - element->SetSelected(); - element->ShowPickbox(); - foundElement = true; - } - // If pickbox contains the click, move the pickbox - if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) { - m_mode = MODE_MOVE_PICKBOX; - clickPickbox = true; - } - // If didn't found a pickbox, move the element - if(!clickPickbox) { - m_mode = MODE_MOVE_ELEMENT; - } - } - - // Click in a switch. - else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) - { - element->SetOnline(element->IsOnline() ? false : true); - } - } - } + if(m_mode == MODE_INSERT_TEXT) { + m_mode = MODE_EDIT; + } + else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT) { + // Get the last element inserted on the list. + Element* newElement = *(m_elementList.end() - 1); + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + // Clicked in any element. + if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + // Click at a bus. + if(typeid(*element) == typeid(Bus)) { + // Select the bus. + element->SetSelected(); + foundElement = true; // Element found. + // Add the new element's parent. If the element being inserted returns true, back to + // edit mode. + if(newElement->AddParent(element, m_camera->ScreenToWorld(event.GetPosition()))) { + ValidateElementsVoltages(); + m_mode = MODE_EDIT; + } + } + } + } + // The line element can have an indefined number of points. + if(!foundElement) { + if(typeid(*newElement) == typeid(Line)) { + newElement->AddPoint(m_camera->ScreenToWorld(event.GetPosition())); + } + } + foundElement = true; + } else { + bool clickPickbox = false; + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + element->ResetPickboxes(); // Reset pickbox state. + + // Set movement initial position (not necessarily will be moved). + element->StartMove(m_camera->ScreenToWorld(event.GetPosition())); + + // Click in selected element node. + if(element->NodeContains(m_camera->ScreenToWorld(event.GetPosition())) != 0 && element->IsSelected()) { + m_mode = MODE_MOVE_NODE; + foundElement = true; + } + + // Click in an element. + else if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + if(!foundElement) { + // Select and show pickbox. + element->SetSelected(); + element->ShowPickbox(); + foundElement = true; + } + // If pickbox contains the click, move the pickbox + if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) { + m_mode = MODE_MOVE_PICKBOX; + clickPickbox = true; + } + // If didn't found a pickbox, move the element + if(!clickPickbox) { + m_mode = MODE_MOVE_ELEMENT; + } + } + + // Click in a switch. + else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->SetOnline(element->IsOnline() ? false : true); + } + } + } if(!foundElement) { - m_mode = MODE_SELECTION_RECT; - m_startSelRect = m_camera->ScreenToWorld(event.GetPosition()); - } + m_mode = MODE_SELECTION_RECT; + m_startSelRect = m_camera->ScreenToWorld(event.GetPosition()); + } Redraw(); UpdateStatusBar(); @@ -234,89 +239,86 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) void Workspace::OnLeftDoubleClick(wxMouseEvent& event) { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - - // Click in an element. - if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - bool elementIsBus = false; - Bus oldBus; - if(typeid(*element) == typeid(Bus)) { - elementIsBus = true; - oldBus = *(Bus*)element; - } - element->ShowForm(this, element); - - // If the edited element is a bus and was changed the nominal voltage, this voltage must be - // propagated through the lines - if(elementIsBus) { - // The voltage was changed - if(oldBus.GetEletricalData().nominalVoltage != - ((Bus*)element)->GetEletricalData().nominalVoltage || - oldBus.GetEletricalData().nominalVoltageUnit != - ((Bus*)element)->GetEletricalData().nominalVoltageUnit) - { - // Check if the lines has this bus as parent - for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) { - Element* child = *it; - - bool elementIsParent = false; - if(typeid(*child) == typeid(Line)) { - for(int i = 0; i < (int)child->GetParentList().size(); i++) { - Element* parent = child->GetParentList()[i]; - if(parent == element) { - // TODO: Ask the user if he wants to change all - // voltages - ValidateBusesVoltages(element); - elementIsParent = true; - } - } - } - if(elementIsParent) break; - } - } - ValidateElementsVoltages(); - } - } - - // Click in a switch. - else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) - { - element->SetOnline(element->IsOnline() ? false : true); - } - } + Element* element = *it; + + // Click in an element. + if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + bool elementIsBus = false; + Bus oldBus; + if(typeid(*element) == typeid(Bus)) { + elementIsBus = true; + oldBus = *(Bus*)element; + } + element->ShowForm(this, element); + + // If the edited element is a bus and was changed the nominal voltage, this voltage must be + // propagated through the lines + if(elementIsBus) { + // The voltage was changed + if(oldBus.GetEletricalData().nominalVoltage != ((Bus*)element)->GetEletricalData().nominalVoltage || + oldBus.GetEletricalData().nominalVoltageUnit != + ((Bus*)element)->GetEletricalData().nominalVoltageUnit) { + // Check if the lines has this bus as parent + for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) { + Element* child = *it; + + bool elementIsParent = false; + if(typeid(*child) == typeid(Line)) { + for(int i = 0; i < (int)child->GetParentList().size(); i++) { + Element* parent = child->GetParentList()[i]; + if(parent == element) { + // TODO: Ask the user if he wants to change all + // voltages + ValidateBusesVoltages(element); + elementIsParent = true; + } + } + } + if(elementIsParent) break; + } + } + ValidateElementsVoltages(); + } + } + + // Click in a switch. + else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->SetOnline(element->IsOnline() ? false : true); + } + } } void Workspace::OnRightClickDown(wxMouseEvent& event) { bool redraw = false; if(m_mode == MODE_EDIT) { - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - if(element->IsSelected()) { - // Show context menu. - if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - element->ShowPickbox(false); - wxMenu menu; - if(element->GetContextMenu(menu)) { - menu.SetClientData(element); - menu.Connect(wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(Workspace::OnPopupClick), NULL, this); - PopupMenu(&menu); - redraw = true; - } - element->ResetPickboxes(); - - if(redraw) { - Redraw(); - redraw = false; - } - // If the last element was removed using the menu, we must leave the "search for" to - // prevent error. - break; - } - } - } - } + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + if(element->IsSelected()) { + // Show context menu. + if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->ShowPickbox(false); + wxMenu menu; + if(element->GetContextMenu(menu)) { + menu.SetClientData(element); + menu.Connect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Workspace::OnPopupClick), NULL, + this); + PopupMenu(&menu); + redraw = true; + } + element->ResetPickboxes(); + + if(redraw) { + Redraw(); + redraw = false; + } + // If the last element was removed using the menu, we must leave the "search for" to + // prevent error. + break; + } + } + } + } } void Workspace::OnLeftClickUp(wxMouseEvent& event) @@ -329,89 +331,81 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) auto itnp = m_elementList.begin(); for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - - // The user was moving a pickbox. - if(m_mode == MODE_MOVE_PICKBOX) { - // Catch only the element that have the pickbox shown. - if(element->IsPickboxShown()) { - // If the element is a bus, check if a node is outside. - if(typeid(*element) == typeid(Bus)) { - // Get all the bus children. - for(int i = 0; i < (int)m_elementList.size(); i++) { - Element* child = m_elementList[i]; - for(int j = 0; j < (int)child->GetParentList().size(); j++) { - Element* parent = child->GetParentList()[j]; - // The child have a parent that is the element. - if(parent == element) { - child->UpdateNodes(); - } - } - } - } - } - } - - if(m_mode == MODE_SELECTION_RECT) { - if(element->Intersects(m_selectionRect)) { - element->SetSelected(); - } - else - { - element->SetSelected(false); - } - } - else if(m_mode == MODE_MOVE_NODE) - { - if(element->IsSelected()) { - for(int i = 0; i < (int)m_elementList.size(); i++) { - Element* parent = m_elementList[i]; - if(typeid(*parent) == typeid(Bus)) { - if(element->SetNodeParent(parent)) { - findNewParent = true; - itnp = it; - element->ResetNodes(); - break; - } - } - } - // element->ResetNodes(); - } - } - else - { - // Deselect - if(!event.ControlDown()) { - if(!element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - element->SetSelected(false); - } - } - - if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) { - foundPickbox = true; - } - else - { - element->ShowPickbox(false); - element->ResetPickboxes(); - } - } - } + Element* element = *it; + + // The user was moving a pickbox. + if(m_mode == MODE_MOVE_PICKBOX) { + // Catch only the element that have the pickbox shown. + if(element->IsPickboxShown()) { + // If the element is a bus, check if a node is outside. + if(typeid(*element) == typeid(Bus)) { + // Get all the bus children. + for(int i = 0; i < (int)m_elementList.size(); i++) { + Element* child = m_elementList[i]; + for(int j = 0; j < (int)child->GetParentList().size(); j++) { + Element* parent = child->GetParentList()[j]; + // The child have a parent that is the element. + if(parent == element) { + child->UpdateNodes(); + } + } + } + } + } + } + + if(m_mode == MODE_SELECTION_RECT) { + if(element->Intersects(m_selectionRect)) { + element->SetSelected(); + } else { + element->SetSelected(false); + } + } else if(m_mode == MODE_MOVE_NODE) { + if(element->IsSelected()) { + for(int i = 0; i < (int)m_elementList.size(); i++) { + Element* parent = m_elementList[i]; + if(typeid(*parent) == typeid(Bus)) { + if(element->SetNodeParent(parent)) { + findNewParent = true; + itnp = it; + element->ResetNodes(); + break; + } + } + } + // element->ResetNodes(); + } + } else { + // Deselect + if(!event.ControlDown()) { + if(!element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->SetSelected(false); + } + } + + if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) { + foundPickbox = true; + } else { + element->ShowPickbox(false); + element->ResetPickboxes(); + } + } + } if(findNewParent) { - std::rotate(itnp, itnp + 1, m_elementList.end()); - updateVoltages = true; - } + std::rotate(itnp, itnp + 1, m_elementList.end()); + updateVoltages = true; + } if(!foundPickbox) { - SetCursor(wxCURSOR_ARROW); - } + SetCursor(wxCURSOR_ARROW); + } if(m_mode != MODE_INSERT) { - m_mode = MODE_EDIT; - } + m_mode = MODE_EDIT; + } if(updateVoltages) { - ValidateElementsVoltages(); - } + ValidateElementsVoltages(); + } m_selectionRect = wxRect2DDouble(0, 0, 0, 0); Redraw(); UpdateStatusBar(); @@ -420,133 +414,115 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) void Workspace::OnMouseMotion(wxMouseEvent& event) { bool redraw = false; - switch(m_mode) - { - case MODE_INSERT: - { - Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list. - newElement->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); - redraw = true; - } - break; - - case MODE_DRAG: - case MODE_DRAG_INSERT: - { - m_camera->SetTranslation(event.GetPosition()); - redraw = true; - } - break; - - case MODE_EDIT: - { - bool foundPickbox = false; - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - if(element->IsSelected()) { - // Show element pickbox (when it has) if the mouse is over the selected object. - if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - element->ShowPickbox(); - redraw = true; - - // If the mouse is over a pickbox set correct mouse cursor. - if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) { - foundPickbox = true; - SetCursor(element->GetBestPickboxCursor()); - } - else if(!foundPickbox) - { - SetCursor(wxCURSOR_ARROW); - element->ResetPickboxes(); - } - } - else if(!foundPickbox) - { - if(element->IsPickboxShown()) redraw = true; - - element->ShowPickbox(false); - element->ResetPickboxes(); - SetCursor(wxCURSOR_ARROW); - } - } - } - } - break; - - case MODE_MOVE_NODE: - { - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - if(element->IsSelected()) { - element->MoveNode(NULL, m_camera->ScreenToWorld(event.GetPosition())); - redraw = true; - } - } - } - break; - - case MODE_MOVE_PICKBOX: - { - 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 = true; - } - } - } - break; - - case MODE_MOVE_ELEMENT: - { - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - // Parent's element moving... - for(int i = 0; i < (int)element->GetParentList().size(); i++) { - Element* parent = element->GetParentList()[i]; - if(parent) { - if(parent->IsSelected()) { - element->MoveNode(parent, - m_camera->ScreenToWorld(event.GetPosition())); - } - } - } - if(element->IsSelected()) { - element->Move(m_camera->ScreenToWorld(event.GetPosition())); - redraw = true; - } - } - } - break; - - case MODE_SELECTION_RECT: - { - wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition()); - double x, y, w, h; - if(currentPos.m_x < m_startSelRect.m_x) { - x = currentPos.m_x; - w = m_startSelRect.m_x - currentPos.m_x; - } - else - { - x = m_startSelRect.m_x; - w = currentPos.m_x - m_startSelRect.m_x; - } - if(currentPos.m_y < m_startSelRect.m_y) { - y = currentPos.m_y; - h = m_startSelRect.m_y - currentPos.m_y; - } - else - { - y = m_startSelRect.m_y; - h = currentPos.m_y - m_startSelRect.m_y; - } - - m_selectionRect = wxRect2DDouble(x, y, w, h); - redraw = true; - } - break; - } + switch(m_mode) { + case MODE_INSERT: { + Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list. + newElement->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); + redraw = true; + } break; + + case MODE_INSERT_TEXT: { + Text* newText = *(m_textList.end() - 1); + newText->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); + redraw = true; + } break; + + case MODE_DRAG: + case MODE_DRAG_INSERT: { + m_camera->SetTranslation(event.GetPosition()); + redraw = true; + } break; + + case MODE_EDIT: { + bool foundPickbox = false; + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + if(element->IsSelected()) { + // Show element pickbox (when it has) if the mouse is over the selected object. + if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->ShowPickbox(); + redraw = true; + + // If the mouse is over a pickbox set correct mouse cursor. + if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) { + foundPickbox = true; + SetCursor(element->GetBestPickboxCursor()); + } else if(!foundPickbox) { + SetCursor(wxCURSOR_ARROW); + element->ResetPickboxes(); + } + } else if(!foundPickbox) { + if(element->IsPickboxShown()) redraw = true; + + element->ShowPickbox(false); + element->ResetPickboxes(); + SetCursor(wxCURSOR_ARROW); + } + } + } + } break; + + case MODE_MOVE_NODE: { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + if(element->IsSelected()) { + element->MoveNode(NULL, m_camera->ScreenToWorld(event.GetPosition())); + redraw = true; + } + } + } break; + + case MODE_MOVE_PICKBOX: { + 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 = true; + } + } + } break; + + case MODE_MOVE_ELEMENT: { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + // Parent's element moving... + for(int i = 0; i < (int)element->GetParentList().size(); i++) { + Element* parent = element->GetParentList()[i]; + if(parent) { + if(parent->IsSelected()) { + element->MoveNode(parent, m_camera->ScreenToWorld(event.GetPosition())); + } + } + } + if(element->IsSelected()) { + element->Move(m_camera->ScreenToWorld(event.GetPosition())); + redraw = true; + } + } + } break; + + case MODE_SELECTION_RECT: { + wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition()); + double x, y, w, h; + if(currentPos.m_x < m_startSelRect.m_x) { + x = currentPos.m_x; + w = m_startSelRect.m_x - currentPos.m_x; + } else { + x = m_startSelRect.m_x; + w = currentPos.m_x - m_startSelRect.m_x; + } + if(currentPos.m_y < m_startSelRect.m_y) { + y = currentPos.m_y; + h = m_startSelRect.m_y - currentPos.m_y; + } else { + y = m_startSelRect.m_y; + h = currentPos.m_y - m_startSelRect.m_y; + } + + m_selectionRect = wxRect2DDouble(x, y, w, h); + redraw = true; + } break; + } if(redraw) Redraw(); m_camera->UpdateMousePosition(event.GetPosition()); @@ -558,33 +534,29 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) { // Set to drag mode. if(m_mode != MODE_INSERT && m_mode != MODE_DRAG_INSERT) { - m_mode = MODE_DRAG; - } - else - { - m_mode = MODE_DRAG_INSERT; - } + m_mode = MODE_DRAG; + } else { + m_mode = MODE_DRAG_INSERT; + } m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition())); UpdateStatusBar(); } void Workspace::OnMiddleUp(wxMouseEvent& event) { if(m_mode != MODE_INSERT && m_mode != MODE_DRAG_INSERT) { - // Set to edit mode back. - m_mode = MODE_EDIT; - } - else if(m_mode == MODE_DRAG_INSERT) - { - m_mode = MODE_INSERT; - } + // Set to edit mode back. + m_mode = MODE_EDIT; + } else if(m_mode == MODE_DRAG_INSERT) { + m_mode = MODE_INSERT; + } UpdateStatusBar(); } void Workspace::OnScroll(wxMouseEvent& event) { if(event.GetWheelRotation() > 0) - m_camera->SetScale(event.GetPosition(), +0.05); + m_camera->SetScale(event.GetPosition(), +0.05); else - m_camera->SetScale(event.GetPosition(), -0.05); + m_camera->SetScale(event.GetPosition(), -0.05); UpdateStatusBar(); Redraw(); @@ -594,160 +566,139 @@ void Workspace::OnKeyDown(wxKeyEvent& event) { char key = event.GetUnicodeKey(); if(key != WXK_NONE) { - switch(key) - { - case WXK_ESCAPE: // Cancel operations. - { - if(m_mode == MODE_INSERT) { - m_elementList.pop_back(); // Removes the last element being inserted. - m_mode = MODE_EDIT; - Redraw(); - } - } - break; - case WXK_DELETE: // Delete selected elements - { - DeleteSelectedElements(); - } - break; - case 'F': - { - if(event.GetModifiers() == wxMOD_SHIFT) { - Fit(); - } - } - break; - case 'R': // Rotate the selected elements. - { - RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT); - } - break; - case 'B': // Insert a bus. - { - if(m_mode != MODE_INSERT) { - Bus* newBus = new Bus(m_camera->ScreenToWorld(event.GetPosition()), - wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS))); - IncrementElementNumber(ID_BUS); - m_elementList.push_back(newBus); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText(_("Insert Bus: Click to insert, ESC to cancel.")); - Redraw(); - } - } - break; - case 'L': - { - if(m_mode != MODE_INSERT) { - if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a load. - Load* newLoad = - new Load(wxString::Format(_("Load %d"), GetElementNumber(ID_LOAD))); - IncrementElementNumber(ID_LOAD); - m_elementList.push_back(newLoad); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Load: Click on a buses, ESC to cancel.")); - } - else - { // Insert a power line. - Line* newLine = - new Line(wxString::Format(_("Line %d"), GetElementNumber(ID_LINE))); - IncrementElementNumber(ID_LINE); - m_elementList.push_back(newLine); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Line: Click on two buses, ESC to cancel.")); - } - Redraw(); - } - } - break; - case 'T': // Insert a transformer. - { - if(m_mode != MODE_INSERT) { - Transformer* newTransformer = new Transformer( - wxString::Format(_("Transformer %d"), GetElementNumber(ID_TRANSFORMER))); - IncrementElementNumber(ID_TRANSFORMER); - m_elementList.push_back(newTransformer); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Transformer: Click on two buses, ESC to cancel.")); - Redraw(); - } - } - break; - case 'G': // Insert a generator. - { - if(m_mode != MODE_INSERT) { - SyncGenerator* newGenerator = new SyncGenerator( - wxString::Format(_("Generator %d"), GetElementNumber(ID_SYNCGENERATOR))); - IncrementElementNumber(ID_SYNCGENERATOR); - m_elementList.push_back(newGenerator); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText(_("Insert Generator: Click on a buses, ESC to cancel.")); - Redraw(); - } - } - break; - case 'I': - { - if(m_mode != MODE_INSERT) { - if(event.GetModifiers() == wxMOD_SHIFT) { // Insert an inductor. - Inductor* newInductor = new Inductor( - wxString::Format(_("Inductor %d"), GetElementNumber(ID_INDUCTOR))); - IncrementElementNumber(ID_INDUCTOR); - m_elementList.push_back(newInductor); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Inductor: Click on a buses, ESC to cancel.")); - } - else // Insert an induction motor. - { - IndMotor* newIndMotor = new IndMotor(wxString::Format( - _("Induction motor %d"), GetElementNumber(ID_INDMOTOR))); - IncrementElementNumber(ID_INDMOTOR); - m_elementList.push_back(newIndMotor); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Induction Motor: Click on a buses, ESC to cancel.")); - } - Redraw(); - } - } - break; - case 'K': // Insert a synchronous condenser. - { - if(m_mode != MODE_INSERT) { - SyncMotor* newSyncCondenser = new SyncMotor(wxString::Format( - _("Synchronous condenser %d"), GetElementNumber(ID_SYNCMOTOR))); - IncrementElementNumber(ID_SYNCMOTOR); - m_elementList.push_back(newSyncCondenser); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Synchronous Condenser: Click on a buses, ESC to cancel.")); - Redraw(); - } - } - break; - case 'C': - { - if(m_mode != MODE_INSERT) { - if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor. - Capacitor* newCapacitor = new Capacitor( - wxString::Format(_("Capacitor %d"), GetElementNumber(ID_CAPACITOR))); - IncrementElementNumber(ID_CAPACITOR); - m_elementList.push_back(newCapacitor); - m_mode = MODE_INSERT; - m_statusBar->SetStatusText( - _("Insert Capacitor: Click on a buses, ESC to cancel.")); - Redraw(); - } - } - } - break; - default: - break; - } - } + switch(key) { + case WXK_ESCAPE: // Cancel operations. + { + if(m_mode == MODE_INSERT) { + m_elementList.pop_back(); // Removes the last element being inserted. + m_mode = MODE_EDIT; + Redraw(); + } + } break; + case WXK_DELETE: // Delete selected elements + { + DeleteSelectedElements(); + } break; + case 'A': { + Text* newBus = new Text(m_camera->ScreenToWorld(event.GetPosition())); + m_textList.push_back(newBus); + m_mode = MODE_INSERT_TEXT; + m_statusBar->SetStatusText(_("Insert Text: Click to insert, ESC to cancel.")); + Redraw(); + } + case 'F': { + if(event.GetModifiers() == wxMOD_SHIFT) { + Fit(); + } + } break; + case 'R': // Rotate the selected elements. + { + RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT); + } break; + case 'B': // Insert a bus. + { + if(m_mode != MODE_INSERT) { + Bus* newBus = new Bus(m_camera->ScreenToWorld(event.GetPosition()), + wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS))); + IncrementElementNumber(ID_BUS); + m_elementList.push_back(newBus); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Bus: Click to insert, ESC to cancel.")); + Redraw(); + } + } break; + case 'L': { + if(m_mode != MODE_INSERT) { + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a load. + Load* newLoad = new Load(wxString::Format(_("Load %d"), GetElementNumber(ID_LOAD))); + IncrementElementNumber(ID_LOAD); + m_elementList.push_back(newLoad); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Load: Click on a buses, ESC to cancel.")); + } else { // Insert a power line. + Line* newLine = new Line(wxString::Format(_("Line %d"), GetElementNumber(ID_LINE))); + IncrementElementNumber(ID_LINE); + m_elementList.push_back(newLine); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Line: Click on two buses, ESC to cancel.")); + } + Redraw(); + } + } break; + case 'T': // Insert a transformer. + { + if(m_mode != MODE_INSERT) { + Transformer* newTransformer = + new Transformer(wxString::Format(_("Transformer %d"), GetElementNumber(ID_TRANSFORMER))); + IncrementElementNumber(ID_TRANSFORMER); + m_elementList.push_back(newTransformer); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Transformer: Click on two buses, ESC to cancel.")); + Redraw(); + } + } break; + case 'G': // Insert a generator. + { + if(m_mode != MODE_INSERT) { + SyncGenerator* newGenerator = + new SyncGenerator(wxString::Format(_("Generator %d"), GetElementNumber(ID_SYNCGENERATOR))); + IncrementElementNumber(ID_SYNCGENERATOR); + m_elementList.push_back(newGenerator); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Generator: Click on a buses, ESC to cancel.")); + Redraw(); + } + } break; + case 'I': { + if(m_mode != MODE_INSERT) { + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert an inductor. + Inductor* newInductor = + new Inductor(wxString::Format(_("Inductor %d"), GetElementNumber(ID_INDUCTOR))); + IncrementElementNumber(ID_INDUCTOR); + m_elementList.push_back(newInductor); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Inductor: Click on a buses, ESC to cancel.")); + } else // Insert an induction motor. + { + IndMotor* newIndMotor = + new IndMotor(wxString::Format(_("Induction motor %d"), GetElementNumber(ID_INDMOTOR))); + IncrementElementNumber(ID_INDMOTOR); + m_elementList.push_back(newIndMotor); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Induction Motor: Click on a buses, ESC to cancel.")); + } + Redraw(); + } + } break; + case 'K': // Insert a synchronous condenser. + { + if(m_mode != MODE_INSERT) { + SyncMotor* newSyncCondenser = + new SyncMotor(wxString::Format(_("Synchronous condenser %d"), GetElementNumber(ID_SYNCMOTOR))); + IncrementElementNumber(ID_SYNCMOTOR); + m_elementList.push_back(newSyncCondenser); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Synchronous Condenser: Click on a buses, ESC to cancel.")); + Redraw(); + } + } break; + case 'C': { + if(m_mode != MODE_INSERT) { + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor. + Capacitor* newCapacitor = + new Capacitor(wxString::Format(_("Capacitor %d"), GetElementNumber(ID_CAPACITOR))); + IncrementElementNumber(ID_CAPACITOR); + m_elementList.push_back(newCapacitor); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Capacitor: Click on a buses, ESC to cancel.")); + Redraw(); + } + } + } break; + default: + break; + } + } UpdateStatusBar(); event.Skip(); @@ -755,32 +706,26 @@ void Workspace::OnKeyDown(wxKeyEvent& event) void Workspace::UpdateStatusBar() { - switch(m_mode) - { - case MODE_DRAG: - { - m_statusBar->SetStatusText(_("MODE: DRAG"), 1); - } - break; - - case MODE_INSERT: - case MODE_DRAG_INSERT: - { - m_statusBar->SetStatusText(_("MODE: INSERT"), 1); - } - break; - - case MODE_MOVE_ELEMENT: - case MODE_MOVE_PICKBOX: - case MODE_MOVE_NODE: - case MODE_SELECTION_RECT: - case MODE_EDIT: - { - m_statusBar->SetStatusText(wxT("")); - m_statusBar->SetStatusText(_("MODE: EDIT"), 1); - } - break; - } + switch(m_mode) { + case MODE_DRAG: { + m_statusBar->SetStatusText(_("MODE: DRAG"), 1); + } break; + + case MODE_INSERT: + case MODE_INSERT_TEXT: + case MODE_DRAG_INSERT: { + m_statusBar->SetStatusText(_("MODE: INSERT"), 1); + } break; + + case MODE_MOVE_ELEMENT: + case MODE_MOVE_PICKBOX: + case MODE_MOVE_NODE: + case MODE_SELECTION_RECT: + case MODE_EDIT: { + m_statusBar->SetStatusText(wxT("")); + m_statusBar->SetStatusText(_("MODE: EDIT"), 1); + } break; + } m_statusBar->SetStatusText(wxString::Format(_("ZOOM: %d%%"), (int)(m_camera->GetScale() * 100.0)), 2); m_statusBar->SetStatusText( @@ -792,174 +737,157 @@ void Workspace::OnPopupClick(wxCommandEvent& event) { wxMenu* menu = (wxMenu*)event.GetEventObject(); Element* element = (Element*)menu->GetClientData(); - switch(event.GetId()) - { - case ID_EDIT_BUS: - { - wxMessageBox("Edit bus!"); - } - break; - case ID_EDIT_LINE: - { - wxMessageBox("Edit line!"); - } - break; - case ID_EDIT_TRANSFORMER: - { - wxMessageBox("Edit transformer!"); - } - break; - case ID_LINE_ADD_NODE: - { - Line* line = (Line*)element; - line->AddNode(m_camera->GetMousePosition()); - Redraw(); - } - break; - case ID_LINE_REMOVE_NODE: - { - Line* line = (Line*)element; - line->RemoveNode(m_camera->GetMousePosition()); - Redraw(); - } - break; - case ID_ROTATE_CLOCK: - { - element->Rotate(); - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* iElement = *it; - // Parent's element rotating... - for(int i = 0; i < (int)iElement->GetParentList().size(); i++) { - Element* parent = iElement->GetParentList()[i]; - if(parent == element) { - iElement->RotateNode(parent); - } - } - } - Redraw(); - } - break; - case ID_ROTATE_COUNTERCLOCK: - { - element->Rotate(false); - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* iElement = *it; - // Parent's element rotating... - for(int i = 0; i < (int)iElement->GetParentList().size(); i++) { - Element* parent = iElement->GetParentList()[i]; - if(parent == element) { - iElement->RotateNode(parent, false); - } - } - } - Redraw(); - } - break; - case ID_DELETE: - { - for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* iElement = *it; - - if(element == iElement) { - for(auto itp = m_elementList.begin(); itp != m_elementList.end(); ++itp) { - Element* child = *itp; - // Parent's element being deleted... - for(int i = 0; i < (int)child->GetParentList().size(); i++) { - Element* parent = child->GetParentList()[i]; - if(parent == element) { - child->RemoveParent(parent); - } - } - } - m_elementList.erase(it--); - } - } - } - break; - } + switch(event.GetId()) { + case ID_EDIT_BUS: { + wxMessageBox("Edit bus!"); + } break; + case ID_EDIT_LINE: { + wxMessageBox("Edit line!"); + } break; + case ID_EDIT_TRANSFORMER: { + wxMessageBox("Edit transformer!"); + } break; + case ID_LINE_ADD_NODE: { + Line* line = (Line*)element; + line->AddNode(m_camera->GetMousePosition()); + Redraw(); + } break; + case ID_LINE_REMOVE_NODE: { + Line* line = (Line*)element; + line->RemoveNode(m_camera->GetMousePosition()); + Redraw(); + } break; + case ID_ROTATE_CLOCK: { + element->Rotate(); + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* iElement = *it; + // Parent's element rotating... + for(int i = 0; i < (int)iElement->GetParentList().size(); i++) { + Element* parent = iElement->GetParentList()[i]; + if(parent == element) { + iElement->RotateNode(parent); + } + } + } + Redraw(); + } break; + case ID_ROTATE_COUNTERCLOCK: { + element->Rotate(false); + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* iElement = *it; + // Parent's element rotating... + for(int i = 0; i < (int)iElement->GetParentList().size(); i++) { + Element* parent = iElement->GetParentList()[i]; + if(parent == element) { + iElement->RotateNode(parent, false); + } + } + } + Redraw(); + } break; + case ID_DELETE: { + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* iElement = *it; + + if(element == iElement) { + for(auto itp = m_elementList.begin(); itp != m_elementList.end(); ++itp) { + Element* child = *itp; + // Parent's element being deleted... + for(int i = 0; i < (int)child->GetParentList().size(); i++) { + Element* parent = child->GetParentList()[i]; + if(parent == element) { + child->RemoveParent(parent); + } + } + } + m_elementList.erase(it--); + } + } + } break; + } } void Workspace::RotateSelectedElements(bool clockwise) { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - // Parent's element rotating... - for(int i = 0; i < (int)element->GetParentList().size(); i++) { - Element* parent = element->GetParentList()[i]; - if(parent) { // Check if parent is not null - if(parent->IsSelected()) { - element->RotateNode(parent, clockwise); - // Update the positions used on motion action, the element will not be necessarily - // moved. - element->StartMove(m_camera->GetMousePosition()); - } - } - } - if(element->IsSelected()) { - element->Rotate(clockwise); - element->StartMove(m_camera->GetMousePosition()); - } - } + Element* element = *it; + // Parent's element rotating... + for(int i = 0; i < (int)element->GetParentList().size(); i++) { + Element* parent = element->GetParentList()[i]; + if(parent) { // Check if parent is not null + if(parent->IsSelected()) { + element->RotateNode(parent, clockwise); + // Update the positions used on motion action, the element will not be necessarily + // moved. + element->StartMove(m_camera->GetMousePosition()); + } + } + } + if(element->IsSelected()) { + element->Rotate(clockwise); + element->StartMove(m_camera->GetMousePosition()); + } + } Redraw(); } void Workspace::DeleteSelectedElements() { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { - Element* element = *it; - - if(element->IsSelected()) { - for(auto itp = m_elementList.begin(); itp != m_elementList.end(); ++itp) { - Element* child = *itp; - // Parent's element being deleted... - for(int i = 0; i < (int)child->GetParentList().size(); i++) { - Element* parent = child->GetParentList()[i]; - if(parent == element) { - child->RemoveParent(parent); - } - } - } - m_elementList.erase(it--); - } - } + Element* element = *it; + + if(element->IsSelected()) { + for(auto itp = m_elementList.begin(); itp != m_elementList.end(); ++itp) { + Element* child = *itp; + // Parent's element being deleted... + for(int i = 0; i < (int)child->GetParentList().size(); i++) { + Element* parent = child->GetParentList()[i]; + if(parent == element) { + child->RemoveParent(parent); + } + } + } + m_elementList.erase(it--); + } + } Redraw(); } void Workspace::Fit() { if(m_elementList.size() > 0) { - wxPoint2DDouble leftUpCorner(0, 0); - wxPoint2DDouble rightDownCorner(0, 0); - m_elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner); - - for(auto it = m_elementList.begin() + 1; it != m_elementList.end(); it++) { - Element* element = *it; - wxPoint2DDouble leftUp; - wxPoint2DDouble rightDown; - element->CalculateBoundaries(leftUp, rightDown); - if(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x; - if(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y; - if(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x; - if(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y; - } - - int width = 0.0; - int height = 0.0; - GetSize(&width, &height); - - double scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x); - double scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y); - - double scale = scaleX < scaleY ? scaleX : scaleY; - if(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax(); - if(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin(); - - m_camera->SetScale(scale); - - m_camera->StartTranslation(leftUpCorner); - m_camera->SetTranslation(wxPoint2DDouble(0, 0)); - Redraw(); - } + wxPoint2DDouble leftUpCorner(0, 0); + wxPoint2DDouble rightDownCorner(0, 0); + m_elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner); + + for(auto it = m_elementList.begin() + 1; it != m_elementList.end(); it++) { + Element* element = *it; + wxPoint2DDouble leftUp; + wxPoint2DDouble rightDown; + element->CalculateBoundaries(leftUp, rightDown); + if(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x; + if(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y; + if(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x; + if(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y; + } + + int width = 0.0; + int height = 0.0; + GetSize(&width, &height); + + double scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x); + double scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y); + + double scale = scaleX < scaleY ? scaleX : scaleY; + if(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax(); + if(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin(); + + m_camera->SetScale(scale); + + m_camera->StartTranslation(leftUpCorner); + m_camera->SetTranslation(wxPoint2DDouble(0, 0)); + Redraw(); + } } void Workspace::ValidateBusesVoltages(Element* initialBus) @@ -968,29 +896,28 @@ void Workspace::ValidateBusesVoltages(Element* initialBus) ElectricalUnit nominalVoltageUnit = ((Bus*)initialBus)->GetEletricalData().nominalVoltageUnit; for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) { - Element* child = *it; - - if(typeid(*child) == typeid(Line)) { - if(child->GetParentList()[0] && child->GetParentList()[1]) { - BusElectricalData data1 = ((Bus*)child->GetParentList()[0])->GetEletricalData(); - BusElectricalData data2 = ((Bus*)child->GetParentList()[1])->GetEletricalData(); - - if(data1.nominalVoltage != data2.nominalVoltage || - data1.nominalVoltageUnit != data2.nominalVoltageUnit) - { - data1.nominalVoltage = nominalVoltage; - data2.nominalVoltage = nominalVoltage; - data1.nominalVoltageUnit = nominalVoltageUnit; - data2.nominalVoltageUnit = nominalVoltageUnit; - - ((Bus*)child->GetParentList()[0])->SetElectricalData(data1); - ((Bus*)child->GetParentList()[1])->SetElectricalData(data2); - - it = m_elementList.begin(); // Restart search. - } - } - } - } + Element* child = *it; + + if(typeid(*child) == typeid(Line)) { + if(child->GetParentList()[0] && child->GetParentList()[1]) { + BusElectricalData data1 = ((Bus*)child->GetParentList()[0])->GetEletricalData(); + BusElectricalData data2 = ((Bus*)child->GetParentList()[1])->GetEletricalData(); + + if(data1.nominalVoltage != data2.nominalVoltage || + data1.nominalVoltageUnit != data2.nominalVoltageUnit) { + data1.nominalVoltage = nominalVoltage; + data2.nominalVoltage = nominalVoltage; + data1.nominalVoltageUnit = nominalVoltageUnit; + data2.nominalVoltageUnit = nominalVoltageUnit; + + ((Bus*)child->GetParentList()[0])->SetElectricalData(data1); + ((Bus*)child->GetParentList()[1])->SetElectricalData(data2); + + it = m_elementList.begin(); // Restart search. + } + } + } + } // ValidateElementsVoltages(); } @@ -998,19 +925,19 @@ void Workspace::ValidateBusesVoltages(Element* initialBus) void Workspace::ValidateElementsVoltages() { for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) { - Element* child = *it; - - std::vector<double> nominalVoltage; - std::vector<ElectricalUnit> nominalVoltageUnit; - for(int i = 0; i < (int)child->GetParentList().size(); i++) { - Bus* parent = (Bus*)child->GetParentList()[i]; - if(parent) { - nominalVoltage.push_back(parent->GetEletricalData().nominalVoltage); - nominalVoltageUnit.push_back(parent->GetEletricalData().nominalVoltageUnit); - } - } - child->SetNominalVoltage(nominalVoltage, nominalVoltageUnit); - } + Element* child = *it; + + std::vector<double> nominalVoltage; + std::vector<ElectricalUnit> nominalVoltageUnit; + for(int i = 0; i < (int)child->GetParentList().size(); i++) { + Bus* parent = (Bus*)child->GetParentList()[i]; + if(parent) { + nominalVoltage.push_back(parent->GetEletricalData().nominalVoltage); + nominalVoltageUnit.push_back(parent->GetEletricalData().nominalVoltageUnit); + } + } + child->SetNominalVoltage(nominalVoltage, nominalVoltageUnit); + } } bool Workspace::RunPowerFlow() @@ -1018,10 +945,10 @@ bool Workspace::RunPowerFlow() PowerFlow pf(m_elementList); bool result = pf.RunGaussSeidel(); if(!result) { - wxMessageDialog msgDialog(this, pf.GetErrorMessage(), _("Error"), wxOK | wxCENTRE | wxICON_ERROR); - msgDialog.ShowModal(); - } - + wxMessageDialog msgDialog(this, pf.GetErrorMessage(), _("Error"), wxOK | wxCENTRE | wxICON_ERROR); + msgDialog.ShowModal(); + } + Redraw(); return result; diff --git a/Project/Workspace.h b/Project/Workspace.h index 310bcbe..93ea070 100644 --- a/Project/Workspace.h +++ b/Project/Workspace.h @@ -22,6 +22,8 @@ class Load; class Inductor; class Capacitor; +class Text; + class PowerFlow; enum WorkspaceMode @@ -33,6 +35,7 @@ enum WorkspaceMode MODE_DRAG, MODE_DRAG_INSERT, MODE_INSERT, + MODE_INSERT_TEXT, MODE_SELECTION_RECT }; @@ -106,6 +109,8 @@ class Workspace : public WorkspaceBase std::vector<Element*> m_elementList; int m_elementNumber[NUM_ELEMENTS]; + + std::vector<Text*> m_textList; void UpdateStatusBar(); diff --git a/Project/wxGLString.cpp b/Project/wxGLString.cpp new file mode 100644 index 0000000..b54a953 --- /dev/null +++ b/Project/wxGLString.cpp @@ -0,0 +1,503 @@ +#include "wxGLString.h" + +#ifdef __WXMAC__ +#include "OpenGL/gl.h" +#else +#include <GL/gl.h> +#endif + +#include "wx/wx.h" + + +GLuint* loadImage(wxImage* img) +{ + + GLuint* ID=new GLuint[1]; + glGenTextures( 1, &ID[0] ); + + glBindTexture( GL_TEXTURE_2D, *ID ); + + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1 ); + + const int w = img->GetWidth(), h = img->GetHeight(); + + + // note: must make a local copy before passing the data to OpenGL, as GetData() returns RGB + // and we want the Alpha channel. Furthermore, the current rendering is black-on-white, we'll + // convert it to an alpha channel by the way (not all platforms support transparency in wxDCs + // so it's the easiest way to go) + GLubyte *bitmapData=img->GetData(); + GLubyte *imageData; + + int bytesPerPixel = 4; + + int imageSize = w * h * bytesPerPixel; + imageData=(GLubyte *)malloc(imageSize); + + int rev_val=h-1; + + for(int y=0; y<h; y++) + { + for(int x=0; x<w; x++) + { + imageData[(x+y*w)*bytesPerPixel+0] = 255; + imageData[(x+y*w)*bytesPerPixel+1] = 255; + imageData[(x+y*w)*bytesPerPixel+2] = 255; + + // alpha + imageData[(x+y*w)*bytesPerPixel+3] = 255 - bitmapData[( x+(rev_val-y)*w)*3]; + }//next + }//next + + glTexImage2D(GL_TEXTURE_2D, 0, bytesPerPixel, w, h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, imageData); + + free(imageData); + + // set texture parameters as you wish + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + // GL_CLAMP_TO_EDGE + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + return ID; + +} + + +class TextTexture +{ + friend class wxGLString; + friend class wxGLStringArray; + friend class wxGLStringNumber; +private: + GLuint* ID; +protected: + + GLuint* getID(); + + TextTexture(); + TextTexture(wxBitmap& bmp); + void load(wxImage* img); +public: + + + ~TextTexture(); + +}; + +#if 0 +#pragma mark - +#pragma mark TextGLDrawable implementation +#endif + + +TextGLDrawable::TextGLDrawable(TextTexture* image_arg) +{ + x=0; + y=0; + angle=0; + + xscale=1; + yscale=1; + + xflip=false; + yflip=false; + + if(image_arg!=NULL) setImage(image_arg); + else image=NULL; + + tex_coord_x1 = 0; + tex_coord_y1 = 1; + tex_coord_x2 = 1; + tex_coord_y2 = 0; +} + +void TextGLDrawable::setFlip(bool x, bool y) +{ + xflip=x; + yflip=y; +} + +void TextGLDrawable::move(double x, double y) +{ + TextGLDrawable::x=x; + TextGLDrawable::y=y; +} + +void TextGLDrawable::scale(float x, float y) +{ + TextGLDrawable::xscale=x; + TextGLDrawable::yscale=y; +} + +void TextGLDrawable::scale(float k) +{ + TextGLDrawable::xscale=k; + TextGLDrawable::yscale=k; +} + +void TextGLDrawable::setImage(TextTexture* image) +{ + TextGLDrawable::image=image; +} + +void TextGLDrawable::rotate(int angle) +{ + TextGLDrawable::angle=angle; +} + +void TextGLDrawable::render() const +{ + assert(image!=NULL); + + glPushMatrix(); + glTranslatef(x - w/2, y - h/2, 0); + if(xscale!=1 || yscale!=1) glScalef(xscale, yscale, 1); + if(angle!=0) glRotatef(angle, 0,0,1); + + + glBegin(GL_QUADS); + + glTexCoord2f(xflip? tex_coord_x2 : tex_coord_x1, + yflip? tex_coord_y2 : tex_coord_y1); + glVertex2f( 0, 0 ); + + glTexCoord2f(xflip? tex_coord_x1 : tex_coord_x2, + yflip? tex_coord_y2 : tex_coord_y1); + glVertex2f( w, 0 ); + + glTexCoord2f(xflip? tex_coord_x1 : tex_coord_x2, + yflip? tex_coord_y1 : tex_coord_y2); + glVertex2f( w, h ); + + glTexCoord2f(xflip? tex_coord_x2 : tex_coord_x1, + yflip? tex_coord_y1 : tex_coord_y2); + glVertex2f( 0, h ); + + glEnd(); + glPopMatrix(); +} + + +#if 0 +#pragma mark - +#pragma mark TextTexture implementation +#endif + +TextTexture::TextTexture() +{ +} + +TextTexture::TextTexture(wxBitmap& bmp) +{ + wxImage img = bmp.ConvertToImage(); + load(&img); +} +void TextTexture::load(wxImage* img) +{ + ID=loadImage(img); +} + +GLuint* TextTexture::getID() +{ + return ID; +} + +TextTexture::~TextTexture() +{ + //glDeleteTextures (1, ID); + glDeleteTextures (1, ID); + delete ID; +} + + +#if 0 +#pragma mark - +#pragma mark wxGLString implementation +#endif + +wxGLString::wxGLString() : wxString(wxT("")), TextGLDrawable() +{ + img = NULL; +} +wxGLString::wxGLString(wxString message) : wxString(message), TextGLDrawable() +{ + img = NULL; +} +void wxGLString::operator=(wxString& string) +{ + (*((wxString*)this))=string; +} +void wxGLString::bind() const +{ + glBindTexture(GL_TEXTURE_2D, img->getID()[0] ); +} +void wxGLString::calculateSize(wxDC* dc, const bool ignore_font /* when from array */) +{ + if(!ignore_font) + { + if(font.IsOk()) dc->SetFont(font); + else dc->SetFont(wxSystemSettings::GetFont(wxSYS_SYSTEM_FONT)); + } + + dc->GetTextExtent(*this, &w, &h); +} + +void wxGLString::consolidate(wxDC* dc) +{ + calculateSize(dc); + const int power_of_2_w = std::max(32, (int)pow( (double)2, (int)ceil((float)log((double)w)/log(2.0)) )); + const int power_of_2_h = std::max(32, (int)pow( (double)2, (int)ceil((float)log((double)h)/log(2.0)) )); + + wxBitmap bmp(power_of_2_w, power_of_2_h); + assert(bmp.IsOk()); + + { + wxMemoryDC temp_dc(bmp); + + temp_dc.SetBrush(*wxWHITE_BRUSH); + temp_dc.Clear(); + + if(font.IsOk()) temp_dc.SetFont(font); + else temp_dc.SetFont(wxSystemSettings::GetFont(wxSYS_SYSTEM_FONT)); + + temp_dc.DrawText(*this, 0, 0); + } + + if(img != NULL) delete img; + img = new TextTexture(bmp); + + TextGLDrawable::texw = power_of_2_w; + TextGLDrawable::texh = power_of_2_h; + TextGLDrawable::tex_coord_x2 = (float)w / (float)power_of_2_w; + TextGLDrawable::tex_coord_y2 = 1-(float)h / (float)power_of_2_h; + TextGLDrawable::tex_coord_y1 = 1; + + TextGLDrawable::setImage(img); +} + +void wxGLString::consolidateFromArray(wxDC* dc, double x, double y) +{ + dc->DrawText(*this, x, y); +} + +void wxGLString::setFont(wxFont font) +{ + wxGLString::font = font; +} + +void wxGLString::render(const double x, const double y) +{ + TextGLDrawable::move(x, y); + TextGLDrawable::render(); +} +wxGLString::~wxGLString() +{ + if(img != NULL) delete img; +} + + +#if 0 +#pragma mark - +#pragma mark wxGLNumberRenderer implementation +#endif + +wxGLNumberRenderer::wxGLNumberRenderer() : wxGLString( wxT("0 1 2 3 4 5 6 7 8 9 . - ") ) +{ + number_location = new int[13]; +} +wxGLNumberRenderer::~wxGLNumberRenderer() +{ + delete[] number_location; +} + +void wxGLNumberRenderer::consolidate(wxDC* dc) +{ + wxGLString::consolidate(dc); + + if(font.IsOk()) dc->SetFont(font); + else dc->SetFont(wxSystemSettings::GetFont(wxSYS_SYSTEM_FONT)); + + number_location[0] = 0; + number_location[1] = dc->GetTextExtent(wxT("0 ")).GetWidth(); + number_location[2] = dc->GetTextExtent(wxT("0 1 ")).GetWidth(); + number_location[3] = dc->GetTextExtent(wxT("0 1 2 ")).GetWidth(); + number_location[4] = dc->GetTextExtent(wxT("0 1 2 3 ")).GetWidth(); + number_location[5] = dc->GetTextExtent(wxT("0 1 2 3 4 ")).GetWidth(); + number_location[6] = dc->GetTextExtent(wxT("0 1 2 3 4 5 ")).GetWidth(); + number_location[7] = dc->GetTextExtent(wxT("0 1 2 3 4 5 6 ")).GetWidth(); + number_location[8] = dc->GetTextExtent(wxT("0 1 2 3 4 5 6 7 ")).GetWidth(); + number_location[9] = dc->GetTextExtent(wxT("0 1 2 3 4 5 6 7 8 ")).GetWidth(); + number_location[10] = dc->GetTextExtent(wxT("0 1 2 3 4 5 6 7 8 9 ")).GetWidth(); + number_location[11] = dc->GetTextExtent(wxT("0 1 2 3 4 5 6 7 8 9 . ")).GetWidth(); + number_location[12] = dc->GetTextExtent(wxT("0 1 2 3 4 5 6 7 8 9 . - ")).GetWidth(); + + space_w = dc->GetTextExtent(wxT(" ")).GetWidth(); +} +void wxGLNumberRenderer::renderNumber(int i, double x, double y) +{ + wxString s; + s << i; + renderNumber(s, x, y); +} +void wxGLNumberRenderer::renderNumber(float f, double x, double y) +{ + wxString s; + s << f; + renderNumber(s, x, y); +} +void wxGLNumberRenderer::renderNumber(wxString s, double x, double y) +{ + const int full_string_w = TextGLDrawable::texw; + + const int char_amount = s.Length(); + for(int c=0; c<char_amount; c++) + { + int charid = -1; + + char schar = s[c]; + switch(schar) + { + case '0' : charid = 0; break; + case '1' : charid = 1; break; + case '2' : charid = 2; break; + case '3' : charid = 3; break; + case '4' : charid = 4; break; + case '5' : charid = 5; break; + case '6' : charid = 6; break; + case '7' : charid = 7; break; + case '8' : charid = 8; break; + case '9' : charid = 9; break; + case '.' : + case ',' : charid = 10; break; + case '-' : charid = 11; break; + default: printf("Warning: character %c unexpected in number!\n", schar); continue; + } + + assert( charid != -1 ); + + TextGLDrawable::tex_coord_x1 = (float)number_location[charid] / (float)full_string_w; + TextGLDrawable::tex_coord_x2 = (float)(number_location[charid+1]-space_w) / (float)full_string_w; + + const int char_width = number_location[charid+1] - number_location[charid] - space_w; + TextGLDrawable::w = char_width; + + + TextGLDrawable::move(x, y); + TextGLDrawable::render(); + + x += char_width; + } // next + + // TextGLDrawable::w = full_string_w; +} + +#if 0 +#pragma mark - +#pragma mark wxGLStringArray implementation +#endif + +wxGLStringArray::wxGLStringArray() +{ + img = NULL; +} +wxGLStringArray::wxGLStringArray(const wxString strings_arg[], int amount) +{ + img = NULL; + + for(int n=0; n<amount; n++) + strings.push_back( wxGLString(strings_arg[n]) ); +} +wxGLStringArray::~wxGLStringArray() +{ + if(img != NULL) delete img; +} + +wxGLString& wxGLStringArray::get(const int id) +{ + return strings[id]; +} +void wxGLStringArray::bind() +{ + glBindTexture(GL_TEXTURE_2D, img->getID()[0] ); +} +void wxGLStringArray::addString(wxString string) +{ + strings.push_back( wxGLString(string) ); +} +void wxGLStringArray::setFont(wxFont font) +{ + wxGLStringArray::font = font; +} + +void wxGLStringArray::consolidate(wxDC* dc) +{ + int x=0, y=0; + + if(font.IsOk()) dc->SetFont(font); + else dc->SetFont(wxSystemSettings::GetFont(wxSYS_SYSTEM_FONT)); + + // find how much space we need + int longest_string = 0; + + const int amount = strings.size(); + for(int n=0; n<amount; n++) + { + strings[n].calculateSize(dc, true); + y += strings[n].h; + if(strings[n].w > longest_string) longest_string = strings[n].w; + }//next + + const int average_string_height = y / amount; + + // split in multiple columns if necessary + int column_amount = 1; + while (amount/column_amount > 30 && column_amount<10) + column_amount ++; + + const int power_of_2_w = pow( (double)2, (int)ceil((float)log((double)longest_string*(double)column_amount)/log(2.0)) ); + const int power_of_2_h = pow( (double)2, (int)ceil((float)log((double)y/(double)column_amount)/log(2.0)) ); + + //std::cout << "bitmap size : " << power_of_2_w << ", " << power_of_2_h << " // " << column_amount << " columns" << std::endl; + + wxBitmap bmp(power_of_2_w, power_of_2_h); + assert(bmp.IsOk()); + + { + wxMemoryDC temp_dc(bmp); + + temp_dc.SetBrush(*wxWHITE_BRUSH); + temp_dc.Clear(); + + y = 0; + x = 0; + if(font.IsOk()) temp_dc.SetFont(font); + else temp_dc.SetFont(wxSystemSettings::GetFont(wxSYS_SYSTEM_FONT)); + + for(int n=0; n<amount; n++) + { + strings[n].consolidateFromArray(&temp_dc, x, y); + + strings[n].tex_coord_x1 = (float)x/(float)power_of_2_w; + strings[n].tex_coord_y1 = 1.0 - (float)y/(float)power_of_2_h; + strings[n].tex_coord_x2 = (float)(x+strings[n].w)/(float)power_of_2_w; + strings[n].tex_coord_y2 = 1.0 - (float)(y+strings[n].h)/(float)power_of_2_h; + + y += strings[n].h; + if(y > power_of_2_h - average_string_height) // check if we need to switch to next column + { + y = 0; + x += longest_string; + } + } + } + if(img != NULL) delete img; + img = new TextTexture(bmp); + + for(int n=0; n<amount; n++) + strings[n].setImage(img); +} diff --git a/Project/wxGLString.h b/Project/wxGLString.h new file mode 100644 index 0000000..9765080 --- /dev/null +++ b/Project/wxGLString.h @@ -0,0 +1,202 @@ +#ifndef _glstring_ +#define _glstring_ + +#ifdef __WXMAC__ +#include "OpenGL/gl.h" +#else +#include <GL/gl.h> +#endif + +#include "wx/wx.h" +#include <vector> + +class TextTexture; + +/** base class for renderable elements. You won't create this one directly, +but may use its public members from wxGLString since it inherits from TextGLDrawable. +This class will be useful if you wish to apply effects to the text like rotation or +scaling. */ +class TextGLDrawable +{ + friend class wxGLString; + friend class wxGLStringArray; + friend class wxGLStringNumber; +protected: + + double x,y, angle; + float xscale, yscale; + TextTexture* image; + bool xflip, yflip; + + float tex_coord_x1, tex_coord_y1; + float tex_coord_x2, tex_coord_y2; + int w, h, texw, texh; + + TextGLDrawable(TextTexture* image=(TextTexture*)0); + void setImage(TextTexture* image); + void move(double x, double y); +public: + + void render() const; + + /** allows you to flip the rendering vertically and/or horizontally */ + void setFlip(bool x, bool y); + + /** scale the rendering , horizontally and vertically (allows stretching) */ + void scale(float x, float y); + + /** scale the rendering and keep the same aspect ratio */ + void scale(float k); + + /** rotate the rendering by 'angle' degrees */ + void rotate(int angle); + + /** returns the width of this element */ + int getWidth() const { return w; } + /** returns the height of this element */ + int getheight() const { return h; } + +}; + +class wxGLStringArray; + +/** wxGLString is the simplest class you can use. It draws a single string on a single line. +If you plan to render multiple strings, this class is not the fastest. + +Use example : + +wxGLString my_message(wxT("Hello World")); +... +if(first_render) + my_message.consolidate(&dc); + +glColor3f(0,0,0); // black text +my_message.bind(); +my_message.render(x, y); +*/ +class wxGLString : public wxString, public TextGLDrawable +{ +protected: + TextTexture* img; + wxFont font; + + friend class wxGLStringArray; + + void calculateSize(wxDC* dc, const bool ignore_font=false /* when from array */); + void consolidateFromArray(wxDC* dc, double x, double y); +public: + /** constructs an empty GLString. Set string later with operator=. */ + wxGLString(); + /** constructs a GLstring with 'message' as contents. */ + wxGLString(wxString message); + virtual ~wxGLString(); + + /** call just before render() - binds the OpenGL. If you render the same string many + times, or render from an array, bind only once, this will improve performance */ + void bind() const; + + /** set how to draw string for next consolidate() - has no immediate effect, + you need to call consolidate() to get results */ + void setFont(wxFont font); + + /** consolidates the current string info into a GL string. call this after + setting up strings, font and color (if necessary), and before rendering. + The wxDC argument is only used to calculate text extents and will not be rendered on. */ + virtual void consolidate(wxDC* dc); + + /** render this string at coordinates (x,y). Must be called after bind(). */ + void render(const double x, const double y); + + /** changes the string of this element */ + void operator=(wxString& string); +}; + + +/** This class allows rendering numbers. + +Use example : + +wxGLNumberRenderer glnumbers; +... +if(first_render) + glnumbers.consolidate(); + +glColor3f(0,0,0); // black numbers +glnumbers.bind(); +glnumbers.renderNumber( 3.141593f, x, y ); +*/ +class wxGLNumberRenderer : public wxGLString +{ + int* number_location; + int space_w; +public: + wxGLNumberRenderer(); + virtual ~wxGLNumberRenderer(); + + /** inits the class to be ready to render. + The wxDC argument is only used to calculate text extents and will not be rendered on. */ + void consolidate(wxDC* dc); + + /** render this number at coordinates (x,y), where wxString s contains the string + representation of a number. Must be called after bind(). */ + void renderNumber(wxString s, double x, double y); + /** render this number at coordinates (x,y). Must be called after bind(). */ + void renderNumber(int i, double x, double y); + /** render this number at coordinates (x,y). Must be called after bind(). */ + void renderNumber(float f, double x, double y); +}; + + +/** This class is useful to render a serie of strings that are usually rendered at the same time. +It behaves exactly like wxGLString but is more efficient. + + +Use example : + +wxGLStringArray my_messages(); +my_messages.addString("wxMac"); +my_messages.addString("wxGTK"); +my_messages.addString("wxMSW"); +... + +glColor3f(0,0,0); // black text +my_messages.bind(); +my_messages.get(0).render( x, y ); +my_messages.get(1).render( x, y + 25 ); +my_messages.get(2).render( x, y + 50 ); +*/ +class wxGLStringArray +{ + std::vector<wxGLString> strings; + TextTexture* img; + wxFont font; +public: + /** constructs an empty array - add elements later using addString */ + wxGLStringArray(); + /** construct an array with 'strings_arg' elemnts in it */ + wxGLStringArray(const wxString strings_arg[], int amount); + ~wxGLStringArray(); + + /** get a sub-element - useful mainly for rendering, e.g. my_array.get(0).render(x, y); */ + wxGLString& get(const int id); + + /** call just before render() - binds the OpenGL. If you render the same string many + times, or render from an array, bind only once, this will improve performance */ + void bind(); + + /** add a string to the list for next consolidate() - has no + immediate effect, you need to call consolidate() to get results */ + void addString(wxString string); + + /** set how to draw string for next consolidate() - has no immediate effect, + you need to call consolidate() to get results */ + void setFont(wxFont font); + + /** consolidates the current string info into a GL string. call this after + setting up strings, font and color (if necessary), and before rendering. + The wxDC argument is only used to calculate text extents and will not be rendered on. */ + void consolidate(wxDC* dc); +}; + + +#endif |