1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-07 12:00:09 +02:00

👌 Handle multiple modes w/ Xdebug menu item

This commit also fixes the width of the header items.
This commit is contained in:
2022-05-19 19:06:03 +02:00
parent e7f80ebce8
commit db8197df3d
7 changed files with 39 additions and 18 deletions

View File

@ -69,9 +69,4 @@ class PhpExtensionTest: XCTestCase {
XCTAssertEqual(PhpExtension.from(filePath: destination.path).first!.enabled, false) XCTAssertEqual(PhpExtension.from(filePath: destination.path).first!.enabled, false)
} }
func testCanRetrieveXdebugMode() throws {
let value = Command.execute(path: Paths.php, arguments: ["-r", "echo ini_get('xdebug.mode');"])
XCTAssertEqual(value, "coverage")
}
} }

View File

@ -11,20 +11,23 @@ import Foundation
class Xdebug { class Xdebug {
public static var enabled: Bool { public static var enabled: Bool {
return !self.mode.isEmpty return PhpEnv.shared.getConfigFile(forKey: "xdebug.mode") != nil
} }
public static var mode: String { public static var activeModes: [String] {
guard let file = PhpEnv.shared.getConfigFile(forKey: "xdebug.mode") else { guard let file = PhpEnv.shared.getConfigFile(forKey: "xdebug.mode") else {
return "" return []
} }
return file.get(for: "xdebug.mode") ?? "" guard let value = file.get(for: "xdebug.mode") else {
return []
}
return value.components(separatedBy: ",").filter { self.modes.contains($0) }
} }
public static var modes: [String] { public static var modes: [String] {
return [ return [
"off",
"develop", "develop",
"coverage", "coverage",
"debug", "debug",

View File

@ -38,8 +38,6 @@ struct PhpFrameworks {
"zendframework/zendframework": "Zend", "zendframework/zendframework": "Zend",
"zendframework/zend-mvc": "Zend", "zendframework/zend-mvc": "Zend",
"typo3/cms-core": "Typo3" "typo3/cms-core": "Typo3"
// TODO (6.0): Handle these in v6.0
// "magento/*": "Magento", // "magento/*": "Magento",
// "concrete5/*": "Concrete5", // "concrete5/*": "Concrete5",
// "contao/*": "Contao", // "contao/*": "Contao",

View File

@ -13,12 +13,23 @@ class HeaderView: NSView, XibLoadable {
@IBOutlet weak var textField: NSTextField! @IBOutlet weak var textField: NSTextField!
static func asMenuItem(text: String) -> NSMenuItem { static func asMenuItem(
let view = Self.createFromXib() text: String,
view!.textField.stringValue = text.uppercased() width: Int? = nil
) -> NSMenuItem {
let view = Self.createFromXib()!
view.autoresizingMask = [.width, .height]
view.textField.stringValue = text.uppercased()
view.textField.sizeToFit()
view.setFrameSize(CGSize(width: view.textField.frame.width + 40, height: view.frame.height))
let item = NSMenuItem() let item = NSMenuItem()
item.view = view item.view = view
item.target = self item.target = self
return item return item
} }

View File

@ -242,6 +242,10 @@ class MainMenu: NSObject, NSWindowDelegate, NSMenuDelegate, PhpSwitcherDelegate
} }
} }
@objc func disableAllXdebugModes() {
// TODO
}
@objc func toggleXdebugMode(sender: XdebugMenuItem) { @objc func toggleXdebugMode(sender: XdebugMenuItem) {
Log.info("Switching Xdebug to mode: \(sender.mode)") Log.info("Switching Xdebug to mode: \(sender.mode)")

View File

@ -151,7 +151,9 @@ class StatusMenu: NSMenu {
keyEquivalent: "" keyEquivalent: ""
) )
let xdebugModesMenu = NSMenu() let xdebugModesMenu = NSMenu()
let xdebugMode = Xdebug.mode let activeModes = Xdebug.activeModes
xdebugModesMenu.addItem(HeaderView.asMenuItem(text: "Available Modes"))
for mode in Xdebug.modes { for mode in Xdebug.modes {
let item = XdebugMenuItem( let item = XdebugMenuItem(
@ -159,11 +161,19 @@ class StatusMenu: NSMenu {
action: #selector(MainMenu.toggleXdebugMode(sender:)), action: #selector(MainMenu.toggleXdebugMode(sender:)),
keyEquivalent: "" keyEquivalent: ""
) )
item.state = xdebugMode == mode ? .on : .off
item.state = activeModes.contains(mode) ? .on : .off
item.mode = mode item.mode = mode
xdebugModesMenu.addItem(item) xdebugModesMenu.addItem(item)
} }
xdebugModesMenu.addItem(HeaderView.asMenuItem(text: "Actions"))
xdebugModesMenu.addItem(
withTitle: "Disable All",
action: #selector(MainMenu.disableAllXdebugModes),
keyEquivalent: ""
)
for item in xdebugModesMenu.items { for item in xdebugModesMenu.items {
item.target = MainMenu.shared item.target = MainMenu.shared
} }

View File

@ -43,7 +43,7 @@
"mi_other" = "First Aid & Services"; "mi_other" = "First Aid & Services";
"mi_first_aid" = "First Aid"; "mi_first_aid" = "First Aid";
"mi_xdebug_mode" = "Switch Xdebug Mode"; "mi_xdebug_mode" = "Manage Xdebug";
"mi_composer" = "Composer"; "mi_composer" = "Composer";
"mi_valet_config" = "Locate Valet Folder (.config/valet)"; "mi_valet_config" = "Locate Valet Folder (.config/valet)";