Localizations (Spanish), Friends++, UI improvements

This commit is contained in:
Patrick Wardle 2024-09-23 21:13:34 +02:00
parent 77ea0c5821
commit 69b1b27310
39 changed files with 1317 additions and 142 deletions

View File

@ -25,6 +25,8 @@
CD8641512CA161D500803551 /* Rules.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641502CA161D500803551 /* Rules.xib */; }; CD8641512CA161D500803551 /* Rules.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641502CA161D500803551 /* Rules.xib */; };
CD8641552CA161DA00803551 /* StatusBarPopover.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641542CA161DA00803551 /* StatusBarPopover.xib */; }; CD8641552CA161DA00803551 /* StatusBarPopover.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641542CA161DA00803551 /* StatusBarPopover.xib */; };
CD8641592CA161DF00803551 /* UpdateWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641582CA161DF00803551 /* UpdateWindow.xib */; }; CD8641592CA161DF00803551 /* UpdateWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641582CA161DF00803551 /* UpdateWindow.xib */; };
CD8641702CA1B5F300803551 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CD86416E2CA1B5F300803551 /* InfoPlist.strings */; };
CD8641802CA1F03E00803551 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = CD86417F2CA1F03E00803551 /* Localizable.xcstrings */; };
CD8FD5D623BAE2D200EFE0FB /* PrefsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5D423BAE2D200EFE0FB /* PrefsWindowController.m */; }; CD8FD5D623BAE2D200EFE0FB /* PrefsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5D423BAE2D200EFE0FB /* PrefsWindowController.m */; };
CD8FD5F623C05AD900EFE0FB /* RuleRow.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F023C05AD800EFE0FB /* RuleRow.m */; }; CD8FD5F623C05AD900EFE0FB /* RuleRow.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F023C05AD800EFE0FB /* RuleRow.m */; };
CD8FD5F723C05AD900EFE0FB /* RuleRowCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F223C05AD800EFE0FB /* RuleRowCell.m */; }; CD8FD5F723C05AD900EFE0FB /* RuleRowCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CD8FD5F223C05AD800EFE0FB /* RuleRowCell.m */; };
@ -85,6 +87,8 @@
CD8641562CA161DA00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/StatusBarPopover.xcstrings; 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>"; }; 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>"; }; CD86415A2CA161DF00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/UpdateWindow.xcstrings; sourceTree = "<group>"; };
CD86416F2CA1B5F300803551 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CD86417F2CA1F03E00803551 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
CD8FD5D223BAE2D100EFE0FB /* PrefsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefsWindowController.h; sourceTree = "<group>"; }; CD8FD5D223BAE2D100EFE0FB /* PrefsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefsWindowController.h; sourceTree = "<group>"; };
CD8FD5D423BAE2D200EFE0FB /* PrefsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrefsWindowController.m; 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>"; }; CD8FD5ED23C05AD800EFE0FB /* RuleRowCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuleRowCell.h; sourceTree = "<group>"; };
@ -137,6 +141,7 @@
7D7755DA1F02E05B00D0017D = { 7D7755DA1F02E05B00D0017D = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CD86417F2CA1F03E00803551 /* Localizable.xcstrings */,
CDE09AF12919829000561CFF /* Uninstaller */, CDE09AF12919829000561CFF /* Uninstaller */,
7D3B75201F13356900568828 /* Shared */, 7D3B75201F13356900568828 /* Shared */,
7D7755E51F02E05B00D0017D /* Source */, 7D7755E51F02E05B00D0017D /* Source */,
@ -170,6 +175,7 @@
CDCBF0DC26499DFF001D9F9A /* Event.h */, CDCBF0DC26499DFF001D9F9A /* Event.h */,
CDCBF0DD26499DFF001D9F9A /* Event.m */, CDCBF0DD26499DFF001D9F9A /* Event.m */,
7D7755F11F02E05B00D0017D /* Info.plist */, 7D7755F11F02E05B00D0017D /* Info.plist */,
CD86416E2CA1B5F300803551 /* InfoPlist.strings */,
CDC6098C263CB7EB006D1332 /* LogMonitor.h */, CDC6098C263CB7EB006D1332 /* LogMonitor.h */,
CDC6098D263CB7EB006D1332 /* LogMonitor.m */, CDC6098D263CB7EB006D1332 /* LogMonitor.m */,
CD86414C2CA161CF00803551 /* MainMenu.xib */, CD86414C2CA161CF00803551 /* MainMenu.xib */,
@ -281,6 +287,7 @@
English, English,
en, en,
Base, Base,
es,
); );
mainGroup = 7D7755DA1F02E05B00D0017D; mainGroup = 7D7755DA1F02E05B00D0017D;
productRefGroup = 7D7755E41F02E05B00D0017D /* Products */; productRefGroup = 7D7755E41F02E05B00D0017D /* Products */;
@ -302,10 +309,12 @@
CD6836682391DB6F00CF19C1 /* security.plist in Resources */, CD6836682391DB6F00CF19C1 /* security.plist in Resources */,
CD86413C2CA1617A00803551 /* AboutWindow.xib in Resources */, CD86413C2CA1617A00803551 /* AboutWindow.xib in Resources */,
CD8641592CA161DF00803551 /* UpdateWindow.xib in Resources */, CD8641592CA161DF00803551 /* UpdateWindow.xib in Resources */,
CD8641802CA1F03E00803551 /* Localizable.xcstrings in Resources */,
CD8641552CA161DA00803551 /* StatusBarPopover.xib in Resources */, CD8641552CA161DA00803551 /* StatusBarPopover.xib in Resources */,
CD2F801724468A8C009C3D77 /* patrons.txt in Resources */, CD2F801724468A8C009C3D77 /* patrons.txt in Resources */,
CD8641512CA161D500803551 /* Rules.xib in Resources */, CD8641512CA161D500803551 /* Rules.xib in Resources */,
CD86414D2CA161CF00803551 /* MainMenu.xib in Resources */, CD86414D2CA161CF00803551 /* MainMenu.xib in Resources */,
CD8641702CA1B5F300803551 /* InfoPlist.strings in Resources */,
7DD25FF01F23B73C00277EC4 /* Assets.xcassets in Resources */, 7DD25FF01F23B73C00277EC4 /* Assets.xcassets in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -402,6 +411,14 @@
name = UpdateWindow.xib; name = UpdateWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
CD86416E2CA1B5F300803551 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
CD86416F2CA1B5F300803551 /* es */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */ /* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
@ -458,6 +475,7 @@
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = NO; ONLY_ACTIVE_ARCH = NO;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = YES;
}; };
name = Debug; name = Debug;
}; };
@ -507,6 +525,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.12; MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = YES;
}; };
name = Release; name = Release;
}; };

View File

@ -752,6 +752,9 @@ extern os_log_t logHandle;
return; return;
} }
//TODO: refactor alerts
// delay showing them!
//register for audio changes //register for audio changes
-(BOOL)watchAudioDevice:(AVCaptureDevice*)device -(BOOL)watchAudioDevice:(AVCaptureDevice*)device
{ {
@ -813,12 +816,18 @@ extern os_log_t logHandle;
//dbg msg //dbg msg
os_log_debug(logHandle, "audio event: off"); os_log_debug(logHandle, "audio event: off");
//still wait
// cuz the on event is waiting...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//init event //init event
// process (client) and device are nil // process (client) and device are nil
event = [[Event alloc] init:nil device:device deviceType:Device_Microphone state:NSControlStateValueOff]; event = [[Event alloc] init:nil device:device deviceType:Device_Microphone state:NSControlStateValueOff];
//handle event //handle event
[self handleEvent:event]; [self handleEvent:event];
});
} }
//audio on? //audio on?
@ -987,12 +996,18 @@ bail:
//dbg msg //dbg msg
os_log_debug(logHandle, "camera event: off"); os_log_debug(logHandle, "camera event: off");
//still wait
// cuz the on event is waiting...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//init event //init event
// process (client) and device are nil // process (client) and device are nil
event = [[Event alloc] init:nil device:device deviceType:Device_Camera state:NSControlStateValueOff]; event = [[Event alloc] init:nil device:device deviceType:Device_Camera state:NSControlStateValueOff];
//handle event //handle event
[self handleEvent:event]; [self handleEvent:event];
});
} }
} //macOS 13.3 } //macOS 13.3
@ -1435,7 +1450,7 @@ bail:
result = NOTIFICATION_SPURIOUS; result = NOTIFICATION_SPURIOUS;
//dbg msg //dbg msg
os_log_debug(logHandle, "ignoring event, as it happened <1.0s ago"); os_log_debug(logHandle, "ignoring event, as last event happened <1.0s ago");
//bail //bail
goto bail; goto bail;
@ -1498,6 +1513,9 @@ bail:
//result //result
NSInteger result = NOTIFICATION_ERROR; NSInteger result = NOTIFICATION_ERROR;
//dbg msg
os_log_debug(logHandle, "handling event: %{public}@", event);
//should show? //should show?
@synchronized (self) { @synchronized (self) {
@ -1586,6 +1604,19 @@ bail:
//init request //init request
request = [UNNotificationRequest requestWithIdentifier:NSUUID.UUID.UUIDString content:content trigger:NULL]; request = [UNNotificationRequest requestWithIdentifier:NSUUID.UUID.UUIDString content:content trigger:NULL];
//log: on
if(NSControlStateValueOn == event.state)
{
//log
os_log(logHandle, "[Alert] On Event: %@ / Device: %@ / %@", content.title, content.subtitle, content.body);
}
//log: off
else
{
//log
os_log(logHandle, "[Alert] Off Event: %@ / Device: %@", content.title, content.subtitle);
}
//send notification //send notification
[UNUserNotificationCenter.currentNotificationCenter addNotificationRequest:request withCompletionHandler:^(NSError *_Nullable error) [UNUserNotificationCenter.currentNotificationCenter addNotificationRequest:request withCompletionHandler:^(NSError *_Nullable error)
{ {

View File

@ -31,8 +31,7 @@
</connections> </connections>
</menuItem> </menuItem>
<menuItem isSeparatorItem="YES" id="3Oo-ON-R9s"/> <menuItem isSeparatorItem="YES" id="3Oo-ON-R9s"/>
<menuItem title="Preferences..." id="yfe-lu-f3I"> <menuItem title="Settings..." keyEquivalent="," id="yfe-lu-f3I">
<modifierMask key="keyEquivalentModifierMask"/>
<connections> <connections>
<action selector="showPreferences:" target="Voe-Tx-rLC" id="0UK-iW-u9N"/> <action selector="showPreferences:" target="Voe-Tx-rLC" id="0UK-iW-u9N"/>
</connections> </connections>
@ -69,9 +68,7 @@
<modifierMask key="keyEquivalentModifierMask"/> <modifierMask key="keyEquivalentModifierMask"/>
</menuItem> </menuItem>
<menuItem isSeparatorItem="YES" id="Y5x-j1-ofU"/> <menuItem isSeparatorItem="YES" id="Y5x-j1-ofU"/>
<menuItem title="Preferences..." tag="103" id="Zao-2v-WyJ"> <menuItem title="Settings..." tag="103" keyEquivalent="," id="Zao-2v-WyJ"/>
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Allowed Items..." tag="104" id="i2A-ax-9ff"> <menuItem title="Allowed Items..." tag="104" id="i2A-ax-9ff">
<modifierMask key="keyEquivalentModifierMask"/> <modifierMask key="keyEquivalentModifierMask"/>
</menuItem> </menuItem>

View File

@ -94,7 +94,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="156" translatesAutoresizingMaskIntoConstraints="NO" id="xbe-1S-lpy"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="156" translatesAutoresizingMaskIntoConstraints="NO" id="xbe-1S-lpy">
<rect key="frame" x="72" y="327" width="114" height="15"/> <rect key="frame" x="72" y="327" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Start at Login" id="JVI-Or-h0u"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Start at Login" id="JVI-Or-h0u">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -103,11 +103,11 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="tFB-E4-zbp"> <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="tFB-E4-zbp">
<rect key="frame" x="72" y="310" width="475" height="15"/> <rect key="frame" x="72" y="310" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Automatically (re)start each time you login." id="E0T-Ug-P8f"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Automatically (re)start each time you login." id="E0T-Ug-P8f">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
@ -123,7 +123,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="156" translatesAutoresizingMaskIntoConstraints="NO" id="Kjh-jc-STu"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="156" translatesAutoresizingMaskIntoConstraints="NO" id="Kjh-jc-STu">
<rect key="frame" x="72" y="265" width="98" height="15"/> <rect key="frame" x="72" y="265" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Icon Mode" id="4EN-j2-enV"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="No Icon Mode" id="4EN-j2-enV">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -143,7 +143,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="262" translatesAutoresizingMaskIntoConstraints="NO" id="Enr-tn-mwG"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="262" translatesAutoresizingMaskIntoConstraints="NO" id="Enr-tn-mwG">
<rect key="frame" x="72" y="202" width="177" height="15"/> <rect key="frame" x="72" y="202" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Ignore External Device" id="a5n-tt-65v"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Ignore External Device" id="a5n-tt-65v">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -152,11 +152,11 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="AAL-QY-azK"> <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="AAL-QY-azK">
<rect key="frame" x="72" y="185" width="522" height="15"/> <rect key="frame" x="72" y="173" width="510" height="27"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Do not show an alert when external devices trigger an event." id="SYJ-Qv-cRq"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Do not show an alert when external devices trigger an event." id="SYJ-Qv-cRq">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
@ -172,7 +172,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="262" translatesAutoresizingMaskIntoConstraints="NO" id="K3U-Od-Xdy"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="262" translatesAutoresizingMaskIntoConstraints="NO" id="K3U-Od-Xdy">
<rect key="frame" x="72" y="150" width="200" height="15"/> <rect key="frame" x="72" y="150" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable 'Inactive' Alerts" id="Gsa-fn-iag"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable 'Inactive' Alerts" id="Gsa-fn-iag">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -181,16 +181,25 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="5xo-jp-5qA"> <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="5xo-jp-5qA">
<rect key="frame" x="72" y="133" width="522" height="15"/> <rect key="frame" x="72" y="133" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Do not show an alert when the camera/microphone is deactivated. " id="1A2-j2-kqG"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Do not show an alert when the camera/microphone is deactivated. " id="1A2-j2-kqG">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="xaO-g8-rdS">
<rect key="frame" x="72" y="248" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Run without showing an icon in the status menu bar." id="SG5-YM-BoV">
<font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DuP-BJ-gMJ"> <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DuP-BJ-gMJ">
<rect key="frame" x="212" y="59" width="176" height="32"/> <rect key="frame" x="201" y="59" width="198" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="View Allowed Items" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KsW-is-XrR"> <buttonCell key="cell" type="push" title="View Allowed Items" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KsW-is-XrR">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@ -200,15 +209,6 @@
<action selector="viewRules:" target="-2" id="jHD-eK-n4u"/> <action selector="viewRules:" target="-2" id="jHD-eK-n4u"/>
</connections> </connections>
</button> </button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="xaO-g8-rdS">
<rect key="frame" x="72" y="248" width="475" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Run without showing an icon in the status menu bar." id="SG5-YM-BoV">
<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>
</subviews> </subviews>
<point key="canvasLocation" x="-167" y="510"/> <point key="canvasLocation" x="-167" y="510"/>
</customView> </customView>
@ -228,7 +228,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="117" translatesAutoresizingMaskIntoConstraints="NO" id="8Tb-Ih-SsC"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="117" translatesAutoresizingMaskIntoConstraints="NO" id="8Tb-Ih-SsC">
<rect key="frame" x="72" y="226" width="59" height="15"/> <rect key="frame" x="72" y="226" width="74" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Execute" id="ncJ-bF-dAA"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Execute" id="ncJ-bF-dAA">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -248,7 +248,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dH0-Xi-Qnd"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dH0-Xi-Qnd">
<rect key="frame" x="72" y="152" width="114" height="15"/> <rect key="frame" x="72" y="152" width="510" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Pass Arguments" id="WL4-fV-4Wq"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Pass Arguments" id="WL4-fV-4Wq">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -257,7 +257,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="382" translatesAutoresizingMaskIntoConstraints="NO" id="z32-0s-dpb"> <textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="382" translatesAutoresizingMaskIntoConstraints="NO" id="z32-0s-dpb">
<rect key="frame" x="143" y="223" width="437" height="20"/> <rect key="frame" x="147" y="223" width="433" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" state="on" borderStyle="bezel" placeholderString="Path..." drawsBackground="YES" id="Oe0-3Y-Srk"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" state="on" borderStyle="bezel" placeholderString="Path..." drawsBackground="YES" id="Oe0-3Y-Srk">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="13" name="Menlo-Regular"/>
@ -286,8 +286,8 @@
<rect key="frame" x="72" y="185" width="427" height="30"/> <rect key="frame" x="72" y="185" width="427" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Execute a script or binary when an event is detected." id="bky-MW-yBn"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Execute a script or binary when an event is detected." id="bky-MW-yBn">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
@ -295,11 +295,11 @@
<rect key="frame" x="72" y="39" width="510" height="105"/> <rect key="frame" x="72" y="39" width="510" height="105"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="7Ah-kZ-gGe"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" id="7Ah-kZ-gGe">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="11" name="Menlo-Regular"/>
<string key="title">OverSight will pass in the following arguments:-device &lt;camera|microphone&gt; -event &lt;on|off&gt; -process &lt;pid&gt; -activeCount &lt;0..n&gt;Notes: <string key="title">OverSight will pass in the following arguments:-device &lt;camera|microphone&gt; -event &lt;on|off&gt; -process &lt;pid&gt; -activeCount &lt;0..n&gt;Notes:
-process is only specified on activation events. -process is only specified on activation events.
-activeCount is the number of devices still active.</string> -activeCount is the number of devices still active.</string>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
@ -327,7 +327,7 @@
</connections> </connections>
</button> </button>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YB6-Vv-lQu"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YB6-Vv-lQu">
<rect key="frame" x="72" y="224" width="169" height="15"/> <rect key="frame" x="72" y="224" width="528" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable Update Checks" id="z5b-fA-WCk"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Disable Update Checks" id="z5b-fA-WCk">
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
@ -336,16 +336,16 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="TmH-6A-xdG"> <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="471" translatesAutoresizingMaskIntoConstraints="NO" id="TmH-6A-xdG">
<rect key="frame" x="72" y="207" width="475" height="15"/> <rect key="frame" x="72" y="207" width="528" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Do not automatically check for new versions." id="JV5-cY-ff4"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Do not automatically check for new versions." id="JV5-cY-ff4">
<font key="font" size="13" name="Menlo-Regular"/> <font key="font" size="11" name="Menlo-Regular"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Mtn-pi-zIl"> <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Mtn-pi-zIl">
<rect key="frame" x="242" y="135" width="134" height="32"/> <rect key="frame" x="226" y="135" width="167" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Check Now" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2qr-2x-A3U"> <buttonCell key="cell" type="push" title="Check Now" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2qr-2x-A3U">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
@ -355,10 +355,6 @@
<action selector="check4Update:" target="-2" id="GJb-mB-UIz"/> <action selector="check4Update:" target="-2" id="GJb-mB-UIz"/>
</connections> </connections>
</button> </button>
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="o0T-ra-4H0">
<rect key="frame" x="378" y="145" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</progressIndicator>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Oe2-Ye-1s6"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Oe2-Ye-1s6">
<rect key="frame" x="118" y="60" width="383" height="74"/> <rect key="frame" x="118" y="60" width="383" height="74"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
@ -368,8 +364,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="o0T-ra-4H0">
<rect key="frame" x="394" y="144" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</progressIndicator>
</subviews> </subviews>
<point key="canvasLocation" x="673" y="436"/> <point key="canvasLocation" x="673" y="435.5"/>
</customView> </customView>
</objects> </objects>
<resources> <resources>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-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> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -22,7 +22,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="AppIcon" id="15"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="AppIcon" id="15"/>
</imageView> </imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="16" userLabel="title"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="16" userLabel="title">
<rect key="frame" x="78" y="46" width="200" height="20"/> <rect key="frame" x="78" y="46" width="200" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="OverSight up &amp; running!" id="17"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="OverSight up &amp; running!" id="17">
@ -31,16 +31,16 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="21" userLabel="details"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="21" userLabel="details">
<rect key="frame" x="78" y="18" width="161" height="20"/> <rect key="frame" x="78" y="18" width="224" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="...access it from here anytime" id="22"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Access it from here anytime" id="22">
<font key="font" metaFont="label" size="11"/> <font key="font" metaFont="label" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<button fixedFrame="YES" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="hL7-ZY-bJK"> <button tag="2" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hL7-ZY-bJK">
<rect key="frame" x="288" y="56" width="32" height="32"/> <rect key="frame" x="288" y="56" width="32" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="bevel" title="⌃" bezelStyle="rounded" alignment="center" inset="2" id="2jG-uf-4XV"> <buttonCell key="cell" type="bevel" title="⌃" bezelStyle="rounded" alignment="center" inset="2" id="2jG-uf-4XV">

View File

@ -37,4 +37,7 @@
//time stamp //time stamp
@property(nonatomic, retain)NSDate* timestamp; @property(nonatomic, retain)NSDate* timestamp;
//was shown
@property BOOL wasShown;
@end @end

View File

@ -36,4 +36,12 @@
return self; return self;
} }
//override description method
-(NSString*)description
{
//description
return [NSString stringWithFormat:@"EVENT: device: %@, device type: %d, state: %ld, timestamp: %@", self.device.localizedName, self.deviceType, (long)self.state, self.timestamp];
}
@end @end

View File

@ -320,14 +320,17 @@ bail:
//init update obj //init update obj
update = [[Update alloc] init]; update = [[Update alloc] init];
//check for update //check
// 'updateResponse newVersion:' method will be called when check is done // but after a delay for UI
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.75 * NSEC_PER_SEC), dispatch_get_main_queue(),
^{
[update checkForUpdate:^(NSUInteger result, NSString* newVersion) { [update checkForUpdate:^(NSUInteger result, NSString* newVersion) {
//process response //process response
[self updateResponse:result newVersion:newVersion]; [self updateResponse:result newVersion:newVersion];
}]; }];
});
return; return;
} }

View File

@ -226,8 +226,8 @@ bail:
self.popover.contentViewController = [[StatusBarPopoverController alloc] initWithNibName:@"StatusBarPopover" bundle:nil]; self.popover.contentViewController = [[StatusBarPopoverController alloc] initWithNibName:@"StatusBarPopover" bundle:nil];
//set behavior //set behavior
// auto-close if user clicks button in status bar // don't want it close before timeout (unless user clicks '^')
self.popover.behavior = NSPopoverBehaviorTransient; self.popover.behavior = NSPopoverBehaviorApplicationDefined;
//set delegate //set delegate
self.popover.delegate = self; self.popover.delegate = self;
@ -458,6 +458,14 @@ bail:
//status bar item controller //status bar item controller
StatusBarItem* statusBarItemController = nil; StatusBarItem* statusBarItemController = nil;
//first
// sure to close popover
if(YES == self.popover.shown)
{
//close
[self.popover performClose:nil];
}
//grab //grab
avMonitor = ((AppDelegate*)[[NSApplication sharedApplication] delegate]).avMonitor; avMonitor = ((AppDelegate*)[[NSApplication sharedApplication] delegate]).avMonitor;

View File

@ -0,0 +1,6 @@
/* Bundle name */
"CFBundleName" = "OverSight";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright (c) 2021 Objective-See. Todos los derechos reservados.";

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "Support Us!" "value" : "Support Us!"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡Apóyanos!"
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "Version:" "value" : "Version:"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Versión:"
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : "Supporters/Patrons:" "value" : "Supporters/Patrons:"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Friends/Patrons:"
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "state" : "new",
"value" : "More Info" "value" : "More Info"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Más Información"
}
} }
} }
} }

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "OverSight" "value" : "OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight"
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "Uninstall OverSight..." "value" : "Uninstall OverSight..."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Desinstalar OverSight..."
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : "Main Menu" "value" : "Main Menu"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Menú Principal"
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "state" : "new",
"value" : "Quit OverSight" "value" : "Quit OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Salir de OverSight"
}
} }
} }
}, },
@ -58,6 +82,12 @@
"state" : "new", "state" : "new",
"value" : "OverSight: enabled" "value" : "OverSight: enabled"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight: activado"
}
} }
} }
}, },
@ -70,6 +100,12 @@
"state" : "new", "state" : "new",
"value" : "Active Devices" "value" : "Active Devices"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dispositivos Activos"
}
} }
} }
}, },
@ -82,6 +118,12 @@
"state" : "new", "state" : "new",
"value" : "Allowed Items..." "value" : "Allowed Items..."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ítems Permitidos..."
}
} }
} }
}, },
@ -94,6 +136,12 @@
"state" : "new", "state" : "new",
"value" : "Allowed Items..." "value" : "Allowed Items..."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ítems Permitidos..."
}
} }
} }
}, },
@ -106,6 +154,12 @@
"state" : "new", "state" : "new",
"value" : "Disable" "value" : "Disable"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Deshabilitar"
}
} }
} }
}, },
@ -118,6 +172,12 @@
"state" : "new", "state" : "new",
"value" : "Close Window" "value" : "Close Window"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Cerrar Ventana"
}
} }
} }
}, },
@ -130,6 +190,12 @@
"state" : "new", "state" : "new",
"value" : "About OverSight" "value" : "About OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sobre OverSight"
}
} }
} }
}, },
@ -142,29 +208,47 @@
"state" : "new", "state" : "new",
"value" : "OverSight" "value" : "OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight"
}
} }
} }
}, },
"yfe-lu-f3I.title" : { "yfe-lu-f3I.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Preferences...\"; ObjectID = \"yfe-lu-f3I\";", "comment" : "Class = \"NSMenuItem\"; title = \"Settings...\"; ObjectID = \"yfe-lu-f3I\";",
"extractionState" : "extracted_with_value", "extractionState" : "extracted_with_value",
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
"state" : "new", "state" : "new",
"value" : "Preferences..." "value" : "Settings..."
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Configuración…"
} }
} }
} }
}, },
"Zao-2v-WyJ.title" : { "Zao-2v-WyJ.title" : {
"comment" : "Class = \"NSMenuItem\"; title = \"Preferences...\"; ObjectID = \"Zao-2v-WyJ\";", "comment" : "Class = \"NSMenuItem\"; title = \"Settings...\"; ObjectID = \"Zao-2v-WyJ\";",
"extractionState" : "extracted_with_value", "extractionState" : "extracted_with_value",
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
"state" : "new", "state" : "new",
"value" : "Preferences..." "value" : "Settings..."
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Configuración…"
} }
} }
} }

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "Do not show an alert when the camera/microphone is deactivated. " "value" : "Do not show an alert when the camera/microphone is deactivated. "
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "No mostrar una alerta cuando la cámara/micrófono se desactiven."
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "Check Now" "value" : "Check Now"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Verificar Ahora"
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : "No Icon Mode" "value" : "No Icon Mode"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Modo Sin Ícono"
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "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." "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."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight pasará los siguientes argumentos:\n-device <camera|microphone> -event <on|off> -process <pid> -activeCount <0..n>\n\nNotas:\n-process solo se especifica en eventos de activación.\n-activeCount es el número de dispositivos que siguen activos."
}
} }
} }
}, },
@ -58,6 +82,12 @@
"state" : "new", "state" : "new",
"value" : "Ignore External Device" "value" : "Ignore External Device"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ignorar Dispositivo Externo"
}
} }
} }
}, },
@ -70,6 +100,12 @@
"state" : "new", "state" : "new",
"value" : "Execute a script or binary when an event is detected." "value" : "Execute a script or binary when an event is detected."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ejecutar un script o un programa cuando se detecte un evento."
}
} }
} }
}, },
@ -82,6 +118,12 @@
"state" : "new", "state" : "new",
"value" : "Browse" "value" : "Browse"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Navegar"
}
} }
} }
}, },
@ -94,6 +136,12 @@
"state" : "new", "state" : "new",
"value" : "Automatically (re)start each time you login." "value" : "Automatically (re)start each time you login."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Iniciar automáticamente cada vez que inicies sesión."
}
} }
} }
}, },
@ -106,6 +154,12 @@
"state" : "new", "state" : "new",
"value" : "Action" "value" : "Action"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Acción"
}
} }
} }
}, },
@ -118,6 +172,12 @@
"state" : "new", "state" : "new",
"value" : "Action" "value" : "Action"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Acción"
}
} }
} }
}, },
@ -130,6 +190,12 @@
"state" : "new", "state" : "new",
"value" : "Disable 'Inactive' Alerts" "value" : "Disable 'Inactive' Alerts"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Desactivar Alertas de 'Inactivo'"
}
} }
} }
}, },
@ -142,6 +208,12 @@
"state" : "new", "state" : "new",
"value" : "Do not automatically check for new versions." "value" : "Do not automatically check for new versions."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "No comprobar automáticamente si hay nuevas versiones."
}
} }
} }
}, },
@ -154,6 +226,12 @@
"state" : "new", "state" : "new",
"value" : "Start at Login" "value" : "Start at Login"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Iniciar al iniciar sesión"
}
} }
} }
}, },
@ -166,6 +244,12 @@
"state" : "new", "state" : "new",
"value" : "Mode" "value" : "Mode"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Modo"
}
} }
} }
}, },
@ -178,6 +262,12 @@
"state" : "new", "state" : "new",
"value" : "Mode" "value" : "Mode"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Modo"
}
} }
} }
}, },
@ -190,6 +280,12 @@
"state" : "new", "state" : "new",
"value" : "View Allowed Items" "value" : "View Allowed Items"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ver Ítems Permitidos"
}
} }
} }
}, },
@ -202,6 +298,12 @@
"state" : "new", "state" : "new",
"value" : "Execute" "value" : "Execute"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ejecutar"
}
} }
} }
}, },
@ -214,6 +316,12 @@
"state" : "new", "state" : "new",
"value" : "Path..." "value" : "Path..."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ruta..."
}
} }
} }
}, },
@ -226,6 +334,12 @@
"state" : "new", "state" : "new",
"value" : "Update" "value" : "Update"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Actualizar"
}
} }
} }
}, },
@ -238,6 +352,12 @@
"state" : "new", "state" : "new",
"value" : "Update" "value" : "Update"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Actualizar"
}
} }
} }
}, },
@ -250,6 +370,12 @@
"state" : "new", "state" : "new",
"value" : "Run without showing an icon in the status menu bar." "value" : "Run without showing an icon in the status menu bar."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ejecutar sin mostrar un ícono en la barra de menú de estado."
}
} }
} }
}, },
@ -262,6 +388,12 @@
"state" : "new", "state" : "new",
"value" : "Do not show an alert when external devices trigger an event." "value" : "Do not show an alert when external devices trigger an event."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "No mostrar una alerta cuando los dispositivos externos desencadenen un evento."
}
} }
} }
}, },
@ -274,6 +406,12 @@
"state" : "new", "state" : "new",
"value" : "Pass Arguments" "value" : "Pass Arguments"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pasar Argumentos"
}
} }
} }
}, },
@ -286,6 +424,12 @@
"state" : "new", "state" : "new",
"value" : "Disable Update Checks" "value" : "Disable Update Checks"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Desactivar Verificación de Actualizaciones"
}
} }
} }
} }

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "Process" "value" : "Process"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Proceso"
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "file:" "value" : "file:"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "archivo:"
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : " Process" "value" : " Process"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Proceso"
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "state" : "new",
"value" : "Allowed Device" "value" : "Allowed Device"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dispositivo Permitido"
}
} }
} }
}, },
@ -58,6 +82,12 @@
"state" : "new", "state" : "new",
"value" : "action" "value" : "action"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "acción"
}
} }
} }
}, },
@ -70,6 +100,12 @@
"state" : "new", "state" : "new",
"value" : "Currently, there are no allowed items..." "value" : "Currently, there are no allowed items..."
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Actualmente, no hay ítems permitidos..."
}
} }
} }
} }

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "⌃" "value" : "⌃"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "⌃"
}
} }
} }
}, },
@ -22,17 +28,29 @@
"state" : "new", "state" : "new",
"value" : "OverSight up & running!" "value" : "OverSight up & running!"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡OverSight en funcionamiento!"
}
} }
} }
}, },
"22.title" : { "22.title" : {
"comment" : "Class = \"NSTextFieldCell\"; title = \"...access it from here anytime\"; ObjectID = \"22\";", "comment" : "Class = \"NSTextFieldCell\"; title = \"Access it from here anytime\"; ObjectID = \"22\";",
"extractionState" : "extracted_with_value", "extractionState" : "extracted_with_value",
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
"state" : "new", "state" : "new",
"value" : "...access it from here anytime" "value" : "Access it from here anytime"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Accede desde aquí en cualquier momento"
} }
} }
} }

