diff --git a/AppDatabase.py b/AppDatabase.py
index 8fbadb07..c59d725f 100644
--- a/AppDatabase.py
+++ b/AppDatabase.py
@@ -119,7 +119,7 @@ class ToolsDB(QtWidgets.QWidget):
)
self.buttons_box.addWidget(import_db_btn)
- self.add_tool_from_db = FCButton(_("Add Tool from Tools DB"))
+ self.add_tool_from_db = FCButton(_("Transfer Tool"))
self.add_tool_from_db.setToolTip(
_("Add a new tool in the Tools Table of the\n"
"active Geometry object after selecting a tool\n"
@@ -1792,12 +1792,19 @@ class ToolsDB2(QtWidgets.QWidget):
)
self.buttons_box.addWidget(self.save_db_btn)
- self.add_tool_from_db = FCButton(_("Add Tool from Tools DB"))
+ self.add_tool_from_db = FCButton(_("Transfer Tool"))
self.add_tool_from_db.setToolTip(
- _("Add a new tool in the Tools Table of the\n"
- "active Geometry object after selecting a tool\n"
+ _("Insert a new tool in the Tools Table of the\n"
+ "object/application tool after selecting a tool\n"
"in the Tools Database.")
)
+ self.add_tool_from_db.setStyleSheet("""
+ QPushButton
+ {
+ font-weight: bold;
+ color: green;
+ }
+ """)
self.add_tool_from_db.hide()
self.cancel_tool_from_db = FCButton(_("Cancel"))
@@ -1807,7 +1814,7 @@ class ToolsDB2(QtWidgets.QWidget):
tree_layout.addLayout(hlay)
hlay.addWidget(self.add_tool_from_db)
hlay.addWidget(self.cancel_tool_from_db)
- hlay.addStretch()
+ # hlay.addStretch()
# ##############################################################################
# ##############################################################################
@@ -2015,7 +2022,7 @@ class ToolsDB2(QtWidgets.QWidget):
self.blockSignals(False)
def setup_db_ui(self):
- filename = self.app.data_path + '/geo_tools_db.FlatDB'
+ filename = self.app.data_path + '\geo_tools_db.FlatDB'
# load the database tools from the file
try:
@@ -2145,8 +2152,18 @@ class ToolsDB2(QtWidgets.QWidget):
"tools_iso_isotype": self.app.defaults["tools_iso_isotype"],
})
+ temp = []
+ for k, v in self.db_tool_dict.items():
+ if "new_tool_" in v['name']:
+ temp.append(float(v['name'].rpartition('_')[2]))
+
+ if temp:
+ new_name = "new_tool_%d" % int(max(temp) + 1)
+ else:
+ new_name = "new_tool_1"
+
dict_elem = {}
- dict_elem['name'] = 'new_tool'
+ dict_elem['name'] = new_name
if type(self.app.defaults["geometry_cnctooldia"]) == float:
dict_elem['tooldia'] = self.app.defaults["geometry_cnctooldia"]
else:
diff --git a/AppGUI/MainGUI.py b/AppGUI/MainGUI.py
index 6423ae8f..66bc24bb 100644
--- a/AppGUI/MainGUI.py
+++ b/AppGUI/MainGUI.py
@@ -1124,7 +1124,7 @@ class MainGUI(QtWidgets.QMainWindow):
# #######################################################################
# ####################### TCL Shell DOCK ################################
# #######################################################################
- self.shell_dock = FCDock("FlatCAM TCL Shell", close_callback=self.toggle_shell_ui)
+ self.shell_dock = FCDock("TCL Shell", close_callback=self.toggle_shell_ui)
self.shell_dock.setObjectName('Shell_DockWidget')
self.shell_dock.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas)
self.shell_dock.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable |
diff --git a/AppTool.py b/AppTool.py
index f288cdf0..8d8c0b66 100644
--- a/AppTool.py
+++ b/AppTool.py
@@ -101,7 +101,8 @@ class AppTool(QtWidgets.QWidget):
self.show()
- def draw_tool_selection_shape(self, old_coords, coords, **kwargs):
+ @classmethod
+ def draw_tool_selection_shape(cls, old_coords, coords, **kwargs):
"""
:param old_coords: old coordinates
@@ -113,17 +114,17 @@ class AppTool(QtWidgets.QWidget):
if 'shapes_storage' in kwargs:
s_storage = kwargs['shapes_storage']
else:
- s_storage = self.app.tool_shapes
+ s_storage = cls.app.tool_shapes
if 'color' in kwargs:
color = kwargs['color']
else:
- color = self.app.defaults['global_sel_line']
+ color = cls.app.defaults['global_sel_line']
if 'face_color' in kwargs:
face_color = kwargs['face_color']
else:
- face_color = self.app.defaults['global_sel_fill']
+ face_color = cls.app.defaults['global_sel_fill']
if 'face_alpha' in kwargs:
face_alpha = kwargs['face_alpha']
@@ -145,10 +146,11 @@ class AppTool(QtWidgets.QWidget):
color_t = face_color[:-2] + str(hex(int(face_alpha * 255)))[2:]
s_storage.add(sel_rect, color=color, face_color=color_t, update=True, layer=0, tolerance=None)
- if self.app.is_legacy is True:
+ if cls.app.is_legacy is True:
s_storage.redraw()
- def draw_selection_shape_polygon(self, points, **kwargs):
+ @classmethod
+ def draw_selection_shape_polygon(cls, points, **kwargs):
"""
:param points: a list of points from which to create a Polygon
@@ -159,17 +161,17 @@ class AppTool(QtWidgets.QWidget):
if 'shapes_storage' in kwargs:
s_storage = kwargs['shapes_storage']
else:
- s_storage = self.app.tool_shapes
+ s_storage = cls.app.tool_shapes
if 'color' in kwargs:
color = kwargs['color']
else:
- color = self.app.defaults['global_sel_line']
+ color = cls.app.defaults['global_sel_line']
if 'face_color' in kwargs:
face_color = kwargs['face_color']
else:
- face_color = self.app.defaults['global_sel_fill']
+ face_color = cls.app.defaults['global_sel_fill']
if 'face_alpha' in kwargs:
face_alpha = kwargs['face_alpha']
@@ -187,10 +189,11 @@ class AppTool(QtWidgets.QWidget):
color_t = face_color[:-2] + str(hex(int(face_alpha * 255)))[2:]
s_storage.add(sel_rect, color=color, face_color=color_t, update=True, layer=0, tolerance=None)
- if self.app.is_legacy is True:
+ if cls.app.is_legacy is True:
s_storage.redraw()
- def delete_tool_selection_shape(self, **kwargs):
+ @classmethod
+ def delete_tool_selection_shape(cls, **kwargs):
"""
:param kwargs:
@@ -200,12 +203,13 @@ class AppTool(QtWidgets.QWidget):
if 'shapes_storage' in kwargs:
s_storage = kwargs['shapes_storage']
else:
- s_storage = self.app.tool_shapes
+ s_storage = cls.app.tool_shapes
s_storage.clear()
s_storage.redraw()
- def draw_moving_selection_shape_poly(self, points, data, **kwargs):
+ @classmethod
+ def draw_moving_selection_shape_poly(cls, points, data, **kwargs):
"""
:param points:
@@ -217,17 +221,17 @@ class AppTool(QtWidgets.QWidget):
if 'shapes_storage' in kwargs:
s_storage = kwargs['shapes_storage']
else:
- s_storage = self.app.move_tool.sel_shapes
+ s_storage = cls.app.move_tool.sel_shapes
if 'color' in kwargs:
color = kwargs['color']
else:
- color = self.app.defaults['global_sel_line']
+ color = cls.app.defaults['global_sel_line']
if 'face_color' in kwargs:
face_color = kwargs['face_color']
else:
- face_color = self.app.defaults['global_sel_fill']
+ face_color = cls.app.defaults['global_sel_fill']
if 'face_alpha' in kwargs:
face_alpha = kwargs['face_alpha']
@@ -257,10 +261,11 @@ class AppTool(QtWidgets.QWidget):
elif not geo.is_valid:
s_storage.add(geo, color="red", face_color=color_t_error, update=True, layer=0, tolerance=None)
- if self.app.is_legacy is True:
+ if cls.app.is_legacy is True:
s_storage.redraw()
- def delete_moving_selection_shape(self, **kwargs):
+ @classmethod
+ def delete_moving_selection_shape(cls, **kwargs):
"""
:param kwargs:
@@ -270,7 +275,7 @@ class AppTool(QtWidgets.QWidget):
if 'shapes_storage' in kwargs:
s_storage = kwargs['shapes_storage']
else:
- s_storage = self.app.move_tool.sel_shapes
+ s_storage = cls.app.move_tool.sel_shapes
s_storage.clear()
s_storage.redraw()
diff --git a/AppTools/ToolCalibration.py b/AppTools/ToolCalibration.py
index b808f00c..456674bf 100644
--- a/AppTools/ToolCalibration.py
+++ b/AppTools/ToolCalibration.py
@@ -64,7 +64,7 @@ class ToolCalibration(AppTool):
grid_lay.setColumnStretch(1, 1)
grid_lay.setColumnStretch(2, 0)
- self.gcode_title_label = QtWidgets.QLabel('%s' % _('GCode Parameters'))
+ self.gcode_title_label = QtWidgets.QLabel('%s:' % _('Parameters'))
self.gcode_title_label.setToolTip(
_("Parameters used when creating the GCode in this tool.")
)
diff --git a/AppTools/ToolCopperThieving.py b/AppTools/ToolCopperThieving.py
index 20e35cd0..79362948 100644
--- a/AppTools/ToolCopperThieving.py
+++ b/AppTools/ToolCopperThieving.py
@@ -77,8 +77,12 @@ class ToolCopperThieving(AppTool):
)
i_grid_lay.addWidget(self.grbobj_label, 0, 0)
- i_grid_lay.addWidget(self.grb_object_combo, 0, 1, 1, 2)
- i_grid_lay.addWidget(QtWidgets.QLabel(''), 1, 0)
+ i_grid_lay.addWidget(self.grb_object_combo, 1, 0, 1, 2)
+
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ i_grid_lay.addWidget(separator_line, 2, 0, 1, 2)
# ## Grid Layout
grid_lay = QtWidgets.QGridLayout()
diff --git a/AppTools/ToolEtchCompensation.py b/AppTools/ToolEtchCompensation.py
index 9318ca39..6f879f20 100644
--- a/AppTools/ToolEtchCompensation.py
+++ b/AppTools/ToolEtchCompensation.py
@@ -78,7 +78,10 @@ class ToolEtchCompensation(AppTool):
grid0.addWidget(self.gerber_label, 1, 0, 1, 2)
grid0.addWidget(self.gerber_combo, 2, 0, 1, 2)
- grid0.addWidget(QtWidgets.QLabel(""), 3, 0, 1, 2)
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ grid0.addWidget(separator_line, 3, 0, 1, 2)
self.util_label = QtWidgets.QLabel("%s:" % _("Utilities"))
self.util_label.setToolTip('%s.' % _("Conversion utilities"))
@@ -127,7 +130,10 @@ class ToolEtchCompensation(AppTool):
hlay_2.addWidget(self.mils_to_um_entry)
grid0.addLayout(hlay_2, 8, 0, 1, 2)
- grid0.addWidget(QtWidgets.QLabel(""), 9, 0, 1, 2)
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ grid0.addWidget(separator_line, 9, 0, 1, 2)
self.param_label = QtWidgets.QLabel("%s:" % _("Parameters"))
self.param_label.setToolTip('%s.' % _("Parameters for this tool"))
diff --git a/AppTools/ToolFiducials.py b/AppTools/ToolFiducials.py
index b19add63..3f020c64 100644
--- a/AppTools/ToolFiducials.py
+++ b/AppTools/ToolFiducials.py
@@ -63,9 +63,6 @@ class ToolFiducials(AppTool):
self.points_table = FCTable()
self.points_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
- self.layout.addWidget(self.points_table)
- self.layout.addWidget(QtWidgets.QLabel(''))
-
self.points_table.setColumnCount(3)
self.points_table.setHorizontalHeaderLabels(
[
@@ -76,7 +73,6 @@ class ToolFiducials(AppTool):
)
self.points_table.setRowCount(3)
row = 0
-
flags = QtCore.Qt.ItemIsEnabled
# BOTTOM LEFT
@@ -140,6 +136,13 @@ class ToolFiducials(AppTool):
for row in range(self.points_table.rowCount()):
self.points_table.cellWidget(row, 2).setFrame(False)
+ self.layout.addWidget(self.points_table)
+
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ self.layout.addWidget(separator_line)
+
# ## Grid Layout
grid_lay = QtWidgets.QGridLayout()
self.layout.addLayout(grid_lay)
diff --git a/AppTools/ToolInvertGerber.py b/AppTools/ToolInvertGerber.py
index b97ec269..96e771b4 100644
--- a/AppTools/ToolInvertGerber.py
+++ b/AppTools/ToolInvertGerber.py
@@ -77,7 +77,10 @@ class ToolInvertGerber(AppTool):
grid0.addWidget(self.gerber_label, 1, 0, 1, 2)
grid0.addWidget(self.gerber_combo, 2, 0, 1, 2)
- grid0.addWidget(QtWidgets.QLabel(""), 3, 0, 1, 2)
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ grid0.addWidget(separator_line, 3, 0, 1, 2)
self.param_label = QtWidgets.QLabel("%s:" % _("Parameters"))
self.param_label.setToolTip('%s.' % _("Parameters for this tool"))
diff --git a/AppTools/ToolOptimal.py b/AppTools/ToolOptimal.py
index 1733edc6..234ec2e7 100644
--- a/AppTools/ToolOptimal.py
+++ b/AppTools/ToolOptimal.py
@@ -72,7 +72,13 @@ class ToolOptimal(AppTool):
self.gerber_object_label.setToolTip(
"Gerber object for which to find the minimum distance between copper features."
)
- form_lay.addRow(self.gerber_object_label, self.gerber_object_combo)
+ form_lay.addRow(self.gerber_object_label)
+ form_lay.addRow(self.gerber_object_combo)
+
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ form_lay.addRow(separator_line)
# Precision = nr of decimals
self.precision_label = QtWidgets.QLabel('%s:' % _("Precision"))
diff --git a/AppTools/ToolQRCode.py b/AppTools/ToolQRCode.py
index be45f13e..f9d5c894 100644
--- a/AppTools/ToolQRCode.py
+++ b/AppTools/ToolQRCode.py
@@ -75,14 +75,35 @@ class QRCode(AppTool):
self.grb_object_combo.is_last = True
self.grb_object_combo.obj_type = "Gerber"
- self.grbobj_label = QtWidgets.QLabel("%s:" % _("Object"))
+ self.grbobj_label = QtWidgets.QLabel("%s:" % _("GERBER"))
self.grbobj_label.setToolTip(
_("Gerber Object to which the QRCode will be added.")
)
i_grid_lay.addWidget(self.grbobj_label, 0, 0)
- i_grid_lay.addWidget(self.grb_object_combo, 0, 1, 1, 2)
- i_grid_lay.addWidget(QtWidgets.QLabel(''), 1, 0)
+ i_grid_lay.addWidget(self.grb_object_combo, 1, 0, 1, 2)
+
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ i_grid_lay.addWidget(separator_line, 2, 0, 1, 2)
+
+ # Text box
+ self.text_label = QtWidgets.QLabel('%s:' % _("QRCode Data"))
+ self.text_label.setToolTip(
+ _("QRCode Data. Alphanumeric text to be encoded in the QRCode.")
+ )
+ self.text_data = FCTextArea()
+ self.text_data.setPlaceholderText(
+ _("Add here the text to be included in the QRCode...")
+ )
+ i_grid_lay.addWidget(self.text_label, 5, 0)
+ i_grid_lay.addWidget(self.text_data, 6, 0, 1, 2)
+
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ i_grid_lay.addWidget(separator_line, 7, 0, 1, 2)
# ## Grid Layout
grid_lay = QtWidgets.QGridLayout()
@@ -90,7 +111,7 @@ class QRCode(AppTool):
grid_lay.setColumnStretch(0, 0)
grid_lay.setColumnStretch(1, 1)
- self.qrcode_label = QtWidgets.QLabel('%s' % _('QRCode Parameters'))
+ self.qrcode_label = QtWidgets.QLabel('%s' % _('Parameters'))
self.qrcode_label.setToolTip(
_("The parameters used to shape the QRCode.")
)
@@ -158,18 +179,6 @@ class QRCode(AppTool):
grid_lay.addWidget(self.border_size_label, 4, 0)
grid_lay.addWidget(self.border_size_entry, 4, 1)
- # Text box
- self.text_label = QtWidgets.QLabel('%s:' % _("QRCode Data"))
- self.text_label.setToolTip(
- _("QRCode Data. Alphanumeric text to be encoded in the QRCode.")
- )
- self.text_data = FCTextArea()
- self.text_data.setPlaceholderText(
- _("Add here the text to be included in the QRCode...")
- )
- grid_lay.addWidget(self.text_label, 5, 0)
- grid_lay.addWidget(self.text_data, 6, 0, 1, 2)
-
# POLARITY CHOICE #
self.pol_label = QtWidgets.QLabel('%s:' % _("Polarity"))
self.pol_label.setToolTip(
diff --git a/AppTools/ToolSolderPaste.py b/AppTools/ToolSolderPaste.py
index 9d5bd64e..70a8deac 100644
--- a/AppTools/ToolSolderPaste.py
+++ b/AppTools/ToolSolderPaste.py
@@ -64,11 +64,16 @@ class SolderPaste(AppTool):
self.obj_combo.is_last = True
self.obj_combo.obj_type = "Gerber"
- self.object_label = QtWidgets.QLabel("Gerber: ")
- self.object_label.setToolTip(
- _("Gerber Solder paste object. ")
+ self.object_label = QtWidgets.QLabel('%s:'% _("GERBER"))
+ self.object_label.setToolTip(_("Gerber Solder paste object.")
)
- obj_form_layout.addRow(self.object_label, self.obj_combo)
+ obj_form_layout.addRow(self.object_label)
+ obj_form_layout.addRow(self.obj_combo)
+
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ obj_form_layout.addRow(separator_line)
# ### Tools ## ##
self.tools_table_label = QtWidgets.QLabel('%s' % _('Tools Table'))
@@ -131,22 +136,13 @@ class SolderPaste(AppTool):
"by first selecting a row(s) in the Tool Table.")
)
- self.soldergeo_btn = QtWidgets.QPushButton(_("Generate Geo"))
- self.soldergeo_btn.setToolTip(
- _("Generate solder paste dispensing geometry.")
- )
- self.soldergeo_btn.setStyleSheet("""
- QPushButton
- {
- font-weight: bold;
- }
- """)
-
grid0.addWidget(self.addtool_btn, 0, 0)
- # grid2.addWidget(self.copytool_btn, 0, 1)
grid0.addWidget(self.deltool_btn, 0, 2)
- self.layout.addSpacing(10)
+ separator_line = QtWidgets.QFrame()
+ separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+ separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+ grid0.addWidget(separator_line, 1, 0, 1, 3)
# ## Buttons
grid0_1 = QtWidgets.QGridLayout()
@@ -373,6 +369,18 @@ class SolderPaste(AppTool):
_("Second step is to create a solder paste dispensing\n"
"geometry out of an Solder Paste Mask Gerber file.")
)
+
+ self.soldergeo_btn = QtWidgets.QPushButton(_("Generate Geo"))
+ self.soldergeo_btn.setToolTip(
+ _("Generate solder paste dispensing geometry.")
+ )
+ self.soldergeo_btn.setStyleSheet("""
+ QPushButton
+ {
+ font-weight: bold;
+ }
+ """)
+
grid2.addWidget(step2_lbl, 0, 0)
grid2.addWidget(self.soldergeo_btn, 0, 2)
diff --git a/App_Main.py b/App_Main.py
index 808845bb..23778766 100644
--- a/App_Main.py
+++ b/App_Main.py
@@ -6832,7 +6832,7 @@ class App(QtCore.QObject):
data = None
if self.is_legacy is False:
- image = _screenshot(alpha=None)
+ image = _screenshot(alpha=False)
data = np.asarray(image)
if not data.ndim == 3 and data.shape[-1] in (3, 4):
self.inform.emit('[[WARNING_NOTCL]] %s' % _('Data must be a 3D array with last dimension 3 or 4'))
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3f3720d3..082a1a74 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,10 @@ CHANGELOG for FlatCAM beta
- changed some strings
- fixed the warning that old preferences found even for new installation
- in Paint Tool fixed the message to select a polygon when using the Selection: Single Polygon being overwritten by the "Grid disabled" message
+- more changes in strings throughout the app
+- made some minor changes in the GUI of the FlatCAM Tools
+- in Tools Database made sure that each new tool added has a unique name
+- in AppTool made some methods to be class methods
31.05.2020
diff --git a/Common.py b/Common.py
index 03574b86..90050a33 100644
--- a/Common.py
+++ b/Common.py
@@ -212,9 +212,6 @@ class ExclusionAreas(QtCore.QObject):
self.shape_type_button = shape_button
- # TODO use the self.app.defaults when made general (not in Geo object Pref UI)
- # self.shape_type_button.set_value('square')
-
self.over_z_button = overz_button
self.strategy_button = strategy_radio
self.cnc_button = cnc_button