ui/common/context.c

changeset 146
dd0ae1c62a72
parent 145
853685152c1d
child 150
5cee4cb5ad79
equal deleted inserted replaced
145:853685152c1d 146:dd0ae1c62a72
216 case UI_VAR_TEXT: { 216 case UI_VAR_TEXT: {
217 val = ui_text_new(ctx, NULL); 217 val = ui_text_new(ctx, NULL);
218 break; 218 break;
219 } 219 }
220 case UI_VAR_LIST: { 220 case UI_VAR_LIST: {
221 val = NULL; // TODO 221 val = ui_list_new(ctx, NULL);
222 break; 222 break;
223 } 223 }
224 case UI_VAR_RANGE: { 224 case UI_VAR_RANGE: {
225 val = ui_range_new(ctx, NULL); 225 val = ui_range_new(ctx, NULL);
226 break; 226 break;
237 237
238 // check type 238 // check type
239 if(from->type != to->type) { 239 if(from->type != to->type) {
240 fprintf(stderr, "UI Error: var has incompatible type.\n"); 240 fprintf(stderr, "UI Error: var has incompatible type.\n");
241 return; 241 return;
242 }
243
244 void *fromvalue = from->value;
245 // update var
246 if(copytodoc) {
247 to->from = from;
248
249 from->orig_val = from->value;
250 from->value = to->value;
242 } 251 }
243 252
244 // copy binding 253 // copy binding
245 // we don't copy the observer, because the from var has never one 254 // we don't copy the observer, because the from var has never one
246 switch(from->type) { 255 switch(from->type) {
247 default: fprintf(stderr, "uic_copy_binding: wtf!\n"); break; 256 default: fprintf(stderr, "uic_copy_binding: wtf!\n"); break;
248 case UI_VAR_SPECIAL: break; 257 case UI_VAR_SPECIAL: break;
249 case UI_VAR_INTEGER: { 258 case UI_VAR_INTEGER: {
250 UiInteger *f = from->value; 259 UiInteger *f = fromvalue;
251 UiInteger *t = to->value; 260 UiInteger *t = to->value;
252 if(!f->obj) break; 261 if(!f->obj) break;
253 uic_int_copy(f, t); 262 uic_int_copy(f, t);
254 t->set(t, t->value); 263 t->set(t, t->value);
255 break; 264 break;
256 } 265 }
257 case UI_VAR_DOUBLE: { 266 case UI_VAR_DOUBLE: {
258 UiDouble *f = from->value; 267 UiDouble *f = fromvalue;
259 UiDouble *t = to->value; 268 UiDouble *t = to->value;
260 if(!f->obj) break; 269 if(!f->obj) break;
261 uic_double_copy(f, t); 270 uic_double_copy(f, t);
262 t->set(t, t->value); 271 t->set(t, t->value);
263 break; 272 break;
264 } 273 }
265 case UI_VAR_STRING: { 274 case UI_VAR_STRING: {
266 UiString *f = from->value; 275 UiString *f = fromvalue;
267 UiString *t = to->value; 276 UiString *t = to->value;
268 if(!f->obj) break; 277 if(!f->obj) break;
269 uic_string_copy(f, t); 278 uic_string_copy(f, t);
270 char *tvalue = t->value.ptr ? t->value.ptr : ""; 279 char *tvalue = t->value.ptr ? t->value.ptr : "";
271 t->set(t, tvalue); 280 t->set(t, tvalue);
272 break; 281 break;
273 } 282 }
274 case UI_VAR_TEXT: { 283 case UI_VAR_TEXT: {
275 UiText *f = from->value; 284 UiText *f = fromvalue;
276 UiText *t = to->value; 285 UiText *t = to->value;
277 if(!f->obj) break; 286 if(!f->obj) break;
278 uic_text_copy(f, t); 287 uic_text_copy(f, t);
279 char *tvalue = t->value.ptr ? t->value.ptr : ""; 288 char *tvalue = t->value.ptr ? t->value.ptr : "";
280 t->set(t, tvalue); 289 t->set(t, tvalue);
281 t->setposition(t, t->pos); 290 t->setposition(t, t->pos);
282 break; 291 break;
283 } 292 }
284 case UI_VAR_LIST: { 293 case UI_VAR_LIST: {
285 UiList *f = from->value; 294 UiList *f = fromvalue;
286 UiList *t = to->value; 295 UiList *t = to->value;
287 if(!f->obj) break; 296 if(!f->obj) break;
288 uic_list_copy(f, t); 297 uic_list_copy(f, t);
289 t->update(t, -1); 298 t->update(t, -1);
290 } 299 }
291 case UI_VAR_RANGE: { 300 case UI_VAR_RANGE: {
292 UiRange *f = from->value; 301 UiRange *f = fromvalue;
293 UiRange *t = to->value; 302 UiRange *t = to->value;
294 if(!f->obj) break; 303 if(!f->obj) break;
295 uic_range_copy(f, t); 304 uic_range_copy(f, t);
296 t->setextent(t, t->extent); 305 t->setextent(t, t->extent);
297 t->setrange(t, t->min, t->max); 306 t->setrange(t, t->min, t->max);
298 t->set(t, t->value); 307 t->set(t, t->value);
299 } 308 }
300 }
301
302 if(copytodoc) {
303 to->from = from;
304
305 from->orig_val = from->value;
306 from->value = to->value;
307 } 309 }
308 } 310 }
309 311
310 void uic_save_var(UiVar *var) { 312 void uic_save_var(UiVar *var) {
311 switch(var->type) { 313 switch(var->type) {

mercurial