View File

@ -0,0 +1,343 @@
{
"sourceLanguage" : "en",
"strings" : {
" Became Active!" : {
"comment" : " Became Active!",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡Se activó!"
}
}
}
},
" Became Inactive." : {
"comment" : " Became Inactive.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Se desactivó."
}
}
}
},
"%@: disabled" : {
"comment" : "%@: disabled",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@: deshabilitado"
}
}
}
},
"%@: enabled" : {
"comment" : "%@: enabled",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@: habilitado"
}
}
}
},
"a new version (%@) is available!" : {
"comment" : "a new version (%@) is available!",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡una nueva versión (%@) está disponible!"
}
}
}
},
"Active Devices:" : {
"comment" : "Active Devices:",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dispositivos Activos:"
}
}
}
},
"Allow (Always)" : {
"comment" : "Allow (Always)",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Permitir (Siempre)"
}
}
}
},
"Allow (Once)" : {
"comment" : "Allow (Once)",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Permitir (una vez)"
}
}
}
},
"Block" : {
"comment" : "Block",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Bloquear"
}
}
}
},
"Close" : {
"comment" : "Close",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Cerrar"
}
}
}
},
"Device: %@" : {
"comment" : "Device: %@",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dispositivo: %@"
}
}
}
},
"Disable" : {
"comment" : "Disable",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Deshabilitar"
}
}
}
},
"Enable" : {
"comment" : "Enable",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Habilitar"
}
}
}
},
"error: failed to load patrons :/" : {
"comment" : "error: failed to load patrons :/",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "error: no se pudieron cargar los patrons :/"
}
}
}
},
"ERROR: failed to terminate %@ (%@)" : {
"comment" : "ERROR: failed to terminate %@ (%@)",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "ERROR: failed to terminate %1$@ (%2$@)"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "ERROR: no se pudo terminar %1$@ (%2$@)"
}
}
}
},
"ERROR: OverSight is not authorized to display notifications." : {
"comment" : "ERROR: OverSight is not authorized to display notifications.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "ERROR: OverSight no está autorizado para mostrar notificaciones."
}
}
}
},
"Error: update check failed" : {
"comment" : "Error: update check failed",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Error: la verificación de actualización falló"
}
}
}
},
"Installed version (%@),\r\nis the latest." : {
"comment" : "Installed version (%@),\r\nis the latest.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "La versión instalada (%@) es la más reciente."
}
}
}
},
"No Active Devices" : {
"comment" : "No Active Devices",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "No hay Dispositivos Activos"
}
}
}
},
"Open System Preferences..." : {
"comment" : "Open System Preferences...",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Abrir Preferencias del Sistema..."
}
}
}
},
"OverSight notification mode set to %@." : {
"comment" : "OverSight notification mode set to %@.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Modo de notificación de OverSight configurado en %@."
}
}
}
},
"pid: unknown" : {
"comment" : "pid: unknown",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "pid: desconocido"
}
}
}
},
"Please authorize (style: \"Alerts\") via the Notifications pane in System Preferences." : {
"comment" : "Please authorize (style: \"Alerts\") via the Notifications pane in System Preferences.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Por favor, autoriza (estilo: \\\"Alertas\\\") a través del panel de Notificaciones en Preferencias del Sistema."
}
}
}
},
"Please change to \"Alerts\" via the Notifications pane in System Preferences." : {
"comment" : "Please change to \"Alerts\" via the Notifications pane in System Preferences.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Por favor, cambia a \\\"Alertas\\\" a través del panel de Notificaciones en Preferencias del Sistema."
}
}
}
},
"Process: %@ (%@)" : {
"comment" : "Process: %@ (%@)",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Process: %1$@ (%2$@)"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Proceso: %1$@ (%2$@)"
}
}
}
},
"system error code: %d" : {
"comment" : "system error code: %d",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "código de error del sistema: %d"
}
}
}
},
"unknown" : {
"comment" : "unknown",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "desconocido"
}
}
}
},
"Update" : {
"comment" : "Update",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Actualizar"
}
}
}
},
"Update available, but isn't supported on macOS %ld.%ld" : {
"comment" : "Update available, but isn't supported on macOS %ld.%ld",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Update available, but isn't supported on macOS %1$ld.%2$ld"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Actualización disponible, pero no es compatible con macOS %1$ld.%2$ld"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -26,6 +26,8 @@
CD8641302CA15DCD00803551 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD86412F2CA15DCD00803551 /* AboutWindow.xib */; }; CD8641302CA15DCD00803551 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD86412F2CA15DCD00803551 /* AboutWindow.xib */; };
CD8641342CA15DDA00803551 /* ConfigureWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641332CA15DDA00803551 /* ConfigureWindowController.xib */; }; CD8641342CA15DDA00803551 /* ConfigureWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641332CA15DDA00803551 /* ConfigureWindowController.xib */; };
CD8641382CA15DE200803551 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641372CA15DE200803551 /* MainMenu.xib */; }; CD8641382CA15DE200803551 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CD8641372CA15DE200803551 /* MainMenu.xib */; };
CD86417B2CA1BCD900803551 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = CD86417A2CA1BCD900803551 /* Localizable.xcstrings */; };
CD86417E2CA1BD1000803551 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CD86417C2CA1BD1000803551 /* InfoPlist.strings */; };
CD86B6EA23A5BBE7003F6BA4 /* configure.sh in Resources */ = {isa = PBXBuildFile; fileRef = CD86B6E923A5BBE7003F6BA4 /* configure.sh */; }; CD86B6EA23A5BBE7003F6BA4 /* configure.sh in Resources */ = {isa = PBXBuildFile; fileRef = CD86B6E923A5BBE7003F6BA4 /* configure.sh */; };
CDAAC241202255580032F2E6 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAAC23F202255580032F2E6 /* utilities.m */; }; CDAAC241202255580032F2E6 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAAC23F202255580032F2E6 /* utilities.m */; };
CDAAC243202257D70032F2E6 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAAC23F202255580032F2E6 /* utilities.m */; }; CDAAC243202257D70032F2E6 /* utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDAAC23F202255580032F2E6 /* utilities.m */; };
@ -99,6 +101,8 @@
CD8641352CA15DDA00803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/ConfigureWindowController.xcstrings; 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>"; }; 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>"; }; CD8641392CA15DE200803551 /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/MainMenu.xcstrings; sourceTree = "<group>"; };
CD86417A2CA1BCD900803551 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
CD86417D2CA1BD1000803551 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CD86B6E923A5BBE7003F6BA4 /* configure.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = configure.sh; path = Source/Script/configure.sh; sourceTree = SOURCE_ROOT; }; 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>"; }; 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>"; }; CDA6E632203B6B7800C78F91 /* objectiveSeeText.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = objectiveSeeText.png; path = ../../shared/images/objectiveSeeText.png; sourceTree = "<group>"; };
@ -132,6 +136,7 @@
29B97314FDCFA39411CA2CEA /* SMJobBless */ = { 29B97314FDCFA39411CA2CEA /* SMJobBless */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CD86417A2CA1BCD900803551 /* Localizable.xcstrings */,
CD17D55C201148F900F798D7 /* Script */, CD17D55C201148F900F798D7 /* Script */,
CD73DA9C20049158001FFC84 /* Shared */, CD73DA9C20049158001FFC84 /* Shared */,
4BE4904710445D49006BE471 /* Source */, 4BE4904710445D49006BE471 /* Source */,
@ -168,6 +173,7 @@
CD73DA98200490B4001FFC84 /* HelperComms.h */, CD73DA98200490B4001FFC84 /* HelperComms.h */,
CD73DA97200490B4001FFC84 /* HelperComms.m */, CD73DA97200490B4001FFC84 /* HelperComms.m */,
4BE4904C10445D49006BE471 /* Info.plist */, 4BE4904C10445D49006BE471 /* Info.plist */,
CD86417C2CA1BD1000803551 /* InfoPlist.strings */,
CD8641372CA15DE200803551 /* MainMenu.xib */, CD8641372CA15DE200803551 /* MainMenu.xib */,
CD6CAC9120A42D5000188B0A /* main.h */, CD6CAC9120A42D5000188B0A /* main.h */,
4BE4904D10445D49006BE471 /* main.m */, 4BE4904D10445D49006BE471 /* main.m */,
@ -310,10 +316,12 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
CD86B6EA23A5BBE7003F6BA4 /* configure.sh in Resources */, CD86B6EA23A5BBE7003F6BA4 /* configure.sh in Resources */,
CD86417E2CA1BD1000803551 /* InfoPlist.strings in Resources */,
CD8641382CA15DE200803551 /* MainMenu.xib in Resources */, CD8641382CA15DE200803551 /* MainMenu.xib in Resources */,
CD8641302CA15DCD00803551 /* AboutWindow.xib in Resources */, CD8641302CA15DCD00803551 /* AboutWindow.xib in Resources */,
CD2F801124465F68009C3D77 /* patrons.txt in Resources */, CD2F801124465F68009C3D77 /* patrons.txt in Resources */,
CD3307AE203567D500F10D71 /* Assets.xcassets in Resources */, CD3307AE203567D500F10D71 /* Assets.xcassets in Resources */,
CD86417B2CA1BCD900803551 /* Localizable.xcstrings in Resources */,
CD8641342CA15DDA00803551 /* ConfigureWindowController.xib in Resources */, CD8641342CA15DDA00803551 /* ConfigureWindowController.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -403,6 +411,14 @@
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
CD86417C2CA1BD1000803551 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
CD86417D2CA1BD1000803551 /* es */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */ /* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
@ -584,6 +600,7 @@
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";
RUN_CLANG_STATIC_ANALYZER = YES; RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = YES;
}; };
name = Debug; name = Debug;
}; };
@ -634,6 +651,7 @@
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";
RUN_CLANG_STATIC_ANALYZER = YES; RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = macosx; SDKROOT = macosx;
SWIFT_EMIT_LOC_STRINGS = YES;
}; };
name = Release; name = Release;
}; };

View File

@ -0,0 +1,193 @@
{
"sourceLanguage" : "en",
"strings" : {
"☑️ %@: installed!\n" : {
"comment" : "☑️ %@: installed!\n",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "☑️ %@: ¡instalado!"
}
}
}
},
"☑️ %@: uninstalled!\n" : {
"comment" : "☑️ %@: uninstalled!\n",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "☑️ %@: ¡desinstalado!"
}
}
}
},
"⚠️ Error: %@ failed" : {
"comment" : "⚠️ Error: %@ failed",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "⚠️ Error: %@ falló"
}
}
}
},
"Close" : {
"comment" : "Close",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Cerrar"
}
}
}
},
"ERROR: Insuffient Privileges." : {
"comment" : "ERROR: Insuffient Privileges.",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "ERROR: Privilegios Insuficientes."
}
}
}
},
"Exit" : {
"comment" : "Exit",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Salir"
}
}
}
},
"For more info, from the terminal run:\r\nlog show --predicate=\"subsystem='com.objective-see.oversight'\"" : {
"comment" : "For more info, from the terminal run:\r\nlog show --predicate=\"subsystem='com.objective-see.oversight'\"",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Para más información, ejecuta en la terminal:\nlog show --predicate=\"subsystem='com.objective-see.oversight'"
}
}
}
},
"install" : {
"comment" : "install",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "instalar"
}
}
}
},
"Installing..." : {
"comment" : "Installing...",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Instalando..."
}
}
}
},
"Next »" : {
"comment" : "Next »",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Siguiente »"
}
}
}
},
"OverSight can only be installed / run on accounts with administrative privileges" : {
"comment" : "OverSight can only be installed / run on accounts with administrative privileges",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight solo puede ser instalado / ejecutado en cuentas con privilegios administrativos"
}
}
}
},
"Protects your webcam & microphone!" : {
"comment" : "Protects your webcam & microphone!",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡Protege tu webcam & micrófono!"
}
}
}
},
"uninstall" : {
"comment" : "uninstall",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "desinstalar"
}
}
}
},
"Uninstalling..." : {
"comment" : "Uninstalling...",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Desinstalando..."
}
}
}
},
"Upgrade" : {
"comment" : "Upgrade",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Actualizar"
}
}
}
},
"version %@" : {
"comment" : "version %@",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "versión %@"
}
}
}
},
"Version: %@" : {
"comment" : "Version: %@",
"localizations" : {
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Versión %@"
}
}
}
}
},
"version" : "1.0"
}

View File

@ -0,0 +1,35 @@
{
"images" : [
{
"filename" : "darkMode.png",
"idiom" : "mac"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "light"
}
],
"filename" : "lightMode.png",
"idiom" : "mac"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "darkMode.png",
"idiom" : "mac"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,35 @@
{
"images" : [
{
"filename" : "darkMode.png",
"idiom" : "mac"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "light"
}
],
"filename" : "lightMode.png",
"idiom" : "mac"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "darkMode.png",
"idiom" : "mac"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"idiom" : "mac",
"filename" : "malwarebytes.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"preserves-vector-representation" : true
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"idiom" : "mac",
"filename" : "iVerify.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"preserves-vector-representation" : true
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21225" 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> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21225"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -19,7 +19,7 @@
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5"> <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/> <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<rect key="contentRect" x="196" y="240" width="486" height="301"/> <rect key="contentRect" x="196" y="240" width="486" height="301"/>
<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"> <view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="486" height="301"/> <rect key="frame" x="0.0" y="0.0" width="486" height="301"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
@ -37,7 +37,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageAlignment="left" imageScaling="proportionallyDown" image="OverSight" id="Ws8-bD-j2R"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageAlignment="left" imageScaling="proportionallyDown" image="OverSight" id="Ws8-bD-j2R"/>
</imageView> </imageView>
<button verticalHuggingPriority="750" fixedFrame="YES" tag="101" translatesAutoresizingMaskIntoConstraints="NO" id="HZZ-Es-mpy"> <button tag="101" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HZZ-Es-mpy">
<rect key="frame" x="344" y="13" width="128" height="32"/> <rect key="frame" x="344" y="13" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <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"> <buttonCell key="cell" type="push" title="More Info" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="J9x-sM-h9S">
@ -48,7 +48,7 @@
<action selector="buttonHandler:" target="-2" id="Cgx-f4-Thr"/> <action selector="buttonHandler:" target="-2" id="Cgx-f4-Thr"/>
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" fixedFrame="YES" tag="100" translatesAutoresizingMaskIntoConstraints="NO" id="xnd-Gw-0o8"> <button tag="100" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xnd-Gw-0o8">
<rect key="frame" x="201" y="13" width="128" height="32"/> <rect key="frame" x="201" y="13" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <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"> <buttonCell key="cell" type="push" title="Support Us!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6g3-Pg-x3P">
@ -95,7 +95,7 @@
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</scroller> </scroller>
</scrollView> </scrollView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fZJ-sG-ZuJ"> <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"/> <rect key="frame" x="20" y="166" width="153" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Supporters/Patrons:" id="fJg-qw-wDf"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Supporters/Patrons:" id="fJg-qw-wDf">
@ -104,7 +104,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OSm-xS-Dmd"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OSm-xS-Dmd">
<rect key="frame" x="129" y="206" width="182" height="19"/> <rect key="frame" x="129" y="206" width="182" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Version:" id="bBK-v0-ypq"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Version:" id="bBK-v0-ypq">

View File

@ -120,18 +120,25 @@
<rect key="frame" x="0.0" y="0.0" width="812" height="48"/> <rect key="frame" x="0.0" y="0.0" width="812" height="48"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button tag="3" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8I9-ag-g5s"> <button tag="3" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8I9-ag-g5s">
<rect key="frame" x="718" y="7" width="81" height="32"/> <rect key="frame" x="679" y="7" width="120" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Next »" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="DHG-bQ-JvA"> <buttonCell key="cell" type="push" title="Next »" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="DHG-bQ-JvA">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
</buttonCell> </buttonCell>
<constraints>
<constraint firstAttribute="height" constant="20" id="F47-Ks-7EZ"/>
<constraint firstAttribute="width" constant="106" id="R5D-Yl-fOc"/>
</constraints>
<connections> <connections>
<action selector="configureButtonHandler:" target="-2" id="6Tl-Ce-fBS"/> <action selector="configureButtonHandler:" target="-2" id="6Tl-Ce-fBS"/>
</connections> </connections>
</button> </button>
</subviews> </subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="8I9-ag-g5s" secondAttribute="bottom" constant="14" id="NUa-LA-HAl"/>
<constraint firstAttribute="trailing" secondItem="8I9-ag-g5s" secondAttribute="trailing" constant="20" symbolic="YES" id="rsT-T9-ZCA"/>
</constraints>
</view> </view>
<color key="fillColor" red="0.52700018810000004" green="0.69087679930000001" blue="0.21211786799999999" alpha="0.99595620600000001" colorSpace="custom" customColorSpace="sRGB"/> <color key="fillColor" red="0.52700018810000004" green="0.69087679930000001" blue="0.21211786799999999" alpha="0.99595620600000001" colorSpace="custom" customColorSpace="sRGB"/>
</box> </box>
@ -163,18 +170,25 @@
<rect key="frame" x="0.0" y="0.0" width="812" height="48"/> <rect key="frame" x="0.0" y="0.0" width="812" height="48"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button tag="4" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2V7-Bx-gVi"> <button tag="4" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2V7-Bx-gVi">
<rect key="frame" x="718" y="7" width="81" height="32"/> <rect key="frame" x="672" y="7" width="134" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Next »" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="0wd-cy-xEw"> <buttonCell key="cell" type="push" title="Next »" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="0wd-cy-xEw">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Menlo-Bold"/> <font key="font" size="13" name="Menlo-Bold"/>
</buttonCell> </buttonCell>
<constraints>
<constraint firstAttribute="height" constant="20" id="0xV-JP-mPJ"/>
<constraint firstAttribute="width" constant="120" id="liO-Kn-S9L"/>
</constraints>
<connections> <connections>
<action selector="configureButtonHandler:" target="-2" id="qnn-kG-aKi"/> <action selector="configureButtonHandler:" target="-2" id="qnn-kG-aKi"/>
</connections> </connections>
</button> </button>
</subviews> </subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="2V7-Bx-gVi" secondAttribute="trailing" constant="13" id="3jd-h7-KSx"/>
<constraint firstAttribute="bottom" secondItem="2V7-Bx-gVi" secondAttribute="bottom" constant="14" id="8h9-rI-ecv"/>
</constraints>
</view> </view>
<color key="fillColor" red="0.52700018810000004" green="0.69087679930000001" blue="0.21211786799999999" alpha="0.99595620600000001" colorSpace="custom" customColorSpace="sRGB"/> <color key="fillColor" red="0.52700018810000004" green="0.69087679930000001" blue="0.21211786799999999" alpha="0.99595620600000001" colorSpace="custom" customColorSpace="sRGB"/>
</box> </box>
@ -255,17 +269,8 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="660" translatesAutoresizingMaskIntoConstraints="NO" id="mL7-9q-jrx">
<rect key="frame" x="520" y="219" width="274" height="57"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Show some love? " id="Hvk-zS-1VC">
<font key="font" size="40" name="AvenirNextCondensed-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" alphaValue="0.59999999999999998" id="MWL-4T-Xv3"> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" alphaValue="0.59999999999999998" id="MWL-4T-Xv3">
<rect key="frame" x="306" y="122" width="203" height="29"/> <rect key="frame" x="244" y="126" width="324" height="29"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Mahalo to the &quot;Friends Objective-See&quot;" id="OYn-6J-Cfb"> <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Mahalo to the &quot;Friends Objective-See&quot;" id="OYn-6J-Cfb">
<font key="font" size="15" name="AvenirNextCondensed-Regular"/> <font key="font" size="15" name="AvenirNextCondensed-Regular"/>
@ -273,48 +278,69 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="86r-q1-8zB"> <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="660" translatesAutoresizingMaskIntoConstraints="NO" id="mL7-9q-jrx">
<rect key="frame" x="20" y="69" width="77" height="23"/> <rect key="frame" x="430" y="211" width="357" height="57"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsJamf" id="pbJ-5m-jHq"/> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Show some love? " id="Hvk-zS-1VC">
<font key="font" size="40" name="AvenirNextCondensed-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" id="BmY-hr-sOX">
<rect key="frame" x="10" y="53" width="77" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsJamf" id="d2a-JT-BQS"/>
</imageView> </imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="vet-MN-3Ad"> <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="Pn8-1Y-qTv">
<rect key="frame" x="703" y="67" width="84" height="28"/> <rect key="frame" x="220" y="49" width="138" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsKolide" id="ArD-gl-wjh"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsMacPaw" id="ZjN-wt-ht1"/>
</imageView> </imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="7HT-gV-yPa"> <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="Bbi-MA-hNE">
<rect key="frame" x="126" y="65" width="138" height="31"/> <rect key="frame" x="91" y="52" width="119" height="24"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsMacPaw" id="How-yq-spI"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsPANW" id="3eA-ny-z2T"/>
</imageView> </imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="FVF-37-HVW"> <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="TCT-Oc-Qe2">
<rect key="frame" x="554" y="68" width="119" height="24"/> <rect key="frame" x="491" y="52" width="122" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsPANW" id="VLA-rl-5Tm"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsHuntress" id="2aO-vk-Uk9"/>
</imageView> </imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="W5o-uI-7Ie"> <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="HlD-KA-f3H">
<rect key="frame" x="303" y="65" width="84" height="31"/> <rect key="frame" x="746" y="55" width="57" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsKandji" id="utL-Oi-omi"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsiVerify" id="I4T-3Z-ClS"/>
</imageView> </imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.69999999999999996" id="qeo-at-ZIE"> <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="RoF-KP-j9w">
<rect key="frame" x="432" y="68" width="92" height="26"/> <rect key="frame" x="368" y="89" width="96" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FriendsMosyle" id="4eU-Rk-ODg"/> <imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsKandji" id="3FW-9B-v0b"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="hGU-DC-Z60">
<rect key="frame" x="611" y="42" width="128" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="FriendsMalwarebytes" id="j5T-la-Pvx"/>
</imageView>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" alphaValue="0.80000000000000004" id="RAI-89-KVV">
<rect key="frame" x="369" y="53" width="119" height="24"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="Friends1Password" id="enQ-mJ-Juf"/>
</imageView> </imageView>
</subviews> </subviews>
<point key="canvasLocation" x="686" y="1393"/> <point key="canvasLocation" x="1174" y="1122"/>
</customView> </customView>
</objects> </objects>
<resources> <resources>
<image name="DoNotDisturb" width="1430" height="510"/> <image name="DoNotDisturb" width="1430" height="510"/>
<image name="Friends1Password" width="272" height="52"/>
<image name="FriendsHuntress" width="800" height="198"/>
<image name="FriendsJamf" width="328" height="114"/> <image name="FriendsJamf" width="328" height="114"/>
<image name="FriendsKandji" width="1944" height="494"/> <image name="FriendsKandji" width="1944" height="494"/>
<image name="FriendsKolide" width="636" height="216"/> <image name="FriendsMacPaw" width="145" height="20"/>
<image name="FriendsMacPaw" width="2034" height="335"/> <image name="FriendsMalwarebytes" width="2500" height="403"/>
<image name="FriendsMosyle" width="240" height="60"/>
<image name="FriendsPANW" width="1312" height="240"/> <image name="FriendsPANW" width="1312" height="240"/>
<image name="FriendsiVerify" width="500" height="180"/>
<image name="Icon" width="512" height="512"/> <image name="Icon" width="512" height="512"/>
<image name="Love" width="256" height="256"/> <image name="Love" width="256" height="256"/>
<image name="Notifications" width="1430" height="607"/> <image name="Notifications" width="1430" height="607"/>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21225" 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> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21225"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23094"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/> <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/>

View File

@ -75,7 +75,7 @@ extern os_log_t logHandle;
[self window].title = [NSString stringWithFormat:NSLocalizedString(@"version %@", @"version %@"), getAppVersion()]; [self window].title = [NSString stringWithFormat:NSLocalizedString(@"version %@", @"version %@"), getAppVersion()];
//init status msg //init status msg
[self.statusMsg setStringValue:NSLocalizedString(@"...protects your webcam & microphone!", @"...protects your webcam & microphone!")]; [self.statusMsg setStringValue:NSLocalizedString(@"Protects your webcam & microphone!", @"Protects your webcam & microphone!")];
//uninstall via app? //uninstall via app?
// just enable uinstall button // just enable uinstall button
@ -106,7 +106,7 @@ extern os_log_t logHandle;
self.uninstallButton.enabled = YES; self.uninstallButton.enabled = YES;
//set to 'upgrade' //set to 'upgrade'
self.installButton.title = ACTION_UPGRADE; self.installButton.title = NSLocalizedString(@"Upgrade", @"Upgrade");
} }
//otherwise disable //otherwise disable
@ -540,7 +540,7 @@ extern os_log_t logHandle;
(ACTION_INSTALL_FLAG == event) ) (ACTION_INSTALL_FLAG == event) )
{ {
//next //next
self.installButton.title = ACTION_NEXT; self.installButton.title = NSLocalizedString(@"Next »", @"Next »");
//set tag //set tag
self.installButton.tag = ACTION_SHOW_NOTIFICATION_VIEW; self.installButton.tag = ACTION_SHOW_NOTIFICATION_VIEW;
@ -550,7 +550,7 @@ extern os_log_t logHandle;
else else
{ {
//close //close
self.installButton.title = ACTION_CLOSE; self.installButton.title = NSLocalizedString(@"Close", @"Close");
//update it's tag //update it's tag
// will allow button handler method process // will allow button handler method process

View File

@ -0,0 +1,3 @@
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright (c) 2020 Objective-See. Todos los derechos reservados. ";

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "Support Us!" "value" : "Support Us!"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡Apóyanos!"
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "Version:" "value" : "Version:"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Versión:"
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : "Supporters/Patrons:" "value" : "Supporters/Patrons:"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Friends/Patrons:"
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "state" : "new",
"value" : "More Info" "value" : "More Info"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Más Información"
}
} }
} }
} }

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "Next »" "value" : "Next »"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Siguiente »"
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "Install" "value" : "Install"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Instalar"
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : "If prompted, please allow OverSight to show notifications, setting the style to \"Alerts\"" "value" : "If prompted, please allow OverSight to show notifications, setting the style to \"Alerts\""
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Si solicitado, permite que OverSight muestre notificaciones, configurando el estilo en \"Alertas\""
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "state" : "new",
"value" : "Next »" "value" : "Next »"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Siguiente »"
}
} }
} }
}, },
@ -58,6 +82,12 @@
"state" : "new", "state" : "new",
"value" : "Yes!" "value" : "Yes!"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¡Sí!"
}
} }
} }
}, },
@ -70,6 +100,12 @@
"state" : "new", "state" : "new",
"value" : "Uninstall" "value" : "Uninstall"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Desinstalar"
}
} }
} }
}, },
@ -82,6 +118,12 @@
"state" : "new", "state" : "new",
"value" : "Support OverSight?" "value" : "Support OverSight?"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¿Apoyas OverSight?"
}
} }
} }
}, },
@ -94,6 +136,12 @@
"state" : "new", "state" : "new",
"value" : "Show some love? " "value" : "Show some love? "
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "¿Nos das tu apoyo?"
}
} }
} }
}, },
@ -106,6 +154,12 @@
"state" : "new", "state" : "new",
"value" : "No" "value" : "No"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "No"
}
} }
} }
}, },
@ -118,6 +172,12 @@
"state" : "new", "state" : "new",
"value" : "Mahalo to the \"Friends Objective-See\"" "value" : "Mahalo to the \"Friends Objective-See\""
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mahalo a los \"Friends de Objective-See\""
}
} }
} }
}, },
@ -130,6 +190,12 @@
"state" : "new", "state" : "new",
"value" : "It's free, open-source, and written by a single (mac-loving) coder!" "value" : "It's free, open-source, and written by a single (mac-loving) coder!"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sin cargo, open-source y desarrollado por un único programador (amante de Mac)! "
}
} }
} }
}, },
@ -142,6 +208,12 @@
"state" : "new", "state" : "new",
"value" : "If \"Do Not Disturb\" mode is activated, OverSight's alerts won't be shown" "value" : "If \"Do Not Disturb\" mode is activated, OverSight's alerts won't be shown"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Si el modo \"No Molestar\" está activado, las alertas de OverSight no se mostrarán"
}
} }
} }
} }

View File

@ -10,6 +10,12 @@
"state" : "new", "state" : "new",
"value" : "About OverSight" "value" : "About OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Acerca de OverSight"
}
} }
} }
}, },
@ -22,6 +28,12 @@
"state" : "new", "state" : "new",
"value" : "OverSight" "value" : "OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight"
}
} }
} }
}, },
@ -34,6 +46,12 @@
"state" : "new", "state" : "new",
"value" : "Main Menu" "value" : "Main Menu"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Menú Principal"
}
} }
} }
}, },
@ -46,6 +64,12 @@
"state" : "new", "state" : "new",
"value" : "OverSight" "value" : "OverSight"
} }
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "OverSight"
}
} }
} }
} }

View File

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