Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

stable changeset: show links to jump the changeset

Using custom widgets function of csinfo.

Changeset 14bf0e427178

Parent 051c8351dae1

by Yuki KODAMA

Changes to one file · Browse files at 14bf0e427178 Showing diff from parent 051c8351dae1 Diff from another changeset...

 
359
360
361
362
363
364
365
366
367
368
 
 
369
370
 
371
372
373
374
375
376
377
378
379
380
381
382
383
384
 
385
386
387
 
430
431
432
 
 
 
 
433
434
435
 
474
475
476
477
478
479
480
481
 
497
498
499
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
501
502
 
503
504
505
 
605
606
607
608
 
609
610
611
612
613
614
 
615
616
617
 
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
 
 
 
 
 
 
 
 
 
656
657
658
 
359
360
361
 
 
 
 
 
 
 
362
363
364
 
365
366
 
 
 
 
 
 
 
 
 
 
 
 
 
367
368
369
370
 
413
414
415
416
417
418
419
420
421
422
 
461
462
463
 
 
464
465
466
 
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
 
509
510
511
512
 
612
613
614
 
615
616
617
618
619
620
 
621
622
623
624
 
642
643
644
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
645
646
647
648
649
650
651
652
653
654
655
656
@@ -359,29 +359,12 @@
  offset += length   return tags, outlines   - def link_event(self, tag, widget, event, liter): - if event.type != gtk.gdk.BUTTON_RELEASE: - return - text = self.get_link_text(tag, widget, liter) - if not text: - return - linkrev = long(text.split(' ')[0]) + def link_event(self, label, event, revnum): + revnum = int(revnum)   if self.graphview: - self.graphview.set_revision_id(linkrev, load=True) + self.graphview.set_revision_id(revnum, load=True)   else: - self.load_details(linkrev) - - def get_link_text(self, tag, widget, liter): - 'handle clicking on a link in a textview' - text_buffer = widget.get_buffer() - beg = liter.copy() - while not beg.begins_tag(tag): - beg.backward_char() - end = liter.copy() - while not end.ends_tag(tag): - end.forward_char() - text = text_buffer.get_text(beg, end) - return text + self.load_details(revnum)     def file_context_menu(self):   def create_menu(label, callback): @@ -430,6 +413,10 @@
  scroller.child.set_shadow_type(gtk.SHADOW_NONE)     ## changeset panel + def revid_markup(revid, **kargs): + opts = dict(face='monospace', size='9000') + opts.update(kargs) + return gtklib.markup(revid, **opts)   def data_func(widget, item, ctx):   def summary_line(desc):   desc = desc.replace('\0', '') @@ -474,8 +461,6 @@
  return _('Patch:')   raise csinfo.UnknownItem(item)   def markup_func(widget, item, value): - def revid_markup(revid): - return gtklib.markup(revid, face='monospace', size='9000')   def revline_markup(revnum, revid, summary):   revnum = gtklib.markup(revnum)   summary = gtklib.markup(summary) @@ -497,9 +482,31 @@
  csets.append(revline_markup(*cset))   return csets   raise csinfo.UnknownItem(item) + def widget_func(widget, item, markups): + def linkwidget(revnum, revid, summary): + opts = dict(underline='single', foreground='#0000FF') + rev = '%s (%s)' % (gtklib.markup(revnum, **opts), + revid_markup(revid, **opts)) + link = gtk.Label() + link.set_markup(rev) + link.set_selectable(True) + link.connect('button-release-event', self.link_event, revnum) + text = gtk.Label(summary) + text.set_selectable(True) + box = gtk.HBox() + box.pack_start(link, False, False) + box.pack_start(text, True, True, 4) + return box + if item in ('parents', 'children'): + csets = widget.get_data(item) + return [linkwidget(*cset) for cset in csets] + elif item == 'transplant': + cset = widget.get_data(item) + return linkwidget(*cset) + raise csinfo.UnknownItem(item)     custom = csinfo.custom(data=data_func, label=label_func, - markup=markup_func) + markup=markup_func, widget=widget_func)   self.csetstyle = csinfo.panelstyle(contents=('cset', 'branch',   'user', 'dateage', 'parents', 'children',   'tags', 'transplant'), selectable=True) @@ -605,13 +612,13 @@
    def setup_tags(self):   'Creates the tags to be used inside the TextView' - def make_texttag( name, **kwargs ): + def make_texttag(name, **kwargs):   'Helper function generating a TextTag'   tag = gtk.TextTag(name)   for key, value in kwargs.iteritems():   key = key.replace("_","-")   try: - tag.set_property( key, value ) + tag.set_property(key, value)   except TypeError:   print "Warning the property %s is unsupported in" % key   print "this version of pygtk" @@ -635,24 +642,15 @@
  paragraph_background='#F0F0F0',   weight=pango.WEIGHT_BOLD ))   - tag_table.add( make_texttag( 'mono', family='Monospace' )) - tag_table.add( make_texttag( 'blue', foreground='blue' )) - tag_table.add( make_texttag( 'red', foreground='red' )) - tag_table.add( make_texttag( 'green', foreground='darkgreen' )) - tag_table.add( make_texttag( 'black', foreground='black' )) - tag_table.add( make_texttag( 'greybg', - paragraph_background='grey', - weight=pango.WEIGHT_BOLD )) - tag_table.add( make_texttag( 'yellowbg', background='yellow' )) - link_tag = make_texttag( 'link', foreground='blue', - underline=pango.UNDERLINE_SINGLE ) - linkhl_tag = make_texttag( 'linkhl', foreground='blue', - underline=pango.UNDERLINE_SINGLE, - weight=pango.WEIGHT_BOLD ) - link_tag.connect('event', self.link_event ) - linkhl_tag.connect('event', self.link_event ) - tag_table.add( link_tag ) - tag_table.add( linkhl_tag ) + tag_table.add(make_texttag('mono', family='Monospace')) + tag_table.add(make_texttag('blue', foreground='blue')) + tag_table.add(make_texttag('red', foreground='red')) + tag_table.add(make_texttag('green', foreground='darkgreen')) + tag_table.add(make_texttag('black', foreground='black')) + tag_table.add(make_texttag('greybg', + paragraph_background='grey', + weight=pango.WEIGHT_BOLD)) + tag_table.add(make_texttag('yellowbg', background='yellow'))     def file_button_release(self, widget, event):   if event.button == 3 and not (event.state & (gtk.gdk.SHIFT_MASK |