71 class Project(QObject): |
71 class Project(QObject): |
72 """ |
72 """ |
73 Class implementing the project management functionality. |
73 Class implementing the project management functionality. |
74 |
74 |
75 @signal dirty(int) emitted when the dirty state changes |
75 @signal dirty(int) emitted when the dirty state changes |
76 @signal projectSessionLoaded() emitted after a project session file was loaded |
|
77 @signal projectLanguageAdded(string) emitted after a new language was added |
76 @signal projectLanguageAdded(string) emitted after a new language was added |
78 @signal projectLanguageAddedByCode(string) emitted after a new language was added. |
77 @signal projectLanguageAddedByCode(string) emitted after a new language was added. |
79 The language code is sent by this signal. |
78 The language code is sent by this signal. |
80 @signal projectFormAdded(string) emitted after a new form was added |
79 @signal projectFormAdded(string) emitted after a new form was added |
81 @signal projectSourceAdded(string) emitted after a new source file was added |
80 @signal projectSourceAdded(string) emitted after a new source file was added |
111 of the menu and a reference to the menu are given. |
110 of the menu and a reference to the menu are given. |
112 @signal lexerAssociationsChanged() emitted after the lexer associations have been |
111 @signal lexerAssociationsChanged() emitted after the lexer associations have been |
113 changed |
112 changed |
114 """ |
113 """ |
115 sourceFile = pyqtSignal(str) |
114 sourceFile = pyqtSignal(str) |
|
115 projectOpened = pyqtSignal() |
|
116 newProject = pyqtSignal() |
|
117 projectClosed = pyqtSignal() |
116 |
118 |
117 keynames = [ |
119 keynames = [ |
118 "PROGLANGUAGE", "MIXEDLANGUAGE", "PROJECTTYPE", |
120 "PROGLANGUAGE", "MIXEDLANGUAGE", "PROJECTTYPE", |
119 "SPELLLANGUAGE", "SPELLWORDS", "SPELLEXCLUDES", |
121 "SPELLLANGUAGE", "SPELLWORDS", "SPELLEXCLUDES", |
120 "DESCRIPTION", "VERSION", "HASH", |
122 "DESCRIPTION", "VERSION", "HASH", |
2242 fn in self.pdata["OTHERS"]: |
2244 fn in self.pdata["OTHERS"]: |
2243 return True |
2245 return True |
2244 else: |
2246 else: |
2245 return False |
2247 return False |
2246 |
2248 |
2247 def newProject(self): |
2249 def createNewProject(self): |
2248 """ |
2250 """ |
2249 Public slot to built a new project. |
2251 Public slot to built a new project. |
2250 |
2252 |
2251 This method displays the new project dialog and initializes |
2253 This method displays the new project dialog and initializes |
2252 the project object with the data entered. |
2254 the project object with the data entered. |
2473 self.vcs.vcsSetDataFromDict(vcsDataDict) |
2475 self.vcs.vcsSetDataFromDict(vcsDataDict) |
2474 self.saveProject() |
2476 self.saveProject() |
2475 self.vcs.vcsConvertProject(vcsDataDict, self) |
2477 self.vcs.vcsConvertProject(vcsDataDict, self) |
2476 else: |
2478 else: |
2477 self.emit(SIGNAL('newProjectHooks')) |
2479 self.emit(SIGNAL('newProjectHooks')) |
2478 self.emit(SIGNAL('newProject')) |
2480 self.newProject.emit() |
2479 |
2481 |
2480 else: |
2482 else: |
2481 self.emit(SIGNAL('newProjectHooks')) |
2483 self.emit(SIGNAL('newProjectHooks')) |
2482 self.emit(SIGNAL('newProject')) |
2484 self.newProject.emit() |
2483 |
2485 |
2484 |
2486 |
2485 def newProjectAddFiles(self, mainscript): |
2487 def newProjectAddFiles(self, mainscript): |
2486 """ |
2488 """ |
2487 Public method to add files to a new project. |
2489 Public method to add files to a new project. |
2800 self.menuPackagersAct.setEnabled(True) |
2802 self.menuPackagersAct.setEnabled(True) |
2801 self.pluginGrp.setEnabled(self.pdata["PROJECTTYPE"][0] == "E4Plugin") |
2803 self.pluginGrp.setEnabled(self.pdata["PROJECTTYPE"][0] == "E4Plugin") |
2802 |
2804 |
2803 self.__model.projectOpened() |
2805 self.__model.projectOpened() |
2804 self.emit(SIGNAL('projectOpenedHooks')) |
2806 self.emit(SIGNAL('projectOpenedHooks')) |
2805 self.emit(SIGNAL('projectOpened')) |
2807 self.projectOpened.emit() |
2806 |
2808 |
2807 QApplication.restoreOverrideCursor() |
2809 QApplication.restoreOverrideCursor() |
2808 |
2810 |
2809 if Preferences.getProject("SearchNewFiles"): |
2811 if Preferences.getProject("SearchNewFiles"): |
2810 self.__doSearchNewFiles() |
2812 self.__doSearchNewFiles() |
2912 self.__writeTasks() |
2914 self.__writeTasks() |
2913 |
2915 |
2914 self.sessActGrp.setEnabled(ok) |
2916 self.sessActGrp.setEnabled(ok) |
2915 self.menuSessionAct.setEnabled(ok) |
2917 self.menuSessionAct.setEnabled(ok) |
2916 self.emit(SIGNAL('projectClosedHooks')) |
2918 self.emit(SIGNAL('projectClosedHooks')) |
2917 self.emit(SIGNAL('projectClosed')) |
2919 self.projectClosed.emit() |
2918 self.emit(SIGNAL('projectOpenedHooks')) |
2920 self.emit(SIGNAL('projectOpenedHooks')) |
2919 self.emit(SIGNAL('projectOpened')) |
2921 self.projectOpened.emit() |
2920 return True |
2922 return True |
2921 else: |
2923 else: |
2922 return False |
2924 return False |
2923 |
2925 |
2924 def checkDirty(self): |
2926 def checkDirty(self): |
3043 self.menuPackagersAct.setEnabled(False) |
3045 self.menuPackagersAct.setEnabled(False) |
3044 self.pluginGrp.setEnabled(False) |
3046 self.pluginGrp.setEnabled(False) |
3045 |
3047 |
3046 self.__model.projectClosed() |
3048 self.__model.projectClosed() |
3047 self.emit(SIGNAL('projectClosedHooks')) |
3049 self.emit(SIGNAL('projectClosedHooks')) |
3048 self.emit(SIGNAL('projectClosed')) |
3050 self.projectClosed.emit() |
3049 |
3051 |
3050 return True |
3052 return True |
3051 |
3053 |
3052 def saveAllScripts(self, reportSyntaxErrors = False): |
3054 def saveAllScripts(self, reportSyntaxErrors = False): |
3053 """ |
3055 """ |
3348 act.setWhatsThis(self.trUtf8( |
3350 act.setWhatsThis(self.trUtf8( |
3349 """<b>New...</b>""" |
3351 """<b>New...</b>""" |
3350 """<p>This opens a dialog for entering the info for a""" |
3352 """<p>This opens a dialog for entering the info for a""" |
3351 """ new project.</p>""" |
3353 """ new project.</p>""" |
3352 )) |
3354 )) |
3353 act.triggered[()].connect(self.newProject) |
3355 act.triggered[()].connect(self.createNewProject) |
3354 self.actions.append(act) |
3356 self.actions.append(act) |
3355 |
3357 |
3356 act = E5Action(self.trUtf8('Open project'), |
3358 act = E5Action(self.trUtf8('Open project'), |
3357 UI.PixmapCache.getIcon("projectOpen.png"), |
3359 UI.PixmapCache.getIcon("projectOpen.png"), |
3358 self.trUtf8('&Open...'), 0, 0, |
3360 self.trUtf8('&Open...'), 0, 0, |