79 changes: 79 additions & 0 deletions src/libkstapp/filtermultipledialog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/***************************************************************************
* *
* copyright : (C) 2016 C. Barth Netterfield *
* netterfield@astro.utoronto.ca *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/

/* this class can be used to apply a filter to many vectors */
/* it will optionally replace the vectors in curves that use it */

#ifndef FILTERMULTIPLEDIALOG_H
#define FILTERMULTIPLEDIALOG_H

#include "dataobject.h"

#include <QDialog>
#include <QGridLayout>

namespace Ui {
class FilterMultipleDialog;
}

class QListWidgetItem;

namespace Kst {

class ObjectStore;

class FilterMultipleDialog : public QDialog
{
Q_OBJECT

public:
explicit FilterMultipleDialog(QWidget *parent = 0);
~FilterMultipleDialog();

void updateVectorLists();

virtual void show();

Q_SIGNALS:
void modified();

private Q_SLOTS:
void updateButtons();

void addButtonClicked();
void smartButtonClicked();
void removeButtonClicked();
void addAll();
void removeAll();

void availableDoubleClicked(QListWidgetItem * item);
void selectedDoubleClicked(QListWidgetItem * item);

void pluginChanged(QString plugin = QString());

void OKClicked();
void apply();

private:
Ui::FilterMultipleDialog *ui;
DataObjectConfigWidget* _configWidget;
QGridLayout* _layout;
ObjectStore *_store;


};

}
#endif // FILTERMULTIPLEDIALOG_H

// vim: ts=2 sw=2 et

