Removed now-converted files.
This commit is contained in:
parent
2b1134625d
commit
260f619b20
|
@ -1,100 +0,0 @@
|
||||||
// 31 july 2015
|
|
||||||
#import "osxaltest.h"
|
|
||||||
|
|
||||||
// #qo LDFLAGS: -framework Foundation -framework AppKit
|
|
||||||
|
|
||||||
BOOL spaced = NO;
|
|
||||||
BOOL firstvert = NO;
|
|
||||||
|
|
||||||
@interface appDelegate : NSObject<NSApplicationDelegate>
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation appDelegate
|
|
||||||
|
|
||||||
- (void)applicationDidFinishLaunching:(NSNotification *)note
|
|
||||||
{
|
|
||||||
tWindow *mainwin;
|
|
||||||
tBox *box, *hbox;
|
|
||||||
tButton *button;
|
|
||||||
tSpinbox *spinbox;
|
|
||||||
tEntry *entry;
|
|
||||||
tLabel *label;
|
|
||||||
|
|
||||||
mainwin = [[tWindow alloc] init];
|
|
||||||
[mainwin tSetMargined:spaced];
|
|
||||||
|
|
||||||
box = [[tBox alloc] tInitVertical:firstvert spaced:spaced];
|
|
||||||
|
|
||||||
spinbox = [[tSpinbox alloc] init];
|
|
||||||
[box tAddControl:spinbox stretchy:NO];
|
|
||||||
|
|
||||||
[mainwin tSetControl:box];
|
|
||||||
|
|
||||||
hbox = [[tBox alloc] tInitVertical:!firstvert spaced:spaced];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"Button"];
|
|
||||||
[hbox tAddControl:button stretchy:YES];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"Button"];
|
|
||||||
[hbox tAddControl:button stretchy:YES];
|
|
||||||
[box tAddControl:hbox stretchy:NO];
|
|
||||||
|
|
||||||
hbox = [[tBox alloc] tInitVertical:!firstvert spaced:spaced];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"Button"];
|
|
||||||
[hbox tAddControl:button stretchy:YES];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"Button"];
|
|
||||||
[hbox tAddControl:button stretchy:YES];
|
|
||||||
[box tAddControl:hbox stretchy:NO];
|
|
||||||
|
|
||||||
// TODO in vertical mode the three non-stretchy buttons are smaller than they should be
|
|
||||||
hbox = [[tBox alloc] tInitVertical:!firstvert spaced:spaced];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"Button"];
|
|
||||||
[hbox tAddControl:button stretchy:YES];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"A"];
|
|
||||||
[hbox tAddControl:button stretchy:NO];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"BB"];
|
|
||||||
[hbox tAddControl:button stretchy:NO];
|
|
||||||
button = [[tButton alloc] tInitWithText:@"CCC"];
|
|
||||||
[hbox tAddControl:button stretchy:NO];
|
|
||||||
[box tAddControl:hbox stretchy:NO];
|
|
||||||
|
|
||||||
// TODO this isn't stretchy in the proper order
|
|
||||||
hbox = [[tBox alloc] tInitVertical:!firstvert spaced:spaced];
|
|
||||||
spinbox = [[tSpinbox alloc] init];
|
|
||||||
[hbox tAddControl:spinbox stretchy:NO];
|
|
||||||
spinbox = [[tSpinbox alloc] init];
|
|
||||||
[hbox tAddControl:spinbox stretchy:YES];
|
|
||||||
[box tAddControl:hbox stretchy:NO];
|
|
||||||
|
|
||||||
hbox = [[tBox alloc] tInitVertical:!firstvert spaced:spaced];
|
|
||||||
entry = [[tEntry alloc] init];
|
|
||||||
[hbox tAddControl:entry stretchy:NO];
|
|
||||||
entry = [[tEntry alloc] init];
|
|
||||||
[hbox tAddControl:entry stretchy:YES];
|
|
||||||
[box tAddControl:hbox stretchy:NO];
|
|
||||||
|
|
||||||
hbox = [[tBox alloc] tInitVertical:!firstvert spaced:spaced];
|
|
||||||
label = [[tLabel alloc] init];
|
|
||||||
[hbox tAddControl:label stretchy:NO];
|
|
||||||
[box tAddControl:hbox stretchy:NO];
|
|
||||||
|
|
||||||
[mainwin tShow];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)a
|
|
||||||
{
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
NSApplication *app;
|
|
||||||
|
|
||||||
spaced = argc > 1;
|
|
||||||
|
|
||||||
app = [NSApplication sharedApplication];
|
|
||||||
[app setActivationPolicy:NSApplicationActivationPolicyRegular];
|
|
||||||
[app setDelegate:[appDelegate new]];
|
|
||||||
[app run];
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
// 31 july 2015
|
|
||||||
#import <Cocoa/Cocoa.h>
|
|
||||||
#import <stdint.h>
|
|
||||||
|
|
||||||
typedef struct tAutoLayoutParams tAutoLayoutParams;
|
|
||||||
|
|
||||||
// TODO stretchy across both dimensions
|
|
||||||
// for a vertical box, the horizontal width should be variable
|
|
||||||
struct tAutoLayoutParams {
|
|
||||||
NSView *view;
|
|
||||||
BOOL attachLeft;
|
|
||||||
BOOL attachTop;
|
|
||||||
BOOL attachRight;
|
|
||||||
BOOL attachBottom;
|
|
||||||
NSString *nonStretchyWidthPredicate;
|
|
||||||
NSString *nonStretchyHeightPredicate;
|
|
||||||
};
|
|
||||||
|
|
||||||
@protocol tControl
|
|
||||||
@required
|
|
||||||
- (void)tSetParent:(id<tControl>)p addToView:(NSView *)v relayout:(BOOL)relayout;
|
|
||||||
- (void)tFillAutoLayout:(tAutoLayoutParams *)p;
|
|
||||||
- (void)tRelayout;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface tWindow : NSObject<tControl>
|
|
||||||
- (void)tSetControl:(id<tControl>)cc;
|
|
||||||
- (void)tSetMargined:(BOOL)m;
|
|
||||||
- (void)tShow;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface tBox : NSObject<tControl>
|
|
||||||
- (id)tInitVertical:(BOOL)vert spaced:(BOOL)sp;
|
|
||||||
- (void)tAddControl:(id<tControl>)c stretchy:(BOOL)s;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface tButton : NSObject<tControl>
|
|
||||||
- (id)tInitWithText:(NSString *)text;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface tEntry : NSObject<tControl>
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface tLabel : NSObject<tControl>
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface tSpinbox : NSObject<tControl>
|
|
||||||
@end
|
|
||||||
|
|
||||||
extern NSString *tAutoLayoutKey(uintmax_t);
|
|
|
@ -1,7 +0,0 @@
|
||||||
// 1 august 2015
|
|
||||||
#import "osxaltest.h"
|
|
||||||
|
|
||||||
NSString *tAutoLayoutKey(uintmax_t n)
|
|
||||||
{
|
|
||||||
return [NSString stringWithFormat:@"view%ju", n];
|
|
||||||
}
|
|
|
@ -1,118 +0,0 @@
|
||||||
// 1 august 2015
|
|
||||||
#include "osxaltest.h"
|
|
||||||
|
|
||||||
@implementation NSView (AutoLayoutHelpers)
|
|
||||||
- (void)tIsAmbiguous:(uintmax_t)indent
|
|
||||||
{
|
|
||||||
NSMutableString *s;
|
|
||||||
uintmax_t i;
|
|
||||||
NSUInteger j;
|
|
||||||
|
|
||||||
s = [NSMutableString new];
|
|
||||||
for (i = 0; i < indent; i++)
|
|
||||||
[s appendString:@" "];
|
|
||||||
NSLog(@"%@%@ %d", s, [self className], (int) [self hasAmbiguousLayout]);
|
|
||||||
if ([self hasAmbiguousLayout])
|
|
||||||
[[self window] visualizeConstraints:[[self superview] constraints]];
|
|
||||||
for (j = 0; j < [[self subviews] count]; j++)
|
|
||||||
[[[self subviews] objectAtIndex:j] tIsAmbiguous:(indent + 1)];
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation tWindow {
|
|
||||||
NSWindow *w;
|
|
||||||
id<tControl> c;
|
|
||||||
BOOL margined;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (id)init
|
|
||||||
{
|
|
||||||
self = [super init];
|
|
||||||
if (self) {
|
|
||||||
self->w = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 320, 240)
|
|
||||||
styleMask:(NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask)
|
|
||||||
backing:NSBackingStoreBuffered
|
|
||||||
defer:YES];
|
|
||||||
[self->w setTitle:@"Auto Layout Test"];
|
|
||||||
}
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tSetControl:(id<tControl>)cc
|
|
||||||
{
|
|
||||||
self->c = cc;
|
|
||||||
[self->c tSetParent:self addToView:[self->w contentView] relayout:NO];
|
|
||||||
[self tRelayout];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tSetMargined:(BOOL)m
|
|
||||||
{
|
|
||||||
self->margined = m;
|
|
||||||
[self tRelayout];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tShow
|
|
||||||
{
|
|
||||||
[self->w cascadeTopLeftFromPoint:NSMakePoint(20, 20)];
|
|
||||||
[self->w makeKeyAndOrderFront:self];
|
|
||||||
[[self->w contentView] tIsAmbiguous:0];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)tRelayout
|
|
||||||
{
|
|
||||||
NSView *contentView;
|
|
||||||
tAutoLayoutParams p;
|
|
||||||
NSDictionary *views;
|
|
||||||
NSString *margin;
|
|
||||||
NSMutableString *constraint;
|
|
||||||
NSArray *constraints;
|
|
||||||
|
|
||||||
if (self->c == nil)
|
|
||||||
return;
|
|
||||||
|
|
||||||
contentView = [self->w contentView];
|
|
||||||
[contentView removeConstraints:[contentView constraints]];
|
|
||||||
|
|
||||||
[self->c tFillAutoLayout:&p];
|
|
||||||
|
|
||||||
views = [NSDictionary dictionaryWithObject:p.view forKey:@"view"];
|
|
||||||
|
|
||||||
margin = @"";
|
|
||||||
if (self->margined)
|
|
||||||
margin = @"-";
|
|
||||||
|
|
||||||
// TODO always append margins even if not attached?
|
|
||||||
// or if not attached, append ->=0- as well?
|
|
||||||
constraint = [NSMutableString stringWithString:@"H:"];
|
|
||||||
if (p.attachLeft) {
|
|
||||||
[constraint appendString:@"|"];
|
|
||||||
[constraint appendString:margin];
|
|
||||||
}
|
|
||||||
[constraint appendString:@"[view]"];
|
|
||||||
if (p.attachRight) {
|
|
||||||
[constraint appendString:margin];
|
|
||||||
[constraint appendString:@"|"];
|
|
||||||
}
|
|
||||||
constraints = [NSLayoutConstraint constraintsWithVisualFormat:constraint options:0 metrics:nil views:views];
|
|
||||||
[contentView addConstraints:constraints];
|
|
||||||
// TODO do not release constraint; it's autoreleased?
|
|
||||||
|
|
||||||
constraint = [NSMutableString stringWithString:@"V:"];
|
|
||||||
if (p.attachTop) {
|
|
||||||
[constraint appendString:@"|"];
|
|
||||||
[constraint appendString:margin];
|
|
||||||
}
|
|
||||||
[constraint appendString:@"[view]"];
|
|
||||||
if (p.attachBottom) {
|
|
||||||
[constraint appendString:margin];
|
|
||||||
[constraint appendString:@"|"];
|
|
||||||
}
|
|
||||||
constraints = [NSLayoutConstraint constraintsWithVisualFormat:constraint options:0 metrics:nil views:views];
|
|
||||||
[contentView addConstraints:constraints];
|
|
||||||
// TODO do not release constraint; it's autoreleased?
|
|
||||||
|
|
||||||
// TODO do not release views; it's autoreleased?
|
|
||||||
// (for all of these, look up whether the constructor autoreleases)
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
Loading…
Reference in New Issue