ui/cocoa/list.m

changeset 714
3905f542e150
parent 713
f279d3cf2bf5
child 715
2082c80fb010
equal deleted inserted replaced
713:f279d3cf2bf5 714:3905f542e150
53 scrollview.documentView = tableview; 53 scrollview.documentView = tableview;
54 54
55 UiLayout layout = UI_INIT_LAYOUT(args); 55 UiLayout layout = UI_INIT_LAYOUT(args);
56 ui_container_add(obj, scrollview, &layout, TRUE); 56 ui_container_add(obj, scrollview, &layout, TRUE);
57 57
58 ListDelegate *delegate = [[ListDelegate alloc] init:tableview obj:obj];
59 delegate.onactivate = args->onactivate;
60 delegate.onactivatedata = args->onactivatedata;
61 delegate.onselection = args->onselection;
62 delegate.onselectiondata = args->onselectiondata;
63 tableview.delegate = delegate;
64 objc_setAssociatedObject(tableview, "ui_listdelegate", delegate, OBJC_ASSOCIATION_RETAIN);
65 tableview.doubleAction = @selector(activateEvent:);
66 tableview.target = delegate;
67
58 UiVar *var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST); 68 UiVar *var = uic_widget_var(obj->ctx, obj->ctx, args->list, args->varname, UI_VAR_LIST);
59 if(var) { 69 if(var) {
70 UiList *list = var->value;
71 list->obj = (__bridge void*)tableview;
72 list->update = ui_tableview_update;
73 list->getselection = ui_tableview_getselection;
74 list->setselection = ui_tableview_setselection;
75
60 ui_getvaluefunc2 getvalue = args->getvalue2; 76 ui_getvaluefunc2 getvalue = args->getvalue2;
61 void *getvaluedata = args->getvalue2data; 77 void *getvaluedata = args->getvalue2data;
62 if(!getvalue) { 78 if(!getvalue) {
63 if(args->getvalue) { 79 if(args->getvalue) {
64 getvalue = getvalue_wrapper; 80 getvalue = getvalue_wrapper;
77 tableview.dataSource = dataSource; 93 tableview.dataSource = dataSource;
78 [tableview reloadData]; 94 [tableview reloadData];
79 95
80 objc_setAssociatedObject(tableview, "ui_datasource", dataSource, OBJC_ASSOCIATION_RETAIN); 96 objc_setAssociatedObject(tableview, "ui_datasource", dataSource, OBJC_ASSOCIATION_RETAIN);
81 } 97 }
82 98
83 ListDelegate *delegate = [[ListDelegate alloc] init:tableview obj:obj];
84 delegate.onactivate = args->onactivate;
85 delegate.onactivatedata = args->onactivatedata;
86 delegate.onselection = args->onselection;
87 delegate.onselectiondata = args->onselectiondata;
88 tableview.delegate = delegate;
89 objc_setAssociatedObject(tableview, "ui_listdelegate", delegate, OBJC_ASSOCIATION_RETAIN);
90 tableview.doubleAction = @selector(activateEvent:);
91 tableview.target = delegate;
92
93 return (__bridge void*)scrollview; 99 return (__bridge void*)scrollview;
94 } 100 }
101
102 void ui_tableview_update(UiList *list, int i) {
103 NSTableView *tableview = (__bridge NSTableView*)list->obj;
104 if(i < 0) {
105 [tableview reloadData];
106 } else {
107 [tableview reloadData]; // TODO: optimize
108 }
109 }
110
111 UiListSelection ui_tableview_getselection(UiList *list) {
112 NSTableView *tableview = (__bridge NSTableView*)list->obj;
113 return ui_tableview_selection(tableview);
114 }
115
116 void ui_tableview_setselection(UiList *list, UiListSelection selection) {
117 NSTableView *tableview = (__bridge NSTableView*)list->obj;
118 NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
119 for(int i=0;i<selection.count;i++) {
120 [indexSet addIndex:selection.rows[i]];
121 }
122 [tableview selectRowIndexes:indexSet byExtendingSelection:NO];
123 }

mercurial