From a485f355e34977dbf37bcef293bd4b6674be133f 2011-12-07 21:59:17 From: MinRK Date: 2011-12-07 21:59:17 Subject: [PATCH] add Widget._transform_prompt staticmethod removes need for IPythonWidget.copy() to be defined separately. --- diff --git a/IPython/frontend/qt/console/frontend_widget.py b/IPython/frontend/qt/console/frontend_widget.py index 8fbd8f7..e9ef5cb 100644 --- a/IPython/frontend/qt/console/frontend_widget.py +++ b/IPython/frontend/qt/console/frontend_widget.py @@ -107,6 +107,7 @@ class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin): exit_requested = QtCore.Signal(object) # Protected class variables. + _transform_prompt = staticmethod(transform_classic_prompt) _CallTipRequest = namedtuple('_CallTipRequest', ['id', 'pos']) _CompletionRequest = namedtuple('_CompletionRequest', ['id', 'pos']) _ExecutionRequest = namedtuple('_ExecutionRequest', ['id', 'kind']) @@ -174,12 +175,12 @@ class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin): def copy(self): """ Copy the currently selected text to the clipboard, removing prompts. """ - if self.layout().currentWidget() == self._page_control : + if self._page_control.hasFocus(): self._page_control.copy() - elif self.layout().currentWidget() == self._control : + elif self._control.hasFocus(): text = self._control.textCursor().selection().toPlainText() if text: - lines = map(transform_classic_prompt, text.splitlines()) + lines = map(self._transform_prompt, text.splitlines()) text = '\n'.join(lines) QtGui.QApplication.clipboard().setText(text) else: diff --git a/IPython/frontend/qt/console/ipython_widget.py b/IPython/frontend/qt/console/ipython_widget.py index c217bd7..a2cef79 100644 --- a/IPython/frontend/qt/console/ipython_widget.py +++ b/IPython/frontend/qt/console/ipython_widget.py @@ -98,6 +98,7 @@ class IPythonWidget(FrontendWidget): # FrontendWidget protected class variables. _input_splitter_class = IPythonInputSplitter + _transform_prompt = staticmethod(transform_ipy_prompt) # IPythonWidget protected class variables. _PromptBlock = namedtuple('_PromptBlock', ['block', 'length', 'number']) @@ -263,22 +264,6 @@ class IPythonWidget(FrontendWidget): # 'ConsoleWidget' public interface #--------------------------------------------------------------------------- - def copy(self): - """ Copy the currently selected text to the clipboard, removing prompts - if possible. - """ - if self._page_control.hasFocus() : - self._page_control.copy() - elif self._control.hasFocus() : - text = self._control.textCursor().selection().toPlainText() - if text: - lines = map(transform_ipy_prompt, text.splitlines()) - text = '\n'.join(lines) - QtGui.QApplication.clipboard().setText(text) - else : - self.log.debug("ipython_widget : unknown copy taget") - - #--------------------------------------------------------------------------- # 'FrontendWidget' public interface #---------------------------------------------------------------------------