Source code for toolbox.utils

#
# -------------------------------
#
# (c) Aurelie Vancraeyenest 2019
# -------------------------------
#

import itertools
from PyQt5 import QtWidgets


[docs]def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = itertools.tee(iterable, 2) next(b, None) return zip(a, b)
[docs]def tripletwise(iterable): "s -> (s0,s1,s2), (s1,s2,s3), (s2,s3,s4), ..." a, b, c = itertools.tee(iterable, 3) next(b, None) next(c, None) next(c, None) return zip(a, b, c)
[docs]def unique_everseen(iterable, key=None): "List unique elements, preserving order. Remember all elements ever seen." # unique_everseen('AAAABBBCCDAABBB') --> A B C D # unique_everseen('ABBCcAD', str.lower) --> A B C D seen = set() seen_add = seen.add if key is None: for element in itertools.filterfalse(seen.__contains__, iterable): seen_add(element) yield element else: for element in iterable: k = key(element) if k not in seen: seen_add(k) yield element
[docs]def disableChildOf(widget, exceptThis=None): """ Disable all the interactive widgets of a group/parent Parameters ---------- widget : QtWidget name, e.g. self.widgetName parent/group widget name for which all members will be disabled exceptThis : QtWidget name, e.g. self.widgetName name of the widget that remains enabled """ for widg in widget.findChildren((QtWidgets.QLineEdit, QtWidgets.QRadioButton, QtWidgets.QCheckBox, QtWidgets.QPushButton)): if widg == exceptThis: continue widg.setEnabled(False)
[docs]def enableChildOf(widget, exceptThis=None): """ Enable all the interactive widgets of a group/parent Parameters ---------- widget : QtWidget name, e.g. self.widgetName parent/group widget name for which all members will be enabled exceptThis : QtWidget name, e.g. self.widgetName name of the widget that remains disabled """ for widg in widget.findChildren((QtWidgets.QLineEdit, QtWidgets.QRadioButton, QtWidgets.QCheckBox, QtWidgets.QPushButton)): if widg == exceptThis: continue widg.setEnabled(True)