Fix some things that I broke and further cleanup

This commit is contained in:
David Robertson 2020-04-29 02:46:52 +01:00
parent 72c2dd5f26
commit a05c174ec8
41 changed files with 314 additions and 308 deletions

View File

@ -543,7 +543,8 @@ class App(QtCore.QObject):
# ##################################### UPDATE PREFERENCES GUI FORMS ########################################
# ###########################################################################################################
self.preferencesUiManager = PreferencesUIManager(defaults=self.defaults, data_path=self.data_path, ui=self.ui, inform=self.inform)
self.preferencesUiManager = PreferencesUIManager(defaults=self.defaults, data_path=self.data_path, ui=self.ui,
inform=self.inform, app=self)
self.preferencesUiManager.defaults_write_form()
# When the self.defaults dictionary changes will update the Preferences GUI forms
@ -2137,7 +2138,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("object2editor()")
self.defaults.report_usage("object2editor()")
# disable the objects menu as it may interfere with the Editors
self.ui.menuobjects.setDisabled(True)
@ -2231,7 +2232,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("editor2object()")
self.defaults.report_usage("editor2object()")
# re-enable the objects menu that was disabled on entry in Editor mode
self.ui.menuobjects.setDisabled(False)
@ -2409,19 +2410,6 @@ class App(QtCore.QObject):
loc = os.path.dirname(__file__)
return loc
def report_usage(self, resource):
"""
Increments usage counter for the given resource
in self.defaults['global_stats'].
:param resource: Name of the resource.
:return: None
"""
if resource in self.defaults['global_stats']:
self.defaults['global_stats'][resource] += 1
else:
self.defaults['global_stats'][resource] = 1
def info(self, msg):
"""
@ -2530,7 +2518,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_import_preferences")
self.defaults.report_usage("on_import_preferences")
App.log.debug("App.on_import_preferences()")
# Show file chooser
@ -2550,7 +2538,7 @@ class App(QtCore.QObject):
# Load in the defaults from the chosen file
self.defaults.load(filename=filename)
self.on_preferences_edited()
self.preferencesUiManager.on_preferences_edited()
self.inform.emit('[success] %s: %s' % (_("Imported Defaults from"), filename))
def on_export_preferences(self):
@ -2559,7 +2547,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_export_preferences")
self.defaults.report_usage("on_export_preferences")
App.log.debug("on_export_preferences()")
defaults_file_content = None
@ -2604,7 +2592,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("save_to_file")
self.defaults.report_usage("save_to_file")
App.log.debug("save_to_file()")
self.date = str(datetime.today()).rpartition('.')[0]
@ -2902,7 +2890,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("new_excellon_object()")
self.defaults.report_usage("new_excellon_object()")
self.new_object('excellon', 'new_exc', lambda x, y: None, plot=False)
@ -2912,7 +2900,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("new_geometry_object()")
self.defaults.report_usage("new_geometry_object()")
def initialize(obj, app):
obj.multitool = False
@ -2925,7 +2913,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("new_gerber_object()")
self.defaults.report_usage("new_gerber_object()")
def initialize(grb_obj, app):
grb_obj.multitool = False
@ -2952,7 +2940,7 @@ class App(QtCore.QObject):
:param text: pass a source file to the newly created script to be loaded in it
:return: None
"""
self.report_usage("new_script_object()")
self.defaults.report_usage("new_script_object()")
if text is not None:
new_source_file = text
@ -2991,7 +2979,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("new_document_object()")
self.defaults.report_usage("new_document_object()")
def initialize(obj, app):
obj.source_file = ""
@ -3117,7 +3105,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_about")
self.defaults.report_usage("on_about")
version = self.version
version_date = self.version_date
@ -3521,46 +3509,6 @@ class App(QtCore.QObject):
"""
self.preferencesUiManager.save_defaults()
def save_toolbar_view(self):
"""
Will save the toolbar view state to the defaults
:return: None
"""
# Save the toolbar view
tb_status = 0
if self.ui.toolbarfile.isVisible():
tb_status += 1
if self.ui.toolbargeo.isVisible():
tb_status += 2
if self.ui.toolbarview.isVisible():
tb_status += 4
if self.ui.toolbartools.isVisible():
tb_status += 8
if self.ui.exc_edit_toolbar.isVisible():
tb_status += 16
if self.ui.geo_edit_toolbar.isVisible():
tb_status += 32
if self.ui.grb_edit_toolbar.isVisible():
tb_status += 64
if self.ui.snap_toolbar.isVisible():
tb_status += 128
if self.ui.toolbarshell.isVisible():
tb_status += 256
self.defaults["global_toolbar_view"] = tb_status
def final_save(self):
"""
Callback for doing a preferences save to file whenever the application is about to quit.
@ -4053,7 +4001,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_edit_join()")
self.defaults.report_usage("on_edit_join()")
obj_name_single = str(name) if name else "Combo_SingleGeo"
obj_name_multi = str(name) if name else "Combo_MultiGeo"
@ -4112,7 +4060,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_edit_join_exc()")
self.defaults.report_usage("on_edit_join_exc()")
objs = self.collection.get_selected()
@ -4127,7 +4075,7 @@ class App(QtCore.QObject):
return 'fail'
def initialize(exc_obj, app):
ExcellonObject.merge(self, exc_list=objs, exc_final=exc_obj)
ExcellonObject.merge(exc_list=objs, exc_final=exc_obj)
app.inform.emit('[success] %s.' % _("Excellon merging finished"))
self.new_object("excellon", 'Combo_Excellon', initialize)
@ -4140,7 +4088,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_edit_join_grb()")
self.defaults.report_usage("on_edit_join_grb()")
objs = self.collection.get_selected()
@ -4171,7 +4119,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_convert_singlegeo_to_multigeo()")
self.defaults.report_usage("on_convert_singlegeo_to_multigeo()")
obj = self.collection.get_active()
@ -4205,7 +4153,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_convert_multigeo_to_singlegeo()")
self.defaults.report_usage("on_convert_multigeo_to_singlegeo()")
obj = self.collection.get_active()
@ -4241,7 +4189,7 @@ class App(QtCore.QObject):
:param field: the key of the self.defaults dictionary that was changed.
:return: None
"""
self.preferencesUiManager.defaults_write_form(field)
self.preferencesUiManager.defaults_write_form_field(field=field)
if field == "units":
self.set_screen_units(self.defaults['units'])
@ -4281,7 +4229,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_toggle_units")
self.defaults.report_usage("on_toggle_units")
if self.toggle_units_ignore:
return
@ -4538,7 +4486,7 @@ class App(QtCore.QObject):
self.ui.grid_gap_y_entry.set_value(val_y, decimals=self.decimals)
def on_fullscreen(self, disable=False):
self.report_usage("on_fullscreen()")
self.defaults.report_usage("on_fullscreen()")
flags = self.ui.windowFlags()
if self.toggle_fscreen is False and disable is False:
@ -4579,7 +4527,7 @@ class App(QtCore.QObject):
self.toggle_fscreen = False
def on_toggle_plotarea(self):
self.report_usage("on_toggle_plotarea()")
self.defaults.report_usage("on_toggle_plotarea()")
try:
name = self.ui.plot_tab_area.widget(0).objectName()
@ -4605,7 +4553,7 @@ class App(QtCore.QObject):
self.ui.menu_toggle_nb.setChecked(False)
def on_toggle_axis(self):
self.report_usage("on_toggle_axis()")
self.defaults.report_usage("on_toggle_axis()")
if self.toggle_axis is False:
if self.is_legacy is False:
@ -4635,13 +4583,13 @@ class App(QtCore.QObject):
self.toggle_axis = False
def on_toggle_grid(self):
self.report_usage("on_toggle_grid()")
self.defaults.report_usage("on_toggle_grid()")
self.ui.grid_snap_btn.trigger()
self.on_grid_snap_triggered(state=True)
def on_toggle_grid_lines(self):
self.report_usage("on_toggle_grd_lines()")
self.defaults.report_usage("on_toggle_grd_lines()")
tt_settings = QtCore.QSettings("Open Source", "FlatCAM")
if tt_settings.contains("theme"):
@ -4839,7 +4787,7 @@ class App(QtCore.QObject):
# if new color is different then mark that the Preferences are changed
if film_color != current_color:
self.on_preferences_edited()
self.preferencesUiManager.on_preferences_edited()
self.ui.tools_defaults_form.tools_film_group.film_color_button.setStyleSheet(
"background-color:%s;"
@ -4868,7 +4816,7 @@ class App(QtCore.QObject):
# if new color is different then mark that the Preferences are changed
if fill_color != current_color:
self.on_preferences_edited()
self.preferencesUiManager.on_preferences_edited()
self.ui.tools2_defaults_form.tools2_qrcode_group.fill_color_button.setStyleSheet(
"background-color:%s;"
@ -4898,7 +4846,7 @@ class App(QtCore.QObject):
# if new color is different then mark that the Preferences are changed
if back_color != current_color:
self.on_preferences_edited()
self.preferencesUiManager.on_preferences_edited()
self.ui.tools2_defaults_form.tools2_qrcode_group.back_color_button.setStyleSheet(
"background-color:%s;"
@ -5077,7 +5025,7 @@ class App(QtCore.QObject):
:param force_deletion: used by Tcl command
:return: None
"""
self.report_usage("on_delete()")
self.defaults.report_usage("on_delete()")
response = None
bt_ok = None
@ -5175,7 +5123,7 @@ class App(QtCore.QObject):
# display the message for the user
# and ask him to click on the desired position
self.report_usage("on_set_origin()")
self.defaults.report_usage("on_set_origin()")
def origin_replot():
@ -5345,7 +5293,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_jump_to()")
self.defaults.report_usage("on_jump_to()")
if not custom_location:
dia_box_location = None
@ -5466,7 +5414,7 @@ class App(QtCore.QObject):
:return: A point location. (x, y) tuple.
"""
self.report_usage("on_locate()")
self.defaults.report_usage("on_locate()")
if obj is None:
self.inform.emit('[WARNING_NOTCL] %s' % _("No object selected."))
@ -5611,7 +5559,7 @@ class App(QtCore.QObject):
Will copy a selection of objects, creating new objects.
:return:
"""
self.report_usage("on_copy_command()")
self.defaults.report_usage("on_copy_command()")
def initialize(obj_init, app):
obj_init.solid_geometry = deepcopy(obj.solid_geometry)
@ -5724,7 +5672,7 @@ class App(QtCore.QObject):
:param text: New name for the object.
:return:
"""
self.report_usage("on_rename_object()")
self.defaults.report_usage("on_rename_object()")
named_obj = self.collection.get_active()
for obj in named_obj:
@ -5741,7 +5689,7 @@ class App(QtCore.QObject):
Will convert any object out of Gerber, Excellon, Geometry to Geometry object.
:return:
"""
self.report_usage("convert_any2geo()")
self.defaults.report_usage("convert_any2geo()")
def initialize(obj_init, app):
obj_init.solid_geometry = obj.solid_geometry
@ -5793,7 +5741,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("convert_any2gerber()")
self.defaults.report_usage("convert_any2gerber()")
def initialize_geometry(obj_init, app):
apertures = {}
@ -5890,7 +5838,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_selectall()")
self.defaults.report_usage("on_selectall()")
# delete the possible selection box around a possible selected object
self.delete_selection_shape()
@ -5924,65 +5872,49 @@ class App(QtCore.QObject):
for tb in self.ui.pref_tab_area.widget(idx).findChildren(QtCore.QObject):
try:
try:
tb.textEdited.disconnect(self.on_preferences_edited)
tb.textEdited.disconnect(self.preferencesUiManager.on_preferences_edited)
except (TypeError, AttributeError):
pass
tb.textEdited.connect(self.on_preferences_edited)
tb.textEdited.connect(self.preferencesUiManager.on_preferences_edited)
except AttributeError:
pass
try:
try:
tb.modificationChanged.disconnect(self.on_preferences_edited)
tb.modificationChanged.disconnect(self.preferencesUiManager.on_preferences_edited)
except (TypeError, AttributeError):
pass
tb.modificationChanged.connect(self.on_preferences_edited)
tb.modificationChanged.connect(self.preferencesUiManager.on_preferences_edited)
except AttributeError:
pass
try:
try:
tb.toggled.disconnect(self.on_preferences_edited)
tb.toggled.disconnect(self.preferencesUiManager.on_preferences_edited)
except (TypeError, AttributeError):
pass
tb.toggled.connect(self.on_preferences_edited)
tb.toggled.connect(self.preferencesUiManager.on_preferences_edited)
except AttributeError:
pass
try:
try:
tb.valueChanged.disconnect(self.on_preferences_edited)
tb.valueChanged.disconnect(self.preferencesUiManager.on_preferences_edited)
except (TypeError, AttributeError):
pass
tb.valueChanged.connect(self.on_preferences_edited)
tb.valueChanged.connect(self.preferencesUiManager.on_preferences_edited)
except AttributeError:
pass
try:
try:
tb.currentIndexChanged.disconnect(self.on_preferences_edited)
tb.currentIndexChanged.disconnect(self.preferencesUiManager.on_preferences_edited)
except (TypeError, AttributeError):
pass
tb.currentIndexChanged.connect(self.on_preferences_edited)
tb.currentIndexChanged.connect(self.preferencesUiManager.on_preferences_edited)
except AttributeError:
pass
def on_preferences_edited(self):
"""
Executed when a preference was changed in the Edit -> Preferences tab.
Will color the Preferences tab text to Red color.
:return:
"""
if self.preferencesUiManager.preferences_changed_flag is False:
self.inform.emit('[WARNING_NOTCL] %s' % _("Preferences edited but not saved."))
for idx in range(self.ui.plot_tab_area.count()):
if self.ui.plot_tab_area.tabText(idx) == _("Preferences"):
self.ui.plot_tab_area.tabBar.setTabTextColor(idx, QtGui.QColor('red'))
self.ui.pref_apply_button.setStyleSheet("QPushButton {color: red;}")
self.preferencesUiManager.preferences_changed_flag = True
def on_tools_database(self, source='app'):
"""
@ -6080,57 +6012,10 @@ class App(QtCore.QObject):
:param title: The name of the tab that was closed.
:return:
"""
# FIXME: doing this based on translated title doesn't seem very robust.
if title == _("Preferences"):
# disconnect
for idx in range(self.ui.pref_tab_area.count()):
for tb in self.ui.pref_tab_area.widget(idx).findChildren(QtCore.QObject):
try:
tb.textEdited.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.modificationChanged.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.toggled.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.valueChanged.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.currentIndexChanged.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
if self.preferencesUiManager.preferences_changed_flag is True:
msgbox = QtWidgets.QMessageBox()
msgbox.setText(_("One or more values are changed.\n"
"Do you want to save the Preferences?"))
msgbox.setWindowTitle(_("Save Preferences"))
msgbox.setWindowIcon(QtGui.QIcon(self.resource_location + '/save_as.png'))
bt_yes = msgbox.addButton(_('Yes'), QtWidgets.QMessageBox.YesRole)
msgbox.addButton(_('No'), QtWidgets.QMessageBox.NoRole)
msgbox.setDefaultButton(bt_yes)
msgbox.exec_()
response = msgbox.clickedButton()
if response == bt_yes:
self.preferencesUiManager.on_save_button(save_to_file=True)
self.inform.emit('[success] %s' % _("Preferences saved."))
else:
self.preferencesUiManager.preferences_changed_flag = False
self.inform.emit('')
return
self.uiPreferencesManager.on_close_preferences_tab()
if title == _("Tools Database"):
# disconnect the signals from the table widget in tab
@ -6172,7 +6057,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_flipy()")
self.defaults.report_usage("on_flipy()")
obj_list = self.collection.get_selected()
xminlist = []
@ -6219,7 +6104,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_flipx()")
self.defaults.report_usage("on_flipx()")
obj_list = self.collection.get_selected()
xminlist = []
@ -6268,7 +6153,7 @@ class App(QtCore.QObject):
:param preset: A value to be used as predefined angle for rotation.
:return:
"""
self.report_usage("on_rotate()")
self.defaults.report_usage("on_rotate()")
obj_list = self.collection.get_selected()
xminlist = []
@ -6323,7 +6208,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_skewx()")
self.defaults.report_usage("on_skewx()")
obj_list = self.collection.get_selected()
xminlist = []
@ -6362,7 +6247,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_skewy()")
self.defaults.report_usage("on_skewy()")
obj_list = self.collection.get_selected()
xminlist = []
@ -6417,7 +6302,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_toolbar_replot")
self.defaults.report_usage("on_toolbar_replot")
self.log.debug("on_toolbar_replot()")
try:
@ -6722,7 +6607,7 @@ class App(QtCore.QObject):
_("Delete Grid value cancelled"))
def on_shortcut_list(self):
self.report_usage("on_shortcut_list()")
self.defaults.report_usage("on_shortcut_list()")
# add the tab if it was closed
self.ui.plot_tab_area.addTab(self.ui.shortcuts_tab, _("Key Shortcut List"))
@ -6751,7 +6636,7 @@ class App(QtCore.QObject):
self.ui.notebook.setCurrentWidget(self.ui.tool_tab)
def on_copy_name(self):
self.report_usage("on_copy_name()")
self.defaults.report_usage("on_copy_name()")
obj = self.collection.get_active()
try:
@ -7419,7 +7304,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_new")
self.defaults.report_usage("on_file_new")
# Remove everything from memory
App.log.debug("on_file_new()")
@ -7467,7 +7352,7 @@ class App(QtCore.QObject):
self.project_filename = None
# Load the application defaults
self.load_defaults(filename='current_defaults')
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'))
# Re-fresh project options
self.on_options_app2project()
@ -7498,7 +7383,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("obj_properties()")
self.defaults.report_usage("obj_properties()")
self.properties_tool.run(toggle=False)
def on_project_context_save(self):
@ -7529,7 +7414,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("obj_move()")
self.defaults.report_usage("obj_move()")
self.move_tool.run(toggle=False)
def on_fileopengerber(self, signal, name=None):
@ -7541,7 +7426,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_fileopengerber")
self.defaults.report_usage("on_fileopengerber")
App.log.debug("on_fileopengerber()")
_filter_ = "Gerber Files (*.gbr *.ger *.gtl *.gbl *.gts *.gbs *.gtp *.gbp *.gto *.gbo *.gm1 *.gml *.gm3 *" \
@ -7588,7 +7473,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_fileopenexcellon")
self.defaults.report_usage("on_fileopenexcellon")
App.log.debug("on_fileopenexcellon()")
_filter_ = "Excellon Files (*.drl *.txt *.xln *.drd *.tap *.exc *.ncd);;" \
@ -7626,7 +7511,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_fileopengcode")
self.defaults.report_usage("on_fileopengcode")
App.log.debug("on_fileopengcode()")
# https://bobcadsupport.com/helpdesk/index.php?/Knowledgebase/Article/View/13/5/known-g-code-file-extensions
@ -7666,7 +7551,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_openproject")
self.defaults.report_usage("on_file_openproject")
App.log.debug("on_file_openproject()")
_filter_ = "FlatCAM Project (*.FlatPrj);;All Files (*.*)"
try:
@ -7698,7 +7583,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_fileopenhpgl2")
self.defaults.report_usage("on_fileopenhpgl2")
App.log.debug("on_fileopenhpgl2()")
_filter_ = "HPGL2 Files (*.plt);;" \
@ -7736,7 +7621,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_openconfig")
self.defaults.report_usage("on_file_openconfig")
App.log.debug("on_file_openconfig()")
_filter_ = "FlatCAM Config (*.FlatConfig);;FlatCAM Config (*.json);;All Files (*.*)"
try:
@ -7757,7 +7642,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_exportsvg")
self.defaults.report_usage("on_file_exportsvg")
App.log.debug("on_file_exportsvg()")
obj = self.collection.get_active()
@ -7808,7 +7693,7 @@ class App(QtCore.QObject):
self.file_saved.emit("SVG", filename)
def on_file_exportpng(self):
self.report_usage("on_file_exportpng")
self.defaults.report_usage("on_file_exportpng")
App.log.debug("on_file_exportpng()")
self.date = str(datetime.today()).rpartition('.')[0]
@ -7852,7 +7737,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_savegerber")
self.defaults.report_usage("on_file_savegerber")
App.log.debug("on_file_savegerber()")
obj = self.collection.get_active()
@ -7893,7 +7778,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_savescript")
self.defaults.report_usage("on_file_savescript")
App.log.debug("on_file_savescript()")
obj = self.collection.get_active()
@ -7934,7 +7819,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_savedocument")
self.defaults.report_usage("on_file_savedocument")
App.log.debug("on_file_savedocument()")
obj = self.collection.get_active()
@ -7975,7 +7860,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_saveexcellon")
self.defaults.report_usage("on_file_saveexcellon")
App.log.debug("on_file_saveexcellon()")
obj = self.collection.get_active()
@ -8016,7 +7901,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_exportexcellon")
self.defaults.report_usage("on_file_exportexcellon")
App.log.debug("on_file_exportexcellon()")
obj = self.collection.get_active()
@ -8060,7 +7945,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_exportgerber")
self.defaults.report_usage("on_file_exportgerber")
App.log.debug("on_file_exportgerber()")
obj = self.collection.get_active()
@ -8104,7 +7989,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_exportdxf")
self.defaults.report_usage("on_file_exportdxf")
App.log.debug("on_file_exportdxf()")
obj = self.collection.get_active()
@ -8158,7 +8043,7 @@ class App(QtCore.QObject):
:type type_of_obj: str
:return: None
"""
self.report_usage("on_file_importsvg")
self.defaults.report_usage("on_file_importsvg")
App.log.debug("on_file_importsvg()")
_filter_ = "SVG File .svg (*.svg);;All Files (*.*)"
@ -8189,7 +8074,7 @@ class App(QtCore.QObject):
:type type_of_obj: str
:return: None
"""
self.report_usage("on_file_importdxf")
self.defaults.report_usage("on_file_importdxf")
App.log.debug("on_file_importdxf()")
_filter_ = "DXF File .dxf (*.DXF);;All Files (*.*)"
@ -8344,7 +8229,7 @@ class App(QtCore.QObject):
# self.ui.show()
def on_toggle_code_editor(self):
self.report_usage("on_toggle_code_editor()")
self.defaults.report_usage("on_toggle_code_editor()")
if self.toggle_codeeditor is False:
self.init_code_editor(name=_("Code Editor"))
@ -8427,7 +8312,7 @@ class App(QtCore.QObject):
:return:
"""
self.report_usage("on_fileopenscript")
self.defaults.report_usage("on_fileopenscript")
App.log.debug("on_fileopenscript()")
_filter_ = "TCL script .FlatScript (*.FlatScript);;TCL script .tcl (*.TCL);;TCL script .txt (*.TXT);;" \
@ -8459,7 +8344,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_filerunscript")
self.defaults.report_usage("on_filerunscript")
App.log.debug("on_file_runscript()")
if name:
@ -8517,7 +8402,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_saveproject")
self.defaults.report_usage("on_file_saveproject")
if self.project_filename is None:
self.on_file_saveprojectas()
@ -8544,7 +8429,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_file_saveprojectas")
self.defaults.report_usage("on_file_saveprojectas")
self.date = str(datetime.today()).rpartition('.')[0]
self.date = ''.join(c for c in self.date if c not in ':-')
@ -8813,7 +8698,7 @@ class App(QtCore.QObject):
:param scale_stroke_factor: factor by which to change/scale the thickness of the features
:return:
"""
self.report_usage("export_svg()")
self.defaults.report_usage("export_svg()")
if filename is None:
filename = self.defaults["global_last_save_folder"] if self.defaults["global_last_save_folder"] \
@ -8881,7 +8766,7 @@ class App(QtCore.QObject):
:param use_thread: if to be run in a separate thread
:return:
"""
self.report_usage("save source file()")
self.defaults.report_usage("save source file()")
if filename is None:
filename = self.defaults["global_last_save_folder"] if self.defaults["global_last_save_folder"] \
@ -8925,7 +8810,7 @@ class App(QtCore.QObject):
:param use_thread: if to be run in a separate thread
:return:
"""
self.report_usage("export_excellon()")
self.defaults.report_usage("export_excellon()")
if filename is None:
if self.defaults["global_last_save_folder"]:
@ -9080,7 +8965,7 @@ class App(QtCore.QObject):
:param use_thread: if to be run in a separate thread
:return:
"""
self.report_usage("export_gerber()")
self.defaults.report_usage("export_gerber()")
if filename is None:
filename = self.defaults["global_last_save_folder"] if self.defaults["global_last_save_folder"] \
@ -9213,7 +9098,7 @@ class App(QtCore.QObject):
:param use_thread: if to be run in a separate thread
:return:
"""
self.report_usage("export_dxf()")
self.defaults.report_usage("export_dxf()")
if filename is None:
filename = self.defaults["global_last_save_folder"] if self.defaults["global_last_save_folder"] \
@ -9265,7 +9150,7 @@ class App(QtCore.QObject):
:param outname:
:return:
"""
self.report_usage("import_svg()")
self.defaults.report_usage("import_svg()")
log.debug("App.import_svg()")
obj_type = ""
@ -9308,7 +9193,7 @@ class App(QtCore.QObject):
:param outname: Name for the imported Geometry
:return:
"""
self.report_usage("import_dxf()")
self.defaults.report_usage("import_dxf()")
obj_type = ""
if geo_type is None or geo_type == "geometry":
@ -10319,21 +10204,21 @@ class App(QtCore.QObject):
self.plotcanvas.zoom(float(self.defaults['global_zoom_ratio']))
def disable_all_plots(self):
self.report_usage("disable_all_plots()")
self.defaults.report_usage("disable_all_plots()")
self.disable_plots(self.collection.get_list())
self.inform.emit('[success] %s' %
_("All plots disabled."))
def disable_other_plots(self):
self.report_usage("disable_other_plots()")
self.defaults.report_usage("disable_other_plots()")
self.disable_plots(self.collection.get_non_selected())
self.inform.emit('[success] %s' %
_("All non selected plots disabled."))
def enable_all_plots(self):
self.report_usage("enable_all_plots()")
self.defaults.report_usage("enable_all_plots()")
self.enable_plots(self.collection.get_list())
self.inform.emit('[success] %s' %
@ -10624,7 +10509,7 @@ class App(QtCore.QObject):
:param objects: Selected objects in the Project Tab
:return:
"""
self.report_usage("generate_cnc_job()")
self.defaults.report_usage("generate_cnc_job()")
# for obj in objects:
# obj.generatecncjob()
@ -10797,11 +10682,10 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_options_app2project")
self.defaults.report_usage("on_options_app2project")
self.preferencesUiManager.defaults_read_form()
self.options.update(self.defaults)
# self.options_write_form()
def toggle_shell(self):
"""
@ -10809,7 +10693,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("toggle_shell()")
self.defaults.report_usage("toggle_shell()")
if self.ui.shell_dock.isVisible():
self.ui.shell_dock.hide()
@ -10837,7 +10721,7 @@ class App(QtCore.QObject):
:return: None
"""
self.report_usage("on_toggle_shell_from_settings()")
self.defaults.report_usage("on_toggle_shell_from_settings()")
if state is True:
if not self.ui.shell_dock.isVisible():

