1240 |
1240 |
1241 ##################################################### |
1241 ##################################################### |
1242 ## Import refactorings |
1242 ## Import refactorings |
1243 ##################################################### |
1243 ##################################################### |
1244 |
1244 |
1245 # TODO: continue from here |
|
1246 def __importsOrganize(self): |
1245 def __importsOrganize(self): |
1247 """ |
1246 """ |
1248 Private slot to organize imports. |
1247 Private slot to organize imports. |
1249 """ |
1248 """ |
1250 from rope.refactor.importutils import ImportOrganizer |
|
1251 self.__doImports( |
1249 self.__doImports( |
1252 self.tr("Organize Imports"), |
1250 self.tr("Organize Imports"), |
1253 ImportOrganizer.organize_imports) |
1251 "organize_imports") |
1254 |
1252 |
1255 def __importsExpandStar(self): |
1253 def __importsExpandStar(self): |
1256 """ |
1254 """ |
1257 Private slot to expand star imports. |
1255 Private slot to expand star imports. |
1258 """ |
1256 """ |
1259 from rope.refactor.importutils import ImportOrganizer |
|
1260 self.__doImports( |
1257 self.__doImports( |
1261 self.tr("Expand Star Imports"), |
1258 self.tr("Expand Star Imports"), |
1262 ImportOrganizer.expand_star_imports) |
1259 "expand_star_imports") |
1263 |
1260 |
1264 def __importsRelativeToAbsolute(self): |
1261 def __importsRelativeToAbsolute(self): |
1265 """ |
1262 """ |
1266 Private slot to transform relative to absolute imports. |
1263 Private slot to transform relative to absolute imports. |
1267 """ |
1264 """ |
1268 from rope.refactor.importutils import ImportOrganizer |
|
1269 self.__doImports( |
1265 self.__doImports( |
1270 self.tr("Relative to Absolute"), |
1266 self.tr("Relative to Absolute"), |
1271 ImportOrganizer.relatives_to_absolutes) |
1267 "relatives_to_absolutes") |
1272 |
1268 |
1273 def __importsFromToImport(self): |
1269 def __importsFromToImport(self): |
1274 """ |
1270 """ |
1275 Private slot to transform from imports to plain imports. |
1271 Private slot to transform from imports to plain imports. |
1276 """ |
1272 """ |
1277 from rope.refactor.importutils import ImportOrganizer |
|
1278 self.__doImports( |
1273 self.__doImports( |
1279 self.tr("Froms to Imports"), |
1274 self.tr("Froms to Imports"), |
1280 ImportOrganizer.froms_to_imports) |
1275 "froms_to_imports") |
1281 |
1276 |
1282 def __importsHandleLong(self): |
1277 def __importsHandleLong(self): |
1283 """ |
1278 """ |
1284 Private slot to handle long imports. |
1279 Private slot to handle long imports. |
1285 """ |
1280 """ |
1286 from rope.refactor.importutils import ImportOrganizer |
|
1287 self.__doImports( |
1281 self.__doImports( |
1288 self.tr("Handle Long Imports"), |
1282 self.tr("Handle Long Imports"), |
1289 ImportOrganizer.handle_long_imports) |
1283 "handle_long_imports") |
1290 |
1284 |
1291 def __doImports(self, title, method): |
1285 def __doImports(self, title, methodName): |
1292 """ |
1286 """ |
1293 Private method to perform the various imports refactorings. |
1287 Private method to perform the various imports refactorings. |
1294 |
1288 |
1295 @param title title to be used for the import refactoring (string) |
1289 @param title title to be used for the import refactoring |
1296 @param method method performing the import refactoring |
1290 @type str |
|
1291 @param methodName name of the method performing the import refactoring |
|
1292 @type str |
1297 """ |
1293 """ |
1298 aw = e5App().getObject("ViewManager").activeWindow() |
1294 aw = e5App().getObject("ViewManager").activeWindow() |
1299 |
1295 |
1300 if aw is None: |
1296 if aw is None: |
1301 return |
1297 return |
1308 line, index, line1, index1 = aw.getSelection() |
1304 line, index, line1, index1 = aw.getSelection() |
1309 offset = self.__getOffset(aw, line, index) |
1305 offset = self.__getOffset(aw, line, index) |
1310 else: |
1306 else: |
1311 offset = None |
1307 offset = None |
1312 |
1308 |
1313 from rope.refactor.importutils import ImportOrganizer |
1309 from ConfirmationDialog import ConfirmationDialog |
1314 importOrganizer = ImportOrganizer(self.__project) |
1310 dlg = ConfirmationDialog( |
1315 resource = rope.base.libutils.path_to_resource( |
1311 self, title, "Imports", "CalculateImportsChanges", { |
1316 self.__project, filename) |
1312 "MethodName": methodName, |
1317 try: |
1313 "FileName": filename, |
1318 changes = method(importOrganizer, resource, offset=offset) |
1314 "Offset": offset, |
1319 if changes is not None: |
1315 }, parent=self.__ui) |
1320 from ConfirmationDialog import ConfirmationDialog |
1316 changeGroup = dlg.getChangeGroupName() |
1321 dlg = ConfirmationDialog(changes, self.__ui) |
1317 self.__refactoringDialogs[changeGroup] = dlg |
1322 if dlg.exec_() == QDialog.Accepted: |
1318 dlg.finished.connect( |
1323 self.__project.do(changes) |
1319 lambda: self.__refactoringDialogClosed(changeGroup)) |
1324 self.refreshEditors(changes) |
1320 dlg.show() |
1325 if self.__e5project.isDirty(): |
|
1326 self.__e5project.saveProject() |
|
1327 else: |
|
1328 E5MessageBox.information( |
|
1329 self.__ui, title, |
|
1330 self.tr("The selected refactoring did not produce" |
|
1331 " any change.")) |
|
1332 except Exception as err: |
|
1333 self.handleRopeError(err, title) |
|
1334 |
1321 |
1335 ##################################################### |
1322 ##################################################### |
1336 ## Various refactorings |
1323 ## Various refactorings |
1337 ##################################################### |
1324 ##################################################### |
1338 |
1325 |
|
1326 # TODO: continue from here |
1339 def __restructure(self): |
1327 def __restructure(self): |
1340 """ |
1328 """ |
1341 Private slot to restructure code. |
1329 Private slot to restructure code. |
1342 """ |
1330 """ |
1343 from RestructureDialog import RestructureDialog |
1331 from RestructureDialog import RestructureDialog |