diff --git a/CHANGELOG.md b/CHANGELOG.md index 07790bb4..48d9cd42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ CHANGELOG for FlatCAM beta 29.09.2021 - more UI changes in the Preferences to align them to the new app look +- finished the UI update in Preferences -> Processing 28.09.2021 diff --git a/appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py b/appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py index cfc6341d..b1c73ad1 100644 --- a/appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py @@ -1,6 +1,6 @@ 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 import gettext @@ -21,8 +21,10 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.decimals = decimals self.defaults = defaults - # ## V-shape Calculator Tool - self.vshape_tool_label = FCLabel("%s:" % _("V-Shape Tool Calculator")) + # ############################################################################################################# + # V-Shape Tool Frame + # ############################################################################################################# + self.vshape_tool_label = FCLabel('%s' % _("V-Shape Tool Calculator")) self.vshape_tool_label.setToolTip( _("Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -30,8 +32,11 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): ) self.layout.addWidget(self.vshape_tool_label) - grid0 = FCGridLayout(v_spacing=5, h_spacing=3) - self.layout.addLayout(grid0) + v_frame = FCFrame() + self.layout.addWidget(v_frame) + + v_grid = FCGridLayout(v_spacing=5, h_spacing=3) + v_frame.setLayout(v_grid) # ## Tip Diameter self.tip_dia_entry = FCDoubleSpinner() @@ -44,8 +49,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): _("This is the tool tip diameter.\n" "It is specified by manufacturer.") ) - grid0.addWidget(self.tip_dia_label, 0, 0) - grid0.addWidget(self.tip_dia_entry, 0, 1) + v_grid.addWidget(self.tip_dia_label, 0, 0) + v_grid.addWidget(self.tip_dia_entry, 0, 1) # ## Tip angle self.tip_angle_entry = FCDoubleSpinner() @@ -58,8 +63,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): _("This is the angle on the tip of the tool.\n" "It is specified by manufacturer.") ) - grid0.addWidget(self.tip_angle_label, 2, 0) - grid0.addWidget(self.tip_angle_entry, 2, 1) + v_grid.addWidget(self.tip_angle_label, 2, 0) + v_grid.addWidget(self.tip_angle_entry, 2, 1) # ## Depth-of-cut Cut Z self.cut_z_entry = FCDoubleSpinner() @@ -72,16 +77,24 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): _("This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter.") ) - grid0.addWidget(self.cut_z_label, 4, 0) - grid0.addWidget(self.cut_z_entry, 4, 1) + v_grid.addWidget(self.cut_z_label, 4, 0) + v_grid.addWidget(self.cut_z_entry, 4, 1) - # ## Electroplating Calculator Tool - self.plate_title_label = FCLabel("%s:" % _("ElectroPlating Calculator")) + # ############################################################################################################# + # Electroplating Frame + # ############################################################################################################# + self.plate_title_label = FCLabel('%s' % _("ElectroPlating Calculator")) self.plate_title_label.setToolTip( _("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.") ) - 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 self.pcblength_entry = FCDoubleSpinner() @@ -92,8 +105,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.pcblengthlabel = FCLabel('%s:' % _("Board Length")) self.pcblengthlabel.setToolTip(_('This is the board length. In centimeters.')) - grid0.addWidget(self.pcblengthlabel, 6, 0) - grid0.addWidget(self.pcblength_entry, 6, 1) + el_grid.addWidget(self.pcblengthlabel, 0, 0) + el_grid.addWidget(self.pcblength_entry, 0, 1) # ## PCB Width self.pcbwidth_entry = FCDoubleSpinner() @@ -104,8 +117,8 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI): self.pcbwidthlabel = FCLabel('%s:' % _("Board Width")) self.pcbwidthlabel.setToolTip(_('This is the board width.In centimeters.')) - grid0.addWidget(self.pcbwidthlabel, 8, 0) - grid0.addWidget(self.pcbwidth_entry, 8, 1) + el_grid.addWidget(self.pcbwidthlabel, 2, 0) + el_grid.addWidget(self.pcbwidth_entry, 2, 1) # 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_range(0.0, 10000.0000) - grid0.addWidget(self.area_label, 10, 0) - grid0.addWidget(self.area_entry, 10, 1) + el_grid.addWidget(self.area_label, 4, 0) + el_grid.addWidget(self.area_entry, 4, 1) # ## 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" "In Amps per Square Feet ASF.")) - grid0.addWidget(self.cdensity_label, 12, 0) - grid0.addWidget(self.cdensity_entry, 12, 1) + el_grid.addWidget(self.cdensity_label, 6, 0) + el_grid.addWidget(self.cdensity_entry, 6, 1) # ## PCB 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" "In microns.")) - grid0.addWidget(self.growth_label, 14, 0) - grid0.addWidget(self.growth_entry, 14, 1) + el_grid.addWidget(self.growth_label, 8, 0) + el_grid.addWidget(self.growth_entry, 8, 1) + + FCGridLayout.set_common_column_size([v_grid, el_grid], 0) self.layout.addStretch() diff --git a/appGUI/preferences/tools/ToolsCornersPrefGroupUI.py b/appGUI/preferences/tools/ToolsCornersPrefGroupUI.py index 8230cb03..cee53d87 100644 --- a/appGUI/preferences/tools/ToolsCornersPrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsCornersPrefGroupUI.py @@ -1,6 +1,6 @@ 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 import gettext @@ -21,14 +21,20 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): self.decimals = decimals self.defaults = defaults - grid0 = FCGridLayout(v_spacing=5, h_spacing=3) - self.layout.addLayout(grid0) - - self.param_label = FCLabel('%s:' % _('Parameters')) + # ############################################################################################################# + # PARAMETERS Frame + # ############################################################################################################# + self.param_label = FCLabel('%s' % _('Parameters')) self.param_label.setToolTip( _("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 self.type_label = FCLabel('%s:' % _("Type")) @@ -41,8 +47,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): {"label": _("Cross"), "value": "c"}, ]) - grid0.addWidget(self.type_label, 2, 0) - grid0.addWidget(self.type_radio, 2, 1) + param_grid.addWidget(self.type_label, 2, 0) + param_grid.addWidget(self.type_radio, 2, 1) # Thickness # self.thick_label = FCLabel('%s:' % _("Thickness")) @@ -55,8 +61,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): self.thick_entry.setWrapping(True) self.thick_entry.setSingleStep(10 ** -self.decimals) - grid0.addWidget(self.thick_label, 4, 0) - grid0.addWidget(self.thick_entry, 4, 1) + param_grid.addWidget(self.thick_label, 4, 0) + param_grid.addWidget(self.thick_entry, 4, 1) # Margin # self.margin_label = FCLabel('%s:' % _("Margin")) @@ -68,8 +74,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): self.margin_entry.set_precision(self.decimals) self.margin_entry.setSingleStep(0.1) - grid0.addWidget(self.margin_label, 6, 0) - grid0.addWidget(self.margin_entry, 6, 1) + param_grid.addWidget(self.margin_label, 6, 0) + param_grid.addWidget(self.margin_entry, 6, 1) # Length # self.l_label = FCLabel('%s:' % _("Length")) @@ -81,8 +87,8 @@ class ToolsCornersPrefGroupUI(OptionsGroupUI): self.l_entry.set_precision(self.decimals) self.l_entry.setSingleStep(10 ** -self.decimals) - grid0.addWidget(self.l_label, 8, 0) - grid0.addWidget(self.l_entry, 8, 1) + param_grid.addWidget(self.l_label, 8, 0) + param_grid.addWidget(self.l_entry, 8, 1) # Drill Tool Diameter 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.setWrapping(True) - grid0.addWidget(self.drill_dia_label, 10, 0) - grid0.addWidget(self.drill_dia_entry, 10, 1) + param_grid.addWidget(self.drill_dia_label, 10, 0) + param_grid.addWidget(self.drill_dia_entry, 10, 1) self.layout.addStretch() diff --git a/appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py b/appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py index dbc0a0d2..41ca0897 100644 --- a/appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py @@ -1,6 +1,7 @@ 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 import gettext @@ -21,16 +22,21 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.decimals = decimals self.defaults = defaults - # ## Solder Paste Dispensing - self.solderpastelabel = FCLabel("%s:" % _("Parameters")) + # ############################################################################################################# + # PARAMETERS Frame + # ############################################################################################################# + self.solderpastelabel = FCLabel('%s' % _("Parameters")) self.solderpastelabel.setToolTip( _("A tool to create GCode for dispensing\n" "solder paste onto a PCB.") ) self.layout.addWidget(self.solderpastelabel) - grid0 = FCGridLayout(v_spacing=5, h_spacing=3) - self.layout.addLayout(grid0) + param_frame = FCFrame() + self.layout.addWidget(param_frame) + + param_grid = FCGridLayout(v_spacing=5, h_spacing=3) + param_frame.setLayout(param_grid) # Nozzle Tool Diameters nozzletdlabel = FCLabel('%s:' % _('Tools Dia')) @@ -41,8 +47,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): ) self.nozzle_tool_dia_entry = NumericalEvalTupleEntry(border_color='#0069A9') - grid0.addWidget(nozzletdlabel, 0, 0) - grid0.addWidget(self.nozzle_tool_dia_entry, 0, 1) + param_grid.addWidget(nozzletdlabel, 0, 0) + param_grid.addWidget(self.nozzle_tool_dia_entry, 0, 1) # New Nozzle Tool Dia self.addtool_entry_lbl = FCLabel('%s:' % _('New Nozzle Dia')) @@ -54,8 +60,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.addtool_entry.set_range(0.0000001, 10000.0000) self.addtool_entry.setSingleStep(0.1) - grid0.addWidget(self.addtool_entry_lbl, 1, 0) - grid0.addWidget(self.addtool_entry, 1, 1) + param_grid.addWidget(self.addtool_entry_lbl, 1, 0) + param_grid.addWidget(self.addtool_entry, 1, 1) # Z dispense start self.z_start_entry = FCDoubleSpinner() @@ -67,8 +73,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.z_start_label.setToolTip( _("The height (Z) when solder paste dispensing starts.") ) - grid0.addWidget(self.z_start_label, 2, 0) - grid0.addWidget(self.z_start_entry, 2, 1) + param_grid.addWidget(self.z_start_label, 2, 0) + param_grid.addWidget(self.z_start_entry, 2, 1) # Z dispense self.z_dispense_entry = FCDoubleSpinner() @@ -80,8 +86,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.z_dispense_label.setToolTip( _("The height (Z) when doing solder paste dispensing.") ) - grid0.addWidget(self.z_dispense_label, 3, 0) - grid0.addWidget(self.z_dispense_entry, 3, 1) + param_grid.addWidget(self.z_dispense_label, 3, 0) + param_grid.addWidget(self.z_dispense_entry, 3, 1) # Z dispense stop self.z_stop_entry = FCDoubleSpinner() @@ -93,8 +99,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.z_stop_label.setToolTip( _("The height (Z) when solder paste dispensing stops.") ) - grid0.addWidget(self.z_stop_label, 4, 0) - grid0.addWidget(self.z_stop_entry, 4, 1) + param_grid.addWidget(self.z_stop_label, 4, 0) + param_grid.addWidget(self.z_stop_entry, 4, 1) # Z travel self.z_travel_entry = FCDoubleSpinner() @@ -107,8 +113,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): _("The height (Z) for travel between pads\n" "(without dispensing solder paste).") ) - grid0.addWidget(self.z_travel_label, 5, 0) - grid0.addWidget(self.z_travel_entry, 5, 1) + param_grid.addWidget(self.z_travel_label, 5, 0) + param_grid.addWidget(self.z_travel_entry, 5, 1) # Z toolchange location self.z_toolchange_entry = FCDoubleSpinner() @@ -120,8 +126,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.z_toolchange_label.setToolTip( _("The height (Z) for tool (nozzle) change.") ) - grid0.addWidget(self.z_toolchange_label, 6, 0) - grid0.addWidget(self.z_toolchange_entry, 6, 1) + param_grid.addWidget(self.z_toolchange_label, 6, 0) + param_grid.addWidget(self.z_toolchange_entry, 6, 1) # X,Y Toolchange location 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 format is (x, y) where x and y are real numbers.") ) - grid0.addWidget(self.xy_toolchange_label, 7, 0) - grid0.addWidget(self.xy_toolchange_entry, 7, 1) + param_grid.addWidget(self.xy_toolchange_label, 7, 0) + param_grid.addWidget(self.xy_toolchange_entry, 7, 1) # Feedrate X-Y self.frxy_entry = FCDoubleSpinner() @@ -143,8 +149,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.frxy_label.setToolTip( _("Feedrate (speed) while moving on the X-Y plane.") ) - grid0.addWidget(self.frxy_label, 8, 0) - grid0.addWidget(self.frxy_entry, 8, 1) + param_grid.addWidget(self.frxy_label, 8, 0) + param_grid.addWidget(self.frxy_entry, 8, 1) # Feedrate Z self.frz_entry = FCDoubleSpinner() @@ -157,8 +163,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): _("Feedrate (speed) while moving vertically\n" "(on Z plane).") ) - grid0.addWidget(self.frz_label, 9, 0) - grid0.addWidget(self.frz_entry, 9, 1) + param_grid.addWidget(self.frz_label, 9, 0) + param_grid.addWidget(self.frz_entry, 9, 1) # Feedrate Z Dispense self.frz_dispense_entry = FCDoubleSpinner() @@ -171,8 +177,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): _("Feedrate (speed) while moving up vertically\n" "to Dispense position (on Z plane).") ) - grid0.addWidget(self.frz_dispense_label, 10, 0) - grid0.addWidget(self.frz_dispense_entry, 10, 1) + param_grid.addWidget(self.frz_dispense_label, 10, 0) + param_grid.addWidget(self.frz_dispense_entry, 10, 1) # Spindle Speed Forward self.speedfwd_entry = FCSpinner() @@ -184,8 +190,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): _("The dispenser speed while pushing solder paste\n" "through the dispenser nozzle.") ) - grid0.addWidget(self.speedfwd_label, 11, 0) - grid0.addWidget(self.speedfwd_entry, 11, 1) + param_grid.addWidget(self.speedfwd_label, 11, 0) + param_grid.addWidget(self.speedfwd_entry, 11, 1) # Dwell Forward self.dwellfwd_entry = FCDoubleSpinner() @@ -197,8 +203,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): self.dwellfwd_label.setToolTip( _("Pause after solder dispensing.") ) - grid0.addWidget(self.dwellfwd_label, 12, 0) - grid0.addWidget(self.dwellfwd_entry, 12, 1) + param_grid.addWidget(self.dwellfwd_label, 12, 0) + param_grid.addWidget(self.dwellfwd_entry, 12, 1) # Spindle Speed Reverse self.speedrev_entry = FCSpinner() @@ -210,8 +216,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): _("The dispenser speed while retracting solder paste\n" "through the dispenser nozzle.") ) - grid0.addWidget(self.speedrev_label, 13, 0) - grid0.addWidget(self.speedrev_entry, 13, 1) + param_grid.addWidget(self.speedrev_label, 13, 0) + param_grid.addWidget(self.speedrev_entry, 13, 1) # Dwell Reverse self.dwellrev_entry = FCDoubleSpinner() @@ -224,8 +230,8 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): _("Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium.") ) - grid0.addWidget(self.dwellrev_label, 14, 0) - grid0.addWidget(self.dwellrev_entry, 14, 1) + param_grid.addWidget(self.dwellrev_label, 14, 0) + param_grid.addWidget(self.dwellrev_entry, 14, 1) # Preprocessors pp_label = FCLabel('%s:' % _('Preprocessor')) @@ -240,7 +246,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI): for it in range(self.pp_combo.count()): self.pp_combo.setItemData(it, self.pp_combo.itemText(it), QtCore.Qt.ItemDataRole.ToolTipRole) - grid0.addWidget(pp_label, 15, 0) - grid0.addWidget(self.pp_combo, 15, 1) + param_grid.addWidget(pp_label, 15, 0) + param_grid.addWidget(self.pp_combo, 15, 1) self.layout.addStretch() diff --git a/appGUI/preferences/tools/ToolsSubPrefGroupUI.py b/appGUI/preferences/tools/ToolsSubPrefGroupUI.py index cbfb4e75..b3d35dff 100644 --- a/appGUI/preferences/tools/ToolsSubPrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsSubPrefGroupUI.py @@ -1,4 +1,4 @@ -from appGUI.GUIElements import FCCheckBox, FCLabel +from appGUI.GUIElements import FCCheckBox, FCLabel, FCFrame, FCGridLayout from appGUI.preferences.OptionsGroupUI import OptionsGroupUI import gettext @@ -18,22 +18,30 @@ class ToolsSubPrefGroupUI(OptionsGroupUI): self.decimals = decimals self.defaults = defaults - # ## Subtractor Tool Parameters - self.sublabel = FCLabel("%s:" % _("Parameters")) + # ############################################################################################################# + # PARAMETERS Frame + # ############################################################################################################# + self.sublabel = FCLabel('%s' % _("Parameters")) self.sublabel.setToolTip( _("A tool to substract one Gerber or Geometry object\n" "from another of the same type.") ) 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.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.setToolTip( _("When checked will delete the source objects\n" "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() diff --git a/appGUI/preferences/tools/ToolsTransformPrefGroupUI.py b/appGUI/preferences/tools/ToolsTransformPrefGroupUI.py index fefe0ec7..76d36420 100644 --- a/appGUI/preferences/tools/ToolsTransformPrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsTransformPrefGroupUI.py @@ -1,6 +1,7 @@ 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 import gettext @@ -21,16 +22,21 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.decimals = decimals self.defaults = defaults - # ## Transformations - self.transform_label = FCLabel("%s:" % _("Parameters")) + # ############################################################################################################# + # PARAMETERS Frame + # ############################################################################################################# + self.transform_label = FCLabel('%s' % _("Parameters")) self.transform_label.setToolTip( _("Various transformations that can be applied\n" "on a application object.") ) self.layout.addWidget(self.transform_label) - grid0 = FCGridLayout(v_spacing=5, h_spacing=3) - self.layout.addLayout(grid0) + param_frame = FCFrame() + self.layout.addWidget(param_frame) + + param_grid = FCGridLayout(v_spacing=5, h_spacing=3) + param_frame.setLayout(param_grid) # Reference Type ref_label = FCLabel('%s:' % _("Reference")) @@ -46,8 +52,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.ref_items = [_("Origin"), _("Selection"), _("Point"), _("Object")] self.ref_combo.addItems(self.ref_items) - grid0.addWidget(ref_label, 0, 0) - grid0.addWidget(self.ref_combo, 0, 1) + param_grid.addWidget(ref_label, 0, 0) + param_grid.addWidget(self.ref_combo, 0, 1) self.point_label = FCLabel('%s:' % _("Point")) self.point_label.setToolTip( @@ -55,8 +61,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): ) self.point_entry = NumericalEvalTupleEntry() - grid0.addWidget(self.point_label, 1, 0) - grid0.addWidget(self.point_entry, 1, 1) + param_grid.addWidget(self.point_label, 2, 0) + param_grid.addWidget(self.point_entry, 2, 1) # Type of object to be used as reference 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(2, QtGui.QIcon(self.app.resource_location + "/geometry16.png")) - grid0.addWidget(self.type_object_label, 3, 0) - grid0.addWidget(self.type_obj_combo, 3, 1) + param_grid.addWidget(self.type_object_label, 4, 0) + param_grid.addWidget(self.type_obj_combo, 4, 1) - # ## Rotate Angle - rotate_title_lbl = FCLabel('%s' % _("Rotate")) - grid0.addWidget(rotate_title_lbl, 4, 0, 1, 2) + # ############################################################################################################# + # Rotate Frame + # ############################################################################################################# + rotate_title_lbl = FCLabel('%s' % _("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.set_range(-360.0, 360.0) @@ -92,12 +106,19 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): "Positive numbers for CW motion.\n" "Negative numbers for CCW motion.") ) - grid0.addWidget(self.rotate_label, 6, 0) - grid0.addWidget(self.rotate_entry, 6, 1) + rot_grid.addWidget(self.rotate_label, 0, 0) + rot_grid.addWidget(self.rotate_entry, 0, 1) - # ## Skew/Shear Angle on X axis - skew_title_lbl = FCLabel('%s' % _("Skew")) - grid0.addWidget(skew_title_lbl, 8, 0) + # ############################################################################################################# + # Skew Frame + # ############################################################################################################# + s_t_lay = QtWidgets.QHBoxLayout() + self.layout.addLayout(s_t_lay) + + skew_title_lbl = FCLabel('%s' % _("Skew")) + s_t_lay.addWidget(skew_title_lbl) + + s_t_lay.addStretch() # ## Link Skew factors self.skew_link_cb = FCCheckBox() @@ -106,7 +127,13 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): _("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.set_range(-360.0, 360.0) @@ -118,8 +145,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): _("Angle, in degrees.\n" "Float number between -360 and 359.") ) - grid0.addWidget(self.skewx_label, 9, 0) - grid0.addWidget(self.skewx_entry, 9, 1) + skew_grid.addWidget(self.skewx_label, 2, 0) + skew_grid.addWidget(self.skewx_entry, 2, 1) # ## Skew/Shear Angle on Y axis self.skewy_entry = FCDoubleSpinner() @@ -132,19 +159,32 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): _("Angle, in degrees.\n" "Float number between -360 and 359.") ) - grid0.addWidget(self.skewy_label, 10, 0) - grid0.addWidget(self.skewy_entry, 10, 1) + skew_grid.addWidget(self.skewy_label, 4, 0) + skew_grid.addWidget(self.skewy_entry, 4, 1) - # ## Scale - scale_title_lbl = FCLabel('%s' % _("Scale")) - grid0.addWidget(scale_title_lbl, 12, 0) + # ############################################################################################################# + # Scale Frame + # ############################################################################################################# + sc_t_lay = QtWidgets.QHBoxLayout() + self.layout.addLayout(sc_t_lay) + + scale_title_lbl = FCLabel('%s' % _("Scale")) + sc_t_lay.addWidget(scale_title_lbl) + + sc_t_lay.addStretch() # ## Link Scale factors self.scale_link_cb = FCCheckBox(_("Link")) self.scale_link_cb.setToolTip( _("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.set_range(0, 10000.0000) @@ -155,8 +195,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.scalex_label.setToolTip( _("Factor for scaling on X axis.") ) - grid0.addWidget(self.scalex_label, 14, 0) - grid0.addWidget(self.scalex_entry, 14, 1) + scale_grid.addWidget(self.scalex_label, 2, 0) + scale_grid.addWidget(self.scalex_entry, 2, 1) # ## Scale factor on X axis self.scaley_entry = FCDoubleSpinner() @@ -168,12 +208,20 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.scaley_label.setToolTip( _("Factor for scaling on Y axis.") ) - grid0.addWidget(self.scaley_label, 16, 0) - grid0.addWidget(self.scaley_entry, 16, 1) + scale_grid.addWidget(self.scaley_label, 4, 0) + scale_grid.addWidget(self.scaley_entry, 4, 1) - # ## Offset - offset_title_lbl = FCLabel('%s' % _("Offset")) - grid0.addWidget(offset_title_lbl, 20, 0, 1, 2) + # ############################################################################################################# + # Offset Frame + # ############################################################################################################# + offset_title_lbl = FCLabel('%s' % _("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.set_range(-10000.0000, 10000.0000) @@ -184,8 +232,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.offx_label.setToolTip( _("Distance to offset on X axis. In current units.") ) - grid0.addWidget(self.offx_label, 22, 0) - grid0.addWidget(self.offx_entry, 22, 1) + off_grid.addWidget(self.offx_label, 0, 0) + off_grid.addWidget(self.offx_entry, 0, 1) # ## Offset distance on Y axis self.offy_entry = FCDoubleSpinner() @@ -197,12 +245,19 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.offy_label.setToolTip( _("Distance to offset on Y axis. In current units.") ) - grid0.addWidget(self.offy_label, 24, 0) - grid0.addWidget(self.offy_entry, 24, 1) + off_grid.addWidget(self.offy_label, 2, 0) + off_grid.addWidget(self.offy_entry, 2, 1) - # ## Buffer - buffer_title_lbl = FCLabel('%s' % _("Buffer")) - grid0.addWidget(buffer_title_lbl, 26, 0) + # ############################################################################################################# + # Buffer Frame + # ############################################################################################################# + b_t_lay = QtWidgets.QHBoxLayout() + self.layout.addLayout(b_t_lay) + + buffer_title_lbl = FCLabel('%s' % _("Buffer")) + b_t_lay.addWidget(buffer_title_lbl) + + b_t_lay.addStretch() self.buffer_rounded_cb = FCCheckBox() self.buffer_rounded_cb.setText('%s' % _("Rounded")) @@ -213,7 +268,13 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): "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.setToolTip( @@ -229,8 +290,8 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.buffer_entry.setWrapping(True) self.buffer_entry.set_range(-10000.0000, 10000.0000) - grid0.addWidget(self.buffer_label, 28, 0) - grid0.addWidget(self.buffer_entry, 28, 1) + buff_grid.addWidget(self.buffer_label, 2, 0) + buff_grid.addWidget(self.buffer_entry, 2, 1) self.buffer_factor_label = FCLabel('%s:' % _("Value")) self.buffer_factor_label.setToolTip( @@ -247,7 +308,10 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI): self.buffer_factor_entry.setWrapping(True) self.buffer_factor_entry.setSingleStep(1) - grid0.addWidget(self.buffer_factor_label, 30, 0) - grid0.addWidget(self.buffer_factor_entry, 30, 1) + buff_grid.addWidget(self.buffer_factor_label, 4, 0) + 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()