Revision: 28835
http://sourceforge.net/p/bibdesk/svn/28835
Author: hofman
Date: 2024-03-11 15:39:03 +0000 (Mon, 11 Mar 2024)
Log Message:
-----------
remember constraints for condition views
Modified Paths:
--------------
trunk/bibdesk/BDSKConditionController.h
trunk/bibdesk/BDSKConditionController.m
trunk/bibdesk/BDSKFilterController.h
trunk/bibdesk/BDSKFilterController.m
trunk/bibdesk/Base.lproj/BDSKCondition.xib
Modified: trunk/bibdesk/BDSKConditionController.h
===================================================================
--- trunk/bibdesk/BDSKConditionController.h 2024-03-11 14:55:24 UTC (rev
28834)
+++ trunk/bibdesk/BDSKConditionController.h 2024-03-11 15:39:03 UTC (rev
28835)
@@ -94,6 +94,7 @@
@property (nonatomic, strong) IBOutlet NSView *valueView;
@property (nonatomic, strong) IBOutlet NSButton *addButton;
@property (nonatomic, strong) IBOutlet NSButton *removeButton;
+@property (nonatomic, strong) IBOutlet NSLayoutConstraint *heightConstraint;
@property (nonatomic, strong) IBOutlet NSLayoutConstraint
*comparisonWidthConstraint;
@property (nonatomic, strong) IBOutlet NSLayoutConstraint
*valueWidthConstraint;
@property (nonatomic, strong) IBOutlet NSLayoutConstraint
*stringvalueWidthConstraint;
Modified: trunk/bibdesk/BDSKConditionController.m
===================================================================
--- trunk/bibdesk/BDSKConditionController.m 2024-03-11 14:55:24 UTC (rev
28834)
+++ trunk/bibdesk/BDSKConditionController.m 2024-03-11 15:39:03 UTC (rev
28835)
@@ -61,7 +61,7 @@
@implementation BDSKConditionController
-@synthesize objectController, keyComboBox, comparisonPopUp,
attachmentComparisonPopUp, dateComparisonPopUp, valueTextField, countTextField,
numberTextField, andNumberTextField, dateTextField, toDateTextField, agoText,
periodPopUp, booleanButton, triStateButton, ratingButton, colorWell,
comparisonView, valueView, addButton, removeButton, comparisonWidthConstraint,
valueWidthConstraint, stringvalueWidthConstraint, filterController, keys;
+@synthesize objectController, keyComboBox, comparisonPopUp,
attachmentComparisonPopUp, dateComparisonPopUp, valueTextField, countTextField,
numberTextField, andNumberTextField, dateTextField, toDateTextField, agoText,
periodPopUp, booleanButton, triStateButton, ratingButton, colorWell,
comparisonView, valueView, addButton, removeButton, heightConstraint,
comparisonWidthConstraint, valueWidthConstraint, stringvalueWidthConstraint,
filterController, keys;
@dynamic condition;
+ (void)initialize
Modified: trunk/bibdesk/BDSKFilterController.h
===================================================================
--- trunk/bibdesk/BDSKFilterController.h 2024-03-11 14:55:24 UTC (rev
28834)
+++ trunk/bibdesk/BDSKFilterController.h 2024-03-11 15:39:03 UTC (rev
28835)
@@ -44,6 +44,7 @@
@interface BDSKFilterController : NSWindowController <NSTouchBarDelegate> {
NSView *conditionsView;
NSLayoutConstraint *widthConstraint;
+ NSMutableArray *verticalConstraints;
NSButton *okButton;
NSButton *cancelButton;
NSMutableArray *conditionControllers;
Modified: trunk/bibdesk/BDSKFilterController.m
===================================================================
--- trunk/bibdesk/BDSKFilterController.m 2024-03-11 14:55:24 UTC (rev
28834)
+++ trunk/bibdesk/BDSKFilterController.m 2024-03-11 15:39:03 UTC (rev
28835)
@@ -41,8 +41,6 @@
#import "NSWindowController_BDSKExtensions.h"
#import "NSInvocation_BDSKExtensions.h"
#import "BDSKTouchBarButtonGroup.h"
-#import "NSView_BDSKExtensions.h"
-#import "NSLayoutConstraint_BDSKExtensions.h"
#define MAX_HEIGHT 320.0
#define SCROLLVIEW_MARGIN 8.0
@@ -50,9 +48,9 @@
#define BDSKTouchBarItemIdentifierButtons
@"edu.ucsd.mmccrack.bibdesk.touchbar-item.buttons"
@interface BDSKFilterController (BDSKPrivate)
-- (void)insertConditionView:(NSView *)view atIndex:(NSUInteger)idx;
+- (void)insertConditionView:(BDSKConditionController *)aConditionController
atIndex:(NSUInteger)idx;
- (void)addConditionViews:(NSArray *)views;
-- (void)removeConditionView:(NSView *)view;
+- (void)removeConditionView:(BDSKConditionController *)aConditionController;
@end
@implementation BDSKFilterController
@@ -145,7 +143,7 @@
[conditionControllers insertObject:newController atIndex:idx];
[newController setFilterController:self];
- [self insertConditionView:[newController view] atIndex:idx];
+ [self insertConditionView:newController atIndex:idx];
}
- (void)removeConditionController:(BDSKConditionController
*)aConditionController {
@@ -159,7 +157,7 @@
[[[self undoManager] prepareWithInvocationTarget:self]
insertObject:aConditionController inConditionControllersAtIndex:idx];
[aConditionController setFilterController:nil];
- [self removeConditionView:[aConditionController view]];
+ [self removeConditionView:aConditionController];
[conditionControllers removeObject:aConditionController];
}
@@ -185,36 +183,36 @@
#pragma mark ConditionsView layout
-- (void)insertConditionView:(NSView *)view atIndex:(NSUInteger)idx{
+- (void)insertConditionView:(BDSKConditionController *)aConditionController
atIndex:(NSUInteger)idx{
+ NSView *view = [aConditionController view];
NSArray *subviews = [conditionsView subviews];
NSView *prevView = idx == 0 ? nil : [subviews objectAtIndex:idx - 1];
NSView *nextView = idx == [subviews count] ? nil : [subviews
objectAtIndex:idx];
- NSLayoutConstraint *heightConstraint = [view constraintWithFirstItem:view
firstAttribute:NSLayoutAttributeHeight];
+ NSLayoutConstraint *heightConstraint = [aConditionController
heightConstraint];
CGFloat height = [heightConstraint constant];
[heightConstraint setConstant:0.0];
[conditionsView addSubview:view positioned:prevView ? NSWindowAbove :
NSWindowBelow relativeTo:prevView];
-
- if (nextView) {
- NSLayoutConstraint *topConstraint = [conditionsView
constraintWithFirstItem:nextView firstAttribute:NSLayoutAttributeTop];
- if (topConstraint)
- [topConstraint setActive:NO];
- } else if (prevView) {
- NSLayoutConstraint *bottomConstraint = [conditionsView
constraintWithSecondItem:prevView secondAttribute:NSLayoutAttributeBottom];
- if (bottomConstraint)
- [bottomConstraint setActive:NO];
+ if (nextView || prevView) {
+ [[verticalConstraints objectAtIndex:idx] setActive:NO];
+ [verticalConstraints removeObjectAtIndex:idx];
}
+ NSLayoutConstraint *constraint = nil;
[[[view leadingAnchor] constraintEqualToAnchor:[conditionsView
leadingAnchor]] setActive:YES];
[[[conditionsView trailingAnchor] constraintEqualToAnchor:[view
trailingAnchor]] setActive:YES];
+ if (nextView)
+ constraint = [[nextView topAnchor] constraintEqualToAnchor:[view
bottomAnchor]];
+ else
+ constraint = [[conditionsView bottomAnchor]
constraintEqualToAnchor:[view bottomAnchor]];
+ [constraint setActive:YES];
+ [verticalConstraints insertObject:constraint atIndex:idx];
if (prevView)
- [[[view topAnchor] constraintEqualToAnchor:[prevView bottomAnchor]]
setActive:YES];
+ constraint = [[view topAnchor] constraintEqualToAnchor:[prevView
bottomAnchor]];
else
- [[[view topAnchor] constraintEqualToAnchor:[conditionsView topAnchor]]
setActive:YES];
- if (nextView)
- [[[nextView topAnchor] constraintEqualToAnchor:[view bottomAnchor]]
setActive:YES];
- else
- [[[conditionsView bottomAnchor] constraintEqualToAnchor:[view
bottomAnchor]] setActive:YES];
+ constraint = [[view topAnchor] constraintEqualToAnchor:[conditionsView
topAnchor]];
+ [constraint setActive:YES];
+ [verticalConstraints insertObject:constraint atIndex:idx];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
[[heightConstraint animator] setConstant:height];
@@ -224,22 +222,31 @@
}
- (void)addConditionViews:(NSArray *)views {
+ verticalConstraints = [[NSMutableArray alloc] init];
NSView *prevView = nil;
+ NSLayoutConstraint *constraint;
for (NSView *view in views) {
[conditionsView addSubview:view];
[[[view leadingAnchor] constraintEqualToAnchor:[conditionsView
leadingAnchor]] setActive:YES];
[[[conditionsView trailingAnchor] constraintEqualToAnchor:[view
trailingAnchor]] setActive:YES];
+
if (prevView)
- [[[view topAnchor] constraintEqualToAnchor:[prevView
bottomAnchor]] setActive:YES];
+ constraint = [[view topAnchor] constraintEqualToAnchor:[prevView
bottomAnchor]];
else
- [[[view topAnchor] constraintEqualToAnchor:[conditionsView
topAnchor]] setActive:YES];
+ constraint = [[view topAnchor]
constraintEqualToAnchor:[conditionsView topAnchor]];
+ [constraint setActive:YES];
+ [verticalConstraints addObject:constraint];
prevView = view;
}
- if (prevView)
- [[[conditionsView bottomAnchor] constraintEqualToAnchor:[prevView
bottomAnchor]] setActive:YES];
+ if (prevView) {
+ constraint = [[conditionsView bottomAnchor]
constraintEqualToAnchor:[prevView bottomAnchor]];
+ [constraint setActive:YES];
+ [verticalConstraints addObject:constraint];
+ }
}
-- (void)removeConditionView:(NSView *)view {
+- (void)removeConditionView:(BDSKConditionController *)aConditionController {
+ NSView *view = [aConditionController view];
NSArray *subviews = [conditionsView subviews];
NSUInteger idx = [subviews indexOfObjectIdenticalTo:view];
@@ -246,7 +253,7 @@
if (idx != NSNotFound) {
NSView *prevView = idx == 0 ? nil : [subviews objectAtIndex:idx - 1];
NSView *nextView = idx + 1 == [subviews count] ? nil : [subviews
objectAtIndex:idx + 1];
- NSLayoutConstraint *heightConstraint = [view
constraintWithFirstItem:view firstAttribute:NSLayoutAttributeHeight];
+ NSLayoutConstraint *heightConstraint = [aConditionController
heightConstraint];
CGFloat height = [heightConstraint constant];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
@@ -254,8 +261,13 @@
} completionHandler:^{
[heightConstraint setConstant:height];
[view removeFromSuperview];
- if (prevView || nextView)
- [[(nextView ? [nextView topAnchor] : [conditionsView
bottomAnchor]) constraintEqualToAnchor:(prevView ? [prevView bottomAnchor] :
[conditionsView topAnchor])] setActive:YES];
+ [verticalConstraints removeObjectAtIndex:idx];
+ [verticalConstraints removeObjectAtIndex:idx];
+ if (prevView || nextView) {
+ NSLayoutConstraint *constraint = [(nextView ? [nextView
topAnchor] : [conditionsView bottomAnchor]) constraintEqualToAnchor:(prevView ?
[prevView bottomAnchor] : [conditionsView topAnchor])];
+ [constraint setActive:YES];
+ [verticalConstraints insertObject:constraint atIndex:idx];
+ }
}];
}
}
Modified: trunk/bibdesk/Base.lproj/BDSKCondition.xib
===================================================================
--- trunk/bibdesk/Base.lproj/BDSKCondition.xib 2024-03-11 14:55:24 UTC (rev
28834)
+++ trunk/bibdesk/Base.lproj/BDSKCondition.xib 2024-03-11 15:39:03 UTC (rev
28835)
@@ -20,6 +20,7 @@
<outlet property="countTextField" destination="371" id="374"/>
<outlet property="dateComparisonPopUp" destination="208"
id="237"/>
<outlet property="dateTextField" destination="201" id="240"/>
+ <outlet property="heightConstraint" destination="uJt-lu-0lf"
id="9ZR-au-Bhd"/>
<outlet property="keyComboBox" destination="272" id="285"/>
<outlet property="numberTextField" destination="185" id="242"/>
<outlet property="objectController" destination="403"
id="431"/>
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit