- finished the UI update in Preferences -> Processing

This commit is contained in:
Marius Stanciu
2021-09-30 02:49:45 +03:00
committed by Marius
parent 75972180a8
commit 2feb509081
6 changed files with 229 additions and 129 deletions

View File

@@ -10,6 +10,7 @@ CHANGELOG for FlatCAM beta
29.09.2021 29.09.2021
- more UI changes in the Preferences to align them to the new app look - more UI changes in the Preferences to align them to the new app look
- finished the UI update in Preferences -> Processing
28.09.2021 28.09.2021

View File

@@ -1,6 +1,6 @@
from PyQt6 import QtWidgets from PyQt6 import QtWidgets
from appGUI.GUIElements import FCDoubleSpinner, FCLabel, FCGridLayout from appGUI.GUIElements import FCDoubleSpinner, FCLabel, FCGridLayout, FCFrame
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext import gettext
@@ -21,8 +21,10 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
self.decimals = decimals self.decimals = decimals
self.defaults = defaults self.defaults = defaults
# ## V-shape Calculator Tool # #############################################################################################################
self.vshape_tool_label = FCLabel("<b>%s:</b>" % _("V-Shape Tool Calculator")) # V-Shape Tool Frame
# #############################################################################################################
self.vshape_tool_label = FCLabel('<span style="color:green;"><b>%s</b></span>' % _("V-Shape Tool Calculator"))
self.vshape_tool_label.setToolTip( self.vshape_tool_label.setToolTip(
_("Calculate the tool diameter for a given V-shape tool,\n" _("Calculate the tool diameter for a given V-shape tool,\n"
"having the tip diameter, tip angle and\n" "having the tip diameter, tip angle and\n"
@@ -30,8 +32,11 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
) )
self.layout.addWidget(self.vshape_tool_label) self.layout.addWidget(self.vshape_tool_label)
grid0 = FCGridLayout(v_spacing=5, h_spacing=3) v_frame = FCFrame()
self.layout.addLayout(grid0) self.layout.addWidget(v_frame)
v_grid = FCGridLayout(v_spacing=5, h_spacing=3)
v_frame.setLayout(v_grid)
# ## Tip Diameter # ## Tip Diameter
self.tip_dia_entry = FCDoubleSpinner() self.tip_dia_entry = FCDoubleSpinner()
@@ -44,8 +49,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
_("This is the tool tip diameter.\n" _("This is the tool tip diameter.\n"
"It is specified by manufacturer.") "It is specified by manufacturer.")
) )
grid0.addWidget(self.tip_dia_label, 0, 0) v_grid.addWidget(self.tip_dia_label, 0, 0)
grid0.addWidget(self.tip_dia_entry, 0, 1) v_grid.addWidget(self.tip_dia_entry, 0, 1)
# ## Tip angle # ## Tip angle
self.tip_angle_entry = FCDoubleSpinner() self.tip_angle_entry = FCDoubleSpinner()
@@ -58,8 +63,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
_("This is the angle on the tip of the tool.\n" _("This is the angle on the tip of the tool.\n"
"It is specified by manufacturer.") "It is specified by manufacturer.")
) )
grid0.addWidget(self.tip_angle_label, 2, 0) v_grid.addWidget(self.tip_angle_label, 2, 0)
grid0.addWidget(self.tip_angle_entry, 2, 1) v_grid.addWidget(self.tip_angle_entry, 2, 1)
# ## Depth-of-cut Cut Z # ## Depth-of-cut Cut Z
self.cut_z_entry = FCDoubleSpinner() self.cut_z_entry = FCDoubleSpinner()
@@ -72,16 +77,24 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
_("This is depth to cut into material.\n" _("This is depth to cut into material.\n"
"In the CNCJob object it is the CutZ parameter.") "In the CNCJob object it is the CutZ parameter.")
) )
grid0.addWidget(self.cut_z_label, 4, 0) v_grid.addWidget(self.cut_z_label, 4, 0)
grid0.addWidget(self.cut_z_entry, 4, 1) v_grid.addWidget(self.cut_z_entry, 4, 1)
# ## Electroplating Calculator Tool # #############################################################################################################
self.plate_title_label = FCLabel("<b>%s:</b>" % _("ElectroPlating Calculator")) # Electroplating Frame
# #############################################################################################################
self.plate_title_label = FCLabel('<span style="color:brown;"><b>%s</b></span>' % _("ElectroPlating Calculator"))
self.plate_title_label.setToolTip( self.plate_title_label.setToolTip(
_("This calculator is useful for those who plate the via/pad/drill holes,\n" _("This calculator is useful for those who plate the via/pad/drill holes,\n"
"using a method like graphite ink or calcium hypophosphite ink or palladium chloride.") "using a method like graphite ink or calcium hypophosphite ink or palladium chloride.")
) )
grid0.addWidget(self.plate_title_label, 3, 0, 1, 2) self.layout.addWidget(self.plate_title_label)
el_frame = FCFrame()
self.layout.addWidget(el_frame)
el_grid = FCGridLayout(v_spacing=5, h_spacing=3)
el_frame.setLayout(el_grid)
# ## PCB Length # ## PCB Length
self.pcblength_entry = FCDoubleSpinner() self.pcblength_entry = FCDoubleSpinner()
@@ -92,8 +105,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
self.pcblengthlabel = FCLabel('%s:' % _("Board Length")) self.pcblengthlabel = FCLabel('%s:' % _("Board Length"))
self.pcblengthlabel.setToolTip(_('This is the board length. In centimeters.')) self.pcblengthlabel.setToolTip(_('This is the board length. In centimeters.'))
grid0.addWidget(self.pcblengthlabel, 6, 0) el_grid.addWidget(self.pcblengthlabel, 0, 0)
grid0.addWidget(self.pcblength_entry, 6, 1) el_grid.addWidget(self.pcblength_entry, 0, 1)
# ## PCB Width # ## PCB Width
self.pcbwidth_entry = FCDoubleSpinner() self.pcbwidth_entry = FCDoubleSpinner()
@@ -104,8 +117,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
self.pcbwidthlabel = FCLabel('%s:' % _("Board Width")) self.pcbwidthlabel = FCLabel('%s:' % _("Board Width"))
self.pcbwidthlabel.setToolTip(_('This is the board width.In centimeters.')) self.pcbwidthlabel.setToolTip(_('This is the board width.In centimeters.'))
grid0.addWidget(self.pcbwidthlabel, 8, 0) el_grid.addWidget(self.pcbwidthlabel, 2, 0)
grid0.addWidget(self.pcbwidth_entry, 8, 1) el_grid.addWidget(self.pcbwidth_entry, 2, 1)
# AREA # AREA
self.area_label = FCLabel('%s:' % _("Area")) self.area_label = FCLabel('%s:' % _("Area"))
@@ -115,8 +128,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
self.area_entry.set_precision(self.decimals) self.area_entry.set_precision(self.decimals)
self.area_entry.set_range(0.0, 10000.0000) self.area_entry.set_range(0.0, 10000.0000)
grid0.addWidget(self.area_label, 10, 0) el_grid.addWidget(self.area_label, 4, 0)
grid0.addWidget(self.area_entry, 10, 1) el_grid.addWidget(self.area_entry, 4, 1)
# ## Current Density # ## Current Density
self.cdensity_label = FCLabel('%s:' % _("Current Density")) self.cdensity_label = FCLabel('%s:' % _("Current Density"))
@@ -127,8 +140,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
self.cdensity_label.setToolTip(_("Current density to pass through the board. \n" self.cdensity_label.setToolTip(_("Current density to pass through the board. \n"
"In Amps per Square Feet ASF.")) "In Amps per Square Feet ASF."))
grid0.addWidget(self.cdensity_label, 12, 0) el_grid.addWidget(self.cdensity_label, 6, 0)
grid0.addWidget(self.cdensity_entry, 12, 1) el_grid.addWidget(self.cdensity_entry, 6, 1)
# ## PCB Copper Growth # ## PCB Copper Growth
self.growth_label = FCLabel('%s:' % _("Copper Growth")) self.growth_label = FCLabel('%s:' % _("Copper Growth"))
@@ -139,7 +152,9 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
self.growth_label.setToolTip(_("How thick the copper growth is intended to be.\n" self.growth_label.setToolTip(_("How thick the copper growth is intended to be.\n"
"In microns.")) "In microns."))
grid0.addWidget(self.growth_label, 14, 0) el_grid.addWidget(self.growth_label, 8, 0)
grid0.addWidget(self.growth_entry, 14, 1) el_grid.addWidget(self.growth_entry, 8, 1)
FCGridLayout.set_common_column_size([v_grid, el_grid], 0)
self.layout.addStretch() self.layout.addStretch()

View File

@@ -1,6 +1,6 @@
from PyQt6 import QtWidgets from PyQt6 import QtWidgets
from appGUI.GUIElements import FCDoubleSpinner, FCLabel, RadioSet, FCGridLayout from appGUI.GUIElements import FCDoubleSpinner, FCLabel, RadioSet, FCGridLayout, FCFrame
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext import gettext
@@ -21,14 +21,20 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI):
self.decimals = decimals self.decimals = decimals
self.defaults = defaults self.defaults = defaults
grid0 = FCGridLayout(v_spacing=5, h_spacing=3) # #############################################################################################################
self.layout.addLayout(grid0) # PARAMETERS Frame
# #############################################################################################################
self.param_label = FCLabel('<b>%s:</b>' % _('Parameters')) self.param_label = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _('Parameters'))
self.param_label.setToolTip( self.param_label.setToolTip(
_("Parameters used for this tool.") _("Parameters used for this tool.")
) )
grid0.addWidget(self.param_label, 0, 0, 1, 2) self.layout.addWidget(self.param_label)
param_frame = FCFrame()
self.layout.addWidget(param_frame)
param_grid = FCGridLayout(v_spacing=5, h_spacing=3)
param_frame.setLayout(param_grid)
# Type of Marker # Type of Marker
self.type_label = FCLabel('%s:' % _("Type")) self.type_label = FCLabel('%s:' % _("Type"))
@@ -41,8 +47,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI):
{"label": _("Cross"), "value": "c"}, {"label": _("Cross"), "value": "c"},
]) ])
grid0.addWidget(self.type_label, 2, 0) param_grid.addWidget(self.type_label, 2, 0)
grid0.addWidget(self.type_radio, 2, 1) param_grid.addWidget(self.type_radio, 2, 1)
# Thickness # # Thickness #
self.thick_label = FCLabel('%s:' % _("Thickness")) self.thick_label = FCLabel('%s:' % _("Thickness"))
@@ -55,8 +61,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI):
self.thick_entry.setWrapping(True) self.thick_entry.setWrapping(True)
self.thick_entry.setSingleStep(10 ** -self.decimals) self.thick_entry.setSingleStep(10 ** -self.decimals)
grid0.addWidget(self.thick_label, 4, 0) param_grid.addWidget(self.thick_label, 4, 0)
grid0.addWidget(self.thick_entry, 4, 1) param_grid.addWidget(self.thick_entry, 4, 1)
# Margin # # Margin #
self.margin_label = FCLabel('%s:' % _("Margin")) self.margin_label = FCLabel('%s:' % _("Margin"))
@@ -68,8 +74,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI):
self.margin_entry.set_precision(self.decimals) self.margin_entry.set_precision(self.decimals)
self.margin_entry.setSingleStep(0.1) self.margin_entry.setSingleStep(0.1)
grid0.addWidget(self.margin_label, 6, 0) param_grid.addWidget(self.margin_label, 6, 0)
grid0.addWidget(self.margin_entry, 6, 1) param_grid.addWidget(self.margin_entry, 6, 1)
# Length # # Length #
self.l_label = FCLabel('%s:' % _("Length")) self.l_label = FCLabel('%s:' % _("Length"))
@@ -81,8 +87,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI):
self.l_entry.set_precision(self.decimals) self.l_entry.set_precision(self.decimals)
self.l_entry.setSingleStep(10 ** -self.decimals) self.l_entry.setSingleStep(10 ** -self.decimals)
grid0.addWidget(self.l_label, 8, 0) param_grid.addWidget(self.l_label, 8, 0)
grid0.addWidget(self.l_entry, 8, 1) param_grid.addWidget(self.l_entry, 8, 1)
# Drill Tool Diameter # Drill Tool Diameter
self.drill_dia_label = FCLabel('%s:' % _("Drill Dia")) self.drill_dia_label = FCLabel('%s:' % _("Drill Dia"))
@@ -94,7 +100,7 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI):
self.drill_dia_entry.set_precision(self.decimals) self.drill_dia_entry.set_precision(self.decimals)
self.drill_dia_entry.setWrapping(True) self.drill_dia_entry.setWrapping(True)
grid0.addWidget(self.drill_dia_label, 10, 0) param_grid.addWidget(self.drill_dia_label, 10, 0)
grid0.addWidget(self.drill_dia_entry, 10, 1) param_grid.addWidget(self.drill_dia_entry, 10, 1)
self.layout.addStretch() self.layout.addStretch()

View File

@@ -1,6 +1,7 @@
from PyQt6 import QtCore from PyQt6 import QtCore
from appGUI.GUIElements import FCDoubleSpinner, FCSpinner, FCComboBox, NumericalEvalTupleEntry, FCLabel, FCGridLayout from appGUI.GUIElements import FCDoubleSpinner, FCSpinner, FCComboBox, NumericalEvalTupleEntry, FCLabel, FCGridLayout, \
FCFrame
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext import gettext
@@ -21,16 +22,21 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.decimals = decimals self.decimals = decimals
self.defaults = defaults self.defaults = defaults
# ## Solder Paste Dispensing # #############################################################################################################
self.solderpastelabel = FCLabel("<b>%s:</b>" % _("Parameters")) # PARAMETERS Frame
# #############################################################################################################
self.solderpastelabel = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _("Parameters"))
self.solderpastelabel.setToolTip( self.solderpastelabel.setToolTip(
_("A tool to create GCode for dispensing\n" _("A tool to create GCode for dispensing\n"
"solder paste onto a PCB.") "solder paste onto a PCB.")
) )
self.layout.addWidget(self.solderpastelabel) self.layout.addWidget(self.solderpastelabel)
grid0 = FCGridLayout(v_spacing=5, h_spacing=3) param_frame = FCFrame()
self.layout.addLayout(grid0) self.layout.addWidget(param_frame)
param_grid = FCGridLayout(v_spacing=5, h_spacing=3)
param_frame.setLayout(param_grid)
# Nozzle Tool Diameters # Nozzle Tool Diameters
nozzletdlabel = FCLabel('<b><font color="green">%s:</font></b>' % _('Tools Dia')) nozzletdlabel = FCLabel('<b><font color="green">%s:</font></b>' % _('Tools Dia'))
@@ -41,8 +47,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
) )
self.nozzle_tool_dia_entry = NumericalEvalTupleEntry(border_color='#0069A9') self.nozzle_tool_dia_entry = NumericalEvalTupleEntry(border_color='#0069A9')
grid0.addWidget(nozzletdlabel, 0, 0) param_grid.addWidget(nozzletdlabel, 0, 0)
grid0.addWidget(self.nozzle_tool_dia_entry, 0, 1) param_grid.addWidget(self.nozzle_tool_dia_entry, 0, 1)
# New Nozzle Tool Dia # New Nozzle Tool Dia
self.addtool_entry_lbl = FCLabel('<b>%s:</b>' % _('New Nozzle Dia')) self.addtool_entry_lbl = FCLabel('<b>%s:</b>' % _('New Nozzle Dia'))
@@ -54,8 +60,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.addtool_entry.set_range(0.0000001, 10000.0000) self.addtool_entry.set_range(0.0000001, 10000.0000)
self.addtool_entry.setSingleStep(0.1) self.addtool_entry.setSingleStep(0.1)
grid0.addWidget(self.addtool_entry_lbl, 1, 0) param_grid.addWidget(self.addtool_entry_lbl, 1, 0)
grid0.addWidget(self.addtool_entry, 1, 1) param_grid.addWidget(self.addtool_entry, 1, 1)
# Z dispense start # Z dispense start
self.z_start_entry = FCDoubleSpinner() self.z_start_entry = FCDoubleSpinner()
@@ -67,8 +73,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.z_start_label.setToolTip( self.z_start_label.setToolTip(
_("The height (Z) when solder paste dispensing starts.") _("The height (Z) when solder paste dispensing starts.")
) )
grid0.addWidget(self.z_start_label, 2, 0) param_grid.addWidget(self.z_start_label, 2, 0)
grid0.addWidget(self.z_start_entry, 2, 1) param_grid.addWidget(self.z_start_entry, 2, 1)
# Z dispense # Z dispense
self.z_dispense_entry = FCDoubleSpinner() self.z_dispense_entry = FCDoubleSpinner()
@@ -80,8 +86,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.z_dispense_label.setToolTip( self.z_dispense_label.setToolTip(
_("The height (Z) when doing solder paste dispensing.") _("The height (Z) when doing solder paste dispensing.")
) )
grid0.addWidget(self.z_dispense_label, 3, 0) param_grid.addWidget(self.z_dispense_label, 3, 0)
grid0.addWidget(self.z_dispense_entry, 3, 1) param_grid.addWidget(self.z_dispense_entry, 3, 1)
# Z dispense stop # Z dispense stop
self.z_stop_entry = FCDoubleSpinner() self.z_stop_entry = FCDoubleSpinner()
@@ -93,8 +99,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.z_stop_label.setToolTip( self.z_stop_label.setToolTip(
_("The height (Z) when solder paste dispensing stops.") _("The height (Z) when solder paste dispensing stops.")
) )
grid0.addWidget(self.z_stop_label, 4, 0) param_grid.addWidget(self.z_stop_label, 4, 0)
grid0.addWidget(self.z_stop_entry, 4, 1) param_grid.addWidget(self.z_stop_entry, 4, 1)
# Z travel # Z travel
self.z_travel_entry = FCDoubleSpinner() self.z_travel_entry = FCDoubleSpinner()
@@ -107,8 +113,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("The height (Z) for travel between pads\n" _("The height (Z) for travel between pads\n"
"(without dispensing solder paste).") "(without dispensing solder paste).")
) )
grid0.addWidget(self.z_travel_label, 5, 0) param_grid.addWidget(self.z_travel_label, 5, 0)
grid0.addWidget(self.z_travel_entry, 5, 1) param_grid.addWidget(self.z_travel_entry, 5, 1)
# Z toolchange location # Z toolchange location
self.z_toolchange_entry = FCDoubleSpinner() self.z_toolchange_entry = FCDoubleSpinner()
@@ -120,8 +126,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.z_toolchange_label.setToolTip( self.z_toolchange_label.setToolTip(
_("The height (Z) for tool (nozzle) change.") _("The height (Z) for tool (nozzle) change.")
) )
grid0.addWidget(self.z_toolchange_label, 6, 0) param_grid.addWidget(self.z_toolchange_label, 6, 0)
grid0.addWidget(self.z_toolchange_entry, 6, 1) param_grid.addWidget(self.z_toolchange_entry, 6, 1)
# X,Y Toolchange location # X,Y Toolchange location
self.xy_toolchange_entry = NumericalEvalTupleEntry(border_color='#0069A9') self.xy_toolchange_entry = NumericalEvalTupleEntry(border_color='#0069A9')
@@ -130,8 +136,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("The X,Y location for tool (nozzle) change.\n" _("The X,Y location for tool (nozzle) change.\n"
"The format is (x, y) where x and y are real numbers.") "The format is (x, y) where x and y are real numbers.")
) )
grid0.addWidget(self.xy_toolchange_label, 7, 0) param_grid.addWidget(self.xy_toolchange_label, 7, 0)
grid0.addWidget(self.xy_toolchange_entry, 7, 1) param_grid.addWidget(self.xy_toolchange_entry, 7, 1)
# Feedrate X-Y # Feedrate X-Y
self.frxy_entry = FCDoubleSpinner() self.frxy_entry = FCDoubleSpinner()
@@ -143,8 +149,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.frxy_label.setToolTip( self.frxy_label.setToolTip(
_("Feedrate (speed) while moving on the X-Y plane.") _("Feedrate (speed) while moving on the X-Y plane.")
) )
grid0.addWidget(self.frxy_label, 8, 0) param_grid.addWidget(self.frxy_label, 8, 0)
grid0.addWidget(self.frxy_entry, 8, 1) param_grid.addWidget(self.frxy_entry, 8, 1)
# Feedrate Z # Feedrate Z
self.frz_entry = FCDoubleSpinner() self.frz_entry = FCDoubleSpinner()
@@ -157,8 +163,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("Feedrate (speed) while moving vertically\n" _("Feedrate (speed) while moving vertically\n"
"(on Z plane).") "(on Z plane).")
) )
grid0.addWidget(self.frz_label, 9, 0) param_grid.addWidget(self.frz_label, 9, 0)
grid0.addWidget(self.frz_entry, 9, 1) param_grid.addWidget(self.frz_entry, 9, 1)
# Feedrate Z Dispense # Feedrate Z Dispense
self.frz_dispense_entry = FCDoubleSpinner() self.frz_dispense_entry = FCDoubleSpinner()
@@ -171,8 +177,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("Feedrate (speed) while moving up vertically\n" _("Feedrate (speed) while moving up vertically\n"
"to Dispense position (on Z plane).") "to Dispense position (on Z plane).")
) )
grid0.addWidget(self.frz_dispense_label, 10, 0) param_grid.addWidget(self.frz_dispense_label, 10, 0)
grid0.addWidget(self.frz_dispense_entry, 10, 1) param_grid.addWidget(self.frz_dispense_entry, 10, 1)
# Spindle Speed Forward # Spindle Speed Forward
self.speedfwd_entry = FCSpinner() self.speedfwd_entry = FCSpinner()
@@ -184,8 +190,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("The dispenser speed while pushing solder paste\n" _("The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle.") "through the dispenser nozzle.")
) )
grid0.addWidget(self.speedfwd_label, 11, 0) param_grid.addWidget(self.speedfwd_label, 11, 0)
grid0.addWidget(self.speedfwd_entry, 11, 1) param_grid.addWidget(self.speedfwd_entry, 11, 1)
# Dwell Forward # Dwell Forward
self.dwellfwd_entry = FCDoubleSpinner() self.dwellfwd_entry = FCDoubleSpinner()
@@ -197,8 +203,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
self.dwellfwd_label.setToolTip( self.dwellfwd_label.setToolTip(
_("Pause after solder dispensing.") _("Pause after solder dispensing.")
) )
grid0.addWidget(self.dwellfwd_label, 12, 0) param_grid.addWidget(self.dwellfwd_label, 12, 0)
grid0.addWidget(self.dwellfwd_entry, 12, 1) param_grid.addWidget(self.dwellfwd_entry, 12, 1)
# Spindle Speed Reverse # Spindle Speed Reverse
self.speedrev_entry = FCSpinner() self.speedrev_entry = FCSpinner()
@@ -210,8 +216,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("The dispenser speed while retracting solder paste\n" _("The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle.") "through the dispenser nozzle.")
) )
grid0.addWidget(self.speedrev_label, 13, 0) param_grid.addWidget(self.speedrev_label, 13, 0)
grid0.addWidget(self.speedrev_entry, 13, 1) param_grid.addWidget(self.speedrev_entry, 13, 1)
# Dwell Reverse # Dwell Reverse
self.dwellrev_entry = FCDoubleSpinner() self.dwellrev_entry = FCDoubleSpinner()
@@ -224,8 +230,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
_("Pause after solder paste dispenser retracted,\n" _("Pause after solder paste dispenser retracted,\n"
"to allow pressure equilibrium.") "to allow pressure equilibrium.")
) )
grid0.addWidget(self.dwellrev_label, 14, 0) param_grid.addWidget(self.dwellrev_label, 14, 0)
grid0.addWidget(self.dwellrev_entry, 14, 1) param_grid.addWidget(self.dwellrev_entry, 14, 1)
# Preprocessors # Preprocessors
pp_label = FCLabel('%s:' % _('Preprocessor')) pp_label = FCLabel('%s:' % _('Preprocessor'))
@@ -240,7 +246,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
for it in range(self.pp_combo.count()): for it in range(self.pp_combo.count()):
self.pp_combo.setItemData(it, self.pp_combo.itemText(it), QtCore.Qt.ItemDataRole.ToolTipRole) self.pp_combo.setItemData(it, self.pp_combo.itemText(it), QtCore.Qt.ItemDataRole.ToolTipRole)
grid0.addWidget(pp_label, 15, 0) param_grid.addWidget(pp_label, 15, 0)
grid0.addWidget(self.pp_combo, 15, 1) param_grid.addWidget(self.pp_combo, 15, 1)
self.layout.addStretch() self.layout.addStretch()

View File

@@ -1,4 +1,4 @@
from appGUI.GUIElements import FCCheckBox, FCLabel from appGUI.GUIElements import FCCheckBox, FCLabel, FCFrame, FCGridLayout
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext import gettext
@@ -18,22 +18,30 @@ class ToolsSubPrefGroupUI(OptionsGroupUI):
self.decimals = decimals self.decimals = decimals
self.defaults = defaults self.defaults = defaults
# ## Subtractor Tool Parameters # #############################################################################################################
self.sublabel = FCLabel("<b>%s:</b>" % _("Parameters")) # PARAMETERS Frame
# #############################################################################################################
self.sublabel = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _("Parameters"))
self.sublabel.setToolTip( self.sublabel.setToolTip(
_("A tool to substract one Gerber or Geometry object\n" _("A tool to substract one Gerber or Geometry object\n"
"from another of the same type.") "from another of the same type.")
) )
self.layout.addWidget(self.sublabel) self.layout.addWidget(self.sublabel)
param_frame = FCFrame()
self.layout.addWidget(param_frame)
param_grid = FCGridLayout(v_spacing=5, h_spacing=3)
param_frame.setLayout(param_grid)
self.close_paths_cb = FCCheckBox(_("Close paths")) self.close_paths_cb = FCCheckBox(_("Close paths"))
self.close_paths_cb.setToolTip(_("Checking this will close the paths cut by the subtractor object.")) self.close_paths_cb.setToolTip(_("Checking this will close the paths cut by the subtractor object."))
self.layout.addWidget(self.close_paths_cb) param_grid.addWidget(self.close_paths_cb, 0, 0, 1, 2)
self.delete_sources_cb = FCCheckBox(_("Delete source")) self.delete_sources_cb = FCCheckBox(_("Delete source"))
self.delete_sources_cb.setToolTip( self.delete_sources_cb.setToolTip(
_("When checked will delete the source objects\n" _("When checked will delete the source objects\n"
"after a successful operation.") "after a successful operation.")
) )
self.layout.addWidget(self.delete_sources_cb) param_grid.addWidget(self.delete_sources_cb, 2, 0, 1, 2)
self.layout.addStretch() self.layout.addStretch()

View File

@@ -1,6 +1,7 @@
from PyQt6 import QtWidgets, QtGui from PyQt6 import QtWidgets, QtGui
from appGUI.GUIElements import FCDoubleSpinner, FCCheckBox, NumericalEvalTupleEntry, FCComboBox, FCLabel, FCGridLayout from appGUI.GUIElements import FCDoubleSpinner, FCCheckBox, NumericalEvalTupleEntry, FCComboBox, FCLabel, \
FCGridLayout, FCFrame
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext import gettext
@@ -21,16 +22,21 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.decimals = decimals self.decimals = decimals
self.defaults = defaults self.defaults = defaults
# ## Transformations # #############################################################################################################
self.transform_label = FCLabel("<b>%s:</b>" % _("Parameters")) # PARAMETERS Frame
# #############################################################################################################
self.transform_label = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _("Parameters"))
self.transform_label.setToolTip( self.transform_label.setToolTip(
_("Various transformations that can be applied\n" _("Various transformations that can be applied\n"
"on a application object.") "on a application object.")
) )
self.layout.addWidget(self.transform_label) self.layout.addWidget(self.transform_label)
grid0 = FCGridLayout(v_spacing=5, h_spacing=3) param_frame = FCFrame()
self.layout.addLayout(grid0) self.layout.addWidget(param_frame)
param_grid = FCGridLayout(v_spacing=5, h_spacing=3)
param_frame.setLayout(param_grid)
# Reference Type # Reference Type
ref_label = FCLabel('%s:' % _("Reference")) ref_label = FCLabel('%s:' % _("Reference"))
@@ -46,8 +52,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.ref_items = [_("Origin"), _("Selection"), _("Point"), _("Object")] self.ref_items = [_("Origin"), _("Selection"), _("Point"), _("Object")]
self.ref_combo.addItems(self.ref_items) self.ref_combo.addItems(self.ref_items)
grid0.addWidget(ref_label, 0, 0) param_grid.addWidget(ref_label, 0, 0)
grid0.addWidget(self.ref_combo, 0, 1) param_grid.addWidget(self.ref_combo, 0, 1)
self.point_label = FCLabel('%s:' % _("Point")) self.point_label = FCLabel('%s:' % _("Point"))
self.point_label.setToolTip( self.point_label.setToolTip(
@@ -55,8 +61,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
) )
self.point_entry = NumericalEvalTupleEntry() self.point_entry = NumericalEvalTupleEntry()
grid0.addWidget(self.point_label, 1, 0) param_grid.addWidget(self.point_label, 2, 0)
grid0.addWidget(self.point_entry, 1, 1) param_grid.addWidget(self.point_entry, 2, 1)
# Type of object to be used as reference # Type of object to be used as reference
self.type_object_label = FCLabel('%s:' % _("Object")) self.type_object_label = FCLabel('%s:' % _("Object"))
@@ -73,12 +79,20 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.type_obj_combo.setItemIcon(1, QtGui.QIcon(self.app.resource_location + "/drill16.png")) self.type_obj_combo.setItemIcon(1, QtGui.QIcon(self.app.resource_location + "/drill16.png"))
self.type_obj_combo.setItemIcon(2, QtGui.QIcon(self.app.resource_location + "/geometry16.png")) self.type_obj_combo.setItemIcon(2, QtGui.QIcon(self.app.resource_location + "/geometry16.png"))
grid0.addWidget(self.type_object_label, 3, 0) param_grid.addWidget(self.type_object_label, 4, 0)
grid0.addWidget(self.type_obj_combo, 3, 1) param_grid.addWidget(self.type_obj_combo, 4, 1)
# ## Rotate Angle # #############################################################################################################
rotate_title_lbl = FCLabel('<b>%s</b>' % _("Rotate")) # Rotate Frame
grid0.addWidget(rotate_title_lbl, 4, 0, 1, 2) # #############################################################################################################
rotate_title_lbl = FCLabel('<span style="color:tomato;"><b>%s</b></span>' % _("Rotate"))
self.layout.addWidget(rotate_title_lbl)
rot_frame = FCFrame()
self.layout.addWidget(rot_frame)
rot_grid = FCGridLayout(v_spacing=5, h_spacing=3)
rot_frame.setLayout(rot_grid)
self.rotate_entry = FCDoubleSpinner() self.rotate_entry = FCDoubleSpinner()
self.rotate_entry.set_range(-360.0, 360.0) self.rotate_entry.set_range(-360.0, 360.0)
@@ -92,12 +106,19 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
"Positive numbers for CW motion.\n" "Positive numbers for CW motion.\n"
"Negative numbers for CCW motion.") "Negative numbers for CCW motion.")
) )
grid0.addWidget(self.rotate_label, 6, 0) rot_grid.addWidget(self.rotate_label, 0, 0)
grid0.addWidget(self.rotate_entry, 6, 1) rot_grid.addWidget(self.rotate_entry, 0, 1)
# ## Skew/Shear Angle on X axis # #############################################################################################################
skew_title_lbl = FCLabel('<b>%s</b>' % _("Skew")) # Skew Frame
grid0.addWidget(skew_title_lbl, 8, 0) # #############################################################################################################
s_t_lay = QtWidgets.QHBoxLayout()
self.layout.addLayout(s_t_lay)
skew_title_lbl = FCLabel('<span style="color:teal;"><b>%s</b></span>' % _("Skew"))
s_t_lay.addWidget(skew_title_lbl)
s_t_lay.addStretch()
# ## Link Skew factors # ## Link Skew factors
self.skew_link_cb = FCCheckBox() self.skew_link_cb = FCCheckBox()
@@ -106,7 +127,13 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
_("Link the Y entry to X entry and copy its content.") _("Link the Y entry to X entry and copy its content.")
) )
grid0.addWidget(self.skew_link_cb, 8, 1) s_t_lay.addWidget(self.skew_link_cb)
skew_frame = FCFrame()
self.layout.addWidget(skew_frame)
skew_grid = FCGridLayout(v_spacing=5, h_spacing=3)
skew_frame.setLayout(skew_grid)
self.skewx_entry = FCDoubleSpinner() self.skewx_entry = FCDoubleSpinner()
self.skewx_entry.set_range(-360.0, 360.0) self.skewx_entry.set_range(-360.0, 360.0)
@@ -118,8 +145,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
_("Angle, in degrees.\n" _("Angle, in degrees.\n"
"Float number between -360 and 359.") "Float number between -360 and 359.")
) )
grid0.addWidget(self.skewx_label, 9, 0) skew_grid.addWidget(self.skewx_label, 2, 0)
grid0.addWidget(self.skewx_entry, 9, 1) skew_grid.addWidget(self.skewx_entry, 2, 1)
# ## Skew/Shear Angle on Y axis # ## Skew/Shear Angle on Y axis
self.skewy_entry = FCDoubleSpinner() self.skewy_entry = FCDoubleSpinner()
@@ -132,19 +159,32 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
_("Angle, in degrees.\n" _("Angle, in degrees.\n"
"Float number between -360 and 359.") "Float number between -360 and 359.")
) )
grid0.addWidget(self.skewy_label, 10, 0) skew_grid.addWidget(self.skewy_label, 4, 0)
grid0.addWidget(self.skewy_entry, 10, 1) skew_grid.addWidget(self.skewy_entry, 4, 1)
# ## Scale # #############################################################################################################
scale_title_lbl = FCLabel('<b>%s</b>' % _("Scale")) # Scale Frame
grid0.addWidget(scale_title_lbl, 12, 0) # #############################################################################################################
sc_t_lay = QtWidgets.QHBoxLayout()
self.layout.addLayout(sc_t_lay)
scale_title_lbl = FCLabel('<span style="color:magenta;"><b>%s</b></span>' % _("Scale"))
sc_t_lay.addWidget(scale_title_lbl)
sc_t_lay.addStretch()
# ## Link Scale factors # ## Link Scale factors
self.scale_link_cb = FCCheckBox(_("Link")) self.scale_link_cb = FCCheckBox(_("Link"))
self.scale_link_cb.setToolTip( self.scale_link_cb.setToolTip(
_("Link the Y entry to X entry and copy its content.") _("Link the Y entry to X entry and copy its content.")
) )
grid0.addWidget(self.scale_link_cb, 12, 1) sc_t_lay.addWidget(self.scale_link_cb)
scale_frame = FCFrame()
self.layout.addWidget(scale_frame)
scale_grid = FCGridLayout(v_spacing=5, h_spacing=3)
scale_frame.setLayout(scale_grid)
self.scalex_entry = FCDoubleSpinner() self.scalex_entry = FCDoubleSpinner()
self.scalex_entry.set_range(0, 10000.0000) self.scalex_entry.set_range(0, 10000.0000)
@@ -155,8 +195,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.scalex_label.setToolTip( self.scalex_label.setToolTip(
_("Factor for scaling on X axis.") _("Factor for scaling on X axis.")
) )
grid0.addWidget(self.scalex_label, 14, 0) scale_grid.addWidget(self.scalex_label, 2, 0)
grid0.addWidget(self.scalex_entry, 14, 1) scale_grid.addWidget(self.scalex_entry, 2, 1)
# ## Scale factor on X axis # ## Scale factor on X axis
self.scaley_entry = FCDoubleSpinner() self.scaley_entry = FCDoubleSpinner()
@@ -168,12 +208,20 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.scaley_label.setToolTip( self.scaley_label.setToolTip(
_("Factor for scaling on Y axis.") _("Factor for scaling on Y axis.")
) )
grid0.addWidget(self.scaley_label, 16, 0) scale_grid.addWidget(self.scaley_label, 4, 0)
grid0.addWidget(self.scaley_entry, 16, 1) scale_grid.addWidget(self.scaley_entry, 4, 1)
# ## Offset # #############################################################################################################
offset_title_lbl = FCLabel('<b>%s</b>' % _("Offset")) # Offset Frame
grid0.addWidget(offset_title_lbl, 20, 0, 1, 2) # #############################################################################################################
offset_title_lbl = FCLabel('<span style="color:green;"><b>%s</b></span>' % _("Offset"))
self.layout.addWidget(offset_title_lbl)
off_frame = FCFrame()
self.layout.addWidget(off_frame)
off_grid = FCGridLayout(v_spacing=5, h_spacing=3)
off_frame.setLayout(off_grid)
self.offx_entry = FCDoubleSpinner() self.offx_entry = FCDoubleSpinner()
self.offx_entry.set_range(-10000.0000, 10000.0000) self.offx_entry.set_range(-10000.0000, 10000.0000)
@@ -184,8 +232,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.offx_label.setToolTip( self.offx_label.setToolTip(
_("Distance to offset on X axis. In current units.") _("Distance to offset on X axis. In current units.")
) )
grid0.addWidget(self.offx_label, 22, 0) off_grid.addWidget(self.offx_label, 0, 0)
grid0.addWidget(self.offx_entry, 22, 1) off_grid.addWidget(self.offx_entry, 0, 1)
# ## Offset distance on Y axis # ## Offset distance on Y axis
self.offy_entry = FCDoubleSpinner() self.offy_entry = FCDoubleSpinner()
@@ -197,12 +245,19 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.offy_label.setToolTip( self.offy_label.setToolTip(
_("Distance to offset on Y axis. In current units.") _("Distance to offset on Y axis. In current units.")
) )
grid0.addWidget(self.offy_label, 24, 0) off_grid.addWidget(self.offy_label, 2, 0)
grid0.addWidget(self.offy_entry, 24, 1) off_grid.addWidget(self.offy_entry, 2, 1)
# ## Buffer # #############################################################################################################
buffer_title_lbl = FCLabel('<b>%s</b>' % _("Buffer")) # Buffer Frame
grid0.addWidget(buffer_title_lbl, 26, 0) # #############################################################################################################
b_t_lay = QtWidgets.QHBoxLayout()
self.layout.addLayout(b_t_lay)
buffer_title_lbl = FCLabel('<span style="color:indigo;"><b>%s</b></span>' % _("Buffer"))
b_t_lay.addWidget(buffer_title_lbl)
b_t_lay.addStretch()
self.buffer_rounded_cb = FCCheckBox() self.buffer_rounded_cb = FCCheckBox()
self.buffer_rounded_cb.setText('%s' % _("Rounded")) self.buffer_rounded_cb.setText('%s' % _("Rounded"))
@@ -213,7 +268,13 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
"of the buffered shape.") "of the buffered shape.")
) )
grid0.addWidget(self.buffer_rounded_cb, 26, 1) b_t_lay.addWidget(self.buffer_rounded_cb)
buff_frame = FCFrame()
self.layout.addWidget(buff_frame)
buff_grid = FCGridLayout(v_spacing=5, h_spacing=3)
buff_frame.setLayout(buff_grid)
self.buffer_label = FCLabel('%s:' % _("Distance")) self.buffer_label = FCLabel('%s:' % _("Distance"))
self.buffer_label.setToolTip( self.buffer_label.setToolTip(
@@ -229,8 +290,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.buffer_entry.setWrapping(True) self.buffer_entry.setWrapping(True)
self.buffer_entry.set_range(-10000.0000, 10000.0000) self.buffer_entry.set_range(-10000.0000, 10000.0000)
grid0.addWidget(self.buffer_label, 28, 0) buff_grid.addWidget(self.buffer_label, 2, 0)
grid0.addWidget(self.buffer_entry, 28, 1) buff_grid.addWidget(self.buffer_entry, 2, 1)
self.buffer_factor_label = FCLabel('%s:' % _("Value")) self.buffer_factor_label = FCLabel('%s:' % _("Value"))
self.buffer_factor_label.setToolTip( self.buffer_factor_label.setToolTip(
@@ -247,7 +308,10 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
self.buffer_factor_entry.setWrapping(True) self.buffer_factor_entry.setWrapping(True)
self.buffer_factor_entry.setSingleStep(1) self.buffer_factor_entry.setSingleStep(1)
grid0.addWidget(self.buffer_factor_label, 30, 0) buff_grid.addWidget(self.buffer_factor_label, 4, 0)
grid0.addWidget(self.buffer_factor_entry, 30, 1) buff_grid.addWidget(self.buffer_factor_entry, 4, 1)
FCGridLayout.set_common_column_size(
[param_grid, rot_grid, skew_grid, scale_grid, off_grid, buff_grid], 0)
self.layout.addStretch() self.layout.addStretch()