View File

@ -270,7 +270,7 @@ class BookmarkManager(QtWidgets.QWidget):
self.build_bm_ui()
def on_export_bookmarks(self):
self.app.report_usage("on_export_bookmarks")
self.app.defaults.report_usage("on_export_bookmarks")
self.app.log.debug("on_export_bookmarks()")
date = str(datetime.today()).rpartition('.')[0]

View File

@ -642,7 +642,7 @@ class ToolsDB(QtWidgets.QWidget):
self.app.inform.emit('[success] %s' % _("Tool removed from Tools DB."))
def on_export_tools_db_file(self):
self.app.report_usage("on_export_tools_db_file")
self.app.defaults.report_usage("on_export_tools_db_file")
self.app.log.debug("on_export_tools_db_file()")
date = str(datetime.today()).rpartition('.')[0]
@ -699,7 +699,7 @@ class ToolsDB(QtWidgets.QWidget):
self.app.inform.emit('[success] %s: %s' % (_("Exported Tools DB to"), filename))
def on_import_tools_db_file(self):
self.app.report_usage("on_import_tools_db_file")
self.app.defaults.report_usage("on_import_tools_db_file")
self.app.log.debug("on_import_tools_db_file()")
filter__ = "Text File (*.TXT);;All Files (*.*)"
@ -2072,7 +2072,7 @@ class ToolsDB2(QtWidgets.QWidget):
self.app.inform.emit('[success] %s' % _("Tool removed from Tools DB."))
def on_export_tools_db_file(self):
self.app.report_usage("on_export_tools_db_file")
self.app.defaults.report_usage("on_export_tools_db_file")
self.app.log.debug("on_export_tools_db_file()")
date = str(datetime.today()).rpartition('.')[0]
@ -2129,7 +2129,7 @@ class ToolsDB2(QtWidgets.QWidget):
self.app.inform.emit('[success] %s: %s' % (_("Exported Tools DB to"), filename))
def on_import_tools_db_file(self):
self.app.report_usage("on_import_tools_db_file")
self.app.defaults.report_usage("on_import_tools_db_file")
self.app.log.debug("on_import_tools_db_file()")
filter__ = "Text File (*.TXT);;All Files (*.*)"

