87 lines
3.1 KiB
Python
87 lines
3.1 KiB
Python
__author__ = 'tanshu'
|
|
from PyQt5 import uic, QtCore, QtWidgets
|
|
|
|
|
|
file = '/home/tanshu/Programming/summer/summer/QtDesignerFiles/ListForm.ui'
|
|
base, form = uic.loadUiType(file)
|
|
|
|
|
|
class ProductGroupList(base, form):
|
|
def __init__(self, router, product_groups, parent=None):
|
|
super(ProductGroupList, self).__init__()
|
|
self.setupUi(self)
|
|
self.translateUi()
|
|
self.router = router
|
|
self.product_groups = product_groups
|
|
self.model = ProductGroupsTableModel(product_groups)
|
|
self.tblItems.setModel(self.model)
|
|
self.tblItems.doubleClicked.connect(self.show_product_group)
|
|
self.btnAddNew.clicked.connect(self.add_new_product_group)
|
|
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
|
|
self.tblItems.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
|
|
|
def translateUi(self):
|
|
self.setObjectName("ProductGroupList")
|
|
_translate = QtCore.QCoreApplication.translate
|
|
self.setWindowTitle(_translate("ListForm", "Product Groups"))
|
|
self.btnAddNew.setText(_translate("ListForm", "Add Product Group"))
|
|
|
|
def update_data(self, data):
|
|
self.product_groups = data
|
|
self.model = ProductGroupsTableModel(self.product_groups)
|
|
self.tblItems.setModel(self.model)
|
|
|
|
def show_product_group(self, index):
|
|
product_group = self.model.product_groups[index.row()]
|
|
self.router.show_product_group(product_group['ProductGroupID'])
|
|
|
|
def add_new_product_group(self):
|
|
self.router.show_product_group(None)
|
|
|
|
|
|
class ProductGroupsTableModel(QtCore.QAbstractTableModel):
|
|
def __init__(self, product_groups=None, parent=None):
|
|
QtCore.QAbstractTableModel.__init__(self, parent)
|
|
self.product_groups = product_groups if product_groups is not None else []
|
|
|
|
def rowCount(self, parent):
|
|
return len(self.product_groups)
|
|
|
|
def columnCount(self, parent):
|
|
return 6
|
|
|
|
def data(self, index, role):
|
|
if role == QtCore.Qt.DisplayRole:
|
|
item = self.product_groups[index.row()]
|
|
column = index.column()
|
|
if column == 0:
|
|
return item['Name']
|
|
elif column == 1:
|
|
return '{0:,.2f}%'.format(item['MaxDiscount'] * 100)
|
|
elif column == 2:
|
|
return item['Header']
|
|
elif column == 3:
|
|
return item['IsActive']
|
|
elif column == 4:
|
|
return item['IsFixture']
|
|
elif column == 5:
|
|
return item['SortOrder']
|
|
|
|
def headerData(self, section, orientation, role):
|
|
if role == QtCore.Qt.DisplayRole:
|
|
if orientation == QtCore.Qt.Horizontal:
|
|
if section == 0:
|
|
return 'Name'
|
|
elif section == 1:
|
|
return 'Maximum Discount'
|
|
elif section == 2:
|
|
return 'Header'
|
|
elif section == 3:
|
|
return 'Is Active?'
|
|
elif section == 4:
|
|
return 'Is Fixture?'
|
|
elif section == 5:
|
|
return 'Sort Order'
|
|
else:
|
|
return section + 1
|