summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2016-11-23 17:08:20 -0200
committerThales1330 <thaleslima.ufu@gmail.com>2016-11-23 17:08:20 -0200
commit8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a (patch)
tree1e25777555f6964409a6dce64fb1bd722d0e55ae
parent8d78d8c052550b9efc1a7de39aa4b776be002396 (diff)
downloadPSP.git-8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a.tar.gz
PSP.git-8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a.tar.xz
PSP.git-8e79aff80e56adbdcfd6a9be5a873c6bb4b1020a.zip
Text under implementation
-rw-r--r--.codelite/.tern-port2
-rw-r--r--.codelite/PSP.session64
-rw-r--r--.codelite/PSP.tagsbin83383296 -> 83467264 bytes
-rw-r--r--.codelite/compilation.dbbin59392 -> 61440 bytes
-rw-r--r--.codelite/compile_commands.json8
-rw-r--r--.codelite/refactoring.dbbin2026496 -> 2089984 bytes
-rw-r--r--Project/ClassDiagram.diabin0 -> 8516 bytes
-rw-r--r--Project/ClassDiagram.dia~bin0 -> 3884 bytes
-rw-r--r--Project/Element.h2
-rw-r--r--Project/Project.mk26
-rw-r--r--Project/Project.project4
-rw-r--r--Project/Project.txt2
-rw-r--r--Project/Release/Branch.cpp.obin33186 -> 33186 bytes
-rw-r--r--Project/Release/Bus.cpp.obin40981 -> 40981 bytes
-rw-r--r--Project/Release/Capacitor.cpp.obin43196 -> 43196 bytes
-rw-r--r--Project/Release/ElectricCalculation.cpp.obin67619 -> 67499 bytes
-rw-r--r--Project/Release/Element.cpp.obin155347 -> 155954 bytes
-rw-r--r--Project/Release/IndMotor.cpp.obin36128 -> 36128 bytes
-rw-r--r--Project/Release/Inductor.cpp.obin43101 -> 43101 bytes
-rw-r--r--Project/Release/Line.cpp.obin160921 -> 160921 bytes
-rw-r--r--Project/Release/Load.cpp.obin41732 -> 41732 bytes
-rw-r--r--Project/Release/Machines.cpp.obin38827 -> 38827 bytes
-rw-r--r--Project/Release/MainFrame.cpp.obin141354 -> 141354 bytes
-rw-r--r--Project/Release/PSP-UFU.exebin4078040 -> 4140418 bytes
-rw-r--r--Project/Release/Shunt.cpp.obin34219 -> 34826 bytes
-rw-r--r--Project/Release/SyncGenerator.cpp.obin41367 -> 41367 bytes
-rw-r--r--Project/Release/SyncMotor.cpp.obin37518 -> 37518 bytes
-rw-r--r--Project/Release/Text.cpp.obin0 -> 38352 bytes
-rw-r--r--Project/Release/Text.cpp.o.d884
-rw-r--r--Project/Release/Transformer.cpp.obin49434 -> 49434 bytes
-rw-r--r--Project/Release/Workspace.cpp.obin203429 -> 205068 bytes
-rw-r--r--Project/Release/Workspace.cpp.o.d137
-rw-r--r--Project/Release/wxGLString.cpp.obin0 -> 34373 bytes
-rw-r--r--Project/Release/wxGLString.cpp.o.d699
-rw-r--r--Project/Text.cpp65
-rw-r--r--Project/Text.h39
-rw-r--r--Project/Workspace.cpp1429
-rw-r--r--Project/Workspace.h5
-rw-r--r--Project/wxGLString.cpp503
-rw-r--r--Project/wxGLString.h202
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
index 5029ea5..f833400 100644
--- a/.codelite/PSP.tags
+++ b/.codelite/PSP.tags
Binary files differ
diff --git a/.codelite/compilation.db b/.codelite/compilation.db
index d7a9493..eba4d38 100644
--- a/.codelite/compilation.db
+++ b/.codelite/compilation.db
Binary files differ
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
index 665b0bf..935c527 100644
--- a/.codelite/refactoring.db
+++ b/.codelite/refactoring.db
Binary files differ
diff --git a/Project/ClassDiagram.dia b/Project/ClassDiagram.dia
new file mode 100644
index 0000000..fc8f0ad
--- /dev/null
+++ b/Project/ClassDiagram.dia
Binary files differ
diff --git a/Project/ClassDiagram.dia~ b/Project/ClassDiagram.dia~
new file mode 100644
index 0000000..a522114
--- /dev/null
+++ b/Project/ClassDiagram.dia~
Binary files differ
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
index 098ca04..374429b 100644
--- a/Project/Release/Branch.cpp.o
+++ b/Project/Release/Branch.cpp.o
Binary files differ
diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o
index d26c1c8..03402fd 100644
--- a/Project/Release/Bus.cpp.o
+++ b/Project/Release/Bus.cpp.o
Binary files differ
diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o
index 9554b8e..3cd8e8f 100644
--- a/Project/Release/Capacitor.cpp.o
+++ b/Project/Release/Capacitor.cpp.o
Binary files differ
diff --git a/Project/Release/ElectricCalculation.cpp.o b/Project/Release/ElectricCalculation.cpp.o
index bcf3329..79d5b45 100644
--- a/Project/Release/ElectricCalculation.cpp.o
+++ b/Project/Release/ElectricCalculation.cpp.o
Binary files differ
diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o
index b4b995e..99f0e28 100644
--- a/Project/Release/Element.cpp.o
+++ b/Project/Release/Element.cpp.o
Binary files differ
diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o
index 457e288..4517019 100644
--- a/Project/Release/IndMotor.cpp.o
+++ b/Project/Release/IndMotor.cpp.o
Binary files differ
diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o
index 574b196..029ea12 100644
--- a/Project/Release/Inductor.cpp.o
+++ b/Project/Release/Inductor.cpp.o
Binary files differ
diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o
index fa75f95..c1a688c 100644
--- a/Project/Release/Line.cpp.o
+++ b/Project/Release/Line.cpp.o
Binary files differ
diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o
index dcb917f..8a96a09 100644
--- a/Project/Release/Load.cpp.o
+++ b/Project/Release/Load.cpp.o
Binary files differ
diff --git a/Project/Release/Machines.cpp.o b/Project/Release/Machines.cpp.o
index cba99a6..78e4dd9 100644
--- a/Project/Release/Machines.cpp.o
+++ b/Project/Release/Machines.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o
index 14a4801..2b8cc1a 100644
--- a/Project/Release/MainFrame.cpp.o
+++ b/Project/Release/MainFrame.cpp.o
Binary files differ
diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe
index 74c25d7..02fc6d6 100644
--- a/Project/Release/PSP-UFU.exe
+++ b/Project/Release/PSP-UFU.exe
Binary files differ
diff --git a/Project/Release/Shunt.cpp.o b/Project/Release/Shunt.cpp.o
index 475aad5..e898859 100644
--- a/Project/Release/Shunt.cpp.o
+++ b/Project/Release/Shunt.cpp.o
Binary files differ
diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o
index de9598c..d0c6b6e 100644
--- a/Project/Release/SyncGenerator.cpp.o
+++ b/Project/Release/SyncGenerator.cpp.o
Binary files differ
diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o
index 9c9dc33..1d035f2 100644
--- a/Project/Release/SyncMotor.cpp.o
+++ b/Project/Release/SyncMotor.cpp.o
Binary files differ
diff --git a/Project/Release/Text.cpp.o b/Project/Release/Text.cpp.o
new file mode 100644
index 0000000..ae85016
--- /dev/null
+++ b/Project/Release/Text.cpp.o
Binary files differ
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
index 8411f2c..d4555cd 100644
--- a/Project/Release/Transformer.cpp.o
+++ b/Project/Release/Transformer.cpp.o
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o
index 94d2379..f384585 100644
--- a/Project/Release/Workspace.cpp.o
+++ b/Project/Release/Workspace.cpp.o
Binary files differ
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
new file mode 100644
index 0000000..a64ae4d
--- /dev/null
+++ b/Project/Release/wxGLString.cpp.o
Binary files differ
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