From 5a8cb6f5e3261c15e078aa47ddfc6f0a883408a1 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sun, 20 Oct 2013 15:53:59 -0400 Subject: [PATCH] Implemented super() inheritance style suggested by PyQt5 --- qt/base/app.py | 4 ++-- qt/base/deletion_options.py | 4 ++-- qt/base/details_dialog.py | 6 +++--- qt/base/details_table.py | 4 ++-- qt/base/directories_dialog.py | 4 ++-- qt/base/directories_model.py | 6 +++--- qt/base/ignore_list_dialog.py | 6 +++--- qt/base/preferences_dialog.py | 4 ++-- qt/base/prioritize_dialog.py | 4 ++-- qt/base/problem_dialog.py | 4 ++-- qt/base/problem_table.py | 4 ++-- qt/base/result_window.py | 4 ++-- qt/base/results_model.py | 6 +++--- qt/se/preferences_dialog.py | 4 ++-- qtlib/about_box.py | 4 ++-- qtlib/error_report_dialog.py | 6 +++--- qtlib/progress_window.py | 8 ++++---- qtlib/radio_box.py | 4 ++-- qtlib/recent.py | 4 ++-- qtlib/reg_demo_dialog.py | 4 ++-- qtlib/reg_submit_dialog.py | 4 ++-- qtlib/search_edit.py | 8 ++++---- qtlib/selectable_list.py | 12 ++++++------ qtlib/table.py | 4 ++-- qtlib/tree_model.py | 9 ++++----- 25 files changed, 65 insertions(+), 66 deletions(-) diff --git a/qt/base/app.py b/qt/base/app.py index 65125353..0250d9ee 100644 --- a/qt/base/app.py +++ b/qt/base/app.py @@ -43,8 +43,8 @@ class DupeGuru(QObject): PREFERENCES_CLASS = None PREFERENCES_DIALOG_CLASS = None - def __init__(self): - QObject.__init__(self) + def __init__(self, **kwargs): + super().__init__(**kwargs) self.prefs = self.PREFERENCES_CLASS() self.prefs.load() self.model = self.MODELCLASS(view=self) diff --git a/qt/base/deletion_options.py b/qt/base/deletion_options.py index 53bd916f..8559658a 100644 --- a/qt/base/deletion_options.py +++ b/qt/base/deletion_options.py @@ -15,9 +15,9 @@ from qtlib.radio_box import RadioBox tr = trget('ui') class DeletionOptions(QDialog): - def __init__(self, parent, model): + def __init__(self, parent, model, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self.model = model self._setupUi() self.model.view = self diff --git a/qt/base/details_dialog.py b/qt/base/details_dialog.py index a156c46d..71eb6923 100644 --- a/qt/base/details_dialog.py +++ b/qt/base/details_dialog.py @@ -12,8 +12,8 @@ from PyQt5.QtWidgets import QDialog from .details_table import DetailsModel class DetailsDialog(QDialog): - def __init__(self, parent, app): - QDialog.__init__(self, parent, Qt.Tool) + def __init__(self, parent, app, **kwargs): + super().__init__(parent, Qt.Tool, **kwargs) self.app = app self.model = app.model.details_panel self._setupUi() @@ -33,7 +33,7 @@ class DetailsDialog(QDialog): def show(self): self._shown_once = True - QDialog.show(self) + super().show() #--- Events def appWillSavePrefs(self): diff --git a/qt/base/details_table.py b/qt/base/details_table.py index 884fbedc..ece4d09a 100644 --- a/qt/base/details_table.py +++ b/qt/base/details_table.py @@ -16,8 +16,8 @@ tr = trget('ui') HEADER = [tr("Attribute"), tr("Selected"), tr("Reference")] class DetailsModel(QAbstractTableModel): - def __init__(self, model): - QAbstractTableModel.__init__(self) + def __init__(self, model, **kwargs): + super().__init__(**kwargs) self.model = model def columnCount(self, parent): diff --git a/qt/base/directories_dialog.py b/qt/base/directories_dialog.py index b076ce69..72fdfd2d 100644 --- a/qt/base/directories_dialog.py +++ b/qt/base/directories_dialog.py @@ -22,8 +22,8 @@ from .directories_model import DirectoriesModel, DirectoriesDelegate tr = trget('ui') class DirectoriesDialog(QMainWindow): - def __init__(self, parent, app): - QMainWindow.__init__(self, None) + def __init__(self, parent, app, **kwargs): + super().__init__(None, **kwargs) self.app = app self.lastAddedFolder = platform.INITIAL_FOLDER_IN_DIALOGS self.recentFolders = Recent(self.app, 'recentFolders') diff --git a/qt/base/directories_model.py b/qt/base/directories_model.py index 8cf9272b..77dbceb2 100644 --- a/qt/base/directories_model.py +++ b/qt/base/directories_model.py @@ -43,7 +43,7 @@ class DirectoriesDelegate(QStyledItemDelegate): rect.setLeft(rect.left()+4) painter.drawText(rect, Qt.AlignLeft, option.text) else: - QStyledItemDelegate.paint(self, painter, option, index) + super().paint(painter, option, index) def setEditorData(self, editor, index): value = index.model().data(index, Qt.EditRole) @@ -59,8 +59,8 @@ class DirectoriesDelegate(QStyledItemDelegate): class DirectoriesModel(TreeModel): - def __init__(self, model, view): - TreeModel.__init__(self) + def __init__(self, model, view, **kwargs): + super().__init__(**kwargs) self.model = model self.model.view = self self.view = view diff --git a/qt/base/ignore_list_dialog.py b/qt/base/ignore_list_dialog.py index 9777c0d0..2acf9dde 100644 --- a/qt/base/ignore_list_dialog.py +++ b/qt/base/ignore_list_dialog.py @@ -16,9 +16,9 @@ from .ignore_list_table import IgnoreListTable tr = trget('ui') class IgnoreListDialog(QDialog): - def __init__(self, parent, model): + def __init__(self, parent, model, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self._setupUi() self.model = model self.model.view = self @@ -50,5 +50,5 @@ class IgnoreListDialog(QDialog): #--- model --> view def show(self): - QDialog.show(self) + super().show() diff --git a/qt/base/preferences_dialog.py b/qt/base/preferences_dialog.py index 2b5c10d4..fca96872 100644 --- a/qt/base/preferences_dialog.py +++ b/qt/base/preferences_dialog.py @@ -20,9 +20,9 @@ tr = trget('ui') SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it', 'hy', 'ru', 'uk', 'pt_BR', 'vi'] class PreferencesDialogBase(QDialog): - def __init__(self, parent, app): + def __init__(self, parent, app, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self.app = app self._setupUi() diff --git a/qt/base/prioritize_dialog.py b/qt/base/prioritize_dialog.py index 73d5cc52..74429bc5 100644 --- a/qt/base/prioritize_dialog.py +++ b/qt/base/prioritize_dialog.py @@ -52,9 +52,9 @@ class PrioritizationList(ListviewModel): return Qt.MoveAction class PrioritizeDialog(QDialog): - def __init__(self, parent, app): + def __init__(self, parent, app, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self._setupUi() self.model = PrioritizeDialogModel(app=app.model) self.categoryList = ComboboxModel(model=self.model.category_list, view=self.categoryCombobox) diff --git a/qt/base/problem_dialog.py b/qt/base/problem_dialog.py index 4310da1c..b8df3cb6 100644 --- a/qt/base/problem_dialog.py +++ b/qt/base/problem_dialog.py @@ -16,9 +16,9 @@ from .problem_table import ProblemTable tr = trget('ui') class ProblemDialog(QDialog): - def __init__(self, parent, model): + def __init__(self, parent, model, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self._setupUi() self.model = model self.model.view = self diff --git a/qt/base/problem_table.py b/qt/base/problem_table.py index 855134f3..914903b6 100644 --- a/qt/base/problem_table.py +++ b/qt/base/problem_table.py @@ -15,8 +15,8 @@ class ProblemTable(Table): Column('msg', defaultWidth=150), ] - def __init__(self, model, view): - Table.__init__(self, model, view) + def __init__(self, model, view, **kwargs): + super().__init__(model, view, **kwargs) # we have to prevent Return from initiating editing. # self.view.editSelected = lambda: None \ No newline at end of file diff --git a/qt/base/result_window.py b/qt/base/result_window.py index bb6438e4..fb95f6c3 100644 --- a/qt/base/result_window.py +++ b/qt/base/result_window.py @@ -21,8 +21,8 @@ from .prioritize_dialog import PrioritizeDialog tr = trget('ui') class ResultWindow(QMainWindow): - def __init__(self, app): - QMainWindow.__init__(self, None) + def __init__(self, app, **kwargs): + super().__init__(None, **kwargs) self.app = app self._setupUi() self.resultsModel = app.RESULT_MODEL_CLASS(self.app, self.resultsView) diff --git a/qt/base/results_model.py b/qt/base/results_model.py index 601fc50a..57c8f3ce 100644 --- a/qt/base/results_model.py +++ b/qt/base/results_model.py @@ -13,9 +13,9 @@ from PyQt5.QtWidgets import QTableView from qtlib.table import Table class ResultsModel(Table): - def __init__(self, app, view): + def __init__(self, app, view, **kwargs): model = app.model.result_table - Table.__init__(self, model, view) + super().__init__(model, view, **kwargs) view.horizontalHeader().setSortIndicator(1, Qt.AscendingOrder) app.prefsChanged.connect(self.appPrefsChanged) @@ -109,7 +109,7 @@ class ResultsView(QTableView): if event.text() == ' ': self.spacePressed.emit() return - QTableView.keyPressEvent(self, event) + super().keyPressEvent(event) def mouseDoubleClickEvent(self, event): self.doubleClicked.emit(None) diff --git a/qt/se/preferences_dialog.py b/qt/se/preferences_dialog.py index a44105ea..e65ef70c 100644 --- a/qt/se/preferences_dialog.py +++ b/qt/se/preferences_dialog.py @@ -29,8 +29,8 @@ SCAN_TYPE_ORDER = [ ] class PreferencesDialog(PreferencesDialogBase): - def __init__(self, parent, app): - PreferencesDialogBase.__init__(self, parent, app) + def __init__(self, parent, app, **kwargs): + super().__init__(parent, app, **kwargs) self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged) diff --git a/qtlib/about_box.py b/qtlib/about_box.py index 063a70df..53eb37d9 100644 --- a/qtlib/about_box.py +++ b/qtlib/about_box.py @@ -16,9 +16,9 @@ from hscommon.trans import trget tr = trget('qtlib') class AboutBox(QDialog): - def __init__(self, parent, app, withreg=True): + def __init__(self, parent, app, withreg=True, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.MSWindowsFixedSizeDialogHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self.app = app self.withreg = withreg self._setupUi() diff --git a/qtlib/error_report_dialog.py b/qtlib/error_report_dialog.py index a1d6e7c8..6236a7e5 100644 --- a/qtlib/error_report_dialog.py +++ b/qtlib/error_report_dialog.py @@ -21,9 +21,9 @@ from .util import horizontalSpacer tr = trget('qtlib') class ErrorReportDialog(QDialog): - def __init__(self, parent, error): + def __init__(self, parent, error, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self._setupUi() name = QCoreApplication.applicationName() version = QCoreApplication.applicationVersion() @@ -68,7 +68,7 @@ class ErrorReportDialog(QDialog): text = self.errorTextEdit.toPlainText() url = QUrl("mailto:support@hardcoded.net?SUBJECT=Error Report&BODY=%s" % text) QDesktopServices.openUrl(url) - QDialog.accept(self) + super().accept() def install_excepthook(): diff --git a/qtlib/progress_window.py b/qtlib/progress_window.py index e9f48dde..748070d2 100644 --- a/qtlib/progress_window.py +++ b/qtlib/progress_window.py @@ -10,9 +10,9 @@ from PyQt5.QtCore import Qt, QTimer from PyQt5.QtWidgets import QProgressDialog class ProgressWindow(QProgressDialog): - def __init__(self, parent, model): + def __init__(self, parent, model, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QProgressDialog.__init__(self, '', "Cancel", 0, 100, parent, flags) + super().__init__('', "Cancel", 0, 100, parent, flags, **kwargs) self.model = model model.view = self # We don't have access to QProgressDialog's labels directly, so we se the model label's view @@ -35,7 +35,7 @@ class ProgressWindow(QProgressDialog): def show(self): self.reset() - QProgressDialog.show(self) + super().show() self.canceled.connect(self.model.cancel) self._timer.start(500) @@ -44,5 +44,5 @@ class ProgressWindow(QProgressDialog): # For some weird reason, canceled() signal is sent upon close, whether the user canceled # or not. If we don't want a false cancellation, we have to disconnect it. self.canceled.disconnect() - QProgressDialog.close(self) + super().close() diff --git a/qtlib/radio_box.py b/qtlib/radio_box.py index 59c58d60..e363f523 100644 --- a/qtlib/radio_box.py +++ b/qtlib/radio_box.py @@ -11,12 +11,12 @@ from PyQt5.QtWidgets import QWidget, QHBoxLayout, QRadioButton from .util import horizontalSpacer class RadioBox(QWidget): - def __init__(self, parent=None, items=None, spread=True): + def __init__(self, parent=None, items=None, spread=True, **kwargs): # If spread is False, insert a spacer in the layout so that the items don't use all the # space they're given but rather align left. if items is None: items = [] - QWidget.__init__(self, parent) + super().__init__(parent, **kwargs) self._buttons = [] self._labels = items self._selected_index = 0 diff --git a/qtlib/recent.py b/qtlib/recent.py index fa17eebe..a216cf74 100644 --- a/qtlib/recent.py +++ b/qtlib/recent.py @@ -19,8 +19,8 @@ tr = trget('qtlib') MenuEntry = namedtuple('MenuEntry', 'menu fixedItemCount') class Recent(QObject): - def __init__(self, app, prefName, maxItemCount=10): - QObject.__init__(self) + def __init__(self, app, prefName, maxItemCount=10, **kwargs): + super().__init__(**kwargs) self._app = app self._menuEntries = [] self._prefName = prefName diff --git a/qtlib/reg_demo_dialog.py b/qtlib/reg_demo_dialog.py index ef6dae6f..3b3ef149 100644 --- a/qtlib/reg_demo_dialog.py +++ b/qtlib/reg_demo_dialog.py @@ -18,9 +18,9 @@ from hscommon.trans import trget tr = trget('qtlib') class RegDemoDialog(QDialog): - def __init__(self, parent, reg, prompt): + def __init__(self, parent, reg, prompt, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self.reg = reg self._setupUi() self.descLabel.setText(prompt) diff --git a/qtlib/reg_submit_dialog.py b/qtlib/reg_submit_dialog.py index 96e5ffa9..a3048f6d 100644 --- a/qtlib/reg_submit_dialog.py +++ b/qtlib/reg_submit_dialog.py @@ -17,9 +17,9 @@ from hscommon.trans import trget tr = trget('qtlib') class RegSubmitDialog(QDialog): - def __init__(self, parent, reg): + def __init__(self, parent, reg, **kwargs): flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint - QDialog.__init__(self, parent, flags) + super().__init__(parent, flags, **kwargs) self._setupUi() self.reg = reg diff --git a/qtlib/search_edit.py b/qtlib/search_edit.py index 5653cb5a..520ac28e 100644 --- a/qtlib/search_edit.py +++ b/qtlib/search_edit.py @@ -18,8 +18,8 @@ tr = trget('qtlib') # "images" folder in your resources. class LineEditButton(QToolButton): - def __init__(self, parent): - QToolButton.__init__(self, parent) + def __init__(self, parent, **kwargs): + super().__init__(parent, **kwargs) pixmap = QPixmap(':/search_clear_13') self.setIcon(QIcon(pixmap)) self.setIconSize(pixmap.size()) @@ -30,9 +30,9 @@ class LineEditButton(QToolButton): class SearchEdit(QLineEdit): - def __init__(self, parent=None, immediate=False): + def __init__(self, parent=None, immediate=False, **kwargs): # immediate: send searchChanged signals at each keystroke. - QLineEdit.__init__(self, parent) + super().__init__(parent, **kwargs) self._clearButton = LineEditButton(self) frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth) paddingRight = self._clearButton.sizeHint().width() + frameWidth + 1 diff --git a/qtlib/selectable_list.py b/qtlib/selectable_list.py index 8bbd507a..a51cdd6b 100644 --- a/qtlib/selectable_list.py +++ b/qtlib/selectable_list.py @@ -9,8 +9,8 @@ from PyQt5.QtCore import Qt, QAbstractListModel, QItemSelection, QItemSelectionModel class SelectableList(QAbstractListModel): - def __init__(self, model, view): - QAbstractListModel.__init__(self) + def __init__(self, model, view, **kwargs): + super().__init__(**kwargs) self._updating = False self.view = view self.model = model @@ -49,8 +49,8 @@ class SelectableList(QAbstractListModel): self._restoreSelection() class ComboboxModel(SelectableList): - def __init__(self, model, view): - SelectableList.__init__(self, model, view) + def __init__(self, model, view, **kwargs): + super().__init__(model, view, **kwargs) self.view.currentIndexChanged[int].connect(self.selectionChanged) #--- Override @@ -70,8 +70,8 @@ class ComboboxModel(SelectableList): self._updateSelection() class ListviewModel(SelectableList): - def __init__(self, model, view): - SelectableList.__init__(self, model, view) + def __init__(self, model, view, **kwargs): + super().__init__(model, view, **kwargs) self.view.selectionModel().selectionChanged[(QItemSelection, QItemSelection)].connect( self.selectionChanged) diff --git a/qtlib/table.py b/qtlib/table.py index 90d31338..d47f6f37 100644 --- a/qtlib/table.py +++ b/qtlib/table.py @@ -15,8 +15,8 @@ class Table(QAbstractTableModel): INVALID_INDEX_FLAGS = Qt.ItemIsEnabled COLUMNS = [] - def __init__(self, model, view): - QAbstractTableModel.__init__(self) + def __init__(self, model, view, **kwargs): + super().__init__(**kwargs) self.model = model self.view = view self.view.setModel(self) diff --git a/qtlib/tree_model.py b/qtlib/tree_model.py index f880c39f..abdfe993 100644 --- a/qtlib/tree_model.py +++ b/qtlib/tree_model.py @@ -79,9 +79,8 @@ class DummyNode(TreeNode): pass class TreeModel(QAbstractItemModel, NodeContainer): - def __init__(self): - QAbstractItemModel.__init__(self) - NodeContainer.__init__(self) + def __init__(self, **kwargs): + super().__init__(**kwargs) self._dummyNodes = set() # dummy nodes' reference have to be kept to avoid segfault #--- Private @@ -128,11 +127,11 @@ class TreeModel(QAbstractItemModel, NodeContainer): return self.createIndex(node.parent.row, 0, node.parent) def reset(self): - QAbstractItemModel.beginResetModel(self) + super().beginResetModel() self.invalidate() self._ref2node = {} self._dummyNodes = set() - QAbstractItemModel.endResetModel(self) + super().endResetModel() def rowCount(self, parent=QModelIndex()): node = parent.internalPointer() if parent.isValid() else self