From a485f355e34977dbf37bcef293bd4b6674be133f 2011-12-07 21:59:17
From: MinRK <benjaminrk@gmail.com>
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
     #---------------------------------------------------------------------------