diff options
Diffstat (limited to 'platform/macos/app')
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 Binary files differdeleted file mode 100644 index fbf35e5d61..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png Binary files differdeleted file mode 100644 index e60680874a..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png Binary files differdeleted file mode 100644 index 361198da92..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png Binary files differdeleted file mode 100644 index f6bf78a4b4..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png Binary files differdeleted file mode 100644 index e60680874a..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png Binary files differdeleted file mode 100644 index e7c0271490..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png Binary files differdeleted file mode 100644 index e919899269..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png Binary files differdeleted file mode 100644 index 5035f60941..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png Binary files differdeleted file mode 100644 index e7c0271490..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png +++ /dev/null diff --git a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png Binary files differdeleted file mode 100644 index a2e1dfd02b..0000000000 --- a/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png +++ /dev/null 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 -] *IHf1x ܋E?Oն
ChgՓT>R2}̃7e7=y!^Epp$aCQeQavJ$6r\+6"uTwtȂ܄Cpoz>(@\Q@Xx^o6f58KP::ۨv:DmEQu/z\';*U2.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 -19Ż1?''aRAf1X)GK ANv_4Nܩ% 3Z -cr'QJ2Wp{t\dImW44J -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? H1C HfGV.W9gՖiƞ&+xcZO_i&3O&kt\`5kՖ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 Binary files differdeleted file mode 100644 index ca7e4cc505..0000000000 --- a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf +++ /dev/null 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 Binary files differdeleted file mode 100644 index 88195c3735..0000000000 --- a/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf +++ /dev/null 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灴aU18|=
_?ݜ{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 Binary files differdeleted file mode 100644 index c304b619c4..0000000000 --- a/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index ed09fffbe1..0000000000 --- a/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index fee630f863..0000000000 --- a/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index c4c7146afa..0000000000 --- a/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png +++ /dev/null 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 |