[macos] Added Layers sidebar
Added a sidebar to the main document window in macosapp that lists the layers in the current style and updates whenever the style changes or a layer is added or removed programmatically. Display an icon beside each layer in the sidebar that indicates the kind of layer. Double-click a layer or layers to toggle their visibility, which is an undoable action. Added a menu item and toolbar button to toggle the Layers sidebar. Added a context menu for toggling visibility of and deleting layers selected in the Layers sidebar. Checked in the original SVGs for layer icons.
This commit is contained in:
committed by
Minh Nguyễn
parent
03a2dbe361
commit
992726ab49
6
platform/macos/app/Assets.xcassets/Layers/Contents.json
Normal file
6
platform/macos/app/Assets.xcassets/Layers/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
15
platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
vendored
Normal file
15
platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "background.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
69
platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
vendored
Normal file
69
platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
%PDF-1.5
|
||||
%µí®û
|
||||
3 0 obj
|
||||
<< /Length 4 0 R
|
||||
/Filter /FlateDecode
|
||||
>>
|
||||
stream
|
||||
xœ}’Mjä@…÷u
|
||||
] š*Iõ£²H²f1x Ü‹<C39C>E®?OÕ¶»
|
||||
ChÚÖgÕ“T’>R¦ø½ü¤2½}¦Ìƒ¾ðõÿ÷ôë7eÎô7=Ñ•yø!^Epp¹$aŽCÏ«QeíÏQŽav²<17>ç¶ÑJ$”Œ‡6r–ÁåÎ\ú+•Â6"¨”uTÓÍw…tÈ‚›Ü„•³Cpo»ðz¥çôßÛ>(«<>ò@˜\QÖ@¸©Xx¼êÉ^‚¼o´ú娷6ÇÇf5ÂÙ8ÙKP³<50>Öè::<3A>Û¨±ëî™v:DmæØEÎæQuÜ/³zÙ\'øæ²ÂÞ;*Uæ‚2.‹Þ»2Uõp!ν5D>Ðè¨!²§éPäVà’QNvŒ×kßh<C39F>ü¥K¨:†W”E¯¾t1^<5E>9du.!ÔY•Æ
|
||||
c¹:OðÝxñ®>„ò1`,iÛìDææÓi(ý1ä^mÇcÆÀ 3Ìʸ`Ã#(vçK ”Wt/ÞÐ<C39E>"³¥5íÎI7ag+vúܧXð1£ïsÖƒÒ!<21>ë?§°Ä8
|
||||
endstream
|
||||
endobj
|
||||
4 0 obj
|
||||
424
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/ExtGState <<
|
||||
/a0 << /CA 1 /ca 1 >>
|
||||
>>
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<< /Type /Page
|
||||
/Parent 1 0 R
|
||||
/MediaBox [ 0 0 12.8 12.8 ]
|
||||
/Contents 3 0 R
|
||||
/Group <<
|
||||
/Type /Group
|
||||
/S /Transparency
|
||||
/I true
|
||||
/CS /DeviceRGB
|
||||
>>
|
||||
/Resources 2 0 R
|
||||
>>
|
||||
endobj
|
||||
1 0 obj
|
||||
<< /Type /Pages
|
||||
/Kids [ 5 0 R ]
|
||||
/Count 1
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<< /Creator (cairo 1.14.0 (http://cairographics.org))
|
||||
/Producer (cairo 1.14.0 (http://cairographics.org))
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 1 0 R
|
||||
>>
|
||||
endobj
|
||||
xref
|
||||
0 8
|
||||
0000000000 65535 f
|
||||
0000000826 00000 n
|
||||
0000000538 00000 n
|
||||
0000000015 00000 n
|
||||
0000000516 00000 n
|
||||
0000000610 00000 n
|
||||
0000000891 00000 n
|
||||
0000001018 00000 n
|
||||
trailer
|
||||
<< /Size 8
|
||||
/Root 7 0 R
|
||||
/Info 6 0 R
|
||||
>>
|
||||
startxref
|
||||
15
platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
vendored
Normal file
15
platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "circle.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
70
platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
vendored
Normal file
70
platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
%PDF-1.5
|
||||
%µí®û
|
||||
3 0 obj
|
||||
<< /Length 4 0 R
|
||||
/Filter /FlateDecode
|
||||
>>
|
||||
stream
|
||||
xœ]ŽM
|
||||
1…÷9Å»€1<E282AC>?''£ËaRAf1¸ðú¦ÓX)ÍëGÞKº<4B> <20>Ëû›àñ¦ÀAõ Š<C2A0>µNv_4NÜ©ÁšØ% ÷ˆ3™Z
|
||||
×Úc†£r'•×ÂáQ›¶J2’ûWp{tÊî\ûù‹džIå†mÜóÿÃW4Ðè4J
|
||||
endstream
|
||||
endobj
|
||||
4 0 obj
|
||||
139
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/ExtGState <<
|
||||
/a0 << /CA 1 /ca 1 >>
|
||||
>>
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<< /Type /Page
|
||||
/Parent 1 0 R
|
||||
/MediaBox [ 0 0 12.8 12.8 ]
|
||||
/Contents 3 0 R
|
||||
/Group <<
|
||||
/Type /Group
|
||||
/S /Transparency
|
||||
/I true
|
||||
/CS /DeviceRGB
|
||||
>>
|
||||
/Resources 2 0 R
|
||||
>>
|
||||
endobj
|
||||
1 0 obj
|
||||
<< /Type /Pages
|
||||
/Kids [ 5 0 R ]
|
||||
/Count 1
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<< /Creator (cairo 1.14.0 (http://cairographics.org))
|
||||
/Producer (cairo 1.14.0 (http://cairographics.org))
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 1 0 R
|
||||
>>
|
||||
endobj
|
||||
xref
|
||||
0 8
|
||||
0000000000 65535 f
|
||||
0000000541 00000 n
|
||||
0000000253 00000 n
|
||||
0000000015 00000 n
|
||||
0000000231 00000 n
|
||||
0000000325 00000 n
|
||||
0000000606 00000 n
|
||||
0000000733 00000 n
|
||||
trailer
|
||||
<< /Size 8
|
||||
/Root 7 0 R
|
||||
/Info 6 0 R
|
||||
>>
|
||||
startxref
|
||||
785
|
||||
%%EOF
|
||||
15
platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
vendored
Normal file
15
platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "fill.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
BIN
platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
vendored
Normal file
BIN
platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
vendored
Normal file
Binary file not shown.
15
platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
vendored
Normal file
15
platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "symbol.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
71
platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
vendored
Normal file
71
platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
%PDF-1.5
|
||||
%µí®û
|
||||
3 0 obj
|
||||
<< /Length 4 0 R
|
||||
/Filter /FlateDecode
|
||||
>>
|
||||
stream
|
||||
xœ]ŽA
|
||||
Â@E÷9Å¿€q’IgÒ‚‹êR\ÈŠÐEqáõíØqQ !ÿ…üð'
|
||||
¨uÜa{
|
||||
¸¿HXRLQñ&Á~î'<27>/p#ÃäëØÔ!ÊŽ2’6ëaìæÑ0s—‰cïõR¥_CY£r씪KÝþ•FÊ–ó¼·9Oç¿×‹.pN’- ¨yVñ
|
||||
ÿyOh ¢4
|
||||
endstream
|
||||
endobj
|
||||
4 0 obj
|
||||
152
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/ExtGState <<
|
||||
/a0 << /CA 1 /ca 1 >>
|
||||
>>
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<< /Type /Page
|
||||
/Parent 1 0 R
|
||||
/MediaBox [ 0 0 12.8 12.8 ]
|
||||
/Contents 3 0 R
|
||||
/Group <<
|
||||
/Type /Group
|
||||
/S /Transparency
|
||||
/I true
|
||||
/CS /DeviceRGB
|
||||
>>
|
||||
/Resources 2 0 R
|
||||
>>
|
||||
endobj
|
||||
1 0 obj
|
||||
<< /Type /Pages
|
||||
/Kids [ 5 0 R ]
|
||||
/Count 1
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<< /Creator (cairo 1.14.0 (http://cairographics.org))
|
||||
/Producer (cairo 1.14.0 (http://cairographics.org))
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 1 0 R
|
||||
>>
|
||||
endobj
|
||||
xref
|
||||
0 8
|
||||
0000000000 65535 f
|
||||
0000000554 00000 n
|
||||
0000000266 00000 n
|
||||
0000000015 00000 n
|
||||
0000000244 00000 n
|
||||
0000000338 00000 n
|
||||
0000000619 00000 n
|
||||
0000000746 00000 n
|
||||
trailer
|
||||
<< /Size 8
|
||||
/Root 7 0 R
|
||||
/Info 6 0 R
|
||||
>>
|
||||
startxref
|
||||
798
|
||||
@@ -429,6 +429,11 @@
|
||||
<action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show Layers" keyEquivalent="L" id="qtg-l9-BH3">
|
||||
<connections>
|
||||
<action selector="toggleLayers:" target="-1" id="YdA-Mr-MHi"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
|
||||
@@ -1,40 +1,160 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11191" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11191"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MapDocument">
|
||||
<connections>
|
||||
<outlet property="mapView" destination="q4d-kF-8Hi" id="7hI-dS-A5R"/>
|
||||
<outlet property="mapViewContextMenu" destination="XbX-6a-Mgy" id="YD0-1r-5N2"/>
|
||||
<outlet property="splitView" destination="IPR-fm-vk8" id="9xt-ar-uad"/>
|
||||
<outlet property="styleLayersArrayController" destination="GXW-3J-Gff" id="Ygs-7o-juz"/>
|
||||
<outlet property="styleLayersTableView" destination="Mm4-6F-qEb" id="TB5-ha-JJE"/>
|
||||
<outlet property="window" destination="cSv-fg-MAQ" id="TBu-Mu-79N"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<objectController objectClassName="MGLMapView" id="jxx-uM-ZTC" userLabel="Map View Object Controller">
|
||||
<declaredKeys>
|
||||
<string>style</string>
|
||||
</declaredKeys>
|
||||
<connections>
|
||||
<outlet property="content" destination="q4d-kF-8Hi" id="Zpe-0y-eG3"/>
|
||||
</connections>
|
||||
</objectController>
|
||||
<objectController objectClassName="MGLStyle" id="Xji-k6-iQ4" userLabel="Style Object Controller">
|
||||
<declaredKeys>
|
||||
<string>layers</string>
|
||||
</declaredKeys>
|
||||
<connections>
|
||||
<binding destination="jxx-uM-ZTC" name="contentObject" keyPath="selection.style" id="60N-aU-tgJ"/>
|
||||
</connections>
|
||||
</objectController>
|
||||
<arrayController objectClassName="MGLStyleLayer" avoidsEmptySelection="NO" id="GXW-3J-Gff" userLabel="Style Layers Array Controller">
|
||||
<declaredKeys>
|
||||
<string>identifier</string>
|
||||
<string>visible</string>
|
||||
</declaredKeys>
|
||||
<connections>
|
||||
<binding destination="Xji-k6-iQ4" name="contentArray" keyPath="selection.layers" id="X25-Nb-Brf"/>
|
||||
</connections>
|
||||
</arrayController>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="MBXMapWindow" animationBehavior="default" id="cSv-fg-MAQ">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="388" y="211" width="512" height="480"/>
|
||||
<rect key="contentRect" x="388" y="211" width="642" height="480"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
|
||||
<view key="contentView" id="TuG-C5-zLS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="512" height="480"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="642" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="q4d-kF-8Hi" customClass="MGLMapView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="512" height="480"/>
|
||||
<splitView autosaveName="MBXLayersSplitView" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IPR-fm-vk8">
|
||||
<rect key="frame" x="0.0" y="0.0" width="642" height="480"/>
|
||||
<subviews>
|
||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" id="sMc-vT-RwH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="163" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" id="bSc-hK-bzQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="163" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" autosaveColumns="NO" id="Mm4-6F-qEb">
|
||||
<rect key="frame" x="0.0" y="0.0" width="163" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn editable="NO" width="16" minWidth="16" maxWidth="1000" id="P3U-a3-c8q">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<imageCell key="dataCell" lineBreakMode="truncatingTail" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="symbol" id="JWq-c8-aB1"/>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<connections>
|
||||
<binding destination="GXW-3J-Gff" name="value" keyPath="arrangedObjects" id="ST5-mo-Mkt">
|
||||
<dictionary key="options">
|
||||
<bool key="NSConditionallySetsEnabled" value="NO"/>
|
||||
<string key="NSValueTransformerName">StyleLayerIconTransformer</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</tableColumn>
|
||||
<tableColumn editable="NO" width="141" minWidth="40" maxWidth="1000" id="BwD-ww-7uw">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="6wl-F2-yK2">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<connections>
|
||||
<binding destination="GXW-3J-Gff" name="value" keyPath="arrangedObjects.identifier" id="vQC-tc-CMF">
|
||||
<dictionary key="options">
|
||||
<bool key="NSConditionallySetsEditable" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<binding destination="GXW-3J-Gff" name="fontItalic" keyPath="arrangedObjects.visible" id="6Wu-cz-WSI">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<action trigger="doubleAction" selector="toggleStyleLayers:" target="-1" id="Q1v-2T-sIC"/>
|
||||
<outlet property="menu" destination="OHX-Pa-tDw" id="wnL-Ux-WaH"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="185" id="VQs-2Z-hmP"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="NDx-rn-TLj">
|
||||
<rect key="frame" x="0.0" y="464" width="184.5" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="0vt-rI-sHB">
|
||||
<rect key="frame" x="147" y="480" width="16" height="0.0"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<customView id="q4d-kF-8Hi" customClass="MGLMapView">
|
||||
<rect key="frame" x="164" y="0.0" width="478" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="200" id="kg3-4h-7Hl"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="dh2-0H-jFZ"/>
|
||||
<outlet property="menu" destination="XbX-6a-Mgy" id="dSu-HR-Kq2"/>
|
||||
</connections>
|
||||
</customView>
|
||||
</subviews>
|
||||
<holdingPriorities>
|
||||
<real value="250"/>
|
||||
<real value="250"/>
|
||||
</holdingPriorities>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="dh2-0H-jFZ"/>
|
||||
<outlet property="menu" destination="XbX-6a-Mgy" id="dSu-HR-Kq2"/>
|
||||
<outlet property="delegate" destination="-2" id="dbC-MC-CAy"/>
|
||||
</connections>
|
||||
</customView>
|
||||
</splitView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="q4d-kF-8Hi" secondAttribute="bottom" id="L2t-Be-qWL"/>
|
||||
<constraint firstItem="q4d-kF-8Hi" firstAttribute="top" secondItem="TuG-C5-zLS" secondAttribute="top" id="T8A-o3-Bhq"/>
|
||||
<constraint firstItem="q4d-kF-8Hi" firstAttribute="leading" secondItem="TuG-C5-zLS" secondAttribute="leading" id="fGH-YW-Qd3"/>
|
||||
<constraint firstAttribute="trailing" secondItem="q4d-kF-8Hi" secondAttribute="trailing" id="yfG-iG-K4C"/>
|
||||
<constraint firstAttribute="trailing" secondItem="IPR-fm-vk8" secondAttribute="trailing" id="ABk-5R-Uzg"/>
|
||||
<constraint firstAttribute="bottom" secondItem="IPR-fm-vk8" secondAttribute="bottom" id="CHa-BK-6ld"/>
|
||||
<constraint firstItem="IPR-fm-vk8" firstAttribute="leading" secondItem="TuG-C5-zLS" secondAttribute="leading" id="hcR-y2-x3l"/>
|
||||
<constraint firstItem="IPR-fm-vk8" firstAttribute="top" secondItem="TuG-C5-zLS" secondAttribute="top" id="u78-BU-s5g"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<toolbar key="toolbar" implicitIdentifier="A3AC6577-4712-4628-813D-113498171A84" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="DTc-AP-Bah">
|
||||
@@ -89,8 +209,25 @@
|
||||
<action selector="showStyle:" target="-1" id="pBn-SO-HIX"/>
|
||||
</connections>
|
||||
</toolbarItem>
|
||||
<toolbarItem implicitItemIdentifier="ACA1D8BE-A108-4BF9-92DC-AE7AA7342CF9" label="Layers" paletteLabel="Show Layers" image="NSListViewTemplate" id="THR-Dm-mn8" customClass="ValidatedToolbarItem">
|
||||
<nil key="toolTip"/>
|
||||
<size key="minSize" width="47" height="32"/>
|
||||
<size key="maxSize" width="48" height="32"/>
|
||||
<button key="view" verticalHuggingPriority="750" id="C3e-Oy-STT">
|
||||
<rect key="frame" x="14" y="14" width="47" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSListViewTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2Gf-wm-QuI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<connections>
|
||||
<action selector="toggleLayers:" target="-1" id="NHT-rn-BuG"/>
|
||||
</connections>
|
||||
</toolbarItem>
|
||||
</allowedToolbarItems>
|
||||
<defaultToolbarItems>
|
||||
<toolbarItem reference="THR-Dm-mn8"/>
|
||||
<toolbarItem reference="XJT-Ho-tuZ"/>
|
||||
<toolbarItem reference="z4l-5x-MzK"/>
|
||||
<toolbarItem reference="u23-0z-Otl"/>
|
||||
@@ -135,8 +272,30 @@
|
||||
</connections>
|
||||
<point key="canvasLocation" x="820" y="254.5"/>
|
||||
</menu>
|
||||
<menu title="Layer" id="OHX-Pa-tDw" userLabel="Layers Context Menu">
|
||||
<items>
|
||||
<menuItem title="Show" id="KWq-LM-Qqo">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleStyleLayers:" target="-1" id="kXn-ug-tWC"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="uWQ-uj-mZn"/>
|
||||
<menuItem title="Delete" id="Myg-EZ-Pnq">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="deleteStyleLayers:" target="-1" id="cE5-ZP-BDC"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="yvb-NB-VGl"/>
|
||||
</connections>
|
||||
</menu>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSListViewTemplate" width="14" height="10"/>
|
||||
<image name="NSShareTemplate" width="11" height="16"/>
|
||||
<image name="symbol" width="13" height="13"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -46,9 +46,12 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
return flattenedShapes;
|
||||
}
|
||||
|
||||
@interface MapDocument () <NSWindowDelegate, NSSharingServicePickerDelegate, NSMenuDelegate, MGLMapViewDelegate>
|
||||
@interface MapDocument () <NSWindowDelegate, NSSharingServicePickerDelegate, NSMenuDelegate, NSSplitViewDelegate, MGLMapViewDelegate>
|
||||
|
||||
@property (weak) IBOutlet NSArrayController *styleLayersArrayController;
|
||||
@property (weak) IBOutlet NSTableView *styleLayersTableView;
|
||||
@property (weak) IBOutlet NSMenu *mapViewContextMenu;
|
||||
@property (weak) IBOutlet NSSplitView *splitView;
|
||||
|
||||
@end
|
||||
|
||||
@@ -98,6 +101,8 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
NSPressGestureRecognizer *pressGestureRecognizer = [[NSPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePressGesture:)];
|
||||
[self.mapView addGestureRecognizer:pressGestureRecognizer];
|
||||
|
||||
[self.splitView setPosition:0 ofDividerAtIndex:0];
|
||||
|
||||
[self applyPendingState];
|
||||
}
|
||||
|
||||
@@ -174,6 +179,7 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
NSAssert(NO, @"Cannot set style from control with tag %li", (long)tag);
|
||||
break;
|
||||
}
|
||||
[self.undoManager removeAllActionsWithTarget:self];
|
||||
self.mapView.styleURL = styleURL;
|
||||
[self.window.toolbar validateVisibleItems];
|
||||
}
|
||||
@@ -195,6 +201,7 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
[alert addButtonWithTitle:@"Apply"];
|
||||
[alert addButtonWithTitle:@"Cancel"];
|
||||
if ([alert runModal] == NSAlertFirstButtonReturn) {
|
||||
[self.undoManager removeAllActionsWithTarget:self];
|
||||
self.mapView.styleURL = [NSURL URLWithString:textField.stringValue];
|
||||
[[NSUserDefaults standardUserDefaults] setURL:self.mapView.styleURL forKey:@"MBXCustomStyleURL"];
|
||||
[self.window.toolbar validateVisibleItems];
|
||||
@@ -214,9 +221,110 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
}
|
||||
|
||||
- (IBAction)reload:(id)sender {
|
||||
[self.undoManager removeAllActionsWithTarget:self];
|
||||
[self.mapView reloadStyle:sender];
|
||||
}
|
||||
|
||||
/**
|
||||
Show or hide the Layers sidebar.
|
||||
*/
|
||||
- (IBAction)toggleLayers:(id)sender {
|
||||
BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
|
||||
[NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull context) {
|
||||
context.allowsImplicitAnimation = YES;
|
||||
[self.splitView setPosition:isShown ? 0 : 100 ofDividerAtIndex:0];
|
||||
[self.window.toolbar validateVisibleItems];
|
||||
} completionHandler:nil];
|
||||
}
|
||||
|
||||
/**
|
||||
Show or hide the selected layers.
|
||||
*/
|
||||
- (IBAction)toggleStyleLayers:(id)sender {
|
||||
NSInteger clickedRow = self.styleLayersTableView.clickedRow;
|
||||
NSIndexSet *indices = self.styleLayersTableView.selectedRowIndexes;
|
||||
if (clickedRow >= 0 && ![indices containsIndex:clickedRow]) {
|
||||
indices = [NSIndexSet indexSetWithIndex:clickedRow];
|
||||
}
|
||||
[self toggleStyleLayersAtArrangedObjectIndexes:indices];
|
||||
}
|
||||
|
||||
- (void)toggleStyleLayersAtArrangedObjectIndexes:(NSIndexSet *)indices {
|
||||
NS_ARRAY_OF(MGLStyleLayer *) *layers = [self.mapView.style.layers objectsAtIndexes:indices];
|
||||
BOOL isVisible = layers.firstObject.visible;
|
||||
[self.undoManager registerUndoWithTarget:self handler:^(MapDocument * _Nonnull target) {
|
||||
[target toggleStyleLayersAtArrangedObjectIndexes:indices];
|
||||
}];
|
||||
|
||||
if (!self.undoManager.undoing) {
|
||||
NSString *actionName;
|
||||
if (indices.count == 1) {
|
||||
actionName = [NSString stringWithFormat:@"%@ Layer “%@”", isVisible ? @"Hide" : @"Show", layers.firstObject.identifier];
|
||||
} else {
|
||||
actionName = [NSString stringWithFormat:@"%@ %@ Layers", isVisible ? @"Hide" : @"Show",
|
||||
[NSNumberFormatter localizedStringFromNumber:@(indices.count)
|
||||
numberStyle:NSNumberFormatterDecimalStyle]];
|
||||
}
|
||||
[self.undoManager setActionIsDiscardable:YES];
|
||||
[self.undoManager setActionName:actionName];
|
||||
}
|
||||
|
||||
for (MGLStyleLayer *layer in layers) {
|
||||
layer.visible = !isVisible;
|
||||
}
|
||||
|
||||
NSIndexSet *columnIndices = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
|
||||
[self.styleLayersTableView reloadDataForRowIndexes:indices columnIndexes:columnIndices];
|
||||
}
|
||||
|
||||
- (IBAction)deleteStyleLayers:(id)sender {
|
||||
NSInteger clickedRow = self.styleLayersTableView.clickedRow;
|
||||
NSIndexSet *indices = self.styleLayersTableView.selectedRowIndexes;
|
||||
if (clickedRow >= 0 && ![indices containsIndex:clickedRow]) {
|
||||
indices = [NSIndexSet indexSetWithIndex:clickedRow];
|
||||
}
|
||||
[self deleteStyleLayersAtArrangedObjectIndexes:indices];
|
||||
}
|
||||
|
||||
- (void)insertStyleLayers:(NS_ARRAY_OF(MGLStyleLayer *) *)layers atArrangedObjectIndexes:(NSIndexSet *)indices {
|
||||
[self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
|
||||
[self deleteStyleLayersAtArrangedObjectIndexes:indices];
|
||||
}];
|
||||
|
||||
if (!self.undoManager.undoing) {
|
||||
NSString *actionName;
|
||||
if (indices.count == 1) {
|
||||
actionName = [NSString stringWithFormat:@"Add Layer “%@”", layers.firstObject.identifier];
|
||||
} else {
|
||||
actionName = [NSString stringWithFormat:@"Add %@ Layers",
|
||||
[NSNumberFormatter localizedStringFromNumber:@(indices.count) numberStyle:NSNumberFormatterDecimalStyle]];
|
||||
}
|
||||
[self.undoManager setActionName:actionName];
|
||||
}
|
||||
|
||||
[self.styleLayersArrayController insertObjects:layers atArrangedObjectIndexes:indices];
|
||||
}
|
||||
|
||||
- (void)deleteStyleLayersAtArrangedObjectIndexes:(NSIndexSet *)indices {
|
||||
NS_ARRAY_OF(MGLStyleLayer *) *layers = [self.mapView.style.layers objectsAtIndexes:indices];
|
||||
[self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
|
||||
[self insertStyleLayers:layers atArrangedObjectIndexes:indices];
|
||||
}];
|
||||
|
||||
if (!self.undoManager.undoing) {
|
||||
NSString *actionName;
|
||||
if (indices.count == 1) {
|
||||
actionName = [NSString stringWithFormat:@"Delete Layer “%@”", layers.firstObject.identifier];
|
||||
} else {
|
||||
actionName = [NSString stringWithFormat:@"Delete %@ Layers",
|
||||
[NSNumberFormatter localizedStringFromNumber:@(indices.count) numberStyle:NSNumberFormatterDecimalStyle]];
|
||||
}
|
||||
[self.undoManager setActionName:actionName];
|
||||
}
|
||||
|
||||
[self.styleLayersArrayController removeObjectsAtArrangedObjectIndexes:indices];
|
||||
}
|
||||
|
||||
- (void)applyPendingState {
|
||||
if (_inheritedStyleURL) {
|
||||
self.mapView.styleURL = _inheritedStyleURL;
|
||||
@@ -607,6 +715,27 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
if (menuItem.action == @selector(reload:)) {
|
||||
return YES;
|
||||
}
|
||||
if (menuItem.action == @selector(toggleLayers:)) {
|
||||
BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
|
||||
menuItem.title = isShown ? @"Hide Layers" : @"Show Layers";
|
||||
return YES;
|
||||
}
|
||||
if (menuItem.action == @selector(toggleStyleLayers:)) {
|
||||
NSInteger row = self.styleLayersTableView.clickedRow;
|
||||
if (row == -1) {
|
||||
row = self.styleLayersTableView.selectedRow;
|
||||
}
|
||||
if (row == -1) {
|
||||
menuItem.title = @"Show";
|
||||
} else {
|
||||
BOOL isVisible = self.mapView.style.layers[row].visible;
|
||||
menuItem.title = isVisible ? @"Hide" : @"Show";
|
||||
}
|
||||
return row != -1;
|
||||
}
|
||||
if (menuItem.action == @selector(deleteStyleLayers:)) {
|
||||
return self.styleLayersTableView.clickedRow >= 0 || self.styleLayersTableView.selectedRow >= 0;
|
||||
}
|
||||
if (menuItem.action == @selector(manipulateStyle:)) {
|
||||
return YES;
|
||||
}
|
||||
@@ -722,7 +851,8 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (toolbarItem.action == @selector(showShareMenu:)) {
|
||||
SEL action = toolbarItem.action;
|
||||
if (action == @selector(showShareMenu:)) {
|
||||
[(NSButton *)toolbarItem.view sendActionOn:NSLeftMouseDownMask];
|
||||
if (![MGLAccountManager accessToken]) {
|
||||
return NO;
|
||||
@@ -731,7 +861,7 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
return ([styleURL.scheme isEqualToString:@"mapbox"]
|
||||
&& [styleURL.pathComponents.firstObject isEqualToString:@"styles"]);
|
||||
}
|
||||
if (toolbarItem.action == @selector(showStyle:)) {
|
||||
if (action == @selector(showStyle:)) {
|
||||
NSPopUpButton *popUpButton = (NSPopUpButton *)toolbarItem.view;
|
||||
NSUInteger index = self.indexOfStyleInToolbarItem;
|
||||
if (index == NSNotFound) {
|
||||
@@ -740,6 +870,10 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
}
|
||||
[popUpButton selectItemAtIndex:index];
|
||||
}
|
||||
if (action == @selector(toggleLayers:)) {
|
||||
BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
|
||||
[(NSButton *)toolbarItem.view setState:isShown ? NSOnState : NSOffState];
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
@@ -773,6 +907,16 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark NSSplitViewDelegate methods
|
||||
|
||||
- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview {
|
||||
return subview != self.mapView;
|
||||
}
|
||||
|
||||
- (BOOL)splitView:(NSSplitView *)splitView shouldCollapseSubview:(NSView *)subview forDoubleClickOnDividerAtIndex:(NSInteger)dividerIndex {
|
||||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark MGLMapViewDelegate methods
|
||||
|
||||
- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation {
|
||||
|
||||
5
platform/macos/app/StyleLayerIconTransformer.h
Normal file
5
platform/macos/app/StyleLayerIconTransformer.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface StyleLayerIconTransformer : NSValueTransformer
|
||||
|
||||
@end
|
||||
38
platform/macos/app/StyleLayerIconTransformer.m
Normal file
38
platform/macos/app/StyleLayerIconTransformer.m
Normal file
@@ -0,0 +1,38 @@
|
||||
#import "StyleLayerIconTransformer.h"
|
||||
|
||||
#import <Mapbox/Mapbox.h>
|
||||
|
||||
@implementation StyleLayerIconTransformer
|
||||
|
||||
+ (Class)transformedValueClass {
|
||||
return [NSString class];
|
||||
}
|
||||
|
||||
+ (BOOL)allowsReverseTransformation {
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (id)transformedValue:(MGLStyleLayer *)layer {
|
||||
if ([layer isKindOfClass:[MGLBackgroundStyleLayer class]]) {
|
||||
return [NSImage imageNamed:@"background"];
|
||||
}
|
||||
if ([layer isKindOfClass:[MGLCircleStyleLayer class]]) {
|
||||
return [NSImage imageNamed:@"circle"];
|
||||
}
|
||||
if ([layer isKindOfClass:[MGLFillStyleLayer class]]) {
|
||||
return [NSImage imageNamed:@"fill"];
|
||||
}
|
||||
if ([layer isKindOfClass:[MGLLineStyleLayer class]]) {
|
||||
return [NSImage imageNamed:@"NSListViewTemplate"];
|
||||
}
|
||||
if ([layer isKindOfClass:[MGLRasterStyleLayer class]]) {
|
||||
return [[NSWorkspace sharedWorkspace] iconForFileType:@"jpg"];
|
||||
}
|
||||
if ([layer isKindOfClass:[MGLSymbolStyleLayer class]]) {
|
||||
return [NSImage imageNamed:@"symbol"];
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
90
platform/macos/app/resources/background.svg
Normal file
90
platform/macos/app/resources/background.svg
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg4148"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="background.svg"
|
||||
inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
|
||||
inkscape:export-xdpi="90.000244"
|
||||
inkscape:export-ydpi="90.000244">
|
||||
<defs
|
||||
id="defs4150">
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect4877"
|
||||
is_visible="true" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="10.48171"
|
||||
inkscape:cx="8.5046012"
|
||||
inkscape:cy="7.2814248"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="751"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4153">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1036.3622)">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 2.8621284,1037.3477 c 2.5635185,5.7342 4.4524268,0.068 4.4524268,0.068 l 0.067461,-5e-4 c 2.4960576,4.9921 4.1825828,-0.1349 4.1825828,-0.1349 l 0.02385,0 c 2.765902,5.5993 4.091271,0 4.091271,0 l 0.02385,0 c 3.170668,5.9366 4.293654,0 4.293654,0"
|
||||
id="path4893"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -4.1486618,1041.2371 c 2.5635185,5.7342 4.45242682,0.068 4.45242682,0.068 l 0.067461,-5e-4 c 2.49605748,4.9921 4.18258278,-0.1349 4.18258278,-0.1349 l 0.023851,0 c 2.7659014,5.5993 4.0912704,0 4.0912704,0 l 0.02385,0 c 3.1706688,5.9366 4.2936548,0 4.2936548,0"
|
||||
id="path4893-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 3.7221911,1045.5303 c 2.5635186,5.7342 4.4524269,0.068 4.4524269,0.068 l 0.067461,-5e-4 c 2.496057,4.9921 4.182583,-0.1349 4.182583,-0.1349 l 0.02385,0 c 2.765901,5.5993 4.09127,0 4.09127,0 l 0.02385,0 c 3.170668,5.9366 4.293654,0 4.293654,0"
|
||||
id="path4893-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m -3.5762361,1049.3465 c 2.5635185,5.7342 4.4524268,0.068 4.4524268,0.068 l 0.067461,-5e-4 c 2.4960575,4.9921 4.1825828,-0.1349 4.1825828,-0.1349 l 0.023851,0 c 2.7659014,5.5993 4.0912702,0 4.0912702,0 l 0.02385,0 c 3.1706683,5.9366 4.2936543,0 4.2936543,0"
|
||||
id="path4893-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
67
platform/macos/app/resources/circle.svg
Normal file
67
platform/macos/app/resources/circle.svg
Normal file
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg4148"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="circle.svg"
|
||||
inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
|
||||
inkscape:export-xdpi="90.000244"
|
||||
inkscape:export-ydpi="90.000244">
|
||||
<defs
|
||||
id="defs4150" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9195959"
|
||||
inkscape:cx="3.8463784"
|
||||
inkscape:cy="-0.92094419"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="751"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4153">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1036.3622)">
|
||||
<circle
|
||||
style="opacity:1;fill:none;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:1.49974895;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4778"
|
||||
cx="8"
|
||||
cy="1044.3622"
|
||||
r="7.2501254" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
68
platform/macos/app/resources/fill.svg
Normal file
68
platform/macos/app/resources/fill.svg
Normal file
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg4148"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="fill.svg"
|
||||
inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
|
||||
inkscape:export-xdpi="90.000244"
|
||||
inkscape:export-ydpi="90.000244">
|
||||
<defs
|
||||
id="defs4150" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9195959"
|
||||
inkscape:cx="0.31084444"
|
||||
inkscape:cy="-0.92094419"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="751"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4153">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1036.3622)">
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:#000000;stroke-width:1.37142861;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4818"
|
||||
width="14.628572"
|
||||
height="14.628572"
|
||||
x="0.68571424"
|
||||
y="1037.048" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
66
platform/macos/app/resources/symbol.svg
Normal file
66
platform/macos/app/resources/symbol.svg
Normal file
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg4148"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="symbol.svg"
|
||||
inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
|
||||
inkscape:export-xdpi="90.000244"
|
||||
inkscape:export-ydpi="90.000244">
|
||||
<defs
|
||||
id="defs4150" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9195959"
|
||||
inkscape:cx="3.8463784"
|
||||
inkscape:cy="-0.92094419"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="751"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4153">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1036.3622)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.45454013;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path5359"
|
||||
d="m 13.062591,1042.4228 c 0,3.394 -5.0625908,9.2122 -5.0625908,9.2122 0,0 -5.0625898,-5.872 -5.0625898,-9.2122 0,-2.9629 2.2914879,-5.3333 5.0625898,-5.3333 2.7711018,0 5.0625908,2.3704 5.0625908,5.3333 z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -115,6 +115,7 @@
|
||||
DA8F259C1D51CB000010E6B5 /* MGLStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F259B1D51CB000010E6B5 /* MGLStyleValue_Private.h */; };
|
||||
DA8F25B21D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25A61D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h */; };
|
||||
DA8F25B31D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25A71D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm */; };
|
||||
DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */; };
|
||||
DAC2ABC51CC6D343006D18C4 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */; };
|
||||
DACC22141CF3D3E200D220D9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DACC22121CF3D3E200D220D9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
DACC22151CF3D3E200D220D9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACC22131CF3D3E200D220D9 /* MGLFeature.mm */; };
|
||||
@@ -356,6 +357,8 @@
|
||||
DA8F25B51D51D2240010E6B5 /* MGLRuntimeStylingTests.m.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLRuntimeStylingTests.m.ejs; sourceTree = "<group>"; };
|
||||
DA8F25B61D51D2240010E6B5 /* MGLStyleLayer.h.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.h.ejs; sourceTree = "<group>"; };
|
||||
DA8F25B71D51D2240010E6B5 /* MGLStyleLayer.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.mm.ejs; sourceTree = "<group>"; };
|
||||
DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleLayerIconTransformer.h; sourceTree = "<group>"; };
|
||||
DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StyleLayerIconTransformer.m; sourceTree = "<group>"; };
|
||||
DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage_Private.h; sourceTree = "<group>"; };
|
||||
DACC22121CF3D3E200D220D9 /* MGLFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature.h; sourceTree = "<group>"; };
|
||||
DACC22131CF3D3E200D220D9 /* MGLFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFeature.mm; sourceTree = "<group>"; };
|
||||
@@ -588,6 +591,8 @@
|
||||
DA839E9E1CC2E3400062CAFB /* MapDocument.xib */,
|
||||
DAE6C2E91CC3050F00DB3429 /* OfflinePackNameValueTransformer.h */,
|
||||
DAE6C2EA1CC3050F00DB3429 /* OfflinePackNameValueTransformer.m */,
|
||||
DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */,
|
||||
DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */,
|
||||
DAE6C2EB1CC3050F00DB3429 /* TimeIntervalTransformer.h */,
|
||||
DAE6C2EC1CC3050F00DB3429 /* TimeIntervalTransformer.m */,
|
||||
DA839EA11CC2E3400062CAFB /* Assets.xcassets */,
|
||||
@@ -1156,6 +1161,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */,
|
||||
DA839E9D1CC2E3400062CAFB /* MapDocument.m in Sources */,
|
||||
DAE6C2ED1CC3050F00DB3429 /* DroppedPinAnnotation.m in Sources */,
|
||||
DAE6C2EE1CC3050F00DB3429 /* LocationCoordinate2DTransformer.m in Sources */,
|
||||
|
||||
Reference in New Issue
Block a user