mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-08-07 20:10:08 +02:00
✨ Completed new design for v3.0
This commit is contained in:
@ -447,7 +447,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 40;
|
CURRENT_PROJECT_VERSION = 42;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = phpmon/Info.plist;
|
INFOPLIST_FILE = phpmon/Info.plist;
|
||||||
@ -455,7 +455,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 2.7;
|
MARKETING_VERSION = 3.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon;
|
PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -471,7 +471,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 40;
|
CURRENT_PROJECT_VERSION = 42;
|
||||||
DEVELOPMENT_TEAM = 8M54J5J787;
|
DEVELOPMENT_TEAM = 8M54J5J787;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = phpmon/Info.plist;
|
INFOPLIST_FILE = phpmon/Info.plist;
|
||||||
@ -479,7 +479,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 2.7;
|
MARKETING_VERSION = 3.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon;
|
PRODUCT_BUNDLE_IDENTIFIER = com.nicoverbruggen.phpmon;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -9,53 +9,25 @@
|
|||||||
<customObject id="-2" userLabel="File's Owner"/>
|
<customObject id="-2" userLabel="File's Owner"/>
|
||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
<customView misplaced="YES" id="c22-O7-iKe" customClass="HeaderView" customModule="PHP_Monitor" customModuleProvider="target">
|
<customView id="c22-O7-iKe" customClass="HeaderView" customModule="PHP_Monitor" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="350" height="24"/>
|
<rect key="frame" x="0.0" y="0.0" width="350" height="24"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<stackView distribution="fillEqually" orientation="horizontal" alignment="top" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TnH-dX-qaQ">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ddg-VQ-cOT">
|
||||||
<rect key="frame" x="20" y="0.0" width="310" height="23"/>
|
<rect key="frame" x="12" y="5" width="113" height="15"/>
|
||||||
<subviews>
|
<textFieldCell key="cell" lineBreakMode="clipping" alignment="left" title="ACTIVE SERVICES" id="NHz-MZ-8FK">
|
||||||
<stackView distribution="fill" orientation="vertical" alignment="leading" spacing="0.0" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nWj-33-m8Q">
|
<font key="font" metaFont="systemBold" size="12"/>
|
||||||
<rect key="frame" x="0.0" y="4" width="310" height="15"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<subviews>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Oef-6n-9QI">
|
</textFieldCell>
|
||||||
<rect key="frame" x="-2" y="0.0" width="113" height="15"/>
|
</textField>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" alignment="left" title="ACTIVE SERVICES" id="lGh-MT-TgI">
|
|
||||||
<font key="font" metaFont="systemBold" size="12"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
</subviews>
|
|
||||||
<visibilityPriorities>
|
|
||||||
<integer value="1000"/>
|
|
||||||
</visibilityPriorities>
|
|
||||||
<customSpacing>
|
|
||||||
<real value="3.4028234663852886e+38"/>
|
|
||||||
</customSpacing>
|
|
||||||
</stackView>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="nWj-33-m8Q" firstAttribute="top" secondItem="TnH-dX-qaQ" secondAttribute="top" constant="4" id="CAY-Pw-B8n"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="nWj-33-m8Q" secondAttribute="bottom" constant="4" id="f6j-eI-wiH"/>
|
|
||||||
</constraints>
|
|
||||||
<visibilityPriorities>
|
|
||||||
<integer value="1000"/>
|
|
||||||
</visibilityPriorities>
|
|
||||||
<customSpacing>
|
|
||||||
<real value="3.4028234663852886e+38"/>
|
|
||||||
</customSpacing>
|
|
||||||
</stackView>
|
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="TnH-dX-qaQ" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="1mo-iG-Z0D"/>
|
<constraint firstItem="ddg-VQ-cOT" firstAttribute="centerY" secondItem="c22-O7-iKe" secondAttribute="centerY" id="n4Z-WN-RIh"/>
|
||||||
<constraint firstItem="TnH-dX-qaQ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="20" symbolic="YES" id="VPY-f4-pju"/>
|
<constraint firstItem="ddg-VQ-cOT" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="14" id="yuW-pb-GQJ"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="TnH-dX-qaQ" secondAttribute="bottom" id="eve-qD-gUH"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="TnH-dX-qaQ" secondAttribute="trailing" constant="20" symbolic="YES" id="ueP-nT-q4P"/>
|
|
||||||
</constraints>
|
</constraints>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="textField" destination="Oef-6n-9QI" id="PKP-l8-zjL"/>
|
<outlet property="textField" destination="ddg-VQ-cOT" id="aaQ-Xb-o2X"/>
|
||||||
</connections>
|
</connections>
|
||||||
<point key="canvasLocation" x="-75" y="38"/>
|
<point key="canvasLocation" x="-75" y="38"/>
|
||||||
</customView>
|
</customView>
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Emt-m3-Dt6">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Emt-m3-Dt6">
|
||||||
<rect key="frame" x="30" y="0.0" width="27" height="20"/>
|
<rect key="frame" x="15" y="0.0" width="58" height="20"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="2G" id="H6T-wY-PIG">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="1024M" id="H6T-wY-PIG">
|
||||||
<font key="font" metaFont="systemMedium" size="17"/>
|
<font key="font" metaFont="systemMedium" size="17"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -57,8 +57,8 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Vyu-AO-8SH">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Vyu-AO-8SH">
|
||||||
<rect key="frame" x="15" y="0.0" width="48" height="20"/>
|
<rect key="frame" x="10" y="0.0" width="58" height="20"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="128M" id="uH4-Zy-43x">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="1024M" id="uH4-Zy-43x">
|
||||||
<font key="font" metaFont="systemMedium" size="17"/>
|
<font key="font" metaFont="systemMedium" size="17"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -86,8 +86,8 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eHT-tr-Kwx">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eHT-tr-Kwx">
|
||||||
<rect key="frame" x="18" y="0.0" width="41" height="20"/>
|
<rect key="frame" x="10" y="0.0" width="58" height="20"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="64M" id="1iA-Ri-zYY">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="1024M" id="1iA-Ri-zYY">
|
||||||
<font key="font" metaFont="systemMedium" size="17"/>
|
<font key="font" metaFont="systemMedium" size="17"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -130,6 +130,14 @@
|
|||||||
<constraint firstItem="TnH-dX-qaQ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="30" id="S8i-CD-j3h"/>
|
<constraint firstItem="TnH-dX-qaQ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="30" id="S8i-CD-j3h"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="TnH-dX-qaQ" secondAttribute="bottom" constant="6" id="eve-qD-gUH"/>
|
<constraint firstAttribute="bottom" secondItem="TnH-dX-qaQ" secondAttribute="bottom" constant="6" id="eve-qD-gUH"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
<connections>
|
||||||
|
<outlet property="labelMaxPost" destination="Vyu-AO-8SH" id="5Cm-QO-hJQ"/>
|
||||||
|
<outlet property="labelMaxUpload" destination="eHT-tr-Kwx" id="5pK-FD-c4h"/>
|
||||||
|
<outlet property="labelMemLimit" destination="Emt-m3-Dt6" id="6nD-Su-XZ6"/>
|
||||||
|
<outlet property="titleMaxPost" destination="7um-XA-djV" id="5MN-Xb-XwL"/>
|
||||||
|
<outlet property="titleMaxUpload" destination="Oef-6n-9QI" id="Q61-JI-RJq"/>
|
||||||
|
<outlet property="titleMemLimit" destination="At1-ch-qv2" id="SQT-B9-sWS"/>
|
||||||
|
</connections>
|
||||||
<point key="canvasLocation" x="-84.5" y="44"/>
|
<point key="canvasLocation" x="-84.5" y="44"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
|
@ -84,9 +84,19 @@ class StatusMenu : NSMenu {
|
|||||||
self.addItem(NSMenuItem(title: "mi_php_config".localized, action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: "c"))
|
self.addItem(NSMenuItem(title: "mi_php_config".localized, action: #selector(MainMenu.openActiveConfigFolder), keyEquivalent: "c"))
|
||||||
self.addItem(NSMenuItem(title: "mi_phpinfo".localized, action: #selector(MainMenu.openPhpInfo), keyEquivalent: "i"))
|
self.addItem(NSMenuItem(title: "mi_phpinfo".localized, action: #selector(MainMenu.openPhpInfo), keyEquivalent: "i"))
|
||||||
|
|
||||||
|
if (App.shared.busy) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let stats = App.phpInstall!.configuration
|
||||||
|
|
||||||
// Stats
|
// Stats
|
||||||
self.addItem(NSMenuItem.separator())
|
self.addItem(NSMenuItem.separator())
|
||||||
self.addItem(StatsView.asMenuItem())
|
self.addItem(StatsView.asMenuItem(
|
||||||
|
memory: stats.memory_limit,
|
||||||
|
post: stats.post_max_size,
|
||||||
|
upload: stats.upload_max_filesize)
|
||||||
|
)
|
||||||
|
|
||||||
// Extensions
|
// Extensions
|
||||||
self.addItem(NSMenuItem.separator())
|
self.addItem(NSMenuItem.separator())
|
||||||
|
@ -10,9 +10,24 @@ import Foundation
|
|||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
class StatsView: NSView, XibLoadable {
|
class StatsView: NSView, XibLoadable {
|
||||||
static func asMenuItem() -> NSMenuItem {
|
@IBOutlet weak var titleMemLimit: NSTextField!
|
||||||
|
@IBOutlet weak var titleMaxPost: NSTextField!
|
||||||
|
@IBOutlet weak var titleMaxUpload: NSTextField!
|
||||||
|
|
||||||
|
@IBOutlet weak var labelMemLimit: NSTextField!
|
||||||
|
@IBOutlet weak var labelMaxPost: NSTextField!
|
||||||
|
@IBOutlet weak var labelMaxUpload: NSTextField!
|
||||||
|
|
||||||
|
static func asMenuItem(memory: String, post: String, upload: String) -> NSMenuItem {
|
||||||
|
let view = Self.createFromXib()
|
||||||
|
view?.titleMemLimit.stringValue = "mi_memory_limit".localized.uppercased()
|
||||||
|
view?.titleMaxPost.stringValue = "mi_post_max_size".localized.uppercased()
|
||||||
|
view?.titleMaxUpload.stringValue = "mi_upload_max_filesize".localized.uppercased()
|
||||||
|
view?.labelMemLimit.stringValue = memory
|
||||||
|
view?.labelMaxPost.stringValue = post
|
||||||
|
view?.labelMaxUpload.stringValue = upload
|
||||||
let item = NSMenuItem()
|
let item = NSMenuItem()
|
||||||
item.view = Self.createFromXib()
|
item.view = view
|
||||||
item.target = self
|
item.target = self
|
||||||
return item
|
return item
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
|
|
||||||
"mi_configuration" = "Configuration";
|
"mi_configuration" = "Configuration";
|
||||||
"mi_limits" = "Limits Configuration";
|
"mi_limits" = "Limits Configuration";
|
||||||
"mi_memory_limit" = "Script Memory Limit";
|
"mi_memory_limit" = "Memory Limit";
|
||||||
"mi_post_max_size" = "Max POST Size";
|
"mi_post_max_size" = "Max POST";
|
||||||
"mi_upload_max_filesize" = "Max Upload File Size";
|
"mi_upload_max_filesize" = "Max Upload";
|
||||||
|
|
||||||
"mi_valet_config" = "Locate Valet folder (.config/valet)";
|
"mi_valet_config" = "Locate Valet folder (.config/valet)";
|
||||||
"mi_php_config" = "Locate PHP configuration file (php.ini)";
|
"mi_php_config" = "Locate PHP configuration file (php.ini)";
|
||||||
|
@ -77,32 +77,32 @@ class MainMenu: NSObject, NSWindowDelegate {
|
|||||||
*/
|
*/
|
||||||
public func update() {
|
public func update() {
|
||||||
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
DispatchQueue.global(qos: .userInitiated).async { [unowned self] in
|
||||||
// Create a new menu
|
|
||||||
let menu = StatusMenu()
|
|
||||||
|
|
||||||
// Add the PHP versions (or error messages)
|
|
||||||
menu.addPhpVersionMenuItems()
|
|
||||||
menu.addItem(NSMenuItem.separator())
|
|
||||||
|
|
||||||
// Add the possible actions
|
|
||||||
menu.addPhpActionMenuItems()
|
|
||||||
menu.addItem(NSMenuItem.separator())
|
|
||||||
|
|
||||||
// Add information about services & actions
|
|
||||||
menu.addPhpConfigurationMenuItems()
|
|
||||||
menu.addItem(NSMenuItem.separator())
|
|
||||||
|
|
||||||
// Add about & quit menu items
|
|
||||||
menu.addItem(NSMenuItem(title: "mi_about".localized, action: #selector(self.openAbout), keyEquivalent: ""))
|
|
||||||
menu.addItem(NSMenuItem(title: "mi_quit".localized, action: #selector(self.terminateApp), keyEquivalent: "q"))
|
|
||||||
|
|
||||||
// Make sure every item can be interacted with
|
|
||||||
menu.items.forEach({ (item) in
|
|
||||||
item.target = self
|
|
||||||
})
|
|
||||||
|
|
||||||
// Update the menu item on the main thread
|
// Update the menu item on the main thread
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
|
// Create a new menu
|
||||||
|
let menu = StatusMenu()
|
||||||
|
|
||||||
|
// Add the PHP versions (or error messages)
|
||||||
|
menu.addPhpVersionMenuItems()
|
||||||
|
menu.addItem(NSMenuItem.separator())
|
||||||
|
|
||||||
|
// Add the possible actions
|
||||||
|
menu.addPhpActionMenuItems()
|
||||||
|
menu.addItem(NSMenuItem.separator())
|
||||||
|
|
||||||
|
// Add information about services & actions
|
||||||
|
menu.addPhpConfigurationMenuItems()
|
||||||
|
menu.addItem(NSMenuItem.separator())
|
||||||
|
|
||||||
|
// Add about & quit menu items
|
||||||
|
menu.addItem(NSMenuItem(title: "mi_about".localized, action: #selector(self.openAbout), keyEquivalent: ""))
|
||||||
|
menu.addItem(NSMenuItem(title: "mi_quit".localized, action: #selector(self.terminateApp), keyEquivalent: "q"))
|
||||||
|
|
||||||
|
// Make sure every item can be interacted with
|
||||||
|
menu.items.forEach({ (item) in
|
||||||
|
item.target = self
|
||||||
|
})
|
||||||
|
|
||||||
self.statusItem.menu = menu
|
self.statusItem.menu = menu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user