From 81d2ff358d674a48aa2e85a654e459e4ac569c14 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Wed, 18 Sep 2019 20:02:31 -0400 Subject: [PATCH] [App][Gui]Add Filter for PropertyFile in PropertyEditor --- src/App/PropertyFile.cpp | 12 +++++++++++- src/App/PropertyFile.h | 8 +++++++- src/Gui/propertyeditor/PropertyItem.cpp | 6 ++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/App/PropertyFile.cpp b/src/App/PropertyFile.cpp index 5d66676c7c..963e9f25c1 100644 --- a/src/App/PropertyFile.cpp +++ b/src/App/PropertyFile.cpp @@ -630,7 +630,7 @@ TYPESYSTEM_SOURCE(App::PropertyFile , App::PropertyString) PropertyFile::PropertyFile() { - + m_filter = ""; } PropertyFile::~PropertyFile() @@ -638,3 +638,13 @@ PropertyFile::~PropertyFile() } +void PropertyFile::setFilter(const std::string f) +{ + m_filter = f; +} + +std::string PropertyFile::getFilter(void) const +{ + return m_filter; +} + diff --git a/src/App/PropertyFile.h b/src/App/PropertyFile.h index 329a1b8f48..105b2a86ec 100644 --- a/src/App/PropertyFile.h +++ b/src/App/PropertyFile.h @@ -52,9 +52,15 @@ class AppExport PropertyFile : public PropertyString public: PropertyFile(void); virtual ~PropertyFile(); - + virtual const char* getEditorName(void) const { return "Gui::PropertyEditor::PropertyFileItem"; } + + virtual void setFilter(const std::string filter); + virtual std::string getFilter(void) const; + +private: + std::string m_filter; }; /** File include properties diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index b372f39fe8..3c5faf989a 100644 --- a/src/Gui/propertyeditor/PropertyItem.cpp +++ b/src/Gui/propertyeditor/PropertyItem.cpp @@ -3369,7 +3369,13 @@ QWidget* PropertyFileItem::createEditor(QWidget* parent, const QObject* receiver void PropertyFileItem::setEditorData(QWidget *editor, const QVariant& data) const { + const App::Property* prop = getFirstProperty(); + const App::PropertyFile* propFile = static_cast(prop); + std::string filter = propFile->getFilter(); Gui::FileChooser *fc = qobject_cast(editor); + if (!filter.empty()) { + fc->setFilter(Base::Tools::fromStdString(filter)); + } fc->setFileName(data.toString()); }