I don't know if there's a better solution. The point is that you can read an optionVar with a MGlobal::excecuteCommand call. I don't recall if you can do this directly, at least I wrapped the querying of the optionVar in a global mel procedure which returns the value of the optionVar:
CODE
// read
double dResult = -1.0;
MGlobal::executeCommand(MString("getDefaultMaxDistance;"), dResult);
if (dResult != -1.0) {
DPreferences::m_dDefaultMaxRadius = dResult;
}
else {
DPreferences::m_dDefaultMaxRadius = 50.0;
}
// write
MGlobal::executeCommand(MString("setDefaultMaxDistance(") + DPreferences::m_dDefaultMaxRadius +")");
mel:
CODE
global proc float getDefaultMaxDistance() {
if (optionVar -ex "defaultMaxDistance"
)
return optionVar -q "defaultMaxDistance"
;
else {
optionVar -fv "defaultMaxDistance" 50.0;
return -1.0;
}
}
global proc setDefaultMaxDistance(float $distance) {
optionVar -fv "defaultMaxDistance" $distance;
}