def clientFNToServerFN(self, filename): """Converts a filename on the client to a filename on the server. Currently just turns file URLs into paths. If you want to be able to set breakpoints when running the client in a different environment from the server, you'll need to expand this. """ # XXX should we .fncache this? Files changing names are undefined # XXX during the lifetime of the debugger from Explorers.Explorer import splitURI, getTransport from Explorers.ExplorerNodes import all_transports prot, category, filepath, filename = splitURI(filename) if prot == 'zope': node = getTransport(prot, category, filepath, all_transports) if node: props = node.properties return 'zopedebug://%s:%s/%s/%s'%(props['host'], props['httpport'], filepath, node.metatype) else: raise Exception(_('No Zope connection for: %s')%filename) elif prot == 'zopedebug': raise Exception(_('"zopedebug" is a server filename protocol')) else: #if prot == 'file': if self.serverClientPaths: normFilepath = os.path.normcase(filepath) for serverPath, clientPath in self.serverClientPaths: normClientPath = os.path.normcase(clientPath) if normFilepath.startswith(normClientPath): return serverPath+normFilepath[len(normClientPath):] return filepath
def clientFNToServerFN(self, filename): """Converts a filename on the client to a filename on the server. Currently just turns file URLs into paths. If you want to be able to set breakpoints when running the client in a different environment from the server, you'll need to expand this. """ # XXX should we .fncache this? Files changing names are undefined # XXX during the lifetime of the debugger from Explorers.Explorer import splitURI, getTransport from Explorers.ExplorerNodes import all_transports prot, category, filepath, filename = splitURI(filename) if prot == 'zope': node = getTransport(prot, category, filepath, all_transports) if node: props = node.properties return 'zopedebug://%s:%s/%s/%s' % ( props['host'], props['httpport'], filepath, node.metatype) else: raise Exception(_('No Zope connection for: %s') % filename) elif prot == 'zopedebug': raise Exception(_('"zopedebug" is a server filename protocol')) else: #if prot == 'file': if self.serverClientPaths: normFilepath = os.path.normcase(filepath) for serverPath, clientPath in self.serverClientPaths: normClientPath = os.path.normcase(clientPath) if normFilepath.startswith(normClientPath): return serverPath + normFilepath[len(normClientPath):] return filepath
def createChildNode(self, fullpath): from Explorers.Explorer import splitURI, getTransport, TransportError prot, cat, res, uri = splitURI(fullpath) try: node = getTransport(prot, cat, res, self.catTransports) except TransportError: return None node.name = node.treename = fullpath return node
def saveAs(self, filename): """ Saves contents of data to file specified by filename. Override this to catch name changes. """ # Catch transport changes from Explorers.Explorer import splitURI, getTransport protO, catO, resO, uriO = splitURI(self.filename) protN, catN, resN, uriN = splitURI(filename) if protO != protN: self.transport = getTransport(protN, catN, resN, self.editor.explorerStore.transports)#explorer.tree.transports) # Rename and save oldname = self.filename self.filename = filename try: self.save(overwriteNewer=True) except: self.filename = oldname raise self.savedAs = True
def createChildNode(self, name, value): if type(value) == type({}): return SubBookmarksCatNode(self, name, value) else: from Explorers.Explorer import splitURI, getTransport, TransportError prot, cat, res, uri = splitURI(value) try: node = getTransport(prot, cat, res, self.catTransports) except TransportError: # XXX should return broken link items #print 'transport not found %s %s %s' %(prot, cat, res) return None if node.isFolderish(): if prot == 'file': node.imgIdx = EditorHelper.imgFSDrive elif prot == 'zope': node.imgIdx = EditorHelper.imgZopeConnection else: node.imgIdx = EditorHelper.imgNetDrive node.treename = name return node
def saveAs(self, filename): """ Saves contents of data to file specified by filename. Override this to catch name changes. """ # Catch transport changes from Explorers.Explorer import splitURI, getTransport protO, catO, resO, uriO = splitURI(self.filename) protN, catN, resN, uriN = splitURI(filename) if protO != protN: self.transport = getTransport( protN, catN, resN, self.editor.explorerStore.transports ) # explorer.tree.transports) # Rename and save oldname = self.filename self.filename = filename try: self.save(overwriteNewer=True) except: self.filename = oldname raise self.savedAs = True