¿Cuál es una forma correcta de lidiar con las fuentes que faltan?Digamos que escribí un guión hermoso, que usa algunas fuentes: fuentes estándar que encontraría en casi cualquier computadora, pero no las fuentes predeterminadas de JMP.
Distribuí este script a mis usuarios y comencé a recibir comentarios sobre mensajes de error sobre fuentes faltantes.
Parece que hay equipos en la organización que tienen una cantidad mínima de fuentes instaladas.
Así que envolví cada mensaje de fuente en la instrucción Try(), así:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Try((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FF", 13 ), Write("No Font"));
El problema es que todavía me da una ventana emergente de error.

¿Cómo escribo correctamente lo siguiente:
Si hay una fuente instalada, configure los elementos de la GUI como se indica; de lo contrario, use la fuente predeterminada.
Investigación del Consumidor y del MercadoFusión y limpieza de datosIngeniería de Calidad y ProcesosRe: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?Parece que esto funciona en este ejemplo. Déjame ver cómo se verá en un guión de la vida real.
Re: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?esto funcionará, y darle una indicación si <
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Batch Interactive( 1 );
x = Log Capture( ((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" ))) << Set Font( "Comic Sans MS1", 13 ) );
Batch Interactive( 0 );
if(x!="",Show( x ));
Tenga en cuenta que no hay intento (...) porque <
Re: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?Muy raro. Creo que la siguiente mejor respuesta es comentar Batch Interactive(0).
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
show(Batch Interactive(1));
((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" ))[1]) << Set Font( "Comic Sans MS1", 13 );
//show(Batch Interactive(0));
No puedo explicar lo que está sucediendo, pero creo que podría deberse a que la fuente no se prueba hasta que se necesita... pero no sé cómo hacer una espera (1) que lo solucione.
Editar: envió una nota al equipo de desarrollo.
Edit2: la siguiente idea es mejor...
Re: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?Extrañamente, esto no funciona:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Batch Interactive(1);
Try((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FF", 13 ), (rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FB", 13 ));
Batch Interactive(0);
mientras esto funciona:
Batch Interactive(1);
throw("Test");
Batch Interactive(0);
Re: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?¿Cómo evito que aparezcan alertas JMP?es un punto de partida, no el mejor...
Hay una función,
batch Interactive(1);
que establece JMP en lote modo que asume que ningún usuario está en el teclado y toma la respuesta del botón predeterminado. Esto es un poco indeseable en interactivo modo porque es posible que no note un mensaje en el registro. Puede establecerlo en 0 justo después de la declaración que podría desencadenar un diálogo semiesperado pero no deseado.
Cada llamada también devuelve el valor anterior si desea utilizar un mecanismo similar a una pila para restaurar el valor.
Re: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?Solo pude encontrar una publicación sobre Python con este código sin mucha explicación:
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
Cualquier ayuda sería muy apreciada.
Re: ¿Cuál es la forma correcta de lidiar con las fuentes que faltan?Lejos de mi computadora, pero creo que la respuesta es usar el indicador interactivo por lotes para suprimir el diálogo. Creo que la bandera aún no está documentada y tendrás que buscar dentro de esta comunidad para ver cómo funciona. También puede resultarle útil usar la función de captura de registro para capturar el texto que estaría en el cuadro de diálogo para diagnosticar lo que sucedió, o puede estar satisfecho con la fuente predeterminada que obtiene de todos modos.
editar: enlace a Nota de Wendy sobre Batch Interactive