From 40e404fe247543b0dcca369abc0b5f9f51c3bcf8 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Thu, 19 May 2022 01:50:15 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20Prototype=20(non-functional)=20f?= =?UTF-8?q?or=20presets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PHP Monitor.xcodeproj/project.pbxproj | 12 +++++++ .../Test Files/phpmon/phpmon-config.json | 24 ++++++++++++++ phpmon/Domain/Menu/StatusMenu.swift | 31 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 phpmon-tests/Test Files/phpmon/phpmon-config.json diff --git a/PHP Monitor.xcodeproj/project.pbxproj b/PHP Monitor.xcodeproj/project.pbxproj index 8c19794e..4fe01aeb 100644 --- a/PHP Monitor.xcodeproj/project.pbxproj +++ b/PHP Monitor.xcodeproj/project.pbxproj @@ -117,6 +117,7 @@ C44CCD4127AFE2FC00CE40E5 /* AlertableError.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD3F27AFE2FC00CE40E5 /* AlertableError.swift */; }; C44CCD4927AFF3B700CE40E5 /* MainMenu+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD4827AFF3B700CE40E5 /* MainMenu+Async.swift */; }; C44CCD4A27AFF3BC00CE40E5 /* MainMenu+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44CCD4827AFF3B700CE40E5 /* MainMenu+Async.swift */; }; + C44F868E2835BD8D005C353A /* phpmon-config.json in Resources */ = {isa = PBXBuildFile; fileRef = C44F868D2835BD8D005C353A /* phpmon-config.json */; }; C459B4BD27F6093700E9B4B4 /* nginx-proxy.test in Resources */ = {isa = PBXBuildFile; fileRef = C459B4BC27F6093700E9B4B4 /* nginx-proxy.test */; }; C464ADAC275A7A3F003FCD53 /* DomainListWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAB275A7A3F003FCD53 /* DomainListWC.swift */; }; C464ADAD275A7A3F003FCD53 /* DomainListWC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C464ADAB275A7A3F003FCD53 /* DomainListWC.swift */; }; @@ -349,6 +350,7 @@ C44C1990276E44CB0072762D /* ProgressWindow.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = ProgressWindow.storyboard; sourceTree = ""; }; C44CCD3F27AFE2FC00CE40E5 /* AlertableError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertableError.swift; sourceTree = ""; }; C44CCD4827AFF3B700CE40E5 /* MainMenu+Async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainMenu+Async.swift"; sourceTree = ""; }; + C44F868D2835BD8D005C353A /* phpmon-config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "phpmon-config.json"; sourceTree = ""; }; C459B4BC27F6093700E9B4B4 /* nginx-proxy.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "nginx-proxy.test"; sourceTree = ""; }; C464ADAB275A7A3F003FCD53 /* DomainListWC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainListWC.swift; sourceTree = ""; }; C464ADAE275A7A69003FCD53 /* DomainListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainListVC.swift; sourceTree = ""; }; @@ -549,6 +551,7 @@ C40C7F1C27720E1400DDDCDC /* Test Files */ = { isa = PBXGroup; children = ( + C44F868C2835BD60005C353A /* phpmon */, C459B4C127F6097E00E9B4B4 /* php */, C459B4C027F6096300E9B4B4 /* valet */, C459B4BF27F6094100E9B4B4 /* brew */, @@ -678,6 +681,14 @@ path = Errors; sourceTree = ""; }; + C44F868C2835BD60005C353A /* phpmon */ = { + isa = PBXGroup; + children = ( + C44F868D2835BD8D005C353A /* phpmon-config.json */, + ); + path = phpmon; + sourceTree = ""; + }; C459B4BE27F6093A00E9B4B4 /* nginx */ = { isa = PBXGroup; children = ( @@ -1117,6 +1128,7 @@ C42CFB1827DFDFDC00862737 /* nginx-site-isolated.test in Resources */, C4F780A825D80AE8000DBC97 /* php.ini in Resources */, C4068CA527B0780A00544CD5 /* CheckboxPreferenceView.xib in Resources */, + C44F868E2835BD8D005C353A /* phpmon-config.json in Resources */, C43A8A2025D9D1D700591B77 /* brew-formula.json in Resources */, C4AF9F72275445FF00D44ED0 /* valet-config.json in Resources */, C44C1992276E44CB0072762D /* ProgressWindow.storyboard in Resources */, diff --git a/phpmon-tests/Test Files/phpmon/phpmon-config.json b/phpmon-tests/Test Files/phpmon/phpmon-config.json new file mode 100644 index 00000000..1ea101f0 --- /dev/null +++ b/phpmon-tests/Test Files/phpmon/phpmon-config.json @@ -0,0 +1,24 @@ +{ + "scan_apps": [], + "presets": [ + { + "name": "Default PHP", + "extensions": { + "xdebug": false + }, + "ini": { + "memory_limit": "128M" + } + }, + { + "name": "Personal Website", + "extensions": { + "xdebug": true + }, + "ini": { + "xdebug.mode": "coverage", + "memory_limit": "512M" + } + } + ] +} \ No newline at end of file diff --git a/phpmon/Domain/Menu/StatusMenu.swift b/phpmon/Domain/Menu/StatusMenu.swift index c2c6e0ff..939eac9f 100644 --- a/phpmon/Domain/Menu/StatusMenu.swift +++ b/phpmon/Domain/Menu/StatusMenu.swift @@ -69,6 +69,7 @@ class StatusMenu: NSMenu { self.addItem(NSMenuItem.separator()) self.addXdebugMenuItem() + self.addPresetsMenuItem() self.addFirstAidAndServicesMenuItems() } @@ -140,6 +141,36 @@ class StatusMenu: NSMenu { } } + func addPresetsMenuItem() { + let presets = NSMenuItem(title: "Configuration Presets", action: nil, keyEquivalent: "") + let presetsMenu = NSMenu() + presetsMenu.addItem(NSMenuItem.separator()) + presetsMenu.addItem(HeaderView.asMenuItem(text: "Apply Configuration Presets")) + presetsMenu.addItem(NSMenuItem( + title: "Default Configuration (1 extension, 1 pref)", + action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "") + ) + presetsMenu.addItem(NSMenuItem( + title: "Personal Website (1 extension, 2 prefs)", + action: #selector(MainMenu.restartDnsMasq), keyEquivalent: "") + ) + 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: "2 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