Cleanup. And fixes #148.

This commit is contained in:
Juan Pablo Caram
2015-09-11 14:45:08 -04:00
parent 71aca80603
commit 22119072d3
6 changed files with 49 additions and 32 deletions

View File

@@ -1,7 +1,8 @@
from PyQt4 import QtGui from PyQt4 import QtGui
from GUIElements import RadioSet, EvalEntry, LengthEntry from GUIElements import RadioSet, EvalEntry, LengthEntry
from FlatCAMTool import FlatCAMTool from FlatCAMTool import FlatCAMTool
from FlatCAMObj import FlatCAMGerber, FlatCAMExcellon #from FlatCAMObj import FlatCAMGerber, FlatCAMExcellon
from FlatCAMObj import *
from shapely.geometry import Point from shapely.geometry import Point
from shapely import affinity from shapely import affinity

View File

@@ -1814,6 +1814,13 @@ class App(QtCore.QObject):
App.log.debug("Project loaded") App.log.debug("Project loaded")
def propagate_defaults(self): def propagate_defaults(self):
"""
This method is used to set default values in classes. It's
an alternative to project options but allows the use
of values invisible to the user.
:return: None
"""
self.log.debug("propagate_defaults()") self.log.debug("propagate_defaults()")
@@ -1822,17 +1829,17 @@ class App(QtCore.QObject):
"zdownrate": CNCjob, "zdownrate": CNCjob,
"excellon_zeros": Excellon, "excellon_zeros": Excellon,
"gerber_use_buffer_for_union": Gerber, "gerber_use_buffer_for_union": Gerber,
"cncjob_coordinate_format": CNCjob, "cncjob_coordinate_format": CNCjob
"spindlespeed": CNCjob # "spindlespeed": CNCjob
} }
for param in routes: for param in routes:
if param in routes[param].defaults: if param in routes[param].defaults:
try: try:
routes[param].defaults[param] = self.defaults[param] routes[param].defaults[param] = self.defaults[param]
self.log.debug(" " + param + " OK") self.log.debug(" " + param + " OK")
except KeyError: except KeyError:
pass self.log.debug(" ERROR: " + param + " not in defaults.")
else: else:
# Try extracting the name: # Try extracting the name:
# classname_param here is param in the object # classname_param here is param in the object

View File

@@ -1,5 +1,5 @@
from PyQt4 import QtCore from PyQt4 import QtCore
import FlatCAMApp #import FlatCAMApp
class Worker(QtCore.QObject): class Worker(QtCore.QObject):
@@ -14,13 +14,15 @@ class Worker(QtCore.QObject):
self.name = name self.name = name
def run(self): def run(self):
FlatCAMApp.App.log.debug("Worker Started!") # FlatCAMApp.App.log.debug("Worker Started!")
self.app.log.debug("Worker Started!")
# Tasks are queued in the event listener. # Tasks are queued in the event listener.
self.app.worker_task.connect(self.do_worker_task) self.app.worker_task.connect(self.do_worker_task)
def do_worker_task(self, task): def do_worker_task(self, task):
FlatCAMApp.App.log.debug("Running task: %s" % str(task)) # FlatCAMApp.App.log.debug("Running task: %s" % str(task))
self.app.log.debug("Running task: %s" % str(task))
# 'worker_name' property of task allows to target # 'worker_name' property of task allows to target
# specific worker. # specific worker.
@@ -32,4 +34,5 @@ class Worker(QtCore.QObject):
task['fcn'](*task['params']) task['fcn'](*task['params'])
return return
FlatCAMApp.App.log.debug("Task ignored.") # FlatCAMApp.App.log.debug("Task ignored.")
self.app.log.debug("Task ignored.")

View File