View File

@ -709,11 +709,10 @@ class FlatCAMDefaults:
def __iter__(self):
return self.defaults.__iter__()
def set_change_callback(self, callback):
self.defaults.set_change_callback(callback)
def __getattr__(self, item):
# Unfortunately this method alone is not enough to pass through the other magic methods above.
return self.defaults.__getattribute__(item)
def update(self, *args, **kwargs):
return self.defaults.update(*args, **kwargs)
##### Additional Methods #####
@ -828,4 +827,18 @@ class FlatCAMDefaults:
if param.find(routes[param].__name__.lower() + "_") == 0:
p = param[len(routes[param].__name__) + 1:]
if p in routes[param].defaults:
routes[param].defaults[p] = self.defaults[param]
routes[param].defaults[p] = self.defaults[param]
def report_usage(self, resource):
"""
Increments usage counter for the given resource
in self.defaults['global_stats'].
:param resource: Name of the resource.
:return: None
"""
if resource in self.defaults['global_stats']:
self.defaults['global_stats'][resource] += 1
else:
self.defaults['global_stats'][resource] = 1

View File

@ -122,7 +122,7 @@ class BufferSelectionTool(FlatCAMTool):
self.buffer_distance_entry.set_value(0.01)
def run(self):
self.app.report_usage("Geo Editor ToolBuffer()")
self.app.defaults.report_usage("Geo Editor ToolBuffer()")
FlatCAMTool.run(self)
# if the splitter us hidden, display it
@ -339,7 +339,7 @@ class TextInputTool(FlatCAMTool):
self.font_italic_tb.clicked.connect(self.on_italic_button)
def run(self):
self.app.report_usage("Geo Editor TextInputTool()")
self.app.defaults.report_usage("Geo Editor TextInputTool()")
FlatCAMTool.run(self)
# if the splitter us hidden, display it
@ -537,7 +537,7 @@ class PaintOptionsTool(FlatCAMTool):
self.set_tool_ui()
def run(self):
self.app.report_usage("Geo Editor ToolPaint()")
self.app.defaults.report_usage("Geo Editor ToolPaint()")
FlatCAMTool.run(self)
# if the splitter us hidden, display it
@ -980,7 +980,7 @@ class TransformEditorTool(FlatCAMTool):
self.set_tool_ui()
def run(self):
self.app.report_usage("Geo Editor Transform Tool()")
self.app.defaults.report_usage("Geo Editor Transform Tool()")
FlatCAMTool.run(self)
self.set_tool_ui()

View File

@ -5516,7 +5516,7 @@ class TransformEditorTool(FlatCAMTool):
self.set_tool_ui()
def run(self, toggle=True):
self.app.report_usage("Geo Editor Transform Tool()")
self.app.defaults.report_usage("Geo Editor Transform Tool()")
# if the splitter is hidden, display it, else hide it but only if the current widget is the same
if self.app.ui.splitter.sizes()[0] == 0:

View File

@ -152,14 +152,14 @@ class TextEditor(QtWidgets.QWidget):
self.code_edited = ''
def handlePrint(self):
self.app.report_usage("handlePrint()")
self.app.defaults.report_usage("handlePrint()")
dialog = QtPrintSupport.QPrintDialog()
if dialog.exec_() == QtWidgets.QDialog.Accepted:
self.code_editor.document().print_(dialog.printer())
def handlePreview(self):
self.app.report_usage("handlePreview()")
self.app.defaults.report_usage("handlePreview()")
dialog = QtPrintSupport.QPrintPreviewDialog()
dialog.paintRequested.connect(self.code_editor.print_)
@ -172,7 +172,7 @@ class TextEditor(QtWidgets.QWidget):
pass
def handleOpen(self, filt=None):
self.app.report_usage("handleOpen()")
self.app.defaults.report_usage("handleOpen()")
if filt:
_filter_ = filt
@ -192,7 +192,7 @@ class TextEditor(QtWidgets.QWidget):
file.close()
def handleSaveGCode(self, name=None, filt=None, callback=None):
self.app.report_usage("handleSaveGCode()")
self.app.defaults.report_usage("handleSaveGCode()")
if filt:
_filter_ = filt
@ -287,7 +287,7 @@ class TextEditor(QtWidgets.QWidget):
callback()
def handleFindGCode(self):
self.app.report_usage("handleFindGCode()")
self.app.defaults.report_usage("handleFindGCode()")
flags = QtGui.QTextDocument.FindCaseSensitively
text_to_be_found = self.entryFind.get_value()
@ -298,7 +298,7 @@ class TextEditor(QtWidgets.QWidget):
r = self.code_editor.find(str(text_to_be_found), flags)
def handleReplaceGCode(self):
self.app.report_usage("handleReplaceGCode()")
self.app.defaults.report_usage("handleReplaceGCode()")
old = self.entryFind.get_value()
new = self.entryReplace.get_value()

