Implemented super() inheritance style suggested by PyQt5

This commit is contained in:
Virgil Dupras 2013-10-20 15:53:59 -04:00
parent 664d630b96
commit 5a8cb6f5e3
25 changed files with 65 additions and 66 deletions

View File

@ -43,8 +43,8 @@ class DupeGuru(QObject):
PREFERENCES_CLASS = None PREFERENCES_CLASS = None
PREFERENCES_DIALOG_CLASS = None PREFERENCES_DIALOG_CLASS = None
def __init__(self): def __init__(self, **kwargs):
QObject.__init__(self) super().__init__(**kwargs)
self.prefs = self.PREFERENCES_CLASS() self.prefs = self.PREFERENCES_CLASS()
self.prefs.load() self.prefs.load()
self.model = self.MODELCLASS(view=self) self.model = self.MODELCLASS(view=self)

View File

@ -15,9 +15,9 @@ from qtlib.radio_box import RadioBox
tr = trget('ui') tr = trget('ui')
class DeletionOptions(QDialog): class DeletionOptions(QDialog):
def __init__(self, parent, model): def __init__(self, parent, model, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self.model = model self.model = model
self._setupUi() self._setupUi()
self.model.view = self self.model.view = self

View File

@ -12,8 +12,8 @@ from PyQt5.QtWidgets import QDialog
from .details_table import DetailsModel from .details_table import DetailsModel
class DetailsDialog(QDialog): class DetailsDialog(QDialog):
def __init__(self, parent, app): def __init__(self, parent, app, **kwargs):
QDialog.__init__(self, parent, Qt.Tool) super().__init__(parent, Qt.Tool, **kwargs)
self.app = app self.app = app
self.model = app.model.details_panel self.model = app.model.details_panel
self._setupUi() self._setupUi()
@ -33,7 +33,7 @@ class DetailsDialog(QDialog):
def show(self): def show(self):
self._shown_once = True self._shown_once = True
QDialog.show(self) super().show()
#--- Events #--- Events
def appWillSavePrefs(self): def appWillSavePrefs(self):

View File

@ -16,8 +16,8 @@ tr = trget('ui')
HEADER = [tr("Attribute"), tr("Selected"), tr("Reference")] HEADER = [tr("Attribute"), tr("Selected"), tr("Reference")]
class DetailsModel(QAbstractTableModel): class DetailsModel(QAbstractTableModel):
def __init__(self, model): def __init__(self, model, **kwargs):
QAbstractTableModel.__init__(self) super().__init__(**kwargs)
self.model = model self.model = model
def columnCount(self, parent): def columnCount(self, parent):

View File

@ -22,8 +22,8 @@ from .directories_model import DirectoriesModel, DirectoriesDelegate
tr = trget('ui') tr = trget('ui')
class DirectoriesDialog(QMainWindow): class DirectoriesDialog(QMainWindow):
def __init__(self, parent, app): def __init__(self, parent, app, **kwargs):
QMainWindow.__init__(self, None) super().__init__(None, **kwargs)
self.app = app self.app = app
self.lastAddedFolder = platform.INITIAL_FOLDER_IN_DIALOGS self.lastAddedFolder = platform.INITIAL_FOLDER_IN_DIALOGS
self.recentFolders = Recent(self.app, 'recentFolders') self.recentFolders = Recent(self.app, 'recentFolders')

View File

@ -43,7 +43,7 @@ class DirectoriesDelegate(QStyledItemDelegate):
rect.setLeft(rect.left()+4) rect.setLeft(rect.left()+4)
painter.drawText(rect, Qt.AlignLeft, option.text) painter.drawText(rect, Qt.AlignLeft, option.text)
else: else:
QStyledItemDelegate.paint(self, painter, option, index) super().paint(painter, option, index)
def setEditorData(self, editor, index): def setEditorData(self, editor, index):
value = index.model().data(index, Qt.EditRole) value = index.model().data(index, Qt.EditRole)
@ -59,8 +59,8 @@ class DirectoriesDelegate(QStyledItemDelegate):
class DirectoriesModel(TreeModel): class DirectoriesModel(TreeModel):
def __init__(self, model, view): def __init__(self, model, view, **kwargs):
TreeModel.__init__(self) super().__init__(**kwargs)
self.model = model self.model = model
self.model.view = self self.model.view = self
self.view = view self.view = view

View File

@ -16,9 +16,9 @@ from .ignore_list_table import IgnoreListTable
tr = trget('ui') tr = trget('ui')
class IgnoreListDialog(QDialog): class IgnoreListDialog(QDialog):
def __init__(self, parent, model): def __init__(self, parent, model, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self._setupUi() self._setupUi()
self.model = model self.model = model
self.model.view = self self.model.view = self
@ -50,5 +50,5 @@ class IgnoreListDialog(QDialog):
#--- model --> view #--- model --> view
def show(self): def show(self):
QDialog.show(self) super().show()

View File

@ -20,9 +20,9 @@ tr = trget('ui')
SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it', 'hy', 'ru', 'uk', 'pt_BR', 'vi'] SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it', 'hy', 'ru', 'uk', 'pt_BR', 'vi']
class PreferencesDialogBase(QDialog): class PreferencesDialogBase(QDialog):
def __init__(self, parent, app): def __init__(self, parent, app, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self.app = app self.app = app
self._setupUi() self._setupUi()

View File

@ -52,9 +52,9 @@ class PrioritizationList(ListviewModel):
return Qt.MoveAction return Qt.MoveAction
class PrioritizeDialog(QDialog): class PrioritizeDialog(QDialog):
def __init__(self, parent, app): def __init__(self, parent, app, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self._setupUi() self._setupUi()
self.model = PrioritizeDialogModel(app=app.model) self.model = PrioritizeDialogModel(app=app.model)
self.categoryList = ComboboxModel(model=self.model.category_list, view=self.categoryCombobox) self.categoryList = ComboboxModel(model=self.model.category_list, view=self.categoryCombobox)

View File

@ -16,9 +16,9 @@ from .problem_table import ProblemTable
tr = trget('ui') tr = trget('ui')
class ProblemDialog(QDialog): class ProblemDialog(QDialog):
def __init__(self, parent, model): def __init__(self, parent, model, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self._setupUi() self._setupUi()
self.model = model self.model = model
self.model.view = self self.model.view = self

View File

@ -15,8 +15,8 @@ class ProblemTable(Table):
Column('msg', defaultWidth=150), Column('msg', defaultWidth=150),
] ]
def __init__(self, model, view): def __init__(self, model, view, **kwargs):
Table.__init__(self, model, view) super().__init__(model, view, **kwargs)
# we have to prevent Return from initiating editing. # we have to prevent Return from initiating editing.
# self.view.editSelected = lambda: None # self.view.editSelected = lambda: None

View File

@ -21,8 +21,8 @@ from .prioritize_dialog import PrioritizeDialog
tr = trget('ui') tr = trget('ui')
class ResultWindow(QMainWindow): class ResultWindow(QMainWindow):
def __init__(self, app): def __init__(self, app, **kwargs):
QMainWindow.__init__(self, None) super().__init__(None, **kwargs)
self.app = app self.app = app
self._setupUi() self._setupUi()
self.resultsModel = app.RESULT_MODEL_CLASS(self.app, self.resultsView) self.resultsModel = app.RESULT_MODEL_CLASS(self.app, self.resultsView)

View File

@ -13,9 +13,9 @@ from PyQt5.QtWidgets import QTableView
from qtlib.table import Table from qtlib.table import Table
class ResultsModel(Table): class ResultsModel(Table):
def __init__(self, app, view): def __init__(self, app, view, **kwargs):
model = app.model.result_table model = app.model.result_table
Table.__init__(self, model, view) super().__init__(model, view, **kwargs)
view.horizontalHeader().setSortIndicator(1, Qt.AscendingOrder) view.horizontalHeader().setSortIndicator(1, Qt.AscendingOrder)
app.prefsChanged.connect(self.appPrefsChanged) app.prefsChanged.connect(self.appPrefsChanged)
@ -109,7 +109,7 @@ class ResultsView(QTableView):
if event.text() == ' ': if event.text() == ' ':
self.spacePressed.emit() self.spacePressed.emit()
return return
QTableView.keyPressEvent(self, event) super().keyPressEvent(event)
def mouseDoubleClickEvent(self, event): def mouseDoubleClickEvent(self, event):
self.doubleClicked.emit(None) self.doubleClicked.emit(None)

View File

@ -29,8 +29,8 @@ SCAN_TYPE_ORDER = [
] ]
class PreferencesDialog(PreferencesDialogBase): class PreferencesDialog(PreferencesDialogBase):
def __init__(self, parent, app): def __init__(self, parent, app, **kwargs):
PreferencesDialogBase.__init__(self, parent, app) super().__init__(parent, app, **kwargs)
self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged) self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged)

