fix setEdit, unsetEdit and doubleClicked methods of Python view provider
This commit is contained in:
parent
ced83be2da
commit
f55635900f
|
@ -411,7 +411,8 @@ std::vector<Base::Vector3d> ViewProviderPythonFeatureImp::getSelectionShape(cons
|
|||
return std::vector<Base::Vector3d>();
|
||||
}
|
||||
|
||||
bool ViewProviderPythonFeatureImp::setEdit(int ModNum)
|
||||
ViewProviderPythonFeatureImp::ValueT
|
||||
ViewProviderPythonFeatureImp::setEdit(int ModNum)
|
||||
{
|
||||
// Run the onChanged method of the proxy object.
|
||||
Base::PyGILStateLocker lock;
|
||||
|
@ -425,7 +426,8 @@ bool ViewProviderPythonFeatureImp::setEdit(int ModNum)
|
|||
Py::Tuple args(1);
|
||||
args.setItem(0, Py::Int(ModNum));
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return (bool)ok;
|
||||
bool value = (bool)ok;
|
||||
return value ? Accepted : Rejected;
|
||||
}
|
||||
else {
|
||||
Py::Callable method(vp.getAttr(std::string("setEdit")));
|
||||
|
@ -433,7 +435,8 @@ bool ViewProviderPythonFeatureImp::setEdit(int ModNum)
|
|||
args.setItem(0, Py::Object(object->getPyObject(), true));
|
||||
args.setItem(1, Py::Int(ModNum));
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return (bool)ok;
|
||||
bool value = (bool)ok;
|
||||
return value ? Accepted : Rejected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -443,10 +446,11 @@ bool ViewProviderPythonFeatureImp::setEdit(int ModNum)
|
|||
e.ReportException();
|
||||
}
|
||||
|
||||
return false;
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
bool ViewProviderPythonFeatureImp::unsetEdit(int ModNum)
|
||||
ViewProviderPythonFeatureImp::ValueT
|
||||
ViewProviderPythonFeatureImp::unsetEdit(int ModNum)
|
||||
{
|
||||
// Run the onChanged method of the proxy object.
|
||||
Base::PyGILStateLocker lock;
|
||||
|
@ -460,7 +464,8 @@ bool ViewProviderPythonFeatureImp::unsetEdit(int ModNum)
|
|||
Py::Tuple args(1);
|
||||
args.setItem(0, Py::Int(ModNum));
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return (bool)ok;
|
||||
bool value = (bool)ok;
|
||||
return value ? Accepted : Rejected;
|
||||
}
|
||||
else {
|
||||
Py::Callable method(vp.getAttr(std::string("unsetEdit")));
|
||||
|
@ -468,7 +473,8 @@ bool ViewProviderPythonFeatureImp::unsetEdit(int ModNum)
|
|||
args.setItem(0, Py::Object(object->getPyObject(), true));
|
||||
args.setItem(1, Py::Int(ModNum));
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return (bool)ok;
|
||||
bool value = (bool)ok;
|
||||
return value ? Accepted : Rejected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -478,10 +484,11 @@ bool ViewProviderPythonFeatureImp::unsetEdit(int ModNum)
|
|||
e.ReportException();
|
||||
}
|
||||
|
||||
return false;
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
bool ViewProviderPythonFeatureImp::doubleClicked(void)
|
||||
ViewProviderPythonFeatureImp::ValueT
|
||||
ViewProviderPythonFeatureImp::doubleClicked(void)
|
||||
{
|
||||
// Run the onChanged method of the proxy object.
|
||||
Base::PyGILStateLocker lock;
|
||||
|
@ -495,14 +502,16 @@ bool ViewProviderPythonFeatureImp::doubleClicked(void)
|
|||
Py::Tuple args;
|
||||
//args.setItem(0, Py::Int(ModNum));
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return (bool)ok;
|
||||
bool value = (bool)ok;
|
||||
return value ? Accepted : Rejected;
|
||||
}
|
||||
else {
|
||||
Py::Callable method(vp.getAttr(std::string("doubleClicked")));
|
||||
Py::Tuple args(1);
|
||||
args.setItem(0, Py::Object(object->getPyObject(), true));
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return (bool)ok;
|
||||
bool value = (bool)ok;
|
||||
return value ? Accepted : Rejected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -512,7 +521,7 @@ bool ViewProviderPythonFeatureImp::doubleClicked(void)
|
|||
e.ReportException();
|
||||
}
|
||||
|
||||
return false;
|
||||
return NotImplemented;
|
||||
}
|
||||
|
||||
void ViewProviderPythonFeatureImp::setupContextMenu(QMenu* menu)
|
||||
|
|
|
@ -55,9 +55,9 @@ public:
|
|||
std::string getElement(const SoDetail *det) const;
|
||||
SoDetail* getDetail(const char*) const;
|
||||
std::vector<Base::Vector3d> getSelectionShape(const char* Element) const;
|
||||
bool setEdit(int ModNum);
|
||||
bool unsetEdit(int ModNum);
|
||||
bool doubleClicked(void);
|
||||
ValueT setEdit(int ModNum);
|
||||
ValueT unsetEdit(int ModNum);
|
||||
ValueT doubleClicked(void);
|
||||
void setupContextMenu(QMenu* menu);
|
||||
|
||||
/** @name Update data methods*/
|
||||
|
@ -383,15 +383,25 @@ protected:
|
|||
/// is called by the document when the provider goes in edit mode
|
||||
virtual bool setEdit(int ModNum)
|
||||
{
|
||||
bool ok = imp->setEdit(ModNum);
|
||||
if (!ok) ok = ViewProviderT::setEdit(ModNum);
|
||||
return ok;
|
||||
switch (imp->setEdit(ModNum)) {
|
||||
case ViewProviderPythonFeatureImp::Accepted:
|
||||
return true;
|
||||
case ViewProviderPythonFeatureImp::Rejected:
|
||||
return false;
|
||||
default:
|
||||
return ViewProviderT::setEdit(ModNum);
|
||||
}
|
||||
}
|
||||
/// is called when you lose the edit mode
|
||||
virtual void unsetEdit(int ModNum)
|
||||
{
|
||||
bool ok = imp->unsetEdit(ModNum);
|
||||
if (!ok) ViewProviderT::unsetEdit(ModNum);
|
||||
switch (imp->unsetEdit(ModNum)) {
|
||||
case ViewProviderPythonFeatureImp::Accepted:
|
||||
return;
|
||||
case ViewProviderPythonFeatureImp::Rejected:
|
||||
default:
|
||||
return ViewProviderT::unsetEdit(ModNum);
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -404,11 +414,14 @@ public:
|
|||
protected:
|
||||
virtual bool doubleClicked(void)
|
||||
{
|
||||
bool ok = imp->doubleClicked();
|
||||
if (!ok)
|
||||
return ViewProviderT::doubleClicked();
|
||||
else
|
||||
switch (imp->doubleClicked()) {
|
||||
case ViewProviderPythonFeatureImp::Accepted:
|
||||
return true;
|
||||
case ViewProviderPythonFeatureImp::Rejected:
|
||||
return false;
|
||||
default:
|
||||
return ViewProviderT::doubleClicked();
|
||||
}
|
||||
}
|
||||
virtual void setOverrideMode(const std::string &mode)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user