View File

@ -28,11 +28,14 @@ else:
class PreferencesUIManager():
def __init__(self, defaults: FlatCAMDefaults, data_path: str, ui, inform):
def __init__(self, defaults: FlatCAMDefaults, data_path: str, ui, inform, app):
# FIXME: Ideally we would not pass in the app here
self.app = app
self.defaults = defaults
self.data_path = data_path
self.ui = ui
self.inform = inform
self.ignore_tab_close_event = False
# if Preferences are changed in the Edit -> Preferences tab the value will be set to True
self.preferences_changed_flag = False
@ -621,21 +624,19 @@ class PreferencesUIManager():
"""
def_dict = self.defaults if defaults_dict is None else defaults_dict
try:
if factor is None:
if units is None:
self.defaults_form_fields[field].set_value(def_dict[field])
elif units == 'IN' and (field == 'global_gridx' or field == 'global_gridy'):
self.defaults_form_fields[field].set_value(def_dict[field])
elif units == 'MM' and (field == 'global_gridx' or field == 'global_gridy'):
self.defaults_form_fields[field].set_value(def_dict[field])
else:
if units is None:
self.defaults_form_fields[field].set_value(def_dict[field] * factor)
elif units == 'IN' and (field == 'global_gridx' or field == 'global_gridy'):
self.defaults_form_fields[field].set_value((def_dict[field] * factor))
elif units == 'MM' and (field == 'global_gridx' or field == 'global_gridy'):
self.defaults_form_fields[field].set_value((def_dict[field] * factor))
value = def_dict[field]
log.debug("value is "+str(value)+ " and factor is "+str(factor))
if factor is not None:
value *= factor
form_field = self.defaults_form_fields[field]
if units is None:
form_field.set_value(value)
elif (units == 'IN' or units == 'MM') and (field == 'global_gridx' or field == 'global_gridy'):
form_field.set_value(value)
except KeyError:
pass
except AttributeError:
@ -909,10 +910,10 @@ class PreferencesUIManager():
if save_to_file:
self.save_defaults(silent=False)
# load the defaults so they are updated into the app
self.load_defaults(filename='current_defaults')
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'))
# Re-fresh project options
self.on_options_app2project()
self.app.on_options_app2project()
settgs = QSettings("Open Source", "FlatCAM")
@ -947,10 +948,7 @@ class PreferencesUIManager():
def on_pref_close_button(self):
# Preferences saved, update flag
self.preferences_changed_flag = False
try:
self.ui.plot_tab_area.tab_closed_signal.disconnect(self.on_plot_area_tab_closed)
except TypeError:
pass
self.ignore_tab_close_event = True
try:
self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.disconnect()
@ -958,7 +956,7 @@ class PreferencesUIManager():
pass
self.defaults_write_form(source_dict=self.defaults.current_defaults)
self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect(
lambda: self.on_toggle_units(no_pref=False))
lambda: self.app.on_toggle_units(no_pref=False))
self.defaults.update(self.defaults.current_defaults)
# Preferences save, update the color of the Preferences Tab text
@ -969,7 +967,7 @@ class PreferencesUIManager():
break
self.inform.emit('%s' % _("Preferences closed without saving."))
self.ui.plot_tab_area.tab_closed_signal.connect(self.on_plot_area_tab_closed)
self.ignore_tab_close_event = False
def on_restore_defaults_preferences(self):
"""
@ -995,12 +993,12 @@ class PreferencesUIManager():
:param first_time: Boolean. If True will execute some code when the app is run first time
:return: None
"""
self.report_usage("save_defaults")
self.defaults.report_usage("save_defaults")
if data_path is None:
data_path = self.data_path
self.propagate_defaults()
self.defaults.propagate_defaults()
if first_time is False:
self.save_toolbar_view()
@ -1018,7 +1016,118 @@ class PreferencesUIManager():
self.inform.emit('[success] %s' % _("Preferences saved."))
# update the autosave timer
self.save_project_auto_update()
self.app.save_project_auto_update()
def save_toolbar_view(self):
"""
Will save the toolbar view state to the defaults
:return: None
"""
# Save the toolbar view
tb_status = 0
if self.ui.toolbarfile.isVisible():
tb_status += 1
if self.ui.toolbargeo.isVisible():
tb_status += 2
if self.ui.toolbarview.isVisible():
tb_status += 4
if self.ui.toolbartools.isVisible():
tb_status += 8
if self.ui.exc_edit_toolbar.isVisible():
tb_status += 16
if self.ui.geo_edit_toolbar.isVisible():
tb_status += 32
if self.ui.grb_edit_toolbar.isVisible():
tb_status += 64
if self.ui.snap_toolbar.isVisible():
tb_status += 128
if self.ui.toolbarshell.isVisible():
tb_status += 256
self.defaults["global_toolbar_view"] = tb_status
def on_preferences_edited(self):
"""
Executed when a preference was changed in the Edit -> Preferences tab.
Will color the Preferences tab text to Red color.
:return:
"""
if self.preferences_changed_flag is False:
self.inform.emit('[WARNING_NOTCL] %s' % _("Preferences edited but not saved."))
for idx in range(self.ui.plot_tab_area.count()):
if self.ui.plot_tab_area.tabText(idx) == _("Preferences"):
self.ui.plot_tab_area.tabBar.setTabTextColor(idx, QtGui.QColor('red'))
self.ui.pref_apply_button.setStyleSheet("QPushButton {color: red;}")
self.preferences_changed_flag = True
def on_close_preferences_tab(self):
if self.ignore_tab_close_event:
return
# disconnect
for idx in range(self.ui.pref_tab_area.count()):
for tb in self.ui.pref_tab_area.widget(idx).findChildren(QtCore.QObject):
try:
tb.textEdited.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.modificationChanged.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.toggled.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.valueChanged.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
try:
tb.currentIndexChanged.disconnect(self.on_preferences_edited)
except (TypeError, AttributeError):
pass
# Prompt user to save
if self.preferences_changed_flag is True:
msgbox = QtWidgets.QMessageBox()
msgbox.setText(_("One or more values are changed.\n"
"Do you want to save the Preferences?"))
msgbox.setWindowTitle(_("Save Preferences"))
msgbox.setWindowIcon(QtGui.QIcon(self.app.resource_location + '/save_as.png'))
bt_yes = msgbox.addButton(_('Yes'), QtWidgets.QMessageBox.YesRole)
msgbox.addButton(_('No'), QtWidgets.QMessageBox.NoRole)
msgbox.setDefaultButton(bt_yes)
msgbox.exec_()
response = msgbox.clickedButton()
if response == bt_yes:
self.on_save_button(save_to_file=True)
self.inform.emit('[success] %s' % _("Preferences saved."))
else:
self.preferences_changed_flag = False
self.inform.emit('')
return
class OptionsGroupUI(QtWidgets.QGroupBox):
app = None
@ -1954,7 +2063,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
:param lay: Type of layout to be set on the toolbard
:return: None
"""
self.app.report_usage("on_layout()")
self.app.defaults.report_usage("on_layout()")
if lay:
current_layout = lay
else:
@ -3158,7 +3267,7 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
def on_pl_color_entry(self):
self.app.defaults['gerber_plot_line'] = self.pl_color_entry.get_value()[:7] + \
self.app.defaults['gerber_plot_line'][7:9]
self.pl_color_button.setStyleSheet("background-color:%s" % str(self.defaults['gerber_plot_line'])[:7])
self.pl_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['gerber_plot_line'])[:7])
def on_pl_color_button(self):
current_color = QtGui.QColor(self.app.defaults['gerber_plot_line'][:7])

