RefactoringRope/Refactoring.py

changeset 7
5ecf9ef23d39
parent 6
07dabc6bb157
child 8
fc14525f0501
--- a/RefactoringRope/Refactoring.py	Sat Jan 29 19:57:25 2011 +0100
+++ b/RefactoringRope/Refactoring.py	Sun Jan 30 14:02:31 2011 +0100
@@ -20,7 +20,7 @@
 import rope.refactor.extract
 ##import rope.refactor.usefunction
 import rope.refactor.inline
-##import rope.refactor.move
+import rope.refactor.move
 ##import rope.refactor.change_signature
 ##import rope.refactor.introduce_factory
 ##import rope.refactor.introduce_parameter
@@ -52,6 +52,8 @@
 from HistoryDialog import HistoryDialog
 from ExtractDialog import ExtractDialog
 from InlineDialog import InlineDialog
+from MoveMethodDialog import MoveMethodDialog
+from MoveModuleDialog import MoveModuleDialog
 
 import Utilities
 
@@ -236,6 +238,48 @@
         self.actions.append(self.refactoringInlineAct)
         
         #####################################################
+        ## Move refactoring actions
+        #####################################################
+        
+        self.refactoringMoveMethodAct = E5Action(
+                self.trUtf8('Move method'),
+                self.trUtf8('Mo&ve Method'),
+                0, 0,
+                self,'refactoring_move_method')
+        self.refactoringMoveMethodAct.setStatusTip(self.trUtf8(
+            'Move the highlighted method to another class'))
+        self.refactoringMoveMethodAct.setWhatsThis(self.trUtf8(
+            """<b>Move method</b>"""
+            """<p>Move the highlighted method to another class.</p>"""
+        ))
+        if self.__newStyle:
+            self.refactoringMoveMethodAct.triggered[()].connect(
+                self.__moveMethod)
+        else:
+            self.connect(self.refactoringMoveMethodAct,
+                SIGNAL('triggered()'), self.__moveMethod)
+        self.actions.append(self.refactoringMoveMethodAct)
+        
+        self.refactoringMoveModuleAct = E5Action(
+                self.trUtf8('Move current module'),
+                self.trUtf8('Move Current Module'),
+                0, 0,
+                self,'refactoring_move_module')
+        self.refactoringMoveModuleAct.setStatusTip(self.trUtf8(
+            'Move the current module to another package'))
+        self.refactoringMoveModuleAct.setWhatsThis(self.trUtf8(
+            """<b>Move current module</b>"""
+            """<p>Move the current module to another package.</p>"""
+        ))
+        if self.__newStyle:
+            self.refactoringMoveModuleAct.triggered[()].connect(
+                self.__moveModule)
+        else:
+            self.connect(self.refactoringMoveModuleAct,
+                SIGNAL('triggered()'), self.__moveModule)
+        self.actions.append(self.refactoringMoveModuleAct)
+        
+        #####################################################
         ## Undo/Redo actions
         #####################################################
         
@@ -509,13 +553,14 @@
         smenu.addAction(self.refactoringChangeOccurrencesAct)
         smenu.addSeparator()
         smenu.addAction(self.refactoringExtractMethodAct)
-##        smenu.addAction(self.refactoringMoveMethodAct)
+        smenu.addAction(self.refactoringMoveMethodAct)
         smenu.addSeparator()
         smenu.addAction(self.refactoringInlineAct)
         smenu.addSeparator()
         smenu.addAction(self.refactoringExtractLocalVariableAct)
         smenu.addSeparator()
         smenu.addAction(self.refactoringRenameModuleAct)
+        smenu.addAction(self.refactoringMoveModuleAct)
         smenu.addSeparator()
         
         smenu.addSeparator()
@@ -897,6 +942,75 @@
         self.dlg.show()
     
     #####################################################
+    ## Move refactorings
+    #####################################################
+    
+    def __moveMethod(self):
+        """
+        Private slot to handle the Move Method action.
+        """
+        aw = e5App().getObject("ViewManager").activeWindow()
+        
+        if aw is None:
+            return
+        
+        title = self.trUtf8("Move Method")
+        if not aw.hasSelectedText():
+            # no selection available
+            E5MessageBox.warning(self.__ui, title,
+                self.trUtf8("Highlight the method to move"
+                    " and try again."))
+            return 
+        
+        if not self.confirmAllBuffersSaved():
+            return
+        
+        filename = aw.getFileName()
+        line, index, line1, index1 = aw.getSelection()
+        offset = aw.positionFromLineIndex(line, index)
+        
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        try:
+            mover = rope.refactor.move.create_move(
+                self.__project, resource, offset)
+        except Exception as err:
+            self.handleRopeError(err, title)
+            return 
+        
+        self.dlg = MoveMethodDialog(self, title, mover, parent=self.__ui)
+        self.dlg.show()
+    
+    def __moveModule(self):
+        """
+        Private slot to handle the Move Current Module action.
+        """
+        aw = e5App().getObject("ViewManager").activeWindow()
+        
+        if aw is None:
+            return
+        
+        title = self.trUtf8("Move Current Module")
+        
+        if not self.confirmAllBuffersSaved():
+            return
+        
+        filename = aw.getFileName()
+        offset = None
+        
+        resource = rope.base.libutils.path_to_resource(
+            self.__project, filename)
+        try:
+            mover = rope.refactor.move.create_move(
+                self.__project, resource, offset)
+        except Exception as err:
+            self.handleRopeError(err, title)
+            return 
+        
+        self.dlg = MoveModuleDialog(self, title, mover, parent=self.__ui)
+        self.dlg.show()
+    
+    #####################################################
     ## Undo/Redo refactorings
     #####################################################
     

eric ide

mercurial