| 34 #include "../common/context.h" |
34 #include "../common/context.h" |
| 35 #include "../common/object.h" |
35 #include "../common/object.h" |
| 36 |
36 |
| 37 #include "Grid.h" |
37 #include "Grid.h" |
| 38 |
38 |
| 39 static UIWIDGET label_create(UiObject *obj, UiLabelArgs args, int align) { |
39 static UIWIDGET label_create(UiObject *obj, UiLabelArgs *args, int align) { |
| 40 Arg xargs[16]; |
40 Arg xargs[16]; |
| 41 int n = 0; |
41 int n = 0; |
| 42 |
42 |
| 43 UiContainerPrivate *ctn = ui_obj_container(obj); |
43 UiContainerPrivate *ctn = ui_obj_container(obj); |
| 44 UI_APPLY_LAYOUT(ctn->layout, args); |
44 UI_APPLY_LAYOUT(ctn->layout, args); |
| 45 |
45 |
| 46 Widget parent = ctn->prepare(ctn, xargs, &n); |
46 Widget parent = ctn->prepare(ctn, xargs, &n); |
| 47 |
47 |
| 48 XtSetArg(xargs[n], XmNalignment, align); n++; |
48 XtSetArg(xargs[n], XmNalignment, align); n++; |
| 49 XmString label = NULL; |
49 XmString label = NULL; |
| 50 if(args.label) { |
50 if(args->label) { |
| 51 label = XmStringCreateLocalized((char*)args.label); |
51 label = XmStringCreateLocalized((char*)args->label); |
| 52 XtSetArg(xargs[n], XmNlabelString, label); n++; |
52 XtSetArg(xargs[n], XmNlabelString, label); n++; |
| 53 } |
53 } |
| 54 |
54 |
| 55 char *name = args.name ? (char*)args.name : "label"; |
55 char *name = args->name ? (char*)args->name : "label"; |
| 56 Widget w = XmCreateLabel(parent, name, xargs, n); |
56 Widget w = XmCreateLabel(parent, name, xargs, n); |
| 57 XtManageChild(w); |
57 XtManageChild(w); |
| 58 ctn->add(ctn, w); |
58 ctn->add(ctn, w); |
| 59 |
59 |
| 60 XmStringFree(label); |
60 XmStringFree(label); |
| 61 return w; |
61 return w; |
| 62 } |
62 } |
| 63 |
63 |
| 64 UIWIDGET ui_label_create(UiObject* obj, UiLabelArgs args) { |
64 UIWIDGET ui_label_create(UiObject* obj, UiLabelArgs *args) { |
| 65 return label_create(obj, args, XmALIGNMENT_CENTER); |
65 return label_create(obj, args, XmALIGNMENT_CENTER); |
| 66 } |
66 } |
| 67 |
67 |
| 68 UIWIDGET ui_llabel_create(UiObject* obj, UiLabelArgs args) { |
68 UIWIDGET ui_llabel_create(UiObject* obj, UiLabelArgs *args) { |
| 69 return label_create(obj, args, XmALIGNMENT_BEGINNING); |
69 return label_create(obj, args, XmALIGNMENT_BEGINNING); |
| 70 } |
70 } |
| 71 |
71 |
| 72 UIWIDGET ui_rlabel_create(UiObject* obj, UiLabelArgs args) { |
72 UIWIDGET ui_rlabel_create(UiObject* obj, UiLabelArgs *args) { |
| 73 return label_create(obj, args, XmALIGNMENT_END); |
73 return label_create(obj, args, XmALIGNMENT_END); |
| 74 } |
74 } |
| 75 |
75 |
| 76 |
76 |
| 77 /* -------------------------- progressbar/spiner -------------------------- */ |
77 /* -------------------------- progressbar/spiner -------------------------- */ |
| 101 |
101 |
| 102 XClearArea(dp, w, 0, 0, width, height, False); |
102 XClearArea(dp, w, 0, 0, width, height, False); |
| 103 XFillRectangle(dp, w, pb->gc, 0, 0, valueW, widget->core.height); |
103 XFillRectangle(dp, w, pb->gc, 0, 0, valueW, widget->core.height); |
| 104 } |
104 } |
| 105 |
105 |
| 106 UIWIDGET ui_progressbar_create(UiObject *obj, UiProgressbarArgs args) { |
106 UIWIDGET ui_progressbar_create(UiObject *obj, UiProgressbarArgs *args) { |
| 107 Arg xargs[16]; |
107 Arg xargs[16]; |
| 108 int n = 0; |
108 int n = 0; |
| 109 |
109 |
| 110 UiContainerPrivate *ctn = ui_obj_container(obj); |
110 UiContainerPrivate *ctn = ui_obj_container(obj); |
| 111 UI_APPLY_LAYOUT(ctn->layout, args); |
111 UI_APPLY_LAYOUT(ctn->layout, args); |
| 112 |
112 |
| 113 Widget parent = ctn->prepare(ctn, xargs, &n); |
113 Widget parent = ctn->prepare(ctn, xargs, &n); |
| 114 |
114 |
| 115 char *name = args.name ? (char*)args.name : "progressbar"; |
115 char *name = args->name ? (char*)args->name : "progressbar"; |
| 116 Widget frame = XmCreateFrame(parent, name, xargs, n); |
116 Widget frame = XmCreateFrame(parent, name, xargs, n); |
| 117 |
117 |
| 118 // create a button and get some informations about the height, shadow, highlight, .... |
118 // create a button and get some informations about the height, shadow, highlight, .... |
| 119 // we want the frame to have the same dimensions as a normal button |
119 // we want the frame to have the same dimensions as a normal button |
| 120 Widget test = XmCreatePushButton(frame, "button", NULL, 0); |
120 Widget test = XmCreatePushButton(frame, "button", NULL, 0); |
| 135 n = 0; |
135 n = 0; |
| 136 XtSetArg(xargs[n], XmNheight, da_height); n++; |
136 XtSetArg(xargs[n], XmNheight, da_height); n++; |
| 137 Widget drawingArea = XmCreateDrawingArea(frame, "progressbar_drawingarea", xargs, n); |
137 Widget drawingArea = XmCreateDrawingArea(frame, "progressbar_drawingarea", xargs, n); |
| 138 XtManageChild(drawingArea); |
138 XtManageChild(drawingArea); |
| 139 |
139 |
| 140 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_DOUBLE); |
140 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_DOUBLE); |
| 141 |
141 |
| 142 UiProgressBar *progressbarData = malloc(sizeof(UiProgressBar)); |
142 UiProgressBar *progressbarData = malloc(sizeof(UiProgressBar)); |
| 143 progressbarData->widget = drawingArea; |
143 progressbarData->widget = drawingArea; |
| 144 progressbarData->min = args.min; |
144 progressbarData->min = args->min; |
| 145 progressbarData->max = args.max == 0 ? 100 : args.max; |
145 progressbarData->max = args->max == 0 ? 100 : args->max; |
| 146 progressbarData->value = 50; |
146 progressbarData->value = 50; |
| 147 progressbarData->var = var; |
147 progressbarData->var = var; |
| 148 progressbarData->color = highlightColor; |
148 progressbarData->color = highlightColor; |
| 149 progressbarData->gc = NULL; // initialize on first expose |
149 progressbarData->gc = NULL; // initialize on first expose |
| 150 |
150 |
| 198 XmString label = XmStringCreateSimple(""); |
198 XmString label = XmStringCreateSimple(""); |
| 199 XtSetArg(xargs[n], XmNlabelString, label); n++; |
199 XtSetArg(xargs[n], XmNlabelString, label); n++; |
| 200 XtSetArg(xargs[n], XmNalignment, XmALIGNMENT_END); n++; |
200 XtSetArg(xargs[n], XmNalignment, XmALIGNMENT_END); n++; |
| 201 XtSetArg(xargs[n], gridMinWidth, 40); n++; |
201 XtSetArg(xargs[n], gridMinWidth, 40); n++; |
| 202 |
202 |
| 203 char *name = args.name ? (char*)args.name : "progresss_spinner"; |
203 char *name = args->name ? (char*)args->name : "progresss_spinner"; |
| 204 Widget w = XmCreateLabel(parent, name, xargs, n); |
204 Widget w = XmCreateLabel(parent, name, xargs, n); |
| 205 XtManageChild(w); |
205 XtManageChild(w); |
| 206 ctn->add(ctn, w); |
206 ctn->add(ctn, w); |
| 207 |
207 |
| 208 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_INTEGER); |
208 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); |
| 209 if(var) { |
209 if(var) { |
| 210 UiInteger *value = var->value; |
210 UiInteger *value = var->value; |
| 211 value->obj = w; |
211 value->obj = w; |
| 212 value->get = ui_progressspinner_get; |
212 value->get = ui_progressspinner_get; |
| 213 value->set = ui_progressspinner_set; |
213 value->set = ui_progressspinner_set; |