Browse Source

【偏好设置】代码整理

tangchao 1 year ago
parent
commit
367efd4196

+ 8 - 6
PDF Office/PDF Master/Class/Common/Category/NSObject+KMExtension.swift

@@ -206,20 +206,22 @@ let  MIN_BUTTON_WIDTH = 82.0
 let MAX_BUTTON_WIDTH = 100.0
 let EXTRA_BUTTON_WIDTH = 12.0
 @objc extension NSGraphicsContext {
-    @objc static func SKAutoSizeButtons(_ buttons: [NSButton], rightAlign: Bool) {
+    @objc static func SKAutoSizeButtons(_ buttons: NSArray, rightAlign: Bool) {
         if (buttons.count == 0) {
             return
         }
-        let button = buttons.first!
+        let button = buttons.firstObject as! NSButton
         var x = rightAlign ? NSMaxX(button.frame) : NSMinX(button.frame)
         var width = 0.0
         for btn in buttons {
-            btn.sizeToFit()
-            width = fmax(width, NSWidth(btn.frame) + EXTRA_BUTTON_WIDTH)
+            let _btn = btn as! NSButton
+            _btn.sizeToFit()
+            width = fmax(width, NSWidth(_btn.frame) + EXTRA_BUTTON_WIDTH)
         }
         width = fmin(MAX_BUTTON_WIDTH, fmax(MIN_BUTTON_WIDTH, width))
         for btn in buttons {
-            var frame = button.frame
+            let _btn = btn as! NSButton
+            var frame = _btn.frame
             frame.size.width = fmax(width, NSWidth(frame) + EXTRA_BUTTON_WIDTH)
             if (rightAlign) {
                 x -= NSWidth(frame)
@@ -228,7 +230,7 @@ let EXTRA_BUTTON_WIDTH = 12.0
                 frame.origin.x = x
                 x += NSWidth(frame)
             }
-            btn.frame = frame
+            _btn.frame = frame
         }
     }
 }

File diff suppressed because it is too large
+ 63 - 1356
PDF Office/PDF Master/Class/Preference/Window/PreferenceWindow.xib


+ 10 - 0
PDF Office/PDF Master/Class/Preference/Window/SKPreferenceController.h

@@ -77,3 +77,13 @@
 - (void)defaultsDidRevert;
 @end
 
+@interface SKPreferenceWindow : NSWindow
+@end
+
+@interface SKIBArray : NSArray {
+    id object[9];
+    unsigned long mutations;
+}
+@property (nonatomic, retain) IBOutlet id object1, object2, object3, object4, object5, object6, object7, object8, object9;
+@end
+

+ 68 - 5
PDF Office/PDF Master/Class/Preference/Window/SKPreferenceController.m

@@ -73,7 +73,7 @@ static inline NSRect SKShrinkRect(NSRect rect, CGFloat amount, NSRectEdge edge)
 
 @implementation SKPreferenceController
 
-@synthesize resetButtons;
+//@synthesize resetButtons;
 
 static SKPreferenceController *sharedPrefenceController = nil;
 
@@ -192,9 +192,9 @@ static SKPreferenceController *sharedPrefenceController = nil;
     [window setFrameUsingName:SKPreferenceWindowFrameAutosaveName force:YES];
     [self setWindowFrameAutosaveName:SKPreferenceWindowFrameAutosaveName];
     
-    [NSGraphicsContext SKAutoSizeButtons:resetButtons rightAlign:false];
+//    [NSGraphicsContext SKAutoSizeButtons:resetButtons rightAlign:false];
     
-    CGFloat width = 0.0;
+    CGFloat width = 200.0;
     NSRect frame;
     NSViewController<SKPreferencePane> *pane;
     NSView *view;
@@ -213,8 +213,8 @@ static SKPreferenceController *sharedPrefenceController = nil;
     
     currentPane = [self preferencePaneForItemIdentifier:[[NSUserDefaults standardUserDefaults] stringForKey:SKLastSelectedPreferencePaneKey]] ?: [preferencePanes objectAtIndex:0];
     [toolbar setSelectedItemIdentifier:[currentPane nibName]];
-    [window setTitle:[currentPane title]];
-    [history addObject:currentPane];
+//    [window setTitle:[currentPane title]];
+//    [history addObject:currentPane];
     
     view = [currentPane view];
     frame = [window frame];
@@ -429,3 +429,66 @@ static SKPreferenceController *sharedPrefenceController = nil;
 }
 
 @end
+
+@implementation SKPreferenceWindow
+
+- (BOOL)respondsToSelector:(SEL)aSelector {
+    return aSelector != @selector(toggleToolbarShow:) && aSelector != @selector(runToolbarCustomizationPalette:) && [super respondsToSelector:aSelector];
+}
+
+@end
+
+@implementation SKIBArray
+
+static void setObjectAtIndex(id *object, id obj, NSUInteger i, unsigned long *mutationsPtr) {
+    if (object[i] != obj) {
+//        [object[i] release];
+        object[i] = obj;
+        (*mutationsPtr)++;
+    }
+}
+
+#define SYNTHESIZE_OBJECT_ACCESSORS(i) \
+@dynamic object##i; \
+- (id)object##i { return object[i-1]; } \
+- (void)setObject##i:(id)obj { setObjectAtIndex(object, obj, i-1, &mutations); }
+
+//SYNTHESIZE_OBJECT_ACCESSORS(1)
+//SYNTHESIZE_OBJECT_ACCESSORS(2)
+//SYNTHESIZE_OBJECT_ACCESSORS(3)
+//SYNTHESIZE_OBJECT_ACCESSORS(4)
+//SYNTHESIZE_OBJECT_ACCESSORS(5)
+//SYNTHESIZE_OBJECT_ACCESSORS(6)
+//SYNTHESIZE_OBJECT_ACCESSORS(7)
+//SYNTHESIZE_OBJECT_ACCESSORS(8)
+//SYNTHESIZE_OBJECT_ACCESSORS(9)
+
+- (void)dealloc {
+    NSUInteger i;
+//    for (i = 0; i < 9; i++)
+//        setObjectAtIndex(object, nil, i, &mutations);
+//    [super dealloc];
+}
+
+- (NSUInteger)count {
+    NSUInteger i;
+    for (i = 0; i < 9; i++)
+        if (object[i] == nil) break;
+    return i;
+}
+
+- (id)objectAtIndex:(NSUInteger)anIndex {
+    return object[anIndex];
+}
+
+- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len {
+    if (state->state == 0) {
+        state->state = 1;
+//        state->itemsPtr = object;
+//        state->mutationsPtr = &mutations;
+        return [self count];
+    }
+    return 0;
+}
+
+@end