View File

@ -487,7 +487,7 @@ class CNCJobObject(FlatCAMObj, CNCjob):
:param args:
:return:
"""
self.app.report_usage("cncjob_on_exportgcode_button")
self.app.defaults.report_usage("cncjob_on_exportgcode_button")
self.read_form()
name = self.app.collection.get_active().options['name']

View File

@ -1234,13 +1234,13 @@ class ExcellonObject(FlatCAMObj, Excellon):
return True, ""
def on_generate_milling_button_click(self, *args):
self.app.report_usage("excellon_on_create_milling_drills button")
self.app.defaults.report_usage("excellon_on_create_milling_drills button")
self.read_form()
self.generate_milling_drills(use_thread=False)
def on_generate_milling_slots_button_click(self, *args):
self.app.report_usage("excellon_on_create_milling_slots_button")
self.app.defaults.report_usage("excellon_on_create_milling_slots_button")
self.read_form()
self.generate_milling_slots(use_thread=False)
@ -1338,7 +1338,7 @@ class ExcellonObject(FlatCAMObj, Excellon):
pass
def on_create_cncjob_button_click(self, *args):
self.app.report_usage("excellon_on_create_cncjob_button")
self.app.defaults.report_usage("excellon_on_create_cncjob_button")
self.read_form()
# Get the tools from the list

View File

@ -1575,7 +1575,7 @@ class GeometryObject(FlatCAMObj, Geometry):
def on_generatecnc_button_click(self, *args):
log.debug("Generating CNCJob from Geometry ...")
self.app.report_usage("geometry_on_generatecnc_button")
self.app.defaults.report_usage("geometry_on_generatecnc_button")
# this reads the values in the UI form to the self.options dictionary
self.read_form()

View File

@ -505,7 +505,7 @@ class GerberObject(FlatCAMObj, Gerber):
self.app.worker_task.emit({'fcn': buffer_task, 'params': []})
def on_generatenoncopper_button_click(self, *args):
self.app.report_usage("gerber_on_generatenoncopper_button")
self.app.defaults.report_usage("gerber_on_generatenoncopper_button")
self.read_form()
name = self.options["name"] + "_noncopper"
@ -532,7 +532,7 @@ class GerberObject(FlatCAMObj, Gerber):
self.app.new_object("geometry", name, geo_init)
def on_generatebb_button_click(self, *args):
self.app.report_usage("gerber_on_generatebb_button")
self.app.defaults.report_usage("gerber_on_generatebb_button")
self.read_form()
name = self.options["name"] + "_bbox"
@ -574,7 +574,7 @@ class GerberObject(FlatCAMObj, Gerber):
# in the end toggle the visibility of the origin object so we can see the generated Geometry
iso_obj.ui.plot_cb.toggle()
else:
app_obj.report_usage("gerber_on_iso_button")
app_obj.defaults.report_usage("gerber_on_iso_button")
self.read_form()
iso_scope = 'all' if self.ui.iso_scope_radio.get_value() == 'all' else 'single'

View File

@ -236,7 +236,7 @@ class FlatCAMObj(QtCore.QObject):
)
def on_offset_button_click(self):
self.app.report_usage("obj_on_offset_button")
self.app.defaults.report_usage("obj_on_offset_button")
self.read_form()
vector_val = self.ui.offsetvector_entry.get_value()
@ -283,7 +283,7 @@ class FlatCAMObj(QtCore.QObject):
self.app.worker_task.emit({'fcn': worker_task, 'params': []})
def on_skew_button_click(self):
self.app.report_usage("obj_on_skew_button")
self.app.defaults.report_usage("obj_on_skew_button")
self.read_form()
x_angle = self.ui.xangle_entry.get_value()
y_angle = self.ui.yangle_entry.get_value()

View File

@ -217,7 +217,7 @@ class AlignObjects(FlatCAMTool):
self.aligned_old_line_color = None
def run(self, toggle=True):
self.app.report_usage("ToolAlignObjects()")
self.app.defaults.report_usage("ToolAlignObjects()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -271,7 +271,7 @@ class ToolCalculator(FlatCAMTool):
self.reset_button.clicked.connect(self.set_tool_ui)
def run(self, toggle=True):
self.app.report_usage("ToolCalculators()")
self.app.defaults.report_usage("ToolCalculators()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -731,7 +731,7 @@ class ToolCalibration(FlatCAMTool):
self.reset_button.clicked.connect(self.set_tool_ui)
def run(self, toggle=True):
self.app.report_usage("ToolCalibration()")
self.app.defaults.report_usage("ToolCalibration()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -540,7 +540,7 @@ class ToolCopperThieving(FlatCAMTool):
self.work_finished.connect(self.on_new_pattern_plating_object)
def run(self, toggle=True):
self.app.report_usage("ToolCopperThieving()")
self.app.defaults.report_usage("ToolCopperThieving()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -419,7 +419,7 @@ class CutOut(FlatCAMTool):
self.obj_combo.obj_type = {"grb": "Gerber", "geo": "Geometry"}[val]
def run(self, toggle=True):
self.app.report_usage("ToolCutOut()")
self.app.defaults.report_usage("ToolCutOut()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -514,7 +514,7 @@ class DblSidedTool(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='Alt+D', **kwargs)
def run(self, toggle=True):
self.app.report_usage("Tool2Sided()")
self.app.defaults.report_usage("Tool2Sided()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -180,7 +180,7 @@ class Distance(FlatCAMTool):
self.measure_btn.clicked.connect(self.activate_measure_tool)
def run(self, toggle=False):
self.app.report_usage("ToolDistance()")
self.app.defaults.report_usage("ToolDistance()")
self.points[:] = []

View File

@ -136,7 +136,7 @@ class DistanceMin(FlatCAMTool):
self.jump_hp_btn.clicked.connect(self.on_jump_to_half_point)
def run(self, toggle=False):
self.app.report_usage("ToolDistanceMin()")
self.app.defaults.report_usage("ToolDistanceMin()")
if self.app.tool_tab_locked is True:
return

View File

@ -366,7 +366,7 @@ class ToolExtractDrills(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='Alt+I', **kwargs)
def run(self, toggle=True):
self.app.report_usage("Extract Drills()")
self.app.defaults.report_usage("Extract Drills()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -367,7 +367,7 @@ class ToolFiducials(FlatCAMTool):
self.reset_button.clicked.connect(self.set_tool_ui)
def run(self, toggle=True):
self.app.report_usage("ToolFiducials()")
self.app.defaults.report_usage("ToolFiducials()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -558,7 +558,7 @@ class Film(FlatCAMTool):
}[self.tf_type_obj_combo.get_value()]
def run(self, toggle=True):
self.app.report_usage("ToolFilm()")
self.app.defaults.report_usage("ToolFilm()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same
@ -933,7 +933,7 @@ class Film(FlatCAMTool):
:param ftype: the type of file for saving the film: 'svg', 'png' or 'pdf'
:return:
"""
self.app.report_usage("export_negative()")
self.app.defaults.report_usage("export_negative()")
if filename is None:
filename = self.app.defaults["global_last_save_folder"]
@ -1116,7 +1116,7 @@ class Film(FlatCAMTool):
:return:
"""
self.app.report_usage("export_positive()")
self.app.defaults.report_usage("export_positive()")
if filename is None:
filename = self.app.defaults["global_last_save_folder"]

View File

@ -155,7 +155,7 @@ class ToolImage(FlatCAMTool):
self.image_type.activated_custom.connect(self.on_image_type)
def run(self, toggle=True):
self.app.report_usage("ToolImage()")
self.app.defaults.report_usage("ToolImage()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same
@ -263,7 +263,7 @@ class ToolImage(FlatCAMTool):
:return:
"""
self.app.report_usage("import_image()")
self.app.defaults.report_usage("import_image()")
if mask is None:
mask = [250, 250, 250, 250]

