def itemOpen(self, link, executable=None, browseHint=True, state={}): if browseHint: myLink = copy.deepcopy(link) myLink.update(self.__store) self.__history.push(myLink, state) return True else: utils.showDocument(link, executable=executable, referrer=self.__history.currentItem().link()) return False
def __itemOpen(self, link, executable): store = self.viewWidget().store() if self.viewWidget().doc(): ref = struct.DocLink(store, self.viewWidget().doc(), autoUpdate=False) elif self.viewWidget().rev(): ref = struct.RevLink(store, self.viewWidget().rev()) else: ref = None utils.showDocument(link, executable=executable, referrer=ref)
def __fillMenu(self, menu, menuLink, store=None): menu.clear() c = struct.Folder(menuLink) listing = [] for (title, link) in c.items(): link.update() try: type = Connector().stat(link.rev()).type() except IOError: type = None if not type: continue if len(title) > 40: title = title[:40] + "..." listing.append( (title, link, Registry().conformes(type, "org.peerdrive.folder"), QtGui.QIcon(Registry().getIcon(type))) ) listing = sorted(listing, cmp=Launchbox.__cmp) for (title, link, folder, icon) in listing: if folder: m = menu.addMenu(icon, title) m.aboutToShow.connect(lambda m=m, l=link: self.__fillMenu(m, l)) else: a = menu.addAction(icon, title) a.triggered.connect(lambda x, l=link, r=menuLink: showDocument(l, referrer=r)) menu.addSeparator() action = menu.addAction("Open") action.triggered.connect(lambda x, l=menuLink: showDocument(l)) try: type = Connector().stat(menuLink.rev(), [menuLink.store()]).type() executables = Registry().getExecutables(type) except IOError: executables = [] if len(executables) > 1: openMenu = menu.addMenu("Open with") for e in executables: action = openMenu.addAction(e) action.triggered.connect(lambda x, l=menuLink, e=e: showDocument(l, executable=e)) menu.addSeparator() if store: action = menu.addAction(QtGui.QIcon("icons/unmount.png"), "Unmount") action.triggered.connect(lambda x, s=store: self.__unmount(s)) action = menu.addAction("Properties") action.triggered.connect(lambda x, l=menuLink: showProperties(l))
def __fillMenu(self, menu, menuLink, store=None): menu.clear() c = struct.Folder(menuLink) listing = [] for (title, link) in c.items(): link.update() try: type = Connector().stat(link.rev()).type() except IOError: type = None if not type: continue if len(title) > 40: title = title[:40] + '...' listing.append((title, link, Registry().conformes(type, "org.peerdrive.folder"), QtGui.QIcon(Registry().getIcon(type)))) listing = sorted(listing, cmp=Launchbox.__cmp) for (title, link, folder, icon) in listing: if folder: m = menu.addMenu(icon, title) m.aboutToShow.connect(lambda m=m, l=link: self.__fillMenu(m, l)) else: a = menu.addAction(icon, title) a.triggered.connect(lambda x,l=link,r=menuLink: showDocument(l, referrer=r)) menu.addSeparator() action = menu.addAction("Open") action.triggered.connect(lambda x,l=menuLink: showDocument(l)) try: type = Connector().stat(menuLink.rev(), [menuLink.store()]).type() executables = Registry().getExecutables(type) except IOError: executables = [] if len(executables) > 1: openMenu = menu.addMenu("Open with") for e in executables: action = openMenu.addAction(e) action.triggered.connect(lambda x,l=menuLink,e=e: showDocument(l, executable=e)) menu.addSeparator() if store: action = menu.addAction(QtGui.QIcon("icons/unmount.png"), "Unmount") action.triggered.connect(lambda x,s=store: self.__unmount(s)) action = menu.addAction("Properties") action.triggered.connect(lambda x,l=menuLink: showProperties(l))
def __open(self, item): row = self.row(item) rev = self.__revs[row] showDocument(connector.RevLink(self.__store, rev))