def get_property_pages(self, vfs_files): if len(vfs_files) != 1: return file = vfs_files[0] path = self.get_path_for_vfs_file(file) if path is None or file.is_directory(): return repo = self.get_repo_for_path(path) if repo is None: return localpath = path[len(repo.root) + 1 :] emblem, status = self._get_file_status(repo, localpath) # Get the information from Mercurial ctx = repo.workingctx().parents()[0] try: fctx = ctx.filectx(localpath) rev = fctx.filelog().linkrev(fctx.filenode()) except: rev = ctx.rev() ctx = repo.changectx(rev) node = short(ctx.node()) date = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(ctx.date()[0])) parents = "\n".join([short(p.node()) for p in ctx.parents()]) description = ctx.description() user = ctx.user() user = gobject.markup_escape_text(user) tags = ", ".join(ctx.tags()) branch = ctx.branch() self.property_label = gtk.Label("Mercurial") table = gtk.Table(7, 2, False) table.set_border_width(5) table.set_row_spacings(5) table.set_col_spacings(5) self.__add_row(table, 0, "<b>Status</b>:", status) self.__add_row(table, 1, "<b>Last-Commit-Revision</b>:", str(rev)) self.__add_row(table, 2, "<b>Last-Commit-Description</b>:", description) self.__add_row(table, 3, "<b>Last-Commit-Date</b>:", date) self.__add_row(table, 4, "<b>Last-Commit-User</b>:", user) if tags: self.__add_row(table, 5, "<b>Tags</b>:", tags) if branch != "default": self.__add_row(table, 6, "<b>Branch</b>:", branch) table.show() return (nautilus.PropertyPage("MercurialPropertyPage::status", self.property_label, table),)
def get_background_items(self, window, vfs_file): """Build context menu for current directory""" items = [] path = self.get_path_for_vfs_file(vfs_file) if path is None: return repo = self.get_repo_for_path(path) if repo is None: item = nautilus.MenuItem( "HgNautilus::newtree", "Create New Repository", "Make directory versioned", self.icon("menucreaterepos.ico"), ) item.connect("activate", self._init_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::clone", "Create Clone", "Create clone here from source", self.icon("menuclone.ico") ) item.connect("activate", self._clone_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::about", "About TortoiseHg", "Information about TortoiseHg installation", self.icon("menuabout.ico"), ) item.connect("activate", self._about_cb, vfs_file) items.append(item) item = nautilus.MenuItem("HgNautilus::terminal", "Open Terminal Here", "Open terminal in current directory") item.connect("activate", self._open_terminal_cb, vfs_file) items.append(item) return items if len(repo.workingctx().parents()) > 1: self.rev0 = repo.workingctx().parents()[0].rev() item = nautilus.MenuItem( "HgNautilus::undomerge", "Undo Merge", "Clean checkout of original parent revision", self.icon("menuunmerge.ico"), ) item.connect("activate", self._unmerge_cb, vfs_file) items.append(item) item = nautilus.MenuItem("HgNautilus::commit", "Commit", "Commit changes", self.icon("menucommit.ico")) item.connect("activate", self._commit_cb, [vfs_file]) items.append(item) item = nautilus.MenuItem( "HgNautilus::status", "Show Status", "Show Repository Status", self.icon("menushowchanged.ico") ) item.connect("activate", self._status_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::diff", "Visual Diff", "Show Changes to Repository", self.icon("menudiff.ico") ) item.connect("activate", self._diff_cb, [vfs_file]) items.append(item) item = nautilus.MenuItem( "HgNautilus::dag", "Revision History", "Show revision DAG", self.icon("menurevisiongraph.ico") ) item.connect("activate", self._history_cb, [vfs_file]) items.append(item) item = nautilus.MenuItem( "HgNautilus::datamine", "Data Mining", "Search revision history", self.icon("menulog.ico") ) item.connect("activate", self._datamine_cb, [vfs_file]) items.append(item) item = nautilus.MenuItem( "HgNautilus::sync", "Synchronize", "Sync with another repository", self.icon("menusynch.ico") ) item.connect("activate", self._sync_cb, vfs_file) items.append(item) item = nautilus.MenuItem("HgNautilus::serve", "Web Server", "Start internal web server", self.icon("proxy.ico")) item.connect("activate", self._serve_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::recover", "Recovery", "General repair and recovery of repository", self.icon("general.ico") ) item.connect("activate", self._recovery_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::repoconfig", "Repository Settings", "Configure Mercurial settings for this repo", self.icon("menusettings.ico"), ) item.connect("activate", self._thgconfig_repo_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::userconfig", "User-Global Settings", "Configure global Mercurial settings", self.icon("menusettings.ico"), ) item.connect("activate", self._thgconfig_user_cb, vfs_file) items.append(item) item = nautilus.MenuItem( "HgNautilus::about", "About TortoiseHg", "Information about TortoiseHg installation", self.icon("menuabout.ico"), ) item.connect("activate", self._about_cb, vfs_file) items.append(item) item = nautilus.MenuItem("HgNautilus::terminal", "Open Terminal Here", "Open terminal in current directory") item.connect("activate", self._open_terminal_cb, vfs_file) items.append(item) return items