Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

+72
View File
@@ -0,0 +1,72 @@
#
# $Id$
# $HeadURL$
# $Author$
#
# Situation Map Test Application
FIND_PACKAGE(ArcGIS REQUIRED)
SET(EXE_SRCS
main.cpp
log4cxx_planEditorTest.props
plan_editor_map_defaults.ini
)
SET(EXE_HDRS
)
SET(EXE_UICS
)
NGL_WRAP_UI(EXE_SRCS ${EXE_UICS})
SET(LOG4CXX_PROPS_FILE log4cxx_planEditorTest.props)
NGL_ADD_EXECUTABLE(WS planEditorTest ${EXE_SRCS} ${EXE_HDRS} ${EXE_UICS})
NGL_TARGET_LINK_LIBRARIES(
planEditorTest
NGLLogger
LtsSession
LtsSessionData
LtsWidgets
nglapplication
LtsPluginManager
situationMap
situationMapObjects
situationMapFunctionDialog
planEditor
ArcGIS::ArcGIS
LtsPluginLoader
Qt5::Gui
)
IF(TARGET planEditorTest)
OPTION(BUILD_PlanEditorCopyConfig "Copy LOG4 Props and PlanEditor ini file to bin directory." ON)
if(BUILD_PlanEditorCopyConfig)
ADD_CUSTOM_COMMAND( TARGET planEditorTest POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR} $<TARGET_FILE_DIR:planEditorTest>/${LOG4CXX_PROPS_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
SET(INI_FILE plan_editor_map_defaults.ini)
ADD_CUSTOM_COMMAND( TARGET planEditorTest POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${INI_FILE} $<TARGET_FILE_DIR:planEditorTest>/${INI_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
ENDIF()
ENDIF()
IF(MSVC)
# Configure the template file
SET(VS_USER_FILE planEditorTest.vcxproj.user)
configure_file( ../PlanEditor.vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${VS_USER_FILE} @ONLY)
ENDIF(MSVC)
NGL_INSTALL_TARGET_DEVEL(planEditorTest)
NGL_INSTALL(FILES WS ${LOG4CXX_PROPS_FILE} DESTINATION "bin" COMPONENT Devel)
+11
View File
@@ -0,0 +1,11 @@
<!DOCTYPE GeometryModelDocument>
<GeometryModel meta_data_max_scale="" meta_data_title="Reference Plan" meta_data_author="Jörg" meta_data_date="Do Okt 5 06:43:28 2017 GMT" meta_data_min_scale="" meta_data_deswcription="Plan with all geometry types for testing">
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500002707060000" GuiDisplayName="Dummy Minefield-Dynamic">
<point x="0.15598112407279643432" y="0.92633725592801330340"/>
<point x="0.15602141791649501434" y="0.92627663814227056971"/>
<point x="0.15613492766036438097" y="0.92628584972501826211"/>
<point x="0.15614774362366570792" y="0.92630437270439192066"/>
<point x="0.15603483358080763588" y="0.92634786488529730075"/>
</dictionarySymbol>
<node GuiDisplayName="Overlapping Order"/>
</GeometryModel>
+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE GeometryModelDocument>
<GeometryModel meta_data_author="Jörg" meta_data_max_scale="" meta_data_deswcription="Plan with all geometry types for testing" meta_data_date="Do Okt 5 06:43:28 2017 GMT" meta_data_min_scale="" meta_data_title="Reference Plan">
<node/>
<node GuiDisplayName="Overlapping Order">
<ellipse FillPattern="8" FillStyle="1" FillColor="#fcfcfcff" height="5985.958880" fill="true" rotate="359.999583" center_point="0.15353921540953952007 0.92503455117485744452" color="#2681ccff" start="0" width="9153.378295" extent="360" linewidth="1" linestyle="0">
<point y="0.92456294740753908190" x="0.15235190026195147284"/>
<point y="0.92456699365858252548" x="0.15473094375042614756"/>
<point y="0.92550615889142617831" x="0.15472801039227399023"/>
<point y="0.92550210474188199239" x="0.15234600723350649742"/>
</ellipse>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500002701000000">
<point y="0.92512691677728242645" x="0.15291877200350839638"/>
<point y="0.92486254431154923950" x="0.15303799152790875659"/>
<point y="0.92429719501120100045" x="0.15367273413525395220"/>
<point y="0.92469378266843138547" x="0.15479871005765735714"/>
<point y="0.92540239400444823659" x="0.15532375951384283508"/>
</dictionarySymbol>
<rectangle FillPattern="8" FillColor="#fcec02ff" height="3309.937503" rounding="0.0" fill="true" rotate="0.000000" center_point="0.07873629682483154757 0.00000014586842312085" color="#2681ccff" width="5334.000005" linewidth="1" linestyle="0">
<point y="0.92505166428094076636" x="0.15353913425962825712"/>
<point y="0.92505356243152248030" x="0.15492780839546382854"/>
<point y="0.92557159289332535668" x="0.15492632504936523774"/>
<point y="0.92556969269740108075" x="0.15353669770602249023"/>
</rectangle>
</node>
</GeometryModel>
+255
View File
@@ -0,0 +1,255 @@
<!DOCTYPE GeometryModelDocument>
<GeometryModel meta_data_min_scale="" meta_data_date="Di Mrz 13 11:00:16 2018 GMT" meta_data_description="Shows many different plan elements " meta_data_author="Jörg" meta_data_title="Reference Plan" meta_data_max_scale="">
<polyline linewidth="3" FillPattern="0" color="#31f904ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="1" arrow_width="1.0" close="false" GuiDisplayName="green dashed dotted with arrow" FillColor="#fcfcfcff" linestyle="3" fill="false">
<point y="0.92654509593555889335" x="0.15471454851507598915"/>
<point y="0.92658175222939209714" x="0.15474012123019320608"/>
<point y="0.92659769830697302773" x="0.15480699672140513234"/>
<point y="0.92662496522046056135" x="0.15480691441375049600"/>
<point y="0.92663029688618003821" x="0.15484475654475951534"/>
</polyline>
<polyline linewidth="10" FillPattern="0" color="#ffff00ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" close="false" GuiDisplayName="yellow, green dashed filled" FillColor="#fcfcfcff" linestyle="1" fill="false">
<point y="0.92652963418765599268" x="0.15471730087517218677"/>
<point y="0.92657121781272033800" x="0.15478206513925923948"/>
<point y="0.92657985012943189229" x="0.15486113014973160174"/>
<point y="0.92660712713660375872" x="0.15487051404088209017"/>
<point y="0.92661085645877583339" x="0.15493404919111003482"/>
<point y="0.92665395642433867618" x="0.15489674300385386507"/>
</polyline>
<node>
<text color="#000000ff" FontBold="true" margin_horizontal="1" font="1" FillPattern="0" FontItalic="false" margin_vertical="1" anchor_vertical="1" box="0" FillColor="#fcfcfcff" fill="false" linestyle="0" anchor_horizontal="0" FontSize="18.000000" linecolor="#000000" rotate="326.000000" linewidth="5">
<text_data alignment="0"><![CDATA[red line]]></text_data>
<point y="0.92645315073407952244" x="0.15474119664629570892"/>
</text>
<line linewidth="5" color="#f91400ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" GuiDisplayName="red solid" linestyle="0">
<point y="0.92640788109050709043" x="0.15465753297698173196"/>
<point y="0.92648907278629177853" x="0.15483976836377036368"/>
</line>
</node>
<node>
<polyline linewidth="3" FillPattern="0" color="#0b2bf9ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="2" arrow_width="1.0" close="false" GuiDisplayName="blue with arrow" FillColor="#fcfcfcff" linestyle="0" fill="false">
<point y="0.92651825667331910719" x="0.15473288316901759321"/>
<point y="0.92654963946688817522" x="0.15477401937264254062"/>
<point y="0.92656271372011400622" x="0.15482062189583678524"/>
<point y="0.92655799333890520586" x="0.15497611026212976260"/>
<point y="0.92658234828779750814" x="0.15491452652612319740"/>
</polyline>
<text color="#000000ff" FontBold="true" margin_horizontal="1" font="1" FillPattern="8" FontItalic="false" margin_vertical="1" anchor_vertical="1" box="0" FillColor="#f7f7f7ff" fill="true" linestyle="0" anchor_horizontal="0" FontSize="18.000000" linecolor="#000000" rotate="2.000000" linewidth="3">
<text_data alignment="0"><![CDATA[blue Polyline with arrow at end]]></text_data>
<point y="0.92655702516984439487" x="0.15482165298664829489"/>
</text>
</node>
<polyline linewidth="3" FillPattern="8" color="#000000ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" close="true" GuiDisplayName="blue transpared filled, black border" FillColor="#047af796" linestyle="0" fill="true">
<point y="0.92657534422041054611" x="0.15448461672990509985"/>
<point y="0.92665264110235856521" x="0.15446271637433148238"/>
<point y="0.92668691382037282622" x="0.15453291066885546656"/>
<point y="0.92668542207547133227" x="0.15464649872816765841"/>
<point y="0.92665692476573058300" x="0.15463847806811648056"/>
<point y="0.92665681963478696570" x="0.15455059013181079997"/>
<point y="0.92664781488110725682" x="0.15450870493395219007"/>
<point y="0.92657864358242314484" x="0.15451975702167156101"/>
</polyline>
<polyline linewidth="3" FillPattern="6" color="#000000ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" close="true" GuiDisplayName="dashed filled, black border" FillColor="#047af7ff" linestyle="0" fill="true">
<point y="0.92644255025383004387" x="0.15438910055814114575"/>
<point y="0.92654186639168700790" x="0.15440091299766436905"/>
<point y="0.92654771395626700503" x="0.15451986217127675061"/>
<point y="0.92651839884236386613" x="0.15450914679097696447"/>
<point y="0.92643709405768481790" x="0.15458241786092219439"/>
<point y="0.92639215196234159233" x="0.15444064337195154146"/>
</polyline>
<rectangle height="736.678140" linewidth="3" FillPattern="3" center_point="0.07873629680744176351 0.00000014581363645147" color="#fcfc00ff" width="1431.853286" rounding="0.0" rotate="0.000000" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92622626417599063231" x="0.15456690038524389941"/>
<point y="0.92622668190990231629" x="0.15493987302871764511"/>
<point y="0.92634226146538756197" x="0.15493954474507520835"/>
<point y="0.92634184363156002462" x="0.15456651488028530506"/>
</rectangle>
<ellipse height="498.035926" linewidth="3" FillPattern="4" FillStyle="1" center_point="0.07873629685871391670 0.00000014584341611564" color="#fcfc00ff" width="1058.326342" rotate="0.000000" extent="360" start="0" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92643424082735903458" x="0.15494333858331535425"/>
<point y="0.92643450611599531541" x="0.15521909030031996735"/>
<point y="0.92651264430758806245" x="0.15521889725168147578"/>
<point y="0.92651237897605087657" x="0.15494311692302517591"/>
</ellipse>
<ellipse height="456.532932" linewidth="3" FillPattern="8" FillStyle="1" center_point="0.07873629688053361553 0.00000014582370465675" color="#fcfc00ff" width="1068.702090" rotate="0.000000" extent="-272.804755" start="336.801409" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92631228703693146986" x="0.15508153829155227332"/>
<point y="0.92631253619995679305" x="0.15535994845070147385"/>
<point y="0.92638416298054426790" x="0.15535978493012503332"/>
<point y="0.92638391378058637660" x="0.15508134829776437646"/>
</ellipse>
<ellipse height="457.561505" linewidth="3" FillPattern="8" FillStyle="1" center_point="0.07873629686112881831 0.00000014580907987472" color="#fcfc00ff" width="1068.806873" rotate="37.933270" extent="-272.804755" start="336.801409" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92617548823218776022" x="0.15502379671297930597"/>
<point y="0.92627906394480086227" x="0.15524244881268439711"/>
<point y="0.92633516002293747604" x="0.15516932834162322496"/>
<point y="0.92623157666524869036" x="0.15495067003921092486"/>
</ellipse>
<ellipse height="455.869392" linewidth="3" FillPattern="8" FillStyle="2" center_point="0.15532975759768247181 0.92621930742416513915" color="#fcfc00ff" width="1071.259454" rotate="38.066867" extent="-272.804755" start="336.801409" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92613928131637990315" x="0.15525671683190955807"/>
<point y="0.92624309325873011023" x="0.15547616046261539258"/>
<point y="0.92629933738075342919" x="0.15540280148899654478"/>
<point y="0.92619551774079711404" x="0.15518335160720839183"/>
</ellipse>
<ellipse height="455.617041" linewidth="3" FillPattern="8" FillStyle="0" center_point="0.15504824224637922536 0.92631306171726701670" color="#fc4d07ff" width="1071.455189" rotate="37.981084" extent="-272.804755" start="336.801409" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92623316458910065485" x="0.15497512406555585818"/>
<point y="0.92633682712197251696" x="0.15519485421169953998"/>
<point y="0.92639296270636251052" x="0.15512136354481192990"/>
<point y="0.92628929245163260653" x="0.15490162716344954563"/>
</ellipse>
<spline linewidth="3" FillPattern="8" color="#e913fcff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" close="false" FillColor="#02f713ff" linestyle="0" fill="true">
<point y="0.92614827874968330690" x="0.15469687702565784737"/>
<point y="0.92616642646783731152" x="0.15491707292340586855"/>
<point y="0.92611038887390861873" x="0.15504018804787564334"/>
<point y="0.92604056333074480367" x="0.15522546687769589457"/>
<point y="0.92613506639467735315" x="0.15532387129082586563"/>
<point y="0.92619686539777268397" x="0.15525345963402809035"/>
<point y="0.92621488323185452440" x="0.15538449532775272521"/>
<point y="0.92627117322471630434" x="0.15554924368983208405"/>
<point y="0.92629553013723897603" x="0.15546810552477127731"/>
<point y="0.92629951202423632672" x="0.15535862669460842600"/>
<point y="0.92631740973937681805" x="0.15534777366852298153"/>
<point y="0.92633941955389365042" x="0.15538826977814651498"/>
<point y="0.92636468969801333273" x="0.15543551911871325566"/>
<point y="0.92642003013711482495" x="0.15542593641023175199"/>
</spline>
<participantSymbol sidc_color="#00ffffff" sidc_attributes="" sidc="M25D|CMPL|10030100001205000000" GuiDisplayName="friend, color cyan">
<point y="0.92635344416535991829" x="0.15563692938459783299"/>
</participantSymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10052500001514030000">
<point y="0.92616522281093915936" x="0.15537244583526477193"/>
<point y="0.92611585572128152233" x="0.15576169055996022528"/>
<point y="0.92605001530212704974" x="0.15591041983227535428"/>
<point y="0.92597924693341415736" x="0.15599293515270745702"/>
<point y="0.92593531813203644454" x="0.15604027759350608262"/>
<point y="0.92623042317579851179" x="0.15547905566621908480"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500002707060000" GuiDisplayName="Dummy Minefield-Dynamic">
<point y="0.92633725592801330340" x="0.15598112407279643432"/>
<point y="0.92627663814227056971" x="0.15602141791649501434"/>
<point y="0.92628584972501826211" x="0.15613492766036438097"/>
<point y="0.92630437270439192066" x="0.15614774362366570792"/>
<point y="0.92634786488529730075" x="0.15603483358080763588"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10042500002713000000" GuiDisplayName="Assault Crossing">
<point y="0.92591516517758809535" x="0.15546644158444336559"/>
<point y="0.92595160020674982526" x="0.15549724863212988080"/>
<point y="0.92592455358142555788" x="0.15539842541805620746"/>
<point y="0.92597920745607564808" x="0.15544463274775252581"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10051500001202030000" GuiDisplayName="Tank Heavy">
<point y="0.92595728843787650231" x="0.15600810106320281423"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500002701000000" GuiDisplayName="Obstacle Belt">
<point y="0.92629192220967471183" x="0.15578454557624260568"/>
<point y="0.92635995192655040675" x="0.15570820668642165741"/>
<point y="0.92634666803669385438" x="0.15591376953312927056"/>
<point y="0.92621357918792335262" x="0.15586859369210009918"/>
<point y="0.92622639291632835601" x="0.15573841939063851059"/>
<point y="0.92623922187204543732" x="0.15564163589745386163"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500001521000000" GuiDisplayName="Support by Fire">
<point y="0.92647317092169934050" x="0.15552856824722988138"/>
<point y="0.92650052993573206450" x="0.15552501620288863848"/>
<point y="0.92657837481710203509" x="0.15548465083515192187"/>
<point y="0.92657855958291646115" x="0.15574685470409405097"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500001406030000" GuiDisplayName="Direction of Supporting Attack">
<point y="0.92616602710641937612" x="0.15610217897839090417"/>
<point y="0.92625014904901237234" x="0.15633949736776014960"/>
<point y="0.92625663825320136979" x="0.15641595135761476865"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="radius=409.384679625422" sidc="M25D|CMPL|10012500002401030000" GuiDisplayName="Airspace Coordination Area">
<point y="0.92607845972501445786" x="0.15632290231088727395"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500003419000000" GuiDisplayName="Relief in Place">
<point y="0.92589467072507825041" x="0.15620040669279791623"/>
<point y="0.92589631855831333596" x="0.15627951013284993587"/>
<point y="0.92573311426741888841" x="0.15627029991672344855"/>
<point y="0.92573308706115697841" x="0.15620327601247002702"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500001512040000" GuiDisplayName="Battle Position Contain">
<point y="0.92766682185119198056" x="0.15325703610668089949"/>
<point y="0.92746557715756994256" x="0.15453467338376902784"/>
<point y="0.92743841514742220156" x="0.15202668409301314800"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10052500001414000000" GuiDisplayName="Bridgegead Line">
<point y="0.92705553627749182066" x="0.15539918094935298298"/>
<point y="0.92778322529842915944" x="0.15713297714136501004"/>
<point y="0.92764253201449153874" x="0.15536031198356980987"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10022500003403000000" GuiDisplayName="Mission Task Byepass">
<point y="0.92695043183306624623" x="0.15190614005040101175"/>
<point y="0.92695481753807762448" x="0.15415742976263713260"/>
<point y="0.92725222438150634030" x="0.15374336920537598483"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10032500003415000000" GuiDisplayName="Mission Task Isolate">
<point y="0.92626240081108590640" x="0.15322292903481454784"/>
<point y="0.92614174703207152728" x="0.15398067239221210900"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10032500003417000000" GuiDisplayName="Mission Task Occupy">
<point y="0.92808388539082320445" x="0.15428080235001268017"/>
<point y="0.92807081061523888366" x="0.15465662820237405239"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10032500003424000000" GuiDisplayName="Mission Task WithDraw">
<point y="0.92440863479277635140" x="0.15466837634681548930"/>
<point y="0.92523620433979592015" x="0.15615570565646699763"/>
<point y="0.92494630637369157355" x="0.15494358431124125031"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10052500003418000000" GuiDisplayName="Misson Task Penetrate">
<point y="0.92445835071863224908" x="0.15470561580418715208"/>
<point y="0.92445970479610972692" x="0.15694949221547779827"/>
<point y="0.92505126659241121434" x="0.15709161399269117032"/>
</dictionarySymbol>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500002903090000" GuiDisplayName="ProtectionLine: Obstacles">
<point y="0.92545597608443774806" x="0.15647498497739506518"/>
<point y="0.92585717142617418585" x="0.15680337523256454579"/>
<point y="0.92629792034075608687" x="0.15686899447540228469"/>
<point y="0.92658514717685347417" x="0.15725552392973296545"/>
<point y="0.92671877360744137064" x="0.15647397108774518948"/>
<point y="0.92675793553233953848" x="0.15557712790640632061"/>
<point y="0.92692607885687283709" x="0.15528876069279873295"/>
<point y="0.92704070561218876456" x="0.15665478778369817947"/>
</dictionarySymbol>
<polyline linewidth="3" FillPattern="0" color="#31f904ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="1" arrow_width="1.0" close="false" GuiDisplayName="green dashed dotted with arrow" FillColor="#fcfcfcff" linestyle="3" fill="false">
<point y="0.92654509593555889335" x="0.15471454851507598915"/>
<point y="0.92658175222939209714" x="0.15474012123019320608"/>
<point y="0.92659769830697302773" x="0.15480699672140513234"/>
<point y="0.92662496522046056135" x="0.15480691441375049600"/>
<point y="0.92663029688618003821" x="0.15484475654475951534"/>
</polyline>
<polyline linewidth="10" FillPattern="0" color="#ffff00ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" close="false" GuiDisplayName="yellow, green dashed filled" FillColor="#fcfcfcff" linestyle="1" fill="false">
<point y="0.92652963418765599268" x="0.15471730087517218677"/>
<point y="0.92657121781272033800" x="0.15478206513925923948"/>
<point y="0.92657985012943189229" x="0.15486113014973160174"/>
<point y="0.92660712713660375872" x="0.15487051404088209017"/>
<point y="0.92661085645877583339" x="0.15493404919111003482"/>
<point y="0.92665395642433867618" x="0.15489674300385386507"/>
</polyline>
<node>
<text color="#000000ff" FontBold="true" margin_horizontal="1" font="1" FillPattern="0" FontItalic="false" margin_vertical="1" anchor_vertical="1" box="0" FillColor="#fcfcfcff" fill="false" linestyle="0" anchor_horizontal="0" FontSize="18.000000" linecolor="#000000" rotate="326.000000" linewidth="5">
<text_data alignment="0"><![CDATA[red line]]></text_data>
<point y="0.92645315073407952244" x="0.15474119664629570892"/>
</text>
<line linewidth="5" color="#f91400ff" arrow_height="1.0" arrow_clamp_height="1.0" arrow_line_width="1.0" arrows="0" arrow_width="1.0" GuiDisplayName="red solid" linestyle="0">
<point y="0.92640788109050709043" x="0.15465753297698173196"/>
<point y="0.92648907278629177853" x="0.15483976836377036368"/>
</line>
</node>
<node GuiDisplayName="Overlapping Order">
<ellipse height="5985.958880" linewidth="1" FillPattern="8" FillStyle="1" center_point="0.15353921540953952007 0.92503455117485744452" color="#2681ccff" width="9153.378295" rotate="359.999583" extent="360" start="0" FillColor="#fcfcfcff" linestyle="0" fill="true">
<point y="0.92456294740753908190" x="0.15235190026195147284"/>
<point y="0.92456699365858252548" x="0.15473094375042614756"/>
<point y="0.92550615889142617831" x="0.15472801039227399023"/>
<point y="0.92550210474188199239" x="0.15234600723350649742"/>
</ellipse>
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500002701000000">
<point y="0.92512691677728242645" x="0.15291877200350839638"/>
<point y="0.92486254431154923950" x="0.15303799152790875659"/>
<point y="0.92429719501120100045" x="0.15367273413525395220"/>
<point y="0.92469378266843138547" x="0.15479871005765735714"/>
<point y="0.92540239400444823659" x="0.15532375951384283508"/>
</dictionarySymbol>
<rectangle height="3309.937503" linewidth="1" FillPattern="8" center_point="0.07873629682483154757 0.00000014586842312085" color="#2681ccff" width="5334.000005" rounding="0.0" rotate="0.000000" FillColor="#fcec02ff" linestyle="0" fill="true">
<point y="0.92505166428094076636" x="0.15353913425962825712"/>
<point y="0.92505356243152248030" x="0.15492780839546382854"/>
<point y="0.92557159289332535668" x="0.15492632504936523774"/>
<point y="0.92556969269740108075" x="0.15353669770602249023"/>
</rectangle>
</node>
</GeometryModel>
+9
View File
@@ -0,0 +1,9 @@
<!DOCTYPE GeometryModelDocument>
<GeometryModel meta_data_deswcription="Test of taktical symbol &quot;Support by Fire&quot; MIL2525D 25152100" meta_data_max_scale="" meta_data_title="Support by Fire Symbol" meta_data_author="Jörg" meta_data_min_scale="" meta_data_date="Mo Feb 19 13:52:09 2018 GMT">
<dictionarySymbol sidc_attributes="" sidc="M25D|CMPL|10012500001521000000">
<point x="0.15337950958276619362" y="0.92570552281687312757"/>
<point x="0.15461919930633924447" y="0.92570736190530111820"/>
<point x="0.15306561120887096639" y="0.92645214692497279696"/>
<point x="0.15554762745536512836" y="0.92636953188022097549"/>
</dictionarySymbol>
</GeometryModel>
View File
Whitespace-only changes.
+139
View File
@@ -0,0 +1,139 @@
log4j.reset=true
log4j.rootLogger=WARN, file, stdout
# PlanEditor Test
###########################################################
log4j.logger.PlanEditor=DEBUG
log4j.logger.PlanEditor.SymbolAdjustDialog=TRACE
log4j.logger.SituationMap.SitMapTestApp=ERROR
log4j.logger.SituationMap.SitMap=ERROR
log4j.logger.SituationMap.MapImpl=ERROR
log4j.logger.SituationMap.MapSettings=WARN
log4j.logger.SituationMap.MapInitializer=WARN
log4j.logger.SituationMap.LayerFactoryImpl=ERROR
log4j.logger.SituationMap.CoordTranslationFunctorImpl=ERROR
log4j.logger.SituationMap.GridImpl=ERROR
log4j.logger.SituationMap.ObjectFactory=ERROR
log4j.logger.SituationMap.IdGenerator=ERROR
log4j.logger.SituationMap.ObjectContainer=ERROR
log4j.logger.SituationMap.ObjectContainerCTC=ERROR
log4j.logger.SituationMap.SymbolDictionary=ERROR
log4j.logger.SituationMap.SymbolDictionaryImpl=ERROR
log4j.logger.SituationMap.SymbolDictionaryExtendedImpl=ERROR
log4j.logger.SituationMap.Sidc2525Delta=ERROR
log4j.logger.SituationMap.AbstractMapObjectImpl=ERROR
log4j.logger.SituationMap.AbstractEffectSimulationImpl=ERROR
log4j.logger.SituationMap.OriginTranslated=ERROR
log4j.logger.SituationMap.PositionsTranslated=ERROR
log4j.logger.SituationMap.AbstractMultiPointMapObjectImpl=ERROR
log4j.logger.SituationMap.AbstractSinglePointMapObjectImpl=ERROR
log4j.logger.SituationMap.BasicPathObjectImpl=ERROR
log4j.logger.SituationMap.PolygonImpl=ERROR
log4j.logger.SituationMap.PolylineImpl=ERROR
log4j.logger.SituationMap.TextImpl=ERROR
log4j.logger.SituationMap.AreaFireImpl=ERROR
log4j.logger.SituationMap.BiologicalAgentImpl=ERROR
log4j.logger.SituationMap.BuildingOutlineImpl=ERROR
log4j.logger.SituationMap.ChemicalAgentImpl=ERROR
log4j.logger.SituationMap.DangerAreaImpl=ERROR
log4j.logger.SituationMap.FunctionalAreaImpl=ERROR
log4j.logger.SituationMap.HitLineImpl=ERROR
log4j.logger.SituationMap.MineImpl=ERROR
log4j.logger.SituationMap.ParticipantImpl=ERROR
log4j.logger.SituationMap.SingleFireImpl=ERROR
log4j.logger.SituationMap.IndicationContainer=ERROR
log4j.logger.SituationMap.AbstractGraphicalObject=ERROR
log4j.logger.SituationMap.GraphicalObjectEllipse=ERROR
log4j.logger.SituationMap.GraphicalObjectPath=ERROR
log4j.logger.SituationMap.GraphicalObjectMultiPath=ERROR
log4j.logger.SituationMap.GraphicalObjectPictureMarker=ERROR
log4j.logger.SituationMap.GraphicalObjectRange=ERROR
log4j.logger.SituationMap.GraphicalObjectText=ERROR
log4j.logger.SituationMap.TacticalAppearance=ERROR
log4j.logger.SituationMap.MessageBase=ERROR
log4j.logger.SituationMap.EventDispatcher=ERROR
log4j.logger.SituationMap.RubberbandFactory=DEBUG
# Appnd_File
###########################################################
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=9
log4j.appender.file.file=${LOG4QT_LOGDIR}/${LOG4QT_USER}_PlanEditorApp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %-5p %c |#| %m (%.50F:%L) %n
# Appnd_Console
###########################################################
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d %-5p %c{1} |#| %m (%-.30F:%L) %n
#log4j.appender.stdout.layout.ConversionPattern= %d %-5p %-30c |#| %m (%-.30F:%L) %n
# Appnd_Syslog
###########################################################
log4j.appender.syslog=org.apache.log4j.SyslogAppender
log4j.appender.syslog.Threshold=ERROR
log4j.appender.syslog.SysLogHost=localhost
log4j.appender.syslog.Facility=LOCAL7
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern= %-4r %-5p %c %x - %m
log4j.appender.syslog.LevelRangeFilter.AcceptOnMatch=true
log4j.appender.syslog.LevelRangeFilter.LevelMin=INFO
log4j.appender.syslog.LevelRangeFilter.LevelMax=FATAL
###########################################################
###########################################################
###########################################################
# 1) Available Levels in LOG4CXX Version 0.10.0:
# TRACE,
# DEBUG,
# INFO,
# WARN,
# ERROR
# FATAL
#
# d = date/time
# p = priority (Level)
# c = category/channel
# m = message
# F = file
# L = line
# n = platform dependent line separator character or characters.
# ....
#
# Examples for console:
# a)
# %d %p %c #%m# (%.50F:%L)%n
# date/time
# priority
# category/channel
# #message#
# (Maximal 50Character des Filename von rechts:Line)
# line separator
#
# b)
# %d (%.15F:%L) %-5p %c |#| %m%n
# date/time
# (Maximal 15Character des Filename von rechts:Line)
# priority, Right pad with spaces if the priority name is less than 5 characters long.
# category/channel
# message
# line separator
#
+399
View File
@@ -0,0 +1,399 @@
/**
* @RDE_HEADER@
* main
* $Id$
* $HeadURL$
* $Author$
*/
#include <nglapplication/nglapplication.h>
#include <NGLLogger/INGLLogger.h>
#include "../plan_editor.h"
#include <LtsWidgets/lts_base_layout_widget.h>
#include <LtsWidgets/lts_tab_widget.h>
#include <LtsPluginManager/lts_plugin_loader.h>
#include <PluginInterfaces/style_plugin_interface.h>
#include <PluginInterfaces/project_plugin_interface.h>
#include <Map/map.h>
#include <Map/grid.h>
#include <Rubberbands/rubberband_drawable.h>
#include <QtCore/QDir>
#include <QtCore/QPointer>
#include <QtCore/QStandardPaths>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QDesktopWidget>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QMessageBox>
#include <QtWidgets/QLabel>
#include <Map/object_factory.h>
#include <Map/map_initializer.h>
#include <MapObjectsImpl/polygon_impl.h>
#include <MapObjectsImpl/polyline_impl.h>
#include <MapObjectsImpl/text_impl.h>
#include <MapObjectsImpl/area_fire_impl.h>
#include <MapObjectsImpl/biological_agent_impl.h>
#include <MapObjectsImpl/chemical_agent_impl.h>
#include <MapObjectsImpl/building_outline_impl.h>
#include <MapObjectsImpl/danger_area_impl.h>
#include <MapObjectsImpl/functional_area_impl.h>
#include <MapObjectsImpl/geo_image_impl.h>
#include <MapObjectsImpl/hit_line_impl.h>
#include <MapObjectsImpl/map_object_indicator_impl.h>
#include <MapObjectsImpl/mine_impl.h>
#include <MapObjectsImpl/mine_field_impl.h>
#include <MapObjectsImpl/nuclear_agent_impl.h>
#include <MapObjectsImpl/participant_impl.h>
#include <MapObjectsImpl/single_fire_impl.h>
#include <MapImpl/sidc_symbol_impl.h>
#include <MapImpl/sight_fan_impl.h>
#include<Symbology/sidc_codec.h>
#include<Symbology/sidc_builder.h>
#include <FunctionDialog/function_dialog.h> // only for debug purpose
#include <iostream>
class MapInitializer : public SituationMap::MapInitializer
{
Q_OBJECT
typedef SituationMap::MapInitializer BaseClass;
public:
explicit MapInitializer( SituationMap::Map & map
, SituationMap::MapSettings & mapSettings
, const QString & debugName
, QObject *parent = nullptr) : BaseClass(map, mapSettings, debugName, parent), m_useSymbologyFromInitFile(true) {}
bool initializeObjectFactory() override
{
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::MapObjectIndicator), new SituationMap::GenericObjectFactory<SituationMap::MapObjectIndicatorImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Polygon), new SituationMap::GenericObjectFactory<SituationMap::PolygonImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Polyline), new SituationMap::GenericObjectFactory<SituationMap::PolylineImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Text), new SituationMap::GenericObjectFactory<SituationMap::TextImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Participant), new SituationMap::GenericObjectFactory<SituationMap::ParticipantImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::AreaFire), new SituationMap::GenericObjectFactory<SituationMap::AreaFireImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::BiologicalAgent), new SituationMap::GenericObjectFactory<SituationMap::BiologicalAgentImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::ChemicalAgent), new SituationMap::GenericObjectFactory<SituationMap::ChemicalAgentImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::BuildingOutline), new SituationMap::GenericObjectFactory<SituationMap::BuildingOutlineImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::DangerArea), new SituationMap::GenericObjectFactory<SituationMap::DangerAreaImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::FunctionalArea), new SituationMap::GenericObjectFactory<SituationMap::FunctionalAreaImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::GeoImage), new SituationMap::GenericObjectFactory<SituationMap::GeoImageImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::HitLine), new SituationMap::GenericObjectFactory<SituationMap::HitLineImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Mine), new SituationMap::GenericObjectFactory<SituationMap::MineImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::MineField), new SituationMap::GenericObjectFactory<SituationMap::MineFieldImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::NuclearAgent), new SituationMap::GenericObjectFactory<SituationMap::NuclearAgentImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SingleFire), new SituationMap::GenericObjectFactory<SituationMap::SingleFireImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SidcSymbol), new SituationMap::GenericObjectFactory<SituationMap::SidcSymbolImpl>() );
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SightFan), new SituationMap::GenericObjectFactory<SituationMap::SightFanImpl>());
return true;
} // initializeObjectFactory()
AdvancedSymbology::SymbologyType symbologyType() const override
{
return (m_useSymbologyFromInitFile) ? SituationMap::MapInitializer::symbologyType() : m_symbologyType;
} // symbologyType
void setSymbologyType( AdvancedSymbology::SymbologyType symbologyType )
{
m_symbologyType = symbologyType;
m_useSymbologyFromInitFile = false;
}
protected :
bool m_useSymbologyFromInitFile;
AdvancedSymbology::SymbologyType m_symbologyType = AdvancedSymbology::SymbologyType::APP6B;
void onMapReady() override
{
BaseClass::onMapReady();
m_map.setExtent(-100000, -100000, 100000, 100000);
m_map.setMinScale(1000000000);
m_map.setMaxScale(100);
m_map.setRotation(0.0);
// own things should be added here
} // onMapReady()
}; // MapInitializer
#define USE_BASE_LAYOUT
class TestMainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit TestMainWindow( AdvancedSymbology::SymbologyType * symbolLib = nullptr) : QMainWindow(), m_planEdit(nullptr), m_logger(SituationMap::getLogger("PlanEditorTestMainWindow"))
{
QString title = QStringLiteral("PlanEditor Test Application");
setWindowTitle( title );
#ifdef USE_BASE_LAYOUT
// Todo: Uncomment false:
m_baseLay = new LtsWidgets::LtsBaseLayoutWidget(this);
setCentralWidget( m_baseLay );
m_mainTab = m_baseLay->getTabFromLayoutArea(LtsWidgets::LayoutArea::eMainTab);
m_dw = m_baseLay->getMenu();
m_map = SituationMap::Map::create(this);
QHBoxLayout * layout = new QHBoxLayout();
layout->addWidget(m_map);
delete m_mainTab->layout();
m_mainTab->setLayout(layout);
m_mainTab->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
const QString & iniFileName = QStringLiteral("plan_editor_map_defaults.ini");
QString initFilePath = QStandardPaths::locate(QStandardPaths::HomeLocation, iniFileName, QStandardPaths::LocateFile); // find map defaults in Home
if (initFilePath.isEmpty()) initFilePath = QStandardPaths::locate(QStandardPaths::AppLocalDataLocation, iniFileName, QStandardPaths::LocateFile); // if not look into the AppData Location
if (initFilePath.isEmpty()) initFilePath = QCoreApplication::applicationDirPath() + QLatin1String("/") + iniFileName; // still not found? last try AppDir
if (!QFile::exists(initFilePath))
FATAL_LOG(m_logger) << LOGFUNCTION << " MapIniFile location Failed";
else
DEBUG_LOG(m_logger) << LOGFUNCTION << " MapIniFile found: " << initFilePath;
SituationMap::MapSettings * mapSettings = new SituationMap::MapSettings(initFilePath, m_map);
MapInitializer *mapInitializer = new MapInitializer(*m_map, *mapSettings, QLatin1String("PlanEditorTest"), m_map);
if (mapInitializer->hasErrors())
{
FATAL_LOG(m_logger) << LOGFUNCTION << " MapInitializer-filename='" << mapInitializer->filename()
<< "'' has following errors: "
<< " exists = " << mapInitializer->exists()
<< " accessError = " << mapInitializer->accessError()
<< " formatError = " << mapInitializer->formatError() ;
m_map->deleteLater();;
m_map = nullptr;
return;
}
else
{
if (symbolLib) mapInitializer->setSymbologyType( *symbolLib );
else mapInitializer->setSymbologyType( AdvancedSymbology::SymbologyType::MIL2525D );
if (!mapInitializer->initMap(SituationMap::Mode::Mode_2D))
{
QMessageBox::critical(this, title, tr("Init situation map failed. Abort ..."));
m_map->deleteLater();;
m_map = nullptr;
return;
}
}
m_planEdit = new PlanEditor::PlanEditor( m_map, m_baseLay );
connect( m_planEdit.data(), &PlanEditor::PlanEditor::quitPlanEditor, this, [this]()
{
m_planEdit -> deleteLater();
m_planEdit.clear();
close(); // By by TestMainWindow
} );
#else
m_map = SituationMap::Map::create(this);
QSplitter * splitter = new QSplitter(this);
QLabel * label = new QLabel("Moin World"), this;
splitter->setOrientation(Qt::Orientation::Horizontal);
splitter->addWidget(m_map);
splitter->addWidget(label);
setCentralWidget(splitter);
#endif
// connect( m_map, &SituationMap::Map::mapObjectsClicked, this, &SuperDax::onMapObjectClicked );
// Prepaire FunctionDialog for debugging purpose only:
SituationMap::FunctionDialog::addButtonToMap(m_map);
resize(1600,1000);
if ((symbolLib) && ((AdvancedSymbology::SymbologyType::APP6D == *symbolLib) || (AdvancedSymbology::SymbologyType::MIL2525D == *symbolLib)))
{
AdvancedSymbology::SymbologyType symbologyType = *symbolLib;
// connect(m_planEdit.data(), &PlanEditor::PlanEditor::symbolModelLoaded, this, [this,symbologyType]()
{
QSet<QString> sidcs;
sidcs << AdvancedSymbology::SidcCodec::encodeComplete(symbologyType, QStringLiteral("10010100001205000000"));
sidcs << AdvancedSymbology::SidcCodec::encodeComplete(symbologyType, QStringLiteral("10010100001106000000"));
m_planEdit->setParticipantsSidcsInUse(sidcs);
}
// );
}
} // TestMainWindow
~TestMainWindow()
{
delete m_map; // Test situation from real life and remove map first, to test "wrong" cleanup
delete m_planEdit;
}
inline bool isValid() { return m_planEdit != nullptr; }
private:
LtsWidgets::LtsBaseLayoutWidget * m_baseLay;
LtsWidgets::LtsTabWidget * m_mainTab;
QWidget * m_dw;
SituationMap::Map * m_map;
QPointer<PlanEditor::PlanEditor> m_planEdit; // because the PlanEditor could delete itself use QPointer
SituationMap::LOGGER_T m_logger;
}; // TestMainWindow
// -------------------------------------------------------------------
int main (int argc, char* argv[])
{
// ESRI :
#ifdef Q_OS_WIN
// Force usage of OpenGL ES through ANGLE on Windows
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
#endif
// : ESRI
bool symbolTypeDefined = false;
AdvancedSymbology::SymbologyType symbologyType = AdvancedSymbology::SymbologyType::MIL2525C;
NGLApplication app ( argc, argv );
app.createLogger("planEditorApp", "log4cxx_planEditorTest.props");
STARTUP_LOG( app.baseLogger() );
app.setOrganizationName( QLatin1String( "RME" ) );
app.setApplicationName( QLatin1String( "Plan Editor Test Application" ) );
TRACE_LOG(app.baseLogger()) << LOGFUNCTION << " START";
if (argc < 2)
{
// usage:
std::cout << argv[0]
<< std::endl
<< " usage: append 'mil' | 'app' to argumentlist" << std::endl
<< " e.g " << argv[0] << " [QTest options] [testfunction] none" << std::endl
<< " e.g " << argv[0] << " [QTest options] [testfunction] mil" << std::endl
<< " e.g " << argv[0] << " [QTest options] [testfunction] app" << std::endl
<< std::endl;
symbologyType = AdvancedSymbology::SymbologyType::None;
}
else
{
const QString & strSymType = app.arguments().constLast(); // the last argument
if(strSymType.compare(QLatin1String("none"), Qt::CaseInsensitive) == 0)
{
symbolTypeDefined = true;
symbologyType = AdvancedSymbology::SymbologyType::None;
}
if(strSymType.compare(QLatin1String("mil2525c"), Qt::CaseInsensitive) == 0)
{
symbolTypeDefined = true;
symbologyType = AdvancedSymbology::SymbologyType::MIL2525C;
}
if (strSymType.compare(QLatin1String("mil2525d"), Qt::CaseInsensitive) == 0)
{
symbolTypeDefined = true;
symbologyType = AdvancedSymbology::SymbologyType::MIL2525D;
}
if(strSymType.compare(QLatin1String("app6b"), Qt::CaseInsensitive) == 0)
{
symbolTypeDefined = true;
symbologyType = AdvancedSymbology::SymbologyType::APP6B;
}
if (strSymType.compare(QLatin1String("app6d"), Qt::CaseInsensitive) == 0)
{
symbolTypeDefined = true;
symbologyType = AdvancedSymbology::SymbologyType::APP6D;
}
}
LtsPluginManager::LtsPluginLoader *pluginLoader = LtsPluginManager::LtsPluginLoader::getInstance();
pluginLoader->loadPlugins( LtsPluginManager::PluginType::STYLE , nullptr, QStringList() << QStringLiteral("rme.light") );
pluginLoader->loadPlugins( LtsPluginManager::PluginType::PROJECT, nullptr, QStringList() << QStringLiteral("legatus") );
// .. to keep some compatibility to old resource structure TODO: rm !
QDir::setSearchPaths( QLatin1String( "icon" ), QStringList( QLatin1String( ":/style/icons/" ) ) );
QDir::setSearchPaths( QLatin1String( "icon" ), QStringList( QLatin1String( ":/style/" ) ) ); // FIXME: does qt check for recursion ??
// if (SituationMap::Map::applyLicense())
// DEBUG_LOG(app.baseLogger()) << LOGFUNCTION << " applyLicense ok";
// else
// FATAL_LOG(app.baseLogger()) << LOGFUNCTION << " applyLicense failed";
#ifdef BUILD_STATIC_LIBRARIES
// For static linking under windows:
Q_INIT_RESOURCE(lts_resources);
#endif
TestMainWindow * mw = (symbolTypeDefined) ? new TestMainWindow( &symbologyType ) : new TestMainWindow();
if (!mw->isValid())
{
delete mw;
return -1;
}
int width = mw->frameGeometry().width();
int height = mw->frameGeometry().height();
QDesktopWidget wid;
const QRect & screenRect = wid.availableGeometry(mw);
int screenWidth = screenRect.width();
int screenHeight = screenRect.height();
mw->setGeometry((screenWidth/2)-(width/2),(screenHeight/2)-(height/2),width,height);
mw->show();
app.setQuitOnLastWindowClosed(true);
int retval = app.exec();
delete mw;
SHUTDOWN_LOG(app.baseLogger());
return retval;
}
#include "main.moc"
+161
View File
@@ -0,0 +1,161 @@
# $Id$
# $HeadURL$
# $Author$
[license]
licenseString = "runtimestandard,1000,rud000189203,none,FAYRMD17J18S6HAZ4078" ;# V100.2.1, provided by Mr. Steinicke (ESRI), 23.03.2018
1\extensionString = "Exten1"
size=0
[symbology]
type = "MIL2525D" ;# None | MIL2525D | MIL2525C | APP6B | APP6D
extraSymbols = ":/advancedSymbology/CivilSymbols" ;# ':/advancedSymbology/CivilSymbols'
[mapUrls]
# EXCGEO01 (192.168.133.90) -> CCSAWS01
1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Norddeutschland/Norddeutschland_32632/MapServer" ;# Since 2017-08-25
2\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_32632/MapServer" ;# Since 2017-08-25
#1\url = "http://192.168.133.90:9090/geoserver/gwc/service/tms/1.0.0/workspace1:Norddeutschland_UTM@EPSG:32632@png"
#1\url = "http://EXCGEO01:9090/geoserver/gwc/service/tms/1.0.0/workspace1:Norddeutschland_UTM@EPSG:32632@png"
#1\url = "http://192.168.133.90:6080/arcgis/rest/services/BremenGeoTiffUTM/MapServer" ;# default until Nov. 2016
#1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Norddeutschland/Norddeutschland/MapServer"
#2\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_32632/MapServer"
#2\url = "http://EXCGEO02/arcgis/rest/services/SampleWorldCities/MapServer" ;# 'SampleWorldCities' = EsriBuiltIn-Service (->ArcGISMapImageLayer)
size=2
basemapLayernamePrefix = "" ;# default: "ArcGISTiledLayer_URL_"
# For debugging only:
# an non-empty value will overwrite/skip the mapUrls:
#localMapFile = "D:/Karten/ESRI-tpk/BremenGeoTiffUTM.tpk" ;# empty (if so, try 'Topographic.tpk')
# : For debugging only
[sceneUrls]
#1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_WebMerc/MapServer"
1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Norddeutschland/Norddeutschland_WebMerc/MapServer" ;# Since 2017-08-25
2\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_WebMerc/MapServer" ;# Since 2017-08-25
#1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/AHTC/AHTC_WebMerc_2/MapServer"
#1\url = "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
#1\url = "https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer" ;# == Basemap::topographic
size=2
[sceneObjectUrls]
#Brest
#1\url = "http://scene.arcgis.com/arcgis/rest/services/Hosted/Buildings_Brest/SceneServer/layers/0" ;# Brest/France
#1\url = "http://scene.arcgis.com/arcgis/rest/services/Hosted/Buildings_Brest/SceneServer/layers" ;# Brest/France
#1\url = "http://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Buildings_Brest/SceneServer/layers/0" ;# Brest/France from Luke, no textures?
#1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Hosted/BT_56_11/SceneServer"
1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Hosted/BT56_rev576/SceneServer" ;# Since 2017-08-25
2\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Hosted/GUEZ_12_building/SceneServer" ;# Since 2017-09-06
size=1
[elevationUrls]
#1\url = "http://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"
#1\url = "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/BremenElevation/ImageServer"
1\url = "file:C:/srtm_38_02.tif"
size=1
[operationalLayer]
1\operationalLayer = "Buildings:Static:Draped"
2\operationalLayer = "MountingPoints:Dynamic:Draped"
3\operationalLayer = "IEDs:Dynamic:Draped"
4\operationalLayer = "BuildingOwnership:Dynamic:Draped"
5\operationalLayer = "AES:Dynamic:Draped"
6\operationalLayer = "Participants:Dynamic:Relative"
7\operationalLayer = "Participants_1:Dynamic:Relative"
8\operationalLayer = "Participants_2:Dynamic:Relative"
9\operationalLayer = "Participants_3:Dynamic:Relative"
10\operationalLayer = "Participants_4:Dynamic:Relative"
size=10
participantLayername = "Participants:Dynamic:Relative" ;# default: "Participants:Dynamic:Relative"
operationalLayerForCubes = "BuildingOwnership" ;# must match with an operationalLayer
[map]
# full mgrs coordinate
# East;North
#center = "32UMD9000080000" ;#QPointF(92750, 80525) -> Rennplatz - Bremen
center = "32UMD9275080525" ;#QPointF(92750, 80525) -> Rennplatz - Bremen
zoomFactorBase = 1.0015 ;# to configure mouse wheel for zooming, only values greater 1 and lower 1.1 will be accepted
initialScale = 90000 ;# 90000 -> Bremen ; 7000000 -> NorthGermany
# scaleMin and scaleMax (of map!) may be overwritten, if a layer is loaded manually -> to rethink
scaleMin = -1 ;# big value (e.g. 10000000) limiting zoomOut 1:10000000 -> 0.0000001
scaleMax = -1 ;# small value (e.g. 1000) limiting zoomIn 1:1000 -> 0.001
scaleHasVisibility = 70000 ;# zoom out -> some objects disappear to not overload the map
gridType = "MGRS" ;# Grid: NoType, MGRS, UTM, USGN
animationDuration = 0.5 ;# default -> 0.5 (0< 0 -> off)
rocketDuration = 2.0 ;# default -> 2.0
[widgets]
addMapWidgets = 1
addSideBar = 1
[viewshed]
# // arcgisonline -> only demo (keep proxy in mind!)
viewshedUrl = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Elevation/ESRI_Elevation_World/GPServer/Viewshed" ;# // only demo!!!
# to be continued
[textStyle]
fontSize = 15
outlineWidth = -1
antiAliased = 1 ;# // Esri 10.2.5: antiAlias = true
[mapObjectDefaultTextStyle]
outlineColor = "white" ;# AbstractMapObject::defaultTextStyle()
outlineWidth = 2
[rubberband]
drawColor = "#00406e" ;# Color settings of rubberband
fillColor = "#007eC0"
handleDrawColor = "#00406e" ;# Outline color of handles
handleFillColor = "#00406e" ;# fill color of handles
selectionColor = "red" ;# fill or draw color if handle is selected
frameColor = "#00406e" ;# outline color of frame handle (bounding box)
frameFillColor = "#5043b0e0" ;# fill color of frame handle (bounding box)
frameHandleMargin = 0 ;# Margin of frame handle in pixel
previewOffset = @Point(32 32) ;# Offset of preview icon to mouse position
previewSize = 32 ;# Size of preview icon
pickingRatio = 8 ;# Size of rubberband point handles
lineHandleWidth = 4 ;# Size of rubberband line handles
[MapObjectDefaultSidcs_APP6B]
AreaFire = ""
BiologicalAgent = ""
ChemicalAgent = ""
DangerArea = ""
FunctionalArea = ""
HitLine = ""
Mine = ""
MineField = ""
NuclearAgent = ""
Participant = ""
SingleFire = ""
[MapObjectDefaultSidcs_MIL2525C]
AreaFire = ""
BiologicalAgent = ""
ChemicalAgent = ""
DangerArea = ""
FunctionalArea = ""
HitLine = ""
Mine = ""
MineField = ""
NuclearAgent = ""
Participant = ""
SingleFire = ""