mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-11 09:28:38 +00:00
Merge pull request #25 from ad/openPresetFile
+ open preset from dialog (not replacing default file)
This commit is contained in:
commit
03bcafd5ff
@ -39,10 +39,36 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||||||
TouchBarController.shared.createAndUpdatePreset()
|
TouchBarController.shared.createAndUpdatePreset()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func openPreset(_ sender: Any?) {
|
||||||
|
let dialog = NSOpenPanel();
|
||||||
|
|
||||||
|
dialog.title = "Choose a items.json file"
|
||||||
|
dialog.showsResizeIndicator = true
|
||||||
|
dialog.showsHiddenFiles = true
|
||||||
|
dialog.canChooseDirectories = false
|
||||||
|
dialog.canCreateDirectories = false
|
||||||
|
dialog.allowsMultipleSelection = false
|
||||||
|
dialog.allowedFileTypes = ["json"]
|
||||||
|
dialog.directoryURL = NSURL.fileURL(withPath: NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first!.appending("/MTMR"), isDirectory: true)
|
||||||
|
|
||||||
|
if (dialog.runModal() == NSApplication.ModalResponse.OK) {
|
||||||
|
let result = dialog.url
|
||||||
|
|
||||||
|
if (result != nil) {
|
||||||
|
let path = result!.path
|
||||||
|
let jsonData = path.fileData
|
||||||
|
let jsonItems = jsonData?.barItemDefinitions() ?? [BarItemDefinition(type: .staticButton(title: "bad preset"), action: .none, additionalParameters: [:])]
|
||||||
|
|
||||||
|
TouchBarController.shared.createAndUpdatePreset(jsonItems: jsonItems)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func createMenu() {
|
func createMenu() {
|
||||||
let menu = NSMenu()
|
let menu = NSMenu()
|
||||||
menu.addItem(withTitle: "Preferences", action: #selector(openPrefereces(_:)), keyEquivalent: ",")
|
menu.addItem(withTitle: "Preferences", action: #selector(openPrefereces(_:)), keyEquivalent: ",")
|
||||||
menu.addItem(withTitle: "Reload Preset", action: #selector(updatePreset(_:)), keyEquivalent: "r")
|
menu.addItem(withTitle: "Reload Preset", action: #selector(updatePreset(_:)), keyEquivalent: "r")
|
||||||
|
menu.addItem(withTitle: "Open Preset", action: #selector(openPreset(_:)), keyEquivalent: "O")
|
||||||
menu.addItem(NSMenuItem.separator())
|
menu.addItem(NSMenuItem.separator())
|
||||||
menu.addItem(withTitle: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q")
|
menu.addItem(withTitle: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q")
|
||||||
statusItem.menu = menu
|
statusItem.menu = menu
|
||||||
|
|||||||
@ -64,14 +64,18 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
|
|||||||
createAndUpdatePreset()
|
createAndUpdatePreset()
|
||||||
}
|
}
|
||||||
|
|
||||||
func createAndUpdatePreset() {
|
func createAndUpdatePreset(jsonItems: [BarItemDefinition]? = nil) {
|
||||||
|
var jsonItems = jsonItems
|
||||||
self.itemDefinitions = [:]
|
self.itemDefinitions = [:]
|
||||||
self.items = [:]
|
self.items = [:]
|
||||||
self.leftIdentifiers = []
|
self.leftIdentifiers = []
|
||||||
self.centerItems = []
|
self.centerItems = []
|
||||||
self.rightIdentifiers = []
|
self.rightIdentifiers = []
|
||||||
|
|
||||||
loadItemDefinitions()
|
if (jsonItems == nil) {
|
||||||
|
jsonItems = readConfig()
|
||||||
|
}
|
||||||
|
loadItemDefinitions(jsonItems: jsonItems!)
|
||||||
createItems()
|
createItems()
|
||||||
centerItems = self.itemDefinitions.compactMap { (identifier, definition) -> NSTouchBarItem? in
|
centerItems = self.itemDefinitions.compactMap { (identifier, definition) -> NSTouchBarItem? in
|
||||||
return definition.align == .center ? items[identifier] : nil
|
return definition.align == .center ? items[identifier] : nil
|
||||||
@ -81,8 +85,8 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
|
|||||||
touchBar.defaultItemIdentifiers = self.leftIdentifiers + [.centerScrollArea] + self.rightIdentifiers
|
touchBar.defaultItemIdentifiers = self.leftIdentifiers + [.centerScrollArea] + self.rightIdentifiers
|
||||||
self.presentTouchBar()
|
self.presentTouchBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadItemDefinitions() {
|
func readConfig() -> [BarItemDefinition]? {
|
||||||
let appSupportDirectory = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first!.appending("/MTMR")
|
let appSupportDirectory = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first!.appending("/MTMR")
|
||||||
let presetPath = appSupportDirectory.appending("/items.json")
|
let presetPath = appSupportDirectory.appending("/items.json")
|
||||||
if !FileManager.default.fileExists(atPath: presetPath),
|
if !FileManager.default.fileExists(atPath: presetPath),
|
||||||
@ -90,9 +94,13 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
|
|||||||
try? FileManager.default.createDirectory(atPath: appSupportDirectory, withIntermediateDirectories: true, attributes: nil)
|
try? FileManager.default.createDirectory(atPath: appSupportDirectory, withIntermediateDirectories: true, attributes: nil)
|
||||||
try? FileManager.default.copyItem(atPath: defaultPreset, toPath: presetPath)
|
try? FileManager.default.copyItem(atPath: defaultPreset, toPath: presetPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
let jsonData = presetPath.fileData
|
let jsonData = presetPath.fileData
|
||||||
let jsonItems = jsonData?.barItemDefinitions() ?? [BarItemDefinition(type: .staticButton(title: "bad preset"), action: .none, additionalParameters: [:])]
|
|
||||||
|
return jsonData?.barItemDefinitions() ?? [BarItemDefinition(type: .staticButton(title: "bad preset"), action: .none, additionalParameters: [:])]
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadItemDefinitions(jsonItems: [BarItemDefinition]) {
|
||||||
for item in jsonItems {
|
for item in jsonItems {
|
||||||
let identifierString = item.type.identifierBase.appending(UUID().uuidString)
|
let identifierString = item.type.identifierBase.appending(UUID().uuidString)
|
||||||
let identifier = NSTouchBarItem.Identifier(identifierString)
|
let identifier = NSTouchBarItem.Identifier(identifierString)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user