mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-11-07 21:20:07 +01:00
✨ Correctly load presets from config file
This commit is contained in:
@@ -27,3 +27,25 @@ extension NSMenu {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - NSMenuItem subclasses
|
||||
|
||||
class PhpMenuItem: NSMenuItem {
|
||||
var version: String = ""
|
||||
}
|
||||
|
||||
class XdebugMenuItem: NSMenuItem {
|
||||
var mode: String = ""
|
||||
}
|
||||
|
||||
class ExtensionMenuItem: NSMenuItem {
|
||||
var phpExtension: PhpExtension?
|
||||
}
|
||||
|
||||
class EditorMenuItem: NSMenuItem {
|
||||
var editor: Application?
|
||||
}
|
||||
|
||||
class PresetMenuItem: NSMenuItem {
|
||||
var preset: CustomPrefs.Preset?
|
||||
}
|
||||
|
||||
@@ -145,6 +145,12 @@ extension MainMenu {
|
||||
}
|
||||
}
|
||||
|
||||
@objc func togglePreset(sender: PresetMenuItem) {
|
||||
asyncExecution {
|
||||
dump(sender.preset)
|
||||
}
|
||||
}
|
||||
|
||||
@objc func openPhpInfo() {
|
||||
var url: URL?
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ class StatusMenu: NSMenu {
|
||||
self.addItem(NSMenuItem.separator())
|
||||
|
||||
self.addXdebugMenuItem()
|
||||
self.addPresetsMenuItem()
|
||||
|
||||
self.addFirstAidAndServicesMenuItems()
|
||||
}
|
||||
@@ -140,6 +141,43 @@ class StatusMenu: NSMenu {
|
||||
}
|
||||
}
|
||||
|
||||
func addPresetsMenuItem() {
|
||||
if Preferences.custom.presets.isEmpty {
|
||||
return
|
||||
}
|
||||
|
||||
let presets = NSMenuItem(title: "Configuration Presets", action: nil, keyEquivalent: "")
|
||||
let presetsMenu = NSMenu()
|
||||
presetsMenu.addItem(NSMenuItem.separator())
|
||||
presetsMenu.addItem(HeaderView.asMenuItem(text: "Apply Configuration Presets"))
|
||||
|
||||
for preset in Preferences.custom.presets {
|
||||
let presetMenuItem = PresetMenuItem(
|
||||
title: "\(preset.name) (\(preset.extensions.count) extension, \(preset.configuration.count) prefs)",
|
||||
action: #selector(MainMenu.togglePreset(sender:)),
|
||||
keyEquivalent: ""
|
||||
)
|
||||
presetMenuItem.preset = preset
|
||||
presetsMenu.addItem(presetMenuItem)
|
||||
}
|
||||
|
||||
presetsMenu.addItem(NSMenuItem.separator())
|
||||
presetsMenu.addItem(NSMenuItem(
|
||||
title: "Revert to Previous Configuration...",
|
||||
action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "")
|
||||
)
|
||||
presetsMenu.addItem(NSMenuItem.separator())
|
||||
presetsMenu.addItem(NSMenuItem(
|
||||
title: "\(Preferences.custom.presets.count) profiles loaded from configuration file",
|
||||
action: nil, keyEquivalent: "")
|
||||
)
|
||||
for item in presetsMenu.items {
|
||||
item.target = MainMenu.shared
|
||||
}
|
||||
self.setSubmenu(presetsMenu, for: presets)
|
||||
self.addItem(presets)
|
||||
}
|
||||
|
||||
func addXdebugMenuItem() {
|
||||
if !Xdebug.enabled {
|
||||
return
|
||||
@@ -289,21 +327,3 @@ class StatusMenu: NSMenu {
|
||||
self.addItem(menuItem)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - NSMenuItem subclasses
|
||||
|
||||
class PhpMenuItem: NSMenuItem {
|
||||
var version: String = ""
|
||||
}
|
||||
|
||||
class XdebugMenuItem: NSMenuItem {
|
||||
var mode: String = ""
|
||||
}
|
||||
|
||||
class ExtensionMenuItem: NSMenuItem {
|
||||
var phpExtension: PhpExtension?
|
||||
}
|
||||
|
||||
class EditorMenuItem: NSMenuItem {
|
||||
var editor: Application?
|
||||
}
|
||||
|
||||
@@ -10,8 +10,16 @@ import Foundation
|
||||
|
||||
struct CustomPrefs: Decodable {
|
||||
let scanApps: [String]
|
||||
let presets: [Preset]
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case scanApps = "scan_apps"
|
||||
case presets = "presets"
|
||||
}
|
||||
|
||||
struct Preset: Decodable {
|
||||
let name: String
|
||||
let extensions: [String: Bool]
|
||||
let configuration: [String: String?]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ class Preferences {
|
||||
public init() {
|
||||
Preferences.handleFirstTimeLaunch()
|
||||
cachedPreferences = Self.cache()
|
||||
customPreferences = CustomPrefs(scanApps: [])
|
||||
customPreferences = CustomPrefs(scanApps: [], presets: [])
|
||||
loadCustomPreferences()
|
||||
}
|
||||
|
||||
@@ -188,7 +188,9 @@ class Preferences {
|
||||
CustomPrefs.self,
|
||||
from: try! String(contentsOf: url, encoding: .utf8).data(using: .utf8)!
|
||||
)
|
||||
|
||||
Log.info("The .phpmon.conf.json file was successfully parsed.")
|
||||
Log.info("There are \(customPreferences.presets.count) custom presets.")
|
||||
} catch {
|
||||
Log.warn("The .phpmon.conf.json file seems to be missing or malformed.")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user