Auto status change to "Under Review"
@@ -0,0 +1,147 | |||||
|
1 | ||||
|
2 | ## sciqlop - CMakeLists.txt | |||
|
3 | SET(EXECUTABLE_NAME "sciqlop") | |||
|
4 | SET(SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/) | |||
|
5 | SET(INCLUDE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/include) | |||
|
6 | SET(UI_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/src) | |||
|
7 | SET(RES_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/resources) | |||
|
8 | ||||
|
9 | # | |||
|
10 | # Find Qt modules | |||
|
11 | # | |||
|
12 | SCIQLOP_FIND_QT(Core Widgets) | |||
|
13 | ||||
|
14 | # | |||
|
15 | # Find dependent libraries | |||
|
16 | # ======================== | |||
|
17 | find_package(sciqlop-gui) | |||
|
18 | ||||
|
19 | message("Librairies inclues dans APP: ${SCIQLOP-GUI_LIBRARIES}") | |||
|
20 | SET(LIBRARIES ${SCIQLOP-GUI_LIBRARIES}) | |||
|
21 | SET(EXTERN_SHARED_LIBRARIES) | |||
|
22 | ||||
|
23 | INCLUDE_DIRECTORIES(${SCIQLOP-GUI_INCLUDE_DIR}) | |||
|
24 | ||||
|
25 | # Add sqpcore to the list of libraries to use | |||
|
26 | list(APPEND LIBRARIES ${SQPCORE_LIBRARY_NAME}) | |||
|
27 | ||||
|
28 | # Include core directory | |||
|
29 | include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../core/include") | |||
|
30 | ||||
|
31 | # Add dependent shared libraries | |||
|
32 | list(APPEND SHARED_LIBRARIES ${SQPCORE_SHARED_LIBRARIES}) | |||
|
33 | ||||
|
34 | # Retrieve the location of the dynamic library to copy it to the output path | |||
|
35 | #get_property(sqpcoreLocation TARGET ${SQPCORE_LIBRARY_NAME} PROPERTY LOCATION) | |||
|
36 | list(APPEND SHARED_LIBRARIES_FROM_TARGETS ${sqpcoreLocation}) | |||
|
37 | ||||
|
38 | # | |||
|
39 | # Compile the application | |||
|
40 | # | |||
|
41 | FILE (GLOB_RECURSE APPLICATION_SOURCES | |||
|
42 | ${SOURCES_DIR}/*.c | |||
|
43 | ${SOURCES_DIR}/*.cpp | |||
|
44 | ${SOURCES_DIR}/*.h) | |||
|
45 | ||||
|
46 | # Headers files (.h) | |||
|
47 | FILE (GLOB_RECURSE PROJECT_HEADERS ${INCLUDE_FOLDER}/*.h) | |||
|
48 | ||||
|
49 | # Ui files | |||
|
50 | FILE (GLOB_RECURSE PROJECT_FORMS ${UI_FOLDER}/*.ui) | |||
|
51 | ||||
|
52 | # Resources files | |||
|
53 | FILE (GLOB_RECURSE PROJECT_RESOURCES ${RES_FOLDER}/*.qrc) | |||
|
54 | ||||
|
55 | # Retrieve resources files | |||
|
56 | FILE (GLOB_RECURSE APPLICATION_RESOURCES ${RES_FOLDER}/*.qrc) | |||
|
57 | ||||
|
58 | QT5_ADD_RESOURCES(RCC_HDRS ${APPLICATION_RESOURCES} ) | |||
|
59 | ||||
|
60 | QT5_WRAP_UI(UIS_HDRS | |||
|
61 | ${PROJECT_FORMS} | |||
|
62 | ) | |||
|
63 | ||||
|
64 | ||||
|
65 | ADD_EXECUTABLE(${EXECUTABLE_NAME} ${APPLICATION_SOURCES} ${RCC_HDRS} ${UIS_HDRS}) | |||
|
66 | set_property(TARGET ${EXECUTABLE_NAME} PROPERTY CXX_STANDARD 14) | |||
|
67 | set_property(TARGET ${EXECUTABLE_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) | |||
|
68 | target_link_libraries(${EXECUTABLE_NAME} | |||
|
69 | ${LIBRARIES}) | |||
|
70 | ||||
|
71 | # Link with Qt5 modules | |||
|
72 | qt5_use_modules(${EXECUTABLE_NAME} Core Widgets) | |||
|
73 | ||||
|
74 | ||||
|
75 | # Add the files to the list of files to be analyzed | |||
|
76 | LIST(APPEND CHECKSTYLE_INPUT_FILES ${APPLICATION_SOURCES}) | |||
|
77 | SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_INPUT_FILES) | |||
|
78 | # Vera++ exclusion files | |||
|
79 | #LIST(APPEND CHECKSTYLE_EXCLUSION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/path/to/exclusionFiles.tcl) | |||
|
80 | SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_EXCLUSION_FILES) | |||
|
81 | ||||
|
82 | # | |||
|
83 | # Compile the tests | |||
|
84 | # | |||
|
85 | IF(BUILD_TESTS) | |||
|
86 | INCLUDE_DIRECTORIES(${SOURCES_DIR}) | |||
|
87 | FILE (GLOB_RECURSE TESTS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Test*.cpp) | |||
|
88 | FILE (GLOB_RECURSE TESTS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Test*.h) | |||
|
89 | SET( TEST_LIBRARIES ${LIBRARIES}) | |||
|
90 | ||||
|
91 | FOREACH( testFile ${TESTS_SOURCES} ) | |||
|
92 | GET_FILENAME_COMPONENT( testDirectory ${testFile} DIRECTORY ) | |||
|
93 | GET_FILENAME_COMPONENT( testName ${testFile} NAME_WE ) | |||
|
94 | ||||
|
95 | # Add to the list of sources files all the sources in the same | |||
|
96 | # directory that aren't another test | |||
|
97 | FILE (GLOB currentTestSources | |||
|
98 | ${testDirectory}/*.c | |||
|
99 | ${testDirectory}/*.cpp | |||
|
100 | ${testDirectory}/*.h) | |||
|
101 | LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES}) | |||
|
102 | LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) | |||
|
103 | ||||
|
104 | ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources}) | |||
|
105 | TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES} ) | |||
|
106 | qt5_use_modules(${testName} Test) | |||
|
107 | ||||
|
108 | ADD_TEST( NAME ${testName} COMMAND ${testName} ) | |||
|
109 | ||||
|
110 | SCIQLOP_COPY_TO_TARGET(RUNTIME ${testName}) | |||
|
111 | ENDFOREACH( testFile ) | |||
|
112 | ||||
|
113 | LIST(APPEND testFilesToFormat ${TESTS_SOURCES}) | |||
|
114 | LIST(APPEND testFilesToFormat ${TESTS_HEADERS}) | |||
|
115 | LIST(APPEND FORMATTING_INPUT_FILES ${testFilesToFormat}) | |||
|
116 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) | |||
|
117 | ENDIF(BUILD_TESTS) | |||
|
118 | ||||
|
119 | # | |||
|
120 | # Set the files that must be formatted by clang-format. | |||
|
121 | # | |||
|
122 | LIST (APPEND FORMATTING_INPUT_FILES ${APPLICATION_SOURCES}) | |||
|
123 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) | |||
|
124 | ||||
|
125 | # | |||
|
126 | # Set the directories that doxygen must browse to generate the | |||
|
127 | # documentation. | |||
|
128 | # | |||
|
129 | # Source directories: | |||
|
130 | LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/docs") | |||
|
131 | LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
132 | SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_INPUT_DIRS) | |||
|
133 | # Source directories to exclude from the documentation generation | |||
|
134 | #LIST (APPEND DOXYGEN_EXCLUDE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir/*") | |||
|
135 | SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_EXCLUDE_PATTERNS) | |||
|
136 | ||||
|
137 | # | |||
|
138 | # Set the directories with the sources to analyze and propagate the | |||
|
139 | # modification to the parent scope | |||
|
140 | # | |||
|
141 | # Source directories to analyze: | |||
|
142 | LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
143 | LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests") | |||
|
144 | SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_INPUT_DIRS) | |||
|
145 | # Source directories to exclude from the analysis | |||
|
146 | #LIST (APPEND ANALYSIS_EXCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir") | |||
|
147 | SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_EXCLUDE_DIRS) |
@@ -0,0 +1,5 | |||||
|
1 | <RCC> | |||
|
2 | <qresource prefix="/"> | |||
|
3 | <file>sciqlopLOGO.svg</file> | |||
|
4 | </qresource> | |||
|
5 | </RCC> |
This diff has been collapsed as it changes many lines, (664 lines changed) Show them Hide them | |||||
@@ -0,0 +1,664 | |||||
|
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
|
2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
|
3 | ||||
|
4 | <svg | |||
|
5 | xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
|
6 | xmlns:cc="http://creativecommons.org/ns#" | |||
|
7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
|
8 | xmlns:svg="http://www.w3.org/2000/svg" | |||
|
9 | xmlns="http://www.w3.org/2000/svg" | |||
|
10 | xmlns:xlink="http://www.w3.org/1999/xlink" | |||
|
11 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
|
12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
|
13 | width="284.61575" | |||
|
14 | height="315.51797" | |||
|
15 | id="svg4229" | |||
|
16 | version="1.1" | |||
|
17 | inkscape:version="0.48.5 r10040" | |||
|
18 | sodipodi:docname="Nouveau document 8"> | |||
|
19 | <defs | |||
|
20 | id="defs4231"> | |||
|
21 | <linearGradient | |||
|
22 | id="linearGradient4047"> | |||
|
23 | <stop | |||
|
24 | style="stop-color:#bdbdbd;stop-opacity:1;" | |||
|
25 | offset="0" | |||
|
26 | id="stop4049" /> | |||
|
27 | <stop | |||
|
28 | style="stop-color:#000000;stop-opacity:0.5106383;" | |||
|
29 | offset="1" | |||
|
30 | id="stop4051" /> | |||
|
31 | </linearGradient> | |||
|
32 | <linearGradient | |||
|
33 | id="linearGradient3938"> | |||
|
34 | <stop | |||
|
35 | style="stop-color:#0745d0;stop-opacity:1;" | |||
|
36 | offset="0" | |||
|
37 | id="stop3940" /> | |||
|
38 | <stop | |||
|
39 | style="stop-color:#7888ab;stop-opacity:0.4609929;" | |||
|
40 | offset="1" | |||
|
41 | id="stop3942" /> | |||
|
42 | </linearGradient> | |||
|
43 | <linearGradient | |||
|
44 | id="linearGradient3978"> | |||
|
45 | <stop | |||
|
46 | style="stop-color:#0063c6;stop-opacity:1;" | |||
|
47 | offset="0" | |||
|
48 | id="stop3981" /> | |||
|
49 | <stop | |||
|
50 | style="stop-color:#95a6b7;stop-opacity:0.53191489;" | |||
|
51 | offset="1" | |||
|
52 | id="stop3983" /> | |||
|
53 | </linearGradient> | |||
|
54 | <linearGradient | |||
|
55 | inkscape:collect="always" | |||
|
56 | xlink:href="#linearGradient3898" | |||
|
57 | id="linearGradient3920" | |||
|
58 | gradientUnits="userSpaceOnUse" | |||
|
59 | gradientTransform="matrix(0.62671682,-0.29642431,0.475469,1.0351926,-233.44621,196.18433)" | |||
|
60 | x1="598.20306" | |||
|
61 | y1="339.17004" | |||
|
62 | x2="610.20306" | |||
|
63 | y2="339.17004" /> | |||
|
64 | <linearGradient | |||
|
65 | id="linearGradient3898"> | |||
|
66 | <stop | |||
|
67 | style="stop-color:#708aa4;stop-opacity:1;" | |||
|
68 | offset="0" | |||
|
69 | id="stop3900" /> | |||
|
70 | <stop | |||
|
71 | style="stop-color:#9ca7bc;stop-opacity:0.81560284;" | |||
|
72 | offset="1" | |||
|
73 | id="stop3902" /> | |||
|
74 | </linearGradient> | |||
|
75 | <linearGradient | |||
|
76 | gradientTransform="translate(-229.81291,651.73413)" | |||
|
77 | inkscape:collect="always" | |||
|
78 | xlink:href="#linearGradient4074" | |||
|
79 | id="linearGradient4080" | |||
|
80 | x1="256.52228" | |||
|
81 | y1="363.9075" | |||
|
82 | x2="975.78491" | |||
|
83 | y2="363.9075" | |||
|
84 | gradientUnits="userSpaceOnUse" /> | |||
|
85 | <linearGradient | |||
|
86 | inkscape:collect="always" | |||
|
87 | id="linearGradient4074"> | |||
|
88 | <stop | |||
|
89 | style="stop-color:#000000;stop-opacity:1;" | |||
|
90 | offset="0" | |||
|
91 | id="stop4076" /> | |||
|
92 | <stop | |||
|
93 | style="stop-color:#000000;stop-opacity:0;" | |||
|
94 | offset="1" | |||
|
95 | id="stop4078" /> | |||
|
96 | </linearGradient> | |||
|
97 | <linearGradient | |||
|
98 | inkscape:collect="always" | |||
|
99 | xlink:href="#linearGradient4457" | |||
|
100 | id="linearGradient3098" | |||
|
101 | gradientUnits="userSpaceOnUse" | |||
|
102 | x1="62.252197" | |||
|
103 | y1="282.51736" | |||
|
104 | x2="302.26953" | |||
|
105 | y2="282.51736" /> | |||
|
106 | <linearGradient | |||
|
107 | id="linearGradient4457"> | |||
|
108 | <stop | |||
|
109 | style="stop-color:#0c6c9b;stop-opacity:1;" | |||
|
110 | offset="0" | |||
|
111 | id="stop4459" /> | |||
|
112 | <stop | |||
|
113 | id="stop4465" | |||
|
114 | offset="1" | |||
|
115 | style="stop-color:#656d84;stop-opacity:0.49803922;" /> | |||
|
116 | </linearGradient> | |||
|
117 | <linearGradient | |||
|
118 | inkscape:collect="always" | |||
|
119 | xlink:href="#linearGradient3978" | |||
|
120 | id="linearGradient4496" | |||
|
121 | gradientUnits="userSpaceOnUse" | |||
|
122 | x1="764.78876" | |||
|
123 | y1="234.53206" | |||
|
124 | x2="836.61969" | |||
|
125 | y2="234.53206" /> | |||
|
126 | <linearGradient | |||
|
127 | inkscape:collect="always" | |||
|
128 | xlink:href="#linearGradient3938" | |||
|
129 | id="linearGradient4498" | |||
|
130 | gradientUnits="userSpaceOnUse" | |||
|
131 | gradientTransform="matrix(0.60017085,0,0,0.56019332,103.0919,32.051732)" | |||
|
132 | x1="695.28296" | |||
|
133 | y1="239.59866" | |||
|
134 | x2="901.737" | |||
|
135 | y2="239.59866" /> | |||
|
136 | <linearGradient | |||
|
137 | inkscape:collect="always" | |||
|
138 | xlink:href="#linearGradient4047" | |||
|
139 | id="linearGradient4500" | |||
|
140 | gradientUnits="userSpaceOnUse" | |||
|
141 | gradientTransform="matrix(0.60017085,0,0,0.56019332,101.70261,33.867182)" | |||
|
142 | x1="663.75446" | |||
|
143 | y1="226.18797" | |||
|
144 | x2="952.06952" | |||
|
145 | y2="226.18797" /> | |||
|
146 | </defs> | |||
|
147 | <sodipodi:namedview | |||
|
148 | id="base" | |||
|
149 | pagecolor="#ffffff" | |||
|
150 | bordercolor="#666666" | |||
|
151 | borderopacity="1.0" | |||
|
152 | inkscape:pageopacity="0.0" | |||
|
153 | inkscape:pageshadow="2" | |||
|
154 | inkscape:zoom="0.71" | |||
|
155 | inkscape:cx="191.9085" | |||
|
156 | inkscape:cy="110.7835" | |||
|
157 | inkscape:document-units="px" | |||
|
158 | inkscape:current-layer="layer1" | |||
|
159 | showgrid="false" | |||
|
160 | fit-margin-top="0" | |||
|
161 | fit-margin-left="0" | |||
|
162 | fit-margin-right="0" | |||
|
163 | fit-margin-bottom="0" | |||
|
164 | inkscape:window-width="985" | |||
|
165 | inkscape:window-height="578" | |||
|
166 | inkscape:window-x="20" | |||
|
167 | inkscape:window-y="21" | |||
|
168 | inkscape:window-maximized="0" /> | |||
|
169 | <metadata | |||
|
170 | id="metadata4234"> | |||
|
171 | <rdf:RDF> | |||
|
172 | <cc:Work | |||
|
173 | rdf:about=""> | |||
|
174 | <dc:format>image/svg+xml</dc:format> | |||
|
175 | <dc:type | |||
|
176 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
|
177 | <dc:title></dc:title> | |||
|
178 | </cc:Work> | |||
|
179 | </rdf:RDF> | |||
|
180 | </metadata> | |||
|
181 | <g | |||
|
182 | inkscape:label="Calque 1" | |||
|
183 | inkscape:groupmode="layer" | |||
|
184 | id="layer1" | |||
|
185 | transform="translate(-126.75347,-129.21718)"> | |||
|
186 | <g | |||
|
187 | id="g3056" | |||
|
188 | transform="translate(109.09971,10.723333)"> | |||
|
189 | <path | |||
|
190 | sodipodi:nodetypes="cccccccccccccccccccccssc" | |||
|
191 | inkscape:connector-curvature="0" | |||
|
192 | id="path3171" | |||
|
193 | d="m 162.74655,195.41626 c 20.46224,13.83655 26.45395,35.09754 81.15589,20.36055 18.13197,-4.85845 36.10056,-22.72216 31.07886,-41.46341 -11.36239,-19.68023 -27.12355,-13.76204 -60.34715,-8.53658 7.52931,-24.7285 6.83208,-28.92768 1.95734,-29.61824 -11.2681,-5.06193 -42.35833,-7.10916 -47.07929,4.00848 -1.59791,8.18816 3.05955,18.27113 4.87804,26.82927 -12.83032,1.52424 -39.52307,-2.63454 -48.23965,23.17073 8.28798,37.43692 40.33446,15.70914 45.20958,24.98129 20.23759,36.49335 55.43769,48.08083 68.88373,60.38457 16.52622,15.15346 15.07329,50.41353 14.63415,69.51219 C 243.93442,388.86809 220.77062,394.33329 200,399.92316 152.34644,407.83191 124.1974,388.92674 98.780488,364.55731 90.884519,349.28255 76.34261,338.2147 74.390243,316.99633 c 1.016849,-10.56793 12.773791,-20.99339 21.951218,-25.60976 14.335999,-8.27689 3.736999,-14.13876 -4.272031,-11.58911 -5.998031,4.30402 -22.250811,5.9818 -28.654796,29.8818 -1.132862,13.24133 6.447529,33.4464 15.853659,48.78049 14.707256,26.93494 39.754087,51.37773 69.512197,64.63414 12.80586,7.73433 65.84742,15.05937 102.43902,4.87805 38.71787,-19.24459 50.00001,-41.96161 50.00001,-91.46341 0,-39.22509 -16.90467,-53.62909 -45.12196,-75.60976 -22.74648,-17.71902 -68.57139,-19.72703 -57.31708,-36.58537 l 3.65107,-5.4691" | |||
|
194 | style="fill:url(#linearGradient3098);fill-opacity:1;stroke:#000000;stroke-width:2.0999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> | |||
|
195 | <path | |||
|
196 | transform="matrix(1.3623131,0.57422751,-0.26556211,1.5344408,-25.181308,-242.18768)" | |||
|
197 | sodipodi:open="true" | |||
|
198 | sodipodi:end="6.2064134" | |||
|
199 | sodipodi:start="0" | |||
|
200 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
201 | sodipodi:ry="15.853659" | |||
|
202 | sodipodi:rx="12.195122" | |||
|
203 | sodipodi:cy="179.19145" | |||
|
204 | sodipodi:cx="195.12195" | |||
|
205 | id="path3173" | |||
|
206 | style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.33628261;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" | |||
|
207 | sodipodi:type="arc" /> | |||
|
208 | <path | |||
|
209 | transform="matrix(0.11293887,0.75414524,-0.0747065,0.55939022,183.90082,-99.972584)" | |||
|
210 | sodipodi:open="true" | |||
|
211 | sodipodi:end="6.2064134" | |||
|
212 | sodipodi:start="0" | |||
|
213 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
214 | sodipodi:ry="15.853659" | |||
|
215 | sodipodi:rx="12.195122" | |||
|
216 | sodipodi:cy="179.19145" | |||
|
217 | sodipodi:cx="195.12195" | |||
|
218 | id="path3173-0" | |||
|
219 | style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5.35210037;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" | |||
|
220 | sodipodi:type="arc" /> | |||
|
221 | <path | |||
|
222 | sodipodi:nodetypes="cscscccsscsssccc" | |||
|
223 | inkscape:connector-curvature="0" | |||
|
224 | id="path3968" | |||
|
225 | d="m 292.63804,338.25175 c 0.55628,13.47612 -0.0761,25.18207 -3.61758,37.44163 -2.35516,8.15296 -9.06437,16.27943 -15.40082,24.52156 -4.51578,5.84829 -13.8964,11.99533 -20.7648,15.52076 -10.42485,5.35088 -19.56646,9.58714 -27.49944,12.0792 -6.43513,2.62036 -13.3538,2.62102 -19.93495,4.20827 l 1.91929,0 c 5.476,-0.49158 25.01921,0.81944 43.31036,-4.96433 8.56316,-2.70773 16.87952,-8.46547 26.11179,-17.16237 5.07163,-4.77753 11.2534,-13.01072 13.44438,-16.63943 1.53054,-2.94379 3.40564,-7.54702 4.52784,-11.38333 1.97103,-6.73804 3.60734,-14.74867 4.89879,-24.22313 0.7015,-5.14637 1.11591,-9.90301 1.0546,-15.62378 -0.0973,-9.08102 -0.79348,-22.07325 -3.75498,-30.76891 -5.94492,-22.34295 -15.9628,-26.49084 -25.76688,-37.13508 10.83965,20.94361 20.64916,42.09245 21.4724,64.12894 z" | |||
|
226 | style="fill:#eff0a7;fill-opacity:1;stroke:none" /> | |||
|
227 | <path | |||
|
228 | sodipodi:nodetypes="cccc" | |||
|
229 | inkscape:connector-curvature="0" | |||
|
230 | id="path3970" | |||
|
231 | d="m 255.87944,210.93679 c 2.11201,4.59017 1.50684,6.28256 -2.27273,10.51137 7.84807,-1.091 8.8036,-9.3893 8.80683,-15.34091 z" | |||
|
232 | style="fill:#d6d6a9;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
233 | <path | |||
|
234 | sodipodi:nodetypes="cscsccccccccc" | |||
|
235 | inkscape:connector-curvature="0" | |||
|
236 | id="path3972" | |||
|
237 | d="m 229.32735,214.61782 c 7.90145,9.74494 9.20718,18.08729 7.39006,19.88916 -2.0037,1.98692 -3.1338,2.5799 -3.63485,3.62733 0.13945,0.89181 1.5457,1.91481 3.5597,2.27363 7.0815,1.26165 13.95756,2.5836 14.03587,5.48036 l -4.22596,6.6464 0,0 8.02175,-4.75181 7.39033,4.27843 c -3.40899,-3.22169 -2.75333,-6.3782 -10.24681,-9.66539 -4.47359,-1.44777 -10.18759,-0.95764 -13.54707,-4.54397 6.47766,-8.67261 2.4666,-10.84161 -2.41227,-19.52305 z" | |||
|
238 | style="fill:#ff7e7d;fill-opacity:1;stroke:#000000;stroke-width:0.77647746px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
239 | <path | |||
|
240 | transform="matrix(0.29416696,-0.08796001,0.11275105,0.22948727,189.50526,302.50374)" | |||
|
241 | sodipodi:open="true" | |||
|
242 | sodipodi:end="6.2064134" | |||
|
243 | sodipodi:start="0" | |||
|
244 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
245 | sodipodi:ry="15.853659" | |||
|
246 | sodipodi:rx="12.195122" | |||
|
247 | sodipodi:cy="179.19145" | |||
|
248 | sodipodi:cx="195.12195" | |||
|
249 | id="path3173-0-2" | |||
|
250 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
251 | sodipodi:type="arc" /> | |||
|
252 | <path | |||
|
253 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,256.19097,284.76495)" | |||
|
254 | sodipodi:open="true" | |||
|
255 | sodipodi:end="6.2064134" | |||
|
256 | sodipodi:start="0" | |||
|
257 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
258 | sodipodi:ry="15.853659" | |||
|
259 | sodipodi:rx="12.195122" | |||
|
260 | sodipodi:cy="179.19145" | |||
|
261 | sodipodi:cx="195.12195" | |||
|
262 | id="path3173-0-2-2" | |||
|
263 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
264 | sodipodi:type="arc" /> | |||
|
265 | <path | |||
|
266 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,259.10041,292.41586)" | |||
|
267 | sodipodi:open="true" | |||
|
268 | sodipodi:end="6.2064134" | |||
|
269 | sodipodi:start="0" | |||
|
270 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
271 | sodipodi:ry="15.853659" | |||
|
272 | sodipodi:rx="12.195122" | |||
|
273 | sodipodi:cy="179.19145" | |||
|
274 | sodipodi:cx="195.12195" | |||
|
275 | id="path3173-0-2-2-3" | |||
|
276 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
277 | sodipodi:type="arc" /> | |||
|
278 | <path | |||
|
279 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,257.59178,301.89862)" | |||
|
280 | sodipodi:open="true" | |||
|
281 | sodipodi:end="6.2064134" | |||
|
282 | sodipodi:start="0" | |||
|
283 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
284 | sodipodi:ry="15.853659" | |||
|
285 | sodipodi:rx="12.195122" | |||
|
286 | sodipodi:cy="179.19145" | |||
|
287 | sodipodi:cx="195.12195" | |||
|
288 | id="path3173-0-2-2-3-6" | |||
|
289 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
290 | sodipodi:type="arc" /> | |||
|
291 | <path | |||
|
292 | transform="matrix(0.29416696,-0.08796001,0.11275105,0.22948727,169.56018,372.70851)" | |||
|
293 | sodipodi:open="true" | |||
|
294 | sodipodi:end="6.2064134" | |||
|
295 | sodipodi:start="0" | |||
|
296 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
297 | sodipodi:ry="15.853659" | |||
|
298 | sodipodi:rx="12.195122" | |||
|
299 | sodipodi:cy="179.19145" | |||
|
300 | sodipodi:cx="195.12195" | |||
|
301 | id="path3173-0-2-8" | |||
|
302 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
303 | sodipodi:type="arc" /> | |||
|
304 | <path | |||
|
305 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,224.17692,360.35765)" | |||
|
306 | sodipodi:open="true" | |||
|
307 | sodipodi:end="6.2064134" | |||
|
308 | sodipodi:start="0" | |||
|
309 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
310 | sodipodi:ry="15.853659" | |||
|
311 | sodipodi:rx="12.195122" | |||
|
312 | sodipodi:cy="179.19145" | |||
|
313 | sodipodi:cx="195.12195" | |||
|
314 | id="path3173-0-2-2-5" | |||
|
315 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
316 | sodipodi:type="arc" /> | |||
|
317 | <path | |||
|
318 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,239.58636,356.80166)" | |||
|
319 | sodipodi:open="true" | |||
|
320 | sodipodi:end="6.2064134" | |||
|
321 | sodipodi:start="0" | |||
|
322 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
323 | sodipodi:ry="15.853659" | |||
|
324 | sodipodi:rx="12.195122" | |||
|
325 | sodipodi:cy="179.19145" | |||
|
326 | sodipodi:cx="195.12195" | |||
|
327 | id="path3173-0-2-2-3-2" | |||
|
328 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
329 | sodipodi:type="arc" /> | |||
|
330 | <path | |||
|
331 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,238.07773,366.28442)" | |||
|
332 | sodipodi:open="true" | |||
|
333 | sodipodi:end="6.2064134" | |||
|
334 | sodipodi:start="0" | |||
|
335 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
336 | sodipodi:ry="15.853659" | |||
|
337 | sodipodi:rx="12.195122" | |||
|
338 | sodipodi:cy="179.19145" | |||
|
339 | sodipodi:cx="195.12195" | |||
|
340 | id="path3173-0-2-2-3-6-4" | |||
|
341 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
342 | sodipodi:type="arc" /> | |||
|
343 | <path | |||
|
344 | transform="matrix(0.07991127,-0.11214898,0.11295311,0.08367812,207.70181,410.11257)" | |||
|
345 | sodipodi:open="true" | |||
|
346 | sodipodi:end="6.2064134" | |||
|
347 | sodipodi:start="0" | |||
|
348 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
349 | sodipodi:ry="15.853659" | |||
|
350 | sodipodi:rx="12.195122" | |||
|
351 | sodipodi:cy="179.19145" | |||
|
352 | sodipodi:cx="195.12195" | |||
|
353 | id="path3173-0-2-2-3-2-5" | |||
|
354 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
355 | sodipodi:type="arc" /> | |||
|
356 | <path | |||
|
357 | transform="matrix(0.11369517,-0.18191773,0.16070603,0.13573493,195.57015,398.98838)" | |||
|
358 | sodipodi:open="true" | |||
|
359 | sodipodi:end="6.2064134" | |||
|
360 | sodipodi:start="0" | |||
|
361 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
362 | sodipodi:ry="15.853659" | |||
|
363 | sodipodi:rx="12.195122" | |||
|
364 | sodipodi:cy="179.19145" | |||
|
365 | sodipodi:cx="195.12195" | |||
|
366 | id="path3173-0-2-2-3-2-5-0" | |||
|
367 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
368 | sodipodi:type="arc" /> | |||
|
369 | <path | |||
|
370 | transform="matrix(0.11369517,-0.18191773,0.16070603,0.13573493,148.44577,423.68104)" | |||
|
371 | sodipodi:open="true" | |||
|
372 | sodipodi:end="6.2064134" | |||
|
373 | sodipodi:start="0" | |||
|
374 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
375 | sodipodi:ry="15.853659" | |||
|
376 | sodipodi:rx="12.195122" | |||
|
377 | sodipodi:cy="179.19145" | |||
|
378 | sodipodi:cx="195.12195" | |||
|
379 | id="path3173-0-2-2-3-2-5-0-5" | |||
|
380 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
381 | sodipodi:type="arc" /> | |||
|
382 | <path | |||
|
383 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,179.64983,376.79011)" | |||
|
384 | sodipodi:open="true" | |||
|
385 | sodipodi:end="6.2064134" | |||
|
386 | sodipodi:start="0" | |||
|
387 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
388 | sodipodi:ry="15.853659" | |||
|
389 | sodipodi:rx="12.195122" | |||
|
390 | sodipodi:cy="179.19145" | |||
|
391 | sodipodi:cx="195.12195" | |||
|
392 | id="path3173-0-2-2-3-2-4" | |||
|
393 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
394 | sodipodi:type="arc" /> | |||
|
395 | <path | |||
|
396 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,183.31275,385.84191)" | |||
|
397 | sodipodi:open="true" | |||
|
398 | sodipodi:end="6.2064134" | |||
|
399 | sodipodi:start="0" | |||
|
400 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
401 | sodipodi:ry="15.853659" | |||
|
402 | sodipodi:rx="12.195122" | |||
|
403 | sodipodi:cy="179.19145" | |||
|
404 | sodipodi:cx="195.12195" | |||
|
405 | id="path3173-0-2-2-3-6-4-5" | |||
|
406 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
407 | sodipodi:type="arc" /> | |||
|
408 | <path | |||
|
409 | transform="matrix(0.17764111,0.12026757,-0.1415174,0.15563812,154.66179,360.27145)" | |||
|
410 | sodipodi:open="true" | |||
|
411 | sodipodi:end="6.2064134" | |||
|
412 | sodipodi:start="0" | |||
|
413 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
414 | sodipodi:ry="15.853659" | |||
|
415 | sodipodi:rx="12.195122" | |||
|
416 | sodipodi:cy="179.19145" | |||
|
417 | sodipodi:cx="195.12195" | |||
|
418 | id="path3173-0-2-2-3-2-5-0-5-7" | |||
|
419 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
420 | sodipodi:type="arc" /> | |||
|
421 | <path | |||
|
422 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,147.85018,384.9618)" | |||
|
423 | sodipodi:open="true" | |||
|
424 | sodipodi:end="6.2064134" | |||
|
425 | sodipodi:start="0" | |||
|
426 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
427 | sodipodi:ry="15.853659" | |||
|
428 | sodipodi:rx="12.195122" | |||
|
429 | sodipodi:cy="179.19145" | |||
|
430 | sodipodi:cx="195.12195" | |||
|
431 | id="path3173-0-2-2-3-6-4-5-3" | |||
|
432 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
433 | sodipodi:type="arc" /> | |||
|
434 | <path | |||
|
435 | inkscape:transform-center-y="148.91459" | |||
|
436 | inkscape:transform-center-x="-32.932564" | |||
|
437 | transform="matrix(0.29416696,-0.08796001,0.11275105,0.22948727,143.2296,230.92459)" | |||
|
438 | sodipodi:open="true" | |||
|
439 | sodipodi:end="6.2064134" | |||
|
440 | sodipodi:start="0" | |||
|
441 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
442 | sodipodi:ry="15.853659" | |||
|
443 | sodipodi:rx="12.195122" | |||
|
444 | sodipodi:cy="179.19145" | |||
|
445 | sodipodi:cx="195.12195" | |||
|
446 | id="path3173-0-2-8-5" | |||
|
447 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
448 | sodipodi:type="arc" /> | |||
|
449 | <path | |||
|
450 | inkscape:transform-center-y="142.48609" | |||
|
451 | inkscape:transform-center-x="-39.962777" | |||
|
452 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,212.39386,218.46544)" | |||
|
453 | sodipodi:open="true" | |||
|
454 | sodipodi:end="6.2064134" | |||
|
455 | sodipodi:start="0" | |||
|
456 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
457 | sodipodi:ry="15.853659" | |||
|
458 | sodipodi:rx="12.195122" | |||
|
459 | sodipodi:cy="179.19145" | |||
|
460 | sodipodi:cx="195.12195" | |||
|
461 | id="path3173-0-2-2-3-2-56" | |||
|
462 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
463 | sodipodi:type="arc" /> | |||
|
464 | <path | |||
|
465 | inkscape:transform-center-y="142.48609" | |||
|
466 | inkscape:transform-center-x="-39.962777" | |||
|
467 | transform="matrix(0.12698777,0.05326643,-0.0567639,0.12860129,212.94152,224.66127)" | |||
|
468 | sodipodi:open="true" | |||
|
469 | sodipodi:end="6.2064134" | |||
|
470 | sodipodi:start="0" | |||
|
471 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
472 | sodipodi:ry="15.853659" | |||
|
473 | sodipodi:rx="12.195122" | |||
|
474 | sodipodi:cy="179.19145" | |||
|
475 | sodipodi:cx="195.12195" | |||
|
476 | id="path3173-0-2-2-3-2-56-6" | |||
|
477 | style="fill:#981b92;fill-opacity:1;stroke:none" | |||
|
478 | sodipodi:type="arc" /> | |||
|
479 | <path | |||
|
480 | sodipodi:nodetypes="cc" | |||
|
481 | inkscape:connector-curvature="0" | |||
|
482 | id="path4163" | |||
|
483 | d="m 280.37179,293.46456 c 2.84837,0.33864 5.46579,-0.93678 7.15942,-4.15709" | |||
|
484 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
485 | <path | |||
|
486 | sodipodi:nodetypes="cc" | |||
|
487 | inkscape:connector-curvature="0" | |||
|
488 | id="path4163-6" | |||
|
489 | d="m 283.9515,301.05941 c 2.84837,0.33864 6.38959,-1.16773 8.08322,-4.38804" | |||
|
490 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
491 | <path | |||
|
492 | sodipodi:nodetypes="cc" | |||
|
493 | inkscape:connector-curvature="0" | |||
|
494 | id="path4163-6-8" | |||
|
495 | d="m 286.95383,309.03024 c 2.53495,0.67298 5.68634,-0.41753 8.08322,-4.38804" | |||
|
496 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
497 | <path | |||
|
498 | sodipodi:nodetypes="cc" | |||
|
499 | inkscape:connector-curvature="0" | |||
|
500 | id="path4163-6-8-4" | |||
|
501 | d="m 289.49427,317.04407 c 2.53495,0.67298 5.68634,-0.41753 8.08322,-4.38804" | |||
|
502 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
503 | <path | |||
|
504 | sodipodi:nodetypes="cc" | |||
|
505 | inkscape:connector-curvature="0" | |||
|
506 | id="path4163-6-8-4-0" | |||
|
507 | d="m 291.1109,324.66537 c 2.53495,0.67298 5.68634,-0.41753 8.08322,-4.38804" | |||
|
508 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
509 | <path | |||
|
510 | sodipodi:nodetypes="cc" | |||
|
511 | inkscape:connector-curvature="0" | |||
|
512 | id="path4163-6-8-4-0-7" | |||
|
513 | d="m 292.0347,334.59617 c 2.53495,0.67298 5.68634,-0.41753 8.08322,-4.38804" | |||
|
514 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
515 | <path | |||
|
516 | sodipodi:nodetypes="cc" | |||
|
517 | inkscape:connector-curvature="0" | |||
|
518 | id="path4163-6-8-4-0-7-8" | |||
|
519 | d="m 292.4966,344.98887 c 2.53495,0.67298 6.37919,-0.41753 8.77607,-4.38804" | |||
|
520 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
521 | <path | |||
|
522 | sodipodi:nodetypes="cc" | |||
|
523 | inkscape:connector-curvature="0" | |||
|
524 | id="path4163-6-8-4-0-7-8-3" | |||
|
525 | d="m 291.91923,357.69105 c 2.53495,0.67298 6.37919,-0.41753 8.77607,-4.38804" | |||
|
526 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
527 | <path | |||
|
528 | sodipodi:nodetypes="cc" | |||
|
529 | inkscape:connector-curvature="0" | |||
|
530 | id="path4163-6-8-4-0-7-8-3-1" | |||
|
531 | d="m 289.14784,373.85746 c 2.53495,0.67298 6.37919,-0.41753 8.77607,-4.38804" | |||
|
532 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
533 | <path | |||
|
534 | sodipodi:nodetypes="cc" | |||
|
535 | inkscape:connector-curvature="0" | |||
|
536 | id="path4163-6-8-4-0-7-8-3-1-0" | |||
|
537 | d="m 278.06229,393.48811 c 2.53495,0.67298 9.84343,-0.41753 14.54979,-5.08089" | |||
|
538 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
539 | <path | |||
|
540 | sodipodi:nodetypes="cc" | |||
|
541 | inkscape:connector-curvature="0" | |||
|
542 | id="path4163-6-8-4-0-7-8-3-1-0-0" | |||
|
543 | d="m 263.1661,409.0791 c 2.53495,0.67298 13.30766,1.43006 18.01402,-3.2333" | |||
|
544 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
545 | <path | |||
|
546 | sodipodi:nodetypes="cc" | |||
|
547 | inkscape:connector-curvature="0" | |||
|
548 | id="path4163-6-8-4-0-7-8-3-1-0-0-3" | |||
|
549 | d="m 240.1867,421.62064 c 2.53495,0.67298 16.54094,2.81575 22.86394,-0.46191" | |||
|
550 | style="fill:none;stroke:#805f25;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
551 | <path | |||
|
552 | sodipodi:nodetypes="cccc" | |||
|
553 | inkscape:connector-curvature="0" | |||
|
554 | id="path3970-1" | |||
|
555 | d="m 217.1307,221.26922 c -0.0806,5.0521 -1.35806,6.31639 -6.59463,8.49499 7.54814,2.40999 11.99811,-4.65914 14.57465,-10.02413 z" | |||
|
556 | style="fill:#d6d6a9;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||
|
557 | <path | |||
|
558 | sodipodi:nodetypes="cccccc" | |||
|
559 | inkscape:connector-curvature="0" | |||
|
560 | id="path4409" | |||
|
561 | d="m 206.94813,218.90583 c -7.34133,-2.49985 -10.63839,-5.40956 -11.54553,-12.19905 0.65544,-10.33391 15.97326,-16.1699 35.72578,-16.33802 17.52544,-11.86472 34.73964,-8.39346 37.25067,-3.48543 3.03102,9.73019 0.31267,10.3111 -4.13897,15.90233 -16.25921,15.30677 -36.44124,16.88366 -57.29195,16.12017 z" | |||
|
562 | style="fill:#afa84f;fill-opacity:1;stroke:#805f25;stroke-opacity:1" /> | |||
|
563 | <path | |||
|
564 | transform="matrix(0.18429483,0.23986638,-0.12190684,0.17792184,232.04402,123.66471)" | |||
|
565 | sodipodi:open="true" | |||
|
566 | sodipodi:end="6.2064134" | |||
|
567 | sodipodi:start="0" | |||
|
568 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
569 | sodipodi:ry="15.853659" | |||
|
570 | sodipodi:rx="12.195122" | |||
|
571 | sodipodi:cy="179.19145" | |||
|
572 | sodipodi:cx="195.12195" | |||
|
573 | id="path3173-0-9" | |||
|
574 | style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5.35210037;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" | |||
|
575 | sodipodi:type="arc" /> | |||
|
576 | <path | |||
|
577 | transform="matrix(0.18429483,0.23986638,-0.12190684,0.17792184,209.6065,131.07128)" | |||
|
578 | sodipodi:open="true" | |||
|
579 | sodipodi:end="6.2064134" | |||
|
580 | sodipodi:start="0" | |||
|
581 | d="m 207.31707,179.19145 c 0,8.75574 -5.45994,15.85366 -12.19512,15.85366 -6.73518,0 -12.19512,-7.09792 -12.19512,-15.85366 0,-8.75573 5.45994,-15.85366 12.19512,-15.85366 6.37239,0 11.67046,6.37803 12.1592,14.63774" | |||
|
582 | sodipodi:ry="15.853659" | |||
|
583 | sodipodi:rx="12.195122" | |||
|
584 | sodipodi:cy="179.19145" | |||
|
585 | sodipodi:cx="195.12195" | |||
|
586 | id="path3173-0-9-2" | |||
|
587 | style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5.35210037;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" | |||
|
588 | sodipodi:type="arc" /> | |||
|
589 | </g> | |||
|
590 | <path | |||
|
591 | sodipodi:nodetypes="ccccccc" | |||
|
592 | inkscape:connector-curvature="0" | |||
|
593 | id="path3111" | |||
|
594 | d="m 226.50388,403.12189 1.06383,-117.55319 c 1.32014,-10.5593 12.40035,-11.35853 23.40426,-12.23405 l 99.46808,13.29787 2.12766,87.76596 c -2.90019,8.93703 -9.38431,11.90085 -16.48936,13.82979 z" | |||
|
595 | style="fill:#8be860;fill-opacity:1;stroke:none" /> | |||
|
596 | <path | |||
|
597 | sodipodi:nodetypes="cccccsccss" | |||
|
598 | inkscape:connector-curvature="0" | |||
|
599 | id="path3113" | |||
|
600 | d="m 262.66985,334.75483 c 1.5436,23.41563 6.06147,40.70799 29.8136,41.71675 22.95633,-1.58809 25.23359,-24.81272 27.08482,-35.94643 -0.0829,-32.34576 -10.79448,-43.09068 -31.11717,-42.32255 -15.71741,-0.26634 -25.38887,23.3986 -25.78125,36.55223 z m 28.86717,-25.26088 c 9.04483,-0.67665 12.31628,14.75844 11.625,28.3125 -0.68473,13.42568 -2.2405,26.75249 -13.375,26.0625 -10.57703,-1.12669 -15.35456,-52.91454 0.875,-54.25 0.30389,-0.0559 0.58323,-0.10317 0.875,-0.125 z" | |||
|
601 | style="fill:#ffffff;fill-opacity:1;stroke:none" /> | |||
|
602 | <path | |||
|
603 | style="fill:url(#linearGradient3920);fill-opacity:1;fill-rule:nonzero;stroke:none" | |||
|
604 | d="m 296.23093,357.99298 c -3.71191,1.75566 -6.08673,4.49894 -5.32365,6.16034 l 0.17723,0.38544 c 0.76302,1.66138 4.36048,1.5799 8.07239,-0.17575 l 0.82236,-0.38948 6.23951,13.58465 c 0.70246,1.52938 2.94184,1.9604 5.02504,0.97508 2.08323,-0.98529 3.198,-3.00279 2.49551,-4.53221 l -6.23948,-13.58463 1.17508,-0.55581 c 3.71191,-1.75566 6.08673,-4.49894 5.32367,-6.16031 l -0.17723,-0.38545 c -0.76304,-1.66141 -4.3605,-1.57992 -8.0724,0.17574 l -9.51827,4.50195 z" | |||
|
605 | id="rect3894" | |||
|
606 | inkscape:connector-curvature="0" /> | |||
|
607 | <g | |||
|
608 | id="g4486" | |||
|
609 | transform="matrix(0.77227446,0,0,0.7939706,-259.37674,106.23782)"> | |||
|
610 | <path | |||
|
611 | sodipodi:open="true" | |||
|
612 | sodipodi:end="6.2064134" | |||
|
613 | sodipodi:start="0" | |||
|
614 | transform="matrix(0.60017085,0,0,0.56019332,103.39323,35.445182)" | |||
|
615 | d="m 836.61972,234.53206 c 0,19.05771 -16.07992,34.50704 -35.9155,34.50704 -19.83558,0 -35.91549,-15.44933 -35.91549,-34.50704 0,-19.05771 16.07991,-34.50704 35.91549,-34.50704 18.76715,0 34.37033,13.8824 35.80971,31.86047" | |||
|
616 | sodipodi:ry="34.507042" | |||
|
617 | sodipodi:rx="35.915493" | |||
|
618 | sodipodi:cy="234.53206" | |||
|
619 | sodipodi:cx="800.70422" | |||
|
620 | id="path3934" | |||
|
621 | style="fill:url(#linearGradient4496);fill-opacity:1;fill-rule:nonzero;stroke:none" | |||
|
622 | sodipodi:type="arc" /> | |||
|
623 | <path | |||
|
624 | sodipodi:nodetypes="cccc" | |||
|
625 | inkscape:connector-curvature="0" | |||
|
626 | id="path3936" | |||
|
627 | d="m 559.60682,170.09774 c -10.81819,6.91658 -38.61836,24.22127 -34.93952,30.38397 20.68614,10.55178 126.70497,-51.93621 115.70586,-67.63888 -4.01467,-2.16973 -30.42127,11.68803 -39.44001,15.42212" | |||
|
628 | style="fill:none;stroke:url(#linearGradient4498);stroke-width:5.91434383;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> | |||
|
629 | <path | |||
|
630 | sodipodi:nodetypes="cccc" | |||
|
631 | inkscape:connector-curvature="0" | |||
|
632 | id="path3946" | |||
|
633 | d="m 567.45079,151.48369 c -12.14355,-8.48992 -26.41764,-16.84268 -34.21689,-18.97692 -0.46419,13.46911 80.33523,70.6829 98.47874,70.22142 0.1058,-3.16928 -20.77334,-16.30919 -29.16323,-23.27564" | |||
|
634 | style="fill:none;stroke:#000000;stroke-width:1.15967524;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1.15967529, 1.15967529;stroke-dashoffset:0" /> | |||
|
635 | <g | |||
|
636 | transform="matrix(1.2622979,0,0,2.076907,-358.29736,-413.56399)" | |||
|
637 | id="g3973"> | |||
|
638 | <path | |||
|
639 | style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
|
640 | d="m 773.57497,296.07152 -12.5,-6.46552" | |||
|
641 | id="path3950" | |||
|
642 | inkscape:connector-curvature="0" /> | |||
|
643 | <g | |||
|
644 | id="g3970"> | |||
|
645 | <rect | |||
|
646 | ry="1.3714644" | |||
|
647 | rx="0" | |||
|
648 | y="291.36218" | |||
|
649 | x="764.19183" | |||
|
650 | height="3.0172222" | |||
|
651 | width="6.0344644" | |||
|
652 | id="rect3948-5" | |||
|
653 | style="fill:#d25f66;fill-opacity:1;fill-rule:nonzero;stroke:none" /> | |||
|
654 | </g> | |||
|
655 | </g> | |||
|
656 | <path | |||
|
657 | style="fill:none;stroke:url(#linearGradient4500);stroke-width:1.15967524;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1.15967529, 1.15967529;stroke-dashoffset:0" | |||
|
658 | d="m 556.22224,79.451022 c -30.98443,48.276818 -74.46974,129.053438 -46.8426,151.662088 28.78868,24.99386 102.22422,-0.0643 163.21719,-15.71274" | |||
|
659 | id="path4045" | |||
|
660 | inkscape:connector-curvature="0" | |||
|
661 | sodipodi:nodetypes="ccc" /> | |||
|
662 | </g> | |||
|
663 | </g> | |||
|
664 | </svg> |
@@ -0,0 +1,39 | |||||
|
1 | /*------------------------------------------------------------------------------ | |||
|
2 | -- This file is a part of the QLop Software | |||
|
3 | -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS | |||
|
4 | -- | |||
|
5 | -- This program is free software; you can redistribute it and/or modify | |||
|
6 | -- it under the terms of the GNU General Public License as published by | |||
|
7 | -- the Free Software Foundation; either version 2 of the License, or | |||
|
8 | -- (at your option) any later version. | |||
|
9 | -- | |||
|
10 | -- This program is distributed in the hope that it will be useful, | |||
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
13 | -- GNU General Public License for more details. | |||
|
14 | -- | |||
|
15 | -- You should have received a copy of the GNU General Public License | |||
|
16 | -- along with this program; if not, write to the Free Software | |||
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
|
18 | -------------------------------------------------------------------------------*/ | |||
|
19 | /*-- Author : Alexis Jeandet | |||
|
20 | -- Mail : alexis.jeandet@member.fsf.org | |||
|
21 | ----------------------------------------------------------------------------*/ | |||
|
22 | #include "mainwindow.h" | |||
|
23 | #include <QProcessEnvironment> | |||
|
24 | #include <QThread> | |||
|
25 | #include <SqpApplication.h> | |||
|
26 | #include <omp.h> | |||
|
27 | #include <qglobal.h> | |||
|
28 | ||||
|
29 | int main(int argc, char *argv[]) | |||
|
30 | { | |||
|
31 | SqpApplication a(argc, argv); | |||
|
32 | SqpApplication::setOrganizationName("LPP"); | |||
|
33 | SqpApplication::setOrganizationDomain("lpp.fr"); | |||
|
34 | SqpApplication::setApplicationName("SciQLop"); | |||
|
35 | MainWindow w; | |||
|
36 | w.show(); | |||
|
37 | ||||
|
38 | return a.exec(); | |||
|
39 | } |
@@ -0,0 +1,104 | |||||
|
1 | /*------------------------------------------------------------------------------ | |||
|
2 | -- This file is a part of the QLop Software | |||
|
3 | -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS | |||
|
4 | -- | |||
|
5 | -- This program is free software; you can redistribute it and/or modify | |||
|
6 | -- it under the terms of the GNU General Public License as published by | |||
|
7 | -- the Free Software Foundation; either version 2 of the License, or | |||
|
8 | -- (at your option) any later version. | |||
|
9 | -- | |||
|
10 | -- This program is distributed in the hope that it will be useful, | |||
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
13 | -- GNU General Public License for more details. | |||
|
14 | -- | |||
|
15 | -- You should have received a copy of the GNU General Public License | |||
|
16 | -- along with this program; if not, write to the Free Software | |||
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
|
18 | -------------------------------------------------------------------------------*/ | |||
|
19 | /*-- Author : Alexis Jeandet | |||
|
20 | -- Mail : alexis.jeandet@member.fsf.org | |||
|
21 | ----------------------------------------------------------------------------*/ | |||
|
22 | #include "mainwindow.h" | |||
|
23 | #include "ui_mainwindow.h" | |||
|
24 | #include <QAction> | |||
|
25 | #include <QDate> | |||
|
26 | #include <QDateTime> | |||
|
27 | #include <QDir> | |||
|
28 | #include <QFileDialog> | |||
|
29 | #include <omp.h> | |||
|
30 | //#include <network/filedownloader.h> | |||
|
31 | //#include <qlopdatabase.h> | |||
|
32 | //#include <qlopsettings.h> | |||
|
33 | //#include <qlopgui.h> | |||
|
34 | //#include <spacedata.h> | |||
|
35 | //#include "qlopcore.h" | |||
|
36 | //#include "qlopcodecmanager.h" | |||
|
37 | //#include "cdfcodec.h" | |||
|
38 | //#include "amdatxtcodec.h" | |||
|
39 | //#include <qlopplotmanager.h> | |||
|
40 | ||||
|
41 | ||||
|
42 | MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) | |||
|
43 | { | |||
|
44 | ui->setupUi(this); | |||
|
45 | /* QLopGUI::registerMenuBar(menuBar()); | |||
|
46 | this->setWindowIcon(QIcon(":/sciqlopLOGO.svg")); | |||
|
47 | this->m_progressWidget = new QWidget(); | |||
|
48 | this->m_progressLayout = new QVBoxLayout(this->m_progressWidget); | |||
|
49 | this->m_progressWidget->setLayout(this->m_progressLayout); | |||
|
50 | this->m_progressWidget->setWindowModality(Qt::WindowModal); | |||
|
51 | m_progressThreadIds = (int*) malloc(OMP_THREADS*sizeof(int)); | |||
|
52 | for(int i=0;i<OMP_THREADS;i++) | |||
|
53 | { | |||
|
54 | this->m_progress.append(new QProgressBar(this->m_progressWidget)); | |||
|
55 | this->m_progress.last()->setMinimum(0); | |||
|
56 | this->m_progress.last()->setMaximum(100); | |||
|
57 | this->m_progressLayout->addWidget(this->m_progress.last()); | |||
|
58 | this->m_progressWidget->hide(); | |||
|
59 | this->m_progressThreadIds[i] = -1; | |||
|
60 | } | |||
|
61 | this->m_progressWidget->setWindowTitle("Loading File"); | |||
|
62 | const QList<QLopService*>ServicesToLoad=QList<QLopService*>() | |||
|
63 | << QLopCore::self() | |||
|
64 | << QLopPlotManager::self() | |||
|
65 | << QLopCodecManager::self() | |||
|
66 | << FileDownloader::self() | |||
|
67 | << QLopDataBase::self() | |||
|
68 | << SpaceData::self(); | |||
|
69 | ||||
|
70 | CDFCodec::registerToManager(); | |||
|
71 | AMDATXTCodec::registerToManager(); | |||
|
72 | ||||
|
73 | ||||
|
74 | for(int i=0;i<ServicesToLoad.count();i++) | |||
|
75 | { | |||
|
76 | qDebug()<<ServicesToLoad.at(i)->serviceName(); | |||
|
77 | ServicesToLoad.at(i)->initialize(); //must be called before getGUI | |||
|
78 | QDockWidget* wdgt=ServicesToLoad.at(i)->getGUI(); | |||
|
79 | if(wdgt) | |||
|
80 | { | |||
|
81 | wdgt->setAllowedAreas(Qt::AllDockWidgetAreas); | |||
|
82 | this->addDockWidget(Qt::TopDockWidgetArea,wdgt); | |||
|
83 | } | |||
|
84 | PythonQt::self()->getMainModule().addObject(ServicesToLoad.at(i)->serviceName(),(QObject*)ServicesToLoad.at(i)); | |||
|
85 | }*/ | |||
|
86 | } | |||
|
87 | ||||
|
88 | MainWindow::~MainWindow() | |||
|
89 | { | |||
|
90 | delete ui; | |||
|
91 | } | |||
|
92 | ||||
|
93 | ||||
|
94 | void MainWindow::changeEvent(QEvent *e) | |||
|
95 | { | |||
|
96 | QMainWindow::changeEvent(e); | |||
|
97 | switch (e->type()) { | |||
|
98 | case QEvent::LanguageChange: | |||
|
99 | ui->retranslateUi(this); | |||
|
100 | break; | |||
|
101 | default: | |||
|
102 | break; | |||
|
103 | } | |||
|
104 | } |
@@ -0,0 +1,60 | |||||
|
1 | /*------------------------------------------------------------------------------ | |||
|
2 | -- This file is a part of the QLop Software | |||
|
3 | -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS | |||
|
4 | -- | |||
|
5 | -- This program is free software; you can redistribute it and/or modify | |||
|
6 | -- it under the terms of the GNU General Public License as published by | |||
|
7 | -- the Free Software Foundation; either version 2 of the License, or | |||
|
8 | -- (at your option) any later version. | |||
|
9 | -- | |||
|
10 | -- This program is distributed in the hope that it will be useful, | |||
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
13 | -- GNU General Public License for more details. | |||
|
14 | -- | |||
|
15 | -- You should have received a copy of the GNU General Public License | |||
|
16 | -- along with this program; if not, write to the Free Software | |||
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
|
18 | -------------------------------------------------------------------------------*/ | |||
|
19 | /*-- Author : Alexis Jeandet | |||
|
20 | -- Mail : alexis.jeandet@member.fsf.org | |||
|
21 | ----------------------------------------------------------------------------*/ | |||
|
22 | #ifndef MAINWINDOW_H | |||
|
23 | #define MAINWINDOW_H | |||
|
24 | ||||
|
25 | #include <QListWidgetItem> | |||
|
26 | #include <QMainWindow> | |||
|
27 | #include <QProgressBar> | |||
|
28 | #include <QProgressDialog> | |||
|
29 | #include <QThread> | |||
|
30 | #include <QVBoxLayout> | |||
|
31 | #include <QWidget> | |||
|
32 | //#include "../Core/qlopservice.h" | |||
|
33 | //#include "../Core/qlopgui.h" | |||
|
34 | ||||
|
35 | ||||
|
36 | namespace Ui { | |||
|
37 | class MainWindow; | |||
|
38 | } | |||
|
39 | ||||
|
40 | class MainWindow : public QMainWindow { | |||
|
41 | Q_OBJECT | |||
|
42 | ||||
|
43 | public: | |||
|
44 | explicit MainWindow(QWidget *parent = 0); | |||
|
45 | ~MainWindow(); | |||
|
46 | public slots: | |||
|
47 | ||||
|
48 | protected: | |||
|
49 | void changeEvent(QEvent *e); | |||
|
50 | ||||
|
51 | private: | |||
|
52 | Ui::MainWindow *ui; | |||
|
53 | QList<QProgressBar *> m_progress; | |||
|
54 | int *m_progressThreadIds; | |||
|
55 | QWidget *m_progressWidget; | |||
|
56 | QVBoxLayout *m_progressLayout; | |||
|
57 | // QList<QLopService*> m_qlopServices; | |||
|
58 | }; | |||
|
59 | ||||
|
60 | #endif // MAINWINDOW_H |
@@ -0,0 +1,56 | |||||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |||
|
2 | <ui version="4.0"> | |||
|
3 | <class>MainWindow</class> | |||
|
4 | <widget class="QMainWindow" name="MainWindow"> | |||
|
5 | <property name="geometry"> | |||
|
6 | <rect> | |||
|
7 | <x>0</x> | |||
|
8 | <y>0</y> | |||
|
9 | <width>800</width> | |||
|
10 | <height>600</height> | |||
|
11 | </rect> | |||
|
12 | </property> | |||
|
13 | <property name="windowTitle"> | |||
|
14 | <string>QLop</string> | |||
|
15 | </property> | |||
|
16 | <property name="dockNestingEnabled"> | |||
|
17 | <bool>true</bool> | |||
|
18 | </property> | |||
|
19 | <widget class="QWidget" name="centralWidget"> | |||
|
20 | <property name="enabled"> | |||
|
21 | <bool>true</bool> | |||
|
22 | </property> | |||
|
23 | <property name="sizePolicy"> | |||
|
24 | <sizepolicy hsizetype="Minimum" vsizetype="Minimum"> | |||
|
25 | <horstretch>0</horstretch> | |||
|
26 | <verstretch>0</verstretch> | |||
|
27 | </sizepolicy> | |||
|
28 | </property> | |||
|
29 | <property name="maximumSize"> | |||
|
30 | <size> | |||
|
31 | <width>16777215</width> | |||
|
32 | <height>16777215</height> | |||
|
33 | </size> | |||
|
34 | </property> | |||
|
35 | </widget> | |||
|
36 | <widget class="QMenuBar" name="menuBar"> | |||
|
37 | <property name="geometry"> | |||
|
38 | <rect> | |||
|
39 | <x>0</x> | |||
|
40 | <y>0</y> | |||
|
41 | <width>800</width> | |||
|
42 | <height>45</height> | |||
|
43 | </rect> | |||
|
44 | </property> | |||
|
45 | </widget> | |||
|
46 | <widget class="QStatusBar" name="statusBar"/> | |||
|
47 | <action name="actionIndex_Viewer"> | |||
|
48 | <property name="text"> | |||
|
49 | <string>Index Viewer</string> | |||
|
50 | </property> | |||
|
51 | </action> | |||
|
52 | </widget> | |||
|
53 | <layoutdefault spacing="6" margin="11"/> | |||
|
54 | <resources/> | |||
|
55 | <connections/> | |||
|
56 | </ui> |
@@ -0,0 +1,128 | |||||
|
1 | ||||
|
2 | ## core - CMakeLists.txt | |||
|
3 | STRING(TOLOWER ${CMAKE_PROJECT_NAME} LIBRARY_PREFFIX) | |||
|
4 | SET(SQPCORE_LIBRARY_NAME "${LIBRARY_PREFFIX}_core${DEBUG_SUFFIX}") | |||
|
5 | SET(SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/") | |||
|
6 | SET(INCLUDES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/") | |||
|
7 | ||||
|
8 | # Include core directory | |||
|
9 | include_directories("${INCLUDES_DIR}") | |||
|
10 | ||||
|
11 | # Set a variable to display a warning in the version files. | |||
|
12 | SET(SCIQLOP_CMAKE_GENERATION_WARNING "DON'T CHANGE THIS FILE. AUTOGENERATED BY CMAKE.") | |||
|
13 | # Generate the version file from the cmake version variables. The version | |||
|
14 | # variables are defined in the cmake/sciqlop_version.cmake file. | |||
|
15 | CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/resources/Version.h.in" | |||
|
16 | "${INCLUDES_DIR}/Version.h") | |||
|
17 | CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/resources/Version.cpp.in" | |||
|
18 | "${SOURCES_DIR}/Version.cpp") | |||
|
19 | ||||
|
20 | # | |||
|
21 | # Find Qt modules | |||
|
22 | # | |||
|
23 | SCIQLOP_FIND_QT(Core) | |||
|
24 | ||||
|
25 | # | |||
|
26 | # Compile the library library | |||
|
27 | # | |||
|
28 | FILE (GLOB_RECURSE MODULE_SOURCES | |||
|
29 | ${INCLUDES_DIR}/*.h | |||
|
30 | ${SOURCES_DIR}/*.c | |||
|
31 | ${SOURCES_DIR}/*.cpp | |||
|
32 | ${SOURCES_DIR}/*.h) | |||
|
33 | ||||
|
34 | ADD_LIBRARY(${SQPCORE_LIBRARY_NAME} ${MODULE_SOURCES}) | |||
|
35 | set_property(TARGET ${SQPCORE_LIBRARY_NAME} PROPERTY CXX_STANDARD 14) | |||
|
36 | set_property(TARGET ${SQPCORE_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) | |||
|
37 | TARGET_LINK_LIBRARIES(${SQPCORE_LIBRARY_NAME}) | |||
|
38 | qt5_use_modules(${SQPCORE_LIBRARY_NAME} Core) | |||
|
39 | ||||
|
40 | # From cmake documentation: http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html | |||
|
41 | # Entries in the COMPILE_DEFINITIONS are prefixed with -D or /D and added to the compile line in an unspecified order. | |||
|
42 | # The DEFINE_SYMBOL target property is also added as a compile definition as a special convenience case for SHARED and MODULE library targets | |||
|
43 | IF(BUILD_SHARED_LIBS) | |||
|
44 | SET_TARGET_PROPERTIES(${SQPCORE_LIBRARY_NAME} PROPERTIES COMPILE_DEFINITIONS "SCIQLOP_EXPORT") | |||
|
45 | ELSE() | |||
|
46 | TARGET_COMPILE_DEFINITIONS(${SQPCORE_LIBRARY_NAME} PUBLIC "SCIQLOP_STATIC_LIBRARIES") | |||
|
47 | ENDIF() | |||
|
48 | ||||
|
49 | # Set the variable to parent scope so that the other projects can copy the | |||
|
50 | # dependent shared libraries | |||
|
51 | SCIQLOP_SET_TO_PARENT_SCOPE(SQPCORE_LIBRARY_NAME) | |||
|
52 | ||||
|
53 | # Copy extern shared libraries to the lib folder | |||
|
54 | SCIQLOP_COPY_TO_TARGET(LIBRARY ${SQPCORE_LIBRARY_NAME} ${EXTERN_SHARED_LIBRARIES}) | |||
|
55 | ||||
|
56 | # Add the files to the list of files to be analyzed | |||
|
57 | LIST(APPEND CHECKSTYLE_INPUT_FILES ${MODULE_SOURCES}) | |||
|
58 | SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_INPUT_FILES) | |||
|
59 | # Vera++ exclusion files | |||
|
60 | #LIST(APPEND CHECKSTYLE_EXCLUSION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/path/to/exclusionFiles.tcl) | |||
|
61 | SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_EXCLUSION_FILES) | |||
|
62 | ||||
|
63 | # | |||
|
64 | # Compile the tests | |||
|
65 | # | |||
|
66 | IF(BUILD_TESTS) | |||
|
67 | INCLUDE_DIRECTORIES(${SOURCES_DIR}) | |||
|
68 | FILE (GLOB_RECURSE TESTS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Test*.cpp) | |||
|
69 | FILE (GLOB_RECURSE TESTS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Test*.h) | |||
|
70 | SET( TEST_LIBRARIES ${SQPCORE_LIBRARY_NAME}) | |||
|
71 | ||||
|
72 | FOREACH( testFile ${TESTS_SOURCES} ) | |||
|
73 | GET_FILENAME_COMPONENT( testDirectory ${testFile} DIRECTORY ) | |||
|
74 | GET_FILENAME_COMPONENT( testName ${testFile} NAME_WE ) | |||
|
75 | ||||
|
76 | # Add to the list of sources files all the sources in the same | |||
|
77 | # directory that aren't another test | |||
|
78 | FILE (GLOB currentTestSources | |||
|
79 | ${testDirectory}/*.c | |||
|
80 | ${testDirectory}/*.cpp | |||
|
81 | ${testDirectory}/*.h) | |||
|
82 | LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES}) | |||
|
83 | LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) | |||
|
84 | ||||
|
85 | ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources}) | |||
|
86 | TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES} ) | |||
|
87 | qt5_use_modules(${testName} Test) | |||
|
88 | ||||
|
89 | ADD_TEST( NAME ${testName} COMMAND ${testName} ) | |||
|
90 | ||||
|
91 | SCIQLOP_COPY_TO_TARGET(RUNTIME ${testName} ${EXTERN_SHARED_LIBRARIES}) | |||
|
92 | ENDFOREACH( testFile ) | |||
|
93 | ||||
|
94 | LIST(APPEND testFilesToFormat ${TESTS_SOURCES}) | |||
|
95 | LIST(APPEND testFilesToFormat ${TESTS_HEADERS}) | |||
|
96 | LIST(APPEND FORMATTING_INPUT_FILES ${testFilesToFormat}) | |||
|
97 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) | |||
|
98 | ENDIF(BUILD_TESTS) | |||
|
99 | ||||
|
100 | # | |||
|
101 | # Set the files that must be formatted by clang-format. | |||
|
102 | # | |||
|
103 | LIST (APPEND FORMATTING_INPUT_FILES ${MODULE_SOURCES}) | |||
|
104 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) | |||
|
105 | ||||
|
106 | # | |||
|
107 | # Set the directories that doxygen must browse to generate the | |||
|
108 | # documentation. | |||
|
109 | # | |||
|
110 | # Source directories: | |||
|
111 | LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/docs") | |||
|
112 | LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
113 | SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_INPUT_DIRS) | |||
|
114 | # Source directories to exclude from the documentation generation | |||
|
115 | #LIST (APPEND DOXYGEN_EXCLUDE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir/*") | |||
|
116 | SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_EXCLUDE_PATTERNS) | |||
|
117 | ||||
|
118 | # | |||
|
119 | # Set the directories with the sources to analyze and propagate the | |||
|
120 | # modification to the parent scope | |||
|
121 | # | |||
|
122 | # Source directories to analyze: | |||
|
123 | LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
124 | LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests") | |||
|
125 | SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_INPUT_DIRS) | |||
|
126 | # Source directories to exclude from the analysis | |||
|
127 | #LIST (APPEND ANALYSIS_EXCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir") | |||
|
128 | SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_EXCLUDE_DIRS) |
@@ -0,0 +1,21 | |||||
|
1 | # - Try to find sciqlop-core | |||
|
2 | # Once done this will define | |||
|
3 | # SCIQLOP-CORE_FOUND - System has sciqlop-core | |||
|
4 | # SCIQLOP-CORE_INCLUDE_DIR - The sciqlop-core include directories | |||
|
5 | # SCIQLOP-CORE_LIBRARIES - The libraries needed to use sciqlop-core | |||
|
6 | ||||
|
7 | if(SCIQLOP-CORE_FOUND) | |||
|
8 | return() | |||
|
9 | endif(SCIQLOP-CORE_FOUND) | |||
|
10 | ||||
|
11 | set(SCIQLOP-CORE_INCLUDE_DIR ${sciqlop-core_DIR}/../include) | |||
|
12 | ||||
|
13 | set (OS_LIB_EXTENSION "so") | |||
|
14 | ||||
|
15 | if(WIN32) | |||
|
16 | set (OS_LIB_EXTENSION "dll") | |||
|
17 | endif(WIN32) | |||
|
18 | # TODO: Add Mac Support | |||
|
19 | set(SCIQLOP-CORE_LIBRARIES ${LIBRARY_OUTPUT_PATH}/libsciqlop_core${DEBUG_SUFFIX}.${OS_LIB_EXTENSION}) | |||
|
20 | ||||
|
21 | set(SCIQLOP-CORE_FOUND TRUE) |
@@ -0,0 +1,461 | |||||
|
1 | /* | |||
|
2 | ==================================================================== | |||
|
3 | A Smart Pointer to IMPLementation (i.e. Smart PIMPL or just SPIMPL). | |||
|
4 | ==================================================================== | |||
|
5 | ||||
|
6 | Version: 1.1 | |||
|
7 | ||||
|
8 | Latest version: | |||
|
9 | https://github.com/oliora/samples/blob/master/spimpl.h | |||
|
10 | Rationale and description: | |||
|
11 | http://oliora.github.io/2015/12/29/pimpl-and-rule-of-zero.html | |||
|
12 | ||||
|
13 | Copyright (c) 2015 Andrey Upadyshev (oliora@gmail.com) | |||
|
14 | ||||
|
15 | Distributed under the Boost Software License, Version 1.0. | |||
|
16 | See http://www.boost.org/LICENSE_1_0.txt | |||
|
17 | ||||
|
18 | Changes history | |||
|
19 | --------------- | |||
|
20 | v1.1: | |||
|
21 | - auto_ptr support is disabled by default for C++17 compatibility | |||
|
22 | v1.0: | |||
|
23 | - Released | |||
|
24 | */ | |||
|
25 | ||||
|
26 | #ifndef SPIMPL_H_ | |||
|
27 | #define SPIMPL_H_ | |||
|
28 | ||||
|
29 | #include <cassert> | |||
|
30 | #include <memory> | |||
|
31 | #include <type_traits> | |||
|
32 | ||||
|
33 | ||||
|
34 | #if defined _MSC_VER && _MSC_VER < 1900 // MS Visual Studio before VS2015 | |||
|
35 | #define SPIMPL_NO_CPP11_NOEXCEPT | |||
|
36 | #define SPIMPL_NO_CPP11_CONSTEXPR | |||
|
37 | #define SPIMPL_NO_CPP11_DEFAULT_MOVE_SPEC_FUNC | |||
|
38 | #endif | |||
|
39 | ||||
|
40 | #if !defined SPIMPL_NO_CPP11_NOEXCEPT | |||
|
41 | #define SPIMPL_NOEXCEPT noexcept | |||
|
42 | #else | |||
|
43 | #define SPIMPL_NOEXCEPT | |||
|
44 | #endif | |||
|
45 | ||||
|
46 | #if !defined SPIMPL_NO_CPP11_CONSTEXPR | |||
|
47 | #define SPIMPL_CONSTEXPR constexpr | |||
|
48 | #else | |||
|
49 | #define SPIMPL_CONSTEXPR | |||
|
50 | #endif | |||
|
51 | ||||
|
52 | // define SPIMPL_HAS_AUTO_PTR to enable constructor and assignment operator that accept | |||
|
53 | // std::auto_ptr | |||
|
54 | // TODO: auto detect std::auto_ptr support | |||
|
55 | ||||
|
56 | ||||
|
57 | namespace spimpl { | |||
|
58 | namespace details { | |||
|
59 | template <class T> | |||
|
60 | T *default_copy(T *src) | |||
|
61 | { | |||
|
62 | static_assert(sizeof(T) > 0, "default_copy cannot copy incomplete type"); | |||
|
63 | static_assert(!std::is_void<T>::value, "default_copy cannot copy incomplete type"); | |||
|
64 | return new T(*src); | |||
|
65 | } | |||
|
66 | ||||
|
67 | template <class T> | |||
|
68 | void default_delete(T *p) SPIMPL_NOEXCEPT | |||
|
69 | { | |||
|
70 | static_assert(sizeof(T) > 0, "default_delete cannot delete incomplete type"); | |||
|
71 | static_assert(!std::is_void<T>::value, "default_delete cannot delete incomplete type"); | |||
|
72 | delete p; | |||
|
73 | } | |||
|
74 | ||||
|
75 | template <class T> | |||
|
76 | struct default_deleter { | |||
|
77 | using type = void (*)(T *); | |||
|
78 | }; | |||
|
79 | ||||
|
80 | template <class T> | |||
|
81 | using default_deleter_t = typename default_deleter<T>::type; | |||
|
82 | ||||
|
83 | template <class T> | |||
|
84 | struct default_copier { | |||
|
85 | using type = T *(*)(T *); | |||
|
86 | }; | |||
|
87 | ||||
|
88 | template <class T> | |||
|
89 | using default_copier_t = typename default_copier<T>::type; | |||
|
90 | ||||
|
91 | template <class T, class D, class C> | |||
|
92 | struct is_default_manageable | |||
|
93 | : public std::integral_constant<bool, std::is_same<D, default_deleter_t<T> >::value | |||
|
94 | && std::is_same<C, default_copier_t<T> >::value> { | |||
|
95 | }; | |||
|
96 | } | |||
|
97 | ||||
|
98 | ||||
|
99 | template <class T, class Deleter = details::default_deleter_t<T>, | |||
|
100 | class Copier = details::default_copier_t<T> > | |||
|
101 | class impl_ptr { | |||
|
102 | private: | |||
|
103 | static_assert(!std::is_array<T>::value, | |||
|
104 | "impl_ptr specialization for arrays is not implemented"); | |||
|
105 | struct dummy_t_ { | |||
|
106 | int dummy__; | |||
|
107 | }; | |||
|
108 | ||||
|
109 | public: | |||
|
110 | using pointer = T *; | |||
|
111 | using element_type = T; | |||
|
112 | using copier_type = typename std::decay<Copier>::type; | |||
|
113 | using deleter_type = typename std::decay<Deleter>::type; | |||
|
114 | using unique_ptr_type = std::unique_ptr<T, deleter_type>; | |||
|
115 | using is_default_manageable = details::is_default_manageable<T, deleter_type, copier_type>; | |||
|
116 | ||||
|
117 | SPIMPL_CONSTEXPR impl_ptr() SPIMPL_NOEXCEPT : ptr_(nullptr, deleter_type{}), | |||
|
118 | copier_(copier_type{}) | |||
|
119 | { | |||
|
120 | } | |||
|
121 | ||||
|
122 | SPIMPL_CONSTEXPR impl_ptr(std::nullptr_t) SPIMPL_NOEXCEPT : impl_ptr() {} | |||
|
123 | ||||
|
124 | template <class D, class C> | |||
|
125 | impl_ptr(pointer p, D &&d, C &&c, | |||
|
126 | typename std::enable_if<std::is_convertible<D, deleter_type>::value | |||
|
127 | && std::is_convertible<C, copier_type>::value, | |||
|
128 | dummy_t_>::type | |||
|
129 | = dummy_t_()) SPIMPL_NOEXCEPT : ptr_(std::move(p), std::forward<D>(d)), | |||
|
130 | copier_(std::forward<C>(c)) | |||
|
131 | { | |||
|
132 | } | |||
|
133 | ||||
|
134 | template <class U> | |||
|
135 | impl_ptr(U *u, typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
136 | && is_default_manageable::value, | |||
|
137 | dummy_t_>::type | |||
|
138 | = dummy_t_()) SPIMPL_NOEXCEPT | |||
|
139 | : impl_ptr(u, &details::default_delete<T>, &details::default_copy<T>) | |||
|
140 | { | |||
|
141 | } | |||
|
142 | ||||
|
143 | impl_ptr(const impl_ptr &r) : impl_ptr(r.clone()) {} | |||
|
144 | ||||
|
145 | #ifndef SPIMPL_NO_CPP11_DEFAULT_MOVE_SPEC_FUNC | |||
|
146 | impl_ptr(impl_ptr &&r) SPIMPL_NOEXCEPT = default; | |||
|
147 | #else | |||
|
148 | impl_ptr(impl_ptr &&r) SPIMPL_NOEXCEPT : ptr_(std::move(r.ptr_)), copier_(std::move(r.copier_)) | |||
|
149 | { | |||
|
150 | } | |||
|
151 | #endif | |||
|
152 | ||||
|
153 | #ifdef SPIMPL_HAS_AUTO_PTR | |||
|
154 | template <class U> | |||
|
155 | impl_ptr(std::auto_ptr<U> &&u, typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
156 | && is_default_manageable::value, | |||
|
157 | dummy_t_>::type | |||
|
158 | = dummy_t_()) SPIMPL_NOEXCEPT | |||
|
159 | : ptr_(u.release(), &details::default_delete<T>), | |||
|
160 | copier_(&details::default_copy<T>) | |||
|
161 | { | |||
|
162 | } | |||
|
163 | #endif | |||
|
164 | ||||
|
165 | template <class U> | |||
|
166 | impl_ptr(std::unique_ptr<U> &&u, | |||
|
167 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
168 | && is_default_manageable::value, | |||
|
169 | dummy_t_>::type | |||
|
170 | = dummy_t_()) SPIMPL_NOEXCEPT : ptr_(u.release(), &details::default_delete<T>), | |||
|
171 | copier_(&details::default_copy<T>) | |||
|
172 | { | |||
|
173 | } | |||
|
174 | ||||
|
175 | template <class U, class D, class C> | |||
|
176 | impl_ptr(std::unique_ptr<U, D> &&u, C &&c, | |||
|
177 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
178 | && std::is_convertible<D, deleter_type>::value | |||
|
179 | && std::is_convertible<C, copier_type>::value, | |||
|
180 | dummy_t_>::type | |||
|
181 | = dummy_t_()) SPIMPL_NOEXCEPT : ptr_(std::move(u)), | |||
|
182 | copier_(std::forward<C>(c)) | |||
|
183 | { | |||
|
184 | } | |||
|
185 | ||||
|
186 | template <class U, class D, class C> | |||
|
187 | impl_ptr(impl_ptr<U, D, C> &&u, | |||
|
188 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
189 | && std::is_convertible<D, deleter_type>::value | |||
|
190 | && std::is_convertible<C, copier_type>::value, | |||
|
191 | dummy_t_>::type | |||
|
192 | = dummy_t_()) SPIMPL_NOEXCEPT : ptr_(std::move(u.ptr_)), | |||
|
193 | copier_(std::move(u.copier_)) | |||
|
194 | { | |||
|
195 | } | |||
|
196 | ||||
|
197 | impl_ptr &operator=(const impl_ptr &r) | |||
|
198 | { | |||
|
199 | if (this == &r) | |||
|
200 | return *this; | |||
|
201 | ||||
|
202 | return operator=(r.clone()); | |||
|
203 | } | |||
|
204 | ||||
|
205 | #ifndef SPIMPL_NO_CPP11_DEFAULT_MOVE_SPEC_FUNC | |||
|
206 | impl_ptr &operator=(impl_ptr &&r) SPIMPL_NOEXCEPT = default; | |||
|
207 | #else | |||
|
208 | impl_ptr &operator=(impl_ptr &&r) SPIMPL_NOEXCEPT | |||
|
209 | { | |||
|
210 | ptr_ = std::move(r.ptr_); | |||
|
211 | copier_ = std::move(r.copier_); | |||
|
212 | return *this; | |||
|
213 | } | |||
|
214 | #endif | |||
|
215 | ||||
|
216 | template <class U, class D, class C> | |||
|
217 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
218 | && std::is_convertible<D, deleter_type>::value | |||
|
219 | && std::is_convertible<C, copier_type>::value, | |||
|
220 | impl_ptr &>::type | |||
|
221 | operator=(impl_ptr<U, D, C> &&u) SPIMPL_NOEXCEPT | |||
|
222 | { | |||
|
223 | ptr_ = std::move(u.ptr_); | |||
|
224 | copier_ = std::move(u.copier_); | |||
|
225 | return *this; | |||
|
226 | } | |||
|
227 | ||||
|
228 | template <class U, class D, class C> | |||
|
229 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
230 | && std::is_convertible<D, deleter_type>::value | |||
|
231 | && std::is_convertible<C, copier_type>::value, | |||
|
232 | impl_ptr &>::type | |||
|
233 | operator=(const impl_ptr<U, D, C> &u) | |||
|
234 | { | |||
|
235 | return operator=(u.clone()); | |||
|
236 | } | |||
|
237 | ||||
|
238 | // | |||
|
239 | ||||
|
240 | #ifdef SPIMPL_HAS_AUTO_PTR | |||
|
241 | template <class U> | |||
|
242 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
243 | && is_default_manageable::value, | |||
|
244 | impl_ptr &>::type | |||
|
245 | operator=(std::auto_ptr<U> &&u) SPIMPL_NOEXCEPT | |||
|
246 | { | |||
|
247 | return operator=(impl_ptr(std::move(u))); | |||
|
248 | } | |||
|
249 | #endif | |||
|
250 | ||||
|
251 | template <class U> | |||
|
252 | typename std::enable_if<std::is_convertible<U *, pointer>::value | |||
|
253 | && is_default_manageable::value, | |||
|
254 | impl_ptr &>::type | |||
|
255 | operator=(std::unique_ptr<U> &&u) SPIMPL_NOEXCEPT | |||
|
256 | { | |||
|
257 | return operator=(impl_ptr(std::move(u))); | |||
|
258 | } | |||
|
259 | ||||
|
260 | impl_ptr clone() const | |||
|
261 | { | |||
|
262 | return impl_ptr(ptr_ ? copier_(ptr_.get()) : nullptr, ptr_.get_deleter(), copier_); | |||
|
263 | } | |||
|
264 | ||||
|
265 | typename std::remove_reference<T>::type &operator*() const { return *ptr_; } | |||
|
266 | pointer operator->() const SPIMPL_NOEXCEPT { return get(); } | |||
|
267 | pointer get() const SPIMPL_NOEXCEPT { return ptr_.get(); } | |||
|
268 | ||||
|
269 | void swap(impl_ptr &u) SPIMPL_NOEXCEPT | |||
|
270 | { | |||
|
271 | using std::swap; | |||
|
272 | ptr_.swap(u.ptr_); | |||
|
273 | swap(copier_, u.copier_); | |||
|
274 | } | |||
|
275 | ||||
|
276 | pointer release() SPIMPL_NOEXCEPT { return ptr_.release(); } | |||
|
277 | ||||
|
278 | unique_ptr_type release_unique() SPIMPL_NOEXCEPT { return std::move(ptr_); } | |||
|
279 | ||||
|
280 | explicit operator bool() const SPIMPL_NOEXCEPT { return static_cast<bool>(ptr_); } | |||
|
281 | ||||
|
282 | typename std::remove_reference<deleter_type>::type &get_deleter() SPIMPL_NOEXCEPT | |||
|
283 | { | |||
|
284 | return ptr_.get_deleter(); | |||
|
285 | } | |||
|
286 | const typename std::remove_reference<deleter_type>::type &get_deleter() const SPIMPL_NOEXCEPT | |||
|
287 | { | |||
|
288 | return ptr_.get_deleter(); | |||
|
289 | } | |||
|
290 | ||||
|
291 | typename std::remove_reference<copier_type>::type &get_copier() SPIMPL_NOEXCEPT | |||
|
292 | { | |||
|
293 | return copier_; | |||
|
294 | } | |||
|
295 | const typename std::remove_reference<copier_type>::type &get_copier() const SPIMPL_NOEXCEPT | |||
|
296 | { | |||
|
297 | return copier_; | |||
|
298 | } | |||
|
299 | ||||
|
300 | private: | |||
|
301 | unique_ptr_type ptr_; | |||
|
302 | copier_type copier_; | |||
|
303 | }; | |||
|
304 | ||||
|
305 | ||||
|
306 | template <class T, class D, class C> | |||
|
307 | inline void swap(impl_ptr<T, D, C> &l, impl_ptr<T, D, C> &r) SPIMPL_NOEXCEPT | |||
|
308 | { | |||
|
309 | l.swap(r); | |||
|
310 | } | |||
|
311 | ||||
|
312 | ||||
|
313 | template <class T1, class D1, class C1, class T2, class D2, class C2> | |||
|
314 | inline bool operator==(const impl_ptr<T1, D1, C1> &l, const impl_ptr<T2, D2, C2> &r) | |||
|
315 | { | |||
|
316 | return l.get() == r.get(); | |||
|
317 | } | |||
|
318 | ||||
|
319 | template <class T1, class D1, class C1, class T2, class D2, class C2> | |||
|
320 | inline bool operator!=(const impl_ptr<T1, D1, C1> &l, const impl_ptr<T2, D2, C2> &r) | |||
|
321 | { | |||
|
322 | return !(l == r); | |||
|
323 | } | |||
|
324 | ||||
|
325 | template <class T1, class D1, class C1, class T2, class D2, class C2> | |||
|
326 | inline bool operator<(const impl_ptr<T1, D1, C1> &l, const impl_ptr<T2, D2, C2> &r) | |||
|
327 | { | |||
|
328 | using P1 = typename impl_ptr<T1, D1, C1>::pointer; | |||
|
329 | using P2 = typename impl_ptr<T2, D2, C2>::pointer; | |||
|
330 | using CT = typename std::common_type<P1, P2>::type; | |||
|
331 | return std::less<CT>()(l.get(), r.get()); | |||
|
332 | } | |||
|
333 | ||||
|
334 | template <class T1, class D1, class C1, class T2, class D2, class C2> | |||
|
335 | inline bool operator>(const impl_ptr<T1, D1, C1> &l, const impl_ptr<T2, D2, C2> &r) | |||
|
336 | { | |||
|
337 | return r < l; | |||
|
338 | } | |||
|
339 | ||||
|
340 | template <class T1, class D1, class C1, class T2, class D2, class C2> | |||
|
341 | inline bool operator<=(const impl_ptr<T1, D1, C1> &l, const impl_ptr<T2, D2, C2> &r) | |||
|
342 | { | |||
|
343 | return !(r < l); | |||
|
344 | } | |||
|
345 | ||||
|
346 | template <class T1, class D1, class C1, class T2, class D2, class C2> | |||
|
347 | inline bool operator>=(const impl_ptr<T1, D1, C1> &l, const impl_ptr<T2, D2, C2> &r) | |||
|
348 | { | |||
|
349 | return !(l < r); | |||
|
350 | } | |||
|
351 | ||||
|
352 | template <class T, class D, class C> | |||
|
353 | inline bool operator==(const impl_ptr<T, D, C> &p, std::nullptr_t) SPIMPL_NOEXCEPT | |||
|
354 | { | |||
|
355 | return !p; | |||
|
356 | } | |||
|
357 | ||||
|
358 | template <class T, class D, class C> | |||
|
359 | inline bool operator==(std::nullptr_t, const impl_ptr<T, D, C> &p) SPIMPL_NOEXCEPT | |||
|
360 | { | |||
|
361 | return !p; | |||
|
362 | } | |||
|
363 | ||||
|
364 | template <class T, class D, class C> | |||
|
365 | inline bool operator!=(const impl_ptr<T, D, C> &p, std::nullptr_t) SPIMPL_NOEXCEPT | |||
|
366 | { | |||
|
367 | return static_cast<bool>(p); | |||
|
368 | } | |||
|
369 | ||||
|
370 | template <class T, class D, class C> | |||
|
371 | inline bool operator!=(std::nullptr_t, const impl_ptr<T, D, C> &p) SPIMPL_NOEXCEPT | |||
|
372 | { | |||
|
373 | return static_cast<bool>(p); | |||
|
374 | } | |||
|
375 | ||||
|
376 | template <class T, class D, class C> | |||
|
377 | inline bool operator<(const impl_ptr<T, D, C> &l, std::nullptr_t) | |||
|
378 | { | |||
|
379 | using P = typename impl_ptr<T, D, C>::pointer; | |||
|
380 | return std::less<P>()(l.get(), nullptr); | |||
|
381 | } | |||
|
382 | ||||
|
383 | template <class T, class D, class C> | |||
|
384 | inline bool operator<(std::nullptr_t, const impl_ptr<T, D, C> &p) | |||
|
385 | { | |||
|
386 | using P = typename impl_ptr<T, D, C>::pointer; | |||
|
387 | return std::less<P>()(nullptr, p.get()); | |||
|
388 | } | |||
|
389 | ||||
|
390 | template <class T, class D, class C> | |||
|
391 | inline bool operator>(const impl_ptr<T, D, C> &p, std::nullptr_t) | |||
|
392 | { | |||
|
393 | return nullptr < p; | |||
|
394 | } | |||
|
395 | ||||
|
396 | template <class T, class D, class C> | |||
|
397 | inline bool operator>(std::nullptr_t, const impl_ptr<T, D, C> &p) | |||
|
398 | { | |||
|
399 | return p < nullptr; | |||
|
400 | } | |||
|
401 | ||||
|
402 | template <class T, class D, class C> | |||
|
403 | inline bool operator<=(const impl_ptr<T, D, C> &p, std::nullptr_t) | |||
|
404 | { | |||
|
405 | return !(nullptr < p); | |||
|
406 | } | |||
|
407 | ||||
|
408 | template <class T, class D, class C> | |||
|
409 | inline bool operator<=(std::nullptr_t, const impl_ptr<T, D, C> &p) | |||
|
410 | { | |||
|
411 | return !(p < nullptr); | |||
|
412 | } | |||
|
413 | ||||
|
414 | template <class T, class D, class C> | |||
|
415 | inline bool operator>=(const impl_ptr<T, D, C> &p, std::nullptr_t) | |||
|
416 | { | |||
|
417 | return !(p < nullptr); | |||
|
418 | } | |||
|
419 | ||||
|
420 | template <class T, class D, class C> | |||
|
421 | inline bool operator>=(std::nullptr_t, const impl_ptr<T, D, C> &p) | |||
|
422 | { | |||
|
423 | return !(nullptr < p); | |||
|
424 | } | |||
|
425 | ||||
|
426 | ||||
|
427 | template <class T, class... Args> | |||
|
428 | inline impl_ptr<T> make_impl(Args &&... args) | |||
|
429 | { | |||
|
430 | return impl_ptr<T>(new T(std::forward<Args>(args)...), &details::default_delete<T>, | |||
|
431 | &details::default_copy<T>); | |||
|
432 | } | |||
|
433 | ||||
|
434 | ||||
|
435 | // Helpers to manage unique impl, stored in std::unique_ptr | |||
|
436 | ||||
|
437 | template <class T, class Deleter = void (*)(T *)> | |||
|
438 | using unique_impl_ptr = std::unique_ptr<T, Deleter>; | |||
|
439 | ||||
|
440 | template <class T, class... Args> | |||
|
441 | inline unique_impl_ptr<T> make_unique_impl(Args &&... args) | |||
|
442 | { | |||
|
443 | static_assert(!std::is_array<T>::value, "unique_impl_ptr does not support arrays"); | |||
|
444 | return unique_impl_ptr<T>(new T(std::forward<Args>(args)...), &details::default_delete<T>); | |||
|
445 | } | |||
|
446 | } | |||
|
447 | ||||
|
448 | namespace std { | |||
|
449 | template <class T, class D, class C> | |||
|
450 | struct hash<spimpl::impl_ptr<T, D, C> > { | |||
|
451 | using argument_type = spimpl::impl_ptr<T, D, C>; | |||
|
452 | using result_type = size_t; | |||
|
453 | ||||
|
454 | result_type operator()(const argument_type &p) const SPIMPL_NOEXCEPT | |||
|
455 | { | |||
|
456 | return hash<typename argument_type::pointer>()(p.get()); | |||
|
457 | } | |||
|
458 | }; | |||
|
459 | } | |||
|
460 | ||||
|
461 | #endif // SPIMPL_H_ |
@@ -0,0 +1,39 | |||||
|
1 | #ifndef SCIQLOP_DATASOURCECONTROLLER_H | |||
|
2 | #define SCIQLOP_DATASOURCECONTROLLER_H | |||
|
3 | ||||
|
4 | #include "DataSourceController.h" | |||
|
5 | ||||
|
6 | #include <QLoggingCategory> | |||
|
7 | #include <QObject> | |||
|
8 | ||||
|
9 | #include <Common/spimpl.h> | |||
|
10 | ||||
|
11 | Q_DECLARE_LOGGING_CATEGORY(LOG_DataSourceController) | |||
|
12 | ||||
|
13 | /** | |||
|
14 | * @brief The DataSourceController class aims to make the link between SciQlop | |||
|
15 | * and its plugins. This is the intermediate class that SciQlop have to use | |||
|
16 | * in the way to connect a data source. Please first use load method to intialize | |||
|
17 | * a plugin specified by its metadata name (JSON plugin source) then others specifics | |||
|
18 | * method will ba able to access it. | |||
|
19 | * You can load a data source driver plugin then create a data source. | |||
|
20 | */ | |||
|
21 | class DataSourceController : public QObject { | |||
|
22 | Q_OBJECT | |||
|
23 | public: | |||
|
24 | explicit DataSourceController(QObject *parent = 0); | |||
|
25 | virtual ~DataSourceController(); | |||
|
26 | ||||
|
27 | public slots: | |||
|
28 | /// Manage init/end of the controller | |||
|
29 | void initialize(); | |||
|
30 | void finalize(); | |||
|
31 | ||||
|
32 | private: | |||
|
33 | void waitForFinish(); | |||
|
34 | ||||
|
35 | class DataSourceControllerPrivate; | |||
|
36 | spimpl::unique_impl_ptr<DataSourceControllerPrivate> impl; | |||
|
37 | }; | |||
|
38 | ||||
|
39 | #endif // SCIQLOP_DATASOURCECONTROLLER_H |
@@ -0,0 +1,78 | |||||
|
1 | #include "Version.h" | |||
|
2 | ||||
|
3 | /*************************************************** | |||
|
4 | * @SCIQLOP_CMAKE_GENERATION_WARNING@ * | |||
|
5 | ***************************************************/ | |||
|
6 | ||||
|
7 | #include <QtCore/QDateTime> | |||
|
8 | #include <QtCore/QStringList> | |||
|
9 | ||||
|
10 | namespace sciqlop { | |||
|
11 | ||||
|
12 | const char *Version::VERSION_SUFFIX = "@SCIQLOP_VERSION_SUFFIX@"; | |||
|
13 | ||||
|
14 | /** | |||
|
15 | * From the C99 standard: | |||
|
16 | * __DATE__: The date of translation of the preprocessing translation unit: | |||
|
17 | * a character string literal of the form "Mmm dd yyyy", where the names of | |||
|
18 | * the months are the same as those generated by the asctime function, and | |||
|
19 | * the first character of dd is a space character if the value is less than | |||
|
20 | * 10. If the date of translation is not available, an | |||
|
21 | * implementation-defined valid date shall be supplied. | |||
|
22 | */ | |||
|
23 | const char *Version::BUILD_DATE = __DATE__; | |||
|
24 | /** | |||
|
25 | * From the C99 standard: | |||
|
26 | * __TIME__: The time of translation of the preprocessing translation unit: | |||
|
27 | * a character string literal of the form "hh:mm:ss" as in the time | |||
|
28 | * generated by the asctime function. If the time of translation is not | |||
|
29 | * available, an implementation-defined valid time shall be supplied. | |||
|
30 | */ | |||
|
31 | const char *Version::BUILD_TIME = __TIME__; | |||
|
32 | ||||
|
33 | QDateTime Version::buildDateTime() | |||
|
34 | { | |||
|
35 | static QDateTime buildDateTime; | |||
|
36 | if (!buildDateTime.isValid()) { | |||
|
37 | // Convert BUILD_DATE to a QDate | |||
|
38 | // The __DATE__ macro return the month name with the asctime() function, | |||
|
39 | // which doesn't support localization, the month names returned are | |||
|
40 | // always the same. On the contrary, the "MMM" format on | |||
|
41 | // QDate::fromString() is localized, so this method can't be used to | |||
|
42 | // retrieve the month and we must manually do it instead. | |||
|
43 | QString buildDateStr = QString(BUILD_DATE); | |||
|
44 | QString buildMonthStr = buildDateStr.left(3); | |||
|
45 | QString buildDayAndYearStr = buildDateStr.mid(4).trimmed(); | |||
|
46 | ||||
|
47 | QDate buildDate = QDate::fromString(buildDayAndYearStr, "d yyyy"); | |||
|
48 | QStringList monthList = QStringList() << "Jan" | |||
|
49 | << "Feb" | |||
|
50 | << "Mar" | |||
|
51 | << "Apr" | |||
|
52 | << "May" | |||
|
53 | << "Jun" | |||
|
54 | << "Jul" | |||
|
55 | << "Aug" | |||
|
56 | << "Sep" | |||
|
57 | << "Oct" | |||
|
58 | << "Nov" | |||
|
59 | << "Dec"; | |||
|
60 | for (int i = 0; i < monthList.size(); ++i) { | |||
|
61 | if (buildMonthStr == monthList.at(i)) { | |||
|
62 | buildDate.setDate(buildDate.year(), i + 1, buildDate.day()); | |||
|
63 | break; | |||
|
64 | } | |||
|
65 | } | |||
|
66 | ||||
|
67 | // Convert BUILD_TIME to a QTime | |||
|
68 | QTime buildTime = QTime::fromString(BUILD_TIME, "hh:mm:ss"); | |||
|
69 | ||||
|
70 | // Set the buildDateTime | |||
|
71 | buildDateTime.setDate(buildDate); | |||
|
72 | buildDateTime.setTime(buildTime); | |||
|
73 | } | |||
|
74 | ||||
|
75 | return buildDateTime; | |||
|
76 | } | |||
|
77 | ||||
|
78 | } // namespace sciqlop |
@@ -0,0 +1,98 | |||||
|
1 | // TODO copyright | |||
|
2 | /** | |||
|
3 | * @file Version.h | |||
|
4 | */ | |||
|
5 | #ifndef SCIQLOP_VERSION_H | |||
|
6 | #define SCIQLOP_VERSION_H | |||
|
7 | ||||
|
8 | /*************************************************** | |||
|
9 | * @SCIQLOP_CMAKE_GENERATION_WARNING@ * | |||
|
10 | ***************************************************/ | |||
|
11 | ||||
|
12 | //#include "SciqlopExport.h" | |||
|
13 | #include <QtCore/QString> | |||
|
14 | ||||
|
15 | class QDateTime; | |||
|
16 | ||||
|
17 | namespace sciqlop { | |||
|
18 | ||||
|
19 | /** | |||
|
20 | * Holds the version of Sciqlop. | |||
|
21 | * | |||
|
22 | * @attention Don't update this class directly, it is generated from the | |||
|
23 | * `resources/Version.h.in` and `resources/Version.cpp.in` files, along with | |||
|
24 | * the cmake variables defined in the `cmake/sciqlop_version.cmake` file. | |||
|
25 | * | |||
|
26 | * To change the Sciqlop version number, update the `cmake/sciqlop_version.cmake` | |||
|
27 | * file, and to change this class other than to change the version number, | |||
|
28 | * update the `resources/Version.h.in` and `resources/Version.cpp.in` files. | |||
|
29 | * @ingroup Utils | |||
|
30 | */ | |||
|
31 | class /*SCIQLOP_API*/ Version { | |||
|
32 | public: | |||
|
33 | /** | |||
|
34 | * Retrieve the version of Sciqlop. | |||
|
35 | * | |||
|
36 | * The version is of the form MAJOR.MINOR.PATCH. If a suffix has been | |||
|
37 | * provided to the version, it is appended after the PATCH. | |||
|
38 | * | |||
|
39 | * The version can be modified by updating the cmake/sciqlop_version.cmake | |||
|
40 | * file. | |||
|
41 | * | |||
|
42 | * @return The version of Sciqlop as a QString. | |||
|
43 | */ | |||
|
44 | static QString version() | |||
|
45 | { | |||
|
46 | static const QString v("@SCIQLOP_VERSION@"); | |||
|
47 | return v; | |||
|
48 | } | |||
|
49 | ||||
|
50 | /** | |||
|
51 | * @return The datetime of the build. | |||
|
52 | */ | |||
|
53 | static QDateTime buildDateTime(); | |||
|
54 | ||||
|
55 | /** | |||
|
56 | * Major version. | |||
|
57 | */ | |||
|
58 | static const int VERSION_MAJOR = @SCIQLOP_VERSION_MAJOR@; | |||
|
59 | /** | |||
|
60 | * Minor version. | |||
|
61 | */ | |||
|
62 | static const int VERSION_MINOR = @SCIQLOP_VERSION_MINOR@; | |||
|
63 | /** | |||
|
64 | * Patch version. | |||
|
65 | */ | |||
|
66 | static const int VERSION_PATCH = @SCIQLOP_VERSION_PATCH@; | |||
|
67 | /** | |||
|
68 | * Suffix version. | |||
|
69 | */ | |||
|
70 | static const char *VERSION_SUFFIX; | |||
|
71 | ||||
|
72 | /** | |||
|
73 | * Compile date computed with the __DATE__ macro. | |||
|
74 | * | |||
|
75 | * From the C99 standard: | |||
|
76 | * __DATE__: The date of translation of the preprocessing translation unit: | |||
|
77 | * a character string literal of the form "Mmm dd yyyy", where the names of | |||
|
78 | * the months are the same as those generated by the asctime function, and | |||
|
79 | * the first character of dd is a space character if the value is less than | |||
|
80 | * 10. If the date of translation is not available, an | |||
|
81 | * implementation-defined valid date shall be supplied. | |||
|
82 | */ | |||
|
83 | static const char *BUILD_DATE; | |||
|
84 | /** | |||
|
85 | * Compile time computed with the __TIME__ macro. | |||
|
86 | * | |||
|
87 | * From the C99 standard: | |||
|
88 | * __TIME__: The time of translation of the preprocessing translation unit: | |||
|
89 | * a character string literal of the form "hh:mm:ss" as in the time | |||
|
90 | * generated by the asctime function. If the time of translation is not | |||
|
91 | * available, an implementation-defined valid time shall be supplied. | |||
|
92 | */ | |||
|
93 | static const char *BUILD_TIME; | |||
|
94 | }; | |||
|
95 | ||||
|
96 | } // namespace sciqlop | |||
|
97 | ||||
|
98 | #endif // SCIQLOP_VERSION_H |
@@ -0,0 +1,47 | |||||
|
1 | #include "DataSource/DataSourceController.h" | |||
|
2 | ||||
|
3 | #include <QMutex> | |||
|
4 | #include <QThread> | |||
|
5 | ||||
|
6 | Q_LOGGING_CATEGORY(LOG_DataSourceController, "dataSourceController") | |||
|
7 | ||||
|
8 | class DataSourceController::DataSourceControllerPrivate { | |||
|
9 | public: | |||
|
10 | DataSourceControllerPrivate() {} | |||
|
11 | ||||
|
12 | ||||
|
13 | QMutex m_WorkingMutex; | |||
|
14 | }; | |||
|
15 | ||||
|
16 | DataSourceController::DataSourceController(QObject *parent) | |||
|
17 | : impl{spimpl::make_unique_impl<DataSourceControllerPrivate>()} | |||
|
18 | { | |||
|
19 | qCInfo(LOG_DataSourceController()) << tr("Construction du DataSourceController"); | |||
|
20 | } | |||
|
21 | ||||
|
22 | DataSourceController::~DataSourceController() | |||
|
23 | { | |||
|
24 | // delete impl; | |||
|
25 | this->waitForFinish(); | |||
|
26 | } | |||
|
27 | ||||
|
28 | void DataSourceController::initialize() | |||
|
29 | { | |||
|
30 | qCInfo(LOG_DataSourceController()) << tr("initialize du DataSourceController"); | |||
|
31 | impl->m_WorkingMutex.lock(); | |||
|
32 | qCInfo(LOG_DataSourceController()) << tr("initialize du DataSourceController END"); | |||
|
33 | } | |||
|
34 | ||||
|
35 | void DataSourceController::finalize() | |||
|
36 | { | |||
|
37 | qCInfo(LOG_DataSourceController()) << tr("finalize du DataSourceController"); | |||
|
38 | impl->m_WorkingMutex.unlock(); | |||
|
39 | qCInfo(LOG_DataSourceController()) << tr("finalize du DataSourceController END"); | |||
|
40 | } | |||
|
41 | ||||
|
42 | void DataSourceController::waitForFinish() | |||
|
43 | { | |||
|
44 | qCInfo(LOG_DataSourceController()) << tr("waitForFinish du DataSourceController"); | |||
|
45 | QMutexLocker locker(&impl->m_WorkingMutex); | |||
|
46 | qCInfo(LOG_DataSourceController()) << tr("waitForFinish du DataSourceController END"); | |||
|
47 | } |
@@ -0,0 +1,159 | |||||
|
1 | ||||
|
2 | ## gui - CMakeLists.txt | |||
|
3 | STRING(TOLOWER ${CMAKE_PROJECT_NAME} LIBRARY_PREFFIX) | |||
|
4 | SET(SQPGUI_LIBRARY_NAME "${LIBRARY_PREFFIX}_gui${DEBUG_SUFFIX}") | |||
|
5 | SET(SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
6 | SET(INCLUDES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") | |||
|
7 | SET(UI_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/ui") | |||
|
8 | SET(RES_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/resources") | |||
|
9 | ||||
|
10 | # Include gui directory | |||
|
11 | include_directories("${INCLUDES_DIR}") | |||
|
12 | include_directories("${CMAKE_CURRENT_BINARY_DIR}") | |||
|
13 | ||||
|
14 | # Set a variable to display a warning in the version files. | |||
|
15 | SET(SCIQLOP_CMAKE_GENERATION_WARNING "DON'T CHANGE THIS FILE. AUTOGENERATED BY CMAKE.") | |||
|
16 | ||||
|
17 | # | |||
|
18 | # Find Qt modules | |||
|
19 | # | |||
|
20 | SCIQLOP_FIND_QT(Core Widgets) | |||
|
21 | ||||
|
22 | # | |||
|
23 | # Find dependent libraries | |||
|
24 | # ======================== | |||
|
25 | find_package(sciqlop-core) | |||
|
26 | ||||
|
27 | message("Librairies inclues dans APP: ${SCIQLOP-CORE_LIBRARIES}") | |||
|
28 | SET(LIBRARIES ${SCIQLOP-CORE_LIBRARIES}) | |||
|
29 | ||||
|
30 | INCLUDE_DIRECTORIES(${SCIQLOP-CORE_INCLUDE_DIR}) | |||
|
31 | ||||
|
32 | # Add sqpcore to the list of libraries to use | |||
|
33 | list(APPEND LIBRARIES ${SQPCORE_LIBRARY_NAME}) | |||
|
34 | ||||
|
35 | # Add dependent shared libraries | |||
|
36 | list(APPEND SHARED_LIBRARIES ${SQPCORE_SHARED_LIBRARIES}) | |||
|
37 | ||||
|
38 | ||||
|
39 | # Ui files | |||
|
40 | FILE (GLOB_RECURSE PROJECT_FORMS ${UI_FOLDER}/*.ui) | |||
|
41 | ||||
|
42 | # Resources files | |||
|
43 | FILE (GLOB_RECURSE PROJECT_RESOURCES ${RES_FOLDER}/*.qrc) | |||
|
44 | ||||
|
45 | # | |||
|
46 | # Compile the library library | |||
|
47 | # | |||
|
48 | FILE (GLOB_RECURSE MODULE_SOURCES | |||
|
49 | ${INCLUDES_DIR}/*.h | |||
|
50 | ${SOURCES_DIR}/*.c | |||
|
51 | ${SOURCES_DIR}/*.cpp | |||
|
52 | ${SOURCES_DIR}/*.h | |||
|
53 | ${PROJECT_FORMS}) | |||
|
54 | ||||
|
55 | QT5_ADD_RESOURCES(RCC_HDRS | |||
|
56 | ${PROJECT_RESOURCES} | |||
|
57 | ) | |||
|
58 | ||||
|
59 | QT5_WRAP_UI(UIS_HDRS | |||
|
60 | ${PROJECT_FORMS} | |||
|
61 | ) | |||
|
62 | ||||
|
63 | ||||
|
64 | ADD_LIBRARY(${SQPGUI_LIBRARY_NAME} ${MODULE_SOURCES} ${UIS_HDRS} ${RCC_HDRS}) | |||
|
65 | set_property(TARGET ${SQPGUI_LIBRARY_NAME} PROPERTY CXX_STANDARD 14) | |||
|
66 | set_property(TARGET ${SQPGUI_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) | |||
|
67 | ||||
|
68 | TARGET_LINK_LIBRARIES(${SQPGUI_LIBRARY_NAME} ${LIBRARIES}) | |||
|
69 | qt5_use_modules(${SQPGUI_LIBRARY_NAME} Core Widgets) | |||
|
70 | ||||
|
71 | # From cmake documentation: http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html | |||
|
72 | # Entries in the COMPILE_DEFINITIONS are prefixed with -D or /D and added to the compile line in an unspecified order. | |||
|
73 | # The DEFINE_SYMBOL target property is also added as a compile definition as a special convenience case for SHARED and MODULE library targets | |||
|
74 | IF(BUILD_SHARED_LIBS) | |||
|
75 | SET_TARGET_PROPERTIES(${SQPGUI_LIBRARY_NAME} PROPERTIES COMPILE_DEFINITIONS "SCIQLOP_EXPORT") | |||
|
76 | ELSE() | |||
|
77 | TARGET_COMPILE_DEFINITIONS(${SQPGUI_LIBRARY_NAME} PUBLIC "SCIQLOP_STATIC_LIBRARIES") | |||
|
78 | ENDIF() | |||
|
79 | ||||
|
80 | # Set the variable to parent scope so that the other projects can copy the | |||
|
81 | # dependent shared libraries | |||
|
82 | SCIQLOP_SET_TO_PARENT_SCOPE(SQPGUI_LIBRARY_NAME) | |||
|
83 | ||||
|
84 | # Copy extern shared libraries to the lib folder | |||
|
85 | SCIQLOP_COPY_TO_TARGET(LIBRARY ${SQPGUI_LIBRARY_NAME}) | |||
|
86 | ||||
|
87 | # Add the files to the list of files to be analyzed | |||
|
88 | LIST(APPEND CHECKSTYLE_INPUT_FILES ${MODULE_SOURCES}) | |||
|
89 | SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_INPUT_FILES) | |||
|
90 | # Vera++ exclusion files | |||
|
91 | #LIST(APPEND CHECKSTYLE_EXCLUSION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/path/to/exclusionFiles.tcl) | |||
|
92 | SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_EXCLUSION_FILES) | |||
|
93 | ||||
|
94 | # | |||
|
95 | # Compile the tests | |||
|
96 | # | |||
|
97 | IF(BUILD_TESTS) | |||
|
98 | INCLUDE_DIRECTORIES(${SOURCES_DIR}) | |||
|
99 | FILE (GLOB_RECURSE TESTS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Test*.cpp) | |||
|
100 | FILE (GLOB_RECURSE TESTS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Test*.h) | |||
|
101 | SET( TEST_LIBRARIES ${SQPGUI_LIBRARY_NAME}) | |||
|
102 | ||||
|
103 | FOREACH( testFile ${TESTS_SOURCES} ) | |||
|
104 | GET_FILENAME_COMPONENT( testDirectory ${testFile} DIRECTORY ) | |||
|
105 | GET_FILENAME_COMPONENT( testName ${testFile} NAME_WE ) | |||
|
106 | ||||
|
107 | # Add to the list of sources files all the sources in the same | |||
|
108 | # directory that aren't another test | |||
|
109 | FILE (GLOB currentTestSources | |||
|
110 | ${testDirectory}/*.c | |||
|
111 | ${testDirectory}/*.cpp | |||
|
112 | ${testDirectory}/*.h) | |||
|
113 | LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES}) | |||
|
114 | LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) | |||
|
115 | ||||
|
116 | ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources}) | |||
|
117 | TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES} ) | |||
|
118 | qt5_use_modules(${testName} Test) | |||
|
119 | ||||
|
120 | ADD_TEST( NAME ${testName} COMMAND ${testName} ) | |||
|
121 | ||||
|
122 | SCIQLOP_COPY_TO_TARGET(RUNTIME ${testName} ${EXTERN_SHARED_LIBRARIES}) | |||
|
123 | ENDFOREACH( testFile ) | |||
|
124 | ||||
|
125 | LIST(APPEND testFilesToFormat ${TESTS_SOURCES}) | |||
|
126 | LIST(APPEND testFilesToFormat ${TESTS_HEADERS}) | |||
|
127 | LIST(APPEND FORMATTING_INPUT_FILES ${testFilesToFormat}) | |||
|
128 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) | |||
|
129 | ENDIF(BUILD_TESTS) | |||
|
130 | ||||
|
131 | # | |||
|
132 | # Set the files that must be formatted by clang-format. | |||
|
133 | # | |||
|
134 | LIST (APPEND FORMATTING_INPUT_FILES ${MODULE_SOURCES}) | |||
|
135 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) | |||
|
136 | ||||
|
137 | # | |||
|
138 | # Set the directories that doxygen must browse to generate the | |||
|
139 | # documentation. | |||
|
140 | # | |||
|
141 | # Source directories: | |||
|
142 | LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/docs") | |||
|
143 | LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
144 | SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_INPUT_DIRS) | |||
|
145 | # Source directories to exclude from the documentation generation | |||
|
146 | #LIST (APPEND DOXYGEN_EXCLUDE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir/*") | |||
|
147 | SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_EXCLUDE_PATTERNS) | |||
|
148 | ||||
|
149 | # | |||
|
150 | # Set the directories with the sources to analyze and propagate the | |||
|
151 | # modification to the parent scope | |||
|
152 | # | |||
|
153 | # Source directories to analyze: | |||
|
154 | LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") | |||
|
155 | LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests") | |||
|
156 | SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_INPUT_DIRS) | |||
|
157 | # Source directories to exclude from the analysis | |||
|
158 | #LIST (APPEND ANALYSIS_EXCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir") | |||
|
159 | SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_EXCLUDE_DIRS) |
@@ -0,0 +1,21 | |||||
|
1 | # - Try to find sciqlop-gui | |||
|
2 | # Once done this will define | |||
|
3 | # SCIQLOP-GUI_FOUND - System has sciqlop-gui | |||
|
4 | # SCIQLOP-GUI_INCLUDE_DIR - The sciqlop-gui include directories | |||
|
5 | # SCIQLOP-GUI_LIBRARIES - The libraries needed to use sciqlop-gui | |||
|
6 | ||||
|
7 | if(SCIQLOP-GUI_FOUND) | |||
|
8 | return() | |||
|
9 | endif(SCIQLOP-GUI_FOUND) | |||
|
10 | ||||
|
11 | set(SCIQLOP-GUI_INCLUDE_DIR ${sciqlop-gui_DIR}/../include) | |||
|
12 | ||||
|
13 | set (OS_LIB_EXTENSION "so") | |||
|
14 | ||||
|
15 | if(WIN32) | |||
|
16 | set (OS_LIB_EXTENSION "dll") | |||
|
17 | endif(WIN32) | |||
|
18 | # TODO: Add Mac Support | |||
|
19 | set(SCIQLOP-GUI_LIBRARIES ${LIBRARY_OUTPUT_PATH}/libsciqlop_gui${DEBUG_SUFFIX}.${OS_LIB_EXTENSION}) | |||
|
20 | ||||
|
21 | set(SCIQLOP-GUI_FOUND TRUE) |
@@ -0,0 +1,33 | |||||
|
1 | #ifndef SCIQLOP_SQPAPPLICATION_H | |||
|
2 | #define SCIQLOP_SQPAPPLICATION_H | |||
|
3 | ||||
|
4 | #include "SqpApplication.h" | |||
|
5 | ||||
|
6 | #include <QApplication> | |||
|
7 | #include <QLoggingCategory> | |||
|
8 | ||||
|
9 | #include <Common/spimpl.h> | |||
|
10 | ||||
|
11 | Q_DECLARE_LOGGING_CATEGORY(LOG_SqpApplication) | |||
|
12 | ||||
|
13 | /** | |||
|
14 | * @brief The SqpApplication class aims to make the link between SciQlop | |||
|
15 | * and its plugins. This is the intermediate class that SciQlop have to use | |||
|
16 | * in the way to connect a data source. Please first use load method to intialize | |||
|
17 | * a plugin specified by its metadata name (JSON plugin source) then others specifics | |||
|
18 | * method will ba able to access it. | |||
|
19 | * You can load a data source driver plugin then create a data source. | |||
|
20 | */ | |||
|
21 | class SqpApplication : public QApplication { | |||
|
22 | Q_OBJECT | |||
|
23 | public: | |||
|
24 | explicit SqpApplication(int &argc, char **argv); | |||
|
25 | virtual ~SqpApplication(); | |||
|
26 | void initialize(); | |||
|
27 | ||||
|
28 | private: | |||
|
29 | class SqpApplicationPrivate; | |||
|
30 | spimpl::unique_impl_ptr<SqpApplicationPrivate> impl; | |||
|
31 | }; | |||
|
32 | ||||
|
33 | #endif // SCIQLOP_SQPAPPLICATION_H |
@@ -0,0 +1,40 | |||||
|
1 | #include "SqpApplication.h" | |||
|
2 | ||||
|
3 | #include <DataSource/DataSourceController.h> | |||
|
4 | #include <QThread> | |||
|
5 | ||||
|
6 | Q_LOGGING_CATEGORY(LOG_SqpApplication, "SqpApplication") | |||
|
7 | ||||
|
8 | class SqpApplication::SqpApplicationPrivate { | |||
|
9 | public: | |||
|
10 | SqpApplicationPrivate() {} | |||
|
11 | ||||
|
12 | std::unique_ptr<DataSourceController> m_DataSourceController; | |||
|
13 | QThread m_DataSourceControllerThread; | |||
|
14 | }; | |||
|
15 | ||||
|
16 | ||||
|
17 | SqpApplication::SqpApplication(int &argc, char **argv) | |||
|
18 | : QApplication(argc, argv), impl{spimpl::make_unique_impl<SqpApplicationPrivate>()} | |||
|
19 | { | |||
|
20 | qCInfo(LOG_SqpApplication()) << tr("Construction du SqpApplication"); | |||
|
21 | ||||
|
22 | impl->m_DataSourceController = std::make_unique<DataSourceController>(); | |||
|
23 | impl->m_DataSourceController->moveToThread(&impl->m_DataSourceControllerThread); | |||
|
24 | ||||
|
25 | connect(&impl->m_DataSourceControllerThread, &QThread::started, | |||
|
26 | impl->m_DataSourceController.get(), &DataSourceController::initialize); | |||
|
27 | connect(&impl->m_DataSourceControllerThread, &QThread::finished, | |||
|
28 | impl->m_DataSourceController.get(), &DataSourceController::finalize); | |||
|
29 | ||||
|
30 | impl->m_DataSourceControllerThread.start(); | |||
|
31 | } | |||
|
32 | ||||
|
33 | SqpApplication::~SqpApplication() | |||
|
34 | { | |||
|
35 | impl->m_DataSourceControllerThread.quit(); | |||
|
36 | } | |||
|
37 | ||||
|
38 | void SqpApplication::initialize() | |||
|
39 | { | |||
|
40 | } |
@@ -4,18 +4,18 | |||||
4 | # Debug or release |
|
4 | # Debug or release | |
5 | # |
|
5 | # | |
6 | # As the "NMake Makefiles" forces by default the CMAKE_BUILD_TYPE variable to Debug, SCIQLOP_BUILD_TYPE variable is used to be sure that the debug mode is a user choice |
|
6 | # As the "NMake Makefiles" forces by default the CMAKE_BUILD_TYPE variable to Debug, SCIQLOP_BUILD_TYPE variable is used to be sure that the debug mode is a user choice | |
7 | SET(SCIQLOP_BUILD_TYPE "Release" CACHE STRING "Choose to compile in Debug or Release mode") |
|
7 | #SET(SCIQLOP_BUILD_TYPE "Release" CACHE STRING "Choose to compile in Debug or Release mode") | |
8 |
|
8 | |||
9 | IF(SCIQLOP_BUILD_TYPE MATCHES "Debug") |
|
9 | #IF(SCIQLOP_BUILD_TYPE MATCHES "Debug") | |
10 | MESSAGE (STATUS "Build in Debug") |
|
10 | # MESSAGE (STATUS "Build in Debug") | |
11 | SET (CMAKE_BUILD_TYPE "Debug") |
|
11 | # SET (CMAKE_BUILD_TYPE "Debug") | |
12 | SET (DEBUG_SUFFIX "d") |
|
12 | # SET (DEBUG_SUFFIX "d") | |
13 | ELSE() |
|
13 | #ELSE() | |
14 | MESSAGE (STATUS "Build in Release") |
|
14 | # MESSAGE (STATUS "Build in Release") | |
15 | SET (CMAKE_BUILD_TYPE "Release") |
|
15 | # SET (CMAKE_BUILD_TYPE "Release") | |
16 | SET (SCIQLOP_BUILD_TYPE "Release") |
|
16 | # SET (SCIQLOP_BUILD_TYPE "Release") | |
17 | SET (DEBUG_SUFFIX "") |
|
17 | # SET (DEBUG_SUFFIX "") | |
18 | ENDIF() |
|
18 | #ENDIF() | |
19 |
|
19 | |||
20 | # |
|
20 | # | |
21 | # Need to compile tests? |
|
21 | # Need to compile tests? |
General Comments 4
Status change > Approved
You need to be logged in to leave comments.
Login now