예제 #1
0
파일: main.py 프로젝트: Rast1234/graphics
    def __init__(self, parent=None):
        super(ControlMainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()  # get layout from 'pyside-uic mainwindow.ui' command
        self.ui.setupUi(self)
        self.dragPosition = None

        bcolor = qRgb(200, 200, 200)
        lcolor = qRgb(0, 0, 0)
        self.canvas = Canvas(bcolor, lcolor)
        self.ui.centralwidget.layout().insertWidget(1, self.canvas)
        self.ui.paintButton.clicked.connect(self.paintClick)

        self.pointsTable = TupleTableWidget(self.ui.ghostWidget)

        # set up test data
        self.pointsTable.fromList(testPoly)
        self.ui.task4_x1.setValue(testRect[0])
        self.ui.task4_y1.setValue(testRect[1])
        self.ui.task4_x2.setValue(testRect[2])
        self.ui.task4_y2.setValue(testRect[3])

        add_rule_callback = lambda: self.pointsTable.addRow("0", "0")
        remove_rule_callback = lambda: self.pointsTable.delRow()
        self.ui.addRuleButton.clicked.connect(add_rule_callback)
        self.ui.removeRuleButton.clicked.connect(remove_rule_callback)

        self.radios = [self.ui.radio_task2, self.ui.radio_task3, self.ui.radio_task4]
        self.frames = [self.ui.frame_task2, self.ui.frame_task3, self.ui.frame_task4]
        self.tasks = [self.task2, self.task3, self.task4]
        self.allinputs = [
            self.ui.task2_x1,
            self.ui.task2_y1,
            self.ui.task2_x2,
            self.ui.task2_y2,
            self.ui.task3_a,
            self.ui.task3_b,
            # to be continued...
        ]
        for x in self.allinputs:
            x.valueChanged.connect(self.canvas.repaint)
        for x in self.radios:
            x.toggled.connect(self.radioClick)
        self.radioClick()
예제 #2
0
파일: main.py 프로젝트: Rast1234/graphics
class ControlMainWindow(QMainWindow):
    """A main window class
    """

    def __init__(self, parent=None):
        super(ControlMainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()  # get layout from 'pyside-uic mainwindow.ui' command
        self.ui.setupUi(self)
        self.dragPosition = None

        bcolor = qRgb(200, 200, 200)
        lcolor = qRgb(0, 0, 0)
        self.canvas = Canvas(bcolor, lcolor)
        self.ui.centralwidget.layout().insertWidget(1, self.canvas)
        self.ui.paintButton.clicked.connect(self.paintClick)

        self.pointsTable = TupleTableWidget(self.ui.ghostWidget)

        # set up test data
        self.pointsTable.fromList(testPoly)
        self.ui.task4_x1.setValue(testRect[0])
        self.ui.task4_y1.setValue(testRect[1])
        self.ui.task4_x2.setValue(testRect[2])
        self.ui.task4_y2.setValue(testRect[3])

        add_rule_callback = lambda: self.pointsTable.addRow("0", "0")
        remove_rule_callback = lambda: self.pointsTable.delRow()
        self.ui.addRuleButton.clicked.connect(add_rule_callback)
        self.ui.removeRuleButton.clicked.connect(remove_rule_callback)

        self.radios = [self.ui.radio_task2, self.ui.radio_task3, self.ui.radio_task4]
        self.frames = [self.ui.frame_task2, self.ui.frame_task3, self.ui.frame_task4]
        self.tasks = [self.task2, self.task3, self.task4]
        self.allinputs = [
            self.ui.task2_x1,
            self.ui.task2_y1,
            self.ui.task2_x2,
            self.ui.task2_y2,
            self.ui.task3_a,
            self.ui.task3_b,
            # to be continued...
        ]
        for x in self.allinputs:
            x.valueChanged.connect(self.canvas.repaint)
        for x in self.radios:
            x.toggled.connect(self.radioClick)
        self.radioClick()

    def paintClick(self):
        for x in xrange(3):
            if self.radios[x].isChecked():
                self.tasks[x]()
        GlobalQueue.queue = GlobalQueue.Queue()
        GlobalQueue.queue.force = False
        self.canvas.repaint()

    def radioClick(self):
        for x in xrange(3):
            if self.radios[x].isChecked():
                self.frames[x].setEnabled(True)
            else:
                self.frames[x].setEnabled(False)
        if self.canvas.task is not None:
            self.paintClick()

    def keyPressEvent(self, event):
        """Overrides default keypress
        """
        key = event.key()
        if key == QtCore.Qt.Key_Escape:
            self.close()
        elif key == QtCore.Qt.Key_Equal:
            if GlobalQueue.queue is not None and not GlobalQueue.queue.isDone():
                GlobalQueue.queue.next()
                GlobalQueue.queue.force = True
                self.canvas.repaint()

    def mousePressEvent(self, event):
        """Make window draggable
        part 1
        """
        if event.button() == Qt.LeftButton:
            self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
        event.accept()

    def mouseMoveEvent(self, event):
        """Make window draggable
        part 2
        """
        if event.buttons() and Qt.LeftButton:
            self.move(event.globalPos() - self.dragPosition)
        event.accept()

    def task2(self):
        inputs = [self.ui.task2_x1, self.ui.task2_y1, self.ui.task2_x2, self.ui.task2_y2]
        self.canvas.task = self.canvas.task2
        self.canvas.data = inputs

    def task3(self):
        inputs = [self.ui.task3_a, self.ui.task3_b]
        self.canvas.task = self.canvas.task3
        self.canvas.data = inputs

    def task4(self):
        inputs = [self.ui.task4_x1, self.ui.task4_y1, self.ui.task4_x2, self.ui.task4_y2]
        self.canvas.task = self.canvas.task4
        self.canvas.data = (self.pointsTable.toList(), inputs)