- some GUI elements changes

This commit is contained in:
Marius Stanciu 2019-02-23 06:11:42 +02:00 committed by Marius S
parent 21f970204e
commit 2843810ab3
14 changed files with 194 additions and 188 deletions

View File

@ -776,127 +776,121 @@ class App(QtCore.QObject):
# QtCore.QTimer.singleShot(self.defaults["global_defaults_save_period_ms"], auto_save_defaults)
# self.options_form = PreferencesUI()
self.general_options_form = GeneralPreferencesUI()
self.gerber_options_form = GerberPreferencesUI()
self.excellon_options_form = ExcellonPreferencesUI()
self.geometry_options_form = GeometryPreferencesUI()
self.cncjob_options_form = CNCJobPreferencesUI()
self.tools_options_form = ToolsPreferencesUI()
self.options_form_fields = {
"units": self.general_options_form.general_app_group.units_radio,
"global_gridx": self.general_options_form.general_gui_group.gridx_entry,
"global_gridy": self.general_options_form.general_gui_group.gridy_entry,
"global_snap_max": self.general_options_form.general_gui_group.snap_max_dist_entry,
"units": self.ui.general_options_form.general_app_group.units_radio,
"global_gridx": self.ui.general_options_form.general_gui_group.gridx_entry,
"global_gridy": self.ui.general_options_form.general_gui_group.gridy_entry,
"global_snap_max": self.ui.general_options_form.general_gui_group.snap_max_dist_entry,
"gerber_plot": self.gerber_options_form.gerber_gen_group.plot_cb,
"gerber_solid": self.gerber_options_form.gerber_gen_group.solid_cb,
"gerber_multicolored": self.gerber_options_form.gerber_gen_group.multicolored_cb,
"gerber_plot": self.ui.gerber_options_form.gerber_gen_group.plot_cb,
"gerber_solid": self.ui.gerber_options_form.gerber_gen_group.solid_cb,
"gerber_multicolored": self.ui.gerber_options_form.gerber_gen_group.multicolored_cb,
"gerber_isotooldia": self.gerber_options_form.gerber_opt_group.iso_tool_dia_entry,
"gerber_isopasses": self.gerber_options_form.gerber_opt_group.iso_width_entry,
"gerber_isooverlap": self.gerber_options_form.gerber_opt_group.iso_overlap_entry,
"gerber_combine_passes": self.gerber_options_form.gerber_opt_group.combine_passes_cb,
"gerber_noncoppermargin": self.gerber_options_form.gerber_opt_group.noncopper_margin_entry,
"gerber_noncopperrounded": self.gerber_options_form.gerber_opt_group.noncopper_rounded_cb,
"gerber_bboxmargin": self.gerber_options_form.gerber_opt_group.bbmargin_entry,
"gerber_bboxrounded": self.gerber_options_form.gerber_opt_group.bbrounded_cb,
"gerber_isotooldia": self.ui.gerber_options_form.gerber_opt_group.iso_tool_dia_entry,
"gerber_isopasses": self.ui.gerber_options_form.gerber_opt_group.iso_width_entry,
"gerber_isooverlap": self.ui.gerber_options_form.gerber_opt_group.iso_overlap_entry,
"gerber_combine_passes": self.ui.gerber_options_form.gerber_opt_group.combine_passes_cb,
"gerber_noncoppermargin": self.ui.gerber_options_form.gerber_opt_group.noncopper_margin_entry,
"gerber_noncopperrounded": self.ui.gerber_options_form.gerber_opt_group.noncopper_rounded_cb,
"gerber_bboxmargin": self.ui.gerber_options_form.gerber_opt_group.bbmargin_entry,
"gerber_bboxrounded": self.ui.gerber_options_form.gerber_opt_group.bbrounded_cb,
"excellon_plot": self.excellon_options_form.excellon_gen_group.plot_cb,
"excellon_solid": self.excellon_options_form.excellon_gen_group.solid_cb,
"excellon_format_upper_in": self.excellon_options_form.excellon_gen_group.excellon_format_upper_in_entry,
"excellon_format_lower_in": self.excellon_options_form.excellon_gen_group.excellon_format_lower_in_entry,
"excellon_format_upper_mm": self.excellon_options_form.excellon_gen_group.excellon_format_upper_mm_entry,
"excellon_format_lower_mm": self.excellon_options_form.excellon_gen_group.excellon_format_lower_mm_entry,
"excellon_zeros": self.excellon_options_form.excellon_gen_group.excellon_zeros_radio,
"excellon_units": self.excellon_options_form.excellon_gen_group.excellon_units_radio,
"excellon_optimization_type": self.excellon_options_form.excellon_gen_group.excellon_optimization_radio,
"excellon_feedrate_rapid": self.excellon_options_form.excellon_gen_group.feedrate_rapid_entry,
"excellon_toolchangexy": self.excellon_options_form.excellon_gen_group.toolchangexy_entry,
"excellon_f_plunge": self.excellon_options_form.excellon_gen_group.fplunge_cb,
"excellon_startz": self.excellon_options_form.excellon_gen_group.estartz_entry,
"excellon_endz": self.excellon_options_form.excellon_gen_group.eendz_entry,
"excellon_plot": self.ui.excellon_options_form.excellon_gen_group.plot_cb,
"excellon_solid": self.ui.excellon_options_form.excellon_gen_group.solid_cb,
"excellon_format_upper_in": self.ui.excellon_options_form.excellon_gen_group.excellon_format_upper_in_entry,
"excellon_format_lower_in": self.ui.excellon_options_form.excellon_gen_group.excellon_format_lower_in_entry,
"excellon_format_upper_mm": self.ui.excellon_options_form.excellon_gen_group.excellon_format_upper_mm_entry,
"excellon_format_lower_mm": self.ui.excellon_options_form.excellon_gen_group.excellon_format_lower_mm_entry,
"excellon_zeros": self.ui.excellon_options_form.excellon_gen_group.excellon_zeros_radio,
"excellon_units": self.ui.excellon_options_form.excellon_gen_group.excellon_units_radio,
"excellon_optimization_type": self.ui.excellon_options_form.excellon_gen_group.excellon_optimization_radio,
"excellon_feedrate_rapid": self.ui.excellon_options_form.excellon_gen_group.feedrate_rapid_entry,
"excellon_toolchangexy": self.ui.excellon_options_form.excellon_gen_group.toolchangexy_entry,
"excellon_f_plunge": self.ui.excellon_options_form.excellon_gen_group.fplunge_cb,
"excellon_startz": self.ui.excellon_options_form.excellon_gen_group.estartz_entry,
"excellon_endz": self.ui.excellon_options_form.excellon_gen_group.eendz_entry,
"excellon_drillz": self.excellon_options_form.excellon_opt_group.cutz_entry,
"excellon_travelz": self.excellon_options_form.excellon_opt_group.travelz_entry,
"excellon_feedrate": self.excellon_options_form.excellon_opt_group.feedrate_entry,
"excellon_spindlespeed": self.excellon_options_form.excellon_opt_group.spindlespeed_entry,
"excellon_dwell": self.excellon_options_form.excellon_opt_group.dwell_cb,
"excellon_dwelltime": self.excellon_options_form.excellon_opt_group.dwelltime_entry,
"excellon_toolchange": self.excellon_options_form.excellon_opt_group.toolchange_cb,
"excellon_toolchangez": self.excellon_options_form.excellon_opt_group.toolchangez_entry,
"excellon_tooldia": self.excellon_options_form.excellon_opt_group.tooldia_entry,
"excellon_ppname_e": self.excellon_options_form.excellon_opt_group.pp_excellon_name_cb,
"excellon_drillz": self.ui.excellon_options_form.excellon_opt_group.cutz_entry,
"excellon_travelz": self.ui.excellon_options_form.excellon_opt_group.travelz_entry,
"excellon_feedrate": self.ui.excellon_options_form.excellon_opt_group.feedrate_entry,
"excellon_spindlespeed": self.ui.excellon_options_form.excellon_opt_group.spindlespeed_entry,
"excellon_dwell": self.ui.excellon_options_form.excellon_opt_group.dwell_cb,
"excellon_dwelltime": self.ui.excellon_options_form.excellon_opt_group.dwelltime_entry,
"excellon_toolchange": self.ui.excellon_options_form.excellon_opt_group.toolchange_cb,
"excellon_toolchangez": self.ui.excellon_options_form.excellon_opt_group.toolchangez_entry,
"excellon_tooldia": self.ui.excellon_options_form.excellon_opt_group.tooldia_entry,
"excellon_ppname_e": self.ui.excellon_options_form.excellon_opt_group.pp_excellon_name_cb,
"geometry_plot": self.geometry_options_form.geometry_gen_group.plot_cb,
"geometry_cnctooldia": self.geometry_options_form.geometry_gen_group.cnctooldia_entry,
"geometry_segx": self.geometry_options_form.geometry_gen_group.segx_entry,
"geometry_segy": self.geometry_options_form.geometry_gen_group.segy_entry,
"geometry_feedrate_rapid": self.geometry_options_form.geometry_gen_group.cncfeedrate_rapid_entry,
"geometry_f_plunge": self.geometry_options_form.geometry_gen_group.fplunge_cb,
"geometry_toolchangexy": self.geometry_options_form.geometry_gen_group.toolchangexy_entry,
"geometry_startz": self.geometry_options_form.geometry_gen_group.gstartz_entry,
"geometry_endz": self.geometry_options_form.geometry_gen_group.gendz_entry,
"geometry_extracut": self.geometry_options_form.geometry_gen_group.extracut_cb,
"geometry_plot": self.ui.geometry_options_form.geometry_gen_group.plot_cb,
"geometry_cnctooldia": self.ui.geometry_options_form.geometry_gen_group.cnctooldia_entry,
"geometry_segx": self.ui.geometry_options_form.geometry_gen_group.segx_entry,
"geometry_segy": self.ui.geometry_options_form.geometry_gen_group.segy_entry,
"geometry_feedrate_rapid": self.ui.geometry_options_form.geometry_gen_group.cncfeedrate_rapid_entry,
"geometry_f_plunge": self.ui.geometry_options_form.geometry_gen_group.fplunge_cb,
"geometry_toolchangexy": self.ui.geometry_options_form.geometry_gen_group.toolchangexy_entry,
"geometry_startz": self.ui.geometry_options_form.geometry_gen_group.gstartz_entry,
"geometry_endz": self.ui.geometry_options_form.geometry_gen_group.gendz_entry,
"geometry_extracut": self.ui.geometry_options_form.geometry_gen_group.extracut_cb,
"geometry_cutz": self.geometry_options_form.geometry_opt_group.cutz_entry,
"geometry_travelz": self.geometry_options_form.geometry_opt_group.travelz_entry,
"geometry_feedrate": self.geometry_options_form.geometry_opt_group.cncfeedrate_entry,
"geometry_feedrate_z": self.geometry_options_form.geometry_opt_group.cncplunge_entry,
"geometry_spindlespeed": self.geometry_options_form.geometry_opt_group.cncspindlespeed_entry,
"geometry_dwell": self.geometry_options_form.geometry_opt_group.dwell_cb,
"geometry_dwelltime": self.geometry_options_form.geometry_opt_group.dwelltime_entry,
"geometry_ppname_g": self.geometry_options_form.geometry_opt_group.pp_geometry_name_cb,
"geometry_toolchange": self.geometry_options_form.geometry_opt_group.toolchange_cb,
"geometry_toolchangez": self.geometry_options_form.geometry_opt_group.toolchangez_entry,
"geometry_depthperpass": self.geometry_options_form.geometry_opt_group.depthperpass_entry,
"geometry_multidepth": self.geometry_options_form.geometry_opt_group.multidepth_cb,
"geometry_cutz": self.ui.geometry_options_form.geometry_opt_group.cutz_entry,
"geometry_travelz": self.ui.geometry_options_form.geometry_opt_group.travelz_entry,
"geometry_feedrate": self.ui.geometry_options_form.geometry_opt_group.cncfeedrate_entry,
"geometry_feedrate_z": self.ui.geometry_options_form.geometry_opt_group.cncplunge_entry,
"geometry_spindlespeed": self.ui.geometry_options_form.geometry_opt_group.cncspindlespeed_entry,
"geometry_dwell": self.ui.geometry_options_form.geometry_opt_group.dwell_cb,
"geometry_dwelltime": self.ui.geometry_options_form.geometry_opt_group.dwelltime_entry,
"geometry_ppname_g": self.ui.geometry_options_form.geometry_opt_group.pp_geometry_name_cb,
"geometry_toolchange": self.ui.geometry_options_form.geometry_opt_group.toolchange_cb,
"geometry_toolchangez": self.ui.geometry_options_form.geometry_opt_group.toolchangez_entry,
"geometry_depthperpass": self.ui.geometry_options_form.geometry_opt_group.depthperpass_entry,
"geometry_multidepth": self.ui.geometry_options_form.geometry_opt_group.multidepth_cb,
"cncjob_plot": self.cncjob_options_form.cncjob_gen_group.plot_cb,
"cncjob_tooldia": self.cncjob_options_form.cncjob_gen_group.tooldia_entry,
"cncjob_plot": self.ui.cncjob_options_form.cncjob_gen_group.plot_cb,
"cncjob_tooldia": self.ui.cncjob_options_form.cncjob_gen_group.tooldia_entry,
"cncjob_prepend": self.cncjob_options_form.cncjob_opt_group.prepend_text,
"cncjob_append": self.cncjob_options_form.cncjob_opt_group.append_text,
"cncjob_prepend": self.ui.cncjob_options_form.cncjob_opt_group.prepend_text,
"cncjob_append": self.ui.cncjob_options_form.cncjob_opt_group.append_text,
"tools_ncctools": self.tools_options_form.tools_ncc_group.ncc_tool_dia_entry,
"tools_nccoverlap": self.tools_options_form.tools_ncc_group.ncc_overlap_entry,
"tools_nccmargin": self.tools_options_form.tools_ncc_group.ncc_margin_entry,
"tools_ncctools": self.ui.tools_options_form.tools_ncc_group.ncc_tool_dia_entry,
"tools_nccoverlap": self.ui.tools_options_form.tools_ncc_group.ncc_overlap_entry,
"tools_nccmargin": self.ui.tools_options_form.tools_ncc_group.ncc_margin_entry,
"tools_cutouttooldia": self.tools_options_form.tools_cutout_group.cutout_tooldia_entry,
"tools_cutoutmargin": self.tools_options_form.tools_cutout_group.cutout_margin_entry,
"tools_cutoutgapsize": self.tools_options_form.tools_cutout_group.cutout_gap_entry,
"tools_gaps_rect": self.tools_options_form.tools_cutout_group.gaps_radio,
"tools_gaps_ff": self.tools_options_form.tools_cutout_group.gaps_combo,
"tools_cutouttooldia": self.ui.tools_options_form.tools_cutout_group.cutout_tooldia_entry,
"tools_cutoutmargin": self.ui.tools_options_form.tools_cutout_group.cutout_margin_entry,
"tools_cutoutgapsize": self.ui.tools_options_form.tools_cutout_group.cutout_gap_entry,
"tools_gaps_rect": self.ui.tools_options_form.tools_cutout_group.gaps_radio,
"tools_gaps_ff": self.ui.tools_options_form.tools_cutout_group.gaps_combo,
"tools_painttooldia": self.tools_options_form.tools_paint_group.painttooldia_entry,
"tools_paintoverlap": self.tools_options_form.tools_paint_group.paintoverlap_entry,
"tools_paintmargin": self.tools_options_form.tools_paint_group.paintmargin_entry,
"tools_paintmethod": self.tools_options_form.tools_paint_group.paintmethod_combo,
"tools_selectmethod": self.tools_options_form.tools_paint_group.selectmethod_combo,
"tools_pathconnect": self.tools_options_form.tools_paint_group.pathconnect_cb,
"tools_paintcontour": self.tools_options_form.tools_paint_group.contour_cb,
"tools_painttooldia": self.ui.tools_options_form.tools_paint_group.painttooldia_entry,
"tools_paintoverlap": self.ui.tools_options_form.tools_paint_group.paintoverlap_entry,
"tools_paintmargin": self.ui.tools_options_form.tools_paint_group.paintmargin_entry,
"tools_paintmethod": self.ui.tools_options_form.tools_paint_group.paintmethod_combo,
"tools_selectmethod": self.ui.tools_options_form.tools_paint_group.selectmethod_combo,
"tools_pathconnect": self.ui.tools_options_form.tools_paint_group.pathconnect_cb,
"tools_paintcontour": self.ui.tools_options_form.tools_paint_group.contour_cb,
"tools_2sided_mirror_axis": self.tools_options_form.tools_2sided_group.mirror_axis_radio,
"tools_2sided_axis_loc": self.tools_options_form.tools_2sided_group.axis_location_radio,
"tools_2sided_drilldia": self.tools_options_form.tools_2sided_group.drill_dia_entry,
"tools_2sided_mirror_axis": self.ui.tools_options_form.tools_2sided_group.mirror_axis_radio,
"tools_2sided_axis_loc": self.ui.tools_options_form.tools_2sided_group.axis_location_radio,
"tools_2sided_drilldia": self.ui.tools_options_form.tools_2sided_group.drill_dia_entry,
"tools_film_type": self.tools_options_form.tools_film_group.film_type_radio,
"tools_film_boundary": self.tools_options_form.tools_film_group.film_boundary_entry,
"tools_film_scale": self.tools_options_form.tools_film_group.film_scale_entry,
"tools_film_type": self.ui.tools_options_form.tools_film_group.film_type_radio,
"tools_film_boundary": self.ui.tools_options_form.tools_film_group.film_boundary_entry,
"tools_film_scale": self.ui.tools_options_form.tools_film_group.film_scale_entry,
"tools_panelize_spacing_columns": self.tools_options_form.tools_panelize_group.pspacing_columns,
"tools_panelize_spacing_rows": self.tools_options_form.tools_panelize_group.pspacing_rows,
"tools_panelize_columns": self.tools_options_form.tools_panelize_group.pcolumns,
"tools_panelize_rows": self.tools_options_form.tools_panelize_group.prows,
"tools_panelize_constrain": self.tools_options_form.tools_panelize_group.pconstrain_cb,
"tools_panelize_constrainx": self.tools_options_form.tools_panelize_group.px_width_entry,
"tools_panelize_constrainy": self.tools_options_form.tools_panelize_group.py_height_entry
"tools_panelize_spacing_columns": self.ui.tools_options_form.tools_panelize_group.pspacing_columns,
"tools_panelize_spacing_rows": self.ui.tools_options_form.tools_panelize_group.pspacing_rows,
"tools_panelize_columns": self.ui.tools_options_form.tools_panelize_group.pcolumns,
"tools_panelize_rows": self.ui.tools_options_form.tools_panelize_group.prows,
"tools_panelize_constrain": self.ui.tools_options_form.tools_panelize_group.pconstrain_cb,
"tools_panelize_constrainx": self.ui.tools_options_form.tools_panelize_group.px_width_entry,
"tools_panelize_constrainy": self.ui.tools_options_form.tools_panelize_group.py_height_entry
}
for name in list(self.postprocessors.keys()):
self.geometry_options_form.geometry_opt_group.pp_geometry_name_cb.addItem(name)
self.excellon_options_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
self.ui.geometry_options_form.geometry_opt_group.pp_geometry_name_cb.addItem(name)
self.ui.excellon_options_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
self.options = LoudDict()
self.options.set_change_callback(self.on_options_dict_change)
@ -1298,7 +1292,7 @@ class App(QtCore.QObject):
###############################
### GUI PREFERENCES SIGNALS ###
###############################
self.general_options_form.general_app_group.units_radio.group_toggle_fn = self.on_toggle_units
self.ui.general_options_form.general_app_group.units_radio.group_toggle_fn = self.on_toggle_units
self.ui.general_defaults_form.general_app_group.language_apply_btn.clicked.connect(self.on_language_apply)
###############################
@ -1360,7 +1354,7 @@ class App(QtCore.QObject):
self.on_excellon_defaults_button)
# Load the defaults values into the Excellon Format and Excellon Zeros fields
self.excellon_options_form.excellon_opt_group.excellon_defaults_button.clicked.connect(
self.ui.excellon_options_form.excellon_opt_group.excellon_defaults_button.clicked.connect(
self.on_excellon_options_button)
# this is a flag to signal to other tools that the ui tooltab is locked and not accessible
@ -2946,7 +2940,7 @@ class App(QtCore.QObject):
return
# If option is the same, then ignore
if self.general_options_form.general_app_group.units_radio.get_value().upper() == self.options["units"].upper():
if self.ui.general_options_form.general_app_group.units_radio.get_value().upper() == self.options["units"].upper():
self.log.debug("on_toggle_units(): Same as options, so ignoring.")
return
@ -2980,7 +2974,7 @@ class App(QtCore.QObject):
# The scaling factor depending on choice of units.
factor = 1/25.4
if self.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
if self.ui.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
factor = 25.4
@ -3010,7 +3004,7 @@ class App(QtCore.QObject):
self.ui.grid_gap_y_entry.set_value(float(self.ui.grid_gap_y_entry.get_value()) * factor)
for obj in self.collection.get_list():
units = self.general_options_form.general_app_group.units_radio.get_value().upper()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().upper()
obj.convert_units(units)
# make that the properties stored in the object are also updated
@ -3030,10 +3024,10 @@ class App(QtCore.QObject):
else:
# Undo toggling
self.toggle_units_ignore = True
if self.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
self.general_options_form.general_app_group.units_radio.set_value('IN')
if self.ui.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
self.ui.general_options_form.general_app_group.units_radio.set_value('IN')
else:
self.general_options_form.general_app_group.units_radio.set_value('MM')
self.ui.general_options_form.general_app_group.units_radio.set_value('MM')
self.toggle_units_ignore = False
self.inform.emit("[WARNING_NOTCL]Units conversion cancelled.")
@ -3041,9 +3035,9 @@ class App(QtCore.QObject):
def on_toggle_units_click(self):
if self.options["units"] == 'MM':
self.general_options_form.general_app_group.units_radio.set_value("IN")
self.ui.general_options_form.general_app_group.units_radio.set_value("IN")
else:
self.general_options_form.general_app_group.units_radio.set_value("MM")
self.ui.general_options_form.general_app_group.units_radio.set_value("MM")
self.on_toggle_units()
def on_language_apply(self):
@ -3138,12 +3132,12 @@ class App(QtCore.QObject):
self.cnc_form = self.ui.cncjob_defaults_form
self.tools_form = self.ui.tools_defaults_form
elif sel == 1:
self.gen_form = self.general_options_form
self.ger_form = self.gerber_options_form
self.exc_form = self.excellon_options_form
self.geo_form = self.geometry_options_form
self.cnc_form = self.cncjob_options_form
self.tools_form = self.tools_options_form
self.gen_form = self.ui.general_options_form
self.ger_form = self.ui.gerber_options_form
self.exc_form = self.ui.excellon_options_form
self.geo_form = self.ui.geometry_options_form
self.cnc_form = self.ui.cncjob_options_form
self.tools_form = self.ui.tools_options_form
else:
return
@ -3671,7 +3665,7 @@ class App(QtCore.QObject):
def on_tool_add_keypress(self):
## Current application units in Upper Case
self.units = self.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.ui.general_options_form.general_app_group.units_radio.get_value().upper()
notebook_widget_name = self.ui.notebook.currentWidget().objectName()
@ -4262,7 +4256,7 @@ class App(QtCore.QObject):
return 0
def populate_cmenu_grids(self):
units = self.general_options_form.general_app_group.units_radio.get_value().lower()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().lower()
self.ui.cmenu_gridmenu.clear()
sorted_list = sorted(self.defaults["global_grid_context_menu"][str(units)])
@ -4283,7 +4277,7 @@ class App(QtCore.QObject):
def on_grid_add(self):
## Current application units in lower Case
units = self.general_options_form.general_app_group.units_radio.get_value().lower()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().lower()
grid_add_popup = FCInputDialog(title="New Grid ...",
text='Enter a Grid VAlue:',
@ -4310,7 +4304,7 @@ class App(QtCore.QObject):
def on_grid_delete(self):
## Current application units in lower Case
units = self.general_options_form.general_app_group.units_radio.get_value().lower()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().lower()
grid_del_popup = FCInputDialog(title="Delete Grid ...",
text='Enter a Grid Value:',
@ -5754,7 +5748,7 @@ class App(QtCore.QObject):
ezeros = self.defaults["excellon_exp_zeros"]
eformat = self.defaults[ "excellon_exp_format"]
fc_units = self.general_options_form.general_app_group.units_radio.get_value().upper()
fc_units = self.ui.general_options_form.general_app_group.units_radio.get_value().upper()
if fc_units == 'MM':
factor = 1 if eunits == 'METRIC' else 0.03937
else:
@ -5872,7 +5866,7 @@ class App(QtCore.QObject):
return "Could not retrieve object: %s" % obj_name
# updated units
units = self.general_options_form.general_app_group.units_radio.get_value().upper()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().upper()
if units == 'IN' or units == 'INCH':
units = 'INCH'
elif units == 'MM' or units == 'METIRC':
@ -5927,7 +5921,7 @@ class App(QtCore.QObject):
"Only Geometry and Gerber are supported")
return
units = self.general_options_form.general_app_group.units_radio.get_value().upper()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().upper()
def obj_init(geo_obj, app_obj):
geo_obj.import_svg(filename, obj_type, units=units)
@ -5969,7 +5963,7 @@ class App(QtCore.QObject):
"Only Geometry and Gerber are supported")
return
units = self.general_options_form.general_app_group.units_radio.get_value().upper()
units = self.ui.general_options_form.general_app_group.units_radio.get_value().upper()
def obj_init(geo_obj, app_obj):
geo_obj.import_dxf(filename, obj_type, units=units)
@ -6018,7 +6012,7 @@ class App(QtCore.QObject):
# Object name
name = outname or filename.split('/')[-1].split('\\')[-1]
units = self.general_options_form.general_app_group.units_radio.get_value()
units = self.ui.general_options_form.general_app_group.units_radio.get_value()
self.new_object(obj_type, name, obj_init)
self.progress.emit(20)

View File

@ -346,7 +346,7 @@ class TextInputTool(FlatCAMTool):
font_name=self.font_name,
font_size=font_to_geo_size,
font_type=font_to_geo_type,
units=self.app.general_options_form.general_app_group.units_radio.get_value().upper())
units=self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper())
def font_family(self, font):
self.text_input_entry.selectAll()
@ -1483,7 +1483,7 @@ class TransformEditorTool(FlatCAMTool):
"[WARNING_NOTCL] Geometry shape rotate cancelled...")
def on_offx_key(self):
units = self.app.general_options_form.general_app_group.units_radio.get_value().lower()
units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower()
val_box = FCInputDialog(title="Offset on X axis ...",
text=('Enter a distance Value (%s):' % str(units)),
@ -1502,7 +1502,7 @@ class TransformEditorTool(FlatCAMTool):
"[WARNING_NOTCL] Geometry shape offset X cancelled...")
def on_offy_key(self):
units = self.app.general_options_form.general_app_group.units_radio.get_value().lower()
units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower()
val_box = FCInputDialog(title="Offset on Y axis ...",
text=('Enter a distance Value (%s):' % str(units)),
@ -4985,7 +4985,7 @@ class FlatCAMExcEditor(QtCore.QObject):
self.move_timer.setSingleShot(True)
## Current application units in Upper Case
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
self.key = None # Currently pressed key
self.modifiers = None
@ -5059,7 +5059,7 @@ class FlatCAMExcEditor(QtCore.QObject):
def set_ui(self):
# updated units
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
self.olddia_newdia.clear()
self.tool2tooldia.clear()
@ -5099,7 +5099,7 @@ class FlatCAMExcEditor(QtCore.QObject):
pass
# updated units
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
# make a new name for the new Excellon object (the one with edited content)
self.edited_obj_name = self.exc_obj.options['name']

View File

@ -1458,6 +1458,13 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
self.cncjob_defaults_form = CNCJobPreferencesUI()
self.tools_defaults_form = ToolsPreferencesUI()
self.general_options_form = GeneralPreferencesUI()
self.gerber_options_form = GerberPreferencesUI()
self.excellon_options_form = ExcellonPreferencesUI()
self.geometry_options_form = GeometryPreferencesUI()
self.cncjob_options_form = CNCJobPreferencesUI()
self.tools_options_form = ToolsPreferencesUI()
QtWidgets.qApp.installEventFilter(self)
# restore the Toolbar State from file
@ -1885,9 +1892,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
# Change Units
if key == QtCore.Qt.Key_Q:
if self.app.options["units"] == 'MM':
self.app.general_options_form.general_app_group.units_radio.set_value("IN")
self.app.ui.general_options_form.general_app_group.units_radio.set_value("IN")
else:
self.app.general_options_form.general_app_group.units_radio.set_value("MM")
self.app.ui.general_options_form.general_app_group.units_radio.set_value("MM")
self.app.on_toggle_units()
# Rotate Object by 90 degree CW
@ -2354,7 +2361,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
if key == QtCore.Qt.Key_T or key == 'T':
self.app.exc_editor.launched_from_shortcuts = True
## Current application units in Upper Case
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.general_defaults_group.general_app_group.units_radio.get_value().upper()
tool_add_popup = FCInputDialog(title="New Tool ...",
text='Enter a Tool Diameter:',
min=0.0000, max=99.9999, decimals=4)

View File

@ -3533,7 +3533,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
self.ui.geo_tools_table.setCurrentItem(self.ui.geo_tools_table.item(row, 0))
def export_dxf(self):
units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
dwg = None
try:
dwg = ezdxf.new('R2010')

View File

@ -451,9 +451,9 @@ class ObjectCollection(QtCore.QAbstractItemModel):
# # Change Units
# if key == QtCore.Qt.Key_Q:
# if self.app.options["units"] == 'MM':
# self.app.general_options_form.general_app_group.units_radio.set_value("IN")
# self.app.ui.general_options_form.general_app_group.units_radio.set_value("IN")
# else:
# self.app.general_options_form.general_app_group.units_radio.set_value("MM")
# self.app.ui.general_options_form.general_app_group.units_radio.set_value("MM")
# self.app.on_toggle_units()
#
# # Rotate Object by 90 degree CW

View File

@ -65,7 +65,7 @@ class PlotCanvas(QtCore.QObject):
self.draw_workspace()
# if self.app.defaults['global_workspace'] is True:
# if self.app.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
# if self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
# self.wkspace_t = Line(pos=)
self.shape_collections = []
@ -92,7 +92,7 @@ class PlotCanvas(QtCore.QObject):
a3p_mm = np.array([(0, 0), (297, 0), (297, 420), (0, 420)])
a3l_mm = np.array([(0, 0), (420, 0), (420, 297), (0, 297)])
if self.app.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
if self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper() == 'MM':
if self.app.defaults['global_workspaceT'] == 'A4P':
a = a4p_mm
elif self.app.defaults['global_workspaceT'] == 'A4L':

View File

@ -17,6 +17,7 @@ CAD program, and create G-Code for Isolation routing.
- added true fullscreen support (for Windows OS)
- added the ability of context menu inside the GuiElements.FCCombobox() object.
- remade the UI for ToolSolderPaste. The object comboboxes now have context menu's that allow object deletion. Also the last object created is set as current item in comboboxes.
- some GUI elements changes
21.02.2019

View File

@ -6314,7 +6314,7 @@ class CNCjob(Geometry):
temp_gcode = ''
header_start = False
header_stop = False
units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
lines = StringIO(g)
for line in lines:

View File

@ -238,7 +238,7 @@ class ToolCalculator(FlatCAMTool):
FlatCAMTool.install(self, icon, separator, shortcut='ALT+C', **kwargs)
def set_tool_ui(self):
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
## Initialize form
self.mm_entry.set_value('0')

View File

@ -12,7 +12,7 @@ class Measurement(FlatCAMTool):
def __init__(self, app):
FlatCAMTool.__init__(self, app)
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().lower()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower()
## Title
title_label = QtWidgets.QLabel("<font size=4><b>%s</b></font><br>" % self.toolName)
@ -173,7 +173,7 @@ class Measurement(FlatCAMTool):
# Switch notebook to tool page
self.app.ui.notebook.setCurrentWidget(self.app.ui.tool_tab)
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().lower()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower()
self.show()
def toggle(self):
@ -210,7 +210,7 @@ class Measurement(FlatCAMTool):
else:
# ENABLE the Measuring TOOL
self.active = True
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().lower()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower()
# we disconnect the mouse/key handlers from wherever the measurement tool was called
if self.app.call_source == 'app':

View File

@ -339,13 +339,13 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.obj_name = ""
self.ncc_obj = None
self.tool_type_item_options = ["C1", "C2", "C3", "C4", "B", "V"]
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
def build_ui(self):
self.ui_disconnect()
# updated units
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
if self.units == "IN":
self.addtool_entry.set_value(0.039)

View File

@ -347,7 +347,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.paintoverlap_entry.set_value(self.default_data["paintoverlap"])
# updated units
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
if self.units == "IN":
self.addtool_entry.set_value(0.039)
@ -415,7 +415,7 @@ class ToolPaint(FlatCAMTool, Gerber):
pass
# updated units
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
sorted_tools = []
for k, v in self.paint_tools.items():

View File

@ -103,10 +103,10 @@ class Properties(FlatCAMTool):
width = abs(ymax - ymin)
self.addChild(dims, ['Length:', '%.4f %s' % (
length, self.app.general_options_form.general_app_group.units_radio.get_value().lower())], True)
length, self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower())], True)
self.addChild(dims, ['Width:', '%.4f %s' % (
width, self.app.general_options_form.general_app_group.units_radio.get_value().lower())], True)
if self.app.general_options_form.general_app_group.units_radio.get_value().lower() == 'mm':
width, self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower())], True)
if self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower() == 'mm':
area = (length * width) / 100
self.addChild(dims, ['Box Area:', '%.4f %s' % (area, 'cm2')], True)
else:

