--- /dev/null
+// Note:
+// to use this, you FIRST call configureSliderVisuals, then multiple times addValue, then configureTextSlider
+#ifdef INTERFACE
+CLASS(TextSlider) EXTENDS(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, float, 0)
+ENDCLASS(TextSlider)
+#endif
+
+#ifdef IMPLEMENTATION
+string TextSlider_valueToIdentifier(entity me, float val)
+{
+ if(val >= me.nValues)
+ return "custom";
+ if(val < 0)
+ return "custom";
+ return me.(valueIdentifiers[val]);
+}
+string TextSlider_valueToText(entity me, float val)
+{
+ if(val >= me.nValues)
+ return _("Custom");
+ if(val < 0)
+ return _("Custom");
+ return me.(valueStrings[val]);
+}
+void TextSlider_setValueFromIdentifier(entity me, string id)
+{
+ float 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, float pos, string theString, string theIdentifier)
+{
+ float 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