pyfda.input_widgets package

Submodules

pyfda.input_widgets.amplitude_specs module

Widget for entering amplitude specifications

Author: Christian Münker

class pyfda.input_widgets.amplitude_specs.AmplitudeSpecs(parent=None, title='Amplitude Specs', objectName='')[source]

Bases: QWidget

Build and update widget for entering the amplitude specifications like A_SB, A_PB etc.

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

eventFilter(source, event)[source]

Filter all events generated by the QLineEdit widgets. Source and type of all events generated by monitored objects are passed to this eventFilter, evaluated and passed on to the next hierarchy level.

  • When a QLineEdit widget gains input focus (QEvent.FocusIn`), display the stored value from filter dict with full precision

  • When a key is pressed inside the text field, set the spec_edited flag to True.

  • When a QLineEdit widget loses input focus (QEvent.FocusOut`), store current value in linear format with full precision (only if `spec_edited`== True) and display the stored value in selected format

load_dict()[source]

Reload and reformat the amplitude textfields from filter dict when a new filter design algorithm is selected or when the user has changed the unit (V / W / dB):

  • Reload amplitude entries from filter dictionary and convert to selected to reflect changed settings unit.

  • Update the lineedit fields, rounded to specified format.

process_sig_rx(dict_sig=None)[source]

Process signals coming in via subwidgets and sig_rx

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

update_UI(new_labels=())[source]

