[La longitud máxima permitida para el subject es un tanto limitada...]
Y tanto, es un asco. Pero por alguna impresentable razón no hay ninguna opción de configuración en la interfaz administrativa (que yo sepa/vea). Hay que meter el bisturí...
¿Se puede ajustar el intervalo entre dos valores de NumericControl cuando se arrastra el deslizador? Sé que se puede teclear el valor a mano para un ajuste suficientemente fino del valor de que se trate, pero pienso que ese "fino" debería ser algo que decide el programador, no PixInsight.
Me temo que no es posible. El problema es que el Slider tiene que repartir el rango numérico real que se le asigna a NumericControl en un rango entero, y a su vez este rango entero ha de ser divisible por el número de píxeles disponibles en el Slider, idealmente, o al menos debe haber una superabundancia de píxeles suficiente para que NumericControl proporcione incrementos razonables al mover el
thumb del Slider, o sea cosas como 0.01, 0.02, 0.03... en vez de 0.01, 0.0205, 0.0310, ...
Todo esto hace que realmente sea complicado tener un NumericControl agradable de usar (con intervalos uniformes y razonables) en el espacio que habitualmente hay en un diálogo por ejemplo.
Así que tienes que proceder de esta forma:
1. Definir el rango real que debe cubrir NumericControl. Éste es el rango del parámetro que representa el control en la interfaz. Aquí hay que ser "pillos". O sea, no definas algo como [0.01,1.05] a no ser que quieras tener muchos problemas. Un intervalo razonable normalmente empieza por un entero y termina en un entero, o por valores divisibles por 10, 5 ó 2, etc., o corresponde a un intervalo que se puede trasladar exactamente a un intervalo entero; e.g. [0,1], [-10.5,+10.5], [0.1,0.9], etc.
2. Definir el rango entero de NumericControl.slider. Para tener intervalos aceptables, hay que hacer que este rango entero reparta el rango real anterior en incrementos uniformes a lo largo de la longitud en píxeles del slider, con lo cual llegamos al siguiente punto:
3. Forzar un tamaño mínimo del slider para que "quepa" holgadamente el intervalo impuesto en el punto 2.
Un ejemplo, tomado de un script al azar:
this.cutOff_NumericControl = new NumericControl( this );
this.cutOff_NumericControl.label.text = "Low-frequency cutoff:";
this.cutOff_NumericControl.slider.setRange( 0, 100 ); // Punto 2
this.cutOff_NumericControl.slider.minWidth = 150; // Punto 3
this.cutOff_NumericControl.setRange( 0.0, 0.5 ); // Punto 1
this.cutOff_NumericControl.setPrecision( 3 );
Con el código anterior tenemos que el NumericControl proporciona la siguiente secuencia al mover el slider: 0.000, 0.010, 0.020, ... Si quisiéramos esta otra: 0.000, 0.005, 0.010, ..., tendríamos que forzar una longitud mínima en píxeles mucho mayor y un rango dos veces mayor en slider:
this.cutOff_NumericControl = new NumericControl( this );
this.cutOff_NumericControl.label.text = "Low-frequency cutoff:";
this.cutOff_NumericControl.slider.setRange( 0, 200 ); // Punto 2
this.cutOff_NumericControl.slider.minWidth = 250; // Punto 3
this.cutOff_NumericControl.setRange( 0.0, 0.5 ); // Punto 1
this.cutOff_NumericControl.setPrecision( 3 );
Nota importante: toda esta explicación es estrictamente válida para programación en PCL (clases pcl::NumericControl y pcl::Slider).
¿Existe la posibilidad de almacenar valores entre sucesivas ejecuciones de un script? Por ejemplo, registrando lo que quiero almacenar en PixInsight y que el programa lo almacene en su configuración. Como si PixInsight fuera una especie de registro del güindons que las aplicaciones manejan a través de un API.
Por ser la primera vez, te pasaré lo de relacionar PixInsight y windoze con un operador que no sea "estrictamente distinto de". La próxima vez saldrá una mano mágica de tu monitor y te agarrará el cuello :mrgreen:
Buen punto. La próxima versión llevará un objeto JavaScript llamado Settings...