Exemple #1
0
 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)
Exemple #2
0
 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()
Exemple #3
0
 def check(self, events):
     test = [False, None]
     for Component in self.conponents:
         output = Component.check(events)
         if output[0]:
             test = output
     return test
Exemple #4
0
 def display(self, screen):
     pygame.draw.rect(screen, self.color, self.rect)
     for Component in self.conponents:
         Component.display(screen)
Exemple #5
0
    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')
Exemple #6
0
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