@@ -1,7 +1,10 @@
from PyQt4 import QtGui, QtCore from PyQt4 import QtGui, QtCore
from copy import copy from copy import copy
import FlatCAMApp #import FlatCAMApp
import re import re
import logging
log = logging.getLogger('base')
class RadioSet(QtGui.QWidget): class RadioSet(QtGui.QWidget):
@@ -37,7 +40,7 @@ class RadioSet(QtGui.QWidget):
self.group_toggle_fn = lambda: None self.group_toggle_fn = lambda: None
def on_toggle(self): def on_toggle(self):
FlatCAMApp.App.log.debug("Radio toggled") log.debug("Radio toggled")
radio = self.sender() radio = self.sender()
if radio.isChecked(): if radio.isChecked():
self.group_toggle_fn() self.group_toggle_fn()
@@ -47,7 +50,7 @@ class RadioSet(QtGui.QWidget):
for choice in self.choices: for choice in self.choices:
if choice['radio'].isChecked(): if choice['radio'].isChecked():
return choice['value'] return choice['value']
FlatCAMApp.App.log.error("No button was toggled in RadioSet.") log.error("No button was toggled in RadioSet.")
return None return None
def set_value(self, val): def set_value(self, val):
@@ -55,7 +58,7 @@ class RadioSet(QtGui.QWidget):
if choice['value'] == val: if choice['value'] == val:
choice['radio'].setChecked(True) choice['radio'].setChecked(True)
return return
FlatCAMApp.App.log.error("Value given is not part of this RadioSet: %s" % str(val)) log.error("Value given is not part of this RadioSet: %s" % str(val))
class LengthEntry(QtGui.QLineEdit): class LengthEntry(QtGui.QLineEdit):
@@ -78,7 +81,7 @@ class LengthEntry(QtGui.QLineEdit):
if val is not None: if val is not None:
self.set_text(QtCore.QString(str(val))) self.set_text(QtCore.QString(str(val)))
else: else:
FlatCAMApp.App.log.warning("Could not interpret entry: %s" % self.get_text()) log.warning("Could not interpret entry: %s" % self.get_text())
def get_value(self): def get_value(self):
raw = str(self.text()).strip(' ') raw = str(self.text()).strip(' ')
@@ -92,7 +95,7 @@ class LengthEntry(QtGui.QLineEdit):
else: else:
return float(eval(match.group(1))) return float(eval(match.group(1)))
except: except:
FlatCAMApp.App.log.warning("Could not parse value in entry: %s" % str(raw)) log.warning("Could not parse value in entry: %s" % str(raw))
return None return None
def set_value(self, val): def set_value(self, val):
@@ -108,14 +111,14 @@ class FloatEntry(QtGui.QLineEdit):
if val is not None: if val is not None:
self.set_text(QtCore.QString(str(val))) self.set_text(QtCore.QString(str(val)))
else: else:
FlatCAMApp.App.log.warning("Could not interpret entry: %s" % self.text()) log.warning("Could not interpret entry: %s" % self.text())
def get_value(self): def get_value(self):
raw = str(self.text()).strip(' ') raw = str(self.text()).strip(' ')
try: try:
evaled = eval(raw) evaled = eval(raw)
except: except:
FlatCAMApp.App.log.error("Could not evaluate: %s" % str(raw)) log.error("Could not evaluate: %s" % str(raw))
return None return None
return float(evaled) return float(evaled)
@@ -168,14 +171,14 @@ class EvalEntry(QtGui.QLineEdit):
if val is not None: if val is not None:
self.setText(QtCore.QString(str(val))) self.setText(QtCore.QString(str(val)))
else: else:
FlatCAMApp.App.log.warning("Could not interpret entry: %s" % self.get_text()) log.warning("Could not interpret entry: %s" % self.get_text())
def get_value(self): def get_value(self):
raw = str(self.text()).strip(' ') raw = str(self.text()).strip(' ')
try: try:
return eval(raw) return eval(raw)
except: except:
FlatCAMApp.App.log.error("Could not evaluate: %s" % str(raw)) log.error("Could not evaluate: %s" % str(raw))
return None return None
def set_value(self, val): def set_value(self, val):
@@ -226,19 +229,19 @@ class VerticalScrollArea(QtGui.QScrollArea):
:return: :return:
""" """
if event.type() == QtCore.QEvent.Resize and source == self.widget(): if event.type() == QtCore.QEvent.Resize and source == self.widget():
# FlatCAMApp.App.log.debug("VerticalScrollArea: Widget resized:") # log.debug("VerticalScrollArea: Widget resized:")
# FlatCAMApp.App.log.debug(" minimumSizeHint().width() = %d" % self.widget().minimumSizeHint().width()) # log.debug(" minimumSizeHint().width() = %d" % self.widget().minimumSizeHint().width())
# FlatCAMApp.App.log.debug(" verticalScrollBar().width() = %d" % self.verticalScrollBar().width()) # log.debug(" verticalScrollBar().width() = %d" % self.verticalScrollBar().width())
self.setMinimumWidth(self.widget().sizeHint().width() + self.setMinimumWidth(self.widget().sizeHint().width() +
self.verticalScrollBar().sizeHint().width()) self.verticalScrollBar().sizeHint().width())
# if self.verticalScrollBar().isVisible(): # if self.verticalScrollBar().isVisible():
# FlatCAMApp.App.log.debug(" Scroll bar visible") # log.debug(" Scroll bar visible")
# self.setMinimumWidth(self.widget().minimumSizeHint().width() + # self.setMinimumWidth(self.widget().minimumSizeHint().width() +
# self.verticalScrollBar().width()) # self.verticalScrollBar().width())
# else: # else:
# FlatCAMApp.App.log.debug(" Scroll bar hidden") # log.debug(" Scroll bar hidden")
# self.setMinimumWidth(self.widget().minimumSizeHint().width()) # self.setMinimumWidth(self.widget().minimumSizeHint().width())
return QtGui.QWidget.eventFilter(self, source, event) return QtGui.QWidget.eventFilter(self, source, event)

