mirror of
https://github.com/Denvi/FlatCAM.git
synced 2026-02-20 01:31:38 +01:00
merge changes from master
cleanups and prepare for pull request
This commit is contained in:
@@ -12,7 +12,7 @@ def debug_trace():
|
|||||||
|
|
||||||
debug_trace()
|
debug_trace()
|
||||||
|
|
||||||
# all X11 calling should be thread safe otherwise we have strenght issues
|
# all X11 calling should be thread safe otherwise we have strange issues
|
||||||
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_X11InitThreads)
|
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_X11InitThreads)
|
||||||
|
|
||||||
app = QtGui.QApplication(sys.argv)
|
app = QtGui.QApplication(sys.argv)
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ class FCShell(termwidget.TermWidget):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def child_exec_command(self, text):
|
def child_exec_command(self, text):
|
||||||
self._sysShell.exec_command(text)
|
self._sysShell.exec_command(text)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
|
|
||||||
|
|
||||||
class Worker(QtCore.QObject):
|
class Worker(QtCore.QObject):
|
||||||
"""
|
"""
|
||||||
Implements a queue of tasks to be carried out in order
|
Implements a queue of tasks to be carried out in order
|
||||||
@@ -46,17 +47,6 @@ class Worker(QtCore.QObject):
|
|||||||
|
|
||||||
self.allow_debug()
|
self.allow_debug()
|
||||||
|
|
||||||
# 'worker_name' property of task allows to target
|
|
||||||
# specific worker.
|
|
||||||
#if 'worker_name' in task and task['worker_name'] == self.name:
|
|
||||||
# task['fcn'](*task['params'])
|
|
||||||
# return
|
|
||||||
|
|
||||||
#if 'worker_name' not in task and self.name is None:
|
|
||||||
# task['fcn'](*task['params'])
|
|
||||||
# return
|
|
||||||
|
|
||||||
|
|
||||||
if ('worker_name' in task and task['worker_name'] == self.name) or \
|
if ('worker_name' in task and task['worker_name'] == self.name) or \
|
||||||
('worker_name' not in task and self.name is None):
|
('worker_name' not in task and self.name is None):
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ Shows intput and output text. Allows to enter commands. Supports history.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import cgi
|
import cgi
|
||||||
from PyQt4 import QtCore
|
from PyQt4.QtCore import pyqtSignal, Qt
|
||||||
from PyQt4.QtCore import pyqtSignal
|
|
||||||
from PyQt4.QtGui import QColor, QKeySequence, QLineEdit, QPalette, \
|
from PyQt4.QtGui import QColor, QKeySequence, QLineEdit, QPalette, \
|
||||||
QSizePolicy, QTextCursor, QTextEdit, \
|
QSizePolicy, QTextCursor, QTextEdit, \
|
||||||
QVBoxLayout, QWidget
|
QVBoxLayout, QWidget
|
||||||
@@ -19,13 +18,13 @@ class _ExpandableTextEdit(QTextEdit):
|
|||||||
historyNext = pyqtSignal()
|
historyNext = pyqtSignal()
|
||||||
historyPrev = pyqtSignal()
|
historyPrev = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, termWidget, *args):
|
def __init__(self, termwidget, *args):
|
||||||
QTextEdit.__init__(self, *args)
|
QTextEdit.__init__(self, *args)
|
||||||
self.setStyleSheet("font: 9pt \"Courier\";")
|
self.setStyleSheet("font: 9pt \"Courier\";")
|
||||||
self._fittedHeight = 1
|
self._fittedHeight = 1
|
||||||
self.textChanged.connect(self._fit_to_document)
|
self.textChanged.connect(self._fit_to_document)
|
||||||
self._fit_to_document()
|
self._fit_to_document()
|
||||||
self._termWidget = termWidget
|
self._termWidget = termwidget
|
||||||
|
|
||||||
def sizeHint(self):
|
def sizeHint(self):
|
||||||
"""
|
"""
|
||||||
@@ -39,10 +38,10 @@ class _ExpandableTextEdit(QTextEdit):
|
|||||||
"""
|
"""
|
||||||
Update widget height to fit all text
|
Update widget height to fit all text
|
||||||
"""
|
"""
|
||||||
documentSize = self.document().size().toSize()
|
documentsize = self.document().size().toSize()
|
||||||
self._fittedHeight = documentSize.height() + (self.height() - self.viewport().height())
|
self._fittedHeight = documentsize.height() + (self.height() - self.viewport().height())
|
||||||
self.setMaximumHeight(self._fittedHeight)
|
self.setMaximumHeight(self._fittedHeight)
|
||||||
self.updateGeometry();
|
self.updateGeometry()
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
"""
|
"""
|
||||||
@@ -55,30 +54,33 @@ class _ExpandableTextEdit(QTextEdit):
|
|||||||
return
|
return
|
||||||
elif event.matches(QKeySequence.MoveToNextLine):
|
elif event.matches(QKeySequence.MoveToNextLine):
|
||||||
text = self.toPlainText()
|
text = self.toPlainText()
|
||||||
cursorPos = self.textCursor().position()
|
cursor_pos = self.textCursor().position()
|
||||||
textBeforeEnd = text[cursorPos:]
|
textBeforeEnd = text[cursor_pos:]
|
||||||
# if len(textBeforeEnd.splitlines()) <= 1:
|
# if len(textBeforeEnd.splitlines()) <= 1:
|
||||||
if len(textBeforeEnd.split('\n')) <= 1:
|
if len(textBeforeEnd.split('\n')) <= 1:
|
||||||
self.historyNext.emit()
|
self.historyNext.emit()
|
||||||
return
|
return
|
||||||
elif event.matches(QKeySequence.MoveToPreviousLine):
|
elif event.matches(QKeySequence.MoveToPreviousLine):
|
||||||
text = self.toPlainText()
|
text = self.toPlainText()
|
||||||
cursorPos = self.textCursor().position()
|
cursor_pos = self.textCursor().position()
|
||||||
textBeforeStart = text[:cursorPos]
|
text_before_start = text[:cursor_pos]
|
||||||
# lineCount = len(textBeforeStart.splitlines())
|
# lineCount = len(textBeforeStart.splitlines())
|
||||||
lineCount = len(textBeforeStart.split('\n'))
|
line_count = len(text_before_start.split('\n'))
|
||||||
if len(textBeforeStart) > 0 and \
|
if len(text_before_start) > 0 and \
|
||||||
(textBeforeStart[-1] == '\n' or textBeforeStart[-1] == '\r'):
|
(text_before_start[-1] == '\n' or text_before_start[-1] == '\r'):
|
||||||
lineCount += 1
|
line_count += 1
|
||||||
if lineCount <= 1:
|
if line_count <= 1:
|
||||||
self.historyPrev.emit()
|
self.historyPrev.emit()
|
||||||
return
|
return
|
||||||
elif event.matches(QKeySequence.MoveToNextPage) or \
|
elif event.matches(QKeySequence.MoveToNextPage) or \
|
||||||
event.matches(QKeySequence.MoveToPreviousPage):
|
event.matches(QKeySequence.MoveToPreviousPage):
|
||||||
return self._termWidget.browser().keyPressEvent(event)
|
return self._termWidget.browser().keyPressEvent(event)
|
||||||
|
|
||||||
QTextEdit.keyPressEvent(self, event)
|
QTextEdit.keyPressEvent(self, event)
|
||||||
|
|
||||||
|
def insertFromMimeData(self, mime_data):
|
||||||
|
# Paste only plain text.
|
||||||
|
self.insertPlainText(mime_data.text())
|
||||||
|
|
||||||
class TermWidget(QWidget):
|
class TermWidget(QWidget):
|
||||||
"""
|
"""
|
||||||
@@ -94,8 +96,9 @@ class TermWidget(QWidget):
|
|||||||
self._browser = QTextEdit(self)
|
self._browser = QTextEdit(self)
|
||||||
self._browser.setStyleSheet("font: 9pt \"Courier\";")
|
self._browser.setStyleSheet("font: 9pt \"Courier\";")
|
||||||
self._browser.setReadOnly(True)
|
self._browser.setReadOnly(True)
|
||||||
self._browser.document().setDefaultStyleSheet(self._browser.document().defaultStyleSheet() +
|
self._browser.document().setDefaultStyleSheet(
|
||||||
"span {white-space:pre;}")
|
self._browser.document().defaultStyleSheet() +
|
||||||
|
"span {white-space:pre;}")
|
||||||
|
|
||||||
self._edit = _ExpandableTextEdit(self, self)
|
self._edit = _ExpandableTextEdit(self, self)
|
||||||
self._edit.historyNext.connect(self._on_history_next)
|
self._edit.historyNext.connect(self._on_history_next)
|
||||||
@@ -116,11 +119,13 @@ class TermWidget(QWidget):
|
|||||||
def open_proccessing(self, detail=None):
|
def open_proccessing(self, detail=None):
|
||||||
"""
|
"""
|
||||||
Open processing and disable using shell commands again until all commands are finished
|
Open processing and disable using shell commands again until all commands are finished
|
||||||
:return:
|
|
||||||
|
:param detail: text detail about what is currently called from TCL to python
|
||||||
|
:return: None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self._edit.setTextColor(QtCore.Qt.white)
|
self._edit.setTextColor(Qt.white)
|
||||||
self._edit.setTextBackgroundColor(QtCore.Qt.darkGreen)
|
self._edit.setTextBackgroundColor(Qt.darkGreen)
|
||||||
if detail is None:
|
if detail is None:
|
||||||
self._edit.setPlainText("...proccessing...")
|
self._edit.setPlainText("...proccessing...")
|
||||||
else:
|
else:
|
||||||
@@ -134,8 +139,8 @@ class TermWidget(QWidget):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self._edit.setTextColor(QtCore.Qt.black)
|
self._edit.setTextColor(Qt.black)
|
||||||
self._edit.setTextBackgroundColor(QtCore.Qt.white)
|
self._edit.setTextBackgroundColor(Qt.white)
|
||||||
self._edit.setPlainText('')
|
self._edit.setPlainText('')
|
||||||
self._edit.setDisabled(False)
|
self._edit.setDisabled(False)
|
||||||
|
|
||||||
@@ -146,30 +151,12 @@ class TermWidget(QWidget):
|
|||||||
assert style in ('in', 'out', 'err')
|
assert style in ('in', 'out', 'err')
|
||||||
|
|
||||||
text = cgi.escape(text)
|
text = cgi.escape(text)
|
||||||
|
|
||||||
text = text.replace('\n', '<br/>')
|
text = text.replace('\n', '<br/>')
|
||||||
|
|
||||||
if style != 'out':
|
if style == 'in':
|
||||||
def_bg = self._browser.palette().color(QPalette.Base)
|
text = '<span style="font-weight: bold;">%s</span>' % text
|
||||||
h, s, v, a = def_bg.getHsvF()
|
elif style == 'err':
|
||||||
|
text = '<span style="font-weight: bold; color: red;">%s</span>' % text
|
||||||
if style == 'in':
|
|
||||||
if v > 0.5: # white background
|
|
||||||
v = v - (v / 8) # make darker
|
|
||||||
else:
|
|
||||||
v = v + ((1 - v) / 4) # make ligher
|
|
||||||
else: # err
|
|
||||||
if v < 0.5:
|
|
||||||
v = v + ((1 - v) / 4) # make ligher
|
|
||||||
|
|
||||||
if h == -1: # make red
|
|
||||||
h = 0
|
|
||||||
s = .4
|
|
||||||
else:
|
|
||||||
h = h + ((1 - h) * 0.5) # make more red
|
|
||||||
|
|
||||||
bg = QColor.fromHsvF(h, s, v).name()
|
|
||||||
text = '<span style="background-color: %s; font-weight: bold;">%s</span>' % (str(bg), text)
|
|
||||||
else:
|
else:
|
||||||
text = '<span>%s</span>' % text # without span <br/> is ignored!!!
|
text = '<span>%s</span>' % text # without span <br/> is ignored!!!
|
||||||
|
|
||||||
@@ -264,4 +251,3 @@ class TermWidget(QWidget):
|
|||||||
self._historyIndex -= 1
|
self._historyIndex -= 1
|
||||||
self._edit.setPlainText(self._history[self._historyIndex])
|
self._edit.setPlainText(self._history[self._historyIndex])
|
||||||
self._edit.moveCursor(QTextCursor.End)
|
self._edit.moveCursor(QTextCursor.End)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user