def display(self, screen,sizeConstant): rect = self.rect.copy() rect.x = int(rect.x * sizeConstant) rect.y = int(rect.y * sizeConstant) rect.width = int(rect.width * sizeConstant) rect.height = int(rect.height * sizeConstant) pygame.draw.rect(screen, self.color, rect) for Component in self.conponents: Component.display(screen, sizeConstant)
def __init__(self, *args, **kwds): '''Initialize the canvas, and set default drawing parameters. Derived classes should be sure to call this method.''' Component.__init__(self, *args, **kwds) # defaults used when drawing self.defaultLineColor = black self.defaultFillColor = transparent self.defaultLineWidth = 1 self.defaultFont = Font()
def check(self, events): test = [False, None] for Component in self.conponents: output = Component.check(events) if output[0]: test = output return test
def display(self, screen): pygame.draw.rect(screen, self.color, self.rect) for Component in self.conponents: Component.display(screen)
def __init__(self, parent = None, action = 'add', row=-1): #action can be add or modify super(componentDialog, self).__init__(parent) #self.move(400,30) self.parent = parent self.row = row self.action = action if self.action == 'add': self.component = Component('', '', '', '', '', '', '', '', '', 2, 10, 0, [['',0], ['',0], ['',0]]) elif self.action == 'modify': self.component = components[self.row] print self.component nameLabel = QtGui.QLabel('Name') manufLabel = QtGui.QLabel('Manufacturer') catLabel = QtGui.QLabel('Category') packLabel = QtGui.QLabel('Package') descLabel = QtGui.QLabel('Description') dataLabel = QtGui.QLabel('Datasheet') commentLabel = QtGui.QLabel('Comments') self.nameEdit = QtGui.QLineEdit(self.component[NAME]) self.manufEdit = QtGui.QComboBox() self.catEdit = QtGui.QComboBox() self.packEdit = QtGui.QComboBox() self.descEdit = QtGui.QLineEdit(self.component[DESCRIPTION]) self.dataEdit = QtGui.QLineEdit(self.component[DATASHEET]) self.commentEdit = QtGui.QTextEdit(self.component[COMMENTS]) self.dataFileBtn = QtGui.QPushButton("Browse") self.dataUrlBtn = QtGui.QPushButton("URL") self.dataBtnBox = QtGui.QDialogButtonBox() self.dataBtnBox.addButton(self.dataFileBtn, QtGui.QDialogButtonBox.ActionRole) self.dataBtnBox.addButton(self.dataUrlBtn, QtGui.QDialogButtonBox.ActionRole) self.connect(self.dataFileBtn, QtCore.SIGNAL('clicked()'), self.selectFile) self.connect(self.dataUrlBtn, QtCore.SIGNAL('clicked()'), self.addUrl) boxLabel = QtGui.QLabel('Storage Box') posLabel = QtGui.QLabel('Position') self.boxEdit = QtGui.QComboBox() self.posEdit = QtGui.QLineEdit(self.component[POSITION]) minQtyLabel = QtGui.QLabel('Min. Qty Alert') maxQtyLabel = QtGui.QLabel('Desired Max Qty') qtyLabel = QtGui.QLabel('Qty') self.minQtyEdit = QtGui.QSpinBox() self.maxQtyEdit = QtGui.QSpinBox() self.qtyEdit = QtGui.QSpinBox() supplier1Label = QtGui.QLabel('Supplier 1') key1Label = QtGui.QLabel('KeyCode') self.supplier1Edit = QtGui.QComboBox() self.supplier1Edit.setMinimumSize(150, 0) self.key1Edit = QtGui.QLineEdit(unicode(self.component.getSupplier(1, 'key'))) supplier2Label = QtGui.QLabel('Supplier 2') key2Label = QtGui.QLabel('KeyCode') self.supplier2Edit = QtGui.QComboBox() self.key2Edit = QtGui.QLineEdit(unicode(self.component.getSupplier(2, 'key'))) supplier3Label = QtGui.QLabel('Supplier 3') key3Label = QtGui.QLabel('KeyCode') self.supplier3Edit = QtGui.QComboBox() self.key3Edit = QtGui.QLineEdit(unicode(self.component.getSupplier(3, 'key'))) manufList = sorted(components.getManufacturers()) self.manufEdit.addItems(manufList) self.manufEdit.setEditable(True) self.manufEdit.setCurrentIndex(manufList.index(self.component[MANUFACTURER])) catList = sorted(components.getCategories()) self.catEdit.addItems(catList) self.catEdit.setEditable(True) self.catEdit.setCurrentIndex(catList.index(self.component[CATEGORY])) packList = sorted(components.getPackages()) self.packEdit.addItems(packList) self.packEdit.setEditable(True) self.packEdit.setCurrentIndex(packList.index(self.component[PACKAGE])) locList = sorted(components.getLocation()) self.boxEdit.addItems(locList) self.boxEdit.setEditable(True) self.boxEdit.setCurrentIndex(locList.index(self.component[LOCATION])) #suppRefList = sorted(components.getSuppliers(), key = lambda x: x[0]) suppList = sorted(components.getSuppliers()) print suppList #print suppRefList #suppList = [x[0] for x in suppRefList] #self.supplier1Edit.addItems(['RS Components','Element14','Jaycar','Conrad']) self.supplier1Edit.addItems(suppList) self.supplier1Edit.setEditable(True) self.supplier1Edit.setCurrentIndex(suppList.index(self.component.getSupplier(1, 'name'))) #self.supplier1Edit.setCurrentIndex(suppList.index(self.component[LOCATION])) self.supplier2Edit.addItems(suppList) self.supplier2Edit.setEditable(True) self.supplier2Edit.setCurrentIndex(suppList.index(self.component.getSupplier(2, 'name'))) self.supplier3Edit.addItems(suppList) self.supplier3Edit.setEditable(True) self.supplier3Edit.setCurrentIndex(suppList.index(self.component.getSupplier(3, 'name'))) self.minQtyEdit.setMinimum(-1) self.minQtyEdit.setValue(int(self.component[MINQTY])) self.maxQtyEdit.setValue(int(self.component[DESIREDQTY])) self.qtyEdit.setValue(int(self.component[QTY])) buttonWidget = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel) buttonWidget.rejected.connect(self.reject) buttonWidget.accepted.connect(self.accept) groupBox = QtGui.QGroupBox('Location') reorderBox = QtGui.QGroupBox('Reordering') qtyBox = QtGui.QGroupBox('Stock') grid = QtGui.QGridLayout() grid.addWidget(nameLabel, 0, 0) grid.addWidget(manufLabel, 1, 0) grid.addWidget(catLabel, 2, 0) grid.addWidget(packLabel, 3, 0) grid.addWidget(descLabel, 4, 0) grid.addWidget(dataLabel, 5, 0) grid.addWidget(commentLabel, 7, 0) grid.addWidget(self.nameEdit, 0, 1) grid.addWidget(self.manufEdit, 1, 1) grid.addWidget(self.catEdit, 2, 1) grid.addWidget(self.packEdit, 3, 1) grid.addWidget(self.descEdit, 4, 1) grid.addWidget(self.dataEdit, 5, 1) grid.addWidget(self.dataBtnBox, 6, 1) grid.addWidget(self.commentEdit, 7, 1, 1, 1) locatGrid = QtGui.QGridLayout() locatGrid.addWidget(boxLabel, 0, 0) locatGrid.addWidget(posLabel, 1, 0) locatGrid.addWidget(self.boxEdit, 0, 1) locatGrid.addWidget(self.posEdit, 1, 1) locatGrid.setRowStretch(2, 1) qtyGrid = QtGui.QGridLayout() qtyGrid.addWidget(minQtyLabel, 0, 0) qtyGrid.addWidget(maxQtyLabel, 1, 0) qtyGrid.addWidget(qtyLabel, 3, 0) qtyGrid.setRowStretch(4, 1) qtyGrid.addWidget(self.minQtyEdit, 0, 1) qtyGrid.addWidget(self.maxQtyEdit, 1, 1) qtyGrid.setRowMinimumHeight(2, 20) qtyGrid.addWidget(self.qtyEdit, 3, 1) #x, y = 0, 0 #for supplierName, refCode in suppliers: #reorderGrid.addwidget(supplierName, y, x) #reorderGrid.addWidget( #add supplierEdit fn reorderGrid = QtGui.QGridLayout() reorderGrid.addWidget(supplier1Label, 0, 0) reorderGrid.addWidget(self.supplier1Edit, 0, 1) reorderGrid.addWidget(key1Label, 0, 2) reorderGrid.addWidget(self.key1Edit, 0, 3) reorderGrid.addWidget(supplier2Label, 1, 0) reorderGrid.addWidget(self.supplier2Edit, 1, 1) reorderGrid.addWidget(key2Label, 1, 2) reorderGrid.addWidget(self.key2Edit, 1, 3) reorderGrid.addWidget(supplier3Label, 2, 0) reorderGrid.addWidget(self.supplier3Edit, 2, 1) reorderGrid.addWidget(key3Label, 2, 2) reorderGrid.addWidget(self.key3Edit, 2, 3) groupBox.setLayout(locatGrid) reorderBox.setLayout(reorderGrid) qtyBox.setLayout(qtyGrid) grid.addWidget(groupBox, 0, 2, 5, 1) grid.addWidget(reorderBox, 8, 0, 3, 2) grid.addWidget(qtyBox, 7, 2, 3, 1) grid.addWidget(buttonWidget, 10, 2, 1, 1) commentLayout = QtGui.QHBoxLayout() commentLayout.addWidget(commentLabel) commentLayout.addWidget(self.commentEdit) topLeftLayout = QtGui.QVBoxLayout() topLayout = QtGui.QHBoxLayout() #TODO Look if this is really necessary? Grid into HBOX? Left over from start... topLayout.addLayout(grid) self.setLayout(topLayout) self.resize(650, 350) #self.setGeometry(300, 300, 650, 350) self.setWindowTitle('Component Viewer')
class componentDialog(QtGui.QDialog): def __init__(self, parent = None, action = 'add', row=-1): #action can be add or modify super(componentDialog, self).__init__(parent) #self.move(400,30) self.parent = parent self.row = row self.action = action if self.action == 'add': self.component = Component('', '', '', '', '', '', '', '', '', 2, 10, 0, [['',0], ['',0], ['',0]]) elif self.action == 'modify': self.component = components[self.row] print self.component nameLabel = QtGui.QLabel('Name') manufLabel = QtGui.QLabel('Manufacturer') catLabel = QtGui.QLabel('Category') packLabel = QtGui.QLabel('Package') descLabel = QtGui.QLabel('Description') dataLabel = QtGui.QLabel('Datasheet') commentLabel = QtGui.QLabel('Comments') self.nameEdit = QtGui.QLineEdit(self.component[NAME]) self.manufEdit = QtGui.QComboBox() self.catEdit = QtGui.QComboBox() self.packEdit = QtGui.QComboBox() self.descEdit = QtGui.QLineEdit(self.component[DESCRIPTION]) self.dataEdit = QtGui.QLineEdit(self.component[DATASHEET]) self.commentEdit = QtGui.QTextEdit(self.component[COMMENTS]) self.dataFileBtn = QtGui.QPushButton("Browse") self.dataUrlBtn = QtGui.QPushButton("URL") self.dataBtnBox = QtGui.QDialogButtonBox() self.dataBtnBox.addButton(self.dataFileBtn, QtGui.QDialogButtonBox.ActionRole) self.dataBtnBox.addButton(self.dataUrlBtn, QtGui.QDialogButtonBox.ActionRole) self.connect(self.dataFileBtn, QtCore.SIGNAL('clicked()'), self.selectFile) self.connect(self.dataUrlBtn, QtCore.SIGNAL('clicked()'), self.addUrl) boxLabel = QtGui.QLabel('Storage Box') posLabel = QtGui.QLabel('Position') self.boxEdit = QtGui.QComboBox() self.posEdit = QtGui.QLineEdit(self.component[POSITION]) minQtyLabel = QtGui.QLabel('Min. Qty Alert') maxQtyLabel = QtGui.QLabel('Desired Max Qty') qtyLabel = QtGui.QLabel('Qty') self.minQtyEdit = QtGui.QSpinBox() self.maxQtyEdit = QtGui.QSpinBox() self.qtyEdit = QtGui.QSpinBox() supplier1Label = QtGui.QLabel('Supplier 1') key1Label = QtGui.QLabel('KeyCode') self.supplier1Edit = QtGui.QComboBox() self.supplier1Edit.setMinimumSize(150, 0) self.key1Edit = QtGui.QLineEdit(unicode(self.component.getSupplier(1, 'key'))) supplier2Label = QtGui.QLabel('Supplier 2') key2Label = QtGui.QLabel('KeyCode') self.supplier2Edit = QtGui.QComboBox() self.key2Edit = QtGui.QLineEdit(unicode(self.component.getSupplier(2, 'key'))) supplier3Label = QtGui.QLabel('Supplier 3') key3Label = QtGui.QLabel('KeyCode') self.supplier3Edit = QtGui.QComboBox() self.key3Edit = QtGui.QLineEdit(unicode(self.component.getSupplier(3, 'key'))) manufList = sorted(components.getManufacturers()) self.manufEdit.addItems(manufList) self.manufEdit.setEditable(True) self.manufEdit.setCurrentIndex(manufList.index(self.component[MANUFACTURER])) catList = sorted(components.getCategories()) self.catEdit.addItems(catList) self.catEdit.setEditable(True) self.catEdit.setCurrentIndex(catList.index(self.component[CATEGORY])) packList = sorted(components.getPackages()) self.packEdit.addItems(packList) self.packEdit.setEditable(True) self.packEdit.setCurrentIndex(packList.index(self.component[PACKAGE])) locList = sorted(components.getLocation()) self.boxEdit.addItems(locList) self.boxEdit.setEditable(True) self.boxEdit.setCurrentIndex(locList.index(self.component[LOCATION])) #suppRefList = sorted(components.getSuppliers(), key = lambda x: x[0]) suppList = sorted(components.getSuppliers()) print suppList #print suppRefList #suppList = [x[0] for x in suppRefList] #self.supplier1Edit.addItems(['RS Components','Element14','Jaycar','Conrad']) self.supplier1Edit.addItems(suppList) self.supplier1Edit.setEditable(True) self.supplier1Edit.setCurrentIndex(suppList.index(self.component.getSupplier(1, 'name'))) #self.supplier1Edit.setCurrentIndex(suppList.index(self.component[LOCATION])) self.supplier2Edit.addItems(suppList) self.supplier2Edit.setEditable(True) self.supplier2Edit.setCurrentIndex(suppList.index(self.component.getSupplier(2, 'name'))) self.supplier3Edit.addItems(suppList) self.supplier3Edit.setEditable(True) self.supplier3Edit.setCurrentIndex(suppList.index(self.component.getSupplier(3, 'name'))) self.minQtyEdit.setMinimum(-1) self.minQtyEdit.setValue(int(self.component[MINQTY])) self.maxQtyEdit.setValue(int(self.component[DESIREDQTY])) self.qtyEdit.setValue(int(self.component[QTY])) buttonWidget = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel) buttonWidget.rejected.connect(self.reject) buttonWidget.accepted.connect(self.accept) groupBox = QtGui.QGroupBox('Location') reorderBox = QtGui.QGroupBox('Reordering') qtyBox = QtGui.QGroupBox('Stock') grid = QtGui.QGridLayout() grid.addWidget(nameLabel, 0, 0) grid.addWidget(manufLabel, 1, 0) grid.addWidget(catLabel, 2, 0) grid.addWidget(packLabel, 3, 0) grid.addWidget(descLabel, 4, 0) grid.addWidget(dataLabel, 5, 0) grid.addWidget(commentLabel, 7, 0) grid.addWidget(self.nameEdit, 0, 1) grid.addWidget(self.manufEdit, 1, 1) grid.addWidget(self.catEdit, 2, 1) grid.addWidget(self.packEdit, 3, 1) grid.addWidget(self.descEdit, 4, 1) grid.addWidget(self.dataEdit, 5, 1) grid.addWidget(self.dataBtnBox, 6, 1) grid.addWidget(self.commentEdit, 7, 1, 1, 1) locatGrid = QtGui.QGridLayout() locatGrid.addWidget(boxLabel, 0, 0) locatGrid.addWidget(posLabel, 1, 0) locatGrid.addWidget(self.boxEdit, 0, 1) locatGrid.addWidget(self.posEdit, 1, 1) locatGrid.setRowStretch(2, 1) qtyGrid = QtGui.QGridLayout() qtyGrid.addWidget(minQtyLabel, 0, 0) qtyGrid.addWidget(maxQtyLabel, 1, 0) qtyGrid.addWidget(qtyLabel, 3, 0) qtyGrid.setRowStretch(4, 1) qtyGrid.addWidget(self.minQtyEdit, 0, 1) qtyGrid.addWidget(self.maxQtyEdit, 1, 1) qtyGrid.setRowMinimumHeight(2, 20) qtyGrid.addWidget(self.qtyEdit, 3, 1) #x, y = 0, 0 #for supplierName, refCode in suppliers: #reorderGrid.addwidget(supplierName, y, x) #reorderGrid.addWidget( #add supplierEdit fn reorderGrid = QtGui.QGridLayout() reorderGrid.addWidget(supplier1Label, 0, 0) reorderGrid.addWidget(self.supplier1Edit, 0, 1) reorderGrid.addWidget(key1Label, 0, 2) reorderGrid.addWidget(self.key1Edit, 0, 3) reorderGrid.addWidget(supplier2Label, 1, 0) reorderGrid.addWidget(self.supplier2Edit, 1, 1) reorderGrid.addWidget(key2Label, 1, 2) reorderGrid.addWidget(self.key2Edit, 1, 3) reorderGrid.addWidget(supplier3Label, 2, 0) reorderGrid.addWidget(self.supplier3Edit, 2, 1) reorderGrid.addWidget(key3Label, 2, 2) reorderGrid.addWidget(self.key3Edit, 2, 3) groupBox.setLayout(locatGrid) reorderBox.setLayout(reorderGrid) qtyBox.setLayout(qtyGrid) grid.addWidget(groupBox, 0, 2, 5, 1) grid.addWidget(reorderBox, 8, 0, 3, 2) grid.addWidget(qtyBox, 7, 2, 3, 1) grid.addWidget(buttonWidget, 10, 2, 1, 1) commentLayout = QtGui.QHBoxLayout() commentLayout.addWidget(commentLabel) commentLayout.addWidget(self.commentEdit) topLeftLayout = QtGui.QVBoxLayout() topLayout = QtGui.QHBoxLayout() #TODO Look if this is really necessary? Grid into HBOX? Left over from start... topLayout.addLayout(grid) self.setLayout(topLayout) self.resize(650, 350) #self.setGeometry(300, 300, 650, 350) self.setWindowTitle('Component Viewer') #self.statusBar().showMessage('Welcome') #self.show() def selectFile(self): file = QtGui.QFileDialog.getOpenFileName(self, "Open Datasheet", QtCore.QDir.currentPath(), "PDF(*.pdf)") self.dataEdit.setText(file[0]) def addUrl(self): urlDialog = urlDatasheetDialog(self) if (urlDialog.exec_()): status = urlDialog.getStatus() if (status == URLDOWNLOAD): filename = str(self.nameEdit.text()+".pdf") self.dataEdit.setText(filename) elif (status == URLTEXT): self.dataEdit.setText(urlDialog.getUrl()) def getName(self): return str(self.nameEdit.text()) def accept(self): #global components class NameError(Exception): pass class QtyError(Exception): pass name = unicode(self.nameEdit.text()) manuf = unicode(self.manufEdit.currentText()) cat = unicode(self.catEdit.currentText()) pack = unicode(self.packEdit.currentText()) desc = unicode(self.descEdit.text()) data = unicode(self.dataEdit.text()) comments = unicode(self.commentEdit.toPlainText()) loc = unicode(self.boxEdit.currentText()) pos = unicode(self.posEdit.text()) minqty = self.minQtyEdit.value() desqty = self.maxQtyEdit.value() qty = self.qtyEdit.value() supp1 = [self.supplier1Edit.currentText(), self.key1Edit.text()] supp2 = [self.supplier2Edit.currentText(), self.key2Edit.text()] supp3 = [self.supplier3Edit.currentText(), self.key3Edit.text()] try: if len(name) == 0: raise NameError, ("The name can not be left empty.") if minqty > desqty: raise QtyError, ("Minimum Qty can not be greater than the desired Qty") except NameError, e: QtGui.QMessageBox.warning(self, "Name Error", unicode(e)) self.nameEdit.selectAll() self.nameEdit.setFocus() return except QtyError, e: QtGui.QMessageBox.warning(self, "Minimum Qty Error", unicode(e)) self.minQtyEdit.selectAll() self.minQtyEdit.setFocus() return