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