Skip to content

Instantly share code, notes, and snippets.

@smallevilbeast
Created December 2, 2013 00:08
Show Gist options
  • Save smallevilbeast/7742646 to your computer and use it in GitHub Desktop.
Save smallevilbeast/7742646 to your computer and use it in GitHub Desktop.
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5 import QtCore
class BaseModel(QtCore.QAbstractListModel):
def __init__(self, parent=None):
super(BaseModel, self).__init__(parent)
self._data = []
def roleNames(self):
return self._roles
def rowCount(self, parent=QtCore.QModelIndex()):
return self.size()
def setAll(self, data):
self.beginResetModel()
self._data = data
self.endResetModel()
self.dataChanged.emit(self.index(0), self.index(self.size()-1), [])
def data(self, index, role):
if not index.isValid() or index.row() > len(self._data):
return QtCore.QVariant()
try:
item = self._data[index.row()]
except:
return QtCore.QVariant()
for r, name in self._roles.iteritems():
if r == role:
getattr(item, name, QtCore.QVariant())
return QtCore.QVariant()
def size(self):
return len(self._data)
@QtCore.pyqtSlot(result=bool)
def isEmpty(self):
return len(self._data) == 0
@QtCore.pyqtSlot(int, result="QVariant")
def get(self, i):
return self._data[i]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment