- made showing a shape when hovering over objects, optional, by adding a Preferences -> General parameter

- starting to work in internationalization using gettext()
- Finished adding _() in FlatCAM Tools
This commit is contained in:
Marius Stanciu
2019-03-07 17:37:38 +02:00
committed by Marius
parent b20a6a1a85
commit 94d2fb23e2
18 changed files with 949 additions and 834 deletions

View File

@@ -7,12 +7,12 @@ from FlatCAMObj import *
class ToolTransform(FlatCAMTool):
toolName = "Object Transform"
rotateName = "Rotate"
skewName = "Skew/Shear"
scaleName = "Scale"
flipName = "Mirror (Flip)"
offsetName = "Offset"
toolName = _("Object Transform")
rotateName = _("Rotate")
skewName = _("Skew/Shear")
scaleName = _("Scale")
flipName = _("Mirror (Flip)")
offsetName = _("Offset")
def __init__(self, app):
FlatCAMTool.__init__(self, app)
@@ -52,12 +52,12 @@ class ToolTransform(FlatCAMTool):
self.transform_lay.addLayout(form_layout)
form_child = QtWidgets.QHBoxLayout()
self.rotate_label = QtWidgets.QLabel("Angle:")
self.rotate_label = QtWidgets.QLabel(_("Angle:"))
self.rotate_label.setToolTip(
"Angle for Rotation action, in degrees.\n"
_("Angle for Rotation action, in degrees.\n"
"Float number between -360 and 359.\n"
"Positive numbers for CW motion.\n"
"Negative numbers for CCW motion."
"Negative numbers for CCW motion.")
)
self.rotate_label.setFixedWidth(50)
@@ -66,11 +66,11 @@ class ToolTransform(FlatCAMTool):
self.rotate_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
self.rotate_button = FCButton()
self.rotate_button.set_value("Rotate")
self.rotate_button.set_value(_("Rotate"))
self.rotate_button.setToolTip(
"Rotate the selected object(s).\n"
_("Rotate the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects."
"the bounding box for all selected objects.")
)
self.rotate_button.setFixedWidth(60)
@@ -91,10 +91,10 @@ class ToolTransform(FlatCAMTool):
form1_child_1 = QtWidgets.QHBoxLayout()
form1_child_2 = QtWidgets.QHBoxLayout()
self.skewx_label = QtWidgets.QLabel("Angle X:")
self.skewx_label = QtWidgets.QLabel(_("Angle X:"))
self.skewx_label.setToolTip(
"Angle for Skew action, in degrees.\n"
"Float number between -360 and 359."
_("Angle for Skew action, in degrees.\n"
"Float number between -360 and 359.")
)
self.skewx_label.setFixedWidth(50)
self.skewx_entry = FCEntry()
@@ -102,17 +102,17 @@ class ToolTransform(FlatCAMTool):
# self.skewx_entry.setFixedWidth(60)
self.skewx_button = FCButton()
self.skewx_button.set_value("Skew X")
self.skewx_button.set_value(_("Skew X"))
self.skewx_button.setToolTip(
"Skew/shear the selected object(s).\n"
_("Skew/shear the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.")
"the bounding box for all selected objects."))
self.skewx_button.setFixedWidth(60)
self.skewy_label = QtWidgets.QLabel("Angle Y:")
self.skewy_label = QtWidgets.QLabel(_("Angle Y:"))
self.skewy_label.setToolTip(
"Angle for Skew action, in degrees.\n"
"Float number between -360 and 359."
_("Angle for Skew action, in degrees.\n"
"Float number between -360 and 359.")
)
self.skewy_label.setFixedWidth(50)
self.skewy_entry = FCEntry()
@@ -120,11 +120,11 @@ class ToolTransform(FlatCAMTool):
# self.skewy_entry.setFixedWidth(60)
self.skewy_button = FCButton()
self.skewy_button.set_value("Skew Y")
self.skewy_button.set_value(_("Skew Y"))
self.skewy_button.setToolTip(
"Skew/shear the selected object(s).\n"
_("Skew/shear the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.")
"the bounding box for all selected objects."))
self.skewy_button.setFixedWidth(60)
form1_child_1.addWidget(self.skewx_entry)
@@ -148,9 +148,9 @@ class ToolTransform(FlatCAMTool):
form2_child_1 = QtWidgets.QHBoxLayout()
form2_child_2 = QtWidgets.QHBoxLayout()
self.scalex_label = QtWidgets.QLabel("Factor X:")
self.scalex_label = QtWidgets.QLabel(_("Factor X:"))
self.scalex_label.setToolTip(
"Factor for Scale action over X axis."
_("Factor for Scale action over X axis.")
)
self.scalex_label.setFixedWidth(50)
self.scalex_entry = FCEntry()
@@ -158,16 +158,16 @@ class ToolTransform(FlatCAMTool):
# self.scalex_entry.setFixedWidth(60)
self.scalex_button = FCButton()
self.scalex_button.set_value("Scale X")
self.scalex_button.set_value(_("Scale X"))
self.scalex_button.setToolTip(
"Scale the selected object(s).\n"
_("Scale the selected object(s).\n"
"The point of reference depends on \n"
"the Scale reference checkbox state.")
"the Scale reference checkbox state."))
self.scalex_button.setFixedWidth(60)
self.scaley_label = QtWidgets.QLabel("Factor Y:")
self.scaley_label = QtWidgets.QLabel(_("Factor Y:"))
self.scaley_label.setToolTip(
"Factor for Scale action over Y axis."
_("Factor for Scale action over Y axis.")
)
self.scaley_label.setFixedWidth(50)
self.scaley_entry = FCEntry()
@@ -175,29 +175,29 @@ class ToolTransform(FlatCAMTool):
# self.scaley_entry.setFixedWidth(60)
self.scaley_button = FCButton()
self.scaley_button.set_value("Scale Y")
self.scaley_button.set_value(_("Scale Y"))
self.scaley_button.setToolTip(
"Scale the selected object(s).\n"
_("Scale the selected object(s).\n"
"The point of reference depends on \n"
"the Scale reference checkbox state.")
"the Scale reference checkbox state."))
self.scaley_button.setFixedWidth(60)
self.scale_link_cb = FCCheckBox()
self.scale_link_cb.set_value(True)
self.scale_link_cb.setText("Link")
self.scale_link_cb.setText(_("Link"))
self.scale_link_cb.setToolTip(
"Scale the selected object(s)\n"
"using the Scale Factor X for both axis.")
_("Scale the selected object(s)\n"
"using the Scale Factor X for both axis."))
self.scale_link_cb.setFixedWidth(50)
self.scale_zero_ref_cb = FCCheckBox()
self.scale_zero_ref_cb.set_value(True)
self.scale_zero_ref_cb.setText("Scale Reference")
self.scale_zero_ref_cb.setText(_("Scale Reference"))
self.scale_zero_ref_cb.setToolTip(
"Scale the selected object(s)\n"
_("Scale the selected object(s)\n"
"using the origin reference when checked,\n"
"and the center of the biggest bounding box\n"
"of the selected objects when unchecked.")
"of the selected objects when unchecked."))
form2_child_1.addWidget(self.scalex_entry)
form2_child_1.addWidget(self.scalex_button)
@@ -222,9 +222,9 @@ class ToolTransform(FlatCAMTool):
form3_child_1 = QtWidgets.QHBoxLayout()
form3_child_2 = QtWidgets.QHBoxLayout()
self.offx_label = QtWidgets.QLabel("Value X:")
self.offx_label = QtWidgets.QLabel(_("Value X:"))
self.offx_label.setToolTip(
"Value for Offset action on X axis."
_("Value for Offset action on X axis.")
)
self.offx_label.setFixedWidth(50)
self.offx_entry = FCEntry()
@@ -232,16 +232,16 @@ class ToolTransform(FlatCAMTool):
# self.offx_entry.setFixedWidth(60)
self.offx_button = FCButton()
self.offx_button.set_value("Offset X")
self.offx_button.set_value(_("Offset X"))
self.offx_button.setToolTip(
"Offset the selected object(s).\n"
_("Offset the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.\n")
"the bounding box for all selected objects.\n"))
self.offx_button.setFixedWidth(60)
self.offy_label = QtWidgets.QLabel("Value Y:")
self.offy_label = QtWidgets.QLabel(_("Value Y:"))
self.offy_label.setToolTip(
"Value for Offset action on Y axis."
_("Value for Offset action on Y axis.")
)
self.offy_label.setFixedWidth(50)
self.offy_entry = FCEntry()
@@ -249,11 +249,11 @@ class ToolTransform(FlatCAMTool):
# self.offy_entry.setFixedWidth(60)
self.offy_button = FCButton()
self.offy_button.set_value("Offset Y")
self.offy_button.set_value(_("Offset Y"))
self.offy_button.setToolTip(
"Offset the selected object(s).\n"
_("Offset the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.\n")
"the bounding box for all selected objects.\n"))
self.offy_button.setFixedWidth(60)
form3_child_1.addWidget(self.offx_entry)
@@ -279,26 +279,26 @@ class ToolTransform(FlatCAMTool):
form4_child_1 = QtWidgets.QHBoxLayout()
self.flipx_button = FCButton()
self.flipx_button.set_value("Flip on X")
self.flipx_button.set_value(_("Flip on X"))
self.flipx_button.setToolTip(
"Flip the selected object(s) over the X axis.\n"
"Does not create a new object.\n "
_("Flip the selected object(s) over the X axis.\n"
"Does not create a new object.\n ")
)
self.flipx_button.setFixedWidth(60)
self.flipy_button = FCButton()
self.flipy_button.set_value("Flip on Y")
self.flipy_button.set_value(_("Flip on Y"))
self.flipy_button.setToolTip(
"Flip the selected object(s) over the X axis.\n"
"Does not create a new object.\n "
_("Flip the selected object(s) over the X axis.\n"
"Does not create a new object.\n ")
)
self.flipy_button.setFixedWidth(60)
self.flip_ref_cb = FCCheckBox()
self.flip_ref_cb.set_value(True)
self.flip_ref_cb.setText("Ref Pt")
self.flip_ref_cb.setText(_("Ref Pt"))
self.flip_ref_cb.setToolTip(
"Flip the selected object(s)\n"
_("Flip the selected object(s)\n"
"around the point in Point Entry Field.\n"
"\n"
"The point coordinates can be captured by\n"
@@ -306,14 +306,14 @@ class ToolTransform(FlatCAMTool):
"SHIFT key. \n"
"Then click Add button to insert coordinates.\n"
"Or enter the coords in format (x, y) in the\n"
"Point Entry field and click Flip on X(Y)")
"Point Entry field and click Flip on X(Y)"))
self.flip_ref_cb.setFixedWidth(50)
self.flip_ref_label = QtWidgets.QLabel("Point:")
self.flip_ref_label = QtWidgets.QLabel(_("Point:"))
self.flip_ref_label.setToolTip(
"Coordinates in format (x, y) used as reference for mirroring.\n"
_("Coordinates in format (x, y) used as reference for mirroring.\n"
"The 'x' in (x, y) will be used when using Flip on X and\n"
"the 'y' in (x, y) will be used when using Flip on Y and"
"the 'y' in (x, y) will be used when using Flip on Y and")
)
self.flip_ref_label.setFixedWidth(50)
self.flip_ref_entry = EvalEntry2("(0, 0)")
@@ -321,11 +321,11 @@ class ToolTransform(FlatCAMTool):
# self.flip_ref_entry.setFixedWidth(60)
self.flip_ref_button = FCButton()
self.flip_ref_button.set_value("Add")
self.flip_ref_button.set_value(_("Add"))
self.flip_ref_button.setToolTip(
"The point coordinates can be captured by\n"
_("The point coordinates can be captured by\n"
"left click on canvas together with pressing\n"
"SHIFT key. Then click Add button to insert.")
"SHIFT key. Then click Add button to insert."))
self.flip_ref_button.setFixedWidth(60)
form4_child_hlay.addStretch()
@@ -379,7 +379,7 @@ class ToolTransform(FlatCAMTool):
FlatCAMTool.run(self)
self.set_tool_ui()
self.app.ui.notebook.setTabText(2, "Transform Tool")
self.app.ui.notebook.setTabText(2, _("Transform Tool"))
def install(self, icon=None, separator=None, **kwargs):
FlatCAMTool.install(self, icon, separator, shortcut='ALT+T', **kwargs)
@@ -449,8 +449,8 @@ class ToolTransform(FlatCAMTool):
try:
value = float(self.rotate_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Rotate, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Rotate, "
"use a number."))
return
self.app.worker_task.emit({'fcn': self.on_rotate_action,
'params': [value]})
@@ -483,8 +483,8 @@ class ToolTransform(FlatCAMTool):
try:
value = float(self.skewx_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Skew X, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Skew X, "
"use a number."))
return
# self.on_skew("X", value)
@@ -501,8 +501,8 @@ class ToolTransform(FlatCAMTool):
try:
value = float(self.skewy_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Skew Y, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Skew Y, "
"use a number."))
return
# self.on_skew("Y", value)
@@ -519,8 +519,8 @@ class ToolTransform(FlatCAMTool):
try:
xvalue = float(self.scalex_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Scale X, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Scale X, "
"use a number."))
return
# scaling to zero has no sense so we remove it, because scaling with 1 does nothing
@@ -553,8 +553,8 @@ class ToolTransform(FlatCAMTool):
try:
yvalue = float(self.scaley_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Scale Y, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Scale Y, "
"use a number."))
return
# scaling to zero has no sense so we remove it, because scaling with 1 does nothing
@@ -582,8 +582,8 @@ class ToolTransform(FlatCAMTool):
try:
value = float(self.offx_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Offset X, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Offset X, "
"use a number."))
return
# self.on_offset("X", value)
@@ -600,8 +600,8 @@ class ToolTransform(FlatCAMTool):
try:
value = float(self.offy_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Offset Y, "
"use a number.")
self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Offset Y, "
"use a number."))
return
# self.on_offset("Y", value)
@@ -618,10 +618,10 @@ class ToolTransform(FlatCAMTool):
ymaxlist = []
if not obj_list:
self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to rotate!")
self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to rotate!"))
return
else:
with self.app.proc_container.new("Appying Rotate"):
with self.app.proc_container.new(_("Appying Rotate")):
try:
# first get a bounding box to fit all
for obj in obj_list:
@@ -646,7 +646,7 @@ class ToolTransform(FlatCAMTool):
px = 0.5 * (xminimal + xmaximal)
py = 0.5 * (yminimal + ymaximal)
if isinstance(sel_obj, FlatCAMCNCjob):
self.app.inform.emit("CNCJob objects can't be rotated.")
self.app.inform.emit(_("CNCJob objects can't be rotated."))
else:
sel_obj.rotate(-num, point=(px, py))
sel_obj.plot()
@@ -655,11 +655,11 @@ class ToolTransform(FlatCAMTool):
# add information to the object that it was changed and how much
sel_obj.options['rotate'] = num
self.app.inform.emit('[success]Rotate done ...')
self.app.inform.emit(_('[success]Rotate done ...'))
self.app.progress.emit(100)
except Exception as e:
self.app.inform.emit("[ERROR_NOTCL] Due of %s, rotation movement was not executed." % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, rotation movement was not executed.") % str(e))
return
def on_flip(self, axis):
@@ -670,10 +670,10 @@ class ToolTransform(FlatCAMTool):
ymaxlist = []
if not obj_list:
self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to flip!")
self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to flip!"))
return
else:
with self.app.proc_container.new("Applying Flip"):
with self.app.proc_container.new(_("Applying Flip")):
try:
# get mirroring coords from the point entry
if self.flip_ref_cb.isChecked():
@@ -705,7 +705,7 @@ class ToolTransform(FlatCAMTool):
# execute mirroring
for obj in obj_list:
if isinstance(obj, FlatCAMCNCjob):
self.app.inform.emit("CNCJob objects can't be mirrored/flipped.")
self.app.inform.emit(_("CNCJob objects can't be mirrored/flipped."))
else:
if axis is 'X':
obj.mirror('X', (px, py))
@@ -716,7 +716,7 @@ class ToolTransform(FlatCAMTool):
else:
obj.options['mirror_y'] = True
obj.plot()
self.app.inform.emit('[success]Flip on the Y axis done ...')
self.app.inform.emit(_('[success]Flip on the Y axis done ...'))
elif axis is 'Y':
obj.mirror('Y', (px, py))
# add information to the object that it was changed and how much
@@ -726,12 +726,12 @@ class ToolTransform(FlatCAMTool):
else:
obj.options['mirror_x'] = True
obj.plot()
self.app.inform.emit('[success]Flip on the X axis done ...')
self.app.inform.emit(_('[success]Flip on the X axis done ...'))
self.app.object_changed.emit(obj)
self.app.progress.emit(100)
except Exception as e:
self.app.inform.emit("[ERROR_NOTCL] Due of %s, Flip action was not executed." % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Flip action was not executed.") % str(e))
return
def on_skew(self, axis, num):
@@ -740,10 +740,10 @@ class ToolTransform(FlatCAMTool):
yminlist = []
if not obj_list:
self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!")
self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!"))
return
else:
with self.app.proc_container.new("Applying Skew"):
with self.app.proc_container.new(_("Applying Skew")):
try:
# first get a bounding box to fit all
for obj in obj_list:
@@ -762,7 +762,7 @@ class ToolTransform(FlatCAMTool):
for obj in obj_list:
if isinstance(obj, FlatCAMCNCjob):
self.app.inform.emit("CNCJob objects can't be skewed.")
self.app.inform.emit(_("CNCJob objects can't be skewed."))
else:
if axis is 'X':
obj.skew(num, 0, point=(xminimal, yminimal))
@@ -774,11 +774,11 @@ class ToolTransform(FlatCAMTool):
obj.options['skew_y'] = num
obj.plot()
self.app.object_changed.emit(obj)
self.app.inform.emit('[success]Skew on the %s axis done ...' % str(axis))
self.app.inform.emit(_('[success]Skew on the %s axis done ...') % str(axis))
self.app.progress.emit(100)
except Exception as e:
self.app.inform.emit("[ERROR_NOTCL] Due of %s, Skew action was not executed." % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Skew action was not executed.") % str(e))
return
def on_scale(self, axis, xfactor, yfactor, point=None):
@@ -789,10 +789,10 @@ class ToolTransform(FlatCAMTool):
ymaxlist = []
if not obj_list:
self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to scale!")
self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to scale!"))
return
else:
with self.app.proc_container.new("Applying Scale"):
with self.app.proc_container.new(_("Applying Scale")):
try:
# first get a bounding box to fit all
for obj in obj_list:
@@ -822,7 +822,7 @@ class ToolTransform(FlatCAMTool):
for obj in obj_list:
if isinstance(obj, FlatCAMCNCjob):
self.app.inform.emit("CNCJob objects can't be scaled.")
self.app.inform.emit(_("CNCJob objects can't be scaled."))
else:
obj.scale(xfactor, yfactor, point=(px, py))
# add information to the object that it was changed and how much
@@ -830,10 +830,10 @@ class ToolTransform(FlatCAMTool):
obj.options['scale_y'] = yfactor
obj.plot()
self.app.object_changed.emit(obj)
self.app.inform.emit('[success]Scale on the %s axis done ...' % str(axis))
self.app.inform.emit(_('[success] Scale on the %s axis done ...') % str(axis))
self.app.progress.emit(100)
except Exception as e:
self.app.inform.emit("[ERROR_NOTCL] Due of %s, Scale action was not executed." % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Scale action was not executed.") % str(e))
return
def on_offset(self, axis, num):
@@ -842,10 +842,10 @@ class ToolTransform(FlatCAMTool):
yminlist = []
if not obj_list:
self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to offset!")
self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to offset!"))
return
else:
with self.app.proc_container.new("Applying Offset"):
with self.app.proc_container.new(_("Applying Offset")):
try:
# first get a bounding box to fit all
for obj in obj_list:
@@ -863,7 +863,7 @@ class ToolTransform(FlatCAMTool):
for obj in obj_list:
if isinstance(obj, FlatCAMCNCjob):
self.app.inform.emit("CNCJob objects can't be offseted.")
self.app.inform.emit(_("CNCJob objects can't be offseted."))
else:
if axis is 'X':
obj.offset((num, 0))
@@ -875,11 +875,11 @@ class ToolTransform(FlatCAMTool):
obj.options['offset_y'] = num
obj.plot()
self.app.object_changed.emit(obj)
self.app.inform.emit('[success]Offset on the %s axis done ...' % str(axis))
self.app.inform.emit(_('[success]Offset on the %s axis done ...') % str(axis))
self.app.progress.emit(100)
except Exception as e:
self.app.inform.emit("[ERROR_NOTCL] Due of %s, Offset action was not executed." % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Offset action was not executed.") % str(e))
return
# end of file
# end of file