Nouvelle commande XML : WksSetSynchro
Comme son nom l’indique, cette commande permet de modifier la synchronisation entre vue et entre viewports, comme on le fait avec l’élément <synchro> des protocoles. C’est exactement la même syntaxe.
Un sample button group “sample-commands-synchro.buttongroup” fait la démo de la commande. Le plus simple est d’ouvrir 2 vues ainsi que la boite de dialogue utilisée habituellement pour régler la synchro. On peut voir les checkbox se mettre à jour au fur et à mesure des commandes qu’on envoie depuis le button group.
J’en profite au passage pour vous rappeler (ou vous apprendre) qu’on peut faire des commandes avec des listes d’attributs dynamiques, comme par exemple WksCustom ou WksSetSynchro. Il suffit de faire dériver les données de la commande de la classe CommandDataPureXml:
class WksSetSynchroData : public CommandDataPureXml { public: WksSetSynchroData(const char **fields) : CommandDataPureXml(fields) {} };
Ensuite dans la commande, on récupère les attributs avec GetFields:
bool CHepatoDlg::_ExecuteWksSetSynchro(constWksSetSynchroData *data) { BasicXmlObject synchro(XML_SYNCHRO); // convert fields to XML object const std::vector<std::string>& fields = data->GetFields(); for (auto f = fields.begin(); f != fields.end(); f++) { CString name = f->c_str(); f++; synchro.AddAtt(name, f->c_str()); } // process object APP->GetProtocoles().InitSynchro(&synchro, false); return true; }