Called from filter_specs.update_UI() and target_specs.update_UI(). Set labels and get corresponding values from filter dictionary. When number of entries has changed, the layout of subwidget is rebuilt, using

  • self.qlabels, a list with references to existing QLabel widgets,

  • new_labels, a list of strings from the filter_dict for the current filter design

  • ‘num_new_labels`, their number

  • self.n_cur_labels, the number of currently visible labels / qlineedit fields

pyfda.input_widgets.freq_specs module

Subwidget for entering frequency specifications

class pyfda.input_widgets.freq_specs.FreqSpecs(parent=None, title='Frequency Specs', objectName='')[source]

Bases: QWidget

Build and update widget for entering the frequency specifications like F_sb, F_pb etc.

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

eventFilter(source, event)[source]

Filter all events generated by the QLineEdit widgets. Source and type of all events generated by monitored objects are passed to this eventFilter, evaluated and passed on to the next hierarchy level.

  • When a QLineEdit widget gains input focus (QEvent.FocusIn`), display the stored value from filter dict with full precision

  • When a key is pressed inside the text field, set the spec_edited flag to True.

  • When a QLineEdit widget loses input focus (QEvent.FocusOut`), store current value normalized to f_S with full precision (only if `spec_edited`== True) and display the stored value in selected format

load_dict()[source]

Triggered by FocusIn, FocusOut and ESC-Key in LineEdit fields and by `sort_dict_freqs():

load_dict() is called during init and when the frequency unit or the

sampling frequency have been changed via filter_specs.update_UI() -> self.update_UI() -> self.sort_dict_freqs()

  • Reload textfields from filter dictionary

  • Transform the displayed frequency spec input fields according to the units setting (i.e. f_S). Spec entries are always stored normalized w.r.t. f_S in the dictionary; when f_S or the unit are changed, only the displayed values of the frequency entries are updated, not the dictionary!

  • Update the displayed frequency unit

It should be called when specs_changed or data_changed is emitted at another place, indicating that a reload is required.

process_sig_rx(dict_sig=None)[source]

Process signals coming in via subwidgets and sig_rx

recalc_freqs()[source]

Update normalized frequencies when absolute frequencies are locked and update frequency unit. This is called by via signal {‘view_changed’: ‘f_S’}.

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sort_dict_freqs()[source]
  • Sort visible filter dict frequency spec entries with ascending frequency if

    the sort button is activated

  • Update the visible QLineEdit frequency widgets

The method is called when: - update_UI has been called after changing the filter design algorithm

that the response type has been changed eg. from LP -> HP, requiring a different order of frequency entries

  • a frequency spec field has been edited

  • the sort button has been clicked (from filter_specs.py)

update_UI(new_labels=())[source]

Called by input_specs.update_UI() and target_specs.update_UI() Set labels and get corresponding values from filter dictionary. When number of entries has changed, the layout of subwidget is rebuilt, using

  • self.qlabels, a list with references to existing QLabel widgets,

  • new_labels, a list of strings from the filter_dict for the current filter design

  • ‘num_new_labels`, their number

  • self.n_cur_labels, the number of currently visible labels / qlineedit fields

update_f_display(source)[source]

Update frequency display when frequency or sampling frequency has been updated. Depending on whether it has focus or not, the value is displayed with full precision or rounded.

Triggered by

pyfda.input_widgets.freq_units module

Subwidget for entering frequency units

class pyfda.input_widgets.freq_units.FreqUnits(parent=None, title='Frequency Units', objectName='')[source]

Bases: QWidget

Build and update widget for entering frequency unit, frequency range and sampling frequency f_S

The following key-value pairs of the fb.fil[0] dict are modified:

  • ‘freq_specs_unit’ : The unit (‘f_S’, ‘f_Ny’, ‘Hz’ etc.) as a string

  • ‘freqSpecsRange’A list with two entries for minimum and maximum frequency

    values for labelling the frequency axis

  • ‘f_S’ : The sampling frequency for referring frequency values to as a float

  • ‘f_max’ : maximum frequency for scaling frequency axis

  • ‘plt_fUnit’: frequency unit as string

  • ‘plt_tUnit’: time unit as string

  • ‘plt_fLabel’: label for frequency axis

  • ‘plt_tLabel’: label for time axis

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

eventFilter(source, event)[source]

Filter all events generated by the QLineEdit f_S widget. Source and type of all events generated by monitored objects are passed to this eventFilter, evaluated and passed on to the next hierarchy level.

  • When a QLineEdit widget gains input focus (QEvent.FocusIn`), display the stored value from filter dict with full precision

  • When a key is pressed inside the text field, set the spec_edited flag to True.

  • When a QLineEdit widget loses input focus (QEvent.FocusOut`), store current value with full precision (only if `spec_edited`== True) and display the stored value in selected format. Emit ‘view_changed’:’f_S’

  • When f_S has been changed, update fb.fil[0][‘f_S’], emit {‘view_changed’: ‘f_S’} to update other widgets and only then update {‘f_S_prev’: fb.fil[0][‘f_S’]} to allow correction of normalized frequency with the old value of f_S.

load_dict()[source]

Reload comboBox settings and textfields from filter dictionary Block signals during update of combobox / lineedit widgets This is called from input_specs.load_dict()

process_sig_rx(dict_sig=None)[source]

Process signals coming from - FFT window widget - qfft_win_select

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

update_UI(emit=True)[source]

update_UI is called - during init (direct call) - when the unit combobox is changed (signal-slot) - when a signal {‘view_changed’: ‘f_S’} or {‘data_changed’: …} has been

received. In this case, the UI is updated from the fb.fil[0] dictionary and no signal is emitted (emit==False).

Set various scale factors and labels depending on the setting of the unit combobox.

Update the freqSpecsRange and finally, emit ‘view_changed’:’f_S’ signal

pyfda.input_widgets.input_coeffs module

pyfda.input_widgets.input_coeffs_ui module

pyfda.input_widgets.input_fixpoint_specs module

pyfda.input_widgets.input_info module

Widget for displaying infos about filter and filter design method and debugging infos

class pyfda.input_widgets.input_info.Input_Info(parent=None)[source]

Bases: QWidget

Create widget for displaying infos about filter specs and filter design method

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

load_dict()[source]

update docs and filter performance

process_sig_rx(dict_sig=None)[source]

Process signals coming from sig_rx

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

pyfda.input_widgets.input_info.classes = {'Input_Info': 'Info'}

display name

Type:

Dict containing class name

pyfda.input_widgets.input_info_about module

Widget for exporting / importing and saving / loading filter data

class pyfda.input_widgets.input_info_about.AboutWindow(parent=None)[source]

Bases: QDialog

Create a pop-up widget for the About Window.

collect_info()[source]

Collect information about version, imported modules in strings:

self.info_strGeneral info, copyright, version, link to readthedocs

This info is always visible.

self.about_str: OS, user name, directories, versions of installed software

display_GPL_lic()[source]

Display GPL license

display_MIT_lic()[source]

Display MIT license

display_about_str()[source]

Display general “About” info

display_changelog()[source]

Display changelog

to_clipboard(my_string, html=False)[source]

Copy version info to clipboard TODO: This is stupid: md -> html -> md ?!

pyfda.input_widgets.input_pz module

pyfda.input_widgets.input_pz_ui module

Create the UI for the FilterPZ class

class pyfda.input_widgets.input_pz_ui.Input_PZ_UI(parent=None)[source]

Bases: QWidget

Create the UI for the InputPZ class

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

process_sig_rx(dict_sig=None)[source]

Process signals coming from the CSV pop-up window

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

pyfda.input_widgets.input_specs module

pyfda.input_widgets.input_tab_widgets module

Tabbed container for all input widgets

class pyfda.input_widgets.input_tab_widgets.InputTabWidgets(parent=None, objectName='input_tab_widgets_inst')[source]

Bases: QWidget

Create a tabbed widget for all input subwidgets in the list fb.input_widgets_list. This list is compiled at startup in pyfda.libs.tree_builder.Tree_Builder.

current_tab_changed()[source]
emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

log_rx(dict_sig=None)[source]

Enable self.sig_rx.connect(self.log_rx) above for debugging.

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

pyfda.input_widgets.select_filter module

Subwidget for selecting the filter, consisting of combo boxes for: - Response Type (LP, HP, Hilbert, …) - Filter Type (IIR, FIR, CIC …) - Filter Class (Butterworth, …)

class pyfda.input_widgets.select_filter.SelectFilter(parent=None, objectName='select_filter_inst')[source]

Bases: QWidget

Construct and read combo boxes for selecting the filter, consisting of the following hierarchy:

  1. Response Type rt (LP, HP, Hilbert, …)

  2. Filter Type ft (IIR, FIR, CIC …)

  3. Filter Class (Butterworth, …)

Every time a combo box is changed manually, the filter tree for the selected response resp. filter type is read and the combo box(es) further down in the hierarchy are populated according to the available combinations.

sig_tx({‘filt_changed’}) is emitted and propagated to input_filter_specs.py where it triggers the recreation of all subwidgets.

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

load_dict()[source]

Reload comboboxes from filter dictionary to update changed settings after loading a filter design from disk. load_dict uses the automatism of _set_response_type etc. of checking whether the previously selected filter design method is also available for the new combination.

load_filter_order(enb_signal=False)[source]
Called by set_design_method or from InputSpecs (with enb_signal = False),

load filter order setting from fb.fil[0] and update widgets

process_sig_rx(dict_sig)[source]

Process signals coming in via sig_rx

All signals terminate here.

The sender name of signals coming in from local subwidgets is changed to its parent widget to prevent infinite loops.

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

pyfda.input_widgets.target_specs module

Widget collecting subwidgets for the target filter specifications (currently only amplitude and frequency specs.)

class pyfda.input_widgets.target_specs.TargetSpecs(parent=None, title='Target Specs', objectName='')[source]

Bases: QWidget

Build and update widget for entering the target specifications (frequencies and amplitudes) like F_SB, F_PB, A_SB, etc.

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

process_sig_rx(dict_sig=None)[source]

Process signals coming in via subwidgets and sig_rx

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx_local

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

update_UI(new_labels=())[source]

Called when a new filter design algorithm has been selected - Pass new frequency and amplitude labels to the amplitude and frequency

spec widgets. The first element of the ‘amp’ and the ‘freq’ tuple is the state with ‘u’ for ‘unused’ and ‘d’ for disabled

  • The filt_changed signal is emitted already by select_filter.py

pyfda.input_widgets.weight_specs module

Widget for entering weight specifications

class pyfda.input_widgets.weight_specs.WeightSpecs(parent=None, objectName='')[source]

Bases: QWidget

Build and update widget for entering the weight specifications like W_SB, W_PB etc.

emit(dict_sig: dict = {}, sig_name: str = 'sig_tx') None

Emit a signal self.<sig_name> (defined as a class attribute) with a dict dict_sig using Qt’s emit().

  • Add the keys ‘id’ and ‘class’ with id resp. class name of the calling instance if not contained in the dict

  • If key ‘ttl’ is in the dict and its value is less than one, terminate the signal. Otherwise, reduce the value by one.

  • If the sender has passed an objectName, add it with the key “sender_name” to the dict.

eventFilter(source, event)[source]

Filter all events generated by the QLineEdit widgets. Source and type of all events generated by monitored objects are passed to this eventFilter, evaluated and passed on to the next hierarchy level.

  • When a QLineEdit widget gains input focus (QEvent.FocusIn`), display the stored value from filter dict with full precision

  • When a key is pressed inside the text field, set the spec_edited flag to True.

  • When a QLineEdit widget loses input focus (QEvent.FocusOut`), store current value in linear format with full precision (only if `spec_edited`== True) and display the stored value in selected format

load_dict()[source]

Reload textfields from filter dictionary to update changed settings

process_sig_rx(dict_sig=None)[source]

Process signals coming in via subwidgets and sig_rx

sig_rx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

sig_tx

int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Type:

pyqtSignal(*types, name

Type:

str = …, revision

update_UI(new_labels=[])[source]

Called from filter_specs.update_UI() Set labels and get corresponding values from filter dictionary. When number of entries has changed, the layout of subwidget is rebuilt, using

  • self.qlabels, a list with references to existing QLabel widgets,

  • new_labels, a list of strings from the filter_dict for the current

    filter design

  • ‘num_new_labels`, their number

  • self.n_cur_labels, the number of currently visible labels / qlineedit fields

Module contents