Implement encoding

This commit is contained in:
Gregory John Casamento 2020-07-26 00:20:09 -04:00
parent c96ce7edf4
commit d5b6cf01ae
2 changed files with 46 additions and 0 deletions

View file

@ -48,9 +48,11 @@ extern "C" {
- (void) setSplitView: (NSSplitView *)splitView;
- (NSSplitViewItem *) splitViewItemForViewController: (NSViewController *)vc;
- (CGFloat) minimumThicknessForInlineSidebars;
- (void) setMinimumThicknessForInlineSidebars: (CGFloat)value;
// manage splitview items...
- (NSArray *) splitViewItems;
- (void) setSplitViewItems: (NSArray *)items;
- (void) addSplitViewItem: (NSSplitViewItem *)item;
- (void) insertSplitViewItem: (NSSplitViewItem *)item atIndex: (NSInteger)index;
- (void) removeSplitViewItem: (NSSplitViewItem *)item;

View file

@ -61,6 +61,11 @@
{
return _minimumThicknessForInlineSidebars;
}
- (void) setMinimumThicknessForInlineSidebars: (CGFloat)value
{
_minimumThicknessForInlineSidebars = value;
}
// manage splitview items...
- (NSArray *) splitViewItems
@ -68,6 +73,12 @@
return _splitViewItems;
}
- (void) setSplitViewItems: (NSArray *)items
{
NSMutableArray *mutableItems = [items mutableCopy];
ASSIGN(_splitViewItems, mutableItems);
}
- (void) addSplitViewItem: (NSSplitViewItem *)item
{
[self insertSplitViewItem: item atIndex: [_splitViewItems count]];
@ -103,6 +114,12 @@
[_splitViewItems removeObject: item];
}
- (void) dealloc
{
RELEASE(_splitViewItems);
[super dealloc];
}
// instance methods...
- (NSRect)splitView:(NSSplitView *)splitView additionalEffectiveRectOfDividerAtIndex:(NSInteger)dividerIndex
{
@ -151,12 +168,39 @@
NSArray *items = [coder decodeObjectForKey: @"NSSplitViewItems"];
[_splitViewItems addObjectsFromArray: items];
}
if ([coder containsValueForKey: @"NSMinimumThicknessForInlineSidebars"])
{
_minimumThicknessForInlineSidebars = [coder decodeFloatForKey: @"NSMinimumThicknessForInlineSidebars"];
}
}
else
{
NSSplitView *sv = [coder decodeObject];
[self setSplitView: sv];
NSArray *items = [coder decodeObject];
[self setSplitViewItems: items];
[coder decodeValueOfObjCType: @encode(CGFloat) at: &_minimumThicknessForInlineSidebars];
}
return self;
}
- (void) encodeWithCoder: (NSCoder *)coder
{
[super encodeWithCoder: coder];
if ([coder allowsKeyedCoding])
{
NSSplitView *sv = [coder decodeObjectForKey: @"NSSplitView"];
[self setSplitView: sv];
NSArray *items = [coder decodeObjectForKey: @"NSSplitViewItems"];
[_splitViewItems addObjectsFromArray: items];
_minimumThicknessForInlineSidebars = [coder decodeFloatForKey: @"NSMinimumThicknessForInlineSidebars"];
}
else
{
[coder encodeObject: [self splitView]];
[coder encodeObject: [self splitViewItems]];
[coder encodeValueOfObjCType: @encode(CGFloat) at: &_minimumThicknessForInlineSidebars];
}
}
@end