View File

@@ -1,6 +1,8 @@
import sys import sys
from PyQt4 import QtGui, QtCore from PyQt4 import QtGui, QtCore
from GUIElements import * #from GUIElements import *
from GUIElements import FCEntry, FloatEntry, EvalEntry, FCCheckBox, \
LengthEntry, FCTextArea, IntEntry, RadioSet, OptionalInputSection
class ObjectUI(QtGui.QWidget): class ObjectUI(QtGui.QWidget):

View File

@@ -2415,7 +2415,7 @@ class Excellon(Geometry):
self.solid_geometry = [] self.solid_geometry = []
for drill in self.drills: for drill in self.drills:
#poly = drill['point'].buffer(self.tools[drill['tool']]["C"]/2.0) # poly = drill['point'].buffer(self.tools[drill['tool']]["C"]/2.0)
tooldia = self.tools[drill['tool']]['C'] tooldia = self.tools[drill['tool']]['C']
poly = drill['point'].buffer(tooldia / 2.0) poly = drill['point'].buffer(tooldia / 2.0)
self.solid_geometry.append(poly) self.solid_geometry.append(poly)
@@ -2506,8 +2506,7 @@ class CNCjob(Geometry):
defaults = { defaults = {
"zdownrate": None, "zdownrate": None,
"coordinate_format": "X%.4fY%.4f", "coordinate_format": "X%.4fY%.4f"
"spindlespeed": None
} }
def __init__(self, def __init__(self,
@@ -2535,6 +2534,7 @@ class CNCjob(Geometry):
self.input_geometry_bounds = None self.input_geometry_bounds = None
self.gcode_parsed = None self.gcode_parsed = None
self.steps_per_circ = 20 # Used when parsing G-code arcs self.steps_per_circ = 20 # Used when parsing G-code arcs
if zdownrate is not None: if zdownrate is not None:
self.zdownrate = float(zdownrate) self.zdownrate = float(zdownrate)
elif CNCjob.defaults["zdownrate"] is not None: elif CNCjob.defaults["zdownrate"] is not None:
@@ -2544,7 +2544,6 @@ class CNCjob(Geometry):
self.spindlespeed = spindlespeed self.spindlespeed = spindlespeed
# Attributes to be included in serialization # Attributes to be included in serialization
# Always append to it because it carries contents # Always append to it because it carries contents
# from Geometry. # from Geometry.
@@ -2610,10 +2609,12 @@ class CNCjob(Geometry):
gcode += self.feedminutecode + "\n" gcode += self.feedminutecode + "\n"
gcode += "F%.2f\n" % self.feedrate gcode += "F%.2f\n" % self.feedrate
gcode += "G00 Z%.4f\n" % self.z_move # Move to travel height gcode += "G00 Z%.4f\n" % self.z_move # Move to travel height
if(self.spindlespeed != None):
if self.spindlespeed is not None:
gcode += "M03 S%d\n" % int(self.spindlespeed) # Spindle start with configured speed gcode += "M03 S%d\n" % int(self.spindlespeed) # Spindle start with configured speed
else: else:
gcode += "M03\n" # Spindle start gcode += "M03\n" # Spindle start
gcode += self.pausecode + "\n" gcode += self.pausecode + "\n"
for tool in points: for tool in points: