// Note: // to use this, you FIRST call configureSliderVisuals, then multiple times addValue, then configureTextSlider #ifndef ITEM_TEXTSLIDER_H #define ITEM_TEXTSLIDER_H #include "slider.qc" CLASS(TextSlider, Slider) METHOD(TextSlider, valueToText, string(entity, float)); METHOD(TextSlider, valueToIdentifier, string(entity, float)); METHOD(TextSlider, setValueFromIdentifier, void(entity, string)); METHOD(TextSlider, getIdentifier, string(entity)); METHOD(TextSlider, clearValues, void(entity)); METHOD(TextSlider, addValue, void(entity, string, string)); METHOD(TextSlider, insertValue, void(entity, float, string, string)); METHOD(TextSlider, configureTextSliderValues, void(entity, string)); ATTRIBARRAY(TextSlider, valueStrings, string, 256) ATTRIBARRAY(TextSlider, valueIdentifiers, string, 256) ATTRIB(TextSlider, nValues, int, 0) ENDCLASS(TextSlider) #endif #ifdef IMPLEMENTATION string TextSlider_valueToIdentifier(entity me, int val) { if(val >= me.nValues) return "custom"; if(val < 0) return "custom"; return me.(valueIdentifiers[val]); } string TextSlider_valueToText(entity me, int val) { if(val >= me.nValues) return _("Custom"); if(val < 0) return _("Custom"); return me.(valueStrings[val]); } void TextSlider_setValueFromIdentifier(entity me, string id) { int i; for(i = 0; i < me.nValues; ++i) if(me.valueToIdentifier(me, i) == id) { SUPER(TextSlider).setValue( me, i ); return; } SUPER(TextSlider).setValue( me, -1 ); } string TextSlider_getIdentifier(entity me) { return me.valueToIdentifier(me, me.value); } void TextSlider_clearValues(entity me) { me.nValues = 0; } void TextSlider_addValue(entity me, string theString, string theIdentifier) { me.(valueStrings[me.nValues]) = theString; me.(valueIdentifiers[me.nValues]) = theIdentifier; me.nValues += 1; } void TextSlider_insertValue(entity me, int pos, string theString, string theIdentifier) { int i; for (i = me.nValues; i > pos; --i) { me.(valueStrings[i]) = me.(valueStrings[i-1]); me.(valueIdentifiers[i]) = me.(valueIdentifiers[i-1]); } me.(valueStrings[pos]) = theString; me.(valueIdentifiers[pos]) = theIdentifier; me.nValues += 1; } void TextSlider_configureTextSliderValues(entity me, string theDefault) { me.configureSliderValues(me, 0, 0, me.nValues - 1, 1, 1, 1); me.setValueFromIdentifier(me, theDefault); } #endif