From b333d136b5fd114b516a9a6f0e70babe9dd16196 Mon Sep 17 00:00:00 2001 From: Kamil Sopko Date: Thu, 31 Mar 2016 17:16:14 +0200 Subject: [PATCH] merge changes from master cleanups and prepare for pull request --- FlatCAM.py | 2 +- FlatCAMShell.py | 2 +- FlatCAMWorker.py | 12 +------- termwidget.py | 80 ++++++++++++++++++++---------------------------- 4 files changed, 36 insertions(+), 60 deletions(-) diff --git a/FlatCAM.py b/FlatCAM.py index 92ed2e1c..1cb60c9f 100644 --- a/FlatCAM.py +++ b/FlatCAM.py @@ -12,7 +12,7 @@ def 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) app = QtGui.QApplication(sys.argv) diff --git a/FlatCAMShell.py b/FlatCAMShell.py index c85e86e0..695d7a9b 100644 --- a/FlatCAMShell.py +++ b/FlatCAMShell.py @@ -22,4 +22,4 @@ class FCShell(termwidget.TermWidget): return True def child_exec_command(self, text): - self._sysShell.exec_command(text) \ No newline at end of file + self._sysShell.exec_command(text) diff --git a/FlatCAMWorker.py b/FlatCAMWorker.py index a1f49a81..cbe9de91 100644 --- a/FlatCAMWorker.py +++ b/FlatCAMWorker.py @@ -1,5 +1,6 @@ from PyQt4 import QtCore + class Worker(QtCore.QObject): """ Implements a queue of tasks to be carried out in order @@ -46,17 +47,6 @@ class Worker(QtCore.QObject): 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 \ ('worker_name' not in task and self.name is None): diff --git a/termwidget.py b/termwidget.py index 94bbb80f..538cc161 100644 --- a/termwidget.py +++ b/termwidget.py @@ -4,8 +4,7 @@ Shows intput and output text. Allows to enter commands. Supports history. """ import cgi -from PyQt4 import QtCore -from PyQt4.QtCore import pyqtSignal +from PyQt4.QtCore import pyqtSignal, Qt from PyQt4.QtGui import QColor, QKeySequence, QLineEdit, QPalette, \ QSizePolicy, QTextCursor, QTextEdit, \ QVBoxLayout, QWidget @@ -19,13 +18,13 @@ class _ExpandableTextEdit(QTextEdit): historyNext = pyqtSignal() historyPrev = pyqtSignal() - def __init__(self, termWidget, *args): + def __init__(self, termwidget, *args): QTextEdit.__init__(self, *args) self.setStyleSheet("font: 9pt \"Courier\";") self._fittedHeight = 1 self.textChanged.connect(self._fit_to_document) self._fit_to_document() - self._termWidget = termWidget + self._termWidget = termwidget def sizeHint(self): """ @@ -39,10 +38,10 @@ class _ExpandableTextEdit(QTextEdit): """ Update widget height to fit all text """ - documentSize = self.document().size().toSize() - self._fittedHeight = documentSize.height() + (self.height() - self.viewport().height()) + documentsize = self.document().size().toSize() + self._fittedHeight = documentsize.height() + (self.height() - self.viewport().height()) self.setMaximumHeight(self._fittedHeight) - self.updateGeometry(); + self.updateGeometry() def keyPressEvent(self, event): """ @@ -55,30 +54,33 @@ class _ExpandableTextEdit(QTextEdit): return elif event.matches(QKeySequence.MoveToNextLine): text = self.toPlainText() - cursorPos = self.textCursor().position() - textBeforeEnd = text[cursorPos:] + cursor_pos = self.textCursor().position() + textBeforeEnd = text[cursor_pos:] # if len(textBeforeEnd.splitlines()) <= 1: if len(textBeforeEnd.split('\n')) <= 1: self.historyNext.emit() return elif event.matches(QKeySequence.MoveToPreviousLine): text = self.toPlainText() - cursorPos = self.textCursor().position() - textBeforeStart = text[:cursorPos] + cursor_pos = self.textCursor().position() + text_before_start = text[:cursor_pos] # lineCount = len(textBeforeStart.splitlines()) - lineCount = len(textBeforeStart.split('\n')) - if len(textBeforeStart) > 0 and \ - (textBeforeStart[-1] == '\n' or textBeforeStart[-1] == '\r'): - lineCount += 1 - if lineCount <= 1: + line_count = len(text_before_start.split('\n')) + if len(text_before_start) > 0 and \ + (text_before_start[-1] == '\n' or text_before_start[-1] == '\r'): + line_count += 1 + if line_count <= 1: self.historyPrev.emit() return elif event.matches(QKeySequence.MoveToNextPage) or \ - event.matches(QKeySequence.MoveToPreviousPage): + event.matches(QKeySequence.MoveToPreviousPage): return self._termWidget.browser().keyPressEvent(event) QTextEdit.keyPressEvent(self, event) + def insertFromMimeData(self, mime_data): + # Paste only plain text. + self.insertPlainText(mime_data.text()) class TermWidget(QWidget): """ @@ -94,8 +96,9 @@ class TermWidget(QWidget): self._browser = QTextEdit(self) self._browser.setStyleSheet("font: 9pt \"Courier\";") self._browser.setReadOnly(True) - self._browser.document().setDefaultStyleSheet(self._browser.document().defaultStyleSheet() + - "span {white-space:pre;}") + self._browser.document().setDefaultStyleSheet( + self._browser.document().defaultStyleSheet() + + "span {white-space:pre;}") self._edit = _ExpandableTextEdit(self, self) self._edit.historyNext.connect(self._on_history_next) @@ -116,11 +119,13 @@ class TermWidget(QWidget): def open_proccessing(self, detail=None): """ 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.setTextBackgroundColor(QtCore.Qt.darkGreen) + self._edit.setTextColor(Qt.white) + self._edit.setTextBackgroundColor(Qt.darkGreen) if detail is None: self._edit.setPlainText("...proccessing...") else: @@ -134,8 +139,8 @@ class TermWidget(QWidget): :return: """ - self._edit.setTextColor(QtCore.Qt.black) - self._edit.setTextBackgroundColor(QtCore.Qt.white) + self._edit.setTextColor(Qt.black) + self._edit.setTextBackgroundColor(Qt.white) self._edit.setPlainText('') self._edit.setDisabled(False) @@ -146,30 +151,12 @@ class TermWidget(QWidget): assert style in ('in', 'out', 'err') text = cgi.escape(text) - text = text.replace('\n', '
') - if style != 'out': - def_bg = self._browser.palette().color(QPalette.Base) - h, s, v, a = def_bg.getHsvF() - - 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 = '%s' % (str(bg), text) + if style == 'in': + text = '%s' % text + elif style == 'err': + text = '%s' % text else: text = '%s' % text # without span
is ignored!!! @@ -264,4 +251,3 @@ class TermWidget(QWidget): self._historyIndex -= 1 self._edit.setPlainText(self._history[self._historyIndex]) self._edit.moveCursor(QTextCursor.End) -