diff --git a/clientscr/Mac_Saver_ModuleView.m b/clientscr/Mac_Saver_ModuleView.m
index 437fdd2e8a..2cf7fe6383 100644
--- a/clientscr/Mac_Saver_ModuleView.m
+++ b/clientscr/Mac_Saver_ModuleView.m
@@ -201,7 +201,13 @@ void launchedGfxApp(char * appPath, pid_t thePID, int slot) {
@implementation BOINC_Saver_ModuleView
+// If there are multiple displays, this may get called
+// multiple times (once for each display), so we need to guard
+// against any problems that may cause.
- (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview {
+ NSBundle * myBundle;
+ int period;
+
self = [ super initWithFrame:frame isPreview:isPreview ];
gIsHighSierra = (compareOSVersionTo(10, 13) >= 0);
@@ -245,33 +251,14 @@ void launchedGfxApp(char * appPath, pid_t thePID, int slot) {
DPI_multiplier = [((NSScreen*)allScreens[0]) backingScaleFactor];
}
}
- return self;
-}
-
-// If there are multiple displays, this may get called
-// multiple times (once for each display), so we need to guard
-// against any problems that may cause.
-- (void)startAnimation {
- NSBundle * myBundle;
- int newFrequency;
- int period;
-
- gEventHandle = NXOpenEventStatus();
-
- mainThreadID = pthread_self();
-
- // Under OS 10.14 Mojave, [super drawRect:] is slow but not needed if we do this:
- [[self window] setBackgroundColor:[NSColor blackColor]];
initBOINCSaver();
- if (gBOINC_Logo == NULL) {
- if (self) {
+ if (self) {
+ if (mBundleID == NULL) {
myBundle = [ NSBundle bundleForClass:[self class]];
// grab the screensaver defaults
- if (mBundleID == NULL) {
- mBundleID = [ myBundle bundleIdentifier ];
- }
+ mBundleID = [ myBundle bundleIdentifier ];
// Path to our copy of switcher utility application in this screensaver bundle
if (gPathToBundleResources == NULL) {
@@ -318,34 +305,6 @@ void launchedGfxApp(char * appPath, pid_t thePID, int slot) {
setGGFXChangePeriod((double)(period * 60));
[ self setAutoresizesSubviews:YES ]; // make sure the subview resizes.
-
- NSString *fileName = [[ NSBundle bundleForClass:[ self class ]] pathForImageResource:@"boinc_ss_logo" ];
- if (! fileName) {
- // What should we do in this case?
- return;
- }
-
- gBOINC_Logo = [[ NSImage alloc ] initWithContentsOfFile:fileName ];
- gMovingRect.origin.x = 0.0;
- gMovingRect.origin.y = 0.0;
- gMovingRect.size = [gBOINC_Logo size];
-
- if (gMovingRect.size.width < TEXTBOXMINWIDTH) {
- gImageXIndent = (TEXTBOXMINWIDTH - gMovingRect.size.width) / 2;
- gMovingRect.size.width = TEXTBOXMINWIDTH;
- } else {
- gImageXIndent = 0.0;
- }
- gTextBoxHeight = MINTEXTBOXHEIGHT;
- gMovingRect.size.height += gTextBoxHeight;
- gCurrentPosition.x = SAFETYBORDER + 1;
- gCurrentPosition.y = SAFETYBORDER + 1 + gTextBoxHeight;
- gCurrentDelta.x = 1.0;
- gCurrentDelta.y = 1.0;
-
- gActualTextBoxHeight = MINTEXTBOXHEIGHT;
-
- [ self setAnimationTimeInterval:1/8.0 ];
}
}
@@ -353,6 +312,52 @@ void launchedGfxApp(char * appPath, pid_t thePID, int slot) {
if (gPathToBundleResources == NULL) {
gPathToBundleResources = [ myBundle resourcePath ];
}
+
+ return self;
+}
+
+// If there are multiple displays, this may get called
+// multiple times (once for each display), so we need to guard
+// against any problems that may cause.
+- (void)startAnimation {
+ int newFrequency;
+
+ gEventHandle = NXOpenEventStatus();
+
+ mainThreadID = pthread_self();
+
+ // Under OS 10.14 Mojave, [super drawRect:] is slow but not needed if we do this:
+ [[self window] setBackgroundColor:[NSColor blackColor]];
+
+ if (gBOINC_Logo == NULL) {
+ NSString *fileName = [[ NSBundle bundleForClass:[ self class ]] pathForImageResource:@"boinc_ss_logo" ];
+ if (! fileName) {
+ // What should we do in this case?
+ return;
+ }
+
+ gBOINC_Logo = [[ NSImage alloc ] initWithContentsOfFile:fileName ];
+ gMovingRect.origin.x = 0.0;
+ gMovingRect.origin.y = 0.0;
+ gMovingRect.size = [gBOINC_Logo size];
+
+ if (gMovingRect.size.width < TEXTBOXMINWIDTH) {
+ gImageXIndent = (TEXTBOXMINWIDTH - gMovingRect.size.width) / 2;
+ gMovingRect.size.width = TEXTBOXMINWIDTH;
+ } else {
+ gImageXIndent = 0.0;
+ }
+ gTextBoxHeight = MINTEXTBOXHEIGHT;
+ gMovingRect.size.height += gTextBoxHeight;
+ gCurrentPosition.x = SAFETYBORDER + 1;
+ gCurrentPosition.y = SAFETYBORDER + 1 + gTextBoxHeight;
+ gCurrentDelta.x = 1.0;
+ gCurrentDelta.y = 1.0;
+
+ gActualTextBoxHeight = MINTEXTBOXHEIGHT;
+
+ [ self setAnimationTimeInterval:1/8.0 ];
+ }
[ super startAnimation ];
diff --git a/clientscr/res/BOINCSaver.nib/classes.nib b/clientscr/res/BOINCSaver.nib/classes.nib
deleted file mode 100644
index fe7115e502..0000000000
--- a/clientscr/res/BOINCSaver.nib/classes.nib
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {closeSheetCancel = id; closeSheetSave = id; };
- CLASS = "BOINC_Saver_ModuleView";
- LANGUAGE = ObjC;
- OUTLETS = {
- mBlankingTimeTextField = NSTextField;
- mConfigureSheet = id;
- mGoToBlankCheckbox = NSButton;
- };
- SUPERCLASS = ScreenSaverView;
- },
- {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
- {
- ACTIONS = {closeSheetCancel = id; closeSheetSave = id; };
- CLASS = NSButton;
- LANGUAGE = ObjC;
- SUPERCLASS = NSControl;
- },
- {CLASS = ScreenSaverView; LANGUAGE = ObjC; SUPERCLASS = NSView; }
- );
- IBVersion = 1;
-}
\ No newline at end of file
diff --git a/clientscr/res/BOINCSaver.nib/designable.nib b/clientscr/res/BOINCSaver.nib/designable.nib
deleted file mode 100644
index be46ef7a59..0000000000
--- a/clientscr/res/BOINCSaver.nib/designable.nib
+++ /dev/null
@@ -1,1315 +0,0 @@
-
-
-
- 1060
- 10C540
- 740
- 1038.25
- 458.00
-
-
-
-
-
- YES
-
- BOINC_Saver_ModuleView
-
-
- FirstResponder
-
-
- NSApplication
-
-
- 1
- 2
- {{370, 478}, {442, 246}}
- 1886912512
- Configure BOINCSaver
- NSPanel
-
- View
-
- {1.79769e+308, 1.79769e+308}
- {213, 107}
-
-
- 256
-
- YES
-
-
- 256
- {{255, 12}, {78, 32}}
-
- 2
- YES
-
- 67239424
- 134217728
- Cancel
-
- LucidaGrande
- 13
- 1044
-
-
- -2038284033
- 1
-
-
-
-
-
- 200
- 25
-
-
-
-
- 256
- {{350, 12}, {78, 32}}
-
- 2
- YES
-
- 67239424
- 134217728
- Save
-
-
- -2038284033
- 1
-
-
-
-
-
- 200
- 25
-
-
-
-
- 256
- {{203, 202}, {144, 18}}
-
- 2
- YES
-
- 67239424
- 0
- Go to blank screen
-
-
- 1211912703
- 2
-
- NSSwitch
-
-
-
- 200
- 25
-
-
-
-
- 256
- {{325, 159}, {33, 22}}
-
- 2
- YES
-
- -1804468671
- -2143288320
- 15
-
-
- YES
-
- 6
- System
- textBackgroundColor
-
- 3
- MQA
-
-
-
- 6
- System
- textColor
-
- 3
- MAA
-
-
-
-
-
-
- 256
- {{325, 134}, {33, 22}}
-
- 2
- YES
-
- -1804468671
- 4195328
-
-
-
- YES
-
-
-
-
-
-
- 256
- {{325, 109}, {33, 22}}
-
- 2
- YES
-
- -1804468671
- -2143288320
- 15
-
-
- YES
-
-
-
-
-
-
- 256
- {{325, 81}, {33, 22}}
-
- 2
- YES
-
- -1804468671
- -2143288320
- 15
-
-
- YES
-
-
-
-
-
-
- 256
- {{171, 161}, {154, 17}}
-
- 2
- YES
-
- 604110336
- 4194304
- Blank screensaver after
-
-
-
- 6
- System
- controlColor
-
- 3
- MC42NjY2NjY2NjY3AA
-
-
-
- 6
- System
- controlTextColor
-
-
-
-
-
-
- 256
- {{132, 119}, {193, 34}}
-
- 2
- YES
-
- 604110336
- 4194304
- Run overview screensaver for
-
-
-
-
-
-
-
-
- 256
- {{363, 136}, {61, 17}}
-
- 2
- YES
-
- 604110336
- 4194304
- minutes
-
-
-
-
-
-
-
-
- 256
- {{363, 161}, {61, 17}}
-
- 2
- YES
-
- 604110336
- 4194304
- minutes
-
-
-
-
-
-
-
-
- 256
- {{363, 111}, {61, 17}}
-
- 2
- YES
-
- 604110336
- 4194304
- minutes
-
-
-
-
-
-
-
-
- 256
- {{363, 86}, {61, 17}}
-
- 2
- YES
-
- 604110336
- 4194304
- minutes
-
-
-
-
-
-
-
-
- 256
- {{137, 109}, {188, 19}}
-
- 2
- YES
-
- 604110336
- 4194304
- Run project screensavers for
-
-
-
-
-
-
-
-
- 256
- {{49, 81}, {277, 22}}
-
- 2
- YES
-
- 604110336
- 4194304
- Switch between project screensavers every
-
-
-
-
-
-
-
-
- 256
- {{295, 61}, {126, 17}}
-
- 2
- YES
-
- 604110336
- 4194304
- Note: zero = never
-
-
-
-
-
-
-
- {442, 246}
-
- 2
-
- {{0, 0}, {1024, 746}}
- {213, 129}
- {1.79769e+308, 1.79769e+308}
-
-
-
-
- YES
-
-
- closeSheetCancel:
-
-
-
- 14
-
-
-
- closeSheetSave:
-
-
-
- 15
-
-
-
- mBlankingTimeTextField
-
-
-
- 16
-
-
-
- mConfigureSheet
-
-
-
- 17
-
-
-
- mGoToBlankCheckbox
-
-
-
- 18
-
-
-
- mDefaultPeriodTextField
-
-
-
- 47
-
-
-
- mSciencePeriodTextField
-
-
-
- 48
-
-
-
- mChangePeriodTextField
-
-
-
- 49
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- -2
-
-
- File's Owner
-
-
- -1
-
-
- First Responder
-
-
- 7
-
-
- YES
-
-
-
- Panel
-
-
- 8
-
-
- YES
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 9
-
-
- YES
-
-
-
-
-
- 10
-
-
- YES
-
-
-
-
-
- 11
-
-
- YES
-
-
-
-
-
- 12
-
-
- YES
-
-
-
-
-
- 13
-
-
- YES
-
-
-
-
-
- 20
-
-
-
-
- 21
-
-
-
-
- 22
-
-
-
-
- 23
-
-
- YES
-
-
-
-
- 24
-
-
-
-
- -3
-
-
- Application
-
-
- 27
-
-
- YES
-
-
-
-
-
- 28
-
-
-
-
- 29
-
-
- YES
-
-
-
-
-
- 30
-
-
-
-
- 31
-
-
- YES
-
-
-
-
-
- 32
-
-
-
-
- 33
-
-
- YES
-
-
-
-
-
- 34
-
-
- YES
-
-
-
-
- 35
-
-
- YES
-
-
-
-
-
- 36
-
-
- YES
-
-
-
-
- 37
-
-
- YES
-
-
-
-
-
- 38
-
-
- YES
-
-
-
-
- 39
-
-
- YES
-
-
-
-
-
- 40
-
-
-
-
- 41
-
-
- YES
-
-
-
-
-
- 42
-
-
-
-
- 43
-
-
- YES
-
-
-
-
-
- 44
-
-
-
-
- 45
-
-
- YES
-
-
-
-
-
- 46
-
-
-
-
- 54
-
-
- YES
-
-
-
-
-
- 55
-
-
-
-
-
-
- YES
-
- YES
- -3.IBPluginDependency
- 10.IBPluginDependency
- 10.ImportedFromIB2
- 11.IBPluginDependency
- 11.ImportedFromIB2
- 12.IBPluginDependency
- 12.ImportedFromIB2
- 13.IBPluginDependency
- 13.ImportedFromIB2
- 20.IBPluginDependency
- 21.IBPluginDependency
- 22.IBPluginDependency
- 23.IBPluginDependency
- 24.IBPluginDependency
- 27.IBPluginDependency
- 27.ImportedFromIB2
- 28.IBPluginDependency
- 29.IBPluginDependency
- 29.ImportedFromIB2
- 30.IBPluginDependency
- 31.IBPluginDependency
- 31.ImportedFromIB2
- 32.IBPluginDependency
- 33.IBPluginDependency
- 33.ImportedFromIB2
- 34.IBPluginDependency
- 35.IBPluginDependency
- 35.ImportedFromIB2
- 36.IBPluginDependency
- 37.IBPluginDependency
- 37.ImportedFromIB2
- 38.IBPluginDependency
- 39.IBPluginDependency
- 39.ImportedFromIB2
- 40.IBPluginDependency
- 41.IBPluginDependency
- 41.ImportedFromIB2
- 42.IBPluginDependency
- 43.IBPluginDependency
- 43.ImportedFromIB2
- 44.IBPluginDependency
- 45.IBPluginDependency
- 45.ImportedFromIB2
- 46.IBPluginDependency
- 54.IBPluginDependency
- 54.ImportedFromIB2
- 55.IBPluginDependency
- 7.IBEditorWindowLastContentRect
- 7.IBPluginDependency
- 7.IBWindowTemplateEditedContentRect
- 7.ImportedFromIB2
- 7.windowTemplate.hasMinSize
- 7.windowTemplate.minSize
- 8.IBPluginDependency
- 8.ImportedFromIB2
- 9.IBPluginDependency
- 9.ImportedFromIB2
-
-
- YES
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- {{226, 725}, {442, 246}}
- com.apple.InterfaceBuilder.CocoaPlugin
- {{226, 725}, {442, 246}}
-
-
- {213, 107}
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- YES
-
-
- YES
-
-
-
-
- YES
-
-
- YES
-
-
-
- 55
-
-
-
- YES
-
- BOINC_Saver_ModuleView
- ScreenSaverView
-
- YES
-
- YES
- closeSheetCancel:
- closeSheetSave:
-
-
- YES
- id
- id
-
-
-
- YES
-
- YES
- mBlankingTimeTextField
- mChangePeriodTextField
- mConfigureSheet
- mDefaultPeriodTextField
- mGoToBlankCheckbox
- mSciencePeriodTextField
-
-
- YES
- NSTextField
- NSTextField
- id
- NSTextField
- NSButton
- NSTextField
-
-
-
- IBProjectSource
- ../clientscr/Mac_Saver_ModuleView.h
-
-
-
- BOINC_Saver_ModuleView
- ScreenSaverView
-
- IBUserSource
-
-
-
-
- FirstResponder
- NSObject
-
- IBUserSource
-
-
-
-
- NSButton
- NSControl
-
- YES
-
- YES
- closeSheetCancel:
- closeSheetSave:
-
-
- YES
- id
- id
-
-
-
- IBUserSource
-
-
-
-
- ScreenSaverView
- NSView
-
- IBUserSource
-
-
-
-
-
- YES
-
- NSActionCell
- NSCell
-
- IBFrameworkSource
- AppKit.framework/Headers/NSActionCell.h
-
-
-
- NSApplication
- NSResponder
-
- IBFrameworkSource
- AppKit.framework/Headers/NSApplication.h
-
-
-
- NSApplication
-
- IBFrameworkSource
- AppKit.framework/Headers/NSApplicationScripting.h
-
-
-
- NSApplication
-
- IBFrameworkSource
- AppKit.framework/Headers/NSColorPanel.h
-
-
-
- NSApplication
-
- IBFrameworkSource
- AppKit.framework/Headers/NSHelpManager.h
-
-
-
- NSApplication
-
- IBFrameworkSource
- AppKit.framework/Headers/NSPageLayout.h
-
-
-
- NSApplication
-
- IBFrameworkSource
- AppKit.framework/Headers/NSUserInterfaceItemSearching.h
-
-
-
- NSButton
- NSControl
-
- IBFrameworkSource
- AppKit.framework/Headers/NSButton.h
-
-
-
- NSButtonCell
- NSActionCell
-
- IBFrameworkSource
- AppKit.framework/Headers/NSButtonCell.h
-
-
-
- NSCell
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSCell.h
-
-
-
- NSControl
- NSView
-
- IBFrameworkSource
- AppKit.framework/Headers/NSControl.h
-
-
-
- NSMenu
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSMenu.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSAccessibility.h
-
-
-
- NSObject
-
-
-
- NSObject
-
-
-
- NSObject
-
-
-
- NSObject
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSDictionaryController.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSDragging.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSFontManager.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSFontPanel.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSKeyValueBinding.h
-
-
-
- NSObject
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSNibLoading.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSOutlineView.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSPasteboard.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSSavePanel.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSTableView.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSToolbarItem.h
-
-
-
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSView.h
-
-
-
- NSPanel
- NSWindow
-
- IBFrameworkSource
- AppKit.framework/Headers/NSPanel.h
-
-
-
- NSResponder
-
- IBFrameworkSource
- AppKit.framework/Headers/NSInterfaceStyle.h
-
-
-
- NSResponder
- NSObject
-
- IBFrameworkSource
- AppKit.framework/Headers/NSResponder.h
-
-
-
- NSTextField
- NSControl
-
- IBFrameworkSource
- AppKit.framework/Headers/NSTextField.h
-
-
-
- NSTextFieldCell
- NSActionCell
-
- IBFrameworkSource
- AppKit.framework/Headers/NSTextFieldCell.h
-
-
-
- NSView
-
- IBFrameworkSource
- AppKit.framework/Headers/NSClipView.h
-
-
-
- NSView
-
- IBFrameworkSource
- AppKit.framework/Headers/NSMenuItem.h
-
-
-
- NSView
-
- IBFrameworkSource
- AppKit.framework/Headers/NSRulerView.h
-
-
-
- NSView
- NSResponder
-
-
-
- NSWindow
-
- IBFrameworkSource
- AppKit.framework/Headers/NSDrawer.h
-
-
-
- NSWindow
- NSResponder
-
- IBFrameworkSource
- AppKit.framework/Headers/NSWindow.h
-
-
-
- NSWindow
-
- IBFrameworkSource
- AppKit.framework/Headers/NSWindowScripting.h
-
-
-
- ScreenSaverView
- NSView
-
- IBFrameworkSource
- ScreenSaver.framework/Headers/ScreenSaverView.h
-
-
-
-
- 0
-
- com.apple.InterfaceBuilder.CocoaPlugin.macosx
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin.macosx
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3
-
-
- YES
- ../../mac_build/boinc.xcodeproj
- 3
-
-
diff --git a/clientscr/res/BOINCSaver.nib/info.nib b/clientscr/res/BOINCSaver.nib/info.nib
deleted file mode 100644
index 9aa48c6c31..0000000000
--- a/clientscr/res/BOINCSaver.nib/info.nib
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- IBDocumentLocation
- 104 64 503 301 0 0 1024 746
- IBFramework Version
- 364.0
- IBOpenObjects
-
- 7
-
- IBSystem Version
- 7W98
-
-
diff --git a/clientscr/res/BOINCSaver.nib/keyedobjects.nib b/clientscr/res/BOINCSaver.nib/keyedobjects.nib
deleted file mode 100644
index c8c7459f57..0000000000
Binary files a/clientscr/res/BOINCSaver.nib/keyedobjects.nib and /dev/null differ
diff --git a/clientscr/res/BOINCSaver.xib b/clientscr/res/BOINCSaver.xib
new file mode 100644
index 0000000000..5286b9392f
--- /dev/null
+++ b/clientscr/res/BOINCSaver.xib
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mac_build/boinc.xcodeproj/project.pbxproj b/mac_build/boinc.xcodeproj/project.pbxproj
index 6e102dceb4..66c895a943 100644
--- a/mac_build/boinc.xcodeproj/project.pbxproj
+++ b/mac_build/boinc.xcodeproj/project.pbxproj
@@ -94,6 +94,7 @@
DD33C6F808B5BB4500768630 /* acct_setup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD33C6F708B5BB4500768630 /* acct_setup.cpp */; };
DD33C70408B5BEDE00768630 /* http_curl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD33C70208B5BEDE00768630 /* http_curl.cpp */; };
DD35353607E1E13F00C4718D /* boinc_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5755AD302FE063A012012A7 /* boinc_api.cpp */; };
+ DD35BF3A27E3601800F1BBFC /* BOINCSaver.xib in Resources */ = {isa = PBXBuildFile; fileRef = DD35BF3927E3601800F1BBFC /* BOINCSaver.xib */; };
DD3741D610FC948C001257EB /* filesys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5EAD475031AEFF8018E201A /* filesys.cpp */; };
DD3741D910FC94BA001257EB /* url.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DDC06AB210A3E93F00C8D9A5 /* url.cpp */; };
DD3E14DB0A774397007E0084 /* boinc in Resources */ = {isa = PBXBuildFile; fileRef = DDD74D8707CF482E0065AC9D /* boinc */; };
@@ -178,7 +179,7 @@
DD407ABB07D2FC7D00163EF5 /* mem_usage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD407AB707D2FC7D00163EF5 /* mem_usage.cpp */; };
DD431FAA0A41660D0060585A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; };
DD4329910BA63DEC007CDF2A /* str_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD7BF7D70B8E7A9800A009F7 /* str_util.cpp */; };
- DD48091F081A66F100A174AA /* BOINCSaver.nib in Resources */ = {isa = PBXBuildFile; fileRef = DD48091E081A66F100A174AA /* BOINCSaver.nib */; };
+ DD43475826FB397A00B8880F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD43474F26FB378100B8880F /* QuartzCore.framework */; };
DD4AE04D13652BD700285859 /* cc_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4AE04B13652BD700285859 /* cc_config.cpp */; };
DD4AE05013652C1300285859 /* cc_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4AE04B13652BD700285859 /* cc_config.cpp */; };
DD4EC65A08A0A7AF009AA08F /* gui_rpc_client_ops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD73E34E08A0694000656EB1 /* gui_rpc_client_ops.cpp */; };
@@ -993,6 +994,7 @@
DD344BEE07C5B1770043025C /* proxy_info.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = proxy_info.h; path = ../lib/proxy_info.h; sourceTree = SOURCE_ROOT; };
DD344BEF07C5B1770043025C /* proxy_info.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = proxy_info.cpp; sourceTree = ""; };
DD35353107E1E05C00C4718D /* libboinc_api.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libboinc_api.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ DD35BF3927E3601800F1BBFC /* BOINCSaver.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = BOINCSaver.xib; path = ../clientscr/res/BOINCSaver.xib; sourceTree = ""; };
DD3E15420A774397007E0084 /* BOINCManager.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BOINCManager.app; sourceTree = BUILT_PRODUCTS_DIR; };
DD3EAAA6216A25AD00BC673C /* boinc_finish_install */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = boinc_finish_install; sourceTree = BUILT_PRODUCTS_DIR; };
DD3EAAAE216A268500BC673C /* finish_install.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = finish_install.cpp; path = ../mac_installer/finish_install.cpp; sourceTree = ""; };
@@ -1012,7 +1014,6 @@
DD4688410C165F3C0089F500 /* Uninstall BOINC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Uninstall BOINC.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DD4688430C165F3C0089F500 /* Uninstaller-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Uninstaller-Info.plist"; sourceTree = ""; };
DD4688590C1661970089F500 /* uninstall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = uninstall.cpp; path = ../mac_installer/uninstall.cpp; sourceTree = SOURCE_ROOT; };
- DD48091E081A66F100A174AA /* BOINCSaver.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = BOINCSaver.nib; path = ../clientscr/res/BOINCSaver.nib; sourceTree = SOURCE_ROOT; };
DD4AE04B13652BD700285859 /* cc_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cc_config.cpp; path = ../lib/cc_config.cpp; sourceTree = SOURCE_ROOT; };
DD4AE04C13652BD700285859 /* cc_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cc_config.h; path = ../lib/cc_config.h; sourceTree = SOURCE_ROOT; };
DD4C560C0AD389A2009E23C6 /* sg_DlgMessages.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sg_DlgMessages.cpp; path = ../clientgui/sg_DlgMessages.cpp; sourceTree = SOURCE_ROOT; };
@@ -1650,10 +1651,10 @@
DD957E5A181B908800ECA34E /* thumbnail@2x.png */,
DDBC6CA40D5D458700564C49 /* boinc_ss_logo.png */,
DDF3028907CCCE2C00701169 /* BOINCMgr.icns */,
+ DD35BF3927E3601800F1BBFC /* BOINCSaver.xib */,
DD531BC50C193D3800742E50 /* MacInstaller.icns */,
DD531BC70C193D5200742E50 /* MacUninstaller.icns */,
DD74B685177074AF005CF7DC /* PutInTrash.icns */,
- DD48091E081A66F100A174AA /* BOINCSaver.nib */,
DDEB3CA80981084A0087E200 /* gridrepublic.icns */,
DDF1F4A409822F8A00482C89 /* GR-Branding */,
DD64E7D507D89DB800B176C8 /* Info.plist */,
@@ -2732,8 +2733,8 @@
DDFA60E20CB3391C0037B88C /* gfx_switcher in Resources */,
DD5F656623607472009ED2A2 /* gfx_cleanup in Resources */,
DD818295245ED4110076E5D0 /* boinc_ss_helper.sh in Resources */,
+ DD35BF3A27E3601800F1BBFC /* BOINCSaver.xib in Resources */,
DD0C5A8B0816711400CEC5D7 /* boinc.jpg in Resources */,
- DD48091F081A66F100A174AA /* BOINCSaver.nib in Resources */,
DDBC6CA50D5D458700564C49 /* boinc_ss_logo.png in Resources */,
DD957E5B181B908800ECA34E /* thumbnail.png in Resources */,
DD957E5C181B908800ECA34E /* thumbnail@2x.png in Resources */,