]> git.cworth.org Git - apitrace/blobdiff - gui/settingsdialog.cpp
Display captured snapshots as thumbnails.
[apitrace] / gui / settingsdialog.cpp
index e3d7864b6ae751cf5368ec8b77427f5e0371367c..42d8d83fff1e30c827cb2bc684382445ff6e043e 100644 (file)
@@ -38,6 +38,15 @@ void SettingsDialog::filtersFromModel(const ApiTraceFilter *model)
     functionsBox->setChecked(opts & ApiTraceFilter::ResolutionsFilter);
     errorsBox->setChecked(opts & ApiTraceFilter::ErrorsQueryFilter);
     statesBox->setChecked(opts & ApiTraceFilter::ExtraStateFilter);
+    customBox->setChecked(opts & ApiTraceFilter::CustomFilter);
+    QString customFilter = model->customFilterRegexp();
+    if (!customFilter.isEmpty()) {
+        customEdit->setText(customFilter);
+    } else {
+        //Add a common default
+        QLatin1String str("glXMakeContextCurrent");
+        customEdit->setText(str);
+    }
 
     QRegExp regexp = model->filterRegexp();
     if (regexp.isEmpty()) {
@@ -63,14 +72,22 @@ void SettingsDialog::filtersFromModel(const ApiTraceFilter *model)
 void SettingsDialog::filtersToModel(ApiTraceFilter *model)
 {
     ApiTraceFilter::FilterOptions opts = ApiTraceFilter::NullFilter;
-    if (extensionsBox->isChecked())
+    if (extensionsBox->isChecked()) {
         opts |= ApiTraceFilter::ExtensionsFilter;
-    if (functionsBox->isChecked())
+    }
+    if (functionsBox->isChecked()) {
         opts |= ApiTraceFilter::ResolutionsFilter;
-    if (errorsBox->isChecked())
+    }
+    if (errorsBox->isChecked()) {
         opts |= ApiTraceFilter::ErrorsQueryFilter;
-    if (statesBox->isChecked())
+    }
+    if (statesBox->isChecked()) {
         opts |= ApiTraceFilter::ExtraStateFilter;
+    }
+    if (customBox->isChecked()) {
+        opts |= ApiTraceFilter::CustomFilter;
+        m_filter->setCustomFilterRegexp(customEdit->text());
+    }
     m_filter->setFilterOptions(opts);
     if (showFilterBox->isChecked()) {
         m_filter->setFilterRegexp(QRegExp(showFilterEdit->text()));
@@ -92,6 +109,17 @@ void SettingsDialog::accept()
             return;
         }
     }
+    if (customBox->isChecked()) {
+        QRegExp regexp(customEdit->text());
+        if (!regexp.isValid()) {
+            QMessageBox::warning(
+                this,
+                tr("Invalid Regexp"),
+                tr("The currently set regular expression "
+                   "for custom events is invalid."));
+            return;
+        }
+    }
     filtersToModel(m_filter);
     QDialog::accept();
 }
@@ -117,4 +145,15 @@ void SettingsDialog::setFilterModel(ApiTraceFilter *filter)
     filtersFromModel(m_filter);
 }
 
+void SettingsDialog::setAPI(trace::API api)
+{
+    apiComboBox->setCurrentIndex(static_cast<int>(api));
+}
+
+trace::API SettingsDialog::getAPI(void)
+{
+    return static_cast<trace::API>(apiComboBox->currentIndex());
+
+}
+
 #include "settingsdialog.moc"