ui/gtk/entry.c

changeset 110
c00e968d018b
parent 108
77254bd6dccb
child 112
c3f2f16fa4b8
equal deleted inserted replaced
109:c3dfcb8f0be7 110:c00e968d018b
33 #include "../common/object.h" 33 #include "../common/object.h"
34 #include "container.h" 34 #include "container.h"
35 #include "entry.h" 35 #include "entry.h"
36 36
37 37
38 UIWIDGET ui_spinner_create(UiObject *obj, UiSpinnerArgs *args) { 38 UIWIDGET ui_spinbox_create(UiObject *obj, UiSpinBoxArgs *args) {
39 double min = 0; 39 double min = args->min;
40 double max = 1000; 40 double max = args->max != 0 ? args->max : 1000;
41 41
42 UiObject* current = uic_current_obj(obj); 42 UiObject* current = uic_current_obj(obj);
43 43
44 UiVar *var = NULL; 44 UiVar *var = NULL;
45 UiVarType vartype = 0;
45 if(args->varname) { 46 if(args->varname) {
46 var = uic_get_var(obj->ctx, args->varname); 47 var = uic_get_var(obj->ctx, args->varname);
48 if(var) {
49 vartype = var->type;
50 } else {
51 var = uic_widget_var(obj->ctx, current->ctx, args->rangevalue, args->varname, UI_VAR_RANGE);
52 vartype = UI_VAR_RANGE;
53 }
47 } 54 }
48 55
49 if(!var) { 56 if(!var) {
50 if(args->intvalue) { 57 if(args->intvalue) {
51 var = uic_widget_var(obj->ctx, current->ctx, args->intvalue, NULL, UI_VAR_INTEGER); 58 var = uic_widget_var(obj->ctx, current->ctx, args->intvalue, NULL, UI_VAR_INTEGER);
59 vartype = UI_VAR_INTEGER;
52 } else if(args->doublevalue) { 60 } else if(args->doublevalue) {
53 var = uic_widget_var(obj->ctx, current->ctx, args->doublevalue, NULL, UI_VAR_DOUBLE); 61 var = uic_widget_var(obj->ctx, current->ctx, args->doublevalue, NULL, UI_VAR_DOUBLE);
62 vartype = UI_VAR_DOUBLE;
54 } else if(args->rangevalue) { 63 } else if(args->rangevalue) {
55 var = uic_widget_var(obj->ctx, current->ctx, args->rangevalue, NULL, UI_VAR_RANGE); 64 var = uic_widget_var(obj->ctx, current->ctx, args->rangevalue, NULL, UI_VAR_RANGE);
65 vartype = UI_VAR_RANGE;
56 } 66 }
57 } 67 }
58 68
59 if(var && var->type == UI_VAR_RANGE) { 69 if(vartype == UI_VAR_RANGE) {
60 UiRange *r = var->value; 70 UiRange *r = var->value;
61 min = r->min; 71 min = r->min;
62 max = r->max; 72 max = r->max;
63 } 73 }
64 if(args->step == 0) { 74 if(args->step == 0) {
70 } 80 }
71 #endif 81 #endif
72 GtkWidget *spin = gtk_spin_button_new_with_range(min, max, args->step); 82 GtkWidget *spin = gtk_spin_button_new_with_range(min, max, args->step);
73 ui_set_name_and_style(spin, args->name, args->style_class); 83 ui_set_name_and_style(spin, args->name, args->style_class);
74 ui_set_widget_groups(obj->ctx, spin, args->groups); 84 ui_set_widget_groups(obj->ctx, spin, args->groups);
85
86 if(args->width > 0) {
87 gtk_widget_set_size_request(spin, args->width, -1);
88 }
89
75 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), args->digits); 90 gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), args->digits);
76 UiObserver **obs = NULL; 91 UiObserver **obs = NULL;
77 if(var) { 92 if(var) {
78 double value = 0; 93 double value = 0;
79 switch(var->type) { 94 switch(vartype) {
80 default: break; 95 default: break;
81 case UI_VAR_INTEGER: { 96 case UI_VAR_INTEGER: {
82 UiInteger *i = var->value; 97 UiInteger *i = var->value;
83 i->get = ui_spinbutton_getint; 98 i->get = ui_spinbutton_getint;
84 i->set = ui_spinbutton_setint; 99 i->set = ui_spinbutton_setint;

mercurial