Working on extracting the prefs UI code from the App class
This commit is contained in:
parent
89c384766a
commit
72c2dd5f26
1142
FlatCAMApp.py
1142
FlatCAMApp.py
File diff suppressed because it is too large
Load Diff
|
@ -207,6 +207,6 @@ def restart_program(app, ask=None):
|
||||||
if response == bt_yes:
|
if response == bt_yes:
|
||||||
app.on_file_saveprojectas(use_thread=True, quit_action=True)
|
app.on_file_saveprojectas(use_thread=True, quit_action=True)
|
||||||
|
|
||||||
app.save_defaults()
|
app.preferencesUiManager.save_defaults()
|
||||||
python = sys.executable
|
python = sys.executable
|
||||||
os.execl(python, python, *sys.argv)
|
os.execl(python, python, *sys.argv)
|
||||||
|
|
68
defaults.py
68
defaults.py
|
@ -3,12 +3,16 @@ import stat
|
||||||
import sys
|
import sys
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from FlatCAMCommon import LoudDict
|
from FlatCAMCommon import LoudDict
|
||||||
from camlib import to_dict
|
from camlib import to_dict, CNCjob, Geometry
|
||||||
import simplejson
|
import simplejson
|
||||||
import logging
|
import logging
|
||||||
import gettext
|
import gettext
|
||||||
import FlatCAMTranslation as fcTranslate
|
import FlatCAMTranslation as fcTranslate
|
||||||
import builtins
|
import builtins
|
||||||
|
|
||||||
|
from flatcamParsers.ParseExcellon import Excellon
|
||||||
|
from flatcamParsers.ParseGerber import Gerber
|
||||||
|
|
||||||
fcTranslate.apply_language('strings')
|
fcTranslate.apply_language('strings')
|
||||||
if '_' not in builtins.__dict__:
|
if '_' not in builtins.__dict__:
|
||||||
_ = gettext.gettext
|
_ = gettext.gettext
|
||||||
|
@ -689,6 +693,30 @@ class FlatCAMDefaults:
|
||||||
self.current_defaults.update(self.factory_defaults)
|
self.current_defaults.update(self.factory_defaults)
|
||||||
self.old_defaults_found = False
|
self.old_defaults_found = False
|
||||||
|
|
||||||
|
##### Pass-through to the defaults LoudDict #####
|
||||||
|
def __len__(self):
|
||||||
|
return self.defaults.__len__()
|
||||||
|
|
||||||
|
def __getitem__(self, item):
|
||||||
|
return self.defaults.__getitem__(item)
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
return self.defaults.__setitem__(key, value)
|
||||||
|
|
||||||
|
def __delitem__(self, key):
|
||||||
|
return self.defaults.__delitem__(key)
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return self.defaults.__iter__()
|
||||||
|
|
||||||
|
def set_change_callback(self, callback):
|
||||||
|
self.defaults.set_change_callback(callback)
|
||||||
|
|
||||||
|
def update(self, *args, **kwargs):
|
||||||
|
return self.defaults.update(*args, **kwargs)
|
||||||
|
|
||||||
|
##### Additional Methods #####
|
||||||
|
|
||||||
def write(self, filename: str):
|
def write(self, filename: str):
|
||||||
"""Saves the defaults to a file on disk"""
|
"""Saves the defaults to a file on disk"""
|
||||||
with open(filename, "w") as file:
|
with open(filename, "w") as file:
|
||||||
|
@ -703,7 +731,7 @@ class FlatCAMDefaults:
|
||||||
options = f.read()
|
options = f.read()
|
||||||
f.close()
|
f.close()
|
||||||
except IOError:
|
except IOError:
|
||||||
self.log.error("Could not load defaults file.")
|
log.error("Could not load defaults file.")
|
||||||
self.inform.emit('[ERROR] %s' % _("Could not load defaults file."))
|
self.inform.emit('[ERROR] %s' % _("Could not load defaults file."))
|
||||||
# in case the defaults file can't be loaded, show all toolbars
|
# in case the defaults file can't be loaded, show all toolbars
|
||||||
self.defaults["global_toolbar_view"] = 511
|
self.defaults["global_toolbar_view"] = 511
|
||||||
|
@ -762,6 +790,42 @@ class FlatCAMDefaults:
|
||||||
migrated[k] = v
|
migrated[k] = v
|
||||||
return migrated
|
return migrated
|
||||||
|
|
||||||
|
def reset_to_factory_defaults(self):
|
||||||
|
self.defaults.update(self.factory_defaults)
|
||||||
|
self.current_defaults.update(self.factory_defaults)
|
||||||
|
self.old_defaults_found = False
|
||||||
|
|
||||||
|
def propagate_defaults(self):
|
||||||
|
"""
|
||||||
|
This method is used to set default values in classes. It's
|
||||||
|
an alternative to project options but allows the use
|
||||||
|
of values invisible to the user.
|
||||||
|
"""
|
||||||
|
log.debug("propagate_defaults()")
|
||||||
|
|
||||||
|
# Which objects to update the given parameters.
|
||||||
|
routes = {
|
||||||
|
"global_zdownrate": CNCjob,
|
||||||
|
"excellon_zeros": Excellon,
|
||||||
|
"excellon_format_upper_in": Excellon,
|
||||||
|
"excellon_format_lower_in": Excellon,
|
||||||
|
"excellon_format_upper_mm": Excellon,
|
||||||
|
"excellon_format_lower_mm": Excellon,
|
||||||
|
"excellon_units": Excellon,
|
||||||
|
"gerber_use_buffer_for_union": Gerber,
|
||||||
|
"geometry_multidepth": Geometry
|
||||||
|
}
|
||||||
|
|
||||||
|
for param in routes:
|
||||||
|
if param in routes[param].defaults:
|
||||||
|
try:
|
||||||
|
routes[param].defaults[param] = self.defaults[param]
|
||||||
|
except KeyError:
|
||||||
|
log.error("FlatCAMApp.propagate_defaults() --> ERROR: " + param + " not in defaults.")
|
||||||
|
else:
|
||||||
|
# Try extracting the name:
|
||||||
|
# classname_param here is param in the object
|
||||||
|
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]
|
|
@ -2910,7 +2910,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
||||||
if key == QtCore.Qt.Key_S:
|
if key == QtCore.Qt.Key_S:
|
||||||
widget_name = self.plot_tab_area.currentWidget().objectName()
|
widget_name = self.plot_tab_area.currentWidget().objectName()
|
||||||
if widget_name == 'preferences_tab':
|
if widget_name == 'preferences_tab':
|
||||||
self.app.on_save_button(save_to_file=False)
|
self.app.preferencesUiManager.on_save_button(save_to_file=False)
|
||||||
return
|
return
|
||||||
|
|
||||||
if widget_name == 'database_tab':
|
if widget_name == 'database_tab':
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -50,4 +50,4 @@ class TclCommandSaveSys(TclCommandSignaled):
|
||||||
:return: None or exception
|
:return: None or exception
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.app.save_defaults(args)
|
self.app.preferencesUiManager.save_defaults(args)
|
|
@ -83,8 +83,7 @@ class TclCommandSetSys(TclCommand):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.app.defaults[param] = value
|
self.app.defaults[param] = value
|
||||||
|
self.app.defaults.propagate_defaults()
|
||||||
self.app.propagate_defaults(silent=True)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.raise_tcl_error("No such system parameter \"{}\".".format(param))
|
self.raise_tcl_error("No such system parameter \"{}\".".format(param))
|
||||||
|
|
Loading…
Reference in New Issue