| 36 #import "menu.h" |
36 #import "menu.h" |
| 37 #import "Toolbar.h" |
37 #import "Toolbar.h" |
| 38 |
38 |
| 39 @implementation MainWindow |
39 @implementation MainWindow |
| 40 |
40 |
| 41 - (MainWindow*)init:(UiObject*)obj { |
41 - (MainWindow*)init:(UiObject*)obj withSidebar:(BOOL)sidebar { |
| 42 NSRect frame = NSMakeRect(300, 200, 600, 500); |
42 NSRect frame = NSMakeRect(300, 200, 600, 500); |
| 43 |
43 |
| 44 self = [self initWithContentRect:frame |
44 self = [self initWithContentRect:frame |
| 45 styleMask:NSWindowStyleMaskTitled | |
45 styleMask:NSWindowStyleMaskTitled | |
| 46 NSWindowStyleMaskResizable | |
46 NSWindowStyleMaskResizable | |
| 47 NSWindowStyleMaskClosable | |
47 NSWindowStyleMaskClosable | |
| 48 NSWindowStyleMaskMiniaturizable |
48 NSWindowStyleMaskMiniaturizable |
| 49 backing:NSBackingStoreBuffered |
49 backing:NSBackingStoreBuffered |
| 50 defer:false]; |
50 defer:false]; |
| 51 |
51 |
| |
52 |
| 52 if(uic_toolbar_isenabled()) { |
53 if(uic_toolbar_isenabled()) { |
| 53 UiToolbar *toolbar = [[UiToolbar alloc]initWithObject:obj]; |
54 UiToolbar *toolbar = [[UiToolbar alloc]initWithObject:obj]; |
| 54 [self setToolbar:toolbar]; |
55 [self setToolbar:toolbar]; |
| 55 } |
56 } |
| 56 |
57 |
| |
58 int top = 4; |
| |
59 NSView *content = self.contentView; |
| |
60 if(sidebar) { |
| |
61 self.styleMask |= NSWindowStyleMaskFullSizeContentView; |
| |
62 self.titleVisibility = NSWindowTitleHidden; |
| |
63 self.titlebarAppearsTransparent = YES; |
| |
64 |
| |
65 NSSplitView *splitview = [[NSSplitView alloc]init]; |
| |
66 splitview.vertical = YES; |
| |
67 splitview.dividerStyle = NSSplitViewDividerStyleThin; |
| |
68 splitview.translatesAutoresizingMaskIntoConstraints = false; |
| |
69 [self.contentView addSubview:splitview]; |
| |
70 |
| |
71 [NSLayoutConstraint activateConstraints:@[ |
| |
72 [splitview.topAnchor constraintEqualToAnchor:self.contentView.topAnchor constant:0], |
| |
73 [splitview.leadingAnchor constraintEqualToAnchor:self.contentView.leadingAnchor], |
| |
74 [splitview.trailingAnchor constraintEqualToAnchor:self.contentView.trailingAnchor], |
| |
75 [splitview.bottomAnchor constraintEqualToAnchor:self.contentView.bottomAnchor] |
| |
76 ]]; |
| |
77 |
| |
78 _sidebar = [[NSView alloc]initWithFrame:NSMakeRect(0,0,100,100)]; |
| |
79 [splitview addArrangedSubview:_sidebar]; |
| |
80 |
| |
81 content = [[NSView alloc]initWithFrame:NSMakeRect(0,0,100,100)]; |
| |
82 [splitview addArrangedSubview:content]; |
| |
83 |
| |
84 top = 34; |
| |
85 } |
| 57 |
86 |
| 58 // create a vertical stackview as default container |
87 // create a vertical stackview as default container |
| 59 BoxContainer *vbox = [[BoxContainer alloc] init:NSUserInterfaceLayoutOrientationVertical spacing:0]; |
88 BoxContainer *vbox = [[BoxContainer alloc] init:NSUserInterfaceLayoutOrientationVertical spacing:0]; |
| 60 //GridLayout *vbox = [[GridLayout alloc] init]; |
89 //GridLayout *vbox = [[GridLayout alloc] init]; |
| 61 vbox.translatesAutoresizingMaskIntoConstraints = false; |
90 vbox.translatesAutoresizingMaskIntoConstraints = false; |
| 62 [self.contentView addSubview:vbox]; |
91 [content addSubview:vbox]; |
| 63 [NSLayoutConstraint activateConstraints:@[ |
92 [NSLayoutConstraint activateConstraints:@[ |
| 64 [vbox.topAnchor constraintEqualToAnchor:self.contentView.topAnchor constant:4], |
93 [vbox.topAnchor constraintEqualToAnchor:content.topAnchor constant:top], |
| 65 [vbox.leadingAnchor constraintEqualToAnchor:self.contentView.leadingAnchor], |
94 [vbox.leadingAnchor constraintEqualToAnchor:content.leadingAnchor], |
| 66 [vbox.trailingAnchor constraintEqualToAnchor:self.contentView.trailingAnchor], |
95 [vbox.trailingAnchor constraintEqualToAnchor:content.trailingAnchor], |
| 67 [vbox.bottomAnchor constraintEqualToAnchor:self.contentView.bottomAnchor] |
96 [vbox.bottomAnchor constraintEqualToAnchor:content.bottomAnchor] |
| 68 ]]; |
97 ]]; |
| 69 |
|
| 70 uic_object_push_container(obj, ui_create_container(obj, vbox)); |
98 uic_object_push_container(obj, ui_create_container(obj, vbox)); |
| 71 |
99 |
| 72 return self; |
100 return self; |
| 73 } |
101 } |
| 74 |
102 |
| 75 @end |
103 @end |
| 76 |
|
| 77 |
104 |
| 78 |
105 |
| 79 @implementation MainWindowController |
106 @implementation MainWindowController |
| 80 |
107 |
| 81 - (MainWindowController*)initWithWindow:(UiObject*)obj window:(NSWindow*)window { |
108 - (MainWindowController*)initWithWindow:(UiObject*)obj window:(NSWindow*)window { |
| 271 for(MenuItemState *state in rgroup) { |
298 for(MenuItemState *state in rgroup) { |
| 272 state.state = value == index; |
299 state.state = value == index; |
| 273 index++; |
300 index++; |
| 274 } |
301 } |
| 275 } |
302 } |
| |
303 |
| |
304 |
| |
305 UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs *args) { |
| |
306 MainWindow *window = (__bridge MainWindow*)obj->wobj; |
| |
307 if(window.sidebar == nil) { |
| |
308 return NULL; |
| |
309 } |
| |
310 NSView *sidebar = window.sidebar; |
| |
311 |
| |
312 // create a vertical stackview as default container |
| |
313 BoxContainer *vbox = [[BoxContainer alloc] init:NSUserInterfaceLayoutOrientationVertical spacing:args->spacing]; |
| |
314 //GridLayout *vbox = [[GridLayout alloc] init]; |
| |
315 vbox.translatesAutoresizingMaskIntoConstraints = false; |
| |
316 [sidebar addSubview:vbox]; |
| |
317 [NSLayoutConstraint activateConstraints:@[ |
| |
318 [vbox.topAnchor constraintEqualToAnchor:sidebar.topAnchor constant:34], |
| |
319 [vbox.leadingAnchor constraintEqualToAnchor:sidebar.leadingAnchor], |
| |
320 [vbox.trailingAnchor constraintEqualToAnchor:sidebar.trailingAnchor], |
| |
321 [vbox.bottomAnchor constraintEqualToAnchor:sidebar.bottomAnchor] |
| |
322 ]]; |
| |
323 uic_object_push_container(obj, ui_create_container(obj, vbox)); |
| |
324 |
| |
325 return NULL; |
| |
326 } |