Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+72
@@ -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
@@ -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
@@ -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
@@ -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>
|
||||
@@ -0,0 +1,9 @@
|
||||
<!DOCTYPE GeometryModelDocument>
|
||||
<GeometryModel meta_data_deswcription="Test of taktical symbol "Support by Fire" 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>
|
||||
Executable
Whitespace-only changes.
+139
@@ -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
|
||||
#
|
||||
|
||||
Executable
+399
@@ -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
@@ -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 = ""
|
||||
Reference in new issue
Block a user