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)
}
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 {
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 {
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] {
return [
"off",
"develop",
"coverage",
"debug",

View File

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

View File

@ -13,12 +13,23 @@ class HeaderView: NSView, XibLoadable {
@IBOutlet weak var textField: NSTextField!
static func asMenuItem(text: String) -> NSMenuItem {
let view = Self.createFromXib()
view!.textField.stringValue = text.uppercased()
static func asMenuItem(
text: String,
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()
item.view = view
item.target = self
return item
}

View File

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

View File

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

View File

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