--- a/RefactoringRope/Refactoring.py Sat Sep 23 12:39:00 2017 +0200 +++ b/RefactoringRope/Refactoring.py Sat Sep 23 14:17:49 2017 +0200 @@ -1242,58 +1242,54 @@ ## Import refactorings ##################################################### - # TODO: continue from here def __importsOrganize(self): """ Private slot to organize imports. """ - from rope.refactor.importutils import ImportOrganizer self.__doImports( self.tr("Organize Imports"), - ImportOrganizer.organize_imports) + "organize_imports") def __importsExpandStar(self): """ Private slot to expand star imports. """ - from rope.refactor.importutils import ImportOrganizer self.__doImports( self.tr("Expand Star Imports"), - ImportOrganizer.expand_star_imports) + "expand_star_imports") def __importsRelativeToAbsolute(self): """ Private slot to transform relative to absolute imports. """ - from rope.refactor.importutils import ImportOrganizer self.__doImports( self.tr("Relative to Absolute"), - ImportOrganizer.relatives_to_absolutes) + "relatives_to_absolutes") def __importsFromToImport(self): """ Private slot to transform from imports to plain imports. """ - from rope.refactor.importutils import ImportOrganizer self.__doImports( self.tr("Froms to Imports"), - ImportOrganizer.froms_to_imports) + "froms_to_imports") def __importsHandleLong(self): """ Private slot to handle long imports. """ - from rope.refactor.importutils import ImportOrganizer self.__doImports( self.tr("Handle Long Imports"), - ImportOrganizer.handle_long_imports) + "handle_long_imports") - def __doImports(self, title, method): + def __doImports(self, title, methodName): """ Private method to perform the various imports refactorings. - @param title title to be used for the import refactoring (string) - @param method method performing the import refactoring + @param title title to be used for the import refactoring + @type str + @param methodName name of the method performing the import refactoring + @type str """ aw = e5App().getObject("ViewManager").activeWindow() @@ -1310,32 +1306,24 @@ else: offset = None - from rope.refactor.importutils import ImportOrganizer - importOrganizer = ImportOrganizer(self.__project) - resource = rope.base.libutils.path_to_resource( - self.__project, filename) - try: - changes = method(importOrganizer, resource, offset=offset) - if changes is not None: - from ConfirmationDialog import ConfirmationDialog - dlg = ConfirmationDialog(changes, self.__ui) - if dlg.exec_() == QDialog.Accepted: - self.__project.do(changes) - self.refreshEditors(changes) - if self.__e5project.isDirty(): - self.__e5project.saveProject() - else: - E5MessageBox.information( - self.__ui, title, - self.tr("The selected refactoring did not produce" - " any change.")) - except Exception as err: - self.handleRopeError(err, title) + from ConfirmationDialog import ConfirmationDialog + dlg = ConfirmationDialog( + self, title, "Imports", "CalculateImportsChanges", { + "MethodName": methodName, + "FileName": filename, + "Offset": offset, + }, parent=self.__ui) + changeGroup = dlg.getChangeGroupName() + self.__refactoringDialogs[changeGroup] = dlg + dlg.finished.connect( + lambda: self.__refactoringDialogClosed(changeGroup)) + dlg.show() ##################################################### ## Various refactorings ##################################################### + # TODO: continue from here def __restructure(self): """ Private slot to restructure code.