diff --git a/BasePlugin/FileInterface.hh b/BasePlugin/FileInterface.hh index 926333944723eec8f19b0c7e996b0fd6056bc14c..aaad711fe2e5f41541ce94fd4e5f39b4958ed363 100644 --- a/BasePlugin/FileInterface.hh +++ b/BasePlugin/FileInterface.hh @@ -80,13 +80,8 @@ class FileInterface { /// Get the Qt Filters for Filedialogs when saving files virtual QString getSaveFilters() = 0; - - /** You can provide a special widget showing options for saving your file types - * Return 0 when you dont need one - */ - virtual QWidget* saveOptionsWidget() = 0; - /** You can also provide a special widget showing options for saving your file types + /** You can provide a special widget showing options for saving your file types * depending on the current filter * * _currentFilter: one filter from saveFilters @@ -94,13 +89,8 @@ class FileInterface { * Return 0 when you dont need one, OpenFlipper then uses saveOptionsWidget() if available */ virtual QWidget* saveOptionsWidget(QString _currentFilter) = 0; - - /** You can provide a special widget showing options for loading your file types - * Return 0 when you dont need one - */ - virtual QWidget* loadOptionsWidget() = 0; - /** You can also provide a special widget showing options for loading your file types + /** You can provide a special widget showing options for loading your file types * depending on the current filter * * _currentFilter: one filter from loadFilters diff --git a/Core/Core.hh b/Core/Core.hh index 855c0f45f4004a09541ab7a6a4a928588f5c47e0..cb0578a9f5ef37e52aa5e1dfa9ea76246ae7612d 100644 --- a/Core/Core.hh +++ b/Core/Core.hh @@ -96,8 +96,6 @@ struct fileTypes { QString loadFilters; QString saveFilters; FileInterface* plugin; - QWidget* loadWidget; - QWidget* saveWidget; }; /** Core Widget of the Application diff --git a/Core/PluginLoader.cc b/Core/PluginLoader.cc index 51cdb213d41a5abf52f084956d6f920c8f3e4872..67fa0e6cb9fd727ffefedbd7ec194c46c8939099 100644 --- a/Core/PluginLoader.cc +++ b/Core/PluginLoader.cc @@ -429,14 +429,6 @@ void Core::loadPlugin(QString filename, bool silent){ ft.saveFilters = filePlugin->getSaveFilters(); ft.plugin = filePlugin; - if ( OpenFlipper::Options::gui() ) { - ft.loadWidget = filePlugin->loadOptionsWidget(); - ft.saveWidget = filePlugin->saveOptionsWidget(); - } else { - ft.loadWidget = 0; - ft.saveWidget = 0; - } - supportedTypes_.push_back(ft); filePlugin->setObjectRoot( objectRoot_ ); } diff --git a/widgets/loadWidget/loadWidget.cc b/widgets/loadWidget/loadWidget.cc index 9d5c0fcbf9e5700224116c01a19e5e45c6e9486b..1ca4055e6ed7e613d4bf5f6585cdec97f496cbca 100644 --- a/widgets/loadWidget/loadWidget.cc +++ b/widgets/loadWidget/loadWidget.cc @@ -49,7 +49,6 @@ LoadWidget::LoadWidget(std::vector& _supportedTypes , QWidget *parent : QFileDialog(parent), loadMode_(true), supportedTypes_(_supportedTypes) - { // Get our layout @@ -100,16 +99,12 @@ LoadWidget::LoadWidget(std::vector& _supportedTypes , QWidget *parent /// adjust the loadWidget / saveWidget when the selected nameFilter changed void LoadWidget::currentFilterChanged(QString _currentFilter){ - for (int i=0; i < (int)supportedTypes_.size(); i++){ - if (supportedTypes_[i].loadWidget != 0){ - boxLayout_->removeWidget(supportedTypes_[i].loadWidget); - supportedTypes_[i].loadWidget->setParent(0); - } - if (supportedTypes_[i].saveWidget != 0){ - boxLayout_->removeWidget(supportedTypes_[i].saveWidget); - supportedTypes_[i].saveWidget->setParent(0); - } - } + for (int i=0; i < boxWidgets_.size(); i++){ + boxLayout_->removeWidget( boxWidgets_[i] ); + boxWidgets_[i]->setParent(0); + } + + boxWidgets_.clear(); const DataType type = (DataType) typeBox_->itemData( typeBox_->currentIndex() ).toInt(); @@ -122,10 +117,7 @@ void LoadWidget::currentFilterChanged(QString _currentFilter){ if (nuWidget != 0){ boxLayout_->addWidget( nuWidget ); - box_->show(); - }else - if ( supportedTypes_[i].loadWidget != 0 ) { - boxLayout_->addWidget(supportedTypes_[i].loadWidget); + boxWidgets_.push_back( nuWidget ); box_->show(); } } @@ -138,10 +130,7 @@ void LoadWidget::currentFilterChanged(QString _currentFilter){ if (nuWidget != 0){ boxLayout_->addWidget( nuWidget ); - box_->show(); - }else - if ( supportedTypes_[i].saveWidget != 0 ) { - boxLayout_->addWidget(supportedTypes_[i].saveWidget); + boxWidgets_.push_back( nuWidget ); box_->show(); } } @@ -152,17 +141,12 @@ void LoadWidget::currentFilterChanged(QString _currentFilter){ void LoadWidget::slotSetLoadFilters(int _typeIndex){ box_->setTitle("Load Options"); - for (int i=0; i < (int)supportedTypes_.size(); i++){ - if (supportedTypes_[i].loadWidget != 0){ - boxLayout_->removeWidget(supportedTypes_[i].loadWidget); - supportedTypes_[i].loadWidget->setParent(0); - } - if (supportedTypes_[i].saveWidget != 0){ - boxLayout_->removeWidget(supportedTypes_[i].saveWidget); - supportedTypes_[i].saveWidget->setParent(0); - } + for (int i=0; i < boxWidgets_.size(); i++){ + boxLayout_->removeWidget( boxWidgets_[i] ); + boxWidgets_[i]->setParent(0); } + boxWidgets_.clear(); const DataType type = (DataType) typeBox_->itemData(_typeIndex).toInt(); for (int i=0; i < (int)supportedTypes_.size(); i++) @@ -173,12 +157,14 @@ void LoadWidget::slotSetLoadFilters(int _typeIndex){ setNameFilters(filters); //add Widget for new Filter - if ( supportedTypes_[i].loadWidget != 0 ) { - boxLayout_->addWidget(supportedTypes_[i].loadWidget); -// boxLayout_->removeWidget(supportedTypes_[i].saveWidget); + QWidget* nuWidget = 0; + nuWidget = supportedTypes_[i].plugin->loadOptionsWidget(""); + + if ( nuWidget != 0 ) { + boxLayout_->addWidget( nuWidget ); + boxWidgets_.push_back( nuWidget ); box_->show(); } - } if (box_->children().count() == 1) //only the layout is left @@ -189,17 +175,13 @@ void LoadWidget::slotSetLoadFilters(int _typeIndex){ void LoadWidget::slotSetSaveFilters(int _typeIndex){ box_->setTitle("Save Options"); - for (int i=0; i < (int)supportedTypes_.size(); i++){ - if (supportedTypes_[i].loadWidget != 0){ - boxLayout_->removeWidget(supportedTypes_[i].loadWidget); - supportedTypes_[i].loadWidget->setParent(0); - } - if (supportedTypes_[i].saveWidget != 0){ - boxLayout_->removeWidget(supportedTypes_[i].saveWidget); - supportedTypes_[i].saveWidget->setParent(0); - } + for (int i=0; i < boxWidgets_.size(); i++){ + boxLayout_->removeWidget( boxWidgets_[i] ); + boxWidgets_[i]->setParent(0); } + boxWidgets_.clear(); + const DataType type = (DataType) typeBox_->itemData(_typeIndex).toInt(); for (int i=0; i < (int)supportedTypes_.size(); i++) if (supportedTypes_[i].type == type){ @@ -209,19 +191,15 @@ void LoadWidget::slotSetSaveFilters(int _typeIndex){ setNameFilters(filters); //add Widget for new Filter - if ( supportedTypes_[i].saveWidget != 0 ) { - boxLayout_->addWidget(supportedTypes_[i].saveWidget); -// boxLayout_->removeWidget(supportedTypes_[i].saveWidget); + QWidget* nuWidget = 0; + nuWidget = supportedTypes_[i].plugin->saveOptionsWidget(""); + + if ( nuWidget != 0 ) { + boxLayout_->addWidget( nuWidget ); + boxWidgets_.push_back( nuWidget ); box_->show(); } - } - //remove Widget from last Filter -// if ( supportedTypes_[i].loadWidget != 0 ) { -// boxLayout_->removeWidget(supportedTypes_[i].loadWidget); -// boxLayout_->removeWidget(supportedTypes_[i].saveWidget); -// supportedTypes_[i].saveWidget->setParent(0); -// } if (box_->children().count() == 1) //only the layout is left box_->hide(); diff --git a/widgets/loadWidget/loadWidget.hh b/widgets/loadWidget/loadWidget.hh index 5715ad8ce08e814f83d270f0a79a9cf5990243e9..498ae791794f26378ae21e4304b1473b3c9622dd 100644 --- a/widgets/loadWidget/loadWidget.hh +++ b/widgets/loadWidget/loadWidget.hh @@ -75,8 +75,9 @@ class LoadWidget : public QFileDialog QComboBox* typeBox_; /// QFrame on the right - QGroupBox* box_; - QHBoxLayout* boxLayout_; + QGroupBox* box_; + QHBoxLayout* boxLayout_; + QVector< QWidget* > boxWidgets_; bool step_;