def _vcsCommandOptions(self): """ Protected slot to edit the VCS command options. """ codlg = vcsCommandOptionsDialog(self.vcs) if codlg.exec_() == QDialog.Accepted: self.vcs.vcsSetOptions(codlg.getOptions()) self.project.setDirty(True)
def _vcsImport(self): """ Protected slot used to import the local project into the repository. <b>NOTE</b>: This does not necessarily make the local project a vcs controlled project. You may have to checkout the project from the repository in order to accomplish that. """ def revertChanges(): """ Local function do revert the changes made to the project object. """ self.project.pdata["VCS"] = pdata_vcs[:] self.project.pdata["VCSOPTIONS"] = copy.deepcopy(pdata_vcsoptions) self.project.pdata["VCSOTHERDATA"] = copy.deepcopy(pdata_vcsother) self.project.vcs = vcs self.project.vcsProjectHelper = vcsHelper self.project.vcsBasicHelper = vcs is None self.initMenu(self.project.vcsMenu) self.project.setDirty(True) self.project.saveProject() pdata_vcs = self.project.pdata["VCS"][:] pdata_vcsoptions = copy.deepcopy(self.project.pdata["VCSOPTIONS"]) pdata_vcsother = copy.deepcopy(self.project.pdata["VCSOTHERDATA"]) vcs = self.project.vcs vcsHelper = self.project.vcsProjectHelper vcsSystemsDict = e4App().getObject("PluginManager")\ .getPluginDisplayStrings("version_control") if not vcsSystemsDict: # no version control system found return vcsSystemsDisplay = QStringList() keys = vcsSystemsDict.keys() keys.sort() for key in keys: vcsSystemsDisplay.append(vcsSystemsDict[key]) vcsSelected, ok = KQInputDialog.getItem(\ None, self.trUtf8("Import Project"), self.trUtf8("Select version control system for the project"), vcsSystemsDisplay, 0, False) if not ok: return vcsSystem = None for vcsSystem, vcsSystemDisplay in vcsSystemsDict.items(): if vcsSystemDisplay == vcsSelected: break if vcsSystem: self.project.pdata["VCS"] = [vcsSystem] self.project.vcs = self.project.initVCS(vcsSystem) if self.project.vcs is not None: vcsdlg = self.project.vcs.vcsOptionsDialog(self.project, self.project.name, 1) if vcsdlg.exec_() == QDialog.Accepted: vcsDataDict = vcsdlg.getData() # edit VCS command options vcores = KQMessageBox.question(None, self.trUtf8("Import Project"), self.trUtf8("""Would you like to edit the VCS command options?"""), QMessageBox.StandardButtons(\ QMessageBox.No | \ QMessageBox.Yes), QMessageBox.No) if vcores == QMessageBox.Yes: codlg = vcsCommandOptionsDialog(self.project.vcs) if codlg.exec_() == QDialog.Accepted: self.project.vcs.vcsSetOptions(codlg.getOptions()) self.project.setDirty(True) self.project.vcs.vcsSetDataFromDict(vcsDataDict) self.project.saveProject() isVcsControlled = \ self.project.vcs.vcsImport(vcsDataDict, self.project.ppath)[0] if isVcsControlled: # reopen the project self.project.openProject(self.project.pfile) else: # revert the changes to the local project # because the project dir is not a VCS directory revertChanges() else: # revert the changes because user cancelled revertChanges()
def _vcsCheckout(self, export = False): """ Protected slot used to create a local project from the repository. @param export flag indicating whether an export or a checkout should be performed """ if not self.project.checkDirty(): return vcsSystemsDict = e4App().getObject("PluginManager")\ .getPluginDisplayStrings("version_control") if not vcsSystemsDict: # no version control system found return vcsSystemsDisplay = QStringList() keys = vcsSystemsDict.keys() keys.sort() for key in keys: vcsSystemsDisplay.append(vcsSystemsDict[key]) vcsSelected, ok = KQInputDialog.getItem(\ None, self.trUtf8("New Project"), self.trUtf8("Select version control system for the project"), vcsSystemsDisplay, 0, False) if not ok: return for vcsSystem, vcsSystemDisplay in vcsSystemsDict.items(): if vcsSystemDisplay == vcsSelected: break if not self.project.closeProject(): return self.project.pdata["VCS"] = [vcsSystem] self.project.vcs = self.project.initVCS(vcsSystem) if self.project.vcs is not None: vcsdlg = self.project.vcs.vcsNewProjectOptionsDialog() if vcsdlg.exec_() == QDialog.Accepted: projectdir, vcsDataDict = vcsdlg.getData() self.project.pdata["VCS"] = [vcsSystem] self.project.vcs = self.project.initVCS(vcsSystem) # edit VCS command options vcores = KQMessageBox.question(None, self.trUtf8("New Project"), self.trUtf8("""Would you like to edit the VCS command options?"""), QMessageBox.StandardButtons(\ QMessageBox.No | \ QMessageBox.Yes), QMessageBox.No) if vcores == QMessageBox.Yes: codlg = vcsCommandOptionsDialog(self.project.vcs) if codlg.exec_() == QDialog.Accepted: self.project.vcs.vcsSetOptions(codlg.getOptions()) # create the project directory if it doesn't exist already if not os.path.isdir(projectdir): try: os.makedirs(projectdir) except EnvironmentError: KQMessageBox.critical(None, self.trUtf8("Create project directory"), self.trUtf8("<p>The project directory <b>%1</b> could not" " be created.</p>").arg(projectdir)) self.project.pdata["VCS"] = ['None'] self.project.vcs = self.project.initVCS() return # create the project from the VCS self.project.vcs.vcsSetDataFromDict(vcsDataDict) if export: ok = self.project.vcs.vcsExport(vcsDataDict, projectdir) else: ok = self.project.vcs.vcsCheckout(vcsDataDict, projectdir, False) if ok: projectdir = os.path.normpath(projectdir) filters = QStringList() << "*.e4p" << "*.e4pz" << "*.e3p" << "*.e3pz" d = QDir(projectdir) plist = d.entryInfoList(filters) if len(plist): if len(plist) == 1: self.project.openProject(plist[0].absoluteFilePath()) self.project.emit(SIGNAL('newProject')) else: pfilenamelist = d.entryList(filters) pfilename, ok = KQInputDialog.getItem( None, self.trUtf8("New project from repository"), self.trUtf8("Select a project file to open."), pfilenamelist, 0, False) if ok: self.project.openProject(\ QFileInfo(d, pfilename).absoluteFilePath()) self.project.emit(SIGNAL('newProject')) if export: self.project.pdata["VCS"] = ['None'] self.project.vcs = self.project.initVCS() self.project.setDirty(True) self.project.saveProject() else: res = KQMessageBox.question(None, self.trUtf8("New project from repository"), self.trUtf8("The project retrieved from the repository" " does not contain an eric project file" " (*.e4p *.e4pz *.e3p *.e3pz)." " Create it?"), QMessageBox.StandardButtons(\ QMessageBox.No | \ QMessageBox.Yes), QMessageBox.Yes) if res == QMessageBox.Yes: self.project.ppath = projectdir self.project.opened = True from Project.PropertiesDialog import PropertiesDialog dlg = PropertiesDialog(self.project, False) if dlg.exec_() == QDialog.Accepted: dlg.storeData() self.project.initFileTypes() self.project.setDirty(True) try: ms = os.path.join(self.project.ppath, self.project.pdata["MAINSCRIPT"][0]) if os.path.exists(ms): self.project.appendFile(ms) except IndexError: ms = "" self.project.newProjectAddFiles(ms) self.project.saveProject() self.project.openProject(self.project.pfile) if not export: res = KQMessageBox.question(None, self.trUtf8("New project from repository"), self.trUtf8("Shall the project file be added to" " the repository?"), QMessageBox.StandardButtons(\ QMessageBox.No | \ QMessageBox.Yes), QMessageBox.Yes) if res == QMessageBox.Yes: self.project.vcs.vcsAdd(self.project.pfile) else: KQMessageBox.critical(None, self.trUtf8("New project from repository"), self.trUtf8("""The project could not be retrieved from""" """ the repository.""")) self.project.pdata["VCS"] = ['None'] self.project.vcs = self.project.initVCS() else: self.project.pdata["VCS"] = ['None'] self.project.vcs = self.project.initVCS()