Skip to content

Commit b5d0b74

Browse files
authored
Merge pull request #114 from 42Box/cluster_develop
Merge: 2.7 Week Release
2 parents b69b184 + a2095a9 commit b5d0b74

40 files changed

Lines changed: 922 additions & 293 deletions

Box42.xcodeproj/project.pbxproj

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
DE77BA562A82637900713683 /* StateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BA552A82637900713683 /* StateManager.swift */; };
6969
DE77BBA22A9DDC40006CC98B /* ScriptsFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBA12A9DDC40006CC98B /* ScriptsFileManager.swift */; };
7070
DE77BBA62A9DDF2B006CC98B /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0A91772A8F014F00D1D6F1 /* WebView.swift */; };
71-
DE77BBCD2A9E0568006CC98B /* ExcuteScripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBCC2A9E0568006CC98B /* ExcuteScripts.swift */; };
71+
DE77BBCD2A9E0568006CC98B /* ExecuteScripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBCC2A9E0568006CC98B /* ExecuteScripts.swift */; };
7272
DE77BBD22A9E0AE8006CC98B /* WebViewUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBD12A9E0AE8006CC98B /* WebViewUI.swift */; };
7373
DE77BBE22A9E0F70006CC98B /* Scripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBE12A9E0F70006CC98B /* Scripts.swift */; };
7474
DE77BBF02A9E38C6006CC98B /* GetUserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBA92A9DE680006CC98B /* GetUserProfile.swift */; };
@@ -90,6 +90,14 @@
9090
DE94570C2A9E69EB00B0B768 /* ScriptExcuteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94570B2A9E69EB00B0B768 /* ScriptExcuteButton.swift */; };
9191
DE94570F2A9E69F200B0B768 /* ScriptDeleteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94570E2A9E69F200B0B768 /* ScriptDeleteButton.swift */; };
9292
DE9457162A9E6D3000B0B768 /* ScriptQuickSlotButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9457112A9E6A0000B0B768 /* ScriptQuickSlotButton.swift */; };
93+
DE9457192A9EEEF000B0B768 /* ScriptCellManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9457182A9EEEF000B0B768 /* ScriptCellManager.swift */; };
94+
DE94571C2A9EFB7800B0B768 /* Associated+NSButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94571B2A9EFB7800B0B768 /* Associated+NSButton.swift */; };
95+
DE9457282A9F6E4400B0B768 /* GetUserMeScripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9457272A9F6E4400B0B768 /* GetUserMeScripts.swift */; };
96+
DE94572C2A9F75D500B0B768 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94572B2A9F75D500B0B768 /* API.swift */; };
97+
DE9457312A9FB01400B0B768 /* PreferencesTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9457302A9FB01400B0B768 /* PreferencesTableView.swift */; };
98+
DE9457342A9FB1D300B0B768 /* RequestAccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9457332A9FB1D300B0B768 /* RequestAccessView.swift */; };
99+
DE9457372A9FC0A800B0B768 /* SecurityScopedResourceAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9457362A9FC0A800B0B768 /* SecurityScopedResourceAccess.swift */; };
100+
DE94573D2A9FD33400B0B768 /* StorageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94573C2A9FD33400B0B768 /* StorageView.swift */; };
93101
DE97CA692A9A6364001073DE /* PixelConversion+CGFloat.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE97CA682A9A6364001073DE /* PixelConversion+CGFloat.swift */; };
94102
DE97CA792A9A6F6A001073DE /* QuickSlotHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE97CA782A9A6F6A001073DE /* QuickSlotHeaderView.swift */; };
95103
DE97CA7C2A9A7199001073DE /* QuickSlotGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE97CA7B2A9A7199001073DE /* QuickSlotGroupView.swift */; };
@@ -171,7 +179,7 @@
171179
DE77BA552A82637900713683 /* StateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateManager.swift; sourceTree = "<group>"; };
172180
DE77BBA12A9DDC40006CC98B /* ScriptsFileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptsFileManager.swift; sourceTree = "<group>"; };
173181
DE77BBA92A9DE680006CC98B /* GetUserProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetUserProfile.swift; sourceTree = "<group>"; };
174-
DE77BBCC2A9E0568006CC98B /* ExcuteScripts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExcuteScripts.swift; sourceTree = "<group>"; };
182+
DE77BBCC2A9E0568006CC98B /* ExecuteScripts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExecuteScripts.swift; sourceTree = "<group>"; };
175183
DE77BBD12A9E0AE8006CC98B /* WebViewUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewUI.swift; sourceTree = "<group>"; };
176184
DE77BBE12A9E0F70006CC98B /* Scripts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scripts.swift; sourceTree = "<group>"; };
177185
DE77BBE92A9E2DDF006CC98B /* UserManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserManager.swift; sourceTree = "<group>"; };
@@ -193,6 +201,14 @@
193201
DE94570B2A9E69EB00B0B768 /* ScriptExcuteButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptExcuteButton.swift; sourceTree = "<group>"; };
194202
DE94570E2A9E69F200B0B768 /* ScriptDeleteButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptDeleteButton.swift; sourceTree = "<group>"; };
195203
DE9457112A9E6A0000B0B768 /* ScriptQuickSlotButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptQuickSlotButton.swift; sourceTree = "<group>"; };
204+
DE9457182A9EEEF000B0B768 /* ScriptCellManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptCellManager.swift; sourceTree = "<group>"; };
205+
DE94571B2A9EFB7800B0B768 /* Associated+NSButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Associated+NSButton.swift"; sourceTree = "<group>"; };
206+
DE9457272A9F6E4400B0B768 /* GetUserMeScripts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetUserMeScripts.swift; sourceTree = "<group>"; };
207+
DE94572B2A9F75D500B0B768 /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = "<group>"; };
208+
DE9457302A9FB01400B0B768 /* PreferencesTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesTableView.swift; sourceTree = "<group>"; };
209+
DE9457332A9FB1D300B0B768 /* RequestAccessView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestAccessView.swift; sourceTree = "<group>"; };
210+
DE9457362A9FC0A800B0B768 /* SecurityScopedResourceAccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecurityScopedResourceAccess.swift; sourceTree = "<group>"; };
211+
DE94573C2A9FD33400B0B768 /* StorageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageView.swift; sourceTree = "<group>"; };
196212
DE97CA682A9A6364001073DE /* PixelConversion+CGFloat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PixelConversion+CGFloat.swift"; sourceTree = "<group>"; };
197213
DE97CA6E2A9A6EFC001073DE /* QuickSlotViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSlotViewModel.swift; sourceTree = "<group>"; };
198214
DE97CA712A9A6F0D001073DE /* QuickSlotButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSlotButtonModel.swift; sourceTree = "<group>"; };
@@ -420,6 +436,7 @@
420436
DE1F1A282A8B50E200A88DD8 /* BoxSizeManager.swift */,
421437
DE77BA552A82637900713683 /* StateManager.swift */,
422438
DE0A91622A8E6A5400D1D6F1 /* Constants.swift */,
439+
DE9457362A9FC0A800B0B768 /* SecurityScopedResourceAccess.swift */,
423440
);
424441
path = Shared;
425442
sourceTree = "<group>";
@@ -428,6 +445,8 @@
428445
isa = PBXGroup;
429446
children = (
430447
DE77BBA92A9DE680006CC98B /* GetUserProfile.swift */,
448+
DE9457272A9F6E4400B0B768 /* GetUserMeScripts.swift */,
449+
DE94572B2A9F75D500B0B768 /* API.swift */,
431450
);
432451
path = API;
433452
sourceTree = "<group>";
@@ -496,7 +515,7 @@
496515
children = (
497516
DE0A917A2A8F0CA800D1D6F1 /* AppleScripts+ShowMessage.swift */,
498517
DE77BBA12A9DDC40006CC98B /* ScriptsFileManager.swift */,
499-
DE77BBCC2A9E0568006CC98B /* ExcuteScripts.swift */,
518+
DE77BBCC2A9E0568006CC98B /* ExecuteScripts.swift */,
500519
DE7886272A9D186700FE21DD /* ScriptsViewController.swift */,
501520
);
502521
path = Controller;
@@ -505,7 +524,8 @@
505524
DE78862B2A9D1A9E00FE21DD /* View */ = {
506525
isa = PBXGroup;
507526
children = (
508-
DE78862C2A9D1ADE00FE21DD /* PreferencesCell.swift */,
527+
DE9457412A9FD69800B0B768 /* Table */,
528+
DE94573F2A9FD68C00B0B768 /* Funtion */,
509529
);
510530
path = View;
511531
sourceTree = "<group>";
@@ -528,8 +548,7 @@
528548
DE2AD3282A824EEB00002D51 /* Accessibility.swift */,
529549
DE874F4D2A591DEA00FC3B77 /* Hotkey.swift */,
530550
);
531-
name = Preferences;
532-
path = QuickSlot/Preferences;
551+
path = Preferences;
533552
sourceTree = "<group>";
534553
};
535554
DE9456F62A9E44F100B0B768 /* Icon */ = {
@@ -566,6 +585,25 @@
566585
children = (
567586
DE7886032A9C71CB00FE21DD /* ScriptsTableView.swift */,
568587
DE9456FF2A9E5B0900B0B768 /* ScriptCell.swift */,
588+
DE9457182A9EEEF000B0B768 /* ScriptCellManager.swift */,
589+
);
590+
path = Table;
591+
sourceTree = "<group>";
592+
};
593+
DE94573F2A9FD68C00B0B768 /* Funtion */ = {
594+
isa = PBXGroup;
595+
children = (
596+
DE9457332A9FB1D300B0B768 /* RequestAccessView.swift */,
597+
DE94573C2A9FD33400B0B768 /* StorageView.swift */,
598+
);
599+
path = Funtion;
600+
sourceTree = "<group>";
601+
};
602+
DE9457412A9FD69800B0B768 /* Table */ = {
603+
isa = PBXGroup;
604+
children = (
605+
DE78862C2A9D1ADE00FE21DD /* PreferencesCell.swift */,
606+
DE9457302A9FB01400B0B768 /* PreferencesTableView.swift */,
569607
);
570608
path = Table;
571609
sourceTree = "<group>";
@@ -687,6 +725,7 @@
687725
DE24E63A2A8FE93900E29F5D /* NSImage.swift */,
688726
DE98E83A2A98DB6000F8744A /* RotateImage+NSImage.swift */,
689727
DE97CA682A9A6364001073DE /* PixelConversion+CGFloat.swift */,
728+
DE94571B2A9EFB7800B0B768 /* Associated+NSButton.swift */,
690729
);
691730
path = Extensions;
692731
sourceTree = "<group>";
@@ -785,19 +824,23 @@
785824
DE4408082A9240300091937A /* BoxFunctionButtonView.swift in Sources */,
786825
DE3FF3742A978AB8009C88EF /* WindowMaximizeButton.swift in Sources */,
787826
DE3FF3A32A97D2A6009C88EF /* DisplayURLTextfield.swift in Sources */,
827+
DE9457192A9EEEF000B0B768 /* ScriptCellManager.swift in Sources */,
788828
DE9457002A9E5B0900B0B768 /* ScriptCell.swift in Sources */,
789829
DE7886042A9C71CB00FE21DD /* ScriptsTableView.swift in Sources */,
830+
DE9457312A9FB01400B0B768 /* PreferencesTableView.swift in Sources */,
790831
DE97CA872A9A7407001073DE /* QuickSlotButtonModel.swift in Sources */,
791832
DE77BA562A82637900713683 /* StateManager.swift in Sources */,
792833
DE1F1A1C2A8B50C500A88DD8 /* BoxBaseContainerViewController.swift in Sources */,
793834
DEE0FA962A9A554F00085A65 /* FunctionButtonUI.swift in Sources */,
794835
DE018BE72A509B1E00FF0AA3 /* WebViewController.swift in Sources */,
795836
DE98E8552A98EA7900F8744A /* WindowButtonUI.swift in Sources */,
796837
DE4407FA2A923E860091937A /* BoxFunctionViewController.swift in Sources */,
838+
DE94572C2A9F75D500B0B768 /* API.swift in Sources */,
797839
DE4407FE2A923EA90091937A /* PreferenceButtonView.swift in Sources */,
798840
DE77BBF02A9E38C6006CC98B /* GetUserProfile.swift in Sources */,
799841
DEF749322A85657600D987C8 /* NSScreen.swift in Sources */,
800842
DE018BF02A509B2F00FF0AA3 /* MenubarViewController.swift in Sources */,
843+
DE94571C2A9EFB7800B0B768 /* Associated+NSButton.swift in Sources */,
801844
DE6332E42A9BB8F800DCFAF6 /* QuickSlotButtonCollectionViewController.swift in Sources */,
802845
DE9457062A9E69C100B0B768 /* ScriptNameLabel.swift in Sources */,
803846
DE77BA512A82580400713683 /* MenubarViewModel.swift in Sources */,
@@ -811,22 +854,26 @@
811854
DE77BBA62A9DDF2B006CC98B /* WebView.swift in Sources */,
812855
DE0A91832A8F889000D1D6F1 /* GoHomePageViaToolbar().swift in Sources */,
813856
DE6332F22A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift in Sources */,
857+
DE9457342A9FB1D300B0B768 /* RequestAccessView.swift in Sources */,
814858
DE018BB32A5099F900FF0AA3 /* AppDelegate.swift in Sources */,
815859
DE78860C2A9C770300FE21DD /* ScriptsViewModel.swift in Sources */,
816860
DE0A91632A8E6A5400D1D6F1 /* Constants.swift in Sources */,
817861
DE7886172A9CCB3B00FE21DD /* UserProfile.swift in Sources */,
818862
DE0A91902A8F88CA00D1D6F1 /* DisplayURLInToolbar.swift in Sources */,
819-
DE77BBCD2A9E0568006CC98B /* ExcuteScripts.swift in Sources */,
863+
DE77BBCD2A9E0568006CC98B /* ExecuteScripts.swift in Sources */,
820864
DE9456F82A9E44FD00B0B768 /* IconController.swift in Sources */,
821865
DE018BF32A509B3300FF0AA3 /* MenubarModel.swift in Sources */,
822866
DE7A257A2A6D8CA20043225A /* PreferencesViewController.swift in Sources */,
823867
DE24E63B2A8FE93900E29F5D /* NSImage.swift in Sources */,
824868
DE94570F2A9E69F200B0B768 /* ScriptDeleteButton.swift in Sources */,
825869
DE97CA792A9A6F6A001073DE /* QuickSlotHeaderView.swift in Sources */,
870+
DE9457372A9FC0A800B0B768 /* SecurityScopedResourceAccess.swift in Sources */,
826871
DE0A916D2A8E7DD700D1D6F1 /* HoverButton.swift in Sources */,
827872
DE97CA862A9A7404001073DE /* QuickSlotViewModel.swift in Sources */,
828873
DE3FF3762A978AB8009C88EF /* WindowCloseButton.swift in Sources */,
829874
DE9457092A9E69D100B0B768 /* ScriptDescriptionsLabel.swift in Sources */,
875+
DE94573D2A9FD33400B0B768 /* StorageView.swift in Sources */,
876+
DE9457282A9F6E4400B0B768 /* GetUserMeScripts.swift in Sources */,
830877
DE77BBD22A9E0AE8006CC98B /* WebViewUI.swift in Sources */,
831878
DE3FF3772A978AB8009C88EF /* WindowMinimizeButton.swift in Sources */,
832879
DE4408022A923EB60091937A /* PinButtonView.swift in Sources */,
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
//
2+
// Associated+NSButton.swift
3+
// Box42
4+
//
5+
// Created by Chanhee Kim on 8/30/23.
6+
//
7+
8+
import AppKit
9+
10+
private var AssociatedObjectKey: UInt8 = 0
11+
12+
extension NSButton {
13+
var associatedString: String? {
14+
get {
15+
return objc_getAssociatedObject(self, &AssociatedObjectKey) as? String
16+
}
17+
set(newValue) {
18+
objc_setAssociatedObject(self, &AssociatedObjectKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
19+
}
20+
}
21+
}

Box42/FunctionButton/BoxFunctionViewController.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@
88
import Cocoa
99

1010
class BoxFunctionViewController: NSViewController {
11+
12+
var pinButtonView: PinButtonView?
13+
1114
override func loadView() {
1215
let functionViewGroup = BoxFunctionViewGroup()
1316

17+
pinButtonView = functionViewGroup.pinButton
1418
functionViewGroup.preferenceAction = preference
1519
functionViewGroup.pinAction = pin
1620
functionViewGroup.quitAction = quit
@@ -28,6 +32,16 @@ class BoxFunctionViewController: NSViewController {
2832
}
2933

3034
func pin() {
35+
StateManager.shared.togglePin()
36+
37+
let newImage: NSImage
38+
if StateManager.shared.pin {
39+
newImage = NSImage(imageLiteralResourceName: "pin-box-ver")
40+
} else {
41+
newImage = NSImage(imageLiteralResourceName: "pin-box")
42+
}
43+
44+
pinButtonView?.changePinImage(to: newImage) // 이미지 변경
3145
print("pin")
3246
}
3347

@@ -37,7 +51,7 @@ class BoxFunctionViewController: NSViewController {
3751
}
3852

3953
weak var delegate: BoxFunctionViewControllerDelegate?
40-
54+
4155
func box() {
4256
print("box")
4357
delegate?.didTapBoxButton()

Box42/FunctionButton/View/PinButtonView.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ class PinButtonView: NSView {
4949
fatalError("init(coder:) has not been implemented")
5050
}
5151

52+
func changePinImage(to image: NSImage) {
53+
pinBoxButton.image = image
54+
}
55+
5256
@objc func pin() {
5357
callback?()
5458
}

Box42/Main/keyDown+BoxBaseContainerViewController.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ extension BoxBaseContainerViewController {
2222
StorageConfig.shared.setPeriod(.period1s)
2323
}
2424

25+
if event.modifierFlags.contains(.command) && event.keyCode == 15 {
26+
print("Cmd + R pressed, reloading...")
27+
WebViewManager.shared.hostingWebView?.reload()
28+
}
2529

2630
if event.keyCode == 53 { // Escape 키의 keyCode는 53입니다.
2731
print("escape")
File renamed without changes.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// PreferencesViewController.swift
3+
// Box42
4+
//
5+
// Created by Chanhee Kim on 7/24/23.
6+
//
7+
8+
import Cocoa
9+
import SnapKit
10+
11+
class PreferencesViewController: NSViewController {
12+
var prefTableView : PreferencesTableView?
13+
14+
override func loadView() {
15+
self.view = NSView()
16+
self.view.wantsLayer = true
17+
self.view.layer?.backgroundColor = NSColor.blue.cgColor
18+
19+
prefTableView = PreferencesTableView(frame: .zero)
20+
prefTableView?.setup()
21+
// prefTableView?.viewModel = viewModel
22+
23+
let scrollView = NSScrollView()
24+
scrollView.documentView = prefTableView
25+
self.view.addSubview(scrollView)
26+
27+
scrollView.snp.makeConstraints({ make in
28+
make.edges.equalToSuperview()
29+
})
30+
31+
prefTableView?.snp.makeConstraints({ make in
32+
make.edges.equalToSuperview()
33+
})
34+
}
35+
}
File renamed without changes.

0 commit comments

Comments
 (0)