outsource ui creation
This commit is contained in:
parent
67332cc9b9
commit
72d2fc5018
60
src/gui_qt/_py/ellipsewidget.py
Normal file
60
src/gui_qt/_py/ellipsewidget.py
Normal file
@ -0,0 +1,60 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/resources/_ui/ellipsewidget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_ellipsewidget(object):
|
||||
def setupUi(self, ellipsewidget):
|
||||
ellipsewidget.setObjectName("ellipsewidget")
|
||||
ellipsewidget.resize(400, 300)
|
||||
self.gridLayout = QtWidgets.QGridLayout(ellipsewidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 3, 0, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(ellipsewidget)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.gridLayout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.center_x = QtWidgets.QLineEdit(ellipsewidget)
|
||||
self.center_x.setObjectName("center_x")
|
||||
self.gridLayout.addWidget(self.center_x, 1, 1, 1, 1)
|
||||
self.center_y = QtWidgets.QLineEdit(ellipsewidget)
|
||||
self.center_y.setObjectName("center_y")
|
||||
self.gridLayout.addWidget(self.center_y, 1, 2, 1, 1)
|
||||
self.label = QtWidgets.QLabel(ellipsewidget)
|
||||
self.label.setObjectName("label")
|
||||
self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
|
||||
self.color_box = ColorListEditor(ellipsewidget)
|
||||
self.color_box.setObjectName("color_box")
|
||||
self.gridLayout.addWidget(self.color_box, 0, 1, 1, 2)
|
||||
self.axes_label = QtWidgets.QLabel(ellipsewidget)
|
||||
self.axes_label.setObjectName("axes_label")
|
||||
self.gridLayout.addWidget(self.axes_label, 2, 0, 1, 1)
|
||||
self.width_line = QtWidgets.QLineEdit(ellipsewidget)
|
||||
self.width_line.setObjectName("width_line")
|
||||
self.gridLayout.addWidget(self.width_line, 2, 1, 1, 1)
|
||||
self.height_line = QtWidgets.QLineEdit(ellipsewidget)
|
||||
self.height_line.setObjectName("height_line")
|
||||
self.gridLayout.addWidget(self.height_line, 2, 2, 1, 1)
|
||||
|
||||
self.retranslateUi(ellipsewidget)
|
||||
QtCore.QMetaObject.connectSlotsByName(ellipsewidget)
|
||||
|
||||
def retranslateUi(self, ellipsewidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
ellipsewidget.setWindowTitle(_translate("ellipsewidget", "Form"))
|
||||
self.color_label.setText(_translate("ellipsewidget", "Color"))
|
||||
self.center_x.setPlaceholderText(_translate("ellipsewidget", "x"))
|
||||
self.center_y.setPlaceholderText(_translate("ellipsewidget", "y"))
|
||||
self.label.setText(_translate("ellipsewidget", "Center"))
|
||||
self.axes_label.setText(_translate("ellipsewidget", "Axes"))
|
||||
self.width_line.setPlaceholderText(_translate("ellipsewidget", "axis 1"))
|
||||
self.height_line.setPlaceholderText(_translate("ellipsewidget", "axis 2"))
|
||||
from gui_qt.lib.delegates import ColorListEditor
|
54
src/gui_qt/_py/linedrawwidget.py
Normal file
54
src/gui_qt/_py/linedrawwidget.py
Normal file
@ -0,0 +1,54 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/resources/_ui/linedrawwidget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_linewidget(object):
|
||||
def setupUi(self, linewidget):
|
||||
linewidget.setObjectName("linewidget")
|
||||
linewidget.resize(400, 300)
|
||||
self.gridLayout = QtWidgets.QGridLayout(linewidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.pos_lineedit = QtWidgets.QLineEdit(linewidget)
|
||||
self.pos_lineedit.setObjectName("pos_lineedit")
|
||||
self.gridLayout.addWidget(self.pos_lineedit, 1, 1, 1, 1)
|
||||
self.orientation_label = QtWidgets.QLabel(linewidget)
|
||||
self.orientation_label.setObjectName("orientation_label")
|
||||
self.gridLayout.addWidget(self.orientation_label, 2, 0, 1, 1)
|
||||
self.orient_combobox = QtWidgets.QComboBox(linewidget)
|
||||
self.orient_combobox.setObjectName("orient_combobox")
|
||||
self.orient_combobox.addItem("")
|
||||
self.orient_combobox.addItem("")
|
||||
self.gridLayout.addWidget(self.orient_combobox, 2, 1, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(linewidget)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.gridLayout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.pos_label = QtWidgets.QLabel(linewidget)
|
||||
self.pos_label.setObjectName("pos_label")
|
||||
self.gridLayout.addWidget(self.pos_label, 1, 0, 1, 1)
|
||||
self.color_box = ColorListEditor(linewidget)
|
||||
self.color_box.setObjectName("color_box")
|
||||
self.gridLayout.addWidget(self.color_box, 0, 1, 1, 1)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 3, 1, 1, 1)
|
||||
|
||||
self.retranslateUi(linewidget)
|
||||
QtCore.QMetaObject.connectSlotsByName(linewidget)
|
||||
|
||||
def retranslateUi(self, linewidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
linewidget.setWindowTitle(_translate("linewidget", "Form"))
|
||||
self.orientation_label.setText(_translate("linewidget", "Orientation"))
|
||||
self.orient_combobox.setItemText(0, _translate("linewidget", "Horizontal"))
|
||||
self.orient_combobox.setItemText(1, _translate("linewidget", "Vertical"))
|
||||
self.color_label.setText(_translate("linewidget", "Color"))
|
||||
self.pos_label.setText(_translate("linewidget", "Position"))
|
||||
from gui_qt.lib.delegates import ColorListEditor
|
62
src/gui_qt/_py/multipointwidget.py
Normal file
62
src/gui_qt/_py/multipointwidget.py
Normal file
@ -0,0 +1,62 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/resources/_ui/multipointwidget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_multipointwidget(object):
|
||||
def setupUi(self, multipointwidget):
|
||||
multipointwidget.setObjectName("multipointwidget")
|
||||
multipointwidget.resize(400, 300)
|
||||
self.gridLayout = QtWidgets.QGridLayout(multipointwidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.loop_checkbox = QtWidgets.QCheckBox(multipointwidget)
|
||||
self.loop_checkbox.setObjectName("loop_checkbox")
|
||||
self.gridLayout.addWidget(self.loop_checkbox, 1, 0, 1, 2)
|
||||
self.addButton = QtWidgets.QPushButton(multipointwidget)
|
||||
self.addButton.setObjectName("addButton")
|
||||
self.gridLayout.addWidget(self.addButton, 3, 0, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(multipointwidget)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.gridLayout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.table_widget = QtWidgets.QTableWidget(multipointwidget)
|
||||
self.table_widget.setObjectName("table_widget")
|
||||
self.table_widget.setColumnCount(2)
|
||||
self.table_widget.setRowCount(0)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.table_widget.setHorizontalHeaderItem(0, item)
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.table_widget.setHorizontalHeaderItem(1, item)
|
||||
self.table_widget.horizontalHeader().setStretchLastSection(True)
|
||||
self.gridLayout.addWidget(self.table_widget, 2, 0, 1, 2)
|
||||
self.color_box = ColorListEditor(multipointwidget)
|
||||
self.color_box.setObjectName("color_box")
|
||||
self.gridLayout.addWidget(self.color_box, 0, 1, 1, 1)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 4, 0, 1, 1)
|
||||
self.removeButton = QtWidgets.QPushButton(multipointwidget)
|
||||
self.removeButton.setObjectName("removeButton")
|
||||
self.gridLayout.addWidget(self.removeButton, 3, 1, 1, 1)
|
||||
|
||||
self.retranslateUi(multipointwidget)
|
||||
QtCore.QMetaObject.connectSlotsByName(multipointwidget)
|
||||
|
||||
def retranslateUi(self, multipointwidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
multipointwidget.setWindowTitle(_translate("multipointwidget", "Form"))
|
||||
self.loop_checkbox.setText(_translate("multipointwidget", "Close loop"))
|
||||
self.addButton.setText(_translate("multipointwidget", "Add point"))
|
||||
self.color_label.setText(_translate("multipointwidget", "Color"))
|
||||
item = self.table_widget.horizontalHeaderItem(0)
|
||||
item.setText(_translate("multipointwidget", "x"))
|
||||
item = self.table_widget.horizontalHeaderItem(1)
|
||||
item.setText(_translate("multipointwidget", "y"))
|
||||
self.removeButton.setText(_translate("multipointwidget", "Remove last point"))
|
||||
from gui_qt.lib.delegates import ColorListEditor
|
60
src/gui_qt/_py/rectanglewidget.py
Normal file
60
src/gui_qt/_py/rectanglewidget.py
Normal file
@ -0,0 +1,60 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/resources/_ui/rectanglewidget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_rectanglewidget(object):
|
||||
def setupUi(self, rectanglewidget):
|
||||
rectanglewidget.setObjectName("rectanglewidget")
|
||||
rectanglewidget.resize(400, 300)
|
||||
self.gridLayout = QtWidgets.QGridLayout(rectanglewidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 3, 0, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(rectanglewidget)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.gridLayout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.left_x = QtWidgets.QLineEdit(rectanglewidget)
|
||||
self.left_x.setObjectName("left_x")
|
||||
self.gridLayout.addWidget(self.left_x, 1, 1, 1, 1)
|
||||
self.left_y = QtWidgets.QLineEdit(rectanglewidget)
|
||||
self.left_y.setObjectName("left_y")
|
||||
self.gridLayout.addWidget(self.left_y, 1, 2, 1, 1)
|
||||
self.left_label = QtWidgets.QLabel(rectanglewidget)
|
||||
self.left_label.setObjectName("left_label")
|
||||
self.gridLayout.addWidget(self.left_label, 1, 0, 1, 1)
|
||||
self.color_box = ColorListEditor(rectanglewidget)
|
||||
self.color_box.setObjectName("color_box")
|
||||
self.gridLayout.addWidget(self.color_box, 0, 1, 1, 2)
|
||||
self.right_label = QtWidgets.QLabel(rectanglewidget)
|
||||
self.right_label.setObjectName("right_label")
|
||||
self.gridLayout.addWidget(self.right_label, 2, 0, 1, 1)
|
||||
self.right_x = QtWidgets.QLineEdit(rectanglewidget)
|
||||
self.right_x.setObjectName("right_x")
|
||||
self.gridLayout.addWidget(self.right_x, 2, 1, 1, 1)
|
||||
self.right_y = QtWidgets.QLineEdit(rectanglewidget)
|
||||
self.right_y.setObjectName("right_y")
|
||||
self.gridLayout.addWidget(self.right_y, 2, 2, 1, 1)
|
||||
|
||||
self.retranslateUi(rectanglewidget)
|
||||
QtCore.QMetaObject.connectSlotsByName(rectanglewidget)
|
||||
|
||||
def retranslateUi(self, rectanglewidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
rectanglewidget.setWindowTitle(_translate("rectanglewidget", "Form"))
|
||||
self.color_label.setText(_translate("rectanglewidget", "Color"))
|
||||
self.left_x.setPlaceholderText(_translate("rectanglewidget", "x"))
|
||||
self.left_y.setPlaceholderText(_translate("rectanglewidget", "y"))
|
||||
self.left_label.setText(_translate("rectanglewidget", "Lower left"))
|
||||
self.right_label.setText(_translate("rectanglewidget", "Upper right"))
|
||||
self.right_x.setPlaceholderText(_translate("rectanglewidget", "x"))
|
||||
self.right_y.setPlaceholderText(_translate("rectanglewidget", "y"))
|
||||
from gui_qt.lib.delegates import ColorListEditor
|
55
src/gui_qt/_py/textdrawidget.py
Normal file
55
src/gui_qt/_py/textdrawidget.py
Normal file
@ -0,0 +1,55 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/resources/_ui/textdrawidget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_textwidget(object):
|
||||
def setupUi(self, textwidget):
|
||||
textwidget.setObjectName("textwidget")
|
||||
textwidget.resize(400, 300)
|
||||
self.gridLayout = QtWidgets.QGridLayout(textwidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 3, 0, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(textwidget)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.gridLayout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.center_x = QtWidgets.QLineEdit(textwidget)
|
||||
self.center_x.setObjectName("center_x")
|
||||
self.gridLayout.addWidget(self.center_x, 1, 1, 1, 1)
|
||||
self.center_y = QtWidgets.QLineEdit(textwidget)
|
||||
self.center_y.setObjectName("center_y")
|
||||
self.gridLayout.addWidget(self.center_y, 1, 2, 1, 1)
|
||||
self.center_label = QtWidgets.QLabel(textwidget)
|
||||
self.center_label.setObjectName("center_label")
|
||||
self.gridLayout.addWidget(self.center_label, 1, 0, 1, 1)
|
||||
self.color_box = ColorListEditor(textwidget)
|
||||
self.color_box.setObjectName("color_box")
|
||||
self.gridLayout.addWidget(self.color_box, 0, 1, 1, 2)
|
||||
self.text_label = QtWidgets.QLabel(textwidget)
|
||||
self.text_label.setObjectName("text_label")
|
||||
self.gridLayout.addWidget(self.text_label, 2, 0, 1, 1)
|
||||
self.text_lineedit = QtWidgets.QLineEdit(textwidget)
|
||||
self.text_lineedit.setObjectName("text_lineedit")
|
||||
self.gridLayout.addWidget(self.text_lineedit, 2, 1, 1, 2)
|
||||
|
||||
self.retranslateUi(textwidget)
|
||||
QtCore.QMetaObject.connectSlotsByName(textwidget)
|
||||
|
||||
def retranslateUi(self, textwidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
textwidget.setWindowTitle(_translate("textwidget", "Form"))
|
||||
self.color_label.setText(_translate("textwidget", "Color"))
|
||||
self.center_x.setPlaceholderText(_translate("textwidget", "x"))
|
||||
self.center_y.setPlaceholderText(_translate("textwidget", "y"))
|
||||
self.center_label.setText(_translate("textwidget", "Center"))
|
||||
self.text_label.setText(_translate("textwidget", "Text"))
|
||||
from gui_qt.lib.delegates import ColorListEditor
|
@ -2,96 +2,59 @@ from __future__ import annotations
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
from gui_qt.lib.delegates import ColorListEditor
|
||||
from .._py.ellipsewidget import Ui_ellipsewidget
|
||||
from .._py.linedrawwidget import Ui_linewidget
|
||||
from .._py.rectanglewidget import Ui_rectanglewidget
|
||||
|
||||
|
||||
class ObjectWidget(QtWidgets.QWidget):
|
||||
__all__ = ['LineWidget', 'MultiPointWidget', 'RectangleWidget', 'EllipseWidget', 'TextWidget']
|
||||
|
||||
from .._py.multipointwidget import Ui_multipointwidget
|
||||
from .._py.textdrawidget import Ui_textwidget
|
||||
|
||||
|
||||
def parse_point(x_widget: QtWidgets.QLineEdit, y_widget: QtWidgets.QLineEdit) -> None | tuple[float, float]:
|
||||
x = x_widget.text()
|
||||
if not x:
|
||||
return
|
||||
y = y_widget.text()
|
||||
if not y:
|
||||
return
|
||||
|
||||
try:
|
||||
return float(x), float(y)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
|
||||
class LineWidget(QtWidgets.QWidget, Ui_linewidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.layout = QtWidgets.QGridLayout()
|
||||
self.layout.setContentsMargins(3, 3, 3, 3)
|
||||
|
||||
self.color_label = QtWidgets.QLabel('Color')
|
||||
self.layout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.color_box = ColorListEditor(self)
|
||||
self.layout.addWidget(self.color_box, 0, 1, 1, 2)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
def collect_args(self) -> dict:
|
||||
return {'color': self.color_box.currentData(QtCore.Qt.UserRole)}
|
||||
|
||||
@staticmethod
|
||||
def parse_point(x_widget: QtWidgets.QLineEdit, y_widget: QtWidgets.QLineEdit) -> None | tuple[float, float]:
|
||||
x = x_widget.text()
|
||||
if not x:
|
||||
return
|
||||
y = y_widget.text()
|
||||
if not y:
|
||||
return
|
||||
|
||||
try:
|
||||
return float(x), float(y)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
|
||||
class LineWidget(ObjectWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
|
||||
self.pos_label = QtWidgets.QLabel('Position')
|
||||
self.layout.addWidget(self.pos_label, 1, 0, 1, 1)
|
||||
self.pos_lineedit = QtWidgets.QLineEdit()
|
||||
self.pos_lineedit.setValidator(QtGui.QDoubleValidator())
|
||||
self.layout.addWidget(self.pos_lineedit, 1, 1, 1, 2)
|
||||
|
||||
self.orientation_label = QtWidgets.QLabel('Orientation')
|
||||
self.layout.addWidget(self.orientation_label, 2, 0, 1, 1)
|
||||
self.orient_combobox = QtWidgets.QComboBox()
|
||||
self.orient_combobox.addItems(['Horizontal', 'Vertical'])
|
||||
self.layout.addWidget(self.orient_combobox, 2, 1, 1, 2)
|
||||
self.layout.setRowStretch(3, 1)
|
||||
|
||||
def collect_args(self):
|
||||
dic = super().collect_args()
|
||||
pos = self.pos_lineedit.text()
|
||||
if not pos:
|
||||
return
|
||||
|
||||
try:
|
||||
dic['pos'] = float(pos)
|
||||
pos = float(pos)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
dic['angle'] = self.orient_combobox.currentIndex() * 90
|
||||
dic = {
|
||||
'color': self.color_box.currentData(),
|
||||
'pos': pos,
|
||||
'angle': self.orient_combobox.currentIndex() * 90
|
||||
}
|
||||
|
||||
return dic
|
||||
|
||||
|
||||
class MultiPointWidget(ObjectWidget):
|
||||
class MultiPointWidget(QtWidgets.QWidget, Ui_multipointwidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
|
||||
self.loop_checkbox = QtWidgets.QCheckBox('Close loop')
|
||||
self.layout.addWidget(self.loop_checkbox, 1, 0, 1, 3)
|
||||
|
||||
self.table_widget = QtWidgets.QTableWidget()
|
||||
self.table_widget.setColumnCount(2)
|
||||
self.table_widget.setHorizontalHeaderLabels(['x', 'y'])
|
||||
header = self.table_widget.horizontalHeader()
|
||||
header.setStretchLastSection(True)
|
||||
self.layout.addWidget(self.table_widget, 2, 0, 1, 3)
|
||||
|
||||
self.addButton = QtWidgets.QPushButton('Add point')
|
||||
self.layout.addWidget(self.addButton, 3, 1, 1, 1)
|
||||
self.layout.setRowStretch(3, 1)
|
||||
self.addButton.clicked.connect(self.new_point)
|
||||
|
||||
self.removeButton = QtWidgets.QPushButton('Remove point')
|
||||
self.layout.addWidget(self.removeButton, 3, 2, 1, 1)
|
||||
self.layout.setRowStretch(3, 1)
|
||||
self.removeButton.clicked.connect(self.less_point)
|
||||
self.setupUi(self)
|
||||
|
||||
def new_point(self, _):
|
||||
row = self.table_widget.rowCount()
|
||||
@ -129,33 +92,15 @@ class MultiPointWidget(ObjectWidget):
|
||||
return
|
||||
|
||||
|
||||
class RectangleWidget(ObjectWidget):
|
||||
class RectangleWidget(QtWidgets.QWidget, Ui_rectanglewidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.leftbottom_label = QtWidgets.QLabel('Lower left')
|
||||
self.layout.addWidget(self.leftbottom_label, 1, 0, 1, 1)
|
||||
self.left_x = QtWidgets.QLineEdit()
|
||||
self.left_x.setPlaceholderText('x')
|
||||
self.layout.addWidget(self.left_x, 1, 1, 1, 1)
|
||||
self.left_y = QtWidgets.QLineEdit()
|
||||
self.left_y.setPlaceholderText('y')
|
||||
self.left_x.setValidator(QtGui.QDoubleValidator())
|
||||
self.left_y.setValidator(QtGui.QDoubleValidator())
|
||||
self.layout.addWidget(self.left_y, 1, 2, 1, 1)
|
||||
|
||||
self.righttop_label = QtWidgets.QLabel('Upper right')
|
||||
self.layout.addWidget(self.righttop_label, 2, 0, 1, 1)
|
||||
self.right_x = QtWidgets.QLineEdit()
|
||||
self.right_x.setPlaceholderText('x')
|
||||
self.layout.addWidget(self.right_x, 2, 1, 1, 1)
|
||||
self.right_y = QtWidgets.QLineEdit()
|
||||
self.right_y.setPlaceholderText('y')
|
||||
self.right_x.setValidator(QtGui.QDoubleValidator())
|
||||
self.right_y.setValidator(QtGui.QDoubleValidator())
|
||||
self.layout.addWidget(self.right_y, 2, 2, 1, 1)
|
||||
|
||||
self.layout.setRowStretch(3, 1)
|
||||
|
||||
def collect_args(self):
|
||||
dic = super().collect_args()
|
||||
@ -172,42 +117,24 @@ class RectangleWidget(ObjectWidget):
|
||||
return dic
|
||||
|
||||
|
||||
class EllipseWidget(ObjectWidget):
|
||||
class EllipseWidget(QtWidgets.QWidget, Ui_ellipsewidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.centre_label = QtWidgets.QLabel('Centre')
|
||||
self.layout.addWidget(self.centre_label, 1, 0, 1, 1)
|
||||
self.centre_x = QtWidgets.QLineEdit()
|
||||
self.centre_x.setPlaceholderText('x')
|
||||
self.layout.addWidget(self.centre_x, 1, 1, 1, 1)
|
||||
self.centre_y = QtWidgets.QLineEdit()
|
||||
self.centre_y.setPlaceholderText('y')
|
||||
self.centre_x.setValidator(QtGui.QDoubleValidator())
|
||||
self.centre_y.setValidator(QtGui.QDoubleValidator())
|
||||
self.layout.addWidget(self.centre_y, 1, 2, 1, 1)
|
||||
|
||||
self.axes_label = QtWidgets.QLabel('Axes')
|
||||
self.layout.addWidget(self.axes_label, 2, 0, 1, 1)
|
||||
self.width = QtWidgets.QLineEdit()
|
||||
self.width.setPlaceholderText('width')
|
||||
self.layout.addWidget(self.width, 2, 1, 1, 1)
|
||||
self.height = QtWidgets.QLineEdit()
|
||||
self.height.setPlaceholderText('Height')
|
||||
self.width.setValidator(QtGui.QDoubleValidator())
|
||||
self.width.setValidator(QtGui.QDoubleValidator())
|
||||
self.layout.addWidget(self.height, 2, 2, 1, 1)
|
||||
|
||||
self.layout.setRowStretch(3, 1)
|
||||
self.center_x.setValidator(QtGui.QDoubleValidator())
|
||||
self.center_y.setValidator(QtGui.QDoubleValidator())
|
||||
self.width_line.setValidator(QtGui.QDoubleValidator())
|
||||
self.height_line.setValidator(QtGui.QDoubleValidator())
|
||||
|
||||
def collect_args(self):
|
||||
dic = super().collect_args()
|
||||
centre = self.parse_point(self.centre_x, self.centre_y)
|
||||
centre = self.parse_point(self.center_x, self.center_y)
|
||||
if centre is None:
|
||||
return
|
||||
dic['centre'] = centre
|
||||
|
||||
axes = self.parse_point(self.width, self.height)
|
||||
axes = self.parse_point(self.width_line, self.height_line)
|
||||
if axes is None:
|
||||
return
|
||||
dic['axes'] = axes
|
||||
@ -215,31 +142,17 @@ class EllipseWidget(ObjectWidget):
|
||||
return dic
|
||||
|
||||
|
||||
class TextWidget(ObjectWidget):
|
||||
class TextWidget(QtWidgets.QWidget, Ui_textwidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.centre_label = QtWidgets.QLabel('Centre')
|
||||
self.layout.addWidget(self.centre_label, 1, 0, 1, 1)
|
||||
self.centre_x = QtWidgets.QLineEdit()
|
||||
self.centre_x.setPlaceholderText('x')
|
||||
self.layout.addWidget(self.centre_x, 1, 1, 1, 1)
|
||||
self.centre_y = QtWidgets.QLineEdit()
|
||||
self.centre_y.setPlaceholderText('y')
|
||||
self.centre_x.setValidator(QtGui.QDoubleValidator())
|
||||
self.centre_y.setValidator(QtGui.QDoubleValidator())
|
||||
self.layout.addWidget(self.centre_y, 1, 2, 1, 1)
|
||||
|
||||
self.text_label = QtWidgets.QLabel('Text')
|
||||
self.layout.addWidget(self.text_label, 2, 0, 1, 1)
|
||||
self.text_lineedit =QtWidgets.QLineEdit()
|
||||
self.layout.addWidget(self.text_lineedit, 2, 1, 1, 2)
|
||||
|
||||
self.layout.setRowStretch(3, 1)
|
||||
self.center_x.setValidator(QtGui.QDoubleValidator())
|
||||
self.center_y.setValidator(QtGui.QDoubleValidator())
|
||||
|
||||
def collect_args(self):
|
||||
dic = super().collect_args()
|
||||
centre = self.parse_point(self.centre_x, self.centre_y)
|
||||
centre = self.parse_point(self.center_x, self.center_y)
|
||||
if centre is None:
|
||||
return
|
||||
dic['centre'] = centre
|
||||
|
@ -2,18 +2,33 @@ from __future__ import annotations
|
||||
|
||||
import uuid
|
||||
|
||||
from pyqtgraph import mkPen
|
||||
from pyqtgraph import mkPen, GraphicsObject, mkBrush
|
||||
from numpy import log10
|
||||
|
||||
from gui_qt.Qt import QtCore, QtGui
|
||||
from gui_qt.lib.pg_objects import LogInfiniteLine, PlotItem
|
||||
|
||||
|
||||
class LineObject:
|
||||
def __init__(self, **kwargs):
|
||||
self.id = str(uuid.uuid4())
|
||||
__all__ = ['LineObject', 'MultipointObject', 'RectangleObject']
|
||||
|
||||
self.pos = kwargs['pos']
|
||||
self.angle = kwargs['angle']
|
||||
self.color = kwargs['color']
|
||||
|
||||
class BaseObject:
|
||||
def __init__(self, color=None):
|
||||
self.id = str(uuid.uuid4())
|
||||
self.color = color
|
||||
|
||||
self.drawing = None
|
||||
|
||||
def __str__(self):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class LineObject(BaseObject):
|
||||
def __init__(self, pos: float, angle: float, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
self.pos = pos
|
||||
self.angle = angle
|
||||
|
||||
self.drawing = LogInfiniteLine(pos=self.pos, angle=self.angle, pen=mkPen(color=self.color.rgb()))
|
||||
|
||||
@ -21,13 +36,11 @@ class LineObject:
|
||||
return f'{"x" if self.angle==90 else "y"}={self.pos}'
|
||||
|
||||
|
||||
class MultipointObject:
|
||||
def __init__(self, **kwargs):
|
||||
self.id = str(uuid.uuid4())
|
||||
|
||||
self.color = kwargs['color']
|
||||
x, y = zip(*kwargs['pts'])
|
||||
self.closed = kwargs['closed']
|
||||
class MultipointObject(BaseObject):
|
||||
def __init__(self, pts: list, closed: bool = False, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
x, y = zip(*pts)
|
||||
self.closed = closed
|
||||
|
||||
if self.closed:
|
||||
x += (x[0],)
|
||||
@ -39,3 +52,59 @@ class MultipointObject:
|
||||
|
||||
def __str__(self):
|
||||
return f'{len(self._y)-int(self.closed)}-pts'
|
||||
|
||||
|
||||
class RectangleObject(GraphicsObject, BaseObject):
|
||||
def __init__(self, left: tuple, right: tuple, **kwargs):
|
||||
GraphicsObject.__init__(self)
|
||||
BaseObject.__init__(self, **kwargs)
|
||||
|
||||
self.p0 = left
|
||||
self.delta = [right[0]-self.p0[0], right[1]-self.p0[1]]
|
||||
self.log_mode = [False, False]
|
||||
self.generatePicture()
|
||||
|
||||
def __str__(self):
|
||||
return 'rectangle'
|
||||
|
||||
def generatePicture(self):
|
||||
## pre-computing a QPicture object allows paint() to run much more quickly,
|
||||
## rather than re-drawing the shapes every time.
|
||||
self.picture = QtGui.QPicture()
|
||||
p = QtGui.QPainter(self.picture)
|
||||
p.setPen(mkPen('w'))
|
||||
p.setBrush(mkBrush('r'))
|
||||
p.drawRect(QtCore.QRectF(*self.p0, *self.delta))
|
||||
p.end()
|
||||
|
||||
def paint(self, p, _):
|
||||
p.drawPicture(0, 0, self.picture)
|
||||
|
||||
def boundingRect(self):
|
||||
## boundingRect _must_ indicate the entire area that will be drawn on
|
||||
## or else we will get artifacts and possibly crashing.
|
||||
## (in this case, QPicture does all the work of computing the bouning rect for us)
|
||||
return QtCore.QRectF(self.picture.boundingRect())
|
||||
|
||||
def setLogMode(self, x_mode, y_mode):
|
||||
if self.log_mode == [x_mode, y_mode]:
|
||||
return
|
||||
|
||||
if self.log_mode[0] != x_mode:
|
||||
if x_mode:
|
||||
xmax = log10(self.p0[0]+self.delta[0])
|
||||
self.x_disp = log10(self.p0[0])
|
||||
self.dx = xmax - self.x0
|
||||
else:
|
||||
self.x_disp = self.p0[0]
|
||||
self.dx = self.delta[0]
|
||||
if args[1] and self.log_mode[1] != args[1]:
|
||||
ymax = log10(self.y0 + self.dy)
|
||||
self.y0 = log10(self.y0)
|
||||
self.dy = ymax - self.y0
|
||||
|
||||
self.generatePicture()
|
||||
|
||||
self.log_mode = [x_mode, y_mode]
|
||||
|
||||
self.informViewBoundsChanged()
|
||||
|
@ -1,9 +1,9 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from gui_qt.Qt import QtWidgets, QtCore
|
||||
from gui_qt._py.guidelinewidget import Ui_Form
|
||||
from gui_qt.graphs.draw_inputs import EllipseWidget, LineWidget, MultiPointWidget, RectangleWidget, TextWidget
|
||||
from gui_qt.graphs.draw_objects import LineObject, MultipointObject
|
||||
from ..Qt import QtWidgets, QtCore
|
||||
from .._py.guidelinewidget import Ui_Form
|
||||
from .draw_inputs import *
|
||||
from .draw_objects import *
|
||||
|
||||
|
||||
class DrawingsWidget(QtWidgets.QWidget, Ui_Form):
|
||||
@ -44,6 +44,7 @@ class DrawingsWidget(QtWidgets.QWidget, Ui_Form):
|
||||
if dic is None:
|
||||
QtWidgets.QMessageBox.information(self, 'Not working', 'Something is missing to create this object')
|
||||
return
|
||||
|
||||
idx = self.treeWidget_2.selectedIndexes()
|
||||
if idx:
|
||||
item = self.treeWidget_2.itemFromIndex(idx[0])
|
||||
@ -52,6 +53,8 @@ class DrawingsWidget(QtWidgets.QWidget, Ui_Form):
|
||||
new_obj = LineObject(**dic)
|
||||
elif self.mode_comboBox.currentIndex() == 1:
|
||||
new_obj = MultipointObject(**dic)
|
||||
elif self.mode_comboBox.currentIndex() == 3:
|
||||
new_obj = RectangleObject(**dic)
|
||||
child = QtWidgets.QTreeWidgetItem([str(new_obj)])
|
||||
child.setData(0, QtCore.Qt.UserRole, new_obj.id)
|
||||
item.addChild(child)
|
||||
@ -61,10 +64,3 @@ class DrawingsWidget(QtWidgets.QWidget, Ui_Form):
|
||||
QtWidgets.QMessageBox.information(self, 'Not working', 'No graph is selected to add this object.')
|
||||
|
||||
self.treeWidget_2.expandAll()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QtWidgets.QApplication([])
|
||||
w = DrawingsWidget()
|
||||
w.show()
|
||||
app.exec()
|
||||
|
54
src/gui_qt/linedrawwidget.py
Normal file
54
src/gui_qt/linedrawwidget.py
Normal file
@ -0,0 +1,54 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'src/resources/_ui/linedrawwidget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_linewidget(object):
|
||||
def setupUi(self, linewidget):
|
||||
linewidget.setObjectName("linewidget")
|
||||
linewidget.resize(400, 300)
|
||||
self.gridLayout = QtWidgets.QGridLayout(linewidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.pos_lineedit = QtWidgets.QLineEdit(linewidget)
|
||||
self.pos_lineedit.setObjectName("pos_lineedit")
|
||||
self.gridLayout.addWidget(self.pos_lineedit, 1, 1, 1, 1)
|
||||
self.orientation_label = QtWidgets.QLabel(linewidget)
|
||||
self.orientation_label.setObjectName("orientation_label")
|
||||
self.gridLayout.addWidget(self.orientation_label, 2, 0, 1, 1)
|
||||
self.orient_combobox = QtWidgets.QComboBox(linewidget)
|
||||
self.orient_combobox.setObjectName("orient_combobox")
|
||||
self.orient_combobox.addItem("")
|
||||
self.orient_combobox.addItem("")
|
||||
self.gridLayout.addWidget(self.orient_combobox, 2, 1, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(linewidget)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.gridLayout.addWidget(self.color_label, 0, 0, 1, 1)
|
||||
self.pos_label = QtWidgets.QLabel(linewidget)
|
||||
self.pos_label.setObjectName("pos_label")
|
||||
self.gridLayout.addWidget(self.pos_label, 1, 0, 1, 1)
|
||||
self.color_box = ColorListEditor(linewidget)
|
||||
self.color_box.setObjectName("color_box")
|
||||
self.gridLayout.addWidget(self.color_box, 0, 1, 1, 1)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.gridLayout.addItem(spacerItem, 3, 1, 1, 1)
|
||||
|
||||
self.retranslateUi(linewidget)
|
||||
QtCore.QMetaObject.connectSlotsByName(linewidget)
|
||||
|
||||
def retranslateUi(self, linewidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
linewidget.setWindowTitle(_translate("linewidget", "Form"))
|
||||
self.orientation_label.setText(_translate("linewidget", "Orientation"))
|
||||
self.orient_combobox.setItemText(0, _translate("linewidget", "Horizontal"))
|
||||
self.orient_combobox.setItemText(1, _translate("linewidget", "Vertical"))
|
||||
self.color_label.setText(_translate("linewidget", "Color"))
|
||||
self.pos_label.setText(_translate("linewidget", "Position"))
|
||||
from gui_qt.lib,delegates import ColorListEditor
|
93
src/resources/_ui/ellipsewidget.ui
Normal file
93
src/resources/_ui/ellipsewidget.ui
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ellipsewidget</class>
|
||||
<widget class="QWidget" name="ellipsewidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="3" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="color_label">
|
||||
<property name="text">
|
||||
<string>Color</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="center_x">
|
||||
<property name="placeholderText">
|
||||
<string>x</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLineEdit" name="center_y">
|
||||
<property name="placeholderText">
|
||||
<string>y</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Center</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="ColorListEditor" name="color_box"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="axes_label">
|
||||
<property name="text">
|
||||
<string>Axes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="width_line">
|
||||
<property name="placeholderText">
|
||||
<string>axis 1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLineEdit" name="height_line">
|
||||
<property name="placeholderText">
|
||||
<string>axis 2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ColorListEditor</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui_qt.lib.delegates</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
82
src/resources/_ui/linedrawwidget.ui
Normal file
82
src/resources/_ui/linedrawwidget.ui
Normal file
@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>linewidget</class>
|
||||
<widget class="QWidget" name="linewidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="pos_lineedit"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="orientation_label">
|
||||
<property name="text">
|
||||
<string>Orientation</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="orient_combobox">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Horizontal</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Vertical</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="color_label">
|
||||
<property name="text">
|
||||
<string>Color</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="pos_label">
|
||||
<property name="text">
|
||||
<string>Position</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="ColorListEditor" name="color_box"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ColorListEditor</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui_qt.lib.delegates</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
89
src/resources/_ui/multipointwidget.ui
Normal file
89
src/resources/_ui/multipointwidget.ui
Normal file
@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>multipointwidget</class>
|
||||
<widget class="QWidget" name="multipointwidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="loop_checkbox">
|
||||
<property name="text">
|
||||
<string>Close loop</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QPushButton" name="addButton">
|
||||
<property name="text">
|
||||
<string>Add point</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="color_label">
|
||||
<property name="text">
|
||||
<string>Color</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QTableWidget" name="table_widget">
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>x</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>y</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="ColorListEditor" name="color_box"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="removeButton">
|
||||
<property name="text">
|
||||
<string>Remove last point</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ColorListEditor</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui_qt.lib.delegates</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
93
src/resources/_ui/rectanglewidget.ui
Normal file
93
src/resources/_ui/rectanglewidget.ui
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>rectanglewidget</class>
|
||||
<widget class="QWidget" name="rectanglewidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="3" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="color_label">
|
||||
<property name="text">
|
||||
<string>Color</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="left_x">
|
||||
<property name="placeholderText">
|
||||
<string>x</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLineEdit" name="left_y">
|
||||
<property name="placeholderText">
|
||||
<string>y</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="left_label">
|
||||
<property name="text">
|
||||
<string>Lower left</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="ColorListEditor" name="color_box"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="right_label">
|
||||
<property name="text">
|
||||
<string>Upper right</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="right_x">
|
||||
<property name="placeholderText">
|
||||
<string>x</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLineEdit" name="right_y">
|
||||
<property name="placeholderText">
|
||||
<string>y</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ColorListEditor</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui_qt.lib.delegates</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
82
src/resources/_ui/textdrawidget.ui
Normal file
82
src/resources/_ui/textdrawidget.ui
Normal file
@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>textwidget</class>
|
||||
<widget class="QWidget" name="textwidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="3" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="color_label">
|
||||
<property name="text">
|
||||
<string>Color</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="center_x">
|
||||
<property name="placeholderText">
|
||||
<string>x</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLineEdit" name="center_y">
|
||||
<property name="placeholderText">
|
||||
<string>y</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="center_label">
|
||||
<property name="text">
|
||||
<string>Center</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="2">
|
||||
<widget class="ColorListEditor" name="color_box"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="text_label">
|
||||
<property name="text">
|
||||
<string>Text</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="text_lineedit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>ColorListEditor</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui_qt.lib.delegates</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue
Block a user