Activity indicator as context manager when opening files. Opening gerber from File->Open Gerber launches open_gerber in thread.
This commit is contained in:
131
FlatCAMApp.py
131
FlatCAMApp.py
@@ -1393,13 +1393,11 @@ class App(QtCore.QObject):
|
||||
# TODO: Improve the serialization methods and remove this fix.
|
||||
filename = str(filename)
|
||||
|
||||
self.open_gerber(filename)
|
||||
|
||||
# if str(filename) == "":
|
||||
# self.inform.emit("Open cancelled.")
|
||||
# else:
|
||||
# self.worker_task.emit({'fcn': self.open_gerber,
|
||||
# 'params': [filename]})
|
||||
if str(filename) == "":
|
||||
self.inform.emit("Open cancelled.")
|
||||
else:
|
||||
self.worker_task.emit({'fcn': self.open_gerber,
|
||||
'params': [filename]})
|
||||
|
||||
def on_fileopenexcellon(self):
|
||||
"""
|
||||
@@ -1584,40 +1582,24 @@ class App(QtCore.QObject):
|
||||
|
||||
App.log.debug("open_gerber()")
|
||||
|
||||
proc = self.proc_container.new("Opening Gerber")
|
||||
log.debug("sys.getrefcount(proc) == %d" % sys.getrefcount(proc))
|
||||
self.progress.emit(10)
|
||||
with self.proc_container.new("Opening Gerber") as proc:
|
||||
|
||||
self.progress.emit(10)
|
||||
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
### Object creation ###
|
||||
self.new_object("gerber", name, obj_init)
|
||||
|
||||
self.new_object("gerber", name, obj_init)
|
||||
# Register recent file
|
||||
self.file_opened.emit("gerber", filename)
|
||||
|
||||
# New object creation and file processing
|
||||
# try:
|
||||
# self.new_object("gerber", name, obj_init)
|
||||
# except:
|
||||
# e = sys.exc_info()
|
||||
# print "ERROR:", e[0]
|
||||
# traceback.print_exc()
|
||||
# self.message_dialog("Failed to create Gerber Object",
|
||||
# "Attempting to create a FlatCAM Gerber Object from " +
|
||||
# "Gerber file failed during processing:\n" +
|
||||
# str(e[0]) + " " + str(e[1]), kind="error")
|
||||
# GLib.timeout_add_seconds(1, lambda: self.set_progress_bar(0.0, "Idle"))
|
||||
# self.collection.delete_active()
|
||||
# return
|
||||
self.progress.emit(100)
|
||||
#proc.done()
|
||||
|
||||
# Register recent file
|
||||
self.file_opened.emit("gerber", filename)
|
||||
|
||||
self.progress.emit(100)
|
||||
#proc.done()
|
||||
|
||||
# GUI feedback
|
||||
self.inform.emit("Opened: " + filename)
|
||||
# GUI feedback
|
||||
self.inform.emit("Opened: " + filename)
|
||||
|
||||
def open_excellon(self, filename, outname=None):
|
||||
"""
|
||||
@@ -1631,11 +1613,11 @@ class App(QtCore.QObject):
|
||||
|
||||
App.log.debug("open_excellon()")
|
||||
|
||||
self.progress.emit(10)
|
||||
#self.progress.emit(10)
|
||||
|
||||
# How the object should be initialized
|
||||
def obj_init(excellon_obj, app_obj):
|
||||
self.progress.emit(20)
|
||||
#self.progress.emit(20)
|
||||
|
||||
try:
|
||||
excellon_obj.parse_file(filename)
|
||||
@@ -1651,32 +1633,21 @@ class App(QtCore.QObject):
|
||||
self.progress.emit(0)
|
||||
raise e
|
||||
|
||||
self.progress.emit(70)
|
||||
#self.progress.emit(70)
|
||||
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
with self.proc_container.new("Opening Excellon."):
|
||||
|
||||
self.new_object("excellon", name, obj_init)
|
||||
# New object creation and file processing
|
||||
# try:
|
||||
# self.new_object("excellon", name, obj_init)
|
||||
# except:
|
||||
# e = sys.exc_info()
|
||||
# App.log.error(str(e))
|
||||
# self.message_dialog("Failed to create Excellon Object",
|
||||
# "Attempting to create a FlatCAM Excellon Object from " +
|
||||
# "Excellon file failed during processing:\n" +
|
||||
# str(e[0]) + " " + str(e[1]), kind="error")
|
||||
# self.progress.emit(0)
|
||||
# self.collection.delete_active()
|
||||
# return
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
|
||||
# Register recent file
|
||||
self.file_opened.emit("excellon", filename)
|
||||
self.new_object("excellon", name, obj_init)
|
||||
|
||||
# GUI feedback
|
||||
self.inform.emit("Opened: " + filename)
|
||||
self.progress.emit(100)
|
||||
# Register recent file
|
||||
self.file_opened.emit("excellon", filename)
|
||||
|
||||
# GUI feedback
|
||||
self.inform.emit("Opened: " + filename)
|
||||
#self.progress.emit(100)
|
||||
|
||||
def open_gcode(self, filename, outname=None):
|
||||
"""
|
||||
@@ -1715,29 +1686,31 @@ class App(QtCore.QObject):
|
||||
self.progress.emit(60)
|
||||
job_obj.create_geometry()
|
||||
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
with self.proc_container.new("Opening G-Code."):
|
||||
|
||||
# New object creation and file processing
|
||||
try:
|
||||
self.new_object("cncjob", name, obj_init)
|
||||
except:
|
||||
e = sys.exc_info()
|
||||
App.log.error(str(e))
|
||||
self.message_dialog("Failed to create CNCJob Object",
|
||||
"Attempting to create a FlatCAM CNCJob Object from " +
|
||||
"G-Code file failed during processing:\n" +
|
||||
str(e[0]) + " " + str(e[1]), kind="error")
|
||||
self.progress.emit(0)
|
||||
self.collection.delete_active()
|
||||
return
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
|
||||
# Register recent file
|
||||
self.file_opened.emit("cncjob", filename)
|
||||
# New object creation and file processing
|
||||
try:
|
||||
self.new_object("cncjob", name, obj_init)
|
||||
except Exception as e:
|
||||
# e = sys.exc_info()
|
||||
App.log.error(str(e))
|
||||
self.message_dialog("Failed to create CNCJob Object",
|
||||
"Attempting to create a FlatCAM CNCJob Object from " +
|
||||
"G-Code file failed during processing:\n" +
|
||||
str(e[0]) + " " + str(e[1]), kind="error")
|
||||
self.progress.emit(0)
|
||||
self.collection.delete_active()
|
||||
raise e
|
||||
|
||||
# GUI feedback
|
||||
self.inform.emit("Opened: " + filename)
|
||||
self.progress.emit(100)
|
||||
# Register recent file
|
||||
self.file_opened.emit("cncjob", filename)
|
||||
|
||||
# GUI feedback
|
||||
self.inform.emit("Opened: " + filename)
|
||||
self.progress.emit(100)
|
||||
|
||||
def open_project(self, filename):
|
||||
"""
|
||||
|
||||
@@ -2,6 +2,17 @@ from FlatCAMGUI import FlatCAMActivityView
|
||||
from PyQt4 import QtCore
|
||||
import weakref
|
||||
|
||||
import logging
|
||||
|
||||
log = logging.getLogger('base2')
|
||||
log.setLevel(logging.DEBUG)
|
||||
#log.setLevel(logging.WARNING)
|
||||
#log.setLevel(logging.INFO)
|
||||
formatter = logging.Formatter('[%(levelname)s] %(message)s')
|
||||
handler = logging.StreamHandler()
|
||||
handler.setFormatter(formatter)
|
||||
log.addHandler(handler)
|
||||
|
||||
|
||||
class FCProcess(object):
|
||||
|
||||
@@ -13,9 +24,6 @@ class FCProcess(object):
|
||||
self.status = "Active"
|
||||
|
||||
def __del__(self):
|
||||
# print "#######################"
|
||||
# print "# FCProcess.__del__() #"
|
||||
# print "#######################"
|
||||
self.done()
|
||||
|
||||
def __enter__(self):
|
||||
@@ -23,15 +31,14 @@ class FCProcess(object):
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
if exc_type is not None:
|
||||
print "Abnormal termination of process!"
|
||||
print exc_type
|
||||
print exc_val
|
||||
print exc_tb
|
||||
log.error("Abnormal termination of process!")
|
||||
log.error(exc_type)
|
||||
log.error(exc_val)
|
||||
log.error(exc_tb)
|
||||
|
||||
self.done()
|
||||
|
||||
def done(self):
|
||||
# print "FCProcess.done()"
|
||||
for fcn in self.callbacks["done"]:
|
||||
fcn(self)
|
||||
|
||||
@@ -113,21 +120,18 @@ class FCVisibleProcessContainer(QtCore.QObject, FCProcessContainer):
|
||||
self.something_changed.connect(self.update_view)
|
||||
|
||||
def on_done(self, proc):
|
||||
print "FCVisibleProcessContainer.on_done()"
|
||||
log.debug("FCVisibleProcessContainer.on_done()")
|
||||
super(FCVisibleProcessContainer, self).on_done(proc)
|
||||
|
||||
#self.update_view()
|
||||
self.something_changed.emit()
|
||||
|
||||
def on_change(self, proc):
|
||||
print "FCVisibleProcessContainer.on_change()"
|
||||
log.debug("FCVisibleProcessContainer.on_change()")
|
||||
super(FCVisibleProcessContainer, self).on_change(proc)
|
||||
|
||||
#self.update_view()
|
||||
self.something_changed.emit()
|
||||
|
||||
def update_view(self):
|
||||
# print "FCVisibleProcessContainer.update_view()"
|
||||
if len(self.procs) == 0:
|
||||
self.view.set_idle()
|
||||
|
||||
|
||||
@@ -1929,10 +1929,12 @@ class Gerber (Geometry):
|
||||
|
||||
# --- Apply buffer ---
|
||||
log.warn("Joining %d polygons." % len(poly_buffer))
|
||||
new_poly = cascaded_union(poly_buffer)
|
||||
new_poly = new_poly.buffer(0)
|
||||
if current_polarity == 'D':
|
||||
self.solid_geometry = self.solid_geometry.union(cascaded_union(poly_buffer))
|
||||
self.solid_geometry = self.solid_geometry.union(new_poly)
|
||||
else:
|
||||
self.solid_geometry = self.solid_geometry.difference(cascaded_union(poly_buffer))
|
||||
self.solid_geometry = self.solid_geometry.difference(new_poly)
|
||||
|
||||
except Exception, err:
|
||||
#print traceback.format_exc()
|
||||
|
||||
Reference in New Issue
Block a user