- minor changes
- moved the ObjectCollection class to the flatcamObjects folder where it belongs
This commit is contained in:
@@ -22,6 +22,8 @@ CHANGELOG for FlatCAM beta
|
|||||||
- split the FlatCAMObj file into multiple files located in the flatcamObjects folder and renamed the contained classes with names more suggestive
|
- split the FlatCAMObj file into multiple files located in the flatcamObjects folder and renamed the contained classes with names more suggestive
|
||||||
- updated the Google Translation for the German language
|
- updated the Google Translation for the German language
|
||||||
- added support for Hungarian language - no translation for now
|
- added support for Hungarian language - no translation for now
|
||||||
|
- minor changes
|
||||||
|
- moved the ObjectCollection class to the flatcamObjects folder where it belongs
|
||||||
|
|
||||||
25.04.2020
|
25.04.2020
|
||||||
|
|
||||||
|
|||||||
299
FlatCAMApp.py
299
FlatCAMApp.py
@@ -17,6 +17,7 @@ import lzma
|
|||||||
import shutil
|
import shutil
|
||||||
import stat
|
import stat
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import time
|
||||||
from stat import S_IREAD, S_IRGRP, S_IROTH
|
from stat import S_IREAD, S_IRGRP, S_IROTH
|
||||||
import ctypes
|
import ctypes
|
||||||
import traceback
|
import traceback
|
||||||
@@ -38,14 +39,20 @@ from multiprocessing.connection import Listener, Client
|
|||||||
from multiprocessing import Pool
|
from multiprocessing import Pool
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
# #######################################
|
# ####################################################################################################################
|
||||||
# # Imports part of FlatCAM ##
|
# ################################### Imports part of FlatCAM #############################################
|
||||||
# #######################################
|
# ####################################################################################################################
|
||||||
|
|
||||||
|
# Diverse
|
||||||
from FlatCAMCommon import LoudDict, color_variant
|
from FlatCAMCommon import LoudDict, color_variant
|
||||||
from FlatCAMBookmark import BookmarkManager
|
from FlatCAMBookmark import BookmarkManager
|
||||||
from FlatCAMDB import ToolsDB2
|
from FlatCAMDB import ToolsDB2
|
||||||
|
|
||||||
from ObjectCollection import *
|
from vispy.gloo.util import _screenshot
|
||||||
|
from vispy.io import write_png
|
||||||
|
|
||||||
|
# FlatCAM Objects
|
||||||
|
from flatcamObjects.ObjectCollection import *
|
||||||
from flatcamObjects.FlatCAMObj import FlatCAMObj
|
from flatcamObjects.FlatCAMObj import FlatCAMObj
|
||||||
from flatcamObjects.FlatCAMCNCJob import CNCJobObject
|
from flatcamObjects.FlatCAMCNCJob import CNCJobObject
|
||||||
from flatcamObjects.FlatCAMDocument import DocumentObject
|
from flatcamObjects.FlatCAMDocument import DocumentObject
|
||||||
@@ -54,32 +61,35 @@ from flatcamObjects.FlatCAMGeometry import GeometryObject
|
|||||||
from flatcamObjects.FlatCAMGerber import GerberObject
|
from flatcamObjects.FlatCAMGerber import GerberObject
|
||||||
from flatcamObjects.FlatCAMScript import ScriptObject
|
from flatcamObjects.FlatCAMScript import ScriptObject
|
||||||
|
|
||||||
|
# FlatCAM Parsing files
|
||||||
from flatcamParsers.ParseExcellon import Excellon
|
from flatcamParsers.ParseExcellon import Excellon
|
||||||
from flatcamParsers.ParseGerber import Gerber
|
from flatcamParsers.ParseGerber import Gerber
|
||||||
from camlib import to_dict, dict2obj, ET, ParseError, Geometry, CNCjob
|
from camlib import to_dict, dict2obj, ET, ParseError, Geometry, CNCjob
|
||||||
|
|
||||||
|
# FlatCAM GUI
|
||||||
from flatcamGUI.PlotCanvas import *
|
from flatcamGUI.PlotCanvas import *
|
||||||
from flatcamGUI.PlotCanvasLegacy import *
|
from flatcamGUI.PlotCanvasLegacy import *
|
||||||
from flatcamGUI.FlatCAMGUI import *
|
from flatcamGUI.FlatCAMGUI import *
|
||||||
from flatcamGUI.GUIElements import FCFileSaveDialog
|
from flatcamGUI.GUIElements import FCFileSaveDialog
|
||||||
|
|
||||||
|
# FlatCAM Pre-processors
|
||||||
from FlatCAMPostProc import load_preprocessors
|
from FlatCAMPostProc import load_preprocessors
|
||||||
|
|
||||||
|
# FlatCAM Editors
|
||||||
from flatcamEditors.FlatCAMGeoEditor import FlatCAMGeoEditor
|
from flatcamEditors.FlatCAMGeoEditor import FlatCAMGeoEditor
|
||||||
from flatcamEditors.FlatCAMExcEditor import FlatCAMExcEditor
|
from flatcamEditors.FlatCAMExcEditor import FlatCAMExcEditor
|
||||||
from flatcamEditors.FlatCAMGrbEditor import FlatCAMGrbEditor
|
from flatcamEditors.FlatCAMGrbEditor import FlatCAMGrbEditor
|
||||||
from flatcamEditors.FlatCAMTextEditor import TextEditor
|
from flatcamEditors.FlatCAMTextEditor import TextEditor
|
||||||
|
|
||||||
from flatcamParsers.ParseHPGL2 import HPGL2
|
from flatcamParsers.ParseHPGL2 import HPGL2
|
||||||
|
|
||||||
|
# FlatCAM Workers
|
||||||
from FlatCAMProcess import *
|
from FlatCAMProcess import *
|
||||||
from FlatCAMWorkerStack import WorkerStack
|
from FlatCAMWorkerStack import WorkerStack
|
||||||
# from flatcamGUI.VisPyVisuals import Color
|
|
||||||
from vispy.gloo.util import _screenshot
|
|
||||||
from vispy.io import write_png
|
|
||||||
|
|
||||||
|
# FlatCAM Tools
|
||||||
from flatcamTools import *
|
from flatcamTools import *
|
||||||
|
|
||||||
|
# FlatCAM Translation
|
||||||
import gettext
|
import gettext
|
||||||
import FlatCAMTranslation as fcTranslate
|
import FlatCAMTranslation as fcTranslate
|
||||||
import builtins
|
import builtins
|
||||||
@@ -301,9 +311,9 @@ class App(QtCore.QObject):
|
|||||||
else:
|
else:
|
||||||
App.log.debug("Win64!")
|
App.log.debug("Win64!")
|
||||||
|
|
||||||
# #########################################################################
|
# #######################################################################################################
|
||||||
# ####### CONFIG FILE WITH PARAMETERS REGARDING PORTABILITY ###############
|
# ####### CONFIG FILE WITH PARAMETERS REGARDING PORTABILITY #############################################
|
||||||
# #########################################################################
|
# #######################################################################################################
|
||||||
config_file = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + '\\config\\configuration.txt'
|
config_file = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + '\\config\\configuration.txt'
|
||||||
try:
|
try:
|
||||||
with open(config_file, 'r'):
|
with open(config_file, 'r'):
|
||||||
@@ -919,9 +929,9 @@ class App(QtCore.QObject):
|
|||||||
# Distance Tool
|
# Distance Tool
|
||||||
"tools_dist_snap_center": False,
|
"tools_dist_snap_center": False,
|
||||||
|
|
||||||
# ###################################################################################
|
# ########################################################################################################
|
||||||
# ################################ TOOLS 2 ##########################################
|
# ################################ TOOLS 2 ###############################################################
|
||||||
# ###################################################################################
|
# ########################################################################################################
|
||||||
|
|
||||||
# Optimal Tool
|
# Optimal Tool
|
||||||
"tools_opt_precision": 4,
|
"tools_opt_precision": 4,
|
||||||
@@ -1071,9 +1081,9 @@ class App(QtCore.QObject):
|
|||||||
"document_tab_size": 80,
|
"document_tab_size": 80,
|
||||||
})
|
})
|
||||||
|
|
||||||
# ############################################################
|
# ###########################################################################################################
|
||||||
# ############### Load defaults from file ####################
|
# ################################# Load defaults from file #################################################
|
||||||
# ############################################################
|
# ###########################################################################################################
|
||||||
self.old_defaults_found = False
|
self.old_defaults_found = False
|
||||||
|
|
||||||
if user_defaults:
|
if user_defaults:
|
||||||
@@ -1095,19 +1105,19 @@ class App(QtCore.QObject):
|
|||||||
self.current_defaults = {}
|
self.current_defaults = {}
|
||||||
self.current_defaults.update(self.defaults)
|
self.current_defaults.update(self.defaults)
|
||||||
|
|
||||||
# ##########################################################################
|
# ###########################################################################################################
|
||||||
# ##################### SETUP OBJECT CLASSES ###############################
|
# #################################### SETUP OBJECT CLASSES #################################################
|
||||||
# ##########################################################################
|
# ###########################################################################################################
|
||||||
self.setup_obj_classes()
|
self.setup_obj_classes()
|
||||||
|
|
||||||
# ##########################################################################
|
# ###########################################################################################################
|
||||||
# ##################### CREATE MULTIPROCESSING POOL ########################
|
# ###################################### CREATE MULTIPROCESSING POOL #######################################
|
||||||
# ##########################################################################
|
# ###########################################################################################################
|
||||||
self.pool = Pool()
|
self.pool = Pool()
|
||||||
|
|
||||||
# ##########################################################################
|
# ###########################################################################################################
|
||||||
# ################## Setting the Splash Screen #############################
|
# ###################################### Setting the Splash Screen ##########################################
|
||||||
# ##########################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
splash_settings = QSettings("Open Source", "FlatCAM")
|
splash_settings = QSettings("Open Source", "FlatCAM")
|
||||||
if splash_settings.contains("splash_screen"):
|
if splash_settings.contains("splash_screen"):
|
||||||
@@ -1137,9 +1147,9 @@ class App(QtCore.QObject):
|
|||||||
else:
|
else:
|
||||||
show_splash = 0
|
show_splash = 0
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ##################### Initialize GUI ########################################
|
# ######################################### Initialize GUI ##################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# FlatCAM colors used in plotting
|
# FlatCAM colors used in plotting
|
||||||
self.FC_light_green = '#BBF268BF'
|
self.FC_light_green = '#BBF268BF'
|
||||||
@@ -1178,18 +1188,18 @@ class App(QtCore.QObject):
|
|||||||
# set FlatCAM units in the Status bar
|
# set FlatCAM units in the Status bar
|
||||||
self.set_screen_units(self.defaults['units'])
|
self.set_screen_units(self.defaults['units'])
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ################################ AUTOSAVE SETUP #############################
|
# ########################################### AUTOSAVE SETUP ################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.block_autosave = False
|
self.block_autosave = False
|
||||||
self.autosave_timer = QtCore.QTimer(self)
|
self.autosave_timer = QtCore.QTimer(self)
|
||||||
self.save_project_auto_update()
|
self.save_project_auto_update()
|
||||||
self.autosave_timer.timeout.connect(self.save_project_auto)
|
self.autosave_timer.timeout.connect(self.save_project_auto)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ######################## UPDATE PREFERENCES GUI FORMS #######################
|
# ##################################### UPDATE PREFERENCES GUI FORMS ########################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# when adding entries here read the comments in the method found bellow named:
|
# when adding entries here read the comments in the method found bellow named:
|
||||||
# def new_object(self, kind, name, initialize, active=True, fit=True, plot=True)
|
# def new_object(self, kind, name, initialize, active=True, fit=True, plot=True)
|
||||||
@@ -1612,9 +1622,9 @@ class App(QtCore.QObject):
|
|||||||
"tools_solderpaste_pp": self.ui.tools_defaults_form.tools_solderpaste_group.pp_combo,
|
"tools_solderpaste_pp": self.ui.tools_defaults_form.tools_solderpaste_group.pp_combo,
|
||||||
"tools_sub_close_paths": self.ui.tools_defaults_form.tools_sub_group.close_paths_cb,
|
"tools_sub_close_paths": self.ui.tools_defaults_form.tools_sub_group.close_paths_cb,
|
||||||
|
|
||||||
# ###################################################################################
|
# #######################################################################################################
|
||||||
# ################################ TOOLS 2 ##########################################
|
# ########################################## TOOLS 2 ####################################################
|
||||||
# ###################################################################################
|
# #######################################################################################################
|
||||||
|
|
||||||
# Optimal Tool
|
# Optimal Tool
|
||||||
"tools_opt_precision": self.ui.tools2_defaults_form.tools2_optimal_group.precision_sp,
|
"tools_opt_precision": self.ui.tools2_defaults_form.tools2_optimal_group.precision_sp,
|
||||||
@@ -1738,10 +1748,10 @@ class App(QtCore.QObject):
|
|||||||
# When the self.defaults dictionary changes will update the Preferences GUI forms
|
# When the self.defaults dictionary changes will update the Preferences GUI forms
|
||||||
self.defaults.set_change_callback(self.on_defaults_dict_change)
|
self.defaults.set_change_callback(self.on_defaults_dict_change)
|
||||||
|
|
||||||
# ##############################################################################
|
# ###########################################################################################################
|
||||||
# ########################## FIRST RUN SECTION #################################
|
# ##################################### FIRST RUN SECTION ###################################################
|
||||||
# ##################### It's done only once after install ####################
|
# ################################ It's done only once after install #####################################
|
||||||
# ##############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
if self.defaults["first_run"] is True:
|
if self.defaults["first_run"] is True:
|
||||||
self.save_factory_defaults(silent_message=False)
|
self.save_factory_defaults(silent_message=False)
|
||||||
@@ -1761,9 +1771,9 @@ class App(QtCore.QObject):
|
|||||||
self.defaults["first_run"] = False
|
self.defaults["first_run"] = False
|
||||||
self.save_defaults(silent=True)
|
self.save_defaults(silent=True)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ############################## Data #########################################
|
# ############################################ Data #########################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.recent = []
|
self.recent = []
|
||||||
self.recent_projects = []
|
self.recent_projects = []
|
||||||
@@ -1773,9 +1783,9 @@ class App(QtCore.QObject):
|
|||||||
self.project_filename = None
|
self.project_filename = None
|
||||||
self.toggle_units_ignore = False
|
self.toggle_units_ignore = False
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ########################## LOAD PREPROCESSORS ###############################
|
# #################################### LOAD PREPROCESSORS ###################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# a dictionary that have as keys the name of the preprocessor files and the value is the class from
|
# a dictionary that have as keys the name of the preprocessor files and the value is the class from
|
||||||
# the preprocessor file
|
# the preprocessor file
|
||||||
@@ -1809,32 +1819,31 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
self.ui.excellon_defaults_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
|
self.ui.excellon_defaults_form.excellon_opt_group.pp_excellon_name_cb.addItem(name)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ########################## LOAD LANGUAGES ##################################
|
# ########################################## LOAD LANGUAGES ################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.languages = fcTranslate.load_languages()
|
self.languages = fcTranslate.load_languages()
|
||||||
for name in sorted(self.languages.values()):
|
for name in sorted(self.languages.values()):
|
||||||
self.ui.general_defaults_form.general_app_group.language_cb.addItem(name)
|
self.ui.general_defaults_form.general_app_group.language_cb.addItem(name)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ############################ APPLY APP LANGUAGE #############################
|
# ####################################### APPLY APP LANGUAGE ################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
ret_val = fcTranslate.apply_language('strings')
|
ret_val = fcTranslate.apply_language('strings')
|
||||||
|
|
||||||
if ret_val == "no language":
|
if ret_val == "no language":
|
||||||
self.inform.emit('[ERROR] %s' %
|
self.inform.emit('[ERROR] %s' % _("Could not find the Language files. The App strings are missing."))
|
||||||
_("Could not find the Language files. The App strings are missing."))
|
|
||||||
log.debug("Could not find the Language files. The App strings are missing.")
|
log.debug("Could not find the Language files. The App strings are missing.")
|
||||||
else:
|
else:
|
||||||
# make the current language the current selection on the language combobox
|
# make the current language the current selection on the language combobox
|
||||||
self.ui.general_defaults_form.general_app_group.language_cb.setCurrentText(ret_val)
|
self.ui.general_defaults_form.general_app_group.language_cb.setCurrentText(ret_val)
|
||||||
log.debug("App.__init__() --> Applied %s language." % str(ret_val).capitalize())
|
log.debug("App.__init__() --> Applied %s language." % str(ret_val).capitalize())
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ########################### CREATE UNIQUE SERIAL NUMBER #####################
|
# ###################################### CREATE UNIQUE SERIAL NUMBER ########################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
chars = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
chars = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||||
if self.defaults['global_serial'] == 0 or len(str(self.defaults['global_serial'])) < 10:
|
if self.defaults['global_serial'] == 0 or len(str(self.defaults['global_serial'])) < 10:
|
||||||
@@ -1854,15 +1863,15 @@ class App(QtCore.QObject):
|
|||||||
# if user_defaults:
|
# if user_defaults:
|
||||||
# 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)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ########################### UPDATE THE OPTIONS ##############################
|
# ######################################## UPDATE THE OPTIONS ###############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.options = LoudDict()
|
self.options = LoudDict()
|
||||||
# ----------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------
|
||||||
# Update the self.options from the self.defaults
|
# Update the self.options from the self.defaults
|
||||||
# The self.defaults holds the application defaults while the self.options holds the object defaults
|
# The self.defaults holds the application defaults while the self.options holds the object defaults
|
||||||
# -----------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------
|
||||||
# Copy app defaults to project options
|
# Copy app defaults to project options
|
||||||
for def_key, def_val in self.defaults.items():
|
for def_key, def_val in self.defaults.items():
|
||||||
self.options[def_key] = deepcopy(def_val)
|
self.options[def_key] = deepcopy(def_val)
|
||||||
@@ -1884,9 +1893,9 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
# ### End of Data ####
|
# ### End of Data ####
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ######################## SETUP OBJECT COLLECTION ############################
|
# #################################### SETUP OBJECT COLLECTION ##############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.collection = ObjectCollection(self)
|
self.collection = ObjectCollection(self)
|
||||||
self.ui.project_tab_layout.addWidget(self.collection.view)
|
self.ui.project_tab_layout.addWidget(self.collection.view)
|
||||||
@@ -1897,9 +1906,9 @@ class App(QtCore.QObject):
|
|||||||
self.collection.view.setMinimumWidth(290)
|
self.collection.view.setMinimumWidth(290)
|
||||||
self.log.debug("Finished creating Object Collection.")
|
self.log.debug("Finished creating Object Collection.")
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ############################## SETUP Plot Area ##############################
|
# ######################################## SETUP Plot Area ##################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# determine if the Legacy Graphic Engine is to be used or the OpenGL one
|
# determine if the Legacy Graphic Engine is to be used or the OpenGL one
|
||||||
if self.defaults["global_graphic_engine"] == '3D':
|
if self.defaults["global_graphic_engine"] == '3D':
|
||||||
@@ -1946,9 +1955,9 @@ class App(QtCore.QObject):
|
|||||||
color=QtGui.QColor("gray"))
|
color=QtGui.QColor("gray"))
|
||||||
self.ui.splitter.setStretchFactor(1, 2)
|
self.ui.splitter.setStretchFactor(1, 2)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ################################### SYS TRAY ################################
|
# ############################################### SYS TRAY ##################################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
if self.defaults["global_systray_icon"]:
|
if self.defaults["global_systray_icon"]:
|
||||||
self.parent_w = QtWidgets.QWidget()
|
self.parent_w = QtWidgets.QWidget()
|
||||||
|
|
||||||
@@ -1964,9 +1973,9 @@ class App(QtCore.QObject):
|
|||||||
'/flatcam_icon32_green.png'),
|
'/flatcam_icon32_green.png'),
|
||||||
parent=self.parent_w)
|
parent=self.parent_w)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ################################## Worker SETUP #############################
|
# ############################################### Worker SETUP ##############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
if self.defaults["global_worker_number"]:
|
if self.defaults["global_worker_number"]:
|
||||||
self.workers = WorkerStack(workers_number=int(self.defaults["global_worker_number"]))
|
self.workers = WorkerStack(workers_number=int(self.defaults["global_worker_number"]))
|
||||||
else:
|
else:
|
||||||
@@ -1974,18 +1983,18 @@ class App(QtCore.QObject):
|
|||||||
self.worker_task.connect(self.workers.add_task)
|
self.worker_task.connect(self.workers.add_task)
|
||||||
self.log.debug("Finished creating Workers crew.")
|
self.log.debug("Finished creating Workers crew.")
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ################################# Activity Monitor ##########################
|
# ############################################# Activity Monitor ###########################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
self.activity_view = FlatCAMActivityView(app=self)
|
self.activity_view = FlatCAMActivityView(app=self)
|
||||||
self.ui.infobar.addWidget(self.activity_view)
|
self.ui.infobar.addWidget(self.activity_view)
|
||||||
self.proc_container = FCVisibleProcessContainer(self.activity_view)
|
self.proc_container = FCVisibleProcessContainer(self.activity_view)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ################################## Signal handling ##########################
|
# ############################################# Signal handling #############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# ################################# Custom signals ###########################
|
# ########################################## Custom signals ################################################
|
||||||
# signal for displaying messages in status bar
|
# signal for displaying messages in status bar
|
||||||
self.inform.connect(self.info)
|
self.inform.connect(self.info)
|
||||||
# signal to be called when the app is quiting
|
# signal to be called when the app is quiting
|
||||||
@@ -2004,7 +2013,7 @@ class App(QtCore.QObject):
|
|||||||
self.file_opened.connect(lambda kind, filename: self.register_folder(filename))
|
self.file_opened.connect(lambda kind, filename: self.register_folder(filename))
|
||||||
self.file_saved.connect(lambda kind, filename: self.register_save_folder(filename))
|
self.file_saved.connect(lambda kind, filename: self.register_save_folder(filename))
|
||||||
|
|
||||||
# ############# Standard signals ###################
|
# ########################################## Standard signals ###############################################
|
||||||
# ### Menu
|
# ### Menu
|
||||||
self.ui.menufilenewproject.triggered.connect(self.on_file_new_click)
|
self.ui.menufilenewproject.triggered.connect(self.on_file_new_click)
|
||||||
self.ui.menufilenewgeo.triggered.connect(self.new_geometry_object)
|
self.ui.menufilenewgeo.triggered.connect(self.new_geometry_object)
|
||||||
@@ -2175,14 +2184,14 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
self.ui.pref_defaults_button.clicked.connect(self.on_restore_defaults_preferences)
|
self.ui.pref_defaults_button.clicked.connect(self.on_restore_defaults_preferences)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ######################### GUI PREFERENCES SIGNALS ###########################
|
# #################################### GUI PREFERENCES SIGNALS ##############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect(
|
self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect(
|
||||||
lambda: self.on_toggle_units(no_pref=False))
|
lambda: self.on_toggle_units(no_pref=False))
|
||||||
|
|
||||||
# ############################# Workspace Setting Signals #####################
|
# ##################################### Workspace Setting Signals ###########################################
|
||||||
self.ui.general_defaults_form.general_app_set_group.wk_cb.currentIndexChanged.connect(
|
self.ui.general_defaults_form.general_app_set_group.wk_cb.currentIndexChanged.connect(
|
||||||
self.on_workspace_modified)
|
self.on_workspace_modified)
|
||||||
self.ui.general_defaults_form.general_app_set_group.wk_orientation_radio.activated_custom.connect(
|
self.ui.general_defaults_form.general_app_set_group.wk_orientation_radio.activated_custom.connect(
|
||||||
@@ -2191,13 +2200,13 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
self.ui.general_defaults_form.general_app_set_group.workspace_cb.stateChanged.connect(self.on_workspace)
|
self.ui.general_defaults_form.general_app_set_group.workspace_cb.stateChanged.connect(self.on_workspace)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ############################# GUI SETTINGS SIGNALS ##########################
|
# ######################################## GUI SETTINGS SIGNALS #############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart)
|
self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart)
|
||||||
self.ui.general_defaults_form.general_app_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type)
|
self.ui.general_defaults_form.general_app_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type)
|
||||||
|
|
||||||
# ########## Tools related signals #############
|
# ######################################## Tools related signals ############################################
|
||||||
# Film Tool
|
# Film Tool
|
||||||
self.ui.tools_defaults_form.tools_film_group.film_color_entry.editingFinished.connect(
|
self.ui.tools_defaults_form.tools_film_group.film_color_entry.editingFinished.connect(
|
||||||
self.on_film_color_entry)
|
self.on_film_color_entry)
|
||||||
@@ -2235,9 +2244,9 @@ class App(QtCore.QObject):
|
|||||||
# when there are arguments at application startup this get launched
|
# when there are arguments at application startup this get launched
|
||||||
self.args_at_startup[list].connect(self.on_startup_args)
|
self.args_at_startup[list].connect(self.on_startup_args)
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ########################## FILE ASSOCIATIONS SIGNALS ########################
|
# ####################################### FILE ASSOCIATIONS SIGNALS #########################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.ui.util_defaults_form.fa_excellon_group.restore_btn.clicked.connect(
|
self.ui.util_defaults_form.fa_excellon_group.restore_btn.clicked.connect(
|
||||||
lambda: self.restore_extensions(ext_type='excellon'))
|
lambda: self.restore_extensions(ext_type='excellon'))
|
||||||
@@ -2275,9 +2284,9 @@ class App(QtCore.QObject):
|
|||||||
self.ui.util_defaults_form.fa_gerber_group.grb_list_btn.clicked.connect(
|
self.ui.util_defaults_form.fa_gerber_group.grb_list_btn.clicked.connect(
|
||||||
lambda: self.on_register_files(obj_type='gerber'))
|
lambda: self.on_register_files(obj_type='gerber'))
|
||||||
|
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
# ################################ KEYWORDS SIGNALS ###########################
|
# ########################################### KEYWORDS SIGNALS ##############################################
|
||||||
# #############################################################################
|
# ###########################################################################################################
|
||||||
self.ui.util_defaults_form.kw_group.restore_btn.clicked.connect(
|
self.ui.util_defaults_form.kw_group.restore_btn.clicked.connect(
|
||||||
lambda: self.restore_extensions(ext_type='keyword'))
|
lambda: self.restore_extensions(ext_type='keyword'))
|
||||||
self.ui.util_defaults_form.kw_group.del_all_btn.clicked.connect(
|
self.ui.util_defaults_form.kw_group.del_all_btn.clicked.connect(
|
||||||
@@ -2298,14 +2307,16 @@ class App(QtCore.QObject):
|
|||||||
|
|
||||||
# signal to close the application
|
# signal to close the application
|
||||||
self.close_app_signal.connect(self.kill_app)
|
self.close_app_signal.connect(self.kill_app)
|
||||||
# #####################################################################################
|
# ################################# FINISHED CONNECTING SIGNALS #############################################
|
||||||
# ########### FINISHED CONNECTING SIGNALS #############################################
|
# ###########################################################################################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.log.debug("Finished connecting Signals.")
|
self.log.debug("Finished connecting Signals.")
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ########################## Other setups #############################################
|
# ########################################## Other setups ###################################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# to use for tools like Distance tool who depends on the event sources who are changed inside the Editors
|
# to use for tools like Distance tool who depends on the event sources who are changed inside the Editors
|
||||||
# depending on from where those tools are called different actions can be done
|
# depending on from where those tools are called different actions can be done
|
||||||
@@ -2323,9 +2334,9 @@ class App(QtCore.QObject):
|
|||||||
# Sets up FlatCAMObj, FCProcess and FCProcessContainer.
|
# Sets up FlatCAMObj, FCProcess and FCProcessContainer.
|
||||||
self.setup_component_editor()
|
self.setup_component_editor()
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ######################### Auto-complete KEYWORDS ####################################
|
# ####################################### Auto-complete KEYWORDS ############################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
self.tcl_commands_list = ['add_circle', 'add_poly', 'add_polygon', 'add_polyline', 'add_rectangle',
|
self.tcl_commands_list = ['add_circle', 'add_poly', 'add_polygon', 'add_polyline', 'add_rectangle',
|
||||||
'aligndrill', 'aligndrillgrid', 'bbox', 'clear', 'cncjob', 'cutout',
|
'aligndrill', 'aligndrillgrid', 'bbox', 'clear', 'cncjob', 'cutout',
|
||||||
'del', 'drillcncjob', 'export_dxf', 'edxf', 'export_excellon',
|
'del', 'drillcncjob', 'export_dxf', 'edxf', 'export_excellon',
|
||||||
@@ -2555,9 +2566,9 @@ class App(QtCore.QObject):
|
|||||||
self.autocomplete_kw_list = self.defaults['util_autocomplete_keywords'].replace(' ', '').split(',')
|
self.autocomplete_kw_list = self.defaults['util_autocomplete_keywords'].replace(' ', '').split(',')
|
||||||
self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
|
self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
|
||||||
|
|
||||||
# ####################################################################################
|
# ###########################################################################################################
|
||||||
# ####################### Shell SETUP ################################################
|
# ############################################## Shell SETUP ################################################
|
||||||
# ####################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.shell = FCShell(app=self, version=self.version)
|
self.shell = FCShell(app=self, version=self.version)
|
||||||
|
|
||||||
@@ -2570,9 +2581,9 @@ class App(QtCore.QObject):
|
|||||||
else:
|
else:
|
||||||
self.ui.shell_dock.hide()
|
self.ui.shell_dock.hide()
|
||||||
|
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
# ###################### Tools and Plugins #########################################
|
# ########################################## Tools and Plugins ##############################################
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.dblsidedtool = None
|
self.dblsidedtool = None
|
||||||
self.distance_tool = None
|
self.distance_tool = None
|
||||||
@@ -2608,22 +2619,22 @@ class App(QtCore.QObject):
|
|||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
log.debug("App.__init__() install tools() --> %s" % str(e))
|
log.debug("App.__init__() install tools() --> %s" % str(e))
|
||||||
|
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
# ########################### SETUP RECENT ITEMS ###################################
|
# ############################################ SETUP RECENT ITEMS ###########################################
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
self.setup_recent_items()
|
self.setup_recent_items()
|
||||||
|
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
# ########################### BookMarks Manager ####################################
|
# ######################################### BookMarks Manager ###############################################
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# install Bookmark Manager and populate bookmarks in the Help -> Bookmarks
|
# install Bookmark Manager and populate bookmarks in the Help -> Bookmarks
|
||||||
self.install_bookmarks()
|
self.install_bookmarks()
|
||||||
self.book_dialog_tab = BookmarkManager(app=self, storage=self.defaults["global_bookmarks"])
|
self.book_dialog_tab = BookmarkManager(app=self, storage=self.defaults["global_bookmarks"])
|
||||||
|
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
# ############################## Tools Database ####################################
|
# ########################################### Tools Database ################################################
|
||||||
# ##################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
self.tools_db_tab = None
|
self.tools_db_tab = None
|
||||||
|
|
||||||
@@ -2631,9 +2642,9 @@ class App(QtCore.QObject):
|
|||||||
# self.f_parse = ParseFont(self)
|
# self.f_parse = ParseFont(self)
|
||||||
# self.parse_system_fonts()
|
# self.parse_system_fonts()
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ######################## Check for updates ##########################################
|
# ######################################### Check for updates ###############################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# Separate thread (Not worker)
|
# Separate thread (Not worker)
|
||||||
# Check for updates on startup but only if the user consent and the app is not in Beta version
|
# Check for updates on startup but only if the user consent and the app is not in Beta version
|
||||||
@@ -2646,16 +2657,16 @@ class App(QtCore.QObject):
|
|||||||
'params': []})
|
'params': []})
|
||||||
self.thr2.start(QtCore.QThread.LowPriority)
|
self.thr2.start(QtCore.QThread.LowPriority)
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ######################### Register files with FlatCAM; #############################
|
# ##################################### Register files with FlatCAM; #######################################
|
||||||
# ######################### It works only for Windows for now ########################
|
# ################################### It works only for Windows for now ####################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
if sys.platform == 'win32' and self.defaults["first_run"] is True:
|
if sys.platform == 'win32' and self.defaults["first_run"] is True:
|
||||||
self.on_register_files()
|
self.on_register_files()
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ###################### Variables for global usage ###################################
|
# ######################################## Variables for global usage #######################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# hold the App units
|
# hold the App units
|
||||||
self.units = 'MM'
|
self.units = 'MM'
|
||||||
@@ -2790,9 +2801,9 @@ class App(QtCore.QObject):
|
|||||||
# used in the delayed shutdown self.start_delayed_quit() method
|
# used in the delayed shutdown self.start_delayed_quit() method
|
||||||
self.save_timer = None
|
self.save_timer = None
|
||||||
|
|
||||||
# ###############################################################################
|
# ###########################################################################################################
|
||||||
# ################# ADDING FlatCAM EDITORS section ##############################
|
# ################################## ADDING FlatCAM EDITORS section #########################################
|
||||||
# ###############################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# watch out for the position of the editors instantiation ... if it is done before a save of the default values
|
# watch out for the position of the editors instantiation ... if it is done before a save of the default values
|
||||||
# at the first launch of the App , the editors will not be functional.
|
# at the first launch of the App , the editors will not be functional.
|
||||||
@@ -2820,14 +2831,14 @@ class App(QtCore.QObject):
|
|||||||
self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio.set_value('T')
|
self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio.set_value('T')
|
||||||
self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio.setDisabled(True)
|
self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio.setDisabled(True)
|
||||||
|
|
||||||
# ###############################################################################
|
# ###########################################################################################################
|
||||||
# ####################### Finished the CONSTRUCTOR ##############################
|
# ##################################### Finished the CONSTRUCTOR ############################################
|
||||||
# ###############################################################################
|
# ###########################################################################################################
|
||||||
App.log.debug("END of constructor. Releasing control.")
|
App.log.debug("END of constructor. Releasing control.")
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ########################## SHOW GUI #################################################
|
# ########################################## SHOW GUI #######################################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# if the app is not started as headless, show it
|
# if the app is not started as headless, show it
|
||||||
if self.cmd_line_headless != 1:
|
if self.cmd_line_headless != 1:
|
||||||
@@ -2850,9 +2861,9 @@ class App(QtCore.QObject):
|
|||||||
else:
|
else:
|
||||||
log.warning("******************* RUNNING HEADLESS *******************")
|
log.warning("******************* RUNNING HEADLESS *******************")
|
||||||
|
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
# ########################## START-UP ARGUMENTS #######################################
|
# ######################################## START-UP ARGUMENTS ###############################################
|
||||||
# #####################################################################################
|
# ###########################################################################################################
|
||||||
|
|
||||||
# test if the program was started with a script as parameter
|
# test if the program was started with a script as parameter
|
||||||
if self.cmd_line_shellvar:
|
if self.cmd_line_shellvar:
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ from flatcamEditors.FlatCAMGeoEditor import FCShapeTool
|
|||||||
from matplotlib.backend_bases import KeyEvent as mpl_key_event
|
from matplotlib.backend_bases import KeyEvent as mpl_key_event
|
||||||
|
|
||||||
import webbrowser
|
import webbrowser
|
||||||
from ObjectCollection import KeySensitiveListView
|
from flatcamObjects.ObjectCollection import KeySensitiveListView
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
from PyQt5 import QtCore
|
from PyQt5 import QtCore
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from flatcamGUI.VisPyCanvas import VisPyCanvas, time, Color
|
from flatcamGUI.VisPyCanvas import VisPyCanvas, Color
|
||||||
from flatcamGUI.VisPyVisuals import ShapeGroup, ShapeCollection, TextCollection, TextGroup, Cursor
|
from flatcamGUI.VisPyVisuals import ShapeGroup, ShapeCollection, TextCollection, TextGroup, Cursor
|
||||||
from vispy.scene.visuals import InfiniteLine, Line
|
from vispy.scene.visuals import InfiniteLine, Line
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ class PlotCanvas(QtCore.QObject, VisPyCanvas):
|
|||||||
"""
|
"""
|
||||||
if big is True:
|
if big is True:
|
||||||
self.big_cursor = True
|
self.big_cursor = True
|
||||||
self.c = CursorBig()
|
self.c = CursorBig(app=self.fcapp)
|
||||||
|
|
||||||
# in case there are multiple new_cursor calls, best to disconnect first the signals
|
# in case there are multiple new_cursor calls, best to disconnect first the signals
|
||||||
try:
|
try:
|
||||||
@@ -410,9 +410,9 @@ class CursorBig(QtCore.QObject):
|
|||||||
mouse_state_updated = QtCore.pyqtSignal(bool)
|
mouse_state_updated = QtCore.pyqtSignal(bool)
|
||||||
mouse_position_updated = QtCore.pyqtSignal(list)
|
mouse_position_updated = QtCore.pyqtSignal(list)
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, app):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self.app = app
|
||||||
self._enabled = None
|
self._enabled = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
Reference in New Issue
Block a user