284 changes: 284 additions & 0 deletions src/libkstapp/filtermultipledialog.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FilterMultipleDialog</class>
<widget class="QDialog" name="FilterMultipleDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>992</width>
<height>751</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Available</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="_availableVectors">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="whatsThis">
<string>The source file for the vectors selected in this list will be changed.</string>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string> </string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="_timestreams">
<property name="statusTip">
<string>Select timestream Y axis vectors</string>
</property>
<property name="text">
<string>Smart</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="_addAll">
<property name="statusTip">
<string>Select all in list</string>
</property>
<property name="whatsThis">
<string>Select all vectors in the list.</string>
</property>
<property name="text">
<string>All</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="_add">
<property name="statusTip">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="_remove">
<property name="whatsThis">
<string>Unselect all vectors in the list.</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="_removeAll">
<property name="whatsThis">
<string>Unselect all vectors in the list.</string>
</property>
<property name="text">
<string>All</string>
</property>
</widget>
</item>
<item>
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>80</width>
<height>51</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Selected</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="_selectedVectors">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="whatsThis">
<string>The source file for the vectors selected in this list will be changed.</string>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QComboBox" name="_pluginCombo"/>
</item>
<item>
<widget class="QLabel" name="_descriptionLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0" rowspan="4">
<widget class="QFrame" name="_inputOutputBox">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="_replaceCurves">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Rep&amp;lace in Curves</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="_copyCurves">
<property name="text">
<string>Copy cur&amp;ves</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QRadioButton" name="_neitherCurves">
<property name="text">
<string>&amp;Neither</string>
</property>
</widget>
</item>
<item row="5" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>FilterMultipleDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>FilterMultipleDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
21 changes: 21 additions & 0 deletions src/libkstapp/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
#include "applicationsettingsdialog.h"
#include "themedialog.h"
#include "differentiatecurvesdialog.h"
#include "filtermultipledialog.h"
#include "choosecolordialog.h"
#include "changedatasampledialog.h"
#include "changefiledialog.h"
Expand Down Expand Up @@ -90,6 +91,7 @@ MainWindow::MainWindow() :
_exportVectors(0),
_logDialog(0),
_differentiateCurvesDialog(0),
_filterMultipleDialog(0),
_chooseColorDialog(0),
_changeDataSampleDialog(0),
_changeFileDialog(0),
Expand Down Expand Up @@ -1294,6 +1296,11 @@ void MainWindow::createActions() {
_differentiateCurvesDialogAct->setIcon(KstGetIcon("kst_differentiatecurves"));
connect(_differentiateCurvesDialogAct, SIGNAL(triggered()), this, SLOT(showDifferentiateCurvesDialog()));

_filterMultipleDialogAct = new QAction(tr("&Filter Vectors"), this);
_filterMultipleDialogAct->setStatusTip(tr("Filter multiple vectors"));
_filterMultipleDialogAct->setIcon(KstGetIcon("kst_filter_vectors"));
connect(_filterMultipleDialogAct, SIGNAL(triggered()), this, SLOT(filterMultipleDialog()));

// *********************** Settings actions ************************************** //
_settingsDialogAct = new QAction(tr("&Configure Kst"), this);
_settingsDialogAct->setStatusTip(tr("Show Kst's Configuration Dialog"));
Expand Down Expand Up @@ -1481,6 +1488,7 @@ void MainWindow::createMenus() {
_toolsMenu->addAction(_changeFileDialogAct);
_toolsMenu->addAction(_chooseColorDialogAct);
_toolsMenu->addAction(_differentiateCurvesDialogAct);
_toolsMenu->addAction(_filterMultipleDialogAct);
_toolsMenu->addSeparator();
updateRecentDataFiles();

Expand Down Expand Up @@ -2079,6 +2087,19 @@ void MainWindow::showDifferentiateCurvesDialog() {
}


void MainWindow::filterMultipleDialog() {
if (!_filterMultipleDialog) {
_filterMultipleDialog = new FilterMultipleDialog(this);
}
if (_filterMultipleDialog->isVisible()) {
_filterMultipleDialog->raise();
_filterMultipleDialog->activateWindow();
}
_filterMultipleDialog->show();
}



void MainWindow::showChooseColorDialog() {
if (!_chooseColorDialog) {
_chooseColorDialog = new ChooseColorDialog(this);
Expand Down
4 changes: 4 additions & 0 deletions src/libkstapp/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class ExportGraphicsDialog;
class ExportVectorsDialog;
class LogDialog;
class DifferentiateCurvesDialog;
class FilterMultipleDialog;
class ChooseColorDialog;
class ChangeDataSampleDialog;
class ChangeFileDialog;
Expand Down Expand Up @@ -86,6 +87,7 @@ class MainWindow : public QMainWindow
void showSettingsDialog();
void showThemeDialog();
void showDifferentiateCurvesDialog();
void filterMultipleDialog();
void showChooseColorDialog();
void showChangeDataSampleDialog();
void showChangeFileDialog();
Expand Down Expand Up @@ -210,6 +212,7 @@ class MainWindow : public QMainWindow
ExportVectorsDialog *_exportVectors;
LogDialog *_logDialog;
DifferentiateCurvesDialog *_differentiateCurvesDialog;
FilterMultipleDialog *_filterMultipleDialog;
ChooseColorDialog *_chooseColorDialog;
ChangeDataSampleDialog *_changeDataSampleDialog;
ChangeFileDialog *_changeFileDialog;
Expand Down Expand Up @@ -301,6 +304,7 @@ class MainWindow : public QMainWindow
QAction *_themeDialogAct;

QAction *_differentiateCurvesDialogAct;
QAction *_filterMultipleDialogAct;
QAction *_chooseColorDialogAct;
QAction *_changeDataSampleDialogAct;
QAction *_changeFileDialogAct;
Expand Down
1 change: 1 addition & 0 deletions src/libkstmath/dataobject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ DataObjectConfigWidget* DataObject::pluginWidget(const QString& name) {
for (DataObjectPluginList::ConstIterator it = _pluginList.constBegin(); it != _pluginList.constEnd(); ++it) {
if ((*it)->pluginName() == name) {
if ((*it)->hasConfigWidget()) {

return (*it)->configWidget(&settingsObject());
}
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ class ConfigFilterButterworthBandPassPlugin : public Kst::DataObjectConfigWidget
public:
ConfigFilterButterworthBandPassPlugin(QSettings* cfg) : DataObjectConfigWidget(cfg), Ui_FilterButterworthBandPassConfig() {
_store = 0;

setupUi(this);


}

~ConfigFilterButterworthBandPassPlugin() {}
Expand Down Expand Up @@ -319,7 +322,9 @@ Kst::DataObject *ButterworthBandPassPlugin::create(Kst::ObjectStore *store, Kst:


Kst::DataObjectConfigWidget *ButterworthBandPassPlugin::configWidget(QSettings *settingsObject) const {

ConfigFilterButterworthBandPassPlugin *widget = new ConfigFilterButterworthBandPassPlugin(settingsObject);

return widget;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>500</width>
<height>100</height>
<height>110</height>
</rect>
</property>
<property name="minimumSize">
Expand Down Expand Up @@ -90,7 +90,14 @@
</widget>
</item>
<item row="3" column="1">
<widget class="Kst::ScalarSelector" name="_scalarBandwidth" native="true"/>
<widget class="Kst::ScalarSelector" name="_scalarBandwidth" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
Expand Down
8 changes: 1 addition & 7 deletions src/widgets/geticon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,11 @@
#include <QFile>
#include <QDebug>

QIcon KstGetIcon(QString icon_name) {
//static bool has_svg = true;

QString svg_name = ":svg_icons/"+icon_name+".svgz";
QIcon KstGetIcon(QString icon_name) { QString svg_name = ":svg_icons/"+icon_name+".svgz";
if (QFile::exists(svg_name)) {
//qDebug() << svg_name;
return QIcon(svg_name);
} else {
QString png_name = ":"+icon_name+".png";
//qDebug() << png_name;
return QIcon(png_name);
}
}

3 changes: 2 additions & 1 deletion src/widgets/scalarselector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ ScalarSelector::ScalarSelector(QWidget *parent, ObjectStore *store)

int size = style()->pixelMetric(QStyle::PM_SmallIconSize);

_newScalar->setIcon(KstGetIcon("kst_scalarnew"));
QIcon icon = KstGetIcon("kst_scalarnew");
_newScalar->setIcon(icon);
_editScalar->setIcon(KstGetIcon("kst_scalaredit"));

_newScalar->setFixedSize(size + 8, size + 8);
Expand Down