2020-07-20 05:02:22 +00:00
|
|
|
/* Implementation of class NSSplitViewController
|
|
|
|
Copyright (C) 2020 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
By: Gregory John Casamento
|
|
|
|
Date: Mon 20 Jul 2020 12:55:02 AM EDT
|
|
|
|
|
|
|
|
This file is part of the GNUstep Library.
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
|
|
License along with this library; if not, write to the Free
|
|
|
|
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110 USA.
|
|
|
|
*/
|
|
|
|
|
2020-07-20 06:17:00 +00:00
|
|
|
#import <Foundation/NSArray.h>
|
2020-07-21 10:38:47 +00:00
|
|
|
#import <Foundation/NSArchiver.h>
|
2020-07-20 06:17:00 +00:00
|
|
|
|
|
|
|
#import "AppKit/NSSplitView.h"
|
2020-07-20 05:02:22 +00:00
|
|
|
#import "AppKit/NSSplitViewController.h"
|
2020-07-20 06:17:00 +00:00
|
|
|
#import "AppKit/NSSplitViewItem.h"
|
2020-07-21 10:38:47 +00:00
|
|
|
|
2020-07-20 06:17:00 +00:00
|
|
|
#import "GSFastEnumeration.h"
|
2020-07-20 05:02:22 +00:00
|
|
|
|
|
|
|
@implementation NSSplitViewController
|
2020-07-20 06:17:00 +00:00
|
|
|
// return splitview...
|
|
|
|
- (NSSplitView *) splitView
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
return (NSSplitView *)[self view];
|
2020-07-20 21:26:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void) setSplitView: (NSSplitView *)splitView
|
|
|
|
{
|
|
|
|
[self setView: splitView];
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (NSSplitViewItem *) splitViewItemForViewController: (NSViewController *)vc
|
|
|
|
{
|
2020-07-20 07:20:34 +00:00
|
|
|
FOR_IN (NSSplitViewItem*, svi, _splitViewItems)
|
2020-07-20 06:17:00 +00:00
|
|
|
if ([svi viewController] == vc)
|
|
|
|
{
|
|
|
|
return svi;
|
|
|
|
}
|
2020-07-20 07:20:34 +00:00
|
|
|
END_FOR_IN (_splitViewItems);
|
2020-07-20 06:17:00 +00:00
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (CGFloat) minimumThicknessForInlineSidebars
|
|
|
|
{
|
|
|
|
return _minimumThicknessForInlineSidebars;
|
|
|
|
}
|
|
|
|
|
|
|
|
// manage splitview items...
|
|
|
|
- (NSArray *) splitViewItems
|
|
|
|
{
|
|
|
|
return _splitViewItems;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) addSplitViewItem: (NSSplitViewItem *)item
|
|
|
|
{
|
|
|
|
[_splitViewItems addObject: item];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) insertSplitViewItem: (NSSplitViewItem *)item atIndex: (NSInteger)index
|
|
|
|
{
|
|
|
|
[_splitViewItems insertObject: item atIndex: index];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) removeSplitViewItem: (NSSplitViewItem *)item
|
|
|
|
{
|
|
|
|
[_splitViewItems removeObject: item];
|
|
|
|
}
|
|
|
|
|
|
|
|
// instance methods...
|
|
|
|
- (NSRect)splitView:(NSSplitView *)splitView additionalEffectiveRectOfDividerAtIndex:(NSInteger)dividerIndex
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
return [splitView frame];
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
return YES;
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
2020-07-21 10:38:47 +00:00
|
|
|
- (NSRect)splitView:(NSSplitView *)splitView effectiveRect:(NSRect)proposedEffectiveRect forDrawnRect:(NSRect)drawnRect
|
|
|
|
ofDividerAtIndex:(NSInteger)dividerIndex
|
2020-07-20 06:17:00 +00:00
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
return proposedEffectiveRect;
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (BOOL)splitView:(NSSplitView *)splitView shouldCollapseSubview:(NSView *)subview forDoubleClickOnDividerAtIndex:(NSInteger)dividerIndex
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
return YES;
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
return YES;
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (IBAction)toggleSidebar:(id)sender
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
NSLog(@"Toggle");
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// NSCoding
|
|
|
|
- (instancetype) initWithCoder: (NSCoder *)coder
|
|
|
|
{
|
2020-07-21 10:38:47 +00:00
|
|
|
self = [super initWithCoder: coder];
|
|
|
|
if ([coder allowsKeyedCoding])
|
|
|
|
{
|
|
|
|
if ([coder containsValueForKey: @"NSSplitView"])
|
|
|
|
{
|
|
|
|
NSSplitView *sv = [coder decodeObjectForKey: @"NSSplitView"];
|
|
|
|
[self setSplitView: sv];
|
|
|
|
}
|
|
|
|
if ([coder containsValueForKey: @"NSSplitViewItems"])
|
|
|
|
{
|
|
|
|
NSArray *items = [coder decodeObjectForKey: @"NSSplitViewItems"];
|
|
|
|
[_splitViewItems addObjectsFromArray: items];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return self;
|
2020-07-20 06:17:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void) encodeWithCoder: (NSCoder *)coder
|
|
|
|
{
|
|
|
|
}
|
2020-07-20 05:02:22 +00:00
|
|
|
@end
|
|
|
|
|