Gui: implemented isShow() for python viewproviders
This commit is contained in:
@@ -1005,6 +1005,34 @@ ViewProviderPythonFeatureImp::dropObject(App::DocumentObject* obj)
|
||||
return Rejected;
|
||||
}
|
||||
|
||||
bool ViewProviderPythonFeatureImp::isShow() const
|
||||
{
|
||||
// Run the onChanged method of the proxy object.
|
||||
Base::PyGILStateLocker lock;
|
||||
try {
|
||||
App::Property* proxy = object->getPropertyByName("Proxy");
|
||||
if (proxy && proxy->getTypeId() == App::PropertyPythonObject::getClassTypeId()) {
|
||||
Py::Object vp = static_cast<App::PropertyPythonObject*>(proxy)->getValue();
|
||||
if (vp.hasAttr(std::string("isShow"))) {
|
||||
Py::Callable method(vp.getAttr(std::string("isShow")));
|
||||
Py::Tuple args;
|
||||
Py::Boolean ok(method.apply(args));
|
||||
return static_cast<bool>(ok) ? true : false;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Py::Exception&) {
|
||||
Base::PyException e; // extract the Python error text
|
||||
e.ReportException();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
namespace Gui {
|
||||
|
||||
@@ -72,6 +72,8 @@ public:
|
||||
|
||||
/** @name Display methods */
|
||||
//@{
|
||||
/// Returns true if the icon must always appear enabled in the tree view
|
||||
virtual bool isShow() const;
|
||||
/// get the default display mode
|
||||
const char* getDefaultDisplayMode() const;
|
||||
/// returns a list of all possible modes
|
||||
@@ -265,6 +267,12 @@ public:
|
||||
|
||||
/** @name Display methods */
|
||||
//@{
|
||||
/// Returns true if the icon must always appear enabled in the tree view
|
||||
virtual bool isShow() const {
|
||||
bool ok = imp->isShow();
|
||||
if (ok) return ok;
|
||||
return ViewProviderT::isShow();
|
||||
}
|
||||
/// get the default display mode
|
||||
virtual const char* getDefaultDisplayMode() const {
|
||||
return imp->getDefaultDisplayMode();
|
||||
|
||||
Reference in New Issue
Block a user