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 */; };
|
E2218CA91EF2D37B004298F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E2218CA81EF2D37B004298F6 /* Assets.xcassets */; };
|
||||||
E2218CDE1EF2D461004298F6 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218CDC1EF2D461004298F6 /* MainMenu.xib */; };
|
E2218CDE1EF2D461004298F6 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218CDC1EF2D461004298F6 /* MainMenu.xib */; };
|
||||||
E2218CDF1EF2D461004298F6 /* SettingsWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E2218CDD1EF2D461004298F6 /* SettingsWindowController.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 */; };
|
E2218D111EF2D6F1004298F6 /* SettingsWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D101EF2D6F1004298F6 /* SettingsWindowController.swift */; };
|
||||||
E2218D151EF2E470004298F6 /* ConnectionLossOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2218D141EF2E470004298F6 /* ConnectionLossOperation.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 */; };
|
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 */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@ -28,6 +30,13 @@
|
|||||||
remoteGlobalIDString = E2218CE51EF2D577004298F6;
|
remoteGlobalIDString = E2218CE51EF2D577004298F6;
|
||||||
remoteInfo = "Bump Logger4";
|
remoteInfo = "Bump Logger4";
|
||||||
};
|
};
|
||||||
|
E2218D451EF32863004298F6 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = E2218C7A1EF2D2B5004298F6 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = E2218D3D1EF32803004298F6;
|
||||||
|
remoteInfo = "Bump Graphic Analysis 2";
|
||||||
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
@ -39,13 +48,21 @@
|
|||||||
E2218CDD1EF2D461004298F6 /* SettingsWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsWindowController.xib; sourceTree = "<group>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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 */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -56,6 +73,13 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
E2218D261EF3271F004298F6 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
@ -64,6 +88,7 @@
|
|||||||
children = (
|
children = (
|
||||||
E2218CA71EF2D35B004298F6 /* Shared Resources */,
|
E2218CA71EF2D35B004298F6 /* Shared Resources */,
|
||||||
E2218C991EF2D345004298F6 /* Logger4 */,
|
E2218C991EF2D345004298F6 /* Logger4 */,
|
||||||
|
E2218D2A1EF3271F004298F6 /* Graphic Analysis 2 */,
|
||||||
E2218C831EF2D2B5004298F6 /* Products */,
|
E2218C831EF2D2B5004298F6 /* Products */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -72,6 +97,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E2218C981EF2D345004298F6 /* Logger4.app */,
|
E2218C981EF2D345004298F6 /* Logger4.app */,
|
||||||
|
E2218D291EF3271F004298F6 /* Graphic Analysis 2.app */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -79,8 +105,9 @@
|
|||||||
E2218C991EF2D345004298F6 /* Logger4 */ = {
|
E2218C991EF2D345004298F6 /* Logger4 */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E2218CEB1EF2D648004298F6 /* Swift */,
|
E2218D041EF2D67B004298F6 /* Obj-C */,
|
||||||
E2218CDA1EF2D43A004298F6 /* Support Files */,
|
E2218CDA1EF2D43A004298F6 /* Support Files */,
|
||||||
|
E2218CEB1EF2D648004298F6 /* Swift */,
|
||||||
);
|
);
|
||||||
path = Logger4;
|
path = Logger4;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -89,7 +116,6 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E2218CA81EF2D37B004298F6 /* Assets.xcassets */,
|
E2218CA81EF2D37B004298F6 /* Assets.xcassets */,
|
||||||
E2218D041EF2D67B004298F6 /* Obj-C */,
|
|
||||||
);
|
);
|
||||||
name = "Shared Resources";
|
name = "Shared Resources";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -128,7 +154,6 @@
|
|||||||
E2218D121EF2D754004298F6 /* Delegates */,
|
E2218D121EF2D754004298F6 /* Delegates */,
|
||||||
E2218D131EF2E443004298F6 /* Operations */,
|
E2218D131EF2E443004298F6 /* Operations */,
|
||||||
E2218D0F1EF2D6E5004298F6 /* Views */,
|
E2218D0F1EF2D6E5004298F6 /* Views */,
|
||||||
E2218D161EF2E4EA004298F6 /* Shared.swift */,
|
|
||||||
);
|
);
|
||||||
name = Swift;
|
name = Swift;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -136,11 +161,12 @@
|
|||||||
E2218D041EF2D67B004298F6 /* Obj-C */ = {
|
E2218D041EF2D67B004298F6 /* Obj-C */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E2218D081EF2D68F004298F6 /* XMLDictionary.h */,
|
E2218D211EF3267F004298F6 /* Logger4-Bridging-Header.h */,
|
||||||
E2218D0A1EF2D68F004298F6 /* XMLDictionary.m */,
|
E2218D221EF3267F004298F6 /* XMLDictionary.h */,
|
||||||
E2218D051EF2D68F004298F6 /* Logger4-Bridging-Header.h */,
|
E2218D231EF3267F004298F6 /* XMLDictionary.m */,
|
||||||
);
|
);
|
||||||
name = "Obj-C";
|
name = "Obj-C";
|
||||||
|
path = ..;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
E2218D0F1EF2D6E5004298F6 /* Views */ = {
|
E2218D0F1EF2D6E5004298F6 /* Views */ = {
|
||||||
@ -168,6 +194,77 @@
|
|||||||
name = Operations;
|
name = Operations;
|
||||||
sourceTree = "<group>";
|
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 */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXLegacyTarget section */
|
/* Begin PBXLegacyTarget section */
|
||||||
@ -185,6 +282,20 @@
|
|||||||
passBuildSettingsInEnvironment = 1;
|
passBuildSettingsInEnvironment = 1;
|
||||||
productName = "Bump Logger4";
|
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 */
|
/* End PBXLegacyTarget section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@ -206,6 +317,24 @@
|
|||||||
productReference = E2218C981EF2D345004298F6 /* Logger4.app */;
|
productReference = E2218C981EF2D345004298F6 /* Logger4.app */;
|
||||||
productType = "com.apple.product-type.application";
|
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 */
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
@ -227,6 +356,16 @@
|
|||||||
DevelopmentTeam = 795KPDV76S;
|
DevelopmentTeam = 795KPDV76S;
|
||||||
ProvisioningStyle = Automatic;
|
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" */;
|
buildConfigurationList = E2218C7D1EF2D2B5004298F6 /* Build configuration list for PBXProject "Docsis Toolkit" */;
|
||||||
@ -244,6 +383,8 @@
|
|||||||
targets = (
|
targets = (
|
||||||
E2218C971EF2D345004298F6 /* Logger4 */,
|
E2218C971EF2D345004298F6 /* Logger4 */,
|
||||||
E2218CE51EF2D577004298F6 /* Bump Logger4 */,
|
E2218CE51EF2D577004298F6 /* Bump Logger4 */,
|
||||||
|
E2218D281EF3271F004298F6 /* Graphic Analysis 2 */,
|
||||||
|
E2218D3D1EF32803004298F6 /* Bump Graphic Analysis 2 */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
@ -256,8 +397,16 @@
|
|||||||
E2218CA91EF2D37B004298F6 /* Assets.xcassets in Resources */,
|
E2218CA91EF2D37B004298F6 /* Assets.xcassets in Resources */,
|
||||||
E2218CDF1EF2D461004298F6 /* SettingsWindowController.xib in Resources */,
|
E2218CDF1EF2D461004298F6 /* SettingsWindowController.xib in Resources */,
|
||||||
E2218CDE1EF2D461004298F6 /* MainMenu.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;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -268,8 +417,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
E2218D171EF2E4EA004298F6 /* Shared.swift in Sources */,
|
E2218D241EF3267F004298F6 /* XMLDictionary.m in Sources */,
|
||||||
E2218D0D1EF2D68F004298F6 /* XMLDictionary.m in Sources */,
|
|
||||||
E2218D111EF2D6F1004298F6 /* SettingsWindowController.swift in Sources */,
|
E2218D111EF2D6F1004298F6 /* SettingsWindowController.swift in Sources */,
|
||||||
E2218D151EF2E470004298F6 /* ConnectionLossOperation.swift in Sources */,
|
E2218D151EF2E470004298F6 /* ConnectionLossOperation.swift in Sources */,
|
||||||
E2218D191EF2F0D8004298F6 /* FrequencyOperation.swift in Sources */,
|
E2218D191EF2F0D8004298F6 /* FrequencyOperation.swift in Sources */,
|
||||||
@ -277,6 +425,15 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
E2218D251EF3271F004298F6 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
E2218D2C1EF3271F004298F6 /* AppDelegate.swift in Sources */,
|
||||||
|
E2218D301EF3271F004298F6 /* Document.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXTargetDependency section */
|
/* Begin PBXTargetDependency section */
|
||||||
@ -285,6 +442,11 @@
|
|||||||
target = E2218CE51EF2D577004298F6 /* Bump Logger4 */;
|
target = E2218CE51EF2D577004298F6 /* Bump Logger4 */;
|
||||||
targetProxy = E2218CE91EF2D601004298F6 /* PBXContainerItemProxy */;
|
targetProxy = E2218CE91EF2D601004298F6 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
|
E2218D461EF32863004298F6 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = E2218D3D1EF32803004298F6 /* Bump Graphic Analysis 2 */;
|
||||||
|
targetProxy = E2218D451EF32863004298F6 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
@ -393,7 +555,7 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = com.weebly.alikja.Logger4;
|
PRODUCT_BUNDLE_IDENTIFIER = com.weebly.alikja.Logger4;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
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_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 3.0;
|
SWIFT_VERSION = 3.0;
|
||||||
};
|
};
|
||||||
@ -412,7 +574,7 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = com.weebly.alikja.Logger4;
|
PRODUCT_BUNDLE_IDENTIFIER = com.weebly.alikja.Logger4;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Logger4-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Logger4/Logger4-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 3.0;
|
SWIFT_VERSION = 3.0;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@ -442,6 +604,63 @@
|
|||||||
};
|
};
|
||||||
name = Release;
|
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 */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
@ -470,6 +689,22 @@
|
|||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
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 */
|
/* End XCConfigurationList section */
|
||||||
};
|
};
|
||||||
rootObject = E2218C7A1EF2D2B5004298F6 /* Project object */;
|
rootObject = E2218C7A1EF2D2B5004298F6 /* Project object */;
|
||||||
|
|||||||
@ -42,11 +42,11 @@
|
|||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "Logger4/AppDelegate.swift"
|
filePath = "Logger4/AppDelegate.swift"
|
||||||
timestampString = "519236096.282816"
|
timestampString = "519247235.495795"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "93"
|
startingLineNumber = "95"
|
||||||
endingLineNumber = "93"
|
endingLineNumber = "95"
|
||||||
landmarkName = "applicationDidFinishLaunching(_:)"
|
landmarkName = "applicationDidFinishLaunching(_:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@ -74,14 +74,238 @@
|
|||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "Logger4/AppDelegate.swift"
|
filePath = "Logger4/AppDelegate.swift"
|
||||||
timestampString = "519236096.282816"
|
timestampString = "519247235.495795"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "110"
|
startingLineNumber = "112"
|
||||||
endingLineNumber = "110"
|
endingLineNumber = "112"
|
||||||
landmarkName = "logFails(_:)"
|
landmarkName = "logFails(_:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</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>
|
</Breakpoints>
|
||||||
</Bucket>
|
</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>
|
<dict>
|
||||||
<key>SchemeUserState</key>
|
<key>SchemeUserState</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>Graphic Analysis 2.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
<key>Logger4.xcscheme</key>
|
<key>Logger4.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
@ -27,6 +32,16 @@
|
|||||||
<key>primary</key>
|
<key>primary</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>E2218D281EF3271F004298F6</key>
|
||||||
|
<dict>
|
||||||
|
<key>primary</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
<key>E2218D3D1EF32803004298F6</key>
|
||||||
|
<dict>
|
||||||
|
<key>primary</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</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
|
// MARK: - Logging Functions
|
||||||
|
|
||||||
func logFreqs(_: Timer) {
|
func logFreqs(_: Timer) {
|
||||||
// let frequencyOperation: FrequencyOperation = FrequencyOperation()
|
let frequencyOperation: FrequencyOperation = FrequencyOperation()
|
||||||
// OperationQueue.main.addOperation(frequencyOperation)
|
OperationQueue.main.addOperation(frequencyOperation)
|
||||||
}
|
}
|
||||||
|
|
||||||
func logFails(_: Timer) {
|
func logFails(_: Timer) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
//
|
//
|
||||||
// ConnectionLossOperation.swift
|
// ConnectionLossOperation.swift
|
||||||
// Docsis Toolkit
|
// Logger4
|
||||||
//
|
//
|
||||||
// Created by Kilian Hofmann on 15.06.17.
|
// Created by Kilian Hofmann on 15.06.17.
|
||||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
||||||
@ -44,7 +44,21 @@ class ConnectionLossOperation: Operation {
|
|||||||
data, response, error in
|
data, response, error in
|
||||||
|
|
||||||
if error != nil && data == nil && self.result2 {
|
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;
|
self.result2 = false;
|
||||||
NSLog("Internet loss logged!")
|
NSLog("Internet loss logged!")
|
||||||
}
|
}
|
||||||
@ -56,7 +70,20 @@ class ConnectionLossOperation: Operation {
|
|||||||
data, response, error in
|
data, response, error in
|
||||||
|
|
||||||
if error != nil && data == nil && self.result1 {
|
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;
|
self.result1 = false;
|
||||||
NSLog("Internet loss logged!")
|
NSLog("Internet loss logged!")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
//
|
//
|
||||||
// FrequencyOperation.swift
|
// FrequencyOperation.swift
|
||||||
// Docsis Toolkit
|
// Logger4
|
||||||
//
|
//
|
||||||
// Created by Kilian Hofmann on 15.06.17.
|
// Created by Kilian Hofmann on 15.06.17.
|
||||||
// Copyright © 2017 Kilian Hofmann. All rights reserved.
|
// 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"]
|
let modulationAdjust: NSDictionary = ["qpsk": "-1.18", "8qam": "-0.21", "16qam": "-0.21", "32qam" : "0", "64qam": "0", "128qam": "0.05"]
|
||||||
// XML Parser
|
// XML Parser
|
||||||
let parser: XMLDictionaryParser = XMLDictionaryParser()
|
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() {
|
override init() {
|
||||||
|
|
||||||
@ -30,7 +36,7 @@ class FrequencyOperation: Operation {
|
|||||||
let fileManager: FileManager = FileManager.default
|
let fileManager: FileManager = FileManager.default
|
||||||
// Make all relevant directories if not present
|
// Make all relevant directories if not present
|
||||||
pthread_mutex_lock(&((NSApp.delegate as! AppDelegate).lock))
|
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 {
|
do {
|
||||||
try fileManager.createDirectory(atPath: dir.expandingTildeInPath, withIntermediateDirectories: true, attributes: nil)
|
try fileManager.createDirectory(atPath: dir.expandingTildeInPath, withIntermediateDirectories: true, attributes: nil)
|
||||||
}
|
}
|
||||||
@ -38,5 +44,232 @@ class FrequencyOperation: Operation {
|
|||||||
NSLog("ERROR ON SUBDIRECTORY CREATION: \(error.localizedDescription)")
|
NSLog("ERROR ON SUBDIRECTORY CREATION: \(error.localizedDescription)")
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&((NSApp.delegate as! AppDelegate).lock))
|
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>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>4.0</string>
|
<string>4.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>13</string>
|
<string>26</string>
|
||||||
|
<key>LSApplicationCategoryType</key>
|
||||||
|
<string>public.app-category.utilities</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||||
<key>LSUIElement</key>
|
<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
|
// SettingsWindowController.swift
|
||||||
// Logger3
|
// Logger4
|
||||||
//
|
//
|
||||||
// Created by Kilian Hofmann on 15.08.16.
|
// Created by Kilian Hofmann on 15.08.16.
|
||||||
// Copyright © 2016 Kilian Hofmann. All rights reserved.
|
// 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
|
version 4.0
|
||||||
build 13
|
build 26
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user