Quelle est la bonne façon de traiter les polices manquantes ?Disons que j'ai écrit un beau script, qui utilise certaines polices - des polices standard que vous trouverez sur presque tous les ordinateurs, mais pas les polices par défaut de JMP.
J'ai distribué ce script à mes utilisateurs et j'ai commencé à recevoir des commentaires sur les messages d'erreur concernant les polices manquantes.
Il semble qu'il y ait des ordinateurs dans l'organisation sur lesquels un nombre très minime de polices sont installées.
J'ai donc enveloppé chaque message Font dans l'instruction Try(), comme suit :
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"));
Le problème est qu'il me donne toujours une erreur pop-up.

Comment puis-je scripter correctement ce qui suit :
Si une police est installée - définissez les éléments de l'interface graphique comme indiqué, sinon - utilisez la police par défaut.
Études de consommation et de marchéFusion et nettoyage des donnéesIngénierie de la qualité et des procédésRe : Quelle est la bonne façon de gérer les polices manquantes ?Il semble que cela fonctionne dans cet exemple. Laissez-moi voir à quoi cela ressemblera dans un script de la vie réelle.
Re : Quelle est la bonne façon de gérer les polices manquantes ?Cela fonctionnera, et vous donner une indication si le <
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 ));
Notez qu'il n'y a pas d'essai (...) car <
Re : Quelle est la bonne façon de gérer les polices manquantes ?Très étrange. Je pense que la meilleure réponse suivante consiste à commenter le lot interactif (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));
Je ne peux pas expliquer ce qui se passe, mais je pense que c'est peut-être parce que la police n'est pas testée avant d'en avoir besoin... mais je n'arrive pas à comprendre comment faire un wait(1) qui le résout.
Edit : envoyé une note à l'équipe de développement.
Edit2 : la prochaine idée est meilleure...
Re : Quelle est la bonne façon de gérer les polices manquantes ?Bizarrement, cela ne fonctionne pas :
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);
pendant que ça marche :
Batch Interactive(1);
throw("Test");
Batch Interactive(0);
Re : Quelle est la bonne façon de gérer les polices manquantes ?Comment puis-je empêcher les alertes JMP d'apparaître ?est un point de départ, pas le meilleur...
Il y a une fonction,
batch Interactive(1);
qui place JMP dans grouper mode qui suppose qu'aucun utilisateur n'est au clavier et prend la réponse par défaut du bouton. C'est un peu indésirable dans interactif mode parce que vous ne remarquerez peut-être pas de message dans le journal. Vous pouvez le définir sur 0 juste après l'instruction susceptible de déclencher une boîte de dialogue semi-attendue mais indésirable.
Chaque appel renvoie également la valeur précédente si vous souhaitez utiliser un mécanisme de type pile pour restaurer la valeur.
Re : Quelle est la bonne façon de gérer les polices manquantes ?Je n'ai pu trouver qu'un seul article sur Python avec ce morceau de code sans trop d'explications :
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
Toute aide serait très appréciée.
Re : Quelle est la bonne façon de gérer les polices manquantes ?Loin de mon ordinateur, mais je pense que la réponse est d'utiliser l'indicateur interactif par lots pour supprimer la boîte de dialogue. Je pense que le drapeau n'est toujours pas documenté et vous devrez chercher au sein de cette communauté pour voir comment cela fonctionne. Vous pouvez également trouver utile d'utiliser la fonction de capture de journal pour saisir le texte qui se trouverait dans la boîte de dialogue afin de diagnostiquer ce qui s'est passé, ou vous pouvez être satisfait de la police par défaut que vous obtenez de toute façon.
édit : lien vers Remarque de Wendy sur Batch Interactive