Source code for lib_openmolar.client.qt4.widgets.procedures.crown_codes_model
#! /usr/bin/env python
# -*- coding: utf-8 -*-
###############################################################################
## ##
## Copyright 2010, Neil Wallace <rowinggolfer@googlemail.com> ##
## ##
## This program is free software: you can redistribute it and/or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation, either version 3 of the License, or ##
## (at your option) any later version. ##
## ##
## This program is distributed in the hope that it will be useful, ##
## but WITHOUT ANY WARRANTY; without even the implied warranty of ##
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ##
## GNU General Public License for more details. ##
## ##
## You should have received a copy of the GNU General Public License ##
## along with this program. If not, see <http://www.gnu.org/licenses/>. ##
## ##
###############################################################################
from PyQt4 import QtGui, QtCore
[docs]class CrownCodesModel(QtCore.QAbstractListModel):
'''
a model to display crown procedure codes
'''
[docs] def __init__(self, parent=None):
super(CrownCodesModel, self).__init__(parent)
self.proc_codes = [_("Crowns")]
for code in SETTINGS.PROCEDURE_CODES.crown_codes:
self.proc_codes.append(code)
[docs] def data(self, index, role):
if not index.isValid():
return QtCore.QVariant()
if role == QtCore.Qt.DisplayRole:
item = self.proc_codes[index.row()]
if index.row() == 0:
return item
else:
return u" %s"% item.description
if role == QtCore.Qt.UserRole:
return self.proc_codes[index.row()]
return QtCore.QVariant()
[docs] def rowCount(self, parent=QtCore.QModelIndex()):
return len(self.proc_codes)
if __name__ == "__main__":
from lib_openmolar import client
def sig_catcher(arg):
index = model.index(arg)
print model.data(index, QtCore.Qt.UserRole)
app = QtGui.QApplication([])
model = CrownCodesModel()
obj = QtGui.QComboBox()
obj.setModel(model)
obj.show()
obj.currentIndexChanged.connect(sig_catcher)
app.exec_()