- added possibility to edit the custom keywords used by the autocompleter (in Tcl Shell and in the Code Editor). It is done in the Edit -> Preferences -> Utilities

- added a new setting in Edit -> Preferences -> General -> GUI Settings -> Textbox Font which control the font on the texbox GUI elements
This commit is contained in:
Marius Stanciu 2019-09-18 14:30:09 +03:00
parent 31e111ebb3
commit cf0e40c318
3 changed files with 293 additions and 81 deletions

View File

@ -747,11 +747,13 @@ class App(QtCore.QObject):
"tools_solderpaste_pp": self.ui.tools_defaults_form.tools_solderpaste_group.pp_combo,
"tools_sub_close_paths": self.ui.tools_defaults_form.tools_sub_group.close_paths_cb,
# file associations
"fa_excellon": self.ui.fa_defaults_form.fa_excellon_group.exc_list_text,
"fa_gcode": self.ui.fa_defaults_form.fa_gcode_group.gco_list_text,
# "fa_geometry": self.ui.fa_defaults_form.fa_geometry_group.close_paths_cb,
"fa_gerber": self.ui.fa_defaults_form.fa_gerber_group.grb_list_text,
# Utilities
# File associations
"fa_excellon": self.ui.util_defaults_form.fa_excellon_group.exc_list_text,
"fa_gcode": self.ui.util_defaults_form.fa_gcode_group.gco_list_text,
# "fa_geometry": self.ui.util_defaults_form.fa_geometry_group.close_paths_cb,
"fa_gerber": self.ui.util_defaults_form.fa_gerber_group.grb_list_text,
"util_autocomplete_keywords": self.ui.util_defaults_form.kw_group.kw_list_text,
}
@ -864,22 +866,6 @@ class App(QtCore.QObject):
"global_point_clipboard_format": "(%.4f, %.4f)",
"global_zdownrate": None,
# autocomplete keywords
"global_autocomplete_keywords":
['all', 'angle_x', 'angle_y', 'axis', 'axisoffset', 'box', 'center_x', 'center_y',
'columns', 'combine', 'connect', 'contour', 'depthperpass', 'dia', 'diatol', 'dist',
'drilled_dias', 'drillz', 'pp',
'gridoffsety', 'gridx', 'gridy', 'has_offset', 'holes', 'margin', 'method',
'milled_dias',
'minoffset', 'multidepth', 'name', 'offset', 'opt_type', 'order', 'outname',
'overlap', 'passes', 'postamble', 'ppname_e', 'ppname_g', 'preamble', 'radius', 'ref',
'rest', 'rows', 'scale_factor', 'spacing_columns', 'spacing_rows', 'spindlespeed',
'use_threads', 'value', 'x', 'x0', 'x1', 'y', 'y0', 'y1', 'z_cut', 'z_move',
'default', 'feedrate_z', 'grbl_11', 'grbl_laser', 'hpgl', 'line_xyz', 'marlin',
'Paste_1', 'Repetier', 'Toolchange_Custom', 'Roland_MDX_20', 'Toolchange_manual',
'Toolchange_Probe_MACH3', 'dwell', 'dwelltime', 'toolchange_xy', 'iso_type',
'Desktop', 'FlatPrj', 'FlatConfig', 'Users', 'Documents', 'My Documents', 'Marius'
],
# General GUI Settings
"global_hover": False,
"global_selection_shape": True,
@ -1162,14 +1148,28 @@ class App(QtCore.QObject):
# Subtract Tool
"tools_sub_close_paths": True,
# Utilities
# file associations
"fa_excellon": 'drd, drl, exc, ncd, tap, xln',
"fa_gcode": 'cnc, din, dnc, ecs, eia, fan, fgc, fnc, gc, gcd, gcode, h, hnc, i, min, mpf, mpr, nc, ncc, '
'ncg, ncp, out, plt, ply, rol, sbp, tap, xpi',
"fa_gerber": 'art, bot, bsm, cmp, crc, crs, dim, g4, gb0, gb1, gb2, gb3, gb5, gb6, gb7, gb8, gb9, gbd, '
'gbl, gbo, gbp, gbr, gbs, gdo, ger, gko, gm1, gm2, gm3, grb, gtl, gto, gtp, gts, ly15, ly2, '
'mil, pho, plc, pls, smb, smt, sol, spb, spt, ssb, sst, stc, sts, top, tsm'
'mil, pho, plc, pls, smb, smt, sol, spb, spt, ssb, sst, stc, sts, top, tsm',
# Keyword list
"util_autocomplete_keywords": 'Desktop, Documents, FlatConfig, FlatPrj, Marius, My Documents, Paste_1, '
'Repetier, Roland_MDX_20, Toolchange_Custom, Toolchange_Probe_MACH3, '
'Toolchange_manual, Users, all, angle_x, angle_y, axis, axisoffset, box, '
'center_x, center_y, columns, combine, connect, contour, default, '
'depthperpass, dia, diatol, dist, drilled_dias, drillz, dwell, dwelltime, '
'feedrate_z, grbl_11, grbl_laser, gridoffsety, gridx, gridy, has_offset, '
'holes, hpgl, iso_type, line_xyz, margin, marlin, method, milled_dias, '
'minoffset, multidepth, name, offset, opt_type, order, outname, overlap, '
'passes, postamble, pp, ppname_e, ppname_g, preamble, radius, ref, rest, '
'rows, shellvar_, scale_factor, spacing_columns, spacing_rows, spindlespeed, '
'toolchange_xy, use_threads, value, x, x0, x1, y, y0, y1, z_cut, z_move'
,
})
# ############################################################
@ -1918,42 +1918,54 @@ class App(QtCore.QObject):
# ############### FILE ASSOCIATIONS SIGNALS ####################
# ##############################################################
self.ui.fa_defaults_form.fa_excellon_group.restore_btn.clicked.connect(
self.ui.util_defaults_form.fa_excellon_group.restore_btn.clicked.connect(
lambda: self.restore_extensions(ext_type='excellon'))
self.ui.fa_defaults_form.fa_gcode_group.restore_btn.clicked.connect(
self.ui.util_defaults_form.fa_gcode_group.restore_btn.clicked.connect(
lambda: self.restore_extensions(ext_type='gcode'))
self.ui.fa_defaults_form.fa_gerber_group.restore_btn.clicked.connect(
self.ui.util_defaults_form.fa_gerber_group.restore_btn.clicked.connect(
lambda: self.restore_extensions(ext_type='gerber'))
self.ui.fa_defaults_form.fa_excellon_group.del_all_btn.clicked.connect(
self.ui.util_defaults_form.fa_excellon_group.del_all_btn.clicked.connect(
lambda: self.delete_all_extensions(ext_type='excellon'))
self.ui.fa_defaults_form.fa_gcode_group.del_all_btn.clicked.connect(
self.ui.util_defaults_form.fa_gcode_group.del_all_btn.clicked.connect(
lambda: self.delete_all_extensions(ext_type='gcode'))
self.ui.fa_defaults_form.fa_gerber_group.del_all_btn.clicked.connect(
self.ui.util_defaults_form.fa_gerber_group.del_all_btn.clicked.connect(
lambda: self.delete_all_extensions(ext_type='gerber'))
self.ui.fa_defaults_form.fa_excellon_group.add_btn.clicked.connect(
self.ui.util_defaults_form.fa_excellon_group.add_btn.clicked.connect(
lambda: self.add_extension(ext_type='excellon'))
self.ui.fa_defaults_form.fa_gcode_group.add_btn.clicked.connect(
self.ui.util_defaults_form.fa_gcode_group.add_btn.clicked.connect(
lambda: self.add_extension(ext_type='gcode'))
self.ui.fa_defaults_form.fa_gerber_group.add_btn.clicked.connect(
self.ui.util_defaults_form.fa_gerber_group.add_btn.clicked.connect(
lambda: self.add_extension(ext_type='gerber'))
self.ui.fa_defaults_form.fa_excellon_group.del_btn.clicked.connect(
self.ui.util_defaults_form.fa_excellon_group.del_btn.clicked.connect(
lambda: self.del_extension(ext_type='excellon'))
self.ui.fa_defaults_form.fa_gcode_group.del_btn.clicked.connect(
self.ui.util_defaults_form.fa_gcode_group.del_btn.clicked.connect(
lambda: self.del_extension(ext_type='gcode'))
self.ui.fa_defaults_form.fa_gerber_group.del_btn.clicked.connect(
self.ui.util_defaults_form.fa_gerber_group.del_btn.clicked.connect(
lambda: self.del_extension(ext_type='gerber'))
# connect the 'Apply' buttons from the Preferences/File Associations
self.ui.fa_defaults_form.fa_excellon_group.exc_list_btn.clicked.connect(
self.ui.util_defaults_form.fa_excellon_group.exc_list_btn.clicked.connect(
lambda: self.on_register_files(obj_type='excellon'))
self.ui.fa_defaults_form.fa_gcode_group.gco_list_btn.clicked.connect(
self.ui.util_defaults_form.fa_gcode_group.gco_list_btn.clicked.connect(
lambda: self.on_register_files(obj_type='gcode'))
self.ui.fa_defaults_form.fa_gerber_group.grb_list_btn.clicked.connect(
self.ui.util_defaults_form.fa_gerber_group.grb_list_btn.clicked.connect(
lambda: self.on_register_files(obj_type='gerber'))
# ##############################################################
# ###################### KEYWORDS SIGNALS ######################
# ##############################################################
self.ui.util_defaults_form.kw_group.restore_btn.clicked.connect(
lambda: self.restore_extensions(ext_type='keyword'))
self.ui.util_defaults_form.kw_group.del_all_btn.clicked.connect(
lambda: self.delete_all_extensions(ext_type='keyword'))
self.ui.util_defaults_form.kw_group.add_btn.clicked.connect(
lambda: self.add_extension(ext_type='keyword'))
self.ui.util_defaults_form.kw_group.del_btn.clicked.connect(
lambda: self.del_extension(ext_type='keyword'))
# splash screen button signal
self.ui.general_defaults_form.general_gui_set_group.splash_cb.stateChanged.connect(self.on_splash_changed)
@ -2001,7 +2013,20 @@ class App(QtCore.QObject):
'version', 'write_gcode'
]
self.ordinary_keywords = self.defaults["global_autocomplete_keywords"]
self.default_keywords = ['Desktop', 'Documents', 'FlatConfig', 'FlatPrj', 'Marius', 'My Documents', 'Paste_1',
'Repetier', 'Roland_MDX_20', 'Toolchange_Custom', 'Toolchange_Probe_MACH3',
'Toolchange_manual', 'Users', 'all', 'angle_x', 'angle_y', 'axis', 'axisoffset',
'box', 'center_x', 'center_y', 'columns', 'combine', 'connect', 'contour', 'default',
'depthperpass', 'dia', 'diatol', 'dist', 'drilled_dias', 'drillz', 'dwell',
'dwelltime', 'feedrate_z', 'grbl_11', 'grbl_laser', 'gridoffsety', 'gridx', 'gridy',
'has_offset', 'holes', 'hpgl', 'iso_type', 'line_xyz', 'margin', 'marlin', 'method',
'milled_dias', 'minoffset', 'multidepth', 'name', 'offset', 'opt_type', 'order',
'outname', 'overlap', 'passes', 'postamble', 'pp', 'ppname_e', 'ppname_g',
'preamble', 'radius', 'ref', 'rest', 'rows', 'shellvar_', 'scale_factor',
'spacing_columns',
'spacing_rows', 'spindlespeed', 'toolchange_xy', 'use_threads', 'value', 'x',
'x0', 'x1', 'y', 'y0', 'y1', 'z_cut', 'z_move'
]
self.tcl_keywords = [
'after', 'append', 'apply', 'argc', 'argv', 'argv0', 'array', 'attemptckalloc', 'attemptckrealloc',
@ -2190,7 +2215,8 @@ class App(QtCore.QObject):
'unload', 'unset', 'update', 'uplevel', 'upvar', 'variable', 'vwait', 'while', 'yield', 'yieldto', 'zlib'
]
self.myKeywords = self.tcl_commands_list + self.ordinary_keywords + self.tcl_keywords
self.autocomplete_kw_list = self.defaults['util_autocomplete_keywords'].replace(' ', '').split(',')
self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
self.default_autocomplete_keywords = [
'all', 'angle_x', 'angle_y', 'axis', 'axisoffset', 'box', 'center_x', 'center_y',
@ -2578,7 +2604,7 @@ class App(QtCore.QObject):
log.debug("App.on_startup_args() --> Save event. App Defaults saved.")
self.save_defaults()
else:
exc_list = self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.get_value().split(',')
exc_list = self.ui.util_defaults_form.fa_excellon_group.exc_list_text.get_value().split(',')
proc_arg = argument.lower()
for ext in exc_list:
proc_ext = ext.replace(' ', '')
@ -2591,7 +2617,7 @@ class App(QtCore.QObject):
self.on_fileopenexcellon(name=file_name)
return
gco_list = self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.get_value().split(',')
gco_list = self.ui.util_defaults_form.fa_gcode_group.gco_list_text.get_value().split(',')
for ext in gco_list:
proc_ext = ext.replace(' ', '')
proc_ext = '.%s' % proc_ext
@ -2604,7 +2630,7 @@ class App(QtCore.QObject):
self.on_fileopengcode(name=file_name)
return
grb_list = self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.get_value().split(',')
grb_list = self.ui.util_defaults_form.fa_gerber_group.grb_list_text.get_value().split(',')
for ext in grb_list:
proc_ext = ext.replace(' ', '')
proc_ext = '.%s' % proc_ext
@ -4460,7 +4486,8 @@ class App(QtCore.QObject):
self.ui.general_defaults_form.general_gui_set_group.notebook_font_size_spinner.get_value())
settings.setValue('axis_font_size',
self.ui.general_defaults_form.general_gui_set_group.axis_font_size_spinner.get_value())
settings.setValue('textbox_font_size',
self.ui.general_defaults_form.general_gui_set_group.textbox_font_size_spinner.get_value())
settings.setValue('toolbar_lock', self.ui.lock_action.isChecked())
# This will write the setting to the platform specific storage.
@ -4616,7 +4643,7 @@ class App(QtCore.QObject):
return False
if obj_type is None or obj_type == 'excellon':
exc_list = self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.get_value().replace(' ', '').split(',')
exc_list = self.ui.util_defaults_form.fa_excellon_group.exc_list_text.get_value().replace(' ', '').split(',')
exc_list = [x for x in exc_list if x != '']
# register all keys in the Preferences window
@ -4637,7 +4664,7 @@ class App(QtCore.QObject):
self.inform.emit('[success] %s' % _("Selected Excellon file extensions registered with FlatCAM."))
if obj_type is None or obj_type == 'gcode':
gco_list = self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.get_value().replace(' ', '').split(',')
gco_list = self.ui.util_defaults_form.fa_gcode_group.gco_list_text.get_value().replace(' ', '').split(',')
gco_list = [x for x in gco_list if x != '']
# register all keys in the Preferences window
@ -4659,7 +4686,7 @@ class App(QtCore.QObject):
_("Selected GCode file extensions registered with FlatCAM."))
if obj_type is None or obj_type == 'gerber':
grb_list = self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',')
grb_list = self.ui.util_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',')
grb_list = [x for x in grb_list if x != '']
# register all keys in the Preferences window
@ -4682,73 +4709,109 @@ class App(QtCore.QObject):
def add_extension(self, ext_type):
if ext_type == 'excellon':
new_ext = self.ui.fa_defaults_form.fa_excellon_group.ext_entry.get_value()
new_ext = self.ui.util_defaults_form.fa_excellon_group.ext_entry.get_value()
if new_ext == '':
return
old_val = self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.get_value().replace(' ', '').split(',')
old_val = self.ui.util_defaults_form.fa_excellon_group.exc_list_text.get_value().replace(' ', '').split(',')
if new_ext in old_val:
return
old_val.append(new_ext)
old_val.sort()
self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.set_value(', '.join(old_val))
self.ui.util_defaults_form.fa_excellon_group.exc_list_text.set_value(', '.join(old_val))
if ext_type == 'gcode':
new_ext = self.ui.fa_defaults_form.fa_gcode_group.ext_entry.get_value()
new_ext = self.ui.util_defaults_form.fa_gcode_group.ext_entry.get_value()
if new_ext == '':
return
old_val = self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.get_value().replace(' ', '').split(',')
old_val = self.ui.util_defaults_form.fa_gcode_group.gco_list_text.get_value().replace(' ', '').split(',')
if new_ext in old_val:
return
old_val.append(new_ext)
old_val.sort()
self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.set_value(', '.join(old_val))
self.ui.util_defaults_form.fa_gcode_group.gco_list_text.set_value(', '.join(old_val))
if ext_type == 'gerber':
new_ext = self.ui.fa_defaults_form.fa_gerber_group.ext_entry.get_value()
new_ext = self.ui.util_defaults_form.fa_gerber_group.ext_entry.get_value()
if new_ext == '':
return
old_val = self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',')
old_val = self.ui.util_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',')
if new_ext in old_val:
return
old_val.append(new_ext)
old_val.sort()
self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.set_value(', '.join(old_val))
self.ui.util_defaults_form.fa_gerber_group.grb_list_text.set_value(', '.join(old_val))
if ext_type == 'keyword':
new_kw = self.ui.util_defaults_form.kw_group.kw_entry.get_value()
if new_kw == '':
return
old_val = self.ui.util_defaults_form.kw_group.kw_list_text.get_value().replace(' ', '').split(',')
if new_kw in old_val:
return
old_val.append(new_kw)
old_val.sort()
self.ui.util_defaults_form.kw_group.kw_list_text.set_value(', '.join(old_val))
# update the self.myKeywords so the model is updated
self.autocomplete_kw_list = \
self.ui.util_defaults_form.kw_group.kw_list_text.get_value().replace(' ', '').split(',')
self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
self.shell._edit.set_model_data(self.myKeywords)
self.ui.code_editor.set_model_data(self.myKeywords)
def del_extension(self, ext_type):
if ext_type == 'excellon':
new_ext = self.ui.fa_defaults_form.fa_excellon_group.ext_entry.get_value()
new_ext = self.ui.util_defaults_form.fa_excellon_group.ext_entry.get_value()
if new_ext == '':
return
old_val = self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.get_value().replace(' ', '').split(',')
old_val = self.ui.util_defaults_form.fa_excellon_group.exc_list_text.get_value().replace(' ', '').split(',')
if new_ext not in old_val:
return
old_val.remove(new_ext)
old_val.sort()
self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.set_value(', '.join(old_val))
self.ui.util_defaults_form.fa_excellon_group.exc_list_text.set_value(', '.join(old_val))
if ext_type == 'gcode':
new_ext = self.ui.fa_defaults_form.fa_gcode_group.ext_entry.get_value()
new_ext = self.ui.util_defaults_form.fa_gcode_group.ext_entry.get_value()
if new_ext == '':
return
old_val = self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.get_value().replace(' ', '').split(',')
old_val = self.ui.util_defaults_form.fa_gcode_group.gco_list_text.get_value().replace(' ', '').split(',')
if new_ext not in old_val:
return
old_val.remove(new_ext)
old_val.sort()
self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.set_value(', '.join(old_val))
self.ui.util_defaults_form.fa_gcode_group.gco_list_text.set_value(', '.join(old_val))
if ext_type == 'gerber':
new_ext = self.ui.fa_defaults_form.fa_gerber_group.ext_entry.get_value()
new_ext = self.ui.util_defaults_form.fa_gerber_group.ext_entry.get_value()
if new_ext == '':
return
old_val = self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',')
old_val = self.ui.util_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',')
if new_ext not in old_val:
return
old_val.remove(new_ext)
old_val.sort()
self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.set_value(', '.join(old_val))
self.ui.util_defaults_form.fa_gerber_group.grb_list_text.set_value(', '.join(old_val))
if ext_type == 'keyword':
new_kw = self.ui.util_defaults_form.kw_group.kw_entry.get_value()
if new_kw == '':
return
old_val = self.ui.util_defaults_form.kw_group.kw_list_text.get_value().replace(' ', '').split(',')
if new_kw not in old_val:
return
old_val.remove(new_kw)
old_val.sort()
self.ui.util_defaults_form.kw_group.kw_list_text.set_value(', '.join(old_val))
# update the self.myKeywords so the model is updated
self.autocomplete_kw_list = \
self.ui.util_defaults_form.kw_group.kw_list_text.get_value().replace(' ', '').split(',')
self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
self.shell._edit.set_model_data(self.myKeywords)
self.ui.code_editor.set_model_data(self.myKeywords)
def restore_extensions(self, ext_type):
if ext_type == 'excellon':
@ -4760,19 +4823,34 @@ class App(QtCore.QObject):
new_exc_list.remove('txt')
except ValueError:
pass
self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.set_value(', '.join(new_exc_list))
self.ui.util_defaults_form.fa_excellon_group.exc_list_text.set_value(', '.join(new_exc_list))
if ext_type == 'gcode':
self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.set_value(', '.join(self.gcode_list))
self.ui.util_defaults_form.fa_gcode_group.gco_list_text.set_value(', '.join(self.gcode_list))
if ext_type == 'gerber':
self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.set_value(', '.join(self.grb_list))
self.ui.util_defaults_form.fa_gerber_group.grb_list_text.set_value(', '.join(self.grb_list))
if ext_type == 'keyword':
self.ui.util_defaults_form.kw_group.kw_list_text.set_value(', '.join(self.default_keywords))
# update the self.myKeywords so the model is updated
self.autocomplete_kw_list = self.default_keywords
self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
self.shell._edit.set_model_data(self.myKeywords)
self.ui.code_editor.set_model_data(self.myKeywords)
def delete_all_extensions(self, ext_type):
if ext_type == 'excellon':
self.ui.fa_defaults_form.fa_excellon_group.exc_list_text.set_value('')
self.ui.util_defaults_form.fa_excellon_group.exc_list_text.set_value('')
if ext_type == 'gcode':
self.ui.fa_defaults_form.fa_gcode_group.gco_list_text.set_value('')
self.ui.util_defaults_form.fa_gcode_group.gco_list_text.set_value('')
if ext_type == 'gerber':
self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.set_value('')
self.ui.util_defaults_form.fa_gerber_group.grb_list_text.set_value('')
if ext_type == 'keyword':
self.ui.util_defaults_form.kw_group.kw_list_text.set_value('')
# update the self.myKeywords so the model is updated
self.myKeywords = self.tcl_commands_list + self.tcl_keywords
self.shell._edit.set_model_data(self.myKeywords)
self.ui.code_editor.set_model_data(self.myKeywords)
def on_edit_join(self, name=None):
"""
@ -5390,7 +5468,7 @@ class App(QtCore.QObject):
self.geo_form = self.ui.geometry_defaults_form
self.cnc_form = self.ui.cncjob_defaults_form
self.tools_form = self.ui.tools_defaults_form
self.fa_form = self.ui.fa_defaults_form
self.fa_form = self.ui.util_defaults_form
elif sel == 1:
self.gen_form = self.ui.general_options_form
self.ger_form = self.ui.gerber_options_form
@ -5398,7 +5476,7 @@ class App(QtCore.QObject):
self.geo_form = self.ui.geometry_options_form
self.cnc_form = self.ui.cncjob_options_form
self.tools_form = self.ui.tools_options_form
self.fa_form = self.ui.fa_options_form
self.fa_form = self.ui.util_options_form
else:
return
@ -6110,8 +6188,9 @@ class App(QtCore.QObject):
# Re-fresh project options
self.on_options_app2project()
# save the notebook font size
settings = QSettings("Open Source", "FlatCAM")
# save the notebook font size
fsize = self.ui.general_defaults_form.general_gui_set_group.notebook_font_size_spinner.get_value()
settings.setValue('notebook_font_size', fsize)
@ -6119,6 +6198,10 @@ class App(QtCore.QObject):
g_fsize = self.ui.general_defaults_form.general_gui_set_group.axis_font_size_spinner.get_value()
settings.setValue('axis_font_size', g_fsize)
# save the textbox font size
tb_fsize = self.ui.general_defaults_form.general_gui_set_group.textbox_font_size_spinner.get_value()
settings.setValue('textbox_font_size', tb_fsize)
# This will write the setting to the platform specific storage.
del settings

View File

@ -15,6 +15,8 @@ CAD program, and create G-Code for Isolation routing.
- fixed the parsing of the Manufacturing files when double clicking them and they are registered with FlatCAM
- fixed showing the GUI when some settings (maximized_GUI) are missing from QSettings
- added sys tray menu
- added possibility to edit the custom keywords used by the autocompleter (in Tcl Shell and in the Code Editor). It is done in the Edit -> Preferences -> Utilities
- added a new setting in Edit -> Preferences -> General -> GUI Settings -> Textbox Font which control the font on the texbox GUI elements
17.09.2019

View File

@ -1972,7 +1972,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
self.geometry_defaults_form = GeometryPreferencesUI()
self.cncjob_defaults_form = CNCJobPreferencesUI()
self.tools_defaults_form = ToolsPreferencesUI()
self.fa_defaults_form = FAPreferencesUI()
self.util_defaults_form = UtilPreferencesUI()
self.general_options_form = GeneralPreferencesUI()
self.gerber_options_form = GerberPreferencesUI()
@ -1980,7 +1980,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
self.geometry_options_form = GeometryPreferencesUI()
self.cncjob_options_form = CNCJobPreferencesUI()
self.tools_options_form = ToolsPreferencesUI()
self.fa_options_form = FAPreferencesUI()
self.util_options_form = UtilPreferencesUI()
QtWidgets.qApp.installEventFilter(self)
@ -3639,23 +3639,32 @@ class CNCJobPreferencesUI(QtWidgets.QWidget):
self.layout.addStretch()
class FAPreferencesUI(QtWidgets.QWidget):
class UtilPreferencesUI(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent=parent)
self.layout = QtWidgets.QHBoxLayout()
self.setLayout(self.layout)
self.vlay = QtWidgets.QVBoxLayout()
self.fa_excellon_group = FAExcPrefGroupUI()
self.fa_excellon_group.setMinimumWidth(260)
self.fa_gcode_group = FAGcoPrefGroupUI()
self.fa_gcode_group.setMinimumWidth(260)
self.vlay.addWidget(self.fa_excellon_group)
self.vlay.addWidget(self.fa_gcode_group)
self.fa_gerber_group = FAGrbPrefGroupUI()
self.fa_gerber_group.setMinimumWidth(260)
self.layout.addWidget(self.fa_excellon_group)
self.layout.addWidget(self.fa_gcode_group)
self.kw_group = AutoCompletePrefGroupUI()
self.kw_group.setMinimumWidth(260)
self.layout.addLayout(self.vlay)
self.layout.addWidget(self.fa_gerber_group)
self.layout.addWidget(self.kw_group)
self.layout.addStretch()
@ -4081,6 +4090,23 @@ class GeneralGUISetGroupUI(OptionsGroupUI):
else:
self.axis_font_size_spinner.set_value(8)
# TextBox Font Size
self.textbox_font_size_label = QtWidgets.QLabel('%s:' % _('Textbox Font Size'))
self.textbox_font_size_label.setToolTip(
_("This sets the font size for the Textbox GUI\n"
"elements that are used in FlatCAM.")
)
self.textbox_font_size_spinner = FCSpinner()
self.textbox_font_size_spinner.setRange(8, 40)
self.textbox_font_size_spinner.setWrapping(True)
settings = QSettings("Open Source", "FlatCAM")
if settings.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)
# Just to add empty rows
self.spacelabel = QtWidgets.QLabel('')
@ -4158,6 +4184,7 @@ class GeneralGUISetGroupUI(OptionsGroupUI):
self.form_box.addRow(QtWidgets.QLabel(''))
self.form_box.addRow(self.notebook_font_size_label, self.notebook_font_size_spinner)
self.form_box.addRow(self.axis_font_size_label, self.axis_font_size_spinner)
self.form_box.addRow(self.textbox_font_size_label, self.textbox_font_size_spinner)
self.form_box.addRow(QtWidgets.QLabel(''))
self.form_box.addRow(self.splash_label, self.splash_cb)
self.form_box.addRow(self.shell_startup_label, self.shell_startup_cb)
@ -6471,6 +6498,14 @@ 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)
else:
tb_fsize = 10
font = QtGui.QFont()
font.setPointSize(tb_fsize)
# Prepend to G-Code
prependlabel = QtWidgets.QLabel('%s:' % _('Prepend to G-Code'))
prependlabel.setToolTip(
@ -6481,6 +6516,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
self.prepend_text = FCTextArea()
self.layout.addWidget(self.prepend_text)
self.prepend_text.setFont(font)
# Append text to G-Code
appendlabel = QtWidgets.QLabel('%s:' % _('Append to G-Code'))
@ -6493,6 +6529,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
self.append_text = FCTextArea()
self.layout.addWidget(self.append_text)
self.append_text.setFont(font)
self.layout.addStretch()
@ -6528,8 +6565,17 @@ 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)
else:
tb_fsize = 10
font = QtGui.QFont()
font.setPointSize(tb_fsize)
self.toolchange_text = FCTextArea()
self.layout.addWidget(self.toolchange_text)
self.toolchange_text.setFont(font)
hlay = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay)
@ -7834,11 +7880,17 @@ 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)
else:
tb_fsize = 10
self.exc_list_text = FCTextArea()
self.exc_list_text.setReadOnly(True)
# self.exc_list_text.sizeHint(custom_sizehint=150)
font = QtGui.QFont()
font.setPointSize(12)
font.setPointSize(tb_fsize)
self.exc_list_text.setFont(font)
self.vertical_lay.addWidget(self.exc_list_text)
@ -7900,11 +7952,17 @@ 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)
else:
tb_fsize = 10
self.gco_list_text = FCTextArea()
self.gco_list_text.setReadOnly(True)
# self.gco_list_text.sizeHint(custom_sizehint=150)
font = QtGui.QFont()
font.setPointSize(12)
font.setPointSize(tb_fsize)
self.gco_list_text.setFont(font)
self.layout.addWidget(self.gco_list_text)
@ -7963,12 +8021,18 @@ 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)
else:
tb_fsize = 10
self.grb_list_text = FCTextArea()
self.grb_list_text.setReadOnly(True)
# self.grb_list_text.sizeHint(custom_sizehint=150)
self.layout.addWidget(self.grb_list_text)
font = QtGui.QFont()
font.setPointSize(12)
font.setPointSize(tb_fsize)
self.grb_list_text.setFont(font)
self.ext_label = QtWidgets.QLabel('%s:' % _("Extension"))
@ -8001,6 +8065,69 @@ class FAGrbPrefGroupUI(OptionsGroupUI):
# self.layout.addStretch()
class AutoCompletePrefGroupUI(OptionsGroupUI):
def __init__(self, parent=None):
# OptionsGroupUI.__init__(self, "Gerber File associations Preferences", parent=None)
super().__init__(self, parent=parent)
self.setTitle(str(_("Autocompleter Keywords")))
self.restore_btn = FCButton(_("Restore"))
self.restore_btn.setToolTip(_("Restore the autocompleter keywords list to the default state."))
self.del_all_btn = FCButton(_("Delete All"))
self.del_all_btn.setToolTip(_("Delete all autocompleter keywords from the list."))
hlay0 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay0)
hlay0.addWidget(self.restore_btn)
hlay0.addWidget(self.del_all_btn)
# ## Gerber associations
self.grb_list_label = QtWidgets.QLabel("<b>%s:</b>" % _("Keywords list"))
self.grb_list_label.setToolTip(
_("List of keywords used by\n"
"the autocompleter in FlatCAM.\n"
"The autocompleter is installed\n"
"in the Code Editor and for the Tcl Shell.")
)
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)
else:
tb_fsize = 10
self.kw_list_text = FCTextArea()
self.kw_list_text.setReadOnly(True)
# self.grb_list_text.sizeHint(custom_sizehint=150)
self.layout.addWidget(self.kw_list_text)
font = QtGui.QFont()
font.setPointSize(tb_fsize)
self.kw_list_text.setFont(font)
self.kw_label = QtWidgets.QLabel('%s:' % _("Extension"))
self.kw_label.setToolTip(_("A keyword to be added or deleted to the list."))
self.kw_entry = FCEntry()
hlay1 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay1)
hlay1.addWidget(self.kw_label)
hlay1.addWidget(self.kw_entry)
self.add_btn = FCButton(_("Add keyword"))
self.add_btn.setToolTip(_("Add a keyword to the list"))
self.del_btn = FCButton(_("Delete keyword"))
self.del_btn.setToolTip(_("Delete a keyword from the list"))
hlay2 = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay2)
hlay2.addWidget(self.add_btn)
hlay2.addWidget(self.del_btn)
# self.layout.addStretch()
class FlatCAMActivityView(QtWidgets.QWidget):
def __init__(self, parent=None):