- more PEP8 changes

- in PreferencesUI.PreferencesUIManager class I removed the need to pass reference to the App class since it this was available through the 'ui' parameter
- some fixes due to recent refactoring
- minor bugs fixed (not so visible)
- promoted some methods to be static
- set the default layout on first run to the 'minimal' value
This commit is contained in:
Marius Stanciu 2020-04-29 10:09:07 +03:00 committed by Marius
parent 6f11850c40
commit a5384d50d8
5 changed files with 105 additions and 93 deletions

View File

@ -10,6 +10,12 @@ CHANGELOG for FlatCAM beta
29.04.2020
- added a try-except clause in the FlatCAMTranslation.restart_program() when closing the Listener and the thread that runs it to adjust to MacOS usage
- more PEP8 changes
- in PreferencesUI.PreferencesUIManager class I removed the need to pass reference to the App class since it this was available through the 'ui' parameter
- some fixes due to recent refactoring
- minor bugs fixed (not so visible)
- promoted some methods to be static
- set the default layout on first run to the 'minimal' value
28.04.2020

View File

@ -433,11 +433,6 @@ class App(QtCore.QObject):
if user_defaults:
self.defaults.load(filename=current_defaults_path)
if self.defaults["global_gray_icons"] is False:
self.resource_location = 'share'
else:
self.resource_location = 'share/dark_resources'
if self.defaults['units'] == 'MM':
self.decimals = int(self.defaults['decimals_metric'])
else:
@ -450,9 +445,6 @@ class App(QtCore.QObject):
self.current_units = self.defaults['units']
# ###########################################################################################################
# #################################### SETUP OBJECT CLASSES #################################################
# ###########################################################################################################
@ -550,7 +542,7 @@ class App(QtCore.QObject):
# ###########################################################################################################
self.preferencesUiManager = PreferencesUIManager(defaults=self.defaults, data_path=self.data_path, ui=self.ui,
inform=self.inform, app=self)
inform=self.inform)
self.preferencesUiManager.defaults_write_form()
# When the self.defaults dictionary changes will update the Preferences GUI forms
@ -564,7 +556,7 @@ class App(QtCore.QObject):
if self.defaults["first_run"] is True:
# ONLY AT FIRST STARTUP INIT THE GUI LAYOUT TO 'COMPACT'
initial_lay = 'compact'
initial_lay = 'minimal'
self.ui.general_defaults_form.general_gui_group.on_layout(lay=initial_lay)
# Set the combobox in Preferences to the current layout
@ -6031,7 +6023,7 @@ class App(QtCore.QObject):
# FIXME: doing this based on translated title doesn't seem very robust.
if title == _("Preferences"):
self.uiPreferencesManager.on_close_preferences_tab()
self.preferencesUiManager.on_close_preferences_tab()
if title == _("Tools Database"):
# disconnect the signals from the table widget in tab
@ -6067,6 +6059,18 @@ class App(QtCore.QObject):
self.book_dialog_tab.rebuild_actions()
self.book_dialog_tab.deleteLater()
def on_plotarea_tab_closed(self, tab_idx):
"""
:param tab_idx: Index of the Tab from the plotarea that was closed
:return:
"""
widget = self.ui.plot_tab_area.widget(tab_idx)
if widget is not None:
widget.deleteLater()
self.ui.plot_tab_area.removeTab(tab_idx)
def on_flipy(self):
"""
Executed when the menu entry in Options -> Flip on Y axis is clicked.
@ -10747,18 +10751,6 @@ class App(QtCore.QObject):
self.autosave_timer.setInterval(int(self.defaults['global_autosave_timeout']))
self.autosave_timer.start()
def on_plotarea_tab_closed(self, tab_idx):
"""
:param tab_idx: Index of the Tab from the plotarea that was closed
:return:
"""
widget = self.ui.plot_tab_area.widget(tab_idx)
if widget is not None:
widget.deleteLater()
self.ui.plot_tab_area.removeTab(tab_idx)
def on_options_app2project(self):
"""
Callback for Options->Transfer Options->App=>Project. Copies options

View File

@ -25,7 +25,7 @@ class FlatCAMDefaults:
# Global APP Preferences
"decimals_inch": 4,
"decimals_metric": 4,
"version": 8.992, # defaults format version, not necessarily equal to app version
"version": 8.992, # defaults format version, not necessarily equal to app version
"first_run": True,
"units": "MM",
"global_serial": 0,
@ -695,7 +695,7 @@ class FlatCAMDefaults:
self.current_defaults.update(self.factory_defaults)
self.old_defaults_found = False
##### Pass-through to the defaults LoudDict #####
# #### Pass-through to the defaults LoudDict #####
def __len__(self):
return self.defaults.__len__()
@ -715,9 +715,7 @@ class FlatCAMDefaults:
# Unfortunately this method alone is not enough to pass through the other magic methods above.
return self.defaults.__getattribute__(item)
##### Additional Methods #####
# #### Additional Methods #####
def write(self, filename: str):
"""Saves the defaults to a file on disk"""
with open(filename, "w") as file:

View File

@ -2573,9 +2573,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
self.run_script_btn = self.toolbarshell.addAction(
QtGui.QIcon(self.app.resource_location + '/script16.png'), _('Run Script ...'))
# ########################################################################
# ## Tools Toolbar # ##
# ########################################################################
# #########################################################################
# ######################### Tools Toolbar #################################
# #########################################################################
self.dblsided_btn = self.toolbartools.addAction(
QtGui.QIcon(self.app.resource_location + '/doubleside32.png'), _("2Sided Tool"))
self.align_btn = self.toolbartools.addAction(
@ -2619,6 +2619,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
QtGui.QIcon(self.app.resource_location + '/fiducials_32.png'), _("Fiducials Tool"))
self.cal_btn = self.toolbartools.addAction(
QtGui.QIcon(self.app.resource_location + '/calibrate_32.png'), _("Calibration Tool"))
self.punch_btn = self.toolbartools.addAction(
QtGui.QIcon(self.app.resource_location + '/punch32.png'), _("Punch Gerber Tool"))
self.invert_btn = self.toolbartools.addAction(
QtGui.QIcon(self.app.resource_location + '/invert32.png'), _("Invert Gerber Tool"))
# ########################################################################
# ## Excellon Editor Toolbar # ##

View File

