summaryrefslogtreecommitdiff
path: root/platform/macos/app
diff options
context:
space:
mode:
Diffstat (limited to 'platform/macos/app')
-rw-r--r--platform/macos/app/AppDelegate.h26
-rw-r--r--platform/macos/app/AppDelegate.m332
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.pngbin8183 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.pngbin17649 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.pngbin917 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.pngbin2009 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.pngbin17649 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.pngbin38577 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.pngbin1730 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.pngbin3905 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.pngbin38577 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.pngbin85668 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json68
-rw-r--r--platform/macos/app/Assets.xcassets/Contents.json6
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/Contents.json6
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json20
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf69
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf70
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf72
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdfbin1046 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json20
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdfbin1262 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json20
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf70
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json15
-rw-r--r--platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf71
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/Contents.json6
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.pngbin172489 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.pngbin177163 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.pngbin179236 -> 0 bytes
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json21
-rw-r--r--platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.pngbin177074 -> 0 bytes
-rw-r--r--platform/macos/app/Base.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/Base.lproj/MainMenu.xib982
-rw-r--r--platform/macos/app/Base.lproj/MapDocument.xib497
-rw-r--r--platform/macos/app/Credits.rtf9
-rw-r--r--platform/macos/app/DroppedPinAnnotation.h15
-rw-r--r--platform/macos/app/DroppedPinAnnotation.m73
-rw-r--r--platform/macos/app/Info.plist58
-rw-r--r--platform/macos/app/LocationCoordinate2DTransformer.h5
-rw-r--r--platform/macos/app/LocationCoordinate2DTransformer.m31
-rw-r--r--platform/macos/app/MGLStyle+MBXAdditions.h7
-rw-r--r--platform/macos/app/MGLStyle+MBXAdditions.m42
-rw-r--r--platform/macos/app/MapDocument.h14
-rw-r--r--platform/macos/app/MapDocument.m1507
-rw-r--r--platform/macos/app/OfflinePackNameValueTransformer.h5
-rw-r--r--platform/macos/app/OfflinePackNameValueTransformer.m33
-rw-r--r--platform/macos/app/StyleLayerIconTransformer.h5
-rw-r--r--platform/macos/app/StyleLayerIconTransformer.m47
-rw-r--r--platform/macos/app/TimeIntervalTransformer.h5
-rw-r--r--platform/macos/app/TimeIntervalTransformer.m53
-rw-r--r--platform/macos/app/ar.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/bg.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/ca.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/cs.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/da.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/de.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/es.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/fi.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/fr.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/gl.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/he.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/heatmap.json809
-rw-r--r--platform/macos/app/hu.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/ja.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/ko.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/lt.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/main.m5
-rw-r--r--platform/macos/app/nl.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/pl.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/pt-BR.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/pt-PT.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/resources/background.svg90
-rw-r--r--platform/macos/app/resources/circle.svg67
-rw-r--r--platform/macos/app/resources/fill-extrusion.svg125
-rw-r--r--platform/macos/app/resources/fill.svg68
-rw-r--r--platform/macos/app/resources/heatmap.svg72
-rw-r--r--platform/macos/app/resources/hillshade.svg87
-rw-r--r--platform/macos/app/resources/symbol.svg66
-rw-r--r--platform/macos/app/ru.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/sv.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/uk.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/vi.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/wms.json21
-rw-r--r--platform/macos/app/zh-Hans.lproj/Localizable.strings0
-rw-r--r--platform/macos/app/zh-Hant.lproj/Localizable.strings0
92 files changed, 0 insertions, 5798 deletions
diff --git a/platform/macos/app/AppDelegate.h b/platform/macos/app/AppDelegate.h
deleted file mode 100644
index 87b7514292..0000000000
--- a/platform/macos/app/AppDelegate.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-extern NSString * const MGLMapboxAccessTokenDefaultsKey;
-
-@interface AppDelegate : NSObject <NSApplicationDelegate>
-
-@property (weak) IBOutlet NSWindow *preferencesWindow;
-
-// Normally, an application should respect the “Close windows when quitting an
-// application” setting in the General pane of System Preferences. But the map
-// would only be restored to its last opened location if the user quits the
-// application using Quit and Keep Windows. An application that displays only a
-// map should restore the last viewed map, like Maps.app does. These properties
-// temporarily hold state for the next map window to be opened.
-
-@property (assign) double pendingZoomLevel;
-@property (copy) MGLMapCamera *pendingCamera;
-@property (assign) MGLCoordinateBounds pendingVisibleCoordinateBounds;
-@property (assign) double pendingMinimumZoomLevel;
-@property (assign) double pendingMaximumZoomLevel;
-@property (copy) NSURL *pendingStyleURL;
-@property (assign) MGLMapDebugMaskOptions pendingDebugMask;
-
-- (void)watchOfflinePack:(MGLOfflinePack *)pack;
-
-@end
diff --git a/platform/macos/app/AppDelegate.m b/platform/macos/app/AppDelegate.m
deleted file mode 100644
index eda989d7f9..0000000000
--- a/platform/macos/app/AppDelegate.m
+++ /dev/null
@@ -1,332 +0,0 @@
-#import "AppDelegate.h"
-
-#import "MapDocument.h"
-
-NSString * const MGLMapboxAccessTokenDefaultsKey = @"MGLMapboxAccessToken";
-NSString * const MGLLastMapCameraDefaultsKey = @"MGLLastMapCamera";
-NSString * const MGLLastMapStyleURLDefaultsKey = @"MGLLastMapStyleURL";
-NSString * const MGLLastMapDebugMaskDefaultsKey = @"MGLLastMapDebugMask";
-
-/**
- Some convenience methods to make offline pack properties easier to bind to.
- */
-@implementation MGLOfflinePack (Additions)
-
-+ (NSSet *)keyPathsForValuesAffectingStateImage {
- return [NSSet setWithObjects:@"state", nil];
-}
-
-- (NSImage *)stateImage {
- switch (self.state) {
- case MGLOfflinePackStateComplete:
- return [NSImage imageNamed:@"NSMenuOnStateTemplate"];
-
- case MGLOfflinePackStateActive:
- return [NSImage imageNamed:@"NSFollowLinkFreestandingTemplate"];
-
- default:
- return nil;
- }
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfResourcesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfResourcesCompleted {
- return self.progress.countOfResourcesCompleted;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfResourcesExpected {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfResourcesExpected {
- return self.progress.countOfResourcesExpected;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfBytesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfBytesCompleted {
- return self.progress.countOfBytesCompleted;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfTilesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfTilesCompleted {
- return self.progress.countOfTilesCompleted;
-}
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingCountOfTileBytesCompleted {
- return [NSSet setWithObjects:@"progress", nil];
-}
-
-- (uint64_t)countOfTileBytesCompleted {
- return self.progress.countOfTileBytesCompleted;
-}
-
-@end
-
-@interface AppDelegate () <NSWindowDelegate>
-
-@property (weak) IBOutlet NSArrayController *offlinePacksArrayController;
-@property (weak) IBOutlet NSPanel *offlinePacksPanel;
-
-@end
-
-@implementation AppDelegate
-
-#pragma mark Lifecycle
-
-+ (void)load {
- // Set access token, unless MGLAccountManager already read it in from Info.plist.
- if (![MGLAccountManager accessToken]) {
- NSString *accessToken = [NSProcessInfo processInfo].environment[@"MAPBOX_ACCESS_TOKEN"];
- if (accessToken) {
- // Store to preferences so that we can launch the app later on without having to specify
- // token.
- [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:MGLMapboxAccessTokenDefaultsKey];
- } else {
- // Try to retrieve from preferences, maybe we've stored them there previously and can reuse
- // the token.
- accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:MGLMapboxAccessTokenDefaultsKey];
- }
- [MGLAccountManager setAccessToken:accessToken];
- }
-}
-
-- (void)applicationWillFinishLaunching:(NSNotification *)notification {
- [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self
- andSelector:@selector(handleGetURLEvent:withReplyEvent:)
- forEventClass:kInternetEventClass
- andEventID:kAEGetURL];
-
- if (![[NSUserDefaults standardUserDefaults] boolForKey:@"NSQuitAlwaysKeepsWindows"]) {
- NSData *cameraData = [[NSUserDefaults standardUserDefaults] objectForKey:MGLLastMapCameraDefaultsKey];
- if (cameraData) {
- NSKeyedUnarchiver *coder = [[NSKeyedUnarchiver alloc] initForReadingWithData:cameraData];
- self.pendingZoomLevel = -1;
- self.pendingCamera = [[MGLMapCamera alloc] initWithCoder:coder];
- }
- NSString *styleURLString = [[NSUserDefaults standardUserDefaults] objectForKey:MGLLastMapStyleURLDefaultsKey];
- if (styleURLString) {
- self.pendingStyleURL = [NSURL URLWithString:styleURLString];
- }
- self.pendingDebugMask = [[NSUserDefaults standardUserDefaults] integerForKey:MGLLastMapDebugMaskDefaultsKey];
- }
-}
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- // Set access token, unless MGLAccountManager already read it in from Info.plist.
- if (![MGLAccountManager accessToken]) {
- NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Access token required";
- alert.informativeText = @"To load Mapbox-hosted tiles and styles, enter your Mapbox access token in Preferences.";
- [alert addButtonWithTitle:@"Open Preferences"];
- [alert runModal];
- [self showPreferences:nil];
- }
-
- [self.offlinePacksArrayController bind:@"content" toObject:[MGLOfflineStorage sharedOfflineStorage] withKeyPath:@"packs" options:nil];
-}
-
-- (void)applicationWillTerminate:(NSNotification *)notification {
- [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:nil];
-
- if (![[NSUserDefaults standardUserDefaults] boolForKey:@"NSQuitAlwaysKeepsWindows"]) {
- NSDocument *currentDocument = [NSDocumentController sharedDocumentController].currentDocument;
- if ([currentDocument isKindOfClass:[MapDocument class]]) {
- MGLMapView *mapView = [(MapDocument *)currentDocument mapView];
- NSMutableData *cameraData = [NSMutableData data];
- NSKeyedArchiver *coder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:cameraData];
- [mapView.camera encodeWithCoder:coder];
- [coder finishEncoding];
- [[NSUserDefaults standardUserDefaults] setObject:cameraData forKey:MGLLastMapCameraDefaultsKey];
- [[NSUserDefaults standardUserDefaults] setObject:mapView.styleURL.absoluteString forKey:MGLLastMapStyleURLDefaultsKey];
- [[NSUserDefaults standardUserDefaults] setInteger:mapView.debugMask forKey:MGLLastMapDebugMaskDefaultsKey];
- }
- }
-
- [self.offlinePacksArrayController unbind:@"content"];
-}
-
-#pragma mark Services
-
-- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
- // mapboxgl://?center=29.95,-90.066667&zoom=14&bearing=45&pitch=30
- NSURL *url = [NSURL URLWithString:[event paramDescriptorForKeyword:keyDirectObject].stringValue];
- NSMutableDictionary<NSString *, NSString *> *params = [[NSMutableDictionary alloc] init];
- for (NSString *param in [url.query componentsSeparatedByString:@"&"]) {
- NSArray *parts = [param componentsSeparatedByString:@"="];
- if (parts.count >= 2) {
- params[parts[0]] = [parts[1] stringByRemovingPercentEncoding];
- }
- }
-
- MGLMapCamera *camera = [MGLMapCamera camera];
- NSString *zoomLevelString = params[@"zoom"];
- self.pendingZoomLevel = zoomLevelString.length ? zoomLevelString.doubleValue : -1;
-
- NSString *directionString = params[@"bearing"];
- if (directionString.length) {
- camera.heading = directionString.doubleValue;
- }
-
- NSString *centerString = params[@"center"];
- if (centerString) {
- NSArray *coordinateValues = [centerString componentsSeparatedByString:@","];
- if (coordinateValues.count == 2) {
- camera.centerCoordinate = CLLocationCoordinate2DMake([coordinateValues[0] doubleValue],
- [coordinateValues[1] doubleValue]);
- }
- }
-
- NSString *pitchString = params[@"pitch"];
- if (pitchString.length) {
- camera.pitch = pitchString.doubleValue;
- }
-
- self.pendingCamera = camera;
- [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:NULL];
-}
-
-#pragma mark Offline pack management
-
-- (IBAction)showOfflinePacksPanel:(id)sender {
- [self.offlinePacksPanel makeKeyAndOrderFront:sender];
-
- for (MGLOfflinePack *pack in self.offlinePacksArrayController.arrangedObjects) {
- [pack requestProgress];
- }
-}
-
-- (IBAction)delete:(id)sender {
- for (MGLOfflinePack *pack in self.offlinePacksArrayController.selectedObjects) {
- [self unwatchOfflinePack:pack];
- [[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:^(NSError * _Nullable error) {
- if (error) {
- [[NSAlert alertWithError:error] runModal];
- }
- }];
- }
-}
-
-- (IBAction)chooseOfflinePack:(id)sender {
- for (MGLOfflinePack *pack in self.offlinePacksArrayController.selectedObjects) {
- switch (pack.state) {
- case MGLOfflinePackStateComplete:
- {
- if ([pack.region isKindOfClass:[MGLTilePyramidOfflineRegion class]]) {
- MGLTilePyramidOfflineRegion *region = (MGLTilePyramidOfflineRegion *)pack.region;
- self.pendingVisibleCoordinateBounds = region.bounds;
- self.pendingMinimumZoomLevel = region.minimumZoomLevel;
- self.pendingMaximumZoomLevel = region.maximumZoomLevel;
- [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:NULL];
- }
- break;
- }
-
- case MGLOfflinePackStateInactive:
- [self watchOfflinePack:pack];
- [pack resume];
- break;
-
- case MGLOfflinePackStateActive:
- [pack suspend];
- [self unwatchOfflinePack:pack];
- break;
-
- default:
- break;
- }
- }
-}
-
-- (void)watchOfflinePack:(MGLOfflinePack *)pack {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidChangeProgress:) name:MGLOfflinePackProgressChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidReceiveError:) name:MGLOfflinePackErrorNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(offlinePackDidReceiveError:) name:MGLOfflinePackMaximumMapboxTilesReachedNotification object:nil];
-}
-
-- (void)unwatchOfflinePack:(MGLOfflinePack *)pack {
- [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:pack];
-}
-
-- (void)offlinePackDidChangeProgress:(NSNotification *)notification {
- MGLOfflinePack *pack = notification.object;
- if (pack.state == MGLOfflinePackStateComplete) {
- [[NSSound soundNamed:@"Glass"] play];
- }
-}
-
-- (void)offlinePackDidReceiveError:(NSNotification *)notification {
- [[NSSound soundNamed:@"Basso"] play];
-}
-
-#pragma mark Help methods
-
-- (IBAction)showShortcuts:(id)sender {
- NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Mapbox GL Help";
- alert.informativeText = @"\
-• To scroll, swipe with two fingers on a trackpad, or drag the cursor, or press the arrow keys.\n\
-• To zoom in, pinch two fingers apart on a trackpad, or double-click, or hold down Shift while dragging the cursor down, or hold down Option while pressing the up key.\n\
-• To zoom out, pinch two fingers together on a trackpad, or double-tap with two fingers on a trackpad, or double-tap on a mouse, or hold down Shift while dragging the cursor up, or hold down Option while pressing the down key.\n\
-• To rotate, move two fingers opposite each other in a circle on a trackpad, or hold down Option while dragging the cursor left and right, or hold down Option while pressing the left and right arrow keys.\n\
-• To tilt, hold down Option while dragging the cursor up and down.\n\
-• To drop a pin, click and hold.\
-";
- [alert runModal];
-}
-
-- (IBAction)showPreferences:(id)sender {
- [self.preferencesWindow makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)print:(id)sender {
- NSDocument *currentDocument = [NSDocumentController sharedDocumentController].currentDocument;
- if ([currentDocument isKindOfClass:[MapDocument class]]) {
- MGLMapView *mapView = [(MapDocument *)currentDocument mapView];
- [mapView print:sender];
- }
-}
-
-- (IBAction)openAccessTokenManager:(id)sender {
- [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.mapbox.com/studio/account/tokens/"]];
-}
-
-#pragma mark User interface validation
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
- if (menuItem.action == @selector(showShortcuts:)) {
- return YES;
- }
- if (menuItem.action == @selector(showPreferences:)) {
- return YES;
- }
- if (menuItem.action == @selector(showOfflinePacksPanel:)) {
- return YES;
- }
- if (menuItem.action == @selector(print:)) {
- return YES;
- }
- if (menuItem.action == @selector(delete:)) {
- return self.offlinePacksArrayController.selectedObjects.count;
- }
- return NO;
-}
-
-#pragma mark NSWindowDelegate methods
-
-- (void)windowWillClose:(NSNotification *)notification {
- NSWindow *window = notification.object;
- if (window == self.preferencesWindow) {
- [window makeFirstResponder:nil];
- }
-}
-
-@end
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png
deleted file mode 100644
index fbf35e5d61..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png
deleted file mode 100644
index e60680874a..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png
deleted file mode 100644
index 361198da92..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png
deleted file mode 100644
index f6bf78a4b4..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png
deleted file mode 100644
index e60680874a..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png
deleted file mode 100644
index e7c0271490..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png
deleted file mode 100644
index e919899269..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png
deleted file mode 100644
index 5035f60941..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png
deleted file mode 100644
index e7c0271490..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png
deleted file mode 100644
index a2e1dfd02b..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 068d0fbd00..0000000000
--- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "images" : [
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "AppIcon16x16.png",
- "scale" : "1x"
- },
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "AppIcon16x16@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "AppIcon32x32.png",
- "scale" : "1x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "AppIcon32x32@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "AppIcon128x128.png",
- "scale" : "1x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "AppIcon128x128@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "AppIcon256x256.png",
- "scale" : "1x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "AppIcon256x256@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "AppIcon512x512.png",
- "scale" : "1x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "AppIcon512x512@2x.png",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Contents.json b/platform/macos/app/Assets.xcassets/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/macos/app/Assets.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/Contents.json b/platform/macos/app/Assets.xcassets/Layers/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
deleted file mode 100644
index dc14d24448..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "background.pdf",
- "language-direction" : "left-to-right"
- },
- {
- "idiom" : "universal",
- "language-direction" : "right-to-left"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf b/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
deleted file mode 100644
index 95a50c1446..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
+++ /dev/null
@@ -1,69 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-x}Mj@ u
-] *I Hf1x ܋E?Oն ChgՓT>R2}̃7e7=y!^Epp$aC QeQavJ$6r\+6"uTwtȂ܄Cpoz>(@ \Q@Xx^o6f58KP::ۨv:DmEQu/z\';*U 2.޻2Up!ν5D>!PVQNvkhK:WEt1^9du.!Y c:Ox>1`,iDi(1^mc3ʸ`#(vKWt/Ѝ"5I7ag+vܧX1sփ!?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
-1070
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
deleted file mode 100644
index c924214fd9..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "circle.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
deleted file mode 100644
index fde79a19bd..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
+++ /dev/null
@@ -1,70 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-x]M
-1 9Ż1?''aRAf1 X)GK ANv_4Nܩ š% 3Z
-cr'QJ2Wp{t\dImW 44J
-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
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json
deleted file mode 100644
index c4802ebd1a..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "fill-extrusion.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf b/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf
deleted file mode 100644
index 44cc365862..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf
+++ /dev/null
@@ -1,72 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-xN0 }
-0q9y$$#@lB088MɒL:Cm?w?(Ԋ5P&jr _[yQ`9蔅O` L)|8߯yJ
-9>gD`@Suzױ܊%6҄d
-MGs#lpxrzzy@&Ks&yƬaPX? H1 C HfGV.W9gՖiƞ&+xcZO_i&3O&kt\`5–kՖ5;ʅpo!;d_e3uBzI[޴ev]9V& $
-endstream
-endobj
-4 0 obj
- 358
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 0.156863 /ca 0.156863 >>
- /a1 << /CA 1 /ca 1 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12 12 ]
- /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.8 (http://cairographics.org))
- /Producer (cairo 1.14.8 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000798 00000 n
-0000000472 00000 n
-0000000015 00000 n
-0000000450 00000 n
-0000000586 00000 n
-0000000863 00000 n
-0000000990 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-1042
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
deleted file mode 100644
index ea68330e70..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "fill.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
deleted file mode 100644
index ca7e4cc505..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json
deleted file mode 100644
index 0dcb85f12c..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "heatmap.pdf",
- "language-direction" : "left-to-right"
- },
- {
- "idiom" : "universal",
- "language-direction" : "right-to-left"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf b/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf
deleted file mode 100644
index 88195c3735..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json
deleted file mode 100644
index d4de2d3228..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "hillshade.pdf",
- "language-direction" : "left-to-right"
- },
- {
- "idiom" : "universal",
- "language-direction" : "right-to-left"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf b/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf
deleted file mode 100644
index bf409e708c..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf
+++ /dev/null
@@ -1,70 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-xeNA
-@ sv} xŃ(Vo"L0# jXˆ6w:!,P㒒hK灴a U18|= _?ݜ{YXS2یݮ*5/ﺠ>ݪ,
-endstream
-endobj
-4 0 obj
- 145
-endobj
-2 0 obj
-<<
- /ExtGState <<
- /a0 << /CA 1 /ca 1 >>
- /a1 << /CA 0.156863 /ca 0.156863 >>
- >>
->>
-endobj
-5 0 obj
-<< /Type /Page
- /Parent 1 0 R
- /MediaBox [ 0 0 12 12 ]
- /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.8 (http://cairographics.org))
- /Producer (cairo 1.14.8 (http://cairographics.org))
->>
-endobj
-7 0 obj
-<< /Type /Catalog
- /Pages 1 0 R
->>
-endobj
-xref
-0 8
-0000000000 65535 f
-0000000585 00000 n
-0000000259 00000 n
-0000000015 00000 n
-0000000237 00000 n
-0000000373 00000 n
-0000000650 00000 n
-0000000777 00000 n
-trailer
-<< /Size 8
- /Root 7 0 R
- /Info 6 0 R
->>
-startxref
-829
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
deleted file mode 100644
index ad4293958f..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "symbol.pdf"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- },
- "properties" : {
- "template-rendering-intent" : "template"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
deleted file mode 100644
index ce4aaa198e..0000000000
--- a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
+++ /dev/null
@@ -1,71 +0,0 @@
-%PDF-1.5
-%
-3 0 obj
-<< /Length 4 0 R
- /Filter /FlateDecode
->>
-stream
-x]A
-@ E9ſqIgR\EqqQ !'
-ua{ HXRLQ&~'/p#!ʎ26a0scR_CYr씪KFʖ9O׋.pN- yV
-yOh4
-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
-%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Radar/Contents.json b/platform/macos/app/Assets.xcassets/Radar/Contents.json
deleted file mode 100644
index da4a164c91..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json
deleted file mode 100644
index ea096b04b8..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_0.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png b/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png
deleted file mode 100644
index c304b619c4..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json
deleted file mode 100644
index a6a031ae2b..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_1.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png b/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png
deleted file mode 100644
index ed09fffbe1..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json
deleted file mode 100644
index d607dda298..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_2.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png b/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png
deleted file mode 100644
index fee630f863..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json
deleted file mode 100644
index 9a110068a1..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "southeast_radar_3.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png b/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png
deleted file mode 100644
index c4c7146afa..0000000000
--- a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png
+++ /dev/null
Binary files differ
diff --git a/platform/macos/app/Base.lproj/Localizable.strings b/platform/macos/app/Base.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/Base.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/Base.lproj/MainMenu.xib b/platform/macos/app/Base.lproj/MainMenu.xib
deleted file mode 100644
index 6f8f24ce99..0000000000
--- a/platform/macos/app/Base.lproj/MainMenu.xib
+++ /dev/null
@@ -1,982 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14269.14" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
- <dependencies>
- <deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14269.14"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <objects>
- <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
- <connections>
- <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
- </connections>
- </customObject>
- <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
- <customObject id="-3" userLabel="Application" customClass="NSObject">
- <connections>
- <outlet property="delegate" destination="Voe-Tx-rLC" id="z9N-Fm-MUP"/>
- </connections>
- </customObject>
- <customObject id="Voe-Tx-rLC" customClass="AppDelegate">
- <connections>
- <outlet property="offlinePacksArrayController" destination="dWe-R6-sRz" id="Ar5-xu-ABm"/>
- <outlet property="offlinePacksPanel" destination="Jjv-gs-Tx6" id="0vK-rR-3ZX"/>
- <outlet property="preferencesWindow" destination="UWc-yQ-qda" id="Ota-aT-Mz2"/>
- </connections>
- </customObject>
- <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
- <items>
- <menuItem title="Mapbox GL" id="1Xt-HY-uBw">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Mapbox GL" systemMenu="apple" id="uQy-DD-JDr">
- <items>
- <menuItem title="About Mapbox GL" id="5kV-Vb-QxS">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
- <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW">
- <connections>
- <action selector="showPreferences:" target="-1" id="Llx-Uy-HTS"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
- <menuItem title="Services" id="NMo-om-nkz">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
- <menuItem title="Hide Mapbox GL" keyEquivalent="h" id="Olw-nP-bQN">
- <connections>
- <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
- </connections>
- </menuItem>
- <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
- </connections>
- </menuItem>
- <menuItem title="Show All" id="Kd2-mp-pUS">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
- <menuItem title="Quit Mapbox GL" keyEquivalent="q" id="4sb-4s-VLi">
- <connections>
- <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="File" id="dMs-cI-mzQ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="File" id="bib-Uj-vzu">
- <items>
- <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
- <connections>
- <action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
- </connections>
- </menuItem>
- <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
- <connections>
- <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
- </connections>
- </menuItem>
- <menuItem title="Open Recent" id="tXI-mr-wws">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
- <items>
- <menuItem title="Clear Menu" id="vNY-rz-j42">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
- <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
- <connections>
- <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
- </connections>
- </menuItem>
- <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
- <connections>
- <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
- </connections>
- </menuItem>
- <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
- <connections>
- <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
- </connections>
- </menuItem>
- <menuItem title="Save Offline Pack…" id="UXB-sj-C7i">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="addOfflinePack:" target="-1" id="Usu-xO-QEx"/>
- </connections>
- </menuItem>
- <menuItem title="Revert to Saved" id="KaW-ft-85H">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="VwR-Dd-ah9"/>
- <menuItem title="Import…" id="DJk-k8-14Y">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="import:" target="-1" id="1Qm-l8-9Rn"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="w4w-CJ-fv2"/>
- <menuItem title="Export Image…" id="vjX-0E-kLO">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="takeSnapshot:" target="-1" id="H06-sU-n4U"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
- <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
- <connections>
- <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
- </connections>
- </menuItem>
- <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
- <connections>
- <action selector="print:" target="Voe-Tx-rLC" id="rXg-Pd-AG8"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Edit" id="5QF-Oa-p0T">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Edit" id="W48-6f-4Dl">
- <items>
- <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
- <connections>
- <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
- </connections>
- </menuItem>
- <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
- <connections>
- <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
- <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
- <connections>
- <action selector="cut:" target="-1" id="YJe-68-I9s"/>
- </connections>
- </menuItem>
- <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
- <connections>
- <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
- </connections>
- </menuItem>
- <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
- <connections>
- <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
- </connections>
- </menuItem>
- <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
- </connections>
- </menuItem>
- <menuItem title="Delete" id="pa3-QI-u2k">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
- </connections>
- </menuItem>
- <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
- <connections>
- <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
- <menuItem title="Find" id="4EN-yA-p0u">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Find" id="1b7-l0-nxx">
- <items>
- <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
- </connections>
- </menuItem>
- <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
- </connections>
- </menuItem>
- <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
- </connections>
- </menuItem>
- <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
- </connections>
- </menuItem>
- <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
- <connections>
- <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
- </connections>
- </menuItem>
- <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
- <connections>
- <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
- <items>
- <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
- <connections>
- <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
- </connections>
- </menuItem>
- <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
- <connections>
- <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
- <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
- </connections>
- </menuItem>
- <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
- </connections>
- </menuItem>
- <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Substitutions" id="9ic-FL-obx">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
- <items>
- <menuItem title="Show Substitutions" id="z6F-FW-3nz">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
- <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
- </connections>
- </menuItem>
- <menuItem title="Smart Quotes" id="hQb-2v-fYv">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
- </connections>
- </menuItem>
- <menuItem title="Smart Dashes" id="rgM-f4-ycn">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
- </connections>
- </menuItem>
- <menuItem title="Smart Links" id="cwL-P1-jid">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
- </connections>
- </menuItem>
- <menuItem title="Data Detectors" id="tRr-pd-1PS">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
- </connections>
- </menuItem>
- <menuItem title="Text Replacement" id="HFQ-gK-NFA">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Transformations" id="2oI-Rn-ZJC">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
- <items>
- <menuItem title="Make Upper Case" id="vmV-6d-7jI">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
- </connections>
- </menuItem>
- <menuItem title="Make Lower Case" id="d9M-CD-aMd">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
- </connections>
- </menuItem>
- <menuItem title="Capitalize" id="UEZ-Bs-lqG">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Speech" id="xrE-MZ-jX0">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
- <items>
- <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
- </connections>
- </menuItem>
- <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="View" id="H8h-7b-M4v">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="View" id="HyV-fh-RgO">
- <items>
- <menuItem title="Streets" state="on" tag="1" keyEquivalent="1" id="17N-yz-NNo">
- <connections>
- <action selector="showStyle:" target="-1" id="BGu-va-ftr"/>
- </connections>
- </menuItem>
- <menuItem title="Outdoors" tag="2" keyEquivalent="2" id="BBa-Qa-SQr">
- <connections>
- <action selector="showStyle:" target="-1" id="sQ3-b6-G1A"/>
- </connections>
- </menuItem>
- <menuItem title="Light" tag="3" keyEquivalent="3" id="HWe-7u-UVJ">
- <connections>
- <action selector="showStyle:" target="-1" id="jMN-oR-sbZ"/>
- </connections>
- </menuItem>
- <menuItem title="Dark" tag="4" keyEquivalent="4" id="6HI-q6-AeV">
- <connections>
- <action selector="showStyle:" target="-1" id="xgf-Sq-eJw"/>
- </connections>
- </menuItem>
- <menuItem title="Satellite" tag="5" keyEquivalent="5" id="h0J-5X-kgF">
- <connections>
- <action selector="showStyle:" target="-1" id="YyE-2C-Vhj"/>
- </connections>
- </menuItem>
- <menuItem title="Satellite Streets" tag="6" keyEquivalent="6" id="9BL-00-HFt">
- <connections>
- <action selector="showStyle:" target="-1" id="NTT-Y1-EqU"/>
- </connections>
- </menuItem>
- <menuItem title="Custom Style…" id="L0h-86-2cU">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="chooseCustomStyle:" target="-1" id="QJF-fM-Ty3"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="BMF-ml-0Bd"/>
- <menuItem title="Zoom In" keyEquivalent="+" id="W82-WO-xvB">
- <connections>
- <action selector="zoomIn:" target="-1" id="g33-vK-zUu"/>
- </connections>
- </menuItem>
- <menuItem title="Zoom Out" keyEquivalent="-" id="j7h-PY-edM">
- <connections>
- <action selector="zoomOut:" target="-1" id="0pP-tO-9ex"/>
- </connections>
- </menuItem>
- <menuItem title="Snap to North" keyEquivalent="" id="Zss-3w-wkz">
- <connections>
- <action selector="snapToNorth:" target="-1" id="Ayq-GE-Lb5"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="mkP-YN-G0w"/>
- <menuItem title="Reload" keyEquivalent="r" id="JvI-nv-KaE">
- <connections>
- <action selector="reload:" target="-1" id="xkh-9F-mOe"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="CyM-Wv-Bnc"/>
- <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <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>
- <menuItem isSeparatorItem="YES" id="8aO-Nm-fxF"/>
- <menuItem title="Labels In" id="M7v-B1-vo3">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Labels In" id="gOc-5u-4v5">
- <items>
- <menuItem title="Local Language" id="hTL-wF-DEs">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="setLabelLanguage:" target="-1" id="Zc4-TL-Cxe"/>
- </connections>
- </menuItem>
- <menuItem title="Preferred Language" tag="1" id="PkP-Ne-ISX">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="setLabelLanguage:" target="-1" id="7Io-iF-xf8"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="qTh-Hu-dGV"/>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Debug" id="ZNC-5r-eBw">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Debug" id="McE-ka-r79">
- <items>
- <menuItem title="Show Tile Boundaries" keyEquivalent="b" id="rDE-dG-rTR">
- <connections>
- <action selector="toggleTileBoundaries:" target="-1" id="LAO-88-F7h"/>
- </connections>
- </menuItem>
- <menuItem title="Show Tile Info" keyEquivalent="i" id="LoH-qD-kb0">
- <connections>
- <action selector="toggleTileInfo:" target="-1" id="KCn-0G-V87"/>
- </connections>
- </menuItem>
- <menuItem title="Show Tile Timestamps" keyEquivalent="t" id="bY0-2E-LZ7">
- <connections>
- <action selector="toggleTileTimestamps:" target="-1" id="tBs-2N-KEG"/>
- </connections>
- </menuItem>
- <menuItem title="Show Collision Boxes" keyEquivalent="C" id="Y0b-3K-mJE">
- <connections>
- <action selector="toggleCollisionBoxes:" target="-1" id="EYa-7n-iWZ"/>
- </connections>
- </menuItem>
- <menuItem title="Show Overdraw Visualization" keyEquivalent="O" id="hSX-Be-8xC">
- <connections>
- <action selector="toggleOverdrawVisualization:" target="-1" id="usj-ug-upt"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="2EG-Hp-4FA"/>
- <menuItem title="Color Buffer" keyEquivalent="c" id="Eao-WE-BWz">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="showColorBuffer:" target="-1" id="Nuq-Qs-98g"/>
- </connections>
- </menuItem>
- <menuItem title="Stencil Buffer" keyEquivalent="s" id="LlS-Yh-RkN">
- <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
- <connections>
- <action selector="showStencilBuffer:" target="-1" id="WkN-t9-Mpv"/>
- </connections>
- </menuItem>
- <menuItem title="Depth Buffer" keyEquivalent="d" id="CDq-70-oPa">
- <modifierMask key="keyEquivalentModifierMask" control="YES" option="YES" command="YES"/>
- <connections>
- <action selector="showDepthBuffer:" target="-1" id="h7r-eM-ZEu"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="dYw-bb-tr1"/>
- <menuItem title="Show Tooltips on Dropped Pins" id="uir-Rx-zmw">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleShowsToolTipsOnDroppedPins:" target="-1" id="1YC-Co-QQ6"/>
- </connections>
- </menuItem>
- <menuItem title="Use Random Cursors for Dropped Pins" id="ZTk-lc-Jgu">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="toggleRandomizesCursorsOnDroppedPins:" target="-1" id="Mpw-b8-oub"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="Sl5-nE-kHd"/>
- <menuItem title="Blanket Map With Pins" keyEquivalent="." id="LMZ-oe-Ngh">
- <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
- <connections>
- <action selector="dropManyPins:" target="-1" id="Rtv-8N-3Z8"/>
- </connections>
- </menuItem>
- <menuItem title="Add Polygon and Polyline" keyEquivalent="l" id="DVr-vT-lpe">
- <connections>
- <action selector="drawPolygonAndPolyLineAnnotations:" target="-1" id="EhT-CB-gee"/>
- </connections>
- </menuItem>
- <menuItem title="Add Animated Annotation" id="Etf-JN-Aoc">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="drawAnimatedAnnotation:" target="-1" id="CYM-WB-s97"/>
- </connections>
- </menuItem>
- <menuItem title="Select an Offscreen Point Annotation" id="Xy2-Cc-RUB">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="selectOffscreenPointAnnotation:" target="-1" id="Fhm-l3-G6h"/>
- </connections>
- </menuItem>
- <menuItem title="Show All Annotations" keyEquivalent="A" id="yMj-uM-8SN">
- <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
- <connections>
- <action selector="showAllAnnotations:" target="-1" id="ahr-OR-Em2"/>
- </connections>
- </menuItem>
- <menuItem title="Remove All Annotations" id="6rC-68-vk0">
- <string key="keyEquivalent" base64-UTF8="YES">
-CA
-</string>
- <connections>
- <action selector="removeAllAnnotations:" target="-1" id="6v3-0E-LsR"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="cbI-Nd-MAp"/>
- <menuItem title="Add Lime Green Layer" id="UWY-vl-t2m">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="insertCustomStyleLayer:" target="-1" id="LE5-lz-kx3"/>
- </connections>
- </menuItem>
- <menuItem title="Add Animated Image Source" id="tjA-fT-GbA">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="addAnimatedImageSource:" target="-1" id="TuN-Pa-hTG"/>
- </connections>
- </menuItem>
- <menuItem title="Add Graticule" id="Msk-p2-Lwt">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="insertGraticuleLayer:" target="-1" id="LE5-lz-kx4"/>
- </connections>
- </menuItem>
- <menuItem title="Enhance Terrain" id="2ZT-uE-kUR">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="enhanceTerrain:" target="-1" id="TXX-Yv-ZY1"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="wQq-Mx-QY0"/>
- <menuItem title="Manipulate Style" id="Zli-T5-cTQ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="manipulateStyle:" target="-1" id="9Np-3n-FXK"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="vMh-WE-Frt"/>
- <menuItem title="Start World Tour" id="VFo-Jh-2sw">
- <modifierMask key="keyEquivalentModifierMask" option="YES"/>
- <connections>
- <action selector="startWorldTour:" target="-1" id="66Y-Gm-Yn1"/>
- </connections>
- </menuItem>
- <menuItem title="Stop World Tour" id="Pa8-qU-xfr">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="stopWorldTour:" target="-1" id="aq0-7t-AGi"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Window" id="aUF-d1-5bR">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
- <items>
- <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
- <connections>
- <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
- </connections>
- </menuItem>
- <menuItem title="Zoom" keyEquivalent="z" id="R4o-n2-Eq4">
- <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
- <connections>
- <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="Uix-g7-fAt"/>
- <menuItem title="Offline Packs" id="YW3-jR-knj">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="showOfflinePacksPanel:" target="Voe-Tx-rLC" id="kj9-ht-KmF"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
- <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- <menuItem title="Help" id="wpr-3q-Mcd">
- <modifierMask key="keyEquivalentModifierMask"/>
- <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
- <items>
- <menuItem title="Mapbox GL Help" keyEquivalent="?" id="FKE-Sm-Kum">
- <connections>
- <action selector="showShortcuts:" target="-1" id="hNZ-sm-X2q"/>
- </connections>
- </menuItem>
- <menuItem isSeparatorItem="YES" id="EpY-wQ-SjH"/>
- <menuItem title="Improve This Map" id="xu5-WN-qYK">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="giveFeedback:" target="-1" id="cil-i9-r39"/>
- </connections>
- </menuItem>
- </items>
- </menu>
- </menuItem>
- </items>
- </menu>
- <window title="Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="Preferences" animationBehavior="default" id="UWc-yQ-qda">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="109" y="131" width="350" height="84"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
- <view key="contentView" id="eA4-n3-qPe">
- <rect key="frame" x="0.0" y="0.0" width="350" height="84"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0IK-AW-Gg3">
- <rect key="frame" x="18" y="45" width="89" height="17"/>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Access token:" id="Ptd-FI-M5A">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <accessibilityConnection property="link" destination="7sb-sf-oJU" id="U0t-jC-oQ7"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7sb-sf-oJU">
- <rect key="frame" x="113" y="42" width="197" height="22"/>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="jlV-TC-NUv">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="45S-yT-WUN" name="value" keyPath="values.MGLMapboxAccessToken" id="iJE-S2-ALY"/>
- </connections>
- </textField>
- <button translatesAutoresizingMaskIntoConstraints="NO" id="c3S-LC-PoX">
- <rect key="frame" x="318" y="47" width="12" height="12"/>
- <constraints>
- <constraint firstAttribute="width" constant="12" id="M3J-pU-gKn"/>
- </constraints>
- <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSFollowLinkFreestandingTemplate" imagePosition="only" alignment="center" controlSize="small" imageScaling="proportionallyUpOrDown" inset="2" id="38x-37-Ay0">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <action selector="openAccessTokenManager:" target="-1" id="1LX-4G-roC"/>
- </connections>
- </button>
- <button translatesAutoresizingMaskIntoConstraints="NO" id="7IZ-zl-iT1">
- <rect key="frame" x="18" y="18" width="109" height="18"/>
- <buttonCell key="cell" type="check" title="Scroll to zoom" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="hVR-66-JSh">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <binding destination="45S-yT-WUN" name="value" keyPath="values.MGLScrollWheelZoomsMapView" id="2AZ-bk-DM5"/>
- </connections>
- </button>
- </subviews>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="c3S-LC-PoX" secondAttribute="trailing" constant="20" symbolic="YES" id="7QU-Jd-Rg6"/>
- <constraint firstItem="c3S-LC-PoX" firstAttribute="top" secondItem="eA4-n3-qPe" secondAttribute="top" constant="25" id="JOS-HU-27c"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="leading" secondItem="0IK-AW-Gg3" secondAttribute="trailing" constant="8" symbolic="YES" id="SS6-VQ-sLK"/>
- <constraint firstItem="0IK-AW-Gg3" firstAttribute="leading" secondItem="eA4-n3-qPe" secondAttribute="leading" constant="20" symbolic="YES" id="TYG-io-qfV"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="top" secondItem="eA4-n3-qPe" secondAttribute="top" constant="20" symbolic="YES" id="Vzb-q8-ecP"/>
- <constraint firstItem="7IZ-zl-iT1" firstAttribute="leading" secondItem="0IK-AW-Gg3" secondAttribute="leading" id="aIY-WX-AW9"/>
- <constraint firstItem="7IZ-zl-iT1" firstAttribute="top" secondItem="7sb-sf-oJU" secondAttribute="bottom" constant="8" symbolic="YES" id="ide-24-GqL"/>
- <constraint firstItem="c3S-LC-PoX" firstAttribute="leading" secondItem="7sb-sf-oJU" secondAttribute="trailing" constant="8" symbolic="YES" id="pjl-9u-IgM"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="baseline" secondItem="0IK-AW-Gg3" secondAttribute="baseline" id="qIY-Jr-9Ws"/>
- <constraint firstAttribute="bottom" secondItem="7IZ-zl-iT1" secondAttribute="bottom" constant="20" symbolic="YES" id="wng-pn-VIz"/>
- <constraint firstItem="7sb-sf-oJU" firstAttribute="centerY" secondItem="c3S-LC-PoX" secondAttribute="centerY" id="zej-gw-fC0"/>
- </constraints>
- </view>
- <connections>
- <outlet property="delegate" destination="Voe-Tx-rLC" id="PNO-Pp-jOX"/>
- <outlet property="initialFirstResponder" destination="7sb-sf-oJU" id="UZe-di-dnA"/>
- </connections>
- <point key="canvasLocation" x="754" y="221"/>
- </window>
- <userDefaultsController representsSharedInstance="YES" id="45S-yT-WUN"/>
- <window title="Offline Packs" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="MBXOfflinePacksPanel" animationBehavior="default" id="Jjv-gs-Tx6" customClass="NSPanel">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="830" y="430" width="400" height="300"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
- <view key="contentView" id="8ha-hw-zOD">
- <rect key="frame" x="0.0" y="0.0" width="400" height="300"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q8b-0e-dLv">
- <rect key="frame" x="-1" y="20" width="402" height="281"/>
- <clipView key="contentView" id="J9U-Yx-o2S">
- <rect key="frame" x="1" y="0.0" width="400" height="265"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" autosaveColumns="NO" headerView="MAZ-Iq-hBi" id="Ato-Vu-HYT">
- <rect key="frame" x="0.0" y="0.0" width="423" height="242"/>
- <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="10" maxWidth="3.4028234663852886e+38" id="xtw-hQ-8C5" userLabel="State">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <imageCell key="dataCell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="edU-Yw-20f"/>
- <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
- <connections>
- <binding destination="dWe-R6-sRz" name="value" keyPath="arrangedObjects.stateImage" id="2wd-1J-TZt"/>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="116" minWidth="40" maxWidth="1000" id="2hD-LN-h0L">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Name">
- <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="oys-QZ-34I">
- <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="dWe-R6-sRz" name="value" keyPath="arrangedObjects.context" id="NtD-s5-ZUq">
- <dictionary key="options">
- <string key="NSValueTransformerName">OfflinePackNameValueTransformer</string>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="50" minWidth="40" maxWidth="1000" id="pkI-c7-xoD">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Downloaded Resources">
- <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="WfC-qb-HsW">
- <numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="sNm-Qn-ne6"/>
- <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="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfResourcesCompleted" id="mu6-Jg-GiU"/>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="50" minWidth="10" maxWidth="3.4028234663852886e+38" id="Rrd-A9-jqc">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Total Resources">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="mHy-qJ-rOA">
- <numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="kyx-ZP-OBH"/>
- <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="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfResourcesExpected" id="mh2-k0-vvB"/>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="50" minWidth="40" maxWidth="1000" id="kCO-Cd-bQt">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Downloaded Tiles">
- <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="hUl-2C-sHr">
- <numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="KjY-J1-gSm"/>
- <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="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfTilesCompleted" id="XHn-D7-zqf">
- <dictionary key="options">
- <bool key="NSConditionallySetsEditable" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="60" minWidth="10" maxWidth="3.4028234663852886e+38" id="WO5-Ci-HgG">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Downloaded Tiles Size">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="cKy-kF-5Pv">
- <byteCountFormatter key="formatter" allowsNonnumericFormatting="NO" includesActualByteCount="YES" id="bHS-Ch-aXU"/>
- <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="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfTileBytesCompleted" id="Xpk-BZ-Xcr">
- <dictionary key="options">
- <bool key="NSConditionallySetsEditable" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </tableColumn>
- <tableColumn editable="NO" width="60" minWidth="10" maxWidth="3.4028234663852886e+38" id="h7m-6l-KaS">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Downloaded Resources Size">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- </tableHeaderCell>
- <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="701-bg-k6L">
- <byteCountFormatter key="formatter" allowsNonnumericFormatting="NO" includesActualByteCount="YES" id="IXV-J9-sP3"/>
- <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="dWe-R6-sRz" name="value" keyPath="arrangedObjects.countOfBytesCompleted" id="Zsa-Na-yFN"/>
- </connections>
- </tableColumn>
- </tableColumns>
- <connections>
- <action trigger="doubleAction" selector="chooseOfflinePack:" target="-1" id="pUN-eT-zRT"/>
- </connections>
- </tableView>
- </subviews>
- </clipView>
- <scroller key="horizontalScroller" verticalHuggingPriority="750" horizontal="YES" id="QLr-6P-Ogs">
- <rect key="frame" x="1" y="265" width="400" height="15"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="q0K-eE-mzL">
- <rect key="frame" x="224" y="17" width="15" height="102"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- <tableHeaderView key="headerView" id="MAZ-Iq-hBi">
- <rect key="frame" x="0.0" y="0.0" width="423" height="23"/>
- <autoresizingMask key="autoresizingMask"/>
- </tableHeaderView>
- </scrollView>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wzf-ce-Spm">
- <rect key="frame" x="0.0" y="-1" width="21" height="21"/>
- <constraints>
- <constraint firstAttribute="width" constant="21" id="5ST-tY-8Ph"/>
- </constraints>
- <buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSAddTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" imageScaling="proportionallyDown" inset="2" id="sew-F7-i5T">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <action selector="addOfflinePack:" target="-1" id="SN0-PM-HoU"/>
- </connections>
- </button>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7L7-hr-zId">
- <rect key="frame" x="20" y="0.0" width="21" height="19"/>
- <constraints>
- <constraint firstAttribute="width" constant="21" id="JYb-AF-8gZ"/>
- </constraints>
- <buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" lineBreakMode="truncatingTail" state="on" imageScaling="proportionallyDown" inset="2" id="oTF-3m-6qT">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- <string key="keyEquivalent" base64-UTF8="YES">
-CA
-</string>
- </buttonCell>
- <connections>
- <action selector="delete:" target="-1" id="EGL-bf-yUD"/>
- </connections>
- </button>
- </subviews>
- <constraints>
- <constraint firstItem="7L7-hr-zId" firstAttribute="centerY" secondItem="wzf-ce-Spm" secondAttribute="centerY" id="7TI-6w-bf1"/>
- <constraint firstAttribute="bottom" secondItem="Q8b-0e-dLv" secondAttribute="bottom" constant="20" symbolic="YES" id="DZa-ly-bhV"/>
- <constraint firstItem="wzf-ce-Spm" firstAttribute="top" secondItem="Q8b-0e-dLv" secondAttribute="bottom" id="LhK-5z-CQA"/>
- <constraint firstItem="Q8b-0e-dLv" firstAttribute="leading" secondItem="8ha-hw-zOD" secondAttribute="leading" constant="-1" id="Oyo-ch-rZo"/>
- <constraint firstAttribute="bottom" secondItem="7L7-hr-zId" secondAttribute="bottom" id="TtY-j1-T5h"/>
- <constraint firstItem="Q8b-0e-dLv" firstAttribute="top" secondItem="8ha-hw-zOD" secondAttribute="top" constant="-1" id="WDk-Ig-Grr"/>
- <constraint firstAttribute="trailing" secondItem="Q8b-0e-dLv" secondAttribute="trailing" constant="-1" id="hHf-rd-Wcv"/>
- <constraint firstItem="7L7-hr-zId" firstAttribute="leading" secondItem="8ha-hw-zOD" secondAttribute="leading" constant="20" symbolic="YES" id="iKJ-ph-ACS"/>
- <constraint firstAttribute="bottom" secondItem="wzf-ce-Spm" secondAttribute="bottom" constant="-1" id="jFV-Xi-fWr"/>
- <constraint firstItem="wzf-ce-Spm" firstAttribute="leading" secondItem="8ha-hw-zOD" secondAttribute="leading" id="kJt-oJ-72R"/>
- </constraints>
- </view>
- <point key="canvasLocation" x="720" y="317"/>
- </window>
- <arrayController objectClassName="MGLOfflinePack" editable="NO" avoidsEmptySelection="NO" id="dWe-R6-sRz" userLabel="Offline Packs Array Controller">
- <declaredKeys>
- <string>context</string>
- <string>countOfResourcesCompleted</string>
- <string>countOfResourcesExpected</string>
- <string>countOfTilesCompleted</string>
- <string>countOfTileBytesCompleted</string>
- <string>countOfBytesCompleted</string>
- <string>stateImage</string>
- </declaredKeys>
- </arrayController>
- </objects>
- <resources>
- <image name="NSAddTemplate" width="11" height="11"/>
- <image name="NSFollowLinkFreestandingTemplate" width="14" height="14"/>
- <image name="NSRemoveTemplate" width="11" height="11"/>
- </resources>
-</document>
diff --git a/platform/macos/app/Base.lproj/MapDocument.xib b/platform/macos/app/Base.lproj/MapDocument.xib
deleted file mode 100644
index 084bb76adf..0000000000
--- a/platform/macos/app/Base.lproj/MapDocument.xib
+++ /dev/null
@@ -1,497 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
- <dependencies>
- <deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <objects>
- <customObject id="-2" userLabel="File's Owner" customClass="MapDocument">
- <connections>
- <outlet property="addOfflinePackWindow" destination="NmZ-Tf-v2O" id="ZPE-9L-vPJ"/>
- <outlet property="includesIdeographicGlyphsBox" destination="Jbt-z6-eg9" id="4M4-jN-qxP"/>
- <outlet property="mapView" destination="q4d-kF-8Hi" id="7hI-dS-A5R"/>
- <outlet property="mapViewContextMenu" destination="XbX-6a-Mgy" id="YD0-1r-5N2"/>
- <outlet property="maximumOfflinePackZoomLevelField" destination="5sj-XD-neD" id="Edu-lU-3j9"/>
- <outlet property="maximumOfflinePackZoomLevelFormatter" destination="4cD-xh-teT" id="IOh-5e-4FO"/>
- <outlet property="minimumOfflinePackZoomLevelField" destination="Xo1-tZ-WQ6" id="ETh-er-ReB"/>
- <outlet property="minimumOfflinePackZoomLevelFormatter" destination="LGN-Et-RKY" id="Klk-iF-fM0"/>
- <outlet property="offlinePackNameField" destination="tUU-DX-RxU" id="r7P-uL-4qo"/>
- <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>
- <string>name</string>
- <string>reversedLayers</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.reversedLayers" id="wtL-d8-GNd"/>
- </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="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="642" height="480"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <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 misplaced="YES" 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" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="NDx-rn-TLj">
- <rect key="frame" x="0.0" y="464" width="163" height="16"/>
- <autoresizingMask key="autoresizingMask"/>
- </scroller>
- <scroller key="verticalScroller" hidden="YES" wantsLayer="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 misplaced="YES" 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="dbC-MC-CAy"/>
- </connections>
- </splitView>
- </subviews>
- <constraints>
- <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">
- <allowedToolbarItems>
- <toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="bld-8W-Wgg"/>
- <toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="z4l-5x-MzK"/>
- <toolbarItem implicitItemIdentifier="2CB58C0A-7B95-4233-8DD3-F94BFE7D3061" label="Share" paletteLabel="Share" image="NSShareTemplate" id="XJT-Ho-tuZ" customClass="ValidatedToolbarItem">
- <nil key="toolTip"/>
- <size key="minSize" width="40" height="32"/>
- <size key="maxSize" width="48" height="32"/>
- <button key="view" verticalHuggingPriority="750" id="y6e-ev-rVL">
- <rect key="frame" x="0.0" y="14" width="48" height="32"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSShareTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="TBK-Ra-XzZ">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- </button>
- <connections>
- <action selector="showShareMenu:" target="-1" id="fCB-HP-iou"/>
- </connections>
- </toolbarItem>
- <toolbarItem implicitItemIdentifier="BA3542AF-D63A-4893-9CC7-8F67EF2E82B0" label="Style" paletteLabel="Style" id="u23-0z-Otl" customClass="ValidatedToolbarItem">
- <nil key="toolTip"/>
- <size key="minSize" width="100" height="26"/>
- <size key="maxSize" width="150" height="26"/>
- <popUpButton key="view" verticalHuggingPriority="750" id="Tzm-Cy-dQg">
- <rect key="frame" x="0.0" y="14" width="150" height="26"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <popUpButtonCell key="cell" type="roundTextured" title="Streets" bezelStyle="texturedRounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="border" tag="1" imageScaling="proportionallyDown" inset="2" selectedItem="wvt-tP-O3a" id="3PJ-qK-Oh3">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="menu"/>
- <menu key="menu" id="xf3-qk-IhF">
- <items>
- <menuItem title="Streets" state="on" tag="1" id="wvt-tP-O3a"/>
- <menuItem title="Outdoors" tag="2" id="RkE-lp-fL9"/>
- <menuItem title="Light" tag="3" id="R4X-kt-HHb"/>
- <menuItem title="Dark" tag="4" id="jUC-5X-0Zx">
- <modifierMask key="keyEquivalentModifierMask"/>
- </menuItem>
- <menuItem title="Satellite" tag="5" id="CTe-e2-o42">
- <modifierMask key="keyEquivalentModifierMask"/>
- </menuItem>
- <menuItem title="Satellite Streets" tag="6" id="7ly-oA-0ND">
- <modifierMask key="keyEquivalentModifierMask"/>
- </menuItem>
- </items>
- </menu>
- </popUpButtonCell>
- </popUpButton>
- <connections>
- <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"/>
- </defaultToolbarItems>
- <connections>
- <outlet property="delegate" destination="-2" id="V9D-gS-Tvu"/>
- </connections>
- </toolbar>
- <connections>
- <binding destination="-2" name="displayPatternTitle1" keyPath="mapView.centerCoordinate" id="p1k-yo-4Nb">
- <dictionary key="options">
- <string key="NSDisplayPattern">%{title1}@ @ %{title2}@</string>
- <string key="NSValueTransformerName">LocationCoordinate2DTransformer</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="displayPatternTitle2" keyPath="mapView.zoomLevel" previousBinding="p1k-yo-4Nb" id="HBB-y3-89c">
- <dictionary key="options">
- <string key="NSDisplayPattern">%{title1}@ @ %{title2}@</string>
- </dictionary>
- </binding>
- <outlet property="delegate" destination="-2" id="HEo-Qf-o6o"/>
- </connections>
- </window>
- <menu title="Map View" id="XbX-6a-Mgy">
- <items>
- <menuItem title="Drop Pin" id="KiK-wh-YwN">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="dropPin:" target="-1" id="ZH6-Tj-IJT"/>
- </connections>
- </menuItem>
- <menuItem title="Remove Pin" id="Zhx-30-VmE">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="removePin:" target="-1" id="w0R-0B-7mG"/>
- </connections>
- </menuItem>
- <menuItem title="Select Features" id="za5-bY-mdf">
- <modifierMask key="keyEquivalentModifierMask"/>
- <connections>
- <action selector="selectFeatures:" target="-1" id="ikt-CZ-yZT"/>
- </connections>
- </menuItem>
- </items>
- <connections>
- <outlet property="delegate" destination="-2" id="oHe-ZP-lyc"/>
- </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>
- <window title="Add Offline Pack" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="NmZ-Tf-v2O">
- <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
- <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
- <rect key="contentRect" x="109" y="131" width="392" height="221"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
- <view key="contentView" id="Aqq-bl-feU">
- <rect key="frame" x="0.0" y="0.0" width="392" height="221"/>
- <autoresizingMask key="autoresizingMask"/>
- <subviews>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Xjw-df-oAz">
- <rect key="frame" x="98" y="184" width="276" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" title="Add offline pack" id="Iec-RB-iqn">
- <font key="font" metaFont="systemBold"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sui-dp-hbb">
- <rect key="frame" x="98" y="107" width="44" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="Name:" id="2El-Zw-T6E">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="D3l-hX-2Dh">
- <rect key="frame" x="98" y="134" width="276" height="42"/>
- <textFieldCell key="cell" selectable="YES" title="Mapbox GL will download all the resources needed for viewing the currently visible coordinate bounds in the current style." id="3Gw-Zy-sBT">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tUU-DX-RxU">
- <rect key="frame" x="148" y="104" width="224" height="22"/>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="lwQ-N1-PTI">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <outlet property="nextKeyView" destination="Xo1-tZ-WQ6" id="VIu-TG-LQu"/>
- </connections>
- </textField>
- <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p5T-3H-wqL">
- <rect key="frame" x="20" y="137" width="64" height="64"/>
- <constraints>
- <constraint firstAttribute="height" constant="64" id="2Xy-pC-rE3"/>
- <constraint firstAttribute="width" constant="64" id="SWY-Rg-9R8"/>
- </constraints>
- <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSApplicationIcon" id="cww-fO-sNX"/>
- </imageView>
- <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Xo1-tZ-WQ6">
- <rect key="frame" x="148" y="78" width="96" height="22"/>
- <constraints>
- <constraint firstAttribute="width" constant="96" id="8Rw-FU-HGV"/>
- </constraints>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="g7z-bq-I00">
- <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="z#,##0" numberStyle="decimal" allowsFloats="NO" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="LGN-Et-RKY">
- <real key="minimum" value="0.0"/>
- </numberFormatter>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <outlet property="nextKeyView" destination="5sj-XD-neD" id="90r-pR-v8j"/>
- </connections>
- </textField>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8r0-F0-e5i">
- <rect key="frame" x="250" y="81" width="20" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="to:" id="RBS-Uj-AVT">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5sj-XD-neD">
- <rect key="frame" x="276" y="78" width="96" height="22"/>
- <constraints>
- <constraint firstAttribute="width" constant="96" id="faj-tE-bfc"/>
- </constraints>
- <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="dUq-Vg-vgQ">
- <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="z#,##0" numberStyle="decimal" allowsFloats="NO" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="4cD-xh-teT">
- <real key="minimum" value="0.0"/>
- </numberFormatter>
- <font key="font" metaFont="system"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <outlet property="nextKeyView" destination="Jbt-z6-eg9" id="273-nM-wgO"/>
- </connections>
- </textField>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jbt-z6-eg9">
- <rect key="frame" x="98" y="54" width="276" height="18"/>
- <buttonCell key="cell" type="check" title="Include CJK characters" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="whL-VW-8fY">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="system"/>
- </buttonCell>
- <connections>
- <outlet property="nextKeyView" destination="tUU-DX-RxU" id="bQK-xN-9lx"/>
- </connections>
- </button>
- <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hhq-J9-mzB">
- <rect key="frame" x="98" y="81" width="44" height="17"/>
- <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="From:" id="fkO-YX-Yzt">
- <font key="font" metaFont="system"/>
- <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <button verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="EyW-0r-iV7">
- <rect key="frame" x="313" y="13" width="65" height="32"/>
- <buttonCell key="cell" type="push" title="Add" bezelStyle="rounded" alignment="center" borderStyle="border" tag="1" imageScaling="proportionallyDown" inset="2" id="5xR-IX-Qnp">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- <string key="keyEquivalent" base64-UTF8="YES">
-DQ
-</string>
- </buttonCell>
- <connections>
- <action selector="confirmAddingOfflinePack:" target="-2" id="7ic-hp-A2O"/>
- </connections>
- </button>
- <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ggP-hg-92n">
- <rect key="frame" x="231" y="13" width="82" height="32"/>
- <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="L4F-7l-Wwq">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="system"/>
- <string key="keyEquivalent" base64-UTF8="YES">
-Gw
-</string>
- </buttonCell>
- <connections>
- <action selector="confirmAddingOfflinePack:" target="-2" id="Ljo-bK-4BU"/>
- </connections>
- </button>
- </subviews>
- <constraints>
- <constraint firstItem="hhq-J9-mzB" firstAttribute="firstBaseline" secondItem="Xo1-tZ-WQ6" secondAttribute="firstBaseline" id="0Rv-Ze-u9B"/>
- <constraint firstAttribute="trailing" secondItem="Xjw-df-oAz" secondAttribute="trailing" constant="20" id="0gu-PF-adU"/>
- <constraint firstItem="p5T-3H-wqL" firstAttribute="top" secondItem="Aqq-bl-feU" secondAttribute="top" constant="20" id="2bA-hD-M6H"/>
- <constraint firstItem="ggP-hg-92n" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Aqq-bl-feU" secondAttribute="leading" constant="20" symbolic="YES" id="493-sg-uf0"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="top" secondItem="tUU-DX-RxU" secondAttribute="bottom" constant="4" id="4Ql-yp-7Kv"/>
- <constraint firstAttribute="bottom" secondItem="EyW-0r-iV7" secondAttribute="bottom" constant="20" id="7cm-ds-QeW"/>
- <constraint firstItem="D3l-hX-2Dh" firstAttribute="leading" secondItem="p5T-3H-wqL" secondAttribute="trailing" constant="16" id="7xT-tt-0Wx"/>
- <constraint firstItem="EyW-0r-iV7" firstAttribute="leading" secondItem="ggP-hg-92n" secondAttribute="trailing" constant="12" id="9AJ-g9-XXg"/>
- <constraint firstItem="Jbt-z6-eg9" firstAttribute="top" secondItem="Xo1-tZ-WQ6" secondAttribute="bottom" constant="8" id="BGA-2c-w6i"/>
- <constraint firstItem="ggP-hg-92n" firstAttribute="top" secondItem="Jbt-z6-eg9" secondAttribute="bottom" constant="15" id="BXD-Xj-NJb"/>
- <constraint firstItem="D3l-hX-2Dh" firstAttribute="top" secondItem="Xjw-df-oAz" secondAttribute="bottom" constant="8" id="BwZ-hX-4t5"/>
- <constraint firstItem="sui-dp-hbb" firstAttribute="firstBaseline" secondItem="tUU-DX-RxU" secondAttribute="firstBaseline" id="MUq-FE-BiZ"/>
- <constraint firstItem="sui-dp-hbb" firstAttribute="leading" secondItem="D3l-hX-2Dh" secondAttribute="leading" id="NU2-ve-0Mo"/>
- <constraint firstItem="tUU-DX-RxU" firstAttribute="top" secondItem="D3l-hX-2Dh" secondAttribute="bottom" constant="8" id="Rn0-66-xYg"/>
- <constraint firstItem="8r0-F0-e5i" firstAttribute="firstBaseline" secondItem="5sj-XD-neD" secondAttribute="firstBaseline" id="Shc-KJ-NR4"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="leading" secondItem="tUU-DX-RxU" secondAttribute="leading" id="Usc-k5-8R9"/>
- <constraint firstItem="8r0-F0-e5i" firstAttribute="leading" secondItem="Xo1-tZ-WQ6" secondAttribute="trailing" constant="8" id="W7y-oQ-Tsb"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="leading" secondItem="hhq-J9-mzB" secondAttribute="trailing" constant="8" id="g3w-AE-VVQ"/>
- <constraint firstItem="5sj-XD-neD" firstAttribute="trailing" secondItem="tUU-DX-RxU" secondAttribute="trailing" id="gWo-ar-g0U"/>
- <constraint firstItem="Xjw-df-oAz" firstAttribute="leading" secondItem="p5T-3H-wqL" secondAttribute="trailing" constant="16" id="jRa-3D-tbZ"/>
- <constraint firstItem="Jbt-z6-eg9" firstAttribute="leading" secondItem="Xjw-df-oAz" secondAttribute="leading" id="mDq-XI-GdW"/>
- <constraint firstItem="Xjw-df-oAz" firstAttribute="top" secondItem="Aqq-bl-feU" secondAttribute="top" constant="20" id="nrG-fO-QE5"/>
- <constraint firstItem="D3l-hX-2Dh" firstAttribute="trailing" secondItem="Xjw-df-oAz" secondAttribute="trailing" id="o5U-kq-Wbz"/>
- <constraint firstItem="Jbt-z6-eg9" firstAttribute="trailing" secondItem="D3l-hX-2Dh" secondAttribute="trailing" id="o9H-cU-YAR"/>
- <constraint firstItem="tUU-DX-RxU" firstAttribute="leading" secondItem="sui-dp-hbb" secondAttribute="trailing" constant="8" id="oVs-7V-Dxq"/>
- <constraint firstItem="tUU-DX-RxU" firstAttribute="trailing" secondItem="D3l-hX-2Dh" secondAttribute="trailing" id="p3o-y4-fNP"/>
- <constraint firstItem="hhq-J9-mzB" firstAttribute="leading" secondItem="sui-dp-hbb" secondAttribute="leading" id="sff-ty-Y6C"/>
- <constraint firstItem="5sj-XD-neD" firstAttribute="leading" secondItem="8r0-F0-e5i" secondAttribute="trailing" constant="8" id="tf8-pK-DZR"/>
- <constraint firstItem="Xo1-tZ-WQ6" firstAttribute="firstBaseline" secondItem="8r0-F0-e5i" secondAttribute="firstBaseline" id="vdt-kP-ISY"/>
- <constraint firstItem="EyW-0r-iV7" firstAttribute="trailing" secondItem="5sj-XD-neD" secondAttribute="trailing" id="wWy-ra-Uqt"/>
- <constraint firstItem="p5T-3H-wqL" firstAttribute="leading" secondItem="Aqq-bl-feU" secondAttribute="leading" constant="20" id="whj-f7-Iu6"/>
- <constraint firstItem="ggP-hg-92n" firstAttribute="firstBaseline" secondItem="EyW-0r-iV7" secondAttribute="firstBaseline" id="yl0-vC-sO8"/>
- </constraints>
- </view>
- <connections>
- <outlet property="initialFirstResponder" destination="tUU-DX-RxU" id="W2D-pZ-p0s"/>
- </connections>
- <point key="canvasLocation" x="79" y="881.5"/>
- </window>
- </objects>
- <resources>
- <image name="NSApplicationIcon" width="32" height="32"/>
- <image name="NSListViewTemplate" width="14" height="10"/>
- <image name="NSShareTemplate" width="11" height="16"/>
- <image name="symbol" width="13" height="13"/>
- </resources>
-</document>
diff --git a/platform/macos/app/Credits.rtf b/platform/macos/app/Credits.rtf
deleted file mode 100644
index 6b17eb34b2..0000000000
--- a/platform/macos/app/Credits.rtf
+++ /dev/null
@@ -1,9 +0,0 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf130
-{\fonttbl\f0\fnil\fcharset0 SFUIText-Regular;}
-{\colortbl;\red255\green255\blue255;}
-\margl1440\margr1440\vieww10800\viewh8400\viewkind0
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\qc\partightenfactor0
-
-\f0\fs20 \cf0 Copyright \'a9 {\field{\*\fldinst{HYPERLINK "https://www.mapbox.com/about/maps/"}}{\fldrslt Mapbox}}.\
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\qc\partightenfactor0
-\cf0 Copyright \'a9 {\field{\*\fldinst{HYPERLINK "http://www.openstreetmap.org/about/"}}{\fldrslt OpenStreetMap contributors}}.} \ No newline at end of file
diff --git a/platform/macos/app/DroppedPinAnnotation.h b/platform/macos/app/DroppedPinAnnotation.h
deleted file mode 100644
index 0897219b13..0000000000
--- a/platform/macos/app/DroppedPinAnnotation.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface DroppedPinAnnotation : MGLPointAnnotation
-
-@property (nonatomic, copy, nullable) NSString *note;
-@property (nonatomic, readonly) NSTimeInterval elapsedShownTime;
-
-- (void)resume;
-- (void)pause;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/platform/macos/app/DroppedPinAnnotation.m b/platform/macos/app/DroppedPinAnnotation.m
deleted file mode 100644
index b601405095..0000000000
--- a/platform/macos/app/DroppedPinAnnotation.m
+++ /dev/null
@@ -1,73 +0,0 @@
-#import "DroppedPinAnnotation.h"
-
-#import "LocationCoordinate2DTransformer.h"
-#import "TimeIntervalTransformer.h"
-
-#import <Mapbox/Mapbox.h>
-
-static MGLCoordinateFormatter *DroppedPinCoordinateFormatter;
-
-@implementation DroppedPinAnnotation {
- NSTimer *_timer;
- NSTimeInterval _priorShownTimeInterval;
- NSDate *_dateShown;
-
- NSValueTransformer *_timeIntervalTransformer;
-}
-
-+ (void)initialize {
- if (self == [DroppedPinAnnotation class]) {
- DroppedPinCoordinateFormatter = [[MGLCoordinateFormatter alloc] init];
- }
-}
-
-- (instancetype)init {
- if (self = [super init]) {
- _timeIntervalTransformer = [NSValueTransformer valueTransformerForName:
- NSStringFromClass([TimeIntervalTransformer class])];
- [self update:nil];
- }
- return self;
-}
-
-- (void)dealloc {
- [self pause];
-}
-
-- (void)setCoordinate:(CLLocationCoordinate2D)coordinate {
- super.coordinate = coordinate;
- [self update:nil];
-}
-
-- (NSTimeInterval)elapsedShownTime {
- return _priorShownTimeInterval - _dateShown.timeIntervalSinceNow;
-}
-
-- (void)resume {
- _dateShown = [NSDate date];
- _timer = [NSTimer scheduledTimerWithTimeInterval:1
- target:self
- selector:@selector(update:)
- userInfo:nil
- repeats:YES];
-}
-
-- (void)pause {
- [_timer invalidate];
- _timer = nil;
- _priorShownTimeInterval -= _dateShown.timeIntervalSinceNow;
- _dateShown = nil;
-}
-
-- (void)update:(NSTimer *)timer {
- NSString *coordinate = [DroppedPinCoordinateFormatter stringFromCoordinate:self.coordinate];
- if (self.note) {
- self.subtitle = [@[self.note, coordinate] componentsJoinedByString:@"\n"];
- } else {
- NSString *elapsedTime = [_timeIntervalTransformer transformedValue:@(self.elapsedShownTime)];
- NSString *elapsedString = [NSString stringWithFormat:@"Selected for %@", elapsedTime];
- self.subtitle = [@[coordinate, elapsedString] componentsJoinedByString:@"\n"];
- }
-}
-
-@end
diff --git a/platform/macos/app/Info.plist b/platform/macos/app/Info.plist
deleted file mode 100644
index 21b86bfc75..0000000000
--- a/platform/macos/app/Info.plist
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleDocumentTypes</key>
- <array>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>mbx</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>Mapbox GL Map</string>
- <key>CFBundleTypeRole</key>
- <string>Editor</string>
- <key>NSDocumentClass</key>
- <string>MapDocument</string>
- </dict>
- </array>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>0.1.0</string>
- <key>CFBundleSignature</key>
- <string>MBGL</string>
- <key>CFBundleURLTypes</key>
- <array>
- <dict>
- <key>CFBundleURLName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundleURLSchemes</key>
- <array>
- <string>mapboxgl</string>
- </array>
- </dict>
- </array>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>LSMinimumSystemVersion</key>
- <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
- <key>NSSupportsAutomaticGraphicsSwitching</key>
- <true/>
-</dict>
-</plist>
diff --git a/platform/macos/app/LocationCoordinate2DTransformer.h b/platform/macos/app/LocationCoordinate2DTransformer.h
deleted file mode 100644
index 162325fbad..0000000000
--- a/platform/macos/app/LocationCoordinate2DTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface LocationCoordinate2DTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/LocationCoordinate2DTransformer.m b/platform/macos/app/LocationCoordinate2DTransformer.m
deleted file mode 100644
index 59654f1676..0000000000
--- a/platform/macos/app/LocationCoordinate2DTransformer.m
+++ /dev/null
@@ -1,31 +0,0 @@
-#import "LocationCoordinate2DTransformer.h"
-
-#import <Mapbox/Mapbox.h>
-
-@implementation LocationCoordinate2DTransformer {
- MGLCoordinateFormatter *_coordinateFormatter;
-}
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return NO;
-}
-
-- (instancetype)init {
- if (self = [super init]) {
- _coordinateFormatter = [[MGLCoordinateFormatter alloc] init];
- }
- return self;
-}
-
-- (id)transformedValue:(id)value {
- if (![value isKindOfClass:[NSValue class]]) {
- return nil;
- }
- return [_coordinateFormatter stringForObjectValue:value].capitalizedString;
-}
-
-@end
diff --git a/platform/macos/app/MGLStyle+MBXAdditions.h b/platform/macos/app/MGLStyle+MBXAdditions.h
deleted file mode 100644
index 29c2cda867..0000000000
--- a/platform/macos/app/MGLStyle+MBXAdditions.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-@interface MGLStyle (MBXAdditions)
-
-@property (nonatomic, strong) NSArray<__kindof MGLStyleLayer *> *reversedLayers;
-
-@end
diff --git a/platform/macos/app/MGLStyle+MBXAdditions.m b/platform/macos/app/MGLStyle+MBXAdditions.m
deleted file mode 100644
index a0773cc2c0..0000000000
--- a/platform/macos/app/MGLStyle+MBXAdditions.m
+++ /dev/null
@@ -1,42 +0,0 @@
-#import "MGLStyle+MBXAdditions.h"
-
-@implementation MGLStyle (MBXAdditions)
-
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingReversedLayers {
- return [NSSet setWithObject:@"layers"];
-}
-
-- (NSArray<__kindof MGLStyleLayer *> *)reversedLayers {
- return self.layers.reverseObjectEnumerator.allObjects;
-}
-
-- (void)setReversedLayers:(NSArray<__kindof MGLStyleLayer *> *)reversedLayers {
- self.layers = reversedLayers.reverseObjectEnumerator.allObjects;
-}
-
-- (NSUInteger)countOfReversedLayers {
- return self.layers.count;
-}
-
-- (id)objectInReversedLayersAtIndex:(NSUInteger)index {
- NSArray *layers = self.layers;
- return layers[layers.count - 1 - index];
-}
-
-- (void)getReversedLayers:(__kindof MGLStyleLayer **)buffer range:(NSRange)inRange {
- NSArray *layers = self.layers;
- for (NSUInteger i = inRange.location; i < NSMaxRange(inRange); i++) {
- MGLStyleLayer *styleLayer = layers[layers.count - 1 - i];
- buffer[i] = styleLayer;
- }
-}
-
-- (void)insertObject:(__kindof MGLStyleLayer *)object inReversedLayersAtIndex:(NSUInteger)index {
- [self insertLayer:object atIndex:self.layers.count - index];
-}
-
-- (void)removeObjectFromReversedLayersAtIndex:(NSUInteger)index {
- [self removeLayer:[self objectInReversedLayersAtIndex:index]];
-}
-
-@end
diff --git a/platform/macos/app/MapDocument.h b/platform/macos/app/MapDocument.h
deleted file mode 100644
index fa70212cf8..0000000000
--- a/platform/macos/app/MapDocument.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-@class MGLMapView;
-
-@interface MapDocument : NSDocument
-
-@property (weak) IBOutlet MGLMapView *mapView;
-
-- (IBAction)showStyle:(id)sender;
-- (IBAction)chooseCustomStyle:(id)sender;
-
-- (IBAction)reload:(id)sender;
-
-@end
diff --git a/platform/macos/app/MapDocument.m b/platform/macos/app/MapDocument.m
deleted file mode 100644
index 1ab8b690b9..0000000000
--- a/platform/macos/app/MapDocument.m
+++ /dev/null
@@ -1,1507 +0,0 @@
-#import "MapDocument.h"
-
-#import "AppDelegate.h"
-#import "LimeGreenStyleLayer.h"
-#import "DroppedPinAnnotation.h"
-#import "MGLMapsnapshotter.h"
-
-#import "MGLStyle+MBXAdditions.h"
-#import "MGLVectorTileSource_Private.h"
-
-#import <Mapbox/Mapbox.h>
-
-static NSString * const MGLDroppedPinAnnotationImageIdentifier = @"dropped";
-
-static const CLLocationCoordinate2D WorldTourDestinations[] = {
- { .latitude = 38.8999418, .longitude = -77.033996 },
- { .latitude = 37.7884307, .longitude = -122.3998631 },
- { .latitude = 52.5003103, .longitude = 13.4197763 },
- { .latitude = 60.1712627, .longitude = 24.9378866 },
- { .latitude = 53.8948782, .longitude = 27.5558476 },
-};
-
-NSArray<id <MGLAnnotation>> *MBXFlattenedShapes(NSArray<id <MGLAnnotation>> *shapes) {
- NSMutableArray *flattenedShapes = [NSMutableArray arrayWithCapacity:shapes.count];
- for (id <MGLAnnotation> shape in shapes) {
- NSArray *subshapes;
- if ([shape isKindOfClass:[MGLMultiPolyline class]]) {
- subshapes = [(MGLMultiPolyline *)shape polylines];
- } else if ([shape isKindOfClass:[MGLMultiPolygon class]]) {
- subshapes = [(MGLMultiPolygon *)shape polygons];
- } else if ([shape isKindOfClass:[MGLPointCollection class]]) {
- NSUInteger pointCount = [(MGLPointCollection *)shape pointCount];
- CLLocationCoordinate2D *coordinates = [(MGLPointCollection *)shape coordinates];
- NSMutableArray *pointAnnotations = [NSMutableArray arrayWithCapacity:pointCount];
- for (NSUInteger i = 0; i < pointCount; i++) {
- MGLPointAnnotation *pointAnnotation = [[MGLPointAnnotation alloc] init];
- pointAnnotation.coordinate = coordinates[i];
- [pointAnnotations addObject:pointAnnotation];
- }
- subshapes = pointAnnotations;
- } else if ([shape isKindOfClass:[MGLShapeCollection class]]) {
- subshapes = MBXFlattenedShapes([(MGLShapeCollection *)shape shapes]);
- }
-
- if (subshapes) {
- [flattenedShapes addObjectsFromArray:subshapes];
- } else {
- [flattenedShapes addObject:shape];
- }
- }
- return flattenedShapes;
-}
-
-@interface MGLVectorTileSource (MBXAdditions)
-
-@property (nonatomic, readonly, getter=isMapboxTerrain) BOOL mapboxTerrain;
-
-@end
-
-@implementation MGLVectorTileSource (MBXAdditions)
-
-- (BOOL)isMapboxTerrain {
- NSURL *url = self.configurationURL;
- if (![url.scheme isEqualToString:@"mapbox"]) {
- return NO;
- }
- NSArray *identifiers = [url.host componentsSeparatedByString:@","];
- return [identifiers containsObject:@"mapbox.mapbox-terrain-v2"] || [identifiers containsObject:@"mapbox.mapbox-terrain-v1"];
-}
-
-@end
-
-@interface MapDocument () <NSWindowDelegate, NSSharingServicePickerDelegate, NSMenuDelegate, NSSplitViewDelegate, MGLMapViewDelegate, MGLComputedShapeSourceDataSource>
-
-@property (weak) IBOutlet NSArrayController *styleLayersArrayController;
-@property (weak) IBOutlet NSTableView *styleLayersTableView;
-@property (weak) IBOutlet NSMenu *mapViewContextMenu;
-@property (weak) IBOutlet NSSplitView *splitView;
-@property (weak) IBOutlet NSWindow *addOfflinePackWindow;
-@property (weak) IBOutlet NSTextField *offlinePackNameField;
-@property (weak) IBOutlet NSTextField *minimumOfflinePackZoomLevelField;
-@property (weak) IBOutlet NSNumberFormatter *minimumOfflinePackZoomLevelFormatter;
-@property (weak) IBOutlet NSTextField *maximumOfflinePackZoomLevelField;
-@property (weak) IBOutlet NSNumberFormatter *maximumOfflinePackZoomLevelFormatter;
-@property (weak) IBOutlet NSButton *includesIdeographicGlyphsBox;
-
-@end
-
-@implementation MapDocument {
- /// Style URL inherited from an existing document at the time this document
- /// was created.
- NSURL *_inheritedStyleURL;
-
- NSPoint _mouseLocationForMapViewContextMenu;
- NSUInteger _droppedPinCounter;
- NSNumberFormatter *_spellOutNumberFormatter;
-
- BOOL _isLocalizingLabels;
- BOOL _showsToolTipsOnDroppedPins;
- BOOL _randomizesCursorsOnDroppedPins;
- BOOL _isTouringWorld;
- BOOL _isShowingPolygonAndPolylineAnnotations;
- BOOL _isShowingAnimatedAnnotation;
-
- MGLMapSnapshotter *_snapshotter;
-}
-
-#pragma mark Lifecycle
-
-- (NSString *)windowNibName {
- return @"MapDocument";
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (void)windowControllerWillLoadNib:(NSWindowController *)windowController {
- NSDocument *currentDocument = [NSDocumentController sharedDocumentController].currentDocument;
- if ([currentDocument isKindOfClass:[MapDocument class]]) {
- _inheritedStyleURL = [(MapDocument *)currentDocument mapView].styleURL;
- }
-}
-
-- (void)windowControllerDidLoadNib:(NSWindowController *)controller {
- [super windowControllerDidLoadNib:controller];
-
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(userDefaultsDidChange:)
- name:NSUserDefaultsDidChangeNotification
- object:nil];
-
- _spellOutNumberFormatter = [[NSNumberFormatter alloc] init];
-
- NSPressGestureRecognizer *pressGestureRecognizer = [[NSPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePressGesture:)];
- [self.mapView addGestureRecognizer:pressGestureRecognizer];
-
- [self.splitView setPosition:0 ofDividerAtIndex:0];
-
- [self applyPendingState];
-}
-
-- (NSWindow *)window {
- return self.windowControllers.firstObject.window;
-}
-
-- (void)userDefaultsDidChange:(NSNotification *)notification {
- NSUserDefaults *userDefaults = notification.object;
- NSString *accessToken = [userDefaults stringForKey:MGLMapboxAccessTokenDefaultsKey];
- if (![accessToken isEqualToString:[MGLAccountManager accessToken]]) {
- [MGLAccountManager setAccessToken:accessToken];
- [self reload:self];
- }
-}
-
-#pragma mark NSWindowDelegate methods
-
-- (void)window:(NSWindow *)window willEncodeRestorableState:(NSCoder *)state {
- [state encodeObject:self.mapView.styleURL forKey:@"MBXMapViewStyleURL"];
- [state encodeBool:_isLocalizingLabels forKey:@"MBXLocalizeLabels"];
-}
-
-- (void)window:(NSWindow *)window didDecodeRestorableState:(NSCoder *)state {
- self.mapView.styleURL = [state decodeObjectForKey:@"MBXMapViewStyleURL"];
- _isLocalizingLabels = [state decodeBoolForKey:@"MBXLocalizeLabels"];
-}
-
-#pragma mark Services
-
-- (IBAction)showShareMenu:(id)sender {
- NSSharingServicePicker *picker = [[NSSharingServicePicker alloc] initWithItems:@[self.shareURL]];
- picker.delegate = self;
- [picker showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
-}
-
-- (NSURL *)shareURL {
- NSArray *components = self.mapView.styleURL.pathComponents;
- MGLMapCamera *camera = self.mapView.camera;
- return [NSURL URLWithString:
- [NSString stringWithFormat:@"https://api.mapbox.com/styles/v1/%@/%@.html?access_token=%@#%.2f/%.5f/%.5f/%.f/%.f",
- components[1], components[2], [MGLAccountManager accessToken],
- self.mapView.zoomLevel, camera.centerCoordinate.latitude, camera.centerCoordinate.longitude,
- camera.heading, camera.pitch]];
-}
-
-#pragma mark File methods
-
-- (IBAction)import:(id)sender {
- NSOpenPanel *panel = [NSOpenPanel openPanel];
- panel.allowedFileTypes = @[@"public.json", @"json", @"geojson"];
- panel.allowsMultipleSelection = YES;
-
- __weak __typeof__(self) weakSelf = self;
- [panel beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse result) {
- if (result != NSFileHandlingPanelOKButton) {
- return;
- }
-
- for (NSURL *url in panel.URLs) {
- [weakSelf importFromURL:url];
- }
- }];
-}
-
-/**
- Adds the contents of the GeoJSON file at the given URL to the map.
-
- GeoJSON features are styled according to
- [simplestyle-spec](https://github.com/mapbox/simplestyle-spec/tree/master/1.1.0/).
- */
-- (void)importFromURL:(NSURL *)url {
- MGLStyle *style = self.mapView.style;
- if (!style) {
- return;
- }
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:[NSUUID UUID].UUIDString URL:url options:nil];
- [self.mapView.style addSource:source];
-
- NSString *pointIdentifier = [NSString stringWithFormat:@"%@ marker", source.identifier];
- MGLSymbolStyleLayer *pointLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:pointIdentifier source:source];
- pointLayer.iconImageName =
- [NSExpression expressionWithFormat:@"mgl_join({%K, '-', CAST(TERNARY(%K = 'small', 11, 15), 'NSString')})",
- @"marker-symbol", @"marker-size"];
- pointLayer.iconScale = [NSExpression expressionForConstantValue:@1];
- pointLayer.iconColor = [NSExpression expressionWithFormat:@"CAST(mgl_coalesce({%K, '#7e7e7e'}), 'NSColor')",
- @"marker-color"];
- pointLayer.iconAllowsOverlap = [NSExpression expressionForConstantValue:@YES];
- [style addLayer:pointLayer];
-
- NSString *fillIdentifier = [NSString stringWithFormat:@"%@ fill", source.identifier];
- MGLFillStyleLayer *fillLayer = [[MGLFillStyleLayer alloc] initWithIdentifier:fillIdentifier source:source];
- fillLayer.predicate = [NSPredicate predicateWithFormat:@"fill != nil OR %K != nil", @"fill-opacity"];
- fillLayer.fillColor = [NSExpression expressionWithFormat:@"CAST(mgl_coalesce({fill, '#555555'}), 'NSColor')"];
- fillLayer.fillOpacity = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, 0.5})", @"fill-opacity"];
- [style addLayer:fillLayer];
-
- NSString *lineIdentifier = [NSString stringWithFormat:@"%@ stroke", source.identifier];
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:lineIdentifier source:source];
- lineLayer.lineColor = [NSExpression expressionWithFormat:@"CAST(mgl_coalesce({stroke, '#555555'}), 'NSColor')"];
- lineLayer.lineOpacity = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, 1.0})", @"stroke-opacity"];
- lineLayer.lineWidth = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, 2})", @"stroke-width"];
- lineLayer.lineCap = [NSExpression expressionForConstantValue:@"round"];
- lineLayer.lineJoin = [NSExpression expressionForConstantValue:@"bevel"];
- [style addLayer:lineLayer];
-}
-
-- (IBAction)takeSnapshot:(id)sender {
- MGLMapCamera *camera = self.mapView.camera;
-
- MGLMapSnapshotOptions *options = [[MGLMapSnapshotOptions alloc] initWithStyleURL:self.mapView.styleURL camera:camera size:self.mapView.bounds.size];
- options.zoomLevel = self.mapView.zoomLevel;
-
- // Create and start the snapshotter
- __weak __typeof__(self) weakSelf = self;
- _snapshotter = [[MGLMapSnapshotter alloc] initWithOptions:options];
- [_snapshotter startWithCompletionHandler:^(MGLMapSnapshot *snapshot, NSError *error) {
- __typeof__(self) strongSelf = weakSelf;
- if (!strongSelf) {
- return;
- }
-
- if (error) {
- NSLog(@"Could not load snapshot: %@", error.localizedDescription);
- } else {
- // Set the default name for the file and show the panel.
- NSSavePanel *panel = [NSSavePanel savePanel];
- panel.nameFieldStringValue = [strongSelf.mapView.styleURL.lastPathComponent.stringByDeletingPathExtension stringByAppendingPathExtension:@"png"];
- panel.allowedFileTypes = [@[(NSString *)kUTTypePNG] arrayByAddingObjectsFromArray:[NSBitmapImageRep imageUnfilteredTypes]];
-
- [panel beginSheetModalForWindow:strongSelf.window completionHandler:^(NSInteger result) {
- if (result == NSFileHandlingPanelOKButton) {
- // Write the contents in the new format.
- NSURL *fileURL = panel.URL;
-
- NSBitmapImageRep *bitmapRep;
- for (NSImageRep *imageRep in snapshot.image.representations) {
- if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) {
- bitmapRep = (NSBitmapImageRep *)imageRep;
- break; // stop on first bitmap rep we find
- }
- }
-
- if (!bitmapRep) {
- bitmapRep = [NSBitmapImageRep imageRepWithData:snapshot.image.TIFFRepresentation];
- }
-
- CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileURL.pathExtension, NULL /* inConformingToUTI */);
- NSBitmapImageFileType fileType = NSTIFFFileType;
- if (UTTypeConformsTo(uti, kUTTypePNG)) {
- fileType = NSPNGFileType;
- } else if (UTTypeConformsTo(uti, kUTTypeGIF)) {
- fileType = NSGIFFileType;
- } else if (UTTypeConformsTo(uti, kUTTypeJPEG2000)) {
- fileType = NSJPEG2000FileType;
- } else if (UTTypeConformsTo(uti, kUTTypeJPEG)) {
- fileType = NSJPEGFileType;
- } else if (UTTypeConformsTo(uti, kUTTypeBMP)) {
- fileType = NSBitmapImageFileTypeBMP;
- }
-
- NSData *imageData = [bitmapRep representationUsingType:fileType properties:@{}];
- [imageData writeToURL:fileURL atomically:NO];
- }
- }];
-
- }
-
- strongSelf->_snapshotter = nil;
- }];
-}
-
-#pragma mark View methods
-
-- (IBAction)showStyle:(id)sender {
- NSInteger tag = -1;
- if ([sender isKindOfClass:[NSMenuItem class]]) {
- tag = [sender tag];
- } else if ([sender isKindOfClass:[NSPopUpButton class]]) {
- tag = [sender selectedTag];
- }
- NSURL *styleURL;
- switch (tag) {
- case 1:
- styleURL = [MGLStyle streetsStyleURL];
- break;
- case 2:
- styleURL = [MGLStyle outdoorsStyleURL];
- break;
- case 3:
- styleURL = [MGLStyle lightStyleURL];
- break;
- case 4:
- styleURL = [MGLStyle darkStyleURL];
- break;
- case 5:
- styleURL = [MGLStyle satelliteStyleURL];
- break;
- case 6:
- styleURL = [MGLStyle satelliteStreetsStyleURL];
- break;
- default:
- 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];
-}
-
-- (IBAction)chooseCustomStyle:(id)sender {
- NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Apply custom style";
- alert.informativeText = @"Enter the URL to a JSON file that conforms to the Mapbox Style Specification, such as a style designed in Mapbox Studio:";
- NSTextField *textField = [[NSTextField alloc] initWithFrame:NSZeroRect];
- [textField sizeToFit];
- NSRect textFieldFrame = textField.frame;
- textFieldFrame.size.width = 300;
- textField.frame = textFieldFrame;
- NSURL *savedURL = [[NSUserDefaults standardUserDefaults] URLForKey:@"MBXCustomStyleURL"];
- if (savedURL) {
- textField.stringValue = savedURL.absoluteString;
- }
- alert.accessoryView = textField;
- [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];
- }
-}
-
-- (IBAction)zoomIn:(id)sender {
- [self.mapView setZoomLevel:round(self.mapView.zoomLevel) + 1 animated:YES];
-}
-
-- (IBAction)zoomOut:(id)sender {
- [self.mapView setZoomLevel:round(self.mapView.zoomLevel) - 1 animated:YES];
-}
-
-- (IBAction)snapToNorth:(id)sender {
- [self.mapView setDirection:0 animated:YES];
-}
-
-- (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 {
- NSArray<MGLStyleLayer *> *layers = [self.mapView.style.reversedLayers 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:(NSArray<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 {
- NSArray<MGLStyleLayer *> *layers = [self.mapView.style.reversedLayers 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];
-}
-
-- (IBAction)setLabelLanguage:(NSMenuItem *)sender {
- _isLocalizingLabels = sender.tag;
- [self reload:sender];
-}
-
-- (void)updateLabels {
- [self.mapView.style localizeLabelsIntoLocale:_isLocalizingLabels ? nil : [NSLocale localeWithLocaleIdentifier:@"mul"]];
-}
-
-- (void)applyPendingState {
- if (_inheritedStyleURL) {
- self.mapView.styleURL = _inheritedStyleURL;
- _inheritedStyleURL = nil;
- }
-
- AppDelegate *appDelegate = (AppDelegate *)NSApp.delegate;
- if (appDelegate.pendingStyleURL) {
- self.mapView.styleURL = appDelegate.pendingStyleURL;
- }
- if (appDelegate.pendingCamera) {
- if (appDelegate.pendingZoomLevel >= 0) {
- self.mapView.zoomLevel = appDelegate.pendingZoomLevel;
- appDelegate.pendingCamera.altitude = self.mapView.camera.altitude;
- }
- self.mapView.camera = appDelegate.pendingCamera;
- appDelegate.pendingZoomLevel = -1;
- appDelegate.pendingCamera = nil;
- }
- if (!MGLCoordinateBoundsIsEmpty(appDelegate.pendingVisibleCoordinateBounds)) {
- self.mapView.visibleCoordinateBounds = appDelegate.pendingVisibleCoordinateBounds;
- appDelegate.pendingVisibleCoordinateBounds = (MGLCoordinateBounds){ { 0, 0 }, { 0, 0 } };
- }
- if (appDelegate.pendingDebugMask) {
- self.mapView.debugMask = appDelegate.pendingDebugMask;
- }
- if (appDelegate.pendingMinimumZoomLevel >= 0) {
- self.mapView.zoomLevel = MAX(appDelegate.pendingMinimumZoomLevel, self.mapView.zoomLevel);
- appDelegate.pendingMaximumZoomLevel = -1;
- }
- if (appDelegate.pendingMaximumZoomLevel >= 0) {
- self.mapView.zoomLevel = MIN(appDelegate.pendingMaximumZoomLevel, self.mapView.zoomLevel);
- appDelegate.pendingMaximumZoomLevel = -1;
- }
-
- // Temporarily set the display name to the default center coordinate instead
- // of “Untitled” until the binding kicks in.
- NSValue *coordinateValue = [NSValue valueWithMGLCoordinate:self.mapView.centerCoordinate];
- NSString *coordinateString = [[NSValueTransformer valueTransformerForName:@"LocationCoordinate2DTransformer"]
- transformedValue:coordinateValue];
-
-
- self.displayName = [NSString stringWithFormat:@"%@ @ %f", coordinateString, _mapView.zoomLevel];
-}
-
-#pragma mark Debug methods
-
-- (IBAction)toggleTileBoundaries:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugTileBoundariesMask;
-}
-
-- (IBAction)toggleTileInfo:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugTileInfoMask;
-}
-
-- (IBAction)toggleTileTimestamps:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugTimestampsMask;
-}
-
-- (IBAction)toggleCollisionBoxes:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugCollisionBoxesMask;
-}
-
-- (IBAction)toggleOverdrawVisualization:(id)sender {
- self.mapView.debugMask ^= MGLMapDebugOverdrawVisualizationMask;
-}
-
-- (IBAction)showColorBuffer:(id)sender {
- self.mapView.debugMask &= ~MGLMapDebugStencilBufferMask;
- self.mapView.debugMask &= ~MGLMapDebugDepthBufferMask;
-}
-
-- (IBAction)showStencilBuffer:(id)sender {
- self.mapView.debugMask &= ~MGLMapDebugDepthBufferMask;
- self.mapView.debugMask |= MGLMapDebugStencilBufferMask;
-}
-
-- (IBAction)showDepthBuffer:(id)sender {
- self.mapView.debugMask &= ~MGLMapDebugStencilBufferMask;
- self.mapView.debugMask |= MGLMapDebugDepthBufferMask;
-}
-
-- (IBAction)toggleShowsToolTipsOnDroppedPins:(id)sender {
- _showsToolTipsOnDroppedPins = !_showsToolTipsOnDroppedPins;
-}
-
-- (IBAction)toggleRandomizesCursorsOnDroppedPins:(id)sender {
- _randomizesCursorsOnDroppedPins = !_randomizesCursorsOnDroppedPins;
-}
-
-- (IBAction)dropManyPins:(id)sender {
- [self removeAllAnnotations:sender];
-
- NSRect bounds = self.mapView.bounds;
- NSMutableArray *annotations = [NSMutableArray array];
- for (CGFloat x = NSMinX(bounds); x < NSMaxX(bounds); x += arc4random_uniform(50)) {
- for (CGFloat y = NSMaxY(bounds); y >= NSMinY(bounds); y -= arc4random_uniform(100)) {
- [annotations addObject:[self pinAtPoint:NSMakePoint(x, y)]];
- }
- }
-
- [NSTimer scheduledTimerWithTimeInterval:1.0/60.0
- target:self
- selector:@selector(dropOneOfManyPins:)
- userInfo:annotations
- repeats:YES];
-}
-
-- (void)dropOneOfManyPins:(NSTimer *)timer {
- NSMutableArray *annotations = timer.userInfo;
- NSUInteger numberOfAnnotationsToAdd = 50;
- if (annotations.count < numberOfAnnotationsToAdd) {
- numberOfAnnotationsToAdd = annotations.count;
- }
- NSArray *annotationsToAdd = [annotations subarrayWithRange:
- NSMakeRange(0, numberOfAnnotationsToAdd)];
- [self.mapView addAnnotations:annotationsToAdd];
- [annotations removeObjectsInRange:NSMakeRange(0, numberOfAnnotationsToAdd)];
- if (!annotations.count) {
- [timer invalidate];
- }
-}
-
-- (IBAction)showAllAnnotations:(id)sender {
- [self.mapView showAnnotations:self.mapView.annotations animated:YES];
-}
-
-- (IBAction)removeAllAnnotations:(id)sender {
- [self.mapView removeAnnotations:self.mapView.annotations];
- _isShowingPolygonAndPolylineAnnotations = NO;
- _isShowingAnimatedAnnotation = NO;
-}
-
-- (IBAction)startWorldTour:(id)sender {
- _isTouringWorld = YES;
-
- [self removeAllAnnotations:sender];
- NSUInteger numberOfAnnotations = sizeof(WorldTourDestinations) / sizeof(WorldTourDestinations[0]);
- NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:numberOfAnnotations];
- for (NSUInteger i = 0; i < numberOfAnnotations; i++) {
- MGLPointAnnotation *annotation = [[MGLPointAnnotation alloc] init];
- annotation.coordinate = WorldTourDestinations[i];
- [annotations addObject:annotation];
- }
- [self.mapView addAnnotations:annotations];
- [self continueWorldTourWithRemainingAnnotations:annotations];
-}
-
-- (void)continueWorldTourWithRemainingAnnotations:(NSMutableArray<MGLPointAnnotation *> *)annotations {
- MGLPointAnnotation *nextAnnotation = annotations.firstObject;
- if (!nextAnnotation || !_isTouringWorld) {
- _isTouringWorld = NO;
- return;
- }
-
- [annotations removeObjectAtIndex:0];
- MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:nextAnnotation.coordinate
- acrossDistance:0
- pitch:arc4random_uniform(60)
- heading:arc4random_uniform(360)];
- __weak MapDocument *weakSelf = self;
- [self.mapView flyToCamera:camera completionHandler:^{
- MapDocument *strongSelf = weakSelf;
- [strongSelf performSelector:@selector(continueWorldTourWithRemainingAnnotations:)
- withObject:annotations
- afterDelay:2];
- }];
-}
-
-- (IBAction)stopWorldTour:(id)sender {
- _isTouringWorld = NO;
- // Any programmatic viewpoint change cancels outstanding animations.
- self.mapView.camera = self.mapView.camera;
-}
-
-- (IBAction)drawPolygonAndPolyLineAnnotations:(id)sender {
-
- if (_isShowingPolygonAndPolylineAnnotations) {
- [self removeAllAnnotations:sender];
- return;
- }
-
- _isShowingPolygonAndPolylineAnnotations = YES;
-
- // Pacific Northwest triangle
- CLLocationCoordinate2D triangleCoordinates[3] = {
- CLLocationCoordinate2DMake(44, -122),
- CLLocationCoordinate2DMake(46, -122),
- CLLocationCoordinate2DMake(46, -121)
- };
- MGLPolygon *triangle = [MGLPolygon polygonWithCoordinates:triangleCoordinates count:3];
- [self.mapView addAnnotation:triangle];
-
- // West coast line
- CLLocationCoordinate2D lineCoordinates[4] = {
- CLLocationCoordinate2DMake(47.6025, -122.3327),
- CLLocationCoordinate2DMake(45.5189, -122.6726),
- CLLocationCoordinate2DMake(37.7790, -122.4177),
- CLLocationCoordinate2DMake(34.0532, -118.2349)
- };
- MGLPolyline *line = [MGLPolyline polylineWithCoordinates:lineCoordinates count:4];
- [self.mapView addAnnotation:line];
-}
-
-- (IBAction)drawAnimatedAnnotation:(id)sender {
- DroppedPinAnnotation *annotation = [[DroppedPinAnnotation alloc] init];
- [self.mapView addAnnotation:annotation];
-
- _isShowingAnimatedAnnotation = YES;
-
- [NSTimer scheduledTimerWithTimeInterval:1.0/60.0
- target:self
- selector:@selector(updateAnimatedAnnotation:)
- userInfo:annotation
- repeats:YES];
-}
-
-
-- (id<MGLAnnotation>)randomOffscreenPointAnnotation {
-
- NSPredicate *pointAnnotationPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {
- return [evaluatedObject isKindOfClass:[MGLPointAnnotation class]];
- }];
-
- NSArray *annotations = [self.mapView.annotations filteredArrayUsingPredicate:pointAnnotationPredicate];
-
- if (annotations.count == 0) {
- return nil;
- }
-
- // NOTE: self.mapView.visibleAnnotations occasionally returns nil - see
- // https://github.com/mapbox/mapbox-gl-native/issues/11296
- NSArray *visibleAnnotations = [self.mapView.visibleAnnotations filteredArrayUsingPredicate:pointAnnotationPredicate];
-
- NSLog(@"Number of visible point annotations = %ld", visibleAnnotations.count);
-
- if (visibleAnnotations.count == annotations.count) {
- return nil;
- }
-
- NSMutableArray *invisibleAnnotations = [annotations mutableCopy];
-
- if (visibleAnnotations.count > 0) {
- [invisibleAnnotations removeObjectsInArray:visibleAnnotations];
- }
-
- // Now pick a random offscreen annotation.
- uint32_t index = arc4random_uniform((uint32_t)invisibleAnnotations.count);
- return invisibleAnnotations[index];
-}
-
-- (IBAction)selectOffscreenPointAnnotation:(id)sender {
- id<MGLAnnotation> annotation = [self randomOffscreenPointAnnotation];
- if (annotation) {
- [self.mapView selectAnnotation:annotation];
-
- // Alternative method to select the annotation. These two should do the same thing.
- // self.mapView.selectedAnnotations = @[annotation];
- NSAssert(self.mapView.selectedAnnotations.firstObject, @"The annotation was not selected");
- }
-}
-
-- (void)updateAnimatedAnnotation:(NSTimer *)timer {
- DroppedPinAnnotation *annotation = timer.userInfo;
- double angle = timer.fireDate.timeIntervalSinceReferenceDate;
- annotation.coordinate = CLLocationCoordinate2DMake(
- sin(angle) * 20,
- cos(angle) * 20);
-}
-
-- (IBAction) addAnimatedImageSource:(id)sender {
-
- MGLImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:@"southeast_0"];
-
- MGLCoordinateBounds bounds = { {22.551103322318994, -90.24006072802854}, {36.928147474567794, -75.1441643681673} };
- MGLImageSource *imageSource = [[MGLImageSource alloc] initWithIdentifier:@"animated-radar-source" coordinateQuad:MGLCoordinateQuadFromCoordinateBounds(bounds) image:image];
- [self.mapView.style addSource:imageSource];
-
- MGLRasterStyleLayer * imageLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"animated-radar-layer" source:imageSource];
- [self.mapView.style addLayer:imageLayer];
-
- [NSTimer scheduledTimerWithTimeInterval:1.0
- target:self
- selector:@selector(updateAnimatedImageSource:)
- userInfo:imageSource
- repeats:YES];
-}
-
-
-- (void)updateAnimatedImageSource:(NSTimer *)timer {
- static int radarSuffix = 0;
- MGLImageSource *imageSource = (MGLImageSource *)timer.userInfo;
-
- MGLImage *image = [[NSBundle bundleForClass:[self class]] imageForResource:[NSString stringWithFormat:@"southeast_%d", radarSuffix++]];
- [imageSource setValue:image forKey:@"image"];
-
- if(radarSuffix > 3) {
- radarSuffix = 0 ;
- }
-}
-
-- (IBAction)insertCustomStyleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self removeCustomStyleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Add Lime Green Layer"];
- }
-
- LimeGreenStyleLayer *layer = [[LimeGreenStyleLayer alloc] initWithIdentifier:@"mbx-custom"];
- MGLStyleLayer *houseNumberLayer = [self.mapView.style layerWithIdentifier:@"housenum-label"];
- if (houseNumberLayer) {
- [self.mapView.style insertLayer:layer belowLayer:houseNumberLayer];
- } else {
- [self.mapView.style addLayer:layer];
- }
-}
-
-- (IBAction)removeCustomStyleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self insertCustomStyleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Delete Lime Green Layer"];
- }
-
- MGLStyleLayer *layer = [self.mapView.style layerWithIdentifier:@"mbx-custom"];
- [self.mapView.style removeLayer:layer];
-}
-
-- (IBAction)insertGraticuleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self removeGraticuleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Add Graticule"];
- }
-
- NSDictionary *sourceOptions = @{
- MGLShapeSourceOptionMaximumZoomLevel:@14,
- MGLShapeSourceOptionWrapsCoordinates: @YES,
- MGLShapeSourceOptionClipsCoordinates: @YES,
- };
- MGLComputedShapeSource *source = [[MGLComputedShapeSource alloc] initWithIdentifier:@"graticule"
- options:sourceOptions];
-
- source.dataSource = self;
- [self.mapView.style addSource:source];
- MGLLineStyleLayer *lineLayer = [[MGLLineStyleLayer alloc] initWithIdentifier:@"graticule.lines"
- source:source];
- [self.mapView.style addLayer:lineLayer];
- MGLSymbolStyleLayer *labelLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"graticule.labels"
- source:source];
- labelLayer.text = [NSExpression expressionWithFormat:@"value"];
- [self.mapView.style addLayer:labelLayer];
-}
-
-- (IBAction)removeGraticuleLayer:(id)sender {
- [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
- [self insertGraticuleLayer:sender];
- }];
-
- if (!self.undoManager.isUndoing) {
- [self.undoManager setActionName:@"Delete Graticule"];
- }
-
- MGLStyleLayer *layer = [self.mapView.style layerWithIdentifier:@"graticule.lines"];
- [self.mapView.style removeLayer:layer];
-
- layer = [self.mapView.style layerWithIdentifier:@"graticule.labels"];
- [self.mapView.style removeLayer:layer];
-
- MGLSource *source = [self.mapView.style sourceWithIdentifier:@"graticule"];
- [self.mapView.style removeSource:source];
-}
-
-- (IBAction)enhanceTerrain:(id)sender {
- // Find all the identifiers of Mapbox Terrain sources used in the style.
- NSMutableSet *terrainSourceIdentifiers = [NSMutableSet set];
- for (MGLVectorTileSource *source in self.mapView.style.sources) {
- if (![source isKindOfClass:[MGLVectorTileSource class]]) {
- continue;
- }
-
- if (source.mapboxTerrain) {
- [terrainSourceIdentifiers addObject:source.identifier];
- }
- }
-
- // Find and remove all the style layers using those sources.
- NSUInteger hillshadeIndex = NSNotFound;
- NSEnumerator *layerEnumerator = self.mapView.style.layers.objectEnumerator;
- MGLVectorStyleLayer *layer;
- for (NSUInteger i = 0; (layer = layerEnumerator.nextObject); i++) {
- if (![layer isKindOfClass:[MGLVectorStyleLayer class]]) {
- continue;
- }
-
- if ([terrainSourceIdentifiers containsObject:layer.sourceIdentifier]
- && [layer.sourceLayerIdentifier isEqualToString:@"hillshade"]) {
- hillshadeIndex = i;
- [self.mapView.style removeLayer:layer];
- }
- }
-
- if (hillshadeIndex == NSNotFound) {
- return;
- }
-
- // Add a Mapbox Terrain-RGB source.
- NSURL *terrainRGBURL = [NSURL URLWithString:@"mapbox://mapbox.terrain-rgb"];
- MGLRasterDEMSource *terrainRGBSource = [[MGLRasterDEMSource alloc] initWithIdentifier:@"terrain" configurationURL:terrainRGBURL];
- [self.mapView.style addSource:terrainRGBSource];
-
- // Insert a hillshade layer where the Mapbox Terrain–based layers were.
- MGLHillshadeStyleLayer *hillshadeLayer = [[MGLHillshadeStyleLayer alloc] initWithIdentifier:@"hillshade" source:terrainRGBSource];
- [self.mapView.style insertLayer:hillshadeLayer atIndex:hillshadeIndex];
-}
-
-#pragma mark Offline packs
-
-- (IBAction)addOfflinePack:(id)sender {
- self.offlinePackNameField.stringValue = @"";
- self.offlinePackNameField.placeholderString = MGLStringFromCoordinateBounds(self.mapView.visibleCoordinateBounds);
- self.minimumOfflinePackZoomLevelField.doubleValue = floor(self.mapView.zoomLevel);
- self.maximumOfflinePackZoomLevelField.doubleValue = ceil(self.mapView.maximumZoomLevel);
- self.minimumOfflinePackZoomLevelFormatter.minimum = @(floor(self.mapView.minimumZoomLevel));
- self.maximumOfflinePackZoomLevelFormatter.minimum = @(floor(self.mapView.minimumZoomLevel));
- self.minimumOfflinePackZoomLevelFormatter.maximum = @(ceil(self.mapView.maximumZoomLevel));
- self.maximumOfflinePackZoomLevelFormatter.maximum = @(ceil(self.mapView.maximumZoomLevel));
-
- id ideographicFontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"];
- self.includesIdeographicGlyphsBox.state = ([ideographicFontFamilyName isKindOfClass:[NSNumber class]] && ![ideographicFontFamilyName boolValue]) ? NSOffState : NSOnState;
- [self.addOfflinePackWindow makeFirstResponder:self.offlinePackNameField];
-
- __weak __typeof__(self) weakSelf = self;
- [self.window beginSheet:self.addOfflinePackWindow completionHandler:^(NSModalResponse returnCode) {
- __typeof__(self) strongSelf = weakSelf;
- if (!strongSelf || returnCode != NSModalResponseOK) {
- return;
- }
-
- id <MGLOfflineRegion> region =
- [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:strongSelf.mapView.styleURL
- bounds:strongSelf.mapView.visibleCoordinateBounds
- fromZoomLevel:strongSelf.minimumOfflinePackZoomLevelField.integerValue
- toZoomLevel:strongSelf.maximumOfflinePackZoomLevelField.integerValue];
- region.includesIdeographicGlyphs = strongSelf.includesIdeographicGlyphsBox.state == NSOnState;
- NSString *name = strongSelf.offlinePackNameField.stringValue;
- if (!name.length) {
- name = strongSelf.offlinePackNameField.placeholderString;
- }
- NSData *context = [[NSValueTransformer valueTransformerForName:@"OfflinePackNameValueTransformer"] reverseTransformedValue:name];
- [[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:region withContext:context completionHandler:^(MGLOfflinePack * _Nullable pack, NSError * _Nullable error) {
- if (error) {
- [[NSAlert alertWithError:error] runModal];
- } else {
- [(AppDelegate *)NSApp.delegate watchOfflinePack:pack];
- [pack resume];
- }
- }];
- }];
-}
-
-- (IBAction)confirmAddingOfflinePack:(id)sender {
- [self.window endSheet:self.addOfflinePackWindow returnCode:[sender tag] ? NSModalResponseOK : NSModalResponseCancel];
-}
-
-#pragma mark Mouse events
-
-- (void)handlePressGesture:(NSPressGestureRecognizer *)gestureRecognizer {
- if (gestureRecognizer.state == NSGestureRecognizerStateBegan) {
- NSPoint location = [gestureRecognizer locationInView:self.mapView];
- if (!NSPointInRect([gestureRecognizer locationInView:self.mapView.compass], self.mapView.compass.bounds)
- && !NSPointInRect([gestureRecognizer locationInView:self.mapView.zoomControls], self.mapView.zoomControls.bounds)
- && !NSPointInRect([gestureRecognizer locationInView:self.mapView.attributionView], self.mapView.attributionView.bounds)) {
- [self dropPinAtPoint:location];
- }
- }
-}
-
-- (IBAction)manipulateStyle:(id)sender {
- MGLTransition transition = { .duration = 5, .delay = 1 };
- self.mapView.style.transition = transition;
-
- MGLStyleLayer *waterLayer = [self.mapView.style layerWithIdentifier:@"water"];
- NSExpression *colorExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{
- @0.0: [NSColor redColor],
- @10.0: [NSColor yellowColor],
- @20.0: [NSColor blackColor],
- }];
-
- if ([waterLayer respondsToSelector:@selector(fillColor)]) {
- [waterLayer setValue:colorExpression forKey:@"fillColor"];
- } else if ([waterLayer respondsToSelector:@selector(lineColor)]) {
- [waterLayer setValue:colorExpression forKey:@"lineColor"];
- }
-
- NSString *filePath = [[NSBundle bundleForClass:self.class] pathForResource:@"amsterdam" ofType:@"geojson"];
- NSURL *geoJSONURL = [NSURL fileURLWithPath:filePath];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"ams" URL:geoJSONURL options:nil];
- [self.mapView.style addSource:source];
-
- MGLCircleStyleLayer *circleLayer = [[MGLCircleStyleLayer alloc] initWithIdentifier:@"test" source:source];
- circleLayer.circleColor = [NSExpression expressionForConstantValue:[NSColor greenColor]];
- circleLayer.circleRadius = [NSExpression expressionForConstantValue:@40];
-// fillLayer.predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"type", @"park"];
- [self.mapView.style addLayer:circleLayer];
-
- MGLSource *streetsSource = [self.mapView.style sourceWithIdentifier:@"composite"];
- if (streetsSource) {
- NSImage *image = [NSImage imageNamed:NSImageNameIChatTheaterTemplate];
- [self.mapView.style setImage:image forName:NSImageNameIChatTheaterTemplate];
-
- MGLSymbolStyleLayer *theaterLayer = [[MGLSymbolStyleLayer alloc] initWithIdentifier:@"theaters" source:streetsSource];
- theaterLayer.sourceLayerIdentifier = @"poi_label";
- theaterLayer.predicate = [NSPredicate predicateWithFormat:@"maki == 'theatre'"];
- theaterLayer.iconImageName = [NSExpression expressionForConstantValue:NSImageNameIChatTheaterTemplate];
- theaterLayer.iconScale = [NSExpression expressionForConstantValue:@2];
- theaterLayer.iconColor = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{
- @16.0: [NSColor redColor],
- @18.0: [NSColor yellowColor],
- @20.0: [NSColor blackColor],
- }];
- [self.mapView.style addLayer:theaterLayer];
- }
-
- NSURL *imageURL = [NSURL URLWithString:@"https://www.mapbox.com/mapbox-gl-js/assets/radar.gif"];
- MGLCoordinateQuad quad = { {46.437, -80.425},
- {37.936, -80.425},
- {37.936, -71.516},
- {46.437, -71.516} };
- MGLImageSource *imageSource = [[MGLImageSource alloc] initWithIdentifier:@"radar-source" coordinateQuad:quad URL:imageURL];
- [self.mapView.style addSource:imageSource];
-
- MGLRasterStyleLayer * imageLayer = [[MGLRasterStyleLayer alloc] initWithIdentifier:@"radar-layer" source:imageSource];
- [self.mapView.style addLayer:imageLayer];
-}
-
-- (IBAction)dropPin:(NSMenuItem *)sender {
- [self dropPinAtPoint:_mouseLocationForMapViewContextMenu];
-}
-
-- (void)dropPinAtPoint:(NSPoint)point {
- DroppedPinAnnotation *annotation = [self pinAtPoint:point];
- [self.mapView addAnnotation:annotation];
- [self.mapView selectAnnotation:annotation];
-}
-
-- (DroppedPinAnnotation *)pinAtPoint:(NSPoint)point {
- NSArray *features = [self.mapView visibleFeaturesAtPoint:point];
- NSString *title;
- NSString *description;
- for (id <MGLFeature> feature in features) {
- if (!title) {
- title = [feature attributeForKey:@"title"] ?: [feature attributeForKey:@"name_en"] ?: [feature attributeForKey:@"name"];
-
- // simplestyle-spec defines a “description” attribute in HTML format.
- NSString *featureDescription = [feature attributeForKey:@"description"];
- if (featureDescription) {
- // Convert HTML to plain text, because the default popover is
- // bound to an NSString-typed property.
- NSData *data = [featureDescription dataUsingEncoding:NSUTF8StringEncoding];
- description = [[NSAttributedString alloc] initWithHTML:data options:@{} documentAttributes:nil].string;
- }
-
- if (title) {
- break;
- }
- }
- }
-
- DroppedPinAnnotation *annotation = [[DroppedPinAnnotation alloc] init];
- annotation.coordinate = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];
- annotation.title = title ?: @"Dropped Pin";
- annotation.note = description;
- _spellOutNumberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;
- if (_showsToolTipsOnDroppedPins) {
- NSString *formattedNumber = [_spellOutNumberFormatter stringFromNumber:@(++_droppedPinCounter)];
- annotation.toolTip = formattedNumber;
- }
- return annotation;
-}
-
-- (IBAction)removePin:(NSMenuItem *)sender {
- [self removePinAtPoint:_mouseLocationForMapViewContextMenu];
-}
-
-- (void)removePinAtPoint:(NSPoint)point {
- [self.mapView removeAnnotation:[self.mapView annotationAtPoint:point]];
-}
-
-- (IBAction)selectFeatures:(id)sender {
- [self selectFeaturesAtPoint:_mouseLocationForMapViewContextMenu];
-}
-
-- (void)selectFeaturesAtPoint:(NSPoint)point {
- NSArray *features = [self.mapView visibleFeaturesAtPoint:point];
- NSArray *flattenedFeatures = MBXFlattenedShapes(features);
- [self.mapView addAnnotations:flattenedFeatures];
-}
-
-#pragma mark User interface validation
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
- if (menuItem.action == @selector(showStyle:)) {
- NSURL *styleURL = self.mapView.styleURL;
- NSCellStateValue state;
- switch (menuItem.tag) {
- case 1:
- state = [styleURL isEqual:[MGLStyle streetsStyleURL]];
- break;
- case 2:
- state = [styleURL isEqual:[MGLStyle outdoorsStyleURL]];
- break;
- case 3:
- state = [styleURL isEqual:[MGLStyle lightStyleURL]];
- break;
- case 4:
- state = [styleURL isEqual:[MGLStyle darkStyleURL]];
- break;
- case 5:
- state = [styleURL isEqual:[MGLStyle satelliteStyleURL]];
- break;
- case 6:
- state = [styleURL isEqual:[MGLStyle satelliteStreetsStyleURL]];
- break;
- default:
- return NO;
- }
- menuItem.state = state;
- return YES;
- }
- if (menuItem.action == @selector(chooseCustomStyle:)) {
- menuItem.state = self.indexOfStyleInToolbarItem == NSNotFound;
- return YES;
- }
- if (menuItem.action == @selector(zoomIn:)) {
- return self.mapView.zoomLevel < self.mapView.maximumZoomLevel;
- }
- if (menuItem.action == @selector(zoomOut:)) {
- return self.mapView.zoomLevel > self.mapView.minimumZoomLevel;
- }
- if (menuItem.action == @selector(snapToNorth:)) {
- return self.mapView.direction != 0;
- }
- 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.reversedLayers[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(setLabelLanguage:)) {
- menuItem.state = menuItem.tag == _isLocalizingLabels ? NSOnState: NSOffState;
- if (menuItem.tag) {
- NSLocale *locale = [NSLocale localeWithLocaleIdentifier:[NSBundle mainBundle].developmentLocalization];
- NSString *preferredLanguage = [MGLVectorTileSource preferredMapboxStreetsLanguage] ?: @"en";
- menuItem.title = [locale displayNameForKey:NSLocaleIdentifier value:preferredLanguage];
- }
- return YES;
- }
- if (menuItem.action == @selector(manipulateStyle:)) {
- return YES;
- }
- if (menuItem.action == @selector(dropPin:)) {
- id <MGLAnnotation> annotationUnderCursor = [self.mapView annotationAtPoint:_mouseLocationForMapViewContextMenu];
- menuItem.hidden = annotationUnderCursor != nil;
- return YES;
- }
- if (menuItem.action == @selector(removePin:)) {
- id <MGLAnnotation> annotationUnderCursor = [self.mapView annotationAtPoint:_mouseLocationForMapViewContextMenu];
- menuItem.hidden = annotationUnderCursor == nil;
- return YES;
- }
- if (menuItem.action == @selector(selectFeatures:)) {
- return YES;
- }
- if (menuItem.action == @selector(toggleTileBoundaries:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugTileBoundariesMask;
- menuItem.title = isShown ? @"Hide Tile Boundaries" : @"Show Tile Boundaries";
- return YES;
- }
- if (menuItem.action == @selector(toggleTileInfo:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugTileInfoMask;
- menuItem.title = isShown ? @"Hide Tile Info" : @"Show Tile Info";
- return YES;
- }
- if (menuItem.action == @selector(toggleTileTimestamps:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugTimestampsMask;
- menuItem.title = isShown ? @"Hide Tile Timestamps" : @"Show Tile Timestamps";
- return YES;
- }
- if (menuItem.action == @selector(toggleCollisionBoxes:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugCollisionBoxesMask;
- menuItem.title = isShown ? @"Hide Collision Boxes" : @"Show Collision Boxes";
- return YES;
- }
- if (menuItem.action == @selector(toggleOverdrawVisualization:)) {
- BOOL isShown = self.mapView.debugMask & MGLMapDebugOverdrawVisualizationMask;
- menuItem.title = isShown ? @"Hide Overdraw Visualization" : @"Show Overdraw Visualization";
- return YES;
- }
- if (menuItem.action == @selector(showColorBuffer:)) {
- BOOL enabled = self.mapView.debugMask & (MGLMapDebugStencilBufferMask | MGLMapDebugDepthBufferMask);
- menuItem.state = enabled ? NSOffState : NSOnState;
- return YES;
- }
- if (menuItem.action == @selector(showStencilBuffer:)) {
- BOOL enabled = self.mapView.debugMask & MGLMapDebugStencilBufferMask;
- menuItem.state = enabled ? NSOnState : NSOffState;
- return YES;
- }
- if (menuItem.action == @selector(showDepthBuffer:)) {
- BOOL enabled = self.mapView.debugMask & MGLMapDebugDepthBufferMask;
- menuItem.state = enabled ? NSOnState : NSOffState;
- return YES;
- }
- if (menuItem.action == @selector(toggleShowsToolTipsOnDroppedPins:)) {
- BOOL isShown = _showsToolTipsOnDroppedPins;
- menuItem.title = isShown ? @"Hide Tooltips on Dropped Pins" : @"Show Tooltips on Dropped Pins";
- return YES;
- }
- if (menuItem.action == @selector(toggleRandomizesCursorsOnDroppedPins:)) {
- BOOL isRandom = _randomizesCursorsOnDroppedPins;
- menuItem.title = isRandom ? @"Use Default Cursor for Dropped Pins" : @"Use Random Cursors for Dropped Pins";
- return _showsToolTipsOnDroppedPins;
- }
- if (menuItem.action == @selector(dropManyPins:)) {
- return YES;
- }
- if (menuItem.action == @selector(drawPolygonAndPolyLineAnnotations:)) {
- return !_isShowingPolygonAndPolylineAnnotations;
- }
- if (menuItem.action == @selector(drawAnimatedAnnotation:)) {
- return !_isShowingAnimatedAnnotation;
- }
- if (menuItem.action == @selector(addAnimatedImageSource:)) {
- return YES;
- }
- if (menuItem.action == @selector(insertCustomStyleLayer:)) {
- return ![self.mapView.style layerWithIdentifier:@"mbx-custom"];
- }
- if (menuItem.action == @selector(insertGraticuleLayer:)) {
- return ![self.mapView.style sourceWithIdentifier:@"graticule"];
- }
- if (menuItem.action == @selector(selectOffscreenPointAnnotation:)) {
- return YES;
- }
- if (menuItem.action == @selector(showAllAnnotations:) || menuItem.action == @selector(removeAllAnnotations:)) {
- return self.mapView.annotations.count > 0;
- }
- if (menuItem.action == @selector(enhanceTerrain:)) {
- return YES;
- }
- if (menuItem.action == @selector(startWorldTour:)) {
- return !_isTouringWorld;
- }
- if (menuItem.action == @selector(stopWorldTour:)) {
- return _isTouringWorld;
- }
- if (menuItem.action == @selector(addOfflinePack:)) {
- NSURL *styleURL = self.mapView.styleURL;
- return !styleURL.isFileURL;
- }
- if (menuItem.action == @selector(giveFeedback:)) {
- return YES;
- }
- if (menuItem.action == @selector(import:)) {
- return YES;
- }
- if (menuItem.action == @selector(takeSnapshot:)) {
- return !(_snapshotter && [_snapshotter isLoading]);
- }
- return NO;
-}
-
-- (NSUInteger)indexOfStyleInToolbarItem {
- if (![MGLAccountManager accessToken]) {
- return NSNotFound;
- }
-
- NSArray *styleURLs = @[
- [MGLStyle streetsStyleURL],
- [MGLStyle outdoorsStyleURL],
- [MGLStyle lightStyleURL],
- [MGLStyle darkStyleURL],
- [MGLStyle satelliteStyleURL],
- [MGLStyle satelliteStreetsStyleURL],
- ];
- return [styleURLs indexOfObject:self.mapView.styleURL];
-}
-
-- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem {
- if (!self.mapView) {
- return NO;
- }
-
- SEL action = toolbarItem.action;
- if (action == @selector(showShareMenu:)) {
- [(NSButton *)toolbarItem.view sendActionOn:NSLeftMouseDownMask];
- if (![MGLAccountManager accessToken]) {
- return NO;
- }
- NSURL *styleURL = self.mapView.styleURL;
- return ([styleURL.scheme isEqualToString:@"mapbox"]
- && [styleURL.pathComponents.firstObject isEqualToString:@"styles"]);
- }
- if (action == @selector(showStyle:)) {
- NSPopUpButton *popUpButton = (NSPopUpButton *)toolbarItem.view;
- NSInteger index = self.indexOfStyleInToolbarItem;
- if (index == NSNotFound) {
- index = -1;
- }
- [popUpButton selectItemAtIndex:index];
- if (index == -1) {
- NSString *name = self.mapView.style.name;
- popUpButton.title = name ?: @"Custom";
- }
- }
- if (action == @selector(toggleLayers:)) {
- BOOL isShown = ![self.splitView isSubviewCollapsed:self.splitView.arrangedSubviews.firstObject];
- [(NSButton *)toolbarItem.view setState:isShown ? NSOnState : NSOffState];
- }
- return NO;
-}
-
-#pragma mark NSSharingServicePickerDelegate methods
-
-- (NSArray<NSSharingService *> *)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker sharingServicesForItems:(NSArray *)items proposedSharingServices:(NSArray<NSSharingService *> *)proposedServices {
- NSURL *shareURL = self.shareURL;
- NSURL *browserURL = [[NSWorkspace sharedWorkspace] URLForApplicationToOpenURL:shareURL];
- NSImage *browserIcon = [[NSWorkspace sharedWorkspace] iconForFile:browserURL.path];
- NSString *browserName = [[NSFileManager defaultManager] displayNameAtPath:browserURL.path];
- NSString *browserServiceName = [NSString stringWithFormat:@"Open in %@", browserName];
-
- NSSharingService *browserService = [[NSSharingService alloc] initWithTitle:browserServiceName
- image:browserIcon
- alternateImage:nil
- handler:^{
- [[NSWorkspace sharedWorkspace] openURL:self.shareURL];
- }];
-
- NSMutableArray *sharingServices = [proposedServices mutableCopy];
- [sharingServices insertObject:browserService atIndex:0];
- return sharingServices;
-}
-
-#pragma mark NSMenuDelegate methods
-
-- (void)menuWillOpen:(NSMenu *)menu {
- if (menu == self.mapViewContextMenu) {
- _mouseLocationForMapViewContextMenu = [self.window.contentView convertPoint:self.window.mouseLocationOutsideOfEventStream
- toView:self.mapView];
- }
-}
-
-#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
-
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style {
- [self updateLabels];
-}
-
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation {
- return YES;
-}
-
-- (MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation {
- MGLAnnotationImage *annotationImage = [self.mapView dequeueReusableAnnotationImageWithIdentifier:MGLDroppedPinAnnotationImageIdentifier];
- if (!annotationImage) {
- NSString *imagePath = [[NSBundle bundleForClass:[MGLMapView class]]
- pathForResource:@"default_marker" ofType:@"pdf"];
- NSImage *image = [[NSImage alloc] initWithContentsOfFile:imagePath];
- NSRect alignmentRect = image.alignmentRect;
- alignmentRect.origin.y = NSMidY(alignmentRect);
- alignmentRect.size.height /= 2;
- image.alignmentRect = alignmentRect;
- annotationImage = [MGLAnnotationImage annotationImageWithImage:image
- reuseIdentifier:MGLDroppedPinAnnotationImageIdentifier];
- }
- if (_randomizesCursorsOnDroppedPins) {
- NSArray *cursors = @[
- [NSCursor IBeamCursor],
- [NSCursor crosshairCursor],
- [NSCursor pointingHandCursor],
- [NSCursor disappearingItemCursor],
- [NSCursor IBeamCursorForVerticalLayout],
- [NSCursor operationNotAllowedCursor],
- [NSCursor dragLinkCursor],
- [NSCursor dragCopyCursor],
- [NSCursor contextualMenuCursor],
- ];
- annotationImage.cursor = cursors[arc4random_uniform((uint32_t)cursors.count) % cursors.count];
- } else {
- annotationImage.cursor = nil;
- }
- return annotationImage;
-}
-
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation {
- if ([annotation isKindOfClass:[DroppedPinAnnotation class]]) {
- DroppedPinAnnotation *droppedPin = (DroppedPinAnnotation *)annotation;
- [droppedPin resume];
- }
-}
-
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation {
- if ([annotation isKindOfClass:[DroppedPinAnnotation class]]) {
- DroppedPinAnnotation *droppedPin = (DroppedPinAnnotation *)annotation;
- [droppedPin pause];
- }
-}
-
-- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation {
- return 0.8;
-}
-
-#pragma mark - MGLComputedShapeSourceDataSource
-- (NSArray<id <MGLFeature>>*)featuresInCoordinateBounds:(MGLCoordinateBounds)bounds zoomLevel:(NSUInteger)zoom {
- double gridSpacing;
- if(zoom >= 13) {
- gridSpacing = 0.01;
- } else if(zoom >= 11) {
- gridSpacing = 0.05;
- } else if(zoom == 10) {
- gridSpacing = .1;
- } else if(zoom == 9) {
- gridSpacing = 0.25;
- } else if(zoom == 8) {
- gridSpacing = 0.5;
- } else if (zoom >= 6) {
- gridSpacing = 1;
- } else if(zoom == 5) {
- gridSpacing = 2;
- } else if(zoom >= 4) {
- gridSpacing = 5;
- } else if(zoom == 2) {
- gridSpacing = 10;
- } else {
- gridSpacing = 20;
- }
-
- NSMutableArray <id <MGLFeature>> * features = [NSMutableArray array];
- CLLocationCoordinate2D coords[2];
-
- for (double y = ceil(bounds.ne.latitude / gridSpacing) * gridSpacing; y >= floor(bounds.sw.latitude / gridSpacing) * gridSpacing; y -= gridSpacing) {
- coords[0] = CLLocationCoordinate2DMake(y, bounds.sw.longitude);
- coords[1] = CLLocationCoordinate2DMake(y, bounds.ne.longitude);
- MGLPolylineFeature *feature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
- feature.attributes = @{@"value": @(y)};
- [features addObject:feature];
- }
-
- for (double x = floor(bounds.sw.longitude / gridSpacing) * gridSpacing; x <= ceil(bounds.ne.longitude / gridSpacing) * gridSpacing; x += gridSpacing) {
- coords[0] = CLLocationCoordinate2DMake(bounds.sw.latitude, x);
- coords[1] = CLLocationCoordinate2DMake(bounds.ne.latitude, x);
- MGLPolylineFeature *feature = [MGLPolylineFeature polylineWithCoordinates:coords count:2];
- feature.attributes = @{@"value": @(x)};
- [features addObject:feature];
- }
-
- return features;
-}
-
-@end
-
-@interface ValidatedToolbarItem : NSToolbarItem
-
-@end
-
-@implementation ValidatedToolbarItem
-
-- (void)validate {
- [(MapDocument *)self.toolbar.delegate validateToolbarItem:self];
-}
-
-@end
diff --git a/platform/macos/app/OfflinePackNameValueTransformer.h b/platform/macos/app/OfflinePackNameValueTransformer.h
deleted file mode 100644
index 11fe3ff441..0000000000
--- a/platform/macos/app/OfflinePackNameValueTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface OfflinePackNameValueTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/OfflinePackNameValueTransformer.m b/platform/macos/app/OfflinePackNameValueTransformer.m
deleted file mode 100644
index d1b3c20ac1..0000000000
--- a/platform/macos/app/OfflinePackNameValueTransformer.m
+++ /dev/null
@@ -1,33 +0,0 @@
-#import "OfflinePackNameValueTransformer.h"
-
-static NSString * const MBXOfflinePackContextNameKey = @"Name";
-
-@implementation OfflinePackNameValueTransformer
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return YES;
-}
-
-- (NSString *)transformedValue:(NSData *)context {
- NSAssert([context isKindOfClass:[NSData class]], @"Context should be NSData.");
-
- NSDictionary *userInfo = [NSKeyedUnarchiver unarchiveObjectWithData:context];
- NSAssert([userInfo isKindOfClass:[NSDictionary class]], @"Context of offline pack isn’t a dictionary.");
- NSString *name = userInfo[MBXOfflinePackContextNameKey];
- NSAssert([name isKindOfClass:[NSString class]], @"Name of offline pack isn’t a string.");
- return name;
-}
-
-- (NSData *)reverseTransformedValue:(NSString *)name {
- NSAssert([name isKindOfClass:[NSString class]], @"Name should be a string.");
-
- return [NSKeyedArchiver archivedDataWithRootObject:@{
- MBXOfflinePackContextNameKey: name,
- }];
-}
-
-@end
diff --git a/platform/macos/app/StyleLayerIconTransformer.h b/platform/macos/app/StyleLayerIconTransformer.h
deleted file mode 100644
index 1af1d512d6..0000000000
--- a/platform/macos/app/StyleLayerIconTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface StyleLayerIconTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/StyleLayerIconTransformer.m b/platform/macos/app/StyleLayerIconTransformer.m
deleted file mode 100644
index c089165924..0000000000
--- a/platform/macos/app/StyleLayerIconTransformer.m
+++ /dev/null
@@ -1,47 +0,0 @@
-#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:[MGLFillExtrusionStyleLayer class]]) {
- return [NSImage imageNamed:@"fill-extrusion"];
- }
- 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"];
- }
- if ([layer isKindOfClass:[MGLHeatmapStyleLayer class]]) {
- return [NSImage imageNamed:@"heatmap"];
- }
- if ([layer isKindOfClass:[MGLHillshadeStyleLayer class]]) {
- return [NSImage imageNamed:@"hillshade"];
- }
-
- return nil;
-}
-
-@end
diff --git a/platform/macos/app/TimeIntervalTransformer.h b/platform/macos/app/TimeIntervalTransformer.h
deleted file mode 100644
index ca88ad2cd1..0000000000
--- a/platform/macos/app/TimeIntervalTransformer.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@interface TimeIntervalTransformer : NSValueTransformer
-
-@end
diff --git a/platform/macos/app/TimeIntervalTransformer.m b/platform/macos/app/TimeIntervalTransformer.m
deleted file mode 100644
index 2c9cb6fc74..0000000000
--- a/platform/macos/app/TimeIntervalTransformer.m
+++ /dev/null
@@ -1,53 +0,0 @@
-#import "TimeIntervalTransformer.h"
-
-@implementation TimeIntervalTransformer
-
-+ (Class)transformedValueClass {
- return [NSString class];
-}
-
-+ (BOOL)allowsReverseTransformation {
- return NO;
-}
-
-NSString *NumberAndUnitString(NSInteger quantity, NSString *singular, NSString *plural) {
- return [NSString stringWithFormat:@"%ld %@", quantity, quantity == 1 ? singular : plural];
-}
-
-- (id)transformedValue:(id)value {
- if (![value isKindOfClass:[NSValue class]]) {
- return nil;
- }
-
- NSTimeInterval timeInterval = [value doubleValue];
- NSInteger seconds = floor(timeInterval);
- NSInteger minutes = floor(seconds / 60);
- seconds -= minutes * 60;
- NSInteger hours = floor(minutes / 60);
- minutes -= hours * 60;
- NSInteger days = floor(hours / 24);
- hours -= days * 24;
- NSInteger weeks = floor(days) / 7;
- days -= weeks * 7;
-
- NSMutableArray *components = [NSMutableArray array];
- if (seconds || timeInterval < 60) {
- [components addObject:NumberAndUnitString(seconds, @"second", @"seconds")];
- }
- if (minutes) {
- [components insertObject:NumberAndUnitString(minutes, @"minute", @"minutes") atIndex:0];
- }
- if (hours) {
- [components insertObject:NumberAndUnitString(hours, @"hour", @"hours") atIndex:0];
- }
- if (days) {
- [components insertObject:NumberAndUnitString(days, @"day", @"days") atIndex:0];
- }
- if (weeks) {
- [components insertObject:NumberAndUnitString(weeks, @"week", @"weeks") atIndex:0];
- }
-
- return [components componentsJoinedByString:@", "];
-}
-
-@end
diff --git a/platform/macos/app/ar.lproj/Localizable.strings b/platform/macos/app/ar.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ar.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/bg.lproj/Localizable.strings b/platform/macos/app/bg.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/bg.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/ca.lproj/Localizable.strings b/platform/macos/app/ca.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ca.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/cs.lproj/Localizable.strings b/platform/macos/app/cs.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/cs.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/da.lproj/Localizable.strings b/platform/macos/app/da.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/da.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/de.lproj/Localizable.strings b/platform/macos/app/de.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/de.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/es.lproj/Localizable.strings b/platform/macos/app/es.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/es.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/fi.lproj/Localizable.strings b/platform/macos/app/fi.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/fi.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/fr.lproj/Localizable.strings b/platform/macos/app/fr.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/fr.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/gl.lproj/Localizable.strings b/platform/macos/app/gl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/gl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/he.lproj/Localizable.strings b/platform/macos/app/he.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/he.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/heatmap.json b/platform/macos/app/heatmap.json
deleted file mode 100644
index 6469e57022..0000000000
--- a/platform/macos/app/heatmap.json
+++ /dev/null
@@ -1,809 +0,0 @@
-{
- "version": 8,
- "name": "Basic Heatmap",
- "center": [
- 30.49860107152665,
- 50.459868549177486
- ],
- "zoom": 14.033276876197775,
- "bearing": 0,
- "pitch": 0,
- "sources": {
- "mapbox": {
- "url": "mapbox://mapbox.mapbox-streets-v7",
- "type": "vector"
- }
- },
- "sprite": "mapbox://sprites/mourner/cjcgg2bl16cf42snvcbbaf09z",
- "glyphs": "mapbox://fonts/mourner/{fontstack}/{range}.pbf",
- "layers": [
- {
- "id": "background",
- "type": "background",
- "paint": {
- "background-color": "#dedede"
- }
- },
- {
- "id": "landuse_overlay_national_park",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "landuse_overlay",
- "filter": [
- "==",
- "class",
- "national_park"
- ],
- "paint": {
- "fill-color": "#d2edae",
- "fill-opacity": 0.75
- }
- },
- {
- "id": "landuse_park",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "landuse",
- "filter": [
- "==",
- "class",
- "park"
- ],
- "paint": {
- "fill-color": "#d2edae"
- }
- },
- {
- "id": "waterway",
- "type": "line",
- "source": "mapbox",
- "source-layer": "waterway",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "canal",
- "river"
- ]
- ],
- "paint": {
- "line-color": "#a0cfdf",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 8,
- 0.5
- ],
- [
- 20,
- 15
- ]
- ]
- }
- }
- },
- {
- "id": "water",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "water",
- "paint": {
- "fill-color": "#a0cfdf"
- }
- },
- {
- "id": "building",
- "type": "fill",
- "source": "mapbox",
- "source-layer": "building",
- "paint": {
- "fill-color": "#d6d6d6"
- }
- },
- {
- "id": "tunnel_minor",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#efefef",
- "line-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- },
- "line-dasharray": [
- 0.36,
- 0.18
- ]
- }
- },
- {
- "id": "tunnel_major",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "tunnel"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#fff",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 6,
- 0.5
- ],
- [
- 20,
- 30
- ]
- ]
- },
- "line-dasharray": [
- 0.28,
- 0.14
- ]
- }
- },
- {
- "id": "road_minor",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ],
- [
- "in",
- "structure",
- "ford",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#efefef",
- "line-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "road_major",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ],
- [
- "in",
- "structure",
- "ford",
- "none"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#fff",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 6,
- 0.5
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_minor case",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#dedede",
- "line-width": {
- "base": 1.6,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 20,
- 10
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_major case",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "line-cap": "butt",
- "line-join": "miter"
- },
- "paint": {
- "line-color": "#dedede",
- "line-width": {
- "base": 1.6,
- "stops": [
- [
- 12,
- 0.5
- ],
- [
- 20,
- 10
- ]
- ]
- },
- "line-gap-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_minor",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "link",
- "motorway_link",
- "path",
- "pedestrian",
- "service",
- "street",
- "street_limited",
- "track"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#efefef",
- "line-width": {
- "base": 1.55,
- "stops": [
- [
- 4,
- 0.25
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "bridge_major",
- "type": "line",
- "source": "mapbox",
- "source-layer": "road",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "==",
- "structure",
- "bridge"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#fff",
- "line-width": {
- "base": 1.4,
- "stops": [
- [
- 6,
- 0.5
- ],
- [
- 20,
- 30
- ]
- ]
- }
- }
- },
- {
- "id": "admin_country",
- "type": "line",
- "source": "mapbox",
- "source-layer": "admin",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "all",
- [
- "<=",
- "admin_level",
- 2
- ],
- [
- "==",
- "maritime",
- 0
- ]
- ]
- ],
- "layout": {
- "line-cap": "round",
- "line-join": "round"
- },
- "paint": {
- "line-color": "#8b8a8a",
- "line-width": {
- "base": 1.3,
- "stops": [
- [
- 3,
- 0.5
- ],
- [
- 22,
- 15
- ]
- ]
- }
- }
- },
- {
- "id": "road_major_label",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "road_label",
- "filter": [
- "all",
- [
- "==",
- "$type",
- "LineString"
- ],
- [
- "in",
- "class",
- "motorway",
- "primary",
- "secondary",
- "tertiary",
- "trunk"
- ]
- ],
- "layout": {
- "symbol-placement": "line",
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Semibold",
- "Arial Unicode MS Bold"
- ],
- "text-transform": "uppercase",
- "text-letter-spacing": 0.1,
- "text-size": {
- "base": 1.4,
- "stops": [
- [
- 10,
- 8
- ],
- [
- 20,
- 14
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 2
- }
- },
- {
- "id": "place_label_other",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "place_label",
- "minzoom": 8,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "in",
- "type",
- "hamlet",
- "island",
- "neighbourhood",
- "suburb",
- "town",
- "village"
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Semibold",
- "Arial Unicode MS Bold"
- ],
- "text-max-width": 6,
- "text-size": {
- "stops": [
- [
- 6,
- 12
- ],
- [
- 12,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "place_label_city",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "place_label",
- "maxzoom": 16,
- "filter": [
- "all",
- [
- "==",
- "$type",
- "Point"
- ],
- [
- "==",
- "type",
- "city"
- ]
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Bold",
- "Arial Unicode MS Bold"
- ],
- "text-max-width": 10,
- "text-size": {
- "stops": [
- [
- 3,
- 12
- ],
- [
- 8,
- 16
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "country_label",
- "type": "symbol",
- "source": "mapbox",
- "source-layer": "country_label",
- "maxzoom": 12,
- "filter": [
- "==",
- "$type",
- "Point"
- ],
- "layout": {
- "text-field": "{name_en}",
- "text-font": [
- "Open Sans Regular",
- "Arial Unicode MS Regular"
- ],
- "text-max-width": 10,
- "text-size": {
- "stops": [
- [
- 3,
- 14
- ],
- [
- 8,
- 22
- ]
- ]
- }
- },
- "paint": {
- "text-color": "#666",
- "text-halo-color": "rgba(255,255,255,0.75)",
- "text-halo-width": 1,
- "text-halo-blur": 1
- }
- },
- {
- "id": "road-heatmap",
- "type": "heatmap",
- "source": "mapbox",
- "source-layer": "road",
- "paint": {
- "heatmap-intensity": 1
- }
- }
- ]
-}
diff --git a/platform/macos/app/hu.lproj/Localizable.strings b/platform/macos/app/hu.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/hu.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/ja.lproj/Localizable.strings b/platform/macos/app/ja.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ja.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/ko.lproj/Localizable.strings b/platform/macos/app/ko.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ko.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/lt.lproj/Localizable.strings b/platform/macos/app/lt.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/lt.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/main.m b/platform/macos/app/main.m
deleted file mode 100644
index 8a6799b414..0000000000
--- a/platform/macos/app/main.m
+++ /dev/null
@@ -1,5 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-int main(int argc, const char * argv[]) {
- return NSApplicationMain(argc, argv);
-}
diff --git a/platform/macos/app/nl.lproj/Localizable.strings b/platform/macos/app/nl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/nl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/pl.lproj/Localizable.strings b/platform/macos/app/pl.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/pl.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/pt-BR.lproj/Localizable.strings b/platform/macos/app/pt-BR.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/pt-BR.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/pt-PT.lproj/Localizable.strings b/platform/macos/app/pt-PT.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/pt-PT.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/resources/background.svg b/platform/macos/app/resources/background.svg
deleted file mode 100644
index 39451e8b13..0000000000
--- a/platform/macos/app/resources/background.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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>
diff --git a/platform/macos/app/resources/circle.svg b/platform/macos/app/resources/circle.svg
deleted file mode 100644
index 91e0b11990..0000000000
--- a/platform/macos/app/resources/circle.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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>
diff --git a/platform/macos/app/resources/fill-extrusion.svg b/platform/macos/app/resources/fill-extrusion.svg
deleted file mode 100644
index 4052ba5253..0000000000
--- a/platform/macos/app/resources/fill-extrusion.svg
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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.92.2 5c3e80d, 2017-08-06"
- sodipodi:docname="fill-extrusion.svg"
- inkscape:export-filename="/Users/mxn/Desktop/symbol.png"
- inkscape:export-xdpi="90.000244"
- inkscape:export-ydpi="90.000244">
- <defs
- id="defs4150">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="27.393974 : 17.772818 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="-8.2635625 : 18.670616 : 1"
- inkscape:persp3d-origin="3.017385 : 22.114843 : 1"
- id="perspective909" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="-4.7399183"
- inkscape:cy="19.282107"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="755"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1"
- inkscape:snap-nodes="false"
- inkscape:snap-others="false"
- inkscape:snap-grids="false"
- inkscape:snap-to-guides="false"
- inkscape:snap-global="true"
- inkscape:snap-page="true" />
- <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)">
- <g
- sodipodi:type="inkscape:box3d"
- id="g1023"
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:perspectiveID="#perspective909"
- inkscape:corner0="1.0855329 : -0.011103979 : 0 : 1"
- inkscape:corner7="0.098433878 : -0.023326662 : 0.57925509 : 1">
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1025"
- style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="6"
- d="m 15.705552,1037.8317 v 5.8607 l -5.210258,-2.1739 v -4.5868 z"
- points="15.705552,1043.6924 10.495294,1041.5185 10.495294,1036.9317 15.705552,1037.8317 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1029"
- style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="3"
- d="m 15.705552,1037.8317 -10.5037094,2.9137 v 11.1274 l 10.5037094,-8.1804 z"
- points="5.2018426,1040.7454 5.2018426,1051.8728 15.705552,1043.6924 15.705552,1037.8317 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1031"
- style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="14"
- d="m 5.2018426,1040.7454 v 11.1274 l -4.64919579,-6.2775 v -7.2854 z"
- points="5.2018426,1051.8728 0.55264681,1045.5953 0.55264681,1038.3099 5.2018426,1040.7454 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1027"
- style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="5"
- d="m 15.705552,1037.8317 -10.5037094,2.9137 -4.64919579,-2.4355 9.94264719,-1.3782 z"
- points="5.2018426,1040.7454 0.55264681,1038.3099 10.495294,1036.9317 15.705552,1037.8317 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1033"
- style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="13"
- d="m 15.705552,1043.6924 -10.5037094,8.1804 -4.64919579,-6.2775 9.94264719,-4.0768 z"
- points="5.2018426,1051.8728 0.55264681,1045.5953 10.495294,1041.5185 15.705552,1043.6924 " />
- <path
- sodipodi:type="inkscape:box3dside"
- id="path1035"
- style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157475;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:box3dsidetype="11"
- d="m 10.495294,1036.9317 -9.94264719,1.3782 v 7.2854 l 9.94264719,-4.0768 z"
- points="0.55264681,1038.3099 0.55264681,1045.5953 10.495294,1041.5185 10.495294,1036.9317 " />
- </g>
- </g>
-</svg>
diff --git a/platform/macos/app/resources/fill.svg b/platform/macos/app/resources/fill.svg
deleted file mode 100644
index 7860a5fddb..0000000000
--- a/platform/macos/app/resources/fill.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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>
diff --git a/platform/macos/app/resources/heatmap.svg b/platform/macos/app/resources/heatmap.svg
deleted file mode 100644
index fa2a46590a..0000000000
--- a/platform/macos/app/resources/heatmap.svg
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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.92.2 5c3e80d, 2017-08-06"
- sodipodi:docname="heatmap.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="23.25"
- inkscape:cx="4.7741936"
- inkscape:cy="7.6812068"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="755"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1"
- inkscape:snap-bbox="true" />
- <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="opacity:1;fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:0.99369001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11.237265,1036.8591 a 4.2655011,4.1972104 0 0 0 -4.2658922,4.1979 4.2655011,4.1972104 0 0 0 0.025231,0.427 5.3408028,5.2552965 0 0 0 -1.1586611,-0.1299 5.3408028,5.2552965 0 0 0 -5.34109749,5.2556 5.3408028,5.2552965 0 0 0 5.34109749,5.2557 5.3408028,5.2552965 0 0 0 5.3410983,-5.2557 5.3408028,5.2552965 0 0 0 -0.186318,-1.3664 4.2655011,4.1972104 0 0 0 0.244542,0.012 4.2655011,4.1972104 0 0 0 4.26589,-4.198 4.2655011,4.1972104 0 0 0 -4.26589,-4.1979 z"
- id="path818"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;stroke-width:0.99369001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11.005859,1038.875 c -4.8895767,1.3679 0.321278,7.2823 2.416016,2.7578 0.450567,-1.4666 -0.923376,-2.9624 -2.416016,-2.7578 z m -5.5078121,4.5 c -5.49629855,0.4756 -2.1892763,9.0394 2.2363281,5.9121 2.667642,-1.8963 1.5392118,-6.8607 -2.2363281,-5.9121 z"
- id="path836"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/hillshade.svg b/platform/macos/app/resources/hillshade.svg
deleted file mode 100644
index d3f0d72999..0000000000
--- a/platform/macos/app/resources/hillshade.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?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.92.2 5c3e80d, 2017-08-06"
- sodipodi:docname="hillshade.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="23.25"
- inkscape:cx="6.2795699"
- inkscape:cy="11.122067"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1280"
- inkscape:window-height="755"
- inkscape:window-x="0"
- inkscape:window-y="1"
- inkscape:window-maximized="1"
- inkscape:snap-bbox="true" />
- <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 />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:type="star"
- style="opacity:1;fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path839"
- sodipodi:sides="3"
- sodipodi:cx="12.189357"
- sodipodi:cy="1045.3247"
- sodipodi:r1="12.575057"
- sodipodi:r2="6.2875285"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 23.079676,1051.6122 -21.7806381,0 10.8903191,-18.8625 z"
- inkscape:transform-center-y="-2.1749516"
- transform="matrix(0.6563034,0,0,0.75784422,8.3706122e-5,254.83559)" />
- <path
- transform="matrix(0.6563034,0,0,0.75784422,8.3706122e-5,254.83559)"
- style="opacity:1;fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;stroke-width:1.50017999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:transform-center-y="-2.1749516"
- d="m 23.079676,1051.6122 h -7.842948 l -3.047371,-18.8625 z"
- id="path841"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/platform/macos/app/resources/symbol.svg b/platform/macos/app/resources/symbol.svg
deleted file mode 100644
index 68847cb50f..0000000000
--- a/platform/macos/app/resources/symbol.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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>
diff --git a/platform/macos/app/ru.lproj/Localizable.strings b/platform/macos/app/ru.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/ru.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/sv.lproj/Localizable.strings b/platform/macos/app/sv.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/sv.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/uk.lproj/Localizable.strings b/platform/macos/app/uk.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/uk.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/vi.lproj/Localizable.strings b/platform/macos/app/vi.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/vi.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/wms.json b/platform/macos/app/wms.json
deleted file mode 100644
index e5fb236259..0000000000
--- a/platform/macos/app/wms.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "version": 8,
- "name": "WMS Test",
- "sources": {
- "wms-test": {
- "type": "raster",
- "tiles": [
- "https://geodata.state.nj.us/imagerywms/Natural2015?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&width=256&height=256&layers=Natural2015"
- ],
- "tileSize": 256
- }
- },
- "layers": [{
- "id": "wms-test-layer",
- "type": "raster",
- "source": "wms-test",
- "paint": {
- "raster-fade-duration": 100
- }
- }]
-}
diff --git a/platform/macos/app/zh-Hans.lproj/Localizable.strings b/platform/macos/app/zh-Hans.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/zh-Hans.lproj/Localizable.strings
+++ /dev/null
diff --git a/platform/macos/app/zh-Hant.lproj/Localizable.strings b/platform/macos/app/zh-Hant.lproj/Localizable.strings
deleted file mode 100644
index e69de29bb2..0000000000
--- a/platform/macos/app/zh-Hant.lproj/Localizable.strings
+++ /dev/null