Skip to content

Commit

Permalink
add small filter widget mode #414
Browse files Browse the repository at this point in the history
  • Loading branch information
3ll3d00d committed Jan 7, 2021
1 parent a38e705 commit 749149f
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 65 deletions.
12 changes: 8 additions & 4 deletions src/main/python/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ def __init__(self, app, prefs, parent=None):
logger.info(f"Ignoring unknown cached preference for {DISPLAY_SHOW_FILTERS} - {selected}")
self.showFilters.blockSignals(False)
# filter view/model
self.actionShow_Filter_Widget.triggered.connect(lambda:self.editFilter(small=True))
self.filterView.setSelectionBehavior(QAbstractItemView.SelectRows)
self.filterView.doubleClicked.connect(self.editFilter)
from model.filter import FilterTableModel, FilterModel
Expand Down Expand Up @@ -575,15 +576,15 @@ def __apply_filter(self, filter_json):
signal.filter = filt
self.__filter_model.filter = filt

def addFilter(self):
def addFilter(self, small=False):
'''
Adds a filter via the filter dialog.
'''
from model.filter import FilterDialog
FilterDialog(self.preferences, self.__get_selected_signal(), self.__filter_model,
lambda: self.__magnitude_model.redraw(), parent=self).show()
lambda: self.__magnitude_model.redraw(), parent=self, small=small).show()

def editFilter(self):
def editFilter(self, small=False):
'''
Edits the currently selected filter via the filter dialog.
'''
Expand All @@ -593,7 +594,10 @@ def editFilter(self):
from model.filter import FilterDialog
FilterDialog(self.preferences, signal, self.__filter_model,
lambda: self.__magnitude_model.redraw(),
selected_filter=signal.filter[selection.selectedRows()[0].row()], parent=self).show()
selected_filter=signal.filter[selection.selectedRows()[0].row()],
parent=self, small=small).show()
else:
self.addFilter(small=small)

def deleteFilter(self):
'''
Expand Down
59 changes: 43 additions & 16 deletions src/main/python/model/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
from model.magnitude import MagnitudeModel
from model.preferences import SHOW_ALL_FILTERS, SHOW_NO_FILTERS, FILTER_COLOURS, DISPLAY_SHOW_FILTERS, DISPLAY_Q_STEP, \
DISPLAY_GAIN_STEP, DISPLAY_S_STEP, DISPLAY_FREQ_STEP, get_filter_colour, FILTERS_DEFAULT_Q, FILTERS_DEFAULT_FREQ, \
FILTERS_GEOMETRY, FILTERS_DEFAULT_HS_FREQ, FILTERS_DEFAULT_HS_Q, FILTERS_DEFAULT_PEAK_FREQ, FILTERS_DEFAULT_PEAK_Q
FILTERS_GEOMETRY, FILTERS_DEFAULT_HS_FREQ, FILTERS_DEFAULT_HS_Q, FILTERS_DEFAULT_PEAK_FREQ, FILTERS_DEFAULT_PEAK_Q, \
FILTERS_GEOMETRY_SMALL
from ui.filter import Ui_editFilterDialog

logger = logging.getLogger('filter')
Expand Down Expand Up @@ -245,8 +246,9 @@ class FilterDialog(QDialog, Ui_editFilterDialog):
passthrough = Passthrough()

def __init__(self, preferences, signal, filter_model, redraw_main, selected_filter=None, parent=None,
valid_filter_types=None, **kwargs):
valid_filter_types=None, small=False, **kwargs):
self.__preferences = preferences
self.__small_mode = small
super(FilterDialog, self).__init__(parent) if parent is not None else super(FilterDialog, self).__init__()
self.__redraw_main = redraw_main
# for shelf filter, allow input via Q or S not both
Expand Down Expand Up @@ -291,26 +293,44 @@ def __init__(self, preferences, signal, filter_model, redraw_main, selected_filt
self.workingFilterView.selectRow(idx)
if self.__selected_id is None:
self.__add_working_filter()
# init the chart
self.__magnitude_model = MagnitudeModel('preview', self.previewChart, preferences,
self.__get_data(), 'Filter', fill_primary=True,
secondary_data_provider=self.__get_data('phase'),
secondary_name='Phase', secondary_prefix='deg', fill_secondary=False,
db_range_calc=dBRangeCalculator(30, expand=True),
y2_range_calc=PhaseRangeCalculator(), show_y2_in_legend=False,
**kwargs)
if small is False:
# init the chart
self.__magnitude_model = MagnitudeModel('preview', self.previewChart, preferences,
self.__get_data(), 'Filter', fill_primary=True,
secondary_data_provider=self.__get_data('phase'),
secondary_name='Phase', secondary_prefix='deg', fill_secondary=False,
db_range_calc=dBRangeCalculator(30, expand=True),
y2_range_calc=PhaseRangeCalculator(), show_y2_in_legend=False,
**kwargs)
else:
self.previewChart.setVisible(False)
self.fullRangeButton.setVisible(False)
self.limitsButton.setVisible(False)
self.subOnlyButton.setVisible(False)
self.acceptSnapButton.setVisible(False)
self.loadSnapButton.setVisible(False)
self.resetButton.setVisible(False)
self.snapFilterButton.setVisible(False)
self.snapLabel.setVisible(False)
self.optimiseButton.setVisible(False)
self.optimiseLabel.setVisible(False)
self.targetBiquadCount.setVisible(False)
self.__restore_geometry()
self.filterType.setFocus()

def __restore_geometry(self):
''' loads the saved window size '''
geometry = self.__preferences.get(FILTERS_GEOMETRY)
if geometry is not None:
self.restoreGeometry(geometry)
if self.__small_mode is True:
self.adjustSize()
else:
geometry = self.__preferences.get(FILTERS_GEOMETRY)
if geometry is not None:
self.restoreGeometry(geometry)

def closeEvent(self, QCloseEvent):
''' Stores the window size on close '''
self.__preferences.set(FILTERS_GEOMETRY, self.saveGeometry())
if self.__small_mode is False:
self.__preferences.set(FILTERS_GEOMETRY, self.saveGeometry())
super().closeEvent(QCloseEvent)

def __select_working_filter(self):
Expand Down Expand Up @@ -457,12 +477,19 @@ def __copy_snapshot_filter(self):
''' adds a new filter. '''
self.__add_filter(self.__make_copy_of_filter(), self.__snapshot, self.snapshotFilterView)

@staticmethod
def __add_filter(new_filter, filter_model: FilterModel, filter_view: QTableView):
def __add_filter(self, new_filter, filter_model: FilterModel, filter_view: QTableView):
filter_model.save(new_filter)
for idx, f in enumerate(filter_model):
if f.id == new_filter.id:
filter_view.selectRow(idx)
if self.filterOrder.isVisible():
self.filterOrder.setFocus()
elif self.freq.isVisible():
self.freq.setFocus()
elif self.f0.isVisible():
self.f0.setFocus()
elif self.filterGain.isVisible():
self.filterGain.setFocus()

def __make_default_filter(self, filter_type: typing.Type[Biquad] = LowShelf):
''' Creates a new filter using the default preferences or by copying the currently selected filter. '''
Expand Down
1 change: 1 addition & 0 deletions src/main/python/model/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
FILTERS_DEFAULT_PEAK_Q = 'filters/defaults/peak_q'
FILTERS_DEFAULT_PEAK_FREQ = 'filters/defaults/peak_freq'
FILTERS_GEOMETRY = 'filters/geometry'
FILTERS_GEOMETRY_SMALL = 'filters/geometry_small'

SCREEN_GEOMETRY = 'screen/geometry'
SCREEN_WINDOW_STATE = 'screen/window_state'
Expand Down
5 changes: 5 additions & 0 deletions src/main/python/ui/beq.py
Original file line number Diff line number Diff line change
Expand Up @@ -623,6 +623,8 @@ def setupUi(self, MainWindow):
self.actionBrowse_Catalogue.setObjectName("actionBrowse_Catalogue")
self.actionManage_JRiver_MC = QtWidgets.QAction(MainWindow)
self.actionManage_JRiver_MC.setObjectName("actionManage_JRiver_MC")
self.actionShow_Filter_Widget = QtWidgets.QAction(MainWindow)
self.actionShow_Filter_Widget.setObjectName("actionShow_Filter_Widget")
self.menuHelp.addAction(self.actionUser_Guide)
self.menuHelp.addAction(self.actionShow_Logs)
self.menuHelp.addSeparator()
Expand Down Expand Up @@ -653,6 +655,7 @@ def setupUi(self, MainWindow):
self.menuFile.addAction(self.actionSave_Filter)
self.menuFile.addAction(self.actionClear_Filters)
self.menuFile.addAction(self.menuPresets.menuAction())
self.menuFile.addAction(self.actionShow_Filter_Widget)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actionAdd_BEQ_Filter)
self.menuFile.addAction(self.actionExport_BEQ_Filter)
Expand Down Expand Up @@ -893,5 +896,7 @@ def retranslateUi(self, MainWindow):
self.actionBrowse_Catalogue.setShortcut(_translate("MainWindow", "Ctrl+Alt+C"))
self.actionManage_JRiver_MC.setText(_translate("MainWindow", "Manage JRiver MC Filters"))
self.actionManage_JRiver_MC.setShortcut(_translate("MainWindow", "Ctrl+J"))
self.actionShow_Filter_Widget.setText(_translate("MainWindow", "Show Filter Widget"))
self.actionShow_Filter_Widget.setShortcut(_translate("MainWindow", "Ctrl+Alt+="))
from app import PlotWidgetWithDateAxis
from mpl import MplWidget
9 changes: 9 additions & 0 deletions src/main/python/ui/beq.ui
Original file line number Diff line number Diff line change
Expand Up @@ -1154,6 +1154,7 @@
<addaction name="actionSave_Filter"/>
<addaction name="actionClear_Filters"/>
<addaction name="menuPresets"/>
<addaction name="actionShow_Filter_Widget"/>
<addaction name="separator"/>
<addaction name="actionAdd_BEQ_Filter"/>
<addaction name="actionExport_BEQ_Filter"/>
Expand Down Expand Up @@ -1535,6 +1536,14 @@
<string>Ctrl+J</string>
</property>
</action>
<action name="actionShow_Filter_Widget">
<property name="text">
<string>Show Filter Widget</string>
</property>
<property name="shortcut">
<string>Ctrl+Alt+=</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
Expand Down
38 changes: 19 additions & 19 deletions src/main/python/ui/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
class Ui_editFilterDialog(object):
def setupUi(self, editFilterDialog):
editFilterDialog.setObjectName("editFilterDialog")
editFilterDialog.resize(1390, 940)
editFilterDialog.resize(1390, 982)
self.panes = QtWidgets.QGridLayout(editFilterDialog)
self.panes.setObjectName("panes")
self.viewPane = QtWidgets.QGridLayout()
Expand Down Expand Up @@ -122,17 +122,6 @@ def setupUi(self, editFilterDialog):
self.freqLabel = QtWidgets.QLabel(editFilterDialog)
self.freqLabel.setObjectName("freqLabel")
self.paramsPane.addWidget(self.freqLabel, 6, 0, 1, 1)
self.hboxlayout = QtWidgets.QHBoxLayout()
self.hboxlayout.setObjectName("hboxlayout")
self.showIndividual = QtWidgets.QCheckBox(editFilterDialog)
self.showIndividual.setChecked(True)
self.showIndividual.setObjectName("showIndividual")
self.hboxlayout.addWidget(self.showIndividual)
self.showPhase = QtWidgets.QCheckBox(editFilterDialog)
self.showPhase.setChecked(False)
self.showPhase.setObjectName("showPhase")
self.hboxlayout.addWidget(self.showPhase)
self.paramsPane.addLayout(self.hboxlayout, 13, 0, 1, 2)
self.ltOutLayout = QtWidgets.QHBoxLayout()
self.ltOutLayout.setObjectName("ltOutLayout")
self.fp = NoFillDoubleSpinBox(editFilterDialog)
Expand Down Expand Up @@ -237,13 +226,13 @@ def setupUi(self, editFilterDialog):
self.paramsPane.addWidget(self.filterQLabel, 7, 0, 1, 1)
self.optimiseLayout = QtWidgets.QHBoxLayout()
self.optimiseLayout.setObjectName("optimiseLayout")
self.label_2 = QtWidgets.QLabel(editFilterDialog)
self.optimiseLabel = QtWidgets.QLabel(editFilterDialog)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.optimiseLayout.addWidget(self.label_2)
self.optimiseLabel.setFont(font)
self.optimiseLabel.setObjectName("optimiseLabel")
self.optimiseLayout.addWidget(self.optimiseLabel)
self.optimiseButton = QtWidgets.QToolButton(editFilterDialog)
self.optimiseButton.setObjectName("optimiseButton")
self.optimiseLayout.addWidget(self.optimiseButton)
Expand Down Expand Up @@ -312,6 +301,17 @@ def setupUi(self, editFilterDialog):
self.addWorkingHighShelfButton.setObjectName("addWorkingHighShelfButton")
self.shortcutLayout.addWidget(self.addWorkingHighShelfButton)
self.paramsPane.addLayout(self.shortcutLayout, 2, 0, 1, 2)
self.checkboxLayout = QtWidgets.QHBoxLayout()
self.checkboxLayout.setObjectName("checkboxLayout")
self.showIndividual = QtWidgets.QCheckBox(editFilterDialog)
self.showIndividual.setChecked(True)
self.showIndividual.setObjectName("showIndividual")
self.checkboxLayout.addWidget(self.showIndividual)
self.showPhase = QtWidgets.QCheckBox(editFilterDialog)
self.showPhase.setChecked(False)
self.showPhase.setObjectName("showPhase")
self.checkboxLayout.addWidget(self.showPhase)
self.paramsPane.addLayout(self.checkboxLayout, 13, 0, 1, 3)
self.paramsPane.setColumnStretch(0, 1)
self.paramsPane.setColumnStretch(1, 4)
self.panes.addLayout(self.paramsPane, 0, 0, 1, 1)
Expand Down Expand Up @@ -413,8 +413,6 @@ def retranslateUi(self, editFilterDialog):
self.qStepButton.setText(_translate("editFilterDialog", "..."))
self.freqStepButton.setText(_translate("editFilterDialog", "..."))
self.freqLabel.setText(_translate("editFilterDialog", "Freq"))
self.showIndividual.setText(_translate("editFilterDialog", "Show Individual Filters"))
self.showPhase.setText(_translate("editFilterDialog", "Show Phase Response"))
self.typeLabel.setText(_translate("editFilterDialog", "Type"))
self.addWorkingRowButton.setText(_translate("editFilterDialog", "..."))
self.addWorkingRowButton.setShortcut(_translate("editFilterDialog", "="))
Expand All @@ -430,7 +428,7 @@ def retranslateUi(self, editFilterDialog):
self.importSnapshotButton.setText(_translate("editFilterDialog", "..."))
self.sStepButton.setText(_translate("editFilterDialog", "..."))
self.filterQLabel.setText(_translate("editFilterDialog", "Q"))
self.label_2.setText(_translate("editFilterDialog", "Optimise"))
self.optimiseLabel.setText(_translate("editFilterDialog", "Optimise"))
self.optimiseButton.setText(_translate("editFilterDialog", "..."))
self.saveButton.setShortcut(_translate("editFilterDialog", "Return"))
self.exitButton.setText(_translate("editFilterDialog", "..."))
Expand All @@ -443,5 +441,7 @@ def retranslateUi(self, editFilterDialog):
self.addWorkingLowShelfButton.setShortcut(_translate("editFilterDialog", "Ctrl+Alt+2"))
self.addWorkingHighShelfButton.setText(_translate("editFilterDialog", "HS"))
self.addWorkingHighShelfButton.setShortcut(_translate("editFilterDialog", "Ctrl+Alt+3"))
self.showIndividual.setText(_translate("editFilterDialog", "Show Individual Filters"))
self.showPhase.setText(_translate("editFilterDialog", "Show Phase Response"))
from app import NoFillDoubleSpinBox
from mpl import MplWidget
52 changes: 26 additions & 26 deletions src/main/python/ui/filter.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1390</width>
<height>940</height>
<height>982</height>
</rect>
</property>
<property name="windowTitle">
Expand Down Expand Up @@ -275,30 +275,6 @@
</property>
</widget>
</item>
<item row="13" column="0" colspan="2">
<layout class="QHBoxLayout">
<item>
<widget class="QCheckBox" name="showIndividual">
<property name="text">
<string>Show Individual Filters</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="showPhase">
<property name="text">
<string>Show Phase Response</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="12" column="1">
<layout class="QHBoxLayout" name="ltOutLayout">
<item>
Expand Down Expand Up @@ -535,7 +511,7 @@
<item row="17" column="0" colspan="2">
<layout class="QHBoxLayout" name="optimiseLayout">
<item>
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="optimiseLabel">
<property name="font">
<font>
<weight>75</weight>
Expand Down Expand Up @@ -713,6 +689,30 @@
</item>
</layout>
</item>
<item row="13" column="0" colspan="3">
<layout class="QHBoxLayout" name="checkboxLayout">
<item>
<widget class="QCheckBox" name="showIndividual">
<property name="text">
<string>Show Individual Filters</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="showPhase">
<property name="text">
<string>Show Phase Response</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
Expand Down

0 comments on commit 749149f

Please sign in to comment.