@ -3,6 +3,8 @@
# File Author: Marius Adrian Stanciu (c) #
# Date: 10/10/2019 #
# MIT Licence #
# #
# Modified by David Robertson 29.04.2020 #
# ##########################################################
import os
@ -14,6 +16,7 @@ import logging
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
log = logging.getLogger('PreferencesUI')
fcTranslate.apply_language('strings')
if '_' not in builtins.__dict__:
@ -26,11 +29,18 @@ else:
machinist_setting = 0
class PreferencesUIManager():
class PreferencesUIManager:
def __init__(self, defaults: FlatCAMDefaults, data_path: str, ui, inform):
"""
Class that control the Preferences Tab
:param defaults: a dictionary storage where all the application settings are stored
:param data_path: a path to the file where all the preferences are stored for persistence
:param ui: reference to the FlatCAMGUI class which constructs the UI
:param inform: a pyqtSignal used to display information's in the StatusBar of the GUI
"""
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
@ -627,7 +637,7 @@ class PreferencesUIManager():
try:
value = def_dict[field]
log.debug("value is "+str(value)+ " and factor is "+str(factor))
log.debug("value is " + str(value) + " and factor is "+str(factor))
if factor is not None:
value *= factor
@ -913,7 +923,7 @@ class PreferencesUIManager():
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'))
# Re-fresh project options
self.app.on_options_app2project()
self.ui.app.on_options_app2project()
settgs = QSettings("Open Source", "FlatCAM")
@ -956,7 +966,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.app.on_toggle_units(no_pref=False))
lambda: self.ui.app.on_toggle_units(no_pref=False))
self.defaults.update(self.defaults.current_defaults)
# Preferences save, update the color of the Preferences Tab text
@ -1016,7 +1026,7 @@ class PreferencesUIManager():
self.inform.emit('[success] %s' % _("Preferences saved."))
# update the autosave timer
self.app.save_project_auto_update()
self.ui.app.save_project_auto_update()
def save_toolbar_view(self):
"""
@ -1111,7 +1121,7 @@ class PreferencesUIManager():
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'))
msgbox.setWindowIcon(QtGui.QIcon(self.ui.app.resource_location + '/save_as.png'))
bt_yes = msgbox.addButton(_('Yes'), QtWidgets.QMessageBox.YesRole)
msgbox.addButton(_('No'), QtWidgets.QMessageBox.NoRole)
@ -1506,9 +1516,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
grid0.addWidget(self.layout_combo, 4, 1)
# Set the current index for layout_combo
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("layout"):
layout = settings.value('layout', type=str)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("layout"):
layout = qsettings.value('layout', type=str)
idx = self.layout_combo.findText(layout.capitalize())
self.layout_combo.setCurrentIndex(idx)
@ -1535,9 +1545,9 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
"It will be applied at the next app start.")
)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("hdpi"):
self.hdpi_cb.set_value(settings.value('hdpi', type=int))
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("hdpi"):
self.hdpi_cb.set_value(qsettings.value('hdpi', type=int))
else:
self.hdpi_cb.set_value(False)
self.hdpi_cb.stateChanged.connect(self.handle_hdpi)
@ -1826,7 +1836,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
# Setting Editor Draw colors signals
self.draw_color_entry.editingFinished.connect(self.on_draw_color_entry)
self.draw_color_button.clicked.connect( self.on_draw_color_button)
self.draw_color_button.clicked.connect(self.on_draw_color_button)
self.sel_draw_color_entry.editingFinished.connect(self.on_sel_draw_color_entry)
self.sel_draw_color_button.clicked.connect(self.on_sel_draw_color_button)
@ -1839,32 +1849,33 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
self.layout_combo.activated.connect(self.on_layout)
def on_theme_change(self):
val = self.theme_radio.get_value()
t_settings = QSettings("Open Source", "FlatCAM")
t_settings.setValue('theme', val)
qsettings = QSettings("Open Source", "FlatCAM")
qsettings.setValue('theme', val)
# This will write the setting to the platform specific storage.
del t_settings
del qsettings
self.app.on_app_restart()
def handle_style(self, style):
@staticmethod
def handle_style(style):
# set current style
settings = QSettings("Open Source", "FlatCAM")
settings.setValue('style', style)
qsettings = QSettings("Open Source", "FlatCAM")
qsettings.setValue('style', style)
# This will write the setting to the platform specific storage.
del settings
del qsettings
def handle_hdpi(self, state):
@staticmethod
def handle_hdpi(state):
# set current HDPI
settings = QSettings("Open Source", "FlatCAM")
settings.setValue('hdpi', state)
qsettings = QSettings("Open Source", "FlatCAM")
qsettings.setValue('hdpi', state)
# This will write the setting to the platform specific storage.
del settings
del qsettings
# Setting selection colors (left - right) handlers
def on_sf_color_entry(self):
@ -2394,9 +2405,9 @@ class GeneralAPPSetGroupUI(OptionsGroupUI):
self.notebook_font_size_spinner.set_range(8, 40)
self.notebook_font_size_spinner.setWrapping(True)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("notebook_font_size"):
self.notebook_font_size_spinner.set_value(settings.value('notebook_font_size', type=int))
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("notebook_font_size"):
self.notebook_font_size_spinner.set_value(qsettings.value('notebook_font_size', type=int))
else:
self.notebook_font_size_spinner.set_value(12)
@ -2413,9 +2424,9 @@ class GeneralAPPSetGroupUI(OptionsGroupUI):
self.axis_font_size_spinner.set_range(0, 40)
self.axis_font_size_spinner.setWrapping(True)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("axis_font_size"):
self.axis_font_size_spinner.set_value(settings.value('axis_font_size', type=int))
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("axis_font_size"):
self.axis_font_size_spinner.set_value(qsettings.value('axis_font_size', type=int))
else:
self.axis_font_size_spinner.set_value(8)
@ -2433,8 +2444,8 @@ class GeneralAPPSetGroupUI(OptionsGroupUI):
self.textbox_font_size_spinner.set_range(8, 40)
self.textbox_font_size_spinner.setWrapping(True)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
self.textbox_font_size_spinner.set_value(settings.value('textbox_font_size', type=int))
else:
self.textbox_font_size_spinner.set_value(10)
@ -2799,8 +2810,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
_("Enable display of the splash screen at application startup.")
)
settings = QSettings("Open Source", "FlatCAM")
if settings.value("splash_screen"):
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.value("splash_screen"):
self.splash_cb.set_value(True)
else:
self.splash_cb.set_value(False)
@ -3024,12 +3035,13 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
self.language_apply_btn.clicked.connect(lambda: fcTranslate.on_language_apply_click(app=self.app, restart=True))
def on_splash_changed(self, state):
settings = QSettings("Open Source", "FlatCAM")
settings.setValue('splash_screen', 1) if state else settings.setValue('splash_screen', 0)
@staticmethod
def on_splash_changed(state):
qsettings = QSettings("Open Source", "FlatCAM")
qsettings.setValue('splash_screen', 1) if state else qsettings.setValue('splash_screen', 0)
# This will write the setting to the platform specific storage.
del settings
del qsettings
class GerberGenPrefGroupUI(OptionsGroupUI):
@ -3037,6 +3049,7 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
# OptionsGroupUI.__init__(self, "Gerber General Preferences", parent=parent)
super(GerberGenPrefGroupUI, self).__init__(self)
self.parent = parent
self.setTitle(str(_("Gerber General")))
self.decimals = decimals
@ -3233,7 +3246,7 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
def on_pf_color_entry(self):
self.app.defaults['gerber_plot_fill'] = self.pf_color_entry.get_value()[:7] + \
self.app.defaults['gerber_plot_fill'][7:9]
self.pf_color_button.setStyleSheet("background-color:%s" % str(self.defaults['gerber_plot_fill'])[:7])
self.pf_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['gerber_plot_fill'])[:7])
def on_pf_color_button(self):
current_color = QtGui.QColor(self.app.defaults['gerber_plot_fill'][:7])
@ -6167,9 +6180,9 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
)
self.layout.addWidget(self.export_gcode_label)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
tb_fsize = settings.value('textbox_font_size', type=int)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
tb_fsize = qsettings.value('textbox_font_size', type=int)
else:
tb_fsize = 10
font = QtGui.QFont()
@ -6244,9 +6257,9 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
)
self.layout.addWidget(toolchangelabel)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
tb_fsize = settings.value('textbox_font_size', type=int)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
tb_fsize = qsettings.value('textbox_font_size', type=int)
else:
tb_fsize = 10
font = QtGui.QFont()
@ -8030,7 +8043,6 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
grid0.addWidget(self.buffer_rounded_cb, 19, 0, 1, 2)
self.layout.addStretch()
@ -9740,9 +9752,9 @@ class FAExcPrefGroupUI(OptionsGroupUI):
)
self.vertical_lay.addWidget(list_label)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
tb_fsize = settings.value('textbox_font_size', type=int)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
tb_fsize = qsettings.value('textbox_font_size', type=int)
else:
tb_fsize = 10
@ -9813,9 +9825,9 @@ class FAGcoPrefGroupUI(OptionsGroupUI):
)
self.layout.addWidget(self.gco_list_label)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
tb_fsize = settings.value('textbox_font_size', type=int)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
tb_fsize = qsettings.value('textbox_font_size', type=int)
else:
tb_fsize = 10
@ -9883,9 +9895,9 @@ class FAGrbPrefGroupUI(OptionsGroupUI):
)
self.layout.addWidget(self.grb_list_label)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
tb_fsize = settings.value('textbox_font_size', type=int)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
tb_fsize = qsettings.value('textbox_font_size', type=int)
else:
tb_fsize = 10
@ -9955,9 +9967,9 @@ class AutoCompletePrefGroupUI(OptionsGroupUI):
)
self.layout.addWidget(self.grb_list_label)
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("textbox_font_size"):
tb_fsize = settings.value('textbox_font_size', type=int)
qsettings = QSettings("Open Source", "FlatCAM")
if qsettings.contains("textbox_font_size"):
tb_fsize = qsettings.value('textbox_font_size', type=int)
else:
tb_fsize = 10