ui/cocoa/MainWindow.m

changeset 751
41286f7f8433
parent 709
131d38916ac7
child 785
b943e3d618f0
equal deleted inserted replaced
750:7b627710c155 751:41286f7f8433
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 }

mercurial