Logger done for now, start on analysis tool
This commit is contained in:
parent
93cbf6d19a
commit
90a534f2a7
@ -11,13 +11,15 @@
|
||||
E2218CA91EF2D37B004298F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E2218CA81EF2D37B004298F6 /* Assets.xcassets */; };
|
||||
E2218CDE1EF2D461004298F6 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218CDC1EF2D461004298F6 /* MainMenu.xib */; };
|
||||
E2218CDF1EF2D461004298F6 /* SettingsWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218CDD1EF2D461004298F6 /* SettingsWindowController.xib */; };
|
||||
E2218CE31EF2D54A004298F6 /* buildnum.ver in Resources */ = {isa = PBXBuildFile; fileRef = E2218CE11EF2D54A004298F6 /* buildnum.ver */; };
|
||||
E2218CE41EF2D54A004298F6 /* BumpBuildNumber.py in Resources */ = {isa = PBXBuildFile; fileRef = E2218CE21EF2D54A004298F6 /* BumpBuildNumber.py */; };
|
||||
E2218D0D1EF2D68F004298F6 /* XMLDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = E2218D0A1EF2D68F004298F6 /* XMLDictionary.m */; };
|
||||
E2218D111EF2D6F1004298F6 /* SettingsWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D101EF2D6F1004298F6 /* SettingsWindowController.swift */; };
|
||||
E2218D151EF2E470004298F6 /* ConnectionLossOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D141EF2E470004298F6 /* ConnectionLossOperation.swift */; };
|
||||
E2218D171EF2E4EA004298F6 /* Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D161EF2E4EA004298F6 /* Shared.swift */; };
|
||||
E2218D191EF2F0D8004298F6 /* FrequencyOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D181EF2F0D8004298F6 /* FrequencyOperation.swift */; };
|
||||
E2218D241EF3267F004298F6 /* XMLDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = E2218D231EF3267F004298F6 /* XMLDictionary.m */; };
|
||||
E2218D2C1EF3271F004298F6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D2B1EF3271F004298F6 /* AppDelegate.swift */; };
|
||||
E2218D301EF3271F004298F6 /* Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D2F1EF3271F004298F6 /* Document.swift */; };
|
||||
E2218D3B1EF32764004298F6 /* Graph.icns in Resources */ = {isa = PBXBuildFile; fileRef = E2218D3A1EF32764004298F6 /* Graph.icns */; };
|
||||
E2218D4A1EF32917004298F6 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218D491EF32917004298F6 /* MainMenu.xib */; };
|
||||
E2218D4C1EF329A6004298F6 /* GraphDetailsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218D4B1EF329A6004298F6 /* GraphDetailsController.xib */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@ -28,6 +30,13 @@
|
||||
remoteGlobalIDString = E2218CE51EF2D577004298F6;
|
||||
remoteInfo = "Bump Logger4";
|
||||
};
|
||||
E2218D451EF32863004298F6 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = E2218C7A1EF2D2B5004298F6 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = E2218D3D1EF32803004298F6;
|
||||
remoteInfo = "Bump Graphic Analysis 2";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@ -39,13 +48,21 @@
|
||||
E2218CDD1EF2D461004298F6 /* SettingsWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsWindowController.xib; sourceTree = "<group>"; };
|
||||
E2218CE11EF2D54A004298F6 /* buildnum.ver */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = buildnum.ver; sourceTree = "<group>"; };
|
||||
E2218CE21EF2D54A004298F6 /* BumpBuildNumber.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = BumpBuildNumber.py; sourceTree = "<group>"; };
|
||||
E2218D051EF2D68F004298F6 /* Logger4-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Logger4-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
E2218D081EF2D68F004298F6 /* XMLDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLDictionary.h; sourceTree = "<group>"; };
|
||||
E2218D0A1EF2D68F004298F6 /* XMLDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLDictionary.m; sourceTree = "<group>"; };
|
||||
E2218D101EF2D6F1004298F6 /* SettingsWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsWindowController.swift; sourceTree = "<group>"; };
|
||||
E2218D141EF2E470004298F6 /* ConnectionLossOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionLossOperation.swift; sourceTree = "<group>"; };
|
||||
E2218D161EF2E4EA004298F6 /* Shared.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Shared.swift; sourceTree = "<group>"; };
|
||||
E2218D181EF2F0D8004298F6 /* FrequencyOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FrequencyOperation.swift; sourceTree = "<group>"; };
|
||||
E2218D211EF3267F004298F6 /* Logger4-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Logger4-Bridging-Header.h"; path = "Logger4/Logger4-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
E2218D221EF3267F004298F6 /* XMLDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLDictionary.h; path = Logger4/XMLDictionary.h; sourceTree = "<group>"; };
|
||||
E2218D231EF3267F004298F6 /* XMLDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMLDictionary.m; path = Logger4/XMLDictionary.m; sourceTree = "<group>"; };
|
||||
E2218D291EF3271F004298F6 /* Graphic Analysis 2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Graphic Analysis 2.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E2218D2B1EF3271F004298F6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
E2218D2F1EF3271F004298F6 /* Document.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Document.swift; sourceTree = "<group>"; };
|
||||
E2218D361EF3271F004298F6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
E2218D3A1EF32764004298F6 /* Graph.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Graph.icns; sourceTree = "<group>"; };
|
||||
E2218D411EF32843004298F6 /* buildnum.ver */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = buildnum.ver; sourceTree = "<group>"; };
|
||||
E2218D421EF32843004298F6 /* BumpBuildNumber.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = BumpBuildNumber.py; sourceTree = "<group>"; };
|
||||
E2218D491EF32917004298F6 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
|
||||
E2218D4B1EF329A6004298F6 /* GraphDetailsController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GraphDetailsController.xib; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -56,6 +73,13 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
E2218D261EF3271F004298F6 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
@ -64,6 +88,7 @@
|
||||
children = (
|
||||
E2218CA71EF2D35B004298F6 /* Shared Resources */,
|
||||
E2218C991EF2D345004298F6 /* Logger4 */,
|
||||
E2218D2A1EF3271F004298F6 /* Graphic Analysis 2 */,
|
||||
E2218C831EF2D2B5004298F6 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@ -72,6 +97,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218C981EF2D345004298F6 /* Logger4.app */,
|
||||
E2218D291EF3271F004298F6 /* Graphic Analysis 2.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@ -79,8 +105,9 @@
|
||||
E2218C991EF2D345004298F6 /* Logger4 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218CEB1EF2D648004298F6 /* Swift */,
|
||||
E2218D041EF2D67B004298F6 /* Obj-C */,
|
||||
E2218CDA1EF2D43A004298F6 /* Support Files */,
|
||||
E2218CEB1EF2D648004298F6 /* Swift */,
|
||||
);
|
||||
path = Logger4;
|
||||
sourceTree = "<group>";
|
||||
@ -89,7 +116,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218CA81EF2D37B004298F6 /* Assets.xcassets */,
|
||||
E2218D041EF2D67B004298F6 /* Obj-C */,
|
||||
);
|
||||
name = "Shared Resources";
|
||||
sourceTree = "<group>";
|
||||
@ -128,7 +154,6 @@
|
||||
E2218D121EF2D754004298F6 /* Delegates */,
|
||||
E2218D131EF2E443004298F6 /* Operations */,
|
||||
E2218D0F1EF2D6E5004298F6 /* Views */,
|
||||
E2218D161EF2E4EA004298F6 /* Shared.swift */,
|
||||
);
|
||||
name = Swift;
|
||||
sourceTree = "<group>";
|
||||
@ -136,11 +161,12 @@
|
||||
E2218D041EF2D67B004298F6 /* Obj-C */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D081EF2D68F004298F6 /* XMLDictionary.h */,
|
||||
E2218D0A1EF2D68F004298F6 /* XMLDictionary.m */,
|
||||
E2218D051EF2D68F004298F6 /* Logger4-Bridging-Header.h */,
|
||||
E2218D211EF3267F004298F6 /* Logger4-Bridging-Header.h */,
|
||||
E2218D221EF3267F004298F6 /* XMLDictionary.h */,
|
||||
E2218D231EF3267F004298F6 /* XMLDictionary.m */,
|
||||
);
|
||||
name = "Obj-C";
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D0F1EF2D6E5004298F6 /* Views */ = {
|
||||
@ -168,6 +194,77 @@
|
||||
name = Operations;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D2A1EF3271F004298F6 /* Graphic Analysis 2 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D4D1EF329AE004298F6 /* Swift */,
|
||||
E2218D3C1EF327CA004298F6 /* Support Files */,
|
||||
);
|
||||
path = "Graphic Analysis 2";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D3C1EF327CA004298F6 /* Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D3A1EF32764004298F6 /* Graph.icns */,
|
||||
E2218D361EF3271F004298F6 /* Info.plist */,
|
||||
E2218D471EF328F3004298F6 /* Versioning */,
|
||||
E2218D481EF328FC004298F6 /* UI */,
|
||||
);
|
||||
name = "Support Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D471EF328F3004298F6 /* Versioning */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D411EF32843004298F6 /* buildnum.ver */,
|
||||
E2218D421EF32843004298F6 /* BumpBuildNumber.py */,
|
||||
);
|
||||
name = Versioning;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D481EF328FC004298F6 /* UI */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D4B1EF329A6004298F6 /* GraphDetailsController.xib */,
|
||||
E2218D491EF32917004298F6 /* MainMenu.xib */,
|
||||
);
|
||||
name = UI;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D4D1EF329AE004298F6 /* Swift */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D4E1EF329B4004298F6 /* Delegate */,
|
||||
E2218D4F1EF329C0004298F6 /* Operations */,
|
||||
E2218D501EF329D0004298F6 /* Views */,
|
||||
);
|
||||
name = Swift;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D4E1EF329B4004298F6 /* Delegate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D2B1EF3271F004298F6 /* AppDelegate.swift */,
|
||||
);
|
||||
name = Delegate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D4F1EF329C0004298F6 /* Operations */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Operations;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E2218D501EF329D0004298F6 /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E2218D2F1EF3271F004298F6 /* Document.swift */,
|
||||
);
|
||||
name = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXLegacyTarget section */
|
||||
@ -185,6 +282,20 @@
|
||||
passBuildSettingsInEnvironment = 1;
|
||||
productName = "Bump Logger4";
|
||||
};
|
||||
E2218D3D1EF32803004298F6 /* Bump Graphic Analysis 2 */ = {
|
||||
isa = PBXLegacyTarget;
|
||||
buildArgumentsString = "\"$PROJECT_DIR/Graphic Analysis 2/BumpBuildNumber.py\" \"$PROJECT_DIR/Graphic Analysis 2/buildnum.ver\" \"$PROJECT_DIR/Graphic Analysis 2/Info.plist\"";
|
||||
buildConfigurationList = E2218D3E1EF32803004298F6 /* Build configuration list for PBXLegacyTarget "Bump Graphic Analysis 2" */;
|
||||
buildPhases = (
|
||||
);
|
||||
buildToolPath = /usr/bin/python;
|
||||
buildWorkingDirectory = "$PROJECT_DIR/Graphic Analysis 2";
|
||||
dependencies = (
|
||||
);
|
||||
name = "Bump Graphic Analysis 2";
|
||||
passBuildSettingsInEnvironment = 1;
|
||||
productName = "Bump Graphic Analysis 2";
|
||||
};
|
||||
/* End PBXLegacyTarget section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
@ -206,6 +317,24 @@
|
||||
productReference = E2218C981EF2D345004298F6 /* Logger4.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
E2218D281EF3271F004298F6 /* Graphic Analysis 2 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = E2218D371EF3271F004298F6 /* Build configuration list for PBXNativeTarget "Graphic Analysis 2" */;
|
||||
buildPhases = (
|
||||
E2218D251EF3271F004298F6 /* Sources */,
|
||||
E2218D261EF3271F004298F6 /* Frameworks */,
|
||||
E2218D271EF3271F004298F6 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
E2218D461EF32863004298F6 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Graphic Analysis 2";
|
||||
productName = "Graphic Analysis 2";
|
||||
productReference = E2218D291EF3271F004298F6 /* Graphic Analysis 2.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
@ -227,6 +356,16 @@
|
||||
DevelopmentTeam = 795KPDV76S;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
E2218D281EF3271F004298F6 = {
|
||||
CreatedOnToolsVersion = 8.3.3;
|
||||
DevelopmentTeam = 795KPDV76S;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
E2218D3D1EF32803004298F6 = {
|
||||
CreatedOnToolsVersion = 8.3.3;
|
||||
DevelopmentTeam = 795KPDV76S;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = E2218C7D1EF2D2B5004298F6 /* Build configuration list for PBXProject "Docsis Toolkit" */;
|
||||
@ -244,6 +383,8 @@
|
||||
targets = (
|
||||
E2218C971EF2D345004298F6 /* Logger4 */,
|
||||
E2218CE51EF2D577004298F6 /* Bump Logger4 */,
|
||||
E2218D281EF3271F004298F6 /* Graphic Analysis 2 */,
|
||||
E2218D3D1EF32803004298F6 /* Bump Graphic Analysis 2 */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@ -256,8 +397,16 @@
|
||||
E2218CA91EF2D37B004298F6 /* Assets.xcassets in Resources */,
|
||||
E2218CDF1EF2D461004298F6 /* SettingsWindowController.xib in Resources */,
|
||||
E2218CDE1EF2D461004298F6 /* MainMenu.xib in Resources */,
|
||||
E2218CE31EF2D54A004298F6 /* buildnum.ver in Resources */,
|
||||
E2218CE41EF2D54A004298F6 /* BumpBuildNumber.py in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
E2218D271EF3271F004298F6 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E2218D3B1EF32764004298F6 /* Graph.icns in Resources */,
|
||||
E2218D4C1EF329A6004298F6 /* GraphDetailsController.xib in Resources */,
|
||||
E2218D4A1EF32917004298F6 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -268,8 +417,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E2218D171EF2E4EA004298F6 /* Shared.swift in Sources */,
|
||||
E2218D0D1EF2D68F004298F6 /* XMLDictionary.m in Sources */,
|
||||
E2218D241EF3267F004298F6 /* XMLDictionary.m in Sources */,
|
||||
E2218D111EF2D6F1004298F6 /* SettingsWindowController.swift in Sources */,
|
||||
E2218D151EF2E470004298F6 /* ConnectionLossOperation.swift in Sources */,
|
||||
E2218D191EF2F0D8004298F6 /* FrequencyOperation.swift in Sources */,
|
||||
@ -277,6 +425,15 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
E2218D251EF3271F004298F6 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E2218D2C1EF3271F004298F6 /* AppDelegate.swift in Sources */,
|
||||
E2218D301EF3271F004298F6 /* Document.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
@ -285,6 +442,11 @@
|
||||
target = E2218CE51EF2D577004298F6 /* Bump Logger4 */;
|
||||
targetProxy = E2218CE91EF2D601004298F6 /* PBXContainerItemProxy */;
|
||||
};
|
||||
E2218D461EF32863004298F6 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = E2218D3D1EF32803004298F6 /* Bump Graphic Analysis 2 */;
|
||||
targetProxy = E2218D451EF32863004298F6 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
@ -393,7 +555,7 @@
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.weebly.alikja.Logger4;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Logger4-Bridging-Header.h";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Logger4/Logger4-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
@ -412,7 +574,7 @@
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.weebly.alikja.Logger4;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Logger4-Bridging-Header.h";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Logger4/Logger4-Bridging-Header.h";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Release;
|
||||
@ -442,6 +604,63 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
E2218D381EF3271F004298F6 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-GA2";
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEVELOPMENT_TEAM = 795KPDV76S;
|
||||
INFOPLIST_FILE = "Graphic Analysis 2/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.weebly.alikja.Graphic-Analysis-2";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E2218D391EF3271F004298F6 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-GA2";
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEVELOPMENT_TEAM = 795KPDV76S;
|
||||
INFOPLIST_FILE = "Graphic Analysis 2/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.weebly.alikja.Graphic-Analysis-2";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
E2218D3F1EF32803004298F6 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUGGING_SYMBOLS = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = 795KPDV76S;
|
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E2218D401EF32803004298F6 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = 795KPDV76S;
|
||||
OTHER_CFLAGS = "";
|
||||
OTHER_LDFLAGS = "";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
@ -470,6 +689,22 @@
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
E2218D371EF3271F004298F6 /* Build configuration list for PBXNativeTarget "Graphic Analysis 2" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E2218D381EF3271F004298F6 /* Debug */,
|
||||
E2218D391EF3271F004298F6 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
E2218D3E1EF32803004298F6 /* Build configuration list for PBXLegacyTarget "Bump Graphic Analysis 2" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E2218D3F1EF32803004298F6 /* Debug */,
|
||||
E2218D401EF32803004298F6 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = E2218C7A1EF2D2B5004298F6 /* Project object */;
|
||||
|
||||
@ -42,11 +42,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/AppDelegate.swift"
|
||||
timestampString = "519236096.282816"
|
||||
timestampString = "519247235.495795"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "93"
|
||||
endingLineNumber = "93"
|
||||
startingLineNumber = "95"
|
||||
endingLineNumber = "95"
|
||||
landmarkName = "applicationDidFinishLaunching(_:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@ -74,14 +74,238 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/AppDelegate.swift"
|
||||
timestampString = "519236096.282816"
|
||||
timestampString = "519247235.495795"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "110"
|
||||
endingLineNumber = "110"
|
||||
startingLineNumber = "112"
|
||||
endingLineNumber = "112"
|
||||
landmarkName = "logFails(_:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249190.205931"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "248"
|
||||
endingLineNumber = "248"
|
||||
landmarkName = "logFreq(header:file:entry:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249109.034754"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "91"
|
||||
endingLineNumber = "91"
|
||||
landmarkName = "handleData(date:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249229.881623"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "71"
|
||||
endingLineNumber = "71"
|
||||
landmarkName = "handleData(date:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249232.640173"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "59"
|
||||
endingLineNumber = "59"
|
||||
landmarkName = "main()"
|
||||
landmarkType = "7">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Logger4.FrequencyOperation.main () -> ()"
|
||||
moduleName = "Logger4"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/Kili2/Documents/XCODE/Docsis%20Toolkit/Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249232.853113"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "59"
|
||||
endingLineNumber = "59"
|
||||
offsetFromSymbolStart = "6197">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Logger4.FrequencyOperation.(main () -> ()).(closure #2)"
|
||||
moduleName = "Logger4"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/Kili2/Documents/XCODE/Docsis%20Toolkit/Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249232.854686"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "60"
|
||||
endingLineNumber = "60"
|
||||
offsetFromSymbolStart = "39">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249239.550933"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "50"
|
||||
endingLineNumber = "50"
|
||||
landmarkName = "main()"
|
||||
landmarkType = "7">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Logger4.FrequencyOperation.main () -> ()"
|
||||
moduleName = "Logger4"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/Kili2/Documents/XCODE/Docsis%20Toolkit/Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249239.554294"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "51"
|
||||
endingLineNumber = "51"
|
||||
offsetFromSymbolStart = "5179">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Logger4.FrequencyOperation.(main () -> ()).(closure #1)"
|
||||
moduleName = "Logger4"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/Kili2/Documents/XCODE/Docsis%20Toolkit/Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249239.556289"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "52"
|
||||
endingLineNumber = "52"
|
||||
offsetFromSymbolStart = "39">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249240.56695"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "51"
|
||||
endingLineNumber = "51"
|
||||
landmarkName = "main()"
|
||||
landmarkType = "7">
|
||||
<Locations>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Logger4.FrequencyOperation.main () -> ()"
|
||||
moduleName = "Logger4"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/Kili2/Documents/XCODE/Docsis%20Toolkit/Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249240.570672"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "51"
|
||||
endingLineNumber = "51"
|
||||
offsetFromSymbolStart = "5179">
|
||||
</Location>
|
||||
<Location
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "Logger4.FrequencyOperation.(main () -> ()).(closure #1)"
|
||||
moduleName = "Logger4"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/Kili2/Documents/XCODE/Docsis%20Toolkit/Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249240.572832"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "52"
|
||||
endingLineNumber = "52"
|
||||
offsetFromSymbolStart = "39">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249250.964077"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "52"
|
||||
endingLineNumber = "52"
|
||||
landmarkName = "main()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Logger4/FrequencyOperation.swift"
|
||||
timestampString = "519249254.139567"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "60"
|
||||
endingLineNumber = "60"
|
||||
landmarkName = "main()"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
||||
@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0830"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E2218D281EF3271F004298F6"
|
||||
BuildableName = "Graphic Analysis 2.app"
|
||||
BlueprintName = "Graphic Analysis 2"
|
||||
ReferencedContainer = "container:Docsis Toolkit.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E2218D281EF3271F004298F6"
|
||||
BuildableName = "Graphic Analysis 2.app"
|
||||
BlueprintName = "Graphic Analysis 2"
|
||||
ReferencedContainer = "container:Docsis Toolkit.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E2218D281EF3271F004298F6"
|
||||
BuildableName = "Graphic Analysis 2.app"
|
||||
BlueprintName = "Graphic Analysis 2"
|
||||
ReferencedContainer = "container:Docsis Toolkit.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E2218D281EF3271F004298F6"
|
||||
BuildableName = "Graphic Analysis 2.app"
|
||||
BlueprintName = "Graphic Analysis 2"
|
||||
ReferencedContainer = "container:Docsis Toolkit.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@ -4,6 +4,11 @@
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Graphic Analysis 2.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>Logger4.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
@ -27,6 +32,16 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>E2218D281EF3271F004298F6</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>E2218D3D1EF32803004298F6</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
26
Graphic Analysis 2/AppDelegate.swift
Normal file
26
Graphic Analysis 2/AppDelegate.swift
Normal file
@ -0,0 +1,26 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// Graphic Analysis 2
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
|
||||
@NSApplicationMain
|
||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
|
||||
|
||||
|
||||
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
||||
// Insert code here to initialize your application
|
||||
}
|
||||
|
||||
func applicationWillTerminate(_ aNotification: Notification) {
|
||||
// Insert code here to tear down your application
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
111
Graphic Analysis 2/BumpBuildNumber.py
Normal file
111
Graphic Analysis 2/BumpBuildNumber.py
Normal file
@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Bump build number in Info.plist files if a source file have changed.
|
||||
#
|
||||
# usage: bump_buildnum.py buildnum.ver Info.plist [ ... Info.plist ]
|
||||
#
|
||||
# andy@trojanfoe.com, 2014.
|
||||
#
|
||||
|
||||
import sys, os, subprocess, re
|
||||
|
||||
def read_verfile(name):
|
||||
version = None
|
||||
build = None
|
||||
verfile = open(name, "r")
|
||||
for line in verfile:
|
||||
match = re.match(r"^version\s+(\S+)", line)
|
||||
if match:
|
||||
version = match.group(1).rstrip()
|
||||
match = re.match(r"^build\s+(\S+)", line)
|
||||
if match:
|
||||
build = int(match.group(1).rstrip())
|
||||
verfile.close()
|
||||
return (version, build)
|
||||
|
||||
def write_verfile(name, version, build):
|
||||
verfile = open(name, "w")
|
||||
verfile.write("version {0}\n".format(version))
|
||||
verfile.write("build {0}\n".format(build))
|
||||
verfile.close()
|
||||
return True
|
||||
|
||||
def set_plist_version(plistname, version, build):
|
||||
if not os.path.exists(plistname):
|
||||
print("{0} does not exist".format(plistname))
|
||||
return False
|
||||
|
||||
plistbuddy = '/usr/libexec/Plistbuddy'
|
||||
if not os.path.exists(plistbuddy):
|
||||
print("{0} does not exist".format(plistbuddy))
|
||||
return False
|
||||
|
||||
cmdline = [plistbuddy,
|
||||
"-c", "Set CFBundleShortVersionString {0}".format(version),
|
||||
"-c", "Set CFBundleVersion {0}".format(build),
|
||||
plistname]
|
||||
if subprocess.call(cmdline) != 0:
|
||||
print("Failed to update {0}".format(plistname))
|
||||
return False
|
||||
|
||||
print("Updated {0} with v{1} ({2})".format(plistname, version, build))
|
||||
return True
|
||||
|
||||
def should_bump(vername, dirname):
|
||||
verstat = os.stat(vername)
|
||||
allnames = []
|
||||
for dirname, dirnames, filenames in os.walk(dirname):
|
||||
for filename in filenames:
|
||||
allnames.append(os.path.join(dirname, filename))
|
||||
|
||||
for filename in allnames:
|
||||
filestat = os.stat(filename)
|
||||
if filestat.st_mtime > verstat.st_mtime:
|
||||
print("{0} is newer than {1}".format(filename, vername))
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def upver(vername):
|
||||
(version, build) = read_verfile(vername)
|
||||
if version == None or build == None:
|
||||
print("Failed to read version/build from {0}".format(vername))
|
||||
return False
|
||||
|
||||
# Bump the version number if any files in the same directory as the version file
|
||||
# have changed, including sub-directories.
|
||||
srcdir = os.path.dirname(vername)
|
||||
bump = should_bump(vername, srcdir)
|
||||
|
||||
if bump:
|
||||
build += 1
|
||||
print("Incremented to build {0}".format(build))
|
||||
write_verfile(vername, version, build)
|
||||
print("Written {0}".format(vername))
|
||||
else:
|
||||
print("Staying at build {0}".format(build))
|
||||
|
||||
return (version, build)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if os.environ.has_key('ACTION') and os.environ['ACTION'] == 'clean':
|
||||
print("{0}: Not running while cleaning".format(sys.argv[0]))
|
||||
sys.exit(0)
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print("Usage: {0} buildnum.ver Info.plist [... Info.plist]".format(sys.argv[0]))
|
||||
sys.exit(1)
|
||||
vername = sys.argv[1]
|
||||
|
||||
(version_orig, build_orig) = read_verfile(vername)
|
||||
|
||||
(version, build) = upver(vername)
|
||||
if version == None or build == None:
|
||||
sys.exit(2)
|
||||
|
||||
if (version_orig, build_orig) < (version, build):
|
||||
for i in range(2, len(sys.argv)):
|
||||
plistname = sys.argv[i]
|
||||
set_plist_version(plistname, version, build)
|
||||
|
||||
sys.exit(0)
|
||||
44
Graphic Analysis 2/Document.swift
Normal file
44
Graphic Analysis 2/Document.swift
Normal file
@ -0,0 +1,44 @@
|
||||
//
|
||||
// Document.swift
|
||||
// Graphic Analysis 2
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
|
||||
class Document: NSDocument {
|
||||
|
||||
override init() {
|
||||
super.init()
|
||||
// Add your subclass-specific initialization here.
|
||||
}
|
||||
|
||||
override class func autosavesInPlace() -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
override func makeWindowControllers() {
|
||||
// Returns the Storyboard that contains your Document window.
|
||||
let storyboard = NSStoryboard(name: "Main", bundle: nil)
|
||||
let windowController = storyboard.instantiateController(withIdentifier: "Document Window Controller") as! NSWindowController
|
||||
self.addWindowController(windowController)
|
||||
}
|
||||
|
||||
override func data(ofType typeName: String) throws -> Data {
|
||||
// Insert code here to write your document to data of the specified type. If outError != nil, ensure that you create and set an appropriate error when returning nil.
|
||||
// You can also choose to override fileWrapperOfType:error:, writeToURL:ofType:error:, or writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead.
|
||||
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
|
||||
}
|
||||
|
||||
override func read(from data: Data, ofType typeName: String) throws {
|
||||
// Insert code here to read your document from the given data of the specified type. If outError != nil, ensure that you create and set an appropriate error when returning false.
|
||||
// You can also choose to override readFromFileWrapper:ofType:error: or readFromURL:ofType:error: instead.
|
||||
// If you override either of these, you should also override -isEntireFileLoaded to return false if the contents are lazily loaded.
|
||||
throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
BIN
Graphic Analysis 2/Graph.icns
Normal file
BIN
Graphic Analysis 2/Graph.icns
Normal file
Binary file not shown.
140
Graphic Analysis 2/GraphDetailsController.xib
Normal file
140
Graphic Analysis 2/GraphDetailsController.xib
Normal file
@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12121" systemVersion="16G12b" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12121"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="GraphDetailsController" customModule="Graphic_Analysis" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="freq" destination="l7u-Vy-iwa" id="cwp-LE-s9E"/>
|
||||
<outlet property="power" destination="TXD-Ji-2X2" id="OzI-qa-t7f"/>
|
||||
<outlet property="ranging" destination="Q4h-v5-Nwu" id="Wdl-ru-kuA"/>
|
||||
<outlet property="snr" destination="7Zc-lS-tmW" id="8lV-5y-zvh"/>
|
||||
<outlet property="time" destination="OJ8-uC-Y3l" id="gG1-Pf-LE2"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="258" height="162"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fVO-dW-v0J">
|
||||
<rect key="frame" x="18" y="125" width="72" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Frequency:" id="tTx-Ii-q3Q">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Zc-lS-tmW">
|
||||
<rect key="frame" x="129" y="75" width="111" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="33 dBmV" id="mAc-rH-21s">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lSs-3C-Wh6">
|
||||
<rect key="frame" x="18" y="100" width="84" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Power Level: " id="yzi-sz-IPS">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c43-bY-Gpy">
|
||||
<rect key="frame" x="18" y="75" width="107" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="SNR / Threshold:" id="hst-Bk-YtF">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TXD-Ji-2X2">
|
||||
<rect key="frame" x="129" y="100" width="111" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="36 dBmV" id="sHM-Uk-gSL">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l7u-Vy-iwa">
|
||||
<rect key="frame" x="129" y="125" width="111" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="58.6 MHZ" id="mjT-6Q-7bd">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IzL-lu-zBV">
|
||||
<rect key="frame" x="18" y="50" width="76" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Timestamp:" id="YWT-IG-AmC">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OJ8-uC-Y3l">
|
||||
<rect key="frame" x="129" y="50" width="111" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="00:00:00" id="xwJ-Dw-suj">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q4h-v5-Nwu">
|
||||
<rect key="frame" x="129" y="25" width="111" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="retries_exceeded" id="OW0-D8-FzY">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="59B-IJ-gKQ">
|
||||
<rect key="frame" x="18" y="25" width="100" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="96" id="bh7-4s-7og"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Ranging Status:" id="nnW-k1-E1D">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="c43-bY-Gpy" firstAttribute="leading" secondItem="IzL-lu-zBV" secondAttribute="leading" id="0pl-Rv-rWS"/>
|
||||
<constraint firstItem="lSs-3C-Wh6" firstAttribute="leading" secondItem="c43-bY-Gpy" secondAttribute="leading" id="2KT-kh-aq4"/>
|
||||
<constraint firstItem="Q4h-v5-Nwu" firstAttribute="leading" secondItem="59B-IJ-gKQ" secondAttribute="trailing" constant="15" id="3UF-PM-YDZ"/>
|
||||
<constraint firstItem="7Zc-lS-tmW" firstAttribute="leading" secondItem="c43-bY-Gpy" secondAttribute="trailing" constant="8" symbolic="YES" id="6am-Rt-HbZ"/>
|
||||
<constraint firstItem="Q4h-v5-Nwu" firstAttribute="top" secondItem="OJ8-uC-Y3l" secondAttribute="bottom" constant="8" symbolic="YES" id="7X2-NE-2Ph"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="leading" secondItem="Q4h-v5-Nwu" secondAttribute="leading" id="7ZK-TD-vkR"/>
|
||||
<constraint firstItem="TXD-Ji-2X2" firstAttribute="leading" secondItem="7Zc-lS-tmW" secondAttribute="leading" id="Aut-RG-maq"/>
|
||||
<constraint firstItem="fVO-dW-v0J" firstAttribute="leading" secondItem="lSs-3C-Wh6" secondAttribute="leading" id="EVZ-jU-rAl"/>
|
||||
<constraint firstItem="59B-IJ-gKQ" firstAttribute="leading" secondItem="IzL-lu-zBV" secondAttribute="leading" id="Ext-0L-rXN"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="trailing" secondItem="Q4h-v5-Nwu" secondAttribute="trailing" id="FRt-Vv-2ss"/>
|
||||
<constraint firstItem="lSs-3C-Wh6" firstAttribute="top" secondItem="fVO-dW-v0J" secondAttribute="bottom" constant="8" symbolic="YES" id="JhZ-hu-rB2"/>
|
||||
<constraint firstItem="c43-bY-Gpy" firstAttribute="baseline" secondItem="7Zc-lS-tmW" secondAttribute="baseline" id="Ons-ef-Yqx"/>
|
||||
<constraint firstItem="c43-bY-Gpy" firstAttribute="top" secondItem="lSs-3C-Wh6" secondAttribute="bottom" constant="8" symbolic="YES" id="Pjl-r1-XRq"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="trailing" secondItem="l7u-Vy-iwa" secondAttribute="trailing" id="SYL-VZ-BBW"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="trailing" secondItem="TXD-Ji-2X2" secondAttribute="trailing" id="TLc-LW-px0"/>
|
||||
<constraint firstItem="l7u-Vy-iwa" firstAttribute="leading" secondItem="TXD-Ji-2X2" secondAttribute="leading" id="XVZ-ID-4gx"/>
|
||||
<constraint firstItem="fVO-dW-v0J" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="bHZ-p7-Hf5"/>
|
||||
<constraint firstItem="59B-IJ-gKQ" firstAttribute="baseline" secondItem="Q4h-v5-Nwu" secondAttribute="baseline" id="bO7-7g-Z43"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="baseline" secondItem="IzL-lu-zBV" secondAttribute="baseline" id="ceG-PY-PqP"/>
|
||||
<constraint firstItem="fVO-dW-v0J" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="hB1-UW-Ov6"/>
|
||||
<constraint firstItem="IzL-lu-zBV" firstAttribute="top" secondItem="c43-bY-Gpy" secondAttribute="bottom" constant="8" symbolic="YES" id="i7D-jq-gFT"/>
|
||||
<constraint firstItem="fVO-dW-v0J" firstAttribute="baseline" secondItem="l7u-Vy-iwa" secondAttribute="baseline" id="jQu-mQ-Uby"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Q4h-v5-Nwu" secondAttribute="trailing" constant="20" symbolic="YES" id="sjN-3T-nyG"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="leading" secondItem="7Zc-lS-tmW" secondAttribute="leading" id="spU-N5-Lh0"/>
|
||||
<constraint firstItem="OJ8-uC-Y3l" firstAttribute="trailing" secondItem="7Zc-lS-tmW" secondAttribute="trailing" id="srp-nj-mFx"/>
|
||||
<constraint firstItem="lSs-3C-Wh6" firstAttribute="baseline" secondItem="TXD-Ji-2X2" secondAttribute="baseline" id="ucu-so-Aw2"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="28" y="114"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
81
Graphic Analysis 2/Info.plist
Normal file
81
Graphic Analysis 2/Info.plist
Normal file
@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>docsisplist2</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>Graph</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Document</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>????</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
<key>LSItemContentTypes</key>
|
||||
<array>
|
||||
<string>com.alikja.DocumentType.docsisplist2</string>
|
||||
</array>
|
||||
<key>LSTypeIsPackage</key>
|
||||
<integer>1</integer>
|
||||
<key>NSDocumentClass</key>
|
||||
<string>$(PRODUCT_MODULE_NAME).Document</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2017 Kilian Hofmann. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>UTTypeConformsTo</key>
|
||||
<array>
|
||||
<string>com.apple.package</string>
|
||||
</array>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>DocumentType</string>
|
||||
<key>UTTypeIconFile</key>
|
||||
<string>Graph</string>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>com.alikja.DocumentType.docsisplist2</string>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
<array>
|
||||
<string>docsisplist2</string>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
115
Graphic Analysis 2/MainMenu.xib
Normal file
115
Graphic Analysis 2/MainMenu.xib
Normal file
@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11185.3" systemVersion="16A320" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11185.3"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Graphic_Analysis" customModuleProvider="target"/>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||
<items>
|
||||
<menuItem title="Graphic Analysis" id="1Xt-HY-uBw">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Graphic Analysis" systemMenu="apple" id="uQy-DD-JDr">
|
||||
<items>
|
||||
<menuItem title="About Graphic Analysis" id="5kV-Vb-QxS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||
<menuItem title="Hide Graphic Analysis" keyEquivalent="h" id="Olw-nP-bQN">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="Kd2-mp-pUS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
|
||||
<menuItem title="Quit Graphic Analysis" keyEquivalent="q" id="4sb-4s-VLi">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="dMs-cI-mzQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="File" id="bib-Uj-vzu">
|
||||
<items>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
|
||||
<connections>
|
||||
<action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="tXI-mr-wws">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="vNY-rz-j42">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
|
||||
<menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="aUF-d1-5bR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="R4o-n2-Eq4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
|
||||
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</objects>
|
||||
</document>
|
||||
2
Graphic Analysis 2/buildnum.ver
Normal file
2
Graphic Analysis 2/buildnum.ver
Normal file
@ -0,0 +1,2 @@
|
||||
version 2.0
|
||||
build 2
|
||||
@ -1,6 +0,0 @@
|
||||
//
|
||||
// Use this file to import your target's public headers that you would like to
|
||||
// expose to Swift.
|
||||
//
|
||||
|
||||
#import "XMLDictionary.h"
|
||||
@ -105,8 +105,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
// MARK: - Logging Functions
|
||||
|
||||
func logFreqs(_: Timer) {
|
||||
// let frequencyOperation: FrequencyOperation = FrequencyOperation()
|
||||
// OperationQueue.main.addOperation(frequencyOperation)
|
||||
let frequencyOperation: FrequencyOperation = FrequencyOperation()
|
||||
OperationQueue.main.addOperation(frequencyOperation)
|
||||
}
|
||||
|
||||
func logFails(_: Timer) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
//
|
||||
// ConnectionLossOperation.swift
|
||||
// Docsis Toolkit
|
||||
// Logger4
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
@ -44,7 +44,21 @@ class ConnectionLossOperation: Operation {
|
||||
data, response, error in
|
||||
|
||||
if error != nil && data == nil && self.result2 {
|
||||
log(entry, path: file)
|
||||
let fileH: FileHandle? = FileHandle(forUpdatingAtPath: file)
|
||||
if fileH == nil {
|
||||
do{
|
||||
try entry.write(toFile: file, atomically: true, encoding: .utf8)
|
||||
}
|
||||
catch {
|
||||
NSLog("WRITE TO FILE FAILED\n");
|
||||
}
|
||||
} else {
|
||||
fileH?.seekToEndOfFile();
|
||||
let data = (entry as NSString).data(using: String.Encoding.utf8.rawValue)
|
||||
fileH?.write(data!)
|
||||
fileH?.closeFile()
|
||||
}
|
||||
|
||||
self.result2 = false;
|
||||
NSLog("Internet loss logged!")
|
||||
}
|
||||
@ -56,7 +70,20 @@ class ConnectionLossOperation: Operation {
|
||||
data, response, error in
|
||||
|
||||
if error != nil && data == nil && self.result1 {
|
||||
log(entry, path: file)
|
||||
let fileH: FileHandle? = FileHandle(forUpdatingAtPath: file)
|
||||
if fileH == nil {
|
||||
do{
|
||||
try entry.write(toFile: file, atomically: true, encoding: .utf8)
|
||||
}
|
||||
catch {
|
||||
NSLog("WRITE TO FILE \(file) FAILED\n");
|
||||
}
|
||||
} else {
|
||||
fileH?.seekToEndOfFile();
|
||||
let data = (entry as NSString).data(using: String.Encoding.utf8.rawValue)
|
||||
fileH?.write(data!)
|
||||
fileH?.closeFile()
|
||||
}
|
||||
self.result1 = false;
|
||||
NSLog("Internet loss logged!")
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
//
|
||||
// FrequencyOperation.swift
|
||||
// Docsis Toolkit
|
||||
// Logger4
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
@ -17,6 +17,12 @@ class FrequencyOperation: Operation {
|
||||
let modulationAdjust: NSDictionary = ["qpsk": "-1.18", "8qam": "-0.21", "16qam": "-0.21", "32qam" : "0", "64qam": "0", "128qam": "0.05"]
|
||||
// XML Parser
|
||||
let parser: XMLDictionaryParser = XMLDictionaryParser()
|
||||
// Data handling
|
||||
var downstream: Data?
|
||||
var upstream: Data?
|
||||
var upstreamBool: Bool = false
|
||||
var downstreamBool: Bool = false
|
||||
var dir: NSString = ""
|
||||
|
||||
override init() {
|
||||
|
||||
@ -30,7 +36,7 @@ class FrequencyOperation: Operation {
|
||||
let fileManager: FileManager = FileManager.default
|
||||
// Make all relevant directories if not present
|
||||
pthread_mutex_lock(&((NSApp.delegate as! AppDelegate).lock))
|
||||
let dir: NSString = NSString(format: "~/KDLog/%@.docsisplist2/%@/%@", start[2], start[1], start[0])
|
||||
dir = NSString(format: "~/KDLog/%@.docsisplist2/%@/%@/", start[2], start[1], start[0])
|
||||
do {
|
||||
try fileManager.createDirectory(atPath: dir.expandingTildeInPath, withIntermediateDirectories: true, attributes: nil)
|
||||
}
|
||||
@ -38,5 +44,232 @@ class FrequencyOperation: Operation {
|
||||
NSLog("ERROR ON SUBDIRECTORY CREATION: \(error.localizedDescription)")
|
||||
}
|
||||
pthread_mutex_unlock(&((NSApp.delegate as! AppDelegate).lock))
|
||||
// URL Requests
|
||||
let requestDownstream: URLRequest = URLRequest.init(url: URL.init(string: UserDefaults.standard.string(forKey: "downstream")!)!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 4)
|
||||
let requestUpstream: URLRequest = URLRequest.init(url: URL.init(string: UserDefaults.standard.string(forKey: "upstream")!)!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 4)
|
||||
// Tasks
|
||||
let taskDownstream: URLSessionDataTask = (NSApp.delegate as! AppDelegate).urlSession.dataTask(with: requestDownstream){data, response, error in
|
||||
pthread_mutex_lock(&(NSApp.delegate as! AppDelegate).lock)
|
||||
self.downstream = data
|
||||
self.downstreamBool = true
|
||||
self.handleData(date: time)
|
||||
pthread_mutex_unlock(&(NSApp.delegate as! AppDelegate).lock)
|
||||
}
|
||||
|
||||
let taskUpstream: URLSessionDataTask = (NSApp.delegate as! AppDelegate).urlSession.dataTask(with: requestUpstream){data, response, error in
|
||||
pthread_mutex_lock(&(NSApp.delegate as! AppDelegate).lock)
|
||||
self.upstream = data
|
||||
self.upstreamBool = true
|
||||
self.handleData(date: time)
|
||||
pthread_mutex_unlock(&(NSApp.delegate as! AppDelegate).lock)
|
||||
}
|
||||
// Start
|
||||
taskUpstream.resume()
|
||||
taskDownstream.resume()
|
||||
}
|
||||
|
||||
func handleData(date: Date) {
|
||||
// Both returned successfully
|
||||
if upstream != nil && downstream != nil {
|
||||
// Parse data
|
||||
upstreamBool = false
|
||||
downstreamBool = false
|
||||
let dictionaryUpstream: Dictionary? = parser.dictionary(with: upstream)
|
||||
let dictionaryDownstream: Dictionary? = parser.dictionary(with: downstream)
|
||||
upstream = nil
|
||||
downstream = nil
|
||||
// Tracking padding adding
|
||||
var filesModified: [String] = []
|
||||
|
||||
// Upstream is valid
|
||||
if dictionaryUpstream != nil{
|
||||
var entry: String = ""
|
||||
var file: NSString = ""
|
||||
// Grab channels
|
||||
let channels: AnyObject = (dictionaryUpstream!["upstream_channel"]) as AnyObject
|
||||
// We have multiple channels
|
||||
if channels is [Dictionary<String,AnyObject>] {
|
||||
// Simplify
|
||||
let channels: [Dictionary<String,AnyObject>] = (channels as! [Dictionary<String,AnyObject>])
|
||||
// Step through channels
|
||||
for index in 0..<channels.count {
|
||||
// Grab channel
|
||||
let channel: Dictionary<String,AnyObject> = channels[index]
|
||||
// We do not have an error
|
||||
if channel["upstream_modulation"] != nil && (channel["frequency"] as! String) != "status_error" {
|
||||
// Grab power rating in dBmV
|
||||
let powerInt: Double? = Double(channel["power_level"] as! String)
|
||||
// We have valid power rating
|
||||
if powerInt != nil {
|
||||
// Grab modulation data
|
||||
let modulation: NSObject = ((channel["upstream_modulation"]!)["modulation"])! as! NSObject
|
||||
// Grab power adjustment see DOCSIS 3.0 Specification for more Information)
|
||||
var adjust: String = ""
|
||||
if modulation.isKind(of: NSArray.self) {
|
||||
adjust = modulationAdjust[(((modulation as! NSArray)[0] as! NSDictionary)["mod_type"]!) as! String]! as! String
|
||||
} else{
|
||||
adjust = modulationAdjust[((modulation as! NSDictionary)["mod_type"]!) as! String]! as! String
|
||||
}
|
||||
let adjustInt: Double = Double(adjust)!
|
||||
// Add timestamp and power to file entry
|
||||
entry = "\((NSApp.delegate as! AppDelegate).justTime.string(from: date));\(String(powerInt! + adjustInt));"
|
||||
// Add threshold to file entry
|
||||
switch channels.count {
|
||||
case 2:
|
||||
entry += "\(upstreamTwo[modulationAdjust.allKeys(for: adjust)[0] as! String]!)"
|
||||
case 3:
|
||||
entry += "\(upstreamThreeOrFour[modulationAdjust.allKeys(for: adjust)[0] as! String]!)"
|
||||
case 4:
|
||||
entry += "\(upstreamThreeOrFour[modulationAdjust.allKeys(for: adjust)[0] as! String]!)"
|
||||
default:
|
||||
entry += "NaN"
|
||||
}
|
||||
// Add ranging status
|
||||
entry += ";\(channel["ranging_status"] as! String)\n"
|
||||
// Add file name to path
|
||||
file = dir.appending("Upstream \(channel["frequency"]!).csv") as NSString
|
||||
// Track modification
|
||||
filesModified.append("Upstream \(channel["frequency"]!).csv")
|
||||
// Write to file
|
||||
logFreq(header: ";Power Level;Threshold;Ranging Status\n", file: file, entry: entry)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// We have a single channel
|
||||
else if channels is Dictionary<String,AnyObject> {
|
||||
// Grab channel
|
||||
let channel: Dictionary<String,AnyObject> = channels as! Dictionary<String,AnyObject>
|
||||
// We do not have an error
|
||||
if channel["upstream_modulation"] != nil && channel["frequency"] as! String != "status_error" {
|
||||
// Grab power rating in dBmV
|
||||
let powerInt: Double? = Double(channel["power_level"] as! String)
|
||||
// We have valid power rating
|
||||
if powerInt != nil {
|
||||
// Grab modulation data
|
||||
let modulation: NSObject = ((channel["upstream_modulation"]!)["modulation"])! as! NSObject
|
||||
// Grab power adjustment see DOCSIS 3.0 Specification for more Information)
|
||||
var adjust: String = ""
|
||||
if modulation.isKind(of: NSArray.self) {
|
||||
adjust = modulationAdjust[(((modulation as! NSArray)[0] as! NSDictionary)["mod_type"]!) as! String]! as! String
|
||||
} else{
|
||||
adjust = modulationAdjust[((modulation as! NSDictionary)["mod_type"]!) as! String]! as! String
|
||||
}
|
||||
let adjustInt: Double = Double(adjust)!
|
||||
// Add data to entry
|
||||
entry = "\((NSApp.delegate as! AppDelegate).justTime.string(from: date));\(String(powerInt! + adjustInt));\(upstreamOne[modulationAdjust.allKeys(for: adjust)[0] as! String]!);\(channel["ranging_status"] as! String)\n"
|
||||
// Add file name to path
|
||||
file = dir.appending("Upstream \(channel["frequency"]!).csv") as NSString
|
||||
// Track modifiction
|
||||
filesModified.append("Upstream \(channel["frequency"]!).csv")
|
||||
// Write to file
|
||||
logFreq(header: ";Power Level;Threshold;Ranging Status\n", file: file, entry: entry)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Downstream is valid
|
||||
if dictionaryDownstream != nil {
|
||||
var entry: String = ""
|
||||
var file: NSString = ""
|
||||
// Grab channels
|
||||
let channels: AnyObject = (dictionaryDownstream!["downstream_channel"]) as AnyObject
|
||||
// We have multiple channels
|
||||
if channels is [Dictionary<String,AnyObject>] {
|
||||
// Simplify
|
||||
let channels: [Dictionary<String, AnyObject>] = channels as! [Dictionary<String, AnyObject>]
|
||||
// Step through channels
|
||||
for index in 0..<channels.count {
|
||||
// Grab channel
|
||||
let channel: Dictionary<String,AnyObject> = channels[index]
|
||||
// We do not have an error
|
||||
if channel["frequency"] as! String != "status_error" {
|
||||
// Add data to entry
|
||||
entry = "\((NSApp.delegate as! AppDelegate).justTime.string(from: date));\(channel["power_level"]!);\(channel["snr"]!)\n"
|
||||
// Add file name to path
|
||||
file = dir.appending("Downstream \(channel["frequency"]!).csv") as NSString
|
||||
// Tracking modification
|
||||
filesModified.append("Downstream \(channel["frequency"]!).csv")
|
||||
// Write to file
|
||||
logFreq(header: ";Power;SNR\n", file: file, entry: entry)
|
||||
}
|
||||
}
|
||||
}
|
||||
// We have a single channel
|
||||
else if channels is Dictionary<String,AnyObject> {
|
||||
// Grab channel
|
||||
let channel: Dictionary<String,AnyObject> = channels as! Dictionary<String,AnyObject>
|
||||
// We do not have an error
|
||||
if channel["frequency"] as! String != "status_error" {
|
||||
// Add data to entry
|
||||
entry = "\((NSApp.delegate as! AppDelegate).justTime.string(from: date));\(channel["power_level"]!);\(channel["snr"]!)\n"
|
||||
// Add file name to path
|
||||
file = dir.appending("Downstream \(channel["frequency"]!).csv") as NSString
|
||||
// Tracking modification
|
||||
filesModified.append("Downstream \(channel["frequency"]!).csv")
|
||||
// Write to file
|
||||
logFreq(header: ";Power;SNR\n", file: file, entry: entry)
|
||||
}
|
||||
}
|
||||
// Update if not modified
|
||||
let fileManager = FileManager.default
|
||||
// Get all filenames in directory
|
||||
let enumerator:FileManager.DirectoryEnumerator = fileManager.enumerator(atPath: dir.expandingTildeInPath)!
|
||||
// Step through files
|
||||
for element in enumerator {
|
||||
// Check if modified
|
||||
if !filesModified.contains(element as! String) && (element as! String).contains(".csv") {
|
||||
logDummie(dir: dir, element: element as! String, date: date)
|
||||
}
|
||||
}
|
||||
}
|
||||
// Update if both nil (no connection to modem possible)
|
||||
else if (upstreamBool && downstreamBool) {
|
||||
upstreamBool = false
|
||||
downstreamBool = false
|
||||
let fileManager = FileManager.default
|
||||
// Get all filenames in directory
|
||||
let enumerator:FileManager.DirectoryEnumerator = fileManager.enumerator(atPath: dir.expandingTildeInPath)!
|
||||
// Step through files
|
||||
for element in enumerator {
|
||||
logDummie(dir: dir, element: element as! String, date: date)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func logFreq(header: String, file: NSString, entry: String) {
|
||||
let fileManager = FileManager.default
|
||||
if !fileManager.fileExists(atPath: file.expandingTildeInPath) {
|
||||
do {
|
||||
try header.write(toFile: file.expandingTildeInPath, atomically: true, encoding: .utf8)
|
||||
}
|
||||
catch {
|
||||
NSLog("WRITE TO FILE \(file.expandingTildeInPath) FAILED\n");
|
||||
return
|
||||
}
|
||||
}
|
||||
let fileH: FileHandle? = FileHandle(forUpdatingAtPath: file.expandingTildeInPath)
|
||||
fileH?.seekToEndOfFile()
|
||||
let data: Data = (entry as NSString).data(using: String.Encoding.utf8.rawValue)!
|
||||
fileH?.write(data)
|
||||
fileH?.closeFile()
|
||||
}
|
||||
|
||||
func logDummie(dir: NSString, element: String, date: Date) {
|
||||
// Get file
|
||||
let file: FileHandle? = FileHandle(forUpdatingAtPath: dir.expandingTildeInPath.appending(element))
|
||||
if file != nil {
|
||||
// Write appropriate null entry to file
|
||||
file?.seekToEndOfFile();
|
||||
var data: Data?;
|
||||
if element.contains("Upstream") {
|
||||
data = ("\((NSApp.delegate as! AppDelegate).justTime.string(from: date));-;-;-\n" as NSString).data(using: String.Encoding.utf8.rawValue)
|
||||
} else {
|
||||
data = ("\((NSApp.delegate as! AppDelegate).justTime.string(from: date));-;-\n" as NSString).data(using: String.Encoding.utf8.rawValue)
|
||||
}
|
||||
file?.write(data!)
|
||||
file?.closeFile()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,7 +17,9 @@
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>13</string>
|
||||
<string>26</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>LSUIElement</key>
|
||||
|
||||
6
Logger4/Logger4-Bridging-Header.h
Normal file
6
Logger4/Logger4-Bridging-Header.h
Normal file
@ -0,0 +1,6 @@
|
||||
//
|
||||
// Use this file to import your target's public headers that you would like to
|
||||
// expose to Swift.
|
||||
//
|
||||
|
||||
#import "XMLDictionary.h"
|
||||
@ -1,6 +1,6 @@
|
||||
//
|
||||
// SettingsWindowController.swift
|
||||
// Logger3
|
||||
// Logger4
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.08.16.
|
||||
// Copyright © 2016 Kilian Hofmann. All rights reserved.
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
//
|
||||
// Shared.swift
|
||||
// Docsis Toolkit
|
||||
//
|
||||
// Created by Kilian Hofmann on 15.06.17.
|
||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
|
||||
func log(_ entry: String, path: String) {
|
||||
let file: FileHandle? = FileHandle(forUpdatingAtPath: path)
|
||||
if file == nil {
|
||||
do{
|
||||
try (entry).write(toFile: path, atomically: true, encoding: String.Encoding.utf8)
|
||||
}
|
||||
catch {
|
||||
NSLog("WRITE TO FILE FAILED\n");
|
||||
}
|
||||
} else {
|
||||
file?.seekToEndOfFile();
|
||||
let data = (entry as NSString).data(using: String.Encoding.utf8.rawValue)
|
||||
file?.write(data!)
|
||||
file?.closeFile()
|
||||
}
|
||||
}
|
||||
@ -1,2 +1,2 @@
|
||||
version 4.0
|
||||
build 13
|
||||
build 26
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user