Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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()
Ejemplo n.º 3
0
 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()