View File

@ -16,9 +16,9 @@ from hscommon.trans import trget
tr = trget('qtlib') tr = trget('qtlib')
class AboutBox(QDialog): 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 flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.MSWindowsFixedSizeDialogHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self.app = app self.app = app
self.withreg = withreg self.withreg = withreg
self._setupUi() self._setupUi()

View File

@ -21,9 +21,9 @@ from .util import horizontalSpacer
tr = trget('qtlib') tr = trget('qtlib')
class ErrorReportDialog(QDialog): class ErrorReportDialog(QDialog):
def __init__(self, parent, error): def __init__(self, parent, error, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self._setupUi() self._setupUi()
name = QCoreApplication.applicationName() name = QCoreApplication.applicationName()
version = QCoreApplication.applicationVersion() version = QCoreApplication.applicationVersion()
@ -68,7 +68,7 @@ class ErrorReportDialog(QDialog):
text = self.errorTextEdit.toPlainText() text = self.errorTextEdit.toPlainText()
url = QUrl("mailto:support@hardcoded.net?SUBJECT=Error Report&BODY=%s" % text) url = QUrl("mailto:support@hardcoded.net?SUBJECT=Error Report&BODY=%s" % text)
QDesktopServices.openUrl(url) QDesktopServices.openUrl(url)
QDialog.accept(self) super().accept()
def install_excepthook(): def install_excepthook():

View File

@ -10,9 +10,9 @@ from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtWidgets import QProgressDialog from PyQt5.QtWidgets import QProgressDialog
class ProgressWindow(QProgressDialog): class ProgressWindow(QProgressDialog):
def __init__(self, parent, model): def __init__(self, parent, model, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint 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 self.model = model
model.view = self model.view = self
# We don't have access to QProgressDialog's labels directly, so we se the model label's view # 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): def show(self):
self.reset() self.reset()
QProgressDialog.show(self) super().show()
self.canceled.connect(self.model.cancel) self.canceled.connect(self.model.cancel)
self._timer.start(500) 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 # 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. # or not. If we don't want a false cancellation, we have to disconnect it.
self.canceled.disconnect() self.canceled.disconnect()
QProgressDialog.close(self) super().close()

View File

@ -11,12 +11,12 @@ from PyQt5.QtWidgets import QWidget, QHBoxLayout, QRadioButton
from .util import horizontalSpacer from .util import horizontalSpacer
class RadioBox(QWidget): 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 # 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. # space they're given but rather align left.
if items is None: if items is None:
items = [] items = []
QWidget.__init__(self, parent) super().__init__(parent, **kwargs)
self._buttons = [] self._buttons = []
self._labels = items self._labels = items
self._selected_index = 0 self._selected_index = 0

View File

@ -19,8 +19,8 @@ tr = trget('qtlib')
MenuEntry = namedtuple('MenuEntry', 'menu fixedItemCount') MenuEntry = namedtuple('MenuEntry', 'menu fixedItemCount')
class Recent(QObject): class Recent(QObject):
def __init__(self, app, prefName, maxItemCount=10): def __init__(self, app, prefName, maxItemCount=10, **kwargs):
QObject.__init__(self) super().__init__(**kwargs)
self._app = app self._app = app
self._menuEntries = [] self._menuEntries = []
self._prefName = prefName self._prefName = prefName

View File

@ -18,9 +18,9 @@ from hscommon.trans import trget
tr = trget('qtlib') tr = trget('qtlib')
class RegDemoDialog(QDialog): class RegDemoDialog(QDialog):
def __init__(self, parent, reg, prompt): def __init__(self, parent, reg, prompt, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self.reg = reg self.reg = reg
self._setupUi() self._setupUi()
self.descLabel.setText(prompt) self.descLabel.setText(prompt)

View File

@ -17,9 +17,9 @@ from hscommon.trans import trget
tr = trget('qtlib') tr = trget('qtlib')
class RegSubmitDialog(QDialog): class RegSubmitDialog(QDialog):
def __init__(self, parent, reg): def __init__(self, parent, reg, **kwargs):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
QDialog.__init__(self, parent, flags) super().__init__(parent, flags, **kwargs)
self._setupUi() self._setupUi()
self.reg = reg self.reg = reg

View File

@ -18,8 +18,8 @@ tr = trget('qtlib')
# "images" folder in your resources. # "images" folder in your resources.
class LineEditButton(QToolButton): class LineEditButton(QToolButton):
def __init__(self, parent): def __init__(self, parent, **kwargs):
QToolButton.__init__(self, parent) super().__init__(parent, **kwargs)
pixmap = QPixmap(':/search_clear_13') pixmap = QPixmap(':/search_clear_13')
self.setIcon(QIcon(pixmap)) self.setIcon(QIcon(pixmap))
self.setIconSize(pixmap.size()) self.setIconSize(pixmap.size())
@ -30,9 +30,9 @@ class LineEditButton(QToolButton):
class SearchEdit(QLineEdit): 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. # immediate: send searchChanged signals at each keystroke.
QLineEdit.__init__(self, parent) super().__init__(parent, **kwargs)
self._clearButton = LineEditButton(self) self._clearButton = LineEditButton(self)
frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth) frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
paddingRight = self._clearButton.sizeHint().width() + frameWidth + 1 paddingRight = self._clearButton.sizeHint().width() + frameWidth + 1

View File

@ -9,8 +9,8 @@
from PyQt5.QtCore import Qt, QAbstractListModel, QItemSelection, QItemSelectionModel from PyQt5.QtCore import Qt, QAbstractListModel, QItemSelection, QItemSelectionModel
class SelectableList(QAbstractListModel): class SelectableList(QAbstractListModel):
def __init__(self, model, view): def __init__(self, model, view, **kwargs):
QAbstractListModel.__init__(self) super().__init__(**kwargs)
self._updating = False self._updating = False
self.view = view self.view = view
self.model = model self.model = model
@ -49,8 +49,8 @@ class SelectableList(QAbstractListModel):
self._restoreSelection() self._restoreSelection()
class ComboboxModel(SelectableList): class ComboboxModel(SelectableList):
def __init__(self, model, view): def __init__(self, model, view, **kwargs):
SelectableList.__init__(self, model, view) super().__init__(model, view, **kwargs)
self.view.currentIndexChanged[int].connect(self.selectionChanged) self.view.currentIndexChanged[int].connect(self.selectionChanged)
#--- Override #--- Override
@ -70,8 +70,8 @@ class ComboboxModel(SelectableList):
self._updateSelection() self._updateSelection()
class ListviewModel(SelectableList): class ListviewModel(SelectableList):
def __init__(self, model, view): def __init__(self, model, view, **kwargs):
SelectableList.__init__(self, model, view) super().__init__(model, view, **kwargs)
self.view.selectionModel().selectionChanged[(QItemSelection, QItemSelection)].connect( self.view.selectionModel().selectionChanged[(QItemSelection, QItemSelection)].connect(
self.selectionChanged) self.selectionChanged)

View File

@ -15,8 +15,8 @@ class Table(QAbstractTableModel):
INVALID_INDEX_FLAGS = Qt.ItemIsEnabled INVALID_INDEX_FLAGS = Qt.ItemIsEnabled
COLUMNS = [] COLUMNS = []
def __init__(self, model, view): def __init__(self, model, view, **kwargs):
QAbstractTableModel.__init__(self) super().__init__(**kwargs)
self.model = model self.model = model
self.view = view self.view = view
self.view.setModel(self) self.view.setModel(self)

View File

@ -79,9 +79,8 @@ class DummyNode(TreeNode):
pass pass
class TreeModel(QAbstractItemModel, NodeContainer): class TreeModel(QAbstractItemModel, NodeContainer):
def __init__(self): def __init__(self, **kwargs):
QAbstractItemModel.__init__(self) super().__init__(**kwargs)
NodeContainer.__init__(self)
self._dummyNodes = set() # dummy nodes' reference have to be kept to avoid segfault self._dummyNodes = set() # dummy nodes' reference have to be kept to avoid segfault
#--- Private #--- Private
@ -128,11 +127,11 @@ class TreeModel(QAbstractItemModel, NodeContainer):
return self.createIndex(node.parent.row, 0, node.parent) return self.createIndex(node.parent.row, 0, node.parent)
def reset(self): def reset(self):
QAbstractItemModel.beginResetModel(self) super().beginResetModel()
self.invalidate() self.invalidate()
self._ref2node = {} self._ref2node = {}
self._dummyNodes = set() self._dummyNodes = set()
QAbstractItemModel.endResetModel(self) super().endResetModel()
def rowCount(self, parent=QModelIndex()): def rowCount(self, parent=QModelIndex()):
node = parent.internalPointer() if parent.isValid() else self node = parent.internalPointer() if parent.isValid() else self