2958 Utilities.getHomeDir(), |
2958 Utilities.getHomeDir(), |
2959 self.tr("Project Files (*.epj);;XML Project Files (*.e4p)")) |
2959 self.tr("Project Files (*.epj);;XML Project Files (*.e4p)")) |
2960 |
2960 |
2961 QApplication.processEvents() |
2961 QApplication.processEvents() |
2962 |
2962 |
2963 if fn: |
2963 if fn and self.closeProject(): |
2964 if self.closeProject(): |
2964 with E5OverrideCursor(): |
|
2965 ok = self.__readProject(fn) |
|
2966 if ok: |
|
2967 self.opened = True |
|
2968 if not self.pdata["FILETYPES"]: |
|
2969 self.initFileTypes() |
|
2970 else: |
|
2971 self.updateFileTypes() |
|
2972 |
|
2973 try: |
|
2974 # create management directory if not present |
|
2975 self.createProjectManagementDir() |
|
2976 except OSError: |
|
2977 E5MessageBox.critical( |
|
2978 self.ui, |
|
2979 self.tr("Create project management directory"), |
|
2980 self.tr( |
|
2981 "<p>The project directory <b>{0}</b> is not" |
|
2982 " writable.</p>") |
|
2983 .format(self.ppath)) |
|
2984 return |
|
2985 |
|
2986 # read a user specific project file |
|
2987 self.__readUserProperties() |
|
2988 |
2965 with E5OverrideCursor(): |
2989 with E5OverrideCursor(): |
2966 ok = self.__readProject(fn) |
2990 oldState = self.isDirty() |
2967 if ok: |
2991 self.vcs = self.initVCS() |
2968 self.opened = True |
2992 if self.vcs is None and self.isDirty() == oldState: |
2969 if not self.pdata["FILETYPES"]: |
2993 # check, if project is version controlled |
2970 self.initFileTypes() |
2994 pluginManager = e5App().getObject("PluginManager") |
2971 else: |
2995 for indicator, vcsData in ( |
2972 self.updateFileTypes() |
2996 pluginManager.getVcsSystemIndicators().items() |
2973 |
2997 ): |
2974 try: |
2998 if os.path.exists( |
2975 # create management directory if not present |
2999 os.path.join(self.ppath, indicator)): |
2976 self.createProjectManagementDir() |
3000 if len(vcsData) > 1: |
2977 except OSError: |
3001 vcsList = [] |
2978 E5MessageBox.critical( |
3002 for ( |
2979 self.ui, |
3003 _vcsSystemStr, vcsSystemDisplay |
2980 self.tr("Create project management directory"), |
3004 ) in vcsData: |
2981 self.tr( |
3005 vcsList.append(vcsSystemDisplay) |
2982 "<p>The project directory <b>{0}</b> is not" |
3006 with E5OverridenCursor(): |
2983 " writable.</p>") |
3007 res, vcs_ok = QInputDialog.getItem( |
2984 .format(self.ppath)) |
3008 None, |
2985 return |
3009 self.tr("New Project"), |
2986 |
3010 self.tr( |
2987 # read a user specific project file |
3011 "Select Version Control" |
2988 self.__readUserProperties() |
3012 " System"), |
2989 |
3013 vcsList, |
2990 with E5OverrideCursor(): |
3014 0, False) |
2991 oldState = self.isDirty() |
3015 if vcs_ok: |
2992 self.vcs = self.initVCS() |
|
2993 if self.vcs is None and self.isDirty() == oldState: |
|
2994 # check, if project is version controlled |
|
2995 pluginManager = e5App().getObject("PluginManager") |
|
2996 for indicator, vcsData in ( |
|
2997 pluginManager.getVcsSystemIndicators().items() |
|
2998 ): |
|
2999 if os.path.exists( |
|
3000 os.path.join(self.ppath, indicator)): |
|
3001 if len(vcsData) > 1: |
|
3002 vcsList = [] |
|
3003 for ( |
3016 for ( |
3004 _vcsSystemStr, vcsSystemDisplay |
3017 vcsSystemStr, vcsSystemDisplay |
3005 ) in vcsData: |
3018 ) in vcsData: |
3006 vcsList.append(vcsSystemDisplay) |
3019 if res == vcsSystemDisplay: |
3007 with E5OverridenCursor(): |
3020 vcsSystem = vcsSystemStr |
3008 res, vcs_ok = QInputDialog.getItem( |
3021 break |
3009 None, |
|
3010 self.tr("New Project"), |
|
3011 self.tr( |
|
3012 "Select Version Control" |
|
3013 " System"), |
|
3014 vcsList, |
|
3015 0, False) |
|
3016 if vcs_ok: |
|
3017 for ( |
|
3018 vcsSystemStr, vcsSystemDisplay |
|
3019 ) in vcsData: |
|
3020 if res == vcsSystemDisplay: |
|
3021 vcsSystem = vcsSystemStr |
|
3022 break |
|
3023 else: |
|
3024 vcsSystem = "None" |
|
3025 else: |
3022 else: |
3026 vcsSystem = "None" |
3023 vcsSystem = "None" |
3027 else: |
3024 else: |
3028 vcsSystem = vcsData[0][0] |
3025 vcsSystem = "None" |
3029 self.pdata["VCS"] = vcsSystem |
3026 else: |
3030 self.vcs = self.initVCS() |
3027 vcsSystem = vcsData[0][0] |
3031 self.setDirty(True) |
3028 self.pdata["VCS"] = vcsSystem |
3032 if ( |
3029 self.vcs = self.initVCS() |
3033 self.vcs is not None and |
3030 self.setDirty(True) |
3034 (self.vcs.vcsRegisteredState(self.ppath) != |
3031 if ( |
3035 self.vcs.canBeCommitted) |
3032 self.vcs is not None and |
3036 ): |
3033 (self.vcs.vcsRegisteredState(self.ppath) != |
3037 self.pdata["VCS"] = 'None' |
3034 self.vcs.canBeCommitted) |
3038 self.vcs = self.initVCS() |
3035 ): |
3039 self.closeAct.setEnabled(True) |
3036 self.pdata["VCS"] = 'None' |
3040 self.saveasAct.setEnabled(True) |
3037 self.vcs = self.initVCS() |
3041 self.actGrp2.setEnabled(True) |
3038 self.closeAct.setEnabled(True) |
3042 self.propsAct.setEnabled(True) |
3039 self.saveasAct.setEnabled(True) |
3043 self.userPropsAct.setEnabled(True) |
3040 self.actGrp2.setEnabled(True) |
3044 self.filetypesAct.setEnabled(True) |
3041 self.propsAct.setEnabled(True) |
3045 self.lexersAct.setEnabled(True) |
3042 self.userPropsAct.setEnabled(True) |
3046 self.sessActGrp.setEnabled(True) |
3043 self.filetypesAct.setEnabled(True) |
3047 self.dbgActGrp.setEnabled(True) |
3044 self.lexersAct.setEnabled(True) |
3048 self.menuDebuggerAct.setEnabled(True) |
3045 self.sessActGrp.setEnabled(True) |
3049 self.menuSessionAct.setEnabled(True) |
3046 self.dbgActGrp.setEnabled(True) |
3050 self.menuCheckAct.setEnabled(True) |
3047 self.menuDebuggerAct.setEnabled(True) |
3051 self.menuShowAct.setEnabled(True) |
3048 self.menuSessionAct.setEnabled(True) |
3052 self.menuDiagramAct.setEnabled(True) |
3049 self.menuCheckAct.setEnabled(True) |
3053 self.menuApidocAct.setEnabled(True) |
3050 self.menuShowAct.setEnabled(True) |
3054 self.menuPackagersAct.setEnabled(True) |
3051 self.menuDiagramAct.setEnabled(True) |
3055 self.pluginGrp.setEnabled( |
3052 self.menuApidocAct.setEnabled(True) |
3056 self.pdata["PROJECTTYPE"] in ["E6Plugin"]) |
3053 self.menuPackagersAct.setEnabled(True) |
3057 self.addLanguageAct.setEnabled( |
3054 self.pluginGrp.setEnabled( |
3058 bool(self.pdata["TRANSLATIONPATTERN"])) |
3055 self.pdata["PROJECTTYPE"] in ["E6Plugin"]) |
3059 self.makeGrp.setEnabled( |
3056 self.addLanguageAct.setEnabled( |
3060 self.pdata["MAKEPARAMS"]["MakeEnabled"]) |
3057 bool(self.pdata["TRANSLATIONPATTERN"])) |
3061 self.menuMakeAct.setEnabled( |
3058 self.makeGrp.setEnabled( |
3062 self.pdata["MAKEPARAMS"]["MakeEnabled"]) |
3059 self.pdata["MAKEPARAMS"]["MakeEnabled"]) |
3063 |
3060 self.menuMakeAct.setEnabled( |
3064 # open a project debugger properties file being quiet |
3061 self.pdata["MAKEPARAMS"]["MakeEnabled"]) |
3065 # about errors |
|
3066 if Preferences.getProject("AutoLoadDbgProperties"): |
|
3067 self.__readDebugProperties(True) |
|
3068 |
|
3069 self.__model.projectOpened() |
|
3070 self.projectOpenedHooks.emit() |
|
3071 self.projectOpened.emit() |
|
3072 |
3062 |
3073 if Preferences.getProject("SearchNewFiles"): |
3063 # open a project debugger properties file being quiet |
3074 self.__doSearchNewFiles() |
3064 # about errors |
|
3065 if Preferences.getProject("AutoLoadDbgProperties"): |
|
3066 self.__readDebugProperties(True) |
3075 |
3067 |
3076 # read a project tasks file |
3068 self.__model.projectOpened() |
3077 self.__readTasks() |
3069 self.projectOpenedHooks.emit() |
3078 self.ui.taskViewer.setProjectOpen(True) |
3070 self.projectOpened.emit() |
3079 # rescan project tasks |
3071 |
3080 if Preferences.getProject("TasksProjectRescanOnOpen"): |
3072 if Preferences.getProject("SearchNewFiles"): |
3081 e5App().getObject("TaskViewer" |
3073 self.__doSearchNewFiles() |
3082 ).regenerateProjectTasks(quiet=True) |
3074 |
|
3075 # read a project tasks file |
|
3076 self.__readTasks() |
|
3077 self.ui.taskViewer.setProjectOpen(True) |
|
3078 # rescan project tasks |
|
3079 if Preferences.getProject("TasksProjectRescanOnOpen"): |
|
3080 e5App().getObject("TaskViewer" |
|
3081 ).regenerateProjectTasks(quiet=True) |
|
3082 |
|
3083 if restoreSession: |
|
3084 # open the main script |
|
3085 if self.pdata["MAINSCRIPT"]: |
|
3086 if not os.path.isabs(self.pdata["MAINSCRIPT"]): |
|
3087 ms = os.path.join( |
|
3088 self.ppath, self.pdata["MAINSCRIPT"]) |
|
3089 else: |
|
3090 ms = self.pdata["MAINSCRIPT"] |
|
3091 self.sourceFile.emit(ms) |
3083 |
3092 |
3084 if restoreSession: |
3093 # open a project session file being quiet about errors |
3085 # open the main script |
3094 if reopen: |
3086 if self.pdata["MAINSCRIPT"]: |
3095 self.__readSession(quiet=True, indicator="_tmp") |
3087 if not os.path.isabs(self.pdata["MAINSCRIPT"]): |
3096 elif Preferences.getProject("AutoLoadSession"): |
3088 ms = os.path.join( |
3097 self.__readSession(quiet=True) |
3089 self.ppath, self.pdata["MAINSCRIPT"]) |
3098 |
3090 else: |
3099 # start the VCS monitor thread |
3091 ms = self.pdata["MAINSCRIPT"] |
3100 if self.vcs is not None: |
3092 self.sourceFile.emit(ms) |
3101 self.vcs.startStatusMonitor(self) |
3093 |
3102 self.vcs.vcsStatusMonitorData.connect( |
3094 # open a project session file being quiet about errors |
3103 self.__model.changeVCSStates) |
3095 if reopen: |
3104 self.vcs.vcsStatusMonitorStatus.connect( |
3096 self.__readSession(quiet=True, indicator="_tmp") |
3105 self.__statusMonitorStatus) |
3097 elif Preferences.getProject("AutoLoadSession"): |
3106 self.vcs.vcsStatusMonitorInfo.connect( |
3098 self.__readSession(quiet=True) |
3107 self.vcsStatusMonitorInfo) |
3099 |
3108 self.vcs.vcsStatusChanged.connect( |
3100 # start the VCS monitor thread |
3109 self.__vcsStatusChanged) |
3101 if self.vcs is not None: |
|
3102 self.vcs.startStatusMonitor(self) |
|
3103 self.vcs.vcsStatusMonitorData.connect( |
|
3104 self.__model.changeVCSStates) |
|
3105 self.vcs.vcsStatusMonitorStatus.connect( |
|
3106 self.__statusMonitorStatus) |
|
3107 self.vcs.vcsStatusMonitorInfo.connect( |
|
3108 self.vcsStatusMonitorInfo) |
|
3109 self.vcs.vcsStatusChanged.connect( |
|
3110 self.__vcsStatusChanged) |
|
3111 |
3110 |
3112 def reopenProject(self): |
3111 def reopenProject(self): |
3113 """ |
3112 """ |
3114 Public slot to reopen the current project. |
3113 Public slot to reopen the current project. |
3115 """ |
3114 """ |