View File

@ -156,7 +156,7 @@ class ToolInvertGerber(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='', **kwargs)
def run(self, toggle=True):
self.app.report_usage("ToolInvertGerber()")
self.app.defaults.report_usage("ToolInvertGerber()")
log.debug("ToolInvertGerber() is running ...")
if toggle:

View File

@ -63,7 +63,7 @@ class ToolMove(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='M', **kwargs)
def run(self, toggle):
self.app.report_usage("ToolMove()")
self.app.defaults.report_usage("ToolMove()")
if self.app.tool_tab_locked is True:
return

View File

@ -939,7 +939,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
FlatCAMTool.install(self, icon, separator, shortcut='Alt+N', **kwargs)
def run(self, toggle=True):
self.app.report_usage("ToolNonCopperClear()")
self.app.defaults.report_usage("ToolNonCopperClear()")
log.debug("ToolNCC().run() was launched ...")
if toggle:
@ -1582,7 +1582,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
# init values for the next usage
self.reset_usage()
self.app.report_usage("on_paint_button_click")
self.app.defaults.report_usage("on_paint_button_click")
self.grb_circle_steps = int(self.app.defaults["gerber_circle_steps"])
self.obj_name = self.object_combo.currentText()

View File

@ -280,7 +280,7 @@ class ToolOptimal(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='Alt+O', **kwargs)
def run(self, toggle=True):
self.app.report_usage("ToolOptimal()")
self.app.defaults.report_usage("ToolOptimal()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -129,7 +129,7 @@ class ToolPDF(FlatCAMTool):
self.point_to_unit_factor = 0.01388888888
def run(self, toggle=True):
self.app.report_usage("ToolPDF()")
self.app.defaults.report_usage("ToolPDF()")
self.set_tool_ui()
self.on_open_pdf_click()
@ -147,7 +147,7 @@ class ToolPDF(FlatCAMTool):
:return: None
"""
self.app.report_usage("ToolPDF.on_open_pdf_click()")
self.app.defaults.report_usage("ToolPDF.on_open_pdf_click()")
self.app.log.debug("ToolPDF.on_open_pdf_click()")
_filter_ = "Adobe PDF Files (*.pdf);;" \

View File

@ -710,7 +710,7 @@ class ToolPaint(FlatCAMTool, Gerber):
FlatCAMTool.install(self, icon, separator, shortcut='Alt+P', **kwargs)
def run(self, toggle=True):
self.app.report_usage("ToolPaint()")
self.app.defaults.report_usage("ToolPaint()")
log.debug("ToolPaint().run() was launched ...")
if toggle:
@ -1374,7 +1374,7 @@ class ToolPaint(FlatCAMTool, Gerber):
# init values for the next usage
self.reset_usage()
self.app.report_usage("on_paint_button_click")
self.app.defaults.report_usage("on_paint_button_click")
# self.app.call_source = 'paint'
self.select_method = self.selectmethod_combo.get_value()

View File

@ -293,7 +293,7 @@ class Panelize(FlatCAMTool):
self.constrain_flag = False
def run(self, toggle=True):
self.app.report_usage("ToolPanelize()")
self.app.defaults.report_usage("ToolPanelize()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -170,7 +170,7 @@ class PcbWizard(FlatCAMTool):
self.tools_from_inf = {}
def run(self, toggle=False):
self.app.report_usage("PcbWizard Tool()")
self.app.defaults.report_usage("PcbWizard Tool()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -73,7 +73,7 @@ class Properties(FlatCAMTool):
self.calculations_finished.connect(self.show_area_chull)
def run(self, toggle=True):
self.app.report_usage("ToolProperties()")
self.app.defaults.report_usage("ToolProperties()")
if self.app.tool_tab_locked is True:
return

View File

@ -397,7 +397,7 @@ class ToolPunchGerber(FlatCAMTool):
)
def run(self, toggle=True):
self.app.report_usage("ToolPunchGerber()")
self.app.defaults.report_usage("ToolPunchGerber()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -354,7 +354,7 @@ class QRCode(FlatCAMTool):
self.reset_button.clicked.connect(self.set_tool_ui)
def run(self, toggle=True):
self.app.report_usage("QRCode()")
self.app.defaults.report_usage("QRCode()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -589,7 +589,7 @@ class RulesCheck(FlatCAMTool):
cb.setChecked(False)
def run(self, toggle=True):
self.app.report_usage("ToolRulesCheck()")
self.app.defaults.report_usage("ToolRulesCheck()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -370,7 +370,7 @@ class FCShell(TermWidget):
:return: output if there was any
"""
self.app.report_usage('exec_command')
self.app.defaults.report_usage('exec_command')
return self.exec_command_test(text, False, no_echo=no_echo)

View File

@ -525,7 +525,7 @@ class SolderPaste(FlatCAMTool):
self.reset_button.clicked.connect(self.set_tool_ui)
def run(self, toggle=True):
self.app.report_usage("ToolSolderPaste()")
self.app.defaults.report_usage("ToolSolderPaste()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -236,7 +236,7 @@ class ToolSub(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='Alt+W', **kwargs)
def run(self, toggle=True):
self.app.report_usage("ToolSub()")
self.app.defaults.report_usage("ToolSub()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same

View File

@ -433,7 +433,7 @@ class ToolTransform(FlatCAMTool):
# self.buffer_entry.returnPressed.connect(self.on_buffer_by_distance)
def run(self, toggle=True):
self.app.report_usage("ToolTransform()")
self.app.defaults.report_usage("ToolTransform()")
if toggle:
# if the splitter is hidden, display it, else hide it but only if the current widget is the same