diff --git a/Modules/CPU/CPU.c b/Modules/CPU/CPU.c index a4b349a3..f9754970 100644 --- a/Modules/CPU/CPU.c +++ b/Modules/CPU/CPU.c @@ -17,7 +17,6 @@ #include #include -#if __has_include() #include pthread_t thread_id; @@ -28,6 +27,12 @@ double max; PGSampleID sampleID_1; PGSampleID sampleID_2; +extern bool PG_Initialize(void) __attribute__((weak_import)); + +static inline bool intelPowerGadgetIsAvailable() { + return (PG_Initialize != NULL); +} + void *listener () { while(stop == false) { PG_ReadSample(0, &sampleID_1); @@ -44,17 +49,29 @@ void *listener () { } void PG_start() { + if (intelPowerGadgetIsAvailable() == false) { + return; + } + stop = false; PG_Initialize(); pthread_create(&thread_id, NULL, listener, NULL); } void PG_stop() { + if (intelPowerGadgetIsAvailable() == false) { + return; + } + stop = true; PG_Shutdown(); } double* PG_getCPUFrequency() { + if (intelPowerGadgetIsAvailable() == false) { + return NULL; + } + if (stop == true || CPUFrequency == 0) { return NULL; } else { @@ -62,11 +79,3 @@ double* PG_getCPUFrequency() { } return NULL; } -#else -void PG_start() {} -void PG_stop() {} - -double* PG_getCPUFrequency() { - return NULL; -} -#endif diff --git a/Modules/CPU/CPU.h b/Modules/CPU/CPU.h index 40247ae4..432af7d6 100644 --- a/Modules/CPU/CPU.h +++ b/Modules/CPU/CPU.h @@ -9,13 +9,6 @@ // Copyright © 2020 Serhiy Mytrovtsiy. All rights reserved. // -#ifndef CPU_h -#define CPU_h - -#include - -#endif /* CPU_h */ - void PG_start(void); void PG_stop(void); diff --git a/Modules/CPU/main.swift b/Modules/CPU/main.swift index 9efce560..112844d2 100644 --- a/Modules/CPU/main.swift +++ b/Modules/CPU/main.swift @@ -100,10 +100,9 @@ public class CPU: Module { if let readFrequency = PG_getCPUFrequency() { frequency = readFrequency.pointee } - print(frequency ?? 0) let temperature = self.smc?.pointee.getValue("TC0C") ?? self.smc?.pointee.getValue("TC0D") ?? self.smc?.pointee.getValue("TC0P") ?? self.smc?.pointee.getValue("TC0E") - self.popupView.loadCallback(value!, tempValue: temperature) + self.popupView.loadCallback(value!, tempValue: temperature, frequency: frequency) if let widget = self.widget as? Mini { widget.setValue(value!.totalUsage, sufix: "%") diff --git a/Modules/CPU/popup.swift b/Modules/CPU/popup.swift index 7e412951..6b6b1ad9 100644 --- a/Modules/CPU/popup.swift +++ b/Modules/CPU/popup.swift @@ -31,10 +31,12 @@ internal class Popup: NSView { private var chart: LineChartView? = nil private var circle: CircleGraphView? = nil private var temperatureCircle: HalfCircleGraphView? = nil + private var frequencyCircle: HalfCircleGraphView? = nil private var initialized: Bool = false private var processesInitialized: Bool = false private var processes: [ProcessView] = [] + private var maxFreq: Double = 0 public init(_ title: String, store: UnsafePointer) { self.store = store @@ -75,8 +77,13 @@ internal class Popup: NSView { self.temperatureCircle = HalfCircleGraphView(frame: NSRect(x: (sideWidth - 60)/2, y: 10, width: 60, height: 50)) self.temperatureCircle!.toolTip = LocalizedString("CPU temperature") + self.frequencyCircle = HalfCircleGraphView(frame: NSRect(x: view.frame.width - 60 - Constants.Popup.margins*2, y: 10, width: 60, height: 50)) + self.frequencyCircle!.toolTip = LocalizedString("CPU frequency") + (self.frequencyCircle! as NSView).isHidden = true + view.addSubview(self.temperatureCircle!) view.addSubview(container) + view.addSubview(self.frequencyCircle!) self.addSubview(view) } @@ -150,7 +157,7 @@ internal class Popup: NSView { return valueView } - public func loadCallback(_ value: CPU_Load, tempValue: Double?) { + public func loadCallback(_ value: CPU_Load, tempValue: Double?, frequency: Double?) { DispatchQueue.main.async(execute: { if (self.window?.isVisible ?? false) || !self.initialized { self.systemField?.stringValue = "\(Int(value.systemLoad.rounded(toPlaces: 2) * 100)) %" @@ -170,6 +177,17 @@ internal class Popup: NSView { self.temperatureCircle?.setValue(tempValue!) self.temperatureCircle?.setText(Temperature(tempValue!)) } + if let freq = frequency { + if freq > self.maxFreq { + self.maxFreq = freq + } + + if let freqCircle = self.frequencyCircle { + freqCircle.setValue((100*freq)/self.maxFreq) + freqCircle.setText("\((freq/1000).rounded(toPlaces: 2))\nGHz") + (freqCircle as NSView).isHidden = false + } + } } self.chart?.addValue(value.totalUsage) }) diff --git a/Stats.xcodeproj/project.pbxproj b/Stats.xcodeproj/project.pbxproj index d9de1688..5a4741e6 100644 --- a/Stats.xcodeproj/project.pbxproj +++ b/Stats.xcodeproj/project.pbxproj @@ -16,16 +16,12 @@ 9A0C82EA24460FB100FAE3D4 /* StatsKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; }; 9A0C82EB24460FB100FAE3D4 /* StatsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9A0C82EE2446124800FAE3D4 /* SystemKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A7D0CB62444C2C800B09070 /* SystemKit.swift */; }; - 9A17EF4A2536440B003F1C19 /* CPU.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A17EF482536440B003F1C19 /* CPU.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A17EF4B2536440B003F1C19 /* CPU.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A17EF492536440B003F1C19 /* CPU.c */; }; 9A1A7ABA24561F0B00A84F7A /* BarChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1A7AB924561F0B00A84F7A /* BarChart.swift */; }; 9A1D5E4B25235C8100B82BFC /* helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1D5E4A25235C8100B82BFC /* helpers.swift */; }; 9A313BF7247EF01800DB5101 /* Reachability.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5349CD23D8832E00C23824 /* Reachability.framework */; }; 9A313BF8247EF01800DB5101 /* Reachability.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5349CD23D8832E00C23824 /* Reachability.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9A34353B243E278D006B19F9 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A34353A243E278D006B19F9 /* main.swift */; }; 9A34353C243E27E8006B19F9 /* LaunchAtLogin.app in Copy Files */ = {isa = PBXBuildFile; fileRef = 9A343527243E26A0006B19F9 /* LaunchAtLogin.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 9A3E17BD247A8F5700449CD1 /* StatsKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; settings = {ATTRIBUTES = (Required, ); }; }; - 9A3E17BE247A8F5700449CD1 /* StatsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9A3E17C1247A8F5E00449CD1 /* StatsKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; }; 9A3E17C2247A8F5E00449CD1 /* StatsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9A3E17D3247A94AF00449CD1 /* Net.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A3E17CC247A94AF00449CD1 /* Net.framework */; }; @@ -71,35 +67,40 @@ 9A90E19E24EAD3E300471E9A /* StatsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9A90E1A324EAD66600471E9A /* reader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A90E1A224EAD66600471E9A /* reader.swift */; }; 9A944D55244920690058F32A /* reader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A944D54244920690058F32A /* reader.swift */; }; - 9A944D59244920FE0058F32A /* readers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A944D58244920FE0058F32A /* readers.swift */; }; 9A944D5B244925720058F32A /* widget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A944D5A244925720058F32A /* widget.swift */; }; 9A944D5D24492A8B0058F32A /* popup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A944D5C24492A8B0058F32A /* popup.swift */; }; 9A944D5F24492AA60058F32A /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A944D5E24492AA60058F32A /* Constants.swift */; }; - 9A944D6124492B6D0058F32A /* popup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A944D6024492B6D0058F32A /* popup.swift */; }; 9A953A1424B9D22D0038EF4B /* settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A953A1324B9D22D0038EF4B /* settings.swift */; }; + 9A97CECE2537331B00742D8F /* CPU.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A97CECC2537331B00742D8F /* CPU.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A97CED12537331B00742D8F /* CPU.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A97CECA2537331B00742D8F /* CPU.framework */; }; + 9A97CED22537331B00742D8F /* CPU.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A97CECA2537331B00742D8F /* CPU.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9A97CEE92537338600742D8F /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A97CEE82537338600742D8F /* main.swift */; }; + 9A97CEF1253733D200742D8F /* readers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A97CEF0253733D200742D8F /* readers.swift */; }; + 9A97CEF6253733E400742D8F /* popup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A97CEF5253733E400742D8F /* popup.swift */; }; + 9A97CEFB253733F300742D8F /* settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A97CEFA253733F300742D8F /* settings.swift */; }; + 9A97CF002537340400742D8F /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A97CEFF2537340400742D8F /* config.plist */; }; + 9A97CF072537351600742D8F /* ModuleKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; }; + 9A97CF082537351600742D8F /* ModuleKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9A97CF0C2537351800742D8F /* StatsKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; }; + 9A97CF0D2537351800742D8F /* StatsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9A97CF122537352100742D8F /* IntelPowerGadget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A97CE2A25371B2300742D8F /* IntelPowerGadget.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 9A97CF2A25373C8400742D8F /* CPU.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A97CF2925373C8400742D8F /* CPU.c */; }; 9A9B25BB24F7DE2B00C3CCE6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9A9B25BD24F7DE2B00C3CCE6 /* Localizable.strings */; }; 9A9D728A24471FAE005CF997 /* SMC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A9D728924471FAE005CF997 /* SMC.swift */; }; 9A9EA9452476D34500E3B883 /* Update.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A9EA9442476D34500E3B883 /* Update.swift */; }; 9AA4A00A2443656D00ECCF07 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AA4A0092443656D00ECCF07 /* Assets.xcassets */; }; 9AA64260244B274200416A33 /* popup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AA6425F244B274200416A33 /* popup.swift */; }; - 9AA64262244B57C800416A33 /* settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AA64261244B57C800416A33 /* settings.swift */; }; 9AA64264244B94F300416A33 /* LineChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AA64263244B94F300416A33 /* LineChart.swift */; }; 9AA95A6424DD7C6300801B69 /* Bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AA95A6324DD7C6300801B69 /* Bridge.h */; }; 9AABEAE4243FB13500668CB0 /* ModuleKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; }; 9AABEAE5243FB13500668CB0 /* ModuleKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9AABEAEA243FB15E00668CB0 /* module.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AABEAE9243FB15E00668CB0 /* module.swift */; }; - 9AABEB6B243FCE8A00668CB0 /* CPU.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEB64243FCE8A00668CB0 /* CPU.framework */; }; - 9AABEB6C243FCE8A00668CB0 /* CPU.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEB64243FCE8A00668CB0 /* CPU.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 9AABEB71243FCE9400668CB0 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AABEB70243FCE9400668CB0 /* main.swift */; }; - 9AABEB72243FCEEF00668CB0 /* ModuleKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; }; - 9AABEB73243FCEEF00668CB0 /* ModuleKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 9AABEB7A243FD26200668CB0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AABEB79243FD26200668CB0 /* AppDelegate.swift */; }; 9AABEB7E243FDEF100668CB0 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AABEB7D243FDEF100668CB0 /* main.swift */; }; 9AB14B77248CEF3500DC6731 /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9AF9EE192464A7B3005D2270 /* config.plist */; }; 9AB14B78248CEF3B00DC6731 /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9AF9EE12246492E8005D2270 /* config.plist */; }; 9AB14B79248CEF4100DC6731 /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A3E17DC247A94C300449CD1 /* config.plist */; }; 9AB14B7A248CEF4900DC6731 /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9ABFF904248BEC0B00C9041A /* config.plist */; }; - 9AB14B7B248CF00F00DC6731 /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9AF9EE1B2464A7BA005D2270 /* config.plist */; }; 9AB7FD7C246B48DB00387FDA /* settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB7FD7B246B48DB00387FDA /* settings.swift */; }; 9ABFF8FD248BEBCB00C9041A /* Battery.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9ABFF8F6248BEBCB00C9041A /* Battery.framework */; }; 9ABFF8FE248BEBCB00C9041A /* Battery.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9ABFF8F6248BEBCB00C9041A /* Battery.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -149,13 +150,6 @@ remoteGlobalIDString = 9A0C82D924460F7200FAE3D4; remoteInfo = StatsKit; }; - 9A3E17BF247A8F5700449CD1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 9A1410ED229E721100D29793 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9A0C82D924460F7200FAE3D4; - remoteInfo = StatsKit; - }; 9A3E17C3247A8F5E00449CD1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9A1410ED229E721100D29793 /* Project object */; @@ -226,21 +220,28 @@ remoteGlobalIDString = 9A0C82D924460F7200FAE3D4; remoteInfo = StatsKit; }; - 9AABEAE2243FB13500668CB0 /* PBXContainerItemProxy */ = { + 9A97CECF2537331B00742D8F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A1410ED229E721100D29793 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A97CEC92537331B00742D8F; + remoteInfo = CPU; + }; + 9A97CF092537351600742D8F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9A1410ED229E721100D29793 /* Project object */; proxyType = 1; remoteGlobalIDString = 9AABEADC243FB13500668CB0; remoteInfo = ModuleKit; }; - 9AABEB69243FCE8A00668CB0 /* PBXContainerItemProxy */ = { + 9A97CF0E2537351800742D8F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9A1410ED229E721100D29793 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9AABEB63243FCE8A00668CB0; - remoteInfo = CPU; + remoteGlobalIDString = 9A0C82D924460F7200FAE3D4; + remoteInfo = StatsKit; }; - 9AABEB74243FCEEF00668CB0 /* PBXContainerItemProxy */ = { + 9AABEAE2243FB13500668CB0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9A1410ED229E721100D29793 /* Project object */; proxyType = 1; @@ -341,11 +342,11 @@ 9A81C75E2449A41400825D92 /* Memory.framework in Embed Frameworks */, 9AE29ADD249A50350071B02D /* Sensors.framework in Embed Frameworks */, 9ABFF8FE248BEBCB00C9041A /* Battery.framework in Embed Frameworks */, - 9AABEB6C243FCE8A00668CB0 /* CPU.framework in Embed Frameworks */, 9AABEAE5243FB13500668CB0 /* ModuleKit.framework in Embed Frameworks */, 9A3E17D4247A94AF00449CD1 /* Net.framework in Embed Frameworks */, 9A0C82E224460F7200FAE3D4 /* StatsKit.framework in Embed Frameworks */, 9A90E19124EAD2BB00471E9A /* GPU.framework in Embed Frameworks */, + 9A97CED22537331B00742D8F /* CPU.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -374,14 +375,14 @@ name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; - 9AABEB76243FCEEF00668CB0 /* Embed Frameworks */ = { + 9A97CF0B2537351600742D8F /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; - buildActionMask = 12; + buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 9AABEB73243FCEEF00668CB0 /* ModuleKit.framework in Embed Frameworks */, - 9A3E17BE247A8F5700449CD1 /* StatsKit.framework in Embed Frameworks */, + 9A97CF082537351600742D8F /* ModuleKit.framework in Embed Frameworks */, + 9A97CF0D2537351800742D8F /* StatsKit.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -457,8 +458,6 @@ 9A1410F5229E721100D29793 /* Stats.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Stats.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9A141101229E721200D29793 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9A17EECB25363D5F003F1C19 /* IntelPowerGadget.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntelPowerGadget.framework; path = System/Library/Frameworks/IntelPowerGadget.framework; sourceTree = ""; }; - 9A17EF482536440B003F1C19 /* CPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPU.h; sourceTree = ""; }; - 9A17EF492536440B003F1C19 /* CPU.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CPU.c; sourceTree = ""; }; 9A1A7AB924561F0B00A84F7A /* BarChart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarChart.swift; sourceTree = ""; }; 9A1D5E4A25235C8100B82BFC /* helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = helpers.swift; sourceTree = ""; }; 9A343527243E26A0006B19F9 /* LaunchAtLogin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LaunchAtLogin.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -501,12 +500,20 @@ 9A90E19724EAD3B000471E9A /* config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = config.plist; sourceTree = ""; }; 9A90E1A224EAD66600471E9A /* reader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = reader.swift; sourceTree = ""; }; 9A944D54244920690058F32A /* reader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = reader.swift; sourceTree = ""; }; - 9A944D58244920FE0058F32A /* readers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = readers.swift; sourceTree = ""; }; 9A944D5A244925720058F32A /* widget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = widget.swift; sourceTree = ""; }; 9A944D5C24492A8B0058F32A /* popup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = popup.swift; sourceTree = ""; }; 9A944D5E24492AA60058F32A /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - 9A944D6024492B6D0058F32A /* popup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = popup.swift; sourceTree = ""; }; 9A953A1324B9D22D0038EF4B /* settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = settings.swift; sourceTree = ""; }; + 9A97CE2A25371B2300742D8F /* IntelPowerGadget.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntelPowerGadget.framework; path = ../../../Library/Frameworks/IntelPowerGadget.framework; sourceTree = ""; }; + 9A97CECA2537331B00742D8F /* CPU.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CPU.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A97CECC2537331B00742D8F /* CPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPU.h; sourceTree = ""; }; + 9A97CECD2537331B00742D8F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A97CEE82537338600742D8F /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 9A97CEF0253733D200742D8F /* readers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = readers.swift; sourceTree = ""; }; + 9A97CEF5253733E400742D8F /* popup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = popup.swift; sourceTree = ""; }; + 9A97CEFA253733F300742D8F /* settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = settings.swift; sourceTree = ""; }; + 9A97CEFF2537340400742D8F /* config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = config.plist; sourceTree = ""; }; + 9A97CF2925373C8400742D8F /* CPU.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = CPU.c; sourceTree = ""; }; 9A998CD722A199920087ADE7 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 9A998CD922A199970087ADE7 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; }; 9A9B25BC24F7DE2B00C3CCE6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; @@ -514,7 +521,6 @@ 9A9EA9442476D34500E3B883 /* Update.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Update.swift; sourceTree = ""; }; 9AA4A0092443656D00ECCF07 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 9AA6425F244B274200416A33 /* popup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = popup.swift; sourceTree = ""; }; - 9AA64261244B57C800416A33 /* settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = settings.swift; sourceTree = ""; }; 9AA64263244B94F300416A33 /* LineChart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChart.swift; sourceTree = ""; }; 9AA95A6324DD7C6300801B69 /* Bridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bridge.h; sourceTree = ""; }; 9AAAE83524F953FC00CD92D7 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; @@ -522,9 +528,6 @@ 9AABEADD243FB13500668CB0 /* ModuleKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ModuleKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9AABEAE0243FB13500668CB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9AABEAE9243FB15E00668CB0 /* module.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = module.swift; sourceTree = ""; }; - 9AABEB64243FCE8A00668CB0 /* CPU.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CPU.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9AABEB67243FCE8A00668CB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9AABEB70243FCE9400668CB0 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 9AABEB79243FD26200668CB0 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 9AABEB7D243FDEF100668CB0 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 9AB7FD7B246B48DB00387FDA /* settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = settings.swift; sourceTree = ""; }; @@ -551,7 +554,6 @@ 9AF9EE1024648ADC005D2270 /* readers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = readers.swift; sourceTree = ""; }; 9AF9EE12246492E8005D2270 /* config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = config.plist; sourceTree = ""; }; 9AF9EE192464A7B3005D2270 /* config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = config.plist; sourceTree = ""; }; - 9AF9EE1B2464A7BA005D2270 /* config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = config.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -573,8 +575,8 @@ 9A81C75D2449A41400825D92 /* Memory.framework in Frameworks */, 9A0C82E124460F7200FAE3D4 /* StatsKit.framework in Frameworks */, 9A3E17D3247A94AF00449CD1 /* Net.framework in Frameworks */, - 9AABEB6B243FCE8A00668CB0 /* CPU.framework in Frameworks */, 9A90E19024EAD2BB00471E9A /* GPU.framework in Frameworks */, + 9A97CED12537331B00742D8F /* CPU.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -613,6 +615,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A97CEC72537331B00742D8F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A97CF122537352100742D8F /* IntelPowerGadget.framework in Frameworks */, + 9A97CF072537351600742D8F /* ModuleKit.framework in Frameworks */, + 9A97CF0C2537351800742D8F /* StatsKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9AABEADA243FB13500668CB0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -622,15 +634,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9AABEB61243FCE8A00668CB0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9AABEB72243FCEEF00668CB0 /* ModuleKit.framework in Frameworks */, - 9A3E17BD247A8F5700449CD1 /* StatsKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9ABFF8F3248BEBCB00C9041A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -697,7 +700,6 @@ 9A1410F5229E721100D29793 /* Stats.app */, 9A343527243E26A0006B19F9 /* LaunchAtLogin.app */, 9AABEADD243FB13500668CB0 /* ModuleKit.framework */, - 9AABEB64243FCE8A00668CB0 /* CPU.framework */, 9A0C82DA24460F7200FAE3D4 /* StatsKit.framework */, 9A81C7562449A41400825D92 /* Memory.framework */, 9AF9EE0224648751005D2270 /* Disk.framework */, @@ -705,6 +707,7 @@ 9ABFF8F6248BEBCB00C9041A /* Battery.framework */, 9AE29AD5249A50350071B02D /* Sensors.framework */, 9A90E18924EAD2BB00471E9A /* GPU.framework */, + 9A97CECA2537331B00742D8F /* CPU.framework */, ); name = Products; sourceTree = ""; @@ -804,10 +807,26 @@ path = GPU; sourceTree = ""; }; + 9A97CECB2537331B00742D8F /* CPU */ = { + isa = PBXGroup; + children = ( + 9A97CEE82537338600742D8F /* main.swift */, + 9A97CEF0253733D200742D8F /* readers.swift */, + 9A97CEF5253733E400742D8F /* popup.swift */, + 9A97CEFA253733F300742D8F /* settings.swift */, + 9A97CECD2537331B00742D8F /* Info.plist */, + 9A97CEFF2537340400742D8F /* config.plist */, + 9A97CECC2537331B00742D8F /* CPU.h */, + 9A97CF2925373C8400742D8F /* CPU.c */, + ); + path = CPU; + sourceTree = ""; + }; 9A998CD622A199920087ADE7 /* Frameworks */ = { isa = PBXGroup; children = ( 9A17EECB25363D5F003F1C19 /* IntelPowerGadget.framework */, + 9A97CE2A25371B2300742D8F /* IntelPowerGadget.framework */, 9A6549282440A57200E30B74 /* Repeat.framework */, 9A5349CD23D8832E00C23824 /* Reachability.framework */, 9A998CD922A199970087ADE7 /* ServiceManagement.framework */, @@ -840,25 +859,10 @@ path = ModuleKit; sourceTree = ""; }; - 9AABEB65243FCE8A00668CB0 /* CPU */ = { - isa = PBXGroup; - children = ( - 9AABEB70243FCE9400668CB0 /* main.swift */, - 9A944D58244920FE0058F32A /* readers.swift */, - 9A944D6024492B6D0058F32A /* popup.swift */, - 9AA64261244B57C800416A33 /* settings.swift */, - 9AABEB67243FCE8A00668CB0 /* Info.plist */, - 9AF9EE1B2464A7BA005D2270 /* config.plist */, - 9A17EF482536440B003F1C19 /* CPU.h */, - 9A17EF492536440B003F1C19 /* CPU.c */, - ); - path = CPU; - sourceTree = ""; - }; 9AB14B75248CEEC600DC6731 /* Modules */ = { isa = PBXGroup; children = ( - 9AABEB65243FCE8A00668CB0 /* CPU */, + 9A97CECB2537331B00742D8F /* CPU */, 9A90E18A24EAD2BB00471E9A /* GPU */, 9A81C7572449A41400825D92 /* Memory */, 9AF9EE0324648751005D2270 /* Disk */, @@ -941,6 +945,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A97CEC52537331B00742D8F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A97CECE2537331B00742D8F /* CPU.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9AABEAD8243FB13500668CB0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -948,14 +960,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9AABEB5F243FCE8A00668CB0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9A17EF4A2536440B003F1C19 /* CPU.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9ABFF8F1248BEBCB00C9041A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1014,7 +1018,6 @@ ); dependencies = ( 9AABEAE3243FB13500668CB0 /* PBXTargetDependency */, - 9AABEB6A243FCE8A00668CB0 /* PBXTargetDependency */, 9A0C82E024460F7200FAE3D4 /* PBXTargetDependency */, 9A81C75C2449A41400825D92 /* PBXTargetDependency */, 9AF9EE0824648751005D2270 /* PBXTargetDependency */, @@ -1022,6 +1025,7 @@ 9ABFF8FC248BEBCB00C9041A /* PBXTargetDependency */, 9AE29ADB249A50350071B02D /* PBXTargetDependency */, 9A90E18F24EAD2BB00471E9A /* PBXTargetDependency */, + 9A97CED02537331B00742D8F /* PBXTargetDependency */, ); name = Stats; productName = "Mini Stats"; @@ -1108,6 +1112,27 @@ productReference = 9A90E18924EAD2BB00471E9A /* GPU.framework */; productType = "com.apple.product-type.framework"; }; + 9A97CEC92537331B00742D8F /* CPU */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A97CED32537331B00742D8F /* Build configuration list for PBXNativeTarget "CPU" */; + buildPhases = ( + 9A97CEC52537331B00742D8F /* Headers */, + 9A97CEC62537331B00742D8F /* Sources */, + 9A97CEC72537331B00742D8F /* Frameworks */, + 9A97CEC82537331B00742D8F /* Resources */, + 9A97CF0B2537351600742D8F /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 9A97CF0A2537351600742D8F /* PBXTargetDependency */, + 9A97CF0F2537351800742D8F /* PBXTargetDependency */, + ); + name = CPU; + productName = CPU; + productReference = 9A97CECA2537331B00742D8F /* CPU.framework */; + productType = "com.apple.product-type.framework"; + }; 9AABEADC243FB13500668CB0 /* ModuleKit */ = { isa = PBXNativeTarget; buildConfigurationList = 9AABEAE8243FB13500668CB0 /* Build configuration list for PBXNativeTarget "ModuleKit" */; @@ -1128,27 +1153,6 @@ productReference = 9AABEADD243FB13500668CB0 /* ModuleKit.framework */; productType = "com.apple.product-type.framework"; }; - 9AABEB63243FCE8A00668CB0 /* CPU */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9AABEB6D243FCE8A00668CB0 /* Build configuration list for PBXNativeTarget "CPU" */; - buildPhases = ( - 9AABEB5F243FCE8A00668CB0 /* Headers */, - 9AABEB60243FCE8A00668CB0 /* Sources */, - 9AABEB61243FCE8A00668CB0 /* Frameworks */, - 9AABEB62243FCE8A00668CB0 /* Resources */, - 9AABEB76243FCEEF00668CB0 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 9AABEB75243FCEEF00668CB0 /* PBXTargetDependency */, - 9A3E17C0247A8F5700449CD1 /* PBXTargetDependency */, - ); - name = CPU; - productName = CPU; - productReference = 9AABEB64243FCE8A00668CB0 /* CPU.framework */; - productType = "com.apple.product-type.framework"; - }; 9ABFF8F5248BEBCB00C9041A /* Battery */ = { isa = PBXNativeTarget; buildConfigurationList = 9ABFF901248BEBCB00C9041A /* Build configuration list for PBXNativeTarget "Battery" */; @@ -1256,14 +1260,14 @@ CreatedOnToolsVersion = 11.6; LastSwiftMigration = 1160; }; + 9A97CEC92537331B00742D8F = { + CreatedOnToolsVersion = 12.0.1; + LastSwiftMigration = 1200; + }; 9AABEADC243FB13500668CB0 = { CreatedOnToolsVersion = 11.4; LastSwiftMigration = 1140; }; - 9AABEB63243FCE8A00668CB0 = { - CreatedOnToolsVersion = 11.4; - LastSwiftMigration = 1200; - }; 9ABFF8F5248BEBCB00C9041A = { CreatedOnToolsVersion = 11.5; LastSwiftMigration = 1150; @@ -1299,14 +1303,14 @@ 9A1410F4229E721100D29793 /* Stats */, 9A343526243E26A0006B19F9 /* LaunchAtLogin */, 9AABEADC243FB13500668CB0 /* ModuleKit */, - 9AABEB63243FCE8A00668CB0 /* CPU */, 9A0C82D924460F7200FAE3D4 /* StatsKit */, + 9A97CEC92537331B00742D8F /* CPU */, + 9A90E18824EAD2BB00471E9A /* GPU */, 9A81C7552449A41400825D92 /* Memory */, 9AF9EE0124648751005D2270 /* Disk */, 9A3E17CB247A94AF00449CD1 /* Net */, 9ABFF8F5248BEBCB00C9041A /* Battery */, 9AE29AD4249A50350071B02D /* Sensors */, - 9A90E18824EAD2BB00471E9A /* GPU */, ); }; /* End PBXProject section */ @@ -1360,6 +1364,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A97CEC82537331B00742D8F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A97CF002537340400742D8F /* config.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9AABEADB243FB13500668CB0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1368,14 +1380,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9AABEB62243FCE8A00668CB0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9AB14B7B248CF00F00DC6731 /* config.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9ABFF8F4248BEBCB00C9041A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1472,6 +1476,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A97CEC62537331B00742D8F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A97CEF1253733D200742D8F /* readers.swift in Sources */, + 9A97CEF6253733E400742D8F /* popup.swift in Sources */, + 9A97CEFB253733F300742D8F /* settings.swift in Sources */, + 9A97CEE92537338600742D8F /* main.swift in Sources */, + 9A97CF2A25373C8400742D8F /* CPU.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9AABEAD9243FB13500668CB0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1492,18 +1508,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9AABEB60243FCE8A00668CB0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9A944D59244920FE0058F32A /* readers.swift in Sources */, - 9A944D6124492B6D0058F32A /* popup.swift in Sources */, - 9AABEB71243FCE9400668CB0 /* main.swift in Sources */, - 9AA64262244B57C800416A33 /* settings.swift in Sources */, - 9A17EF4B2536440B003F1C19 /* CPU.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9ABFF8F2248BEBCB00C9041A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1551,11 +1555,6 @@ target = 9A0C82D924460F7200FAE3D4 /* StatsKit */; targetProxy = 9A0C82EC24460FB100FAE3D4 /* PBXContainerItemProxy */; }; - 9A3E17C0247A8F5700449CD1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9A0C82D924460F7200FAE3D4 /* StatsKit */; - targetProxy = 9A3E17BF247A8F5700449CD1 /* PBXContainerItemProxy */; - }; 9A3E17C4247A8F5E00449CD1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 9A0C82D924460F7200FAE3D4 /* StatsKit */; @@ -1606,21 +1605,26 @@ target = 9A0C82D924460F7200FAE3D4 /* StatsKit */; targetProxy = 9A90E19F24EAD3E300471E9A /* PBXContainerItemProxy */; }; + 9A97CED02537331B00742D8F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A97CEC92537331B00742D8F /* CPU */; + targetProxy = 9A97CECF2537331B00742D8F /* PBXContainerItemProxy */; + }; + 9A97CF0A2537351600742D8F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AABEADC243FB13500668CB0 /* ModuleKit */; + targetProxy = 9A97CF092537351600742D8F /* PBXContainerItemProxy */; + }; + 9A97CF0F2537351800742D8F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A0C82D924460F7200FAE3D4 /* StatsKit */; + targetProxy = 9A97CF0E2537351800742D8F /* PBXContainerItemProxy */; + }; 9AABEAE3243FB13500668CB0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 9AABEADC243FB13500668CB0 /* ModuleKit */; targetProxy = 9AABEAE2243FB13500668CB0 /* PBXContainerItemProxy */; }; - 9AABEB6A243FCE8A00668CB0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9AABEB63243FCE8A00668CB0 /* CPU */; - targetProxy = 9AABEB69243FCE8A00668CB0 /* PBXContainerItemProxy */; - }; - 9AABEB75243FCEEF00668CB0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 9AABEADC243FB13500668CB0 /* ModuleKit */; - targetProxy = 9AABEB74243FCEEF00668CB0 /* PBXContainerItemProxy */; - }; 9ABFF8FC248BEBCB00C9041A /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 9ABFF8F5248BEBCB00C9041A /* Battery */; @@ -1821,6 +1825,7 @@ SDKROOT = macosx; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + USE_HEADERMAP = YES; }; name = Debug; }; @@ -1880,6 +1885,7 @@ SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; + USE_HEADERMAP = YES; }; name = Release; }; @@ -2192,6 +2198,79 @@ }; name = Release; }; + 9A97CED42537331B00742D8F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = RP2S87B72W; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(LOCAL_LIBRARY_DIR)/Frameworks", + ); + INFOPLIST_FILE = Modules/CPU/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + USE_HEADERMAP = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 9A97CED52537331B00742D8F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = RP2S87B72W; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(LOCAL_LIBRARY_DIR)/Frameworks", + ); + INFOPLIST_FILE = Modules/CPU/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + USE_HEADERMAP = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 9AABEAE6243FB13500668CB0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2261,95 +2340,6 @@ }; name = Release; }; - 9AABEB6E243FCE8A00668CB0 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = RP2S87B72W; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Carthage/Build/Mac", - "$(inherited)", - "$(LOCAL_LIBRARY_DIR)/Frameworks", - ); - INFOPLIST_FILE = Modules/CPU/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = ( - "-weak_framework", - IntelPowerGadget, - ); - PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - REEXPORTED_LIBRARY_PATHS = ""; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9AABEB6F243FCE8A00668CB0 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = RP2S87B72W; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/Carthage/Build/Mac", - "$(inherited)", - "$(LOCAL_LIBRARY_DIR)/Frameworks", - ); - INFOPLIST_FILE = Modules/CPU/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.14; - ONLY_ACTIVE_ARCH = NO; - OTHER_LDFLAGS = ( - "-weak_framework", - IntelPowerGadget, - ); - PRODUCT_BUNDLE_IDENTIFIER = eu.exelban.Stats.CPU; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - REEXPORTED_LIBRARY_PATHS = ""; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 9ABFF8FF248BEBCB00C9041A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2600,6 +2590,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 9A97CED32537331B00742D8F /* Build configuration list for PBXNativeTarget "CPU" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A97CED42537331B00742D8F /* Debug */, + 9A97CED52537331B00742D8F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 9AABEAE8243FB13500668CB0 /* Build configuration list for PBXNativeTarget "ModuleKit" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2609,15 +2608,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9AABEB6D243FCE8A00668CB0 /* Build configuration list for PBXNativeTarget "CPU" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9AABEB6E243FCE8A00668CB0 /* Debug */, - 9AABEB6F243FCE8A00668CB0 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 9ABFF901248BEBCB00C9041A /* Build configuration list for PBXNativeTarget "Battery" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/StatsKit/Charts.swift b/StatsKit/Charts.swift index bab943d1..2667c8c9 100644 --- a/StatsKit/Charts.swift +++ b/StatsKit/Charts.swift @@ -346,10 +346,12 @@ public class HalfCircleGraphView: NSView { context.restoreGState() if self.text != nil { + let style = NSMutableParagraphStyle() + style.alignment = .center let stringAttributes = [ NSAttributedString.Key.font: NSFont.systemFont(ofSize: 10, weight: .regular), NSAttributedString.Key.foregroundColor: isDarkMode ? NSColor.white : NSColor.textColor, - NSAttributedString.Key.paragraphStyle: NSMutableParagraphStyle() + NSAttributedString.Key.paragraphStyle: style ] let width: CGFloat = self.text!.widthOfString(usingFont: NSFont.systemFont(ofSize: 10))