ui/motif/list.c

changeset 1001
7e72b45f0d41
parent 999
15c2d9823185
equal deleted inserted replaced
1000:56faeb1772da 1001:7e72b45f0d41
135 (XtCallbackProc)ui_listview_activate, 135 (XtCallbackProc)ui_listview_activate,
136 listview); 136 listview);
137 XtAddCallback( 137 XtAddCallback(
138 widget, 138 widget,
139 XmNextendedSelectionCallback, 139 XmNextendedSelectionCallback,
140 (XtCallbackProc)ui_listview_selection, 140 (XtCallbackProc)ui_listview_selection_changed,
141 listview); 141 listview);
142 XtAddCallback( 142 XtAddCallback(
143 widget, 143 widget,
144 XmNsingleSelectionCallback, 144 XmNsingleSelectionCallback,
145 (XtCallbackProc)ui_listview_selection, 145 (XtCallbackProc)ui_listview_selection_changed,
146 listview); 146 listview);
147 147
148 return widget; 148 return widget;
149 }
150
151 void ui_listview_select(UIWIDGET listview, int index) {
152 XmListDeselectAllItems(listview);
153 XmListSelectPos(listview, index+1, False);
154 }
155
156 int ui_listview_selection(UIWIDGET listview) {
157 int *selpositions = NULL;
158 int numpos = 0;
159 XtVaGetValues(listview, XmNselectedPositions, &selpositions, XmNselectedPositionCount, &numpos, NULL);
160 return numpos > 0 ? selpositions[0] : -1;
149 } 161 }
150 162
151 void ui_listview_destroy(Widget w, UiListView *listview, XtPointer d) { 163 void ui_listview_destroy(Widget w, UiListView *listview, XtPointer d) {
152 ui_listselection_free(listview->current_selection); 164 ui_listselection_free(listview->current_selection);
153 if(listview->model) { 165 if(listview->model) {
189 if(listview->onactivate) { 201 if(listview->onactivate) {
190 list_callback(listview->obj, listview->current_selection, listview->onactivate, listview->onactivatedata); 202 list_callback(listview->obj, listview->current_selection, listview->onactivate, listview->onactivatedata);
191 } 203 }
192 } 204 }
193 205
194 void ui_listview_selection(Widget w, UiListView *listview, XmListCallbackStruct *cb) { 206 void ui_listview_selection_changed(Widget w, UiListView *listview, XmListCallbackStruct *cb) {
195 listview_save_selection(listview, cb); 207 listview_save_selection(listview, cb);
196 if(listview->onselection) { 208 if(listview->onselection) {
197 list_callback(listview->obj, listview->current_selection, listview->onselection, listview->onselectiondata); 209 list_callback(listview->obj, listview->current_selection, listview->onselection, listview->onselectiondata);
198 } 210 }
199 } 211 }
271 return column == 0 ? elm : NULL; 283 return column == 0 ? elm : NULL;
272 } 284 }
273 285
274 /* ------------------------------- Drop Down ------------------------------- */ 286 /* ------------------------------- Drop Down ------------------------------- */
275 287
276 static void ui_dropdown_selection( 288 static void ui_dropdown_selection_changed(
277 Widget w, 289 Widget w,
278 UiListView *listview, 290 UiListView *listview,
279 XmComboBoxCallbackStruct *cb) 291 XmComboBoxCallbackStruct *cb)
280 { 292 {
281 int index = cb->item_position; 293 int index = cb->item_position;
369 (XtCallbackProc)ui_listview_destroy, 381 (XtCallbackProc)ui_listview_destroy,
370 listview); 382 listview);
371 XtAddCallback( 383 XtAddCallback(
372 widget, 384 widget,
373 XmNselectionCallback, 385 XmNselectionCallback,
374 (XtCallbackProc)ui_dropdown_selection, 386 (XtCallbackProc)ui_dropdown_selection_changed,
375 listview); 387 listview);
376 388
377 return widget; 389 return widget;
378 } 390 }
379 391
396 sel.rows[0] = pos; 408 sel.rows[0] = pos;
397 sel.count = 1; 409 sel.count = 1;
398 } 410 }
399 return sel; 411 return sel;
400 } 412 }
413
414 void ui_dropdown_select(UIWIDGET dropdown, int index) {
415 XtVaSetValues(dropdown, XmNselectedPosition, index, NULL);
416 }
417
418 int ui_dropdown_selection(UIWIDGET dropdown) {
419 int pos = -1;
420 XtVaGetValues(dropdown, XmNselectedPosition, &pos, NULL);
421 }

mercurial