View File

@ -8,6 +8,8 @@ from FlatCAMObj import FlatCAMGeometry, FlatCAMExcellon, FlatCAMGerber
from PyQt5 import QtGui, QtCore, QtWidgets
from copy import copy,deepcopy
from shapely.geometry import MultiPolygon, Polygon, LineString
class SolderPaste(FlatCAMTool):
@ -466,7 +468,7 @@ class SolderPaste(FlatCAMTool):
self.name = ""
self.obj = None
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
for name in list(self.app.postprocessors.keys()):
# populate only with postprocessor files that start with 'Paste_'
@ -484,7 +486,7 @@ class SolderPaste(FlatCAMTool):
self.ui_disconnect()
# updated units
self.units = self.app.general_options_form.general_app_group.units_radio.get_value().upper()
self.units = self.app.ui.general_options_form.general_app_group.units_radio.get_value().upper()
sorted_tools = []
for k, v in self.tooltable_tools.items():
@ -647,7 +649,6 @@ class SolderPaste(FlatCAMTool):
idx = self.cnc_obj_combo.findText(obj_name)
if idx != -1:
self.cnc_obj_combo.setCurrentIndex(idx)
print(obj_name)
def read_form_to_options(self):
"""
@ -925,7 +926,7 @@ class SolderPaste(FlatCAMTool):
self.on_create_geo(name=name, work_object=obj)
def on_create_geo(self, name, work_object):
def on_create_geo(self, name, work_object, use_thread=True):
"""
The actual work for creating solderpaste dispensing geometry is done here.
@ -958,47 +959,48 @@ class SolderPaste(FlatCAMTool):
geo_obj.special_group = 'solder_paste_tool'
def solder_line(p, offset):
xmin, ymin, xmax, ymax = p.bounds
x_min, y_min, x_max, y_max = p.bounds
min = [xmin, ymin]
max = [xmax, ymax]
min_r = [xmin, ymax]
max_r = [xmax, ymin]
diag_1_intersect = LineString([(x_min, y_min), (x_max, y_max)]).intersection(p)
diag_2_intersect = LineString([(x_min, y_max), (x_max, y_min)]).intersection(p)
diagonal_1 = LineString([min, max])
diagonal_2 = LineString([min_r, max_r])
if self.units == 'MM':
round_diag_1 = round(diagonal_1.intersection(p).length, 1)
round_diag_2 = round(diagonal_2.intersection(p).length, 1)
round_diag_1 = round(diag_1_intersect.length, 1)
round_diag_2 = round(diag_2_intersect.length, 1)
else:
round_diag_1 = round(diagonal_1.intersection(p).length, 2)
round_diag_2 = round(diagonal_2.intersection(p).length, 2)
round_diag_1 = round(diag_1_intersect.length, 2)
round_diag_2 = round(diag_2_intersect.length, 2)
if round_diag_1 == round_diag_2:
l = distance((xmin, ymin), (xmax, ymin))
h = distance((xmin, ymin), (xmin, ymax))
l = distance((x_min, y_min), (x_max, y_min))
h = distance((x_min, y_min), (x_min, y_max))
if offset >= l /2 or offset >= h / 2:
return "fail"
if l > h:
h_half = h / 2
start = [xmin, (ymin + h_half)]
stop = [(xmin + l), (ymin + h_half)]
start = [x_min, (y_min + h_half)]
stop = [(x_min + l), (y_min + h_half)]
else:
l_half = l / 2
start = [(xmin + l_half), ymin]
stop = [(xmin + l_half), (ymin + h)]
start = [(x_min + l_half), y_min]
stop = [(x_min + l_half), (y_min + h)]
geo = LineString([start, stop])
elif round_diag_1 > round_diag_2:
geo = diagonal_1.intersection(p)
geo = round_diag_1
else:
geo = diagonal_2.intersection(p)
geo = round_diag_2
offseted_poly = p.buffer(-offset)
geo = geo.intersection(offseted_poly)
return geo
work_geo = obj.solid_geometry
try:
_ = iter(work_geo)
except TypeError:
work_geo = [work_geo]
rest_geo = []
tooluid = 1
@ -1053,22 +1055,24 @@ class SolderPaste(FlatCAMTool):
"due of inadequate nozzle diameters...")
return 'fail'
def job_thread(app_obj):
try:
app_obj.new_object("geometry", name + "_solderpaste", geo_init)
except Exception as e:
log.error("SolderPaste.on_create_geo() --> %s" % str(e))
if use_thread:
def job_thread(app_obj):
try:
app_obj.new_object("geometry", name + "_solderpaste", geo_init)
except Exception as e:
log.error("SolderPaste.on_create_geo() --> %s" % str(e))
proc.done()
return
proc.done()
return
proc.done()
self.app.inform.emit("Generating Solder Paste dispensing geometry...")
# Promise object with the new name
self.app.collection.promise(name)
self.app.inform.emit("Generating Solder Paste dispensing geometry...")
# Promise object with the new name
self.app.collection.promise(name)
# Background
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
# self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab)
# Background
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
else:
self.app.new_object("geometry", name + "_solderpaste", geo_init)
def on_create_gcode_click(self, signal):
"""