From ac0a55f78da3664cbed3494ba65027eb95e5bbd6 Mon Sep 17 00:00:00 2001 From: Apex Liu Date: Mon, 12 Nov 2018 03:08:06 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=BE=AE=E8=B0=83macOS=E7=9A=84StatusBar?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=EF=BC=8C=E4=BD=BF=E4=B9=8B=E6=9B=B4=E5=8D=8F?= =?UTF-8?q?=E8=B0=83=EF=BC=9B2.=20=E6=9A=97=E8=89=B2=E8=B0=83=E7=9A=84Stat?= =?UTF-8?q?usBar=E4=B8=8A=E4=B9=9F=E8=83=BD=E6=AD=A3=E7=A1=AE=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=99=BD=E8=89=B2=E5=9B=BE=E6=A0=87=E4=BA=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/tp_assist_macos/src/AppDelegate.mm | 30 ++++++------------ client/tp_assist_macos/src/StatusIcon.png | Bin 1440 -> 1375 bytes client/tp_assist_macos/src/StatusIcon@2X.png | Bin 1982 -> 1959 bytes client/tp_assist_macos/src/StatusIcon@3X.png | Bin 2581 -> 2566 bytes client/tp_assist_macos/src/StatusIconAlt.png | Bin 1421 -> 1363 bytes .../tp_assist_macos/src/StatusIconAlt@2X.png | Bin 1958 -> 1922 bytes .../tp_assist_macos/src/StatusIconAlt@3X.png | Bin 2644 -> 2521 bytes 7 files changed, 9 insertions(+), 21 deletions(-) mode change 100644 => 100755 client/tp_assist_macos/src/StatusIcon.png mode change 100644 => 100755 client/tp_assist_macos/src/StatusIcon@2X.png mode change 100644 => 100755 client/tp_assist_macos/src/StatusIcon@3X.png mode change 100644 => 100755 client/tp_assist_macos/src/StatusIconAlt.png mode change 100644 => 100755 client/tp_assist_macos/src/StatusIconAlt@2X.png mode change 100644 => 100755 client/tp_assist_macos/src/StatusIconAlt@3X.png diff --git a/client/tp_assist_macos/src/AppDelegate.mm b/client/tp_assist_macos/src/AppDelegate.mm index 7c93b70..5f9ec16 100644 --- a/client/tp_assist_macos/src/AppDelegate.mm +++ b/client/tp_assist_macos/src/AppDelegate.mm @@ -56,19 +56,16 @@ int AppDelegate_select_app (void *_self) { // Define Icons //only regular icon is needed for 10.10 and higher. OS X changes the icon for us. regularIcon = [NSImage imageNamed:@"StatusIcon"]; + [regularIcon setTemplate:YES]; + altIcon = [NSImage imageNamed:@"StatusIconAlt"]; - // TODO: 现在statusIcon有两个问题: - // 1. 不会响应系统设置“暗色菜单栏和Dock”的事件 - // 2. 即使是设置为暗色系,启动本程序也会使用黑色图标,导致在菜单栏中看不到图标。 - // 因此,应该响应系统的设置菜单栏颜色的事件,同时启动前先获取菜单栏的色系。 - // Create the status bar item statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]; [statusItem setMenu:menu]; [statusItem setImage: regularIcon]; [statusItem setHighlightMode:YES]; - [statusItem setAlternateImage: altIcon]; + [statusItem setAlternateImage: altIcon]; // Needed to trigger the menuWillOpen event [menu setDelegate:self]; @@ -79,7 +76,9 @@ int AppDelegate_select_app (void *_self) { int ret = cpp_main((__bridge void*)self, cpp_cfg_file.c_str(), cpp_res_path.c_str()); if(ret != 0) { - NSString *msg = Nil; + http_rpc_stop(); + + NSString *msg = Nil; if(ret == -1) msg = @"初始化运行环境失败!"; else if(ret == -2) @@ -91,22 +90,11 @@ int AppDelegate_select_app (void *_self) { NSAlert *alert = [[NSAlert alloc] init]; alert.icon = [NSImage imageNamed:@"tpassist"]; - [alert addButtonWithTitle:@"确定"]; [alert setMessageText:@"无法启动Teleport助手"]; [alert setInformativeText:msg]; - [alert runModal]; -// NSAlert *alert = [NSAlert alertWithMessageText:@"无法启动Teleport助手" -// defaultButton:@"确定" -// alternateButton:Nil -// otherButton:Nil -// informativeTextWithFormat:@"%@", msg]; - [alert runModal]; - - http_rpc_stop(); - [[NSStatusBar systemStatusBar] removeStatusItem:statusItem]; [NSApp terminate:NSApp]; } } @@ -134,8 +122,8 @@ int AppDelegate_select_app (void *_self) { if (handlerName && [handlerName length]) { - /* If we have a handlerName (and potentially parameters), we build - * an NSAppleEvent to execute the script. */ + // If we have a handlerName (and potentially parameters), we build + // an NSAppleEvent to execute the script. //Get a descriptor int pid = [[NSProcessInfo processInfo] processIdentifier]; @@ -179,7 +167,7 @@ int AppDelegate_select_app (void *_self) { } - (int) select_app:(NSString*)strIgnore { - // NOT WORK + // NOT WORK NOW // this function called by ts_http_rpc.c but it run in worker thread. // once we call select_app from worker thread, the NSOpenPanel alloc crash. // so we have had to show UI like "post a event and call callback" stuff. diff --git a/client/tp_assist_macos/src/StatusIcon.png b/client/tp_assist_macos/src/StatusIcon.png old mode 100644 new mode 100755 index 5af7740d72835bb435f1ffac5b14d371211956b1..a7463265a6e8c06a371d4a11ee522ada97492cfe GIT binary patch delta 518 zcmZ3$eV=PX6qACprK7pAqoaYVsiljdp{s?Hg|m~RtGSbtimV4hRIlb>Cdfq}8#)5S5Q;?|X^XSG`bMUFj}6*Oz+-R29^bYfn)m!_qiF%(y@SdgO@-;f`*t?<&a5|TT|B3@(#5^? zz?>7|&7p>60UHd~xS6=k$Y%b#C@tX17mL{XLtUz(=8!Q$wi%A6*H#}D6^{{N(H@o%B*1V5GgE_V)n zx0%5vej{m_x=Ple8hgv_(r=`$)L-)dIQ@%ZUqeyAu|JxhgL^LD3Yl?S=Wp7^h|>yO zZZ3L9c4;5;p7lX@hxo^aNQc)BF|$~o{OCFno_UB{=hmiA&IwFgy6-Fzhz;TAc>aFo z(a!mMv#y#n#VS_CT$tGQHLBj0ciTa}6A{Ur&rg=hJeSxJtS7g5>!Vw?j{`NXhi2;O z&62#w9>_JXQRRkneAwQs*hBw+bAOWlEt0_C(itvv<8@mD0}yz+`njxgN@xNAOu*)9 delta 583 zcmcc5wSap=6qAC9nTfHRsi}dhiK&I5p{s?Zg|V}nfu*^dqp7Q@g{kA@Dkd4IA`>^9 zincK&G8#^nV4hQdt};@Kfr0UYr;B4q#jPz<&TG2_iX4CL+of{yn3GtL*QrTMb98+E zF{Gv%o4Q8&icOlU;k7CFhG*Rr-AywbmvmfNp*d5^+3So!MeoPGHSu$Ietu`8y4>#b zyPe;w&s%@LV|@P9^UwSK8|;5S|4n$K?rE-Oi4#pS8xG1w807^mHK=FIX46#Fb`<;a zqFOh&ccL%5-0w#r<_cW%9JvEtKTYzsPLi!o>32>Tq7Zb!U!{pfKK1V3ypWa_a!4-|gp1-!q zRk-IqsAyiK{L9}y{G;u<=fzX&XLpO%Th^ zX)e8>e$8sDIR7rzY4u&@7v6s?oORi+Flve5qfB2J_TW{~Gh!!1E;o%m^z~_!nqa^G zl5?FOL-dZvn8nOeVRrMLb~@m&+6Gp+iiNAz#~)l8?r@&}Z~R;D21W+Xd8O7Hx9n$Q O00K`}KbLh*2~7Z7umFDm diff --git a/client/tp_assist_macos/src/StatusIcon@2X.png b/client/tp_assist_macos/src/StatusIcon@2X.png old mode 100644 new mode 100755 index fe41002708e903dc9bdb2eb9b5a81eb71418db90..b7634961dce2c02a31d6c9f211c5ee488c1f97f6 GIT binary patch delta 1137 zcmV-%1djW@52p{XS^^+3H#jpfGc-9xH918wF-15yGC@Q`Gej~oGC4FcLN-Q|dIB6E zF*i6fF*7tcMKw7^F)>9rI5I&*Lo-A&Gcq|eF+w&*lePk2AVxDpLqtVIGdV;>HAOfv zF*rClIYKfvF*r0hHZd?pL6bHEet&Xkz%Bp)1J_AJK~#9!>{(ezl|dBtZ?PydveGt1 z%d)~7iS=YpZInw0rBp8kMoIM$LG{u?8${4UP!FvX1QDUWM3huknnXJlnN+rDrPM=Y zg+_Jz2F{J)aOVH#zxPiN?tzbcXFK!VnKN_Fnd^kZ;e_5KeG+<^#0kdy;b%J+ymYKT|hFB0~7#@$fhM(1x_adw_!-NutJL5 zN{ibk6FB0s(s_ZJ1Z0~q$$v>;fX_`THxPao7-7g1VS?=jLL-3?Fv*4VJOk;VRcA^x;&<|T_AhT<0fbYviTVzhr;{LvLX!0 z1r`eRhnd0(M)o{wuLmvy?^%5Z(4P_BED+vjOIU4DsZigdDfGLK{99gw2tELrF+k}_%fe}J|A}jx9<)0c!ebsMhWp%Lr zXyp_SosJFRkU&n!7k^fsz{;oSQ-zZc>9DCE{*)2aNpvtBe4#o$T{CS<*kIdTntgS$ z$<_BdW`i$*RISfC7Fz21Q)z|u@pU$bE@JqZLfd7gaEq`L%YZ$=Y9T>r*T(K1vYLNBYalSU1mf06?LvL+|kdN(tmD4h#8Sw?aKQXCotEX zB$$IboI`C0H)?}Yg!XKM%T+nrCZGsd0IU@}pTaRAmXJctYO7d+PJ3j~alX*CN z_XEQZ%=Q()lYe*86*QVivp0?`I%HWcIh&HdIoQXPg-zlh11118~)T()mzpw6X@c10a+j<&gMSw3m97la8!IqhFF-2!V z5mi@SSu_the$xAKh5*G6l#|#=4kO{e64rfg!Ozl|}s+hyyvAUTq5K zH7Jb;{UYzEGUwamgqqyWkgs{;e|yCV#|ihW{1spTP+^%roalsV00000NkvXXu0mjf DN{9Gu delta 1161 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 delta 1762 zcmV<81|9i^6qOXPTLK?NLoqc)F+)W(H90XcML0r2LPJ3^LozuxH8D6iLq?N&0v#Vk zLoqc)F+xQ&H90XcML0r2LPJ3^LozuxH8D6iLq?Of0$?CGLPJ3|Ha0UgIYl%@I59Cf zI5{~%LNP)@H!(0VMK(i|HUoZtyteGe000I>Nkl?~swHiSx z;vbd_Gi(^Oiik-RvJs4hC^8!uQBed&LR1tPAt}|A2x6|#Wh4`aI^clWwzICpi2Ol5zo^$T~{=5b6z>hsI-*@l1zwdna+;i^vOifIGOn4>nymX0z z5)maLbTTz;2dPvl3O$wr>H&8F76ax2X8QCS16%~01DpVK0NMcmMz+SOj=~^>ECRFw z`jr|E7)MgJgq_2cc@%+&)qpNQ-jM(ul(p>ozYwtma5Tcn>u>?^*kmSRSHu>;;Tzj| zq{1#Xg2l22*Mp?xFTl-zFu(C)yU*onRWA|=N-6-u@Sv^}JqYO=!dOH>mrnR|H#5$8xMx-zUZa_L z0t*<$S}|6j`p5x3l6XBNkh6-_al9Jmi2+|G2&fYfpj&5Z7$O=3{d_AX0%RGWmLZ{r z7;K0jVM~ZOLV2ElTFRn9{^l&qhKSvO2N)tciNV$wNN9{8sJdL(gc%<_-4c3s?yzff|uJu=c!#GC?{n~BfkF;iAunB+e zXOvrEXjiYx&zknls{24&OTok$S%#zqn*wc*ss#|RS9AXf%Lig*acPZ@F9??j${E^c8rr|mv~~MZc`qV4O75^A zK5J+%XY|igL{$5J&t^I@nciGO`&P|UnvHI56!4O-{jlc#TMhjlH?+@V^dF^&Sm^sb zUyz;F$uz?gRq}!^fDKrm+E;AST=$5kZ5$T5V}`MRsu=w*7`+C_S>LL+Zlv!=KPq)kLBlP=@@ft^r8!BX}aN*|+5g8^H@R-Q+CrtN`Vt}@fxZae3+D7O% z%n-4gBElcb_X=VSDx2I9Q4;EUifn^k3k5+}14V>Ch#D6Vv5^_9DFPz0rmQqU#0P@t zH7&J&2!(n98C*tay(0nh2=g9e@)21^ryepNp~*IVFCb!rzzp|TlJFW6Mz1GAgmnUa z-r$G`7H#B(S?uG2!4=8x5IIcMzC&;}@+lK54GVP1a75^0|F?zb8q)lu+Ek4IPU2bT zN&L6unD7TGc?B5PaI$2~qRa9`tUOem zB_>|DfktpqOhTS>*r%)sU2rN`D}tMyIWZB?=-C&KDZCn4ZbuN8=*E!S6GP&-mZ{;TlGCIbslW#P%4$0ii%Bfe6l%=2nR6pUC0%b z;p=n*{+$tl6}7;8o^ZNTSQWF%OSY)orFi7&L_SkM?=Tt3P}WwR=!YvH_h8m}vXF2n zim!K^iplVOJ~aufph@~_$NJ$4b5Ii(MuXKjMJEEuSc&PjxCzK%WIEktu}|`CQ>J>X zl8JgTRRw0-!g{@8eA88lrhCSblss<6+ObX|68B&1Z@Ly>-a*wyFUE~i8J>KnF*3~J z&h>ZY0lcea#{IVYpeQ6&`riWd^${f^N<@_8iu@h($ diff --git a/client/tp_assist_macos/src/StatusIconAlt.png b/client/tp_assist_macos/src/StatusIconAlt.png old mode 100644 new mode 100755 index 1bdcd80082b08b70fd4dca71b3f8d2f97cb0d308..30ae8c6d97037f94babe308f91a03a4e942e08d2 GIT binary patch delta 504 zcmeC>zRa~Dib>wZ(%H?_&D_w{)Y8S!(AC1y#M#u@&Dqh|*~G%o!eVkIlPpY)0WLLL znUWZdCQC5Ssb_k@!OXzG*zD=z7*cWT&D8VSE`cJ)p9>`#A8ToyWD*p7s%cj5RC!76 z?uk=cRTY<{D2DxGIwP;}%`GS^V$%oq2}!BSy(e^3p8UM`YgPW`*}rEUO?iA}dHK1W z&+Dr1R^O{U_IXc$C2S%)Foe?t>;^?x#%Hxc5N4RKVFks-KN}&d0hZ=FY2YkGUq*(P((GHM0D8#Z}cm z9P?D=p0TdF`-$o8uU$`G#~$+5@e+UHen8~Kv^!fm^w?_^zWuouQKPVT)t1IsLECS? z5A>Y3kz-gc6u&{5r=z)LO{&AHDT*ds^JJRU&(G7h66$%(FT_}^z?t+-_JHW|r%G}s kc0OD4^S|leTm1~o3@(=4(rLPNFVdQ&MBb@01^M)?f?J) delta 562 zcmcc2)yushib>woz|z9m+`!D$#MHvj(AC1i!raBp)!fL~#l#RuOs-^-g{d*crDiKr z5~JZ{3FbNVmmIFnW?*34>*?YcQgLg`l=Ipyfg;Cyr+7|INnRM~(K$ucJ92@~KZexQ z#UiGwPdaUy%&K}*^Nou0O{Gk>iAq6>J)Dz0IuAZDo%eq2`xhnE-_Lp!zq-8l`ElF# z_lnQ&mb<;Jn@e$?ld9f1V?CB61zw{AOy3g@?r?g0qt$A{mb>+;yt}?^&0CtmxcgB^ zp#ZD?g2sPAg7JxcXRECDqUV>zSM_5i zf%OaiEu8LjQs?A!lwI6y#8p3vAY&(AW(MtCHqYAb6kP}tji9vaWu<4%)V-8^I}TGKau$h%#S}diCH}N z(T%r)vsfH28iXtGl>PW{rP=QSUyaf`u^+{@vjufdENt>o0p7MnO2s~Z=T-G@yGywoNTKw(+ diff --git a/client/tp_assist_macos/src/StatusIconAlt@2X.png b/client/tp_assist_macos/src/StatusIconAlt@2X.png old mode 100644 new mode 100755 index 90cee16afe9df1517f23b3d815798bbc8aa09e62..b8f515bbaffd2843e0d5d07dd4aeee50ba34789f GIT binary patch delta 1100 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