X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPVGUI%2FPVGUI_ParaViewSettingsPane.cxx;h=bd7e2611aaa5922ba094503ee82e970bf8499327;hb=9a125c36043b04592000f5f18078236fb829a65a;hp=6b524e3e911a98ec7346c6ba78931136336f6d75;hpb=4b015556d5938cc157ae97bdc018d08367c0729a;p=modules%2Fparavis.git diff --git a/src/PVGUI/PVGUI_ParaViewSettingsPane.cxx b/src/PVGUI/PVGUI_ParaViewSettingsPane.cxx index 6b524e3e..bd7e2611 100644 --- a/src/PVGUI/PVGUI_ParaViewSettingsPane.cxx +++ b/src/PVGUI/PVGUI_ParaViewSettingsPane.cxx @@ -23,625 +23,345 @@ // #include "PVGUI_ParaViewSettingsPane.h" -#include "ui_pqOptionsDialog.h" +#include "ui_pqCustomSettingsWidget.h" -#include -#include -#include -#include "pqApplicationCore.h" -#include "pqApplicationOptions.h" -#include "pqGlobalRenderViewOptions.h" -#include "pqPluginManager.h" -#include "pqViewOptionsInterface.h" -#include "pqInterfaceTracker.h" - -#include -#include -#include -#include -#include - - -class OptionsDialogModelItem -{ -public: - OptionsDialogModelItem(); - OptionsDialogModelItem(const QString &name); - ~OptionsDialogModelItem(); - - OptionsDialogModelItem *Parent; - QString Name; - QList Children; -}; - - -class OptionsDialogModel : public QAbstractItemModel -{ -public: - OptionsDialogModel(QObject *parent=0); - virtual ~OptionsDialogModel(); +#include - virtual int rowCount(const QModelIndex &parent=QModelIndex()) const; - virtual int columnCount(const QModelIndex &parent=QModelIndex()) const; - virtual QModelIndex index(int row, int column, - const QModelIndex &parent=QModelIndex()) const; - virtual QModelIndex parent(const QModelIndex &child) const; - - virtual QVariant data(const QModelIndex &index, - int role=Qt::DisplayRole) const; - - QModelIndex getIndex(const QString &path) const; - QString getPath(const QModelIndex &index) const; - void addPath(const QString &path); - bool removeIndex(const QModelIndex &index); - -private: - QModelIndex getIndex(OptionsDialogModelItem *item) const; +#include -private: - OptionsDialogModelItem *Root; -}; +#include "pqActiveObjects.h" +#include "pqApplicationCore.h" +#include "pqProxyWidget.h" +#include "pqSearchBox.h" +#include "pqServer.h" +#include "pqSettings.h" +#include "pqUndoStack.h" +#include "vtkNew.h" +#include "vtkPVXMLElement.h" +#include "vtkSmartPointer.h" +#include "vtkSMProperty.h" +#include "vtkSMPropertyHelper.h" +#include "vtkSMPropertyIterator.h" +#include "vtkSMProxy.h" +#include "vtkSMProxyIterator.h" +#include "vtkSMSessionProxyManager.h" +#include "vtkSMSettings.h" + +#include +#include +#include +#include +#include +#include +#include +#include -class OptionsDialogForm : public Ui::pqOptionsFrame +class PVGUI_ParaViewSettingsPane::pqInternals { public: - OptionsDialogForm(); - ~OptionsDialogForm(); + Ui::CustomSettingsWidget Ui; - QMap Pages; - OptionsDialogModel *Model; - int ApplyUseCount; - //bool ApplyNeeded; + // Map from tab indices to stack widget indices. This is needed because there + // are more widgets in the stacked widgets than just what we add. + QMap TabToStackedWidgets; }; +bool PVGUI_ParaViewSettingsPane::ShowRestartRequired = false; //---------------------------------------------------------------------------- -OptionsDialogModelItem::OptionsDialogModelItem() - : Name(), Children() -{ - this->Parent = 0; -} - -OptionsDialogModelItem::OptionsDialogModelItem(const QString &name) - : Name(name), Children() -{ - this->Parent = 0; -} - -OptionsDialogModelItem::~OptionsDialogModelItem() -{ - QList::Iterator iter = this->Children.begin(); - for( ; iter != this->Children.end(); ++iter) - { - delete *iter; - } -} - - -//---------------------------------------------------------------------------- -OptionsDialogModel::OptionsDialogModel(QObject *parentObject) - : QAbstractItemModel(parentObject) -{ - this->Root = new OptionsDialogModelItem(); -} - -OptionsDialogModel::~OptionsDialogModel() -{ - delete this->Root; -} - -int OptionsDialogModel::rowCount(const QModelIndex &parentIndex) const -{ - OptionsDialogModelItem *item = this->Root; - if(parentIndex.isValid()) - { - item = reinterpret_cast( - parentIndex.internalPointer()); - } - - return item->Children.size(); -} - -int OptionsDialogModel::columnCount(const QModelIndex &) const -{ - return 1; -} - -QModelIndex OptionsDialogModel::index(int row, int column, - const QModelIndex &parentIndex) const -{ - OptionsDialogModelItem *item = this->Root; - if(parentIndex.isValid()) - { - item = reinterpret_cast( - parentIndex.internalPointer()); - } - - if(column == 0 && row >= 0 && row < item->Children.size()) - { - return this->createIndex(row, column, item->Children[row]); - } - - return QModelIndex(); -} - -QModelIndex OptionsDialogModel::parent(const QModelIndex &child) const -{ - if(child.isValid()) - { - OptionsDialogModelItem *item = - reinterpret_cast(child.internalPointer()); - return this->getIndex(item->Parent); - } - - return QModelIndex(); -} - -QVariant OptionsDialogModel::data(const QModelIndex &idx, int role) const -{ - if(idx.isValid()) +PVGUI_ParaViewSettingsPane::PVGUI_ParaViewSettingsPane(QWidget *widgetParent) + : QtxUserDefinedContent(widgetParent), + Internals (new PVGUI_ParaViewSettingsPane::pqInternals()) +{ + Ui::CustomSettingsWidget &ui = this->Internals->Ui; + ui.setupUi(this); + ui.tabBar->setDocumentMode(false); + ui.tabBar->setDrawBase(false); + ui.tabBar->setExpanding(false); + ui.tabBar->setUsesScrollButtons(true); + + // Hide restart message + ui.restartRequiredLabel->setVisible(PVGUI_ParaViewSettingsPane::ShowRestartRequired); + + QList proxies_to_show; + + pqServer* server = pqActiveObjects::instance().activeServer(); + vtkNew iter; + iter->SetSession(server->session()); + iter->SetModeToOneGroup(); + for (iter->Begin("settings"); !iter->IsAtEnd(); iter->Next()) { - OptionsDialogModelItem *item = - reinterpret_cast(idx.internalPointer()); - if(role == Qt::DisplayRole || role == Qt::ToolTipRole) + vtkSMProxy* proxy = iter->GetProxy(); + if (proxy) { - return QVariant(item->Name); + proxies_to_show.push_back(proxy); } } - return QVariant(); -} - -QModelIndex OptionsDialogModel::getIndex(const QString &path) const -{ - OptionsDialogModelItem *item = this->Root; - QStringList names = path.split("."); - QStringList::Iterator iter = names.begin(); - for( ; item && iter != names.end(); ++iter) + // Add color palette. + if (vtkSMProxy* proxy = server->proxyManager()->GetProxy("global_properties", "ColorPalette")) { - OptionsDialogModelItem *child = 0; - QList::Iterator jter = item->Children.begin(); - for( ; jter != item->Children.end(); ++jter) - { - if((*jter)->Name == *iter) - { - child = *jter; - break; - } - } - - item = child; + proxies_to_show.push_back(proxy); } - if(item && item != this->Root) + foreach (vtkSMProxy* proxy, proxies_to_show) { - return this->getIndex(item); + QString proxyName = proxy->GetXMLName(); + + QScrollArea *scrollArea = new QScrollArea(this); + scrollArea->setObjectName(QString("ScrollArea%1").arg(proxyName)); + scrollArea->setWidgetResizable(true); + scrollArea->setAlignment(Qt::AlignLeft|Qt::AlignVCenter); + scrollArea->setFrameShape(QFrame::NoFrame); + + QWidget* container = new QWidget(scrollArea); + container->setObjectName("Container"); + container->setContentsMargins(6, 0, 6, 0); + + QVBoxLayout* vbox = new QVBoxLayout(container); + vbox->setMargin(0); + vbox->setSpacing(0); + + pqProxyWidget* widget = new pqProxyWidget(proxy, container); + widget->setObjectName("ProxyWidget"); + widget->setApplyChangesImmediately(false); + widget->setView(NULL); + +// widget->connect(this, SIGNAL(accepted()), SLOT(apply())); +// widget->connect(this, SIGNAL(rejected()), SLOT(reset())); + this->connect(widget, SIGNAL(restartRequired()), SLOT(showRestartRequiredMessage())); + vbox->addWidget(widget); + + QSpacerItem* spacer = new QSpacerItem(0, 0,QSizePolicy::Fixed, + QSizePolicy::MinimumExpanding); + vbox->addItem(spacer); + + scrollArea->setWidget(container); + // show panel widgets + widget->updatePanel(); + + int tabIndex = ui.tabBar->addTab(proxy->GetXMLLabel()); + int stackIndex = ui.stackedWidget->addWidget(scrollArea); + this->Internals->TabToStackedWidgets[tabIndex] = stackIndex; + + this->connect(widget, SIGNAL(changeAvailable()), SLOT(onChangeAvailable())); + widget->connect(this, SIGNAL(filterWidgets(bool, QString)), SLOT(filterWidgets(bool, QString))); } - return QModelIndex(); -} + // Disable some buttons to start +// ui.buttonBox->button(QDialogButtonBox::Reset)->setEnabled(false); +// ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); -QString OptionsDialogModel::getPath(const QModelIndex &idx) const -{ - if(idx.isValid()) - { - QString path; - OptionsDialogModelItem *item = - reinterpret_cast(idx.internalPointer()); - if(item) - { - path = item->Name; - item = item->Parent; - } +// this->connect(ui.buttonBox->button(QDialogButtonBox::RestoreDefaults), SIGNAL(clicked()), +// SLOT(onRestoreDefaults())); +// this->connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), SLOT(clicked(QAbstractButton*))); +// this->connect(this, SIGNAL(accepted()), SLOT(onAccepted())); +// this->connect(this, SIGNAL(rejected()), SLOT(onRejected())); + this->connect(ui.tabBar, SIGNAL(currentChanged(int)), this, SLOT(onTabIndexChanged(int))); - while(item && item != this->Root) - { - path.prepend(".").prepend(item->Name); - item = item->Parent; - } + this->connect(ui.SearchBox, SIGNAL(advancedSearchActivated(bool)), SLOT(filterPanelWidgets())); + this->connect(ui.SearchBox, SIGNAL(textChanged(QString)), SLOT(filterPanelWidgets())); - return path; - } + // After all the tabs are set up, select the first + this->onTabIndexChanged(0); - return QString(); + this->filterPanelWidgets(); } -void OptionsDialogModel::addPath(const QString &path) +//----------------------------------------------------------------------------- +PVGUI_ParaViewSettingsPane::~PVGUI_ParaViewSettingsPane() { - OptionsDialogModelItem *item = this->Root; - QStringList names = path.split("."); - QStringList::Iterator iter = names.begin(); - for( ; iter != names.end(); ++iter) - { - OptionsDialogModelItem *child = 0; - QList::Iterator jter = item->Children.begin(); - for( ; jter != item->Children.end(); ++jter) - { - if((*jter)->Name == *iter) - { - child = *jter; - break; - } - } - - if(!child) - { - child = new OptionsDialogModelItem(*iter); - child->Parent = item; - QModelIndex parentIndex = this->getIndex(item); - int row = item->Children.size(); - this->beginInsertRows(parentIndex, row, row); - item->Children.append(child); - this->endInsertRows(); - } - - item = child; - } + delete this->Internals; + this->Internals = NULL; } -bool OptionsDialogModel::removeIndex(const QModelIndex &idx) +void PVGUI_ParaViewSettingsPane::store(QtxResourceMgr* , QtxPreferenceMgr* ) { - if(idx.isValid()) - { - OptionsDialogModelItem *item = - reinterpret_cast(idx.internalPointer()); - if(item->Children.size() == 0) - { - QModelIndex parentIndex = this->getIndex(item->Parent); - this->beginRemoveRows(parentIndex, idx.row(), idx.row()); - item->Parent->Children.removeAt(idx.row()); - this->endRemoveRows(); - delete item; - return true; - } - } - - return false; + emit this->accepted(); } -QModelIndex OptionsDialogModel::getIndex( - OptionsDialogModelItem *item) const +void PVGUI_ParaViewSettingsPane::retrieve(QtxResourceMgr* , QtxPreferenceMgr* ) { - if(item && item->Parent) - { - return this->createIndex(item->Parent->Children.indexOf(item), 0, item); - } - - return QModelIndex(); +// onRestoreDefaults(); } - -//---------------------------------------------------------------------------- -OptionsDialogForm::OptionsDialogForm() - : Ui::pqOptionsFrame(), Pages() -{ - this->Model = new OptionsDialogModel(); - this->ApplyUseCount = 0; - //this->ApplyNeeded = false; +void PVGUI_ParaViewSettingsPane::showEvent(QShowEvent * ev) +{ +// // Connect SALOME's default button to ParaView's default restore. +// LightApp_PreferencesDlg * prefDg; +// QWidget *w = this->parentWidget(); +// // UGLY!!! +// while (w) +// { +// LightApp_PreferencesDlg * prefDg = dynamic_cast( w ); +// if (prefDg) +// break; +// w = w->parentWidget(); +// } +// if (prefDg) +// prefDg->connect(btn, SIGNAL(clicked()), this, SLOT(onRestoreDefaults())); + ev->accept(); } -OptionsDialogForm::~OptionsDialogForm() +void PVGUI_ParaViewSettingsPane::hideEvent(QHideEvent * ev) { - delete this->Model; + // Connect SALOME's default button to ParaView's default restore. + ev->accept(); } - -//---------------------------------------------------------------------------- -PVGUI_ParaViewSettingsPane::PVGUI_ParaViewSettingsPane(QWidget *widgetParent) - : QtxUserDefinedContent(widgetParent) -{ - this->Form = new OptionsDialogForm(); - this->Form->setupUi(this); - this->Form->PageNames->setModel(this->Form->Model); - - // Hide the tree widget header view. - this->Form->PageNames->header()->hide(); - - // Hide the apply and reset buttons until they are needed. - //this->Form->ApplyButton->setEnabled(false); - //this->Form->ResetButton->setEnabled(false); - //this->Form->ApplyButton->hide(); - //this->Form->ResetButton->hide(); - - this->connect(this->Form->PageNames->selectionModel(), - SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), - this, SLOT(changeCurrentPage())); - //this->connect(this->Form->ApplyButton, SIGNAL(clicked()), - // this, SLOT(applyChanges())); - //this->connect(this->Form->ResetButton, SIGNAL(clicked()), - // this, SLOT(resetChanges())); - //this->connect(this->Form->CloseButton, SIGNAL(clicked()), - // this, SLOT(accept())); - - // Code From pqApplicationOptionsDialog - //this->setApplyNeeded(true); - - pqApplicationOptions* appOptions = new pqApplicationOptions; - this->addOptions(appOptions); - - pqGlobalRenderViewOptions* renOptions = new pqGlobalRenderViewOptions; - this->addOptions(renOptions); - - QStringList pages = appOptions->getPageList(); - if(pages.size()) - { - this->setCurrentPage(pages[0]); - } - - /// Add panes as plugins are loaded. - QObject::connect(pqApplicationCore::instance()->getPluginManager(), - SIGNAL(guiInterfaceLoaded(QObject*)), - this, SLOT(pluginLoaded(QObject*))); - - // Load panes from already loaded plugins. - foreach (QObject* plugin_interface, pqApplicationCore::instance()->interfaceTracker()->interfaces()) - //pqApplicationCore::instance()->getPluginManager()->interfaces()) - { - this->pluginLoaded(plugin_interface); - } +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::clicked(QAbstractButton *button) +{ +// Ui::CustomSettingsWidget &ui = this->Internals->Ui; +// QDialogButtonBox::ButtonRole role = ui.buttonBox->buttonRole(button); +// switch (role) +// { +// case QDialogButtonBox::AcceptRole: +// case QDialogButtonBox::ApplyRole: +// emit this->accepted(); +// break; +// +// case QDialogButtonBox::ResetRole: +// case QDialogButtonBox::RejectRole: +// emit this->rejected(); +// break; +// default: +// break; +// } } -PVGUI_ParaViewSettingsPane::~PVGUI_ParaViewSettingsPane() -{ - delete this->Form; -} -/* -bool PVGUI_ParaViewSettingsPane::isApplyNeeded() const -{ - return this->Form->ApplyNeeded; -} -*/ -/* -void PVGUI_ParaViewSettingsPane::setApplyNeeded(bool applyNeeded) -{ - if(applyNeeded != this->Form->ApplyNeeded) +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::onAccepted() +{ + // If there are any properties that needed to save their values in QSettings, + // do that. Otherwise, save to the vtkSMSettings singleton. + vtkSMSettings * settings = vtkSMSettings::GetInstance(); + pqServer* server = pqActiveObjects::instance().activeServer(); + vtkNew iter; + iter->SetSession(server->session()); + iter->SetModeToOneGroup(); + for (iter->Begin("settings"); !iter->IsAtEnd(); iter->Next()) { - if(!applyNeeded) + vtkSMProxy* proxy = iter->GetProxy(); + settings->SetProxySettings(proxy); + vtkSmartPointer iter2; + iter2.TakeReference(proxy->NewPropertyIterator()); + for (iter2->Begin(); !iter2->IsAtEnd(); iter2->Next()) { - this->Form->ApplyNeeded = false; - //this->Form->ApplyButton->setEnabled(false); - //this->Form->ResetButton->setEnabled(false); - } - else if(this->Form->ApplyUseCount > 0) - { - this->Form->ApplyNeeded = true; - //this->Form->ApplyButton->setEnabled(true); - //this->Form->ResetButton->setEnabled(true); + vtkSMProperty* smproperty = iter2->GetProperty(); + if (smproperty && smproperty->GetHints() && + smproperty->GetHints()->FindNestedElementByName("SaveInQSettings")) + { + QString key = QString("%1.%2").arg(iter->GetKey()).arg(iter2->GetKey()); + this->saveInQSettings(key.toLatin1().data(), smproperty); + } } } -} -*/ -void PVGUI_ParaViewSettingsPane::addOptions(const QString &path, pqOptionsPage *options) -{ - if(!options) - { - return; - } - - // See if the page is a container. - pqOptionsContainer *container = qobject_cast(options); - if(!container && path.isEmpty()) - { - return; - } - // See if the page/container uses the apply button. - if(options->isApplyUsed()) + // Save color palette settings + vtkSMProxy* paletteProxy = server->proxyManager()->GetProxy("global_properties", "ColorPalette"); + if (paletteProxy) { - this->Form->ApplyUseCount++; - /*if(this->Form->ApplyUseCount == 1) - { - //this->Form->ApplyButton->show(); - //this->Form->ResetButton->show(); - //QObject::connect(this, SIGNAL(accepted()), this, SLOT(applyChanges())); - }*/ - - //this->connect(options, SIGNAL(changesAvailable()), - //this, SLOT(enableButtons())); + settings->SetProxySettings(paletteProxy); } - // Add the widget to the stack. - this->Form->Stack->addWidget(options); - - // Add the page(s) to the map and the model. - if(container) - { - // If the path is not empty, use it as the page prefix. - QString prefix; - if(!path.isEmpty()) - { - prefix = path; - prefix.append("."); - } - - container->setPagePrefix(prefix); + // Disable buttons +// Ui::CustomSettingsWidget &ui = this->Internals->Ui; +// ui.buttonBox->button(QDialogButtonBox::Reset)->setEnabled(false); +// ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); - // Get the list of pages from the container. - QStringList pathList = container->getPageList(); - QStringList::Iterator iter = pathList.begin(); - for( ; iter != pathList.end(); ++iter) - { - this->Form->Pages.insert(prefix + *iter, options); - this->Form->Model->addPath(prefix + *iter); - } - } - else - { - this->Form->Pages.insert(path, options); - this->Form->Model->addPath(path); - } + // In theory, the above changes are undo-redo able, the only things that's not + // undo-able is the "serialized" values. Hence we just clear the undo stack. + CLEAR_UNDO_STACK(); } -void PVGUI_ParaViewSettingsPane::addOptions(pqOptionsContainer *options) +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::onRejected() { - this->addOptions(QString(), options); + // Disable buttons +// Ui::CustomSettingsWidget &ui = this->Internals->Ui; +// ui.buttonBox->button(QDialogButtonBox::Reset)->setEnabled(false); +// ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false); } -void PVGUI_ParaViewSettingsPane::removeOptions(pqOptionsPage *options) +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::onRestoreDefaults() { - if(!options) - { - return; - } + pqServer* server = pqActiveObjects::instance().activeServer(); + vtkSMSession * session = server->session(); - // Remove the widget from the stack. - this->Form->Stack->removeWidget(options); - - // See if the options use the apply button. - if(options->isApplyUsed()) + vtkNew iter; + iter->SetSession(session); + iter->SetModeToOneGroup(); + for (iter->Begin("settings"); !iter->IsAtEnd(); iter->Next()) { - this->Form->ApplyUseCount--; - /*if(this->Form->ApplyUseCount == 0) + vtkSMProxy* proxy = iter->GetProxy(); + if (proxy) { - //this->Form->ApplyNeeded = false; - //this->Form->ApplyButton->setEnabled(false); - //this->Form->ResetButton->setEnabled(false); - //this->Form->ApplyButton->hide(); - //this->Form->ResetButton->hide(); - //QObject::disconnect(this, SIGNAL(accepted()), this, SLOT(applyChanges())); - }*/ - - this->disconnect(options, 0, this, 0); + proxy->ResetPropertiesToXMLDefaults(); + } } - // Search the map for the paths to remove. - QMap::Iterator iter = this->Form->Pages.begin(); - while(iter != this->Form->Pages.end()) + vtkSMProxy* paletteProxy = server->proxyManager()->GetProxy("global_properties", "ColorPalette"); + if (paletteProxy) { - if(*iter == options) - { - QString path = iter.key(); - iter = this->Form->Pages.erase(iter); - - // Remove the item from the tree model as well. - QModelIndex index = this->Form->Model->getIndex(path); - QPersistentModelIndex parentIndex = index.parent(); - if(this->Form->Model->removeIndex(index)) - { - // Remove any empty parent items. - while(parentIndex.isValid() && - this->Form->Model->rowCount(parentIndex) == 0) - { - index = parentIndex; - parentIndex = index.parent(); - - // Make sure the index path isn't in the map. - path = this->Form->Model->getPath(index); - if(this->Form->Pages.find(path) == this->Form->Pages.end()) - { - if(!this->Form->Model->removeIndex(index)) - { - break; - } - } - } - } - } - else - { - ++iter; - } + paletteProxy->ResetPropertiesToXMLDefaults(); } } -void PVGUI_ParaViewSettingsPane::setCurrentPage(const QString &path) +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::onTabIndexChanged(int index) { - QModelIndex current = this->Form->Model->getIndex(path); - this->Form->PageNames->setCurrentIndex(current); + int stackWidgetIndex = this->Internals->TabToStackedWidgets[index]; + Ui::CustomSettingsWidget &ui = this->Internals->Ui; + ui.stackedWidget->setCurrentIndex(stackWidgetIndex); } -void PVGUI_ParaViewSettingsPane::applyChanges() +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::filterPanelWidgets() { - //if(this->Form->ApplyNeeded) - // { - BEGIN_UNDO_SET("Changed View Settings"); - emit this->aboutToApplyChanges(); - QMap::Iterator iter = this->Form->Pages.begin(); - for( ; iter != this->Form->Pages.end(); ++iter) - { - (*iter)->applyChanges(); - } - - //this->setApplyNeeded(false); - emit this->appliedChanges(); - END_UNDO_SET(); - //} + Ui::CustomSettingsWidget &ui = this->Internals->Ui; + emit this->filterWidgets( + ui.SearchBox->isAdvancedSearchActive(), ui.SearchBox->text()); } -void PVGUI_ParaViewSettingsPane::resetChanges() +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::onChangeAvailable() { - //if(this->Form->ApplyNeeded) - //{ - QMap::Iterator iter = this->Form->Pages.begin(); - for( ; iter != this->Form->Pages.end(); ++iter) - { - (*iter)->resetChanges(); - } +// Ui::CustomSettingsWidget &ui = this->Internals->Ui; +// ui.buttonBox->button(QDialogButtonBox::Reset)->setEnabled(true); +// ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true); +} - //this->setApplyNeeded(false); - //} +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::showRestartRequiredMessage() +{ + Ui::CustomSettingsWidget &ui = this->Internals->Ui; + ui.restartRequiredLabel->setVisible(true); + PVGUI_ParaViewSettingsPane::ShowRestartRequired = true; } -void PVGUI_ParaViewSettingsPane::changeCurrentPage() +//----------------------------------------------------------------------------- +void PVGUI_ParaViewSettingsPane::saveInQSettings( + const char* key, vtkSMProperty* smproperty) { - // Get the current index from the view. - QModelIndex current = this->Form->PageNames->currentIndex(); + pqSettings* settings = pqApplicationCore::instance()->settings(); - // Look up the path for the current index. - QString path = this->Form->Model->getPath(current); - QMap::Iterator iter = this->Form->Pages.find(path); - if(iter == this->Form->Pages.end()) + // FIXME: handle all property types. This will only work for single value + // properties. + if (smproperty->IsA("vtkSMIntVectorProperty") || + smproperty->IsA("vtkSMIdTypeVectorProperty")) { - // If no page is found, show the blank page. - this->Form->Stack->setCurrentWidget(this->Form->BlankPage); + settings->setValue(key, vtkSMPropertyHelper(smproperty).GetAsInt()); } - else + else if (smproperty->IsA("vtkSMDoubleVectorProperty")) { - this->Form->Stack->setCurrentWidget(*iter); - pqOptionsContainer *container = qobject_cast(*iter); - if(container) - { - // Get the path prefix from the container. - QString prefix = container->getPagePrefix(); - if(!prefix.isEmpty()) - { - // Remove the prefix from the path. - path.remove(0, prefix.length()); - } - - // Set the page on the container object. - container->setPage(path); - } + settings->setValue(key, vtkSMPropertyHelper(smproperty).GetAsDouble()); } -} - -//----------------------------------------------------------------------------- -void PVGUI_ParaViewSettingsPane::pluginLoaded(QObject* iface) -{ - pqViewOptionsInterface* viewOptions = - qobject_cast(iface); - if (viewOptions) + else if (smproperty->IsA("vtkSMStringVectorProperty")) { - foreach(QString viewtype, viewOptions->viewTypes()) - { - // Try to create global view options - pqOptionsContainer* globalOptions = - viewOptions->createGlobalViewOptions(viewtype, this); - if (globalOptions) - { - this->addOptions(globalOptions); - } - } + settings->setValue(key, vtkSMPropertyHelper(smproperty).GetAsString()); } } -void PVGUI_ParaViewSettingsPane::store(QtxResourceMgr* , QtxPreferenceMgr* ) -{ - applyChanges(); -} - -void PVGUI_ParaViewSettingsPane::retrieve(QtxResourceMgr* , QtxPreferenceMgr* ) -{ -} -