- some GUI elements changes
This commit is contained in:
parent
21f970204e
commit
2843810ab3
246
FlatCAMApp.py
246
FlatCAMApp.py
@ -776,127 +776,121 @@ class App(QtCore.QObject):
|
|||||||
# QtCore.QTimer.singleShot(self.defaults["global_defaults_save_period_ms"], auto_save_defaults)
|
# QtCore.QTimer.singleShot(self.defaults["global_defaults_save_period_ms"], auto_save_defaults)
|
||||||
|
|
||||||
# self.options_form = PreferencesUI()
|
# 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 = {
|
self.options_form_fields = {
|
||||||
"units": self.general_options_form.general_app_group.units_radio,
|
"units": self.ui.general_options_form.general_app_group.units_radio,
|
||||||
"global_gridx": self.general_options_form.general_gui_group.gridx_entry,
|
"global_gridx": self.ui.general_options_form.general_gui_group.gridx_entry,
|
||||||
"global_gridy": self.general_options_form.general_gui_group.gridy_entry,
|
"global_gridy": self.ui.general_options_form.general_gui_group.gridy_entry,
|
||||||
"global_snap_max": self.general_options_form.general_gui_group.snap_max_dist_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_plot": self.ui.gerber_options_form.gerber_gen_group.plot_cb,
|
||||||
"gerber_solid": self.gerber_options_form.gerber_gen_group.solid_cb,
|
"gerber_solid": self.ui.gerber_options_form.gerber_gen_group.solid_cb,
|
||||||
"gerber_multicolored": self.gerber_options_form.gerber_gen_group.multicolored_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_isotooldia": self.ui.gerber_options_form.gerber_opt_group.iso_tool_dia_entry,
|
||||||
"gerber_isopasses": self.gerber_options_form.gerber_opt_group.iso_width_entry,
|
"gerber_isopasses": self.ui.gerber_options_form.gerber_opt_group.iso_width_entry,
|
||||||
"gerber_isooverlap": self.gerber_options_form.gerber_opt_group.iso_overlap_entry,
|
"gerber_isooverlap": self.ui.gerber_options_form.gerber_opt_group.iso_overlap_entry,
|
||||||
"gerber_combine_passes": self.gerber_options_form.gerber_opt_group.combine_passes_cb,
|
"gerber_combine_passes": self.ui.gerber_options_form.gerber_opt_group.combine_passes_cb,
|
||||||
"gerber_noncoppermargin": self.gerber_options_form.gerber_opt_group.noncopper_margin_entry,
|
"gerber_noncoppermargin": self.ui.gerber_options_form.gerber_opt_group.noncopper_margin_entry,
|
||||||
"gerber_noncopperrounded": self.gerber_options_form.gerber_opt_group.noncopper_rounded_cb,
|
"gerber_noncopperrounded": self.ui.gerber_options_form.gerber_opt_group.noncopper_rounded_cb,
|
||||||
"gerber_bboxmargin": self.gerber_options_form.gerber_opt_group.bbmargin_entry,
|
"gerber_bboxmargin": self.ui.gerber_options_form.gerber_opt_group.bbmargin_entry,
|
||||||
"gerber_bboxrounded": self.gerber_options_form.gerber_opt_group.bbrounded_cb,
|
"gerber_bboxrounded": self.ui.gerber_options_form.gerber_opt_group.bbrounded_cb,
|
||||||
|
|
||||||
"excellon_plot": self.excellon_options_form.excellon_gen_group.plot_cb,
|
"excellon_plot": self.ui.excellon_options_form.excellon_gen_group.plot_cb,
|
||||||
"excellon_solid": self.excellon_options_form.excellon_gen_group.solid_cb,
|
"excellon_solid": self.ui.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_upper_in": self.ui.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_lower_in": self.ui.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_upper_mm": self.ui.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_format_lower_mm": self.ui.excellon_options_form.excellon_gen_group.excellon_format_lower_mm_entry,
|
||||||
"excellon_zeros": self.excellon_options_form.excellon_gen_group.excellon_zeros_radio,
|
"excellon_zeros": self.ui.excellon_options_form.excellon_gen_group.excellon_zeros_radio,
|
||||||
"excellon_units": self.excellon_options_form.excellon_gen_group.excellon_units_radio,
|
"excellon_units": self.ui.excellon_options_form.excellon_gen_group.excellon_units_radio,
|
||||||
"excellon_optimization_type": self.excellon_options_form.excellon_gen_group.excellon_optimization_radio,
|
"excellon_optimization_type": self.ui.excellon_options_form.excellon_gen_group.excellon_optimization_radio,
|
||||||
"excellon_feedrate_rapid": self.excellon_options_form.excellon_gen_group.feedrate_rapid_entry,
|
"excellon_feedrate_rapid": self.ui.excellon_options_form.excellon_gen_group.feedrate_rapid_entry,
|
||||||
"excellon_toolchangexy": self.excellon_options_form.excellon_gen_group.toolchangexy_entry,
|
"excellon_toolchangexy": self.ui.excellon_options_form.excellon_gen_group.toolchangexy_entry,
|
||||||
"excellon_f_plunge": self.excellon_options_form.excellon_gen_group.fplunge_cb,
|
"excellon_f_plunge": self.ui.excellon_options_form.excellon_gen_group.fplunge_cb,
|
||||||
"excellon_startz": self.excellon_options_form.excellon_gen_group.estartz_entry,
|
"excellon_startz": self.ui.excellon_options_form.excellon_gen_group.estartz_entry,
|
||||||
"excellon_endz": self.excellon_options_form.excellon_gen_group.eendz_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_drillz": self.ui.excellon_options_form.excellon_opt_group.cutz_entry,
|
||||||
"excellon_travelz": self.excellon_options_form.excellon_opt_group.travelz_entry,
|
"excellon_travelz": self.ui.excellon_options_form.excellon_opt_group.travelz_entry,
|
||||||
"excellon_feedrate": self.excellon_options_form.excellon_opt_group.feedrate_entry,
|
"excellon_feedrate": self.ui.excellon_options_form.excellon_opt_group.feedrate_entry,
|
||||||
"excellon_spindlespeed": self.excellon_options_form.excellon_opt_group.spindlespeed_entry,
|
"excellon_spindlespeed": self.ui.excellon_options_form.excellon_opt_group.spindlespeed_entry,
|
||||||
"excellon_dwell": self.excellon_options_form.excellon_opt_group.dwell_cb,
|
"excellon_dwell": self.ui.excellon_options_form.excellon_opt_group.dwell_cb,
|
||||||
"excellon_dwelltime": self.excellon_options_form.excellon_opt_group.dwelltime_entry,
|
"excellon_dwelltime": self.ui.excellon_options_form.excellon_opt_group.dwelltime_entry,
|
||||||
"excellon_toolchange": self.excellon_options_form.excellon_opt_group.toolchange_cb,
|
"excellon_toolchange": self.ui.excellon_options_form.excellon_opt_group.toolchange_cb,
|
||||||
"excellon_toolchangez": self.excellon_options_form.excellon_opt_group.toolchangez_entry,
|
"excellon_toolchangez": self.ui.excellon_options_form.excellon_opt_group.toolchangez_entry,
|
||||||
"excellon_tooldia": self.excellon_options_form.excellon_opt_group.tooldia_entry,
|
"excellon_tooldia": self.ui.excellon_options_form.excellon_opt_group.tooldia_entry,
|
||||||
"excellon_ppname_e": self.excellon_options_form.excellon_opt_group.pp_excellon_name_cb,
|
"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_plot": self.ui.geometry_options_form.geometry_gen_group.plot_cb,
|
||||||
"geometry_cnctooldia": self.geometry_options_form.geometry_gen_group.cnctooldia_entry,
|
"geometry_cnctooldia": self.ui.geometry_options_form.geometry_gen_group.cnctooldia_entry,
|
||||||
"geometry_segx": self.geometry_options_form.geometry_gen_group.segx_entry,
|
"geometry_segx": self.ui.geometry_options_form.geometry_gen_group.segx_entry,
|
||||||
"geometry_segy": self.geometry_options_form.geometry_gen_group.segy_entry,
|
"geometry_segy": self.ui.geometry_options_form.geometry_gen_group.segy_entry,
|
||||||
"geometry_feedrate_rapid": self.geometry_options_form.geometry_gen_group.cncfeedrate_rapid_entry,
|
"geometry_feedrate_rapid": self.ui.geometry_options_form.geometry_gen_group.cncfeedrate_rapid_entry,
|
||||||
"geometry_f_plunge": self.geometry_options_form.geometry_gen_group.fplunge_cb,
|
"geometry_f_plunge": self.ui.geometry_options_form.geometry_gen_group.fplunge_cb,
|
||||||
"geometry_toolchangexy": self.geometry_options_form.geometry_gen_group.toolchangexy_entry,
|
"geometry_toolchangexy": self.ui.geometry_options_form.geometry_gen_group.toolchangexy_entry,
|
||||||
"geometry_startz": self.geometry_options_form.geometry_gen_group.gstartz_entry,
|
"geometry_startz": self.ui.geometry_options_form.geometry_gen_group.gstartz_entry,
|
||||||
"geometry_endz": self.geometry_options_form.geometry_gen_group.gendz_entry,
|
"geometry_endz": self.ui.geometry_options_form.geometry_gen_group.gendz_entry,
|
||||||
"geometry_extracut": self.geometry_options_form.geometry_gen_group.extracut_cb,
|
"geometry_extracut": self.ui.geometry_options_form.geometry_gen_group.extracut_cb,
|
||||||
|
|
||||||
"geometry_cutz": self.geometry_options_form.geometry_opt_group.cutz_entry,
|
"geometry_cutz": self.ui.geometry_options_form.geometry_opt_group.cutz_entry,
|
||||||
"geometry_travelz": self.geometry_options_form.geometry_opt_group.travelz_entry,
|
"geometry_travelz": self.ui.geometry_options_form.geometry_opt_group.travelz_entry,
|
||||||
"geometry_feedrate": self.geometry_options_form.geometry_opt_group.cncfeedrate_entry,
|
"geometry_feedrate": self.ui.geometry_options_form.geometry_opt_group.cncfeedrate_entry,
|
||||||
"geometry_feedrate_z": self.geometry_options_form.geometry_opt_group.cncplunge_entry,
|
"geometry_feedrate_z": self.ui.geometry_options_form.geometry_opt_group.cncplunge_entry,
|
||||||
"geometry_spindlespeed": self.geometry_options_form.geometry_opt_group.cncspindlespeed_entry,
|
"geometry_spindlespeed": self.ui.geometry_options_form.geometry_opt_group.cncspindlespeed_entry,
|
||||||
"geometry_dwell": self.geometry_options_form.geometry_opt_group.dwell_cb,
|
"geometry_dwell": self.ui.geometry_options_form.geometry_opt_group.dwell_cb,
|
||||||
"geometry_dwelltime": self.geometry_options_form.geometry_opt_group.dwelltime_entry,
|
"geometry_dwelltime": self.ui.geometry_options_form.geometry_opt_group.dwelltime_entry,
|
||||||
"geometry_ppname_g": self.geometry_options_form.geometry_opt_group.pp_geometry_name_cb,
|
"geometry_ppname_g": self.ui.geometry_options_form.geometry_opt_group.pp_geometry_name_cb,
|
||||||
"geometry_toolchange": self.geometry_options_form.geometry_opt_group.toolchange_cb,
|
"geometry_toolchange": self.ui.geometry_options_form.geometry_opt_group.toolchange_cb,
|
||||||
"geometry_toolchangez": self.geometry_options_form.geometry_opt_group.toolchangez_entry,
|
"geometry_toolchangez": self.ui.geometry_options_form.geometry_opt_group.toolchangez_entry,
|
||||||
"geometry_depthperpass": self.geometry_options_form.geometry_opt_group.depthperpass_entry,
|
"geometry_depthperpass": self.ui.geometry_options_form.geometry_opt_group.depthperpass_entry,
|
||||||
"geometry_multidepth": self.geometry_options_form.geometry_opt_group.multidepth_cb,
|
"geometry_multidepth": self.ui.geometry_options_form.geometry_opt_group.multidepth_cb,
|
||||||
|
|
||||||
"cncjob_plot": self.cncjob_options_form.cncjob_gen_group.plot_cb,
|
"cncjob_plot": self.ui.cncjob_options_form.cncjob_gen_group.plot_cb,
|
||||||
"cncjob_tooldia": self.cncjob_options_form.cncjob_gen_group.tooldia_entry,
|
"cncjob_tooldia": self.ui.cncjob_options_form.cncjob_gen_group.tooldia_entry,
|
||||||
|
|
||||||
"cncjob_prepend": self.cncjob_options_form.cncjob_opt_group.prepend_text,
|
"cncjob_prepend": self.ui.cncjob_options_form.cncjob_opt_group.prepend_text,
|
||||||
"cncjob_append": self.cncjob_options_form.cncjob_opt_group.append_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_ncctools": self.ui.tools_options_form.tools_ncc_group.ncc_tool_dia_entry,
|
||||||
"tools_nccoverlap": self.tools_options_form.tools_ncc_group.ncc_overlap_entry,
|
"tools_nccoverlap": self.ui.tools_options_form.tools_ncc_group.ncc_overlap_entry,
|
||||||
"tools_nccmargin": self.tools_options_form.tools_ncc_group.ncc_margin_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_cutouttooldia": self.ui.tools_options_form.tools_cutout_group.cutout_tooldia_entry,
|
||||||
"tools_cutoutmargin": self.tools_options_form.tools_cutout_group.cutout_margin_entry,
|
"tools_cutoutmargin": self.ui.tools_options_form.tools_cutout_group.cutout_margin_entry,
|
||||||
"tools_cutoutgapsize": self.tools_options_form.tools_cutout_group.cutout_gap_entry,
|
"tools_cutoutgapsize": self.ui.tools_options_form.tools_cutout_group.cutout_gap_entry,
|
||||||
"tools_gaps_rect": self.tools_options_form.tools_cutout_group.gaps_radio,
|
"tools_gaps_rect": self.ui.tools_options_form.tools_cutout_group.gaps_radio,
|
||||||
"tools_gaps_ff": self.tools_options_form.tools_cutout_group.gaps_combo,
|
"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_painttooldia": self.ui.tools_options_form.tools_paint_group.painttooldia_entry,
|
||||||
"tools_paintoverlap": self.tools_options_form.tools_paint_group.paintoverlap_entry,
|
"tools_paintoverlap": self.ui.tools_options_form.tools_paint_group.paintoverlap_entry,
|
||||||
"tools_paintmargin": self.tools_options_form.tools_paint_group.paintmargin_entry,
|
"tools_paintmargin": self.ui.tools_options_form.tools_paint_group.paintmargin_entry,
|
||||||
"tools_paintmethod": self.tools_options_form.tools_paint_group.paintmethod_combo,
|
"tools_paintmethod": self.ui.tools_options_form.tools_paint_group.paintmethod_combo,
|
||||||
"tools_selectmethod": self.tools_options_form.tools_paint_group.selectmethod_combo,
|
"tools_selectmethod": self.ui.tools_options_form.tools_paint_group.selectmethod_combo,
|
||||||
"tools_pathconnect": self.tools_options_form.tools_paint_group.pathconnect_cb,
|
"tools_pathconnect": self.ui.tools_options_form.tools_paint_group.pathconnect_cb,
|
||||||
"tools_paintcontour": self.tools_options_form.tools_paint_group.contour_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_mirror_axis": self.ui.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_axis_loc": self.ui.tools_options_form.tools_2sided_group.axis_location_radio,
|
||||||
"tools_2sided_drilldia": self.tools_options_form.tools_2sided_group.drill_dia_entry,
|
"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_type": self.ui.tools_options_form.tools_film_group.film_type_radio,
|
||||||
"tools_film_boundary": self.tools_options_form.tools_film_group.film_boundary_entry,
|
"tools_film_boundary": self.ui.tools_options_form.tools_film_group.film_boundary_entry,
|
||||||
"tools_film_scale": self.tools_options_form.tools_film_group.film_scale_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_columns": self.ui.tools_options_form.tools_panelize_group.pspacing_columns,
|
||||||
"tools_panelize_spacing_rows": self.tools_options_form.tools_panelize_group.pspacing_rows,
|
"tools_panelize_spacing_rows": self.ui.tools_options_form.tools_panelize_group.pspacing_rows,
|
||||||
"tools_panelize_columns": self.tools_options_form.tools_panelize_group.pcolumns,
|
"tools_panelize_columns": self.ui.tools_options_form.tools_panelize_group.pcolumns,
|
||||||
"tools_panelize_rows": self.tools_options_form.tools_panelize_group.prows,
|
"tools_panelize_rows": self.ui.tools_options_form.tools_panelize_group.prows,
|
||||||
"tools_panelize_constrain": self.tools_options_form.tools_panelize_group.pconstrain_cb,
|
"tools_panelize_constrain": self.ui.tools_options_form.tools_panelize_group.pconstrain_cb,
|
||||||
"tools_panelize_constrainx": self.tools_options_form.tools_panelize_group.px_width_entry,
|
"tools_panelize_constrainx": self.ui.tools_options_form.tools_panelize_group.px_width_entry,
|
||||||
"tools_panelize_constrainy": self.tools_options_form.tools_panelize_group.py_height_entry
|
"tools_panelize_constrainy": self.ui.tools_options_form.tools_panelize_group.py_height_entry
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for name in list(self.postprocessors.keys()):
|
for name in list(self.postprocessors.keys()):
|
||||||
self.geometry_options_form.geometry_opt_group.pp_geometry_name_cb.addItem(name)
|
self.ui.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.excellon_options_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
|
||||||
|
|
||||||
self.options = LoudDict()
|
self.options = LoudDict()
|
||||||
self.options.set_change_callback(self.on_options_dict_change)
|
self.options.set_change_callback(self.on_options_dict_change)
|
||||||
@ -1298,7 +1292,7 @@ class App(QtCore.QObject):
|
|||||||
###############################
|
###############################
|
||||||
### GUI PREFERENCES SIGNALS ###
|
### 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)
|
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)
|
self.on_excellon_defaults_button)
|
||||||
|
|
||||||
# Load the defaults values into the Excellon Format and Excellon Zeros fields
|
# 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)
|
self.on_excellon_options_button)
|
||||||
|
|
||||||
# this is a flag to signal to other tools that the ui tooltab is locked and not accessible
|
# 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
|
return
|
||||||
|
|
||||||
# If option is the same, then ignore
|
# 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.")
|
self.log.debug("on_toggle_units(): Same as options, so ignoring.")
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -2980,7 +2974,7 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
# The scaling factor depending on choice of units.
|
# The scaling factor depending on choice of units.
|
||||||
factor = 1/25.4
|
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
|
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)
|
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():
|
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)
|
obj.convert_units(units)
|
||||||
|
|
||||||
# make that the properties stored in the object are also updated
|
# make that the properties stored in the object are also updated
|
||||||
@ -3030,10 +3024,10 @@ class App(QtCore.QObject):
|
|||||||
else:
|
else:
|
||||||
# Undo toggling
|
# Undo toggling
|
||||||
self.toggle_units_ignore = True
|
self.toggle_units_ignore = True
|
||||||
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':
|
||||||
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:
|
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.toggle_units_ignore = False
|
||||||
self.inform.emit("[WARNING_NOTCL]Units conversion cancelled.")
|
self.inform.emit("[WARNING_NOTCL]Units conversion cancelled.")
|
||||||
|
|
||||||
@ -3041,9 +3035,9 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
def on_toggle_units_click(self):
|
def on_toggle_units_click(self):
|
||||||
if self.options["units"] == 'MM':
|
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:
|
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()
|
self.on_toggle_units()
|
||||||
|
|
||||||
def on_language_apply(self):
|
def on_language_apply(self):
|
||||||
@ -3138,12 +3132,12 @@ class App(QtCore.QObject):
|
|||||||
self.cnc_form = self.ui.cncjob_defaults_form
|
self.cnc_form = self.ui.cncjob_defaults_form
|
||||||
self.tools_form = self.ui.tools_defaults_form
|
self.tools_form = self.ui.tools_defaults_form
|
||||||
elif sel == 1:
|
elif sel == 1:
|
||||||
self.gen_form = self.general_options_form
|
self.gen_form = self.ui.general_options_form
|
||||||
self.ger_form = self.gerber_options_form
|
self.ger_form = self.ui.gerber_options_form
|
||||||
self.exc_form = self.excellon_options_form
|
self.exc_form = self.ui.excellon_options_form
|
||||||
self.geo_form = self.geometry_options_form
|
self.geo_form = self.ui.geometry_options_form
|
||||||
self.cnc_form = self.cncjob_options_form
|
self.cnc_form = self.ui.cncjob_options_form
|
||||||
self.tools_form = self.tools_options_form
|
self.tools_form = self.ui.tools_options_form
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -3671,7 +3665,7 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
def on_tool_add_keypress(self):
|
def on_tool_add_keypress(self):
|
||||||
## Current application units in Upper Case
|
## 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()
|
notebook_widget_name = self.ui.notebook.currentWidget().objectName()
|
||||||
|
|
||||||
@ -4262,7 +4256,7 @@ class App(QtCore.QObject):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
def populate_cmenu_grids(self):
|
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()
|
self.ui.cmenu_gridmenu.clear()
|
||||||
sorted_list = sorted(self.defaults["global_grid_context_menu"][str(units)])
|
sorted_list = sorted(self.defaults["global_grid_context_menu"][str(units)])
|
||||||
@ -4283,7 +4277,7 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
def on_grid_add(self):
|
def on_grid_add(self):
|
||||||
## Current application units in lower Case
|
## 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 ...",
|
grid_add_popup = FCInputDialog(title="New Grid ...",
|
||||||
text='Enter a Grid VAlue:',
|
text='Enter a Grid VAlue:',
|
||||||
@ -4310,7 +4304,7 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
def on_grid_delete(self):
|
def on_grid_delete(self):
|
||||||
## Current application units in lower Case
|
## 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 ...",
|
grid_del_popup = FCInputDialog(title="Delete Grid ...",
|
||||||
text='Enter a Grid Value:',
|
text='Enter a Grid Value:',
|
||||||
@ -5754,7 +5748,7 @@ class App(QtCore.QObject):
|
|||||||
ezeros = self.defaults["excellon_exp_zeros"]
|
ezeros = self.defaults["excellon_exp_zeros"]
|
||||||
eformat = self.defaults[ "excellon_exp_format"]
|
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':
|
if fc_units == 'MM':
|
||||||
factor = 1 if eunits == 'METRIC' else 0.03937
|
factor = 1 if eunits == 'METRIC' else 0.03937
|
||||||
else:
|
else:
|
||||||
@ -5872,7 +5866,7 @@ class App(QtCore.QObject):
|
|||||||
return "Could not retrieve object: %s" % obj_name
|
return "Could not retrieve object: %s" % obj_name
|
||||||
|
|
||||||
# updated units
|
# 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':
|
if units == 'IN' or units == 'INCH':
|
||||||
units = 'INCH'
|
units = 'INCH'
|
||||||
elif units == 'MM' or units == 'METIRC':
|
elif units == 'MM' or units == 'METIRC':
|
||||||
@ -5927,7 +5921,7 @@ class App(QtCore.QObject):
|
|||||||
"Only Geometry and Gerber are supported")
|
"Only Geometry and Gerber are supported")
|
||||||
return
|
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):
|
def obj_init(geo_obj, app_obj):
|
||||||
geo_obj.import_svg(filename, obj_type, units=units)
|
geo_obj.import_svg(filename, obj_type, units=units)
|
||||||
@ -5969,7 +5963,7 @@ class App(QtCore.QObject):
|
|||||||
"Only Geometry and Gerber are supported")
|
"Only Geometry and Gerber are supported")
|
||||||
return
|
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):
|
def obj_init(geo_obj, app_obj):
|
||||||
geo_obj.import_dxf(filename, obj_type, units=units)
|
geo_obj.import_dxf(filename, obj_type, units=units)
|
||||||
@ -6018,7 +6012,7 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
# Object name
|
# Object name
|
||||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
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.new_object(obj_type, name, obj_init)
|
||||||
self.progress.emit(20)
|
self.progress.emit(20)
|
||||||
|
@ -346,7 +346,7 @@ class TextInputTool(FlatCAMTool):
|
|||||||
font_name=self.font_name,
|
font_name=self.font_name,
|
||||||
font_size=font_to_geo_size,
|
font_size=font_to_geo_size,
|
||||||
font_type=font_to_geo_type,
|
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):
|
def font_family(self, font):
|
||||||
self.text_input_entry.selectAll()
|
self.text_input_entry.selectAll()
|
||||||
@ -1483,7 +1483,7 @@ class TransformEditorTool(FlatCAMTool):
|
|||||||
"[WARNING_NOTCL] Geometry shape rotate cancelled...")
|
"[WARNING_NOTCL] Geometry shape rotate cancelled...")
|
||||||
|
|
||||||
def on_offx_key(self):
|
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 ...",
|
val_box = FCInputDialog(title="Offset on X axis ...",
|
||||||
text=('Enter a distance Value (%s):' % str(units)),
|
text=('Enter a distance Value (%s):' % str(units)),
|
||||||
@ -1502,7 +1502,7 @@ class TransformEditorTool(FlatCAMTool):
|
|||||||
"[WARNING_NOTCL] Geometry shape offset X cancelled...")
|
"[WARNING_NOTCL] Geometry shape offset X cancelled...")
|
||||||
|
|
||||||
def on_offy_key(self):
|
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 ...",
|
val_box = FCInputDialog(title="Offset on Y axis ...",
|
||||||
text=('Enter a distance Value (%s):' % str(units)),
|
text=('Enter a distance Value (%s):' % str(units)),
|
||||||
@ -4985,7 +4985,7 @@ class FlatCAMExcEditor(QtCore.QObject):
|
|||||||
self.move_timer.setSingleShot(True)
|
self.move_timer.setSingleShot(True)
|
||||||
|
|
||||||
## Current application units in Upper Case
|
## 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.key = None # Currently pressed key
|
||||||
self.modifiers = None
|
self.modifiers = None
|
||||||
@ -5059,7 +5059,7 @@ class FlatCAMExcEditor(QtCore.QObject):
|
|||||||
|
|
||||||
def set_ui(self):
|
def set_ui(self):
|
||||||
# updated units
|
# 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.olddia_newdia.clear()
|
||||||
self.tool2tooldia.clear()
|
self.tool2tooldia.clear()
|
||||||
@ -5099,7 +5099,7 @@ class FlatCAMExcEditor(QtCore.QObject):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# updated units
|
# 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)
|
# make a new name for the new Excellon object (the one with edited content)
|
||||||
self.edited_obj_name = self.exc_obj.options['name']
|
self.edited_obj_name = self.exc_obj.options['name']
|
||||||
|
@ -1458,6 +1458,13 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
|||||||
self.cncjob_defaults_form = CNCJobPreferencesUI()
|
self.cncjob_defaults_form = CNCJobPreferencesUI()
|
||||||
self.tools_defaults_form = ToolsPreferencesUI()
|
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)
|
QtWidgets.qApp.installEventFilter(self)
|
||||||
|
|
||||||
# restore the Toolbar State from file
|
# restore the Toolbar State from file
|
||||||
@ -1885,9 +1892,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
|||||||
# Change Units
|
# Change Units
|
||||||
if key == QtCore.Qt.Key_Q:
|
if key == QtCore.Qt.Key_Q:
|
||||||
if self.app.options["units"] == 'MM':
|
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:
|
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()
|
self.app.on_toggle_units()
|
||||||
|
|
||||||
# Rotate Object by 90 degree CW
|
# Rotate Object by 90 degree CW
|
||||||
@ -2354,7 +2361,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
|||||||
if key == QtCore.Qt.Key_T or key == 'T':
|
if key == QtCore.Qt.Key_T or key == 'T':
|
||||||
self.app.exc_editor.launched_from_shortcuts = True
|
self.app.exc_editor.launched_from_shortcuts = True
|
||||||
## Current application units in Upper Case
|
## 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 ...",
|
tool_add_popup = FCInputDialog(title="New Tool ...",
|
||||||
text='Enter a Tool Diameter:',
|
text='Enter a Tool Diameter:',
|
||||||
min=0.0000, max=99.9999, decimals=4)
|
min=0.0000, max=99.9999, decimals=4)
|
||||||
|
@ -3533,7 +3533,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
|
|||||||
self.ui.geo_tools_table.setCurrentItem(self.ui.geo_tools_table.item(row, 0))
|
self.ui.geo_tools_table.setCurrentItem(self.ui.geo_tools_table.item(row, 0))
|
||||||
|
|
||||||
def export_dxf(self):
|
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
|
dwg = None
|
||||||
try:
|
try:
|
||||||
dwg = ezdxf.new('R2010')
|
dwg = ezdxf.new('R2010')
|
||||||
|
@ -451,9 +451,9 @@ class ObjectCollection(QtCore.QAbstractItemModel):
|
|||||||
# # Change Units
|
# # Change Units
|
||||||
# if key == QtCore.Qt.Key_Q:
|
# if key == QtCore.Qt.Key_Q:
|
||||||
# if self.app.options["units"] == 'MM':
|
# 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:
|
# 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()
|
# self.app.on_toggle_units()
|
||||||
#
|
#
|
||||||
# # Rotate Object by 90 degree CW
|
# # Rotate Object by 90 degree CW
|
||||||
|
@ -65,7 +65,7 @@ class PlotCanvas(QtCore.QObject):
|
|||||||
self.draw_workspace()
|
self.draw_workspace()
|
||||||
|
|
||||||
# if self.app.defaults['global_workspace'] is True:
|
# 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.wkspace_t = Line(pos=)
|
||||||
|
|
||||||
self.shape_collections = []
|
self.shape_collections = []
|
||||||
@ -92,7 +92,7 @@ class PlotCanvas(QtCore.QObject):
|
|||||||
a3p_mm = np.array([(0, 0), (297, 0), (297, 420), (0, 420)])
|
a3p_mm = np.array([(0, 0), (297, 0), (297, 420), (0, 420)])
|
||||||
a3l_mm = np.array([(0, 0), (420, 0), (420, 297), (0, 297)])
|
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':
|
if self.app.defaults['global_workspaceT'] == 'A4P':
|
||||||
a = a4p_mm
|
a = a4p_mm
|
||||||
elif self.app.defaults['global_workspaceT'] == 'A4L':
|
elif self.app.defaults['global_workspaceT'] == 'A4L':
|
||||||
|
@ -17,6 +17,7 @@ CAD program, and create G-Code for Isolation routing.
|
|||||||
- added true fullscreen support (for Windows OS)
|
- added true fullscreen support (for Windows OS)
|
||||||
- added the ability of context menu inside the GuiElements.FCCombobox() object.
|
- 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.
|
- 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
|
21.02.2019
|
||||||
|
|
||||||
|
@ -6314,7 +6314,7 @@ class CNCjob(Geometry):
|
|||||||
temp_gcode = ''
|
temp_gcode = ''
|
||||||
header_start = False
|
header_start = False
|
||||||
header_stop = 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)
|
lines = StringIO(g)
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
@ -238,7 +238,7 @@ class ToolCalculator(FlatCAMTool):
|
|||||||
FlatCAMTool.install(self, icon, separator, shortcut='ALT+C', **kwargs)
|
FlatCAMTool.install(self, icon, separator, shortcut='ALT+C', **kwargs)
|
||||||
|
|
||||||
def set_tool_ui(self):
|
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
|
## Initialize form
|
||||||
self.mm_entry.set_value('0')
|
self.mm_entry.set_value('0')
|
||||||
|
@ -12,7 +12,7 @@ class Measurement(FlatCAMTool):
|
|||||||
def __init__(self, app):
|
def __init__(self, app):
|
||||||
FlatCAMTool.__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
|
||||||
title_label = QtWidgets.QLabel("<font size=4><b>%s</b></font><br>" % self.toolName)
|
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
|
# Switch notebook to tool page
|
||||||
self.app.ui.notebook.setCurrentWidget(self.app.ui.tool_tab)
|
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()
|
self.show()
|
||||||
|
|
||||||
def toggle(self):
|
def toggle(self):
|
||||||
@ -210,7 +210,7 @@ class Measurement(FlatCAMTool):
|
|||||||
else:
|
else:
|
||||||
# ENABLE the Measuring TOOL
|
# ENABLE the Measuring TOOL
|
||||||
self.active = True
|
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
|
# we disconnect the mouse/key handlers from wherever the measurement tool was called
|
||||||
if self.app.call_source == 'app':
|
if self.app.call_source == 'app':
|
||||||
|
@ -339,13 +339,13 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
self.obj_name = ""
|
self.obj_name = ""
|
||||||
self.ncc_obj = None
|
self.ncc_obj = None
|
||||||
self.tool_type_item_options = ["C1", "C2", "C3", "C4", "B", "V"]
|
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):
|
def build_ui(self):
|
||||||
self.ui_disconnect()
|
self.ui_disconnect()
|
||||||
|
|
||||||
# updated units
|
# 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":
|
if self.units == "IN":
|
||||||
self.addtool_entry.set_value(0.039)
|
self.addtool_entry.set_value(0.039)
|
||||||
|
@ -347,7 +347,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
|||||||
self.paintoverlap_entry.set_value(self.default_data["paintoverlap"])
|
self.paintoverlap_entry.set_value(self.default_data["paintoverlap"])
|
||||||
|
|
||||||
# updated units
|
# 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":
|
if self.units == "IN":
|
||||||
self.addtool_entry.set_value(0.039)
|
self.addtool_entry.set_value(0.039)
|
||||||
@ -415,7 +415,7 @@ class ToolPaint(FlatCAMTool, Gerber):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# updated units
|
# 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 = []
|
sorted_tools = []
|
||||||
for k, v in self.paint_tools.items():
|
for k, v in self.paint_tools.items():
|
||||||
|
@ -103,10 +103,10 @@ class Properties(FlatCAMTool):
|
|||||||
width = abs(ymax - ymin)
|
width = abs(ymax - ymin)
|
||||||
|
|
||||||
self.addChild(dims, ['Length:', '%.4f %s' % (
|
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' % (
|
self.addChild(dims, ['Width:', '%.4f %s' % (
|
||||||
width, self.app.general_options_form.general_app_group.units_radio.get_value().lower())], True)
|
width, self.app.ui.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':
|
if self.app.ui.general_options_form.general_app_group.units_radio.get_value().lower() == 'mm':
|
||||||
area = (length * width) / 100
|
area = (length * width) / 100
|
||||||
self.addChild(dims, ['Box Area:', '%.4f %s' % (area, 'cm2')], True)
|
self.addChild(dims, ['Box Area:', '%.4f %s' % (area, 'cm2')], True)
|
||||||
else:
|
else:
|
||||||
|
@ -8,6 +8,8 @@ from FlatCAMObj import FlatCAMGeometry, FlatCAMExcellon, FlatCAMGerber
|
|||||||
from PyQt5 import QtGui, QtCore, QtWidgets
|
from PyQt5 import QtGui, QtCore, QtWidgets
|
||||||
from copy import copy,deepcopy
|
from copy import copy,deepcopy
|
||||||
|
|
||||||
|
from shapely.geometry import MultiPolygon, Polygon, LineString
|
||||||
|
|
||||||
|
|
||||||
class SolderPaste(FlatCAMTool):
|
class SolderPaste(FlatCAMTool):
|
||||||
|
|
||||||
@ -466,7 +468,7 @@ class SolderPaste(FlatCAMTool):
|
|||||||
self.name = ""
|
self.name = ""
|
||||||
self.obj = None
|
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()):
|
for name in list(self.app.postprocessors.keys()):
|
||||||
# populate only with postprocessor files that start with 'Paste_'
|
# populate only with postprocessor files that start with 'Paste_'
|
||||||
@ -484,7 +486,7 @@ class SolderPaste(FlatCAMTool):
|
|||||||
self.ui_disconnect()
|
self.ui_disconnect()
|
||||||
|
|
||||||
# updated units
|
# 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 = []
|
sorted_tools = []
|
||||||
for k, v in self.tooltable_tools.items():
|
for k, v in self.tooltable_tools.items():
|
||||||
@ -647,7 +649,6 @@ class SolderPaste(FlatCAMTool):
|
|||||||
idx = self.cnc_obj_combo.findText(obj_name)
|
idx = self.cnc_obj_combo.findText(obj_name)
|
||||||
if idx != -1:
|
if idx != -1:
|
||||||
self.cnc_obj_combo.setCurrentIndex(idx)
|
self.cnc_obj_combo.setCurrentIndex(idx)
|
||||||
print(obj_name)
|
|
||||||
|
|
||||||
def read_form_to_options(self):
|
def read_form_to_options(self):
|
||||||
"""
|
"""
|
||||||
@ -925,7 +926,7 @@ class SolderPaste(FlatCAMTool):
|
|||||||
|
|
||||||
self.on_create_geo(name=name, work_object=obj)
|
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.
|
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'
|
geo_obj.special_group = 'solder_paste_tool'
|
||||||
|
|
||||||
def solder_line(p, offset):
|
def solder_line(p, offset):
|
||||||
xmin, ymin, xmax, ymax = p.bounds
|
x_min, y_min, x_max, y_max = p.bounds
|
||||||
|
|
||||||
min = [xmin, ymin]
|
diag_1_intersect = LineString([(x_min, y_min), (x_max, y_max)]).intersection(p)
|
||||||
max = [xmax, ymax]
|
diag_2_intersect = LineString([(x_min, y_max), (x_max, y_min)]).intersection(p)
|
||||||
min_r = [xmin, ymax]
|
|
||||||
max_r = [xmax, ymin]
|
|
||||||
|
|
||||||
diagonal_1 = LineString([min, max])
|
|
||||||
diagonal_2 = LineString([min_r, max_r])
|
|
||||||
if self.units == 'MM':
|
if self.units == 'MM':
|
||||||
round_diag_1 = round(diagonal_1.intersection(p).length, 1)
|
round_diag_1 = round(diag_1_intersect.length, 1)
|
||||||
round_diag_2 = round(diagonal_2.intersection(p).length, 1)
|
round_diag_2 = round(diag_2_intersect.length, 1)
|
||||||
else:
|
else:
|
||||||
round_diag_1 = round(diagonal_1.intersection(p).length, 2)
|
round_diag_1 = round(diag_1_intersect.length, 2)
|
||||||
round_diag_2 = round(diagonal_2.intersection(p).length, 2)
|
round_diag_2 = round(diag_2_intersect.length, 2)
|
||||||
|
|
||||||
if round_diag_1 == round_diag_2:
|
if round_diag_1 == round_diag_2:
|
||||||
l = distance((xmin, ymin), (xmax, ymin))
|
l = distance((x_min, y_min), (x_max, y_min))
|
||||||
h = distance((xmin, ymin), (xmin, ymax))
|
h = distance((x_min, y_min), (x_min, y_max))
|
||||||
|
|
||||||
if offset >= l /2 or offset >= h / 2:
|
if offset >= l /2 or offset >= h / 2:
|
||||||
return "fail"
|
return "fail"
|
||||||
if l > h:
|
if l > h:
|
||||||
h_half = h / 2
|
h_half = h / 2
|
||||||
start = [xmin, (ymin + h_half)]
|
start = [x_min, (y_min + h_half)]
|
||||||
stop = [(xmin + l), (ymin + h_half)]
|
stop = [(x_min + l), (y_min + h_half)]
|
||||||
else:
|
else:
|
||||||
l_half = l / 2
|
l_half = l / 2
|
||||||
start = [(xmin + l_half), ymin]
|
start = [(x_min + l_half), y_min]
|
||||||
stop = [(xmin + l_half), (ymin + h)]
|
stop = [(x_min + l_half), (y_min + h)]
|
||||||
geo = LineString([start, stop])
|
geo = LineString([start, stop])
|
||||||
elif round_diag_1 > round_diag_2:
|
elif round_diag_1 > round_diag_2:
|
||||||
geo = diagonal_1.intersection(p)
|
geo = round_diag_1
|
||||||
else:
|
else:
|
||||||
geo = diagonal_2.intersection(p)
|
geo = round_diag_2
|
||||||
|
|
||||||
offseted_poly = p.buffer(-offset)
|
offseted_poly = p.buffer(-offset)
|
||||||
geo = geo.intersection(offseted_poly)
|
geo = geo.intersection(offseted_poly)
|
||||||
return geo
|
return geo
|
||||||
|
|
||||||
work_geo = obj.solid_geometry
|
work_geo = obj.solid_geometry
|
||||||
|
try:
|
||||||
|
_ = iter(work_geo)
|
||||||
|
except TypeError:
|
||||||
|
work_geo = [work_geo]
|
||||||
|
|
||||||
rest_geo = []
|
rest_geo = []
|
||||||
tooluid = 1
|
tooluid = 1
|
||||||
|
|
||||||
@ -1053,22 +1055,24 @@ class SolderPaste(FlatCAMTool):
|
|||||||
"due of inadequate nozzle diameters...")
|
"due of inadequate nozzle diameters...")
|
||||||
return 'fail'
|
return 'fail'
|
||||||
|
|
||||||
def job_thread(app_obj):
|
if use_thread:
|
||||||
try:
|
def job_thread(app_obj):
|
||||||
app_obj.new_object("geometry", name + "_solderpaste", geo_init)
|
try:
|
||||||
except Exception as e:
|
app_obj.new_object("geometry", name + "_solderpaste", geo_init)
|
||||||
log.error("SolderPaste.on_create_geo() --> %s" % str(e))
|
except Exception as e:
|
||||||
|
log.error("SolderPaste.on_create_geo() --> %s" % str(e))
|
||||||
|
proc.done()
|
||||||
|
return
|
||||||
proc.done()
|
proc.done()
|
||||||
return
|
|
||||||
proc.done()
|
|
||||||
|
|
||||||
self.app.inform.emit("Generating Solder Paste dispensing geometry...")
|
self.app.inform.emit("Generating Solder Paste dispensing geometry...")
|
||||||
# Promise object with the new name
|
# Promise object with the new name
|
||||||
self.app.collection.promise(name)
|
self.app.collection.promise(name)
|
||||||
|
|
||||||
# Background
|
# Background
|
||||||
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
|
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
|
||||||
# self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab)
|
else:
|
||||||
|
self.app.new_object("geometry", name + "_solderpaste", geo_init)
|
||||||
|
|
||||||
def on_create_gcode_click(self, signal):
|
def on_create_gcode_click(self, signal):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user