diff --git a/shbar2.xcodeproj/project.pbxproj b/shbar2.xcodeproj/project.pbxproj
index a7a42fe..e9fad97 100644
--- a/shbar2.xcodeproj/project.pbxproj
+++ b/shbar2.xcodeproj/project.pbxproj
@@ -350,6 +350,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 7A264T7MNQ;
@@ -360,6 +361,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.richinfante.shbar2;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 4.2;
};
name = Debug;
@@ -368,6 +370,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 7A264T7MNQ;
@@ -378,6 +381,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.richinfante.shbar2;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 4.2;
};
name = Release;
diff --git a/shbar2/AppDelegate.swift b/shbar2/AppDelegate.swift
index d932ad9..84c5c6d 100644
--- a/shbar2/AppDelegate.swift
+++ b/shbar2/AppDelegate.swift
@@ -82,6 +82,13 @@ class ItemConfig : Codable {
var jobStatusItem: NSMenuItem?
var jobExitStatus: Int32?
var currentJob: Process?
+ var isPaused : Bool = false
+
+ var startMenuItem: NSMenuItem?
+ var stopMenuItem: NSMenuItem?
+ var restartMenuItem: NSMenuItem?
+ var suspendMenuItem: NSMenuItem?
+ var resumeMenuItem: NSMenuItem?
private enum CodingKeys: String, CodingKey {
case mode
@@ -117,6 +124,28 @@ class ItemConfig : Codable {
self.autostartJob = autostartJob
}
+ @objc func suspendJob() {
+ if let process = self.currentJob {
+ process.suspend()
+ self.isPaused = true
+
+ if let title = self.title {
+ self.updateTitle(title: title)
+ }
+ }
+ }
+
+ @objc func resumeJob() {
+ if let process = self.currentJob {
+ process.resume()
+ self.isPaused = false
+
+ if let title = self.title {
+ self.updateTitle(title: title)
+ }
+ }
+ }
+
@objc func startJob() {
self.currentJob?.terminate()
@@ -129,12 +158,9 @@ class ItemConfig : Codable {
if let title = self.title {
self.updateTitle(title: title)
}
- self.jobStatusItem?.title = "running - pid:\(process.processIdentifier)"
}, completed: {
status, result in
-
- self.jobStatusItem?.title = "exited: \(status)"
-
+
if let title = self.title {
self.updateTitle(title: title)
}
@@ -157,11 +183,36 @@ class ItemConfig : Codable {
// Update job's status label
if let currentJob = self.currentJob {
- if currentJob.isRunning {
+ if self.isPaused {
+ color = NSColor.blue
+ } else if currentJob.isRunning {
color = NSColor.green
} else if currentJob.terminationStatus != 0 {
color = NSColor.red
}
+
+ if self.isPaused {
+// self.startMenuItem?.isHidden = true
+// self.stopMenuItem?.isHidden = false
+// self.restartMenuItem?.isHidden = false
+// self.suspendMenuItem?.isHidden = true
+// self.resumeMenuItem?.isHidden = false
+ self.jobStatusItem?.title = "suspended - pid:\(currentJob.processIdentifier)"
+ } else if currentJob.isRunning {
+// self.startMenuItem?.isHidden = true
+// self.stopMenuItem?.isHidden = false
+// self.restartMenuItem?.isHidden = false
+// self.suspendMenuItem?.isHidden = false
+// self.resumeMenuItem?.isHidden = true
+ self.jobStatusItem?.title = "running - pid:\(currentJob.processIdentifier)"
+ } else {
+// self.startMenuItem?.isHidden = false
+// self.stopMenuItem?.isHidden = true
+// self.restartMenuItem?.isHidden = true
+// self.suspendMenuItem?.isHidden = true
+// self.resumeMenuItem?.isHidden = false
+ self.jobStatusItem?.title = "exited: \(currentJob.terminationStatus)"
+ }
}
let mutableAttributedString = NSMutableAttributedString(string: "●", attributes: [
@@ -195,10 +246,26 @@ class ItemConfig : Codable {
restartItem.action = #selector(ItemConfig.startJob)
restartItem.target = self
+ let suspendItem = NSMenuItem(title: "suspend", action: nil, keyEquivalent: "")
+ suspendItem.action = #selector(ItemConfig.suspendJob)
+ suspendItem.target = self
+
+ let resumeItem = NSMenuItem(title: "resume", action: nil, keyEquivalent: "")
+ resumeItem.action = #selector(ItemConfig.resumeJob)
+ resumeItem.target = self
+
subMenu.addItem(statusItem)
subMenu.addItem(startItem)
subMenu.addItem(stopItem)
subMenu.addItem(restartItem)
+ subMenu.addItem(suspendItem)
+ subMenu.addItem(resumeItem)
+
+ self.startMenuItem = startItem
+ self.stopMenuItem = stopItem
+ self.restartMenuItem = restartItem
+ self.suspendMenuItem = suspendItem
+ self.resumeMenuItem = resumeItem
menuItem.submenu = subMenu
diff --git a/shbar2/Base.lproj/Main.storyboard b/shbar2/Base.lproj/Main.storyboard
index f26f3ce..169c88a 100644
--- a/shbar2/Base.lproj/Main.storyboard
+++ b/shbar2/Base.lproj/Main.storyboard
@@ -2,7 +2,6 @@
-
@@ -680,18 +679,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/shbar2/Info.plist b/shbar2/Info.plist
index 4031539..5629654 100644
--- a/shbar2/Info.plist
+++ b/shbar2/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
0.0.1
CFBundleVersion
- 2
+ 3
LSApplicationCategoryType
public.app-category.developer-tools
LSMinimumSystemVersion