8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
11 import shutil |
11 import shutil |
12 import copy |
12 import copy |
13 |
13 import pathlib |
14 from PyQt6.QtCore import pyqtSlot, QDir, QFileInfo, QObject, QCoreApplication |
14 |
|
15 from PyQt6.QtCore import pyqtSlot, QObject, QCoreApplication |
15 from PyQt6.QtWidgets import QDialog, QInputDialog, QToolBar |
16 from PyQt6.QtWidgets import QDialog, QInputDialog, QToolBar |
16 |
17 |
17 from EricGui.EricAction import EricAction |
18 from EricGui.EricAction import EricAction |
18 from EricWidgets import EricMessageBox |
19 from EricWidgets import EricMessageBox |
19 from EricWidgets.EricApplication import ericApp |
20 from EricWidgets.EricApplication import ericApp |
265 ok = vcs.vcsExport(vcsDataDict, projectdir) |
266 ok = vcs.vcsExport(vcsDataDict, projectdir) |
266 else: |
267 else: |
267 ok = vcs.vcsCheckout(vcsDataDict, projectdir, False) |
268 ok = vcs.vcsCheckout(vcsDataDict, projectdir, False) |
268 if ok: |
269 if ok: |
269 projectdir = os.path.normpath(projectdir) |
270 projectdir = os.path.normpath(projectdir) |
|
271 dpath = pathlib.Path(projectdir) |
270 # look for JSON style project file first |
272 # look for JSON style project file first |
271 filters = ["*.epj"] |
273 plist = list(dpath.glob("*.epj")) |
272 # TODO: replace QDir and QFileInfo using pathlib |
|
273 d = QDir(projectdir) |
|
274 plist = d.entryInfoList(filters) |
|
275 if not plist: |
274 if not plist: |
276 # look for XML style project file second |
275 # look for XML style project file second |
277 filters = ["*.e4p"] |
276 plist = list(dpath.glob("*.e4p")) |
278 d = QDir(projectdir) |
|
279 plist = d.entryInfoList(filters) |
|
280 if plist: |
277 if plist: |
281 if len(plist) == 1: |
278 if len(plist) == 1: |
282 self.project.openProject( |
279 self.project.openProject(str(plist[0].resolve())) |
283 plist[0].absoluteFilePath()) |
|
284 else: |
280 else: |
285 pfilenamelist = d.entryList(filters) |
281 pfilenamelist = [p.name for p in plist] |
286 pfilename, ok = QInputDialog.getItem( |
282 pfilename, ok = QInputDialog.getItem( |
287 None, |
283 None, |
288 QCoreApplication.translate( |
284 QCoreApplication.translate( |
289 "VcsProjectHelper", |
285 "VcsProjectHelper", |
290 "New project from repository"), |
286 "New project from repository"), |
292 "VcsProjectHelper", |
288 "VcsProjectHelper", |
293 "Select a project file to open."), |
289 "Select a project file to open."), |
294 pfilenamelist, 0, False) |
290 pfilenamelist, 0, False) |
295 if ok: |
291 if ok: |
296 self.project.openProject( |
292 self.project.openProject( |
297 QFileInfo(d, pfilename).absoluteFilePath()) |
293 str(dpath / pfilename)) |
298 if export: |
294 if export: |
299 self.project.pdata["VCS"] = 'None' |
295 self.project.pdata["VCS"] = 'None' |
300 self.project.vcs = self.project.initVCS() |
296 self.project.vcs = self.project.initVCS() |
301 self.project.setDirty(True) |
297 self.project.setDirty(True) |
302 self.project.saveProject() |
298 self.project.saveProject() |