ui/motif/text.c

changeset 595
e62047c59658
parent 555
0b1bb5687dca
child 659
d6baaa93f7be
equal deleted inserted replaced
594:fc854e0ab924 595:e62047c59658
36 #include <cx/string.h> 36 #include <cx/string.h>
37 37
38 38
39 /* ------------------------------ Text Area ------------------------------ */ 39 /* ------------------------------ Text Area ------------------------------ */
40 40
41 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs args) { 41 UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) {
42 Arg xargs[16]; 42 Arg xargs[16];
43 int n = 0; 43 int n = 0;
44 44
45 XtSetArg(xargs[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; 45 XtSetArg(xargs[n], XmNeditMode, XmMULTI_LINE_EDIT); n++;
46 46
47 UiContainerPrivate *ctn = ui_obj_container(obj); 47 UiContainerPrivate *ctn = ui_obj_container(obj);
48 UI_APPLY_LAYOUT(ctn->layout, args); 48 UI_APPLY_LAYOUT(ctn->layout, args);
49 49
50 Widget parent = ctn->prepare(ctn, xargs, &n); 50 Widget parent = ctn->prepare(ctn, xargs, &n);
51 char *name = args.name ? (char*)args.name : "textarea"; 51 char *name = args->name ? (char*)args->name : "textarea";
52 XtSetArg(xargs[n], XmNwidth, 100); n++; 52 XtSetArg(xargs[n], XmNwidth, 100); n++;
53 Widget widget = XmCreateScrolledText(parent, name, xargs, n); 53 Widget widget = XmCreateScrolledText(parent, name, xargs, n);
54 XtManageChild(widget); 54 XtManageChild(widget);
55 55
56 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_TEXT); 56 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_TEXT);
57 57
58 UiTextArea *textarea = malloc(sizeof(UiTextArea)); 58 UiTextArea *textarea = malloc(sizeof(UiTextArea));
59 memset(textarea, 0, sizeof(UiTextArea)); 59 memset(textarea, 0, sizeof(UiTextArea));
60 textarea->obj = obj; 60 textarea->obj = obj;
61 textarea->var = var; 61 textarea->var = var;
381 381
382 382
383 383
384 /* ------------------------------ Text Field ------------------------------ */ 384 /* ------------------------------ Text Field ------------------------------ */
385 385
386 static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs args, int frameless, int password) { 386 static UIWIDGET create_textfield(UiObject *obj, UiTextFieldArgs *args, int frameless, int password) {
387 Arg xargs[16]; 387 Arg xargs[16];
388 int n = 0; 388 int n = 0;
389 389
390 if(frameless) { 390 if(frameless) {
391 XtSetArg(xargs[n], XmNshadowThickness, 0); 391 XtSetArg(xargs[n], XmNshadowThickness, 0);
397 397
398 UiContainerPrivate *ctn = ui_obj_container(obj); 398 UiContainerPrivate *ctn = ui_obj_container(obj);
399 UI_APPLY_LAYOUT(ctn->layout, args); 399 UI_APPLY_LAYOUT(ctn->layout, args);
400 400
401 Widget parent = ctn->prepare(ctn, xargs, &n); 401 Widget parent = ctn->prepare(ctn, xargs, &n);
402 char *name = args.name ? (char*)args.name : "textfield"; 402 char *name = args->name ? (char*)args->name : "textfield";
403 Widget textfield = XmCreateTextField(parent, name, xargs, n); 403 Widget textfield = XmCreateTextField(parent, name, xargs, n);
404 XtManageChild(textfield); 404 XtManageChild(textfield);
405 405
406 ui_set_widget_groups(obj->ctx, textfield, args.groups); 406 ui_set_widget_groups(obj->ctx, textfield, args->groups);
407 407
408 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); 408 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING);
409 if(var) { 409 if(var) {
410 UiString *value = (UiString*)var->value; 410 UiString *value = (UiString*)var->value;
411 value->obj = textfield; 411 value->obj = textfield;
412 value->get = ui_textfield_get; 412 value->get = ui_textfield_get;
413 value->set = ui_textfield_set; 413 value->set = ui_textfield_set;
418 } 418 }
419 419
420 return textfield; 420 return textfield;
421 } 421 }
422 422
423 UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs args) { 423 UIWIDGET ui_textfield_create(UiObject *obj, UiTextFieldArgs *args) {
424 return create_textfield(obj, args, FALSE, FALSE); 424 return create_textfield(obj, args, FALSE, FALSE);
425 } 425 }
426 426
427 UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs args) { 427 UIWIDGET ui_frameless_textfield_create(UiObject* obj, UiTextFieldArgs *args) {
428 return create_textfield(obj, args, TRUE, FALSE); 428 return create_textfield(obj, args, TRUE, FALSE);
429 } 429 }
430 430
431 UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs args) { 431 UIWIDGET ui_passwordfield_create(UiObject* obj, UiTextFieldArgs *args) {
432 return create_textfield(obj, args, FALSE, FALSE); 432 return create_textfield(obj, args, FALSE, FALSE);
433 } 433 }
434 434
435 char* ui_textfield_get(UiString *str) { 435 char* ui_textfield_get(UiString *str) {
436 if(str->value.free) { 436 if(str->value.free) {
963 evt.eventdata = path; 963 evt.eventdata = path;
964 evt.intval = index; 964 evt.intval = index;
965 event->callback(&evt, event->userdata); 965 event->callback(&evt, event->userdata);
966 } 966 }
967 967
968 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs args) { 968 UIWIDGET ui_path_textfield_create(UiObject* obj, UiPathTextFieldArgs *args) {
969 Arg xargs[16]; 969 Arg xargs[16];
970 int n = 0; 970 int n = 0;
971 971
972 UiContainerPrivate *ctn = ui_obj_container(obj); 972 UiContainerPrivate *ctn = ui_obj_container(obj);
973 UI_APPLY_LAYOUT(ctn->layout, args); 973 UI_APPLY_LAYOUT(ctn->layout, args);
975 Widget parent = ctn->prepare(ctn, xargs, &n); 975 Widget parent = ctn->prepare(ctn, xargs, &n);
976 // TODO: name 976 // TODO: name
977 977
978 978
979 PathBar *pathbar = CreatePathBar(parent, xargs, n); 979 PathBar *pathbar = CreatePathBar(parent, xargs, n);
980 if(!args.getpathelm) { 980 if(!args->getpathelm) {
981 pathbar->getpathelm= default_pathelm_func; 981 pathbar->getpathelm= default_pathelm_func;
982 } else { 982 } else {
983 pathbar->getpathelm = args.getpathelm; 983 pathbar->getpathelm = args->getpathelm;
984 pathbar->getpathelmdata = args.getpathelmdata; 984 pathbar->getpathelmdata = args->getpathelmdata;
985 } 985 }
986 986
987 987
988 XtManageChild(pathbar->widget); 988 XtManageChild(pathbar->widget);
989 ctn->add(ctn, pathbar->widget); 989 ctn->add(ctn, pathbar->widget);
990 990
991 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_STRING); 991 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING);
992 if (var) { 992 if (var) {
993 UiString* value = (UiString*)var->value; 993 UiString* value = (UiString*)var->value;
994 value->obj = pathbar; 994 value->obj = pathbar;
995 value->get = ui_path_textfield_get; 995 value->get = ui_path_textfield_get;
996 value->set = ui_path_textfield_set; 996 value->set = ui_path_textfield_set;
1000 ui_string_set(value, str); 1000 ui_string_set(value, str);
1001 free(str); 1001 free(str);
1002 } 1002 }
1003 } 1003 }
1004 1004
1005 if(args.onactivate) { 1005 if(args->onactivate) {
1006 UiEventData *eventdata = malloc(sizeof(UiEventData)); 1006 UiEventData *eventdata = malloc(sizeof(UiEventData));
1007 eventdata->callback = args.onactivate; 1007 eventdata->callback = args->onactivate;
1008 eventdata->userdata = args.onactivatedata; 1008 eventdata->userdata = args->onactivatedata;
1009 eventdata->obj = obj; 1009 eventdata->obj = obj;
1010 eventdata->value = 0; 1010 eventdata->value = 0;
1011 1011
1012 pathbar->updateDir = pathbar_activate; 1012 pathbar->updateDir = pathbar_activate;
1013 pathbar->updateDirData = eventdata; 1013 pathbar->updateDirData = eventdata;

mercurial