📄 project.py
字号:
return self._docModelCallbackCacheReturnValue return None document = property(_GetDocumentModel) def _GetDocument(self): # Return the IDE document wrapper that corresponds to the runtime document model if (self._docCallbackCacheReturnValue and (self._parentProj.cacheEnabled or self._docCallbackCacheReturnValue.IsDocumentModificationDateCorrect())): return self._docCallbackCacheReturnValue if self._getDocCallback: self._docCallbackCacheReturnValue, self._docModelCallbackCacheReturnValue = self._getDocCallback(self.filePath) return self._docCallbackCacheReturnValue return None ideDocument = property(_GetDocument) def ClearCache(self): self._docCallbackCacheReturnValue = None self._docModelCallbackCacheReturnValue = None def _typeEnumeration(self): return basedocmgr.FILE_TYPE_LIST def _GetPhysicalFolder(self): dir = None if self.filePath: dir = os.path.dirname(self.filePath) if os.sep != '/': dir = dir.replace(os.sep, '/') # require '/' as delimiter return dir physicalFolder = property(_GetPhysicalFolder) def GetRelativeFolder(self, parentPath): parentPathLen = len(parentPath) dir = None if self.filePath: dir = os.path.dirname(self.filePath) if dir.startswith(parentPath + os.sep): dir = "." + dir[parentPathLen:] # convert to relative path if os.sep != '/': dir = dir.replace(os.sep, '/') # always save out with '/' as path separator for cross-platform compatibility. return dir def AbsToRelativePath(self, parentPath): """ Used to convert path to relative path for saving (disk format) """ parentPathLen = len(parentPath) if self.filePath.startswith(parentPath + os.sep): self.filePath = "." + self.filePath[parentPathLen:] # convert to relative path if os.sep != '/': self.filePath = self.filePath.replace(os.sep, '/') # always save out with '/' as path separator for cross-platform compatibility. else: pass # not a decendant of project, use absolute path def RelativeToAbsPath(self, parentPath): """ Used to convert path to absolute path (for any necessary disk access) """ if self.filePath.startswith("./"): # relative to project file self.filePath = os.path.normpath(os.path.join(parentPath, self.filePath)) # also converts '/' to os.sep #---------------------------------------------------------------------------- # BaseDocumentMgr methods #---------------------------------------------------------------------------- def _GetDoc(self): # HACK: temporary solution. import wx import wx.lib.docview if not self._doc: docMgr = wx.GetApp().GetDocumentManager() try: doc = docMgr.CreateDocument(self.filePath, docMgr.GetFlags()|wx.lib.docview.DOC_SILENT|wx.lib.docview.DOC_OPEN_ONCE|wx.lib.docview.DOC_NO_VIEW) if (doc == None): # already open docs = docMgr.GetDocuments() for d in docs: if d.GetFilename() == self.filePath: doc = d break self._doc = doc except Exception,e: aglogging.reportException(e, stacktrace=True) return self._doc def _GetLocalServiceProcessName(self): # HACK: temporary solution to getting process name from wsdlag file. doc = self._GetDoc() if doc: return doc.GetModel().processName else: return None processName = property(_GetLocalServiceProcessName) def _GetStateful(self): # HACK: temporary solution to getting stateful from wsdlag file. return self._GetDoc().GetModel().stateful def _SetStateful(self, stateful): # HACK: temporary solution to setting stateful from wsdlag file. self._GetDoc().GetModel().stateful = stateful stateful = property(_GetStateful, _SetStateful) def _GetLocalServiceCodeFile(self): # HACK: temporary solution to getting class name from wsdlag file. return self._GetDoc().GetModel().localServiceCodeFile def _SetLocalServiceCodeFile(self, codefile): # HACK: temporary solution to setting class name from wsdlag file. self._GetDoc().GetModel().localServiceCodeFile = codefile localServiceCodeFile = property(_GetLocalServiceCodeFile, _SetLocalServiceCodeFile) def _GetLocalServiceClassName(self): # HACK: temporary solution to getting class name from wsdlag file. return self._GetDoc().GetModel().localServiceClassName def _SetLocalServiceClassName(self, className): # HACK: temporary solution to setting class name from wsdlag file. self._GetDoc().GetModel().localServiceClassName = className localServiceClassName = property(_GetLocalServiceClassName, _SetLocalServiceClassName) def getServiceParameter(self, message, part): return self._GetDoc().GetModel().getServiceParameter(message, part)# only activate this code if we programatically need to access these values## def _GetRssServiceBaseURL(self):## return self._GetDoc().GetModel().rssServiceBaseURL###### def _SetRssServiceBaseURL(self, baseURL):## self._GetDoc().GetModel().rssServiceBaseURL = baseURL###### rssServiceBaseURL = property(_GetRssServiceBaseURL, _SetRssServiceBaseURL)###### def _GetRssServiceRssVersion(self):## return self._GetDoc().GetModel().rssServiceRssVersion###### def _SetRssServiceRssVersion(self, rssVersion):## self._GetDoc().GetModel().rssServiceRssVersion = rssVersion###### rssServiceRssVersion = property(_GetRssServiceRssVersion, _SetRssServiceRssVersion) def _GetServiceRefServiceType(self): # HACK: temporary solution to getting service type from wsdlag file. doc = self._GetDoc() if not doc: return None model = doc.GetModel() if hasattr(model, 'serviceType'): return model.serviceType else: return None def _SetServiceRefServiceType(self, serviceType): # HACK: temporary solution to getting service type from wsdlag file. self._GetDoc().GetModel().serviceType = serviceType serviceType = property(_GetServiceRefServiceType, _SetServiceRefServiceType) def getExternalPackage(self): # HACK: temporary solution to getting custom code filename from wsdlag file. import activegrid.model.projectmodel as projectmodel import wx import ProjectEditor appInfo = self._GetDoc().GetAppInfo() if appInfo.language == None: language = wx.ConfigBase_Get().Read(ProjectEditor.APP_LAST_LANGUAGE, projectmodel.LANGUAGE_DEFAULT) else: language = appInfo.language if language == projectmodel.LANGUAGE_PYTHON: suffix = ".py" elif language == projectmodel.LANGUAGE_PHP: suffix = ".php" pyFilename = self.name + suffix return self._GetDoc().GetAppDocMgr().fullPath(pyFilename)#----------------------------------------------------------------------------# Old Classes#----------------------------------------------------------------------------class Project_10: """ Version 1.0, kept for upgrading to latest version. Over time, this should be deprecated. """ __xmlname__ = "project" __xmlrename__ = { "_files":"files"} __xmlexclude__ = ('fileName',) __xmlattributes__ = ["version"] def __init__(self): self.version = PROJECT_VERSION_050730 self._files = [] def initialize(self): """ Required method for xmlmarshaller """ pass def upgradeVersion(self): currModel = Project() for file in self._files: currModel._files.append(ProjectFile(currModel, file)) return currModel#----------------------------------------------------------------------------# XML Marshalling Methods#----------------------------------------------------------------------------if ACTIVEGRID_BASE_IDE: KNOWNTYPES = {"ag:project" : Project, "ag:file" : ProjectFile}else: KNOWNTYPES = {"ag:project" : Project, "ag:file" : ProjectFile, "ag:appInfo" : AppInfo.AppInfo, "ag:deploymentDataSource" : AppInfo.DeploymentDataSource, "ag:dataSourceBinding" : AppInfo.DataSourceBinding}def load(fileObject): version = xmlutils.getAgVersion(fileObject.name) # most current versions on top if version == PROJECT_VERSION_050826: fileObject.seek(0) project = xmlutils.load(fileObject.name, knownTypes=KNOWNTYPES, knownNamespaces=xmlutils.KNOWN_NAMESPACES, createGenerics=True) elif version == PROJECT_VERSION_050730: fileObject.seek(0) project = xmlutils.load(fileObject.name, knownTypes={"project" : Project_10}, createGenerics=True) project = project.upgradeVersion() else: # assume it is old version without version number fileObject.seek(0) project = xmlutils.load(fileObject.name, knownTypes={"project" : Project_10}, createGenerics=True) if project: project = project.upgradeVersion() else: print "Project, unknown version:", version return None if project: project._projectDir = os.path.dirname(fileObject.name) project.RelativeToAbsPath() return projectdef save(fileObject, project, productionDeployment=False): if not project._projectDir: project._projectDir = os.path.dirname(fileObject.name) project.AbsToRelativePath() # temporarily change it to relative paths for saving savedHomeDir = project.homeDir if productionDeployment: # for deployments, we don't want an abs path in homeDir since that # would tie the app to the current filesystem. So unset it. project.homeDir = None xmlutils.save(fileObject.name, project, prettyPrint=True, knownTypes=KNOWNTYPES, knownNamespaces=xmlutils.KNOWN_NAMESPACES) if productionDeployment: project.homeDir = savedHomeDir project.RelativeToAbsPath() # swap it back to absolute path
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -