preparations for localizations

This commit is contained in:
Patrick Wardle 2024-09-23 11:05:31 +02:00
parent 289a6add52
commit 77ea0c5821
35 changed files with 1248 additions and 191 deletions

View File

@ -3,37 +3,37 @@
archiveVersion = 1;
classes = {
};
objectVersion = 48;
objectVersion = 60;
objects = {
/* Begin PBXBuildFile section */
7D16D6941F64E43300DB3161 /* Update.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D16D6901F64E43300DB3161 /* Update.m */; };
7D16D6951F64E43300DB3161 /* UpdateWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D16D6911F64E43300DB3161 /* UpdateWindow.xib */; };
7D16D6961F64E43300DB3161 /* UpdateWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D16D6931F64E43300DB3161 /* UpdateWindowController.m */; };
7D3B75141F13354900568828 /* StatusBarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D3B74FD1F13354900568828 /* StatusBarItem.m */; };
7D5C5F521F200B9200C0E94A /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D5C5F511F200B9200C0E94A /* utilities.m */; };
7D7755E81F02E05B00D0017D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D7755E71F02E05B00D0017D /* AppDelegate.m */; };
7D7755EB1F02E05B00D0017D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D7755EA1F02E05B00D0017D /* main.m */; };
7D7755F01F02E05B00D0017D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D7755EE1F02E05B00D0017D /* MainMenu.xib */; };
7DD25FF01F23B73C00277EC4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7DD25FEF1F23B73C00277EC4 /* Assets.xcassets */; };
CD22785E20434CAC00C72C76 /* StatusBarPopover.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD22785B20434CAB00C72C76 /* StatusBarPopover.xib */; };
CD22785F20434CAC00C72C76 /* StatusBarPopoverController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD22785D20434CAB00C72C76 /* StatusBarPopoverController.m */; };
CD2F8008244551AC009C3D77 /* NSApplicationKeyEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = CD2F8007244551AC009C3D77 /* NSApplicationKeyEvents.m */; };
CD2F800C24455333009C3D77 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD2F800924455333009C3D77 /* AboutWindow.xib */; };
CD2F800D24455333009C3D77 /* AboutWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD2F800B24455333009C3D77 /* AboutWindowController.m */; };
CD2F801724468A8C009C3D77 /* patrons.txt in Resources */ = {isa = PBXBuildFile; fileRef = CD2F801624468A8C009C3D77 /* patrons.txt */; };
CD6836682391DB6F00CF19C1 /* security.plist in Resources */ = {isa = PBXBuildFile; fileRef = CD6836672391DB6F00CF19C1 /* security.plist */; };
CD7E47D42B5227B600B63153 /* OverSight Installer.app in Resources */ = {isa = PBXBuildFile; fileRef = CD7E47D32B5227B600B63153 /* OverSight Installer.app */; };
CD8FD5D523BAE2D200EFE0FB /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8FD5D323BAE2D100EFE0FB /* Preferences.xib */; };
CD86413C2CA1617A00803551 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD86413B2CA1617A00803551 /* AboutWindow.xib */; };
CD8641442CA161AA00803551 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641432CA161AA00803551 /* Preferences.xib */; };
CD86414D2CA161CF00803551 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD86414C2CA161CF00803551 /* MainMenu.xib */; };
CD8641512CA161D500803551 /* Rules.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641502CA161D500803551 /* Rules.xib */; };
CD8641552CA161DA00803551 /* StatusBarPopover.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641542CA161DA00803551 /* StatusBarPopover.xib */; };
CD8641592CA161DF00803551 /* UpdateWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641582CA161DF00803551 /* UpdateWindow.xib */; };
CD8FD5D623BAE2D200EFE0FB /* PrefsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5D423BAE2D200EFE0FB /* PrefsWindowController.m */; };
CD8FD5F623C05AD900EFE0FB /* RuleRow.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F023C05AD800EFE0FB /* RuleRow.m */; };
CD8FD5F723C05AD900EFE0FB /* RuleRowCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F223C05AD800EFE0FB /* RuleRowCell.m */; };
CD8FD5F823C05AD900EFE0FB /* RulesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F323C05AD800EFE0FB /* RulesWindowController.m */; };
CD8FD5FA23C05AD900EFE0FB /* Rules.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8FD5F523C05AD900EFE0FB /* Rules.xib */; };
CDC6098E263CB7EB006D1332 /* LogMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = CDC6098D263CB7EB006D1332 /* LogMonitor.m */; };
CDC60991263CBD36006D1332 /* AVMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = CDC60990263CBD36006D1332 /* AVMonitor.m */; };
CDC60994263CBEE7006D1332 /* Client.m in Sources */ = {isa = PBXBuildFile; fileRef = CDC60993263CBEE7006D1332 /* Client.m */; };
CDCBF0DE26499DFF001D9F9A /* Event.m in Sources */ = {isa = PBXBuildFile; fileRef = CDCBF0DD26499DFF001D9F9A /* Event.m */; };
CDF660612B58639E00A238A2 /* OverSight Installer.app in Resources */ = {isa = PBXBuildFile; fileRef = CDF660602B58639E00A238A2 /* OverSight Installer.app */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -51,7 +51,6 @@
/* Begin PBXFileReference section */
7D16D68F1F64E43300DB3161 /* Update.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Update.h; sourceTree = "<group>"; };
7D16D6901F64E43300DB3161 /* Update.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Update.m; sourceTree = "<group>"; };
7D16D6911F64E43300DB3161 /* UpdateWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UpdateWindow.xib; sourceTree = "<group>"; };
7D16D6921F64E43300DB3161 /* UpdateWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateWindowController.h; sourceTree = "<group>"; };
7D16D6931F64E43300DB3161 /* UpdateWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpdateWindowController.m; sourceTree = "<group>"; };
7D3B74FD1F13354900568828 /* StatusBarItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusBarItem.m; sourceTree = "<group>"; };
@ -64,22 +63,29 @@
7D7755E61F02E05B00D0017D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
7D7755E71F02E05B00D0017D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
7D7755EA1F02E05B00D0017D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
7D7755EF1F02E05B00D0017D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
7D7755F11F02E05B00D0017D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7DD25FEF1F23B73C00277EC4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
CD22785B20434CAB00C72C76 /* StatusBarPopover.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StatusBarPopover.xib; sourceTree = "<group>"; };
CD22785C20434CAB00C72C76 /* StatusBarPopoverController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatusBarPopoverController.h; sourceTree = "<group>"; };
CD22785D20434CAB00C72C76 /* StatusBarPopoverController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusBarPopoverController.m; sourceTree = "<group>"; };
CD2F8006244551AB009C3D77 /* NSApplicationKeyEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSApplicationKeyEvents.h; sourceTree = "<group>"; };
CD2F8007244551AC009C3D77 /* NSApplicationKeyEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSApplicationKeyEvents.m; sourceTree = "<group>"; };
CD2F800924455333009C3D77 /* AboutWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AboutWindow.xib; sourceTree = "<group>"; };
CD2F800A24455333009C3D77 /* AboutWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutWindowController.h; sourceTree = "<group>"; };
CD2F800B24455333009C3D77 /* AboutWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutWindowController.m; sourceTree = "<group>"; };
CD2F801624468A8C009C3D77 /* patrons.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = patrons.txt; path = ../Shared/patrons.txt; sourceTree = "<group>"; };
CD6836672391DB6F00CF19C1 /* security.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = security.plist; sourceTree = "<group>"; };
CD7E47D32B5227B600B63153 /* OverSight Installer.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = "OverSight Installer.app"; sourceTree = "<group>"; };
CD86413A2CA1617A00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AboutWindow.xib; sourceTree = "<group>"; };
CD86413D2CA1617A00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/AboutWindow.xcstrings; sourceTree = "<group>"; };
CD8641422CA161AA00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Preferences.xib; sourceTree = "<group>"; };
CD8641452CA161AA00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/Preferences.xcstrings; sourceTree = "<group>"; };
CD86414B2CA161CF00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
CD86414E2CA161CF00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/MainMenu.xcstrings; sourceTree = "<group>"; };
CD86414F2CA161D500803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Rules.xib; sourceTree = "<group>"; };
CD8641522CA161D500803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/Rules.xcstrings; sourceTree = "<group>"; };
CD8641532CA161DA00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/StatusBarPopover.xib; sourceTree = "<group>"; };
CD8641562CA161DA00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/StatusBarPopover.xcstrings; sourceTree = "<group>"; };
CD8641572CA161DF00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UpdateWindow.xib; sourceTree = "<group>"; };
CD86415A2CA161DF00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/UpdateWindow.xcstrings; sourceTree = "<group>"; };
CD8FD5D223BAE2D100EFE0FB /* PrefsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefsWindowController.h; sourceTree = "<group>"; };
CD8FD5D323BAE2D100EFE0FB /* Preferences.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = "<group>"; };
CD8FD5D423BAE2D200EFE0FB /* PrefsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrefsWindowController.m; sourceTree = "<group>"; };
CD8FD5ED23C05AD800EFE0FB /* RuleRowCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuleRowCell.h; sourceTree = "<group>"; };
CD8FD5EE23C05AD800EFE0FB /* RulesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RulesWindowController.h; sourceTree = "<group>"; };
@ -87,7 +93,6 @@
CD8FD5F123C05AD800EFE0FB /* RuleRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuleRow.h; sourceTree = "<group>"; };
CD8FD5F223C05AD800EFE0FB /* RuleRowCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RuleRowCell.m; sourceTree = "<group>"; };
CD8FD5F323C05AD800EFE0FB /* RulesWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RulesWindowController.m; sourceTree = "<group>"; };
CD8FD5F523C05AD900EFE0FB /* Rules.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Rules.xib; sourceTree = "<group>"; };
CDC6098C263CB7EB006D1332 /* LogMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogMonitor.h; sourceTree = "<group>"; };
CDC6098D263CB7EB006D1332 /* LogMonitor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogMonitor.m; sourceTree = "<group>"; };
CDC6098F263CBD36006D1332 /* AVMonitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AVMonitor.h; sourceTree = "<group>"; };
@ -96,6 +101,7 @@
CDC60993263CBEE7006D1332 /* Client.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Client.m; sourceTree = "<group>"; };
CDCBF0DC26499DFF001D9F9A /* Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = "<group>"; };
CDCBF0DD26499DFF001D9F9A /* Event.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Event.m; sourceTree = "<group>"; };
CDF660602B58639E00A238A2 /* OverSight Installer.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = "OverSight Installer.app"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -150,7 +156,7 @@
7D7755E51F02E05B00D0017D /* Source */ = {
isa = PBXGroup;
children = (
CD2F800924455333009C3D77 /* AboutWindow.xib */,
CD86413B2CA1617A00803551 /* AboutWindow.xib */,
CD2F800A24455333009C3D77 /* AboutWindowController.h */,
CD2F800B24455333009C3D77 /* AboutWindowController.m */,
7D7755E61F02E05B00D0017D /* AppDelegate.h */,
@ -166,28 +172,28 @@
7D7755F11F02E05B00D0017D /* Info.plist */,
CDC6098C263CB7EB006D1332 /* LogMonitor.h */,
CDC6098D263CB7EB006D1332 /* LogMonitor.m */,
7D7755EE1F02E05B00D0017D /* MainMenu.xib */,
CD86414C2CA161CF00803551 /* MainMenu.xib */,
CD2F8006244551AB009C3D77 /* NSApplicationKeyEvents.h */,
CD2F8007244551AC009C3D77 /* NSApplicationKeyEvents.m */,
CD8FD5D323BAE2D100EFE0FB /* Preferences.xib */,
CD8641432CA161AA00803551 /* Preferences.xib */,
CD8FD5D223BAE2D100EFE0FB /* PrefsWindowController.h */,
CD8FD5D423BAE2D200EFE0FB /* PrefsWindowController.m */,
CD8FD5F123C05AD800EFE0FB /* RuleRow.h */,
CD8FD5F023C05AD800EFE0FB /* RuleRow.m */,
CD8FD5ED23C05AD800EFE0FB /* RuleRowCell.h */,
CD8FD5F223C05AD800EFE0FB /* RuleRowCell.m */,
CD8FD5F523C05AD900EFE0FB /* Rules.xib */,
CD8641502CA161D500803551 /* Rules.xib */,
CD8FD5EE23C05AD800EFE0FB /* RulesWindowController.h */,
CD8FD5F323C05AD800EFE0FB /* RulesWindowController.m */,
7D3B74FF1F13354900568828 /* StatusBarItem.h */,
7D3B74FD1F13354900568828 /* StatusBarItem.m */,
CD22785B20434CAB00C72C76 /* StatusBarPopover.xib */,
CD8641542CA161DA00803551 /* StatusBarPopover.xib */,
CD22785C20434CAB00C72C76 /* StatusBarPopoverController.h */,
CD22785D20434CAB00C72C76 /* StatusBarPopoverController.m */,
7D7755E91F02E05B00D0017D /* Supporting Files */,
7D16D68F1F64E43300DB3161 /* Update.h */,
7D16D6901F64E43300DB3161 /* Update.m */,
7D16D6911F64E43300DB3161 /* UpdateWindow.xib */,
CD8641582CA161DF00803551 /* UpdateWindow.xib */,
7D16D6921F64E43300DB3161 /* UpdateWindowController.h */,
7D16D6931F64E43300DB3161 /* UpdateWindowController.m */,
);
@ -214,7 +220,7 @@
CDE09AF12919829000561CFF /* Uninstaller */ = {
isa = PBXGroup;
children = (
CD7E47D32B5227B600B63153 /* OverSight Installer.app */,
CDF660602B58639E00A238A2 /* OverSight Installer.app */,
);
path = Uninstaller;
sourceTree = "<group>";
@ -291,15 +297,15 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CD8FD5D523BAE2D200EFE0FB /* Preferences.xib in Resources */,
CD7E47D42B5227B600B63153 /* OverSight Installer.app in Resources */,
CD8641442CA161AA00803551 /* Preferences.xib in Resources */,
CDF660612B58639E00A238A2 /* OverSight Installer.app in Resources */,
CD6836682391DB6F00CF19C1 /* security.plist in Resources */,
CD2F800C24455333009C3D77 /* AboutWindow.xib in Resources */,
7D16D6951F64E43300DB3161 /* UpdateWindow.xib in Resources */,
CD22785E20434CAC00C72C76 /* StatusBarPopover.xib in Resources */,
CD86413C2CA1617A00803551 /* AboutWindow.xib in Resources */,
CD8641592CA161DF00803551 /* UpdateWindow.xib in Resources */,
CD8641552CA161DA00803551 /* StatusBarPopover.xib in Resources */,
CD2F801724468A8C009C3D77 /* patrons.txt in Resources */,
CD8FD5FA23C05AD900EFE0FB /* Rules.xib in Resources */,
7D7755F01F02E05B00D0017D /* MainMenu.xib in Resources */,
CD8641512CA161D500803551 /* Rules.xib in Resources */,
CD86414D2CA161CF00803551 /* MainMenu.xib in Resources */,
7DD25FF01F23B73C00277EC4 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -342,14 +348,60 @@
name = MainMenu.xib;
sourceTree = "<group>";
};
7D7755EE1F02E05B00D0017D /* MainMenu.xib */ = {
CD86413B2CA1617A00803551 /* AboutWindow.xib */ = {
isa = PBXVariantGroup;
children = (
7D7755EF1F02E05B00D0017D /* Base */,
CD86413A2CA1617A00803551 /* Base */,
CD86413D2CA1617A00803551 /* mul */,
);
name = AboutWindow.xib;
sourceTree = "<group>";
};
CD8641432CA161AA00803551 /* Preferences.xib */ = {
isa = PBXVariantGroup;
children = (
CD8641422CA161AA00803551 /* Base */,
CD8641452CA161AA00803551 /* mul */,
);
name = Preferences.xib;
sourceTree = "<group>";
};
CD86414C2CA161CF00803551 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
CD86414B2CA161CF00803551 /* Base */,
CD86414E2CA161CF00803551 /* mul */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
CD8641502CA161D500803551 /* Rules.xib */ = {
isa = PBXVariantGroup;
children = (
CD86414F2CA161D500803551 /* Base */,
CD8641522CA161D500803551 /* mul */,
);
name = Rules.xib;
sourceTree = "<group>";
};
CD8641542CA161DA00803551 /* StatusBarPopover.xib */ = {
isa = PBXVariantGroup;
children = (
CD8641532CA161DA00803551 /* Base */,
CD8641562CA161DA00803551 /* mul */,
);
name = StatusBarPopover.xib;
sourceTree = "<group>";
};
CD8641582CA161DF00803551 /* UpdateWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD8641572CA161DF00803551 /* Base */,
CD86415A2CA161DF00803551 /* mul */,
);
name = UpdateWindow.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@ -473,7 +525,10 @@
INFOPLIST_FILE = Application/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = OverSight;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
LD_RUNPATH_SEARCH_PATHS = "$(LD_RUNPATH_SEARCH_PATHS_$(IS_MACCATALYST)) @executable_path/../Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(LD_RUNPATH_SEARCH_PATHS_$(IS_MACCATALYST))",
"@executable_path/../Frameworks",
);
LIBRARY_SEARCH_PATHS = "";
MACOSX_DEPLOYMENT_TARGET = 12.0;
MARKETING_VERSION = 2.3.0;
@ -499,7 +554,10 @@
INFOPLIST_FILE = Application/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = OverSight;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
LD_RUNPATH_SEARCH_PATHS = "$(LD_RUNPATH_SEARCH_PATHS_$(IS_MACCATALYST)) @executable_path/../Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(LD_RUNPATH_SEARCH_PATHS_$(IS_MACCATALYST))",
"@executable_path/../Frameworks",
);
LIBRARY_SEARCH_PATHS = "";
MACOSX_DEPLOYMENT_TARGET = 12.0;
MARKETING_VERSION = 2.3.0;

View File

@ -31,7 +31,7 @@
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
enableAddressSanitizer = "YES"

View File

@ -75,13 +75,13 @@ extern os_log_t logHandle;
closeCategory = [UNNotificationCategory categoryWithIdentifier:CATEGORY_CLOSE actions:@[ok] intentIdentifiers:@[] options:0];
//init allow action
allow = [UNNotificationAction actionWithIdentifier:@"Allow" title:@"Allow (Once)" options:UNNotificationActionOptionNone];
allow = [UNNotificationAction actionWithIdentifier:@"Allow" title:NSLocalizedString(@"Allow (Once)", @"Allow (Once)") options:UNNotificationActionOptionNone];
//init allow action
allowAlways = [UNNotificationAction actionWithIdentifier:@"AllowAlways" title:@"Allow (Always)" options:UNNotificationActionOptionNone];
allowAlways = [UNNotificationAction actionWithIdentifier:@"AllowAlways" title:NSLocalizedString(@"Allow (Always)", @"Allow (Always)") options:UNNotificationActionOptionNone];
//init block action
block = [UNNotificationAction actionWithIdentifier:@"Block" title:@"Block" options:UNNotificationActionOptionNone];
block = [UNNotificationAction actionWithIdentifier:@"Block" title:NSLocalizedString(@"Block",@"Block") options:UNNotificationActionOptionNone];
//init category
actionCategory = [UNNotificationCategory categoryWithIdentifier:CATEGORY_ACTION actions:@[allow, allowAlways, block] intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
@ -1551,7 +1551,7 @@ bail:
(Device_Camera == event.deviceType) ? [title appendString:@"📸"] : [title appendFormat:@"🎙️"];
//set status
(NSControlStateValueOn == event.state) ? [title appendString:@" Became Active!"] : [title appendString:@" Became Inactive."];
(NSControlStateValueOn == event.state) ? [title appendString:NSLocalizedString(@" Became Active!",@" Became Active!")] : [title appendString:NSLocalizedString(@" Became Inactive.", @" Became Inactive.")];
//set title
content.title = title;
@ -1569,7 +1569,7 @@ bail:
if(nil != event.client)
{
//set body
content.body = [NSString stringWithFormat:@"Process: %@ (%@)", event.client.name, (0 != event.client.pid.intValue) ? event.client.pid : @"pid: unknown"];
content.body = [NSString stringWithFormat:NSLocalizedString(@"Process: %@ (%@)", @"Process: %@ (%@)"), event.client.name, (0 != event.client.pid.intValue) ? event.client.pid : NSLocalizedString(@"pid: unknown", @"pid: unknown")];
//set category
content.categoryIdentifier = CATEGORY_ACTION;
@ -1580,7 +1580,7 @@ bail:
else if(nil != event.device)
{
//set body
content.body = [NSString stringWithFormat:@"Device: %@", event.device.localizedName];
content.body = [NSString stringWithFormat:NSLocalizedString(@"Device: %@", @"Device: %@"), event.device.localizedName];
}
//init request
@ -1959,7 +1959,7 @@ bail:
os_log_error(logHandle, "ERROR: failed to kill %@ (%@)", processName, processID);
//show an alert
showAlert([NSString stringWithFormat:@"ERROR: failed to terminate %@ (%@)", processName, processID], [NSString stringWithFormat:@"system error code: %d", error], @"OK");
showAlert([NSString stringWithFormat:NSLocalizedString(@"ERROR: failed to terminate %@ (%@)", @"ERROR: failed to terminate %@ (%@)"), processName, processID], [NSString stringWithFormat:NSLocalizedString(@"system error code: %d", @"system error code: %d"), error], @"OK");
//bail
goto bail;

View File

@ -47,7 +47,7 @@
if(nil == version)
{
//default
version = @"unknown";
version = NSLocalizedString(@"unknown",@"unknown");
}
//set version sting
@ -59,7 +59,7 @@
if(nil == self.patrons.string)
{
//default
self.patrons.string = @"error: failed to load patrons :/";
self.patrons.string = NSLocalizedString(@"error: failed to load patrons :/", @"error: failed to load patrons :/");
}
return;

View File

@ -126,7 +126,7 @@ bail:
dispatch_async(dispatch_get_main_queue(), ^{
//show alert
showAlert(@"ERROR: OverSight is not authorized to display notifications.", @"Please authorize (style: \"Alerts\") via the Notifications pane in System Preferences.", @"Open System Preferences...");
showAlert(NSLocalizedString(@"ERROR: OverSight is not authorized to display notifications.", @"ERROR: OverSight is not authorized to display notifications."), NSLocalizedString(@"Please authorize (style: \"Alerts\") via the Notifications pane in System Preferences.", @"Please authorize (style: \"Alerts\") via the Notifications pane in System Preferences."), NSLocalizedString(@"Open System Preferences...", @"Open System Preferences..."));
//open `System Preferences` notifications pane
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.notifications?com.objective-see.oversight"]];
@ -164,7 +164,7 @@ bail:
dispatch_async(dispatch_get_main_queue(), ^{
//show alert
showAlert([NSString stringWithFormat:@"OverSight notification mode set to %@.", style], @"Please change to \"Alerts\" via the Notifications pane in System Preferences.", @"Open System Preferences...");
showAlert([NSString stringWithFormat:NSLocalizedString(@"OverSight notification mode set to %@.", @"OverSight notification mode set to %@."), style], NSLocalizedString(@"Please change to \"Alerts\" via the Notifications pane in System Preferences.", @"Please change to \"Alerts\" via the Notifications pane in System Preferences."), NSLocalizedString(@"Open System Preferences...",@"Open System Preferences..."));
//open `System Preferences` notifications pane
[NSWorkspace.sharedWorkspace openURL:[NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.notifications?com.objective-see.oversight"]];
@ -494,7 +494,7 @@ bail:
updateWindowController = [[UpdateWindowController alloc] initWithWindowNibName:@"UpdateWindow"];
//configure
[self.updateWindowController configure:[NSString stringWithFormat:@"a new version (%@) is available!", newVersion] buttonTitle:@"Update"];
[self.updateWindowController configure:[NSString stringWithFormat:NSLocalizedString(@"a new version (%@) is available!", @"a new version (%@) is available!"), newVersion] buttonTitle:NSLocalizedString(@"Update",@"Update")];
//center window
[[self.updateWindowController window] center];

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23094" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="AboutWindowController">
<connections>
<outlet property="patrons" destination="j2X-Ub-niY" id="gfG-o9-RbL"/>
<outlet property="versionLabel" destination="OSm-xS-Dmd" id="luW-4O-fYe"/>
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<rect key="contentRect" x="196" y="240" width="486" height="301"/>
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="486" height="301"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Eaf-yA-bbe">
<rect key="frame" x="158" y="235" width="268" height="50"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="OverSight" id="Ws8-bD-j2R"/>
</imageView>
<button tag="101" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HZZ-Es-mpy">
<rect key="frame" x="344" y="13" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="More Info" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="J9x-sM-h9S">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Menlo-Regular"/>
</buttonCell>
<connections>
<action selector="buttonHandler:" target="-2" id="Cgx-f4-Thr"/>
</connections>
</button>
<button tag="100" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xnd-Gw-0o8">
<rect key="frame" x="201" y="13" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Support Us!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6g3-Pg-x3P">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Menlo-Regular"/>
</buttonCell>
<connections>
<action selector="buttonHandler:" target="-2" id="gP0-s7-o6h"/>
</connections>
</button>
<scrollView fixedFrame="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5if-J7-OZf">
<rect key="frame" x="20" y="68" width="446" height="97"/>
<autoresizingMask key="autoresizingMask"/>
<clipView key="contentView" drawsBackground="NO" id="WiG-CC-JV3">
<rect key="frame" x="1" y="1" width="444" height="95"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView editable="NO" importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" dashSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="j2X-Ub-niY">
<rect key="frame" x="0.0" y="0.0" width="444" height="95"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="444" height="95"/>
<size key="maxSize" width="463" height="10000000"/>
<attributedString key="textStorage">
<fragment content="list here...">
<attributes>
<color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
<font key="NSFont" size="13" name="Menlo-Regular"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
</textView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="iNL-vM-cLm">
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="6bw-3O-hPc">
<rect key="frame" x="429" y="1" width="16" height="95"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fZJ-sG-ZuJ">
<rect key="frame" x="20" y="166" width="153" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Supporters/Patrons:" id="fJg-qw-wDf">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OSm-xS-Dmd">
<rect key="frame" x="158" y="217" width="182" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Version:" id="bBK-v0-ypq">
<font key="font" size="13" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lEv-Wj-6S5">
<rect key="frame" x="22" y="193" width="96" height="92"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="Icon" id="xKf-GK-m0k"/>
</imageView>
</subviews>
</view>
<connections>
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
</connections>
<point key="canvasLocation" x="350" y="335.5"/>
</window>
</objects>
<resources>
<image name="Icon" width="512" height="512"/>
<image name="OverSight" width="1301" height="227"/>
</resources>
</document>

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23094" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23094" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@ -27,7 +27,7 @@
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<rect key="contentRect" x="196" y="240" width="600" height="426"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
<view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="600" height="426"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@ -39,7 +39,7 @@
</imageView>
</subviews>
</view>
<toolbar key="toolbar" implicitIdentifier="C2AC49E3-FD8B-4919-9001-868355500E38" autosavesConfiguration="NO" displayMode="iconAndLabel" sizeMode="regular" id="V8g-Ya-LK4">
<toolbar key="toolbar" implicitIdentifier="C2AC49E3-FD8B-4919-9001-868355500E38" autosavesConfiguration="NO" showsBaselineSeparator="NO" displayMode="iconAndLabel" sizeMode="regular" id="V8g-Ya-LK4">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="J66-tT-qAf"/>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="6nW-4K-zf4"/>

View File

@ -348,7 +348,7 @@ bail:
case Update_Error:
//set label
self.updateLabel.stringValue = @"Error: update check failed";
self.updateLabel.stringValue = NSLocalizedString(@"Error: update check failed", @"Error: update check failed");
break;
@ -359,7 +359,7 @@ bail:
os_log_debug(logHandle, "no updates available");
//set label
self.updateLabel.stringValue = [NSString stringWithFormat:@"Installed version (%@),\r\nis the latest.", getAppVersion()];
self.updateLabel.stringValue = [NSString stringWithFormat:NSLocalizedString(@"Installed version (%@),\r\nis the latest.",@"Installed version (%@),\r\nis the latest."), getAppVersion()];
break;
@ -370,7 +370,7 @@ bail:
os_log_debug(logHandle, "update available, but not for this version of macOS.");
//set label
self.updateLabel.stringValue = [NSString stringWithFormat:@"Update available, but isn't supported on macOS %ld.%ld", NSProcessInfo.processInfo.operatingSystemVersion.majorVersion, NSProcessInfo.processInfo.operatingSystemVersion.minorVersion];
self.updateLabel.stringValue = [NSString stringWithFormat:NSLocalizedString(@"Update available, but isn't supported on macOS %ld.%ld", @"Update available, but isn't supported on macOS %ld.%ld"), NSProcessInfo.processInfo.operatingSystemVersion.majorVersion, NSProcessInfo.processInfo.operatingSystemVersion.minorVersion];
break;
@ -384,7 +384,7 @@ bail:
updateWindowController = [[UpdateWindowController alloc] initWithWindowNibName:@"UpdateWindow"];
//configure
[self.updateWindowController configure:[NSString stringWithFormat:@"a new version (%@) is available!", newVersion] buttonTitle:@"Update"];
[self.updateWindowController configure:[NSString stringWithFormat:NSLocalizedString(@"a new version (%@) is available!",@"a new version (%@) is available!"), newVersion] buttonTitle:@"Update"];
//center window
[[self.updateWindowController window] center];

View File

@ -143,14 +143,14 @@ enum menuItems
if(0 == activeDevices.count)
{
//set title
activeDeviceMenuItem.title = @"No Active Devices";
activeDeviceMenuItem.title = NSLocalizedString(@"No Active Devices", @"No Active Devices");
//gone
goto bail;
}
//set title
activeDeviceMenuItem.title = @"Active Devices:";
activeDeviceMenuItem.title = NSLocalizedString(@"Active Devices:", @"Active Devices:");
//inc
menuIndex++;
@ -421,28 +421,28 @@ bail:
if(YES == self.isDisabled)
{
//update status
[self.statusItem.menu itemWithTag:status].title = [NSString stringWithFormat:@"%@: disabled", PRODUCT_NAME];
[self.statusItem.menu itemWithTag:status].title = [NSString stringWithFormat:NSLocalizedString(@"%@: disabled", @"%@: disabled"), PRODUCT_NAME];
//set icon
self.statusItem.button.image = [NSImage imageNamed:@"StatusInactive"];
self.statusItem.button.image.template = YES;
//change toggle text
[self.statusItem.menu itemWithTag:toggle].title = @"Enable";
[self.statusItem.menu itemWithTag:toggle].title = NSLocalizedString(@"Enable", @"Enable");
}
//set to enabled
else
{
//update status
[self.statusItem.menu itemWithTag:status].title = [NSString stringWithFormat:@"%@: enabled", PRODUCT_NAME];
[self.statusItem.menu itemWithTag:status].title = [NSString stringWithFormat:NSLocalizedString(@"%@: enabled", @"%@: enabled"), PRODUCT_NAME];
//set icon
self.statusItem.button.image = [NSImage imageNamed:@"StatusActive"];
self.statusItem.button.image.template = YES;
//change toggle text
[self.statusItem.menu itemWithTag:toggle].title = @"Disable";
[self.statusItem.menu itemWithTag:toggle].title = NSLocalizedString(@"Disable", @"Disable");
}
return;

View File

@ -59,7 +59,7 @@
//hide 1st button on 'update'
// ...don't need update check button
if(YES == [self.actionButton.title isEqualToString:@"Update"])
if(YES == [self.actionButton.title isEqualToString:NSLocalizedString(@"Update", @"Update")])
{
//hide
self.firstButton.hidden = YES;
@ -106,7 +106,7 @@
{
//handle 'update' / 'more info', etc
// ->open OverSight's webpage, if they *didn't* click 'close'
if(YES != [((NSButton*)sender).title isEqualToString:@"close"])
if(YES != [((NSButton*)sender).title isEqualToString:NSLocalizedString(@"Close", @"Close")])
{
//open URL
// ->invokes user's default browser

View File

@ -0,0 +1,54 @@
{
"sourceLanguage" : "en",
"strings" : {
"6g3-Pg-x3P.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Support Us!\"; ObjectID = \"6g3-Pg-x3P\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Support Us!"
}
}
}
},
"bBK-v0-ypq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Version:\"; ObjectID = \"bBK-v0-ypq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Version:"
}
}
}
},
"fJg-qw-wDf.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Supporters/Patrons:\"; ObjectID = \"fJg-qw-wDf\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Supporters/Patrons:"
}
}
}
},
"J9x-sM-h9S.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"More Info\"; ObjectID = \"J9x-sM-h9S\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "More Info"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,174 @@
{
"sourceLanguage" : "en",
"strings" : {
"1Xt-HY-uBw.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"OverSight\"; ObjectID = \"1Xt-HY-uBw\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight"
}
}
}
},
"amL-48-7OW.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Uninstall OverSight...\"; ObjectID = \"amL-48-7OW\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Uninstall OverSight..."
}
}
}
},
"AYu-sK-qS6.title" : {
"comment" : "Class = \"NSMenu\"; title = \"Main Menu\"; ObjectID = \"AYu-sK-qS6\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Main Menu"
}
}
}
},
"FkZ-L3-H8o.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Quit OverSight\"; ObjectID = \"FkZ-L3-H8o\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Quit OverSight"
}
}
}
},
"fTQ-KS-1uk.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"OverSight: enabled\"; ObjectID = \"fTQ-KS-1uk\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight: enabled"
}
}
}
},
"HRl-aW-6nn.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Active Devices\"; ObjectID = \"HRl-aW-6nn\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Active Devices"
}
}
}
},
"i2A-ax-9ff.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Allowed Items...\"; ObjectID = \"i2A-ax-9ff\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Allowed Items..."
}
}
}
},
"l0V-ZX-X8S.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Allowed Items...\"; ObjectID = \"l0V-ZX-X8S\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Allowed Items..."
}
}
}
},
"p8u-9L-hFY.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Disable\"; ObjectID = \"p8u-9L-hFY\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Disable"
}
}
}
},
"rfE-3I-qPr.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Close Window\"; ObjectID = \"rfE-3I-qPr\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Close Window"
}
}
}
},
"RPu-ap-wNj.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"About OverSight\"; ObjectID = \"RPu-ap-wNj\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "About OverSight"
}
}
}
},
"uQy-DD-JDr.title" : {
"comment" : "Class = \"NSMenu\"; title = \"OverSight\"; ObjectID = \"uQy-DD-JDr\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight"
}
}
}
},
"yfe-lu-f3I.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Preferences...\"; ObjectID = \"yfe-lu-f3I\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Preferences..."
}
}
}
},
"Zao-2v-WyJ.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Preferences...\"; ObjectID = \"Zao-2v-WyJ\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Preferences..."
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,294 @@
{
"sourceLanguage" : "en",
"strings" : {
"1A2-j2-kqG.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Do not show an alert when the camera/microphone is deactivated. \"; ObjectID = \"1A2-j2-kqG\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Do not show an alert when the camera/microphone is deactivated. "
}
}
}
},
"2qr-2x-A3U.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Check Now\"; ObjectID = \"2qr-2x-A3U\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Check Now"
}
}
}
},
"4EN-j2-enV.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"No Icon Mode\"; ObjectID = \"4EN-j2-enV\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "No Icon Mode"
}
}
}
},
"7Ah-kZ-gGe.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"OverSight will pass in the following arguments:-device <camera|microphone> -event <on|off> -process <pid> -activeCount <0..n>Notes:\\n-process is only specified on activation events.\\n-activeCount is the number of devices still active.\"; ObjectID = \"7Ah-kZ-gGe\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight will pass in the following arguments:-device <camera|microphone> -event <on|off> -process <pid> -activeCount <0..n>Notes:\n-process is only specified on activation events.\n-activeCount is the number of devices still active."
}
}
}
},
"a5n-tt-65v.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Ignore External Device\"; ObjectID = \"a5n-tt-65v\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Ignore External Device"
}
}
}
},
"bky-MW-yBn.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Execute a script or binary when an event is detected.\"; ObjectID = \"bky-MW-yBn\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Execute a script or binary when an event is detected."
}
}
}
},
"BTl-QV-9GT.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Browse\"; ObjectID = \"BTl-QV-9GT\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Browse"
}
}
}
},
"E0T-Ug-P8f.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Automatically (re)start each time you login.\"; ObjectID = \"E0T-Ug-P8f\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Automatically (re)start each time you login."
}
}
}
},
"gji-hP-t04.label" : {
"comment" : "Class = \"NSToolbarItem\"; label = \"Action\"; ObjectID = \"gji-hP-t04\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Action"
}
}
}
},
"gji-hP-t04.paletteLabel" : {
"comment" : "Class = \"NSToolbarItem\"; paletteLabel = \"Action\"; ObjectID = \"gji-hP-t04\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Action"
}
}
}
},
"Gsa-fn-iag.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Disable 'Inactive' Alerts\"; ObjectID = \"Gsa-fn-iag\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Disable 'Inactive' Alerts"
}
}
}
},
"JV5-cY-ff4.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Do not automatically check for new versions.\"; ObjectID = \"JV5-cY-ff4\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Do not automatically check for new versions."
}
}
}
},
"JVI-Or-h0u.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Start at Login\"; ObjectID = \"JVI-Or-h0u\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Start at Login"
}
}
}
},
"k0w-Oi-kwd.label" : {
"comment" : "Class = \"NSToolbarItem\"; label = \"Mode\"; ObjectID = \"k0w-Oi-kwd\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Mode"
}
}
}
},
"k0w-Oi-kwd.paletteLabel" : {
"comment" : "Class = \"NSToolbarItem\"; paletteLabel = \"Mode\"; ObjectID = \"k0w-Oi-kwd\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Mode"
}
}
}
},
"KsW-is-XrR.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"View Allowed Items\"; ObjectID = \"KsW-is-XrR\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "View Allowed Items"
}
}
}
},
"ncJ-bF-dAA.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Execute\"; ObjectID = \"ncJ-bF-dAA\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Execute"
}
}
}
},
"Oe0-3Y-Srk.placeholderString" : {
"comment" : "Class = \"NSTextFieldCell\"; placeholderString = \"Path...\"; ObjectID = \"Oe0-3Y-Srk\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Path..."
}
}
}
},
"rrF-xj-cXp.label" : {
"comment" : "Class = \"NSToolbarItem\"; label = \"Update\"; ObjectID = \"rrF-xj-cXp\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Update"
}
}
}
},
"rrF-xj-cXp.paletteLabel" : {
"comment" : "Class = \"NSToolbarItem\"; paletteLabel = \"Update\"; ObjectID = \"rrF-xj-cXp\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Update"
}
}
}
},
"SG5-YM-BoV.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Run without showing an icon in the status menu bar.\"; ObjectID = \"SG5-YM-BoV\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Run without showing an icon in the status menu bar."
}
}
}
},
"SYJ-Qv-cRq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Do not show an alert when external devices trigger an event.\"; ObjectID = \"SYJ-Qv-cRq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Do not show an alert when external devices trigger an event."
}
}
}
},
"WL4-fV-4Wq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Pass Arguments\"; ObjectID = \"WL4-fV-4Wq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Pass Arguments"
}
}
}
},
"z5b-fA-WCk.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Disable Update Checks\"; ObjectID = \"z5b-fA-WCk\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Disable Update Checks"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,78 @@
{
"sourceLanguage" : "en",
"strings" : {
"2GD-5k-sEf.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Process\"; ObjectID = \"2GD-5k-sEf\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Process"
}
}
}
},
"EZN-NC-GXx.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"file:\"; ObjectID = \"EZN-NC-GXx\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "file:"
}
}
}
},
"ocl-vV-SZu.headerCell.title" : {
"comment" : "Class = \"NSTableColumn\"; headerCell.title = \" Process\"; ObjectID = \"ocl-vV-SZu\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " Process"
}
}
}
},
"QUv-cU-tQS.headerCell.title" : {
"comment" : "Class = \"NSTableColumn\"; headerCell.title = \"Allowed Device\"; ObjectID = \"QUv-cU-tQS\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Allowed Device"
}
}
}
},
"UoV-OW-a04.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"action\"; ObjectID = \"UoV-OW-a04\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "action"
}
}
}
},
"Wjb-RO-P6A.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Currently, there are no allowed items...\"; ObjectID = \"Wjb-RO-P6A\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Currently, there are no allowed items..."
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,42 @@
{
"sourceLanguage" : "en",
"strings" : {
"2jG-uf-4XV.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"⌃\"; ObjectID = \"2jG-uf-4XV\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "⌃"
}
}
}
},
"17.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"OverSight up & running!\"; ObjectID = \"17\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight up & running!"
}
}
}
},
"22.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"...access it from here anytime\"; ObjectID = \"22\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "...access it from here anytime"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,7 @@
{
"sourceLanguage" : "en",
"strings" : {
},
"version" : "1.0"
}

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleIdentifier</key>
<string>com.objective-see.oversight.uninstallHelper</string>
<key>CFBundleInfoDictionaryVersion</key>

View File

@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objectVersion = 60;
objects = {
/* Begin PBXBuildFile section */
@ -13,11 +13,8 @@
4BE49092104463A0006BE471 /* com.objective-see.oversight.uninstallHelper in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BE4905D10445E0A006BE471 /* com.objective-see.oversight.uninstallHelper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
BF04235611C0531400431286 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BF04235511C0531400431286 /* AppDelegate.m */; };
BF65C19111B985C0007C20AB /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF65C19011B985C0007C20AB /* MainMenu.xib */; };
CD17D54E20104EE700F798D7 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD17D54420104EE700F798D7 /* AboutWindow.xib */; };
CD17D54F20104EE700F798D7 /* Configure.m in Sources */ = {isa = PBXBuildFile; fileRef = CD17D54720104EE700F798D7 /* Configure.m */; };
CD17D55020104EE700F798D7 /* ConfigureWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD17D54820104EE700F798D7 /* ConfigureWindowController.m */; };
CD17D55120104EE700F798D7 /* ConfigureWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD17D54920104EE700F798D7 /* ConfigureWindowController.xib */; };
CD17D55320104EE700F798D7 /* AboutWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD17D54B20104EE700F798D7 /* AboutWindowController.m */; };
CD2F801124465F68009C3D77 /* patrons.txt in Resources */ = {isa = PBXBuildFile; fileRef = CD2F801024465F68009C3D77 /* patrons.txt */; };
CD3307AE203567D500F10D71 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD3307AD203567D400F10D71 /* Assets.xcassets */; };
@ -26,6 +23,9 @@
CD73DA9520046548001FFC84 /* HelperInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = CD73DA902004629D001FFC84 /* HelperInterface.m */; };
CD73DA9620046548001FFC84 /* HelperListener.m in Sources */ = {isa = PBXBuildFile; fileRef = CD73DA9220046339001FFC84 /* HelperListener.m */; };
CD73DA99200490B4001FFC84 /* HelperComms.m in Sources */ = {isa = PBXBuildFile; fileRef = CD73DA97200490B4001FFC84 /* HelperComms.m */; };
CD8641302CA15DCD00803551 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD86412F2CA15DCD00803551 /* AboutWindow.xib */; };
CD8641342CA15DDA00803551 /* ConfigureWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641332CA15DDA00803551 /* ConfigureWindowController.xib */; };
CD8641382CA15DE200803551 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641372CA15DE200803551 /* MainMenu.xib */; };
CD86B6EA23A5BBE7003F6BA4 /* configure.sh in Resources */ = {isa = PBXBuildFile; fileRef = CD86B6E923A5BBE7003F6BA4 /* configure.sh */; };
CDAAC241202255580032F2E6 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAAC23F202255580032F2E6 /* utilities.m */; };
CDAAC243202257D70032F2E6 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAAC23F202255580032F2E6 /* utilities.m */; };
@ -76,14 +76,11 @@
8D1107320486CEB800E47090 /* OverSight Installer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "OverSight Installer.app"; sourceTree = BUILT_PRODUCTS_DIR; };
BF04235411C0531400431286 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
BF04235511C0531400431286 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
BF65C19011B985C0007C20AB /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
CD17D54220104EE600F798D7 /* AboutWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutWindowController.h; sourceTree = "<group>"; };
CD17D54420104EE700F798D7 /* AboutWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AboutWindow.xib; sourceTree = "<group>"; };
CD17D54520104EE700F798D7 /* Configure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Configure.h; sourceTree = "<group>"; };
CD17D54620104EE700F798D7 /* ConfigureWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigureWindowController.h; sourceTree = "<group>"; };
CD17D54720104EE700F798D7 /* Configure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Configure.m; sourceTree = "<group>"; };
CD17D54820104EE700F798D7 /* ConfigureWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfigureWindowController.m; sourceTree = "<group>"; };
CD17D54920104EE700F798D7 /* ConfigureWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfigureWindowController.xib; sourceTree = "<group>"; };
CD17D54B20104EE700F798D7 /* AboutWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutWindowController.m; sourceTree = "<group>"; };
CD18D64C200DA301005609F9 /* XPCProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XPCProtocol.h; path = Shared/XPCProtocol.h; sourceTree = SOURCE_ROOT; };
CD2F801024465F68009C3D77 /* patrons.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = patrons.txt; path = ../../Shared/patrons.txt; sourceTree = "<group>"; };
@ -96,6 +93,12 @@
CD73DA932004633A001FFC84 /* HelperListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HelperListener.h; sourceTree = "<group>"; };
CD73DA97200490B4001FFC84 /* HelperComms.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HelperComms.m; sourceTree = "<group>"; };
CD73DA98200490B4001FFC84 /* HelperComms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HelperComms.h; sourceTree = "<group>"; };
CD86412E2CA15DCD00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AboutWindow.xib; sourceTree = "<group>"; };
CD8641312CA15DCD00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/AboutWindow.xcstrings; sourceTree = "<group>"; };
CD8641322CA15DDA00803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ConfigureWindowController.xib; sourceTree = "<group>"; };
CD8641352CA15DDA00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/ConfigureWindowController.xcstrings; sourceTree = "<group>"; };
CD8641362CA15DE200803551 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
CD8641392CA15DE200803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/MainMenu.xcstrings; sourceTree = "<group>"; };
CD86B6E923A5BBE7003F6BA4 /* configure.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = configure.sh; path = Source/Script/configure.sh; sourceTree = SOURCE_ROOT; };
CDA6E62E203B67A100C78F91 /* consts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = consts.h; path = ../../Shared/consts.h; sourceTree = "<group>"; };
CDA6E632203B6B7800C78F91 /* objectiveSeeText.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = objectiveSeeText.png; path = ../../shared/images/objectiveSeeText.png; sourceTree = "<group>"; };
@ -154,18 +157,18 @@
isa = PBXGroup;
children = (
CD3307AD203567D400F10D71 /* Assets.xcassets */,
CD17D54420104EE700F798D7 /* AboutWindow.xib */,
CD86412F2CA15DCD00803551 /* AboutWindow.xib */,
CD17D54220104EE600F798D7 /* AboutWindowController.h */,
CD17D54B20104EE700F798D7 /* AboutWindowController.m */,
CD17D54520104EE700F798D7 /* Configure.h */,
CD17D54720104EE700F798D7 /* Configure.m */,
CD17D54620104EE700F798D7 /* ConfigureWindowController.h */,
CD17D54820104EE700F798D7 /* ConfigureWindowController.m */,
CD17D54920104EE700F798D7 /* ConfigureWindowController.xib */,
CD8641332CA15DDA00803551 /* ConfigureWindowController.xib */,
CD73DA98200490B4001FFC84 /* HelperComms.h */,
CD73DA97200490B4001FFC84 /* HelperComms.m */,
4BE4904C10445D49006BE471 /* Info.plist */,
BF65C19011B985C0007C20AB /* MainMenu.xib */,
CD8641372CA15DE200803551 /* MainMenu.xib */,
CD6CAC9120A42D5000188B0A /* main.h */,
4BE4904D10445D49006BE471 /* main.m */,
BF04235411C0531400431286 /* AppDelegate.h */,
@ -284,11 +287,12 @@
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Installer" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
English,
en,
Base,
es,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* SMJobBless */;
projectDirPath = "";
@ -306,11 +310,11 @@
buildActionMask = 2147483647;
files = (
CD86B6EA23A5BBE7003F6BA4 /* configure.sh in Resources */,
BF65C19111B985C0007C20AB /* MainMenu.xib in Resources */,
CD17D54E20104EE700F798D7 /* AboutWindow.xib in Resources */,
CD8641382CA15DE200803551 /* MainMenu.xib in Resources */,
CD8641302CA15DCD00803551 /* AboutWindow.xib in Resources */,
CD2F801124465F68009C3D77 /* patrons.txt in Resources */,
CD3307AE203567D500F10D71 /* Assets.xcassets in Resources */,
CD17D55120104EE700F798D7 /* ConfigureWindowController.xib in Resources */,
CD8641342CA15DDA00803551 /* ConfigureWindowController.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -371,6 +375,36 @@
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
CD86412F2CA15DCD00803551 /* AboutWindow.xib */ = {
isa = PBXVariantGroup;
children = (
CD86412E2CA15DCD00803551 /* Base */,
CD8641312CA15DCD00803551 /* mul */,
);
name = AboutWindow.xib;
sourceTree = "<group>";
};
CD8641332CA15DDA00803551 /* ConfigureWindowController.xib */ = {
isa = PBXVariantGroup;
children = (
CD8641322CA15DDA00803551 /* Base */,
CD8641352CA15DDA00803551 /* mul */,
);
name = ConfigureWindowController.xib;
sourceTree = "<group>";
};
CD8641372CA15DE200803551 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
CD8641362CA15DE200803551 /* Base */,
CD8641392CA15DE200803551 /* mul */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
4BE4905F10445E0B006BE471 /* Debug */ = {
isa = XCBuildConfiguration;

View File

@ -41,7 +41,7 @@
}
//set version sting
self.versionLabel.stringValue = [NSString stringWithFormat:@"Version: %@", getAppVersion()];
self.versionLabel.stringValue = [NSString stringWithFormat:NSLocalizedString(@"Version: %@",@"Version: %@"), getAppVersion()];
//load patrons
self.patrons.string = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"patrons" ofType:@"txt"] encoding:NSUTF8StringEncoding error:NULL];

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23094" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@ -28,7 +28,7 @@
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<rect key="contentRect" x="196" y="240" width="523" height="244"/>
<rect key="screenRect" x="0.0" y="0.0" width="3440" height="1415"/>
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="523" height="244"/>
<autoresizingMask key="autoresizingMask"/>

View File

@ -72,10 +72,10 @@ extern os_log_t logHandle;
isInstalled = [self.configureObj isInstalled];
//set window title
[self window].title = [NSString stringWithFormat:@"version %@", getAppVersion()];
[self window].title = [NSString stringWithFormat:NSLocalizedString(@"version %@", @"version %@"), getAppVersion()];
//init status msg
[self.statusMsg setStringValue:@"...protects your webcam & microphone!"];
[self.statusMsg setStringValue:NSLocalizedString(@"...protects your webcam & microphone!", @"...protects your webcam & microphone!")];
//uninstall via app?
// just enable uinstall button
@ -426,13 +426,13 @@ extern os_log_t logHandle;
if(ACTION_INSTALL_FLAG == event)
{
//update status msg
[self.statusMsg setStringValue:@"Installing..."];
[self.statusMsg setStringValue:NSLocalizedString(@"Installing...", @"Installing...")];
}
//uninstall msg
else
{
//update status msg
[self.statusMsg setStringValue:@"Uninstalling..."];
[self.statusMsg setStringValue:NSLocalizedString(@"Uninstalling...", @"Uninstalling...")];
}
//disable action button
@ -476,33 +476,35 @@ extern os_log_t logHandle;
self.appActivationObserver = nil;
}
//set action msg for install
//action was install
if(ACTION_INSTALL_FLAG == event)
{
//set msg
action = @"install";
action = NSLocalizedString(@"install", @"install");
if(YES == success)
{
resultMsg = [NSMutableString stringWithFormat:NSLocalizedString(@"☑️ %@: installed!\n", @"☑️ %@: installed!\n"), PRODUCT_NAME];
}
}
//set action msg for uninstall
//action was uninstall
else
{
//set msg
action = @"uninstall";
action = NSLocalizedString(@"uninstall", @"uninstall");
if(YES == success)
{
resultMsg = [NSMutableString stringWithFormat:NSLocalizedString(@"☑️ %@: uninstalled!\n", @"☑️ %@: uninstalled!\n"), PRODUCT_NAME];
}
}
//success
if(YES == success)
//failure?
if(YES != success)
{
//set result msg
resultMsg = [NSMutableString stringWithFormat:@"☑️ %@: %@ed!\n", PRODUCT_NAME, action];
}
//failure
else
{
//set result msg
resultMsg = [NSMutableString stringWithFormat:@"⚠️ Error: %@ failed", action];
resultMsg = [NSMutableString stringWithFormat:NSLocalizedString(@"⚠️ Error: %@ failed", @"⚠️ Error: %@ failed"), action];
//set debug msg
self.debugMsg.stringValue = @"For more info, from the terminal run:\r\nlog show --predicate=\"subsystem='com.objective-see.oversight'\"";
self.debugMsg.stringValue = NSLocalizedString(@"For more info, from the terminal run:\r\nlog show --predicate=\"subsystem='com.objective-see.oversight'\"", @"For more info, from the terminal run:\r\nlog show --predicate=\"subsystem='com.objective-see.oversight'\"");
//show 'get more info' button
self.moreInfoButton.hidden = NO;

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>

View File

@ -9,6 +9,7 @@
<customObject id="-2" userLabel="File's Owner" customClass="AboutWindowController">
<connections>
<outlet property="patrons" destination="j2X-Ub-niY" id="gfG-o9-RbL"/>
<outlet property="supportUs" destination="xnd-Gw-0o8" id="hvk-V1-xwn"/>
<outlet property="versionLabel" destination="OSm-xS-Dmd" id="luW-4O-fYe"/>
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
</connections>
@ -22,11 +23,19 @@
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="486" height="301"/>
<autoresizingMask key="autoresizingMask"/>
<userGuides>
<userLayoutGuide location="62" affinity="maxY"/>
</userGuides>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Eaf-yA-bbe">
<rect key="frame" x="158" y="235" width="268" height="50"/>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lEv-Wj-6S5">
<rect key="frame" x="20" y="211" width="77" height="70"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="OverSight" id="Ws8-bD-j2R"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="Icon" id="xKf-GK-m0k"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Eaf-yA-bbe">
<rect key="frame" x="127" y="231" width="349" height="50"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageAlignment="left" imageScaling="proportionallyDown" image="OverSight" id="Ws8-bD-j2R"/>
</imageView>
<button verticalHuggingPriority="750" fixedFrame="YES" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="HZZ-Es-mpy">
<rect key="frame" x="344" y="13" width="128" height="32"/>
@ -96,7 +105,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OSm-xS-Dmd">
<rect key="frame" x="158" y="217" width="182" height="19"/>
<rect key="frame" x="129" y="206" width="182" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Version:" id="bBK-v0-ypq">
<font key="font" size="13" name="Menlo-Regular"/>
@ -104,11 +113,6 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lEv-Wj-6S5">
<rect key="frame" x="22" y="193" width="96" height="92"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="Icon" id="xKf-GK-m0k"/>
</imageView>
</subviews>
</view>
<connections>

View File

@ -33,7 +33,7 @@ int main(int argc, char *argv[])
if(YES != hasAdminPrivileges())
{
//show alert
showAlert(@"ERROR: Insuffient Privileges.", @"OverSight can only be installed / run on accounts with administrative privileges", @"Exit");
showAlert(NSLocalizedString(@"ERROR: Insuffient Privileges.", @"ERROR: Insuffient Privileges."), NSLocalizedString(@"OverSight can only be installed / run on accounts with administrative privileges", @"OverSight can only be installed / run on accounts with administrative privileges"), NSLocalizedString(@"Exit", @"Exit"));
//bail
goto bail;

View File

@ -0,0 +1,54 @@
{
"sourceLanguage" : "en",
"strings" : {
"6g3-Pg-x3P.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Support Us!\"; ObjectID = \"6g3-Pg-x3P\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Support Us!"
}
}
}
},
"bBK-v0-ypq.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Version:\"; ObjectID = \"bBK-v0-ypq\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Version:"
}
}
}
},
"fJg-qw-wDf.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Supporters/Patrons:\"; ObjectID = \"fJg-qw-wDf\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Supporters/Patrons:"
}
}
}
},
"J9x-sM-h9S.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"More Info\"; ObjectID = \"J9x-sM-h9S\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "More Info"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,150 @@
{
"sourceLanguage" : "en",
"strings" : {
"0wd-cy-xEw.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Next »\"; ObjectID = \"0wd-cy-xEw\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Next »"
}
}
}
},
"1hy-8F-qxt.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Install\"; ObjectID = \"1hy-8F-qxt\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Install"
}
}
}
},
"8dX-bb-vf1.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"If prompted, please allow OverSight to show notifications, setting the style to \\\"Alerts\\\"\"; ObjectID = \"8dX-bb-vf1\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "If prompted, please allow OverSight to show notifications, setting the style to \"Alerts\""
}
}
}
},
"DHG-bQ-JvA.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Next »\"; ObjectID = \"DHG-bQ-JvA\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Next »"
}
}
}
},
"E5X-AO-6V1.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Yes!\"; ObjectID = \"E5X-AO-6V1\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Yes!"
}
}
}
},
"G7H-Q1-04P.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"Uninstall\"; ObjectID = \"G7H-Q1-04P\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Uninstall"
}
}
}
},
"hLy-Nm-ajB.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Support OverSight?\"; ObjectID = \"hLy-Nm-ajB\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Support OverSight?"
}
}
}
},
"Hvk-zS-1VC.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Show some love? \"; ObjectID = \"Hvk-zS-1VC\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Show some love? "
}
}
}
},
"IEz-R9-W5R.title" : {
"comment" : "Class = \"NSButtonCell\"; title = \"No\"; ObjectID = \"IEz-R9-W5R\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "No"
}
}
}
},
"OYn-6J-Cfb.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"Mahalo to the \\\"Friends Objective-See\\\"\"; ObjectID = \"OYn-6J-Cfb\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Mahalo to the \"Friends Objective-See\""
}
}
}
},
"WLJ-8f-ExO.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"It's free, open-source, and written by a single (mac-loving) coder!\"; ObjectID = \"WLJ-8f-ExO\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "It's free, open-source, and written by a single (mac-loving) coder!"
}
}
}
},
"zdX-7L-hfX.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"If \\\"Do Not Disturb\\\" mode is activated, OverSight's alerts won't be shown\"; ObjectID = \"zdX-7L-hfX\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "If \"Do Not Disturb\" mode is activated, OverSight's alerts won't be shown"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,54 @@
{
"sourceLanguage" : "en",
"strings" : {
"Cgo-Jp-sNo.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"About OverSight\"; ObjectID = \"Cgo-Jp-sNo\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "About OverSight"
}
}
}
},
"Ihj-A9-cAO.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"OverSight\"; ObjectID = \"Ihj-A9-cAO\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight"
}
}
}
},
"sPv-lJ-f9j.title" : {
"comment" : "Class = \"NSMenu\"; title = \"Main Menu\"; ObjectID = \"sPv-lJ-f9j\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Main Menu"
}
}
}
},
"VQ8-yZ-1ga.title" : {
"comment" : "Class = \"NSMenu\"; title = \"OverSight\"; ObjectID = \"VQ8-yZ-1ga\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "OverSight"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -187,13 +187,13 @@
#define ACTION_INSTALL_FLAG 1
//button title: upgrade
#define ACTION_UPGRADE @"Upgrade"
#define ACTION_UPGRADE NSLocalizedString(@"Upgrade", @"Upgrade")
//button title: close
#define ACTION_CLOSE @"Close"
#define ACTION_CLOSE NSLocalizedString(@"Close", @"Close")
//button title: next
#define ACTION_NEXT @"Next »"
#define ACTION_NEXT NSLocalizedString(@"Next »", @"Next »")
//show info about notifications
#define ACTION_SHOW_NOTIFICATION_VIEW 2

View File

@ -221,81 +221,6 @@ bail:
#pragma GCC diagnostic pop
/*
//build an array of processes ancestry
// uses `GetProcessForPID` to try get (real) parent
NSMutableArray* generateProcessHierarchy(pid_t pid, NSString* name)
{
//process hierarchy
NSMutableArray* processHierarchy = nil;
//current process id
pid_t currentPID = -1;
//parent pid
pid_t parentPID = -1;
//process name
NSString* parentName = nil;
//alloc
processHierarchy = [NSMutableArray array];
//parent
NSDictionary* parent = nil;
//add current process (leaf)
// parent(s) will then be added at front...
[processHierarchy addObject:[@{@"pid":[NSNumber numberWithInt:pid], @"name":valueForStringItem(name)} mutableCopy]];
//init current to self
currentPID = pid;
//scan back
while(YES)
{
//get (real) parent
parent = getRealParent(currentPID);
if(nil == parent)
{
break;
}
//get parent pid
parentPID = [parent[@"pid"] intValue];
//end of heirarchy?
if( (0 == parentPID) ||
(-1 == parentPID) ||
(currentPID == parentPID) )
{
//bail
break;
}
//get name
// first from bundle, then from executable
name = parent[@"CFBundleName"];
if(0 == name.length)
{
//via executable
name = [parent[@"CFBundleExecutable"] lastPathComponent];
}
//add parent
// always at front
[processHierarchy insertObject:[@{@"pid":[NSNumber numberWithInt:parentPID], @"name":valueForStringItem(parentName)} mutableCopy] atIndex:0];
//update
currentPID = parentPID;
}
return processHierarchy;
}
*/
//check if something is nil
// if so, return a default ('unknown') value
NSString* valueForStringItem(NSString* item)