diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2016-12-29 02:32:50 -0200 |
---|---|---|
committer | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2016-12-29 02:32:50 -0200 |
commit | d792fcf7b2a5862ac86ee69aa86021b5637ca8ee (patch) | |
tree | c00bb1d27666ee7d42839efbd420369b2a0d24e3 | |
parent | fb9de1b7935376897f1c93676ab1faeb1ea25f25 (diff) | |
download | PSP.git-d792fcf7b2a5862ac86ee69aa86021b5637ca8ee.tar.gz PSP.git-d792fcf7b2a5862ac86ee69aa86021b5637ca8ee.tar.xz PSP.git-d792fcf7b2a5862ac86ee69aa86021b5637ca8ee.zip |
Copy paste implemented
Some bugs on the text
73 files changed, 1547 insertions, 1510 deletions
diff --git a/.codelite/.tern-port b/.codelite/.tern-port index f9d7676..f8d9ce4 100644 --- a/.codelite/.tern-port +++ b/.codelite/.tern-port @@ -1 +1 @@ -52743
\ No newline at end of file +55980
\ No newline at end of file diff --git a/.codelite/.tern-project b/.codelite/.tern-project index 09b6465..d5969c6 100644 --- a/.codelite/.tern-project +++ b/.codelite/.tern-project @@ -8,6 +8,8 @@ "node_resolve": { }, "node": { + }, + "complete_strings": { } } }
\ No newline at end of file diff --git a/.codelite/PSP.tags b/.codelite/PSP.tags Binary files differindex bb08e8c..5696ae3 100644 --- a/.codelite/PSP.tags +++ b/.codelite/PSP.tags diff --git a/.codelite/compilation.db b/.codelite/compilation.db Binary files differindex 202d30b..6c9a597 100644 --- a/.codelite/compilation.db +++ b/.codelite/compilation.db diff --git a/.codelite/compile_commands.json b/.codelite/compile_commands.json index c246253..b642e2f 100644 --- a/.codelite/compile_commands.json +++ b/.codelite/compile_commands.json @@ -1,153 +1,9 @@ [{ - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Bus.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\\Bus.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Bus.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." + "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/Element.cpp.o -MF./Release/Element.cpp.o.d -MM Element.cpp", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Element.cpp" }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Line.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\\Line.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Line.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Transformer.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\\Transformer.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Transformer.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Machines.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\\Machines.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Machines.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SyncGenerator.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\\SyncGenerator.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SyncGenerator.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\IndMotor.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\\IndMotor.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\IndMotor.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Branch.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\\Branch.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Branch.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SyncMotor.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\\SyncMotor.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SyncMotor.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Shunt.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\\Shunt.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Shunt.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Load.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\\Load.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Load.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Inductor.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\\Inductor.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Inductor.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Capacitor.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\\Capacitor.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Capacitor.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Element.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\\Element.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Element.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElectricCalculation.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 -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElectricCalculation.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\PowerFlow.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\\PowerFlow.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\PowerFlow.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "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\\Text.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Text.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ArtMetro.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\\ArtMetro.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ArtMetro.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\wxGLString.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\\wxGLString.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\wxGLString.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrame.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\\MainFrame.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrame.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Workspace.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\\Workspace.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Workspace.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\BusForm.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\\BusForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\BusForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\GeneratorStabForm.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\\GeneratorStabForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\GeneratorStabForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\LineForm.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\\LineForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\LineForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SwitchingForm.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\\SwitchingForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SwitchingForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\TransformerForm.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\\TransformerForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\TransformerForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\LoadForm.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\\LoadForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\LoadForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ReactiveShuntElementForm.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\\ReactiveShuntElementForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ReactiveShuntElementForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\IndMotorForm.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\\IndMotorForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\IndMotorForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SyncMachineForm.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\\SyncMachineForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\SyncMachineForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\TextForm.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\\TextForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\TextForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\main.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\\main.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\main.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrameBitmaps.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\\MainFrameBitmaps.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrameBitmaps.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\WorkspaceBitmaps.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\\WorkspaceBitmaps.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\WorkspaceBitmaps.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\BusFormBitmaps.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\\BusFormBitmaps.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\BusFormBitmaps.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElementFormBitmaps.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\\ElementFormBitmaps.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElementFormBitmaps.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrameBase.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\\MainFrameBase.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrameBase.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\WorkspaceBase.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\\WorkspaceBase.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\WorkspaceBase.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." - }, { - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElementForm.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\\ElementForm.cpp -o C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\ElementForm.cpp.o -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 \n -DNDEBUG -DUNICODE -I. -I." + "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/Element.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/Element.cpp.o -I. -I.", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Element.cpp" }]
\ No newline at end of file diff --git a/.codelite/refactoring.db b/.codelite/refactoring.db Binary files differindex 43f6bab..254af78 100644 --- a/.codelite/refactoring.db +++ b/.codelite/refactoring.db diff --git a/Project/Bus.cpp b/Project/Bus.cpp index 72d6412..dffe8fc 100644 --- a/Project/Bus.cpp +++ b/Project/Bus.cpp @@ -53,7 +53,7 @@ void Bus::Draw(wxPoint2DDouble translation, double scale) const glRotated(m_angle, 0.0, 0.0, 1.0); glTranslated(-m_position.m_x, -m_position.m_y, 0.0); - glColor4dv(m_busColour->GetRGBA()); + glColor4dv(m_busColour.GetRGBA()); DrawRectangle(m_position, m_width, m_height); // Pop the old matrix back. glPopMatrix(); @@ -186,3 +186,10 @@ bool Bus::ShowForm(wxWindow* parent, Element* element) busForm->Destroy(); return false; } + +Element* Bus::GetCopy() +{ + Bus* copy = new Bus(); + *copy = *this; + return copy; +} diff --git a/Project/Bus.h b/Project/Bus.h index 470d4cb..acf22ab 100644 --- a/Project/Bus.h +++ b/Project/Bus.h @@ -46,6 +46,7 @@ public: Bus(wxPoint2DDouble position); Bus(wxPoint2DDouble position, wxString name); ~Bus(); + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position) { return true; } virtual bool Contains(wxPoint2DDouble position) const; virtual bool Intersects(wxRect2DDouble rect) const; diff --git a/Project/Capacitor.cpp b/Project/Capacitor.cpp index 31fecc7..b8d4a7c 100644 --- a/Project/Capacitor.cpp +++ b/Project/Capacitor.cpp @@ -36,7 +36,7 @@ bool Capacitor::AddParent(Element* parent, wxPoint2DDouble position) void Capacitor::Draw(wxPoint2DDouble translation, double scale) const { - OpenGLColour* elementColour; + OpenGLColour elementColour; if(m_online) elementColour = m_onlineElementColour; else elementColour = m_offlineElementColour; @@ -49,7 +49,7 @@ void Capacitor::Draw(wxPoint2DDouble translation, double scale) const if(m_selected) { glLineWidth(1.5 + m_borderSize * 2.0); - glColor4dv(m_selectionColour->GetRGBA()); + glColor4dv(m_selectionColour.GetRGBA()); DrawLine(m_pointList); @@ -69,7 +69,7 @@ void Capacitor::Draw(wxPoint2DDouble translation, double scale) const } // Draw Capacitor (layer 2). glLineWidth(1.5); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON); DrawLine(m_pointList); @@ -80,7 +80,7 @@ void Capacitor::Draw(wxPoint2DDouble translation, double scale) const glRotated(m_angle, 0.0, 0.0, 1.0); glTranslated(-m_position.m_x, -m_position.m_y, 0.0); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawLine(capPts, GL_LINES); DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0)); @@ -153,3 +153,10 @@ CapacitorElectricalData Capacitor::GetPUElectricalData(double systemPowerBase) return data; } + +Element* Capacitor::GetCopy() +{ + Capacitor* copy = new Capacitor(); + *copy = *this; + return copy; +} diff --git a/Project/Capacitor.h b/Project/Capacitor.h index 248ec6c..fdacb42 100644 --- a/Project/Capacitor.h +++ b/Project/Capacitor.h @@ -17,7 +17,8 @@ class Capacitor : public Shunt Capacitor(); Capacitor(wxString name); ~Capacitor(); - + + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position); virtual void Draw(wxPoint2DDouble translation, double scale) const; virtual bool Contains(wxPoint2DDouble position) const; diff --git a/Project/Element.cpp b/Project/Element.cpp index 68563ca..be93cc5 100644 --- a/Project/Element.cpp +++ b/Project/Element.cpp @@ -2,16 +2,18 @@ Element::Element() { - m_busColour = new OpenGLColour(0.0, 0.3, 1.0, 1.0); - m_onlineElementColour = new OpenGLColour(0.2, 0.2, 0.2, 1.0); - m_offlineElementColour = new OpenGLColour(0.5, 0.5, 0.5, 1.0); - m_closedSwitchColour = new OpenGLColour(0.0, 0.4, 0.0, 1.0); - m_openedSwitchColour = new OpenGLColour(1.0, 0.1, 0.1, 1.0); - m_selectionColour = new OpenGLColour(0.0, 0.5, 1.0, 0.5); - m_powerFlowArrowColour = new OpenGLColour(1.0, 0.51, 0.0, 1.0); + m_busColour.SetRGBA(0.0, 0.3, 1.0, 1.0); + m_onlineElementColour.SetRGBA(0.2, 0.2, 0.2, 1.0); + m_offlineElementColour.SetRGBA(0.5, 0.5, 0.5, 1.0); + m_closedSwitchColour.SetRGBA(0.0, 0.4, 0.0, 1.0); + m_openedSwitchColour.SetRGBA(1.0, 0.1, 0.1, 1.0); + m_selectionColour.SetRGBA(0.0, 0.5, 1.0, 0.5); + m_powerFlowArrowColour.SetRGBA(1.0, 0.51, 0.0, 1.0); } -Element::~Element() {} +Element::~Element() +{ +} void Element::SetPosition(const wxPoint2DDouble position) { @@ -257,9 +259,9 @@ void Element::DrawSwitches() const Element* parent = *it; if(parent) { if(m_online) { - glColor4dv(m_closedSwitchColour->GetRGBA()); + glColor4dv(m_closedSwitchColour.GetRGBA()); } else { - glColor4dv(m_openedSwitchColour->GetRGBA()); + glColor4dv(m_openedSwitchColour.GetRGBA()); } glPushMatrix(); @@ -442,7 +444,7 @@ void Element::CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges) void Element::DrawPowerFlowPts() const { if(m_online) { - glColor4dv(m_powerFlowArrowColour->GetRGBA()); + glColor4dv(m_powerFlowArrowColour.GetRGBA()); for(int i = 0; i < (int)m_powerFlowArrow.size(); i++) { DrawTriangle(m_powerFlowArrow[i]); } @@ -463,3 +465,13 @@ void OpenGLColour::SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble rgba[2] = blue; rgba[3] = alpha; } + +OpenGLColour::OpenGLColour() +{ + SetRGBA(1.0, 1.0, 1.0, 1.0); +} + +OpenGLColour::OpenGLColour(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) +{ + SetRGBA(red, green, blue, alpha); +} diff --git a/Project/Element.h b/Project/Element.h index 0dd7dea..d5443de 100644 --- a/Project/Element.h +++ b/Project/Element.h @@ -11,7 +11,8 @@ #include <wx/log.h> -enum PickboxID { +enum PickboxID +{ ID_PB_NONE = 0, ID_PB_RIGHT, ID_PB_LEFT, @@ -21,7 +22,8 @@ enum PickboxID { ID_PB_LEFT_TOP }; -enum ContextMenuID { +enum ContextMenuID +{ ID_EDIT_BUS = 0, ID_EDIT_LINE, ID_EDIT_TRANSFORMER, @@ -40,7 +42,8 @@ enum ContextMenuID { ID_DELETE }; -enum ElectricalUnit { +enum ElectricalUnit +{ UNIT_PU = 0, UNIT_V, UNIT_kV, @@ -63,7 +66,8 @@ enum ElectricalUnit { UNIT_RADIAN }; -enum FaultData { +enum FaultData +{ FAULT_THREEPHASE = 0, FAULT_2LINE, FAULT_2LINE_GROUND, @@ -73,31 +77,42 @@ enum FaultData { FAULT_LINE_C }; -enum SwitchingType { SW_INSERT = 0, SW_REMOVE }; +enum SwitchingType +{ + SW_INSERT = 0, + SW_REMOVE +}; -enum PowerFlowDirection { PF_NONE = 0, PF_TO_BUS, PF_TO_ELEMENT, PF_BUS1_TO_BUS2, PF_BUS2_TO_BUS1 }; +enum PowerFlowDirection +{ + PF_NONE = 0, + PF_TO_BUS, + PF_TO_ELEMENT, + PF_BUS1_TO_BUS2, + PF_BUS2_TO_BUS1 +}; -struct SwitchingData { +struct SwitchingData +{ std::vector<SwitchingType> swType; std::vector<double> swTime; }; class OpenGLColour { -public: - OpenGLColour() {} - OpenGLColour(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) { SetRGBA(red, green, blue, alpha); } + public: + OpenGLColour(); + OpenGLColour(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); virtual ~OpenGLColour() {} void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); - GLdouble* GetRGBA() const { return rgba; } - -protected: - GLdouble* rgba = new GLdouble(4); + const GLdouble* GetRGBA() const { return rgba; } + protected: + GLdouble rgba[4]; }; class Element { -public: + public: Element(); virtual ~Element(); @@ -124,13 +139,13 @@ public: bool IsPickboxShown() const { return m_showPickbox; } bool IsOnline() const { return m_online; } virtual std::vector<wxPoint2DDouble> GetPointList() const { return m_pointList; } - // Pure-virtuals methods virtual bool AddParent(Element* parent, wxPoint2DDouble position) = 0; virtual bool Contains(wxPoint2DDouble position) const = 0; virtual bool Intersects(wxRect2DDouble rect) const = 0; // General methods + virtual Element* GetCopy() { return NULL; } virtual void Draw(wxPoint2DDouble translation, double scale) const {}; virtual void Rotate(bool clockwise = true) {} virtual bool GetContextMenu(wxMenu& menu) { return false; } @@ -144,8 +159,9 @@ public: virtual void RemoveParent(Element* parent) {} virtual void ReplaceParent(Element* oldParent, Element* newParent); virtual void RotateNode(Element* parent, bool clockwise = true) {} - virtual wxPoint2DDouble - GetSwitchPoint(Element* parent, wxPoint2DDouble parentPoint, wxPoint2DDouble secondPoint) const; + virtual wxPoint2DDouble GetSwitchPoint(Element* parent, + wxPoint2DDouble parentPoint, + wxPoint2DDouble secondPoint) const; virtual bool SwitchesContains(wxPoint2DDouble position) const; virtual void UpdateSwitches(); virtual void DrawSwitches() const; @@ -158,23 +174,27 @@ public: virtual wxCursor GetBestPickboxCursor() const { return wxCURSOR_ARROW; } virtual void ResetPickboxes() { m_activePickboxID = ID_PB_NONE; } virtual void ResetNodes() { m_activeNodeID = 0; } - virtual wxPoint2DDouble - WorldToScreen(wxPoint2DDouble translation, double scale, double offsetX = 0.0, double offsetY = 0.0) const; + virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble translation, + double scale, + double offsetX = 0.0, + double offsetY = 0.0) const; virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble position, - wxPoint2DDouble translation, - double scale, - double offsetX = 0.0, - double offsetY = 0.0) const; - virtual bool - RotatedRectanglesIntersects(wxRect2DDouble rect1, wxRect2DDouble rect2, double angle1, double angle2) const; + wxPoint2DDouble translation, + double scale, + double offsetX = 0.0, + double offsetY = 0.0) const; + virtual bool RotatedRectanglesIntersects(wxRect2DDouble rect1, + wxRect2DDouble rect2, + double angle1, + double angle2) const; virtual void DrawCircle(wxPoint2DDouble position, double radius, int numSegments, GLenum mode = GL_LINE_LOOP) const; virtual void DrawArc(wxPoint2DDouble position, - double radius, - double initAngle, - double finalAngle, - int numSegments, - GLenum mode = GL_LINE_LOOP) const; + double radius, + double initAngle, + double finalAngle, + int numSegments, + GLenum mode = GL_LINE_LOOP) const; virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode = GL_QUADS) const; virtual void DrawRectangle(wxPoint2DDouble* points, GLenum mode = GL_QUADS) const; virtual void DrawTriangle(std::vector<wxPoint2DDouble> points, GLenum mode = GL_TRIANGLES) const; @@ -186,13 +206,11 @@ public: virtual std::vector<Element*> GetParentList() const { return m_parentList; } virtual wxPoint2DDouble GetMoveStartPosition() const { return m_moveStartPt; } virtual wxPoint2DDouble GetMovePosition() const { return m_movePos; } - virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const; virtual void GeneralMenuItens(wxMenu& menu); virtual bool ShowForm(wxWindow* parent, Element* element) { return false; } - bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg); bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg); @@ -204,11 +222,10 @@ public: virtual SwitchingData GetSwitchingData() { return m_swData; } virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection) { m_pfDirection = pfDirection; } virtual PowerFlowDirection GetPowerFlowDirection() const { return m_pfDirection; } - // Static methods static wxString StringFromDouble(double value, int minDecimal = 1); -protected: + protected: std::vector<Element*> m_parentList; wxRect2DDouble m_rect; @@ -220,13 +237,13 @@ protected: double m_rotationAngle = 45.0; double m_switchSize = 10.0; - OpenGLColour* m_busColour; - OpenGLColour* m_onlineElementColour; - OpenGLColour* m_offlineElementColour; - OpenGLColour* m_closedSwitchColour; - OpenGLColour* m_openedSwitchColour; - OpenGLColour* m_selectionColour; - OpenGLColour* m_powerFlowArrowColour; + OpenGLColour m_busColour; + OpenGLColour m_onlineElementColour; + OpenGLColour m_offlineElementColour; + OpenGLColour m_closedSwitchColour; + OpenGLColour m_openedSwitchColour; + OpenGLColour m_selectionColour; + OpenGLColour m_powerFlowArrowColour; std::vector<wxRect2DDouble> m_switchRect; @@ -251,4 +268,4 @@ protected: SwitchingData m_swData; }; -#endif // ELEMENT_H +#endif // ELEMENT_H diff --git a/Project/ElementDataObject.cpp b/Project/ElementDataObject.cpp index 5df312c..ff2feed 100644 --- a/Project/ElementDataObject.cpp +++ b/Project/ElementDataObject.cpp @@ -1,60 +1,29 @@ -#include "ElectricCalculation.h" #include "ElementDataObject.h" -ElementDataObject::ElementDataObject(Workspace* workspace) - : wxDataObjectSimple(wxDataFormat("PSPCopy")) +ElementDataObject::ElementDataObject() : wxDataObjectSimple(wxDataFormat("PSPCopy")) { - if(workspace) { - m_elementsLists = new ElementsLists(); - - ElectricCalculation m_allElements; - std::vector<Element*> elementsList = workspace->GetElementList(); - std::vector<Text*> textList = workspace->GetTextList(); - - m_allElements.GetElementsFromList(elementsList); - - std::vector<Bus*> busList = m_allElements.GetBusList(); - for(int i = 0; i < (int)busList.size(); i++) { - Bus* origBus = busList[i]; - - // Set bus number. - auto data = origBus->GetEletricalData(); - data.number = i; - origBus->SetElectricalData(data); - - if(origBus->IsSelected()) { - Bus* copyBus = new Bus(); - *copyBus = *origBus; - m_elementsLists->busList.push_back(copyBus); - } - } + m_elementsLists = new ElementsLists(); +} - std::vector<Line*> lineList = m_allElements.GetLineList(); - for(int i = 0; i < (int)lineList.size(); i++) { - Line* origLine = lineList[i]; - if(origLine->IsSelected()) { - Line* copyLine = new Line(); - *copyLine = *origLine; - m_elementsLists->lineList.push_back(copyLine); - } - } - - std::vector<Transformer*> transformerList = m_allElements.GetTransformerList(); - for(int i = 0; i < (int)transformerList.size(); i++) { - Transformer* origTransformer = transformerList[i]; - if(origTransformer->IsSelected()) { - Transformer* copyTransformer = new Transformer(); - *copyTransformer = *origTransformer; - m_elementsLists->transformerList.push_back(copyTransformer); - } - } - } +ElementDataObject::ElementDataObject(std::vector<Element*> elementList) : wxDataObjectSimple(wxDataFormat("PSPCopy")) +{ + m_elementsLists = new ElementsLists(); + if(elementList.size() > 0) { + // Separate buses (parents) from the rest of the elements (childs). + for(auto it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) { + Element* copy = (*it)->GetCopy(); + if(copy) { + if(typeid(*copy) == typeid(Bus)) + m_elementsLists->parentList.push_back((Bus*)copy); + else + m_elementsLists->elementList.push_back(copy); + } + } + } } ElementDataObject::~ElementDataObject() {} - size_t ElementDataObject::GetDataSize() const { return sizeof(void*); } - bool ElementDataObject::GetDataHere(void* buf) const { *(ElementsLists**)buf = m_elementsLists; diff --git a/Project/ElementDataObject.h b/Project/ElementDataObject.h index 3f7155f..37b1cbe 100644 --- a/Project/ElementDataObject.h +++ b/Project/ElementDataObject.h @@ -1,29 +1,19 @@ #ifndef ELEMENTDATAOBJECT_H #define ELEMENTDATAOBJECT_H -#include <wx/dataobj.h> #include "Workspace.h" - -class ElectricCalculation; +#include <wx/dataobj.h> struct ElementsLists { - std::vector<Bus*> busList; - std::vector<Capacitor*> capacitorList; - std::vector<IndMotor*> indMotorList; - std::vector<Inductor*> inductorList; - std::vector<Line*> lineList; - std::vector<Load*> loadList; - std::vector<Machines*> machinesList; - std::vector<SyncGenerator*> syncGeneratorList; - std::vector<SyncMotor*> syncMotorList; - std::vector<Transformer*> transformerList; - std::vector<Text*> textList; + std::vector<Element*> elementList; + std::vector<Bus*> parentList; }; class ElementDataObject : public wxDataObjectSimple { public: - ElementDataObject(Workspace* workspace); + ElementDataObject(); + ElementDataObject(std::vector<Element*> elementList); ~ElementDataObject(); size_t GetDataSize() const override; diff --git a/Project/IndMotor.cpp b/Project/IndMotor.cpp index 7a56466..fc30f12 100644 --- a/Project/IndMotor.cpp +++ b/Project/IndMotor.cpp @@ -75,3 +75,10 @@ IndMotorElectricalData IndMotor::GetPUElectricalData(double systemPowerBase) return data; } + +Element* IndMotor::GetCopy() +{ + IndMotor* copy = new IndMotor(); + *copy = *this; + return copy; +} diff --git a/Project/IndMotor.h b/Project/IndMotor.h index 491c714..03c64d7 100644 --- a/Project/IndMotor.h +++ b/Project/IndMotor.h @@ -20,7 +20,8 @@ class IndMotor : public Machines IndMotor(); IndMotor(wxString name); ~IndMotor(); - + + virtual Element* GetCopy(); virtual void DrawSymbol() const; virtual bool GetContextMenu(wxMenu& menu); virtual bool ShowForm(wxWindow* parent, Element* element); diff --git a/Project/Inductor.cpp b/Project/Inductor.cpp index 4a6cf75..ffce7d9 100644 --- a/Project/Inductor.cpp +++ b/Project/Inductor.cpp @@ -36,14 +36,14 @@ bool Inductor::AddParent(Element* parent, wxPoint2DDouble position) void Inductor::Draw(wxPoint2DDouble translation, double scale) const { - OpenGLColour* elementColour; + OpenGLColour elementColour; if(m_online) elementColour = m_onlineElementColour; else elementColour = m_offlineElementColour; if(m_inserted) { if(m_selected) { glLineWidth(1.5 + m_borderSize * 2.0); - glColor4dv(m_selectionColour->GetRGBA()); + glColor4dv(m_selectionColour.GetRGBA()); DrawLine(m_pointList); @@ -65,7 +65,7 @@ void Inductor::Draw(wxPoint2DDouble translation, double scale) const } // Draw Load (layer 2). glLineWidth(1.5); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON); DrawLine(m_pointList); @@ -76,7 +76,7 @@ void Inductor::Draw(wxPoint2DDouble translation, double scale) const glRotated(m_angle, 0.0, 0.0, 1.0); glTranslated(-m_position.m_x, -m_position.m_y, 0.0); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 10, GL_LINE_STRIP); DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 25.0), 10, 45, 315, 10, GL_LINE_STRIP); DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 40.0), 10, 90, 315, 10, GL_LINE_STRIP); @@ -147,3 +147,10 @@ InductorElectricalData Inductor::GetPUElectricalData(double systemPowerBase) return data; } + +Element* Inductor::GetCopy() +{ + Inductor* copy = new Inductor(); + *copy = *this; + return copy; +} diff --git a/Project/Inductor.h b/Project/Inductor.h index f157d1c..84acc18 100644 --- a/Project/Inductor.h +++ b/Project/Inductor.h @@ -17,7 +17,8 @@ class Inductor : public Shunt Inductor(); Inductor(wxString name); ~Inductor(); - + + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position); virtual void Draw(wxPoint2DDouble translation, double scale) const; virtual bool Contains(wxPoint2DDouble position) const; diff --git a/Project/Line.cpp b/Project/Line.cpp index 7f569fd..3180cf8 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -31,7 +31,7 @@ bool Line::Contains(wxPoint2DDouble position) const void Line::Draw(wxPoint2DDouble translation, double scale) const { - OpenGLColour* elementColour; + OpenGLColour elementColour; if(m_online) elementColour = m_onlineElementColour; else elementColour = m_offlineElementColour; @@ -48,7 +48,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const // Line selected (Layer 1). if(m_selected) { glLineWidth(1.5 + m_borderSize * 2.0); - glColor4dv(m_selectionColour->GetRGBA()); + glColor4dv(m_selectionColour.GetRGBA()); DrawLine(pointList); // Draw nodes selection. @@ -62,7 +62,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const // Draw line (Layer 2) glLineWidth(1.5); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawLine(pointList); if(m_inserted) { @@ -72,7 +72,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const // Draw nodes. if(pointList.size() > 0) { - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(pointList[0], 5.0, 10, GL_POLYGON); if(m_inserted) { DrawCircle(pointList[pointList.size() - 1], 5.0, 10, GL_POLYGON); @@ -491,3 +491,10 @@ void Line::SetPointList(std::vector<wxPoint2DDouble> pointList) UpdateSwitchesPosition(); UpdatePowerFlowArrowsPosition(); } + +Element* Line::GetCopy() +{ + Line* copy = new Line(); + *copy = *this; + return copy; +} diff --git a/Project/Line.h b/Project/Line.h index 2a2902c..7000701 100644 --- a/Project/Line.h +++ b/Project/Line.h @@ -45,6 +45,7 @@ class Line : public Branch virtual void MoveNode(Element* parent, wxPoint2DDouble position); virtual bool SetNodeParent(Element* parent); virtual wxCursor GetBestPickboxCursor() const { return wxCURSOR_SIZING; } + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position); virtual bool Intersects(wxRect2DDouble rect) const; virtual void MovePickbox(wxPoint2DDouble position); diff --git a/Project/Load.cpp b/Project/Load.cpp index d363b17..f5afda3 100644 --- a/Project/Load.cpp +++ b/Project/Load.cpp @@ -40,7 +40,7 @@ bool Load::AddParent(Element* parent, wxPoint2DDouble position) void Load::Draw(wxPoint2DDouble translation, double scale) const { - OpenGLColour* elementColour; + OpenGLColour elementColour; if(m_online) elementColour = m_onlineElementColour; else elementColour = m_offlineElementColour; @@ -48,7 +48,7 @@ void Load::Draw(wxPoint2DDouble translation, double scale) const // Draw Selection (layer 1). if(m_selected) { glLineWidth(1.5 + m_borderSize * 2.0); - glColor4dv(m_selectionColour->GetRGBA()); + glColor4dv(m_selectionColour.GetRGBA()); std::vector<wxPoint2DDouble> selTriangPts; selTriangPts.push_back(m_triangPts[0] + m_position + wxPoint2DDouble(-m_borderSize / scale, -m_borderSize / scale)); @@ -73,7 +73,7 @@ void Load::Draw(wxPoint2DDouble translation, double scale) const glLineWidth(1.5); // Draw node. - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON); DrawLine(m_pointList); @@ -89,7 +89,7 @@ void Load::Draw(wxPoint2DDouble translation, double scale) const glTranslated(m_position.m_x, m_position.m_y, 0.0); glRotated(m_angle, 0.0, 0.0, 1.0); glTranslated(-m_position.m_x, -m_position.m_y, 0.0); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawTriangle(triangPts); glPopMatrix(); } @@ -164,3 +164,10 @@ LoadElectricalData Load::GetPUElectricalData(double systemPowerBase) return data; } + +Element* Load::GetCopy() +{ + Load* copy = new Load(); + *copy = *this; + return copy; +} diff --git a/Project/Load.h b/Project/Load.h index 3c6dd48..88bedaa 100644 --- a/Project/Load.h +++ b/Project/Load.h @@ -26,7 +26,8 @@ class Load : public Shunt Load(); Load(wxString name); ~Load(); - + + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position); virtual void Draw(wxPoint2DDouble translation, double scale) const; virtual void Rotate(bool clockwise = true); diff --git a/Project/Machines.cpp b/Project/Machines.cpp index c1970e6..bda8a7a 100644 --- a/Project/Machines.cpp +++ b/Project/Machines.cpp @@ -35,7 +35,7 @@ bool Machines::AddParent(Element* parent, wxPoint2DDouble position) void Machines::Draw(wxPoint2DDouble translation, double scale) const { - OpenGLColour* elementColour; + OpenGLColour elementColour; if(m_online) elementColour = m_onlineElementColour; else elementColour = m_offlineElementColour; @@ -43,7 +43,7 @@ void Machines::Draw(wxPoint2DDouble translation, double scale) const // Draw Selection (layer 1). if(m_selected) { glLineWidth(1.5 + m_borderSize * 2.0); - glColor4dv(m_selectionColour->GetRGBA()); + glColor4dv(m_selectionColour.GetRGBA()); DrawCircle(m_position, 25.0 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON); DrawLine(m_pointList); @@ -55,7 +55,7 @@ void Machines::Draw(wxPoint2DDouble translation, double scale) const glLineWidth(1.5); // Draw node. - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON); DrawLine(m_pointList); @@ -66,7 +66,7 @@ void Machines::Draw(wxPoint2DDouble translation, double scale) const glColor4d(1.0, 1.0, 1.0, 1.0); DrawCircle(m_position, 25.0, 20, GL_POLYGON); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_position, 25.0, 20); // Draw machine symbol. diff --git a/Project/Project.mk b/Project/Project.mk index e9cbe10..e1411d9 100644 --- a/Project/Project.mk +++ b/Project/Project.mk @@ -13,8 +13,8 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=Thales -Date :=28/12/2016 -CodeLitePath :="C:/Program Files/CodeLite" +Date :=29/12/2016 +CodeLitePath :="C:/Program Files (x86)/CodeLite" LinkerName :=C:/TDM-GCC-64/bin/g++.exe SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC ObjectSuffix :=.o @@ -61,7 +61,8 @@ AS := C:/TDM-GCC-64/bin/as.exe ## ## User defined environment variables ## -CodeLiteDir:=C:\Program Files\CodeLite +CodeLiteDir:=C:\Program Files (x86)\CodeLite +UNIT_TEST_PP_SRC_DIR:=C:\UnitTest++-1.3 WXWIN:=C:\wxWidgets-3.1.0 WXCFG:=gcc_dll\mswu Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/Text.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) \ diff --git a/Project/Release/Branch.cpp.o b/Project/Release/Branch.cpp.o Binary files differindex 020c520..2fde385 100644 --- a/Project/Release/Branch.cpp.o +++ b/Project/Release/Branch.cpp.o diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o Binary files differindex b6af0e2..b23e8eb 100644 --- a/Project/Release/Bus.cpp.o +++ b/Project/Release/Bus.cpp.o diff --git a/Project/Release/BusForm.cpp.o b/Project/Release/BusForm.cpp.o Binary files differindex 673bcbb..cc6b454 100644 --- a/Project/Release/BusForm.cpp.o +++ b/Project/Release/BusForm.cpp.o diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o Binary files differindex 43d7dd5..739e951 100644 --- a/Project/Release/Capacitor.cpp.o +++ b/Project/Release/Capacitor.cpp.o diff --git a/Project/Release/ElectricCalculation.cpp.o b/Project/Release/ElectricCalculation.cpp.o Binary files differindex 00eba4a..0c9d36d 100644 --- a/Project/Release/ElectricCalculation.cpp.o +++ b/Project/Release/ElectricCalculation.cpp.o diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o Binary files differindex c809356..b11b443 100644 --- a/Project/Release/Element.cpp.o +++ b/Project/Release/Element.cpp.o diff --git a/Project/Release/ElementDataObject.cpp.o b/Project/Release/ElementDataObject.cpp.o Binary files differindex d4c97c2..1982cfa 100644 --- a/Project/Release/ElementDataObject.cpp.o +++ b/Project/Release/ElementDataObject.cpp.o diff --git a/Project/Release/ElementDataObject.cpp.o.d b/Project/Release/ElementDataObject.cpp.o.d index cffe587..e58264b 100644 --- a/Project/Release/ElementDataObject.cpp.o.d +++ b/Project/Release/ElementDataObject.cpp.o.d @@ -1,5 +1,8 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ - ElectricCalculation.h Element.h C:/wxWidgets-3.1.0/include/wx/msgdlg.h \ + ElementDataObject.h Workspace.h C:/wxWidgets-3.1.0/include/wx/dcclient.h \ + C:/wxWidgets-3.1.0/include/wx/dc.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/defs.h \ C:/wxWidgets-3.1.0/include/wx/platform.h \ C:/wxWidgets-3.1.0/include/wx/compiler.h \ @@ -16,13 +19,6 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ 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 \ @@ -39,10 +35,17 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ 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/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/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/scopedptr.h \ + C:/wxWidgets-3.1.0/include/wx/checkeddelete.h \ + C:/wxWidgets-3.1.0/include/wx/colour.h \ + C:/wxWidgets-3.1.0/include/wx/gdiobj.h \ + C:/wxWidgets-3.1.0/include/wx/variant.h \ + C:/wxWidgets-3.1.0/include/wx/arrstr.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 \ @@ -50,44 +53,64 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ 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/longlong.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/dynarray.h \ + C:/wxWidgets-3.1.0/include/wx/any.h \ + C:/wxWidgets-3.1.0/include/wx/typeinfo.h \ + C:/wxWidgets-3.1.0/include/wx/msw/colour.h \ + C:/wxWidgets-3.1.0/include/wx/font.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/msw/font.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/filefn.h \ - C:/wxWidgets-3.1.0/include/wx/arrstr.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/versioninfo.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/msw/gdiimage.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/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/region.h \ + C:/wxWidgets-3.1.0/include/wx/msw/region.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/utils.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/msgdlg.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/clntdata.h \ + C:/wxWidgets-3.1.0/include/wx/cursor.h \ + C:/wxWidgets-3.1.0/include/wx/msw/cursor.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 \ @@ -110,30 +133,19 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ 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 Bus.h BusForm.h \ - ElementForm.h C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.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/clipbrd.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/msw/clipbrd.h WorkspaceBase.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 \ @@ -144,19 +156,43 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h \ C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h \ C:/wxWidgets-3.1.0/include/wx/sizer.h \ - C:/wxWidgets-3.1.0/include/wx/notebook.h \ + C:/wxWidgets-3.1.0/include/wx/glcanvas.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/log.h \ + C:/wxWidgets-3.1.0/include/wx/generic/logg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/app.h \ + C:/wxWidgets-3.1.0/include/wx/msw/glcanvas.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/bookctrl.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/withimages.h \ + C:/wxWidgets-3.1.0/include/wx/notebook.h \ C:/wxWidgets-3.1.0/include/wx/msw/notebook.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/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/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/systhemectrl.h \ + C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h Bus.h BusForm.h \ + ElementForm.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/choice.h \ C:/wxWidgets-3.1.0/include/wx/ctrlsub.h \ C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h \ @@ -174,18 +210,9 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ 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/dcclient.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/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/tooltip.h \ - C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \ C:/wxWidgets-3.1.0/include/wx/time.h \ C:/wxWidgets-3.1.0/include/wx/propgrid/property.h \ C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h \ @@ -210,47 +237,25 @@ Release/ElementDataObject.cpp.o: ElementDataObject.cpp \ 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 Capacitor.h Shunt.h \ - IndMotor.h Machines.h Inductor.h Line.h LineForm.h Branch.h Load.h \ - LoadForm.h SyncGenerator.h SyncMotor.h Transformer.h ElementDataObject.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 Workspace.h \ - C:/wxWidgets-3.1.0/include/wx/statusbr.h \ - C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h \ - C:/wxWidgets-3.1.0/include/wx/clipbrd.h \ - C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h WorkspaceBase.h \ - C:/wxWidgets-3.1.0/include/wx/glcanvas.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/msw/glcanvas.h + C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h Element.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/ownerdrw.h \ + C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \ + C:/wxWidgets-3.1.0/include/wx/msw/menu.h -ElectricCalculation.h: +ElementDataObject.h: -Element.h: +Workspace.h: -C:/wxWidgets-3.1.0/include/wx/msgdlg.h: +C:/wxWidgets-3.1.0/include/wx/dcclient.h: + +C:/wxWidgets-3.1.0/include/wx/dc.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/defs.h: @@ -284,20 +289,6 @@ 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: @@ -332,13 +323,27 @@ 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/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/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/scopedptr.h: + +C:/wxWidgets-3.1.0/include/wx/checkeddelete.h: + +C:/wxWidgets-3.1.0/include/wx/colour.h: + +C:/wxWidgets-3.1.0/include/wx/gdiobj.h: + +C:/wxWidgets-3.1.0/include/wx/variant.h: + +C:/wxWidgets-3.1.0/include/wx/arrstr.h: C:/wxWidgets-3.1.0/include/wx/list.h: @@ -354,81 +359,121 @@ 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/longlong.h: -C:/wxWidgets-3.1.0/include/wx/cursor.h: +C:/wxWidgets-3.1.0/include/wx/datetime.h: -C:/wxWidgets-3.1.0/include/wx/gdiobj.h: +C:/wxWidgets-3.1.0/include/wx/anystr.h: -C:/wxWidgets-3.1.0/include/wx/msw/gdiimage.h: +C:/wxWidgets-3.1.0/include/wx/dynarray.h: -C:/wxWidgets-3.1.0/include/wx/msw/cursor.h: +C:/wxWidgets-3.1.0/include/wx/any.h: -C:/wxWidgets-3.1.0/include/wx/utils.h: +C:/wxWidgets-3.1.0/include/wx/typeinfo.h: -C:/wxWidgets-3.1.0/include/wx/filefn.h: +C:/wxWidgets-3.1.0/include/wx/msw/colour.h: -C:/wxWidgets-3.1.0/include/wx/arrstr.h: +C:/wxWidgets-3.1.0/include/wx/font.h: -C:/wxWidgets-3.1.0/include/wx/versioninfo.h: +C:/wxWidgets-3.1.0/include/wx/gdicmn.h: -C:/wxWidgets-3.1.0/include/wx/meta/implicitconversion.h: +C:/wxWidgets-3.1.0/include/wx/math.h: -C:/wxWidgets-3.1.0/include/wx/mousestate.h: +C:/wxWidgets-3.1.0/include/wx/msw/font.h: -C:/wxWidgets-3.1.0/include/wx/kbdstate.h: +C:/wxWidgets-3.1.0/include/wx/bitmap.h: -C:/wxWidgets-3.1.0/include/wx/longlong.h: +C:/wxWidgets-3.1.0/include/wx/image.h: -C:/wxWidgets-3.1.0/include/wx/platinfo.h: +C:/wxWidgets-3.1.0/include/wx/stream.h: -C:/wxWidgets-3.1.0/include/wx/dynarray.h: +C:/wxWidgets-3.1.0/include/wx/filefn.h: -C:/wxWidgets-3.1.0/include/wx/thread.h: +C:/wxWidgets-3.1.0/include/wx/imagbmp.h: -C:/wxWidgets-3.1.0/include/wx/tracker.h: +C:/wxWidgets-3.1.0/include/wx/imagpng.h: -C:/wxWidgets-3.1.0/include/wx/typeinfo.h: +C:/wxWidgets-3.1.0/include/wx/versioninfo.h: -C:/wxWidgets-3.1.0/include/wx/any.h: +C:/wxWidgets-3.1.0/include/wx/imaggif.h: -C:/wxWidgets-3.1.0/include/wx/datetime.h: +C:/wxWidgets-3.1.0/include/wx/imagpcx.h: -C:/wxWidgets-3.1.0/include/wx/anystr.h: +C:/wxWidgets-3.1.0/include/wx/imagjpeg.h: -C:/wxWidgets-3.1.0/include/wx/variant.h: +C:/wxWidgets-3.1.0/include/wx/imagtga.h: -C:/wxWidgets-3.1.0/include/wx/meta/convertible.h: +C:/wxWidgets-3.1.0/include/wx/imagtiff.h: -C:/wxWidgets-3.1.0/include/wx/meta/removeref.h: +C:/wxWidgets-3.1.0/include/wx/imagpnm.h: -C:/wxWidgets-3.1.0/include/wx/font.h: +C:/wxWidgets-3.1.0/include/wx/imagxpm.h: -C:/wxWidgets-3.1.0/include/wx/msw/font.h: +C:/wxWidgets-3.1.0/include/wx/imagiff.h: -C:/wxWidgets-3.1.0/include/wx/colour.h: +C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h: -C:/wxWidgets-3.1.0/include/wx/msw/colour.h: +C:/wxWidgets-3.1.0/include/wx/msw/gdiimage.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/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/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/affinematrix2d.h: -C:/wxWidgets-3.1.0/include/wx/translation.h: +C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h: -C:/wxWidgets-3.1.0/include/wx/language.h: +C:/wxWidgets-3.1.0/include/wx/geometry.h: -C:/wxWidgets-3.1.0/include/wx/scopedptr.h: +C:/wxWidgets-3.1.0/include/wx/utils.h: -C:/wxWidgets-3.1.0/include/wx/checkeddelete.h: +C:/wxWidgets-3.1.0/include/wx/meta/implicitconversion.h: -C:/wxWidgets-3.1.0/include/wx/validate.h: +C:/wxWidgets-3.1.0/include/wx/mousestate.h: -C:/wxWidgets-3.1.0/include/wx/palette.h: +C:/wxWidgets-3.1.0/include/wx/kbdstate.h: -C:/wxWidgets-3.1.0/include/wx/msw/palette.h: +C:/wxWidgets-3.1.0/include/wx/platinfo.h: + +C:/wxWidgets-3.1.0/include/wx/msgdlg.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/clntdata.h: + +C:/wxWidgets-3.1.0/include/wx/cursor.h: + +C:/wxWidgets-3.1.0/include/wx/msw/cursor.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/meta/convertible.h: + +C:/wxWidgets-3.1.0/include/wx/meta/removeref.h: + +C:/wxWidgets-3.1.0/include/wx/validate.h: C:/wxWidgets-3.1.0/include/wx/accel.h: @@ -474,95 +519,109 @@ 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/statusbr.h: -C:/wxWidgets-3.1.0/include/wx/menu.h: +C:/wxWidgets-3.1.0/include/wx/control.h: -C:/wxWidgets-3.1.0/include/wx/menuitem.h: +C:/wxWidgets-3.1.0/include/wx/msw/control.h: -C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h: +C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h: -C:/wxWidgets-3.1.0/include/wx/bitmap.h: +C:/wxWidgets-3.1.0/include/wx/tooltip.h: -C:/wxWidgets-3.1.0/include/wx/image.h: +C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h: -C:/wxWidgets-3.1.0/include/wx/stream.h: +C:/wxWidgets-3.1.0/include/wx/clipbrd.h: -C:/wxWidgets-3.1.0/include/wx/imagbmp.h: +C:/wxWidgets-3.1.0/include/wx/dataobj.h: -C:/wxWidgets-3.1.0/include/wx/imagpng.h: +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h: -C:/wxWidgets-3.1.0/include/wx/imaggif.h: +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h: -C:/wxWidgets-3.1.0/include/wx/imagpcx.h: +C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h: -C:/wxWidgets-3.1.0/include/wx/imagjpeg.h: +C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h: -C:/wxWidgets-3.1.0/include/wx/imagtga.h: +WorkspaceBase.h: -C:/wxWidgets-3.1.0/include/wx/imagtiff.h: +C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h: -C:/wxWidgets-3.1.0/include/wx/imagpnm.h: +C:/wxWidgets-3.1.0/include/wx/filesys.h: -C:/wxWidgets-3.1.0/include/wx/imagxpm.h: +C:/wxWidgets-3.1.0/include/wx/filename.h: -C:/wxWidgets-3.1.0/include/wx/imagiff.h: +C:/wxWidgets-3.1.0/include/wx/file.h: -C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h: +C:/wxWidgets-3.1.0/include/wx/convauto.h: -C:/wxWidgets-3.1.0/include/wx/ownerdrw.h: +C:/wxWidgets-3.1.0/include/wx/artprov.h: -C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h: +C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h: -C:/wxWidgets-3.1.0/include/wx/msw/menu.h: +C:/wxWidgets-3.1.0/include/wx/imaglist.h: -C:/wxWidgets-3.1.0/include/wx/log.h: +C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h: -C:/wxWidgets-3.1.0/include/wx/generic/logg.h: +C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h: -Bus.h: +C:/wxWidgets-3.1.0/include/wx/sizer.h: -BusForm.h: +C:/wxWidgets-3.1.0/include/wx/glcanvas.h: -ElementForm.h: +C:/wxWidgets-3.1.0/include/wx/app.h: -C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h: +C:/wxWidgets-3.1.0/include/wx/eventfilter.h: -C:/wxWidgets-3.1.0/include/wx/filesys.h: +C:/wxWidgets-3.1.0/include/wx/build.h: -C:/wxWidgets-3.1.0/include/wx/filename.h: +C:/wxWidgets-3.1.0/include/wx/cmdargs.h: -C:/wxWidgets-3.1.0/include/wx/file.h: +C:/wxWidgets-3.1.0/include/wx/init.h: -C:/wxWidgets-3.1.0/include/wx/convauto.h: +C:/wxWidgets-3.1.0/include/wx/msw/init.h: -C:/wxWidgets-3.1.0/include/wx/artprov.h: +C:/wxWidgets-3.1.0/include/wx/log.h: -C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h: +C:/wxWidgets-3.1.0/include/wx/generic/logg.h: -C:/wxWidgets-3.1.0/include/wx/imaglist.h: +C:/wxWidgets-3.1.0/include/wx/msw/app.h: -C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h: +C:/wxWidgets-3.1.0/include/wx/msw/glcanvas.h: -C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h: +C:/wxWidgets-3.1.0/include/wx/persist.h: -C:/wxWidgets-3.1.0/include/wx/sizer.h: +C:/wxWidgets-3.1.0/include/wx/confbase.h: -C:/wxWidgets-3.1.0/include/wx/notebook.h: +C:/wxWidgets-3.1.0/include/wx/base64.h: -C:/wxWidgets-3.1.0/include/wx/bookctrl.h: +C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h: -C:/wxWidgets-3.1.0/include/wx/control.h: +C:/wxWidgets-3.1.0/include/wx/persist/window.h: -C:/wxWidgets-3.1.0/include/wx/msw/control.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/bookctrl.h: C:/wxWidgets-3.1.0/include/wx/withimages.h: +C:/wxWidgets-3.1.0/include/wx/notebook.h: + C:/wxWidgets-3.1.0/include/wx/msw/notebook.h: -C:/wxWidgets-3.1.0/include/wx/stattext.h: +C:/wxWidgets-3.1.0/include/wx/persist/treebook.h: -C:/wxWidgets-3.1.0/include/wx/msw/stattext.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/textctrl.h: @@ -574,6 +633,20 @@ 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/systhemectrl.h: + +C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h: + +Bus.h: + +BusForm.h: + +ElementForm.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/choice.h: C:/wxWidgets-3.1.0/include/wx/ctrlsub.h: @@ -608,32 +681,12 @@ 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/dcclient.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/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/tooltip.h: - -C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h: - C:/wxWidgets-3.1.0/include/wx/time.h: C:/wxWidgets-3.1.0/include/wx/propgrid/property.h: @@ -682,100 +735,18 @@ 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: - -Capacitor.h: - -Shunt.h: - -IndMotor.h: - -Machines.h: - -Inductor.h: - -Line.h: - -LineForm.h: - -Branch.h: - -Load.h: - -LoadForm.h: - -SyncGenerator.h: - -SyncMotor.h: - -Transformer.h: - -ElementDataObject.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: - -Workspace.h: - -C:/wxWidgets-3.1.0/include/wx/statusbr.h: - -C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h: - -C:/wxWidgets-3.1.0/include/wx/clipbrd.h: - -C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h: - -WorkspaceBase.h: - -C:/wxWidgets-3.1.0/include/wx/glcanvas.h: - -C:/wxWidgets-3.1.0/include/wx/app.h: - -C:/wxWidgets-3.1.0/include/wx/eventfilter.h: +Element.h: -C:/wxWidgets-3.1.0/include/wx/build.h: +C:/wxWidgets-3.1.0/include/wx/menu.h: -C:/wxWidgets-3.1.0/include/wx/cmdargs.h: +C:/wxWidgets-3.1.0/include/wx/menuitem.h: -C:/wxWidgets-3.1.0/include/wx/init.h: +C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h: -C:/wxWidgets-3.1.0/include/wx/msw/init.h: +C:/wxWidgets-3.1.0/include/wx/ownerdrw.h: -C:/wxWidgets-3.1.0/include/wx/msw/app.h: +C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h: -C:/wxWidgets-3.1.0/include/wx/msw/glcanvas.h: +C:/wxWidgets-3.1.0/include/wx/msw/menu.h: diff --git a/Project/Release/ElementForm.cpp.o b/Project/Release/ElementForm.cpp.o Binary files differindex a6cbbf8..2fbdd20 100644 --- a/Project/Release/ElementForm.cpp.o +++ b/Project/Release/ElementForm.cpp.o diff --git a/Project/Release/FileHanding.cpp.o b/Project/Release/FileHanding.cpp.o Binary files differindex e221bbb..7483e5a 100644 --- a/Project/Release/FileHanding.cpp.o +++ b/Project/Release/FileHanding.cpp.o diff --git a/Project/Release/FileHanding.cpp.o.d b/Project/Release/FileHanding.cpp.o.d index 65cccdd..ba0c881 100644 --- a/Project/Release/FileHanding.cpp.o.d +++ b/Project/Release/FileHanding.cpp.o.d @@ -138,7 +138,13 @@ Release/FileHanding.cpp.o: FileHanding.cpp FileHanding.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 WorkspaceBase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/clipbrd.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/msw/clipbrd.h WorkspaceBase.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 \ @@ -251,10 +257,6 @@ Release/FileHanding.cpp.o: FileHanding.cpp FileHanding.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 \ @@ -573,6 +575,18 @@ 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/clipbrd.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/msw/clipbrd.h: + WorkspaceBase.h: C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h: @@ -835,14 +849,6 @@ 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: diff --git a/Project/Release/GeneratorStabForm.cpp.o b/Project/Release/GeneratorStabForm.cpp.o Binary files differindex d7ed1ff..95fb64a 100644 --- a/Project/Release/GeneratorStabForm.cpp.o +++ b/Project/Release/GeneratorStabForm.cpp.o diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o Binary files differindex b59825f..e196bcb 100644 --- a/Project/Release/IndMotor.cpp.o +++ b/Project/Release/IndMotor.cpp.o diff --git a/Project/Release/IndMotorForm.cpp.o b/Project/Release/IndMotorForm.cpp.o Binary files differindex 91ac5b7..57bcd39 100644 --- a/Project/Release/IndMotorForm.cpp.o +++ b/Project/Release/IndMotorForm.cpp.o diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o Binary files differindex b727883..4c50d11 100644 --- a/Project/Release/Inductor.cpp.o +++ b/Project/Release/Inductor.cpp.o diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o Binary files differindex 30a5673..e91c5e1 100644 --- a/Project/Release/Line.cpp.o +++ b/Project/Release/Line.cpp.o diff --git a/Project/Release/LineForm.cpp.o b/Project/Release/LineForm.cpp.o Binary files differindex 81b3aac..020011d 100644 --- a/Project/Release/LineForm.cpp.o +++ b/Project/Release/LineForm.cpp.o diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o Binary files differindex 01a0de8..846317d 100644 --- a/Project/Release/Load.cpp.o +++ b/Project/Release/Load.cpp.o diff --git a/Project/Release/LoadForm.cpp.o b/Project/Release/LoadForm.cpp.o Binary files differindex 13ac9f0..4fb2a0e 100644 --- a/Project/Release/LoadForm.cpp.o +++ b/Project/Release/LoadForm.cpp.o diff --git a/Project/Release/Machines.cpp.o b/Project/Release/Machines.cpp.o Binary files differindex 7c9984e..1ea13c6 100644 --- a/Project/Release/Machines.cpp.o +++ b/Project/Release/Machines.cpp.o diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o Binary files differindex 87dd6dd..6889907 100644 --- a/Project/Release/MainFrame.cpp.o +++ b/Project/Release/MainFrame.cpp.o diff --git a/Project/Release/MainFrame.cpp.o.d b/Project/Release/MainFrame.cpp.o.d index c8ce32c..5b1e3df 100644 --- a/Project/Release/MainFrame.cpp.o.d +++ b/Project/Release/MainFrame.cpp.o.d @@ -196,7 +196,13 @@ Release/MainFrame.cpp.o: MainFrame.cpp MainFrame.h \ C:/wxWidgets-3.1.0/include/wx/dc.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 WorkspaceBase.h \ + C:/wxWidgets-3.1.0/include/wx/geometry.h \ + C:/wxWidgets-3.1.0/include/wx/clipbrd.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/msw/clipbrd.h WorkspaceBase.h \ C:/wxWidgets-3.1.0/include/wx/glcanvas.h \ C:/wxWidgets-3.1.0/include/wx/app.h \ C:/wxWidgets-3.1.0/include/wx/eventfilter.h \ @@ -263,10 +269,6 @@ Release/MainFrame.cpp.o: MainFrame.cpp MainFrame.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 \ @@ -703,6 +705,18 @@ 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/clipbrd.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/msw/clipbrd.h: + WorkspaceBase.h: C:/wxWidgets-3.1.0/include/wx/glcanvas.h: @@ -875,14 +889,6 @@ 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: diff --git a/Project/Release/MainFrameBase.cpp.o b/Project/Release/MainFrameBase.cpp.o Binary files differindex 3cf1c3e..ec938af 100644 --- a/Project/Release/MainFrameBase.cpp.o +++ b/Project/Release/MainFrameBase.cpp.o diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe Binary files differindex 5ba2374..bf9a5a4 100644 --- a/Project/Release/PSP-UFU.exe +++ b/Project/Release/PSP-UFU.exe diff --git a/Project/Release/PowerFlow.cpp.o b/Project/Release/PowerFlow.cpp.o Binary files differindex 1f23463..73590b6 100644 --- a/Project/Release/PowerFlow.cpp.o +++ b/Project/Release/PowerFlow.cpp.o diff --git a/Project/Release/ReactiveShuntElementForm.cpp.o b/Project/Release/ReactiveShuntElementForm.cpp.o Binary files differindex afb73b1..af53698 100644 --- a/Project/Release/ReactiveShuntElementForm.cpp.o +++ b/Project/Release/ReactiveShuntElementForm.cpp.o diff --git a/Project/Release/Shunt.cpp.o b/Project/Release/Shunt.cpp.o Binary files differindex 4b51734..2706951 100644 --- a/Project/Release/Shunt.cpp.o +++ b/Project/Release/Shunt.cpp.o diff --git a/Project/Release/SwitchingForm.cpp.o b/Project/Release/SwitchingForm.cpp.o Binary files differindex 627da1b..453f2e9 100644 --- a/Project/Release/SwitchingForm.cpp.o +++ b/Project/Release/SwitchingForm.cpp.o diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o Binary files differindex cc55904..f594135 100644 --- a/Project/Release/SyncGenerator.cpp.o +++ b/Project/Release/SyncGenerator.cpp.o diff --git a/Project/Release/SyncMachineForm.cpp.o b/Project/Release/SyncMachineForm.cpp.o Binary files differindex 82245a5..4976057 100644 --- a/Project/Release/SyncMachineForm.cpp.o +++ b/Project/Release/SyncMachineForm.cpp.o diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o Binary files differindex 5414ed7..df88b3c 100644 --- a/Project/Release/SyncMotor.cpp.o +++ b/Project/Release/SyncMotor.cpp.o diff --git a/Project/Release/Text.cpp.o b/Project/Release/Text.cpp.o Binary files differindex 8740298..5006c69 100644 --- a/Project/Release/Text.cpp.o +++ b/Project/Release/Text.cpp.o diff --git a/Project/Release/TextForm.cpp.o b/Project/Release/TextForm.cpp.o Binary files differindex 7e6ca32..69a7459 100644 --- a/Project/Release/TextForm.cpp.o +++ b/Project/Release/TextForm.cpp.o diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o Binary files differindex fc03fb8..fa97dd1 100644 --- a/Project/Release/Transformer.cpp.o +++ b/Project/Release/Transformer.cpp.o diff --git a/Project/Release/TransformerForm.cpp.o b/Project/Release/TransformerForm.cpp.o Binary files differindex 58d9bdb..045aaf1 100644 --- a/Project/Release/TransformerForm.cpp.o +++ b/Project/Release/TransformerForm.cpp.o diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o Binary files differindex 4eaf28b..62ae383 100644 --- a/Project/Release/Workspace.cpp.o +++ b/Project/Release/Workspace.cpp.o diff --git a/Project/Release/main.cpp.o b/Project/Release/main.cpp.o Binary files differindex 9925528..e27c6a6 100644 --- a/Project/Release/main.cpp.o +++ b/Project/Release/main.cpp.o diff --git a/Project/Release/main.cpp.o.d b/Project/Release/main.cpp.o.d index 165c4a0..ddea6d9 100644 --- a/Project/Release/main.cpp.o.d +++ b/Project/Release/main.cpp.o.d @@ -139,7 +139,9 @@ Release/main.cpp.o: main.cpp C:/wxWidgets-3.1.0/include/wx/app.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 MainFrameBase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h \ + C:/wxWidgets-3.1.0/include/wx/filedlg.h \ + C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h MainFrameBase.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 \ @@ -489,6 +491,10 @@ 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/filedlg.h: + +C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h: + MainFrameBase.h: C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h: diff --git a/Project/Release/wxmsw310u_gcc_64x.dll b/Project/Release/wxmsw310u_gcc_64x.dll Binary files differindex ca43121..6a09726 100644 --- a/Project/Release/wxmsw310u_gcc_64x.dll +++ b/Project/Release/wxmsw310u_gcc_64x.dll diff --git a/Project/Release/wxmsw310u_gl_gcc_64x.dll b/Project/Release/wxmsw310u_gl_gcc_64x.dll Binary files differindex f9e60dd..61ac9c7 100644 --- a/Project/Release/wxmsw310u_gl_gcc_64x.dll +++ b/Project/Release/wxmsw310u_gl_gcc_64x.dll diff --git a/Project/SyncGenerator.cpp b/Project/SyncGenerator.cpp index 463c56d..c20bff1 100644 --- a/Project/SyncGenerator.cpp +++ b/Project/SyncGenerator.cpp @@ -135,3 +135,10 @@ void SyncGenerator::SetNominalVoltage(std::vector<double> nominalVoltage, std::v m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0]; } } + +Element* SyncGenerator::GetCopy() +{ + SyncGenerator* copy = new SyncGenerator(); + *copy = *this; + return copy; +} diff --git a/Project/SyncGenerator.h b/Project/SyncGenerator.h index 0ff3f6a..3fe5a3b 100644 --- a/Project/SyncGenerator.h +++ b/Project/SyncGenerator.h @@ -67,7 +67,8 @@ public: SyncGenerator(); SyncGenerator(wxString name); ~SyncGenerator(); - + + virtual Element* GetCopy(); virtual void Init(); virtual void DrawSymbol() const; virtual bool GetContextMenu(wxMenu& menu); diff --git a/Project/SyncMotor.cpp b/Project/SyncMotor.cpp index 2f9c3ce..13ea5e4 100644 --- a/Project/SyncMotor.cpp +++ b/Project/SyncMotor.cpp @@ -97,3 +97,10 @@ SyncMotorElectricalData SyncMotor::GetPUElectricalData(double systemPowerBase) return data; } + +Element* SyncMotor::GetCopy() +{ + SyncMotor* copy = new SyncMotor(); + *copy = *this; + return copy; +} diff --git a/Project/SyncMotor.h b/Project/SyncMotor.h index 1f65386..a7eecd8 100644 --- a/Project/SyncMotor.h +++ b/Project/SyncMotor.h @@ -62,7 +62,8 @@ class SyncMotor : public Machines SyncMotor(); SyncMotor(wxString name); ~SyncMotor(); - + + virtual Element* GetCopy(); virtual void DrawSymbol() const; virtual bool GetContextMenu(wxMenu& menu); virtual SyncMotorElectricalData GetElectricalData() { return m_electricalData; } diff --git a/Project/Text.cpp b/Project/Text.cpp index f012044..05915f7 100644 --- a/Project/Text.cpp +++ b/Project/Text.cpp @@ -894,3 +894,10 @@ void Text::UpdateText(double systemPowerBase) } break; } } + +Element* Text::GetCopy() +{ + Text* copy = new Text(); + *copy = *this; + return copy; +} diff --git a/Project/Text.h b/Project/Text.h index 80f35fa..36a6704 100644 --- a/Project/Text.h +++ b/Project/Text.h @@ -50,7 +50,8 @@ class Text : public Element Text(); Text(wxPoint2DDouble position); ~Text(); - + + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position) { return true; }; virtual bool Contains(wxPoint2DDouble position) const; virtual void Draw(wxPoint2DDouble translation, double scale); diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp index 4110317..2ba6850 100644 --- a/Project/Transformer.cpp +++ b/Project/Transformer.cpp @@ -92,7 +92,7 @@ bool Transformer::Contains(wxPoint2DDouble position) const void Transformer::Draw(wxPoint2DDouble translation, double scale) const { - OpenGLColour* elementColour; + OpenGLColour elementColour; if(m_online) elementColour = m_onlineElementColour; else elementColour = m_offlineElementColour; @@ -101,7 +101,7 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const if(m_selected) { // Push the current matrix on stack. glLineWidth(1.5 + m_borderSize * 2.0); - glColor4dv(m_selectionColour->GetRGBA()); + glColor4dv(m_selectionColour.GetRGBA()); DrawLine(m_pointList); glPushMatrix(); // Rotate the matrix around the object position. @@ -128,12 +128,12 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const // Draw transformer (layer 2). // Transformer line glLineWidth(1.5); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawLine(m_pointList); // Draw nodes. if(m_pointList.size() > 0) { - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON); if(m_inserted) { DrawCircle(m_pointList[m_pointList.size() - 1], 5.0, 10, GL_POLYGON); @@ -154,7 +154,7 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20, GL_POLYGON); DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20, GL_POLYGON); - glColor4dv(elementColour->GetRGBA()); + glColor4dv(elementColour.GetRGBA()); DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20); DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20); @@ -378,3 +378,10 @@ void Transformer::SetPowerFlowDirection(PowerFlowDirection pfDirection) m_pfDirection = pfDirection; UpdatePowerFlowArrowsPosition(); } + +Element* Transformer::GetCopy() +{ + Transformer* copy = new Transformer(); + *copy = *this; + return copy; +} diff --git a/Project/Transformer.h b/Project/Transformer.h index 79e2380..5020fbd 100644 --- a/Project/Transformer.h +++ b/Project/Transformer.h @@ -57,7 +57,8 @@ class Transformer : public Branch Transformer(); Transformer(wxString name); virtual ~Transformer(); - + + virtual Element* GetCopy(); virtual bool AddParent(Element* parent, wxPoint2DDouble position); virtual bool Contains(wxPoint2DDouble position) const; virtual void Draw(wxPoint2DDouble translation, double scale) const; diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 93c846c..70416b6 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -26,8 +26,8 @@ Camera::Camera() Camera::~Camera() {} wxPoint2DDouble Camera::ScreenToWorld(wxPoint2DDouble screenCoords) const { - return wxPoint2DDouble( - screenCoords.m_x / m_scale - m_translation.m_x, screenCoords.m_y / m_scale - m_translation.m_y); + return wxPoint2DDouble(screenCoords.m_x / m_scale - m_translation.m_x, + screenCoords.m_y / m_scale - m_translation.m_y); } void Camera::SetTranslation(wxPoint2DDouble screenPoint) @@ -55,12 +55,8 @@ wxPoint2DDouble Camera::GetMousePosition(bool worldCoords) const } // Workspace -Workspace::Workspace() - : WorkspaceBase(NULL) -{ -} -Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) - : WorkspaceBase(parent) +Workspace::Workspace() : WorkspaceBase(NULL) {} +Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : WorkspaceBase(parent) { m_name = name; m_statusBar = statusBar; @@ -69,18 +65,18 @@ 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 }; + const int widths[4] = {-3, -1, 100, 100}; m_statusBar->SetStatusWidths(4, widths); } 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,22 +88,22 @@ void Workspace::OnPaint(wxPaintEvent& event) SetViewport(); // Set GLCanvas scale and translation. - glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale - glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation + glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale + glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation // Draw // 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()); - } + Text* text = *it; + text->Draw(m_camera->GetTranslation(), m_camera->GetScale()); + } // Selection rectangle glLineWidth(1.0); @@ -126,14 +122,14 @@ void Workspace::OnPaint(wxPaintEvent& event) glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y); glEnd(); - glFlush(); // Sends all pending information directly to the GPU. + glFlush(); // Sends all pending information directly to the GPU. m_glCanvas->SwapBuffers(); event.Skip(); } void Workspace::SetViewport() { - glClearColor(1.0, 1.0, 1.0, 1.0); // White background. + glClearColor(1.0, 1.0, 1.0, 1.0); // White background. glClear(GL_COLOR_BUFFER_BIT); glDisable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); @@ -160,95 +156,103 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) { bool foundElement = false; if(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE) { - m_mode = MODE_EDIT; - } else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) { - // 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); - } - } - - // Text element - for(auto it = m_textList.begin(); it != m_textList.end(); it++) { - Text* text = *it; - - text->StartMove(m_camera->ScreenToWorld(event.GetPosition())); - - if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - if(!foundElement) { - text->SetSelected(); - m_mode = MODE_MOVE_ELEMENT; - foundElement = true; - } - } - } - } + m_mode = MODE_EDIT; + } + else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) + { + // 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); + } + } + + // Text element + for(auto it = m_textList.begin(); it != m_textList.end(); it++) { + Text* text = *it; + + text->StartMove(m_camera->ScreenToWorld(event.GetPosition())); + + if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + if(!foundElement) { + text->SetSelected(); + m_mode = MODE_MOVE_ELEMENT; + foundElement = 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(); @@ -261,64 +265,67 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event) bool redraw = false; 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); - elementEdited = true; - redraw = true; - - // 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); + elementEdited = true; + redraw = true; + + // 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); + } + } // Text element for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { - Text* text = *it; - if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - text->ShowForm(this, m_elementList); - redraw = true; - } - } + Text* text = *it; + if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + text->ShowForm(this, m_elementList); + redraw = true; + } + } if(elementEdited) UpdateTextElements(); if(redraw) Redraw(); } @@ -327,33 +334,33 @@ 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) @@ -366,98 +373,110 @@ 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(); + } + } + } // Text element for(auto it = m_textList.begin(); it != m_textList.end(); it++) { - Text* text = *it; - if(m_mode == MODE_SELECTION_RECT) { - if(text->Intersects(m_selectionRect)) { - text->SetSelected(); - } else { - text->SetSelected(false); - } - } else if(!event.ControlDown()) { - if(!text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { - text->SetSelected(false); - } - } - } + Text* text = *it; + if(m_mode == MODE_SELECTION_RECT) { + if(text->Intersects(m_selectionRect)) { + text->SetSelected(); + } + else + { + text->SetSelected(false); + } + } + else if(!event.ControlDown()) + { + if(!text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { + text->SetSelected(false); + } + } + } 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(); @@ -466,125 +485,151 @@ 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_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: - case MODE_DRAG_INSERT_TEXT: { - 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: - case MODE_PASTE: { - 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; - } - } - // Text element motion - for(auto it = m_textList.begin(); it != m_textList.end(); it++) { - Text* text = *it; - if(text->IsSelected()) { - text->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: + case MODE_DRAG_INSERT_TEXT: + { + 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: + case MODE_PASTE: + { + 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; + } + } + // Text element motion + for(auto it = m_textList.begin(); it != m_textList.end(); it++) { + Text* text = *it; + if(text->IsSelected()) { + text->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()); @@ -596,13 +641,18 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) { // Set to drag mode. if(m_mode != MODE_INSERT && m_mode != MODE_INSERT_TEXT && m_mode != MODE_DRAG_INSERT && - m_mode != MODE_DRAG_INSERT_TEXT) { - m_mode = MODE_DRAG; - } else if(m_mode == MODE_INSERT_TEXT) { - m_mode = MODE_DRAG_INSERT_TEXT; - } else { - m_mode = MODE_DRAG_INSERT; - } + m_mode != MODE_DRAG_INSERT_TEXT) + { + m_mode = MODE_DRAG; + } + else if(m_mode == MODE_INSERT_TEXT) + { + m_mode = MODE_DRAG_INSERT_TEXT; + } + else + { + m_mode = MODE_DRAG_INSERT; + } m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition())); UpdateStatusBar(); } @@ -610,23 +660,28 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) void Workspace::OnMiddleUp(wxMouseEvent& event) { if(m_mode != MODE_INSERT && m_mode != MODE_INSERT_TEXT && m_mode != MODE_DRAG_INSERT && - m_mode != MODE_DRAG_INSERT_TEXT) { - // Set to edit mode back. - m_mode = MODE_EDIT; - } else if(m_mode == MODE_DRAG_INSERT_TEXT) { - m_mode = MODE_INSERT_TEXT; - } else if(m_mode == MODE_DRAG_INSERT) { - m_mode = MODE_INSERT; - } + m_mode != MODE_DRAG_INSERT_TEXT) + { + // Set to edit mode back. + m_mode = MODE_EDIT; + } + else if(m_mode == MODE_DRAG_INSERT_TEXT) + { + m_mode = MODE_INSERT_TEXT; + } + 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(); @@ -639,154 +694,189 @@ 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(); - } else if(m_mode == MODE_INSERT_TEXT) { - m_textList.pop_back(); - m_mode = MODE_EDIT; - Redraw(); - } - } break; - case WXK_DELETE: // Delete selected elements - { - DeleteSelectedElements(); - } break; - case 'A': { - if(!insertingElement) { - 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(!insertingElement) { - 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(!insertingElement) { - 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(!insertingElement) { - 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(!insertingElement) { - 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(!insertingElement) { - 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(!insertingElement) { - 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(!insertingElement) { - 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(); - } else if(event.GetModifiers() == wxMOD_CONTROL) { // Copy. - CopySelection(); - } - } - } break; - case 'V': { - if(!insertingElement) { - if(event.GetModifiers() == wxMOD_CONTROL) { - Paste(); - } - } - } 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(); + } + else if(m_mode == MODE_INSERT_TEXT) + { + m_textList.pop_back(); + m_mode = MODE_EDIT; + Redraw(); + } + } + break; + case WXK_DELETE: // Delete selected elements + { + DeleteSelectedElements(); + } + break; + case 'A': + { + if(!insertingElement) { + 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(!insertingElement) { + 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(!insertingElement) { + 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(!insertingElement) { + 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(!insertingElement) { + 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(!insertingElement) { + 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(!insertingElement) { + 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(!insertingElement) { + 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(); + } + else if(event.GetModifiers() == wxMOD_CONTROL) + { // Copy. + CopySelection(); + } + } + } + break; + case 'V': + { + if(!insertingElement) { + if(event.GetModifiers() == wxMOD_CONTROL) { + Paste(); + } + } + } + break; + default: + break; + } + } UpdateStatusBar(); event.Skip(); @@ -794,27 +884,34 @@ 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_INSERT_TEXT: - case MODE_DRAG_INSERT: - case MODE_DRAG_INSERT_TEXT: { - 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: + case MODE_DRAG_INSERT_TEXT: + { + 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( @@ -826,106 +923,123 @@ 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()); + } + } // Rotate text element for(auto it = m_textList.begin(); it != m_textList.end(); it++) { - Text* text = *it; - if(text->IsSelected()) { - text->Rotate(clockwise); - text->StartMove(m_camera->GetMousePosition()); - } - } + Text* text = *it; + if(text->IsSelected()) { + text->Rotate(clockwise); + text->StartMove(m_camera->GetMousePosition()); + } + } Redraw(); } @@ -933,55 +1047,55 @@ void Workspace::DeleteSelectedElements() { // Don't set the end of the list at the loop's begin. 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); - } - } - } - - for(auto itt = m_textList.begin(); itt != m_textList.end(); ++itt) { - Text* text = *itt; - if(text->GetElement() == element) m_textList.erase(itt--); - } - - 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); + } + } + } + + for(auto itt = m_textList.begin(); itt != m_textList.end(); ++itt) { + Text* text = *itt; + if(text->GetElement() == element) m_textList.erase(itt--); + } + + m_elementList.erase(it--); + } + } for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { - Text* text = *it; - if(text->IsSelected()) m_textList.erase(it--); - } + Text* text = *it; + if(text->IsSelected()) m_textList.erase(it--); + } Redraw(); } bool Workspace::GetElementsCorners(wxPoint2DDouble& leftUpCorner, - wxPoint2DDouble& rightDownCorner, - std::vector<Element*> elementList) + wxPoint2DDouble& rightDownCorner, + std::vector<Element*> elementList) { if(elementList.size() == 0) return false; elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner); for(auto it = elementList.begin() + 1, itEnd = elementList.end(); it != itEnd; 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; - } + 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; + } return true; } @@ -991,8 +1105,8 @@ void Workspace::Fit() wxPoint2DDouble rightDownCorner(0, 0); std::vector<Element*> elementList = m_elementList; for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) { - elementList.push_back(*it); - } + elementList.push_back(*it); + } if(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) return; int width = 0.0; @@ -1019,28 +1133,29 @@ 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(); } @@ -1048,19 +1163,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() @@ -1068,9 +1183,9 @@ 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(); + } UpdateTextElements(); Redraw(); @@ -1081,14 +1196,36 @@ bool Workspace::RunPowerFlow() void Workspace::UpdateTextElements() { for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { - Text* text = *it; - text->UpdateText(100e6); - } + Text* text = *it; + text->UpdateText(100e6); + } } void Workspace::CopySelection() { - ElementDataObject* dataObject = new ElementDataObject(this); + std::vector<Element*> selectedElements; + // The buses need to be numerated to associate the child's parents to the copies. + int busNumber = 0; + for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { + Element* element = *it; + if(typeid(*element) == typeid(Bus)) { + Bus* bus = (Bus*)element; + auto data = bus->GetEletricalData(); + data.number = busNumber; + bus->SetElectricalData(data); + busNumber++; + } + if(element->IsSelected()) { + selectedElements.push_back(element); + } + } + for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) { + Text* text = *it; + if(text->IsSelected()) { + selectedElements.push_back(text); + } + } + ElementDataObject* dataObject = new ElementDataObject(selectedElements); wxTheClipboard->SetData(dataObject); wxTheClipboard->Close(); } @@ -1096,112 +1233,96 @@ void Workspace::CopySelection() bool Workspace::Paste() { if(wxTheClipboard->Open()) { - ElementDataObject dataObject(NULL); - - if(wxTheClipboard->IsSupported(wxDataFormat("PSPCopy"))) { - if(!wxTheClipboard->GetData(dataObject)) { - wxMessageDialog dialog(this, _("It was not possible to paste from clipboard."), _("Error"), - wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition); - dialog.ShowModal(); - wxTheClipboard->Close(); - return false; - } - } else { - wxTheClipboard->Close(); - return false; - } - wxTheClipboard->Close(); - - UnselectAll(); - - std::vector<Element*> pastedElements; - ElementsLists* elementsLists = dataObject.GetElementsLists(); - - // Paste buses. - auto busList = elementsLists->busList; - std::vector<Bus*> pastedBusList; // To set new parents; - for(auto it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) { - Bus* bus = *it; - Bus* copyBus = new Bus(); - *copyBus = *bus; - pastedElements.push_back(copyBus); - pastedBusList.push_back(copyBus); - m_elementList.push_back(copyBus); - } - - // Paste lines. - auto lineList = elementsLists->lineList; - for(auto it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) { - Line* line = *it; - Line* copyLine = new Line(); - *copyLine = *line; - - // Change the parent if copied, otherwise remove it. - for(int j = 0; j < (int)copyLine->GetParentList().size(); j++) { - Bus* currentParent = (Bus*)copyLine->GetParentList()[j]; - if(currentParent) { - int parentNumber = currentParent->GetEletricalData().number; - bool parentCopied = false; - for(int k = 0; k < (int)pastedBusList.size(); k++) { - Bus* newParent = pastedBusList[k]; - if(parentNumber == newParent->GetEletricalData().number) - copyLine->ReplaceParent(currentParent, newParent); - } - if(!parentCopied) copyLine->RemoveParent(currentParent); - } - } - - pastedElements.push_back(copyLine); - m_elementList.push_back(copyLine); - } - - // Paste transformers. - auto transformerList = elementsLists->transformerList; - for(auto it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) { - Transformer* transformer = *it; - Transformer* copyTransfomer = new Transformer(); - *copyTransfomer = *transformer; - - // Change the parent if copied, otherwise remove it. - for(int j = 0; j < (int)copyTransfomer->GetParentList().size(); j++) { - Bus* currentParent = (Bus*)copyTransfomer->GetParentList()[j]; - if(currentParent) { - int parentNumber = currentParent->GetEletricalData().number; - bool parentCopied = false; - for(int k = 0; k < (int)pastedBusList.size(); k++) { - Bus* newParent = pastedBusList[k]; - if(parentNumber == newParent->GetEletricalData().number) - copyTransfomer->ReplaceParent(currentParent, newParent); - } - if(!parentCopied) copyTransfomer->RemoveParent(currentParent); - } - } - - pastedElements.push_back(copyTransfomer); - m_elementList.push_back(copyTransfomer); - } - - // Move elements (and nodes) to the mouse position. - // The start position it's the center of the pasted objects. - wxPoint2DDouble leftUpCorner, rightDownCorner; - GetElementsCorners(leftUpCorner, rightDownCorner, pastedElements); - wxPoint2DDouble startPosition = (leftUpCorner + rightDownCorner) / 2.0; - for(auto it = pastedElements.begin(), itEnd = pastedElements.end(); it != itEnd; ++it) { - Element* element = *it; - element->StartMove(startPosition); - element->Move(m_camera->GetMousePosition()); - for(int i = 0; i < (int)element->GetParentList().size(); i++) { - Element* parent = element->GetParentList()[i]; - element->MoveNode(parent, m_camera->GetMousePosition()); - } - } - - } else { - wxMessageDialog dialog(this, _("It was not possible to paste from clipboard."), _("Error"), - wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition); - dialog.ShowModal(); - return false; - } + ElementDataObject dataObject; + + if(wxTheClipboard->IsSupported(wxDataFormat("PSPCopy"))) { + if(!wxTheClipboard->GetData(dataObject)) { + wxMessageDialog dialog(this, _("It was not possible to paste from clipboard."), _("Error"), + wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition); + dialog.ShowModal(); + wxTheClipboard->Close(); + return false; + } + } + else + { + wxTheClipboard->Close(); + return false; + } + wxTheClipboard->Close(); + + UnselectAll(); + + std::vector<Element*> pastedElements; + ElementsLists* elementsLists = dataObject.GetElementsLists(); + + // Paste buses (parents). + auto parentList = elementsLists->parentList; + std::vector<Bus*> pastedBusList; // To set new parents; + for(auto it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) { + Element* copy = (*it)->GetCopy(); + if(copy) { + pastedElements.push_back((Bus*)copy); + pastedBusList.push_back((Bus*)copy); + m_elementList.push_back((Bus*)copy); + } + } + + // Paste other elements. + auto elementLists = elementsLists->elementList; + for(auto it = elementLists.begin(), itEnd = elementLists.end(); it != itEnd; ++it) { + Element* copy = (*it)->GetCopy(); + if(copy) { + // Check if is text element + if(typeid(*copy) == typeid(Text)) { + pastedElements.push_back(copy); + m_textList.push_back((Text*)copy); + } + else + { + // Change the parent if copied, otherwise remove it. + for(int j = 0; j < (int)copy->GetParentList().size(); j++) { + Bus* currentParent = (Bus*)copy->GetParentList()[j]; + if(currentParent) { + int parentNumber = currentParent->GetEletricalData().number; + bool parentCopied = false; + for(int k = 0; k < (int)pastedBusList.size(); k++) { + Bus* newParent = pastedBusList[k]; + if(parentNumber == newParent->GetEletricalData().number) + copy->ReplaceParent(currentParent, newParent); + } + if(!parentCopied) copy->RemoveParent(currentParent); + } + } + + pastedElements.push_back(copy); + m_elementList.push_back(copy); + } + } + } + + // Move elements (and nodes) to the mouse position. + // The start position it's the center of the pasted objects. + wxPoint2DDouble leftUpCorner, rightDownCorner; + GetElementsCorners(leftUpCorner, rightDownCorner, pastedElements); + wxPoint2DDouble startPosition = (leftUpCorner + rightDownCorner) / 2.0; + for(auto it = pastedElements.begin(), itEnd = pastedElements.end(); it != itEnd; ++it) { + Element* element = *it; + element->StartMove(startPosition); + element->Move(m_camera->GetMousePosition()); + for(int i = 0; i < (int)element->GetParentList().size(); i++) { + Element* parent = element->GetParentList()[i]; + element->MoveNode(parent, m_camera->GetMousePosition()); + } + } + } + else + { + wxMessageDialog dialog(this, _("It was not possible to paste from clipboard."), _("Error"), + wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition); + dialog.ShowModal(); + return false; + } Redraw(); m_mode = MODE_PASTE; @@ -1211,11 +1332,11 @@ bool Workspace::Paste() void Workspace::UnselectAll() { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) { - Element* element = *it; - element->SetSelected(false); - } + Element* element = *it; + element->SetSelected(false); + } for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; it++) { - Text* text = *it; - text->SetSelected(false); - } + Text* text = *it; + text->SetSelected(false); + } } |