From 187865ff8fdce8f0029dcab6608c6ec9237b35a4 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Wed, 22 Nov 2023 18:17:07 +0100 Subject: [PATCH] feat: changed support buttons logo to higher resolution (24px -> 128px) --- .../support/github.imageset/github.png | Bin 800 -> 7297 bytes .../support/ko-fi.imageset/ko-fi.png | Bin 1093 -> 13352 bytes .../support/patreon.imageset/patreon.png | Bin 1795 -> 8217 bytes .../support/paypal.imageset/paypal.png | Bin 1004 -> 2475 bytes Stats/Views/Settings.swift | 40 ++++--- Stats/Views/Setup.swift | 99 +++++++++++------- 6 files changed, 82 insertions(+), 57 deletions(-) diff --git a/Stats/Supporting Files/Assets.xcassets/support/github.imageset/github.png b/Stats/Supporting Files/Assets.xcassets/support/github.imageset/github.png index e938c65f2aee972b5f8c0c248dd1c23fb4b8ef09..8317639549f6e4c22202482627256cc77e542a92 100644 GIT binary patch literal 7297 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 Q0V-nfboFyt=akR{0HPv4N&o-= diff --git a/Stats/Supporting Files/Assets.xcassets/support/ko-fi.imageset/ko-fi.png b/Stats/Supporting Files/Assets.xcassets/support/ko-fi.imageset/ko-fi.png index 63438a3e738fce65508b810fe6583d2443ed7b28..4937e299c285656ea4896a357994cd67d9c0e490 100644 GIT binary patch literal 13352 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 delta 1046 zcmZ3Hag;-`Gr-TCmrII^fq{Y7)59eQNK1e)2OE%lP;UEUqN060TavfC3&Vd9T(Ecf zWS|UZfk$L90|U1Z2s2)~TlWVj$X?><>&pI=Lta3TJFBX+kb!~O#M8ww#N+tZYu-7b zp%SbQ^5<7qy>xC=(&f($xfL?XTVX`F;O&J4fbs z_67Uy#kAPjv>w0Mdvxo@!aq&#KbZDCW}8#@Y@TIJqTHv3_Km{+kNS>PZWj2+zV9Hr zMW;oyiphlMAC<};>v11;-P8P6EhNUntt4? zZC$vESKadH%ZFH)ydq5u0zX|m|Cld!j?m(@H|8W*TPgT9 znQ$6+|MQ))Iip}v%9a@~>tiQv|GhAE+nSt-uCh1gC7s@LTWh*y;hckv?_z^{C;#o~ zy|lgaom|1ws-xNNZ3l0^zHPf})6qWD?Y|Qv}y(d>%rVBWkDsZY??LT_*{=ArS^SN_VB72u^vr7B2Zt3FWHkEdpIyuscv$}{_opzgcW_Je#?(j#h8zaf64!{5l*E!$tK_0o zAjM#0U}UIkV4-Vl7-DEUf LtDnm{r-UW|Y1`OH diff --git a/Stats/Supporting Files/Assets.xcassets/support/patreon.imageset/patreon.png b/Stats/Supporting Files/Assets.xcassets/support/patreon.imageset/patreon.png index 280e69d727d3578e6a135997c0c6f20afa0ed186..0253748863274f76c28760ee5cec48f2dd0fc8c6 100644 GIT binary patch delta 7763 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 BWy1gf diff --git a/Stats/Supporting Files/Assets.xcassets/support/paypal.imageset/paypal.png b/Stats/Supporting Files/Assets.xcassets/support/paypal.imageset/paypal.png index 292efe55d837f966d2e6ed3401020ad0017d2629..eebfb02328baa2a43472f76b7e9af624e32ee9a9 100644 GIT binary patch literal 2475 zcmWkwc|6p482#k6gBgf9R%81sHVfB7K&-;Ad=kq@A^Y5EVcCyA}C9wbiyseGJ$vsAX0K>P} zJB@w&_6QYjX6uI8s~C)5%HAw+$;K-jfPIla0L6}8?cWm*Mp$}AxQ3jMi1H2d2T@T` zTJ+#w!_WC%^4AIpyHNP$xa6Ku)z-q)jWO~0PBhuwUAo74F+bPfsAEpbX}e&0V1u7G zb5egWAQ*EaMU|FPtWk3~!_rbWuZG_L!N&__N;b6+ws;dDSym%GQ1OSPRFAE$_^ruh zE~5d}95vmt9yQpqzP-Zp7@AvcSTCCPN>#GGW@$6Da8co|X{ADxe6~}#%vYKFm>QXE zzLn(qnytydKC&^bM)OHG?-^x#_tI_l-_H}CQP?)koa9TMCUZ`A?E8A_9a^7mwvn;; zYj1!n7MQ#rnCHsjKkKe(7Xk?0KG%R|o>hj%1UUFevAO<3q$gl1Aky4hl7g6^ILfY= z=!s02Ep){eM5^AEbVt@vKFM<-77&c~Ob*X5CR&NoT7bIx)3&wdER?DU*L?&msRtd?PMoHv3bOUGBXOol0jUwrv0tM$KRF_H z%3LGsPvSc{AxVQGW6t^Co;$uO1o8JeqwI;8ZR=?ajx{7~Z7Fe23IbOA%Fgl0Yxbeit(sKkoF|S*bpvXn zI|dH|7bQQD&M->4LmO{5Ntp2Z^_YtEs9 zt(rQE{BM$`(_d16RVA1>oISo8Qm?3=bQ=WkUCF06-D)pm-j;c3hom~>#z~>$;S_uS1^k5zJ#KsZb z+6Tor(on;Nuw6Ns!{fT!zEz{wopn!?@Z+GyG%V>n--8MvlW*x3$6pmb5vJ9YgCj+p zP^D19Ix`&wXEIzM{e0@mn2I|N%9Y+NybZ2&smWUxZTqDv-5ujI9w;tWuSV%7w_#N+ zOlByoT0`I3$eD}G!X{A)Kt`H(3PgP%pNNxCgkVl@N9RQ6^HYH5i5Yfv1HWs0Vu()A zD>@S7v_dqI0=Pa6%Sv!HR=(H?g{1Aa$DD#ax$1~SoOqa^*Uwq`qV-&Vr+rnLq@;g5 zpb?d#FEj3jdCNh?e|;fNO2DL6y^CnJWV7ZfRxKX`h~A_?2Y09*onV@q8hd{PWEDdX-bgJA9MzX2 zYeKojI3hhSdiJ%ug-#@ohRICSLYARb>`Y!>*C>4!%)^Z!Ep0%+gwq@SFj%nkxu=;d z3r92XH{M7{uDmxD(q0I7BeQLF-99s}PJI)cR86+SUPwVX%sRI{^*!-O+qg>t=o>-j zH&04)75jp74l+BRCOvXPd?KL5c}cmQj*dRN^Xo)(eTo*TJV6~?CZwP&|gi9)idfMY<>#jB84a3JmY0A zCfz`a3CpdBU+^O)@9C@qwxaA*YGW)=2h*|V(@$kj;NQntWua8tk4zTA-W^V z^dLLs1!gh5WSb!md!%oJz}7yd7}{>xmW?D@awnV=s9tmb(BJR+TP+%K)j|f0{M^w% z;!j5xNW*Z;2*_4ksP`5iVq|vMb@kj>p=v!t#?SD^M-Na)jCw0pfNrgYtIfn|YA4ZP z`igFQ)G5TA18*$MVrE*VoiVgC$eCd@Mtwv!&SCRJZF`<3UdYC1}>^!9q*8$9xp9-lDG^k#R^1eq(H*cF@2T<|uCS`vVWQdW8Ae$_W!X7Q`gHQCimLZ(tes#8P_*SL_2=#3Ibkw(jQM7UrOS0k-}KmMjU>Vfw`GD)SmI%DqL~l lmdwWk-Z2CHRq;}NZKbbzyqMwo`g@NRu(foucxXnu`ah~&OnLwS literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG?e4|-zS^mS!_${{ZxW>y=#emMgJ(``=|#}JR>bEkS|2M3C@ z?yt?CwahcR^GeoQv&_(tH5VKYc9tq>Xt2s!Xml_yyw(^j|ASein@_|&tliGdO7zIT zhNh-#Ty`7y7e*~~d|~bTu4uxNojYq)-#xVbzUKX$(rb3dIj%j7Zs2h;O;Eh1dWv@d_%oVO1Qy0WGsMcYmvmi$P3yr>7Fw~#Tea$ zI)47~EnM-|`s1$Zid*h_Y@W5(cQXXxc{Pnyf zG2vOzq_eATWbFKMWqpVD<}0rM6}GZI>#p_%-D_OfhMj6K=wg1m6_9lf*t4Lr!Xw>qI_Z~y(6RSdz`HTmKgv5 diff --git a/Stats/Views/Settings.swift b/Stats/Views/Settings.swift index a8c482914dc..6bc0cf82fd9 100644 --- a/Stats/Views/Settings.swift +++ b/Stats/Views/Settings.swift @@ -434,13 +434,27 @@ private class SidebarView: NSStackView { private func supportView() -> NSViewController { let vc: NSViewController = NSViewController(nibName: nil, bundle: nil) let view: NSStackView = NSStackView(frame: NSRect(x: 0, y: 0, width: 160, height: 40)) - view.spacing = 0 + view.spacing = 7 + view.edgeInsets = NSEdgeInsets(top: 0, left: 8, bottom: 0, right: 0) view.orientation = .horizontal - view.addArrangedSubview(supportButton(name: "GitHub Sponsors", image: "github", action: #selector(self.openGithub))) - view.addArrangedSubview(supportButton(name: "PayPal", image: "paypal", action: #selector(self.openPaypal))) - view.addArrangedSubview(supportButton(name: "Ko-fi", image: "ko-fi", action: #selector(self.openKofi))) - view.addArrangedSubview(supportButton(name: "Patreon", image: "patreon", action: #selector(self.openPatreon))) + let github = SupportButtonView(name: "GitHub Sponsors", image: "github", action: { + NSWorkspace.shared.open(URL(string: "https://github.com/sponsors/exelban")!) + }) + let paypal = SupportButtonView(name: "PayPal", image: "paypal", action: { + NSWorkspace.shared.open(URL(string: "https://www.paypal.com/donate?hosted_button_id=3DS5JHDBATMTC")!) + }) + let koFi = SupportButtonView(name: "Ko-fi", image: "ko-fi", action: { + NSWorkspace.shared.open(URL(string: "https://ko-fi.com/exelban")!) + }) + let patreon = SupportButtonView(name: "Patreon", image: "patreon", action: { + NSWorkspace.shared.open(URL(string: "https://patreon.com/exelban")!) + }) + + view.addArrangedSubview(github) + view.addArrangedSubview(paypal) + view.addArrangedSubview(koFi) + view.addArrangedSubview(patreon) vc.view = view return vc @@ -473,22 +487,6 @@ private class SidebarView: NSStackView { self.supportPopover.show(relativeTo: sender.bounds, of: sender, preferredEdge: NSRectEdge.minY) } - @objc private func openGithub(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://github.com/sponsors/exelban")!) - } - - @objc private func openPaypal(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://www.paypal.com/donate?hosted_button_id=3DS5JHDBATMTC")!) - } - - @objc private func openKofi(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://ko-fi.com/exelban")!) - } - - @objc private func openPatreon(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://patreon.com/exelban")!) - } - @objc private func closeApp(_ sender: Any) { NSApp.terminate(sender) } diff --git a/Stats/Views/Setup.swift b/Stats/Views/Setup.swift index 90ba9059b09..10dc17d9727 100644 --- a/Stats/Views/Setup.swift +++ b/Stats/Views/Setup.swift @@ -24,12 +24,7 @@ internal class SetupWindow: NSWindow, NSWindowDelegate { self.vc.view = self.view super.init( - contentRect: NSRect( - x: NSScreen.main!.frame.width - self.view.frame.width, - y: NSScreen.main!.frame.height - self.view.frame.height, - width: self.view.frame.width, - height: self.view.frame.height - ), + contentRect: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height), styleMask: [.closable, .titled], backing: .buffered, defer: true @@ -463,13 +458,27 @@ private class SetupView_end: NSStackView { message.isSelectable = false let support: NSStackView = NSStackView(frame: NSRect(x: 0, y: 0, width: 160, height: 50)) - support.spacing = 0 + support.edgeInsets = NSEdgeInsets(top: 12, left: 0, bottom: 0, right: 0) + support.spacing = 12 support.orientation = .horizontal - support.addArrangedSubview(supportButton(name: "GitHub Sponsors", image: "github", action: #selector(self.openGithub))) - support.addArrangedSubview(supportButton(name: "PayPal", image: "paypal", action: #selector(self.openPaypal))) - support.addArrangedSubview(supportButton(name: "Ko-fi", image: "ko-fi", action: #selector(self.openKofi))) - support.addArrangedSubview(supportButton(name: "Patreon", image: "patreon", action: #selector(self.openPatreon))) + let github = SupportButtonView(name: "GitHub Sponsors", image: "github", action: { + NSWorkspace.shared.open(URL(string: "https://github.com/sponsors/exelban")!) + }) + let paypal = SupportButtonView(name: "PayPal", image: "paypal", action: { + NSWorkspace.shared.open(URL(string: "https://www.paypal.com/donate?hosted_button_id=3DS5JHDBATMTC")!) + }) + let koFi = SupportButtonView(name: "Ko-fi", image: "ko-fi", action: { + NSWorkspace.shared.open(URL(string: "https://ko-fi.com/exelban")!) + }) + let patreon = SupportButtonView(name: "Patreon", image: "patreon", action: { + NSWorkspace.shared.open(URL(string: "https://patreon.com/exelban")!) + }) + + support.addArrangedSubview(github) + support.addArrangedSubview(paypal) + support.addArrangedSubview(koFi) + support.addArrangedSubview(patreon) content.addArrangedSubview(message) content.addArrangedSubview(support) @@ -485,39 +494,57 @@ private class SetupView_end: NSStackView { required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - - private func supportButton(name: String, image: String, action: Selector) -> NSButton { - let button = NSButtonWithPadding() - button.frame = CGRect(x: 0, y: 0, width: 24, height: 24) - button.verticalPadding = 16 - button.horizontalPadding = 16 - button.title = name - button.toolTip = name - button.bezelStyle = .regularSquare - button.translatesAutoresizingMaskIntoConstraints = false - button.imageScaling = .scaleNone - button.image = Bundle(for: type(of: self)).image(forResource: image)! - button.isBordered = false - button.target = self - button.focusRingType = .none - button.action = action +} + +public class SupportButtonView: NSButton { + public var callback: (() -> Void) = {} + + public init(name: String, image: String, action: @escaping () -> Void) { + self.callback = action + + super.init(frame: NSRect(x: 0, y: 0, width: 30, height: 30)) + + self.title = name + self.toolTip = name + self.bezelStyle = .regularSquare + self.translatesAutoresizingMaskIntoConstraints = false + self.imageScaling = .scaleProportionallyDown + self.image = Bundle(for: type(of: self)).image(forResource: image)! + self.isBordered = false + self.target = self + self.focusRingType = .none + self.action = #selector(self.click) + self.wantsLayer = true + self.alphaValue = 0.9 + + self.addTrackingArea(NSTrackingArea( + rect: NSRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height), + options: [NSTrackingArea.Options.activeAlways, NSTrackingArea.Options.mouseEnteredAndExited, NSTrackingArea.Options.activeInActiveApp], + owner: self, + userInfo: nil + )) - return button + NSLayoutConstraint.activate([ + self.widthAnchor.constraint(equalToConstant: self.bounds.width), + self.heightAnchor.constraint(equalToConstant: self.bounds.height) + ]) } - @objc private func openGithub(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://github.com/sponsors/exelban")!) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") } - @objc private func openPaypal(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://www.paypal.com/donate?hosted_button_id=3DS5JHDBATMTC")!) + public override func mouseEntered(with: NSEvent) { + self.alphaValue = 1 + NSCursor.pointingHand.set() } - @objc private func openKofi(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://ko-fi.com/exelban")!) + public override func mouseExited(with: NSEvent) { + self.alphaValue = 0.9 + NSCursor.arrow.set() } - @objc private func openPatreon(_ sender: NSButton) { - NSWorkspace.shared.open(URL(string: "https://patreon.com/exelban")!) + @objc private func click(_ sender: NSControl) { + self.callback() } }