mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 20:10:08 +02:00
131 lines
4.3 KiB
Swift
131 lines
4.3 KiB
Swift
//
|
|
// DomainListVC+ContextMenu.swift
|
|
// PHP Monitor
|
|
//
|
|
// Created by Nico Verbruggen on 10/12/2021.
|
|
// Copyright © 2021 Nico Verbruggen. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
extension DomainListVC {
|
|
|
|
internal func reloadContextMenu() {
|
|
guard let site = selectedSite else {
|
|
tableView.menu = nil
|
|
return
|
|
}
|
|
|
|
let menu = NSMenu()
|
|
|
|
addSystemApps(to: menu)
|
|
addSeparator(to: menu)
|
|
addDetectedApps(to: menu)
|
|
addSeparator(to: menu)
|
|
|
|
if Valet.enabled(feature: .isolatedSites) {
|
|
addIsolate(to: menu, with: site)
|
|
} else {
|
|
addDisabledIsolation(to: menu)
|
|
}
|
|
|
|
addUnlink(to: menu, with: site)
|
|
addToggleSecure(to: menu, with: site)
|
|
|
|
tableView.menu = menu
|
|
}
|
|
|
|
private func addSystemApps(to menu: NSMenu) {
|
|
menu.addItem(withTitle: "domain_list.system_apps".localized, action: nil, keyEquivalent: "")
|
|
menu.addItem(
|
|
withTitle: "domain_list.open_in_finder".localized,
|
|
action: #selector(self.openInFinder),
|
|
keyEquivalent: "F"
|
|
)
|
|
menu.addItem(
|
|
withTitle: "domain_list.open_in_terminal".localized,
|
|
action: #selector(self.openInTerminal),
|
|
keyEquivalent: "T"
|
|
)
|
|
menu.addItem(
|
|
withTitle: "domain_list.open_in_browser".localized,
|
|
action: #selector(self.openInBrowser),
|
|
keyEquivalent: "B"
|
|
)
|
|
}
|
|
|
|
private func addDetectedApps(to menu: NSMenu) {
|
|
if (applications.count > 0) {
|
|
menu.addItem(NSMenuItem.separator())
|
|
menu.addItem(withTitle: "domain_list.detected_apps".localized, action: nil, keyEquivalent: "")
|
|
|
|
for (_, editor) in applications.enumerated() {
|
|
let editorMenuItem = EditorMenuItem(
|
|
title: "Open with \(editor.name)",
|
|
action: #selector(self.openWithEditor(sender:)),
|
|
keyEquivalent: ""
|
|
)
|
|
editorMenuItem.editor = editor
|
|
menu.addItem(editorMenuItem)
|
|
}
|
|
}
|
|
}
|
|
|
|
private func addUnlink(to menu: NSMenu, with site: ValetSite) {
|
|
if (site.aliasPath != nil) {
|
|
menu.addItem(
|
|
withTitle: "domain_list.unlink".localized,
|
|
action: #selector(self.unlinkSite),
|
|
keyEquivalent: ""
|
|
)
|
|
menu.addItem(NSMenuItem.separator())
|
|
}
|
|
}
|
|
|
|
private func addDisabledIsolation(to menu: NSMenu) {
|
|
menu.addItem(withTitle: "domain_list.isolation_unavailable".localized, action: nil, keyEquivalent: "")
|
|
menu.addItem(NSMenuItem.separator())
|
|
}
|
|
|
|
private func addIsolate(to menu: NSMenu, with site: ValetSite) {
|
|
if site.isolatedPhpVersion == nil {
|
|
// ISOLATION POSSIBLE
|
|
let isolationMenuItem = NSMenuItem(title:"domain_list.isolate".localized, action: nil, keyEquivalent: "")
|
|
let submenu = NSMenu()
|
|
submenu.addItem(withTitle: "Choose a PHP version", action: nil, keyEquivalent: "")
|
|
for version in PhpEnv.shared.availablePhpVersions.reversed() {
|
|
let item = PhpMenuItem(title: "Always use PHP \(version)", action: #selector(self.isolateSite), keyEquivalent: "")
|
|
item.version = version
|
|
submenu.addItem(item)
|
|
}
|
|
menu.setSubmenu(submenu, for: isolationMenuItem)
|
|
|
|
menu.addItem(isolationMenuItem)
|
|
menu.addItem(NSMenuItem.separator())
|
|
} else {
|
|
// REMOVE ISOLATION POSSIBLE
|
|
menu.addItem(
|
|
withTitle: "domain_list.remove_isolation".localized,
|
|
action: #selector(self.removeIsolatedSite),
|
|
keyEquivalent: ""
|
|
)
|
|
menu.addItem(NSMenuItem.separator())
|
|
}
|
|
}
|
|
|
|
private func addToggleSecure(to menu: NSMenu, with site: ValetSite) {
|
|
menu.addItem(
|
|
withTitle: site.secured
|
|
? "domain_list.unsecure".localized
|
|
: "domain_list.secure".localized,
|
|
action: #selector(toggleSecure),
|
|
keyEquivalent: ""
|
|
)
|
|
}
|
|
|
|
private func addSeparator(to menu: NSMenu) {
|
|
menu.addItem(NSMenuItem.separator())
|
|
}
|
|
|
|
}
|