def get_body(self, vbox): # layout table self.table = table = gtklib.LayoutTable() vbox.pack_start(table, True, True, 2) ## target revision combo self.revcombo = gtk.combo_box_entry_new_text() table.add_row(_('Strip:'), self.revcombo) reventry = self.revcombo.child reventry.set_width_chars(32) ### fill combo list self.revcombo.append_text(self.initrev) self.revcombo.set_active(0) for name in hglib.getlivebranch(self.repo): self.revcombo.append_text(name) tags = list(self.repo.tags()) tags.sort() tags.reverse() for tag in tags: self.revcombo.append_text(hglib.toutf(tag)) def createlabel(): label = gtk.Label() label.set_alignment(0, 0.5) label.set_size_request(-1, 24) label.size_request() return label ## result label self.resultlbl = createlabel() table.add_row(_('Preview:'), self.resultlbl, padding=False) ## changeset list self.cslist = cslist.ChangesetList() self.cslist.set_activatable_enable(True) table.add_row(None, self.cslist, padding=False, yopt=gtk.FILL|gtk.EXPAND) ## options self.expander = gtk.Expander(_('Options:')) self.expander.connect('notify::expanded', self.options_expanded) ### force option (fixed) self.forceopt = gtk.CheckButton(_('Discard local changes, no backup ' '(-f/--force)')) table.add_row(self.expander, self.forceopt) # signal handlers reventry.connect('activate', lambda b: self.response(gtk.RESPONSE_OK)) self.revcombo.connect('changed', lambda c: self.preview(queue=True)) self.cslist.connect('list-updated', self.preview_updated) self.cslist.connect('item-activated', self.item_activated) # prepare to show self.preview()
def get_body(self, vbox): # layout table table = gtklib.LayoutTable() vbox.pack_start(table, False, False, 2) self.table = table ## revision label & combobox self.revcombo = combo = gtk.combo_box_entry_new_text() entry = combo.child entry.set_width_chars(38) entry.connect('activate', lambda b: self.response(gtk.RESPONSE_OK)) table.add_row(_('Update to:'), combo, padding=False) ## fill list of combo if self.rev != None: combo.append_text(str(self.rev)) else: combo.append_text(self.repo.dirstate.branch()) combo.set_active(0) for name in hglib.getlivebranch(self.repo): combo.append_text(name) tags = list(self.repo.tags()) tags.sort() tags.reverse() for tag in tags: combo.append_text(hglib.toutf(tag)) ## changeset summaries style = csinfo.labelstyle(contents=('%(rev)s', ' %(branch)s', ' %(tags)s', '\n%(summary)s'), selectable=True, width=350) factory = csinfo.factory(self.repo, style=style) def add_with_pad(title, cslabel): label = gtk.Label(title) label.set_alignment(1, 0) headbox = gtk.VBox() headbox.pack_start(label, False, False, 2) headbox.pack_start(gtk.VBox()) table.add_row(headbox, cslabel, yhopt=gtk.FILL|gtk.EXPAND) ## summary of target revision self.target_label = factory() add_with_pad(_('Target:'), self.target_label) ## summary of parent 1 revision self.parent1_label = factory() ## summary of parent 2 revision if needs self.ctxs = self.repo[None].parents() if len(self.ctxs) == 2: add_with_pad(_('Parent 1:'), self.parent1_label) self.parent2_label = factory() add_with_pad(_('Parent 2:'), self.parent2_label) else: add_with_pad(_('Parent:'), self.parent1_label) self.parent2_label = None ## option expander self.expander = gtk.Expander(_('Options:')) self.expander.connect('notify::expanded', self.options_expanded) ### update method (fixed) self.opt_clean = gtk.CheckButton(_('Discard local changes, ' 'no backup (-C/--clean)')) table.add_row(self.expander, self.opt_clean) ### other options (foldable), put later ### automatically merge, if possible (similar to command-line behavior) self.opt_merge = gtk.CheckButton(_('Always merge (when possible)')) ### always show command log widget self.opt_showlog = gtk.CheckButton(_('Always show log')) # signal handlers self.revcombo.connect('changed', lambda b: self.update_summaries()) self.opt_clean.connect('toggled', lambda b: self.update_summaries()) # prepare to show self.update_summaries()