diff --git a/Common/MenuMeterCPU.h b/Common/MenuMeterCPU.h
index f84167c3..a18e6965 100644
--- a/Common/MenuMeterCPU.h
+++ b/Common/MenuMeterCPU.h
@@ -29,8 +29,8 @@
// Widths of the various displays
#define kCPUPercentDisplayBorderWidth 2
-#define kCPUThermometerDisplayWidth 11.0f
-#define kCPUDisplayMultiProcGapWidth 5
+#define kCPUThermometerDisplayWidth 9
+#define kCPUDisplayMultiProcGapWidth 1
#define kCPULabelOnlyWidth 25
// Menu item indexes
@@ -48,27 +48,27 @@
///////////////////////////////////////////////////////////////
// Pref dictionary keys
-#define kCPUIntervalPref @"CPUInterval"
-#define kCPUDisplayModePref @"CPUDisplayMode"
-#define kCPUPercentDisplayPref @"CPUPercentDisplayMode"
-#define kCPUMaxProcessCountPref @"CPUMaxProcessCount"
-#define kCPUGraphLengthPref @"CPUGraphLength"
-#define kCPUHorizontalRowsPref @"CPUHorizontalRows"
-#define kCPUMenuWidthPref @"CPUMenuWidth"
-#define kCPUAvgAllProcsPref @"CPUAverageMultiProcs"
-#define kCPUSumAllProcsPercentPref @"CPUSumAllProcsPercent"
+extern NSString *kCPUIntervalPref;
+extern NSString *kCPUDisplayModePref;
+extern NSString *kCPUPercentDisplayPref;
+extern NSString *kCPUMaxProcessCountPref;
+extern NSString *kCPUGraphLengthPref;
+extern NSString *kCPUHorizontalRowsPref;
+extern NSString *kCPUMenuWidthPref;
+extern NSString *kCPUAvgAllProcsPref;
+extern NSString *kCPUSumAllProcsPercentPref;
// Note that "Lower Half" is now reused to show only physical cores
-#define kCPUAvgLowerHalfProcsPref @"CPUAverageLowerHalfProcs"
-#define kCPUSortByUsagePref @"CPUSortByUsage"
-#define kCPUSystemColorPref @"CPUSystemColor"
-#define kCPUUserColorPref @"CPUUserColor"
-#define kCPUPowerMatePref @"CPUPowerMate"
-#define kCPUPowerMateMode @"CPUPowerMateMode"
-#define kCPUShowTemperature @"CPUTemperature"
-#define kCPUTemperatureColor @"CPUTemperatureColor"
-#define kCPUTemperatureSensor @"CPUTemperatureSensor"
-#define kCPUTemperatureSensorDefault @"CPUTemperatureSensorDefault"
-#define kCPUTemperatureUnit @"CPUTemperatureUnit"
+extern NSString *kCPUAvgLowerHalfProcsPref;
+extern NSString *kCPUSortByUsagePref;
+extern NSString *kCPUSystemColorPref;
+extern NSString *kCPUUserColorPref;
+extern NSString *kCPUPowerMatePref;
+extern NSString *kCPUPowerMateMode;
+extern NSString *kCPUShowTemperature;
+extern NSString *kCPUTemperatureColor;
+extern NSString *kCPUTemperatureSensor;
+extern NSString *kCPUTemperatureSensorDefault;
+extern NSString *kCPUTemperatureUnit;
#define kCPUTemperatureUnitCelsius 0
#define kCPUTemperatureUnitFahrenheit 1
// Display modes
@@ -103,9 +103,9 @@ enum {
#define kCPUPowerMateModeDefault kCPUPowerMateGlow
// Timer
-#define kCPUUpdateIntervalMin 0.5f
-#define kCPUUpdateIntervalMax 10.0f
-#define kCPUUpdateIntervalDefault 1.0f
+#define kCPUUpdateIntervalMin 0.5
+#define kCPUUpdateIntervalMax 10.0
+#define kCPUUpdateIntervalDefault 1.0
// Graph display
#define kCPUGraphWidthMin 11
@@ -142,8 +142,8 @@ enum {
// Colors
// Maraschino
-#define kCPUSystemColorDefault [NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:1.0]
+#define kCPUSystemColorDefault [NSColor systemRedColor]
// Midnight blue
-#define kCPUUserColorDefault [NSColor colorWithDeviceRed:0.0 green:0.0 blue:0.5 alpha:1.0]
+#define kCPUUserColorDefault [NSColor systemBlueColor]
// Orange
-#define kCPUTemperatureColorDefault [NSColor colorWithDeviceRed:1.0 green:0.647 blue:0.0 alpha:1.0]
+#define kCPUTemperatureColorDefault [NSColor systemOrangeColor]
diff --git a/Common/MenuMeterCPU.m b/Common/MenuMeterCPU.m
new file mode 100644
index 00000000..d69aa0d0
--- /dev/null
+++ b/Common/MenuMeterCPU.m
@@ -0,0 +1,29 @@
+//
+// MenuMeterCPU.m
+// MenuMeters
+//
+// Created by Georg Seifert on 31.10.21.
+//
+
+// Pref dictionary keys
+NSString *kCPUIntervalPref = @"CPUInterval";
+NSString *kCPUDisplayModePref = @"CPUDisplayMode";
+NSString *kCPUPercentDisplayPref = @"CPUPercentDisplayMode";
+NSString *kCPUMaxProcessCountPref = @"CPUMaxProcessCount";
+NSString *kCPUGraphLengthPref = @"CPUGraphLength";
+NSString *kCPUHorizontalRowsPref = @"CPUHorizontalRows";
+NSString *kCPUMenuWidthPref = @"CPUMenuWidth";
+NSString *kCPUAvgAllProcsPref = @"CPUAverageMultiProcs";
+NSString *kCPUSumAllProcsPercentPref = @"CPUSumAllProcsPercent";
+// Note that "Lower Half" is now reused to show only physical cores
+NSString *kCPUAvgLowerHalfProcsPref = @"CPUAverageLowerHalfProcs";
+NSString *kCPUSortByUsagePref = @"CPUSortByUsage";
+NSString *kCPUSystemColorPref = @"CPUSystemColor";
+NSString *kCPUUserColorPref = @"CPUUserColor";
+NSString *kCPUPowerMatePref = @"CPUPowerMate";
+NSString *kCPUPowerMateMode = @"CPUPowerMateMode";
+NSString *kCPUShowTemperature = @"CPUTemperature";
+NSString *kCPUTemperatureColor = @"CPUTemperatureColor";
+NSString *kCPUTemperatureSensor = @"CPUTemperatureSensor";
+NSString *kCPUTemperatureSensorDefault = @"CPUTemperatureSensorDefault";
+NSString *kCPUTemperatureUnit = @"CPUTemperatureUnit";
diff --git a/Common/MenuMeterDefaults.h b/Common/MenuMeterDefaults.h
index 2c234f13..bb498f5f 100644
--- a/Common/MenuMeterDefaults.h
+++ b/Common/MenuMeterDefaults.h
@@ -38,10 +38,6 @@
+ (MenuMeterDefaults *)sharedMenuMeterDefaults;
-// Pref read/write
-
-- (void)syncWithDisk;
-
// CPU menu prefs
- (double)cpuInterval;
@@ -252,4 +248,8 @@
- (void)saveNetPreferInterface:(NSString *)interface;
+@property (readonly) BOOL tallMenuBar;
+
+@property (assign) float tintPercentage;
+
@end
diff --git a/Common/MenuMeterDefaults.m b/Common/MenuMeterDefaults.m
index 3d0c9742..bd2fde7d 100644
--- a/Common/MenuMeterDefaults.m
+++ b/Common/MenuMeterDefaults.m
@@ -62,7 +62,7 @@ - (void)saveBoolPref:(NSString *)prefName value:(BOOL)value;
- (NSColor *)loadColorPref:(NSString *)prefName defaultValue:(NSColor *)defaultValue;
-- (void)saveColorPref:(NSString *)prefname value:(NSColor *)value;
+- (void)saveColorPref:(NSString *)prefName value:(NSColor *)value;
- (NSString *)loadStringPref:(NSString *)prefName defaultValue:(NSString *)defaultValue;
@@ -76,7 +76,20 @@ - (void)saveStringPref:(NSString *)prefName value:(NSString *)value;
//
///////////////////////////////////////////////////////////////
-@implementation MenuMeterDefaults
+@implementation MenuMeterDefaults {
+ int _cpuDisplayMode;
+ BOOL _cpuAvgAllProcs;
+ int _cpuGraphLength;
+ int _cpuPercentDisplay;
+ BOOL _netThroughput1KBound;
+ BOOL _netThroughputBits;
+ BOOL _netThroughputLabel;
+ int _netDisplayOrientation;
+ BOOL _tallMenuBar;
+}
+
+@synthesize tallMenuBar = _tallMenuBar;
+
#define kMigratedFromRagingMenaceToYujitach @"migratedFromRagingMenaceToYujitach"
+ (void)movePreferencesIfNecessary {
@@ -117,36 +130,53 @@ + (MenuMeterDefaults *)sharedMenuMeterDefaults {
return foo;
}
-- (id)init {
+- (instancetype)init {
// Allow super to init
self = [super init];
if (!self) {
return nil;
}
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetCaches:) name:NSUserDefaultsDidChangeNotification object:NULL];
+ [self resetCaches:self];
+
+ CGFloat menuBarHeight = [[NSApp mainMenu] menuBarHeight];
+ if (menuBarHeight > 23) { // on MacBooks with notch. (TODO: or when "Menu bar size" is set to "large" system preferences?)
+ NSArray *screens = NSScreen.screens;
+ _tallMenuBar = screens.count == 1; // If there is a screen attached, it has its own (small) menu and I can’t distinguish the two right now.
+ }
- // Send on back
return self;
} // init
- (void)dealloc {
- // Save back
- [self syncWithDisk];
-
- // Super do its thing
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
} // dealloc
///////////////////////////////////////////////////////////////
//
-// Pref read/write
+// Cache
//
///////////////////////////////////////////////////////////////
-- (void)syncWithDisk {
-} // syncFromDisk
+- (void)resetCaches:(id)sender {
+ _cpuDisplayMode = -1;
+ _cpuAvgAllProcs = [self loadBoolPref:kCPUAvgAllProcsPref defaultValue:kCPUAvgAllProcsDefault];
+ _cpuGraphLength = -1;
+ _cpuPercentDisplay = -1;
+ _netThroughput1KBound = [self loadBoolPref:kNetThroughput1KBoundPref defaultValue:kNetThroughput1KBoundDefault];
+ _netThroughputBits = [self loadBoolPref:kNetThroughput1KBoundPref defaultValue:kNetThroughput1KBoundDefault];
+ _netThroughputLabel = [self loadBoolPref:kNetThroughputLabelPref defaultValue:kNetThroughputLabelDefault];
+ _netDisplayOrientation = [self loadIntPref:kNetDisplayOrientationPref
+ lowBound:kNetDisplayOrientTxRx
+ highBound:kNetDisplayOrientRxTx
+ defaultValue:kNetDisplayOrientationDefault];
+
+ _tintPercentage = [[NSUserDefaults standardUserDefaults] floatForKey:@"tintPercentage"];
+}
///////////////////////////////////////////////////////////////
//
@@ -162,16 +192,24 @@ - (double)cpuInterval {
} // cpuInterval
- (int)cpuDisplayMode {
- return [self loadBitFlagPref:kCPUDisplayModePref
- validFlags:(kCPUDisplayPercent | kCPUDisplayGraph | kCPUDisplayThermometer | kCPUDisplayHorizontalThermometer)
- defaultValue:kCPUDisplayDefault];
+ if (_cpuDisplayMode > 0) {
+ return _cpuDisplayMode;
+ }
+ _cpuDisplayMode = [self loadBitFlagPref:kCPUDisplayModePref
+ validFlags:(kCPUDisplayPercent | kCPUDisplayGraph | kCPUDisplayThermometer | kCPUDisplayHorizontalThermometer)
+ defaultValue:kCPUDisplayDefault];
+ return _cpuDisplayMode;
} // cpuDisplayMode
- (int)cpuPercentDisplay {
- return [self loadIntPref:kCPUPercentDisplayPref
- lowBound:kCPUPercentDisplayLarge
- highBound:kCPUPercentDisplaySplit
- defaultValue:kCPUPercentDisplayDefault];
+ if (_cpuPercentDisplay >= 0) {
+ return _cpuPercentDisplay;
+ }
+ _cpuPercentDisplay = [self loadIntPref:kCPUPercentDisplayPref
+ lowBound:kCPUPercentDisplayLarge
+ highBound:kCPUPercentDisplaySplit
+ defaultValue:kCPUPercentDisplayDefault];
+ return _cpuPercentDisplay;
} // cpuPercentDisplay
- (int)cpuMaxProcessCount {
@@ -182,10 +220,14 @@ - (int)cpuMaxProcessCount {
} // cpuMaxProcessCount
- (int)cpuGraphLength {
- return [self loadIntPref:kCPUGraphLengthPref
- lowBound:kCPUGraphWidthMin
- highBound:kCPUGraphWidthMax
- defaultValue:kCPUGraphWidthDefault];
+ if (_cpuGraphLength > 0) {
+ return _cpuGraphLength;
+ }
+ _cpuGraphLength = [self loadIntPref:kCPUGraphLengthPref
+ lowBound:kCPUGraphWidthMin
+ highBound:kCPUGraphWidthMax
+ defaultValue:kCPUGraphWidthDefault];
+ return _cpuGraphLength;
} // cpuGraphLength
- (int)cpuHorizontalRows {
@@ -203,7 +245,7 @@ - (int)cpuMenuWidth {
} // cpuMenuWidth
- (BOOL)cpuAvgAllProcs {
- return [self loadBoolPref:kCPUAvgAllProcsPref defaultValue:kCPUAvgAllProcsDefault];
+ return _cpuAvgAllProcs;
} // cpuAvgAllProcs
- (BOOL)cpuSumAllProcsPercent {
@@ -230,10 +272,17 @@ - (int)cpuPowerMateMode {
} // cpuPowerMateMode
- (int)cpuTemperatureUnit {
- return [self loadIntPref:kCPUTemperatureUnit
- lowBound:kCPUTemperatureUnitCelsius
- highBound:kCPUTemperatureUnitFahrenheit
- defaultValue:kCPUTemperatureUnitCelsius];
+ static CFStringRef key = CFSTR("AppleTemperatureUnit");
+ static CFStringRef domain = CFSTR("Apple Global Domain");
+ CFStringRef unit = CFPreferencesCopyValue(key, domain, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+ if (!unit) {
+ return kCPUTemperatureUnitCelsius;
+ }
+ CFComparisonResult result = CFStringCompare(unit, CFSTR("Celsius"), 0);
+ if (unit) {
+ CFRelease(unit);
+ }
+ return result == kCFCompareEqualTo ? kCPUTemperatureUnitCelsius : kCPUTemperatureUnitFahrenheit;
}
- (NSString *)cpuTemperatureSensor {
@@ -523,10 +572,7 @@ - (int)netDisplayMode {
} // netDisplayMode
- (int)netDisplayOrientation {
- return [self loadIntPref:kNetDisplayOrientationPref
- lowBound:kNetDisplayOrientTxRx
- highBound:kNetDisplayOrientRxTx
- defaultValue:kNetDisplayOrientationDefault];
+ return _netDisplayOrientation;
} // netDisplayOrientation
- (int)netScaleMode {
@@ -544,15 +590,15 @@ - (int)netScaleCalc {
} // netScaleCalc
- (BOOL)netThroughputLabel {
- return [self loadBoolPref:kNetThroughputLabelPref defaultValue:kNetThroughputLabelDefault];
+ return _netThroughputLabel;
} // netThroughputLabel
- (BOOL)netThroughput1KBound {
- return [self loadBoolPref:kNetThroughput1KBoundPref defaultValue:kNetThroughput1KBoundDefault];
+ return _netThroughput1KBound;
} // netThroughput1KBound
- (BOOL)netThroughputBits {
- return [self loadBoolPref:kNetThroughputBitsPref defaultValue:kNetThroughputBitsDefault];
+ return _netThroughputBits;
} // netThroughputBits
- (int)netGraphStyle {
@@ -675,9 +721,11 @@ - (int)loadIntPref:(NSString *)prefName lowBound:(int)lowBound
highBound:(int)highBound
defaultValue:(int)defaultValue {
- int returnValue = defaultValue;
- if ([[NSUserDefaults standardUserDefaults] objectForKey:prefName]) {
- returnValue = (int)[[NSUserDefaults standardUserDefaults] integerForKey:prefName];
+ Boolean keyExistsAndHasValidFormat = NO;
+ CFIndex returnValue = CFPreferencesGetAppIntegerValue((__bridge CFStringRef)prefName, kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat);
+
+ if (!keyExistsAndHasValidFormat) {
+ return defaultValue;
}
if (returnValue > highBound || returnValue < lowBound) {
returnValue = defaultValue;
@@ -686,17 +734,20 @@ - (int)loadIntPref:(NSString *)prefName lowBound:(int)lowBound
} // _loadIntPref
-- (void)saveIntPref:(NSString *)prefname value:(int)value {
- [[NSUserDefaults standardUserDefaults] setInteger:value forKey:prefname];
+- (void)saveIntPref:(NSString *)prefName value:(int)value {
+ [[NSUserDefaults standardUserDefaults] setInteger:value forKey:prefName];
} // _saveIntPref
- (int)loadBitFlagPref:(NSString *)prefName validFlags:(int)flags defaultValue:(int)defaultValue {
- if ([[NSUserDefaults standardUserDefaults] objectForKey:prefName]) {
- int returnValue = (int)[[NSUserDefaults standardUserDefaults] integerForKey:prefName];
- if (((returnValue | flags) == flags)) {
- return returnValue;
- }
+ Boolean keyExistsAndHasValidFormat = NO;
+ CFIndex returnValue = CFPreferencesGetAppIntegerValue((__bridge CFStringRef)prefName, kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat);
+
+ if (!keyExistsAndHasValidFormat) {
+ return defaultValue;
+ }
+ if (((returnValue | flags) == flags)) {
+ return (int)returnValue;
}
return defaultValue;
@@ -707,11 +758,9 @@ - (void)saveBitFlagPref:(NSString *)prefName value:(int)value {
} // _saveBitFlagPref
- (BOOL)loadBoolPref:(NSString *)prefName defaultValue:(BOOL)defaultValue {
-
- if ([[NSUserDefaults standardUserDefaults] objectForKey:prefName]) {
- return [[NSUserDefaults standardUserDefaults] boolForKey:prefName];
- }
- return defaultValue;
+ Boolean keyExistsAndHasValidFormat = NO;
+ Boolean result = CFPreferencesGetAppBooleanValue((__bridge CFStringRef)prefName, kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat);
+ return keyExistsAndHasValidFormat ? result : defaultValue;
} // _loadBoolPref
- (void)saveBoolPref:(NSString *)prefName value:(BOOL)value {
diff --git a/Common/MenuMeterDisk.h b/Common/MenuMeterDisk.h
index 0b02d298..42e43aa4 100644
--- a/Common/MenuMeterDisk.h
+++ b/Common/MenuMeterDisk.h
@@ -49,9 +49,9 @@ typedef enum {
#define kDiskSpaceForceBaseTwoPref @"DiskSpaceForceBaseTwo"
// Timer
-#define kDiskUpdateIntervalMin 0.1f
-#define kDiskUpdateIntervalMax 5.0f
-#define kDiskUpdateIntervalDefault 0.3f
+#define kDiskUpdateIntervalMin 0.1
+#define kDiskUpdateIntervalMax 5.0
+#define kDiskUpdateIntervalDefault 0.3
// Image sets
#define kDiskImageSets [NSArray arrayWithObjects:@"Color Arrows", @"Arrows", \
diff --git a/Common/MenuMeterMem.h b/Common/MenuMeterMem.h
index 01837408..d9620c89 100644
--- a/Common/MenuMeterMem.h
+++ b/Common/MenuMeterMem.h
@@ -28,13 +28,13 @@
///////////////////////////////////////////////////////////////
// Widths of the various displays
-#define kMemPieDisplayWidth 17.0f
-#define kMemNumberDisplayShortWidth 20.0f
-#define kMemNumberDisplayLongWidth 26.0f
-#define kMemNumberDisplayExtraLongWidth 34.0f
-#define kMemThermometerDisplayWidth 11.0f
-#define kMemPagingDisplayWidth 17.0f
-#define kMemPagingDisplayGapWidth 4.0f
+#define kMemPieDisplayWidth 17.0
+#define kMemNumberDisplayShortWidth 20.0
+#define kMemNumberDisplayLongWidth 26.0
+#define kMemNumberDisplayExtraLongWidth 34.0
+#define kMemThermometerDisplayWidth 11.0
+#define kMemPagingDisplayWidth 17.0
+#define kMemPagingDisplayGapWidth 4.0
// Menu item indexes
#define kMemUsageInfoMenuIndex 1
diff --git a/Common/MenuMeterNet.h b/Common/MenuMeterNet.h
index a0457635..102b5e78 100644
--- a/Common/MenuMeterNet.h
+++ b/Common/MenuMeterNet.h
@@ -118,8 +118,8 @@ enum {
// Colors
// Moss green
-#define kNetTransmitColorDefault [NSColor colorWithDeviceRed:0.0 green:0.5 blue:0.25 alpha:1.0]
+#define kNetTransmitColorDefault [NSColor systemGreenColor]
// Brick red
-#define kNetReceiveColorDefault [NSColor colorWithDeviceRed:0.5 green:0.0 blue:0.0 alpha:1.0]
+#define kNetReceiveColorDefault [NSColor systemRedColor]
// Light grey
-#define kNetInactiveColorDefault [NSColor darkGrayColor]
+#define kNetInactiveColorDefault [NSColor secondaryLabelColor]
diff --git a/Common/MenuMeterPowerMate.m b/Common/MenuMeterPowerMate.m
index 04e30805..d4826aa0 100644
--- a/Common/MenuMeterPowerMate.m
+++ b/Common/MenuMeterPowerMate.m
@@ -108,7 +108,7 @@ + (BOOL)powermateAttached {
} // powermateAttached
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
diff --git a/Common/MenuMeters.h b/Common/MenuMeters.h
index e0e60c93..862c0138 100644
--- a/Common/MenuMeters.h
+++ b/Common/MenuMeters.h
@@ -90,8 +90,4 @@
//
///////////////////////////////////////////////////////////////
-#define kMenuIndentFormat @" %@"
-#define kMenuDoubleIndentFormat @" %@"
-#define kMenuTripleIndentFormat @" %@"
-
-#define kBorderAlpha 0.8f
+#define kBorderAlpha 0.8
diff --git a/Loc/MenuMeters.ldb/Contents.plist b/Loc/MenuMeters.ldb/Contents.plist
new file mode 100644
index 00000000..16f0dbf0
--- /dev/null
+++ b/Loc/MenuMeters.ldb/Contents.plist
@@ -0,0 +1,3604 @@
+
+
+
+
+ bundles
+
+
+ associated Xcode projects
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLBundleObject
+ errors
+
+ files
+
+
+ attachments
+
+ change date
+ 2021-11-01T09:55:45Z
+ class
+ BLStringsFileObject
+ errors
+
+ flags
+ 0
+ hash
+ 69b42c3fc4ff81c58c108e4da86becb2
+
+ name
+ MenuMetersPref.strings
+ objects
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ MenuMeters
+ errors
+
+ flags
+ 0
+ key
+ 12.title
+ localizations
+
+ de
+ MenuMeters
+ en
+ MenuMeters
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Disk
+ errors
+
+ flags
+ 0
+ key
+ 100.label
+ localizations
+
+ de
+ Festplatte
+ en
+ Disk
+ fi
+ Levy
+ fr
+ Disque
+ it
+ Disco
+ ja
+ ディスク
+ zh-Hans
+ 磁盘
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ CPU
+ errors
+
+ flags
+ 0
+ key
+ 102.label
+ localizations
+
+ de
+ CPU
+ en
+ CPU
+ fi
+ Prosessori
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Memory
+ errors
+
+ flags
+ 0
+ key
+ 103.label
+ localizations
+
+ de
+ Speicher
+ en
+ Memory
+ fi
+ Muisti
+ fr
+ Mémoire
+ it
+ Memoria
+ ja
+ メモリー
+ zh-Hans
+ 内存
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Network
+ errors
+
+ flags
+ 0
+ key
+ 105.label
+ localizations
+
+ de
+ Netzwerk
+ en
+ Network
+ fi
+ Verkko
+ fr
+ Réseau
+ ja
+ ネットワーク
+ zh-Hans
+ 网络
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph
+ errors
+
+ flags
+ 0
+ key
+ IS4-Xc-psg.title
+ localizations
+
+ de
+ Grafik
+ en
+ Graph
+ fi
+ Kuvaaja
+ fr
+ Graphique
+ it
+ Grafico
+ ja
+ グラフ
+ zh-Hans
+ 曲线
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Percentage
+ errors
+
+ flags
+ 0
+ key
+ Jeh-C2-Wwp.title
+ localizations
+
+ de
+ Prozentsatz
+ en
+ Percentage
+ fi
+ Prosenttiluku
+ fr
+ Pourcentage
+ it
+ Percentuale
+ ja
+ パーセント
+ zh-Hans
+ 百分比
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ ImageSet
+ errors
+
+ flags
+ 2
+ key
+ 203.title
+ localizations
+
+ en
+ ImageSet
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Usage Bar
+ errors
+
+ flags
+ 0
+ key
+ 219.title
+ localizations
+
+ de
+ Balken
+ en
+ Usage Bar
+ fi
+ Käyttöpalkki
+ fr
+ Barre d’usage
+ it
+ Barra Uso
+ ja
+ バーグラフ
+ zh-Hans
+ 使用条状图
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Usage Chart
+ errors
+
+ flags
+ 0
+ key
+ 225.title
+ localizations
+
+ de
+ Diagramm
+ en
+ Usage Chart
+ fi
+ Käyttökaavio
+ fr
+ Diagramme
+ it
+ Grafico Uso
+ ja
+ 円グラフ
+ zh-Hans
+ 使用饼图
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Throughput
+ errors
+
+ flags
+ 0
+ key
+ 294.title
+ localizations
+
+ de
+ Durchsatz
+ en
+ Throughput
+ fi
+ Siirtonopeus
+ fr
+ Texte
+ ja
+ スループット
+ zh-Hans
+ 吞吐量
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Arrows
+ errors
+
+ flags
+ 0
+ key
+ 297.title
+ localizations
+
+ de
+ Pfeile
+ en
+ Arrows
+ fi
+ Nuolet
+ fr
+ Flèches
+ it
+ Frecce
+ ja
+ 矢印
+ zh-Hans
+ 箭头
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Arrows and Throughput
+ errors
+
+ flags
+ 0
+ key
+ 299.title
+ localizations
+
+ de
+ Pfeile und Durchsatz
+ en
+ Arrows and Throughput
+ fi
+ Nuolet ja siirtonopeus
+ fr
+ Flèches & Texte
+ it
+ Frecce e Throughput
+ ja
+ 矢印 & スループット
+ zh-Hans
+ 箭头和吞吐量
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph
+ errors
+
+ flags
+ 0
+ key
+ 314.title
+ localizations
+
+ de
+ Grafik
+ en
+ Graph
+ fi
+ Kuvaaja
+ fr
+ Graphique
+ it
+ Grafico
+ ja
+ グラフ
+ zh-Hans
+ 曲线
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Vertical bar
+ errors
+
+ flags
+ 0
+ key
+ r6t-Zl-sS4.title
+ localizations
+
+ de
+ Vertikales Balkendiagramm
+ en
+ Vertical bar
+ fi
+ Pystysuora pylväskaavio
+ fr
+ Barres verticales
+ it
+ Barre verticali
+ ja
+ 垂直レベルメータ
+ zh-Hans
+ 垂直条形图
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Horizontal bar
+ errors
+
+ flags
+ 0
+ key
+ spo-WT-wCm.title
+ localizations
+
+ de
+ Horizontales Balkendiagramm
+ en
+ Horizontal bar
+ fi
+ Vaakasuora pylväskaavio
+ fr
+ Barres horizontales
+ it
+ Barre orizzontali
+ ja
+ 水平レベルメータ
+ zh-Hans
+ 水平条形图
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph and Arrows
+ errors
+
+ flags
+ 0
+ key
+ 363.title
+ localizations
+
+ de
+ Grafik und Pfeile
+ en
+ Graph and Arrows
+ fi
+ Kuvaaja ja nuolet
+ fr
+ Graphique & Flèches
+ it
+ Grafico e Frecce
+ ja
+ グラフ & 矢印
+ zh-Hans
+ 曲线和箭头
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph and Throughput
+ errors
+
+ flags
+ 0
+ key
+ 365.title
+ localizations
+
+ de
+ Grafik und Durchsatz
+ en
+ Graph and Throughput
+ fi
+ Kuvaaja ja siirtonopeus
+ fr
+ Graphique & Texte
+ it
+ Grafico e Throughput
+ ja
+ グラフ & スループット
+ zh-Hans
+ 曲线和吞吐量
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph, Arrows and Throughput
+ errors
+
+ flags
+ 0
+ key
+ 366.title
+ localizations
+
+ de
+ Grafik, Pfeile und Durchsatz
+ en
+ Graph, Arrows and Throughput
+ fi
+ Kuvaaja, nuolet ja siirtonopeus
+ fr
+ Graphique, Flèches & Texte
+ it
+ Grafico, Frecce e Throughput
+ ja
+ グラフ & 矢印 & スループット
+ zh-Hans
+ 曲线、箭头和吞吐量
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Total (large text)
+ errors
+
+ flags
+ 0
+ key
+ 384.title
+ localizations
+
+ de
+ Gesamt (große Schrift)
+ en
+ Total (large text)
+ fi
+ Kokonaisosuus (suuri teksti)
+ fr
+ Total (texte large)
+ it
+ Totale (testo grande)
+ ja
+ 合計 (テキスト大)
+ zh-Hans
+ 合计(大文字)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ User and System (small text)
+ errors
+
+ flags
+ 0
+ key
+ 385.title
+ localizations
+
+ de
+ Benutzer und System (kleine Schrift)
+ en
+ User and System (small text)
+ fi
+ Käyttäjä ja järjestelmä (pieni teksti)
+ fr
+ Utilisateur & Système (texte petit)
+ it
+ Utente e Sistema (testo piccolo)
+ ja
+ ユーザー & システム (テキスト小)
+ zh-Hans
+ 用户和系统(小文字)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Total (medium text)
+ errors
+
+ flags
+ 0
+ key
+ 386.title
+ localizations
+
+ de
+ Gesamt (mittlere Schrift)
+ en
+ Total (medium text)
+ fi
+ Kokonaisosuus (keskikokoinen teksti)
+ fr
+ Total (texte moyen)
+ it
+ Totale (testo medio)
+ ja
+ 合計 (テキスト中)
+ zh-Hans
+ 合计(中文字)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Opposed
+ errors
+
+ flags
+ 0
+ key
+ 404.title
+ localizations
+
+ de
+ Von oben und unten ausgehend
+ en
+ Opposed
+ fi
+ Vastakkainen
+ fr
+ Sens opposé
+ it
+ Opposto
+ ja
+ 上下に
+ zh-Hans
+ 天地
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Standard
+ errors
+
+ flags
+ 0
+ key
+ 406.title
+ localizations
+
+ de
+ Standard
+ en
+ Standard
+ fi
+ Tavallinen
+ ja
+ スタンダード
+ zh-Hans
+ 标准
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Centered
+ errors
+
+ flags
+ 0
+ key
+ 407.title
+ localizations
+
+ de
+ Von der Mitte ausgehend
+ en
+ Centered
+ fi
+ Keskitetty
+ fr
+ Centré
+ it
+ Centrato
+ ja
+ 中央に
+ zh-Hans
+ 居中
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Usage History Graph
+ errors
+
+ flags
+ 0
+ key
+ 472.title
+ localizations
+
+ de
+ Historie als Grafik
+ en
+ Usage History Graph
+ fi
+ Käyttöhistorian kuvaaja
+ fr
+ Historique d’usage
+ it
+ Grafico Cronologia Uso
+ ja
+ ヒストリーグラフ
+ zh-Hans
+ 使用历史曲线
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ pulse
+ errors
+
+ flags
+ 0
+ key
+ 478.title
+ localizations
+
+ de
+ pulsieren
+ en
+ pulse
+ fi
+ pulssina
+ fr
+ clignotant
+ it
+ pulsazione
+ ja
+ パルス
+ zh-Hans
+ 脉搏
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ glow
+ errors
+
+ flags
+ 0
+ key
+ 479.title
+ localizations
+
+ de
+ leuchten
+ en
+ glow
+ fi
+ hohtona
+ fr
+ s’illuminant
+ it
+ luce
+ ja
+ グロー
+ zh-Hans
+ 发光
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Primary (automatic)
+ errors
+
+ flags
+ 0
+ key
+ 487.title
+ localizations
+
+ de
+ Primäre Schnittstelle (automatisch)
+ en
+ Primary (automatic)
+ fi
+ Ensisijainen (automaattinen)
+ fr
+ Primaire (automatique)
+ it
+ Primaria (automatico)
+ ja
+ プライマリ (自動)
+ zh-Hans
+ 主要(自动)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ inverse glow
+ errors
+
+ flags
+ 0
+ key
+ 497.title
+ localizations
+
+ de
+ inverses leuchten
+ en
+ inverse glow
+ fi
+ käänteisenä hohtona
+ fr
+ illumination inversée
+ it
+ luce inversa
+ ja
+ グロー (逆)
+ zh-Hans
+ 反发光
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ inverse pulse
+ errors
+
+ flags
+ 0
+ key
+ 498.title
+ localizations
+
+ de
+ inverses pulsieren
+ en
+ inverse pulse
+ fi
+ käänteisenä pulssina
+ fr
+ clignotement inversé
+ it
+ pulsazione inversa
+ ja
+ パルス (逆)
+ zh-Hans
+ 反脉搏
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ opens the volume
+ errors
+
+ flags
+ 0
+ key
+ 500.title
+ localizations
+
+ de
+ öffnet das Volume
+ en
+ opens the volume
+ fi
+ avaa taltion
+ fr
+ ouvre le volume dans le Finder
+ it
+ apre il volume
+ ja
+ ボリュームを開く
+ zh-Hans
+ 打开宗卷
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ unmounts/ejects the volume
+ errors
+
+ flags
+ 0
+ key
+ 502.title
+ localizations
+
+ de
+ wirft das Volume aus
+ en
+ unmounts/ejects the volume
+ fi
+ poistaa taltion näkyvistä
+ fr
+ démonte et éjecte le volume
+ it
+ smonta/espelle il volume
+ ja
+ アンマウント/取り出し
+ zh-Hans
+ 卸下/推出宗卷
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Used/Free Totals
+ errors
+
+ flags
+ 0
+ key
+ 508.title
+ localizations
+
+ de
+ Benutzt/Frei Summen
+ en
+ Used/Free Totals
+ fi
+ Käytössä/vapaana
+ fr
+ Totaux Utilisée/Libre
+ it
+ Totali Usata/Libera
+ ja
+ 使用量/空き容量の合計
+ zh-Hans
+ 已使用/可用合计
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Interface speed
+ errors
+
+ flags
+ 0
+ key
+ 525.title
+ localizations
+
+ de
+ Schnittstellengeschwindigkeit
+ en
+ Interface speed
+ fi
+ Verkkoliitännän nopeus
+ fr
+ Vitesse du trafic sur l’interface
+ it
+ Velocità Interfaccia
+ ja
+ インターフェース速度
+ zh-Hans
+ 接口速度
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Peak traffic
+ errors
+
+ flags
+ 0
+ key
+ 526.title
+ localizations
+
+ de
+ Größter Durchsatz
+ en
+ Peak traffic
+ fi
+ Siirtonopeuden huippu
+ fr
+ Vitesse max. du trafic
+ it
+ Picco traffico
+ ja
+ トラフィックのピーク
+ zh-Hans
+ 尖峰流量
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Linear
+ errors
+
+ flags
+ 0
+ key
+ 541.title
+ localizations
+
+ de
+ Linear
+ en
+ Linear
+ fi
+ Lineaarinen
+ fr
+ Linéaire
+ it
+ Lineare
+ ja
+ 線状で
+ zh-Hans
+ 线性
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Logarithmic
+ errors
+
+ flags
+ 0
+ key
+ 545.title
+ localizations
+
+ de
+ Logarithmisch
+ en
+ Logarithmic
+ fi
+ Logaritminen
+ fr
+ Logarithmique
+ it
+ Logaritmica
+ ja
+ 対数で
+ zh-Hans
+ 对数
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Cube root
+ errors
+
+ flags
+ 0
+ key
+ 556.title
+ localizations
+
+ de
+ Kubikwurzel
+ en
+ Cube root
+ fi
+ Kuutiojuuri
+ fr
+ Cubique
+ it
+ Radice cubica
+ ja
+ 立方根で
+ zh-Hans
+ 立方根
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Square root
+ errors
+
+ flags
+ 0
+ key
+ 557.title
+ localizations
+
+ de
+ Quadratwurzel
+ en
+ Square root
+ fi
+ Neliöjuuri
+ fr
+ Carrée
+ it
+ Radice quadrata
+ ja
+ 平方根で
+ zh-Hans
+ 平方根
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Transmit/Receive
+ errors
+
+ flags
+ 0
+ key
+ 590.title
+ localizations
+
+ de
+ Senden/Empfangen
+ en
+ Transmit/Receive
+ fi
+ Lähetys/vastaanotto
+ fr
+ Transmission/Réception
+ it
+ Trasmetti/Ricevi
+ ja
+ 送信/受信の順
+ zh-Hans
+ 发送/接收
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Receive/Transmit
+ errors
+
+ flags
+ 0
+ key
+ 592.title
+ localizations
+
+ de
+ Empfangen/Senden
+ en
+ Receive/Transmit
+ fi
+ Vastaanotto/lähetys
+ fr
+ Réception/Transmission
+ it
+ Ricevi/Trasmetti
+ ja
+ 受信/送信の順
+ zh-Hans
+ 接收/发送
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Inverse Opposed
+ errors
+
+ flags
+ 0
+ key
+ 613.title
+ localizations
+
+ de
+ Von unten und oben ausgehend
+ en
+ Inverse Opposed
+ fi
+ Käänteinen vastakkainen
+ fr
+ Opposition inversée
+ it
+ Estremi Invertiti
+ ja
+ 上下逆に
+ zh-Hans
+ 交换天地
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display Disk Activity Menu Meter
+ errors
+
+ flags
+ 0
+ key
+ 1006.title
+ localizations
+
+ de
+ Festplattenaktivität Menu Meter zeigen
+ en
+ Display Disk Activity Menu Meter
+ fi
+ Näytä levyaktiivisuuden Menu Meter
+ fr
+ Afficher le menu d’Activité du disque
+ it
+ Mostra Menu Meter Attività Disco
+ ja
+ ディスクメータを表示
+ zh-Hans
+ 显示磁盘活动菜单仪表
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ x
+ errors
+
+ flags
+ 2
+ key
+ 1007.title
+ localizations
+
+ en
+ x
+ nl
+ Schaalmethode:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Update interval:
+ errors
+
+ flags
+ 0
+ key
+ 1010.title
+ localizations
+
+ de
+ Aktualisierungsintervall
+ en
+ Update interval:
+ fi
+ Päivitysväli:
+ fr
+ Intervalle de mise à jour :
+ it
+ Intervallo Aggiornamento:
+ ja
+ 更新間隔
+ nl
+ OtherViews
+ zh-Hans
+ 更新间隔:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Selecting a volume from the disk menu
+ errors
+
+ flags
+ 0
+ key
+ 1011.title
+ localizations
+
+ de
+ Auswählen eines Volume aus dem Menü
+ en
+ Selecting a volume from the disk menu
+ fi
+ Taltion valinta levyvalikosta
+ fr
+ La sélection d’un volume dans le menu :
+ it
+ Selezionare un volume dal menu disco
+ ja
+ メニューからボリューム選択した時
+ nl
+ Wortel
+ zh-Hans
+ 从磁盘菜单选择宗卷
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ (Holding the Option key will reverse the behavior)
+ errors
+
+ flags
+ 0
+ key
+ 1013.title
+ localizations
+
+ de
+ (Bei gedrückter Optionstaste [⌥] wird das jeweils andere Verhalten aktiv)
+ en
+ (Holding the Option key will reverse the behavior)
+ fi
+ (Optio-näppäimen pohjassa pitäminen valitsee toisen toiminnon)
+ fr
+ (Maintenir la touche Option pour inverser le comportement)
+ it
+ (Mantenendo premuto il tasto Opzione viene invertito il comportamento)
+ ja
+ (Option キーを押すと取り消す事ができます)
+ nl
+ Logarithmisch
+ zh-Hans
+ (按着 Option 键将使动作相反)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display CPU Menu Meter
+ errors
+
+ flags
+ 0
+ key
+ 1014.title
+ localizations
+
+ de
+ CPU Menu Meter zeigen
+ en
+ Display CPU Menu Meter
+ fi
+ Näytä prosessorin Menu Meter
+ fr
+ Afficher le menu CPU
+ it
+ Mostra Menu Meter CPU
+ ja
+ CPU メータを表示
+ nl
+ Linear
+ zh-Hans
+ 显示 CPU 菜单仪表
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Update interval:
+ errors
+
+ flags
+ 0
+ key
+ 1017.title
+ localizations
+
+ de
+ Aktualisierungsintervall
+ en
+ Update interval:
+ fi
+ Päivitysväli:
+ fr
+ Intervalle de mise à jour :
+ it
+ Intervallo Aggiornamento:
+ ja
+ 更新間隔
+ nl
+ OtherViews
+ zh-Hans
+ 更新间隔:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ x
+ errors
+
+ flags
+ 2
+ key
+ 1018.title
+ localizations
+
+ en
+ x
+ nl
+ Oriëntatie weergave:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ User
+ errors
+
+ flags
+ 0
+ key
+ 1019.title
+ localizations
+
+ de
+ Benutzerauslastung
+ en
+ User
+ fi
+ Käyttäjä
+ fr
+ Charge utilisateur
+ it
+ Carico Utente
+ ja
+ ユーザー
+ nl
+ inverse glow
+ zh-Hans
+ 用户载入
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ System
+ errors
+
+ flags
+ 0
+ key
+ 1020.title
+ localizations
+
+ de
+ Systemauslastung
+ en
+ System
+ fi
+ Järjestelmä
+ fr
+ Charge système
+ it
+ Carico Sistema
+ ja
+ システム
+ nl
+ glow
+ zh-Hans
+ 系统载入
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Width
+ errors
+
+ flags
+ 0
+ key
+ 1025.title
+ localizations
+
+ de
+ Breite
+ en
+ Width
+ fi
+ Kuvaajan leveys:
+ fr
+ Largeur du graphique :
+ it
+ Larghezza Grafico:
+ ja
+ 幅
+ nl
+ Niet actief
+ zh-Hans
+ 曲线宽度:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ PowerMate shows CPU usage
+ errors
+
+ flags
+ 0
+ key
+ 1030.title
+ localizations
+
+ de
+ PowerMate zeigt CPU-Benutzung
+ en
+ PowerMate shows CPU usage
+ fi
+ PowerMate näyttää käytön
+ fr
+ Le PowerMate affiche l’usage CPU
+ it
+ PowerMate mostra uso CPU
+ ja
+ PowerMate で CPU 使用表示
+ nl
+ OtherViews
+ zh-Hans
+ PowerMate 显示 CPU 使用情况为
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display Memory Menu Meter
+ errors
+
+ flags
+ 0
+ key
+ 1032.title
+ localizations
+
+ de
+ Speicher Menu Meter zeigen
+ en
+ Display Memory Menu Meter
+ fi
+ Näytä muistin Menu Meter
+ fr
+ Afficher le menu Mémoire
+ it
+ Mostra Menu Meter Memoria
+ ja
+ メモリーメータを表示
+ nl
+ Geschiedenis
+ zh-Hans
+ 显示内存菜单仪表
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ x
+ errors
+
+ flags
+ 2
+ key
+ 1033.title
+ localizations
+
+ en
+ x
+ nl
+ Taartgrafiek
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Update interval:
+ errors
+
+ flags
+ 0
+ key
+ 1035.title
+ localizations
+
+ de
+ Aktualisierungsintervall
+ en
+ Update interval:
+ fi
+ Päivitysväli:
+ fr
+ Intervalle de mise à jour :
+ it
+ Intervallo Aggiornamento:
+ ja
+ 更新間隔
+ zh-Hans
+ 更新间隔:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Show Used/Free labels
+ errors
+
+ flags
+ 0
+ key
+ 1037.title
+ localizations
+
+ de
+ Benutzt/Frei beschriften
+ en
+ Show Used/Free labels
+ fi
+ Näytä Käytössä/vapaana-nimiöt
+ fr
+ Afficher les préfixes (Utilisée/Libre)
+ it
+ Mostra etichette Usata/Libera
+ ja
+ use (使用量)/free (空き容量) のラベルを付ける
+ zh-Hans
+ 显示已使用/可用标签
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Show paging activity indicator
+ errors
+
+ flags
+ 0
+ key
+ 1039.title
+ localizations
+
+ de
+ Ein-/Auslagerungsaktivität zeigen
+ en
+ Show paging activity indicator
+ fi
+ Näytä sivutusaktiivisuuden indikaattori
+ fr
+ Afficher l’indicateur d’activité de la pagination
+ it
+ Mostra indicatore attività di paging
+ ja
+ ページングインジケータを表示
+ zh-Hans
+ 显示分页中活动检视器
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Pagein
+ errors
+
+ flags
+ 0
+ key
+ 1041.title
+ localizations
+
+ de
+ Lesen
+ en
+ Pagein
+ fi
+ Sisäänsivutus
+ it
+ Pagine in entr.
+ ja
+ ページイン
+ zh-Hans
+ 分页输入
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Pageout
+ errors
+
+ flags
+ 0
+ key
+ 1042.title
+ localizations
+
+ de
+ Schreiben
+ en
+ Pageout
+ fi
+ Ulossivutus
+ it
+ Pagine in usc.
+ ja
+ ページアウト
+ nl
+ Toon labels voor vrij / gebruikt
+ zh-Hans
+ 分页输出
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph width:
+ errors
+
+ flags
+ 0
+ key
+ 1044.title
+ localizations
+
+ de
+ Breite
+ en
+ Graph width:
+ fi
+ Kuvaajan leveys:
+ fr
+ Largeur du graphique :
+ it
+ Larghezza Grafico:
+ ja
+ 幅
+ nl
+ Algemeen
+ zh-Hans
+ 曲线宽度:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Active
+ errors
+
+ flags
+ 0
+ key
+ 1047.title
+ localizations
+
+ de
+ Aktiv
+ en
+ Active
+ fi
+ Aktiivinen
+ it
+ Attiva
+ ja
+ アクティブ
+ nl
+ Toon indicatie van ’paging’-activiteit
+ zh-Hans
+ 已激活
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Inactive
+ errors
+
+ flags
+ 0
+ key
+ 1048.title
+ localizations
+
+ de
+ Inaktiv
+ en
+ Inactive
+ fi
+ Epäaktiivinen
+ it
+ Inattiva
+ ja
+ インアクティブ
+ zh-Hans
+ 未激活
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Wired
+ errors
+
+ flags
+ 0
+ key
+ 1049.title
+ localizations
+
+ de
+ Reserviert
+ en
+ Wired
+ fi
+ Lukittu
+ fr
+ Liée
+ ja
+ ワイアード
+ nl
+ Kleuren
+ zh-Hans
+ 联动
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Free
+ errors
+
+ flags
+ 0
+ key
+ 1050.title
+ localizations
+
+ de
+ Frei
+ en
+ Free
+ fi
+ Vapaana
+ fr
+ Libre
+ zh-Hans
+ 可用
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Used
+ errors
+
+ flags
+ 0
+ key
+ 1051.title
+ localizations
+
+ de
+ Benutzt
+ en
+ Used
+ fi
+ Käytetty
+ fr
+ Utilisée
+ zh-Hans
+ 已使用
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ x
+ errors
+
+ flags
+ 2
+ key
+ 1053.title
+ localizations
+
+ en
+ x
+ nl
+ page-in
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display Network Menu Meter
+ errors
+
+ flags
+ 0
+ key
+ 1054.title
+ localizations
+
+ de
+ Netzwerk Menu Meter zeigen
+ en
+ Display Network Menu Meter
+ fi
+ Näytä verkon Menu Meter
+ fr
+ Afficher le menu Réseau
+ it
+ Mostra Menu Meter Network
+ ja
+ ネットワークメータを表示
+ zh-Hans
+ 显示网络菜单仪表
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Update interval:
+ errors
+
+ flags
+ 0
+ key
+ 1056.title
+ localizations
+
+ de
+ Aktualisierungsintervall
+ en
+ Update interval:
+ fi
+ Päivitysväli:
+ fr
+ Intervalle de mise à jour:
+ it
+ Intervallo Aggiornamento:
+ ja
+ 更新間隔
+ nl
+ page-out
+ zh-Hans
+ 更新间隔:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Transmit
+ errors
+
+ flags
+ 0
+ key
+ 1057.title
+ localizations
+
+ de
+ Senden
+ en
+ Transmit
+ fi
+ Lähetys
+ fr
+ Transmission
+ it
+ Trasmetti
+ ja
+ 送信
+ zh-Hans
+ 发送
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Receive
+ errors
+
+ flags
+ 0
+ key
+ 1058.title
+ localizations
+
+ de
+ Empfangen
+ en
+ Receive
+ fi
+ Vastaanotto
+ fr
+ Réception
+ it
+ Ricevi
+ ja
+ 受信
+ zh-Hans
+ 接收
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Show throughput labels (Tx/Rx)
+ errors
+
+ flags
+ 0
+ key
+ 1060.title
+ localizations
+
+ de
+ Durchsatz beschriften (Tx/Rx)
+ en
+ Show throughput labels (Tx/Rx)
+ fi
+ Näytä siirtonopeuden nimiöt (Läh/Vast)
+ fr
+ Afficher les préfixes (Tx/Rx)
+ it
+ Mostra etichette throughput (Tx/Rx)
+ ja
+ out (送信)/in (受信) のラベルを付ける
+ zh-Hans
+ 显示吞吐量标签(发/收)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Ignore values below 1K/s
+ errors
+
+ flags
+ 0
+ key
+ 1061.title
+ localizations
+
+ de
+ Werte unter 1KB/Sek. ignorieren
+ en
+ Ignore values below 1K/s
+ fi
+ Älä huomioi alle 1 kB/s arvoja
+ fr
+ Ignorer les valeurs inférieures à 1Ko/s
+ it
+ Ignora valori sotto 1KB/s
+ ja
+ 1KB/秒以下のスループットを無視
+ nl
+ Grafiekbreedte
+ zh-Hans
+ 忽略低于 1KB/s 的数值
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph style:
+ errors
+
+ flags
+ 0
+ key
+ 1062.title
+ localizations
+
+ de
+ Grafikart
+ en
+ Graph style:
+ fi
+ Kuvaajan tyyli:
+ fr
+ Style du graphique :
+ it
+ Stile grafico:
+ ja
+ 表示タイプ
+ zh-Hans
+ 曲线样式:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Graph width:
+ errors
+
+ flags
+ 0
+ key
+ 1063.title
+ localizations
+
+ de
+ Breite
+ en
+ Graph width:
+ fi
+ Kuvaajan leveys:
+ fr
+ Largeur du graphique :
+ it
+ Larghezza Grafico:
+ ja
+ 幅
+ nl
+ Weergave
+ zh-Hans
+ 曲线宽度:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display prefers interface:
+ errors
+
+ flags
+ 0
+ key
+ 1068.title
+ localizations
+
+ de
+ Angezeigte Schnittstelle
+ en
+ Display prefers interface:
+ fi
+ Näkymän oletusverkkoliitäntä:
+ fr
+ Interface préférée :
+ it
+ Mostra interfaccia preferita:
+ ja
+ インターフェース表示
+ zh-Hans
+ 显示选择的接口:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display scales to:
+ errors
+
+ flags
+ 0
+ key
+ 1071.title
+ localizations
+
+ de
+ Maßstab der Anzeige
+ en
+ Display scales to:
+ fi
+ Näkymän arvoalueen määrää:
+ fr
+ Échelles :
+ it
+ Scala Visualizzazione su:
+ ja
+ 表示内容
+ zh-Hans
+ 显示进位:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display scaling:
+ errors
+
+ flags
+ 0
+ key
+ 1073.title
+ localizations
+
+ de
+ Skalierung der Anzeige
+ en
+ Display scaling:
+ fi
+ Näkymän mittakaava:
+ fr
+ Graduation :
+ it
+ Scala Visualizzazione:
+ ja
+ スケール
+ zh-Hans
+ 显示进位中:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display orientation:
+ errors
+
+ flags
+ 0
+ key
+ 1075.title
+ localizations
+
+ de
+ Anzeigeausrichtung
+ en
+ Display orientation:
+ fi
+ Näkymän suunta:
+ fr
+ Affichage :
+ it
+ Orientamento Visualizzazione:
+ ja
+ 表示方向
+ zh-Hans
+ 显示方向:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Inactive
+ errors
+
+ flags
+ 0
+ key
+ 1077.title
+ localizations
+
+ de
+ Inaktiv
+ en
+ Inactive
+ fi
+ Epäaktiivisuus
+ it
+ Inattivo
+ ja
+ インアクティブ
+ zh-Hans
+ 未激活
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Show bits per second
+ errors
+
+ flags
+ 0
+ key
+ K7W-5f-1U8.title
+ localizations
+
+ de
+ Als Bits/Sek. anzeigen
+ en
+ Show bits per second
+ fi
+ Näytä nopeudet bitteinä sekunnissa
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ About
+ errors
+
+ flags
+ 0
+ key
+ FSw-QC-dn2.label
+ localizations
+
+ de
+ Über
+ en
+ About
+ fi
+ Tietoja
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Check updates now
+ errors
+
+ flags
+ 0
+ key
+ XYi-uP-QCD.title
+ localizations
+
+ de
+ Nach Updates suchen
+ en
+ Check updates now
+ fi
+ Tarkasta päivitykset...
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Automatic update check interval:
+ errors
+
+ flags
+ 0
+ key
+ tug-YR-k7T.title
+ localizations
+
+ de
+ Automatische Updates:
+ en
+ Automatic update check interval:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Never
+ errors
+
+ flags
+ 0
+ key
+ STJ-3R-khe.title
+ localizations
+
+ de
+ Nie
+ en
+ Never
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Once per day
+ errors
+
+ flags
+ 0
+ key
+ lh5-j8-SRe.title
+ localizations
+
+ de
+ Täglich
+ en
+ Once per day
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Once per week
+ errors
+
+ flags
+ 0
+ key
+ LmO-Ij-G7M.title
+ localizations
+
+ de
+ Wöchentlich
+ en
+ Once per week
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Once per month
+ errors
+
+ flags
+ 0
+ key
+ PuG-eZ-jRm.title
+ localizations
+
+ de
+ Monatlich
+ en
+ Once per month
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Show
+ errors
+
+ flags
+ 0
+ key
+ k2d-Cg-pqL.title
+ localizations
+
+ de
+ Zeige:
+ en
+ Show
+ fi
+ Näytä:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ all cores, including hyperthreaded ones
+ errors
+
+ flags
+ 0
+ key
+ vbH-jV-tUr.title
+ localizations
+
+ de
+ alle Kerne, inkl. Hyperthreat
+ en
+ all cores, including hyperthreaded ones
+ fi
+ kaikki ytimet, myös hypersäikeistetyt
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ physical cores only
+ errors
+
+ flags
+ 0
+ key
+ H5f-hN-vQV.title
+ localizations
+
+ de
+ nur pysikalische Kerne
+ en
+ physical cores only
+ fi
+ vain fyysiset ytimet
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ the average of all cores
+ errors
+
+ flags
+ 0
+ key
+ BYT-hf-ygS.title
+ localizations
+
+ de
+ Durchschnitt aller Kerne
+ en
+ the average of all cores
+ fi
+ kaikkien ydinten keskiarvo
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ the sum of all cores
+ errors
+
+ flags
+ 0
+ key
+ 5Lg-aP-TSR.title
+ localizations
+
+ de
+ Summe aller Kerne
+ en
+ the sum of all cores
+ fi
+ kaikkien ydinten summa
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ all cores sorted
+ errors
+
+ flags
+ 0
+ key
+ CG1-40-AVC.title
+ localizations
+
+ de
+ alle Kerne
+ en
+ all cores sorted
+ fi
+ kaikki ytimet lajiteltuina
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Processes to show:
+ errors
+
+ flags
+ 0
+ key
+ rhi-NX-C3L.title
+ localizations
+
+ de
+ Max. Prozesse
+ en
+ Processes to show:
+ fi
+ Näytettävät prosessit:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Rows
+ errors
+
+ flags
+ 0
+ key
+ 1088.title
+ localizations
+
+ de
+ Reihen
+ en
+ Rows
+ fi
+ Vaakarivit:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Width
+ errors
+
+ flags
+ 0
+ key
+ 1117.title
+ localizations
+
+ de
+ Breite
+ en
+ Width
+ fi
+ Vaakaleveys:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ pure black/white
+ errors
+
+ flags
+ 0
+ key
+ ayz-p2-XC5.title
+ localizations
+
+ de
+ Schwarz-Weiß
+ en
+ pure black/white
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ original
+ errors
+
+ flags
+ 0
+ key
+ FPO-Jo-ubG.title
+ localizations
+
+ de
+ Original
+ en
+ original
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Color tint:
+ errors
+
+ flags
+ 0
+ key
+ mAZ-f2-5AJ.title
+ localizations
+
+ de
+ Farbton
+ en
+ Color tint:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Activity monitor:
+ errors
+
+ flags
+ 0
+ key
+ CDM-3t-gon.title
+ localizations
+
+ de
+ Aktivitätsanzeige
+ en
+ Activity monitor:
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Opens specific panes
+ errors
+
+ flags
+ 0
+ key
+ phH-yJ-I6O.title
+ localizations
+
+ de
+ Öffnet entsprechende Kategorien
+ en
+ Opens specific panes
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ (%d)
+ errors
+
+ flags
+ 2
+ key
+ 2NH-iF-l28.title
+ localizations
+
+ en
+ (%d)
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Temperature
+ errors
+
+ flags
+ 0
+ key
+ C4n-F2-kuL.title
+ localizations
+
+ de
+ Temperatur
+ en
+ Temperature
+ fi
+ Lämpötila
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Sensor
+ errors
+
+ flags
+ 0
+ key
+ FHP-25-5gM.title
+ localizations
+
+ de
+ Sensor
+ en
+ Sensor
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Display memory pressure
+ errors
+
+ flags
+ 0
+ key
+ aOw-Lj-aWS.title
+ localizations
+
+ de
+ Speicher Druck anzeigen
+ en
+ Display memory pressure
+ fi
+ Näytä muistin käyttö
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Compressed
+ errors
+
+ flags
+ 0
+ key
+ ex0-hf-q5R.title
+ localizations
+
+ de
+ Komprimiert
+ en
+ Compressed
+ fi
+ Pakattu
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ CPU Temperature
+ errors
+
+ flags
+ 0
+ key
+ fiY-Fv-rRZ.title
+ localizations
+
+ de
+ CPU Temperatur
+ en
+ CPU Temperature
+
+
+
+ old objects
+
+ plist file
+
+
+
+ attachments
+
+ change date
+ 2020-04-10T11:44:03Z
+ class
+ BLStringsFileObject
+ errors
+
+ flags
+ 0
+ hash
+ fb66896aabf0aab35d94439984b80e8d
+
+ name
+ DiskImageSet.strings
+ objects
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for menu abort sheet
+ errors
+
+ flags
+ 0
+ key
+ Menu Extra Could Not Load
+ localizations
+
+ de
+ Menu Extra konnte nicht geladen werden!
+ en
+ Menu Extra Could Not Load
+ fr
+ Chargement de Menu Extra impossible
+ it
+ Impossibile Caricare Menu Extra
+ ja
+ メニューエクストラが読み込めません。
+ nl
+ De Menu-extra kon niet worden geladen
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for menu abort sheet
+ errors
+
+ flags
+ 0
+ key
+ For instructions on enabling third-party menu extras please see the documentation.
+ localizations
+
+ de
+ Bitte folgen Sie der Anleitung zur Aktivierung von „Menu Extras“.
+ en
+ For instructions on enabling third-party menu extras please see the documentation.
+ fr
+ Pour des instructions sur l’activation des extras menus tierces parties, reportez-vous à la documentation.
+ it
+ Per istruzioni su come attivare i menu extra di terze parti vedere la documentazione.
+ ja
+ サードパーティ製のメニューエクストラを利用するにはマニュアルをご覧下さい。
+ nl
+ Raadpleeg de documentatie voor informatie over het mogelijk maken van niet-Apple menu-extra\'s.
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for the disk icon sets
+ errors
+
+ flags
+ 0
+ key
+ Color Arrows
+ localizations
+
+ de
+ Farbige Pfeile
+ en
+ Color Arrows
+ fi
+ Värinuolet
+ fr
+ Flèches de couleurs
+ it
+ Frecce Colorate
+ ja
+ 矢印 (緑/赤)
+ nl
+ Gekleurde pijltjes
+ zh-Hans
+ 彩色箭头
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for the disk icon sets
+ errors
+
+ flags
+ 0
+ key
+ Arrows
+ localizations
+
+ de
+ Pfeile
+ en
+ Arrows
+ fi
+ Nuolet
+ fr
+ Flèches
+ it
+ Frecce
+ ja
+ 矢印
+ nl
+ Pijltjes
+ zh-Hans
+ 箭头
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for the disk icon sets
+ errors
+
+ flags
+ 0
+ key
+ Lights
+ localizations
+
+ de
+ Lämpchen
+ en
+ Lights
+ fi
+ Valot
+ fr
+ Leds
+ it
+ Luci
+ ja
+ ライト
+ nl
+ Lampjes
+ zh-Hans
+ 灯
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for the disk icon sets
+ errors
+
+ flags
+ 0
+ key
+ Aqua Lights
+ localizations
+
+ de
+ „Aqua“-Leuchten
+ en
+ Aqua Lights
+ fi
+ Aqua-valot
+ fr
+ Leds Aqua
+ it
+ Luci Aqua
+ ja
+ アクアライト
+ nl
+ Aqua-lampjes
+ zh-Hans
+ Aqua 灯
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for the disk icon sets
+ errors
+
+ flags
+ 0
+ key
+ Disk Arrows
+ localizations
+
+ de
+ Pfeile auf Festplatte
+ en
+ Disk Arrows
+ fi
+ Levy ja nuolet
+ fr
+ Flèches disque
+ it
+ Frecce Disco
+ ja
+ ディスクに矢印
+ nl
+ Disk-pijltjes
+ zh-Hans
+ 磁盘箭头
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ Strings for the disk icon sets
+ errors
+
+ flags
+ 0
+ key
+ Disk Arrows (large)
+ localizations
+
+ de
+ Große Pfeile auf Festplatte
+ en
+ Disk Arrows (large)
+ fi
+ Levy ja nuolet (suuret)
+ fr
+ Flèches disque (larges)
+ it
+ Frecce Disco (grandi)
+ ja
+ ディスクに矢印 (大)
+ nl
+ Grote disk-pijltjes
+ zh-Hans
+ 磁盘箭头(大)
+
+
+
+ old objects
+
+ plist file
+
+
+
+ flags
+ 0
+ name
+ ../PrefPane
+ naming style
+ 1
+ referencing style
+ 1
+ user name
+ PrefPane
+
+
+ associated Xcode projects
+
+ ../MenuMeters.xcodeproj
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLBundleObject
+ errors
+
+ files
+
+
+ attachments
+
+ change date
+ 2021-11-01T09:55:43Z
+ class
+ BLStringsFileObject
+ errors
+
+ flags
+ 1
+ hash
+ 86b3cc2154ac27470771b87e202ae176
+
+ name
+ Localizable.strings
+ objects
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ No comment provided by engineer.
+ errors
+
+ flags
+ 0
+ key
+ OK, I quit the app and move it
+ localizations
+
+ en
+ OK, I quit the app and move it
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ No comment provided by engineer.
+ errors
+
+ flags
+ 0
+ key
+ Please move the app after downloading it
+ localizations
+
+ en
+ Please move the app after downloading it
+
+
+
+ change date
+ 2001-01-01T00:00:00Z
+ class
+ BLStringKeyObject
+ comment
+ No comment provided by engineer.
+ errors
+
+ flags
+ 0
+ key
+ Please move the app to, say, /Applications, using your mouse/trackpad, not from the command line.
+
+Apple decided that they don’t allow the app to auto-update otherwise.
+
+I am sorry for the inconvenience.
+ localizations
+
+ en
+ Please move the app to, say, /Applications, using your mouse/trackpad, not from the command line.
+
+Apple decided that they don’t allow the app to auto-update otherwise.
+
+I am sorry for the inconvenience.
+
+
+
+ old objects
+
+ plist file
+
+
+
+ flags
+ 0
+ name
+ ../MenuMetersApp
+ naming style
+ 1
+ referencing style
+ 1
+ user name
+ MenuMetersApp
+
+
+ languages
+
+ en
+ it
+ nl
+ zh-Hans
+ ja
+ de
+ fr
+ fi
+
+ preferences
+
+ XcodeAddMissingFiles
+
+ XcodeFileLimit
+ 75
+ XcodeHasFileLimit
+
+ XcodeHasLanguageLimit
+
+ XcodeLanguageLimit
+ 90
+ XcodeRemoveNotMatchingFiles
+
+ autotranslateNewStrings
+
+ compressLocalizationFiles
+
+ deactivateEmptyStrings
+
+ deactivatePlaceholderStrings
+
+ defaultBundleNaming
+ 1
+ defaultBundleReferencing
+ 1
+ embedDictionary
+
+ embedDictionaryGuesses
+
+ importEmptyStrings
+
+ includeInterfacePreview
+
+ markAutotranslatedAsNotChanged
+
+ rescanXcodeProjects
+
+ saveCompressed
+
+ updateXcodeProjects
+
+ valueChangesResetStrings
+
+
+ reference language
+ en
+ version
+ 6
+
+
diff --git a/MenuExtras/MenuMeterCPU/MenuMeterCPUExtra.m b/MenuExtras/MenuMeterCPU/MenuMeterCPUExtra.m
index 7f017b81..b892be6f 100644
--- a/MenuExtras/MenuMeterCPU/MenuMeterCPUExtra.m
+++ b/MenuExtras/MenuMeterCPU/MenuMeterCPUExtra.m
@@ -33,15 +33,15 @@ @interface MenuMeterCPUExtra (PrivateMethods)
// Image renderers
-- (void)renderHistoryGraphIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset;
+- (void)renderHistoryGraphImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset;
-- (void)renderSinglePercentIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset;
+- (void)renderSinglePercentImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset;
-- (void)renderSplitPercentIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset;
+- (void)renderSplitPercentImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset;
-- (void)renderThermometerIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset;
+- (void)renderThermometerImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset;
-- (void)renderHorizontalThermometerIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atX:(float)x andY:(float)y withWidth:(float)width andHeight:(float)height;
+- (void)renderHorizontalThermometerImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atX:(float)x andY:(float)y withWidth:(float)width andHeight:(float)height;
// Timer callbacks
@@ -137,71 +137,72 @@ - (instancetype)init {
// Add processor info which never changes
if ([cpuInfo numberOfCPUs] != 1) {
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kMultiProcessorTitle value:nil table:nil]
- action:nil
- keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kMultiProcessorTitle value:nil table:nil]
+ action:nil
+ keyEquivalent:@""];
}
else {
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kSingleProcessorTitle value:nil table:nil]
- action:nil
- keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kSingleProcessorTitle value:nil table:nil]
+ action:nil
+ keyEquivalent:@""];
}
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [cpuInfo processorDescription]]
- action:nil
- keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:[cpuInfo processorDescription]
+ action:nil
+ keyEquivalent:@""];
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [cpuInfo coreDescription]]
- action:nil
- keyEquivalent:@""];
+ [menuItem setIndentationLevel:1];
+ menuItem = [extraMenu addItemWithTitle:[cpuInfo coreDescription]
+ action:nil
+ keyEquivalent:@""];
[menuItem setEnabled:NO];
-
+ [menuItem setIndentationLevel:1];
// Add uptime title and blank for uptime display
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kUptimeTitle value:nil table:nil]
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kUptimeTitle value:nil table:nil]
action:nil
keyEquivalent:@""];
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[menuItem setEnabled:NO];
// Add task title and blanks for task display
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kTaskThreadTitle value:nil table:nil]
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kTaskThreadTitle value:nil table:nil]
action:nil
keyEquivalent:@""];
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[menuItem setEnabled:NO];
// Add load title and blanks for load display
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kLoadAverageTitle value:nil table:nil]
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kLoadAverageTitle value:nil table:nil]
action:nil
keyEquivalent:@""];
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kCPUPowerLimitStatusTitle value:nil table:nil]
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kCPUPowerLimitStatusTitle value:nil table:nil]
action:nil
keyEquivalent:@""];
[menuItem setEnabled:NO];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[menuItem setEnabled:NO];
// Add top kCPUrocessCountMax most CPU intensive processes
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kProcessTitle value:nil table:nil]
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kProcessTitle value:nil table:nil]
action:nil
keyEquivalent:@""];
[menuItem setEnabled:NO];
// as this list is "static" unfortunately we need all of the kCPUrocessCountMax menu items and hide/show later the un-wanted/wanted ones
for (NSInteger ndx = 0; ndx < kCPUrocessCountMax; ++ndx) {
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[menuItem setEnabled:NO];
}
// And the "Open Process Viewer"/"Open Activity Monitor" and "Open Console" item
[extraMenu addItem:[NSMenuItem separatorItem]];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:[bundle localizedStringForKey:kOpenConsoleTitle value:nil table:nil]
+ menuItem = [extraMenu addItemWithTitle:[bundle localizedStringForKey:kOpenConsoleTitle value:nil table:nil]
action:@selector(openConsole:)
keyEquivalent:@""];
[menuItem setTarget:self];
@@ -212,7 +213,7 @@ - (instancetype)init {
[self configFromPrefs:nil];
// And hand ourself back to SystemUIServer
- NSLog(@"MenuMeterCPU loaded.");
+ MMLog(@"MenuMeterCPU loaded.");
return self;
} // initWithBundle
@@ -226,91 +227,104 @@ - (instancetype)init {
///////////////////////////////////////////////////////////////
- (NSImage *)image {
- [self setupAppearance];
- // Image to render into (and return to view)
- NSImage *currentImage = [[NSImage alloc] initWithSize:NSMakeSize((float)menuWidth, self.height - 1)];
- if (!currentImage)
- return nil;
// Don't render without data
if (![loadHistory count])
return nil;
+ [self setupAppearance];
+
+ NSSize imageSize = NSMakeSize(menuWidth, self.height - 1);
+
uint32_t cpuCount = [cpuInfo numberOfCPUs];
uint32_t stride = [ourPrefs cpuAvgLowerHalfProcs] ? [cpuInfo numberOfCPUs] / [cpuInfo numberOfCores] : 1;
- float renderOffset = 0.0;
- // Horizontal CPU thermometer is handled differently because it has to
- // manage rows and columns in a very different way from normal horizontal
- // layout
- if (![ourPrefs cpuShowTemperature] && [ourPrefs cpuDisplayMode] == 0) {
- [currentImage lockFocus];
- NSAttributedString *cpuString = [[NSAttributedString alloc]
- initWithString:@"CPU"
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSFont monospacedDigitSystemFontOfSize:[NSFont smallSystemFontSize] weight:NSFontWeightRegular],
- NSFontAttributeName, fgMenuThemeColor, NSForegroundColorAttributeName,
- nil]];
- [cpuString drawAtPoint:NSMakePoint(
- kCPULabelOnlyWidth - (float)round([cpuString size].width) - 1,
- (float)(([currentImage size].height - [cpuString size].height) / 2) + self.baselineOffset)];
- [currentImage unlockFocus];
- return currentImage;
- }
- if ([ourPrefs cpuShowTemperature]) {
- [self renderSingleTemperatureIntoImage:currentImage atOffset:renderOffset];
- renderOffset += cpuTemperatureDisplayWidth;
- }
- if ([ourPrefs cpuDisplayMode] & kCPUDisplayHorizontalThermometer) {
- // Calculate the minimum number of columns that will be needed
- uint32_t rowCount = [ourPrefs cpuHorizontalRows];
- // ceil(A/B) for ints is equal (A+B-1)/B
- uint32_t columnCount = (cpuCount + rowCount - 1) / rowCount;
- //((cpuCount - 1) / [ourPrefs cpuHorizontalRows]) + 1;
- // Calculate a column width
- float columnWidth = (menuWidth - 1.0f) / columnCount;
- // Image height
- float imageHeight = (float)([currentImage size].height);
- // Calculate a thermometer height
- float thermometerHeight = ((imageHeight - 2) / rowCount);
- for (uint32_t cpuNum = 0; cpuNum < cpuCount; cpuNum += stride) {
- float xOffset = renderOffset + ((cpuNum / rowCount) * columnWidth) + 1.0;
- float yOffset = (imageHeight -
- (((cpuNum % rowCount) + 1) * thermometerHeight)) -
- 1.0;
- [self renderHorizontalThermometerIntoImage:currentImage forProcessor:cpuNum atX:xOffset andY:yOffset withWidth:columnWidth andHeight:thermometerHeight];
+ BOOL cpuShowTemperature = [ourPrefs cpuShowTemperature];
+ int cpuDisplayMode = [ourPrefs cpuDisplayMode];
+ MenuMeterDefaults *prefs = ourPrefs;
+ // Image to render into (and return to view)
+ NSImage *currentImage = [NSImage imageWithSize:imageSize
+ flipped:NO
+ drawingHandler:^BOOL(NSRect dstRect) {
+ // Horizontal CPU thermometer is handled differently because it has to
+ // manage rows and columns in a very different way from normal horizontal
+ // layout
+ float renderOffset = 0.0;
+ if (!cpuShowTemperature && cpuDisplayMode == 0) {
+ NSDictionary *attributes = @{
+ NSFontAttributeName: [NSFont monospacedDigitSystemFontOfSize:[NSFont smallSystemFontSize] weight:NSFontWeightRegular],
+ NSForegroundColorAttributeName: self->fgMenuThemeColor
+ };
+ NSAttributedString *cpuString = [[NSAttributedString alloc]
+ initWithString:@"CPU"
+ attributes:attributes];
+ NSPoint pos = NSMakePoint(
+ kCPULabelOnlyWidth - round([cpuString size].width) - 1,
+ ((imageSize.height - [cpuString size].height) / 2) + self.baselineOffset);
+ [cpuString drawAtPoint:pos];
+ return YES;
}
- }
- else {
- // Loop by processor
- int cpuDisplayModePrefs = [ourPrefs cpuDisplayMode];
- for (uint32_t cpuNum = 0; cpuNum < cpuCount; cpuNum += stride) {
-
- // Render graph if needed
- if (cpuDisplayModePrefs & kCPUDisplayGraph) {
- [self renderHistoryGraphIntoImage:currentImage forProcessor:cpuNum atOffset:renderOffset];
- // Adjust render offset
- renderOffset += [ourPrefs cpuGraphLength];
+ if (cpuShowTemperature) {
+ [self renderSingleTemperatureImageSize:imageSize atOffset:renderOffset];
+ renderOffset += self->cpuTemperatureDisplayWidth;
+ }
+ if (cpuDisplayMode & kCPUDisplayHorizontalThermometer) {
+ // Calculate the minimum number of columns that will be needed
+ uint32_t rowCount = [prefs cpuHorizontalRows];
+ // ceil(A/B) for ints is equal (A+B-1)/B
+ uint32_t columnCount = (cpuCount + rowCount - 1) / rowCount;
+ //((cpuCount - 1) / [prefs cpuHorizontalRows]) + 1;
+ // Calculate a column width
+ float columnWidth = (self->menuWidth - 1.0) / columnCount;
+ // Image height
+ float imageHeight = (float)imageSize.height;
+ // Calculate a thermometer height
+ float thermometerHeight = ((imageHeight - 2) / rowCount);
+ for (uint32_t cpuNum = 0; cpuNum < cpuCount; cpuNum += stride) {
+ float xOffset = renderOffset + ((cpuNum / rowCount) * columnWidth) + 1.0;
+ float yOffset = (imageHeight -
+ ((cpuNum % rowCount) + 1) * thermometerHeight) -
+ 1.0;
+ [self renderHorizontalThermometerImageSize:imageSize forProcessor:cpuNum atX:xOffset andY:yOffset withWidth:columnWidth andHeight:thermometerHeight];
}
- // Render percent if needed
- if (cpuDisplayModePrefs & kCPUDisplayPercent) {
- if ([ourPrefs cpuPercentDisplay] == kCPUPercentDisplaySplit) {
- [self renderSplitPercentIntoImage:currentImage forProcessor:cpuNum atOffset:renderOffset];
+ }
+ else {
+ // Loop by processor
+ int cpuDisplayModePrefs = [prefs cpuDisplayMode];
+ for (uint32_t cpuNum = 0; cpuNum < cpuCount; cpuNum += stride) {
+
+ // Render graph if needed
+ if (cpuDisplayModePrefs & kCPUDisplayGraph) {
+ [self renderHistoryGraphImageSize:imageSize forProcessor:cpuNum atOffset:renderOffset];
+ // Adjust render offset
+ renderOffset += [prefs cpuGraphLength];
}
- else {
- [self renderSinglePercentIntoImage:currentImage forProcessor:cpuNum atOffset:renderOffset];
+ // Render percent if needed
+ if (cpuDisplayModePrefs & kCPUDisplayPercent) {
+ if ([prefs cpuPercentDisplay] == kCPUPercentDisplaySplit) {
+ [self renderSplitPercentImageSize:imageSize forProcessor:cpuNum atOffset:renderOffset];
+ }
+ else {
+ [self renderSinglePercentImageSize:imageSize forProcessor:cpuNum atOffset:renderOffset];
+ }
+ renderOffset += self->percentWidth;
}
- renderOffset += percentWidth;
- }
- if (cpuDisplayModePrefs & kCPUDisplayThermometer) {
- [self renderThermometerIntoImage:currentImage forProcessor:cpuNum atOffset:renderOffset];
- renderOffset += kCPUThermometerDisplayWidth;
- }
- // At end of each proc adjust spacing
- renderOffset += kCPUDisplayMultiProcGapWidth;
+ if (cpuDisplayModePrefs & kCPUDisplayThermometer) {
+ [self renderThermometerImageSize:imageSize forProcessor:cpuNum atOffset:renderOffset];
+ renderOffset += kCPUThermometerDisplayWidth;
+ }
+ // At end of each proc adjust spacing
+ renderOffset += kCPUDisplayMultiProcGapWidth;
- // If we're averaging all we're done on first iteration
- if ([ourPrefs cpuAvgAllProcs])
- break;
+ // If we're averaging all we're done on first iteration
+ if ([prefs cpuAvgAllProcs])
+ break;
+ }
}
+ return YES;
+ }];
+
+ if (ourPrefs.tintPercentage > 98) {
+ currentImage.template = YES;
}
// Send it back for the view to render
@@ -321,21 +335,21 @@ - (NSImage *)image {
- (NSMenu *)menu {
// Update the various displays starting with uptime
- NSString *title = [NSString stringWithFormat:kMenuIndentFormat, [uptimeInfo uptime]];
+ NSString *title = [uptimeInfo uptime];
if (title)
LiveUpdateMenuItemTitle(extraMenu, kCPUUptimeInfoMenuIndex, title);
// Tasks
- title = [NSString stringWithFormat:kMenuIndentFormat, [cpuInfo currentProcessorTasks]];
+ title = [cpuInfo currentProcessorTasks];
if (title)
LiveUpdateMenuItemTitle(extraMenu, kCPUTaskInfoMenuIndex, title);
// Load
- title = [NSString stringWithFormat:kMenuIndentFormat, [cpuInfo loadAverage]];
+ title = [cpuInfo loadAverage];
if (title)
LiveUpdateMenuItemTitle(extraMenu, kCPULoadInfoMenuIndex, title);
- title = [NSString stringWithFormat:kMenuIndentFormat, [cpuInfo cpuPowerLimitStatus]];
+ title = [cpuInfo cpuPowerLimitStatus];
if (title)
LiveUpdateMenuItemTitle(extraMenu, kCPUPowerLimitInfoMenuIndex, title);
@@ -346,7 +360,7 @@ - (NSMenu *)menu {
if (ndx < processes.count) {
NSString *name = processes[ndx][kProcessListItemProcessNameKey];
float percent = [processes[ndx][kProcessListItemCPUKey] floatValue];
- title = [NSString stringWithFormat:kMenuIndentFormat, [NSString stringWithFormat:@"%@ (%.1f%%)", name, percent]];
+ title = [NSString stringWithFormat:@"%@ (%.1f%%)", name, percent];
NSMenuItem *mi = [extraMenu itemAtIndex:kCPUProcessMenuIndex + ndx];
mi.title = title;
mi.hidden = title.length == 0;
@@ -376,7 +390,7 @@ - (NSMenu *)menu {
///////////////////////////////////////////////////////////////
//
-// NSMenuDelegate
+// NSMenuDelegate
//
///////////////////////////////////////////////////////////////
@@ -403,7 +417,7 @@ - (void)menuDidClose:(NSMenu *)menu {
//
///////////////////////////////////////////////////////////////
-- (void)renderHistoryGraphIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset {
+- (void)renderHistoryGraphImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset {
// Construct paths
NSBezierPath *systemPath = [NSBezierPath bezierPath];
@@ -416,7 +430,7 @@ - (void)renderHistoryGraphIntoImage:(NSImage *)image forProcessor:(uint32_t)proc
[userPath moveToPoint:NSMakePoint(offset, 0)];
// Loop over pixels in desired width until we're out of data
int renderPosition = 0;
- float renderHeight = (float)[image size].height - 0.5; // Save space for baseline
+ float renderHeight = (float)imageSize.height - 0.5; // Save space for baseline
int cpuGraphLength = [ourPrefs cpuGraphLength];
for (renderPosition = 0; renderPosition < cpuGraphLength; renderPosition++) {
// No data at this position?
@@ -439,34 +453,36 @@ - (void)renderHistoryGraphIntoImage:(NSImage *)image forProcessor:(uint32_t)proc
[systemPath lineToPoint:NSMakePoint(offset + renderPosition - 1, 0)];
// Draw
- [image lockFocus];
[userColor set];
[userPath fill];
[systemColor set];
[systemPath fill];
- // Clean up
- [[NSColor blackColor] set];
- [image unlockFocus];
-
-} // renderHistoryGraphIntoImage:forProcessor:atOffset:
+} // renderHistoryGraphImageSize:forProcessor:atOffset:
- (NSAttributedString *)percentStringForLoad:(float)load andColor:(NSColor *)color {
float fontSize = self.fontSize;
+ if ([cpuInfo numberOfCPUs] > 8) {
+ fontSize -= 2;
+ }
+ NSFont *percentFont = [NSFont monospacedDigitSystemFontOfSize:fontSize weight:NSFontWeightRegular];
+ NSFont *traitFont = [NSFontManager.sharedFontManager convertFont:percentFont toHaveTrait:NSCondensedFontMask];
+ if (traitFont) {
+ percentFont = traitFont;
+ }
NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:fontSize
- weight:NSFontWeightRegular],
+ percentFont,
NSFontAttributeName,
color,
NSForegroundColorAttributeName,
nil];
NSAttributedString *cacheText = [[NSAttributedString alloc]
- initWithString:[NSString stringWithFormat:@"%d%%", (int)roundf(load * 100.0f)]
+ initWithString:[NSString stringWithFormat:@"%d%%", (int)roundf(load * 100.0)]
attributes:textAttributes];
return cacheText;
}
-- (void)renderSinglePercentIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset {
+- (void)renderSinglePercentImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset {
// Current load (if available)
double system = 0, user = 0;
@@ -480,17 +496,16 @@ - (void)renderSinglePercentIntoImage:(NSImage *)image forProcessor:(uint32_t)pro
totalLoad *= [cpuInfo numberOfCPUs];
}
- [image lockFocus];
NSAttributedString *string = [self percentStringForLoad:totalLoad andColor:fgMenuThemeColor];
- [string drawAtPoint:NSMakePoint(offset + percentWidth - ceil([string size].width) - 1,
- (([image size].height - [string size].height) / 2) + self.baselineOffset)];
- [image unlockFocus];
+ NSPoint pos = NSMakePoint(offset + percentWidth - ceil([string size].width) - 1,
+ ((imageSize.height - [string size].height) / 2) + self.baselineOffset);
+ [string drawAtPoint:pos];
-} // renderSinglePercentIntoImage:forProcessor:atOffset:
+} // renderSinglePercentImageSize:forProcessor:atOffset:
-- (void)renderSplitPercentIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset {
+- (void)renderSplitPercentImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset {
- double system, user;
+ double system = 0, user = 0;
[self getCPULoadForCPU:processor atPosition:-1 returnSystem:&system returnUser:&user];
if ((system < 0) || (user < 0)) {
return;
@@ -503,30 +518,36 @@ - (void)renderSplitPercentIntoImage:(NSImage *)image forProcessor:(uint32_t)proc
// Get the prerendered text and draw
NSAttributedString *systemString = [self percentStringForLoad:system andColor:systemColor];
NSAttributedString *userString = [self percentStringForLoad:user andColor:userColor];
- [image lockFocus];
[systemString drawAtPoint:NSMakePoint(offset + percentWidth - [systemString size].width - 1, -1)];
[userString drawAtPoint:NSMakePoint(offset + percentWidth - [userString size].width - 1,
- floor([image size].height / 2) - 1)];
- [image unlockFocus];
+ floor(imageSize.height / 2) - 1)];
} // renderSplitPercentIntoImage:forProcessor:atOffset:
- (NSAttributedString *)renderTemperatureStringForString:(NSString *)temperatureString {
- return [[NSAttributedString alloc]
- initWithString:temperatureString
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSFont monospacedDigitSystemFontOfSize:self.fontSize weight:NSFontWeightRegular],
- NSFontAttributeName, temperatureColor, NSForegroundColorAttributeName,
- nil]];
+ NSFont *temperatureFont = [NSFont monospacedDigitSystemFontOfSize:self.fontSize weight:NSFontWeightRegular];
+ NSFont *traitFont = [NSFontManager.sharedFontManager convertFont:temperatureFont toHaveTrait:NSCondensedFontMask];
+ if (traitFont) {
+ temperatureFont = traitFont;
+ }
+ NSDictionary *attributes = @{
+ NSFontAttributeName: temperatureFont,
+ NSForegroundColorAttributeName: temperatureColor
+ };
+ return [[NSAttributedString alloc] initWithString:temperatureString
+ attributes:attributes];
}
-- (void)renderSingleTemperatureIntoImage:(NSImage *)image atOffset:(float)offset {
+- (void)renderSingleTemperatureImageSize:(NSSize)imageSize atOffset:(float)offset {
float_t celsius = [cpuInfo cpuProximityTemperature];
float_t fahrenheit = celsius * 1.8 + 32;
NSString *temperatureString = @"";
switch ([ourPrefs cpuTemperatureUnit]) {
case kCPUTemperatureUnitCelsius:
- temperatureString = [NSString stringWithFormat:@"%.1f℃", celsius];
- if (celsius < -100) {
+ if (celsius > -100) {
+ temperatureString = [NSString stringWithFormat:@"%d℃", (int)round(celsius)];
+ }
+ else {
temperatureString = @"??℃";
}
break;
@@ -544,47 +565,53 @@ - (void)renderSingleTemperatureIntoImage:(NSImage *)image atOffset:(float)offset
default:
temperatureString = @"???";
}
- [image lockFocus];
+
NSAttributedString *renderTemperatureString = [self renderTemperatureStringForString:temperatureString];
- [renderTemperatureString drawAtPoint:NSMakePoint(
- cpuTemperatureDisplayWidth - round([renderTemperatureString size].width) - 1,
- (([image size].height - [renderTemperatureString size].height) / 2 + self.baselineOffset))];
- [image unlockFocus];
+ NSPoint pos = NSMakePoint(
+ cpuTemperatureDisplayWidth - round([renderTemperatureString size].width) - 3,
+ ((imageSize.height - [renderTemperatureString size].height) / 2 + self.baselineOffset));
+ [renderTemperatureString drawAtPoint:pos];
} // renderSingleTemperatureIntoImage:atOffset:
-- (void)renderThermometerIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atOffset:(float)offset {
+- (void)renderThermometerImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atOffset:(float)offset {
- double system, user;
+ double system = 0, user = 0;
[self getCPULoadForCPU:processor atPosition:-1 returnSystem:&system returnUser:&user];
if ((system < 0) || (user < 0)) {
return;
}
// Paths
- float thermometerTotalHeight = (float)[image size].height - 3.0;
- NSBezierPath *userPath = [NSBezierPath bezierPathWithRect:NSMakeRect(offset + 1.5, 1.5, kCPUThermometerDisplayWidth - 3,
- thermometerTotalHeight * ((user + system) > 1 ? 1 : (user + system)))];
- NSBezierPath *systemPath = [NSBezierPath bezierPathWithRect:NSMakeRect(offset + 1.5, 1.5, kCPUThermometerDisplayWidth - 3,
- thermometerTotalHeight * system)];
- NSBezierPath *framePath = [NSBezierPath bezierPathWithRect:NSMakeRect(offset + 1.5, 1.5, kCPUThermometerDisplayWidth - 3, thermometerTotalHeight)];
+ NSRect thermometerFrame = NSMakeRect(offset, 0, kCPUThermometerDisplayWidth, imageSize.height);
+ if (!ourPrefs.tallMenuBar) {
+ thermometerFrame = NSInsetRect(thermometerFrame, 0, 1);
+ }
+ NSRect userRect = thermometerFrame;
+ userRect.size.height *= (user + system) > 1 ? 1 : (user + system);
+ NSRect systemRect = thermometerFrame;
+ systemRect.size.height *= system;
+
+ NSBezierPath *userPath = [NSBezierPath bezierPathWithRect:userRect];
+ NSBezierPath *systemPath = [NSBezierPath bezierPathWithRect:systemRect];
// Draw
- [image lockFocus];
- [userColor set];
+ NSBezierPath *framePath = [NSBezierPath bezierPathWithRoundedRect:thermometerFrame xRadius:2 yRadius:2];
+ [NSGraphicsContext saveGraphicsState];
+ [framePath addClip];
+ [[fgMenuThemeColor colorWithAlphaComponent:0.2] setFill];
+ [framePath fill];
+
+ [userColor setFill];
[userPath fill];
- [systemColor set];
- [systemPath fill];
- [[fgMenuThemeColor colorWithAlphaComponent:kBorderAlpha] set];
- [framePath stroke];
- // Reset
- [[NSColor blackColor] set];
- [image unlockFocus];
+ [systemColor setFill];
+ [systemPath fill];
+ [NSGraphicsContext restoreGraphicsState];
} // renderThermometerIntoImage:forProcessor:atOffset:
-- (void)renderHorizontalThermometerIntoImage:(NSImage *)image forProcessor:(uint32_t)processor atX:(float)x andY:(float)y withWidth:(float)width andHeight:(float)height {
- double system, user;
+- (void)renderHorizontalThermometerImageSize:(NSSize)imageSize forProcessor:(uint32_t)processor atX:(float)x andY:(float)y withWidth:(float)width andHeight:(float)height {
+ double system = 0, user = 0;
[self getCPULoadForCPU:processor atPosition:-1 returnSystem:&system returnUser:&user];
if ((system < 0) || (user < 0)) {
return;
@@ -598,19 +625,13 @@ - (void)renderHorizontalThermometerIntoImage:(NSImage *)image forProcessor:(uint
NSBezierPath *systemPath = [NSBezierPath bezierPathWithRect:NSMakeRect(x + 1.0, y, (width - 2.0) * system, height - 1.0)];
// Draw
- [image lockFocus];
[userColor set];
[userPath fill];
[systemColor set];
[systemPath fill];
[[fgMenuThemeColor colorWithAlphaComponent:kBorderAlpha] set];
[rightCapPath fill];
-
- // Reset
- [[NSColor blackColor] set];
- [image unlockFocus];
-
-} // renderHorizontalThermometerIntoImage:forProcessor:atX:andY:withWidth:andHeight:
+} // renderHorizontalThermometerImageSize:forProcessor:atX:andY:withWidth:andHeight:
///////////////////////////////////////////////////////////////
//
@@ -722,7 +743,7 @@ - (void)openConsole:(id)sender {
///////////////////////////////////////////////////////////////
- (float)baselineOffset {
- float offset = 1.0;
+ float offset = 0.0;
if ([ourPrefs cpuPercentDisplay] == kCPUPercentDisplaySmall) {
offset = 0.5;
}
@@ -749,9 +770,6 @@ - (void)configFromPrefs:(NSNotification *)notification {
fromPrefs:ourPrefs
withTimerInterval:[ourPrefs cpuInterval]];
#endif
- // Update prefs
- [ourPrefs syncWithDisk];
-
// Handle menubar theme changes
fgMenuThemeColor = self.menuBarTextColor;
@@ -761,30 +779,31 @@ - (void)configFromPrefs:(NSNotification *)notification {
temperatureColor = [self colorByAdjustingForLightDark:[ourPrefs cpuTemperatureColor]];
int numberOfCPUs = [ourPrefs cpuAvgLowerHalfProcs] ? [cpuInfo numberOfCores] : [cpuInfo numberOfCPUs];
-
- if ([ourPrefs cpuDisplayMode] & kCPUDisplayPercent) {
+ int cpuDisplayMode = [ourPrefs cpuDisplayMode];
+ if (cpuDisplayMode & kCPUDisplayPercent) {
// Calc the new width
- NSAttributedString *string = [self percentStringForLoad:[ourPrefs cpuSumAllProcsPercent] ? [cpuInfo numberOfCPUs] : 1.0f
+ NSAttributedString *string = [self percentStringForLoad:[ourPrefs cpuSumAllProcsPercent] ? [cpuInfo numberOfCPUs] : 1.0
andColor:fgMenuThemeColor];
- percentWidth = (float)round([string size].width) + kCPUPercentDisplayBorderWidth;
+ percentWidth = (float)round([string size].width); // + kCPUPercentDisplayBorderWidth;
}
// Fix our menu size to match our new config
menuWidth = 0;
- if ([ourPrefs cpuDisplayMode] & kCPUDisplayHorizontalThermometer) {
+ if (cpuDisplayMode & kCPUDisplayHorizontalThermometer) {
menuWidth = [ourPrefs cpuMenuWidth];
}
else {
- if ([ourPrefs cpuDisplayMode] & kCPUDisplayPercent) {
- menuWidth += (([ourPrefs cpuAvgAllProcs] ? 1 : numberOfCPUs) * percentWidth);
+ BOOL cpuAvgAllProcs = [ourPrefs cpuAvgAllProcs];
+ if (cpuDisplayMode & kCPUDisplayPercent) {
+ menuWidth += ((cpuAvgAllProcs ? 1 : numberOfCPUs) * percentWidth);
}
- if ([ourPrefs cpuDisplayMode] & kCPUDisplayGraph) {
- menuWidth += (([ourPrefs cpuAvgAllProcs] ? 1 : numberOfCPUs) * [ourPrefs cpuGraphLength]);
+ if (cpuDisplayMode & kCPUDisplayGraph) {
+ menuWidth += ((cpuAvgAllProcs ? 1 : numberOfCPUs) * [ourPrefs cpuGraphLength]);
}
- if ([ourPrefs cpuDisplayMode] & kCPUDisplayThermometer) {
- menuWidth += (([ourPrefs cpuAvgAllProcs] ? 1 : numberOfCPUs) * kCPUThermometerDisplayWidth);
+ if (cpuDisplayMode & kCPUDisplayThermometer) {
+ menuWidth += ((cpuAvgAllProcs ? 1 : numberOfCPUs) * kCPUThermometerDisplayWidth);
}
- if (![ourPrefs cpuAvgAllProcs] && (numberOfCPUs > 1)) {
+ if (!cpuAvgAllProcs && (numberOfCPUs > 1)) {
menuWidth += ((numberOfCPUs - 1) * kCPUDisplayMultiProcGapWidth);
}
}
@@ -792,7 +811,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
cpuTemperatureDisplayWidth = 1 + [self renderTemperatureStringForString:@"66.6℃"].size.width;
menuWidth += cpuTemperatureDisplayWidth;
}
- if (![ourPrefs cpuShowTemperature] && [ourPrefs cpuDisplayMode] == 0) {
+ if (![ourPrefs cpuShowTemperature] && cpuDisplayMode == 0) {
menuWidth = kCPULabelOnlyWidth;
}
// Handle PowerMate
@@ -839,8 +858,11 @@ - (void)getCPULoadForCPU:(uint32_t)processor
atPosition:(NSInteger)position
returnSystem:(double *)system
returnUser:(double *)user {
- NSArray *currentLoad = [loadHistory lastObject];
- if (position != -1) {
+ NSArray *currentLoad;
+ if (position < 0) {
+ currentLoad = [loadHistory lastObject];
+ }
+ else {
currentLoad = [loadHistory objectAtIndex:position];
}
if (!currentLoad || ([currentLoad count] < processor)) {
diff --git a/MenuExtras/MenuMeterCPU/MenuMeterCPUStats.m b/MenuExtras/MenuMeterCPU/MenuMeterCPUStats.m
index f89dbec4..e4b2215b 100644
--- a/MenuExtras/MenuMeterCPU/MenuMeterCPUStats.m
+++ b/MenuExtras/MenuMeterCPU/MenuMeterCPUStats.m
@@ -68,7 +68,7 @@ @implementation MenuMeterCPUStats
uint32_t coreCount;
uint32_t packageCount;
-- (id)init {
+- (instancetype)init {
// Allow super to init
self = [super init];
@@ -165,15 +165,11 @@ - (void)dealloc {
///////////////////////////////////////////////////////////////
- (NSString *)cpuName {
-
return cpuName;
-
} // cpuName
- (NSString *)cpuSpeed {
-
return clockSpeed;
-
} // cpuSpeed
- (uint32_t)numberOfCPUs {
@@ -188,9 +184,7 @@ - (NSString *)packages {
if (packageCount == 1) {
return @"";
}
- else {
- return [NSString stringWithFormat:@"%@x ", @(packageCount)];
- }
+ return [NSString stringWithFormat:@"%@x ", @(packageCount)];
}
- (NSString *)processorDescription {
@@ -372,7 +366,7 @@ - (NSString *)cpuPrettyName {
NXArchInfo const *archInfo = NXGetLocalArchInfo();
if (archInfo) {
- s = [s stringByAppendingFormat:@" (%@)", [NSString stringWithCString:archInfo->description]];
+ s = [s stringByAppendingFormat:@" (%s)", archInfo->description];
}
return s;
@@ -428,9 +422,13 @@ - (UInt32)clockFrequency {
const CFDataRef platformClockFrequencyData = (const CFDataRef)platformClockFrequency;
const UInt8 *clockFreqBytes = CFDataGetBytePtr(platformClockFrequencyData);
clockRate = CFSwapInt32BigToHost(*(UInt32 *)(clockFreqBytes)) * 1000;
+ }
+ if (platformClockFrequency) {
CFRelease(platformClockFrequency);
}
- IOObjectRelease(platformExpertDevice);
+ if (platformExpertDevice) {
+ IOObjectRelease(platformExpertDevice);
+ }
}
return clockRate;
diff --git a/MenuExtras/MenuMeterCPU/MenuMeterCPUTopProcesses.m b/MenuExtras/MenuMeterCPU/MenuMeterCPUTopProcesses.m
index e2f22a44..71b8defb 100644
--- a/MenuExtras/MenuMeterCPU/MenuMeterCPUTopProcesses.m
+++ b/MenuExtras/MenuMeterCPU/MenuMeterCPUTopProcesses.m
@@ -26,7 +26,7 @@
///////////////////////////////////////////////////////////////
//
-// Process info item key strings
+// Process info item key strings
//
///////////////////////////////////////////////////////////////
@@ -39,7 +39,7 @@
///////////////////////////////////////////////////////////////
//
-// Private categories
+// Private categories
//
///////////////////////////////////////////////////////////////
diff --git a/MenuExtras/MenuMeterCPU/MenuMeterUptime.m b/MenuExtras/MenuMeterCPU/MenuMeterUptime.m
index d61f6924..16359fae 100644
--- a/MenuExtras/MenuMeterCPU/MenuMeterUptime.m
+++ b/MenuExtras/MenuMeterCPU/MenuMeterUptime.m
@@ -44,7 +44,7 @@
@implementation MenuMeterUptime
-- (id)init {
+- (instancetype)init {
// Allow super to init
self = [super init];
diff --git a/MenuExtras/MenuMeterDisk/MenuMeterDiskExtra.m b/MenuExtras/MenuMeterDisk/MenuMeterDiskExtra.m
index 9aad3cb5..0a958225 100644
--- a/MenuExtras/MenuMeterDisk/MenuMeterDiskExtra.m
+++ b/MenuExtras/MenuMeterDisk/MenuMeterDiskExtra.m
@@ -99,7 +99,7 @@ - (instancetype)init {
displayedActivity = kDiskActivityIdle;
// And hand ourself back to SystemUIServer
- NSLog(@"MenuMeterDisk loaded.");
+ MMLog(@"MenuMeterDisk loaded.");
return self;
} // initWithBundle
@@ -179,7 +179,7 @@ - (NSArray *)diskSpaceMenuItemImages:(NSArray *)driveDetails {
NSDictionary *stringAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
fgMenuThemeColor,
NSForegroundColorAttributeName,
- [NSFont monospacedDigitSystemFontOfSize:11.0f
+ [NSFont monospacedDigitSystemFontOfSize:11.0
weight:NSFontWeightRegular],
NSFontAttributeName,
nil];
@@ -381,9 +381,6 @@ - (void)configFromPrefs:(NSNotification *)notification {
withTimerInterval:[ourPrefs diskInterval]];
#endif
- // Update prefs
- [ourPrefs syncWithDisk];
-
// Handle menubar theme changes
fgMenuThemeColor = self.menuBarTextColor;
@@ -404,6 +401,8 @@ - (void)configFromPrefs:(NSNotification *)notification {
writeImage = nil;
readwriteImage = nil;
+ NSBundle *bundle = [NSBundle mainBundle];
+
// Setup new images as overlays or basic images
float menubarHeight = self.height;
if ([ourPrefs diskImageset] == kDiskArrowsImageSet) {
@@ -418,9 +417,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
[readImage lockFocus];
[bootDiskIcon compositeToPoint:NSMakePoint(0, (menubarHeight - kDiskViewWidth) / 2)
operation:NSCompositeSourceOver];
- [[[NSImage alloc] initWithContentsOfFile:
- [[NSBundle mainBundle] pathForResource:[imageSetNamePrefix stringByAppendingString:@"Read"]
- ofType:@"tiff"]]
+ [[bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"Read"]]
compositeToPoint:NSMakePoint(0, 0)
operation:NSCompositeSourceOver];
[readImage unlockFocus];
@@ -429,9 +426,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
[writeImage lockFocus];
[bootDiskIcon compositeToPoint:NSMakePoint(0, (menubarHeight - kDiskViewWidth) / 2)
operation:NSCompositeSourceOver];
- [[[NSImage alloc] initWithContentsOfFile:
- [[NSBundle mainBundle] pathForResource:[imageSetNamePrefix stringByAppendingString:@"Write"]
- ofType:@"tiff"]]
+ [[bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"Write"]]
compositeToPoint:NSMakePoint(0, 0)
operation:NSCompositeSourceOver];
[writeImage unlockFocus];
@@ -440,9 +435,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
[readwriteImage lockFocus];
[bootDiskIcon compositeToPoint:NSMakePoint(0, (menubarHeight - kDiskViewWidth) / 2)
operation:NSCompositeSourceOver];
- [[[NSImage alloc] initWithContentsOfFile:
- [[NSBundle mainBundle] pathForResource:[imageSetNamePrefix stringByAppendingString:@"ReadWrite"]
- ofType:@"tiff"]]
+ [[bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"ReadWrite"]]
compositeToPoint:NSMakePoint(0, 0)
operation:NSCompositeSourceOver];
[readwriteImage unlockFocus];
@@ -495,18 +488,10 @@ - (void)configFromPrefs:(NSNotification *)notification {
}
else {
// Load the static images
- idleImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle]
- pathForResource:[imageSetNamePrefix stringByAppendingString:@"Idle"]
- ofType:@"tiff"]];
- readImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle]
- pathForResource:[imageSetNamePrefix stringByAppendingString:@"Read"]
- ofType:@"tiff"]];
- writeImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle]
- pathForResource:[imageSetNamePrefix stringByAppendingString:@"Write"]
- ofType:@"tiff"]];
- readwriteImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle]
- pathForResource:[imageSetNamePrefix stringByAppendingString:@"ReadWrite"]
- ofType:@"tiff"]];
+ idleImage = [bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"Idle"]];
+ readImage = [bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"Read"]];
+ writeImage = [bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"Write"]];
+ readwriteImage = [bundle imageForResource:[imageSetNamePrefix stringByAppendingString:@"ReadWrite"]];
}
// Force initial update
diff --git a/MenuExtras/MenuMeterDisk/MenuMeterDiskIO.m b/MenuExtras/MenuMeterDisk/MenuMeterDiskIO.m
index 19d03488..ab4064fb 100644
--- a/MenuExtras/MenuMeterDisk/MenuMeterDiskIO.m
+++ b/MenuExtras/MenuMeterDisk/MenuMeterDiskIO.m
@@ -56,7 +56,7 @@ static void BlockDeviceChanged(void *ref, io_iterator_t iterator) {
@implementation MenuMeterDiskIO
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
diff --git a/MenuExtras/MenuMeterDisk/MenuMeterDiskSpace.m b/MenuExtras/MenuMeterDisk/MenuMeterDiskSpace.m
index 7af5d766..5ab55854 100644
--- a/MenuExtras/MenuMeterDisk/MenuMeterDiskSpace.m
+++ b/MenuExtras/MenuMeterDisk/MenuMeterDiskSpace.m
@@ -61,7 +61,7 @@ static NSComparisonResult SortDiskEntryByDeviceString(NSDictionary *a, NSDiction
@implementation MenuMeterDiskSpace
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
diff --git a/MenuExtras/MenuMeterMem/MenuMeterMemExtra.m b/MenuExtras/MenuMeterMem/MenuMeterMemExtra.m
index c2e67d06..e8809aaf 100644
--- a/MenuExtras/MenuMeterMem/MenuMeterMemExtra.m
+++ b/MenuExtras/MenuMeterMem/MenuMeterMemExtra.m
@@ -37,17 +37,17 @@ - (void)updateMenuContent;
// Image renderers
-- (void)renderPieIntoImage:(NSImage *)image;
+- (void)renderPieImageSize:(NSSize)imageSize;
-- (void)renderNumbersIntoImage:(NSImage *)image;
+- (void)renderNumbersImageSize:(NSSize)imageSize;
-- (void)renderBarIntoImage:(NSImage *)image;
+- (void)renderBarImageSize:(NSSize)imageSize;
-- (void)renderPressureBar:(NSImage *)image;
+- (void)renderPressureBarImageSize:(NSSize)imageSize;
-- (void)renderMemHistoryIntoImage:(NSImage *)image;
+- (void)renderMemHistoryImageSize:(NSSize)imageSize;
-- (void)renderPageIndicatorIntoImage:(NSImage *)image;
+- (void)renderPageIndicatorImageSize:(NSSize)imageSize;
// Timer callbacks
@@ -221,41 +221,50 @@ - (instancetype)init {
///////////////////////////////////////////////////////////////
- (NSImage *)image {
- [self setupAppearance];
-
- // Image to render into (and return to view)
- NSImage *currentImage = [[NSImage alloc] initWithSize:NSMakeSize(menuWidth,
- self.height - 1)];
// Don't render without data
if (![memHistory count])
return nil;
- switch ([ourPrefs memDisplayMode]) {
- case kMemDisplayPie:
- [self renderPieIntoImage:currentImage];
- break;
- case kMemDisplayNumber:
- [self renderNumbersIntoImage:currentImage];
- break;
- case kMemDisplayBar:
- if ([ourPrefs memPressure] == true) {
- [self renderPressureBar:currentImage];
- }
- else {
- [self renderBarIntoImage:currentImage];
- }
- break;
- case kMemDisplayGraph:
- if ([ourPrefs memPressure]) {
- [self renderPressureHistoryIntoImage:currentImage];
- }
- else {
- [self renderMemHistoryIntoImage:currentImage];
- }
- }
- if ([ourPrefs memPageIndicator]) {
- [self renderPageIndicatorIntoImage:currentImage];
+ [self setupAppearance];
+
+ NSSize imageSize = NSMakeSize(menuWidth, self.height - 1);
+ // Image to render into (and return to view)
+ MenuMeterDefaults *prefs = ourPrefs;
+ NSImage *currentImage = [NSImage imageWithSize:imageSize
+ flipped:NO
+ drawingHandler:^BOOL(NSRect dstRect) {
+ switch ([prefs memDisplayMode]) {
+ case kMemDisplayPie:
+ [self renderPieImageSize:imageSize];
+ break;
+ case kMemDisplayNumber:
+ [self renderNumbersImageSize:imageSize];
+ break;
+ case kMemDisplayBar:
+ if ([prefs memPressure]) {
+ [self renderPressureBarImageSize:imageSize];
+ }
+ else {
+ [self renderBarImageSize:imageSize];
+ }
+ break;
+ case kMemDisplayGraph:
+ if ([prefs memPressure]) {
+ [self renderPressureHistoryImageSize:imageSize];
+ }
+ else {
+ [self renderMemHistoryImageSize:imageSize];
+ }
+ }
+ if ([prefs memPageIndicator]) {
+ [self renderPageIndicatorImageSize:imageSize];
+ }
+ return YES;
+ }];
+
+ if (ourPrefs.tintPercentage > 98) {
+ currentImage.template = YES;
}
// Send it back for the view to render
@@ -315,77 +324,66 @@ - (void)updateMenuContent {
return;
// Usage
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kUsageFormat],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"usedmb"]],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"freemb"]],
- [memIntMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"totalmb"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kUsageFormat],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"usedmb"]],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"freemb"]],
+ [memIntMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"totalmb"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemUsageInfoMenuIndex, title);
// Wired
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kActiveWiredFormat],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"activemb"]],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"wiremb"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kActiveWiredFormat],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"activemb"]],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"wiremb"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemActiveWiredInfoMenuIndex, title);
// Inactive/Free
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kInactiveFreeFormat],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"inactivemb"]],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"freepagemb"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kInactiveFreeFormat],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"inactivemb"]],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"freepagemb"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemInactiveFreeInfoMenuIndex, title);
// Compressed
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kCompressedFormat],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"compressedmb"]],
- [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"uncompressedmb"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kCompressedFormat],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"compressedmb"]],
+ [memFloatMBFormatter stringForObjectValue:[currentMemStats objectForKey:@"uncompressedmb"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemCompressedInfoMenuIndex, title);
// VM paging
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kVMPagingFormat],
- [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"pageins"]],
- [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"pageouts"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kVMPagingFormat],
+ [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"pageins"]],
+ [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"pageouts"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemVMPageInfoMenuIndex, title);
// VM cache
const double divisor = [[currentMemStats objectForKey:@"lookups"] doubleValue];
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kVMCacheFormat],
- [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"lookups"]],
- [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"hits"]],
- [percentFormatter stringForObjectValue:
- [NSNumber numberWithDouble:
- divisor == 0.0 ? 0.0 : (double)(([[currentMemStats objectForKey:@"hits"] doubleValue] / divisor) * 100.0)]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kVMCacheFormat],
+ [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"lookups"]],
+ [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"hits"]],
+ [percentFormatter stringForObjectValue:
+ [NSNumber numberWithDouble:
+ divisor == 0.0 ? 0.0 : (double)(([[currentMemStats objectForKey:@"hits"] doubleValue] / divisor) * 100.0)]]];
LiveUpdateMenuItemTitle(extraMenu, kMemVMCacheInfoMenuIndex, title);
// VM fault
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kVMFaultCopyOnWriteFormat],
- [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"faults"]],
- [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"cowfaults"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kVMFaultCopyOnWriteFormat],
+ [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"faults"]],
+ [prettyIntFormatter stringForObjectValue:[currentMemStats objectForKey:@"cowfaults"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemVMFaultInfoMenuIndex, title);
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kMemPressureFormat], [currentMemStats objectForKey:@"mempress"], [currentMemStats objectForKey:@"mempresslevel"]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kMemPressureFormat], [currentMemStats objectForKey:@"mempress"], [currentMemStats objectForKey:@"mempresslevel"]];
LiveUpdateMenuItemTitle(extraMenu, kMemMemPressureInfoMenuIndex, title);
// Swap count/path, Tiger swap encryptioninfo from Michael Nordmeyer (http://goodyworks.com)
if ([[currentSwapStats objectForKey:@"swapencrypted"] boolValue]) {
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:
- (([[currentSwapStats objectForKey:@"swapcount"] unsignedIntValue] != 1) ? [localizedStrings objectForKey:kMultiEncryptedSwapFormat] : [localizedStrings objectForKey:kSingleEncryptedSwapFormat]),
- [prettyIntFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapcount"]],
- [currentSwapStats objectForKey:@"swappath"]]];
+ title = [NSString stringWithFormat:
+ (([[currentSwapStats objectForKey:@"swapcount"] unsignedIntValue] != 1) ? [localizedStrings objectForKey:kMultiEncryptedSwapFormat] : [localizedStrings objectForKey:kSingleEncryptedSwapFormat]),
+ [prettyIntFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapcount"]],
+ [currentSwapStats objectForKey:@"swappath"]];
}
LiveUpdateMenuItemTitle(extraMenu, kMemSwapCountInfoMenuIndex, title);
// Swap max
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:
- (([[currentSwapStats objectForKey:@"swapcountpeak"] unsignedIntValue] != 1) ? [localizedStrings objectForKey:kMaxMultiSwapFormat] : [localizedStrings objectForKey:kMaxSingleSwapFormat]),
- [prettyIntFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapcountpeak"]]]];
+ title = [NSString stringWithFormat:
+ (([[currentSwapStats objectForKey:@"swapcountpeak"] unsignedIntValue] != 1) ? [localizedStrings objectForKey:kMaxMultiSwapFormat] : [localizedStrings objectForKey:kMaxSingleSwapFormat]),
+ [prettyIntFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapcountpeak"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemSwapMaxCountInfoMenuIndex, title);
// Swap size, Tiger swap used path from Michael Nordmeyer (http://goodyworks.com)
- title = [NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kSwapSizeUsedFormat],
- [memIntMBFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapsizemb"]],
- [memIntMBFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapusedmb"]]]];
+ title = [NSString stringWithFormat:[localizedStrings objectForKey:kSwapSizeUsedFormat],
+ [memIntMBFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapsizemb"]],
+ [memIntMBFormatter stringForObjectValue:[currentSwapStats objectForKey:@"swapusedmb"]]];
LiveUpdateMenuItemTitle(extraMenu, kMemSwapSizeInfoMenuIndex, title);
} // updateMenuContent
@@ -396,10 +394,10 @@ - (void)updateMenuContent {
//
///////////////////////////////////////////////////////////////
-- (void)renderPieIntoImage:(NSImage *)image {
+- (void)renderPieImageSize:(NSSize)imageSize {
// Load current stats
- float totalMB = 1.0f, activeMB = 0, inactiveMB = 0, wireMB = 0, compressedMB = 0;
+ float totalMB = 1.0, activeMB = 0, inactiveMB = 0, wireMB = 0, compressedMB = 0;
NSDictionary *currentMemStats = [memHistory objectAtIndex:0];
if (currentMemStats) {
totalMB = [[currentMemStats objectForKey:@"totalmb"] floatValue];
@@ -433,11 +431,10 @@ - (void)renderPieIntoImage:(NSImage *)image {
compressedMB = totalMB;
};
- // Lock focus and draw curves around a center
- [image lockFocus];
+ // Draw curves around a center
NSBezierPath *renderPath = nil;
float totalArc = 0;
- NSPoint pieCenter = NSMakePoint(kMemPieDisplayWidth / 2, [image size].height / 2);
+ NSPoint pieCenter = NSMakePoint(kMemPieDisplayWidth / 2, imageSize.height / 2);
// Draw wired
renderPath = [NSBezierPath bezierPath];
@@ -501,13 +498,9 @@ - (void)renderPieIntoImage:(NSImage *)image {
[renderPath setLineWidth:0.6]; // Lighter line
[renderPath stroke];
}
-
- // Unlock focus
- [image unlockFocus];
-
} // renderPieIntoImage
-- (void)renderNumbersIntoImage:(NSImage *)image {
+- (void)renderNumbersImageSize:(NSSize)imageSize {
// Read in the RAM data
double freeMB = 0, usedMB = 0;
@@ -521,16 +514,13 @@ - (void)renderNumbersIntoImage:(NSImage *)image {
if (usedMB < 0)
usedMB = 0;
- // Lock focus
- [image lockFocus];
-
// Construct strings
NSAttributedString *renderUString = [[NSAttributedString alloc]
initWithString:[NSString stringWithFormat:@"%.0f%@",
usedMB,
[localizedStrings objectForKey:kMBLabel]]
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:9.5f
+ [NSFont monospacedDigitSystemFontOfSize:9.5
weight:NSFontWeightRegular],
NSFontAttributeName,
usedColor, NSForegroundColorAttributeName,
@@ -541,7 +531,7 @@ - (void)renderNumbersIntoImage:(NSImage *)image {
freeMB,
[localizedStrings objectForKey:kMBLabel]]
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:9.5f
+ [NSFont monospacedDigitSystemFontOfSize:9.5
weight:NSFontWeightRegular],
NSFontAttributeName,
freeColor, NSForegroundColorAttributeName,
@@ -554,15 +544,11 @@ - (void)renderNumbersIntoImage:(NSImage *)image {
// Using NSParagraphStyle to right align clipped weird, so do it manually
// No descenders so render lower
[renderUString drawAtPoint:NSMakePoint(textWidth - round([renderUString size].width),
- floor([image size].height / 2) - 1)];
+ floor(imageSize.height / 2) - 1)];
[renderFString drawAtPoint:NSMakePoint(textWidth - round([renderFString size].width), -1)];
-
- // Unlock focus
- [image unlockFocus];
-
} // renderNumbersIntoImage
-- (void)renderPressureBar:(NSImage *)image {
+- (void)renderPressureBarImageSize:(NSSize)imageSize {
// Load current stats
float pressure = 0.2;
NSDictionary *currentMemStats = [memHistory objectAtIndex:0];
@@ -574,32 +560,35 @@ - (void)renderPressureBar:(NSImage *)image {
pressure = 0;
};
- // Lock focus and draw
- [image lockFocus];
- float thermometerTotalHeight = (float)[image size].height - 3.0;
+ // Draw
+ NSRect barFrame = NSMakeRect(0, 0, kMemThermometerDisplayWidth, imageSize.height);
+ if (!ourPrefs.tallMenuBar) {
+ barFrame = NSInsetRect(barFrame, 0, 1);
+ }
+ NSRect pressureRect = barFrame;
+ pressureRect.size.height *= pressure;
- NSBezierPath *pressurePath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3, thermometerTotalHeight * pressure)];
+ NSBezierPath *pressurePath = [NSBezierPath bezierPathWithRect:pressureRect];
- NSBezierPath *framePath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3, thermometerTotalHeight)];
+ NSBezierPath *framePath = [NSBezierPath bezierPathWithRoundedRect:barFrame xRadius:2 yRadius:2];
+
+ [NSGraphicsContext saveGraphicsState];
+ [framePath addClip];
+ [[fgMenuThemeColor colorWithAlphaComponent:0.2] set];
+ [framePath fill];
[activeColor set];
[pressurePath fill];
+ [NSGraphicsContext restoreGraphicsState];
- [[fgMenuThemeColor colorWithAlphaComponent:kBorderAlpha] set];
-
- [framePath stroke];
-
- // Reset
- [[NSColor blackColor] set];
- [image unlockFocus];
}
// Bar mode memory view contributed by Bernhard Baehr
-- (void)renderBarIntoImage:(NSImage *)image {
+- (void)renderBarImageSize:(NSSize)imageSize {
// Load current stats
- float totalMB = 1.0f, activeMB = 0, inactiveMB = 0, wireMB = 0, compressedMB = 0;
+ float totalMB = 1.0, activeMB = 0, inactiveMB = 0, wireMB = 0, compressedMB = 0;
NSDictionary *currentMemStats = [memHistory objectAtIndex:0];
if (currentMemStats) {
totalMB = [[currentMemStats objectForKey:@"totalmb"] floatValue];
@@ -633,19 +622,36 @@ - (void)renderBarIntoImage:(NSImage *)image {
compressedMB = totalMB;
};
- // Lock focus and draw
- [image lockFocus];
- float thermometerTotalHeight = (float)[image size].height - 3.0;
-
- NSBezierPath *wirePath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3,
- thermometerTotalHeight * (wireMB / totalMB))];
- NSBezierPath *activePath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3,
- thermometerTotalHeight * ((wireMB + activeMB) / totalMB))];
- NSBezierPath *compressedPath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3,
- thermometerTotalHeight * ((wireMB + activeMB + compressedMB) / totalMB))];
- NSBezierPath *inactivePath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3,
- thermometerTotalHeight * ((wireMB + activeMB + compressedMB + inactiveMB) / totalMB))];
- NSBezierPath *framePath = [NSBezierPath bezierPathWithRect:NSMakeRect(1.5, 1.5, kMemThermometerDisplayWidth - 3, thermometerTotalHeight)];
+ // Draw
+ NSRect barFrame = NSMakeRect(0, 0, kMemThermometerDisplayWidth, imageSize.height);
+
+ NSRect wireRect = barFrame;
+ wireRect.size.height *= wireMB / totalMB;
+
+ NSRect activeRect = barFrame;
+ activeRect.size.height *= (wireMB + activeMB) / totalMB;
+
+ NSRect compressedRect = barFrame;
+ compressedRect.size.height *= (wireMB + activeMB + compressedMB) / totalMB;
+
+ NSRect inactiveRect = barFrame;
+ inactiveRect.size.height *= (wireMB + activeMB + compressedMB + inactiveMB) / totalMB;
+
+ NSBezierPath *wirePath = [NSBezierPath bezierPathWithRect:wireRect];
+
+ NSBezierPath *activePath = [NSBezierPath bezierPathWithRect:activeRect];
+
+ NSBezierPath *compressedPath = [NSBezierPath bezierPathWithRect:compressedRect];
+
+ NSBezierPath *inactivePath = [NSBezierPath bezierPathWithRect:inactiveRect];
+
+ NSBezierPath *framePath = [NSBezierPath bezierPathWithRoundedRect:barFrame xRadius:2 yRadius:2];
+
+ [NSGraphicsContext saveGraphicsState];
+ [framePath addClip];
+ [[fgMenuThemeColor colorWithAlphaComponent:0.2] set];
+ [framePath fill];
+
[inactiveColor set];
[inactivePath fill];
[compressedColor set];
@@ -654,16 +660,11 @@ - (void)renderBarIntoImage:(NSImage *)image {
[activePath fill];
[wireColor set];
[wirePath fill];
- [[fgMenuThemeColor colorWithAlphaComponent:kBorderAlpha] set];
- [framePath stroke];
-
- // Reset
- [[NSColor blackColor] set];
- [image unlockFocus];
+ [NSGraphicsContext restoreGraphicsState];
} // renderBarIntoImage
-- (void)renderPressureHistoryIntoImage:(NSImage *)image {
+- (void)renderPressureHistoryImageSize:(NSSize)imageSize {
// Construct paths
NSBezierPath *activePath = [NSBezierPath bezierPath];
@@ -675,7 +676,7 @@ - (void)renderPressureHistoryIntoImage:(NSImage *)image {
int renderPosition = 0;
// Graph height does not include baseline, reserve the space for real data
// since memory usage can never be zero.
- float renderHeight = (float)[image size].height;
+ float renderHeight = (float)imageSize.height;
for (renderPosition = 0; renderPosition < [ourPrefs memGraphLength]; renderPosition++) {
// No data at this position?
@@ -703,17 +704,11 @@ - (void)renderPressureHistoryIntoImage:(NSImage *)image {
[activePath lineToPoint:NSMakePoint(renderPosition - 1, 0)];
// Render the graph
- [image lockFocus];
[activeColor set];
[activePath fill];
-
- // Clean up
- [[NSColor blackColor] set];
- [image unlockFocus];
-
} // renderMemHistoryIntoImages
-- (void)renderMemHistoryIntoImage:(NSImage *)image {
+- (void)renderMemHistoryImageSize:(NSSize)imageSize {
// Construct paths
NSBezierPath *wirePath = [NSBezierPath bezierPath];
@@ -733,7 +728,7 @@ - (void)renderMemHistoryIntoImage:(NSImage *)image {
int renderPosition = 0;
// Graph height does not include baseline, reserve the space for real data
// since memory usage can never be zero.
- float renderHeight = (float)[image size].height;
+ float renderHeight = (float)imageSize.height;
for (renderPosition = 0; renderPosition < [ourPrefs memGraphLength]; renderPosition++) {
// No data at this position?
@@ -792,7 +787,6 @@ - (void)renderMemHistoryIntoImage:(NSImage *)image {
[wirePath lineToPoint:NSMakePoint(renderPosition - 1, 0)];
// Render the graph
- [image lockFocus];
[inactiveColor set];
[inactivePath fill];
[compressedColor set];
@@ -801,17 +795,12 @@ - (void)renderMemHistoryIntoImage:(NSImage *)image {
[activePath fill];
[wireColor set];
[wirePath fill];
-
- // Clean up
- [[NSColor blackColor] set];
- [image unlockFocus];
-
} // renderMemHistoryIntoImages
// Paging indicator from Bernhard Baehr. Originally an overlay to the bar display, I liked
// it so much I broke the display out so it could be used with any mode.
-- (void)renderPageIndicatorIntoImage:(NSImage *)image {
+- (void)renderPageIndicatorImageSize:(NSSize)imageSize {
// Read in the paging deltas
uint64_t pageIns = 0, pageOuts = 0;
@@ -821,9 +810,8 @@ - (void)renderPageIndicatorIntoImage:(NSImage *)image {
pageOuts = [[currentMemStats objectForKey:@"deltapageouts"] unsignedLongLongValue];
}
- // Lock focus and get height
- [image lockFocus];
- float indicatorHeight = (float)[image size].height;
+ // Get height
+ float indicatorHeight = imageSize.height;
BOOL darkTheme = self.isDark;
@@ -878,7 +866,7 @@ - (void)renderPageIndicatorIntoImage:(NSImage *)image {
NSAttributedString *renderString = [[NSAttributedString alloc]
initWithString:countString
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:9.5f
+ [NSFont monospacedDigitSystemFontOfSize:9.5
weight:NSFontWeightRegular],
NSFontAttributeName,
fgMenuThemeColor, NSForegroundColorAttributeName,
@@ -887,12 +875,8 @@ - (void)renderPageIndicatorIntoImage:(NSImage *)image {
// Also draw low to ignore descenders
NSSize renderSize = [renderString size];
[renderString drawAtPoint:NSMakePoint(menuWidth - kMemPagingDisplayWidth +
- roundf((kMemPagingDisplayWidth - (float)renderSize.width) / 2.0),
+ round((kMemPagingDisplayWidth - renderSize.width) / 2.0),
4.0)]; // Just hardcode the vertical offset
-
- // Unlock focus
- [image unlockFocus];
-
} // renderPageIndicator
///////////////////////////////////////////////////////////////
@@ -953,9 +937,6 @@ - (void)configFromPrefs:(NSNotification *)notification {
withTimerInterval:[ourPrefs memInterval]];
#endif
- // Update prefs
- [ourPrefs syncWithDisk];
-
// Handle menubar theme changes
fgMenuThemeColor = self.menuBarTextColor;
@@ -978,7 +959,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
value:nil
table:nil]
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:9.5f
+ [NSFont monospacedDigitSystemFontOfSize:9.5
weight:NSFontWeightRegular],
NSFontAttributeName,
usedColor, NSForegroundColorAttributeName,
@@ -989,7 +970,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
value:nil
table:nil]
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:9.5f
+ [NSFont monospacedDigitSystemFontOfSize:9.5
weight:NSFontWeightRegular],
NSFontAttributeName,
freeColor, NSForegroundColorAttributeName,
@@ -1004,7 +985,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
}
[numberLabelPrerender lockFocus];
// No descenders so render both lines lower than normal
- [renderUString drawAtPoint:NSMakePoint(0, (float)floor([numberLabelPrerender size].height / 2) - 1)];
+ [renderUString drawAtPoint:NSMakePoint(0, floor([numberLabelPrerender size].height / 2.0) - 1)];
[renderFString drawAtPoint:NSMakePoint(0, -1)];
[numberLabelPrerender unlockFocus];
@@ -1014,7 +995,7 @@ - (void)configFromPrefs:(NSNotification *)notification {
NSAttributedString *renderMBString = [[NSAttributedString alloc]
initWithString:[localizedStrings objectForKey:kMBLabel]
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSFont monospacedDigitSystemFontOfSize:9.5f
+ [NSFont monospacedDigitSystemFontOfSize:9.5
weight:NSFontWeightRegular],
NSFontAttributeName,
nil]];
diff --git a/MenuExtras/MenuMeterMem/MenuMeterMemStats.m b/MenuExtras/MenuMeterMem/MenuMeterMemStats.m
index 0a0cf8ae..ed8876c8 100644
--- a/MenuExtras/MenuMeterMem/MenuMeterMemStats.m
+++ b/MenuExtras/MenuMeterMem/MenuMeterMemStats.m
@@ -100,7 +100,7 @@ + (void)load {
//
///////////////////////////////////////////////////////////////
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
return nil;
@@ -450,7 +450,6 @@ - (void)initializeSwapPath {
swapPath = kDefaultSwapPath;
swapPrefix = kDefaultSwapPrefix;
}
-
} // initializeSwapPath
- (int)memPressure {
diff --git a/MenuExtras/MenuMeterNet/MenuMeterNetConfig.m b/MenuExtras/MenuMeterNet/MenuMeterNetConfig.m
index adabe1bc..4776e1d2 100644
--- a/MenuExtras/MenuMeterNet/MenuMeterNetConfig.m
+++ b/MenuExtras/MenuMeterNet/MenuMeterNetConfig.m
@@ -63,7 +63,7 @@ static void scChangeCallback(SCDynamicStoreRef store, CFArrayRef changedKeys, vo
@implementation MenuMeterNetConfig
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
@@ -629,7 +629,7 @@ - (NSString *)runCommand:(NSString *)commandToRun {
@"-c",
[NSString stringWithFormat:@"%@", commandToRun],
nil];
- // NSLog(@"run command:%@", commandToRun);
+ // NSLog(@"run command:%@", commandToRun);
[task setArguments:arguments];
NSPipe *pipe = [NSPipe pipe];
@@ -686,16 +686,16 @@ - (NSNumber *)speedForInterfaceNameViaIfConfig:(NSString *)bsdInterface {
if (!bsdInterface)
return [NSNumber numberWithLong:kInterfaceDefaultSpeed];
- NSLog(@"getting the speed for %@", bsdInterface);
+ MMLog(@"getting the speed for %@", bsdInterface);
/* The old way to get the speed via IOKit no longer reliably works, most probably due to the slow move to DriverKit.
The link speed as reported by NetworkUtility.app can also be obtained by ifconfig, whose source code is available at
https://opensource.apple.com/source/network_cmds/network_cmds-596/ifconfig.tproj/
- e.g. for Catalina. Unfortunately the ioctl used there is not exposed in the standard development headers, although you can presumably use it by copying the content of the private headers.
+ e.g. for Catalina. Unfortunately the ioctl used there is not exposed in the standard development headers, although you can presumably use it by copying the content of the private headers.
Here instead I just directly call ifconfig.
*/
NSString *line = [self runCommand:[NSString stringWithFormat:@"ifconfig -v %@ | egrep 'link rate|uplink'", bsdInterface]];
if ([line containsString:@"does not"]) {
- return [NSNumber numberWithLong:0];
+ return [NSNumber numberWithInt:0];
}
NSRange r = [line rangeOfString:@"/"];
if (r.location == NSNotFound) {
@@ -765,7 +765,6 @@ - (NSNumber *)speedForInterfaceNameViaIOKit:(NSString *)bsdInterface {
} // speedForInterfaceName
- (NSDictionary *)sysconfigValueForKey:(NSString *)key {
-
return (NSDictionary *)CFBridgingRelease(SCDynamicStoreCopyValue(scSession, (CFStringRef)key));
} // sysconfigValueForKey
diff --git a/MenuExtras/MenuMeterNet/MenuMeterNetExtra.m b/MenuExtras/MenuMeterNet/MenuMeterNetExtra.m
index a8f1ce56..80ac6ad1 100644
--- a/MenuExtras/MenuMeterNet/MenuMeterNetExtra.m
+++ b/MenuExtras/MenuMeterNet/MenuMeterNetExtra.m
@@ -36,11 +36,11 @@ @interface MenuMeterNetExtra (PrivateMethods)
// Image renderers
-- (void)renderGraphIntoImage:(NSImage *)image;
+- (void)renderGraphImageSize:(NSSize)imageSize;
-- (void)renderActivityIntoImage:(NSImage *)image;
+- (void)renderActivityImageSize:(NSSize)imageSize;
-- (void)renderThroughputIntoImage:(NSImage *)image;
+- (void)renderThroughputImageSize:(NSSize)imageSize;
// Timer callbacks
@@ -72,10 +72,6 @@ - (NSString *)throughputStringForBytesPerSecond:(double)bps;
- (NSString *)throughputStringForBytes:(double)bytes inInterval:(NSTimeInterval)interval;
-- (NSString *)menubarThroughputStringForBytes:(double)bytes inInterval:(NSTimeInterval)interval;
-
-- (NSString *)throughputStringForBytesPerSecond:(double)bps withSpace:(Boolean)wantSpace;
-
- (NSString *)trafficStringForNumber:(NSNumber *)throughputNumber withLabel:(NSString *)directionLabel;
- (NSUInteger)scaleDown:(double *)num usingBase:(NSUInteger)base withLimit:(NSUInteger)limit;
@@ -187,11 +183,11 @@ - (instancetype)init {
// Disable menu autoenabling
[extraMenu setAutoenablesItems:NO];
- // Menu is regenerated in the menu method always so no futher setup
-
- // Set the menu extra view up
-
- throughputFont = [NSFont monospacedDigitSystemFontOfSize:9.5 weight:NSFontWeightRegular];
+ throughputFont = [NSFont monospacedDigitSystemFontOfSize:ourPrefs.tallMenuBar ? 11 : 9.5 weight:NSFontWeightLight];
+ NSFont *traitFont = [NSFontManager.sharedFontManager convertFont:throughputFont toHaveTrait:NSCondensedFontMask];
+ if (traitFont) {
+ throughputFont = traitFont;
+ }
// Set up a NumberFormatter for localization. This is based on code contributed by Mike Fischer
// (mike.fischer at fi-works.de) for use in MenuMeters.
@@ -227,25 +223,32 @@ - (NSImage *)image {
[self setupAppearance];
- // Image to render into (and return to view)
- NSImage *currentImage = [[NSImage alloc] initWithSize:NSMakeSize(menuWidth, self.height - 1)];
- if (!currentImage)
- return nil;
-
// Don't render without data
if (![netHistoryData count])
return nil;
+ // Image to render into (and return to view)
+ NSSize imageSize = NSMakeSize(menuWidth, self.height);
int netDisplayModePrefs = [ourPrefs netDisplayMode];
- // Draw displays
- if (netDisplayModePrefs & kNetDisplayGraph) {
- [self renderGraphIntoImage:currentImage];
- }
- if (netDisplayModePrefs & kNetDisplayArrows) {
- [self renderActivityIntoImage:currentImage];
- }
- if (netDisplayModePrefs & kNetDisplayThroughput) {
- [self renderThroughputIntoImage:currentImage];
+
+ NSImage *currentImage = [NSImage imageWithSize:imageSize
+ flipped:NO
+ drawingHandler:^BOOL(NSRect dstRect) {
+ // Draw displays
+ if (netDisplayModePrefs & kNetDisplayGraph) {
+ [self renderGraphImageSize:imageSize];
+ }
+ if (netDisplayModePrefs & kNetDisplayArrows) {
+ [self renderActivityImageSize:imageSize];
+ }
+ if (netDisplayModePrefs & kNetDisplayThroughput) {
+ [self renderThroughputImageSize:imageSize];
+ }
+ return YES;
+ }];
+
+ if (ourPrefs.tintPercentage > 98) {
+ currentImage.template = YES;
}
// Send it back for the view to render
@@ -303,19 +306,19 @@ - (NSMenu *)menu {
}
else if ([[details objectForKey:@"linkspeed"] doubleValue] > 1000000000) {
speed = [NSString stringWithFormat:@" %.0f %@",
- ([[details objectForKey:@"linkspeed"] doubleValue] / 1000000000),
- [localizedStrings objectForKey:kGbpsLabel]];
+ ([[details objectForKey:@"linkspeed"] doubleValue] / 1000000000),
+ [localizedStrings objectForKey:kGbpsLabel]];
}
else if ([[details objectForKey:@"linkspeed"] doubleValue] > 1000000) {
speed = [NSString stringWithFormat:@" %.0f %@",
- ([[details objectForKey:@"linkspeed"] doubleValue] / 1000000),
- [localizedStrings objectForKey:kMbpsLabel]];
+ ([[details objectForKey:@"linkspeed"] doubleValue] / 1000000),
+ [localizedStrings objectForKey:kMbpsLabel]];
}
else {
speed = [NSString stringWithFormat:@" %@ %@",
- [bytesFormatter stringForObjectValue:
- [NSNumber numberWithDouble:([[details objectForKey:@"linkspeed"] doubleValue] / 1000)]],
- [localizedStrings objectForKey:kKbpsLabel]];
+ [bytesFormatter stringForObjectValue:
+ [NSNumber numberWithDouble:([[details objectForKey:@"linkspeed"] doubleValue] / 1000)]],
+ [localizedStrings objectForKey:kKbpsLabel]];
}
}
// Weird string cat because some of these values may not be present
@@ -325,23 +328,23 @@ - (NSMenu *)menu {
// If there is a PPP name use it too
if ([details objectForKey:@"devicepppname"]) {
interfaceDescription = [NSString stringWithFormat:@"%@ (%@, %@)",
- interfaceDescription,
- [details objectForKey:@"devicename"],
- [details objectForKey:@"devicepppname"]];
+ interfaceDescription,
+ [details objectForKey:@"devicename"],
+ [details objectForKey:@"devicepppname"]];
}
else {
interfaceDescription = [NSString stringWithFormat:@"%@ (%@)",
- interfaceDescription,
- [details objectForKey:@"devicename"]];
+ interfaceDescription,
+ [details objectForKey:@"devicename"]];
}
}
if (speed || [details objectForKey:@"connectiontype"]) {
interfaceDescription = [NSString stringWithFormat:@"%@ -%@%@",
- interfaceDescription,
- ([details objectForKey:@"connectiontype"] ? [NSString stringWithFormat:@" %@", [details objectForKey:@"connectiontype"]] : @""),
- (speed ? speed : @"")];
+ interfaceDescription,
+ ([details objectForKey:@"connectiontype"] ? [NSString stringWithFormat:@" %@", [details objectForKey:@"connectiontype"]] : @""),
+ (speed ? speed : @"")];
}
- NSMenuItem *titleItem = (NSMenuItem *)[extraMenu addItemWithTitle:interfaceDescription action:nil keyEquivalent:@""];
+ NSMenuItem *titleItem = [extraMenu addItemWithTitle:interfaceDescription action:nil keyEquivalent:@""];
// PPP Status
if ([details objectForKey:@"pppstatus"]) {
// PPP is present
@@ -349,22 +352,21 @@ - (NSMenu *)menu {
NSMenuItem *pppStatusItem = nil;
// Use the connection type title for PPP when we can
if ([details objectForKey:@"connectiontype"]) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat,
- [NSString stringWithFormat:@"%@:", [details objectForKey:@"connectiontype"]]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ NSMenuItem *item = [extraMenu addItemWithTitle:[NSString stringWithFormat:@"%@:", [details objectForKey:@"connectiontype"]]
+ action:nil
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
}
else {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [localizedStrings objectForKey:kPPPTitle]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kPPPTitle] action:nil keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
}
switch ([(NSNumber *)[[details objectForKey:@"pppstatus"] objectForKey:@"status"] unsignedIntValue]) {
case PPP_IDLE:
- pppStatusItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [localizedStrings objectForKey:kPPPNoConnectTitle]]
- action:nil
- keyEquivalent:@""];
+ pppStatusItem = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kPPPNoConnectTitle] action:nil keyEquivalent:@""];
+ [pppStatusItem setIndentationLevel:2];
break;
case PPP_INITIALIZE:
case PPP_CONNECTLINK:
@@ -376,10 +378,8 @@ - (NSMenu *)menu {
case PPP_HOLDOFF:
case PPP_ONHOLD:
case PPP_WAITONBUSY:
- pppStatusItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [localizedStrings objectForKey:kPPPConnectingTitle]]
- action:nil
- keyEquivalent:@""];
+ pppStatusItem = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kPPPConnectingTitle] action:nil keyEquivalent:@""];
+ [pppStatusItem setIndentationLevel:2];
break;
case PPP_RUNNING:
if ([[details objectForKey:@"pppstatus"] objectForKey:@"timeElapsed"]) {
@@ -388,25 +388,26 @@ - (NSMenu *)menu {
secs %= (60 * 60);
uint32_t mins = secs / 60;
secs %= 60;
- pppStatusItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:
- [localizedStrings objectForKey:kPPPConnectedWithTimeTitle],
- hours, mins, secs]]
- action:nil
- keyEquivalent:@""];
+ pppStatusItem = [extraMenu addItemWithTitle:[NSString stringWithFormat:
+ [localizedStrings objectForKey:kPPPConnectedWithTimeTitle],
+ hours, mins, secs]
+ action:nil
+ keyEquivalent:@""];
+ [pppStatusItem setIndentationLevel:2];
}
else {
- pppStatusItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat, kPPPConnectedTitle]
- action:nil
- keyEquivalent:@""];
+ pppStatusItem = [extraMenu addItemWithTitle:kPPPConnectedTitle
+ action:nil
+ keyEquivalent:@""];
+ [pppStatusItem setIndentationLevel:2];
}
break;
case PPP_TERMINATE:
case PPP_DISCONNECTLINK:
- pppStatusItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat,
- [localizedStrings objectForKey:kPPPDisconnectingTitle]]
- action:nil
- keyEquivalent:@""];
+ pppStatusItem = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kPPPDisconnectingTitle]
+ action:nil
+ keyEquivalent:@""];
+ [pppStatusItem setIndentationLevel:1];
break;
};
if (pppStatusItem) {
@@ -415,58 +416,66 @@ - (NSMenu *)menu {
}
}
// TCP/IP
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [localizedStrings objectForKey:kTCPIPTitle]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ NSInteger itemIdx = extraMenu.numberOfItems;
+
if ([[details objectForKey:@"ipv4addresses"] count] && [[details objectForKey:@"ipv6addresses"] count]) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat, [localizedStrings objectForKey:kIPv4Title]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kIPv4Title] action:nil keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:2];
NSEnumerator *addressEnum = [[details objectForKey:@"ipv4addresses"] objectEnumerator];
NSString *address = nil;
while ((address = [addressEnum nextObject])) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuTripleIndentFormat, address]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ item = [extraMenu addItemWithTitle:address action:nil keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:3];
}
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat, [localizedStrings objectForKey:kIPv6Title]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kIPv6Title] action:nil keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:2];
addressEnum = [[details objectForKey:@"ipv6addresses"] objectEnumerator];
while ((address = [addressEnum nextObject])) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuTripleIndentFormat, address]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ item = [extraMenu addItemWithTitle:address action:nil keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:3];
}
}
else if ([[details objectForKey:@"ipv4addresses"] count]) {
NSEnumerator *addressEnum = [[details objectForKey:@"ipv4addresses"] objectEnumerator];
NSString *address = nil;
while ((address = [addressEnum nextObject])) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat, address]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ NSMenuItem *item = [extraMenu addItemWithTitle:address action:nil keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:2];
}
}
else {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [localizedStrings objectForKey:kTCPIPInactiveTitle]]
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kTCPIPInactiveTitle]
action:nil
- keyEquivalent:@""] setEnabled:NO];
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:2];
+ itemIdx = -1;
+ }
+ if (itemIdx > 0) {
+ NSMenuItem *item = [extraMenu insertItemWithTitle:[localizedStrings objectForKey:kTCPIPTitle] action:nil keyEquivalent:@"" atIndex:itemIdx];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
}
// AppleTalk
if ([details objectForKey:@"appletalknetid"]) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat,
- [localizedStrings objectForKey:kAppleTalkTitle]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:[localizedStrings objectForKey:kAppleTalkFormat],
- [details objectForKey:@"appletalknetid"],
- [details objectForKey:@"appletalknodeid"],
- [details objectForKey:@"appletalkzone"]]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kAppleTalkTitle]
+ action:nil
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
+ item = [extraMenu addItemWithTitle:[NSString stringWithFormat:[localizedStrings objectForKey:kAppleTalkFormat],
+ [details objectForKey:@"appletalknetid"],
+ [details objectForKey:@"appletalknodeid"],
+ [details objectForKey:@"appletalkzone"]]
+ action:nil
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
}
// Throughput
NSNumber *sampleIntervalNum = [netHistoryIntervals lastObject];
@@ -488,61 +497,67 @@ - (NSMenu *)menu {
NSNumber *throughputOutNumber = [throughputDetails objectForKey:@"deltaout"];
NSNumber *throughputInNumber = [throughputDetails objectForKey:@"deltain"];
if (throughputOutNumber && throughputInNumber) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [localizedStrings objectForKey:kThroughputTitle]]
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kThroughputTitle]
action:nil
- keyEquivalent:@""] setEnabled:NO];
- NSMenuItem *throughputItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:@"%@ %@",
- [localizedStrings objectForKey:kTxLabel],
- [self throughputStringForBytes:[throughputOutNumber doubleValue]
- inInterval:[sampleIntervalNum doubleValue]]]]
- action:nil
- keyEquivalent:@""];
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
+ NSMenuItem *throughputItem = [extraMenu addItemWithTitle:[NSString stringWithFormat:@"%@ %@",
+ [localizedStrings objectForKey:kTxLabel],
+ [self throughputStringForBytes:[throughputOutNumber doubleValue]
+ inInterval:[sampleIntervalNum doubleValue]]]
+ action:nil
+ keyEquivalent:@""];
[throughputItem setEnabled:NO];
+ [throughputItem setIndentationLevel:2];
[interfaceUpdateMenuItems setObject:throughputItem forKey:@"deltaoutitem"];
- throughputItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:@"%@ %@",
- [localizedStrings objectForKey:kRxLabel],
- [self throughputStringForBytes:[throughputInNumber doubleValue]
- inInterval:[sampleIntervalNum doubleValue]]]]
- action:nil
- keyEquivalent:@""];
+ throughputItem = [extraMenu addItemWithTitle:[NSString stringWithFormat:@"%@ %@",
+ [localizedStrings objectForKey:kRxLabel],
+ [self throughputStringForBytes:[throughputInNumber doubleValue]
+ inInterval:[sampleIntervalNum doubleValue]]]
+ action:nil
+ keyEquivalent:@""];
[throughputItem setEnabled:NO];
+ [throughputItem setIndentationLevel:2];
[interfaceUpdateMenuItems setObject:throughputItem forKey:@"deltainitem"];
}
// Add peak throughput
NSNumber *peakNumber = [throughputDetails objectForKey:@"peak"];
if (peakNumber) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [localizedStrings objectForKey:kPeakThroughputTitle]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
- NSMenuItem *peakItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [self throughputStringForBytesPerSecond:[peakNumber doubleValue]]]
- action:nil
- keyEquivalent:@""];
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kPeakThroughputTitle]
+ action:nil
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
+ NSMenuItem *peakItem = [extraMenu addItemWithTitle:[self throughputStringForBytesPerSecond:[peakNumber doubleValue]]
+ action:nil
+ keyEquivalent:@""];
[peakItem setEnabled:NO];
+ [peakItem setIndentationLevel:2];
[interfaceUpdateMenuItems setObject:peakItem forKey:@"peakitem"];
}
// Add traffic totals
throughputOutNumber = [throughputDetails objectForKey:@"totalout"];
throughputInNumber = [throughputDetails objectForKey:@"totalin"];
if (throughputOutNumber && throughputInNumber) {
- [[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuIndentFormat, [localizedStrings objectForKey:kTrafficTotalTitle]]
- action:nil
- keyEquivalent:@""] setEnabled:NO];
- NSMenuItem *totalItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [self trafficStringForNumber:throughputOutNumber
- withLabel:[localizedStrings objectForKey:kTxLabel]]]
- action:nil
- keyEquivalent:@""];
+ NSMenuItem *item = [extraMenu addItemWithTitle:[localizedStrings objectForKey:kTrafficTotalTitle]
+ action:nil
+ keyEquivalent:@""];
+ [item setEnabled:NO];
+ [item setIndentationLevel:1];
+ NSMenuItem *totalItem = [extraMenu addItemWithTitle:[self trafficStringForNumber:throughputOutNumber
+ withLabel:[localizedStrings objectForKey:kTxLabel]]
+ action:nil
+ keyEquivalent:@""];
[totalItem setEnabled:NO];
+ [totalItem setIndentationLevel:2];
[interfaceUpdateMenuItems setObject:totalItem forKey:@"totaloutitem"];
- totalItem = (NSMenuItem *)[extraMenu addItemWithTitle:[NSString stringWithFormat:kMenuDoubleIndentFormat,
- [self trafficStringForNumber:throughputInNumber
- withLabel:[localizedStrings objectForKey:kRxLabel]]]
- action:nil
- keyEquivalent:@""];
+ totalItem = [extraMenu addItemWithTitle:[self trafficStringForNumber:throughputInNumber
+ withLabel:[localizedStrings objectForKey:kRxLabel]]
+ action:nil
+ keyEquivalent:@""];
[totalItem setEnabled:NO];
+ [totalItem setIndentationLevel:2];
[interfaceUpdateMenuItems setObject:totalItem forKey:@"totalinitem"];
}
// Store the name to use in throughput reads for items we will update later
@@ -565,9 +580,9 @@ - (NSMenu *)menu {
NSMenuItem *pppControlItem = nil;
switch ([(NSNumber *)[[details objectForKey:@"pppstatus"] objectForKey:@"status"] unsignedIntValue]) {
case PPP_IDLE:
- pppControlItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kPPPConnectTitle]
- action:@selector(pppConnect:)
- keyEquivalent:@""];
+ pppControlItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kPPPConnectTitle]
+ action:@selector(pppConnect:)
+ keyEquivalent:@""];
break;
case PPP_INITIALIZE:
case PPP_CONNECTLINK:
@@ -580,15 +595,15 @@ - (NSMenu *)menu {
case PPP_ONHOLD:
case PPP_WAITONBUSY:
case PPP_RUNNING:
- pppControlItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kPPPDisconnectTitle]
- action:@selector(pppDisconnect:)
- keyEquivalent:@""];
+ pppControlItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kPPPDisconnectTitle]
+ action:@selector(pppDisconnect:)
+ keyEquivalent:@""];
break;
case PPP_TERMINATE:
case PPP_DISCONNECTLINK:
- pppControlItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kPPPConnectTitle]
- action:@selector(pppConnect:)
- keyEquivalent:@""];
+ pppControlItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kPPPConnectTitle]
+ action:@selector(pppConnect:)
+ keyEquivalent:@""];
break;
};
[pppControlItem setTarget:self];
@@ -599,9 +614,9 @@ - (NSMenu *)menu {
// Add interface selection submenus
BOOL hadInterfaceSelector = NO;
if ([[details objectForKey:@"primary"] boolValue]) {
- NSMenuItem *primarySwitchItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kSelectPrimaryInterfaceTitle]
- action:@selector(switchDisplay:)
- keyEquivalent:@""];
+ NSMenuItem *primarySwitchItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kSelectPrimaryInterfaceTitle]
+ action:@selector(switchDisplay:)
+ keyEquivalent:@""];
[primarySwitchItem setRepresentedObject:kNetPrimaryInterface];
[primarySwitchItem setTarget:self];
if ([[ourPrefs netPreferInterface] isEqualToString:kNetPrimaryInterface]) {
@@ -615,9 +630,9 @@ - (NSMenu *)menu {
// Other choose interface
if ([details objectForKey:@"devicename"]) {
- NSMenuItem *interfaceSwitchItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kSelectInterfaceTitle]
- action:@selector(switchDisplay:)
- keyEquivalent:@""];
+ NSMenuItem *interfaceSwitchItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kSelectInterfaceTitle]
+ action:@selector(switchDisplay:)
+ keyEquivalent:@""];
[interfaceSwitchItem setRepresentedObject:[details objectForKey:@"devicename"]];
[interfaceSwitchItem setTarget:self];
// Disable if this is preferred
@@ -651,9 +666,9 @@ - (NSMenu *)menu {
}
// Copy IP
- NSMenuItem *copyIPItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kCopyIPv4Title]
- action:@selector(copyAddress:)
- keyEquivalent:@""];
+ NSMenuItem *copyIPItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kCopyIPv4Title]
+ action:@selector(copyAddress:)
+ keyEquivalent:@""];
[copyIPItem setTarget:self];
if ([[details objectForKey:@"ipv4addresses"] count]) {
[copyIPItem setRepresentedObject:[details objectForKey:@"ipv4addresses"]];
@@ -662,9 +677,9 @@ - (NSMenu *)menu {
[copyIPItem setEnabled:NO];
}
if ([[details objectForKey:@"ipv6addresses"] count]) {
- copyIPItem = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kCopyIPv6Title]
- action:@selector(copyAddress:)
- keyEquivalent:@""];
+ copyIPItem = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kCopyIPv6Title]
+ action:@selector(copyAddress:)
+ keyEquivalent:@""];
[copyIPItem setTarget:self];
if ([[details objectForKey:@"ipv6addresses"] count]) {
[copyIPItem setRepresentedObject:[details objectForKey:@"ipv6addresses"]];
@@ -674,9 +689,9 @@ - (NSMenu *)menu {
}
}
if ([details objectForKey:@"devicename"]) {
- NSMenuItem *resetTotals = (NSMenuItem *)[interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kResetTrafficTotalsTitle]
- action:@selector(resetTotals:)
- keyEquivalent:@""];
+ NSMenuItem *resetTotals = [interfaceSubmenu addItemWithTitle:[localizedStrings objectForKey:kResetTrafficTotalsTitle]
+ action:@selector(resetTotals:)
+ keyEquivalent:@""];
[resetTotals setTarget:self];
[resetTotals setRepresentedObject:[details objectForKey:@"devicename"]];
}
@@ -715,12 +730,11 @@ - (NSMenu *)menu {
//
///////////////////////////////////////////////////////////////
-- (void)renderGraphIntoImage:(NSImage *)image {
+- (void)renderGraphImageSize:(NSSize)imageSize {
// Cache style and other values for duration of this method
int graphStyle = [ourPrefs netGraphStyle];
BOOL rxOnTop = ([ourPrefs netDisplayOrientation] == kNetDisplayOrientRxTx) ? YES : NO;
- NSSize imageSize = [image size];
float graphHeight = (float)floor((imageSize.height - 1) / 2);
// Graph paths
@@ -909,7 +923,6 @@ - (void)renderGraphIntoImage:(NSImage *)image {
}
// Draw
- [image lockFocus];
if (![preferredInterfaceConfig objectForKey:@"interfaceup"]) {
[inactiveColor set];
[topPath fill];
@@ -929,12 +942,9 @@ - (void)renderGraphIntoImage:(NSImage *)image {
[topPath fill];
}
}
- [[NSColor blackColor] set];
- [image unlockFocus];
-
} // renderGraphIntoImage
-- (void)renderActivityIntoImage:(NSImage *)image {
+- (void)renderActivityImageSize:(NSSize)imageSize {
// Get scale (scale is based on latest primary data, not historical)
float scaleFactor = 0;
@@ -1016,8 +1026,7 @@ - (void)renderActivityIntoImage:(NSImage *)image {
rxValue = 0;
}
- // Lock on image and draw
- [image lockFocus];
+ // Draw
if ([[preferredInterfaceConfig objectForKey:@"interfaceup"] boolValue]) {
if ([ourPrefs netDisplayOrientation] == kNetDisplayOrientRxTx) {
[[rxColor colorWithAlphaComponent:rxValue] set];
@@ -1045,14 +1054,9 @@ - (void)renderActivityIntoImage:(NSImage *)image {
[upArrow stroke];
[downArrow stroke];
}
-
- // Reset color and unlock
- [[NSColor blackColor] set];
- [image unlockFocus];
-
} // renderActivityIntoImage
-- (void)renderThroughputIntoImage:(NSImage *)image {
+- (void)renderThroughputImageSize:(NSSize)imageSize {
// Get the primary stats
double txValue = 0;
@@ -1073,36 +1077,31 @@ - (void)renderThroughputIntoImage:(NSImage *)image {
}
// Construct strings
- double sampleInterval = [ourPrefs netInterval];
+
+ double sampleInterval;
NSNumber *sampleIntervalNum = [netHistoryIntervals lastObject];
- if (!sampleIntervalNum && ([sampleIntervalNum doubleValue] > 0)) {
+ if (sampleIntervalNum && ([sampleIntervalNum doubleValue] > 0)) {
sampleInterval = [sampleIntervalNum doubleValue];
}
+ else {
+ sampleInterval = [ourPrefs netInterval];
+ }
+ NSString *txString = [self throughputStringForBytes:txValue inInterval:sampleInterval];
+ NSString *rxString = [self throughputStringForBytes:rxValue inInterval:sampleInterval];
- NSString *txString = [self menubarThroughputStringForBytes:txValue inInterval:sampleInterval];
- NSString *rxString = [self menubarThroughputStringForBytes:rxValue inInterval:sampleInterval];
+ NSDictionary *attributes = @{NSFontAttributeName: throughputFont,
+ NSForegroundColorAttributeName: interfaceUp ? txColor : inactiveColor};
NSAttributedString *renderTxString = [[NSAttributedString alloc]
initWithString:txString
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont,
- NSFontAttributeName,
- interfaceUp ? txColor : inactiveColor,
- NSForegroundColorAttributeName,
- nil]];
+ attributes:attributes];
+ attributes = @{NSFontAttributeName: throughputFont,
+ NSForegroundColorAttributeName: interfaceUp ? rxColor : inactiveColor};
NSAttributedString *renderRxString = [[NSAttributedString alloc]
initWithString:rxString
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont,
- NSFontAttributeName,
- interfaceUp ? rxColor : inactiveColor,
- NSForegroundColorAttributeName,
- nil]];
-
- // Draw
- [image lockFocus];
+ attributes:attributes];
// Draw label if needed
- float labelOffset = 0;
if ([ourPrefs netThroughputLabel]) {
+ CGFloat labelOffset = 0;
if ([ourPrefs netDisplayMode] & kNetDisplayGraph) {
labelOffset += [ourPrefs netGraphLength] + kNetDisplayGapWidth;
}
@@ -1117,16 +1116,18 @@ - (void)renderThroughputIntoImage:(NSImage *)image {
}
}
// No descenders, so render lower
+ NSPoint rxPos;
+ NSPoint txPos;
if ([ourPrefs netDisplayOrientation] == kNetDisplayOrientRxTx) {
- [renderRxString drawAtPoint:NSMakePoint(ceil(menuWidth - [renderRxString size].width), floor([image size].height / 2) - 1)];
- [renderTxString drawAtPoint:NSMakePoint(ceil(menuWidth - [renderTxString size].width), -1)];
+ rxPos = NSMakePoint(ceil(menuWidth - [renderRxString size].width), floor(imageSize.height / 2) - 1);
+ txPos = NSMakePoint(ceil(menuWidth - [renderTxString size].width), ourPrefs.tallMenuBar ? -3 : -1);
}
else {
- [renderTxString drawAtPoint:NSMakePoint(ceil(menuWidth - [renderTxString size].width), floor([image size].height / 2) - 1)];
- [renderRxString drawAtPoint:NSMakePoint(ceil(menuWidth - [renderRxString size].width), -1)];
+ txPos = NSMakePoint(ceil(menuWidth - [renderTxString size].width), floor(imageSize.height / 2) - (ourPrefs.tallMenuBar ? 1 : 2));
+ rxPos = NSMakePoint(ceil(menuWidth - [renderRxString size].width), - (ourPrefs.tallMenuBar ? 3 : 1));
}
- [image unlockFocus];
-
+ [renderTxString drawAtPoint:txPos];
+ [renderRxString drawAtPoint:rxPos];
} // renderThroughputIntoImage
///////////////////////////////////////////////////////////////
@@ -1136,7 +1137,6 @@ - (void)renderThroughputIntoImage:(NSImage *)image {
///////////////////////////////////////////////////////////////
- (void)timerFired:(NSTimer *)timer {
-
// Get new config
preferredInterfaceConfig = [netConfig interfaceConfigForInterfaceName:[ourPrefs netPreferInterface]];
@@ -1202,8 +1202,7 @@ - (void)updateMenuWhenDown {
case PPP_IDLE:
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:pppMenuItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [localizedStrings objectForKey:kPPPNoConnectTitle]]);
+ [localizedStrings objectForKey:kPPPNoConnectTitle]);
break;
case PPP_INITIALIZE:
case PPP_CONNECTLINK:
@@ -1217,8 +1216,7 @@ - (void)updateMenuWhenDown {
case PPP_WAITONBUSY:
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:pppMenuItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [localizedStrings objectForKey:kPPPConnectingTitle]]);
+ [localizedStrings objectForKey:kPPPConnectingTitle]);
break;
case PPP_RUNNING:
if ([[details objectForKey:@"pppstatus"] objectForKey:@"timeElapsed"]) {
@@ -1229,15 +1227,14 @@ - (void)updateMenuWhenDown {
secs %= 60;
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:pppMenuItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:
- [localizedStrings objectForKey:kPPPConnectedWithTimeTitle],
- hours, mins, secs]]);
+ [NSString stringWithFormat:
+ [localizedStrings objectForKey:kPPPConnectedWithTimeTitle],
+ hours, mins, secs]);
}
else {
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:pppMenuItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat, kPPPConnectedTitle]);
+ kPPPConnectedTitle);
}
break;
break;
@@ -1245,8 +1242,7 @@ - (void)updateMenuWhenDown {
case PPP_DISCONNECTLINK:
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:pppMenuItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [localizedStrings objectForKey:kPPPDisconnectingTitle]]);
+ [localizedStrings objectForKey:kPPPDisconnectingTitle]);
};
}
// Throughput updates
@@ -1260,48 +1256,43 @@ - (void)updateMenuWhenDown {
if (targetItem && throughputNumber) {
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:targetItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:@"%@ %@",
- [localizedStrings objectForKey:kTxLabel],
- [self throughputStringForBytes:[throughputNumber doubleValue]
- inInterval:[sampleIntervalNum doubleValue]]]]);
+ [NSString stringWithFormat:@"%@ %@",
+ [localizedStrings objectForKey:kTxLabel],
+ [self throughputStringForBytes:[throughputNumber doubleValue]
+ inInterval:[sampleIntervalNum doubleValue]]]);
}
targetItem = [updateInfoForService objectForKey:@"deltainitem"];
throughputNumber = [throughputDetails objectForKey:@"deltain"];
if (targetItem && throughputNumber) {
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:targetItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [NSString stringWithFormat:@"%@ %@",
- [localizedStrings objectForKey:kRxLabel],
- [self throughputStringForBytes:[throughputNumber doubleValue]
- inInterval:[sampleIntervalNum doubleValue]]]]);
+ [NSString stringWithFormat:@"%@ %@",
+ [localizedStrings objectForKey:kRxLabel],
+ [self throughputStringForBytes:[throughputNumber doubleValue]
+ inInterval:[sampleIntervalNum doubleValue]]]);
}
targetItem = [updateInfoForService objectForKey:@"totaloutitem"];
throughputNumber = [throughputDetails objectForKey:@"totalout"];
if (targetItem && throughputNumber) {
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:targetItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [self trafficStringForNumber:throughputNumber
- withLabel:[localizedStrings objectForKey:kTxLabel]]]);
+ [self trafficStringForNumber:throughputNumber
+ withLabel:[localizedStrings objectForKey:kTxLabel]]);
}
targetItem = [updateInfoForService objectForKey:@"totalinitem"];
throughputNumber = [throughputDetails objectForKey:@"totalin"];
if (targetItem && throughputNumber) {
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:targetItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [self trafficStringForNumber:throughputNumber
- withLabel:[localizedStrings objectForKey:kRxLabel]]]);
+ [self trafficStringForNumber:throughputNumber
+ withLabel:[localizedStrings objectForKey:kRxLabel]]);
}
targetItem = [updateInfoForService objectForKey:@"peakitem"];
throughputNumber = [throughputDetails objectForKey:@"peak"];
if (targetItem && throughputNumber) {
LiveUpdateMenuItemTitle(extraMenu,
[extraMenu indexOfItem:targetItem],
- [NSString stringWithFormat:kMenuDoubleIndentFormat,
- [self throughputStringForBytesPerSecond:[throughputNumber doubleValue]]]);
+ [self throughputStringForBytesPerSecond:[throughputNumber doubleValue]]);
}
}
}
@@ -1363,7 +1354,6 @@ - (void)switchDisplay:(id)sender {
// Update prefs
[ourPrefs saveNetPreferInterface:interfaceName];
- [ourPrefs syncWithDisk];
// Send the notification to the pref pane
[[NSNotificationCenter defaultCenter] postNotificationName:kPrefPaneBundleID
object:kPrefChangeNotification];
@@ -1389,10 +1379,11 @@ - (void)pppConnect:(id)sender {
if ([sender representedObject]) {
// SC connection
SCNetworkConnectionRef connection = SCNetworkConnectionCreateWithServiceID(
- kCFAllocatorDefault,
- (CFStringRef)[sender representedObject],
- NULL,
- NULL);
+ kCFAllocatorDefault,
+ (CFStringRef)[sender representedObject],
+ NULL,
+ NULL);
+
// Undoc preference values
CFArrayRef connectionOptionList = CFPreferencesCopyValue((CFStringRef)[sender representedObject],
kAppleNetworkConnectDefaultsDomain,
@@ -1439,13 +1430,10 @@ - (void)pppDisconnect:(id)sender {
- (void)configFromPrefs:(NSNotification *)notification {
#ifdef ELCAPITAN
[super configDisplay:kNetMenuBundleID
- fromPrefs:ourPrefs
- withTimerInterval:[ourPrefs netInterval]];
+ fromPrefs:ourPrefs
+ withTimerInterval:[ourPrefs netInterval]];
#endif
- // Update prefs
- [ourPrefs syncWithDisk];
-
// Cache colors to skip archiver
txColor = [self colorByAdjustingForLightDark:[ourPrefs netTransmitColor]];
rxColor = [self colorByAdjustingForLightDark:[ourPrefs netReceiveColor]];
@@ -1457,82 +1445,81 @@ - (void)configFromPrefs:(NSNotification *)notification {
if ([ourPrefs netDisplayMode] & kNetDisplayGraph) {
arrowOffset = [ourPrefs netGraphLength] + kNetDisplayGapWidth;
}
- upArrow = [NSBezierPath bezierPath];
- [upArrow moveToPoint:NSMakePoint(arrowOffset + (kNetArrowDisplayWidth / 2) + 0.5, viewHeight - 3.5)];
- [upArrow lineToPoint:NSMakePoint(arrowOffset + 0.5, viewHeight - 7.5)];
- [upArrow lineToPoint:NSMakePoint(arrowOffset + 2.5, viewHeight - 7.5)];
- [upArrow lineToPoint:NSMakePoint(arrowOffset + 2.5, viewHeight - 10.5)];
- [upArrow lineToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth - 2.5, viewHeight - 10.5)];
- [upArrow lineToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth - 2.5, viewHeight - 7.5)];
- [upArrow lineToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth - 0.5, viewHeight - 7.5)];
- [upArrow closePath];
- [upArrow setLineWidth:0.6];
- downArrow = [NSBezierPath bezierPath];
- [downArrow moveToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth / 2 + 0.5, 2.5)];
- [downArrow lineToPoint:NSMakePoint(arrowOffset + 0.5, 6.5)];
- [downArrow lineToPoint:NSMakePoint(arrowOffset + 2.5, 6.5)];
- [downArrow lineToPoint:NSMakePoint(arrowOffset + 2.5, 9.5)];
- [downArrow lineToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth - 2.5, 9.5)];
- [downArrow lineToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth - 2.5, 6.5)];
- [downArrow lineToPoint:NSMakePoint(arrowOffset + kNetArrowDisplayWidth - 0.5, 6.5)];
- [downArrow closePath];
- [downArrow setLineWidth:0.6];
+ NSBezierPath *arrow = [NSBezierPath bezierPath];
+ BOOL tallMenuBar = ourPrefs.tallMenuBar;
+ [arrow moveToPoint:NSMakePoint(kNetArrowDisplayWidth / 2 + 0.5, tallMenuBar ? 0.5 : 2.5)];
+ [arrow lineToPoint:NSMakePoint(0.5, tallMenuBar ? 5.5 : 6.5)];
+ [arrow lineToPoint:NSMakePoint(2.5, tallMenuBar ? 5.5 : 6.5)];
+ [arrow lineToPoint:NSMakePoint(2.5, tallMenuBar ? 9.5 : 9.5)];
+ [arrow lineToPoint:NSMakePoint(kNetArrowDisplayWidth - 2.5, tallMenuBar ? 9.5 : 9.5)];
+ [arrow lineToPoint:NSMakePoint(kNetArrowDisplayWidth - 2.5, tallMenuBar ? 5.5 : 6.5)];
+ [arrow lineToPoint:NSMakePoint(kNetArrowDisplayWidth - 0.5, tallMenuBar ? 5.5 : 6.5)];
+ [arrow closePath];
+ [arrow setLineWidth:0.8];
+ upArrow = [arrow copy];
+ NSAffineTransform *transform = [NSAffineTransform new];
+ [transform translateXBy:arrowOffset yBy:viewHeight];
+ [transform scaleXBy:1 yBy:-1];
+ [upArrow transformUsingAffineTransform:transform];
+ downArrow = [arrow copy];
+ transform = [NSAffineTransform new];
+ [transform translateXBy:arrowOffset yBy:0];
+ [downArrow transformUsingAffineTransform:transform];
// Prerender throughput labels
+ NSDictionary *attributes = @{NSFontAttributeName: throughputFont,
+ NSForegroundColorAttributeName: txColor};
NSAttributedString *renderTxString = [[NSAttributedString alloc]
initWithString:[localizedStrings objectForKey:kTxLabel]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- txColor, NSForegroundColorAttributeName,
- nil]];
+ attributes:attributes];
+ attributes = @{NSFontAttributeName: throughputFont,
+ NSForegroundColorAttributeName: rxColor};
NSAttributedString *renderRxString = [[NSAttributedString alloc]
initWithString:[localizedStrings objectForKey:kRxLabel]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- rxColor, NSForegroundColorAttributeName,
- nil]];
- if ([renderTxString size].width > [renderRxString size].width) {
- throughputLabel = [[NSImage alloc] initWithSize:NSMakeSize([renderTxString size].width, viewHeight)];
- inactiveThroughputLabel = [[NSImage alloc] initWithSize:NSMakeSize([renderTxString size].width, viewHeight)];
+ attributes:attributes];
+
+ NSSize renderTxSize = renderTxString.size;
+ NSSize renderRxSize = renderRxString.size;
+
+ NSSize throughputLabelSize;
+ if (renderTxSize.width > renderRxSize.width) {
+ throughputLabelSize = renderTxSize;
}
else {
- throughputLabel = [[NSImage alloc] initWithSize:NSMakeSize([renderRxString size].width, viewHeight)];
- inactiveThroughputLabel = [[NSImage alloc] initWithSize:NSMakeSize([renderRxString size].width, viewHeight)];
+ throughputLabelSize = renderRxSize;
}
- [throughputLabel lockFocus];
- // No descenders, render lower
+ NSPoint renderRxPoint;
+ NSPoint renderTxPoint;
if ([ourPrefs netDisplayOrientation] == kNetDisplayOrientRxTx) {
- [renderRxString drawAtPoint:NSMakePoint(0, floorf(viewHeight / 2) - 2)];
- [renderTxString drawAtPoint:NSMakePoint(0, -1)];
+ renderRxPoint = NSMakePoint(0, floor(viewHeight / 2) - 2);
+ renderTxPoint = NSMakePoint(0, -1);
}
else {
- [renderTxString drawAtPoint:NSMakePoint(0, floorf(viewHeight / 2) - 2)];
- [renderRxString drawAtPoint:NSMakePoint(0, -1)];
- }
- [throughputLabel unlockFocus];
+ renderTxPoint = NSMakePoint(0, floor(viewHeight / 2) - 2);
+ renderRxPoint = NSMakePoint(0, -1);
+ }
+ throughputLabel = [NSImage imageWithSize:throughputLabelSize
+ flipped:NO
+ drawingHandler:^BOOL(NSRect dstRect) {
+ [renderRxString drawAtPoint:renderRxPoint];
+ [renderTxString drawAtPoint:renderTxPoint];
+ return YES;
+ }];
+ attributes = @{NSFontAttributeName: throughputFont,
+ NSForegroundColorAttributeName: inactiveColor};
renderTxString = [[NSAttributedString alloc]
initWithString:[localizedStrings objectForKey:kTxLabel]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- inactiveColor, NSForegroundColorAttributeName,
- nil]];
+ attributes:attributes];
renderRxString = [[NSAttributedString alloc]
initWithString:[localizedStrings objectForKey:kRxLabel]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- inactiveColor, NSForegroundColorAttributeName,
- nil]];
- [inactiveThroughputLabel lockFocus];
- // No descenders, render lower
- if ([ourPrefs netDisplayOrientation] == kNetDisplayOrientRxTx) {
- [renderRxString drawAtPoint:NSMakePoint(0, floorf(viewHeight / 2) - 2)];
- [renderTxString drawAtPoint:NSMakePoint(0, -1)];
- }
- else {
- [renderTxString drawAtPoint:NSMakePoint(0, floorf(viewHeight / 2) - 2)];
- [renderRxString drawAtPoint:NSMakePoint(0, -1)];
- }
- [inactiveThroughputLabel unlockFocus];
+ attributes:attributes];
+ inactiveThroughputLabel = [NSImage imageWithSize:throughputLabelSize
+ flipped:NO
+ drawingHandler:^BOOL(NSRect dstRect) {
+ [renderRxString drawAtPoint:renderRxPoint];
+ [renderTxString drawAtPoint:renderTxPoint];
+ return YES;
+ }];
// Fix our menu view size to match our config
menuWidth = 0;
@@ -1550,48 +1537,35 @@ - (void)configFromPrefs:(NSNotification *)notification {
if ([ourPrefs netThroughputLabel])
menuWidth += (float)ceil([throughputLabel size].width);
// Deal with localizable throughput suffix
- float suffixMaxWidth = 0;
- NSAttributedString *throughString = [[NSAttributedString alloc]
- initWithString:[NSString stringWithFormat:@"999.9%@",
- [localizedStrings objectForKey:[ourPrefs netThroughputBits] ? kBitPerSecondLabel : kBytePerSecondLabel]]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- nil]];
- if ([throughString size].width > suffixMaxWidth) {
- suffixMaxWidth = (float)[throughString size].width;
+ CGFloat suffixMaxWidth = 0;
+
+ NSDictionary *attributes = @{NSFontAttributeName: throughputFont};
+ NSSize numberSize = [@"999.9\u2009" sizeWithAttributes:attributes];
+
+ NSSize suffixSize;
+ suffixSize = [kBitPerSecondLabel sizeWithAttributes:attributes];
+ if (suffixSize.width > suffixMaxWidth) {
+ suffixMaxWidth = suffixSize.width;
}
- throughString = [[NSAttributedString alloc]
- initWithString:[NSString stringWithFormat:@"999.9%@",
- [localizedStrings objectForKey:[ourPrefs netThroughputBits] ? kKbPerSecondLabel : kKBPerSecondLabel]]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- nil]];
- if ([throughString size].width > suffixMaxWidth) {
- suffixMaxWidth = (float)[throughString size].width;
+ suffixSize = [kKbPerSecondLabel sizeWithAttributes:attributes];
+ if (suffixSize.width > suffixMaxWidth) {
+ suffixMaxWidth = suffixSize.width;
}
- throughString = [[NSAttributedString alloc]
- initWithString:[NSString stringWithFormat:@"999.9%@",
- [localizedStrings objectForKey:[ourPrefs netThroughputBits] ? kMbPerSecondLabel : kMBPerSecondLabel]]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- nil]];
- if ([throughString size].width > suffixMaxWidth) {
- suffixMaxWidth = (float)[throughString size].width;
+ suffixSize = [kMbPerSecondLabel sizeWithAttributes:attributes];
+ if (suffixSize.width > suffixMaxWidth) {
+ suffixMaxWidth = suffixSize.width;
}
- throughString = [[NSAttributedString alloc]
- initWithString:[NSString stringWithFormat:@"999.9%@",
- [localizedStrings objectForKey:[ourPrefs netThroughputBits] ? kGbPerSecondLabel : kGBPerSecondLabel]]
- attributes:[NSDictionary dictionaryWithObjectsAndKeys:
- throughputFont, NSFontAttributeName,
- nil]];
- if ([throughString size].width > suffixMaxWidth) {
- suffixMaxWidth = (float)[throughString size].width;
+ suffixSize = [kGbPerSecondLabel sizeWithAttributes:attributes];
+ if (suffixSize.width > suffixMaxWidth) {
+ suffixMaxWidth = suffixSize.width;
}
- menuWidth += ceilf(suffixMaxWidth);
+ suffixMaxWidth += numberSize.width;
+
+ menuWidth += ceil(suffixMaxWidth);
}
// If more than one display is present we need to add a gaps
if (displayCount) {
- menuWidth += ((displayCount - 1) * kNetDisplayGapWidth);
+ menuWidth += (displayCount - 1) * kNetDisplayGapWidth;
}
// Force initial update
@@ -1604,12 +1578,6 @@ - (void)configFromPrefs:(NSNotification *)notification {
//
///////////////////////////////////////////////////////////////
-- (NSString *)throughputStringForBytesPerSecond:(double)bps {
-
- return [self throughputStringForBytesPerSecond:bps withSpace:YES];
-
-} // throughputStringForBytesPerSecond
-
- (NSString *)throughputStringForBytes:(double)bytes inInterval:(NSTimeInterval)interval {
if (interval <= 0)
@@ -1618,21 +1586,23 @@ - (NSString *)throughputStringForBytes:(double)bytes inInterval:(NSTimeInterval)
} // throughputStringForBytes:inInterval:
-- (NSString *)menubarThroughputStringForBytes:(double)bytes inInterval:(NSTimeInterval)interval {
-
- if (interval <= 0)
- return nil;
- return [self throughputStringForBytesPerSecond:bytes / interval withSpace:NO];
-
-} // menubarThroughputStringForBytes:inInterval:
-
-- (NSString *)throughputStringForBytesPerSecond:(double)bps withSpace:(Boolean)wantSpace {
-
- NSArray *labels = @[kBytePerSecondLabel, kKBPerSecondLabel, kMBPerSecondLabel, kGBPerSecondLabel];
- int kilo = kKiloBinary;
+- (NSString *)throughputStringForBytesPerSecond:(double)bps {
- if ([ourPrefs netThroughputBits]) {
- labels = @[kBitPerSecondLabel, kKbPerSecondLabel, kMbPerSecondLabel, kGbPerSecondLabel];
+ static NSArray *labelsBytes = nil;
+ static NSArray *labelsBits = nil;
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ labelsBytes = @[kBytePerSecondLabel, kKBPerSecondLabel, kMBPerSecondLabel, kGBPerSecondLabel];
+ labelsBits = @[kBitPerSecondLabel, kKbPerSecondLabel, kMbPerSecondLabel, kGbPerSecondLabel];
+ });
+ int kilo;
+ NSArray *labels;
+ if (![ourPrefs netThroughputBits]) {
+ labels = labelsBytes;
+ kilo = kKiloBinary;
+ }
+ else {
+ labels = labelsBits;
kilo = kKiloDecimal;
bps *= 8;
}
@@ -1648,14 +1618,7 @@ - (NSString *)throughputStringForBytesPerSecond:(double)bps withSpace:(Boolean)w
if (labelIndex == 0 || bps >= 1000) {
format = @"%.0f";
}
-
- if (wantSpace) {
- format = [NSString stringWithFormat:@"%@ %%@", format];
- }
- else {
- format = [NSString stringWithFormat:@"%@%%@", format];
- }
-
+ format = [format stringByAppendingString:@"\u2009%@"];
return [self stringifyNumber:bps withUnitLabel:unitLabel andFormat:format];
} // throughputStringForBytesPerSecond:withFormat:
@@ -1703,7 +1666,8 @@ - (NSUInteger)scaleDown:(double *)num usingBase:(NSUInteger)base withLimit:(NSUI
- (NSString *)stringifyNumber:(double)num withUnitLabel:(NSString *)label andFormat:(NSString *)format {
- return [NSString stringWithFormat:format, num, [localizedStrings objectForKey:label]];
+ return [NSString stringWithFormat:format, num, label];
+ //return [NSString stringWithFormat:format, num, [localizedStrings objectForKey:label]];
} // stringifyNumber:withUnitLabel:andFormat:
diff --git a/MenuExtras/MenuMeterNet/MenuMeterNetPPP.m b/MenuExtras/MenuMeterNet/MenuMeterNetPPP.m
index 8af5b6d3..2ffa6faf 100644
--- a/MenuExtras/MenuMeterNet/MenuMeterNetPPP.m
+++ b/MenuExtras/MenuMeterNet/MenuMeterNetPPP.m
@@ -129,7 +129,7 @@ + (id)sharedPPP {
//
///////////////////////////////////////////////////////////////
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
diff --git a/MenuExtras/MenuMeterNet/MenuMeterNetStats.m b/MenuExtras/MenuMeterNet/MenuMeterNetStats.m
index 13dc46fe..8959f2b9 100644
--- a/MenuExtras/MenuMeterNet/MenuMeterNetStats.m
+++ b/MenuExtras/MenuMeterNet/MenuMeterNetStats.m
@@ -31,7 +31,7 @@ @implementation MenuMeterNetStats
//
///////////////////////////////////////////////////////////////
-- (id)init {
+- (instancetype)init {
self = [super init];
if (!self) {
diff --git a/MenuMeters.pch b/MenuMeters.pch
index 284be031..a2c5eac0 100644
--- a/MenuMeters.pch
+++ b/MenuMeters.pch
@@ -32,3 +32,9 @@
#import
#import
#import
+
+#ifdef DEBUG
+#define MMLog(args...) (void)printf("%i %s: %s\n", __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:args] UTF8String])
+#else
+#define MMLog(args...) // stubbed out
+#endif
diff --git a/MenuMeters.xcodeproj/project.pbxproj b/MenuMeters.xcodeproj/project.pbxproj
index 30450fc8..a68982c2 100644
--- a/MenuMeters.xcodeproj/project.pbxproj
+++ b/MenuMeters.xcodeproj/project.pbxproj
@@ -79,6 +79,8 @@
33B440112594675E00CBBEDF /* com.ragingmenace.MenuMeters.plist in Resources */ = {isa = PBXBuildFile; fileRef = 33B440102594675E00CBBEDF /* com.ragingmenace.MenuMeters.plist */; };
33B440122594675E00CBBEDF /* com.ragingmenace.MenuMeters.plist in Resources */ = {isa = PBXBuildFile; fileRef = 33B440102594675E00CBBEDF /* com.ragingmenace.MenuMeters.plist */; };
33F0921923673DAC00953CAB /* releases.html in Resources */ = {isa = PBXBuildFile; fileRef = 33F0921823673DAC00953CAB /* releases.html */; };
+ 56834990272F332C0024B69D /* MenuMeterCPU.m in Sources */ = {isa = PBXBuildFile; fileRef = 5683498F272F332C0024B69D /* MenuMeterCPU.m */; };
+ 56834991272F332C0024B69D /* MenuMeterCPU.m in Sources */ = {isa = PBXBuildFile; fileRef = 5683498F272F332C0024B69D /* MenuMeterCPU.m */; };
6349C10924BB733300C6FC99 /* EMCLoginItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 908780A91FB087D70053DDC5 /* EMCLoginItem.m */; };
6349C10A24BB733300C6FC99 /* MenuMeterDiskExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = D42EC95D03D49AE400A87BC9 /* MenuMeterDiskExtra.m */; };
6349C10B24BB733300C6FC99 /* MenuMeterWorkarounds.m in Sources */ = {isa = PBXBuildFile; fileRef = D48A79F41018B051008E3207 /* MenuMeterWorkarounds.m */; };
@@ -196,6 +198,7 @@
538B152824465532008BAFC2 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/MenuMetersPref.strings; sourceTree = ""; };
538B152924465532008BAFC2 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/DiskImageSet.strings; sourceTree = ""; };
538B152A24465532008BAFC2 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; };
+ 5683498F272F332C0024B69D /* MenuMeterCPU.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MenuMeterCPU.m; path = Common/MenuMeterCPU.m; sourceTree = ""; };
6349C15124BB733300C6FC99 /* MenuMeters.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MenuMeters.app; sourceTree = BUILT_PRODUCTS_DIR; };
9023745A1E91612100B096A8 /* InfoPlistPreprocessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InfoPlistPreprocessor.h; sourceTree = ""; };
908780A71FB087B90053DDC5 /* EMCLoginItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EMCLoginItem.h; sourceTree = ""; };
@@ -395,6 +398,7 @@
3345DD2E1B6BEFDE003843FC /* MenuMetersMenuExtraBase.m */,
D4510D9104F2F0FD00A87BC9 /* MenuMeters.h */,
D40DB4C403D260E800A87BC9 /* MenuMeterCPU.h */,
+ 5683498F272F332C0024B69D /* MenuMeterCPU.m */,
D40DB4C503D260E800A87BC9 /* MenuMeterDisk.h */,
D40DB4C203D260E800A87BC9 /* MenuMeterMem.h */,
D40DB4C603D260E800A87BC9 /* MenuMeterNet.h */,
@@ -834,6 +838,7 @@
33883CFA23655C9900B8AC14 /* smc_reader.m in Sources */,
33883CFB23655C9900B8AC14 /* MenuMeterCPUTopProcesses.m in Sources */,
33883CFC23655C9900B8AC14 /* MenuMeterMemStats.m in Sources */,
+ 56834990272F332C0024B69D /* MenuMeterCPU.m in Sources */,
33883CFD23655C9900B8AC14 /* MenuMeterDiskSpace.m in Sources */,
33883CFE23655C9900B8AC14 /* MenuMeterDiskIO.m in Sources */,
33883D3423655CBF00B8AC14 /* MenuMetersPref.m in Sources */,
@@ -866,6 +871,7 @@
6349C11424BB733300C6FC99 /* smc_reader.m in Sources */,
6349C11524BB733300C6FC99 /* MenuMeterCPUTopProcesses.m in Sources */,
6349C11624BB733300C6FC99 /* MenuMeterMemStats.m in Sources */,
+ 56834991272F332C0024B69D /* MenuMeterCPU.m in Sources */,
6349C11724BB733300C6FC99 /* MenuMeterDiskSpace.m in Sources */,
6349C11824BB733300C6FC99 /* MenuMeterDiskIO.m in Sources */,
6349C11924BB733300C6FC99 /* MenuMetersPref.m in Sources */,
diff --git a/MenuMetersApp/AppDelegate.m b/MenuMetersApp/AppDelegate.m
index 3863eb74..6f004ef9 100644
--- a/MenuMetersApp/AppDelegate.m
+++ b/MenuMetersApp/AppDelegate.m
@@ -121,9 +121,9 @@ - (BOOL)isRunningOnReadOnlyVolume {
- (void)alertConcerningAppTranslocation {
NSAlert *alert = [[NSAlert alloc] init];
- alert.messageText = @"Please move the app after downloading it";
- [alert addButtonWithTitle:@"OK, I quit the app and move it"];
- alert.informativeText = @"Please move the app to, say, /Applications, using your mouse/trackpad, not from the command line. \n\nApple decided that they don't allow the app to auto-update otherwise. \n\nI am sorry for the inconvenience.";
+ alert.messageText = NSLocalizedString(@"Please move the app after downloading it", @"");
+ [alert addButtonWithTitle:NSLocalizedString(@"OK, I quit the app and move it", @"")];
+ alert.informativeText = NSLocalizedString(@"Please move the app to, say, /Applications, using your mouse/trackpad, not from the command line. \n\nApple decided that they don’t allow the app to auto-update otherwise. \n\nI am sorry for the inconvenience.", @"");
[alert runModal];
[NSApp terminate:nil];
}
diff --git a/MenuMetersApp/Base.lproj/Localizable.strings b/MenuMetersApp/Base.lproj/Localizable.strings
index 1d9d1304..a1a7b08c 100644
--- a/MenuMetersApp/Base.lproj/Localizable.strings
+++ b/MenuMetersApp/Base.lproj/Localizable.strings
@@ -1,9 +1,9 @@
"Open MenuMeters preferences" = "Open MenuMeters preferences";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Processor title menu item (second title is used on multi-CPU systems)
"Processor:" = "Processor:";
@@ -60,11 +60,11 @@
// Displayed when CPU load, load average, or task count fails to return info
"No info available" = "No info available";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Strings used for disk space free/used/total labels
// Note that the actual disk space float format is automatically localized
@@ -79,11 +79,11 @@
"GB" = "GB";
"Memory Pressure:" = "Memory Pressure:";
"%@%%\t(level %@)" = "%@%%\t(level %@)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels used in free/total mode
"U:" = "U:";
@@ -139,11 +139,11 @@
"%@ total swap space" = "%1$@ total swap space";
// Swap space including used info (Tiger only)
"%@ total swap space (%@ used)" = "%1$@ total swap space (%2$@ used)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels for throughput, Tx and Rx also used for Tx and Rx menu items
"Tx:" = "Tx:";
diff --git a/MenuMetersApp/en.lproj/Localizable.strings b/MenuMetersApp/en.lproj/Localizable.strings
index 14369954..8a90e6c7 100644
--- a/MenuMetersApp/en.lproj/Localizable.strings
+++ b/MenuMetersApp/en.lproj/Localizable.strings
@@ -1,214 +1,9 @@
-"Open MenuMeters preferences" = "Open MenuMeters preferences";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+/* No comment provided by engineer. */
+"OK, I quit the app and move it" = "OK, I quit the app and move it";
-// Processor title menu item (second title is used on multi-CPU systems)
-"Processor:" = "Processor:";
-"Processors:" = "Processors:";
+/* No comment provided by engineer. */
+"Please move the app after downloading it" = "Please move the app after downloading it";
-// And the format string for the processor menu display (ex: "1 PowerPC 7450 @ 800MHz")
-// Note that CPU name information ("PowerPC 7450") cannot be localized, it is
-// provided by the system
-"%u %@ @ %@" = "%1$u %2$@ @ %3$@";
+/* No comment provided by engineer. */
+"Please move the app to, say, /Applications, using your mouse/trackpad, not from the command line. \n\nApple decided that they don’t allow the app to auto-update otherwise. \n\nI am sorry for the inconvenience." = "Please move the app to, say, /Applications, using your mouse/trackpad, not from the command line. \n\nApple decided that they don’t allow the app to auto-update otherwise. \n\nI am sorry for the inconvenience.";
-// Uptime title menu item
-"Uptime:" = "Uptime:";
-
-// Uptime error (unavailable)
-"Unavailable" = "Unavailable";
-
-// Format strings for uptime (ex: "2 days 08:16:32")
-// Multiple day format
-"%ld days %02ld:%02ld:%02ld" = "%1$ld days %2$02ld:%3$02ld:%4$02ld";
-// Single day format
-"%ld day %02ld:%02ld:%02ld" = "%1$ld day %2$02ld:%3$02ld:%4$02ld";
-// Less than one day format
-"%02ld:%02ld:%02ld" = "%1$02ld:%2$02ld:%3$02ld";
-
-// Tasks and threads title
-"Tasks/Threads:" = "Tasks/Threads:";
-
-// Format string for tasks and threads
-"%d tasks, %d threads" = "%1$d tasks, %2$d threads";
-
-// Core count / hyperthreading format strings
-" (%@ hyperthreads per core)" = " (%@ hyperthreads per core)";
-"%@%@ physical cores" = "%@%@ physical cores";
-
-// Load average title
-"Load Average (1m, 5m, 15m):" = "Load Average (1m, 5m, 15m):";
-
-// Load average format
-// Note that this only applies to the format of the string as a whole, not
-// the format of the load average floats themselves (load average floats are
-// automatically localized by NSNumberFormatter)
-"%@, %@, %@" = "%1$@, %2$@, %3$@";
-
-// CPU power limit status
-"CPU power limit:" = "CPU power limit:";
-"speed %@%%, scheduler %@%%" = "speed %@%%, scheduler %@%%";
-
-// Open Process Viewer/Open Console
-"Open Process Viewer" = "Open Process Viewer";
-"Open Activity Monitor" = "Open Activity Monitor";
-"Open Console" = "Open Console";
-
-// Miscellaneous error strings
-
-// Displayed when CPU load, load average, or task count fails to return info
-"No info available" = "No info available";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
-
-// Strings used for disk space free/used/total labels
-// Note that the actual disk space float format is automatically localized
-// by an NSNumberFormatter.
-"%@ Used" = "%1$@ Used";
-"%@ Free" = "%1$@ Free";
-"%@ Total" = "%1$@ Total";
-
-// Unit labels
-"KB" = "KB";
-"MB" = "MB";
-"GB" = "GB";
-"Memory Pressure:" = "Memory Pressure:";
-"%@%%\t(level %@)" = "%@%%\t(level %@)";
-
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
-
-// Menubar display labels used in free/total mode
-"U:" = "U:";
-"F:" = "F:";
-
-// Unit labels
-"MB" = "MB";
-
-// Memory usage title menu item
-"Memory Usage:" = "Memory Usage:";
-
-// Format string for memory usage. Float conversion to X.XX is
-// automatically localized by NSNumberFormatter and is therefore not exposed
-"%@ used, %@ free, %@ total" = "%1$@ used, %2$@ free, %3$@ total";
-
-// Memory page statistics title menu item
-"Memory Pages:" = "Memory Pages:";
-
-// Format strings for memory statistics. Float conversion to X.XX is
-// automatically localized by NSNumberFormatter and is therefore not exposed
-"%@ active, %@ wired" = "%1$@ active, %2$@ wired";
-"%@ inactive, %@ free" = "%1$@ inactive, %2$@ free";
-"%@ compressed (%@)" = "%1$@ compressed (%2$@)";
-
-// VM statistics title menu item
-"VM Statistics:" = "VM Statistics:";
-
-// Format strings for VM statistics
-// Technically we should cover all permutations of 1 or more than 1
-// for each statistic, but in the real world users never have just
-// one pagein or copy-on-write, etc. so we can simplify to just
-// the plural forms
-"%@ pageins, %@ pageouts" = "%1$@ pageins, %2$@ pageouts";
-"%@ cache lookups, %@ cache hits (%@)" = "%1$@ cache lookups, %2$@ cache hits (%3$@)";
-"%@ page faults, %@ copy-on-writes" = "%1$@ page faults, %2$@ copy-on-writes";
-
-// Swap file statistics title menu item
-"Swap Files:" = "Swap Files:";
-
-// Swap file info formats. Here we do need to handle plurals since
-// values of 1 are likely
-// Basic swap file info (ex: "1 swap file in /private/var/vm/")
-"%@ swap file present in %@" = "%1$@ swap file present in %2$@";
-"%@ swap files present in %@" = "%1$@ swap files present in %2$@";
-// Basic swap file info with encryption
-"%@ encrypted swap file present in %@" = "%1$@ encrypted swap file present in %2$@";
-"%@ encrypted swap files present in %@" = "%1$@ encrypted swap files present in %2$@";
-// Maximum swap count info
-"%@ swap file at peak usage" = "%1$@ swap file at peak usage";
-"%@ swap files at peak usage" = "%1$@ swap files at peak usage";
-// Swap space info, as with free/used/total the float format and MB label
-// are handled automatically by NSFormatter
-"%@ total swap space" = "%1$@ total swap space";
-// Swap space including used info (Tiger only)
-"%@ total swap space (%@ used)" = "%1$@ total swap space (%2$@ used)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
-
-// Menubar display labels for throughput, Tx and Rx also used for Tx and Rx menu items
-"Tx:" = "Tx:";
-"Rx:" = "Rx:";
-
-// Unit labels
-"Gbps" = "Gbps";
-"Mbps" = "Mbps";
-"Kbps" = "Kbps";
-"B" = "B";
-"KB" = "KB";
-"MB" = "MB";
-"GB" = "GB";
-"B/s" = "B/s";
-"KB/s" = "KB/s";
-"MB/s" = "MB/s";
-"GB/s" = "GB/s";
-
-// PPP connection titles and states
-"PPP:" = "PPP:";
-"Not Connected" = "Not Connected";
-"Connecting..." = "Connecting...";
-"Connected" = "Connected";
-"Connected %02d:%02d:%02d" = "Connected %1$02d:%2$02d:%3$02d";
-"Disconnecting..." = "Disconnecting...";
-
-// TCP/IP menu titles
-"TCP/IP:" = "TCP/IP:";
-"IPv4:" = "IPv4:";
-"IPv6:" = "IPv6:";
-
-// Label for inactive TCP/IP interfaces
-"Inactive" = "Inactive";
-
-// AppleTalk menu title
-"AppleTalk:" = "AppleTalk:";
-
-// Format string for AppleTalk display info
-"Net: %@ Node: %@ Zone: %@" = "Net: %1$@ Node: %2$@ Zone: %3$@";
-
-// Throughput menu title
-"Throughput:" = "Throughput:";
-
-// Peak throughput menu title
-"Peak Throughput:" = "Peak Throughput:";
-
-// Traffic totals menu title
-"Traffic Totals:" = "Traffic Totals:";
-
-// Traffic total format string. The Tx and Rx labels from above are automatically used
-// as the first param, and numbers are localized automatically by NSNumberFormatter
-// ex: "Tx: XX.XMB (XXX,XXX bytes)
-"%@ %@ (%@ bytes)" = "%1$@ %2$@ (%3$@ bytes)";
-
-// Menu action title strings
-"Open Network Utility" = "Open Network Utility";
-"Open Network Preferences" = "Open Network Preferences";
-"Open Internet Connect" = "Open Internet Connect";
-"Display primary interface" = "Display primary interface";
-"Display this interface" = "Display this interface";
-"Copy IPv4 address" = "Copy IPv4 address";
-"Copy IPv6 address" = "Copy IPv6 address";
-"Connect" = "Connect";
-"Disconnect" = "Disconnect";
-
-// Miscellaneous error strings
-"No Active Interfaces" = "No Active Interfaces";
diff --git a/MenuMetersApp/fi.lproj/Localizable.strings b/MenuMetersApp/fi.lproj/Localizable.strings
index fcc0d095..3f508bee 100644
--- a/MenuMetersApp/fi.lproj/Localizable.strings
+++ b/MenuMetersApp/fi.lproj/Localizable.strings
@@ -1,9 +1,9 @@
"Open MenuMeters preferences" = "Avaa MenuMetersin asetukset";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Processor title menu item (second title is used on multi-CPU systems)
"Processor:" = "Processori:";
@@ -56,11 +56,11 @@
// Displayed when CPU load, load average, or task count fails to return info
"No info available" = "Tietoa ei saatavilla";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Strings used for disk space free/used/total labels
// Note that the actual disk space float format is automatically localized
@@ -74,11 +74,11 @@
"MB" = " Mt";
"GB" = " Gt";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels used in free/total mode
"U:" = "K:";
@@ -134,11 +134,11 @@
"%@ total swap space" = "%1$@ sivutustilaa yhteensä";
// Swap space including used info (Tiger only)
"%@ total swap space (%@ used)" = "%1$@ sivutustilaa yhteensä (%2$@ käytössä)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels for throughput, Tx and Rx also used for Tx and Rx menu items
"Tx:" = "Läh:";
diff --git a/MenuMetersApp/it.lproj/Localizable.strings b/MenuMetersApp/it.lproj/Localizable.strings
index 0d70f0d7..b396929d 100644
--- a/MenuMetersApp/it.lproj/Localizable.strings
+++ b/MenuMetersApp/it.lproj/Localizable.strings
@@ -1,9 +1,9 @@
"Open MenuMeters preferences" = "Open MenuMeters preferences";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Processor title menu item (second title is used on multi-CPU systems)
"Processor:" = "Processore:";
@@ -56,11 +56,11 @@
// Displayed when CPU load, load average, or task count fails to return info
"No info available" = "Nessuna info disponibile";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Strings used for disk space free/used/total labels
// Note that the actual disk space float format is automatically localized
@@ -73,11 +73,11 @@
"KB" = "KB";
"MB" = "MB";
"GB" = "GB";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels used in free/total mode
"U:" = "U:";
@@ -133,11 +133,11 @@
"%@ total swap space" = "%1$@ spazio swap totale";
// Swap space including used info (Tiger only)
"%@ total swap space (%@ used)" = "%1$@ spazio swap totale (%2$@ usato)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels for throughput, Tx and Rx also used for Tx and Rx menu items
"Tx:" = "Tx:";
diff --git a/MenuMetersApp/nl.lproj/Localizable.strings b/MenuMetersApp/nl.lproj/Localizable.strings
index 4790bfd4..30f848ad 100644
--- a/MenuMetersApp/nl.lproj/Localizable.strings
+++ b/MenuMetersApp/nl.lproj/Localizable.strings
@@ -1,9 +1,9 @@
"Open MenuMeters preferences" = "Open MenuMeters preferences";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Processor title menu item (second title is used on multi-CPU systems)
"Processor:" = "Processor:";
@@ -56,11 +56,11 @@
// Displayed when CPU load, load average, or task count fails to return info
"No info available" = "Geen informatie beschikbaar";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Strings used for disk space free/used/total labels
// Note that the actual disk space float format is automatically localized
@@ -74,11 +74,11 @@
"MB" = "MB";
"GB" = "GB";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels used in free/total mode
"U:" = "G:";
@@ -134,11 +134,11 @@
"%@ total swap space" = "%1$@ in gebruik voor swap-bestanden";
// Swap space including used info (Tiger only)
"%@ total swap space (%@ used)" = "%1$@ in gebruik voor swap-bestanden (%2$@ in gebruik)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels for throughput, Tx and Rx also used for Tx and Rx menu items
"Tx:" = "Tx:";
diff --git a/MenuMetersApp/zh-Hans.lproj/Localizable.strings b/MenuMetersApp/zh-Hans.lproj/Localizable.strings
index a86e51de..77a18903 100644
--- a/MenuMetersApp/zh-Hans.lproj/Localizable.strings
+++ b/MenuMetersApp/zh-Hans.lproj/Localizable.strings
@@ -1,9 +1,9 @@
"Open MenuMeters preferences" = "Open MenuMeters preferences";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Processor title menu item (second title is used on multi-CPU systems)
"Processor:" = "处理器:";
@@ -56,11 +56,11 @@
// Displayed when CPU load, load average, or task count fails to return info
"No info available" = "无可用信息";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Strings used for disk space free/used/total labels
// Note that the actual disk space float format is automatically localized
@@ -73,11 +73,11 @@
"KB" = "KB";
"MB" = "MB";
"GB" = "GB";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels used in free/total mode
"U:" = "用:";
@@ -133,11 +133,11 @@
"%@ total swap space" = "%1$@ 合计交换空间";
// Swap space including used info (Tiger only)
"%@ total swap space (%@ used)" = "%1$@ 合计交换空间 (%2$@ 已使用)";
-// In the interest of improving localizability most strings in MenuMeters
-// are exposed as NSString format strings, including the %1$, %2$ parameter placement
-// convention. If localization requires different ordering of the parameters you
-// can reorder the items (leaving the %1$ notations in place) and NSString will
-// put the items in the right order
+// In the interest of improving localizability most strings in MenuMeters
+// are exposed as NSString format strings, including the %1$, %2$ parameter placement
+// convention. If localization requires different ordering of the parameters you
+// can reorder the items (leaving the %1$ notations in place) and NSString will
+// put the items in the right order
// Menubar display labels for throughput, Tx and Rx also used for Tx and Rx menu items
"Tx:" = "发:";
diff --git a/MenuMetersMenuExtraBase.m b/MenuMetersMenuExtraBase.m
index 257ea056..06341d26 100644
--- a/MenuMetersMenuExtraBase.m
+++ b/MenuMetersMenuExtraBase.m
@@ -19,7 +19,7 @@
@implementation MenuMetersMenuExtraBase
- (NSColor *)colorByAdjustingForLightDark:(NSColor *)c {
- return [c blendedColorWithFraction:[[NSUserDefaults standardUserDefaults] floatForKey:@"tintPercentage"] / 100 ofColor:self.isDark ? [[NSColor whiteColor] colorWithAlphaComponent:[c alphaComponent]] : [[NSColor blackColor] colorWithAlphaComponent:[c alphaComponent]]];
+ return [c blendedColorWithFraction:[[NSUserDefaults standardUserDefaults] floatForKey:@"tintPercentage"] / 100 ofColor:[NSColor colorWithWhite:self.isDark alpha:[c alphaComponent]]];
}
- (instancetype)initWithBundleID:(NSString *)bundleID {
@@ -59,7 +59,7 @@ - (NSImage *)image {
- (void)timerFired:(id)notused {
statusItem.button.image = self.image;
- /* NSImage*image=self.image;
+ /* NSImage*image=self.image;
NSImage*canvas=[NSImage imageWithSize:image.size flipped:NO drawingHandler:^BOOL(NSRect dstRect) {
[[[NSColor systemGrayColor] colorWithAlphaComponent:.3] setFill];
[NSBezierPath fillRect:(CGRect) {.size = image.size}];
@@ -160,7 +160,7 @@ - (void)openActivityMonitor:(id)sender {
if (!x)
return;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
- // if(@available(macOS 10.15,*)){
+ // if(@available(macOS 10.15,*)){
int tab = 1;
if ([self isKindOfClass:[MenuMeterCPUExtra class]]) {
tab = 1;
@@ -183,18 +183,18 @@ - (void)openActivityMonitor:(id)sender {
if (errorDict) {
NSLog(@"%@", errorDict);
}
- // }
+ // }
});
} // openActivityMonitor
- (void)addStandardMenuEntriesTo:(NSMenu *)extraMenu {
- NSMenuItem *menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:NSLocalizedString(kOpenActivityMonitorTitle, kOpenActivityMonitorTitle)
- action:@selector(openActivityMonitor:)
- keyEquivalent:@""];
+ NSMenuItem *menuItem = [extraMenu addItemWithTitle:NSLocalizedString(kOpenActivityMonitorTitle, kOpenActivityMonitorTitle)
+ action:@selector(openActivityMonitor:)
+ keyEquivalent:@""];
[menuItem setTarget:self];
- menuItem = (NSMenuItem *)[extraMenu addItemWithTitle:NSLocalizedString(kOpenMenuMetersPref, kOpenMenuMetersPref)
- action:@selector(openMenuMetersPref:)
- keyEquivalent:@""];
+ menuItem = [extraMenu addItemWithTitle:NSLocalizedString(kOpenMenuMetersPref, kOpenMenuMetersPref)
+ action:@selector(openMenuMetersPref:)
+ keyEquivalent:@""];
[menuItem setTarget:self];
}
diff --git a/PrefPane/Base.lproj/MenuMetersPref.xib b/PrefPane/Base.lproj/MenuMetersPref.xib
index 6709caf0..66d28917 100644
--- a/PrefPane/Base.lproj/MenuMetersPref.xib
+++ b/PrefPane/Base.lproj/MenuMetersPref.xib
@@ -8,7 +8,6 @@
-
@@ -85,6 +84,7 @@
+
@@ -104,7 +104,7 @@
-
+
@@ -550,7 +550,7 @@
-
+
@@ -654,7 +654,7 @@
-
+
@@ -953,7 +953,7 @@
-
+
@@ -1316,7 +1316,7 @@
-
+
@@ -1456,6 +1456,9 @@
+
+
+
diff --git a/PrefPane/EMCLoginItem.m b/PrefPane/EMCLoginItem.m
index 3631dc1c..c26d182c 100644
--- a/PrefPane/EMCLoginItem.m
+++ b/PrefPane/EMCLoginItem.m
@@ -19,7 +19,7 @@ @implementation EMCLoginItem {
IconRef _iconRef;
}
-- (id)init {
+- (instancetype)init {
self = [super init];
if (self) {
@@ -123,6 +123,7 @@ - (BOOL)isLoginItem {
if (LSSharedFileListItemResolve(loginItem, 0, &itemUrl, NULL) == noErr) {
if (CFEqual(itemUrl, url)) {
+ CFRelease(loginItemsArray);
return YES;
}
}
@@ -130,6 +131,9 @@ - (BOOL)isLoginItem {
NSLog(@"Error: LSSharedFileListItemResolve failed.");
}
}
+ if (loginItemsArray) {
+ CFRelease(loginItemsArray);
+ }
}
else {
NSLog(@"Warning: LSSharedFileListCreate failed, could not get list of login items.");
@@ -191,11 +195,14 @@ - (LSSharedFileListItemRef)findItem:(LSSharedFileListRef)loginItems
if (LSSharedFileListItemResolve(loginItem, 0, &itemUrl, NULL) == noErr) {
if (CFEqual(itemUrl, path)) {
+ CFRelease(loginItemsArray);
return loginItem;
}
}
}
-
+ if (loginItemsArray) {
+ CFRelease(loginItemsArray);
+ }
return nil;
}
@@ -227,7 +234,9 @@ - (void)removeLoginItem {
NSLog(@"Warning: LSSharedFileListItemResolve failed, could not resolve item.");
}
}
-
+ if (loginItemsArray) {
+ CFRelease(loginItemsArray);
+ }
if (!removed) {
NSLog(@"Error: could not find login item to remove.");
}
diff --git a/PrefPane/MenuMetersPref.h b/PrefPane/MenuMetersPref.h
index 411c03c3..bd026cf7 100644
--- a/PrefPane/MenuMetersPref.h
+++ b/PrefPane/MenuMetersPref.h
@@ -39,7 +39,7 @@
#import
#endif
-@interface MenuMetersPref : NSWindowController {
+@interface MenuMetersPref : NSWindowController {
// Our preferences
MenuMeterDefaults *ourPrefs;
diff --git a/PrefPane/MenuMetersPref.m b/PrefPane/MenuMetersPref.m
index 26f65ee4..b98953cf 100644
--- a/PrefPane/MenuMetersPref.m
+++ b/PrefPane/MenuMetersPref.m
@@ -109,7 +109,6 @@ static void scChangeCallback(SCDynamicStoreRef store, CFArrayRef changedKeys, vo
} // scChangeCallback
@implementation MenuMetersPref {
- IBOutlet NSWindow *_window;
#ifdef SPARKLE
SUUpdater *updater;
#endif
@@ -164,12 +163,11 @@ - (void)setupAboutTab:(NSString *)about {
NSMutableAttributedString *x = [[NSMutableAttributedString alloc] initWithURL:[NSURL fileURLWithPath:pathToRTF] options:@{} documentAttributes:nil error:nil];
[x addAttribute:NSForegroundColorAttributeName value:[NSColor textColor] range:NSMakeRange(0, x.length)];
[aboutView.textStorage appendAttributedString:x];
+ aboutView.textContainerInset = NSMakeSize(12, 8);
}
- (void)initCommon:(NSString *)about {
[self loadWindow];
- self.window = _window;
- [self.window setDelegate:self];
[self mainViewDidLoad];
[self willSelect];
[self setupAboutTab:about];
@@ -178,7 +176,62 @@ - (void)initCommon:(NSString *)about {
[self.window makeKeyAndOrderFront:self];
}
[self setupSparkleUI];
+
+ if (@available(macOS 10.16, *)) {
+ NSToolbar *toolbar = [NSToolbar new];
+ toolbar.delegate = self;
+ self.window.toolbar = toolbar;
+ self.window.toolbarStyle = NSWindowToolbarStylePreference;
+
+ prefTabs.tabViewType = NSNoTabsNoBorder;
+ NSString *selectedIdentifier = prefTabs.selectedTabViewItem.identifier;
+ [self.window.toolbar setSelectedItemIdentifier:selectedIdentifier];
+ prefTabs.delegate = self;
+ }
+}
+
+- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar {
+ NSMutableArray *items = [NSMutableArray new];
+ for (NSTabViewItem *tabItem in prefTabs.tabViewItems) {
+ NSString *identifier = tabItem.identifier;
+ [items addObject:identifier];
+ }
+ return items;
+}
+
+- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar {
+ return [self toolbarDefaultItemIdentifiers:toolbar];
+}
+
+- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar {
+ return [self toolbarDefaultItemIdentifiers:toolbar];
+}
+
+- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdent willBeInsertedIntoToolbar:(BOOL)willBeInserted {
+ NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdent];
+ NSUInteger tabIdx = [prefTabs indexOfTabViewItemWithIdentifier:itemIdent];
+ NSTabViewItem *tabItem = [prefTabs tabViewItemAtIndex:tabIdx];
+ item.paletteLabel = tabItem.label;
+ item.label = tabItem.label;
+ item.action = @selector(toolbarSelection:);
+ if (@available(macOS 10.16, *)) {
+ item.image = [NSImage imageWithSystemSymbolName:itemIdent accessibilityDescription:@""];
+ }
+ return item;
+}
+
+- (IBAction)toolbarSelection:(id)sender {
+ NSString *itemIdent = [(NSToolbarItem*)sender itemIdentifier];
+ NSUInteger tabIdx = [prefTabs indexOfTabViewItemWithIdentifier:itemIdent];
+ NSTabViewItem *tabItem = [prefTabs tabViewItemAtIndex:tabIdx];
+ [prefTabs selectTabViewItem:tabItem];
}
+
+- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem {
+ NSString *itemIdent = [tabViewItem identifier];
+ [self.window.toolbar setSelectedItemIdentifier:itemIdent];
+}
+
#ifdef SPARKLE
- (instancetype)initWithAboutFileName:(NSString *)about andUpdater:(SUUpdater *)updater_ {
@@ -271,7 +324,7 @@ - (IBAction)updateInterval:(id)sender {
}
///////////////////////////////////////////////////////////////
//
-// Pref pane standard methods
+// Pref pane standard methods
//
///////////////////////////////////////////////////////////////
@@ -283,17 +336,15 @@ - (void)mainViewDidLoad {
NSEnumerator *diskImageSetEnum = [kDiskImageSets objectEnumerator];
[diskImageSet removeAllItems];
NSString *imageSetName = nil;
+ NSBundle *bundle = [NSBundle bundleForClass:[self class]];
while ((imageSetName = [diskImageSetEnum nextObject])) {
- [diskImageSet addItemWithTitle:[[NSBundle bundleForClass:[self class]]
- localizedStringForKey:imageSetName
- value:nil
- table:@"DiskImageSet"]];
+ [diskImageSet addItemWithTitle:[bundle localizedStringForKey:imageSetName value:nil table:@"DiskImageSet"]];
}
// Set up a NSFormatter for use printing timers
NSNumberFormatter *intervalFormatter = [[NSNumberFormatter alloc] init];
[intervalFormatter setLocalizesFormat:YES];
- [intervalFormatter setFormat:@"###0.0"];
+ [intervalFormatter setFormat:@"###0.0\u2009s"];
// Go through an archive/unarchive cycle to work around a bug on pre-10.2.2 systems
// see http://cocoa.mamasam.com/COCOADEV/2001/12/2/21029.php
intervalFormatter = [NSUnarchiver unarchiveObjectWithData:[NSArchiver archivedDataWithRootObject:intervalFormatter]];
@@ -303,27 +354,22 @@ - (void)mainViewDidLoad {
[netIntervalDisplay setFormatter:intervalFormatter];
// Configure the scale menu to contain images and enough space
- [[netScaleCalc itemAtIndex:kNetScaleCalcLinear] setImage:[[NSImage alloc] initWithContentsOfFile:[[self bundle]
- pathForResource:@"LinearScale"
- ofType:@"tiff"]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcLinear] setTitle:[NSString stringWithFormat:@" %@",
- [[netScaleCalc itemAtIndex:kNetScaleCalcLinear] title]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcSquareRoot] setImage:[[NSImage alloc] initWithContentsOfFile:[[self bundle]
- pathForResource:@"SquareRootScale"
- ofType:@"tiff"]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcSquareRoot] setTitle:[NSString stringWithFormat:@" %@",
- [[netScaleCalc itemAtIndex:kNetScaleCalcSquareRoot] title]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcCubeRoot] setImage:[[NSImage alloc] initWithContentsOfFile:[[self bundle]
- pathForResource:@"CubeRootScale"
- ofType:@"tiff"]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcCubeRoot] setTitle:[NSString stringWithFormat:@" %@",
- [[netScaleCalc itemAtIndex:kNetScaleCalcCubeRoot] title]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcLog] setImage:[[NSImage alloc] initWithContentsOfFile:[[self bundle]
- pathForResource:@"LogScale"
- ofType:@"tiff"]]];
- [[netScaleCalc itemAtIndex:kNetScaleCalcLog] setTitle:[NSString stringWithFormat:@" %@",
- [[netScaleCalc itemAtIndex:kNetScaleCalcLog] title]]];
-
+ NSMenuItem *item;
+ item = [netScaleCalc itemAtIndex:kNetScaleCalcLinear];
+ item.image = [bundle imageForResource:@"LinearScale"];
+ item.title = [@" %@" stringByAppendingString:item.title];
+
+ item = [netScaleCalc itemAtIndex:kNetScaleCalcSquareRoot];
+ item.image = [bundle imageForResource:@"SquareRootScale"];
+ item.title = [@" %@" stringByAppendingString:item.title];
+
+ item = [netScaleCalc itemAtIndex:kNetScaleCalcCubeRoot];
+ item.image = [bundle imageForResource:@"CubeRootScale"];
+ item.title = [@" %@" stringByAppendingString:item.title];
+
+ item = [netScaleCalc itemAtIndex:kNetScaleCalcLog];
+ item.image = [bundle imageForResource:@"LogScale"];
+ item.title = [@" %@" stringByAppendingString:item.title];
{
NSString *oldAppPath = [@"~/Library/PreferencePanes/MenuMeters.prefPane/Contents/Resources/MenuMetersApp.app" stringByExpandingTildeInPath];
EMCLoginItem *oldItem = [EMCLoginItem loginItemWithPath:oldAppPath];
@@ -340,7 +386,7 @@ - (void)mainViewDidLoad {
}
system("killall MenuMetersApp");
{
- EMCLoginItem *thisItem = [EMCLoginItem loginItemWithBundle:[NSBundle mainBundle]];
+ EMCLoginItem *thisItem = [EMCLoginItem loginItemWithBundle:bundle];
if (!thisItem.isLoginItem) {
[thisItem addLoginItem];
}
@@ -459,7 +505,6 @@ - (void)menuExtraUnloaded:(NSNotification *)notification {
- (void)menuExtraChangedPrefs:(NSNotification *)notification {
if (ourPrefs) {
- [ourPrefs syncWithDisk];
[self cpuPrefChange:nil];
[self diskPrefChange:nil];
[self memPrefChange:nil];
@@ -526,7 +571,7 @@ - (int)cpuDisplayMode {
r |= kCPUDisplayGraph;
if ([cpuThermometer state] == NSOnState)
r |= kCPUDisplayThermometer;
- if ([cpuHorizontalThermometer state] == NSOnState)
+ else if ([cpuHorizontalThermometer state] == NSOnState)
r |= kCPUDisplayHorizontalThermometer;
return r;
}
@@ -544,6 +589,13 @@ - (IBAction)cpuPrefChange:(id)sender {
// Save changes
if (sender == cpuPercentage || sender == cpuGraph || sender == cpuThermometer || sender == cpuHorizontalThermometer) {
+
+ if (sender == cpuThermometer && cpuThermometer.state == NSOnState) {
+ cpuHorizontalThermometer.state = NSOffState;
+ }
+ else if (sender == cpuHorizontalThermometer && cpuHorizontalThermometer.state == NSOnState) {
+ cpuThermometer.state = NSOffState;
+ }
[ourPrefs saveCpuDisplayMode:[self cpuDisplayMode]];
}
else if (sender == cpuTemperatureToggle) {
@@ -567,7 +619,7 @@ - (IBAction)cpuPrefChange:(id)sender {
[ourPrefs saveCpuPercentDisplay:(int)[cpuPercentMode indexOfSelectedItem]];
}
else if (sender == cpuMaxProcessCount) {
- [ourPrefs saveCpuMaxProcessCount:(int)[cpuMaxProcessCount intValue]];
+ [ourPrefs saveCpuMaxProcessCount:[cpuMaxProcessCount intValue]];
}
else if (sender == cpuGraphWidth) {
[ourPrefs saveCpuGraphLength:[cpuGraphWidth intValue]];
@@ -642,19 +694,19 @@ - (IBAction)cpuPrefChange:(id)sender {
}
// Update controls
- [cpuPercentage setState:([ourPrefs cpuDisplayMode] & kCPUDisplayPercent) ? NSOnState : NSOffState];
- [cpuGraph setState:([ourPrefs cpuDisplayMode] & kCPUDisplayGraph) ? NSOnState : NSOffState];
- [cpuThermometer setState:([ourPrefs cpuDisplayMode] & kCPUDisplayThermometer) ? NSOnState : NSOffState];
- [cpuHorizontalThermometer setState:([ourPrefs cpuDisplayMode] & kCPUDisplayHorizontalThermometer) ? NSOnState : NSOffState];
+ int cpuDisplayMode = [ourPrefs cpuDisplayMode];
+ [cpuPercentage setState:(cpuDisplayMode & kCPUDisplayPercent) ? NSOnState : NSOffState];
+ [cpuGraph setState:(cpuDisplayMode & kCPUDisplayGraph) ? NSOnState : NSOffState];
+ [cpuThermometer setState:(cpuDisplayMode & kCPUDisplayThermometer) ? NSOnState : NSOffState];
+ [cpuHorizontalThermometer setState:(cpuDisplayMode & kCPUDisplayHorizontalThermometer) ? NSOnState : NSOffState];
+
if ([cpuHorizontalThermometer state] == NSOnState) {
[cpuPercentage setEnabled:NO];
[cpuGraph setEnabled:NO];
- [cpuThermometer setEnabled:NO];
}
else {
[cpuPercentage setEnabled:YES];
[cpuGraph setEnabled:YES];
- [cpuThermometer setEnabled:YES];
}
[cpuTemperatureToggle setState:[ourPrefs cpuShowTemperature]];
[cpuTemperatureUnit selectItemAtIndex:[ourPrefs cpuTemperatureUnit]];
@@ -663,7 +715,7 @@ - (IBAction)cpuPrefChange:(id)sender {
[cpuPercentMode selectItemAtIndex:[ourPrefs cpuPercentDisplay]];
[cpuMaxProcessCount setIntValue:[ourPrefs cpuMaxProcessCount]];
[cpuMaxProcessCountCountLabel setStringValue:[NSString stringWithFormat:NSLocalizedString(@"(%d)", @"DO NOT LOCALIZE!!!"),
- (short)[ourPrefs cpuMaxProcessCount]]];
+ [ourPrefs cpuMaxProcessCount]]];
[cpuGraphWidth setIntValue:[ourPrefs cpuGraphLength]];
[cpuHorizontalRows setIntValue:[ourPrefs cpuHorizontalRows]];
[cpuMenuWidth setIntValue:[ourPrefs cpuMenuWidth]];
@@ -695,7 +747,7 @@ - (IBAction)cpuPrefChange:(id)sender {
[cpuPercentModeLabel setTextColor:[NSColor controlTextColor]];
} else {
[cpuPercentMode setEnabled:NO];
- [cpuPercentModeLabel setTextColor:[NSColor lightGrayColor]];
+ [cpuPercentModeLabel setTextColor:[NSColor disabledControlTextColor]];
}
*/
if ([cpuGraph state] == NSOnState) {
@@ -704,7 +756,7 @@ - (IBAction)cpuPrefChange:(id)sender {
}
else {
[cpuGraphWidth setEnabled:NO];
- [cpuGraphWidthLabel setTextColor:[NSColor lightGrayColor]];
+ [cpuGraphWidthLabel setTextColor:[NSColor disabledControlTextColor]];
}
if ([cpuHorizontalThermometer state] == NSOnState) {
[cpuHorizontalRows setEnabled:YES];
@@ -714,9 +766,9 @@ - (IBAction)cpuPrefChange:(id)sender {
}
else {
[cpuHorizontalRows setEnabled:NO];
- [cpuHorizontalRowsLabel setTextColor:[NSColor lightGrayColor]];
+ [cpuHorizontalRowsLabel setTextColor:[NSColor disabledControlTextColor]];
[cpuMenuWidth setEnabled:NO];
- [cpuMenuWidthLabel setTextColor:[NSColor lightGrayColor]];
+ [cpuMenuWidthLabel setTextColor:[NSColor disabledControlTextColor]];
}
/* if ((([cpuDisplayMode indexOfSelectedItem] + 1) & (kCPUDisplayGraph | kCPUDisplayThermometer | kCPUDisplayHorizontalThermometer)) ||
((([cpuDisplayMode indexOfSelectedItem] + 1) & kCPUDisplayPercent) &&
@@ -728,12 +780,11 @@ - (IBAction)cpuPrefChange:(id)sender {
/* } else {
[cpuUserColor setEnabled:NO];
[cpuSystemColor setEnabled:NO];
- [cpuUserColorLabel setTextColor:[NSColor lightGrayColor]];
- [cpuSystemColorLabel setTextColor:[NSColor lightGrayColor]];
+ [cpuUserColorLabel setTextColor:[NSColor disabledControlTextColor]];
+ [cpuSystemColorLabel setTextColor:[NSColor disabledControlTextColor]];
}*/
- // Write prefs and notify
- [ourPrefs syncWithDisk];
+ // Notify
if ([self isExtraWithBundleIDLoaded:kCPUMenuBundleID]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kCPUMenuBundleID
object:kPrefChangeNotification
@@ -772,8 +823,7 @@ - (IBAction)diskPrefChange:(id)sender {
[diskSelectMode selectItemAtIndex:-1]; // Work around multiselects. AppKit problem?
[diskSelectMode selectItemAtIndex:[ourPrefs diskSelectMode]];
- // Write prefs and notify
- [ourPrefs syncWithDisk];
+ // Notify
if ([self isExtraWithBundleIDLoaded:kDiskMenuBundleID]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kDiskMenuBundleID
object:kPrefChangeNotification
@@ -870,7 +920,7 @@ - (IBAction)memPrefChange:(id)sender {
}
else {
[memGraphWidth setEnabled:NO];
- [memGraphWidthLabel setTextColor:[NSColor lightGrayColor]];
+ [memGraphWidthLabel setTextColor:[NSColor disabledControlTextColor]];
}
if ([memPageIndicator state] == NSOnState) {
[memPageinColorLabel setTextColor:[NSColor controlTextColor]];
@@ -879,20 +929,19 @@ - (IBAction)memPrefChange:(id)sender {
[memPageoutColor setEnabled:YES];
}
else {
- [memPageinColorLabel setTextColor:[NSColor lightGrayColor]];
- [memPageoutColorLabel setTextColor:[NSColor lightGrayColor]];
+ [memPageinColorLabel setTextColor:[NSColor disabledControlTextColor]];
+ [memPageoutColorLabel setTextColor:[NSColor disabledControlTextColor]];
[memPageinColor setEnabled:NO];
[memPageoutColor setEnabled:NO];
}
- /* if (([memDisplayMode indexOfSelectedItem] +1) == kMemDisplayBar) {
+ /* if (([memDisplayMode indexOfSelectedItem] +1) == kMemDisplayBar) {
[memPressureMode setEnabled:YES];
}
else {
[memPressureMode setEnabled:NO];
}*/
- // Write prefs and notify
- [ourPrefs syncWithDisk];
+ // Notify
if ([self isExtraWithBundleIDLoaded:kMemMenuBundleID]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kMemMenuBundleID
object:kPrefChangeNotification
@@ -1027,9 +1076,9 @@ - (IBAction)netPrefChange:(id)sender {
}
else {
[netGraphStyle setEnabled:NO];
- [netGraphStyleLabel setTextColor:[NSColor lightGrayColor]];
+ [netGraphStyleLabel setTextColor:[NSColor disabledControlTextColor]];
[netGraphWidth setEnabled:NO];
- [netGraphWidthLabel setTextColor:[NSColor lightGrayColor]];
+ [netGraphWidthLabel setTextColor:[NSColor disabledControlTextColor]];
}
if ((([netDisplayMode indexOfSelectedItem] + 1) & kNetDisplayArrows) ||
(([netDisplayMode indexOfSelectedItem] + 1) & kNetDisplayGraph)) {
@@ -1040,13 +1089,12 @@ - (IBAction)netPrefChange:(id)sender {
}
else {
[netScaleMode setEnabled:NO];
- [netScaleModeLabel setTextColor:[NSColor lightGrayColor]];
+ [netScaleModeLabel setTextColor:[NSColor disabledControlTextColor]];
[netScaleCalc setEnabled:NO];
- [netScaleCalcLabel setTextColor:[NSColor lightGrayColor]];
+ [netScaleCalcLabel setTextColor:[NSColor disabledControlTextColor]];
}
- // Write prefs and notify
- [ourPrefs syncWithDisk];
+ // Notify
if ([self isExtraWithBundleIDLoaded:kNetMenuBundleID]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kNetMenuBundleID
object:kPrefChangeNotification
@@ -1063,9 +1111,7 @@ - (IBAction)netPrefChange:(id)sender {
- (void)loadExtraAtURL:(NSURL *)extraURL withID:(NSString *)bundleID {
#ifdef ELCAPITAN
- [ourPrefs saveBoolPref:bundleID
- value:YES];
- [ourPrefs syncWithDisk];
+ [ourPrefs saveBoolPref:bundleID value:YES];
[[NSNotificationCenter defaultCenter] postNotificationName:bundleID
object:kPrefChangeNotification
userInfo:nil];
@@ -1110,7 +1156,6 @@ - (BOOL)isExtraWithBundleIDLoaded:(NSString *)bundleID {
- (void)removeExtraWithBundleID:(NSString *)bundleID {
[ourPrefs saveBoolPref:bundleID value:NO];
- [ourPrefs syncWithDisk];
[[NSNotificationCenter defaultCenter] postNotificationName:bundleID
object:kPrefChangeNotification
userInfo:nil];
diff --git a/PrefPane/de.lproj/DiskImageSet.strings b/PrefPane/de.lproj/DiskImageSet.strings
index 2891334c..ea586038 100644
--- a/PrefPane/de.lproj/DiskImageSet.strings
+++ b/PrefPane/de.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "Menu Extra konnte nicht geladen werden!";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"Bitte folgen Sie der Anleitung zur Aktivierung von \„Menu Extras\“.";
+"For instructions on enabling third-party menu extras please see the documentation." = "Bitte folgen Sie der Anleitung zur Aktivierung von „Menu Extras“.";
// Strings for the disk icon sets
"Color Arrows" = "Farbige Pfeile";
diff --git a/PrefPane/de.lproj/MenuMetersPref.strings b/PrefPane/de.lproj/MenuMetersPref.strings
index 5cf4299e..f17b0977 100644
--- a/PrefPane/de.lproj/MenuMetersPref.strings
+++ b/PrefPane/de.lproj/MenuMetersPref.strings
@@ -1,433 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "12"; */
+/* MenuMeters */
"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "Festplatte"; ObjectID = "100"; */
+/* Disk */
"100.label" = "Festplatte";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "102"; */
+/* CPU */
"102.label" = "CPU";
-/* Class = "NSTabViewItem"; label = "Speicher"; ObjectID = "103"; */
+/* Memory */
"103.label" = "Speicher";
-/* Class = "NSTabViewItem"; label = "Netzwerk"; ObjectID = "105"; */
+/* Network */
"105.label" = "Netzwerk";
-/* Class = "NSMenuItem"; title = "Grafik"; ObjectID = "145"; */
-"IS4-Xc-psg.title" = "Grafik";
-
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "146"; */
-"146.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Prozentsatz"; ObjectID = "148"; */
-"Jeh-C2-Wwp.title" = "Prozentsatz";
-
-/* Class = "NSMenuItem"; title = "Grafik und Prozentsatz"; ObjectID = "149"; */
-"149.title" = "Grafik und Prozentsatz";
-
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "203"; */
+/* ImageSet */
"203.title" = "ImageSet";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "206"; */
-"206.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Balken"; ObjectID = "219"; */
+/* Usage Bar */
"219.title" = "Balken";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "223"; */
-"223.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Diagramm"; ObjectID = "225"; */
+/* Usage Chart */
"225.title" = "Diagramm";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "293"; */
-"293.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Durchsatz"; ObjectID = "294"; */
+/* Throughput */
"294.title" = "Durchsatz";
-/* Class = "NSMenuItem"; title = "Pfeile"; ObjectID = "297"; */
+/* Arrows */
"297.title" = "Pfeile";
-/* Class = "NSMenuItem"; title = "Pfeile und Durchsatz"; ObjectID = "299"; */
+/* Arrows and Throughput */
"299.title" = "Pfeile und Durchsatz";
-/* Class = "NSMenuItem"; title = "Grafik"; ObjectID = "314"; */
+/* Graph */
"314.title" = "Grafik";
-/* Class = "NSMenuItem"; title = "Thermometer"; ObjectID = "357"; */
-"r6t-Zl-sS4.title" = "Vertikales Balkendiagramm";
-"spo-WT-wCm.title" = "Horizontales Balkendiagramm";
-
-/* Class = "NSMenuItem"; title = "Grafik, Prozentsatz und Thermometer"; ObjectID = "358"; */
-"358.title" = "Grafik, Prozentsatz und Thermometer";
-
-/* Class = "NSMenuItem"; title = "Prozentsatz und Thermometer"; ObjectID = "359"; */
-"359.title" = "Prozentsatz und Thermometer";
-
-/* Class = "NSMenuItem"; title = "Grafik und Thermometer"; ObjectID = "360"; */
-"360.title" = "Grafik und Thermometer";
-
-/* Class = "NSMenuItem"; title = "Grafik und Pfeile"; ObjectID = "363"; */
+/* Graph and Arrows */
"363.title" = "Grafik und Pfeile";
-/* Class = "NSMenuItem"; title = "Grafik und Durchsatz"; ObjectID = "365"; */
+/* Graph and Throughput */
"365.title" = "Grafik und Durchsatz";
-/* Class = "NSMenuItem"; title = "Grafik, Pfeile und Durchsatz"; ObjectID = "366"; */
+/* Graph, Arrows and Throughput */
"366.title" = "Grafik, Pfeile und Durchsatz";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "382"; */
-"382.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Gesamt (große Schrift)"; ObjectID = "384"; */
+/* Total (large text) */
"384.title" = "Gesamt (große Schrift)";
-/* Class = "NSMenuItem"; title = "Benutzer und System (kleine Schrift)"; ObjectID = "385"; */
+/* User and System (small text) */
"385.title" = "Benutzer und System (kleine Schrift)";
-/* Class = "NSMenuItem"; title = "Gesamt (mittlere Schrift)"; ObjectID = "386"; */
+/* Total (medium text) */
"386.title" = "Gesamt (mittlere Schrift)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "403"; */
-"403.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Von oben und unten ausgehend"; ObjectID = "404"; */
+/* Opposed */
"404.title" = "Von oben und unten ausgehend";
-/* Class = "NSMenuItem"; title = "Standard"; ObjectID = "406"; */
+/* Standard */
"406.title" = "Standard";
-/* Class = "NSMenuItem"; title = "Von der Mitte ausgehend"; ObjectID = "407"; */
+/* Centered */
"407.title" = "Von der Mitte ausgehend";
-/* Class = "NSMenuItem"; title = "Historie als Grafik"; ObjectID = "472"; */
+/* Usage History Graph */
"472.title" = "Historie als Grafik";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "477"; */
-"477.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "pulsieren"; ObjectID = "478"; */
+/* pulse */
"478.title" = "pulsieren";
-/* Class = "NSMenuItem"; title = "leuchten"; ObjectID = "479"; */
+/* glow */
"479.title" = "leuchten";
-/* Class = "NSMenuItem"; title = "Primäre Schnittstelle (automatisch)"; ObjectID = "487"; */
+/* Primary (automatic) */
"487.title" = "Primäre Schnittstelle (automatisch)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "489"; */
-"489.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "inverses leuchten"; ObjectID = "497"; */
+/* inverse glow */
"497.title" = "inverses leuchten";
-/* Class = "NSMenuItem"; title = "inverses pulsieren"; ObjectID = "498"; */
+/* inverse pulse */
"498.title" = "inverses pulsieren";
-/* Class = "NSMenuItem"; title = "öffnet das Volume"; ObjectID = "500"; */
+/* opens the volume */
"500.title" = "öffnet das Volume";
-/* Class = "NSMenuItem"; title = "wirft das Volume aus"; ObjectID = "502"; */
+/* unmounts/ejects the volume */
"502.title" = "wirft das Volume aus";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "503"; */
-"503.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Benutzt/Frei Summen"; ObjectID = "508"; */
+/* Used/Free Totals */
"508.title" = "Benutzt/Frei Summen";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "522"; */
-"522.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Schnittstellengeschwindigkeit"; ObjectID = "525"; */
+/* Interface speed */
"525.title" = "Schnittstellengeschwindigkeit";
-/* Class = "NSMenuItem"; title = "Größter Durchsatz"; ObjectID = "526"; */
+/* Peak traffic */
"526.title" = "Größter Durchsatz";
-/* Class = "NSMenuItem"; title = "Linear"; ObjectID = "541"; */
+/* Linear */
"541.title" = "Linear";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "542"; */
-"542.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Logarithmisch"; ObjectID = "545"; */
+/* Logarithmic */
"545.title" = "Logarithmisch";
-/* Class = "NSMenuItem"; title = "Kubikwurzel"; ObjectID = "556"; */
+/* Cube root */
"556.title" = "Kubikwurzel";
-/* Class = "NSMenuItem"; title = "Quadratwurzel"; ObjectID = "557"; */
+/* Square root */
"557.title" = "Quadratwurzel";
-/* Class = "NSMenuItem"; title = "Senden/Empfangen"; ObjectID = "590"; */
+/* Transmit/Receive */
"590.title" = "Senden/Empfangen";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "591"; */
-"591.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Empfangen/Senden"; ObjectID = "592"; */
+/* Receive/Transmit */
"592.title" = "Empfangen/Senden";
-/* Class = "NSMenuItem"; title = "Von unten und oben ausgehend"; ObjectID = "613"; */
+/* Inverse Opposed */
"613.title" = "Von unten und oben ausgehend";
-/* Class = "NSButtonCell"; title = "Festplattenaktivität Menu Meter zeigen"; ObjectID = "1006"; */
+/* Display Disk Activity Menu Meter */
"1006.title" = "Festplattenaktivität Menu Meter zeigen";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1007"; */
+/* x */
"1007.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Aktualisierungsintervall (Sekunden):"; ObjectID = "1010"; */
-"1010.title" = "Aktualisierungsintervall (Sekunden):";
+/* Update interval: */
+"1010.title" = "Aktualisierungsintervall";
-/* Class = "NSTextFieldCell"; title = "Auswählen eines Volume aus dem Menü"; ObjectID = "1011"; */
+/* Selecting a volume from the disk menu */
"1011.title" = "Auswählen eines Volume aus dem Menü";
-/* Class = "NSTextFieldCell"; title = "(Bei gedrückter Optionstaste [⌥] wird das jeweils andere Verhalten aktiv)"; ObjectID = "1013"; */
+/* (Holding the Option key will reverse the behavior) */
"1013.title" = "(Bei gedrückter Optionstaste [⌥] wird das jeweils andere Verhalten aktiv)";
-/* Class = "NSButtonCell"; title = "CPU Menu Meter zeigen"; ObjectID = "1014"; */
+/* Display CPU Menu Meter */
"1014.title" = "CPU Menu Meter zeigen";
-/* Class = "NSTextFieldCell"; title = "Aktualisierungsintervall (Sekunden):"; ObjectID = "1017"; */
-"1017.title" = "Aktualisierungsintervall (Sekunden):";
+/* Update interval: */
+"1017.title" = "Aktualisierungsintervall";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1018"; */
+/* x */
"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Benutzerauslastung"; ObjectID = "1019"; */
+/* User */
"1019.title" = "Benutzerauslastung";
-/* Class = "NSTextFieldCell"; title = "Systemauslastung"; ObjectID = "1020"; */
+/* System */
"1020.title" = "Systemauslastung";
-/* Class = "NSTextFieldCell"; title = "Prozentsatz zeigen als:"; ObjectID = "1022"; */
-"1022.title" = "Prozentsatz zeigen als:";
-
-/* Class = "NSButtonCell"; title = "Durchschnitt für alle Prozessoren zusammen anzeigen"; ObjectID = "1024"; */
-"1024.title" = "Durchschnitt für alle Prozessoren zusammen anzeigen";
-
-/* Class = "NSTextFieldCell"; title = "Breite der Grafik:"; ObjectID = "1025"; */
-"1025.title" = "Breite der Grafik:";
-
-/* Class = "NSTextFieldCell"; title = "Prozentsatzoptionen"; ObjectID = "1026"; */
-"1026.title" = "Prozentsatzoptionen";
-
-/* Class = "NSTextFieldCell"; title = "Grafikoptionen"; ObjectID = "1027"; */
-"1027.title" = "Grafikoptionen";
+/* Width */
+"1025.title" = "Breite";
-/* Class = "NSTextFieldCell"; title = "Sonstiges"; ObjectID = "1028"; */
-"1028.title" = "Sonstiges";
+/* PowerMate shows CPU usage */
+"1030.title" = "PowerMate zeigt CPU-Benutzung";
-/* Class = "NSTextFieldCell"; title = "Farben"; ObjectID = "1029"; */
-"1029.title" = "Farben";
-
-/* Class = "NSButtonCell"; title = "PowerMate zeigt CPU-Benutzung durch"; ObjectID = "1030"; */
-"1030.title" = "PowerMate zeigt CPU-Benutzung durch";
-
-/* Class = "NSButtonCell"; title = "Speicher Menu Meter zeigen"; ObjectID = "1032"; */
+/* Display Memory Menu Meter */
"1032.title" = "Speicher Menu Meter zeigen";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1033"; */
+/* x */
"1033.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Aktualisierungsintervall (Sekunden):"; ObjectID = "1035"; */
-"1035.title" = "Aktualisierungsintervall (Sekunden):";
+/* Update interval: */
+"1035.title" = "Aktualisierungsintervall";
-/* Class = "NSButtonCell"; title = "Benutzt/Frei beschriften"; ObjectID = "1037"; */
+/* Show Used/Free labels */
"1037.title" = "Benutzt/Frei beschriften";
-/* Class = "NSTextFieldCell"; title = "Allgemein"; ObjectID = "1038"; */
-"1038.title" = "Allgemein";
-
-/* Class = "NSButtonCell"; title = "Ein-/Auslagerungsaktivität zeigen"; ObjectID = "1039"; */
+/* Show paging activity indicator */
"1039.title" = "Ein-/Auslagerungsaktivität zeigen";
-/* Class = "NSTextFieldCell"; title = "Farben"; ObjectID = "1040"; */
-"1040.title" = "Farben";
-
-/* Class = "NSTextFieldCell"; title = "Lesen"; ObjectID = "1041"; */
+/* Pagein */
"1041.title" = "Lesen";
-/* Class = "NSTextFieldCell"; title = "Schreiben"; ObjectID = "1042"; */
+/* Pageout */
"1042.title" = "Schreiben";
-/* Class = "NSTextFieldCell"; title = "Aktivität"; ObjectID = "1043"; */
-"1043.title" = "Aktivität";
-
-/* Class = "NSTextFieldCell"; title = "Breite der Grafik:"; ObjectID = "1044"; */
-"1044.title" = "Breite der Grafik:";
+/* Graph width: */
+"1044.title" = "Breite";
-/* Class = "NSTextFieldCell"; title = "Grafikoptionen"; ObjectID = "1045"; */
-"1045.title" = "Grafikoptionen";
-
-/* Class = "NSTextFieldCell"; title = "Aktiv"; ObjectID = "1047"; */
+/* Active */
"1047.title" = "Aktiv";
-/* Class = "NSTextFieldCell"; title = "Inaktiv"; ObjectID = "1048"; */
+/* Inactive */
"1048.title" = "Inaktiv";
-/* Class = "NSTextFieldCell"; title = "Reserviert"; ObjectID = "1049"; */
+/* Wired */
"1049.title" = "Reserviert";
-/* Class = "NSTextFieldCell"; title = "Free"; ObjectID = "1050"; */
-"1050.title" = "Free";
+/* Free */
+"1050.title" = "Frei";
-/* Class = "NSTextFieldCell"; title = "Used"; ObjectID = "1051"; */
-"1051.title" = "Used";
+/* Used */
+"1051.title" = "Benutzt";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1053"; */
+/* x */
"1053.title" = "x";
-/* Class = "NSButtonCell"; title = "Netzwerk Menu Meter zeigen"; ObjectID = "1054"; */
+/* Display Network Menu Meter */
"1054.title" = "Netzwerk Menu Meter zeigen";
-/* Class = "NSTextFieldCell"; title = "Aktualisierungsintervall (Sekunden):"; ObjectID = "1056"; */
-"1056.title" = "Aktualisierungsintervall (Sekunden):";
+/* Update interval: */
+"1056.title" = "Aktualisierungsintervall";
-/* Class = "NSTextFieldCell"; title = "Senden"; ObjectID = "1057"; */
+/* Transmit */
"1057.title" = "Senden";
-/* Class = "NSTextFieldCell"; title = "Empfangen"; ObjectID = "1058"; */
+/* Receive */
"1058.title" = "Empfangen";
-/* Class = "NSButtonCell"; title = "Durchsatz beschriften (Tx/Rx)"; ObjectID = "1060"; */
+/* Show throughput labels (Tx/Rx) */
"1060.title" = "Durchsatz beschriften (Tx/Rx)";
-/* Class = "NSButtonCell"; title = "Werte unter 1KB/Sek. ignorieren"; ObjectID = "1061"; */
+/* Ignore values below 1K/s */
"1061.title" = "Werte unter 1KB/Sek. ignorieren";
-/* Class = "NSTextFieldCell"; title = "Grafikart:"; ObjectID = "1062"; */
-"1062.title" = "Grafikart:";
-
-/* Class = "NSTextFieldCell"; title = "Breite der Grafik:"; ObjectID = "1063"; */
-"1063.title" = "Breite der Grafik:";
-
-/* Class = "NSTextFieldCell"; title = "Durchsatzanzeige"; ObjectID = "1065"; */
-"1065.title" = "Durchsatzanzeige";
-
-/* Class = "NSTextFieldCell"; title = "Grafikoptionen"; ObjectID = "1066"; */
-"1066.title" = "Grafikoptionen";
+/* Graph style: */
+"1062.title" = "Grafikart";
-/* Class = "NSTextFieldCell"; title = "Farben"; ObjectID = "1067"; */
-"1067.title" = "Farben";
+/* Graph width: */
+"1063.title" = "Breite";
-/* Class = "NSTextFieldCell"; title = "Angezeigte Schnittstelle:"; ObjectID = "1068"; */
-"1068.title" = "Angezeigte Schnittstelle:";
+/* Display prefers interface: */
+"1068.title" = "Angezeigte Schnittstelle";
-/* Class = "NSTextFieldCell"; title = "Allgemein"; ObjectID = "1070"; */
-"1070.title" = "Allgemein";
+/* Display scales to: */
+"1071.title" = "Maßstab der Anzeige";
-/* Class = "NSTextFieldCell"; title = "Maßstab der Anzeige:"; ObjectID = "1071"; */
-"1071.title" = "Maßstab der Anzeige:";
+/* Display scaling: */
+"1073.title" = "Skalierung der Anzeige";
-/* Class = "NSTextFieldCell"; title = "Skalierung der Anzeige:"; ObjectID = "1073"; */
-"1073.title" = "Skalierung der Anzeige:";
+/* Display orientation: */
+"1075.title" = "Anzeigeausrichtung";
-/* Class = "NSTextFieldCell"; title = "Anzeigeausrichtung:"; ObjectID = "1075"; */
-"1075.title" = "Anzeigeausrichtung:";
-
-/* Class = "NSTextFieldCell"; title = "Inaktiv"; ObjectID = "1077"; */
+/* Inactive */
"1077.title" = "Inaktiv";
-/* Class = "NSTextFieldCell"; title = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)"; ObjectID = "1078"; */
-"1078.title" = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)";
+/* Rows */
+"1088.title" = "Reihen";
-/* Class = "NSButtonCell"; title = "Sort by CPU usage"; ObjectID = ""; */
-".title" = "Sort by CPU usage";
+/* Width */
+"1117.title" = "Breite";
-/* Class = "NSTextFieldCell"; title = "Horizontal Rows:"; ObjectID = ""; */
-".title" = "Horizontal Rows:";
+/* (%d) */
+"2NH-iF-l28.title" = "(%d)";
-/* Class = "NSTextFieldCell"; title = "Thermometer Display"; ObjectID = ""; */
-".title" = "Thermometer Display";
+/* the sum of all cores */
+"5Lg-aP-TSR.title" = "Summe aller Kerne";
-/* Class = "NSMenuItem"; title = "Horizontal Thermometer"; ObjectID = "941"; */
-"941.title" = "Horizontal Thermometer";
+/* the average of all cores */
+"BYT-hf-ygS.title" = "Durchschnitt aller Kerne";
-/* Class = "NSButtonCell"; title = "Show average for least utilized processors as single display"; ObjectID = ""; */
-".title" = "Show average for least utilized processors as single display";
+/* Temperature */
+"C4n-F2-kuL.title" = "Temperatur";
-/* Class = "NSTextFieldCell"; title = "Horizontal Width:"; ObjectID = ""; */
-".title" = "Horizontal Width:";
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Aktivitätsanzeige";
-/* Class = "NSButtonCell"; title = "Zeige Speicherdruck"; ObjectID = "Ve2-cJ-Q8P"; */
-"Ve2-cJ-Q8P.title" = "Zeige Speicherdruck";
+/* all cores sorted */
+"CG1-40-AVC.title" = "alle Kerne";
-/* Class = "NSButtonCell"; title = "Als Bits/Sek. anzeigen"; ObjectID = "K7W-5f-1U8"; */
-"K7W-5f-1U8.title" = "Als Bits/Sek. anzeigen";
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
-/* Class = "NSTabViewItem"; title = "Als Bits/Sek. anzeigen"; ObjectID = "FSw-QC-dn2"; */
-"FSw-QC-dn2.label" = "Über";
+/* original */
+"FPO-Jo-ubG.title" = "Original";
-/* Class = "NSButtonCell"; title = "Als Bits/Sek. anzeigen"; ObjectID = "XYi-uP-QCD"; */
-"XYi-uP-QCD.title" = "Nach Updates suchen";
+/* About */
+"FSw-QC-dn2.label" = "Über";
-/* Class = "NSButton"; title = "Zeige CPU Temperatur"; ObjectID = "5r7-xY-4OH"; */
-"5r7-xY-4OH.title" = "Zeige CPU Temperatur";
+/* physical cores only */
+"H5f-hN-vQV.title" = "nur pysikalische Kerne";
-/* title = "Automatic update check interval:"; ObjectID = "tug-YR-k7T"; */
-"tug-YR-k7T.title" = "Automatische Updates: ";
+/* Graph */
+"IS4-Xc-psg.title" = "Grafik";
-/* title = "Never"; ObjectID = "STJ-3R-khe"; */
-"STJ-3R-khe.title" = "Nie";
+/* Percentage */
+"Jeh-C2-Wwp.title" = "Prozentsatz";
-/* title = "Once per day"; ObjectID = "lh5-j8-SRe"; */
-"lh5-j8-SRe.title" = "Täglich";
+/* Show bits per second */
+"K7W-5f-1U8.title" = "Als Bits/Sek. anzeigen";
-/* title = "Once per week"; ObjectID = "LmO-Ij-G7M"; */
+/* Once per week */
"LmO-Ij-G7M.title" = "Wöchentlich";
-/* title = "Once per month"; ObjectID = "PuG-eZ-jRm"; */
+/* Once per month */
"PuG-eZ-jRm.title" = "Monatlich";
-/* title = "Show:"; ObjectID = "k2d-Cg-pqL"; */
-"k2d-Cg-pqL.title" = "Zeige:";
-
-/* title = "all cores, including hyperthreaded ones"; ObjectID = "vbH-jV-tUr"; */
-"vbH-jV-tUr.title" = "alle Kerne, inkl. Hyperthreat";
+/* Never */
+"STJ-3R-khe.title" = "Nie";
-/* title = "physical cores only"; ObjectID = "H5f-hN-vQV"; */
-"H5f-hN-vQV.title" = "nur pysikalische Kerne";
+/* Check updates now */
+"XYi-uP-QCD.title" = "Nach Updates suchen";
-/* title = "the average of all cores"; ObjectID = "BYT-hf-ygS"; */
-"BYT-hf-ygS.title" = "Durchschnitt aller Kerne";
+/* Display memory pressure */
+"aOw-Lj-aWS.title" = "Speicher Druck anzeigen";
-/* title = "the sum of all cores"; ObjectID = "5Lg-aP-TSR"; */
-"5Lg-aP-TSR.title" = "Summe aller Kerne";
+/* pure black/white */
+"ayz-p2-XC5.title" = "Schwarz-Weiß";
-/* title = "all cores sorted"; ObjectID = "CG1-40-AVC"; */
-"CG1-40-AVC.title" = "alle Kerne";
+/* Compressed */
+"ex0-hf-q5R.title" = "Komprimiert";
-/* title = "Process Display"; ObjectID = "p2Z-13-y3b"; */
-"p2Z-13-y3b.title" = "Prozessoptionen";
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperatur";
-/* title = "Processes to show:"; ObjectID = "rhi-NX-C3L"; */
-"rhi-NX-C3L.title" = "Max. Prozesse:";
+/* Show */
+"k2d-Cg-pqL.title" = "Zeige:";
-/* title = "Horizontal Thermometer Display"; ObjectID = "1094"; */
-"1094.title" = "Thermometeroptionen";
+/* Once per day */
+"lh5-j8-SRe.title" = "Täglich";
-/* title = "Horizontal Rows:"; ObjectID = "1088"; */
-"1088.title" = "Horizontale Reihen";
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Farbton";
-/* title = "Horizontal Width:"; ObjectID = "1117"; */
-"1117.title" = "Horizontale Breite";
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Öffnet entsprechende Kategorien";
-/* title = "pure black/white"; ObjectID = "ayz-p2-XC5"; */
-"ayz-p2-XC5.title" = "Schwarz-Weiß";
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "Vertikales Balkendiagramm";
-/* title = "original"; ObjectID = "FPO-Jo-ubG"; */
-"FPO-Jo-ubG.title" = "Original";
+/* Processes to show: */
+"rhi-NX-C3L.title" = "Max. Prozesse";
-/* title = "Color tint:"; ObjectID = "mAZ-f2-5AJ"; */
-"mAZ-f2-5AJ.title" = "Farbton:";
+/* Horizontal bar */
+"spo-WT-wCm.title" = "Horizontales Balkendiagramm";
-/* title = "Activity monitor:"; ObjectID = "CDM-3t-gon"; */
-"CDM-3t-gon.title" = "Aktivitätsanzeige:";
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatische Updates: ";
-/* title = "Opens specific panes"; ObjectID = "phH-yJ-I6O"; */
-"phH-yJ-I6O.title" = "Öffnet entsprechende Kategorien";
+/* all cores, including hyperthreaded ones */
+"vbH-jV-tUr.title" = "alle Kerne, inkl. Hyperthreat";
diff --git a/PrefPane/fi.lproj/DiskImageSet.strings b/PrefPane/fi.lproj/DiskImageSet.strings
index 720c263c..9752df74 100644
--- a/PrefPane/fi.lproj/DiskImageSet.strings
+++ b/PrefPane/fi.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "Menu Extra Could Not Load";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"For instructions on enabling third-party menu extras please see the documentation.";
+"For instructions on enabling third-party menu extras please see the documentation." = "For instructions on enabling third-party menu extras please see the documentation.";
// Strings for the disk icon sets
"Color Arrows" = "Värinuolet";
diff --git a/PrefPane/fi.lproj/MenuMetersPref.strings b/PrefPane/fi.lproj/MenuMetersPref.strings
index 6e918f65..23f0cdb0 100644
--- a/PrefPane/fi.lproj/MenuMetersPref.strings
+++ b/PrefPane/fi.lproj/MenuMetersPref.strings
@@ -1,394 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "12"; */
+/* MenuMeters */
"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "Disk"; ObjectID = "100"; */
+/* Disk */
"100.label" = "Levy";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "102"; */
+/* CPU */
"102.label" = "Prosessori";
-/* Class = "NSTabViewItem"; label = "Memory"; ObjectID = "103"; */
+/* Memory */
"103.label" = "Muisti";
-/* Class = "NSTabViewItem"; label = "Network"; ObjectID = "105"; */
+/* Network */
"105.label" = "Verkko";
-/* Class = "NSMenuItem"; title = "Graph"; ObjectID = "145"; */
-"IS4-Xc-psg.title" = "Kuvaaja";
-
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "146"; */
-"146.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Percentage"; ObjectID = "148"; */
-"Jeh-C2-Wwp.title" = "Prosenttiluku";
-
-/* Class = "NSMenuItem"; title = "Graph and Percentage"; ObjectID = "149"; */
-"149.title" = "Kuvaaja ja prosenttiluku";
-
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "203"; */
+/* ImageSet */
"203.title" = "ImageSet";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "206"; */
-"206.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Usage Bar"; ObjectID = "219"; */
+/* Usage Bar */
"219.title" = "Käyttöpalkki";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "223"; */
-"223.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Usage Chart"; ObjectID = "225"; */
+/* Usage Chart */
"225.title" = "Käyttökaavio";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "293"; */
-"293.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Throughput"; ObjectID = "294"; */
+/* Throughput */
"294.title" = "Siirtonopeus";
-/* Class = "NSMenuItem"; title = "Arrows"; ObjectID = "297"; */
+/* Arrows */
"297.title" = "Nuolet";
-/* Class = "NSMenuItem"; title = "Arrows and Throughput"; ObjectID = "299"; */
+/* Arrows and Throughput */
"299.title" = "Nuolet ja siirtonopeus";
-/* Class = "NSMenuItem"; title = "Graph"; ObjectID = "314"; */
+/* Graph */
"314.title" = "Kuvaaja";
-/* Class = "NSMenuItem"; title = "Thermometer"; ObjectID = "357"; */
-"r6t-Zl-sS4.title" = "Pystysuora pylväskaavio";
-"spo-WT-wCm.title" = "Vaakasuora pylväskaavio";
-
-/* Class = "NSMenuItem"; title = "Graph, Percentage and Thermometer"; ObjectID = "358"; */
-"358.title" = "Kuvaaja, prosenttiluku ja lämpötila";
-
-/* Class = "NSMenuItem"; title = "Percentage and Thermometer"; ObjectID = "359"; */
-"359.title" = "Prosenttiluku ja lämpötila";
-
-/* Class = "NSMenuItem"; title = "Graph and Thermometer"; ObjectID = "360"; */
-"360.title" = "Kuvaaja ja lämpötila";
-
-/* Class = "NSMenuItem"; title = "Graph and Arrows"; ObjectID = "363"; */
+/* Graph and Arrows */
"363.title" = "Kuvaaja ja nuolet";
-/* Class = "NSMenuItem"; title = "Graph and Throughput"; ObjectID = "365"; */
+/* Graph and Throughput */
"365.title" = "Kuvaaja ja siirtonopeus";
-/* Class = "NSMenuItem"; title = "Graph, Arrows and Throughput"; ObjectID = "366"; */
+/* Graph, Arrows and Throughput */
"366.title" = "Kuvaaja, nuolet ja siirtonopeus";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "382"; */
-"382.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Total (large text)"; ObjectID = "384"; */
+/* Total (large text) */
"384.title" = "Kokonaisosuus (suuri teksti)";
-/* Class = "NSMenuItem"; title = "User and System (small text)"; ObjectID = "385"; */
+/* User and System (small text) */
"385.title" = "Käyttäjä ja järjestelmä (pieni teksti)";
-/* Class = "NSMenuItem"; title = "Total (medium text)"; ObjectID = "386"; */
+/* Total (medium text) */
"386.title" = "Kokonaisosuus (keskikokoinen teksti)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "403"; */
-"403.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Opposed"; ObjectID = "404"; */
+/* Opposed */
"404.title" = "Vastakkainen";
-/* Class = "NSMenuItem"; title = "Standard"; ObjectID = "406"; */
+/* Standard */
"406.title" = "Tavallinen";
-/* Class = "NSMenuItem"; title = "Centered"; ObjectID = "407"; */
+/* Centered */
"407.title" = "Keskitetty";
-/* Class = "NSMenuItem"; title = "Usage History Graph"; ObjectID = "472"; */
+/* Usage History Graph */
"472.title" = "Käyttöhistorian kuvaaja";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "477"; */
-"477.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "pulse"; ObjectID = "478"; */
+/* pulse */
"478.title" = "pulssina";
-/* Class = "NSMenuItem"; title = "glow"; ObjectID = "479"; */
+/* glow */
"479.title" = "hohtona";
-/* Class = "NSMenuItem"; title = "Primary (automatic)"; ObjectID = "487"; */
+/* Primary (automatic) */
"487.title" = "Ensisijainen (automaattinen)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "489"; */
-"489.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "inverse glow"; ObjectID = "497"; */
+/* inverse glow */
"497.title" = "käänteisenä hohtona";
-/* Class = "NSMenuItem"; title = "inverse pulse"; ObjectID = "498"; */
+/* inverse pulse */
"498.title" = "käänteisenä pulssina";
-/* Class = "NSMenuItem"; title = "opens the volume"; ObjectID = "500"; */
+/* opens the volume */
"500.title" = "avaa taltion";
-/* Class = "NSMenuItem"; title = "unmounts/ejects the volume"; ObjectID = "502"; */
+/* unmounts/ejects the volume */
"502.title" = "poistaa taltion näkyvistä";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "503"; */
-"503.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Used/Free Totals"; ObjectID = "508"; */
+/* Used/Free Totals */
"508.title" = "Käytössä/vapaana";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "522"; */
-"522.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Interface speed"; ObjectID = "525"; */
+/* Interface speed */
"525.title" = "Verkkoliitännän nopeus";
-/* Class = "NSMenuItem"; title = "Peak traffic"; ObjectID = "526"; */
+/* Peak traffic */
"526.title" = "Siirtonopeuden huippu";
-/* Class = "NSMenuItem"; title = "Linear"; ObjectID = "541"; */
+/* Linear */
"541.title" = "Lineaarinen";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "542"; */
-"542.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Logarithmic"; ObjectID = "545"; */
+/* Logarithmic */
"545.title" = "Logaritminen";
-/* Class = "NSMenuItem"; title = "Cube root"; ObjectID = "556"; */
+/* Cube root */
"556.title" = "Kuutiojuuri";
-/* Class = "NSMenuItem"; title = "Square root"; ObjectID = "557"; */
+/* Square root */
"557.title" = "Neliöjuuri";
-/* Class = "NSMenuItem"; title = "Transmit/Receive"; ObjectID = "590"; */
+/* Transmit/Receive */
"590.title" = "Lähetys/vastaanotto";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "591"; */
-"591.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Receive/Transmit"; ObjectID = "592"; */
+/* Receive/Transmit */
"592.title" = "Vastaanotto/lähetys";
-/* Class = "NSMenuItem"; title = "Inverse Opposed"; ObjectID = "613"; */
+/* Inverse Opposed */
"613.title" = "Käänteinen vastakkainen";
-/* Class = "NSButtonCell"; title = "Display Disk Activity Menu Meter"; ObjectID = "1006"; */
+/* Display Disk Activity Menu Meter */
"1006.title" = "Näytä levyaktiivisuuden Menu Meter";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1007"; */
+/* x */
"1007.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Update interval (seconds):"; ObjectID = "1010"; */
-"1010.title" = "Päivitysväli (sekunteina):";
+/* Update interval: */
+"1010.title" = "Päivitysväli:";
-/* Class = "NSTextFieldCell"; title = "Selecting a volume from the disk menu"; ObjectID = "1011"; */
+/* Selecting a volume from the disk menu */
"1011.title" = "Taltion valinta levyvalikosta";
-/* Class = "NSTextFieldCell"; title = "(Holding the Option key will reverse the behavior)"; ObjectID = "1013"; */
+/* (Holding the Option key will reverse the behavior) */
"1013.title" = "(Optio-näppäimen pohjassa pitäminen valitsee toisen toiminnon)";
-/* Class = "NSButtonCell"; title = "Display CPU Menu Meter"; ObjectID = "1014"; */
+/* Display CPU Menu Meter */
"1014.title" = "Näytä prosessorin Menu Meter";
-/* Class = "NSTextFieldCell"; title = "Update interval (seconds):"; ObjectID = "1017"; */
-"1017.title" = "Päivitysväli (sekunteina):";
+/* Update interval: */
+"1017.title" = "Päivitysväli:";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1018"; */
+/* x */
"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "User"; ObjectID = "1019"; */
+/* User */
"1019.title" = "Käyttäjä";
-/* Class = "NSTextFieldCell"; title = "System"; ObjectID = "1020"; */
+/* System */
"1020.title" = "Järjestelmä";
-/* Class = "NSTextFieldCell"; title = "Display percentage as:"; ObjectID = "1022"; */
-"1022.title" = "Näytä prosenttilukuna:";
-
-/* Class = "NSTextFieldCell"; title = "Graph width:"; ObjectID = "1025"; */
+/* Width */
"1025.title" = "Kuvaajan leveys:";
-/* Class = "NSTextFieldCell"; title = "Percentage Display"; ObjectID = "1026"; */
-"1026.title" = "Percentage Display";
-
-/* Class = "NSTextFieldCell"; title = "Graph Display"; ObjectID = "1027"; */
-"1027.title" = "Kuvaajanäkymä";
-
-/* Class = "NSTextFieldCell"; title = "Misc"; ObjectID = "1028"; */
-"1028.title" = "Sekalaiset";
-
-/* Class = "NSTextFieldCell"; title = "Colors"; ObjectID = "1029"; */
-"1029.title" = "Värit";
-
-/* Class = "NSButtonCell"; title = "PowerMate shows CPU usage as"; ObjectID = "1030"; */
+/* PowerMate shows CPU usage */
"1030.title" = "PowerMate näyttää käytön";
-/* Class = "NSButtonCell"; title = "Display Memory Menu Meter"; ObjectID = "1032"; */
+/* Display Memory Menu Meter */
"1032.title" = "Näytä muistin Menu Meter";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1033"; */
+/* x */
"1033.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Update interval (seconds):"; ObjectID = "1035"; */
-"1035.title" = "Päivitysväli (sekunteina):";
+/* Update interval: */
+"1035.title" = "Päivitysväli:";
-/* Class = "NSButtonCell"; title = "Show Used/Free labels"; ObjectID = "1037"; */
+/* Show Used/Free labels */
"1037.title" = "Näytä Käytössä/vapaana-nimiöt";
-/* Class = "NSTextFieldCell"; title = "General"; ObjectID = "1038"; */
-"1038.title" = "Yleiset";
-
-/* Class = "NSButtonCell"; title = "Show paging activity indicator"; ObjectID = "1039"; */
+/* Show paging activity indicator */
"1039.title" = "Näytä sivutusaktiivisuuden indikaattori";
-/* Class = "NSTextFieldCell"; title = "Colors"; ObjectID = "1040"; */
-"1040.title" = "Värit";
-
-/* Class = "NSTextFieldCell"; title = "Pagein"; ObjectID = "1041"; */
+/* Pagein */
"1041.title" = "Sisäänsivutus";
-/* Class = "NSTextFieldCell"; title = "Pageout"; ObjectID = "1042"; */
+/* Pageout */
"1042.title" = "Ulossivutus";
-/* Class = "NSTextFieldCell"; title = "Graph width:"; ObjectID = "1044"; */
+/* Graph width: */
"1044.title" = "Kuvaajan leveys:";
-/* Class = "NSTextFieldCell"; title = "Graph Display"; ObjectID = "1045"; */
-"1045.title" = "Kuvaajanäkymä";
-
-/* Class = "NSTextFieldCell"; title = "Active"; ObjectID = "1047"; */
+/* Active */
"1047.title" = "Aktiivinen";
-/* Class = "NSTextFieldCell"; title = "Inactive"; ObjectID = "1048"; */
+/* Inactive */
"1048.title" = "Epäaktiivinen";
-/* Class = "NSTextFieldCell"; title = "Wired"; ObjectID = "1049"; */
+/* Wired */
"1049.title" = "Lukittu";
-/* Class = "NSTextFieldCell"; title = "Free"; ObjectID = "1050"; */
+/* Free */
"1050.title" = "Vapaana";
-/* Class = "NSTextFieldCell"; title = "Used"; ObjectID = "1051"; */
+/* Used */
"1051.title" = "Käytetty";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1053"; */
+/* x */
"1053.title" = "x";
-/* Class = "NSButtonCell"; title = "Display Network Menu Meter"; ObjectID = "1054"; */
+/* Display Network Menu Meter */
"1054.title" = "Näytä verkon Menu Meter";
-/* Class = "NSTextFieldCell"; title = "Update interval (seconds):"; ObjectID = "1056"; */
-"1056.title" = "Päivitysväli (sekunteina):";
+/* Update interval: */
+"1056.title" = "Päivitysväli:";
-/* Class = "NSTextFieldCell"; title = "Transmit"; ObjectID = "1057"; */
+/* Transmit */
"1057.title" = "Lähetys";
-/* Class = "NSTextFieldCell"; title = "Receive"; ObjectID = "1058"; */
+/* Receive */
"1058.title" = "Vastaanotto";
-/* Class = "NSButtonCell"; title = "Show throughput labels (Tx/Rx)"; ObjectID = "1060"; */
+/* Show throughput labels (Tx/Rx) */
"1060.title" = "Näytä siirtonopeuden nimiöt (Läh/Vast)";
-/* Class = "NSButtonCell"; title = "Ignore values below 1K/s"; ObjectID = "1061"; */
+/* Ignore values below 1K/s */
"1061.title" = "Älä huomioi alle 1 kB/s arvoja";
-/* Class = "NSTextFieldCell"; title = "Graph style:"; ObjectID = "1062"; */
+/* Graph style: */
"1062.title" = "Kuvaajan tyyli:";
-/* Class = "NSTextFieldCell"; title = "Graph width:"; ObjectID = "1063"; */
+/* Graph width: */
"1063.title" = "Kuvaajan leveys:";
-/* Class = "NSTextFieldCell"; title = "Throughput Display"; ObjectID = "1065"; */
-"1065.title" = "Siirtonopeusnäkymä";
-
-/* Class = "NSTextFieldCell"; title = "Graph Display"; ObjectID = "1066"; */
-"1066.title" = "Kuvaajanäkymä";
-
-/* Class = "NSTextFieldCell"; title = "Colors"; ObjectID = "1067"; */
-"1067.title" = "Värit";
-
-/* Class = "NSTextFieldCell"; title = "Display prefers interface:"; ObjectID = "1068"; */
+/* Display prefers interface: */
"1068.title" = "Näkymän oletusverkkoliitäntä:";
-/* Class = "NSTextFieldCell"; title = "General"; ObjectID = "1070"; */
-"1070.title" = "Yleiset";
-
-/* Class = "NSTextFieldCell"; title = "Display scales to:"; ObjectID = "1071"; */
+/* Display scales to: */
"1071.title" = "Näkymän arvoalueen määrää:";
-/* Class = "NSTextFieldCell"; title = "Display scaling:"; ObjectID = "1073"; */
+/* Display scaling: */
"1073.title" = "Näkymän mittakaava:";
-/* Class = "NSTextFieldCell"; title = "Display orientation:"; ObjectID = "1075"; */
+/* Display orientation: */
"1075.title" = "Näkymän suunta:";
-/* Class = "NSTextFieldCell"; title = "Inactive"; ObjectID = "1077"; */
+/* Inactive */
"1077.title" = "Epäaktiivisuus";
-/* Class = "NSTextFieldCell"; title = "Horizontal Rows:"; ObjectID = "1088"; */
+/* Rows */
"1088.title" = "Vaakarivit:";
-/* Class = "NSTextFieldCell"; title = "Horizontal Thermometer Display"; ObjectID = "1094"; */
-"1094.title" = "Vaakasuuntainen lämpömittarinäkymä";
-
-/* Class = "NSMenuItem"; title = "Horizontal Thermometer"; ObjectID = "1095"; */
-"1095.title" = "Vaakasuuntainen lämpömittari";
-
-/* Class = "NSTextFieldCell"; title = "Horizontal Width:"; ObjectID = "1117"; */
+/* Width */
"1117.title" = "Vaakaleveys:";
-/* Class = "NSTextFieldCell"; title = "(%d)"; ObjectID = "2NH-iF-l28"; */
+/* (%d) */
"2NH-iF-l28.title" = "(%d)";
-/* Class = "NSMenuItem"; title = "the sum of all cores"; ObjectID = "5Lg-aP-TSR"; */
+/* the sum of all cores */
"5Lg-aP-TSR.title" = "kaikkien ydinten summa";
-/* Class = "NSButtonCell"; title = "Show CPU Temperature in"; ObjectID = "5r7-xY-4OH"; */
-"5r7-xY-4OH.title" = "Lämpötilan yksikkö";
-
-/* Class = "NSMenuItem"; title = "℉"; ObjectID = "89a-Te-47J"; */
-"89a-Te-47J.title" = "℉";
-
-/* Class = "NSMenuItem"; title = "the average of all cores"; ObjectID = "BYT-hf-ygS"; */
+/* the average of all cores */
"BYT-hf-ygS.title" = "kaikkien ydinten keskiarvo";
-/* Class = "NSTextFieldCell"; title = "Temperature"; ObjectID = "C4n-F2-kuL"; */
+/* Temperature */
"C4n-F2-kuL.title" = "Lämpötila";
-/* Class = "NSMenuItem"; title = "all cores sorted"; ObjectID = "CG1-40-AVC"; */
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Activity monitor:";
+
+/* all cores sorted */
"CG1-40-AVC.title" = "kaikki ytimet lajiteltuina";
-/* Class = "NSTabViewItem"; label = "About"; ObjectID = "FSw-QC-dn2"; */
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
+
+/* original */
+"FPO-Jo-ubG.title" = "original";
+
+/* About */
"FSw-QC-dn2.label" = "Tietoja";
-/* Class = "NSMenuItem"; title = "physical cores only"; ObjectID = "H5f-hN-vQV"; */
+/* physical cores only */
"H5f-hN-vQV.title" = "vain fyysiset ytimet";
-/* Class = "NSButtonCell"; title = "Show bits per second"; ObjectID = "K7W-5f-1U8"; */
+/* Graph */
+"IS4-Xc-psg.title" = "Kuvaaja";
+
+/* Percentage */
+"Jeh-C2-Wwp.title" = "Prosenttiluku";
+
+/* Show bits per second */
"K7W-5f-1U8.title" = "Näytä nopeudet bitteinä sekunnissa";
-/* Class = "NSMenuItem"; title = "℃"; ObjectID = "Wgg-4C-Cbe"; */
-"Wgg-4C-Cbe.title" = "℃";
+/* Once per week */
+"LmO-Ij-G7M.title" = "Once per week";
+
+/* Once per month */
+"PuG-eZ-jRm.title" = "Once per month";
-/* Class = "NSButtonCell"; title = "Check for updates..."; ObjectID = "XYi-uP-QCD"; */
+/* Never */
+"STJ-3R-khe.title" = "Never";
+
+/* Check updates now */
"XYi-uP-QCD.title" = "Tarkasta päivitykset...";
-/* Class = "NSButtonCell"; title = "Display memory pressure"; ObjectID = "aOw-Lj-aWS"; */
+/* Display memory pressure */
"aOw-Lj-aWS.title" = "Näytä muistin käyttö";
-/* Class = "NSTextFieldCell"; title = "Compressed"; ObjectID = "ex0-hf-q5R"; */
+/* pure black/white */
+"ayz-p2-XC5.title" = "pure black/white";
+
+/* Compressed */
"ex0-hf-q5R.title" = "Pakattu";
-/* Class = "NSTextFieldCell"; title = "Show:"; ObjectID = "k2d-Cg-pqL"; */
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperature";
+
+/* Show */
"k2d-Cg-pqL.title" = "Näytä:";
-/* Class = "NSTextFieldCell"; title = "Process Display"; ObjectID = "p2Z-13-y3b"; */
-"p2Z-13-y3b.title" = "Prosessinäkymä";
+/* Once per day */
+"lh5-j8-SRe.title" = "Once per day";
-/* Class = "NSTextFieldCell"; title = "Processes to show:"; ObjectID = "rhi-NX-C3L"; */
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Color tint:";
+
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Opens specific panes";
+
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "Pystysuora pylväskaavio";
+
+/* Processes to show: */
"rhi-NX-C3L.title" = "Näytettävät prosessit:";
-/* Class = "NSMenuItem"; title = "all cores, including hyperthreaded ones"; ObjectID = "vbH-jV-tUr"; */
+/* Horizontal bar */
+"spo-WT-wCm.title" = "Vaakasuora pylväskaavio";
+
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatic update check interval:";
+
+/* all cores, including hyperthreaded ones */
"vbH-jV-tUr.title" = "kaikki ytimet, myös hypersäikeistetyt";
diff --git a/PrefPane/fr.lproj/DiskImageSet.strings b/PrefPane/fr.lproj/DiskImageSet.strings
index 770ecb5f..4b21e2d9 100644
--- a/PrefPane/fr.lproj/DiskImageSet.strings
+++ b/PrefPane/fr.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "Chargement de Menu Extra impossible";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"Pour des instructions sur l'activation des extras menus tierces parties, reportez-vous à la documentation.";
+"For instructions on enabling third-party menu extras please see the documentation." = "Pour des instructions sur l’activation des extras menus tierces parties, reportez-vous à la documentation.";
// Strings for the disk icon sets
"Color Arrows" = "Flèches de couleurs";
diff --git a/PrefPane/fr.lproj/MenuMetersPref.strings b/PrefPane/fr.lproj/MenuMetersPref.strings
index 2dd46bd1..20a00aad 100644
--- a/PrefPane/fr.lproj/MenuMetersPref.strings
+++ b/PrefPane/fr.lproj/MenuMetersPref.strings
@@ -1,358 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "12"; */
+/* MenuMeters */
"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "Disque"; ObjectID = "100"; */
+/* Disk */
"100.label" = "Disque";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "102"; */
+/* CPU */
"102.label" = "CPU";
-/* Class = "NSTabViewItem"; label = "Mémoire"; ObjectID = "103"; */
+/* Memory */
"103.label" = "Mémoire";
-/* Class = "NSTabViewItem"; label = "Réseau"; ObjectID = "105"; */
+/* Network */
"105.label" = "Réseau";
-/* Class = "NSMenuItem"; title = "Graphique"; ObjectID = "145"; */
-"IS4-Xc-psg.title" = "Graphique";
-
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "146"; */
-"146.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Pourcentage"; ObjectID = "148"; */
-"Jeh-C2-Wwp.title" = "Pourcentage";
-
-/* Class = "NSMenuItem"; title = "Graphique & Pourcentage"; ObjectID = "149"; */
-"149.title" = "Graphique & Pourcentage";
-
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "203"; */
+/* ImageSet */
"203.title" = "ImageSet";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "206"; */
-"206.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Barre d'usage"; ObjectID = "219"; */
-"219.title" = "Barre d'usage";
+/* Usage Bar */
+"219.title" = "Barre d’usage";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "223"; */
-"223.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Diagramme"; ObjectID = "225"; */
+/* Usage Chart */
"225.title" = "Diagramme";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "293"; */
-"293.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Texte"; ObjectID = "294"; */
+/* Throughput */
"294.title" = "Texte";
-/* Class = "NSMenuItem"; title = "Flèches"; ObjectID = "297"; */
+/* Arrows */
"297.title" = "Flèches";
-/* Class = "NSMenuItem"; title = "Flèches & Texte"; ObjectID = "299"; */
+/* Arrows and Throughput */
"299.title" = "Flèches & Texte";
-/* Class = "NSMenuItem"; title = "Graphique"; ObjectID = "314"; */
+/* Graph */
"314.title" = "Graphique";
-/* Class = "NSMenuItem"; title = "Thermomètre"; ObjectID = "357"; */
-"r6t-Zl-sS4.title" = "Barres verticales";
-"spo-WT-wCm.title" = "Barres horizontales";
-
-/* Class = "NSMenuItem"; title = "Graphique, Pourcentage & Thermomètre"; ObjectID = "358"; */
-"358.title" = "Graphique, Pourcentage & Thermomètre";
-
-/* Class = "NSMenuItem"; title = "Pourcentage & Thermomètre"; ObjectID = "359"; */
-"359.title" = "Pourcentage & Thermomètre";
-
-/* Class = "NSMenuItem"; title = "Graphique & Thermomètre"; ObjectID = "360"; */
-"360.title" = "Graphique & Thermomètre";
-
-/* Class = "NSMenuItem"; title = "Graphique & Flèches"; ObjectID = "363"; */
+/* Graph and Arrows */
"363.title" = "Graphique & Flèches";
-/* Class = "NSMenuItem"; title = "Graphique & Texte"; ObjectID = "365"; */
+/* Graph and Throughput */
"365.title" = "Graphique & Texte";
-/* Class = "NSMenuItem"; title = "Graphique, Flèches & Texte"; ObjectID = "366"; */
+/* Graph, Arrows and Throughput */
"366.title" = "Graphique, Flèches & Texte";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "382"; */
-"382.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Total (texte large)"; ObjectID = "384"; */
+/* Total (large text) */
"384.title" = "Total (texte large)";
-/* Class = "NSMenuItem"; title = "Utilisateur & Système (texte petit)"; ObjectID = "385"; */
+/* User and System (small text) */
"385.title" = "Utilisateur & Système (texte petit)";
-/* Class = "NSMenuItem"; title = "Total (texte moyen)"; ObjectID = "386"; */
+/* Total (medium text) */
"386.title" = "Total (texte moyen)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "403"; */
-"403.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Sens opposé"; ObjectID = "404"; */
+/* Opposed */
"404.title" = "Sens opposé";
-/* Class = "NSMenuItem"; title = "Standard"; ObjectID = "406"; */
+/* Standard */
"406.title" = "Standard";
-/* Class = "NSMenuItem"; title = "Centré"; ObjectID = "407"; */
+/* Centered */
"407.title" = "Centré";
-/* Class = "NSMenuItem"; title = "Historique d'usage"; ObjectID = "472"; */
-"472.title" = "Historique d'usage";
+/* Usage History Graph */
+"472.title" = "Historique d’usage";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "477"; */
-"477.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "clignotant"; ObjectID = "478"; */
+/* pulse */
"478.title" = "clignotant";
-/* Class = "NSMenuItem"; title = "s'illuminant"; ObjectID = "479"; */
-"479.title" = "s'illuminant";
+/* glow */
+"479.title" = "s’illuminant";
-/* Class = "NSMenuItem"; title = "Primaire (automatique)"; ObjectID = "487"; */
+/* Primary (automatic) */
"487.title" = "Primaire (automatique)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "489"; */
-"489.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "illumination inversée"; ObjectID = "497"; */
+/* inverse glow */
"497.title" = "illumination inversée";
-/* Class = "NSMenuItem"; title = "clignotement inversé"; ObjectID = "498"; */
+/* inverse pulse */
"498.title" = "clignotement inversé";
-/* Class = "NSMenuItem"; title = "ouvre le volume dans le Finder"; ObjectID = "500"; */
+/* opens the volume */
"500.title" = "ouvre le volume dans le Finder";
-/* Class = "NSMenuItem"; title = "démonte et éjecte le volume"; ObjectID = "502"; */
+/* unmounts/ejects the volume */
"502.title" = "démonte et éjecte le volume";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "503"; */
-"503.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Totaux Utilisée/Libre"; ObjectID = "508"; */
+/* Used/Free Totals */
"508.title" = "Totaux Utilisée/Libre";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "522"; */
-"522.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Vitesse du trafic sur l'interface"; ObjectID = "525"; */
-"525.title" = "Vitesse du trafic sur l'interface";
+/* Interface speed */
+"525.title" = "Vitesse du trafic sur l’interface";
-/* Class = "NSMenuItem"; title = "Vitesse max. du trafic"; ObjectID = "526"; */
+/* Peak traffic */
"526.title" = "Vitesse max. du trafic";
-/* Class = "NSMenuItem"; title = "Linéaire"; ObjectID = "541"; */
+/* Linear */
"541.title" = "Linéaire";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "542"; */
-"542.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Logarithmique "; ObjectID = "545"; */
+/* Logarithmic */
"545.title" = "Logarithmique ";
-/* Class = "NSMenuItem"; title = "Cubique"; ObjectID = "556"; */
+/* Cube root */
"556.title" = "Cubique";
-/* Class = "NSMenuItem"; title = "Carrée"; ObjectID = "557"; */
+/* Square root */
"557.title" = "Carrée";
-/* Class = "NSMenuItem"; title = "Transmission/Réception"; ObjectID = "590"; */
+/* Transmit/Receive */
"590.title" = "Transmission/Réception";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "591"; */
-"591.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Réception/Transmission"; ObjectID = "592"; */
+/* Receive/Transmit */
"592.title" = "Réception/Transmission";
-/* Class = "NSMenuItem"; title = "Opposition inversée"; ObjectID = "613"; */
+/* Inverse Opposed */
"613.title" = "Opposition inversée";
-/* Class = "NSButtonCell"; title = "Afficher le menu d'Activité du disque"; ObjectID = "1006"; */
-"1006.title" = "Afficher le menu d'Activité du disque";
+/* Display Disk Activity Menu Meter */
+"1006.title" = "Afficher le menu d’Activité du disque";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1007"; */
+/* x */
"1007.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Intervalle (en seconde) de mise à jour : "; ObjectID = "1010"; */
-"1010.title" = "Intervalle (en seconde) de mise à jour : ";
+/* Update interval: */
+"1010.title" = "Intervalle de mise à jour : ";
-/* Class = "NSTextFieldCell"; title = "La sélection d'un volume dans le menu :"; ObjectID = "1011"; */
-"1011.title" = "La sélection d'un volume dans le menu :";
+/* Selecting a volume from the disk menu */
+"1011.title" = "La sélection d’un volume dans le menu :";
-/* Class = "NSTextFieldCell"; title = "(Maintenir la touche Option pour inverser le comportement)"; ObjectID = "1013"; */
+/* (Holding the Option key will reverse the behavior) */
"1013.title" = "(Maintenir la touche Option pour inverser le comportement)";
-/* Class = "NSButtonCell"; title = "Afficher le menu CPU"; ObjectID = "1014"; */
+/* Display CPU Menu Meter */
"1014.title" = "Afficher le menu CPU";
-/* Class = "NSTextFieldCell"; title = "Intervalle (en seconde) de mise à jour : "; ObjectID = "1017"; */
-"1017.title" = "Intervalle (en seconde) de mise à jour : ";
+/* Update interval: */
+"1017.title" = "Intervalle de mise à jour :";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1018"; */
+/* x */
"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Charge utilisateur"; ObjectID = "1019"; */
+/* User */
"1019.title" = "Charge utilisateur";
-/* Class = "NSTextFieldCell"; title = "Charge système"; ObjectID = "1020"; */
+/* System */
"1020.title" = "Charge système";
-/* Class = "NSTextFieldCell"; title = "Afficher le pourcentage :"; ObjectID = "1022"; */
-"1022.title" = "Afficher le pourcentage :";
-
-/* Class = "NSButtonCell"; title = "Afficher la charge moyenne des processeurs comme pour un simple"; ObjectID = "1024"; */
-"1024.title" = "Afficher la charge moyenne des processeurs comme pour un simple";
-
-/* Class = "NSTextFieldCell"; title = "Largeur du graphique :"; ObjectID = "1025"; */
+/* Width */
"1025.title" = "Largeur du graphique :";
-/* Class = "NSTextFieldCell"; title = "Affichage du pourcentage"; ObjectID = "1026"; */
-"1026.title" = "Affichage du pourcentage";
+/* PowerMate shows CPU usage */
+"1030.title" = "Le PowerMate affiche l’usage CPU";
-/* Class = "NSTextFieldCell"; title = "Affichage du graphique"; ObjectID = "1027"; */
-"1027.title" = "Affichage du graphique";
-
-/* Class = "NSTextFieldCell"; title = "Options diverses"; ObjectID = "1028"; */
-"1028.title" = "Options diverses";
-
-/* Class = "NSTextFieldCell"; title = "Couleurs"; ObjectID = "1029"; */
-"1029.title" = "Couleurs";
-
-/* Class = "NSButtonCell"; title = "Le PowerMate affiche l'usage CPU en :"; ObjectID = "1030"; */
-"1030.title" = "Le PowerMate affiche l'usage CPU en :";
-
-/* Class = "NSButtonCell"; title = "Afficher le menu Mémoire"; ObjectID = "1032"; */
+/* Display Memory Menu Meter */
"1032.title" = "Afficher le menu Mémoire";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1033"; */
+/* x */
"1033.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Intervalle (en seconde) de mise à jour : "; ObjectID = "1035"; */
-"1035.title" = "Intervalle (en seconde) de mise à jour : ";
+/* Update interval: */
+"1035.title" = "Intervalle de mise à jour : ";
-/* Class = "NSButtonCell"; title = "Afficher les préfixes (Utilisée/Libre)"; ObjectID = "1037"; */
+/* Show Used/Free labels */
"1037.title" = "Afficher les préfixes (Utilisée/Libre)";
-/* Class = "NSTextFieldCell"; title = "Général"; ObjectID = "1038"; */
-"1038.title" = "Général";
+/* Show paging activity indicator */
+"1039.title" = "Afficher l’indicateur d’activité de la pagination";
-/* Class = "NSButtonCell"; title = "Afficher l'indicateur d'activité de la pagination"; ObjectID = "1039"; */
-"1039.title" = "Afficher l'indicateur d'activité de la pagination";
-
-/* Class = "NSTextFieldCell"; title = "Couleurs"; ObjectID = "1040"; */
-"1040.title" = "Couleurs";
-
-/* Class = "NSTextFieldCell"; title = "Pagein"; ObjectID = "1041"; */
+/* Pagein */
"1041.title" = "Pagein";
-/* Class = "NSTextFieldCell"; title = "Pageout"; ObjectID = "1042"; */
+/* Pageout */
"1042.title" = "Pageout";
-/* Class = "NSTextFieldCell"; title = "Taux pagination"; ObjectID = "1043"; */
-"1043.title" = "Taux pagination";
-
-/* Class = "NSTextFieldCell"; title = "Largeur du graphique :"; ObjectID = "1044"; */
+/* Graph width: */
"1044.title" = "Largeur du graphique :";
-/* Class = "NSTextFieldCell"; title = "Affichage du graphique"; ObjectID = "1045"; */
-"1045.title" = "Affichage du graphique";
-
-/* Class = "NSTextFieldCell"; title = "Active"; ObjectID = "1047"; */
+/* Active */
"1047.title" = "Active";
-/* Class = "NSTextFieldCell"; title = "Inactive"; ObjectID = "1048"; */
+/* Inactive */
"1048.title" = "Inactive";
-/* Class = "NSTextFieldCell"; title = "Liée"; ObjectID = "1049"; */
+/* Wired */
"1049.title" = "Liée";
-/* Class = "NSTextFieldCell"; title = "Libre"; ObjectID = "1050"; */
+/* Free */
"1050.title" = "Libre";
-/* Class = "NSTextFieldCell"; title = "Utilisée"; ObjectID = "1051"; */
+/* Used */
"1051.title" = "Utilisée";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1053"; */
+/* x */
"1053.title" = "x";
-/* Class = "NSButtonCell"; title = "Afficher le menu Réseau"; ObjectID = "1054"; */
+/* Display Network Menu Meter */
"1054.title" = "Afficher le menu Réseau";
-/* Class = "NSTextFieldCell"; title = "Intervalle (en seconde) de mise à jour : "; ObjectID = "1056"; */
-"1056.title" = "Intervalle (en seconde) de mise à jour : ";
+/* Update interval: */
+"1056.title" = "Intervalle de mise à jour:";
-/* Class = "NSTextFieldCell"; title = "Transmission"; ObjectID = "1057"; */
+/* Transmit */
"1057.title" = "Transmission";
-/* Class = "NSTextFieldCell"; title = "Réception"; ObjectID = "1058"; */
+/* Receive */
"1058.title" = "Réception";
-/* Class = "NSButtonCell"; title = "Afficher les préfixes (Tx/Rx)"; ObjectID = "1060"; */
+/* Show throughput labels (Tx/Rx) */
"1060.title" = "Afficher les préfixes (Tx/Rx)";
-/* Class = "NSButtonCell"; title = "Ignorer les valeurs inférieures à 1Ko/s"; ObjectID = "1061"; */
+/* Ignore values below 1K/s */
"1061.title" = "Ignorer les valeurs inférieures à 1Ko/s";
-/* Class = "NSTextFieldCell"; title = "Style du graphique :"; ObjectID = "1062"; */
+/* Graph style: */
"1062.title" = "Style du graphique :";
-/* Class = "NSTextFieldCell"; title = "Largeur du graphique :"; ObjectID = "1063"; */
+/* Graph width: */
"1063.title" = "Largeur du graphique :";
-/* Class = "NSTextFieldCell"; title = "Affichage du texte"; ObjectID = "1065"; */
-"1065.title" = "Affichage du texte";
-
-/* Class = "NSTextFieldCell"; title = "Affichage du graphique"; ObjectID = "1066"; */
-"1066.title" = "Affichage du graphique";
-
-/* Class = "NSTextFieldCell"; title = "Couleurs"; ObjectID = "1067"; */
-"1067.title" = "Couleurs";
-
-/* Class = "NSTextFieldCell"; title = "Interface préférée :"; ObjectID = "1068"; */
+/* Display prefers interface: */
"1068.title" = "Interface préférée :";
-/* Class = "NSTextFieldCell"; title = "Général"; ObjectID = "1070"; */
-"1070.title" = "Général";
-
-/* Class = "NSTextFieldCell"; title = "Échelles :"; ObjectID = "1071"; */
+/* Display scales to: */
"1071.title" = "Échelles :";
-/* Class = "NSTextFieldCell"; title = "Graduation :"; ObjectID = "1073"; */
+/* Display scaling: */
"1073.title" = "Graduation :";
-/* Class = "NSTextFieldCell"; title = "Affichage :"; ObjectID = "1075"; */
+/* Display orientation: */
"1075.title" = "Affichage :";
-/* Class = "NSTextFieldCell"; title = "Inactive"; ObjectID = "1077"; */
+/* Inactive */
"1077.title" = "Inactive";
-/* Class = "NSTextFieldCell"; title = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)"; ObjectID = "1078"; */
-"1078.title" = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)";
+/* Rows */
+"1088.title" = "Rows";
+
+/* Width */
+"1117.title" = "Width";
+
+/* (%d) */
+"2NH-iF-l28.title" = "(%d)";
+
+/* the sum of all cores */
+"5Lg-aP-TSR.title" = "the sum of all cores";
+
+/* the average of all cores */
+"BYT-hf-ygS.title" = "the average of all cores";
+
+/* Temperature */
+"C4n-F2-kuL.title" = "Temperature";
+
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Activity monitor:";
+
+/* all cores sorted */
+"CG1-40-AVC.title" = "all cores sorted";
+
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
+
+/* original */
+"FPO-Jo-ubG.title" = "original";
+
+/* About */
+"FSw-QC-dn2.label" = "About";
+
+/* physical cores only */
+"H5f-hN-vQV.title" = "physical cores only";
+
+/* Graph */
+"IS4-Xc-psg.title" = "Graphique";
+
+/* Percentage */
+"Jeh-C2-Wwp.title" = "Pourcentage";
+
+/* Show bits per second */
+"K7W-5f-1U8.title" = "Show bits per second";
+
+/* Once per week */
+"LmO-Ij-G7M.title" = "Once per week";
+
+/* Once per month */
+"PuG-eZ-jRm.title" = "Once per month";
+
+/* Never */
+"STJ-3R-khe.title" = "Never";
+
+/* Check updates now */
+"XYi-uP-QCD.title" = "Check updates now";
-/* Class = "NSButtonCell"; title = "Sort by CPU usage"; ObjectID = ""; */
-".title" = "Sort by CPU usage";
+/* Display memory pressure */
+"aOw-Lj-aWS.title" = "Display memory pressure";
-/* Class = "NSTextFieldCell"; title = "Horizontal Rows:"; ObjectID = "944"; */
-"944.title" = "Horizontal Rows:";
+/* pure black/white */
+"ayz-p2-XC5.title" = "pure black/white";
-/* Class = "NSTextFieldCell"; title = "Thermometer Display"; ObjectID = "945"; */
-"945.title" = "Thermometer Display";
+/* Compressed */
+"ex0-hf-q5R.title" = "Compressed";
-/* Class = "NSMenuItem"; title = "Horizontal Thermometer"; ObjectID = ""; */
-".title" = "Horizontal Thermometer";
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperature";
-/* Class = "NSButtonCell"; title = "Show average for least utilized processors as single display"; ObjectID = "950"; */
-"950.title" = "Show average for least utilized processors as single display";
+/* Show */
+"k2d-Cg-pqL.title" = "Show";
+
+/* Once per day */
+"lh5-j8-SRe.title" = "Once per day";
+
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Color tint:";
+
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Opens specific panes";
+
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "Barres verticales";
+
+/* Processes to show: */
+"rhi-NX-C3L.title" = "Processes to show:";
+
+/* Horizontal bar */
+"spo-WT-wCm.title" = "Barres horizontales";
-/* Class = "NSTextFieldCell"; title = "Horizontal Width:"; ObjectID = "954"; */
-"954.title" = "Horizontal Width:";
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatic update check interval:";
-/* Class = "NSButtonCell"; title = "Display memory pressure"; ObjectID = "Yhx-uB-Efv"; */
-"Yhx-uB-Efv.title" = "Display memory pressure";
+/* all cores, including hyperthreaded ones */
+"vbH-jV-tUr.title" = "all cores, including hyperthreaded ones";
diff --git a/PrefPane/it.lproj/DiskImageSet.strings b/PrefPane/it.lproj/DiskImageSet.strings
index e88d9502..e90cbfa5 100644
--- a/PrefPane/it.lproj/DiskImageSet.strings
+++ b/PrefPane/it.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "Impossibile Caricare Menu Extra";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"Per istruzioni su come attivare i menu extra di terze parti vedere la documentazione.";
+"For instructions on enabling third-party menu extras please see the documentation." = "Per istruzioni su come attivare i menu extra di terze parti vedere la documentazione.";
// Strings for the disk icon sets
"Color Arrows" = "Frecce Colorate";
diff --git a/PrefPane/it.lproj/MenuMetersPref.strings b/PrefPane/it.lproj/MenuMetersPref.strings
index 8c6be2d3..74b22721 100644
--- a/PrefPane/it.lproj/MenuMetersPref.strings
+++ b/PrefPane/it.lproj/MenuMetersPref.strings
@@ -1,358 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "12"; */
+/* MenuMeters */
"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "Disco"; ObjectID = "100"; */
+/* Disk */
"100.label" = "Disco";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "102"; */
+/* CPU */
"102.label" = "CPU";
-/* Class = "NSTabViewItem"; label = "Memoria"; ObjectID = "103"; */
+/* Memory */
"103.label" = "Memoria";
-/* Class = "NSTabViewItem"; label = "Network"; ObjectID = "105"; */
+/* Network */
"105.label" = "Network";
-/* Class = "NSMenuItem"; title = "Grafico"; ObjectID = "145"; */
-"IS4-Xc-psg.title" = "Grafico";
-
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "146"; */
-"146.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Percentuale"; ObjectID = "148"; */
-"Jeh-C2-Wwp.title" = "Percentuale";
-
-/* Class = "NSMenuItem"; title = "Grafico e Percentuale"; ObjectID = "149"; */
-"149.title" = "Grafico e Percentuale";
-
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "203"; */
+/* ImageSet */
"203.title" = "ImageSet";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "206"; */
-"206.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Barra Uso"; ObjectID = "219"; */
+/* Usage Bar */
"219.title" = "Barra Uso";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "223"; */
-"223.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Grafico Uso"; ObjectID = "225"; */
+/* Usage Chart */
"225.title" = "Grafico Uso";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "293"; */
-"293.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Throughput"; ObjectID = "294"; */
+/* Throughput */
"294.title" = "Throughput";
-/* Class = "NSMenuItem"; title = "Frecce"; ObjectID = "297"; */
+/* Arrows */
"297.title" = "Frecce";
-/* Class = "NSMenuItem"; title = "Frecce e Throughput"; ObjectID = "299"; */
+/* Arrows and Throughput */
"299.title" = "Frecce e Throughput";
-/* Class = "NSMenuItem"; title = "Grafico"; ObjectID = "314"; */
+/* Graph */
"314.title" = "Grafico";
-/* Class = "NSMenuItem"; title = "Termometro"; ObjectID = "357"; */
-"r6t-Zl-sS4.title" = "Barre verticali";
-"spo-WT-wCm.title" = "Barre orizzontali";
-
-/* Class = "NSMenuItem"; title = "Grafico, Percentuale e Termometro"; ObjectID = "358"; */
-"358.title" = "Grafico, Percentuale e Termometro";
-
-/* Class = "NSMenuItem"; title = "Percentuale e Termometro"; ObjectID = "359"; */
-"359.title" = "Percentuale e Termometro";
-
-/* Class = "NSMenuItem"; title = "Grafico e Termometro"; ObjectID = "360"; */
-"360.title" = "Grafico e Termometro";
-
-/* Class = "NSMenuItem"; title = "Grafico e Frecce"; ObjectID = "363"; */
+/* Graph and Arrows */
"363.title" = "Grafico e Frecce";
-/* Class = "NSMenuItem"; title = "Grafico e Throughput"; ObjectID = "365"; */
+/* Graph and Throughput */
"365.title" = "Grafico e Throughput";
-/* Class = "NSMenuItem"; title = "Grafico, Frecce e Throughput"; ObjectID = "366"; */
+/* Graph, Arrows and Throughput */
"366.title" = "Grafico, Frecce e Throughput";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "382"; */
-"382.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Totale (testo grande)"; ObjectID = "384"; */
+/* Total (large text) */
"384.title" = "Totale (testo grande)";
-/* Class = "NSMenuItem"; title = "Utente e Sistema (testo piccolo)"; ObjectID = "385"; */
+/* User and System (small text) */
"385.title" = "Utente e Sistema (testo piccolo)";
-/* Class = "NSMenuItem"; title = "Totale (testo medio)"; ObjectID = "386"; */
+/* Total (medium text) */
"386.title" = "Totale (testo medio)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "403"; */
-"403.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Opposto"; ObjectID = "404"; */
+/* Opposed */
"404.title" = "Opposto";
-/* Class = "NSMenuItem"; title = "Standard"; ObjectID = "406"; */
+/* Standard */
"406.title" = "Standard";
-/* Class = "NSMenuItem"; title = "Centrato"; ObjectID = "407"; */
+/* Centered */
"407.title" = "Centrato";
-/* Class = "NSMenuItem"; title = "Grafico Cronologia Uso"; ObjectID = "472"; */
+/* Usage History Graph */
"472.title" = "Grafico Cronologia Uso";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "477"; */
-"477.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "pulsazione"; ObjectID = "478"; */
+/* pulse */
"478.title" = "pulsazione";
-/* Class = "NSMenuItem"; title = "luce"; ObjectID = "479"; */
+/* glow */
"479.title" = "luce";
-/* Class = "NSMenuItem"; title = "Primaria (automatico)"; ObjectID = "487"; */
+/* Primary (automatic) */
"487.title" = "Primaria (automatico)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "489"; */
-"489.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "luce inversa"; ObjectID = "497"; */
+/* inverse glow */
"497.title" = "luce inversa";
-/* Class = "NSMenuItem"; title = "pulsazione inversa"; ObjectID = "498"; */
+/* inverse pulse */
"498.title" = "pulsazione inversa";
-/* Class = "NSMenuItem"; title = "apre il volume"; ObjectID = "500"; */
+/* opens the volume */
"500.title" = "apre il volume";
-/* Class = "NSMenuItem"; title = "smonta/espelle il volume"; ObjectID = "502"; */
+/* unmounts/ejects the volume */
"502.title" = "smonta/espelle il volume";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "503"; */
-"503.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Totali Usata/Libera"; ObjectID = "508"; */
+/* Used/Free Totals */
"508.title" = "Totali Usata/Libera";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "522"; */
-"522.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Velocità Interfaccia"; ObjectID = "525"; */
+/* Interface speed */
"525.title" = "Velocità Interfaccia";
-/* Class = "NSMenuItem"; title = "Picco traffico"; ObjectID = "526"; */
+/* Peak traffic */
"526.title" = "Picco traffico";
-/* Class = "NSMenuItem"; title = "Lineare"; ObjectID = "541"; */
+/* Linear */
"541.title" = "Lineare";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "542"; */
-"542.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Logaritmica"; ObjectID = "545"; */
+/* Logarithmic */
"545.title" = "Logaritmica";
-/* Class = "NSMenuItem"; title = "Radice cubica"; ObjectID = "556"; */
+/* Cube root */
"556.title" = "Radice cubica";
-/* Class = "NSMenuItem"; title = "Radice quadrata"; ObjectID = "557"; */
+/* Square root */
"557.title" = "Radice quadrata";
-/* Class = "NSMenuItem"; title = "Trasmetti/Ricevi"; ObjectID = "590"; */
+/* Transmit/Receive */
"590.title" = "Trasmetti/Ricevi";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "591"; */
-"591.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "Ricevi/Trasmetti"; ObjectID = "592"; */
+/* Receive/Transmit */
"592.title" = "Ricevi/Trasmetti";
-/* Class = "NSMenuItem"; title = "Estremi Invertiti"; ObjectID = "613"; */
+/* Inverse Opposed */
"613.title" = "Estremi Invertiti";
-/* Class = "NSButtonCell"; title = "Mostra Menu Meter Attività Disco"; ObjectID = "1006"; */
+/* Display Disk Activity Menu Meter */
"1006.title" = "Mostra Menu Meter Attività Disco";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1007"; */
+/* x */
"1007.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Intervallo Aggiornamento (secondi):"; ObjectID = "1010"; */
-"1010.title" = "Intervallo Aggiornamento (secondi):";
+/* Update interval: */
+"1010.title" = "Intervallo Aggiornamento:";
-/* Class = "NSTextFieldCell"; title = "Selezionare un volume dal menu disco"; ObjectID = "1011"; */
+/* Selecting a volume from the disk menu */
"1011.title" = "Selezionare un volume dal menu disco";
-/* Class = "NSTextFieldCell"; title = "(Mantenendo premuto il tasto Opzione viene invertito il comportamento)"; ObjectID = "1013"; */
+/* (Holding the Option key will reverse the behavior) */
"1013.title" = "(Mantenendo premuto il tasto Opzione viene invertito il comportamento)";
-/* Class = "NSButtonCell"; title = "Mostra Menu Meter CPU"; ObjectID = "1014"; */
+/* Display CPU Menu Meter */
"1014.title" = "Mostra Menu Meter CPU";
-/* Class = "NSTextFieldCell"; title = "Intervallo Aggiornamento (secondi):"; ObjectID = "1017"; */
-"1017.title" = "Intervallo Aggiornamento (secondi):";
+/* Update interval: */
+"1017.title" = "Intervallo Aggiornamento:";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1018"; */
+/* x */
"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Carico Utente"; ObjectID = "1019"; */
+/* User */
"1019.title" = "Carico Utente";
-/* Class = "NSTextFieldCell"; title = "Carico Sistema"; ObjectID = "1020"; */
+/* System */
"1020.title" = "Carico Sistema";
-/* Class = "NSTextFieldCell"; title = "Mostra Percentuale come:"; ObjectID = "1022"; */
-"1022.title" = "Mostra Percentuale come:";
-
-/* Class = "NSButtonCell"; title = "Mostra media su processori multipli come visualizzazione unica"; ObjectID = "1024"; */
-"1024.title" = "Mostra media su processori multipli come visualizzazione unica";
-
-/* Class = "NSTextFieldCell"; title = "Larghezza Grafico:"; ObjectID = "1025"; */
+/* Width */
"1025.title" = "Larghezza Grafico:";
-/* Class = "NSTextFieldCell"; title = "Vista Percentuale"; ObjectID = "1026"; */
-"1026.title" = "Vista Percentuale";
+/* PowerMate shows CPU usage */
+"1030.title" = "PowerMate mostra uso CPU";
-/* Class = "NSTextFieldCell"; title = "Visualizzazione Grafico"; ObjectID = "1027"; */
-"1027.title" = "Visualizzazione Grafico";
-
-/* Class = "NSTextFieldCell"; title = "Varie"; ObjectID = "1028"; */
-"1028.title" = "Varie";
-
-/* Class = "NSTextFieldCell"; title = "Colori"; ObjectID = "1029"; */
-"1029.title" = "Colori";
-
-/* Class = "NSButtonCell"; title = "PowerMate mostra uso CPU come"; ObjectID = "1030"; */
-"1030.title" = "PowerMate mostra uso CPU come";
-
-/* Class = "NSButtonCell"; title = "Mostra Menu Meter Memoria"; ObjectID = "1032"; */
+/* Display Memory Menu Meter */
"1032.title" = "Mostra Menu Meter Memoria";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1033"; */
+/* x */
"1033.title" = "x";
-/* Class = "NSTextFieldCell"; title = "Intervallo Aggiornamento (secondi):"; ObjectID = "1035"; */
-"1035.title" = "Intervallo Aggiornamento (secondi):";
+/* Update interval: */
+"1035.title" = "Intervallo Aggiornamento:";
-/* Class = "NSButtonCell"; title = "Mostra etichette Usata/Libera"; ObjectID = "1037"; */
+/* Show Used/Free labels */
"1037.title" = "Mostra etichette Usata/Libera";
-/* Class = "NSTextFieldCell"; title = "Generale"; ObjectID = "1038"; */
-"1038.title" = "Generale";
-
-/* Class = "NSButtonCell"; title = "Mostra indicatore attività di paging"; ObjectID = "1039"; */
+/* Show paging activity indicator */
"1039.title" = "Mostra indicatore attività di paging";
-/* Class = "NSTextFieldCell"; title = "Colori"; ObjectID = "1040"; */
-"1040.title" = "Colori";
-
-/* Class = "NSTextFieldCell"; title = "Pagine in entr."; ObjectID = "1041"; */
+/* Pagein */
"1041.title" = "Pagine in entr.";
-/* Class = "NSTextFieldCell"; title = "Pagine in usc."; ObjectID = "1042"; */
+/* Pageout */
"1042.title" = "Pagine in usc.";
-/* Class = "NSTextFieldCell"; title = "Tasso Paging"; ObjectID = "1043"; */
-"1043.title" = "Tasso Paging";
-
-/* Class = "NSTextFieldCell"; title = "Larghezza Grafico:"; ObjectID = "1044"; */
+/* Graph width: */
"1044.title" = "Larghezza Grafico:";
-/* Class = "NSTextFieldCell"; title = "Visualizzazione Grafico"; ObjectID = "1045"; */
-"1045.title" = "Visualizzazione Grafico";
-
-/* Class = "NSTextFieldCell"; title = "Attiva"; ObjectID = "1047"; */
+/* Active */
"1047.title" = "Attiva";
-/* Class = "NSTextFieldCell"; title = "Inattiva"; ObjectID = "1048"; */
+/* Inactive */
"1048.title" = "Inattiva";
-/* Class = "NSTextFieldCell"; title = "Wired"; ObjectID = "1049"; */
+/* Wired */
"1049.title" = "Wired";
-/* Class = "NSTextFieldCell"; title = "Free"; ObjectID = "1050"; */
+/* Free */
"1050.title" = "Free";
-/* Class = "NSTextFieldCell"; title = "Used"; ObjectID = "1051"; */
+/* Used */
"1051.title" = "Used";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1053"; */
+/* x */
"1053.title" = "x";
-/* Class = "NSButtonCell"; title = "Mostra Menu Meter Network"; ObjectID = "1054"; */
+/* Display Network Menu Meter */
"1054.title" = "Mostra Menu Meter Network";
-/* Class = "NSTextFieldCell"; title = "Intervallo Aggiornamento (secondi):"; ObjectID = "1056"; */
-"1056.title" = "Intervallo Aggiornamento (secondi):";
+/* Update interval: */
+"1056.title" = "Intervallo Aggiornamento:";
-/* Class = "NSTextFieldCell"; title = "Trasmetti"; ObjectID = "1057"; */
+/* Transmit */
"1057.title" = "Trasmetti";
-/* Class = "NSTextFieldCell"; title = "Ricevi"; ObjectID = "1058"; */
+/* Receive */
"1058.title" = "Ricevi";
-/* Class = "NSButtonCell"; title = "Mostra etichette throughput (Tx/Rx)"; ObjectID = "1060"; */
+/* Show throughput labels (Tx/Rx) */
"1060.title" = "Mostra etichette throughput (Tx/Rx)";
-/* Class = "NSButtonCell"; title = "Ignora valori sotto 1KB/s"; ObjectID = "1061"; */
+/* Ignore values below 1K/s */
"1061.title" = "Ignora valori sotto 1KB/s";
-/* Class = "NSTextFieldCell"; title = "Stile grafico:"; ObjectID = "1062"; */
+/* Graph style: */
"1062.title" = "Stile grafico:";
-/* Class = "NSTextFieldCell"; title = "Larghezza Grafico:"; ObjectID = "1063"; */
+/* Graph width: */
"1063.title" = "Larghezza Grafico:";
-/* Class = "NSTextFieldCell"; title = "Visualizzazione Throughput"; ObjectID = "1065"; */
-"1065.title" = "Visualizzazione Throughput";
-
-/* Class = "NSTextFieldCell"; title = "Visualizzazione Grafico"; ObjectID = "1066"; */
-"1066.title" = "Visualizzazione Grafico";
-
-/* Class = "NSTextFieldCell"; title = "Colori"; ObjectID = "1067"; */
-"1067.title" = "Colori";
-
-/* Class = "NSTextFieldCell"; title = "Mostra interfaccia preferita:"; ObjectID = "1068"; */
+/* Display prefers interface: */
"1068.title" = "Mostra interfaccia preferita:";
-/* Class = "NSTextFieldCell"; title = "Generale"; ObjectID = "1070"; */
-"1070.title" = "Generale";
-
-/* Class = "NSTextFieldCell"; title = "Scala Visualizzazione su:"; ObjectID = "1071"; */
+/* Display scales to: */
"1071.title" = "Scala Visualizzazione su:";
-/* Class = "NSTextFieldCell"; title = "Scala Visualizzazione:"; ObjectID = "1073"; */
+/* Display scaling: */
"1073.title" = "Scala Visualizzazione:";
-/* Class = "NSTextFieldCell"; title = "Orientamento Visualizzazione:"; ObjectID = "1075"; */
+/* Display orientation: */
"1075.title" = "Orientamento Visualizzazione:";
-/* Class = "NSTextFieldCell"; title = "Inattivo"; ObjectID = "1077"; */
+/* Inactive */
"1077.title" = "Inattivo";
-/* Class = "NSTextFieldCell"; title = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)"; ObjectID = "1078"; */
-"1078.title" = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)";
+/* Rows */
+"1088.title" = "Rows";
+
+/* Width */
+"1117.title" = "Width";
+
+/* (%d) */
+"2NH-iF-l28.title" = "(%d)";
+
+/* the sum of all cores */
+"5Lg-aP-TSR.title" = "the sum of all cores";
+
+/* the average of all cores */
+"BYT-hf-ygS.title" = "the average of all cores";
+
+/* Temperature */
+"C4n-F2-kuL.title" = "Temperature";
+
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Activity monitor:";
+
+/* all cores sorted */
+"CG1-40-AVC.title" = "all cores sorted";
+
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
+
+/* original */
+"FPO-Jo-ubG.title" = "original";
+
+/* About */
+"FSw-QC-dn2.label" = "About";
+
+/* physical cores only */
+"H5f-hN-vQV.title" = "physical cores only";
+
+/* Graph */
+"IS4-Xc-psg.title" = "Grafico";
+
+/* Percentage */
+"Jeh-C2-Wwp.title" = "Percentuale";
+
+/* Show bits per second */
+"K7W-5f-1U8.title" = "Show bits per second";
+
+/* Once per week */
+"LmO-Ij-G7M.title" = "Once per week";
+
+/* Once per month */
+"PuG-eZ-jRm.title" = "Once per month";
+
+/* Never */
+"STJ-3R-khe.title" = "Never";
+
+/* Check updates now */
+"XYi-uP-QCD.title" = "Check updates now";
-/* Class = "NSButtonCell"; title = "Sort by CPU usage"; ObjectID = ""; */
-".title" = "Sort by CPU usage";
+/* Display memory pressure */
+"aOw-Lj-aWS.title" = "Display memory pressure";
-/* Class = "NSTextFieldCell"; title = "Horizontal Rows:"; ObjectID = ""; */
-".title" = "Horizontal Rows:";
+/* pure black/white */
+"ayz-p2-XC5.title" = "pure black/white";
-/* Class = "NSTextFieldCell"; title = "Thermometer Display"; ObjectID = ""; */
-".title" = "Thermometer Display";
+/* Compressed */
+"ex0-hf-q5R.title" = "Compressed";
-/* Class = "NSMenuItem"; title = "Horizontal Thermometer"; ObjectID = "941"; */
-"941.title" = "Horizontal Thermometer";
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperature";
-/* Class = "NSButtonCell"; title = "Show average for least utilized processors as single display"; ObjectID = ""; */
-".title" = "Show average for least utilized processors as single display";
+/* Show */
+"k2d-Cg-pqL.title" = "Show";
+
+/* Once per day */
+"lh5-j8-SRe.title" = "Once per day";
+
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Color tint:";
+
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Opens specific panes";
+
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "Barre verticali";
+
+/* Processes to show: */
+"rhi-NX-C3L.title" = "Processes to show:";
+
+/* Horizontal bar */
+"spo-WT-wCm.title" = "Barre orizzontali";
-/* Class = "NSTextFieldCell"; title = "Horizontal Width:"; ObjectID = ""; */
-".title" = "Horizontal Width:";
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatic update check interval:";
-/* Class = "NSButtonCell"; title = "Display memory pressure"; ObjectID = "tAx-IV-Wip"; */
-"tAx-IV-Wip.title" = "Display memory pressure";
+/* all cores, including hyperthreaded ones */
+"vbH-jV-tUr.title" = "all cores, including hyperthreaded ones";
diff --git a/PrefPane/ja.lproj/DiskImageSet.strings b/PrefPane/ja.lproj/DiskImageSet.strings
index 54e9ac9a..c96b61e0 100644
--- a/PrefPane/ja.lproj/DiskImageSet.strings
+++ b/PrefPane/ja.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "メニューエクストラが読み込めません。";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"サードパーティ製のメニューエクストラを利用するにはマニュアルをご覧下さい。";
+"For instructions on enabling third-party menu extras please see the documentation." = "サードパーティ製のメニューエクストラを利用するにはマニュアルをご覧下さい。";
// Strings for the disk icon sets
"Color Arrows" = "矢印 (緑/赤)";
diff --git a/PrefPane/ja.lproj/MenuMetersPref.strings b/PrefPane/ja.lproj/MenuMetersPref.strings
index 7fa76517..14977edb 100644
--- a/PrefPane/ja.lproj/MenuMetersPref.strings
+++ b/PrefPane/ja.lproj/MenuMetersPref.strings
@@ -1,357 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "12"; */
+/* MenuMeters */
"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "ディスク"; ObjectID = "100"; */
+/* Disk */
"100.label" = "ディスク";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "102"; */
+/* CPU */
"102.label" = "CPU";
-/* Class = "NSTabViewItem"; label = "メモリー"; ObjectID = "103"; */
+/* Memory */
"103.label" = "メモリー";
-/* Class = "NSTabViewItem"; label = "ネットワーク"; ObjectID = "105"; */
+/* Network */
"105.label" = "ネットワーク";
-/* Class = "NSMenuItem"; title = "グラフ"; ObjectID = "145"; */
-"IS4-Xc-psg.title" = "グラフ";
-
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "146"; */
-"146.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "パーセント"; ObjectID = "148"; */
-"Jeh-C2-Wwp.title" = "パーセント";
-
-/* Class = "NSMenuItem"; title = "グラフ & パーセント"; ObjectID = "149"; */
-"149.title" = "グラフ & パーセント";
-
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "203"; */
+/* ImageSet */
"203.title" = "ImageSet";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "206"; */
-"206.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "バーグラフ"; ObjectID = "219"; */
+/* Usage Bar */
"219.title" = "バーグラフ";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "223"; */
-"223.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "円グラフ"; ObjectID = "225"; */
+/* Usage Chart */
"225.title" = "円グラフ";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "293"; */
-"293.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "スループット"; ObjectID = "294"; */
+/* Throughput */
"294.title" = "スループット";
-/* Class = "NSMenuItem"; title = "矢印"; ObjectID = "297"; */
+/* Arrows */
"297.title" = "矢印";
-/* Class = "NSMenuItem"; title = "矢印 & スループット"; ObjectID = "299"; */
+/* Arrows and Throughput */
"299.title" = "矢印 & スループット";
-/* Class = "NSMenuItem"; title = "グラフ"; ObjectID = "314"; */
+/* Graph */
"314.title" = "グラフ";
-/* Class = "NSMenuItem"; title = "レベルメータ"; ObjectID = "357"; */
-"r6t-Zl-sS4.title" = "垂直レベルメータ";
-"spo-WT-wCm.title" = "水平レベルメータ";
-/* Class = "NSMenuItem"; title = "グラフ & パーセント & レベルメータ"; ObjectID = "358"; */
-"358.title" = "グラフ & パーセント & レベルメータ";
-
-/* Class = "NSMenuItem"; title = "パーセント & レベルメータ"; ObjectID = "359"; */
-"359.title" = "パーセント & レベルメータ";
-
-/* Class = "NSMenuItem"; title = "グラフ & レベルメータ"; ObjectID = "360"; */
-"360.title" = "グラフ & レベルメータ";
-
-/* Class = "NSMenuItem"; title = "グラフ & 矢印"; ObjectID = "363"; */
+/* Graph and Arrows */
"363.title" = "グラフ & 矢印";
-/* Class = "NSMenuItem"; title = "グラフ & スループット"; ObjectID = "365"; */
+/* Graph and Throughput */
"365.title" = "グラフ & スループット";
-/* Class = "NSMenuItem"; title = "グラフ & 矢印 & スループット"; ObjectID = "366"; */
+/* Graph, Arrows and Throughput */
"366.title" = "グラフ & 矢印 & スループット";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "382"; */
-"382.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "合計 (テキスト大)"; ObjectID = "384"; */
+/* Total (large text) */
"384.title" = "合計 (テキスト大)";
-/* Class = "NSMenuItem"; title = "ユーザー & システム (テキスト小)"; ObjectID = "385"; */
+/* User and System (small text) */
"385.title" = "ユーザー & システム (テキスト小)";
-/* Class = "NSMenuItem"; title = "合計 (テキスト中)"; ObjectID = "386"; */
+/* Total (medium text) */
"386.title" = "合計 (テキスト中)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "403"; */
-"403.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "上下に"; ObjectID = "404"; */
+/* Opposed */
"404.title" = "上下に";
-/* Class = "NSMenuItem"; title = "スタンダード"; ObjectID = "406"; */
+/* Standard */
"406.title" = "スタンダード";
-/* Class = "NSMenuItem"; title = "中央に"; ObjectID = "407"; */
+/* Centered */
"407.title" = "中央に";
-/* Class = "NSMenuItem"; title = "ヒストリーグラフ"; ObjectID = "472"; */
+/* Usage History Graph */
"472.title" = "ヒストリーグラフ";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "477"; */
-"477.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "パルス"; ObjectID = "478"; */
+/* pulse */
"478.title" = "パルス";
-/* Class = "NSMenuItem"; title = "グロー"; ObjectID = "479"; */
+/* glow */
"479.title" = "グロー";
-/* Class = "NSMenuItem"; title = "プライマリ (自動)"; ObjectID = "487"; */
+/* Primary (automatic) */
"487.title" = "プライマリ (自動)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "489"; */
-"489.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "グロー (逆)"; ObjectID = "497"; */
+/* inverse glow */
"497.title" = "グロー (逆)";
-/* Class = "NSMenuItem"; title = "パルス (逆)"; ObjectID = "498"; */
+/* inverse pulse */
"498.title" = "パルス (逆)";
-/* Class = "NSMenuItem"; title = "ボリュームを開く"; ObjectID = "500"; */
+/* opens the volume */
"500.title" = "ボリュームを開く";
-/* Class = "NSMenuItem"; title = "アンマウント/取り出し"; ObjectID = "502"; */
+/* unmounts/ejects the volume */
"502.title" = "アンマウント/取り出し";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "503"; */
-"503.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "使用量/空き容量の合計"; ObjectID = "508"; */
+/* Used/Free Totals */
"508.title" = "使用量/空き容量の合計";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "522"; */
-"522.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "インターフェース速度"; ObjectID = "525"; */
+/* Interface speed */
"525.title" = "インターフェース速度";
-/* Class = "NSMenuItem"; title = "トラフィックのピーク"; ObjectID = "526"; */
+/* Peak traffic */
"526.title" = "トラフィックのピーク";
-/* Class = "NSMenuItem"; title = "線状で"; ObjectID = "541"; */
+/* Linear */
"541.title" = "線状で";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "542"; */
-"542.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "対数で"; ObjectID = "545"; */
+/* Logarithmic */
"545.title" = "対数で";
-/* Class = "NSMenuItem"; title = "立方根で"; ObjectID = "556"; */
+/* Cube root */
"556.title" = "立方根で";
-/* Class = "NSMenuItem"; title = "平方根で"; ObjectID = "557"; */
+/* Square root */
"557.title" = "平方根で";
-/* Class = "NSMenuItem"; title = "送信/受信の順"; ObjectID = "590"; */
+/* Transmit/Receive */
"590.title" = "送信/受信の順";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "591"; */
-"591.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "受信/送信の順"; ObjectID = "592"; */
+/* Receive/Transmit */
"592.title" = "受信/送信の順";
-/* Class = "NSMenuItem"; title = "上下逆に"; ObjectID = "613"; */
+/* Inverse Opposed */
"613.title" = "上下逆に";
-/* Class = "NSButtonCell"; title = "ディスクメータを表示:"; ObjectID = "1006"; */
-"1006.title" = "ディスクメータを表示:";
+/* Display Disk Activity Menu Meter */
+"1006.title" = "ディスクメータを表示";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1007"; */
+/* x */
"1007.title" = "x";
-/* Class = "NSTextFieldCell"; title = "更新間隔 (秒):"; ObjectID = "1010"; */
-"1010.title" = "更新間隔 (秒):";
+/* Update interval: */
+"1010.title" = "更新間隔";
-/* Class = "NSTextFieldCell"; title = "メニューからボリューム選択した時:"; ObjectID = "1011"; */
-"1011.title" = "メニューからボリューム選択した時:";
+/* Selecting a volume from the disk menu */
+"1011.title" = "メニューからボリューム選択した時";
-/* Class = "NSTextFieldCell"; title = "(Option キーを押すと取り消す事ができます)"; ObjectID = "1013"; */
+/* (Holding the Option key will reverse the behavior) */
"1013.title" = "(Option キーを押すと取り消す事ができます)";
-/* Class = "NSButtonCell"; title = "CPU メータを表示:"; ObjectID = "1014"; */
-"1014.title" = "CPU メータを表示:";
+/* Display CPU Menu Meter */
+"1014.title" = "CPU メータを表示";
-/* Class = "NSTextFieldCell"; title = "更新間隔 (秒):"; ObjectID = "1017"; */
-"1017.title" = "更新間隔 (秒):";
+/* Update interval: */
+"1017.title" = "更新間隔";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1018"; */
+/* x */
"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "ユーザー"; ObjectID = "1019"; */
+/* User */
"1019.title" = "ユーザー";
-/* Class = "NSTextFieldCell"; title = "システム"; ObjectID = "1020"; */
+/* System */
"1020.title" = "システム";
-/* Class = "NSTextFieldCell"; title = "表示内容:"; ObjectID = "1022"; */
-"1022.title" = "表示内容:";
+/* Width */
+"1025.title" = "幅";
-/* Class = "NSButtonCell"; title = "マルチプロセッサの場合は平均値を表示"; ObjectID = "1024"; */
-"1024.title" = "マルチプロセッサの場合は平均値を表示";
+/* PowerMate shows CPU usage */
+"1030.title" = "PowerMate で CPU 使用表示";
-/* Class = "NSTextFieldCell"; title = "幅:"; ObjectID = "1025"; */
-"1025.title" = "幅:";
+/* Display Memory Menu Meter */
+"1032.title" = "メモリーメータを表示";
-/* Class = "NSTextFieldCell"; title = "パーセント表示オプション"; ObjectID = "1026"; */
-"1026.title" = "パーセント表示オプション";
-
-/* Class = "NSTextFieldCell"; title = "グラフ表示オプション"; ObjectID = "1027"; */
-"1027.title" = "グラフ表示オプション";
-
-/* Class = "NSTextFieldCell"; title = "その他のオプション"; ObjectID = "1028"; */
-"1028.title" = "その他のオプション";
-
-/* Class = "NSTextFieldCell"; title = "カラーオプション"; ObjectID = "1029"; */
-"1029.title" = "カラーオプション";
-
-/* Class = "NSButtonCell"; title = "PowerMate での CPU 使用表示:"; ObjectID = "1030"; */
-"1030.title" = "PowerMate での CPU 使用表示:";
-
-/* Class = "NSButtonCell"; title = "メモリーメータを表示:"; ObjectID = "1032"; */
-"1032.title" = "メモリーメータを表示:";
-
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1033"; */
+/* x */
"1033.title" = "x";
-/* Class = "NSTextFieldCell"; title = "更新間隔 (秒):"; ObjectID = "1035"; */
-"1035.title" = "更新間隔 (秒):";
+/* Update interval: */
+"1035.title" = "更新間隔";
-/* Class = "NSButtonCell"; title = "use (使用量)/free (空き容量) のラベルを付ける"; ObjectID = "1037"; */
+/* Show Used/Free labels */
"1037.title" = "use (使用量)/free (空き容量) のラベルを付ける";
-/* Class = "NSTextFieldCell"; title = "一般オプション"; ObjectID = "1038"; */
-"1038.title" = "一般オプション";
-
-/* Class = "NSButtonCell"; title = "ページングインジケータを表示"; ObjectID = "1039"; */
+/* Show paging activity indicator */
"1039.title" = "ページングインジケータを表示";
-/* Class = "NSTextFieldCell"; title = "カラーオプションオプション"; ObjectID = "1040"; */
-"1040.title" = "カラーオプションオプション";
-
-/* Class = "NSTextFieldCell"; title = "ページイン"; ObjectID = "1041"; */
+/* Pagein */
"1041.title" = "ページイン";
-/* Class = "NSTextFieldCell"; title = "ページアウト"; ObjectID = "1042"; */
+/* Pageout */
"1042.title" = "ページアウト";
-/* Class = "NSTextFieldCell"; title = "ページングレート"; ObjectID = "1043"; */
-"1043.title" = "ページングレート";
-
-/* Class = "NSTextFieldCell"; title = "幅:"; ObjectID = "1044"; */
-"1044.title" = "幅:";
+/* Graph width: */
+"1044.title" = "幅";
-/* Class = "NSTextFieldCell"; title = "グラフ表示オプション"; ObjectID = "1045"; */
-"1045.title" = "グラフ表示オプション";
-
-/* Class = "NSTextFieldCell"; title = "アクティブ"; ObjectID = "1047"; */
+/* Active */
"1047.title" = "アクティブ";
-/* Class = "NSTextFieldCell"; title = "インアクティブ"; ObjectID = "1048"; */
+/* Inactive */
"1048.title" = "インアクティブ";
-/* Class = "NSTextFieldCell"; title = "ワイアード"; ObjectID = "1049"; */
+/* Wired */
"1049.title" = "ワイアード";
-/* Class = "NSTextFieldCell"; title = "Free"; ObjectID = "1050"; */
+/* Free */
"1050.title" = "Free";
-/* Class = "NSTextFieldCell"; title = "Used"; ObjectID = "1051"; */
+/* Used */
"1051.title" = "Used";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1053"; */
+/* x */
"1053.title" = "x";
-/* Class = "NSButtonCell"; title = "ネットワークメータを表示:"; ObjectID = "1054"; */
-"1054.title" = "ネットワークメータを表示:";
+/* Display Network Menu Meter */
+"1054.title" = "ネットワークメータを表示";
-/* Class = "NSTextFieldCell"; title = "更新間隔 (秒):"; ObjectID = "1056"; */
-"1056.title" = "更新間隔 (秒):";
+/* Update interval: */
+"1056.title" = "更新間隔";
-/* Class = "NSTextFieldCell"; title = "送信"; ObjectID = "1057"; */
+/* Transmit */
"1057.title" = "送信";
-/* Class = "NSTextFieldCell"; title = "受信"; ObjectID = "1058"; */
+/* Receive */
"1058.title" = "受信";
-/* Class = "NSButtonCell"; title = "out (送信)/in (受信) のラベルを付ける"; ObjectID = "1060"; */
+/* Show throughput labels (Tx/Rx) */
"1060.title" = "out (送信)/in (受信) のラベルを付ける";
-/* Class = "NSButtonCell"; title = "1KB/秒以下のスループットを無視"; ObjectID = "1061"; */
+/* Ignore values below 1K/s */
"1061.title" = "1KB/秒以下のスループットを無視";
-/* Class = "NSTextFieldCell"; title = "表示タイプ:"; ObjectID = "1062"; */
-"1062.title" = "表示タイプ:";
+/* Graph style: */
+"1062.title" = "表示タイプ";
+
+/* Graph width: */
+"1063.title" = "幅";
-/* Class = "NSTextFieldCell"; title = "幅:"; ObjectID = "1063"; */
-"1063.title" = "幅:";
+/* Display prefers interface: */
+"1068.title" = "インターフェース表示";
-/* Class = "NSTextFieldCell"; title = "スループット表示オプション"; ObjectID = "1065"; */
-"1065.title" = "スループット表示オプション";
+/* Display scales to: */
+"1071.title" = "表示内容";
-/* Class = "NSTextFieldCell"; title = "グラフ表示オプション"; ObjectID = "1066"; */
-"1066.title" = "グラフ表示オプション";
+/* Display scaling: */
+"1073.title" = "スケール";
-/* Class = "NSTextFieldCell"; title = "カラーオプション"; ObjectID = "1067"; */
-"1067.title" = "カラーオプション";
+/* Display orientation: */
+"1075.title" = "表示方向";
-/* Class = "NSTextFieldCell"; title = "インターフェース表示:"; ObjectID = "1068"; */
-"1068.title" = "インターフェース表示:";
+/* Inactive */
+"1077.title" = "インアクティブ";
-/* Class = "NSTextFieldCell"; title = "一般オプション"; ObjectID = "1070"; */
-"1070.title" = "一般オプション";
+/* Rows */
+"1088.title" = "Rows";
-/* Class = "NSTextFieldCell"; title = "表示内容:"; ObjectID = "1071"; */
-"1071.title" = "表示内容:";
+/* Width */
+"1117.title" = "Width";
-/* Class = "NSTextFieldCell"; title = "スケール:"; ObjectID = "1073"; */
-"1073.title" = "スケール:";
+/* (%d) */
+"2NH-iF-l28.title" = "(%d)";
-/* Class = "NSTextFieldCell"; title = "表示方向:"; ObjectID = "1075"; */
-"1075.title" = "表示方向:";
+/* the sum of all cores */
+"5Lg-aP-TSR.title" = "the sum of all cores";
-/* Class = "NSTextFieldCell"; title = "インアクティブ"; ObjectID = "1077"; */
-"1077.title" = "インアクティブ";
+/* the average of all cores */
+"BYT-hf-ygS.title" = "the average of all cores";
+
+/* Temperature */
+"C4n-F2-kuL.title" = "Temperature";
+
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Activity monitor:";
-/* Class = "NSTextFieldCell"; title = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)"; ObjectID = "1078"; */
-"1078.title" = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)";
+/* all cores sorted */
+"CG1-40-AVC.title" = "all cores sorted";
-/* Class = "NSButtonCell"; title = "Sort by CPU usage"; ObjectID = ""; */
-".title" = "Sort by CPU usage";
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
+
+/* original */
+"FPO-Jo-ubG.title" = "original";
+
+/* About */
+"FSw-QC-dn2.label" = "About";
+
+/* physical cores only */
+"H5f-hN-vQV.title" = "physical cores only";
+
+/* Graph */
+"IS4-Xc-psg.title" = "グラフ";
+
+/* Percentage */
+"Jeh-C2-Wwp.title" = "パーセント";
-/* Class = "NSTextFieldCell"; title = "Horizontal Rows:"; ObjectID = ""; */
-".title" = "Horizontal Rows:";
+/* Show bits per second */
+"K7W-5f-1U8.title" = "Show bits per second";
-/* Class = "NSTextFieldCell"; title = "Thermometer Display"; ObjectID = ""; */
-".title" = "Thermometer Display";
+/* Once per week */
+"LmO-Ij-G7M.title" = "Once per week";
-/* Class = "NSMenuItem"; title = "Horizontal Thermometer"; ObjectID = "941"; */
-"941.title" = "Horizontal Thermometer";
+/* Once per month */
+"PuG-eZ-jRm.title" = "Once per month";
-/* Class = "NSButtonCell"; title = "Show average for least utilized processors as single display"; ObjectID = ""; */
-".title" = "Show average for least utilized processors as single display";
+/* Never */
+"STJ-3R-khe.title" = "Never";
+
+/* Check updates now */
+"XYi-uP-QCD.title" = "Check updates now";
+
+/* Display memory pressure */
+"aOw-Lj-aWS.title" = "Display memory pressure";
+
+/* pure black/white */
+"ayz-p2-XC5.title" = "pure black/white";
+
+/* Compressed */
+"ex0-hf-q5R.title" = "Compressed";
+
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperature";
+
+/* Show */
+"k2d-Cg-pqL.title" = "Show";
+
+/* Once per day */
+"lh5-j8-SRe.title" = "Once per day";
+
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Color tint:";
+
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Opens specific panes";
+
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "垂直レベルメータ";
+
+/* Processes to show: */
+"rhi-NX-C3L.title" = "Processes to show:";
+
+/* Horizontal bar */
+"spo-WT-wCm.title" = "水平レベルメータ";
-/* Class = "NSTextFieldCell"; title = "Horizontal Width:"; ObjectID = ""; */
-".title" = "Horizontal Width:";
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatic update check interval:";
-/* Class = "NSButtonCell"; title = "Display memory pressure"; ObjectID = "IdA-68-Ayg"; */
-"IdA-68-Ayg.title" = "Display memory pressure";
+/* all cores, including hyperthreaded ones */
+"vbH-jV-tUr.title" = "all cores, including hyperthreaded ones";
diff --git a/PrefPane/nl.lproj/DiskImageSet.strings b/PrefPane/nl.lproj/DiskImageSet.strings
index 1518ed2a..3095c937 100644
--- a/PrefPane/nl.lproj/DiskImageSet.strings
+++ b/PrefPane/nl.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "De Menu-extra kon niet worden geladen";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"Raadpleeg de documentatie voor informatie over het mogelijk maken van niet-Apple menu-extra\'s.";
+"For instructions on enabling third-party menu extras please see the documentation." = "Raadpleeg de documentatie voor informatie over het mogelijk maken van niet-Apple menu-extra\\'s.";
// Strings for the disk icon sets
"Color Arrows" = "Gekleurde pijltjes";
diff --git a/PrefPane/nl.lproj/MenuMetersPref.strings b/PrefPane/nl.lproj/MenuMetersPref.strings
index d97afa94..55c3d6b8 100644
--- a/PrefPane/nl.lproj/MenuMetersPref.strings
+++ b/PrefPane/nl.lproj/MenuMetersPref.strings
@@ -1,372 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "779"; */
-"779.title" = "MenuMeters";
+/* MenuMeters */
+"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "Schijf"; ObjectID = "782"; */
-"782.label" = "Schijf";
+/* Disk */
+"100.label" = "Disk";
-/* Class = "NSButtonCell"; title = "Toon schijf-MenuMeter"; ObjectID = "785"; */
-"785.title" = "Toon schijf-MenuMeter";
+/* CPU */
+"102.label" = "CPU";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "787"; */
-"787.title" = "x";
+/* Memory */
+"103.label" = "Memory";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "792"; */
-"792.title" = "OtherViews";
+/* Network */
+"105.label" = "Network";
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "793"; */
-"793.title" = "ImageSet";
+/* ImageSet */
+"203.title" = "ImageSet";
-/* Class = "NSTextFieldCell"; title = "Ververs iedere (seconden):"; ObjectID = "795"; */
-"795.title" = "Ververs iedere (seconden):";
+/* Usage Bar */
+"219.title" = "Usage Bar";
-/* Class = "NSTextFieldCell"; title = "Kiezen van een volume uit het menu"; ObjectID = "797"; */
-"797.title" = "Kiezen van een volume uit het menu";
+/* Usage Chart */
+"225.title" = "Usage Chart";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "800"; */
-"800.title" = "OtherViews";
+/* Throughput */
+"294.title" = "Throughput";
-/* Class = "NSMenuItem"; title = "verwijdert het volume"; ObjectID = "801"; */
-"801.title" = "verwijdert het volume";
+/* Arrows */
+"297.title" = "Arrows";
-/* Class = "NSMenuItem"; title = "opent het volume in de Finder"; ObjectID = "802"; */
-"802.title" = "opent het volume in de Finder";
+/* Arrows and Throughput */
+"299.title" = "Arrows and Throughput";
-/* Class = "NSTextFieldCell"; title = "Kiezen met ingedrukte Optietoets heeft de andere functie"; ObjectID = "804"; */
-"804.title" = "Kiezen met ingedrukte Optietoets heeft de andere functie";
+/* Graph */
+"314.title" = "Graph";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "805"; */
-"805.label" = "CPU";
+/* Graph and Arrows */
+"363.title" = "Graph and Arrows";
-/* Class = "NSButtonCell"; title = "Toon CPU-MenuMeter"; ObjectID = "808"; */
-"808.title" = "Toon CPU-MenuMeter";
+/* Graph and Throughput */
+"365.title" = "Graph and Throughput";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "811"; */
-"811.title" = "OtherViews";
+/* Graph, Arrows and Throughput */
+"366.title" = "Graph, Arrows and Throughput";
-/* Class = "NSMenuItem"; title = "Grafiek en thermometer"; ObjectID = "812"; */
-"812.title" = "Grafiek en thermometer";
+/* Total (large text) */
+"384.title" = "Total (large text)";
-/* Class = "NSMenuItem"; title = "Percentage en thermometer"; ObjectID = "813"; */
-"813.title" = "Percentage en thermometer";
+/* User and System (small text) */
+"385.title" = "User and System (small text)";
-/* Class = "NSMenuItem"; title = "Grafiek, percentage en thermometer"; ObjectID = "814"; */
-"814.title" = "Grafiek, percentage en thermometer";
+/* Total (medium text) */
+"386.title" = "Total (medium text)";
-/* Class = "NSMenuItem"; title = "Thermometer"; ObjectID = "815"; */
-"815.title" = "Thermometer";
+/* Opposed */
+"404.title" = "Opposed";
-/* Class = "NSMenuItem"; title = "Grafiek en percentage"; ObjectID = "816"; */
-"816.title" = "Grafiek en percentage";
+/* Standard */
+"406.title" = "Standard";
-/* Class = "NSMenuItem"; title = "Percentage"; ObjectID = "817"; */
-"817.title" = "Percentage";
+/* Centered */
+"407.title" = "Centered";
-/* Class = "NSMenuItem"; title = "Grafiek"; ObjectID = "818"; */
-"818.title" = "Grafiek";
+/* Usage History Graph */
+"472.title" = "Usage History Graph";
-/* Class = "NSTextFieldCell"; title = "Ververs iedere (seconden):"; ObjectID = "822"; */
-"822.title" = "Ververs iedere (seconden):";
+/* pulse */
+"478.title" = "pulse";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "824"; */
-"824.title" = "x";
+/* glow */
+"479.title" = "glow";
-/* Class = "NSTextFieldCell"; title = "Gebruiker"; ObjectID = "828"; */
-"828.title" = "Gebruiker";
+/* Primary (automatic) */
+"487.title" = "Primary (automatic)";
-/* Class = "NSTextFieldCell"; title = "Systeem"; ObjectID = "830"; */
-"830.title" = "Systeem";
+/* inverse glow */
+"497.title" = "inverse glow";
-/* Class = "NSButtonCell"; title = "Anti-alias kleine tekst"; ObjectID = "832"; */
-"832.title" = "Anti-alias kleine tekst";
+/* inverse pulse */
+"498.title" = "inverse pulse";
-/* Class = "NSTextFieldCell"; title = "Toon percentage als:"; ObjectID = "836"; */
-"836.title" = "Toon percentage als:";
+/* opens the volume */
+"500.title" = "opens the volume";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "839"; */
-"839.title" = "OtherViews";
+/* unmounts/ejects the volume */
+"502.title" = "unmounts/ejects the volume";
-/* Class = "NSMenuItem"; title = "Totaal (gemiddeld)"; ObjectID = "840"; */
-"840.title" = "Totaal (gemiddeld)";
+/* Used/Free Totals */
+"508.title" = "Used/Free Totals";
-/* Class = "NSMenuItem"; title = "Gebruiker en systeem (klein)"; ObjectID = "841"; */
-"841.title" = "Gebruiker en systeem (klein)";
+/* Interface speed */
+"525.title" = "Interface speed";
-/* Class = "NSMenuItem"; title = "Totaal (groot)"; ObjectID = "842"; */
-"842.title" = "Totaal (groot)";
+/* Peak traffic */
+"526.title" = "Peak traffic";
-/* Class = "NSButtonCell"; title = "Toon gemiddelde voor meer CPU's in één weergave"; ObjectID = "844"; */
-"844.title" = "Toon gemiddelde voor meer CPU's in één weergave";
+/* Linear */
+"541.title" = "Linear";
-/* Class = "NSTextFieldCell"; title = "'nice'"; ObjectID = "847"; */
-"847.title" = "'nice'";
+/* Logarithmic */
+"545.title" = "Logarithmic";
-/* Class = "NSTextFieldCell"; title = "Breedte:"; ObjectID = "849"; */
-"849.title" = "Breedte:";
+/* Cube root */
+"556.title" = "Cube root";
-/* Class = "NSTextFieldCell"; title = "Percentage-weergave"; ObjectID = "851"; */
-"851.title" = "Percentage-weergave";
+/* Square root */
+"557.title" = "Square root";
-/* Class = "NSTextFieldCell"; title = "Grafiekweergave"; ObjectID = "854"; */
-"854.title" = "Grafiekweergave";
+/* Transmit/Receive */
+"590.title" = "Transmit/Receive";
-/* Class = "NSTextFieldCell"; title = "Algemeen"; ObjectID = "1008"; */
-"1008.title" = "Algemeen";
+/* Receive/Transmit */
+"592.title" = "Receive/Transmit";
-/* Class = "NSTextFieldCell"; title = "Kleuren"; ObjectID = "1011"; */
-"1011.title" = "Kleuren";
+/* Inverse Opposed */
+"613.title" = "Inverse Opposed";
-/* Class = "NSButtonCell"; title = "PowerMate toont CPU-gebruik als"; ObjectID = "1014"; */
-"1014.title" = "PowerMate toont CPU-gebruik als";
+/* Display Disk Activity Menu Meter */
+"1006.title" = "Display Disk Activity Menu Meter";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1017"; */
-"1017.title" = "OtherViews";
+/* x */
+"1007.title" = "x";
-/* Class = "NSMenuItem"; title = "inverse pulse"; ObjectID = "1018"; */
-"1018.title" = "inverse pulse";
+/* Update interval: */
+"1010.title" = "OtherViews";
-/* Class = "NSMenuItem"; title = "inverse glow"; ObjectID = "1019"; */
-"1019.title" = "inverse glow";
+/* Selecting a volume from the disk menu */
+"1011.title" = "Wortel";
-/* Class = "NSMenuItem"; title = "glow"; ObjectID = "1020"; */
-"1020.title" = "glow";
+/* (Holding the Option key will reverse the behavior) */
+"1013.title" = "Logarithmisch";
-/* Class = "NSMenuItem"; title = "pulse"; ObjectID = "1021"; */
-"1021.title" = "pulse";
+/* Display CPU Menu Meter */
+"1014.title" = "Linear";
-/* Class = "NSTabViewItem"; label = "Geheugen"; ObjectID = "1022"; */
-"871.label" = "Geheugen";
+/* Update interval: */
+"1017.title" = "OtherViews";
-/* Class = "NSButtonCell"; title = "Toon geheugen-MenuMeter"; ObjectID = "1025"; */
-"1025.title" = "Toon geheugen-MenuMeter";
+/* x */
+"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1027"; */
-"1027.title" = "x";
+/* User */
+"1019.title" = "inverse glow";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1030"; */
-"1030.title" = "OtherViews";
+/* System */
+"1020.title" = "glow";
-/* Class = "NSMenuItem"; title = "Totalen vrij / gebruikt"; ObjectID = "1031"; */
-"1031.title" = "Totalen vrij / gebruikt";
+/* Width */
+"1025.title" = "Niet actief";
+
+/* PowerMate shows CPU usage */
+"1030.title" = "OtherViews";
-/* Class = "NSMenuItem"; title = "Geschiedenis"; ObjectID = "1032"; */
+/* Display Memory Menu Meter */
"1032.title" = "Geschiedenis";
-/* Class = "NSMenuItem"; title = "Taartgrafiek"; ObjectID = "1033"; */
-"1033.title" = "Taartgrafiek";
+/* x */
+"1033.title" = "x";
-/* Class = "NSMenuItem"; title = "Staafgrafiek"; ObjectID = "1034"; */
-"1034.title" = "Staafgrafiek";
+/* Update interval: */
+"1035.title" = "Update interval:";
-/* Class = "NSTextFieldCell"; title = "Ververs iedere (seconden):"; ObjectID = "1036"; */
-"1036.title" = "Ververs iedere (seconden):";
+/* Show Used/Free labels */
+"1037.title" = "Show Used/Free labels";
-/* Class = "NSButtonCell"; title = "Anti-alias tekst"; ObjectID = "1040"; */
-"1040.title" = "Anti-alias tekst";
+/* Show paging activity indicator */
+"1039.title" = "Show paging activity indicator";
-/* Class = "NSButtonCell"; title = "Toon labels voor vrij / gebruikt"; ObjectID = "1042"; */
+/* Pagein */
+"1041.title" = "Pagein";
+
+/* Pageout */
"1042.title" = "Toon labels voor vrij / gebruikt";
-/* Class = "NSTextFieldCell"; title = "Algemeen"; ObjectID = "1044"; */
+/* Graph width: */
"1044.title" = "Algemeen";
-/* Class = "NSButtonCell"; title = "Toon indicatie van 'paging'-activiteit"; ObjectID = "1047"; */
-"1047.title" = "Toon indicatie van 'paging'-activiteit";
-
-/* Class = "NSTextFieldCell"; title = "Kleuren"; ObjectID = "1049"; */
-"1049.title" = "Kleuren";
-
-/* Class = "NSTextFieldCell"; title = "page-in"; ObjectID = "1053"; */
-"1053.title" = "page-in";
-
-/* Class = "NSTextFieldCell"; title = "page-out"; ObjectID = "1056"; */
-"1056.title" = "page-out";
-
-/* Class = "NSTextFieldCell"; title = "paging"; ObjectID = "1059"; */
-"1059.title" = "paging";
-
-/* Class = "NSTextFieldCell"; title = "Grafiekbreedte"; ObjectID = "1061"; */
-"1061.title" = "Grafiekbreedte";
-
-/* Class = "NSTextFieldCell"; title = "Weergave"; ObjectID = "1063"; */
-"1063.title" = "Weergave";
-
-/* Class = "NSTextFieldCell"; title = "Actief"; ObjectID = "1074"; */
-"1074.title" = "Actief";
-
-/* Class = "NSTextFieldCell"; title = "Inactief"; ObjectID = "1076"; */
-"1076.title" = "Inactief";
-
-/* Class = "NSTextFieldCell"; title = "'wired'"; ObjectID = "1078"; */
-"1078.title" = "'wired'";
-
-/* Class = "NSTextFieldCell"; title = "Vrij"; ObjectID = "932"; */
-"932.title" = "Vrij";
-
-/* Class = "NSTextFieldCell"; title = "Gebruikt"; ObjectID = "934"; */
-"934.title" = "Gebruikt";
-
-/* Class = "NSTabViewItem"; label = "Netwerk"; ObjectID = ""; */
-"936.label" = "Netwerk";
-
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "941"; */
-"941.title" = "x";
-
-/* Class = "NSButtonCell"; title = "Toon netwerk-MenuMeter"; ObjectID = ""; */
-".title" = "Toon netwerk-MenuMeter";
+/* Active */
+"1047.title" = "Toon indicatie van ’paging’-activiteit";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = ""; */
-".title" = "OtherViews";
+/* Inactive */
+"1048.title" = "Inactive";
-/* Class = "NSMenuItem"; title = "Grafiek, pijlen en doorvoer"; ObjectID = ""; */
-".title" = "Grafiek, pijlen en doorvoer";
+/* Wired */
+"1049.title" = "Kleuren";
-/* Class = "NSMenuItem"; title = "Grafiek en doorvoer"; ObjectID = "948"; */
-"948.title" = "Grafiek en doorvoer";
+/* Free */
+"1050.title" = "Free";
-/* Class = "NSMenuItem"; title = "Grafiek en pijlen"; ObjectID = "949"; */
-"949.title" = "Grafiek en pijlen";
+/* Used */
+"1051.title" = "Used";
-/* Class = "NSMenuItem"; title = "Grafiek"; ObjectID = "950"; */
-"950.title" = "Grafiek";
+/* x */
+"1053.title" = "x";
-/* Class = "NSMenuItem"; title = "Pijlen en doorvoer"; ObjectID = "951"; */
-"951.title" = "Pijlen en doorvoer";
+/* Display Network Menu Meter */
+"1054.title" = "Display Network Menu Meter";
-/* Class = "NSMenuItem"; title = "Pijlen"; ObjectID = "952"; */
-"952.title" = "Pijlen";
+/* Update interval: */
+"1056.title" = "page-out";
-/* Class = "NSMenuItem"; title = "Doorvoer"; ObjectID = "953"; */
-"953.title" = "Doorvoer";
+/* Transmit */
+"1057.title" = "Transmit";
-/* Class = "NSTextFieldCell"; title = "Ververs iedere (seconden):"; ObjectID = "955"; */
-"955.title" = "Ververs iedere (seconden):";
+/* Receive */
+"1058.title" = "Receive";
-/* Class = "NSButtonCell"; title = "Anti-alias tekst"; ObjectID = "957"; */
-"957.title" = "Anti-alias tekst";
+/* Show throughput labels (Tx/Rx) */
+"1060.title" = "Show throughput labels (Tx/Rx)";
-/* Class = "NSTextFieldCell"; title = "Verzenden"; ObjectID = "959"; */
-"959.title" = "Verzenden";
+/* Ignore values below 1K/s */
+"1061.title" = "Grafiekbreedte";
-/* Class = "NSTextFieldCell"; title = "Ontvangen"; ObjectID = "961"; */
-"961.title" = "Ontvangen";
+/* Graph style: */
+"1062.title" = "Graph style:";
-/* Class = "NSButtonCell"; title = "Toon labels (Tx/Rx)"; ObjectID = "967"; */
-"967.title" = "Toon labels (Tx/Rx)";
+/* Graph width: */
+"1063.title" = "Weergave";
-/* Class = "NSButtonCell"; title = "Negeer waarden kleiner dan 1KB/s"; ObjectID = "969"; */
-"969.title" = "Negeer waarden kleiner dan 1KB/s";
+/* Display prefers interface: */
+"1068.title" = "Display prefers interface:";
-/* Class = "NSTextFieldCell"; title = "Stijl:"; ObjectID = "971"; */
-"971.title" = "Stijl:";
+/* Display scales to: */
+"1071.title" = "Display scales to:";
-/* Class = "NSTextFieldCell"; title = "Breedte:"; ObjectID = "973"; */
-"973.title" = "Breedte:";
+/* Display scaling: */
+"1073.title" = "Display scaling:";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "976"; */
-"976.title" = "OtherViews";
+/* Display orientation: */
+"1075.title" = "Display orientation:";
-/* Class = "NSMenuItem"; title = "Tegenover elkaar, omgekeerd"; ObjectID = "977"; */
-"977.title" = "Tegenover elkaar, omgekeerd";
+/* Inactive */
+"1077.title" = "Inactive";
-/* Class = "NSMenuItem"; title = "Gecentreerd"; ObjectID = "978"; */
-"978.title" = "Gecentreerd";
+/* Rows */
+"1088.title" = "Rows";
-/* Class = "NSMenuItem"; title = "Standaard"; ObjectID = "979"; */
-"979.title" = "Standaard";
+/* Width */
+"1117.title" = "Width";
-/* Class = "NSMenuItem"; title = "Tegenover elkaar"; ObjectID = "980"; */
-"980.title" = "Tegenover elkaar";
+/* (%d) */
+"2NH-iF-l28.title" = "(%d)";
-/* Class = "NSTextFieldCell"; title = "Weergave - Doorvoer"; ObjectID = "982"; */
-"982.title" = "Weergave - Doorvoer";
+/* the sum of all cores */
+"5Lg-aP-TSR.title" = "the sum of all cores";
-/* Class = "NSTextFieldCell"; title = "Weergave - Grafiek"; ObjectID = "985"; */
-"985.title" = "Weergave - Grafiek";
+/* the average of all cores */
+"BYT-hf-ygS.title" = "the average of all cores";
-/* Class = "NSTextFieldCell"; title = "Kleuren"; ObjectID = "988"; */
-"988.title" = "Kleuren";
+/* Temperature */
+"C4n-F2-kuL.title" = "Temperature";
-/* Class = "NSTextFieldCell"; title = "Voorkeursinterface:"; ObjectID = "991"; */
-"991.title" = "Voorkeursinterface:";
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Activity monitor:";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "994"; */
-"994.title" = "OtherViews";
+/* all cores sorted */
+"CG1-40-AVC.title" = "all cores sorted";
-/* Class = "NSMenuItem"; title = "Primair (automatisch)"; ObjectID = "995"; */
-"995.title" = "Primair (automatisch)";
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
-/* Class = "NSTextFieldCell"; title = "Algemeen"; ObjectID = "997"; */
-"997.title" = "Algemeen";
+/* original */
+"FPO-Jo-ubG.title" = "original";
-/* Class = "NSTextFieldCell"; title = "Weergave schaalt op:"; ObjectID = "1000"; */
-"1000.title" = "Weergave schaalt op:";
+/* About */
+"FSw-QC-dn2.label" = "About";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1003"; */
-"1003.title" = "OtherViews";
+/* physical cores only */
+"H5f-hN-vQV.title" = "physical cores only";
-/* Class = "NSMenuItem"; title = "Piekverkeer"; ObjectID = "1004"; */
-"1004.title" = "Piekverkeer";
+/* Graph */
+"IS4-Xc-psg.title" = "Graph";
-/* Class = "NSMenuItem"; title = "Snelheid"; ObjectID = "1005"; */
-"1005.title" = "Snelheid";
+/* Percentage */
+"Jeh-C2-Wwp.title" = "Percentage";
-/* Class = "NSTextFieldCell"; title = "Schaalmethode:"; ObjectID = "1007"; */
-"1007.title" = "Schaalmethode:";
+/* Show bits per second */
+"K7W-5f-1U8.title" = "Show bits per second";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1010"; */
-"1010.title" = "OtherViews";
+/* Once per week */
+"LmO-Ij-G7M.title" = "Once per week";
-/* Class = "NSMenuItem"; title = "Wortel"; ObjectID = "1011"; */
-"1011.title" = "Wortel";
+/* Once per month */
+"PuG-eZ-jRm.title" = "Once per month";
-/* Class = "NSMenuItem"; title = "Derdemachtswortel"; ObjectID = "1012"; */
-"1012.title" = "Derdemachtswortel";
+/* Never */
+"STJ-3R-khe.title" = "Never";
-/* Class = "NSMenuItem"; title = "Logarithmisch"; ObjectID = "1013"; */
-"1013.title" = "Logarithmisch";
-
-/* Class = "NSMenuItem"; title = "Linear"; ObjectID = "1014"; */
-"1014.title" = "Linear";
+/* Check updates now */
+"XYi-uP-QCD.title" = "Check updates now";
-/* Class = "NSButtonCell"; title = "Toon basislijn"; ObjectID = "1016"; */
-"1016.title" = "Toon basislijn";
+/* Display memory pressure */
+"aOw-Lj-aWS.title" = "Display memory pressure";
-/* Class = "NSTextFieldCell"; title = "Oriëntatie weergave:"; ObjectID = "1018"; */
-"1018.title" = "Oriëntatie weergave:";
+/* pure black/white */
+"ayz-p2-XC5.title" = "pure black/white";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "1021"; */
-"1021.title" = "OtherViews";
+/* Compressed */
+"ex0-hf-q5R.title" = "Compressed";
-/* Class = "NSMenuItem"; title = "Ontvangen - Verzenden"; ObjectID = "1022"; */
-"1022.title" = "Ontvangen - Verzenden";
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperature";
-/* Class = "NSMenuItem"; title = "Verzenden - Ontvangen"; ObjectID = "1023"; */
-"1023.title" = "Verzenden - Ontvangen";
-
-/* Class = "NSTextFieldCell"; title = "Niet actief"; ObjectID = "1025"; */
-"1025.title" = "Niet actief";
+/* Show */
+"k2d-Cg-pqL.title" = "Show";
-/* Class = "NSTextFieldCell"; title = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)"; ObjectID = "1028"; */
-"1028.title" = "MenuMeters, © 2002-2009 Alex Harper (http://www.ragingmenace.com)";
+/* Once per day */
+"lh5-j8-SRe.title" = "Once per day";
-/* Class = "NSButtonCell"; title = "Sort by CPU usage"; ObjectID = "1157"; */
-"1157.title" = "Sort by CPU usage";
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Color tint:";
-/* Class = "NSTextFieldCell"; title = "Horizontal Rows:"; ObjectID = "1166"; */
-"1166.title" = "Horizontal Rows:";
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Opens specific panes";
-/* Class = "NSTextFieldCell"; title = "Thermometer Display"; ObjectID = "1167"; */
-"1167.title" = "Thermometer Display";
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "Vertical bar";
-/* Class = "NSMenuItem"; title = "Horizontal Thermometer"; ObjectID = "1170"; */
-"1170.title" = "Horizontal Thermometer";
+/* Processes to show: */
+"rhi-NX-C3L.title" = "Processes to show:";
-/* Class = "NSTextFieldCell"; title = "Horizontal Width:"; ObjectID = "1174"; */
-"1174.title" = "Horizontal Width:";
+/* Horizontal bar */
+"spo-WT-wCm.title" = "Horizontal bar";
-/* Class = "NSButtonCell"; title = "Show average for least utilized processors as single display"; ObjectID = "1176"; */
-"1176.title" = "Show average for least utilized processors as single display";
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatic update check interval:";
-/* Class = "NSButtonCell"; title = "Display memory pressure"; ObjectID = "7N2-dZ-F90"; */
-"7N2-dZ-F90.title" = "Display memory pressure";
+/* all cores, including hyperthreaded ones */
+"vbH-jV-tUr.title" = "all cores, including hyperthreaded ones";
diff --git a/PrefPane/zh-Hans.lproj/DiskImageSet.strings b/PrefPane/zh-Hans.lproj/DiskImageSet.strings
index 5fc40be5..0370ef96 100644
--- a/PrefPane/zh-Hans.lproj/DiskImageSet.strings
+++ b/PrefPane/zh-Hans.lproj/DiskImageSet.strings
@@ -1,7 +1,6 @@
// Strings for menu abort sheet
"Menu Extra Could Not Load" = "Menu Extra Could Not Load";
-"For instructions on enabling third-party menu extras please see the documentation." =
-"For instructions on enabling third-party menu extras please see the documentation.";
+"For instructions on enabling third-party menu extras please see the documentation." = "For instructions on enabling third-party menu extras please see the documentation.";
// Strings for the disk icon sets
"Color Arrows" = "彩色箭头";
diff --git a/PrefPane/zh-Hans.lproj/MenuMetersPref.strings b/PrefPane/zh-Hans.lproj/MenuMetersPref.strings
index b6b04271..d2376053 100644
--- a/PrefPane/zh-Hans.lproj/MenuMetersPref.strings
+++ b/PrefPane/zh-Hans.lproj/MenuMetersPref.strings
@@ -1,340 +1,330 @@
-/* Class = "NSWindow"; title = "MenuMeters"; ObjectID = "12"; */
+/* MenuMeters */
"12.title" = "MenuMeters";
-/* Class = "NSTabViewItem"; label = "磁盘"; ObjectID = "100"; */
+/* Disk */
"100.label" = "磁盘";
-/* Class = "NSTabViewItem"; label = "CPU"; ObjectID = "102"; */
+/* CPU */
"102.label" = "CPU";
-/* Class = "NSTabViewItem"; label = "内存"; ObjectID = "103"; */
+/* Memory */
"103.label" = "内存";
-/* Class = "NSTabViewItem"; label = "网络"; ObjectID = "105"; */
+/* Network */
"105.label" = "网络";
-/* Class = "NSMenuItem"; title = "曲线"; ObjectID = "145"; */
-"IS4-Xc-psg.title" = "曲线";
-
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "146"; */
-"146.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "百分比"; ObjectID = "148"; */
-"Jeh-C2-Wwp.title" = "百分比";
-
-/* Class = "NSMenuItem"; title = "曲线和百分比"; ObjectID = "149"; */
-"149.title" = "曲线和百分比";
-
-/* Class = "NSMenuItem"; title = "ImageSet"; ObjectID = "203"; */
+/* ImageSet */
"203.title" = "ImageSet";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "206"; */
-"206.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "使用条状图"; ObjectID = "219"; */
+/* Usage Bar */
"219.title" = "使用条状图";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "223"; */
-"223.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "使用饼图"; ObjectID = "225"; */
+/* Usage Chart */
"225.title" = "使用饼图";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "293"; */
-"293.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "吞吐量"; ObjectID = "294"; */
+/* Throughput */
"294.title" = "吞吐量";
-/* Class = "NSMenuItem"; title = "箭头"; ObjectID = "297"; */
+/* Arrows */
"297.title" = "箭头";
-/* Class = "NSMenuItem"; title = "箭头和吞吐量"; ObjectID = "299"; */
+/* Arrows and Throughput */
"299.title" = "箭头和吞吐量";
-/* Class = "NSMenuItem"; title = "曲线"; ObjectID = "314"; */
+/* Graph */
"314.title" = "曲线";
-/* Class = "NSMenuItem"; title = "寒暑表"; ObjectID = "357"; */
-"r6t-Zl-sS4.title" = "垂直条形图";
-"spo-WT-wCm.title" = "水平条形图";
-
-/* Class = "NSMenuItem"; title = "曲线、百分比和寒暑表"; ObjectID = "358"; */
-"358.title" = "曲线、百分比和寒暑表";
-
-/* Class = "NSMenuItem"; title = "百分比和寒暑表"; ObjectID = "359"; */
-"359.title" = "百分比和寒暑表";
-
-/* Class = "NSMenuItem"; title = "曲线和寒暑表"; ObjectID = "360"; */
-"360.title" = "曲线和寒暑表";
-
-/* Class = "NSMenuItem"; title = "曲线和箭头"; ObjectID = "363"; */
+/* Graph and Arrows */
"363.title" = "曲线和箭头";
-/* Class = "NSMenuItem"; title = "曲线和吞吐量"; ObjectID = "365"; */
+/* Graph and Throughput */
"365.title" = "曲线和吞吐量";
-/* Class = "NSMenuItem"; title = "曲线、箭头和吞吐量"; ObjectID = "366"; */
+/* Graph, Arrows and Throughput */
"366.title" = "曲线、箭头和吞吐量";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "382"; */
-"382.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "合计(大文字)"; ObjectID = "384"; */
+/* Total (large text) */
"384.title" = "合计(大文字)";
-/* Class = "NSMenuItem"; title = "用户和系统(小文字)"; ObjectID = "385"; */
+/* User and System (small text) */
"385.title" = "用户和系统(小文字)";
-/* Class = "NSMenuItem"; title = "合计(中文字)"; ObjectID = "386"; */
+/* Total (medium text) */
"386.title" = "合计(中文字)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "403"; */
-"403.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "天地"; ObjectID = "404"; */
+/* Opposed */
"404.title" = "天地";
-/* Class = "NSMenuItem"; title = "标准"; ObjectID = "406"; */
+/* Standard */
"406.title" = "标准";
-/* Class = "NSMenuItem"; title = "居中"; ObjectID = "407"; */
+/* Centered */
"407.title" = "居中";
-/* Class = "NSMenuItem"; title = "使用历史曲线"; ObjectID = "472"; */
+/* Usage History Graph */
"472.title" = "使用历史曲线";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "477"; */
-"477.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "脉搏"; ObjectID = "478"; */
+/* pulse */
"478.title" = "脉搏";
-/* Class = "NSMenuItem"; title = "发光"; ObjectID = "479"; */
+/* glow */
"479.title" = "发光";
-/* Class = "NSMenuItem"; title = "主要(自动)"; ObjectID = "487"; */
+/* Primary (automatic) */
"487.title" = "主要(自动)";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "489"; */
-"489.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "反发光"; ObjectID = "497"; */
+/* inverse glow */
"497.title" = "反发光";
-/* Class = "NSMenuItem"; title = "反脉搏"; ObjectID = "498"; */
+/* inverse pulse */
"498.title" = "反脉搏";
-/* Class = "NSMenuItem"; title = "打开宗卷"; ObjectID = "500"; */
+/* opens the volume */
"500.title" = "打开宗卷";
-/* Class = "NSMenuItem"; title = "卸下/推出宗卷"; ObjectID = "502"; */
+/* unmounts/ejects the volume */
"502.title" = "卸下/推出宗卷";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "503"; */
-"503.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "已使用/可用合计"; ObjectID = "508"; */
+/* Used/Free Totals */
"508.title" = "已使用/可用合计";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "522"; */
-"522.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "接口速度"; ObjectID = "525"; */
+/* Interface speed */
"525.title" = "接口速度";
-/* Class = "NSMenuItem"; title = "尖峰流量"; ObjectID = "526"; */
+/* Peak traffic */
"526.title" = "尖峰流量";
-/* Class = "NSMenuItem"; title = "线性"; ObjectID = "541"; */
+/* Linear */
"541.title" = "线性";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "542"; */
-"542.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "对数"; ObjectID = "545"; */
+/* Logarithmic */
"545.title" = "对数";
-/* Class = "NSMenuItem"; title = "立方根"; ObjectID = "556"; */
+/* Cube root */
"556.title" = "立方根";
-/* Class = "NSMenuItem"; title = "平方根"; ObjectID = "557"; */
+/* Square root */
"557.title" = "平方根";
-/* Class = "NSMenuItem"; title = "发送/接收"; ObjectID = "590"; */
+/* Transmit/Receive */
"590.title" = "发送/接收";
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "591"; */
-"591.title" = "OtherViews";
-
-/* Class = "NSMenuItem"; title = "接收/发送"; ObjectID = "592"; */
+/* Receive/Transmit */
"592.title" = "接收/发送";
-/* Class = "NSMenuItem"; title = "交换天地"; ObjectID = "613"; */
+/* Inverse Opposed */
"613.title" = "交换天地";
-/* Class = "NSButtonCell"; title = "显示磁盘活动菜单仪表"; ObjectID = "1006"; */
+/* Display Disk Activity Menu Meter */
"1006.title" = "显示磁盘活动菜单仪表";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1007"; */
+/* x */
"1007.title" = "x";
-/* Class = "NSTextFieldCell"; title = "更新间隔(秒):"; ObjectID = "1010"; */
-"1010.title" = "更新间隔(秒):";
+/* Update interval: */
+"1010.title" = "更新间隔:";
-/* Class = "NSTextFieldCell"; title = "从磁盘菜单选择宗卷"; ObjectID = "1011"; */
+/* Selecting a volume from the disk menu */
"1011.title" = "从磁盘菜单选择宗卷";
-/* Class = "NSTextFieldCell"; title = "(按着 Option 键将使动作相反)"; ObjectID = "1013"; */
+/* (Holding the Option key will reverse the behavior) */
"1013.title" = "(按着 Option 键将使动作相反)";
-/* Class = "NSButtonCell"; title = "显示 CPU 菜单仪表"; ObjectID = "1014"; */
+/* Display CPU Menu Meter */
"1014.title" = "显示 CPU 菜单仪表";
-/* Class = "NSTextFieldCell"; title = "更新间隔(秒):"; ObjectID = "1017"; */
-"1017.title" = "更新间隔(秒):";
+/* Update interval: */
+"1017.title" = "更新间隔:";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1018"; */
+/* x */
"1018.title" = "x";
-/* Class = "NSTextFieldCell"; title = "用户载入"; ObjectID = "1019"; */
+/* User */
"1019.title" = "用户载入";
-/* Class = "NSTextFieldCell"; title = "系统载入"; ObjectID = "1020"; */
+/* System */
"1020.title" = "系统载入";
-/* Class = "NSTextFieldCell"; title = "显示百分比为:"; ObjectID = "1022"; */
-"1022.title" = "显示百分比为:";
-
-/* Class = "NSButtonCell"; title = "将多处理器平均作为单个处理器显示"; ObjectID = "1024"; */
-"1024.title" = "将多处理器平均作为单个处理器显示";
-
-/* Class = "NSTextFieldCell"; title = "曲线宽度:"; ObjectID = "1025"; */
+/* Width */
"1025.title" = "曲线宽度:";
-/* Class = "NSTextFieldCell"; title = "百分比显示"; ObjectID = "1026"; */
-"1026.title" = "百分比显示";
-
-/* Class = "NSTextFieldCell"; title = "曲线显示"; ObjectID = "1027"; */
-"1027.title" = "曲线显示";
-
-/* Class = "NSTextFieldCell"; title = "杂项"; ObjectID = "1028"; */
-"1028.title" = "杂项";
-
-/* Class = "NSTextFieldCell"; title = "颜色"; ObjectID = "1029"; */
-"1029.title" = "颜色";
-
-/* Class = "NSButtonCell"; title = "PowerMate 显示 CPU 使用情况为"; ObjectID = "1030"; */
+/* PowerMate shows CPU usage */
"1030.title" = "PowerMate 显示 CPU 使用情况为";
-/* Class = "NSButtonCell"; title = "显示内存菜单仪表"; ObjectID = "1032"; */
+/* Display Memory Menu Meter */
"1032.title" = "显示内存菜单仪表";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1033"; */
+/* x */
"1033.title" = "x";
-/* Class = "NSTextFieldCell"; title = "更新间隔(秒):"; ObjectID = "1035"; */
-"1035.title" = "更新间隔(秒):";
+/* Update interval: */
+"1035.title" = "更新间隔:";
-/* Class = "NSButtonCell"; title = "显示已使用/可用标签"; ObjectID = "1037"; */
+/* Show Used/Free labels */
"1037.title" = "显示已使用/可用标签";
-/* Class = "NSTextFieldCell"; title = "通用"; ObjectID = "1038"; */
-"1038.title" = "通用";
-
-/* Class = "NSButtonCell"; title = "显示分页中活动检视器"; ObjectID = "1039"; */
+/* Show paging activity indicator */
"1039.title" = "显示分页中活动检视器";
-/* Class = "NSTextFieldCell"; title = "颜色"; ObjectID = "1040"; */
-"1040.title" = "颜色";
-
-/* Class = "NSTextFieldCell"; title = "分页输入"; ObjectID = "1041"; */
+/* Pagein */
"1041.title" = "分页输入";
-/* Class = "NSTextFieldCell"; title = "分页输出"; ObjectID = "1042"; */
+/* Pageout */
"1042.title" = "分页输出";
-/* Class = "NSTextFieldCell"; title = "分页中比率"; ObjectID = "1043"; */
-"1043.title" = "分页中比率";
-
-/* Class = "NSTextFieldCell"; title = "曲线宽度:"; ObjectID = "1044"; */
+/* Graph width: */
"1044.title" = "曲线宽度:";
-/* Class = "NSTextFieldCell"; title = "曲线显示"; ObjectID = "1045"; */
-"1045.title" = "曲线显示";
-
-/* Class = "NSTextFieldCell"; title = "已激活"; ObjectID = "1047"; */
+/* Active */
"1047.title" = "已激活";
-/* Class = "NSTextFieldCell"; title = "未激活"; ObjectID = "1048"; */
+/* Inactive */
"1048.title" = "未激活";
-/* Class = "NSTextFieldCell"; title = "联动"; ObjectID = "1049"; */
+/* Wired */
"1049.title" = "联动";
-/* Class = "NSTextFieldCell"; title = "可用"; ObjectID = "1050"; */
+/* Free */
"1050.title" = "可用";
-/* Class = "NSTextFieldCell"; title = "已使用"; ObjectID = "1051"; */
+/* Used */
"1051.title" = "已使用";
-/* Class = "NSTextFieldCell"; title = "x"; ObjectID = "1053"; */
+/* x */
"1053.title" = "x";
-/* Class = "NSButtonCell"; title = "显示网络菜单仪表"; ObjectID = "1054"; */
+/* Display Network Menu Meter */
"1054.title" = "显示网络菜单仪表";
-/* Class = "NSTextFieldCell"; title = "更新间隔(秒):"; ObjectID = "1056"; */
-"1056.title" = "更新间隔(秒):";
+/* Update interval: */
+"1056.title" = "更新间隔:";
-/* Class = "NSTextFieldCell"; title = "发送"; ObjectID = "1057"; */
+/* Transmit */
"1057.title" = "发送";
-/* Class = "NSTextFieldCell"; title = "接收"; ObjectID = "1058"; */
+/* Receive */
"1058.title" = "接收";
-/* Class = "NSButtonCell"; title = "显示吞吐量标签(发/收)"; ObjectID = "1060"; */
+/* Show throughput labels (Tx/Rx) */
"1060.title" = "显示吞吐量标签(发/收)";
-/* Class = "NSButtonCell"; title = "忽略低于 1KB/s 的数值"; ObjectID = "1061"; */
+/* Ignore values below 1K/s */
"1061.title" = "忽略低于 1KB/s 的数值";
-/* Class = "NSTextFieldCell"; title = "曲线样式:"; ObjectID = "1062"; */
+/* Graph style: */
"1062.title" = "曲线样式:";
-/* Class = "NSTextFieldCell"; title = "曲线宽度:"; ObjectID = "1063"; */
+/* Graph width: */
"1063.title" = "曲线宽度:";
-/* Class = "NSTextFieldCell"; title = "吞吐量显示"; ObjectID = "1065"; */
-"1065.title" = "吞吐量显示";
-
-/* Class = "NSTextFieldCell"; title = "曲线显示"; ObjectID = "1066"; */
-"1066.title" = "曲线显示";
-
-/* Class = "NSTextFieldCell"; title = "颜色"; ObjectID = "1067"; */
-"1067.title" = "颜色";
-
-/* Class = "NSTextFieldCell"; title = "显示选择的接口:"; ObjectID = "1068"; */
+/* Display prefers interface: */
"1068.title" = "显示选择的接口:";
-/* Class = "NSTextFieldCell"; title = "通用"; ObjectID = "1070"; */
-"1070.title" = "通用";
-
-/* Class = "NSTextFieldCell"; title = "显示进位:"; ObjectID = "1071"; */
+/* Display scales to: */
"1071.title" = "显示进位:";
-/* Class = "NSTextFieldCell"; title = "显示进位中:"; ObjectID = "1073"; */
+/* Display scaling: */
"1073.title" = "显示进位中:";
-/* Class = "NSTextFieldCell"; title = "显示方向:"; ObjectID = "1075"; */
+/* Display orientation: */
"1075.title" = "显示方向:";
-/* Class = "NSTextFieldCell"; title = "未激活"; ObjectID = "1077"; */
+/* Inactive */
"1077.title" = "未激活";
-/* Class = "NSTextFieldCell"; title = "MenuMeters, © 2002-2014 Alex Harper (http://www.ragingmenace.com)"; ObjectID = "1078"; */
-"1078.title" = "MenuMeters, © 2002-2014 Alex Harper (http://www.ragingmenace.com)";
+/* Rows */
+"1088.title" = "Rows";
+
+/* Width */
+"1117.title" = "Width";
+
+/* (%d) */
+"2NH-iF-l28.title" = "(%d)";
+
+/* the sum of all cores */
+"5Lg-aP-TSR.title" = "the sum of all cores";
+
+/* the average of all cores */
+"BYT-hf-ygS.title" = "the average of all cores";
+
+/* Temperature */
+"C4n-F2-kuL.title" = "Temperature";
+
+/* Activity monitor: */
+"CDM-3t-gon.title" = "Activity monitor:";
+
+/* all cores sorted */
+"CG1-40-AVC.title" = "all cores sorted";
+
+/* Sensor */
+"FHP-25-5gM.title" = "Sensor";
+
+/* original */
+"FPO-Jo-ubG.title" = "original";
+
+/* About */
+"FSw-QC-dn2.label" = "About";
+
+/* physical cores only */
+"H5f-hN-vQV.title" = "physical cores only";
+
+/* Graph */
+"IS4-Xc-psg.title" = "曲线";
+
+/* Percentage */
+"Jeh-C2-Wwp.title" = "百分比";
+
+/* Show bits per second */
+"K7W-5f-1U8.title" = "Show bits per second";
+
+/* Once per week */
+"LmO-Ij-G7M.title" = "Once per week";
+
+/* Once per month */
+"PuG-eZ-jRm.title" = "Once per month";
+
+/* Never */
+"STJ-3R-khe.title" = "Never";
+
+/* Check updates now */
+"XYi-uP-QCD.title" = "Check updates now";
+
+/* Display memory pressure */
+"aOw-Lj-aWS.title" = "Display memory pressure";
+
+/* pure black/white */
+"ayz-p2-XC5.title" = "pure black/white";
+
+/* Compressed */
+"ex0-hf-q5R.title" = "Compressed";
+
+/* CPU Temperature */
+"fiY-Fv-rRZ.title" = "CPU Temperature";
+
+/* Show */
+"k2d-Cg-pqL.title" = "Show";
+
+/* Once per day */
+"lh5-j8-SRe.title" = "Once per day";
+
+/* Color tint: */
+"mAZ-f2-5AJ.title" = "Color tint:";
+
+/* Opens specific panes */
+"phH-yJ-I6O.title" = "Opens specific panes";
+
+/* Vertical bar */
+"r6t-Zl-sS4.title" = "垂直条形图";
+
+/* Processes to show: */
+"rhi-NX-C3L.title" = "Processes to show:";
+
+/* Horizontal bar */
+"spo-WT-wCm.title" = "水平条形图";
+
+/* Automatic update check interval: */
+"tug-YR-k7T.title" = "Automatic update check interval:";
-/* Class = "NSTextFieldCell"; title = "Compressed"; ObjectID = "1081"; */
-"1081.title" = "Compressed";
+/* all cores, including hyperthreaded ones */
+"vbH-jV-tUr.title" = "all cores, including hyperthreaded ones";
diff --git a/hardware_reader/TemperatureReader.m b/hardware_reader/TemperatureReader.m
index 3fb68189..d04f4fa4 100644
--- a/hardware_reader/TemperatureReader.m
+++ b/hardware_reader/TemperatureReader.m
@@ -56,15 +56,16 @@ + (NSString *)defaultSensorRealWork {
#elif TARGET_CPU_ARM64
@"SOC MTR Temp Sensor0";
#endif
- if (![self sensorNames])
+ NSArray *sensorNames = [self sensorNames];
+ if (!sensorNames)
return candidate;
- if ([[self sensorNames] containsObject:candidate])
+ if ([sensorNames containsObject:candidate])
return candidate;
- for (NSString *sensor in [self sensorNames]) {
+ for (NSString *sensor in sensorNames) {
if ([sensor hasPrefix:@"TC"])
return sensor;
}
- return [self sensorNames][0];
+ return sensorNames[0];
}
+ (NSString *)displayNameForSensor:(NSString *)name {
@@ -105,7 +106,7 @@ + (float)temperatureOfSensorWithName:(NSString *)name {
}
return celsius;
#elif TARGET_CPU_ARM64
- return [(NSNumber *)AppleSiliconTemperatureDictionary()[name] floatValue];
+ return AppleSiliconTemperatureForName(name);
#endif
}
diff --git a/hardware_reader/applesilicon_hardware_reader.h b/hardware_reader/applesilicon_hardware_reader.h
index 0348b685..7c999304 100644
--- a/hardware_reader/applesilicon_hardware_reader.h
+++ b/hardware_reader/applesilicon_hardware_reader.h
@@ -9,5 +9,6 @@
#define applesilicon_hardware_reader_h
extern NSDictionary *AppleSiliconTemperatureDictionary(void);
+extern float AppleSiliconTemperatureForName(NSString *name);
#endif /* applesilicon_hardware_reader_h */
diff --git a/hardware_reader/applesilicon_hardware_reader.m b/hardware_reader/applesilicon_hardware_reader.m
index abac1ca1..b25ce868 100644
--- a/hardware_reader/applesilicon_hardware_reader.m
+++ b/hardware_reader/applesilicon_hardware_reader.m
@@ -78,3 +78,33 @@
return dict;
}
+
+float AppleSiliconTemperatureForName(NSString *productName) {
+
+ NSDictionary *thermalSensors = @{@"PrimaryUsagePage": @(0xff00),
+ @"PrimaryUsage": @(5)};
+
+ IOHIDEventSystemClientRef system = IOHIDEventSystemClientCreate(kCFAllocatorDefault); // in CFBase.h = NULL
+ // ... this is the same as using kCFAllocatorDefault or the return value from CFAllocatorGetDefault()
+ IOHIDEventSystemClientSetMatching(system, (__bridge CFDictionaryRef)thermalSensors);
+ CFArrayRef matchingsrvs = IOHIDEventSystemClientCopyServices(system); // matchingsrvs = matching services
+
+ long count = CFArrayGetCount(matchingsrvs);
+ float temp = 0;
+ for (int i = 0; i < count; i++) {
+ IOHIDServiceClientRef sc = (IOHIDServiceClientRef)CFArrayGetValueAtIndex(matchingsrvs, i);
+ NSString *name = CFBridgingRelease(IOHIDServiceClientCopyProperty(sc, CFSTR("Product"))); // here we use ...CopyProperty
+ if ([productName isEqualToString:name]) {
+ IOHIDEventRef event = IOHIDServiceClientCopyEvent(sc, kIOHIDEventTypeTemperature, 0, 0); // here we use ...CopyEvent
+ if (event) {
+ temp = IOHIDEventGetFloatValue(event, IOHIDEventFieldBase(kIOHIDEventTypeTemperature));
+ CFRelease(event);
+ break;
+ }
+ }
+ }
+ CFRelease(matchingsrvs);
+ CFRelease(system);
+
+ return temp;
+}