From c49191e7ac45b59838ca51ab802a2b030ccfa34e Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Fri, 24 Feb 2017 18:49:57 +0200 Subject: [PATCH 1/9] build core virtualenv from specific commit instead of branch --- native/macos/build_blockstack_virtualenv.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/native/macos/build_blockstack_virtualenv.sh b/native/macos/build_blockstack_virtualenv.sh index 76ed42741..e8362770a 100644 --- a/native/macos/build_blockstack_virtualenv.sh +++ b/native/macos/build_blockstack_virtualenv.sh @@ -63,7 +63,7 @@ pip install git+https://github.com/blockstack/dns-zone-file-py.git@rc-0.14.1 echo "Installing latest blockstack..." -pip install git+https://github.com/blockstack/blockstack-core.git@rc-0.14.1b +pip install git+https://github.com/blockstack/blockstack-core.git@089d436caea79919296fbc05d6d46e5e52b57d6c echo "Blockstack virtual environment created." From 728fcea4ac0053ad3dd7611ed57174fb44551a59 Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Fri, 24 Feb 2017 18:50:38 +0200 Subject: [PATCH 2/9] add user account wide url protocol handler #240 --- .../Blockstack/Blockstack/ApplicationDelegate.m | 12 ++++++++++++ .../Blockstack/Blockstack/Blockstack-Info.plist | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m index bc05f8979..a35d10e99 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m @@ -15,7 +15,19 @@ - (void)dealloc { } +-(void)applicationWillFinishLaunching:(NSNotification *)aNotification +{ + NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager]; + [appleEventManager setEventHandler:self + andSelector:@selector(handleGetURLEvent:withReplyEvent:) + forEventClass:kInternetEventClass andEventID:kAEGetURL]; +} +- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent +{ + NSURL *url = [NSURL URLWithString:[[event paramDescriptorForKeyword:keyDirectObject] stringValue]]; + NSLog(@"Blockstack URL: %@", url); +} - (void)applicationDidFinishLaunching:(NSNotification *)notification { diff --git a/native/macos/Blockstack/Blockstack/Blockstack-Info.plist b/native/macos/Blockstack/Blockstack/Blockstack-Info.plist index 3384ae1f7..482cd6459 100644 --- a/native/macos/Blockstack/Blockstack/Blockstack-Info.plist +++ b/native/macos/Blockstack/Blockstack/Blockstack-Info.plist @@ -18,6 +18,17 @@ 0.3.0 CFBundleSignature ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + blockstack + + + CFBundleVersion 17 LSApplicationCategoryType From e19a40495b25bc8c129d8d3dee677b380c53fcc0 Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Fri, 24 Feb 2017 20:22:13 +0200 Subject: [PATCH 3/9] improved mac status bar images --- .../MenuBar.imageset/Contents.json | 4 ++-- .../blockstack-bug-mac-menubar-1x.png | Bin 1072 -> 534 bytes .../blockstack-bug-mac-menubar-2x.png | Bin 0 -> 1072 bytes .../blockstack-bug-mac-menubar.png | Bin 534 -> 0 bytes .../MenuBarDark.imageset/Artboard-2x.png | Bin 1192 -> 0 bytes .../MenuBarDark.imageset/Artboard.png | Bin 620 -> 0 bytes .../MenuBarDark.imageset/Contents.json | 4 ++-- .../blockstack-bug-mac-menubar-1x-inverted.png | Bin 0 -> 517 bytes .../blockstack-bug-mac-menubar-2x-inverted.png | Bin 0 -> 959 bytes 9 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/blockstack-bug-mac-menubar-2x.png delete mode 100644 native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/blockstack-bug-mac-menubar.png delete mode 100644 native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/Artboard-2x.png delete mode 100644 native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/Artboard.png create mode 100644 native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/blockstack-bug-mac-menubar-1x-inverted.png create mode 100644 native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/blockstack-bug-mac-menubar-2x-inverted.png diff --git a/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/Contents.json b/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/Contents.json index 0f8fc4134..e1c333ff5 100644 --- a/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/Contents.json +++ b/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/Contents.json @@ -2,12 +2,12 @@ "images" : [ { "idiom" : "universal", - "filename" : "blockstack-bug-mac-menubar.png", + "filename" : "blockstack-bug-mac-menubar-1x.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "blockstack-bug-mac-menubar-1x.png", + "filename" : "blockstack-bug-mac-menubar-2x.png", "scale" : "2x" }, { diff --git a/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/blockstack-bug-mac-menubar-1x.png b/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBar.imageset/blockstack-bug-mac-menubar-1x.png index 41b86616177bf8623d0a0841f984fc7272a8a1c7..9aee0db27eee555c669688448fe2e3237745d833 100644 GIT binary patch literal 534 zcmV+x0_pvUP)Px$&`Cr=R5%f}R54G&P!OiIu+*k>p+yrQO`{XKI5^_K4}gVL2S*nsHYVc8;6mac z3oHMCbYO9CstJh<1c(a@DX|HOiLH0SBlj9aF#3kx-FM&j_4V4mNaUZE5cbVvGUvYU zUkZY790Y+3eKE{g)&X!l;PgdNd>9UgkCew5FHP@&z~NNzO&);x4K?R>gFF3&Dc(x} z?G+|$amM)gtbtLIq=;o%F^XYsnq~}pbbO!&vP)nM_8}NZ0ihhBYis%N40q>S@7QT%nHUayg~l zZo8i6`H0H0EEbE!c(>d2;AOp2{&+k-WA#R3M%p$~MX|@Qb#ae^Ah?ElHTS__Fo(~`uh;97 z>2&&m++MFYR}@8PG#V4=)0Y>_X0vole_eq_E~L5q^-j(P(tRG~6h_w9gv5 zM$o=c4QGs}6m9O1;~~_fd~U|B>%MB5=D^)`cr+Xd{$1R-h}Z{?2lX?U-qMqeaQ;61 Y1UAo^9A~Q8b^rhX07*qoM6N<$f{>H_%>V!Z literal 1072 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 Y1UAo^9A~Q8b^rhX07*qoM6N<$f{>H_%>V!Z diff --git a/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/Artboard-2x.png b/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/Artboard-2x.png deleted file mode 100644 index 55438027cf7badd15be2c1639e2127f51a60cacc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192 zcmV;Z1XufsP)Px(Vo5|nR9Fe^SxZY>K@`rtNsN#94z_}g4-f^xZd?@X&V|%RH!fVcth6G6h#(4X zT&SBaDz>FX|9~#U))w4|U~s7wL=^FnYB43&v`LyrtLZnA2{(66?zL$(6gn`>%$f7} za_&6NoJaY(K!)eN15!Jj~Xt&*xhKa|R`FQ#5!tWU*N4x3{<1I*%2>!vOmb zvnd73(80@=U@+JkLmKS}fI+WUGo^4WV4(n)rVyaov|UXwsR}+{)anbK`xy}V91);F8P;P8&w1&gsi-m;+e;^Pbk1d4=>#{RHt_Yj1w6ydCI5f}Q zf`S5hc6Rm-P7`){7;v$icXf4rT3%ib#A%NX>gwt&Q&UqVxw*NQ7tPVpQMkRm{pk4k z_$S4$pal;P5AQ0*25L#9DH*8#z`%fwgJttsSy{%hv9a3}FQbi)j^5&6*|?;nByD(j z*v9%gMZiJot>SK znus<0!{hO=7(pnzySprIh%1ziIEDm+qyXa+yRo)nAh3Zh1_uXS32YdKhK5{TuQ#?S zPfkvLjEs!96Y*=&sZF=7CBWy>)6=Ea*4Ef5fsLfOfr^TXj7?2VS)ouUGCx1>!$!Tz zDPe$Ps<=(oCJk7rjbE$`#)ek5B=%1(0ruq=LQs=aR#x_T za&nSAD239|(UF65H+FTmw6x@a_HlJ}H7GFa5RzIFy}iAK94y!0-Q8_78tF$g_~YUR zlgT9Y_4UQkxE{SWDZq%<1Y{W*8FFT3CaF&u_;5g!4nC*Vk_NN{*xb_6lCWOa*Vn(} z`Xyrthr=Q8BNWxlKP19H0Va(q6--P_oXyS6eFg3EdfnRE3ikB$oG5ve{r>)b*V@|J zcTPjV|80DH{0kpzv;r3DYSsJ} z*t1&m#laQ2-R^T#KGbcUPUn?=m_kw96Q9wkC2^(@NOf1hLIHNB8l}R%fQ16=Pza>7 zi|o&e8h`*8f%zMjCQ>t|U>v~X_Kn)EZ~>g2o`&(5WPJD3%r`lfW%(K2eXDAlf`=Ic zQk^g1<@ajln;OIRyS=@=*OWcs9Og_&#_@#q6VPrdIT!@k=f9oM=Ac;{O~0~?CQHn* zyc=6D*{CeZL4G07^$L4Ivwh+Nz%w|Px%CP_p=R5%f(lrf7MQ4q&>-8G7?7cbG%+zHy*T_;FV2(}^!!9pyolR95OECtJ? z6YK;bWgwMUELaB>wNmsB#2AIc&F;CnnMs`Go!%bgeDIvv|IGY+``+y1Ic7wo(MwfT zKZ5j@=XsxD7!D@HItx3~nijCua}+3eV@H{ij_z9FF(H;qV6QY*f5o z>2sloIoCAp1My5S2=7Qd!I}&f>|=p~AaKQE(O0QdF1%i^nI}mSUoMv~N~My|Znv`~ z9GuH*5=3&qzF>SVolZ-ILg5u^)9F-)Klp_{XfLzbtQY-mx2x6b^*i)&u!qfp|3&w| z{eJ%*_G|~M;yay=NP$!Ba_ACc2 z_dtgaL>rAp*MDm%0*MRq$?kT$BPhmnT|a`N&NA4okTH1TFc~HouDmY*U7i45;+;(O z0y%I{cfnxr8@#3)G`v3Xk~ia&$6DM|c%H%h4$x2RMgIp>f6p&*)HsL$00001v6w@XN)(C&fx`3$fW<)2D~hb> zAD|(?Vfav73Z}Wt)If7wxGTMcar0*1XLo0J2H--0PGLHoJ_{jqW=!}U@2qvNzJN)Q0LI~Xl6aWB)5alD5<8EntZdn$L$K#NbGMP+5 zmSs8Xl5zzjV#J>7x_+O}=QGV_^X8znTCM9`E|)2lN)KLM;q{p7^*RIquv{*GPrXe z|ArkbF4Z8O;Cj7&t7+O}x7$??TEE|qYnrCjYPCDxU@4_ynr1*s8MA3I(=>xpO2x|? zaCVTr?u|yn7z_qVrBYcRv}(1w2#3Q|C=@m)yr+M~Y&LsC#HgQ|GV_xCZe`aE)!AboUvJE=G4AT-G&k|^9~V5MAUJP&5OkkpMal+MjfDe00000NkvXX Hu0mjfQDW5% literal 0 HcmV?d00001 diff --git a/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/blockstack-bug-mac-menubar-2x-inverted.png b/native/macos/Blockstack/Blockstack/Images.xcassets/MenuBarDark.imageset/blockstack-bug-mac-menubar-2x-inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..4a299ef0aabe470385e65bfb81c56afd74899056 GIT binary patch literal 959 zcmV;w13>(VP)T6v91 z36dnqAPB-^BC<2acp|be#u|vI7C@ESq>QmR5k&zg0A$A4+h8#06Gbug-@vjg_Yu)6 z04-%M-VtN$InVQ-H3Q4C+y~%Irjlhh##n-gCOM7^To+SSs11ndMWtW?Ad~B*BuNI< zz=9w=0nnzyy=v*|>KaxJOhk4ahrv_TzyNq1fq5;!mSSI36s6kjcALFkud!IH-|ug5 zyWQqUBw{E5_}bit0yox3bo~$s1Oj)QPUroLi;Efn7#$r|*4Ea7|B9WOn(Ex#+-wE_ zlgX4?Utj-fv)N(=ayMw{;eyj)d3m`t3kv{Vuh+7@y?rk?Zf9qwAqxutmzS3Ym&?^w z!n9D`5(Vw_^t2||7Y>K>d?zO-dA_r=vl^`rnr7hf@$vJkXQR=WayT5{bK^u&yfmB5 z$*Vqx!*Q-PuR-e%r>CdCrPFC_ZEabanwnB`b90AQt2J*IFq_T4H#RoDxLmHbNF-8g zx7*KWXJ=1teEA85LLc?q$~ca*-DpebWw*e$z&8b)OeSf5e!gvRaIk-5WaNRz<1t+q z>+|`HV`F1|0|Nv7Gcz+Cu~>{MJ|&ixmReRsQ{i%?_5TcV?*BcAK)?(WX>_4M@Q z`P$pte^nfKVPWB*v$OMWVyDv?9v&Y4ksCKOH1uI!`|kx0<)?(W^@=H^syZ*RO%?B3p9?eXz(jm>6@)z{avVln{F^N-YCy0@h) z@ntfF<2bw8mQZvYw~Ce?mURS{wE(} Date: Fri, 24 Feb 2017 20:33:30 +0200 Subject: [PATCH 4/9] simplify status item, add menu --- .../Blockstack.xcodeproj/project.pbxproj | 12 ---- .../Blockstack/ApplicationDelegate.h | 4 +- .../Blockstack/ApplicationDelegate.m | 32 +++++++-- .../Blockstack/Blockstack/MenubarController.h | 15 ---- .../Blockstack/Blockstack/MenubarController.m | 36 ---------- .../Blockstack/Blockstack/StatusItemView.h | 17 ----- .../Blockstack/Blockstack/StatusItemView.m | 71 ------------------- 7 files changed, 26 insertions(+), 161 deletions(-) delete mode 100644 native/macos/Blockstack/Blockstack/MenubarController.h delete mode 100644 native/macos/Blockstack/Blockstack/MenubarController.m delete mode 100644 native/macos/Blockstack/Blockstack/StatusItemView.h delete mode 100644 native/macos/Blockstack/Blockstack/StatusItemView.m diff --git a/native/macos/Blockstack/Blockstack.xcodeproj/project.pbxproj b/native/macos/Blockstack/Blockstack.xcodeproj/project.pbxproj index 10d7a4dd7..da2e3bb63 100644 --- a/native/macos/Blockstack/Blockstack.xcodeproj/project.pbxproj +++ b/native/macos/Blockstack/Blockstack.xcodeproj/project.pbxproj @@ -17,8 +17,6 @@ DD4F7C1513C30F9F00825C6E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4F7C1413C30F9F00825C6E /* main.m */; }; DD4F7C1C13C30F9F00825C6E /* ApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4F7C1B13C30F9F00825C6E /* ApplicationDelegate.m */; }; DD4F7C1F13C30F9F00825C6E /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = DD4F7C1D13C30F9F00825C6E /* MainMenu.xib */; }; - DD4F7C3813C317A500825C6E /* MenubarController.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4F7C3713C317A500825C6E /* MenubarController.m */; }; - DD4F7C3C13C3180800825C6E /* StatusItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = DD4F7C3B13C3180800825C6E /* StatusItemView.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -39,10 +37,6 @@ DD4F7C1A13C30F9F00825C6E /* ApplicationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApplicationDelegate.h; sourceTree = ""; }; DD4F7C1B13C30F9F00825C6E /* ApplicationDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ApplicationDelegate.m; sourceTree = ""; }; DD4F7C1E13C30F9F00825C6E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; - DD4F7C3613C317A500825C6E /* MenubarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenubarController.h; sourceTree = ""; }; - DD4F7C3713C317A500825C6E /* MenubarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenubarController.m; sourceTree = ""; }; - DD4F7C3A13C3180800825C6E /* StatusItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatusItemView.h; sourceTree = ""; }; - DD4F7C3B13C3180800825C6E /* StatusItemView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusItemView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -118,8 +112,6 @@ children = ( DD4F7C1A13C30F9F00825C6E /* ApplicationDelegate.h */, DD4F7C1B13C30F9F00825C6E /* ApplicationDelegate.m */, - DD4F7C3613C317A500825C6E /* MenubarController.h */, - DD4F7C3713C317A500825C6E /* MenubarController.m */, ); name = Controllers; sourceTree = ""; @@ -144,8 +136,6 @@ DD4F7C3913C317EC00825C6E /* Views */ = { isa = PBXGroup; children = ( - DD4F7C3A13C3180800825C6E /* StatusItemView.h */, - DD4F7C3B13C3180800825C6E /* StatusItemView.m */, ); name = Views; sourceTree = ""; @@ -236,8 +226,6 @@ files = ( DD4F7C1513C30F9F00825C6E /* main.m in Sources */, DD4F7C1C13C30F9F00825C6E /* ApplicationDelegate.m in Sources */, - DD4F7C3813C317A500825C6E /* MenubarController.m in Sources */, - DD4F7C3C13C3180800825C6E /* StatusItemView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.h b/native/macos/Blockstack/Blockstack/ApplicationDelegate.h index ec1e09129..7a806199c 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.h +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.h @@ -1,10 +1,8 @@ #define LAUNCH_BROWSER_DELAY 1.0 -#import "MenubarController.h" @interface ApplicationDelegate : NSObject -@property (nonatomic, strong) MenubarController *menubarController; @property (nonatomic, strong) NSTask *blockstackProxyTask; @property (nonatomic, strong) NSTask *corsProxyTask; @@ -12,7 +10,7 @@ @property (strong) NSString *blockstackPath; +@property (strong) NSStatusItem *statusItem; -- (IBAction)handleClick:(id)sender; @end diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m index a35d10e99..33f9faf87 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m @@ -2,11 +2,11 @@ @implementation ApplicationDelegate -@synthesize menubarController = _menubarController; @synthesize blockstackProxyTask; @synthesize corsProxyTask; @synthesize blockstackCoreConfigFilePath; @synthesize blockstackPath; +@synthesize statusItem; @@ -32,7 +32,18 @@ - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppl - (void)applicationDidFinishLaunching:(NSNotification *)notification { // Add our icon to menu bar - self.menubarController = [[MenubarController alloc] init]; + self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; + self.statusItem.highlightMode = YES; + self.statusItem.button.image = [NSImage imageNamed:@"MenuBar"]; + self.statusItem.button.alternateImage = [NSImage imageNamed:@"MenuBarDark"]; + NSMenu *menu = [[NSMenu alloc] init]; + + [menu addItemWithTitle:@"Go to Portal" action:@selector(openPortalClick:) keyEquivalent:@"g"]; + [menu addItem:[NSMenuItem separatorItem]]; + [menu addItemWithTitle:@"Turn Off Blockstack" action:@selector(exitClick:) keyEquivalent:@"q"]; + + self.statusItem.menu = menu; + NSString* coreWalletPassword = [self createOrRetrieveCoreWalletPassword]; @@ -47,7 +58,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { // Explicitly remove the icon from the menu bar - self.menubarController = nil; + [[NSStatusBar systemStatusBar] removeStatusItem:self.statusItem]; [self.blockstackProxyTask terminate]; [self.corsProxyTask terminate]; [self stopBlockstackCoreApiAndExit]; @@ -55,9 +66,15 @@ - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sende } -- (IBAction)handleClick:(id)sender +- (void)openPortalClick:(id)sender { - NSLog(@"handleClick"); + NSLog(@"openPortalClick"); + [self launchBrowser]; +} + +- (void)exitClick:(id)sender +{ + NSLog(@"exitClick"); NSAlert *alert = [[NSAlert alloc] init]; [alert addButtonWithTitle:@"Turn off"]; @@ -74,6 +91,9 @@ - (IBAction)handleClick:(id)sender [self.corsProxyTask terminate]; NSLog(@"CORS proxy terminated"); + // Remove the icon from the menu bar + [[NSStatusBar systemStatusBar] removeStatusItem:self.statusItem]; + [self stopBlockstackCoreApiAndExit]; } @@ -244,8 +264,6 @@ -(void)stopBlockstackCoreApiAndExit blockstackCoreApiStopTask.terminationHandler = ^(NSTask *aTask){ NSLog(@"Blockstack Core api stopped."); - // Remove the icon from the menu bar - self.menubarController = nil; NSLog(@"Goodbye!"); exit(0); diff --git a/native/macos/Blockstack/Blockstack/MenubarController.h b/native/macos/Blockstack/Blockstack/MenubarController.h deleted file mode 100644 index 2070d3952..000000000 --- a/native/macos/Blockstack/Blockstack/MenubarController.h +++ /dev/null @@ -1,15 +0,0 @@ -#define STATUS_ITEM_VIEW_WIDTH 24.0 - - -@class StatusItemView; - -@interface MenubarController : NSObject { -@private - StatusItemView *_statusItemView; -} - -@property (nonatomic) BOOL hasActiveIcon; -@property (nonatomic, strong, readonly) NSStatusItem *statusItem; -@property (nonatomic, strong, readonly) StatusItemView *statusItemView; - -@end diff --git a/native/macos/Blockstack/Blockstack/MenubarController.m b/native/macos/Blockstack/Blockstack/MenubarController.m deleted file mode 100644 index 0cda139e1..000000000 --- a/native/macos/Blockstack/Blockstack/MenubarController.m +++ /dev/null @@ -1,36 +0,0 @@ -#import "MenubarController.h" -#import "StatusItemView.h" - -@implementation MenubarController - -@synthesize statusItemView = _statusItemView; - - -- (id)init -{ - self = [super init]; - if (self != nil) - { - // Install status item into the menu bar - NSStatusItem *statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:STATUS_ITEM_VIEW_WIDTH]; - _statusItemView = [[StatusItemView alloc] initWithStatusItem:statusItem]; - _statusItemView.image = [NSImage imageNamed:@"MenuBar"]; - _statusItemView.action = @selector(handleClick:); - } - return self; -} - -- (void)dealloc -{ - [[NSStatusBar systemStatusBar] removeStatusItem:self.statusItem]; -} - - -- (NSStatusItem *)statusItem -{ - return self.statusItemView.statusItem; -} - - - -@end diff --git a/native/macos/Blockstack/Blockstack/StatusItemView.h b/native/macos/Blockstack/Blockstack/StatusItemView.h deleted file mode 100644 index 2b73ca5a3..000000000 --- a/native/macos/Blockstack/Blockstack/StatusItemView.h +++ /dev/null @@ -1,17 +0,0 @@ -@interface StatusItemView : NSView { -@private - NSImage *_image; - NSStatusItem *_statusItem; - SEL _action; - __unsafe_unretained id _target; -} - -- (id)initWithStatusItem:(NSStatusItem *)statusItem; - -@property (nonatomic, strong, readonly) NSStatusItem *statusItem; -@property (nonatomic, strong) NSImage *image; -@property (nonatomic, readonly) NSRect globalRect; -@property (nonatomic) SEL action; -@property (nonatomic, unsafe_unretained) id target; - -@end diff --git a/native/macos/Blockstack/Blockstack/StatusItemView.m b/native/macos/Blockstack/Blockstack/StatusItemView.m deleted file mode 100644 index 19ae04ce4..000000000 --- a/native/macos/Blockstack/Blockstack/StatusItemView.m +++ /dev/null @@ -1,71 +0,0 @@ -#import "StatusItemView.h" - -@implementation StatusItemView - -@synthesize statusItem = _statusItem; -@synthesize image = _image; -@synthesize action = _action; -@synthesize target = _target; - -- (id)initWithStatusItem:(NSStatusItem *)statusItem -{ - CGFloat itemWidth = [statusItem length]; - CGFloat itemHeight = [[NSStatusBar systemStatusBar] thickness]; - NSRect itemRect = NSMakeRect(0.0, 0.0, itemWidth, itemHeight); - self = [super initWithFrame:itemRect]; - - if (self != nil) { - _statusItem = statusItem; - _statusItem.view = self; - } - return self; -} - - - -- (void)drawRect:(NSRect)dirtyRect -{ - // Support dark mode - if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"] isEqual: @"Dark"]) - { - self.image = [NSImage imageNamed:@"MenuBarDark"]; - } - else - { - self.image = [NSImage imageNamed:@"MenuBar"]; - } - [self.statusItem drawStatusBarBackgroundInRect:dirtyRect withHighlight:NO]; - - NSImage *icon = self.image; - NSSize iconSize = [icon size]; - NSRect bounds = self.bounds; - CGFloat iconY = roundf((NSHeight(bounds) - iconSize.height) / 2); - CGFloat iconX = roundf((NSWidth(bounds) - iconSize.width) / 2); - NSPoint iconPoint = NSMakePoint(iconX, iconY); - - [icon drawAtPoint:iconPoint fromRect:NSZeroRect operation:NSCompositingOperationSourceOver fraction:1.0]; -} - - -- (void)mouseDown:(NSEvent *)theEvent -{ - [NSApp sendAction:self.action to:self.target from:self]; -} - - - -- (void)setImage:(NSImage *)newImage -{ - if (_image != newImage) { - _image = newImage; - [self setNeedsDisplay:YES]; - } -} - - -- (NSRect)globalRect -{ - NSRect frame = [self frame]; - return [self.window convertRectToScreen:frame]; -} -@end From d426a19d18ed59a34ee2592a3dd7eb97504a2ade Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Sat, 25 Feb 2017 00:14:37 +0200 Subject: [PATCH 5/9] portal dev mode, menus, blockstack url protocol handler #240 --- .../Blockstack/ApplicationDelegate.h | 5 + .../Blockstack/ApplicationDelegate.m | 120 ++++++++++++++++-- 2 files changed, 111 insertions(+), 14 deletions(-) diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.h b/native/macos/Blockstack/Blockstack/ApplicationDelegate.h index 7a806199c..6448cae3a 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.h +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.h @@ -12,5 +12,10 @@ @property (strong) NSStatusItem *statusItem; +@property BOOL devModeEnabled; + +@property (readonly) int prodModePortalPort; +@property (readonly) int devModePortalPort; +@property (readonly) int corsProxyPort; @end diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m index 33f9faf87..0373cd5f8 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m @@ -7,7 +7,11 @@ @implementation ApplicationDelegate @synthesize blockstackCoreConfigFilePath; @synthesize blockstackPath; @synthesize statusItem; +@synthesize devModeEnabled; +@synthesize prodModePortalPort = _prodModePortalPort; +@synthesize devModePortalPort = _devModePortalPort; +@synthesize corsProxyPort = _corsProxyPort; @@ -27,29 +31,34 @@ - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppl { NSURL *url = [NSURL URLWithString:[[event paramDescriptorForKeyword:keyDirectObject] stringValue]]; NSLog(@"Blockstack URL: %@", url); + NSLog(@"Blockstack URL host: %@", [url host]); + + NSString* portalPath = [NSString stringWithFormat:@"%@%@", [self portalAuthPath], [url host]]; + [self launchBrowser:portalPath]; } - (void)applicationDidFinishLaunching:(NSNotification *)notification { + _prodModePortalPort = 8888; + _devModePortalPort = 3000; + _corsProxyPort = 1337; + + self.devModeEnabled = NO; + // Add our icon to menu bar self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; self.statusItem.highlightMode = YES; self.statusItem.button.image = [NSImage imageNamed:@"MenuBar"]; self.statusItem.button.alternateImage = [NSImage imageNamed:@"MenuBarDark"]; - NSMenu *menu = [[NSMenu alloc] init]; - - [menu addItemWithTitle:@"Go to Portal" action:@selector(openPortalClick:) keyEquivalent:@"g"]; - [menu addItem:[NSMenuItem separatorItem]]; - [menu addItemWithTitle:@"Turn Off Blockstack" action:@selector(exitClick:) keyEquivalent:@"q"]; - - self.statusItem.menu = menu; + self.statusItem.button.target = self; + self.statusItem.action = @selector(statusItemClick:); NSString* coreWalletPassword = [self createOrRetrieveCoreWalletPassword]; - [self startBlockstackProxy]; - [self startCorsProxy]; - [self startBlockstackCoreApiwithCoreWalletPassword:coreWalletPassword]; + //[self startBlockstackProxy]; + //[self startCorsProxy]; + //[self startBlockstackCoreApiwithCoreWalletPassword:coreWalletPassword]; [self performSelector:@selector(launchBrowser) withObject:self afterDelay:LAUNCH_BROWSER_DELAY]; @@ -65,6 +74,65 @@ - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sende return NSTerminateNow; } +- (void)statusItemClick:(id)sender +{ + NSMenu *menu = [[NSMenu alloc] init]; + + + NSLog(@"statusItemClick"); + + if ((([[NSApp currentEvent] modifierFlags] & NSEventModifierFlagOption) != 0) + || self.devModeEnabled == YES) + { + NSLog(@"Option click"); + + if(self.devModeEnabled == YES) + [menu addItemWithTitle:@"Go to Development Portal" action:@selector(openPortalClick:) keyEquivalent:@"g"]; + else + [menu addItemWithTitle:@"Go to Portal" action:@selector(openPortalClick:) keyEquivalent:@"g"]; + + [menu addItem:[NSMenuItem separatorItem]]; + + NSMenuItem *portalPortMenuItem = [[NSMenuItem alloc] init]; + portalPortMenuItem.title = [NSString stringWithFormat:@"Portal proxy running port on %d", [self portalPort]]; + portalPortMenuItem.enabled = NO; + + NSMenuItem *corsProxyPortMenuItem = [[NSMenuItem alloc] init]; + corsProxyPortMenuItem.title = [NSString stringWithFormat:@"CORS proxy running port on %d", [self corsProxyPort]]; + corsProxyPortMenuItem.enabled = NO; + + NSMenuItem *corePortMenuItem = [[NSMenuItem alloc] init]; + corePortMenuItem.title = @"Core node running port on 6270"; + corePortMenuItem.enabled = NO; + + [menu addItem:portalPortMenuItem]; + [menu addItem:corsProxyPortMenuItem]; + [menu addItem:corePortMenuItem]; + [menu addItem:[NSMenuItem separatorItem]]; + + NSMenuItem *devModeStatusMenuItem = [[NSMenuItem alloc] init]; + devModeStatusMenuItem.title = [NSString stringWithFormat:@"Portal Development Mode: %@", self.devModeEnabled ? @"Enabled" : @"Disabled"]; + devModeStatusMenuItem.enabled = NO; + + [menu addItem:devModeStatusMenuItem]; + + [menu addItemWithTitle:[NSString stringWithFormat:@"%@ Portal Development Mode", self.devModeEnabled ? @"Disable" : @"Enable"] action:@selector(devModeClick:) keyEquivalent:@"d"]; + + [menu addItem:[NSMenuItem separatorItem]]; + } else { + [menu addItemWithTitle:@"Go to Portal" action:@selector(openPortalClick:) keyEquivalent:@"g"]; + [menu addItem:[NSMenuItem separatorItem]]; + } + + [menu addItemWithTitle:@"Turn Off Blockstack" action:@selector(exitClick:) keyEquivalent:@"q"]; + [self.statusItem popUpStatusItemMenu:menu]; +} + +- (void)devModeClick:(id)sender +{ + NSLog(@"devModeClick"); + self.devModeEnabled = !self.devModeEnabled; +} - (void)openPortalClick:(id)sender { @@ -86,7 +154,7 @@ - (void)exitClick:(id)sender if ([alert runModal] == NSAlertFirstButtonReturn) { [self.blockstackProxyTask terminate]; - NSLog(@"Blockstack Browser proxy terminated"); + NSLog(@"Blockstack Portal proxy terminated"); [self.corsProxyTask terminate]; NSLog(@"CORS proxy terminated"); @@ -102,7 +170,16 @@ - (void)exitClick:(id)sender - (void)launchBrowser { - [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://localhost:8888"]]; + [self launchBrowser:NULL]; +} +- (void)launchBrowser:(NSString*)path +{ + if(path == NULL) + path = @"/"; + + NSURL *portalURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", [self portalBaseUrl], path]]; + NSLog(@"Opening portal: %@", portalURL); + [[NSWorkspace sharedWorkspace] openURL:portalURL]; } - (void)startBlockstackProxy @@ -117,9 +194,9 @@ - (void)startBlockstackProxy self.blockstackProxyTask = [[NSTask alloc] init]; self.blockstackProxyTask.launchPath = path; - self.blockstackProxyTask.arguments = @[@"8888", browserPath]; + self.blockstackProxyTask.arguments = @[[NSString stringWithFormat:@"%d", self.prodModePortalPort], browserPath]; - NSLog(@"Starting Blockstack Browser proxy..."); + NSLog(@"Starting Blockstack Portal proxy..."); [self.blockstackProxyTask launch]; @@ -371,4 +448,19 @@ -(NSString*)accountName return @"blockstack-core"; } +-(int)portalPort +{ + return self.devModeEnabled ? self.devModePortalPort : self.prodModePortalPort; +} + +-(NSString*)portalBaseUrl +{ + return [NSString stringWithFormat:@"http://localhost:%d", [self portalPort]]; +} + +-(NSString*) portalAuthPath +{ + return @"/auth?authRequest="; +} + @end From 4e23402e96f517af260f92ec7a4d24cda7f38dff Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Sat, 25 Feb 2017 00:19:25 +0200 Subject: [PATCH 6/9] fix typo --- native/macos/Blockstack/Blockstack/ApplicationDelegate.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m index 0373cd5f8..02a4f6ee8 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m @@ -94,11 +94,11 @@ - (void)statusItemClick:(id)sender [menu addItem:[NSMenuItem separatorItem]]; NSMenuItem *portalPortMenuItem = [[NSMenuItem alloc] init]; - portalPortMenuItem.title = [NSString stringWithFormat:@"Portal proxy running port on %d", [self portalPort]]; + portalPortMenuItem.title = [NSString stringWithFormat:@"Portal proxy running on port on %d", [self portalPort]]; portalPortMenuItem.enabled = NO; NSMenuItem *corsProxyPortMenuItem = [[NSMenuItem alloc] init]; - corsProxyPortMenuItem.title = [NSString stringWithFormat:@"CORS proxy running port on %d", [self corsProxyPort]]; + corsProxyPortMenuItem.title = [NSString stringWithFormat:@"CORS proxy running on port on %d", [self corsProxyPort]]; corsProxyPortMenuItem.enabled = NO; NSMenuItem *corePortMenuItem = [[NSMenuItem alloc] init]; From c2ff9e9fdc81652fd47b9b9e6d61ed857723794e Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Sat, 25 Feb 2017 00:22:19 +0200 Subject: [PATCH 7/9] more typos --- native/macos/Blockstack/Blockstack/ApplicationDelegate.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m index 02a4f6ee8..de318c95d 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m @@ -94,15 +94,15 @@ - (void)statusItemClick:(id)sender [menu addItem:[NSMenuItem separatorItem]]; NSMenuItem *portalPortMenuItem = [[NSMenuItem alloc] init]; - portalPortMenuItem.title = [NSString stringWithFormat:@"Portal proxy running on port on %d", [self portalPort]]; + portalPortMenuItem.title = [NSString stringWithFormat:@"Portal proxy running on port %d", [self portalPort]]; portalPortMenuItem.enabled = NO; NSMenuItem *corsProxyPortMenuItem = [[NSMenuItem alloc] init]; - corsProxyPortMenuItem.title = [NSString stringWithFormat:@"CORS proxy running on port on %d", [self corsProxyPort]]; + corsProxyPortMenuItem.title = [NSString stringWithFormat:@"CORS proxy running on port %d", [self corsProxyPort]]; corsProxyPortMenuItem.enabled = NO; NSMenuItem *corePortMenuItem = [[NSMenuItem alloc] init]; - corePortMenuItem.title = @"Core node running port on 6270"; + corePortMenuItem.title = @"Core node running on port 6270"; corePortMenuItem.enabled = NO; [menu addItem:portalPortMenuItem]; From ebe12f821eadff8e8019edeca5e61ec516407306 Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Sat, 25 Feb 2017 01:08:46 +0200 Subject: [PATCH 8/9] re-enable services --- native/macos/Blockstack/Blockstack/ApplicationDelegate.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m index de318c95d..0cd69f195 100644 --- a/native/macos/Blockstack/Blockstack/ApplicationDelegate.m +++ b/native/macos/Blockstack/Blockstack/ApplicationDelegate.m @@ -56,9 +56,9 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification NSString* coreWalletPassword = [self createOrRetrieveCoreWalletPassword]; - //[self startBlockstackProxy]; - //[self startCorsProxy]; - //[self startBlockstackCoreApiwithCoreWalletPassword:coreWalletPassword]; + [self startBlockstackProxy]; + [self startCorsProxy]; + [self startBlockstackCoreApiwithCoreWalletPassword:coreWalletPassword]; [self performSelector:@selector(launchBrowser) withObject:self afterDelay:LAUNCH_BROWSER_DELAY]; From 8e3fa7440c638a7a5a39e7c03eb7514f78aff2cc Mon Sep 17 00:00:00 2001 From: Larry Salibra Date: Sun, 26 Feb 2017 17:15:14 +0200 Subject: [PATCH 9/9] bump mac version --- native/macos/Blockstack/Blockstack/Blockstack-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/native/macos/Blockstack/Blockstack/Blockstack-Info.plist b/native/macos/Blockstack/Blockstack/Blockstack-Info.plist index 482cd6459..580ac4b29 100644 --- a/native/macos/Blockstack/Blockstack/Blockstack-Info.plist +++ b/native/macos/Blockstack/Blockstack/Blockstack-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.3.0 + 0.4.0 CFBundleSignature ???? CFBundleURLTypes @@ -30,7 +30,7 @@ CFBundleVersion - 17 + 18 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion