- fixed an issue in Isolation Tool when running the app in Basic mode;

- fixed Paint, Isolation and NCC Tools such the translated comboboxes values are now stored as indexes instead of translated words as before
- in Geometry Object made sure that the widgets in the Tool Table gets populated regardless of encountering non-recognizable translated values
- in Paint Tool found a small bug and fixed it
This commit is contained in:
Marius Stanciu 2020-10-28 23:00:18 +02:00 committed by Marius
parent 735a20242a
commit 31a84bb4cc
15 changed files with 242 additions and 252 deletions

View File

@ -29,6 +29,10 @@ CHANGELOG for FlatCAM beta
- fix in Tool Subtract where there was a typo
- upgraded the punch Gerber Tool
- updated the Turkish translation strings (by Mehmet Kaya)
- fixed an issue in Isolation Tool when running the app in Basic mode;
- fixed Paint, Isolation and NCC Tools such the translated comboboxes values are now stored as indexes instead of translated words as before
- in Geometry Object made sure that the widgets in the Tool Table gets populated regardless of encountering non-recognizable translated values
- in Paint Tool found a small bug and fixed it
27.10.2020

View File

@ -2160,6 +2160,17 @@ class FCComboBox(QtWidgets.QComboBox):
self.setCurrentIndex(first)
class FCComboBox2(FCComboBox):
def __init__(self, parent=None, callback=None):
super(FCComboBox2, self).__init__(parent=parent, callback=callback)
def get_value(self):
return int(self.currentIndex())
def set_value(self, val):
self.setCurrentIndex(val)
class FCInputDialog(QtWidgets.QInputDialog):
def __init__(self, parent=None, ok=False, val=None, title=None, text=None, min=None, max=None, decimals=None,
init_val=None):

View File

@ -1714,7 +1714,7 @@ class GeometryObjectUI(ObjectUI):
"- Line-based: Parallel lines.")
)
self.polish_method_combo = FCComboBox()
self.polish_method_combo = FCComboBox2()
self.polish_method_combo.addItems(
[_("Standard"), _("Seed"), _("Lines")]
)

View File

@ -2,7 +2,7 @@ from PyQt5 import QtWidgets
from PyQt5.QtCore import QSettings
from appGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCLabel, NumericalEvalTupleEntry, \
NumericalEvalEntry, FCComboBox
NumericalEvalEntry, FCComboBox2
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext
@ -338,7 +338,7 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
"- Line-based: Parallel lines.")
)
self.polish_method_combo = FCComboBox()
self.polish_method_combo = FCComboBox2()
self.polish_method_combo.addItems(
[_("Standard"), _("Seed"), _("Lines")]
)

View File

@ -1,7 +1,7 @@
from PyQt5 import QtWidgets
from PyQt5.QtCore import QSettings
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox, FCSpinner, NumericalEvalTupleEntry
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCComboBox2, FCCheckBox, FCSpinner, NumericalEvalTupleEntry
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext
@ -290,7 +290,7 @@ class ToolsISOPrefGroupUI(OptionsGroupUI):
"- 'Polygon Selection' -> Isolate a selection of polygons.\n"
"- 'Reference Object' - will process the area specified by another object.")
)
self.select_combo = FCComboBox()
self.select_combo = FCComboBox2()
self.select_combo.addItems(
[_("All"), _("Area Selection"), _("Polygon Selection"), _("Reference Object")]
)

View File

@ -1,7 +1,7 @@
from PyQt5 import QtWidgets
from PyQt5.QtCore import QSettings
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox, NumericalEvalTupleEntry
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, NumericalEvalTupleEntry, FCComboBox2
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext
@ -225,7 +225,7 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI):
# {"label": _("Seed-based"), "value": "seed"},
# {"label": _("Straight lines"), "value": "lines"}
# ], orientation='vertical', stretch=False)
self.ncc_method_combo = FCComboBox()
self.ncc_method_combo = FCComboBox2()
self.ncc_method_combo.addItems(
[_("Standard"), _("Seed"), _("Lines"), _("Combo")]
)
@ -304,7 +304,7 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI):
# {'label': _('Reference Object'), 'value': 'box'}],
# orientation='vertical',
# stretch=None)
self.select_combo = FCComboBox()
self.select_combo = FCComboBox2()
self.select_combo.addItems(
[_("Itself"), _("Area Selection"), _("Reference Object")]
)

View File

@ -1,7 +1,7 @@
from PyQt5 import QtWidgets
from PyQt5.QtCore import QSettings
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox, NumericalEvalTupleEntry
from appGUI.GUIElements import RadioSet, FCDoubleSpinner, FCComboBox2, FCCheckBox, NumericalEvalTupleEntry
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext
@ -210,7 +210,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI):
# {"label": _("Seed-based"), "value": "seed"},
# {"label": _("Straight lines"), "value": "lines"}
# ], orientation='vertical', stretch=False)
self.paintmethod_combo = FCComboBox()
self.paintmethod_combo = FCComboBox2()
self.paintmethod_combo.addItems(
[_("Standard"), _("Seed"), _("Lines"), _("Laser_lines"), _("Combo")]
)
@ -273,9 +273,9 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI):
# orientation='vertical',
# stretch=None
# )
self.selectmethod_combo = FCComboBox()
self.selectmethod_combo = FCComboBox2()
self.selectmethod_combo.addItems(
[_("Polygon Selection"), _("Area Selection"), _("All"), _("Reference Object")]
[_("All"), _("Polygon Selection"), _("Area Selection"), _("Reference Object")]
)
grid0.addWidget(selectlabel, 15, 0)

View File

@ -205,7 +205,11 @@ class GeometryObject(FlatCAMObj, Geometry):
for item in self.offset_item_options:
offset_item.addItem(item)
idx = offset_item.findText(tooluid_value['offset'])
offset_item.setCurrentIndex(idx)
# protection against having this translated or loading a project with translated values
if idx == -1:
offset_item.setCurrentIndex(0)
else:
offset_item.setCurrentIndex(idx)
self.ui.geo_tools_table.setCellWidget(row_idx, 2, offset_item)
# -------------------- TYPE ------------------------------------- #
@ -213,7 +217,11 @@ class GeometryObject(FlatCAMObj, Geometry):
for item in self.type_item_options:
type_item.addItem(item)
idx = type_item.findText(tooluid_value['type'])
type_item.setCurrentIndex(idx)
# protection against having this translated or loading a project with translated values
if idx == -1:
type_item.setCurrentIndex(0)
else:
type_item.setCurrentIndex(idx)
self.ui.geo_tools_table.setCellWidget(row_idx, 3, type_item)
# -------------------- TOOL TYPE ------------------------------------- #
@ -221,7 +229,11 @@ class GeometryObject(FlatCAMObj, Geometry):
for item in self.tool_type_item_options:
tool_type_item.addItem(item)
idx = tool_type_item.findText(tooluid_value['tool_type'])
tool_type_item.setCurrentIndex(idx)
# protection against having this translated or loading a project with translated values
if idx == -1:
tool_type_item.setCurrentIndex(0)
else:
tool_type_item.setCurrentIndex(idx)
self.ui.geo_tools_table.setCellWidget(row_idx, 4, tool_type_item)
# -------------------- TOOL UID ------------------------------------- #
@ -574,7 +586,6 @@ class GeometryObject(FlatCAMObj, Geometry):
self.ui.addtool_entry_lbl.hide()
self.ui.addtool_entry.hide()
self.ui.addtool_btn.hide()
self.ui.copytool_btn.hide()
self.ui.deltool_btn.hide()
# self.ui.endz_label.hide()
# self.ui.endz_entry.hide()
@ -2446,7 +2457,7 @@ class GeometryObject(FlatCAMObj, Geometry):
# Type(cpoly) == FlatCAMRTreeStorage | None
cpoly = None
if paint_method == _("Standard"):
if paint_method == 0: # Standard
cpoly = self.clear_polygon(bbox,
tooldia=tooldia,
steps_per_circle=obj.circle_steps,
@ -2454,7 +2465,7 @@ class GeometryObject(FlatCAMObj, Geometry):
contour=True,
connect=True,
prog_plot=False)
elif paint_method == _("Seed"):
elif paint_method == 1: # Seed
cpoly = self.clear_polygon2(bbox,
tooldia=tooldia,
steps_per_circle=obj.circle_steps,
@ -2462,7 +2473,7 @@ class GeometryObject(FlatCAMObj, Geometry):
contour=True,
connect=True,
prog_plot=False)
elif paint_method == _("Lines"):
elif paint_method == 2: # Lines
cpoly = self.clear_polygon3(bbox,
tooldia=tooldia,
steps_per_circle=obj.circle_steps,

View File

@ -8,8 +8,8 @@
from PyQt5 import QtWidgets, QtCore, QtGui
from appTool import AppTool
from appGUI.GUIElements import FCCheckBox, FCDoubleSpinner, RadioSet, FCTable, FCInputDialog, FCButton, \
FCComboBox, OptionalInputSection, FCSpinner, FCLabel, FCInputDialogSpinnerButton
from appGUI.GUIElements import FCCheckBox, FCDoubleSpinner, RadioSet, FCTable, FCButton, \
FCComboBox, OptionalInputSection, FCSpinner, FCLabel, FCInputDialogSpinnerButton, FCComboBox2
from appParsers.ParseGerber import Gerber
from camlib import grace
@ -813,14 +813,12 @@ class ToolIsolation(AppTool, Gerber):
obj_type = self.ui.reference_combo_type.currentIndex()
self.ui.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
self.ui.reference_combo.setCurrentIndex(0)
self.ui.reference_combo.obj_type = {
_("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry"
}[self.ui.reference_combo_type.get_value()]
self.ui.reference_combo.obj_type = {0: "Gerber", 1: "Excellon", 2: "Geometry"}[obj_type]
def on_toggle_reference(self):
val = self.ui.select_combo.get_value()
if val == _("All"):
if val == 0: # ALl
self.ui.reference_combo.hide()
self.ui.reference_combo_label.hide()
self.ui.reference_combo_type.hide()
@ -831,7 +829,7 @@ class ToolIsolation(AppTool, Gerber):
# disable rest-machining for area painting
self.ui.rest_cb.setDisabled(False)
elif val == _("Area Selection"):
elif val == 1: # Area Selection
self.ui.reference_combo.hide()
self.ui.reference_combo_label.hide()
self.ui.reference_combo_type.hide()
@ -843,7 +841,7 @@ class ToolIsolation(AppTool, Gerber):
# disable rest-machining for area isolation
self.ui.rest_cb.set_value(False)
self.ui.rest_cb.setDisabled(True)
elif val == _("Polygon Selection"):
elif val == 2: # Polygon Selection
self.ui.reference_combo.hide()
self.ui.reference_combo_label.hide()
self.ui.reference_combo_type.hide()
@ -851,7 +849,7 @@ class ToolIsolation(AppTool, Gerber):
self.ui.area_shape_label.hide()
self.ui.area_shape_radio.hide()
self.ui.poly_int_cb.show()
else:
else: # Reference Object
self.ui.reference_combo.show()
self.ui.reference_combo_label.show()
self.ui.reference_combo_type.show()
@ -1445,9 +1443,9 @@ class ToolIsolation(AppTool, Gerber):
"""
selection = self.ui.select_combo.get_value()
if selection == _("All"):
if selection == 0: # ALL
self.isolate(isolated_obj=isolated_obj)
elif selection == _("Area Selection"):
elif selection == 1: # Area Selection
self.app.inform.emit('[WARNING_NOTCL] %s' % _("Click the start point of the area."))
if self.app.is_legacy is False:
@ -1466,7 +1464,7 @@ class ToolIsolation(AppTool, Gerber):
# disconnect flags
self.area_sel_disconnect_flag = True
elif selection == _("Polygon Selection"):
elif selection == 2: # Polygon Selection
# disengage the grid snapping since it may be hard to click on polygons with grid snapping on
if self.app.ui.grid_snap_btn.isChecked():
self.grid_status_memory = True
@ -1487,7 +1485,7 @@ class ToolIsolation(AppTool, Gerber):
# disconnect flags
self.poly_sel_disconnect_flag = True
elif selection == _("Reference Object"):
elif selection == 3: # Reference Object
ref_obj = self.app.collection.get_by_name(self.ui.reference_combo.get_value())
ref_geo = unary_union(ref_obj.solid_geometry)
use_geo = unary_union(isolated_obj.solid_geometry).difference(ref_geo)
@ -3388,7 +3386,7 @@ class IsoUI:
"- 'Polygon Selection' -> Isolate a selection of polygons.\n"
"- 'Reference Object' - will process the area specified by another object.")
)
self.select_combo = FCComboBox()
self.select_combo = FCComboBox2()
self.select_combo.addItems(
[_("All"), _("Area Selection"), _("Polygon Selection"), _("Reference Object")]
)
@ -3402,7 +3400,7 @@ class IsoUI:
_("The type of FlatCAM object to be used as non copper clearing reference.\n"
"It can be Gerber, Excellon or Geometry.")
)
self.reference_combo_type = FCComboBox()
self.reference_combo_type = FCComboBox2()
self.reference_combo_type.addItems([_("Gerber"), _("Excellon"), _("Geometry")])
self.grid3.addWidget(self.reference_combo_type_label, 36, 0)

View File

@ -9,7 +9,7 @@ from PyQt5 import QtWidgets, QtCore, QtGui
from appTool import AppTool
from appGUI.GUIElements import FCCheckBox, FCDoubleSpinner, RadioSet, FCTable, FCInputDialog, FCButton,\
FCComboBox, OptionalInputSection, FCLabel, FCInputDialogSpinnerButton
FCComboBox, OptionalInputSection, FCLabel, FCInputDialogSpinnerButton, FCComboBox2
from appParsers.ParseGerber import Gerber
from camlib import grace
@ -815,9 +815,7 @@ class NonCopperClear(AppTool, Gerber):
obj_type = self.ui.reference_combo_type.currentIndex()
self.ui.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
self.ui.reference_combo.setCurrentIndex(0)
self.ui.reference_combo.obj_type = {
_("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry"
}[self.ui.reference_combo_type.get_value()]
self.ui.reference_combo.obj_type = {0: "Gerber", 1: "Excellon", 2: "Geometry"}[obj_type]
def on_order_changed(self, order):
if order != 'no':
@ -1362,7 +1360,7 @@ class NonCopperClear(AppTool, Gerber):
self.o_name = '%s_ncc' % self.obj_name
self.select_method = self.ui.select_combo.get_value()
if self.select_method == _('Itself'):
if self.select_method == 0: # Itself
self.bound_obj_name = self.ui.object_combo.currentText()
# Get source object.
try:
@ -1376,7 +1374,7 @@ class NonCopperClear(AppTool, Gerber):
isotooldia=self.iso_dia_list,
outname=self.o_name,
tools_storage=self.ncc_tools)
elif self.select_method == _("Area Selection"):
elif self.select_method == 1: # Area Selection
self.app.inform.emit('[WARNING_NOTCL] %s' % _("Click the start point of the area."))
if self.app.is_legacy is False:
@ -1395,7 +1393,7 @@ class NonCopperClear(AppTool, Gerber):
# disconnect flags
self.area_sel_disconnect_flag = True
elif self.select_method == _("Reference Object"):
elif self.select_method == 2: # Reference Object
self.bound_obj_name = self.ui.reference_combo.currentText()
# Get source object.
try:
@ -1976,7 +1974,7 @@ class NonCopperClear(AppTool, Gerber):
cp = None
if ncc_method == _("Standard"):
if ncc_method == 0: # standard
try:
cp = self.clear_polygon(pol, tooldia,
steps_per_circle=self.circle_steps,
@ -1987,7 +1985,7 @@ class NonCopperClear(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("NonCopperClear.clear_polygon_worker() Standard --> %s" % str(ee))
elif ncc_method == _("Seed"):
elif ncc_method == 1: # seed
try:
cp = self.clear_polygon2(pol, tooldia,
steps_per_circle=self.circle_steps,
@ -1998,7 +1996,7 @@ class NonCopperClear(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("NonCopperClear.clear_polygon_worker() Seed --> %s" % str(ee))
elif ncc_method == _("Lines"):
elif ncc_method == 2: # Lines
try:
cp = self.clear_polygon3(pol, tooldia,
steps_per_circle=self.circle_steps,
@ -2009,7 +2007,7 @@ class NonCopperClear(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("NonCopperClear.clear_polygon_worker() Lines --> %s" % str(ee))
elif ncc_method == _("Combo"):
elif ncc_method == 3: # Combo
try:
self.app.inform.emit(_("Clearing the polygon with the method: lines."))
cp = self.clear_polygon3(pol, tooldia,
@ -2135,7 +2133,7 @@ class NonCopperClear(AppTool, Gerber):
app_obj.poly_not_cleared = False # flag for polygons not cleared
if ncc_select == _("Reference Object"):
if ncc_select == 2: # Reference Object
bbox_geo, bbox_kind = self.calculate_bounding_box(
ncc_obj=ncc_obj, box_obj=sel_obj, ncc_select=ncc_select)
else:
@ -2263,11 +2261,11 @@ class NonCopperClear(AppTool, Gerber):
# check if there is a geometry at all in the cleared geometry
if cleared_geo:
formatted_tool = self.app.dec_format(tool, self.decimals)
# find the tooluid associated with the current tool_dia so we know where to add the tool
# solid_geometry
for k, v in tools_storage.items():
if float('%.*f' % (self.decimals, v['tooldia'])) == float('%.*f' % (self.decimals,
tool)):
if self.app.dec_format(v['tooldia'], self.decimals) == formatted_tool:
current_uid = int(k)
# add the solid_geometry to the current too in self.paint_tools dictionary
@ -2369,7 +2367,7 @@ class NonCopperClear(AppTool, Gerber):
# repurposed flag for final object, geo_obj. True if it has any solid_geometry, False if not.
app_obj.poly_not_cleared = True
if ncc_select == _("Reference Object"):
if ncc_select == 2: # Reference Object
env_obj, box_obj_kind = self.calculate_bounding_box(
ncc_obj=ncc_obj, box_obj=sel_obj, ncc_select=ncc_select)
else:
@ -2720,7 +2718,7 @@ class NonCopperClear(AppTool, Gerber):
self.app.inform.emit(_("NCC Tool. Preparing non-copper polygons."))
try:
if sel_obj is None or sel_obj == _('Itself'):
if sel_obj is None or sel_obj == 0: # sel_obj == 'itself'
ncc_sel_obj = ncc_obj
else:
ncc_sel_obj = sel_obj
@ -2729,7 +2727,7 @@ class NonCopperClear(AppTool, Gerber):
return 'fail'
bounding_box = None
if ncc_select == _('Itself'):
if ncc_select == 0: # itself
geo_n = ncc_sel_obj.solid_geometry
try:
@ -2748,7 +2746,7 @@ class NonCopperClear(AppTool, Gerber):
self.app.inform.emit('[ERROR_NOTCL] %s' % _("No object available."))
return 'fail'
elif ncc_select == 'area':
elif ncc_select == 1: # area
geo_n = unary_union(self.sel_rect)
try:
__ = iter(geo_n)
@ -2765,7 +2763,7 @@ class NonCopperClear(AppTool, Gerber):
bounding_box = unary_union(geo_buff_list)
elif ncc_select == _("Reference Object"):
elif ncc_select == 2: # Reference Object
geo_n = ncc_sel_obj.solid_geometry
if ncc_sel_obj.kind == 'geometry':
try:
@ -3056,13 +3054,13 @@ class NonCopperClear(AppTool, Gerber):
try:
for pol in p:
if pol is not None and isinstance(pol, Polygon):
if ncc_method == 'standard':
if ncc_method == 0: # standard
cp = self.clear_polygon(pol, tool,
self.circle_steps,
overlap=overlap, contour=contour,
connect=connect,
prog_plot=False)
elif ncc_method == 'seed':
elif ncc_method == 1: # seed
cp = self.clear_polygon2(pol, tool,
self.circle_steps,
overlap=overlap, contour=contour,
@ -3085,11 +3083,11 @@ class NonCopperClear(AppTool, Gerber):
"It is: %s" % str(type(pol)))
except TypeError:
if isinstance(p, Polygon):
if ncc_method == 'standard':
if ncc_method == 0: # standard
cp = self.clear_polygon(p, tool, self.circle_steps,
overlap=overlap, contour=contour, connect=connect,
prog_plot=False)
elif ncc_method == 'seed':
elif ncc_method == 1: # seed
cp = self.clear_polygon2(p, tool, self.circle_steps,
overlap=overlap, contour=contour, connect=connect,
prog_plot=False)
@ -3452,12 +3450,12 @@ class NonCopperClear(AppTool, Gerber):
if isinstance(p, Polygon):
try:
if ncc_method == 'standard':
if ncc_method == 0: # standard
cp = self.clear_polygon(p, tool_used,
self.circle_steps,
overlap=overlap, contour=contour, connect=connect,
prog_plot=False)
elif ncc_method == 'seed':
elif ncc_method == 1: # seed
cp = self.clear_polygon2(p, tool_used,
self.circle_steps,
overlap=overlap, contour=contour, connect=connect,
@ -3481,13 +3479,13 @@ class NonCopperClear(AppTool, Gerber):
QtWidgets.QApplication.processEvents()
try:
if ncc_method == 'standard':
if ncc_method == 0: # 'standard'
cp = self.clear_polygon(poly_p, tool_used,
self.circle_steps,
overlap=overlap, contour=contour,
connect=connect,
prog_plot=False)
elif ncc_method == 'seed':
elif ncc_method == 1: # 'seed'
cp = self.clear_polygon2(poly_p, tool_used,
self.circle_steps,
overlap=overlap, contour=contour,
@ -4138,7 +4136,7 @@ class NccUI:
# {"label": _("Straight lines"), "value": "lines"}
# ], orientation='vertical', stretch=False)
self.ncc_method_combo = FCComboBox()
self.ncc_method_combo = FCComboBox2()
self.ncc_method_combo.addItems(
[_("Standard"), _("Seed"), _("Lines"), _("Combo")]
)
@ -4305,13 +4303,8 @@ class NccUI:
self.rest_ois_ncc_offset = OptionalInputSection(self.rest_ncc_choice_offset_cb, [self.rest_ncc_offset_spinner])
# ## Reference
# self.select_radio = RadioSet([
# {'label': _('Itself'), 'value': 'itself'},
# {"label": _("Area Selection"), "value": "area"},
# {'label': _("Reference Object"), 'value': 'box'}
# ], orientation='vertical', stretch=False)
self.select_combo = FCComboBox()
# Reference Selection Combo
self.select_combo = FCComboBox2()
self.select_combo.addItems(
[_("Itself"), _("Area Selection"), _("Reference Object")]
)
@ -4335,7 +4328,7 @@ class NccUI:
_("The type of FlatCAM object to be used as non copper clearing reference.\n"
"It can be Gerber, Excellon or Geometry.")
)
self.reference_combo_type = FCComboBox()
self.reference_combo_type = FCComboBox2()
self.reference_combo_type.addItems([_("Gerber"), _("Excellon"), _("Geometry")])
form1.addRow(self.reference_combo_type_label, self.reference_combo_type)
@ -4449,7 +4442,7 @@ class NccUI:
def on_toggle_reference(self):
sel_combo = self.select_combo.get_value()
if sel_combo == _("Itself"):
if sel_combo == 0: # itself
self.reference_combo.hide()
self.reference_combo_label.hide()
self.reference_combo_type.hide()
@ -4459,7 +4452,7 @@ class NccUI:
# disable rest-machining for area painting
self.ncc_rest_cb.setDisabled(False)
elif sel_combo == _("Area Selection"):
elif sel_combo == 1: # area selection
self.reference_combo.hide()
self.reference_combo_label.hide()
self.reference_combo_type.hide()

View File

@ -14,7 +14,7 @@ from copy import deepcopy
from appParsers.ParseGerber import Gerber
from camlib import Geometry, FlatCAMRTreeStorage, grace
from appGUI.GUIElements import FCTable, FCDoubleSpinner, FCCheckBox, FCInputDialog, RadioSet, FCButton, FCComboBox, \
FCLabel
FCLabel, FCComboBox2
from shapely.geometry import base, Polygon, MultiPolygon, LinearRing, Point
from shapely.ops import unary_union, linemerge
@ -156,16 +156,14 @@ class ToolPaint(AppTool, Gerber):
self.ui.paintmethod_combo.model().item(idx).setEnabled(True)
else:
self.ui.paintmethod_combo.model().item(idx).setEnabled(False)
if self.ui.paintmethod_combo.get_value() == _("Laser_lines"):
self.ui.paintmethod_combo.set_value(_("Lines"))
if self.ui.paintmethod_combo.get_value() == idx: # if its Laser Lines
self.ui.paintmethod_combo.set_value(idx+1)
def on_reference_combo_changed(self):
obj_type = self.ui.reference_type_combo.currentIndex()
self.ui.reference_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
self.ui.reference_combo.setCurrentIndex(0)
self.ui.reference_combo.obj_type = {
_("Gerber"): "Gerber", _("Excellon"): "Excellon", _("Geometry"): "Geometry"
}[self.ui.reference_type_combo.get_value()]
self.ui.reference_combo.obj_type = {0: "Gerber", 1: "Excellon", 2: "Geometry"}[obj_type]
def connect_signals_at_init(self):
# #############################################################################
@ -542,10 +540,20 @@ class ToolPaint(AppTool, Gerber):
self.ui.on_rest_machining_check(state=self.app.defaults["tools_paint_rest"])
# if the Paint Method is "Single" disable the tool table context menu
if self.default_data["tools_paint_selectmethod"] == "single":
# if the Paint Method is "Polygon Selection" disable the tool table context menu
if self.default_data["tools_paint_selectmethod"] == 1:
self.ui.tools_table.setContextMenuPolicy(Qt.NoContextMenu)
# make sure that we can't get selection of Laser Lines for Geometry even if it's set in the Preferences
# because we don't select the default object type in Preferences but here
idx = self.ui.paintmethod_combo.findText(_("Laser_lines"))
if self.ui.type_obj_radio.get_value().lower() == 'gerber':
self.ui.paintmethod_combo.model().item(idx).setEnabled(True)
else:
self.ui.paintmethod_combo.model().item(idx).setEnabled(False)
if self.ui.paintmethod_combo.get_value() == idx: # if its Laser Lines
self.ui.paintmethod_combo.set_value(idx + 1)
self.ui.tools_table.drag_drop_sig.connect(self.rebuild_ui)
def rebuild_ui(self):
@ -986,7 +994,7 @@ class ToolPaint(AppTool, Gerber):
self.sel_rect = []
obj_type = self.ui.type_obj_radio.get_value
obj_type = self.ui.type_obj_radio.get_value()
self.circle_steps = int(self.app.defaults["gerber_circle_steps"]) if obj_type == 'gerber' else \
int(self.app.defaults["geometry_circle_steps"])
self.obj_name = self.ui.obj_combo.currentText()
@ -1003,9 +1011,9 @@ class ToolPaint(AppTool, Gerber):
self.app.inform.emit('[ERROR_NOTCL] %s: %s' % (_("Object not found"), self.paint_obj))
return
# test if the Geometry Object is multigeo and return Fail if True because
# for now Paint don't work on MultiGeo
if self.paint_obj.kind == 'geometry' and self.paint_obj.multigeo is True:
# test if the Geometry Object is multigeo with more than one tool and return Fail if True because
# for now Paint don't work on MultiGeo with more than one tools
if self.paint_obj.kind == 'geometry' and self.paint_obj.multigeo is True and len(self.paint_obj.tools) > 1:
self.app.inform.emit('[ERROR_NOTCL] %s...' % _("Can't do Paint on MultiGeo geometries"))
return 'Fail'
@ -1032,10 +1040,10 @@ class ToolPaint(AppTool, Gerber):
return
self.select_method = self.ui.selectmethod_combo.get_value()
if self.select_method == _("All"):
if self.select_method == 0: # _("All")
self.paint_poly_all(self.paint_obj, tooldia=self.tooldia_list, outname=self.o_name)
elif self.select_method == _("Polygon Selection"):
elif self.select_method == 1: # _("Polygon Selection")
# disengage the grid snapping since it may be hard to click on polygons with grid snapping on
if self.app.ui.grid_snap_btn.isChecked():
self.grid_status_memory = True
@ -1058,7 +1066,7 @@ class ToolPaint(AppTool, Gerber):
# disconnect flags
self.poly_sel_disconnect_flag = True
elif self.select_method == _("Area Selection"):
elif self.select_method == 2: # _("Area Selection")
self.app.inform.emit('[WARNING_NOTCL] %s' % _("Click the start point of the paint area."))
if self.app.is_legacy is False:
@ -1077,7 +1085,7 @@ class ToolPaint(AppTool, Gerber):
# disconnect flags
self.area_sel_disconnect_flag = True
elif self.select_method == _("Reference Object"):
elif self.select_method == 3: # _("Reference Object")
self.bound_obj_name = self.reference_combo.currentText()
# Get source object.
try:
@ -1453,7 +1461,7 @@ class ToolPaint(AppTool, Gerber):
cpoly = None
if paint_method == _("Standard"):
if paint_method == 0: # _("Standard")
try:
# Type(cp) == FlatCAMRTreeStorage | None
cpoly = self.clear_polygon(polyg,
@ -1467,7 +1475,7 @@ class ToolPaint(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("ToolPaint.paint_polygon_worker() Standard --> %s" % str(ee))
elif paint_method == _("Seed"):
elif paint_method == 1: # _("Seed")
try:
# Type(cp) == FlatCAMRTreeStorage | None
cpoly = self.clear_polygon2(polyg,
@ -1481,7 +1489,7 @@ class ToolPaint(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("ToolPaint.paint_polygon_worker() Seed --> %s" % str(ee))
elif paint_method == _("Lines"):
elif paint_method == 2: # _("Lines")
try:
# Type(cp) == FlatCAMRTreeStorage | None
cpoly = self.clear_polygon3(polyg,
@ -1495,7 +1503,7 @@ class ToolPaint(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("ToolPaint.paint_polygon_worker() Lines --> %s" % str(ee))
elif paint_method == _("Laser_lines"):
elif paint_method == 3: # _("Laser_lines")
try:
# line = None
# aperture_size = None
@ -1544,7 +1552,7 @@ class ToolPaint(AppTool, Gerber):
# process the flashes found in the selected polygon with the 'lines' method for rectangular
# flashes and with _("Seed") for oblong and circular flashes
# and pads (flahes) need the contour therefore I override the GUI settings with always True
# and pads (flashes) need the contour therefore I override the GUI settings with always True
for ap_type in flash_el_dict:
for elem in flash_el_dict[ap_type]:
if 'solid' in elem:
@ -1558,7 +1566,7 @@ class ToolPaint(AppTool, Gerber):
connect=conn,
prog_plot=prog_plot)
pads_lines_list += [p for p in f_o.get_objects() if p]
# this is the same as above but I keep it in case I will modify something in the future
elif ap_type == 'O':
f_o = self.clear_polygon2(elem['solid'],
tooldia=tooldiameter,
@ -1646,7 +1654,7 @@ class ToolPaint(AppTool, Gerber):
return "fail"
except Exception as ee:
log.debug("ToolPaint.paint_polygon_worker() Laser Lines --> %s" % str(ee))
elif paint_method == _("Combo"):
elif paint_method == 4: # _("Combo")
try:
self.app.inform.emit(_("Painting polygon with method: lines."))
cpoly = self.clear_polygon3(polyg,
@ -2666,7 +2674,7 @@ class ToolPaint(AppTool, Gerber):
max_uid = max(tool_uid_list)
tooluid = max_uid + 1
tooldia = float('%.*f' % (self.decimals, tooldia))
tooldia = self.app.dec_format(tooldia, self.decimals)
tool_dias = []
for k, v in self.paint_tools.items():
@ -3001,19 +3009,8 @@ class PaintUI:
"- Combo: In case of failure a new method will be picked from the above\n"
"in the order specified.")
)
# self.paintmethod_combo = RadioSet([
# {"label": _("Standard"), "value": "standard"},
# {"label": _("Seed-based"), "value": _("Seed")},
# {"label": _("Straight lines"), "value": _("Lines")},
# {"label": _("Laser lines"), "value": _("Laser_lines")},
# {"label": _("Combo"), "value": _("Combo")}
# ], orientation='vertical', stretch=False)
# for choice in self.paintmethod_combo.choices:
# if choice['value'] == _("Laser_lines"):
# choice["radio"].setEnabled(False)
self.paintmethod_combo = FCComboBox()
self.paintmethod_combo = FCComboBox2()
self.paintmethod_combo.addItems(
[_("Standard"), _("Seed"), _("Lines"), _("Laser_lines"), _("Combo")]
)
@ -3106,27 +3103,9 @@ class PaintUI:
"- 'Reference Object' - will process the area specified by another object.")
)
# grid3 = QtWidgets.QGridLayout()
# self.selectmethod_combo = RadioSet([
# {"label": _("Polygon Selection"), "value": "single"},
# {"label": _("Area Selection"), "value": "area"},
# {"label": _("All Polygons"), "value": "all"},
# {"label": _("Reference Object"), "value": "ref"}
# ], orientation='vertical', stretch=False)
# self.selectmethod_combo.setObjectName('p_selection')
# self.selectmethod_combo.setToolTip(
# _("How to select Polygons to be painted.\n"
# "- 'Polygon Selection' - left mouse click to add/remove polygons to be painted.\n"
# "- 'Area Selection' - left mouse click to start selection of the area to be painted.\n"
# "Keeping a modifier key pressed (CTRL or SHIFT) will allow to add multiple areas.\n"
# "- 'All Polygons' - the Paint will start after click.\n"
# "- 'Reference Object' - will do non copper clearing within the area\n"
# "specified by another object.")
# )
self.selectmethod_combo = FCComboBox()
self.selectmethod_combo = FCComboBox2()
self.selectmethod_combo.addItems(
[_("Polygon Selection"), _("Area Selection"), _("All"), _("Reference Object")]
[_("All"), _("Polygon Selection"), _("Area Selection"), _("Reference Object")]
)
self.selectmethod_combo.setObjectName('p_selection')
@ -3141,7 +3120,7 @@ class PaintUI:
_("The type of FlatCAM object to be used as paint reference.\n"
"It can be Gerber, Excellon or Geometry.")
)
self.reference_type_combo = FCComboBox()
self.reference_type_combo = FCComboBox2()
self.reference_type_combo.addItems([_("Gerber"), _("Excellon"), _("Geometry")])
form1.addRow(self.reference_type_label, self.reference_type_combo)
@ -3231,7 +3210,7 @@ class PaintUI:
def on_selection(self):
sel_combo = self.selectmethod_combo.get_value()
if sel_combo == _("Reference Object"):
if sel_combo == 3: # _("Reference Object")
self.reference_combo.show()
self.reference_combo_label.show()
self.reference_type_combo.show()
@ -3242,20 +3221,20 @@ class PaintUI:
self.reference_type_combo.hide()
self.reference_type_label.hide()
if sel_combo == _("Polygon Selection"):
if sel_combo == 1: # _("Polygon Selection")
# disable rest-machining for single polygon painting
# self.ui.rest_cb.set_value(False)
# self.ui.rest_cb.setDisabled(True)
pass
if sel_combo == _("Area Selection"):
if sel_combo == 2: # _("Area Selection") index 2 in combobox (FCComboBox2() returns index instead of text)
# disable rest-machining for area painting
# self.ui.rest_cb.set_value(False)
# self.ui.rest_cb.setDisabled(True)
self.area_shape_label.show()
self.area_shape_radio.show()
else:
else: # All = index 0 in combobox
self.new_tooldia_entry.setDisabled(False)
self.add_newtool_button.setDisabled(False)
self.deltool_btn.setDisabled(False)

View File

@ -348,7 +348,7 @@ class FlatCAMDefaults:
"geometry_polish_travelz": 2.0,
"geometry_polish_margin": 0.0,
"geometry_polish_overlap": 5,
"geometry_polish_method": _("Standard"),
"geometry_polish_method": 0,
# Geometry Editor
"geometry_editor_sel_limit": 30,
@ -422,7 +422,7 @@ class FlatCAMDefaults:
"tools_iso_combine_passes": True,
"tools_iso_check_valid": False,
"tools_iso_isoexcept": False,
"tools_iso_selection": _("All"),
"tools_iso_selection": 0,
"tools_iso_poly_ints": False,
"tools_iso_force": True,
"tools_iso_area_shape": "square",
@ -471,13 +471,13 @@ class FlatCAMDefaults:
"tools_ncc_operation": 'clear',
"tools_ncc_overlap": 40,
"tools_ncc_margin": 1.0,
"tools_ncc_method": _("Seed"),
"tools_ncc_method": 1, # SEED
"tools_ncc_connect": True,
"tools_ncc_contour": True,
"tools_ncc_rest": False,
"tools_ncc_offset_choice": False,
"tools_ncc_offset_value": 0.0000,
"tools_ncc_ref": _('Itself'),
"tools_ncc_ref": 0, # ITSELF
"tools_ncc_area_shape": "square",
"tools_ncc_milling_type": 'cl',
"tools_ncc_tool_type": 'C1',
@ -509,8 +509,8 @@ class FlatCAMDefaults:
"tools_paint_order": 'rev',
"tools_paint_overlap": 20,
"tools_paint_offset": 0.0,
"tools_paint_method": _("Seed"),
"tools_paint_selectmethod": _("All"),
"tools_paint_method": 0,
"tools_paint_selectmethod": 0,
"tools_paint_area_shape": "square",
"tools_paint_connect": True,
"tools_paint_contour": True,

Binary file not shown.

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2020-10-28 10:57+0200\n"
"PO-Revision-Date: 2020-10-28 10:57+0200\n"
"PO-Revision-Date: 2020-10-28 21:42+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ro\n"
@ -400,7 +400,7 @@ msgstr ""
"Forma uneltei.\n"
"Poate fi:\n"
"C1 ... C4 = unealtă circulară cu x dinti\n"
"B = instrument de frezare cu vârf formal bila\n"
"B = instrument de frezare cu vârf formal bilă\n"
"V = instrument de frezare în formă V"
#: appDatabase.py:306
@ -623,7 +623,7 @@ msgstr ""
#: appDatabase.py:513
msgid "FR Rapids"
msgstr "Feedrate rapizi"
msgstr "Feedrate Rapid"
#: appDatabase.py:515
msgid ""
@ -633,9 +633,9 @@ msgid ""
"the G0 g-code command. Mostly 3D printers."
msgstr ""
"FR Rapid. Feedrate Rapids. Avans Rapid.\n"
"Viteza folosită în timpul deplasarii pe cât mai repede posibil.\n"
"Acesta este folosit doar de unele dispozitive in care nu poate fi utilizata\n"
"comanda G-cod G0. În mare parte este vorda de imprimante 3D."
"Viteza folosită în timpul deplasării cât mai repede posibil.\n"
"Acesta este folosit doar de unele dispozitive in care nu poate fi utilizată\n"
"comanda G-cod G0. În mare parte este vorba de imprimante 3D."
#: appDatabase.py:534 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:186
msgid "Spindle Speed"
@ -1162,17 +1162,17 @@ msgid ""
"So called 'Plunge' feedrate.\n"
"This is for linear move G01."
msgstr ""
"Viteza uneltei când se face găuriea\n"
"(in unitati pe minut).\n"
"Asa numita viteza unealta tip \"plunge\".\n"
"Aceasta este mișcarea lineara G01."
"Viteza uneltei când se face găurirea\n"
"(in unităti pe minut).\n"
"Asa numita viteză unealtă tip \"plunge\".\n"
"Aceasta este mișcarea lineară G01."
#: appDatabase.py:1028 appGUI/ObjectUI.py:1297
#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:67
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:317
#: appTools/ToolDrilling.py:2227 appTools/ToolMilling.py:1892
msgid "Feedrate Rapids"
msgstr "Feedrate rapizi"
msgstr "Feedrate Rapid"
#: appDatabase.py:1030 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:319
#: appTools/ToolDrilling.py:2229 appTools/ToolMilling.py:1894
@ -1183,10 +1183,10 @@ msgid ""
"It is useful only for Marlin,\n"
"ignore for any other cases."
msgstr ""
"Viteza de găurire, in unitati pe minut.\n"
"Corespunde comenzii G0 și este utila doar pentru\n"
"Viteza de găurire, in unităti pe minut.\n"
"Corespunde comenzii G0 și este utilă doar pentru\n"
"printerul 3D Marlin, implicit când se foloseşte fişierul\n"
"postprocesor: Marlin. Ignora aceasta parametru in rest."
"postprocesor: Marlin. Ignoră acest parametru in rest."
#: appDatabase.py:1051 appGUI/ObjectUI.py:1340
#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:217
@ -1204,8 +1204,8 @@ msgid ""
msgstr ""
"Viteza cu care se roteste motorul ('Spindle').\n"
"In RPM (rotatii pe minut).\n"
"Acest parametru este optional și se poate lasa gol\n"
"daca nu se foloseşte."
"Acest parametru este optional și se poate lăsa gol\n"
"dacă nu se foloseşte."
#: appDatabase.py:1098 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:243
#: appTools/ToolDrilling.py:2304
@ -1228,7 +1228,7 @@ msgstr ""
#: appDatabase.py:1125 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:264
#: appTools/ToolDrilling.py:2328
msgid "Last drill"
msgstr "Ultima gaura"
msgstr "Ultima gaură"
#: appDatabase.py:1127 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:266
#: appTools/ToolDrilling.py:2330
@ -1340,7 +1340,7 @@ msgstr "Distanța dintre găuri atunci când faceți Mouse Bites."
#: appDatabase.py:1253 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:233
#: appTools/ToolCutOut.py:2038
msgid "Convex Shape"
msgstr "Forma convexă"
msgstr "Formă convexă"
#: appDatabase.py:1256 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:235
#: appTools/ToolCutOut.py:2040 appTools/ToolCutOut.py:2045
@ -1349,8 +1349,8 @@ msgid ""
"Used only if the source object type is Gerber."
msgstr ""
"Generează un obiect tip Geometrie care va inconjura\n"
"tot PCB-ul. Forma sa este convexa.\n"
"Se foloseste doar daca obiectul sursă este de tip Gerber."
"tot PCB-ul. Forma sa este convexă.\n"
"Se foloseste doar dacă obiectul sursă este de tip Gerber."
#: appDatabase.py:1264 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:209
#: appTools/ToolCutOut.py:2267
@ -2112,7 +2112,7 @@ msgstr "Orar"
#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:172
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:367
msgid "CCW"
msgstr "Antiorar"
msgstr "AntiOrar"
#: appEditors/AppExcEditor.py:3962 appEditors/AppExcEditor.py:4178
#: appEditors/AppGerberEditor.py:2877
@ -2371,7 +2371,7 @@ msgstr ""
#: appEditors/AppGeoEditor.py:3022 appEditors/AppGeoEditor.py:4400
#: appEditors/AppGerberEditor.py:5781
msgid "Cancelled. No shape selected."
msgstr "Anulat. Nici-o forma geometrică nu este selectată."
msgstr "Anulat. Nici-o formă geometrică nu este selectată."
#: appEditors/AppGeoEditor.py:595 appEditors/AppGeoEditor.py:2984
#: appEditors/AppGeoEditor.py:3012 appEditors/AppGeoEditor.py:3040
@ -2730,7 +2730,7 @@ msgstr ""
"Dacă este bifat, atunci bufferul va înconjura forma tamponată,\n"
"fiecare colț va fi rotunjit.\n"
"Dacă nu este bifat, bufferul va urma geometria exactă\n"
"de forma tamponată."
"a formei tamponată."
#: appEditors/AppGeoEditor.py:930 appEditors/AppGerberEditor.py:5640
#: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:226
@ -3272,7 +3272,7 @@ msgstr ""
#: appEditors/AppGeoEditor.py:4925 appEditors/AppGeoEditor.py:4978
#: appEditors/AppGeoEditor.py:5028
msgid "Nothing selected for buffering."
msgstr "Nici-o forma geometrică nu este selectată pentru a face Bufer."
msgstr "Nici-o formă geometrică nu este selectată pentru a face Bufer."
#: appEditors/AppGeoEditor.py:4930 appEditors/AppGeoEditor.py:4982
#: appEditors/AppGeoEditor.py:5033
@ -3312,7 +3312,7 @@ msgstr ""
#: appEditors/AppGeoEditor.py:5076
msgid "Nothing selected for painting."
msgstr "Nici-o forma geometrică nu este selectată pentru Paint."
msgstr "Nici-o formă geometrică nu este selectată pentru Paint."
#: appEditors/AppGeoEditor.py:5082
msgid "Invalid value for"
@ -5555,7 +5555,7 @@ msgstr "Adaugă Bufer"
#: appGUI/MainGUI.py:1140 appGUI/MainGUI.py:2296
msgid "Paint Shape"
msgstr "Paint o forma"
msgstr "Pictează o formă"
#: appGUI/MainGUI.py:1148 appGUI/MainGUI.py:2304
msgid "Polygon Explode"
@ -5686,7 +5686,7 @@ msgstr "CNCJob"
#: appGUI/MainGUI.py:1465 appGUI/ObjectUI.py:353 appGUI/ObjectUI.py:717
#: appGUI/ObjectUI.py:1785
msgid "TOOLS"
msgstr "Unelte"
msgstr "UNELTE"
#: appGUI/MainGUI.py:1474
msgid "TOOLS 2"
@ -5863,9 +5863,9 @@ msgid ""
"out of the first item. In the end press ~X~ key or\n"
"the toolbar button."
msgstr ""
"Mai intai selectează o forma geometrică care trebuie tăiată\n"
"Mai intai selectează o formă geometrică care trebuie tăiată\n"
"apoi selectează forma geo. tăietoare. La final apasă tasta ~X~ sau\n"
"butonul corespunzator din Toolbar."
"butonul corespunzător din Toolbar."
#: appGUI/MainGUI.py:2924 appGUI/MainGUI.py:3088 appGUI/MainGUI.py:3135
#: appGUI/MainGUI.py:3157
@ -5878,7 +5878,7 @@ msgid ""
"on which to perform Intersection Tool."
msgstr ""
"Selectează forma geometrică asupra căreia să se\n"
"aplice Unealta Intersecţie."
"aplice Unealta de Intersecţie."
#: appGUI/MainGUI.py:3130
msgid ""
@ -5886,7 +5886,7 @@ msgid ""
"on which to perform Substraction Tool."
msgstr ""
"Selectează forma geometrică asupra căreia să se\n"
"aplice Unealta Substracţie."
"aplice Unealta de Substracţie."
#: appGUI/MainGUI.py:3152
msgid ""
@ -5894,7 +5894,7 @@ msgid ""
"on which to perform union."
msgstr ""
"Selectează forma geometrică asupra căreia să se\n"
"aplice Unealta Uniune."
"aplice Unealta de Uniune."
#: appGUI/MainGUI.py:3237 appGUI/MainGUI.py:3452
msgid "Cancelled. Nothing selected to delete."
@ -6732,7 +6732,7 @@ msgid ""
"Square shape."
msgstr ""
"Generează un obiect tip Geometrie care va inconjura\n"
"obiectul Gerber. Forma patratica (rectangulara)."
"obiectul Gerber. Formă pătratică (rectangulară)."
#: appGUI/ObjectUI.py:488 appGUI/preferences/gerber/GerberOptPrefGroupUI.py:81
msgid ""
@ -6749,7 +6749,7 @@ msgid ""
"their radius is equal to\n"
"the margin."
msgstr ""
"Daca forma înconjurătoare să aibă colțuri rotunjite.\n"
"Dacă forma înconjurătoare să aibă colțuri rotunjite.\n"
"Raza acesor colțuri va fi egală cu parametrul Margine."
#: appGUI/ObjectUI.py:510
@ -6778,9 +6778,9 @@ msgid ""
"Here the tools are selected for G-code generation."
msgstr ""
"Acesta este numărul uneltei.\n"
"Când se foloseşte optiunea de pauza pt schimb unealtă,\n"
"la evenim. de schimb unealtă, va aparea sub forma T1, T2, etc\n"
"in codul masina CNC.\n"
"Când se foloseşte optiunea de pauză pt schimb unealtă,\n"
"la evenim. de schimb unealtă, va apărea sub forma T1, T2, etc\n"
"in codul masină CNC.\n"
"Aici se selectează uneltele pt generarea de G-Code."
#: appGUI/ObjectUI.py:676 appGUI/ObjectUI.py:1012 appTools/ToolDrilling.py:2072
@ -6949,9 +6949,9 @@ msgid ""
"will be showed as a T1, T2 ... Tn"
msgstr ""
"Acesta este numărul uneltei.\n"
"Când se foloseşte optiunea de pauza pt schimb unealtă,\n"
"Când se foloseşte optiunea de pauză pt schimb unealtă,\n"
"la evenim. de schimb unealtă, va aparea sub forma T1, T2, etc\n"
"in codul masina CNC"
"in codul masină CNC"
#: appGUI/ObjectUI.py:1017
msgid ""
@ -7019,7 +7019,7 @@ msgstr ""
"afisati in UI, cat și din\n"
"lăţimea de tăiere in material care este de fapt valoarea diametrului "
"uneltei.\n"
"Alegerea tipului V-Shape (forma in V) va selecta automat Tipul de Operaţie "
"Alegerea tipului V-Shape (formă in V) va selecta automat Tipul de Operaţie "
"ca Izolare."
#: appGUI/ObjectUI.py:1045
@ -7149,7 +7149,7 @@ msgstr "V-dia"
msgid "The tip diameter for V-Shape Tool"
msgstr ""
"Diametrul la vârf al uneltei tip V-Shape.\n"
"Forma in V"
"Formă in V"
#: appGUI/ObjectUI.py:1186 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:101
#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:84
@ -7215,8 +7215,8 @@ msgid ""
"It is called also Plunge."
msgstr ""
"Viteza de tăiere in planul Z\n"
"in unitati pe minut.\n"
"Mai este numita și viteza de plonjare."
"in unităti pe minut.\n"
"Mai este numită și viteza de plonjare."
#: appGUI/ObjectUI.py:1299
#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:69
@ -7227,10 +7227,10 @@ msgid ""
"It is useful only for Marlin,\n"
"ignore for any other cases."
msgstr ""
"Viteza de tăiere in planul X-Y, in unitati pe minut,\n"
"in legatura cu comanda G00.\n"
"Este utila doar când se foloseşte cu un printer 3D Marlin,\n"
"pentru toate celelalte cazuri ignora acest parametru."
"Viteza de tăiere in planul X-Y, in unităti pe minut,\n"
"in legatură cu comanda G00.\n"
"Este utilă doar când se foloseşte cu un printer 3D Marlin,\n"
"pentru toate celelalte cazuri ignoră acest parametru."
#: appGUI/ObjectUI.py:1317
#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:85
@ -7261,8 +7261,8 @@ msgid ""
"this value is the power of laser."
msgstr ""
"Viteza motorului in RPM (optional).\n"
"Daca postprocesorul Laser este folosit,\n"
"valoarea să este puterea laserului."
"Dacă postprocesorul Laser este folosit,\n"
"valoarea sa este puterea laserului."
#: appGUI/ObjectUI.py:1359
#: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:235
@ -7288,7 +7288,7 @@ msgstr "Timpul (ori secunde ori milisec) cat se stă in pauză."
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:333
#: appTools/ToolDrilling.py:2461 appTools/ToolMilling.py:2129
msgid "Probe Z depth"
msgstr "Z sonda"
msgstr "Z sondă"
#: appGUI/ObjectUI.py:1379 appGUI/ObjectUI.py:2167
#: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:133
@ -7315,7 +7315,7 @@ msgstr "Feedrate sonda"
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:348
#: appTools/ToolDrilling.py:2482 appTools/ToolMilling.py:2150
msgid "The feedrate used while the probe is probing."
msgstr "Viteza sondei când aceasta coboara."
msgstr "Viteza sondei când aceasta coboară."
#: appGUI/ObjectUI.py:1423 appTools/ToolDrilling.py:2364
#: appTools/ToolIsolation.py:3280 appTools/ToolMilling.py:2042
@ -7550,7 +7550,7 @@ msgstr "Adăugați o zonă de excludere."
#: appTools/ToolMilling.py:2267 appTools/ToolNCC.py:4359
#: appTools/ToolPaint.py:3165
msgid "The kind of selection shape used for area selection."
msgstr "Selectează forma de selectie folosita pentru selectia zonală."
msgstr "Selectează forma de selectie folosită pentru selectia zonală."
#: appGUI/ObjectUI.py:1616
#: appGUI/preferences/utilities/AutoCompletePrefGroupUI.py:32
@ -7742,7 +7742,7 @@ msgstr ""
"- 'Tipul' -> este doar informativ și poate fi: Grosier, Finisaj, Izolaţie\n"
"- 'Tipul uneltei' -> poate fi circular cu 1 ... 4 dinti, tip bila sau V-"
"Shape\n"
"(cu forma in V)."
"(cu formă in V)."
#: appGUI/ObjectUI.py:2055
msgid "Update Plot"
@ -8594,7 +8594,7 @@ msgid ""
"Advanced App. Level."
msgstr ""
"O lista de parametri Excellon avansati.\n"
"Acesti parametri sunt disponibili doar\n"
"Acești parametri sunt disponibili doar\n"
"când este selectat Nivelul Avansat pentru\n"
"aplicaţie in Preferințe - > General."
@ -8706,8 +8706,8 @@ msgid ""
"The parameters set here are used in the file exported\n"
"when using the File -> Export -> Export Excellon menu entry."
msgstr ""
"Acesti parametri listati aici sunt folositi atunci când\n"
"se exporta un fişier Excellon folosind:\n"
"Acești parametri listați aici sunt folosiți atunci când\n"
"se exporta un fişier Excellon:\n"
"File -> Exporta -> Exporta Excellon."
#: appGUI/preferences/excellon/ExcellonExpPrefGroupUI.py:41
@ -8794,7 +8794,7 @@ msgid ""
"Also it will have to be specified if LZ = leading zeros are kept\n"
"or TZ = trailing zeros are kept."
msgstr ""
"Selectati tipul formatului de coordonate folosit.\n"
"Selectați tipul formatului de coordonate folosit.\n"
"Coordonatele se pot salva cu punct zecimal sau fără.\n"
"Când nu se foloseşte punctul zecimal ca separator între\n"
"partea intreaga și partea zecimala, este necesar să se\n"
@ -9512,7 +9512,7 @@ msgstr ""
#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:440
msgid "Activity Icon"
msgstr "Icon activitare"
msgstr "Icon Activitate"
#: appGUI/preferences/general/GeneralAPPSetGroupUI.py:442
msgid "Select the GIF that show activity when FlatCAM is active."
@ -9745,11 +9745,11 @@ msgid ""
"After change, it will be applied at next App start."
msgstr ""
"Număarul de QThread-uri care sunt disponibile pt aplicatie.\n"
"Un număr mai mare va permite terminarea operatiilor mai rapida\n"
"Un număr mai mare va permite terminarea operatiilor mai rapidă\n"
"dar in functie de cat de rapid este calculatorul, poate face ca aplicatia\n"
"sa devina temporar blocată. Poate lua o valoare intre 2 si 16.\n"
"Valoarea standard este 2.\n"
"Dupa schimbarea valoarii, se va aplica la următoarea pornire a aplicatiei."
"Dupa schimbarea valorii, se va aplica la următoarea pornire a aplicatiei."
#: appGUI/preferences/general/GeneralAppPrefGroupUI.py:230
msgid "Geo Tolerance"
@ -10103,7 +10103,7 @@ msgid ""
"Advanced App. Level."
msgstr ""
"O lista de parametri Geometrie avansati.\n"
"Acesti parametri sunt disponibili doar\n"
"Acești parametri sunt disponibili doar\n"
"când este selectat Nivelul Avansat pentru\n"
"aplicaţie in Preferințe - > General."
@ -10136,7 +10136,7 @@ msgstr ""
#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:137
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:358
msgid "Spindle direction"
msgstr "Directie rotatie Motor"
msgstr "Direcție Motor"
#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:139
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:360
@ -10166,13 +10166,13 @@ msgid ""
msgstr ""
"Prin bifarea de aici, mișcarea de la Înălţimea unde se face schimbarea "
"uneltei\n"
"pana la Înălţimea unde se face deplasarea între taieri, se va face cu "
"pană la Înălţimea unde se face deplasarea între taieri, se va face cu "
"comanda G0.\n"
"Aceasta inseamna că se va folosi viteza maxima disponibila.\n"
"Aceasta inseamnă că se va folosi viteza maximă disponibilă.\n"
"\n"
"ATENTIE: mișcarea aceasta pe verticala se face la coordonatele X, Y unde se "
"schimba\n"
"unealta. Daca aveti ceva plasat sub unealtă ceva se va strica."
"ATENTIE: mișcarea aceasta pe verticală se face la coordonatele X, Y unde se "
"schimbă\n"
"unealta. Dacă aveti ceva plasat sub unealtă ceva se va strica."
#: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:161
msgid "Segment X size"
@ -10367,13 +10367,13 @@ msgid ""
"Advanced App. Level."
msgstr ""
"O lista de parametri Gerber avansati.\n"
"Acesti parametri sunt disponibili doar\n"
"Acești parametri sunt disponibili doar\n"
"când este selectat Nivelul Avansat pentru\n"
"aplicaţie in Preferințe - > General."
#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:43
msgid "\"Follow\""
msgstr "\"Urmareste\""
msgstr "\"Urmăreste\""
#: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:64
#: appObjects/FlatCAMGerber.py:370 appTools/ToolCopperThieving.py:578
@ -10474,14 +10474,14 @@ msgstr "Dim. pentru noua apertură"
#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:82
msgid "New Aperture type"
msgstr "Tip pt noua apaertura"
msgstr "Tip nou Apertura"
#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:84
msgid ""
"Type for the new aperture.\n"
"Can be 'C', 'R' or 'O'."
msgstr ""
"Tipul noii aperture.\n"
"Tipul noii aperturi.\n"
"Poate fi „C”, „R” sau „O”."
#: appGUI/preferences/gerber/GerberEditorPrefGroupUI.py:106
@ -10533,7 +10533,7 @@ msgid ""
"The parameters set here are used in the file exported\n"
"when using the File -> Export -> Export Gerber menu entry."
msgstr ""
"Acesti parametri listati aici sunt folositi atunci când\n"
"Acești parametri listați aici sunt folositi atunci când\n"
"se exporta un fişier Gerber folosind:\n"
"File -> Exportă -> Exportă Gerber."
@ -10670,7 +10670,7 @@ msgstr "Opțiuni Gerber"
#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:61
#: appGUI/preferences/gerber/GerberOptPrefGroupUI.py:92
msgid "Rounded Geo"
msgstr "Geo rotunjita"
msgstr "Geo rotunjită"
#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:27
msgid "Copper Thieving Tool Options"
@ -10787,7 +10787,7 @@ msgid ""
"- 'Minimal' - the bounding box will be the convex hull shape."
msgstr ""
"- „Dreptunghiular” - caseta de delimitare va avea o formă dreptunghiulară.\n"
"- „Minimal” - caseta de delimitare va fi forma arie convexă."
"- „Minimal” - caseta de delimitare va fi in formă de suprafată convexă."
#: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:120
#: appTools/ToolCopperThieving.py:1287
@ -11804,12 +11804,12 @@ msgstr "Axe oglindire:"
#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:86
#: appTools/ToolDblSided.py:695
msgid "Box"
msgstr "Forma"
msgstr "Cutie"
#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:87
#: appTools/ToolDblSided.py:696
msgid "Hole Snap"
msgstr "Gaură de referinta"
msgstr "Gaură Ref."
#: appGUI/preferences/tools/Tools2sidedPrefGroupUI.py:90
msgid "Axis Ref"
@ -12162,7 +12162,7 @@ msgstr ""
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:380
msgid "Fast Retract"
msgstr "Retragere rapida"
msgstr "Retragere Rapidă"
#: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:382
msgid ""
@ -12176,12 +12176,12 @@ msgstr ""
"Strategia de evacuare a găurii tocmai găurite.\n"
"- când nu este bifat, burghiul va ieși din gaura cu viteza feedrate "
"setată, \n"
"G1, pana ajunge la nivelul zero, ulterior ridicându-se pana la Înălţimea de "
"G1, pană ajunge la nivelul zero, ulterior ridicându-se pana la Înălţimea de "
"deplasare\n"
"cu viteza maxima G0\n"
"- când este bifat, burghiul se va deplasa de la adâncimea de tăiere pana la "
"cu viteza maximă G0\n"
"- când este bifat, burghiul se va deplasa de la adâncimea de tăiere pană la "
"adâncimea\n"
"de deplasare cu viteza maxima G0, intr-o singură mișcare."
"de deplasare cu viteza maximă G0, intr-o singură mișcare."
#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:27
msgid "Film Tool Options"
@ -12241,8 +12241,8 @@ msgid ""
msgstr ""
"Specifică o bordură de jur imprejurul obiectului.\n"
"Doar pt filmele negative.\n"
"Ajută dacă folosim in Obiect Forma aceluiasi obiect ca in Obiect Film.\n"
"Va crea o bara solidă neagră in jurul printului efectiv permitand o\n"
"Ajută dacă folosim in Obiect Formă aceluiasi obiect ca in Obiect Film.\n"
"Va crea o bară solidă neagră in jurul printului efectiv permitand o\n"
"delimitare exactă."
#: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:90
@ -12272,7 +12272,7 @@ msgid ""
"types.\n"
"This section provide the tools to compensate for the print distortions."
msgstr ""
"Unori imprimantele vor denatura forma de imprimare, în special tipurile "
"Uneori imprimantele vor denatura forma de imprimare, în special tipurile "
"Laser.\n"
"Această secțiune oferă instrumentele pentru a compensa distorsiunile de "
"tipărire."
@ -12427,14 +12427,14 @@ msgid ""
"- Circular"
msgstr ""
"Tipul de unealtă default:\n"
"- 'Forma-V'\n"
"- 'Formă-V'\n"
"- Circular"
#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:77
#: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:60
#: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:67
msgid "V-shape"
msgstr "Forma-V"
msgstr "Formă-V"
#: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:103
msgid ""
@ -12974,7 +12974,7 @@ msgid ""
"Feedrate (speed) while moving vertically\n"
"(on Z plane)."
msgstr ""
"Viteza de deplasare a uneltei când se misca in plan vertical (planul Z)."
"Viteza de deplasare a uneltei când se miscă in plan vertical (planul Z)."
#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:175
#: appTools/ToolSolderPaste.py:1350
@ -12986,7 +12986,7 @@ msgid ""
"Feedrate (speed) while moving up vertically\n"
"to Dispense position (on Z plane)."
msgstr ""
"Viteza de deplasare la mișcarea pe verticala spre\n"
"Viteza de deplasare la mișcarea pe vertical spre\n"
"poziţia de dispensare (in planul Z)."
#: appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py:188
@ -15082,8 +15082,8 @@ msgid ""
"Useful when the PCB has a non-rectangular shape."
msgstr ""
"Decupează obiectul selectat.\n"
"Forma decupajului poate avea orice forma.\n"
"Folositor când PCB-ul are o forma neregulata."
"Decupajul poate avea orice formă.\n"
"Folositor când PCB-ul are o formă neregulată."
#: appTools/ToolCutOut.py:2309
msgid ""
@ -15093,7 +15093,7 @@ msgid ""
"the bounding box of the Object."
msgstr ""
"Decupează obiectul selectat.\n"
"Forma decupajului este tot timpul dreptunghiulara.."
"Forma decupajului este tot timpul dreptunghiulară."
#: appTools/ToolCutOut.py:2330
msgid ""
@ -15119,7 +15119,7 @@ msgid ""
"Select the source Gerber file in the top object combobox."
msgstr ""
"Daca obiectul care se decupează este un obiect Gerber,\n"
"atunci mai intai crează un obiect Geometrie care il inconjoara\n"
"atunci mai intai crează un obiect Geometrie care il inconjoară\n"
"urmărindu-i forma.\n"
"Selectează obiectul sursa Gerber in combobox-ul de mai sus,\n"
"numit >Obiect<."
@ -15240,7 +15240,7 @@ msgid ""
"Select on canvas the object(s)\n"
"for which to calculate bounds values."
msgstr ""
"Selectati pe suprafata de afisare obiectul(e)\n"
"Selectați pe suprafata de afisare obiectul(e)\n"
"pentru care se calculează valorile limitelor."
#: appTools/ToolDblSided.py:569
@ -17291,14 +17291,14 @@ msgid ""
msgstr ""
"Alege referinta pt panelizare:\n"
"- Obiect = forma inconjurătoare a unui alt obiect\n"
"- Forma inconjurătoare = forma inconjurătoare a obiectului care tb "
"- Forma inconjurătoare = forma inconjurătoare a obiectului care trebuie "
"panelizat\n"
"\n"
"Referinta este utila cand se face panelizarea pt mai mult de un obiect. "
"Referinta este utilă cand se face panelizarea pt mai mult de un obiect. "
"Spatierile\n"
"(mai degraba ofsetări) vor fi aplicate avand ca referintă acest obiect de "
"(mai degrabă ofsetări) vor fi aplicate avand ca referintă acest obiect de "
"referintă,\n"
"prin urmare mentinand obiectele paenlizate in sincronizare unul cu altul."
"prin urmare mentinand obiectele panelizate in sincronizare unul cu altul."
#: appTools/ToolPanelize.py:722
msgid "Box Type"
@ -18103,7 +18103,7 @@ msgid ""
"Feedrate (speed) while moving up vertically\n"
" to Dispense position (on Z plane)."
msgstr ""
"Viteza de deplasare la mișcarea pe verticala spre\n"
"Viteza de deplasare la mișcarea pe verticală spre\n"
"poziţia de dispensare (in planul Z)."
#: appTools/ToolSolderPaste.py:1422
@ -19136,7 +19136,7 @@ msgstr "Numele a fost copiat pe Clipboard ..."
#: app_Main.py:6939 app_Main.py:6943
msgid "Select an Gerber or Excellon file to view it's source file."
msgstr "Selectati un obiect Gerber sau Excellon pentru a-i vedea codul sursa."
msgstr "Selectați un obiect Gerber sau Excellon pentru a-i vedea codul sursa."
#: app_Main.py:6946
msgid "Viewing the source code of the selected object."

View File

@ -123,20 +123,14 @@ class TclCommandCopperClear(TclCommand):
if 'method' in args:
method = args['method']
if method == "standard":
method_data = _("Standard")
method_data = 0
elif method == "seed":
method_data = _("Seed")
method_data = 1
else:
method_data = _("Lines")
method_data = 2
else:
method = str(self.app.defaults["tools_ncc_method"])
method_data = method
if method == _("Standard"):
method = "standard"
elif method == _("Seed"):
method = "seed"
else:
method = "lines"
if 'connect' in args:
try:
@ -187,9 +181,9 @@ class TclCommandCopperClear(TclCommand):
# used only to have correct information's in the obj.tools[tool]['data'] dict
if "all" in args:
select = _("Itself")
select = 0 # 'ITSELF
else:
select = _("Reference Object")
select = 2 # 'REFERENCE Object'
# store here the default data for Geometry Data
default_data = {}
@ -258,7 +252,7 @@ class TclCommandCopperClear(TclCommand):
# Non-Copper clear all polygons in the non-copper clear object
if 'all' in args:
self.app.ncclear_tool.clear_copper_tcl(ncc_obj=obj,
select_method='itself',
select_method=0, # ITSELF
ncctooldia=tooldia,
overlap=overlap,
order=order,
@ -276,7 +270,7 @@ class TclCommandCopperClear(TclCommand):
return
# Non-Copper clear all polygons found within the box object from the the non_copper cleared object
if 'box' in args:
if 'box' in args: # Reference Object
box_name = args['box']
# Get box source object.
@ -289,7 +283,7 @@ class TclCommandCopperClear(TclCommand):
self.app.ncclear_tool.clear_copper_tcl(ncc_obj=obj,
sel_obj=box_obj,
select_method='box',
select_method=2, # REFERENCE OBJECT
ncctooldia=tooldia,
overlap=overlap,
order=order,