virtual void setGuiValue(dyn_t val){ { QAbstractButton *button = dynamic_cast<QAbstractButton*>(_widget); if (button!=NULL){ if(val.type==BOOL_TYPE) button->setChecked(val.bool_number); else handleError("Button->setValue received %s, expected BOOL_TYPE", DYN_type_name(val.type)); return; } } { QAbstractSlider *slider = dynamic_cast<QAbstractSlider*>(_widget); if (slider!=NULL){ if(val.type==INT_TYPE) slider->setValue(val.bool_number); else handleError("Slider->setValue received %s, expected INT_TYPE", DYN_type_name(val.type)); return; } } { QLabel *label = dynamic_cast<QLabel*>(_widget); if (label!=NULL){ if(val.type==STRING_TYPE) label->setText(STRING_get_qstring(val.string)); else handleError("Text->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QLineEdit *line_edit = dynamic_cast<QLineEdit*>(_widget); if (line_edit!=NULL){ if(val.type==STRING_TYPE) line_edit->setText(STRING_get_qstring(val.string)); else handleError("Line->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QTextEdit *text_edit = dynamic_cast<QTextEdit*>(_widget); if (text_edit!=NULL){ if(val.type==STRING_TYPE) text_edit->setPlainText(STRING_get_chars(val.string)); else handleError("Text->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QSpinBox *spinbox = dynamic_cast<QSpinBox*>(_widget); if (spinbox!=NULL){ if (val.type==INT_TYPE) spinbox->setValue((int)val.int_number); else handleError("IntText->setValue received %s, expected INT_TYPE", DYN_type_name(val.type)); return; } } { QDoubleSpinBox *doublespinbox = dynamic_cast<QDoubleSpinBox*>(_widget); if (doublespinbox!=NULL){ if (val.type==FLOAT_TYPE) doublespinbox->setValue(val.float_number); else handleError("FloatText->setValue received %s, expected FLOAT_TYPE", DYN_type_name(val.type)); return; } } handleError("Gui #%d does not have a setValue method", _gui_num); }
static double get_number(const hash_t *hash, const char *key, int i){ hash_element_t *element=HASH_get_no_complaining(hash, key, i); if(element==NULL){ RWarning("HASH_get_number. Element not found. key: \"%s\"/%d. hash: %p",key,i,hash); return 0.0; } if(element->a.type==INT_TYPE) return element->a.int_number; else if (element->a.type==FLOAT_TYPE) return element->a.float_number; RWarning("HASH_get. Element \"%s\"/%d is found, but is wrong type. Requested a number, found %s.",key,i,DYN_type_name(element->a.type)); return 0.0; }
static bool get_bool(const hash_t *hash, const char *key, int i){ hash_element_t *element=HASH_get_no_complaining(hash, key, i); if(element==NULL){ RWarning("HASH_get_bool. Element not found. key: \"%s\"/%d. hash: %p",key,i,hash); return false; } if(element->a.type==BOOL_TYPE) return element->a.bool_number; // Before v3, BOOL_TYPE was saved to disk as integers. Unfortunatly, we can't check the value of hash->version since we don't save old hash types, meaning that this info is lost when loading old song, saving it, and loading it again. if(element->a.type==INT_TYPE){ if (element->a.int_number==0) return false; if (element->a.int_number==1) return true; } RWarning("HASH_get. Element \"%s\"/%d is found, but is wrong type. Requested BOOL_TYPE, found %s.",key,i,DYN_type_name(element->a.type)); return false; }
static hash_element_t *HASH_get(const hash_t *hash, const char *key, int i, enum DynType type){ hash_element_t *element=HASH_get_no_complaining(hash, key, i); if(element==NULL){ RWarning("HASH_get. Element not found. key: \"%s\"/%d. hash: %p",key,i,hash); return NULL; } if(element->a.type!=type){ RWarning("HASH_get. Element \"%s\"/%d is found, but is wrong type. Requested %s, found %s.",key,i,DYN_type_name(type),DYN_type_name(element->a.type)); return NULL; } return element; }