- in QRCode Plugin remade the GUI
- added some new properties to the FCCheckBox GUI element
This commit is contained in:
@@ -10,7 +10,9 @@ CHANGELOG for FlatCAM beta
|
|||||||
5.09.2021
|
5.09.2021
|
||||||
|
|
||||||
- in Punch Gerber Plugin remade the GUI
|
- in Punch Gerber Plugin remade the GUI
|
||||||
- some minor fixes in some of the Plugins
|
- some minor fixes in some Plugins
|
||||||
|
- in QRCode Plugin remade the GUI
|
||||||
|
- added some new properties to the FCCheckBox GUI element
|
||||||
|
|
||||||
4.09.2021
|
4.09.2021
|
||||||
|
|
||||||
|
|||||||
@@ -1602,6 +1602,48 @@ class FCCheckBox(QtWidgets.QCheckBox):
|
|||||||
def toggle(self):
|
def toggle(self):
|
||||||
self.set_value(not self.get_value())
|
self.set_value(not self.get_value())
|
||||||
|
|
||||||
|
def set_text(self, text):
|
||||||
|
self.setText(text)
|
||||||
|
|
||||||
|
def set_color(self, color):
|
||||||
|
"""
|
||||||
|
Set the Checbox text color
|
||||||
|
|
||||||
|
:param color:
|
||||||
|
:type color: QtCore.Qt.GlobalColor | QtGui.QColor
|
||||||
|
:return:
|
||||||
|
:rtype:
|
||||||
|
"""
|
||||||
|
palette = self.palette()
|
||||||
|
palette.setColor(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.WindowText, color)
|
||||||
|
self.setPalette(palette)
|
||||||
|
|
||||||
|
def set_font(self, family=None, size=None, bold=False, italic=False):
|
||||||
|
"""
|
||||||
|
Set the font properties for the checkbox
|
||||||
|
|
||||||
|
:param family: Font Family
|
||||||
|
:type family: str
|
||||||
|
:param size: Font size
|
||||||
|
:type size: float
|
||||||
|
:param bold: If the font is bold
|
||||||
|
:type bold: bool
|
||||||
|
:param italic: If the font is italic
|
||||||
|
:type italic: bool
|
||||||
|
:return: None
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
font = QtGui.QFont()
|
||||||
|
if family:
|
||||||
|
font.setFamily(family)
|
||||||
|
if size:
|
||||||
|
font.setPointSizeF(size)
|
||||||
|
if bold:
|
||||||
|
font.setBold(bold)
|
||||||
|
if italic:
|
||||||
|
font.setItalic(italic)
|
||||||
|
self.setFont(font)
|
||||||
|
|
||||||
|
|
||||||
class FCTextArea(QtWidgets.QPlainTextEdit):
|
class FCTextArea(QtWidgets.QPlainTextEdit):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from PyQt6.QtCore import Qt
|
|||||||
|
|
||||||
from appTool import AppTool
|
from appTool import AppTool
|
||||||
from appGUI.GUIElements import RadioSet, FCTextArea, FCSpinner, FCEntry, FCCheckBox, FCComboBox, FCFileSaveDialog, \
|
from appGUI.GUIElements import RadioSet, FCTextArea, FCSpinner, FCEntry, FCCheckBox, FCComboBox, FCFileSaveDialog, \
|
||||||
VerticalScrollArea, FCGridLayout, FCLabel
|
VerticalScrollArea, FCGridLayout, FCLabel, FCFrame
|
||||||
from appParsers.ParseSVG import *
|
from appParsers.ParseSVG import *
|
||||||
|
|
||||||
from shapely.geometry.base import *
|
from shapely.geometry.base import *
|
||||||
@@ -135,7 +135,6 @@ class QRCode(AppTool):
|
|||||||
def connect_signals_at_init(self):
|
def connect_signals_at_init(self):
|
||||||
self.ui.level.toggled.connect(self.on_level_changed)
|
self.ui.level.toggled.connect(self.on_level_changed)
|
||||||
self.ui.qrcode_button.clicked.connect(self.execute)
|
self.ui.qrcode_button.clicked.connect(self.execute)
|
||||||
self.ui.export_cb.stateChanged.connect(self.on_export_frame)
|
|
||||||
self.ui.export_png_button.clicked.connect(self.export_png_file)
|
self.ui.export_png_button.clicked.connect(self.export_png_file)
|
||||||
self.ui.export_svg_button.clicked.connect(self.export_svg_file)
|
self.ui.export_svg_button.clicked.connect(self.export_svg_file)
|
||||||
|
|
||||||
@@ -208,8 +207,11 @@ class QRCode(AppTool):
|
|||||||
}
|
}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
self.ui.export_cb.hide()
|
self.ui.export_label.hide()
|
||||||
self.ui.export_frame.hide()
|
self.ui.export_frame.hide()
|
||||||
|
self.ui.export_svg_button.hide()
|
||||||
|
self.ui.export_png_button.hide()
|
||||||
|
self.ui.qrcode_button.show()
|
||||||
else:
|
else:
|
||||||
self.ui.level.setText('%s' % _('Advanced'))
|
self.ui.level.setText('%s' % _('Advanced'))
|
||||||
self.ui.level.setStyleSheet("""
|
self.ui.level.setStyleSheet("""
|
||||||
@@ -219,13 +221,11 @@ class QRCode(AppTool):
|
|||||||
}
|
}
|
||||||
""")
|
""")
|
||||||
|
|
||||||
self.ui.export_cb.show()
|
self.ui.export_label.show()
|
||||||
if self.ui.export_cb.get_value():
|
self.ui.export_frame.show()
|
||||||
self.ui.export_frame.show()
|
self.ui.export_svg_button.show()
|
||||||
|
self.ui.export_png_button.show()
|
||||||
def on_export_frame(self, state):
|
self.ui.qrcode_button.hide()
|
||||||
self.ui.export_frame.setVisible(state)
|
|
||||||
self.ui.qrcode_button.setVisible(not state)
|
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
text_data = self.ui.text_data.get_value()
|
text_data = self.ui.text_data.get_value()
|
||||||
@@ -735,6 +735,16 @@ class QRcodeUI:
|
|||||||
self.title_box = QtWidgets.QHBoxLayout()
|
self.title_box = QtWidgets.QHBoxLayout()
|
||||||
self.layout.addLayout(self.title_box)
|
self.layout.addLayout(self.title_box)
|
||||||
|
|
||||||
|
self.tools_frame = QtWidgets.QFrame()
|
||||||
|
self.tools_frame.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.layout.addWidget(self.tools_frame)
|
||||||
|
self.tools_box = QtWidgets.QVBoxLayout()
|
||||||
|
self.tools_box.setContentsMargins(0, 0, 0, 0)
|
||||||
|
self.tools_frame.setLayout(self.tools_box)
|
||||||
|
|
||||||
|
self.title_box = QtWidgets.QHBoxLayout()
|
||||||
|
self.tools_box.addLayout(self.title_box)
|
||||||
|
|
||||||
# ## Title
|
# ## Title
|
||||||
title_label = FCLabel("%s" % self.pluginName)
|
title_label = FCLabel("%s" % self.pluginName)
|
||||||
title_label.setStyleSheet("""
|
title_label.setStyleSheet("""
|
||||||
@@ -760,9 +770,9 @@ class QRcodeUI:
|
|||||||
|
|
||||||
# ## Grid Layout
|
# ## Grid Layout
|
||||||
i_grid_lay = FCGridLayout(v_spacing=5, h_spacing=3)
|
i_grid_lay = FCGridLayout(v_spacing=5, h_spacing=3)
|
||||||
self.layout.addLayout(i_grid_lay)
|
|
||||||
i_grid_lay.setColumnStretch(0, 0)
|
i_grid_lay.setColumnStretch(0, 0)
|
||||||
i_grid_lay.setColumnStretch(1, 1)
|
i_grid_lay.setColumnStretch(1, 1)
|
||||||
|
self.tools_box.addLayout(i_grid_lay)
|
||||||
|
|
||||||
self.grb_object_combo = FCComboBox()
|
self.grb_object_combo = FCComboBox()
|
||||||
self.grb_object_combo.setModel(self.app.collection)
|
self.grb_object_combo.setModel(self.app.collection)
|
||||||
@@ -770,7 +780,7 @@ class QRcodeUI:
|
|||||||
self.grb_object_combo.is_last = True
|
self.grb_object_combo.is_last = True
|
||||||
self.grb_object_combo.obj_type = "Gerber"
|
self.grb_object_combo.obj_type = "Gerber"
|
||||||
|
|
||||||
self.grbobj_label = FCLabel("<b>%s:</b>" % _("GERBER"))
|
self.grbobj_label = FCLabel('<span style="color:darkorange;"><b>%s</b></span>' % _("Source Object"))
|
||||||
self.grbobj_label.setToolTip(
|
self.grbobj_label.setToolTip(
|
||||||
_("Gerber Object to which the QRCode will be added.")
|
_("Gerber Object to which the QRCode will be added.")
|
||||||
)
|
)
|
||||||
@@ -778,39 +788,60 @@ class QRcodeUI:
|
|||||||
i_grid_lay.addWidget(self.grbobj_label, 0, 0)
|
i_grid_lay.addWidget(self.grbobj_label, 0, 0)
|
||||||
i_grid_lay.addWidget(self.grb_object_combo, 1, 0, 1, 2)
|
i_grid_lay.addWidget(self.grb_object_combo, 1, 0, 1, 2)
|
||||||
|
|
||||||
separator_line = QtWidgets.QFrame()
|
# #############################################################################################################
|
||||||
separator_line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
|
# QrCode Text Frame
|
||||||
separator_line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
|
# #############################################################################################################
|
||||||
i_grid_lay.addWidget(separator_line, 2, 0, 1, 2)
|
|
||||||
|
|
||||||
# Text box
|
# Text box
|
||||||
self.text_label = FCLabel('<b>%s</b>:' % _("QRCode Data"))
|
self.text_label = FCLabel('<span style="color:red;"><b>%s</b></span>' % _("QRCode Data"))
|
||||||
self.text_label.setToolTip(
|
self.text_label.setToolTip(
|
||||||
_("QRCode Data. Alphanumeric text to be encoded in the QRCode.")
|
_("QRCode Data. Alphanumeric text to be encoded in the QRCode.")
|
||||||
)
|
)
|
||||||
|
self.tools_box.addWidget(self.text_label)
|
||||||
|
|
||||||
|
tq_frame = FCFrame()
|
||||||
|
tq_frame.setFrameStyle(QtWidgets.QFrame.Shape.StyledPanel | QtWidgets.QFrame.Shadow.Plain)
|
||||||
|
# tq_frame.setContentsMargins(0, 0, 0, 0)
|
||||||
|
tq_frame.setStyleSheet(".FCFrame{border: 1px solid gray; border-radius: 5px;}")
|
||||||
|
self.tools_box.addWidget(tq_frame)
|
||||||
|
|
||||||
|
# Grid Layout
|
||||||
|
grid0 = FCGridLayout(v_spacing=5, h_spacing=3)
|
||||||
|
grid0.setColumnStretch(0, 0)
|
||||||
|
grid0.setColumnStretch(1, 1)
|
||||||
|
tq_frame.setLayout(grid0)
|
||||||
|
|
||||||
self.text_data = FCTextArea()
|
self.text_data = FCTextArea()
|
||||||
|
self.text_data.setFrameStyle(QtWidgets.QFrame.Shape.NoFrame)
|
||||||
self.text_data.setPlaceholderText(
|
self.text_data.setPlaceholderText(
|
||||||
_("Add here the text to be included in the QRCode...")
|
_("Add here the text to be included in the QRCode...")
|
||||||
)
|
)
|
||||||
i_grid_lay.addWidget(self.text_label, 5, 0)
|
grid0.addWidget(self.text_data, 0, 0, 1, 2)
|
||||||
i_grid_lay.addWidget(self.text_data, 6, 0, 1, 2)
|
|
||||||
|
|
||||||
separator_line = QtWidgets.QFrame()
|
# separator_line = QtWidgets.QFrame()
|
||||||
separator_line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
|
# separator_line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
|
||||||
separator_line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
|
# separator_line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
|
||||||
i_grid_lay.addWidget(separator_line, 7, 0, 1, 2)
|
# i_grid_lay.addWidget(separator_line, 7, 0, 1, 2)
|
||||||
|
|
||||||
# ## Grid Layout
|
# #############################################################################################################
|
||||||
grid_lay = FCGridLayout(v_spacing=5, h_spacing=3)
|
# Parameters Frame
|
||||||
self.layout.addLayout(grid_lay)
|
# #############################################################################################################
|
||||||
grid_lay.setColumnStretch(0, 0)
|
self.qrcode_label = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _('Parameters'))
|
||||||
grid_lay.setColumnStretch(1, 1)
|
|
||||||
|
|
||||||
self.qrcode_label = FCLabel('<b>%s</b>' % _('Parameters'))
|
|
||||||
self.qrcode_label.setToolTip(
|
self.qrcode_label.setToolTip(
|
||||||
_("The parameters used to shape the QRCode.")
|
_("The parameters used to shape the QRCode.")
|
||||||
)
|
)
|
||||||
grid_lay.addWidget(self.qrcode_label, 0, 0, 1, 2)
|
self.tools_box.addWidget(self.qrcode_label)
|
||||||
|
|
||||||
|
p_frame = FCFrame()
|
||||||
|
p_frame.setFrameStyle(QtWidgets.QFrame.Shape.StyledPanel | QtWidgets.QFrame.Shadow.Plain)
|
||||||
|
# p_frame.setContentsMargins(0, 0, 0, 0)
|
||||||
|
p_frame.setStyleSheet(".FCFrame{border: 1px solid gray; border-radius: 5px;}")
|
||||||
|
self.tools_box.addWidget(p_frame)
|
||||||
|
|
||||||
|
# ## Grid Layout
|
||||||
|
grid1 = FCGridLayout(v_spacing=5, h_spacing=3)
|
||||||
|
grid1.setColumnStretch(0, 0)
|
||||||
|
grid1.setColumnStretch(1, 1)
|
||||||
|
p_frame.setLayout(grid1)
|
||||||
|
|
||||||
# VERSION #
|
# VERSION #
|
||||||
self.version_label = FCLabel('%s:' % _("Version"))
|
self.version_label = FCLabel('%s:' % _("Version"))
|
||||||
@@ -822,8 +853,8 @@ class QRcodeUI:
|
|||||||
self.version_entry.set_range(1, 40)
|
self.version_entry.set_range(1, 40)
|
||||||
self.version_entry.setWrapping(True)
|
self.version_entry.setWrapping(True)
|
||||||
|
|
||||||
grid_lay.addWidget(self.version_label, 2, 0)
|
grid1.addWidget(self.version_label, 2, 0)
|
||||||
grid_lay.addWidget(self.version_entry, 2, 1)
|
grid1.addWidget(self.version_entry, 2, 1)
|
||||||
|
|
||||||
# ERROR CORRECTION #
|
# ERROR CORRECTION #
|
||||||
self.error_label = FCLabel('%s:' % _("Error correction"))
|
self.error_label = FCLabel('%s:' % _("Error correction"))
|
||||||
@@ -845,8 +876,8 @@ class QRcodeUI:
|
|||||||
"Q = maximum 25%% errors can be corrected\n"
|
"Q = maximum 25%% errors can be corrected\n"
|
||||||
"H = maximum 30%% errors can be corrected.")
|
"H = maximum 30%% errors can be corrected.")
|
||||||
)
|
)
|
||||||
grid_lay.addWidget(self.error_label, 4, 0)
|
grid1.addWidget(self.error_label, 4, 0)
|
||||||
grid_lay.addWidget(self.error_radio, 4, 1)
|
grid1.addWidget(self.error_radio, 4, 1)
|
||||||
|
|
||||||
# BOX SIZE #
|
# BOX SIZE #
|
||||||
self.bsize_label = FCLabel('%s:' % _("Box Size"))
|
self.bsize_label = FCLabel('%s:' % _("Box Size"))
|
||||||
@@ -858,8 +889,8 @@ class QRcodeUI:
|
|||||||
self.bsize_entry.set_range(1, 9999)
|
self.bsize_entry.set_range(1, 9999)
|
||||||
self.bsize_entry.setWrapping(True)
|
self.bsize_entry.setWrapping(True)
|
||||||
|
|
||||||
grid_lay.addWidget(self.bsize_label, 6, 0)
|
grid1.addWidget(self.bsize_label, 6, 0)
|
||||||
grid_lay.addWidget(self.bsize_entry, 6, 1)
|
grid1.addWidget(self.bsize_entry, 6, 1)
|
||||||
|
|
||||||
# BORDER SIZE #
|
# BORDER SIZE #
|
||||||
self.border_size_label = FCLabel('%s:' % _("Border Size"))
|
self.border_size_label = FCLabel('%s:' % _("Border Size"))
|
||||||
@@ -871,8 +902,8 @@ class QRcodeUI:
|
|||||||
self.border_size_entry.set_range(1, 9999)
|
self.border_size_entry.set_range(1, 9999)
|
||||||
self.border_size_entry.setWrapping(True)
|
self.border_size_entry.setWrapping(True)
|
||||||
|
|
||||||
grid_lay.addWidget(self.border_size_label, 8, 0)
|
grid1.addWidget(self.border_size_label, 8, 0)
|
||||||
grid_lay.addWidget(self.border_size_entry, 8, 1)
|
grid1.addWidget(self.border_size_entry, 8, 1)
|
||||||
|
|
||||||
# POLARITY CHOICE #
|
# POLARITY CHOICE #
|
||||||
self.pol_label = FCLabel('%s:' % _("Polarity"))
|
self.pol_label = FCLabel('%s:' % _("Polarity"))
|
||||||
@@ -889,8 +920,8 @@ class QRcodeUI:
|
|||||||
"be added as positive. If it is added to a Copper Gerber\n"
|
"be added as positive. If it is added to a Copper Gerber\n"
|
||||||
"file then perhaps the QRCode can be added as negative.")
|
"file then perhaps the QRCode can be added as negative.")
|
||||||
)
|
)
|
||||||
grid_lay.addWidget(self.pol_label, 10, 0)
|
grid1.addWidget(self.pol_label, 10, 0)
|
||||||
grid_lay.addWidget(self.pol_radio, 10, 1)
|
grid1.addWidget(self.pol_radio, 10, 1)
|
||||||
|
|
||||||
# BOUNDING BOX TYPE #
|
# BOUNDING BOX TYPE #
|
||||||
self.bb_label = FCLabel('%s:' % _("Bounding Box"))
|
self.bb_label = FCLabel('%s:' % _("Bounding Box"))
|
||||||
@@ -904,31 +935,30 @@ class QRcodeUI:
|
|||||||
_("The bounding box, meaning the empty space that surrounds\n"
|
_("The bounding box, meaning the empty space that surrounds\n"
|
||||||
"the QRCode geometry, can have a rounded or a square shape.")
|
"the QRCode geometry, can have a rounded or a square shape.")
|
||||||
)
|
)
|
||||||
grid_lay.addWidget(self.bb_label, 12, 0)
|
grid1.addWidget(self.bb_label, 12, 0)
|
||||||
grid_lay.addWidget(self.bb_radio, 12, 1)
|
grid1.addWidget(self.bb_radio, 12, 1)
|
||||||
|
|
||||||
self.separator_line_2 = QtWidgets.QFrame()
|
|
||||||
self.separator_line_2.setFrameShape(QtWidgets.QFrame.Shape.HLine)
|
|
||||||
self.separator_line_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
|
|
||||||
grid_lay.addWidget(self.separator_line_2, 14, 0, 1, 2)
|
|
||||||
|
|
||||||
|
# #############################################################################################################
|
||||||
|
# Export Frame
|
||||||
|
# #############################################################################################################
|
||||||
# Export QRCode
|
# Export QRCode
|
||||||
self.export_cb = FCCheckBox(_("Export QRCode"))
|
self.export_label = FCLabel('<span style="color:darkgreen;"><b>%s</b></span>' % _("Export QRCode"))
|
||||||
self.export_cb.setToolTip(
|
self.export_label.setToolTip(
|
||||||
_("Show a set of controls allowing to export the QRCode\n"
|
_("Show a set of controls allowing to export the QRCode\n"
|
||||||
"to a SVG file or an PNG file.")
|
"to a SVG file or an PNG file.")
|
||||||
)
|
)
|
||||||
grid_lay.addWidget(self.export_cb, 16, 0, 1, 2)
|
self.tools_box.addWidget(self.export_label)
|
||||||
|
|
||||||
# this way I can hide/show the frame
|
# this way I can hide/show the frame
|
||||||
self.export_frame = QtWidgets.QFrame()
|
self.export_frame = FCFrame()
|
||||||
self.export_frame.setContentsMargins(0, 0, 0, 0)
|
self.export_frame.setFrameStyle(QtWidgets.QFrame.Shape.StyledPanel | QtWidgets.QFrame.Shadow.Plain)
|
||||||
self.layout.addWidget(self.export_frame)
|
self.export_frame.setStyleSheet(".FCFrame{border: 1px solid gray; border-radius: 5px;}")
|
||||||
|
self.tools_box.addWidget(self.export_frame)
|
||||||
|
|
||||||
self.export_lay = FCGridLayout(v_spacing=5, h_spacing=3)
|
self.export_lay = FCGridLayout(v_spacing=5, h_spacing=3)
|
||||||
self.export_lay.setContentsMargins(0, 0, 0, 0)
|
|
||||||
self.export_frame.setLayout(self.export_lay)
|
|
||||||
self.export_lay.setColumnStretch(0, 0)
|
self.export_lay.setColumnStretch(0, 0)
|
||||||
self.export_lay.setColumnStretch(1, 1)
|
self.export_lay.setColumnStretch(1, 1)
|
||||||
|
self.export_frame.setLayout(self.export_lay)
|
||||||
|
|
||||||
# default is hidden
|
# default is hidden
|
||||||
self.export_frame.hide()
|
self.export_frame.hide()
|
||||||
@@ -989,7 +1019,7 @@ class QRcodeUI:
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
""")
|
""")
|
||||||
self.export_lay.addWidget(self.export_svg_button, 3, 0, 1, 2)
|
self.tools_box.addWidget(self.export_svg_button)
|
||||||
|
|
||||||
# ## Export QRCode as PNG image
|
# ## Export QRCode as PNG image
|
||||||
self.export_png_button = QtWidgets.QPushButton(_("Export QRCode PNG"))
|
self.export_png_button = QtWidgets.QPushButton(_("Export QRCode PNG"))
|
||||||
@@ -1002,7 +1032,7 @@ class QRcodeUI:
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
""")
|
""")
|
||||||
self.export_lay.addWidget(self.export_png_button, 4, 0, 1, 2)
|
self.tools_box.addWidget(self.export_png_button)
|
||||||
|
|
||||||
# ## Insert QRCode
|
# ## Insert QRCode
|
||||||
self.qrcode_button = QtWidgets.QPushButton(_("Insert QRCode"))
|
self.qrcode_button = QtWidgets.QPushButton(_("Insert QRCode"))
|
||||||
@@ -1016,7 +1046,7 @@ class QRcodeUI:
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
""")
|
""")
|
||||||
self.layout.addWidget(self.qrcode_button)
|
self.tools_box.addWidget(self.qrcode_button)
|
||||||
|
|
||||||
self.layout.addStretch(1)
|
self.layout.addStretch(1)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user