by
Changes to 18 files · Browse files at 380652f787c7 Showing diff from parent 0d855d77d8d1 24cbfed52a35 Diff from another changeset...
@@ -92,11 +92,6 @@ ;win32mbcs =
;win32text =
;zeroconf =
-;
-; extra extensions provided by TortoiseHg
-;
-;qct =
-;forest =
; To use cleverencode/cleverdecode, you must enable win32text extension
;
|
@@ -45,6 +45,7 @@ Source: contrib\win32\mercurial.ini; DestDir: {app}; DestName: Mercurial.ini; AfterInstall: FileExpandString('{app}\Mercurial.ini')
Source: ReleaseNotes.txt; DestDir: {app}; DestName: ReleaseNotes.txt
Source: ..\contrib\*.exe; DestDir: {app}; Flags: ignoreversion restartreplace uninsrestartdelete
+Source: ..\contrib\*.dll; DestDir: {app}; Flags: ignoreversion restartreplace uninsrestartdelete
Source: ..\contrib\TortoiseOverlays\*.*; DestDir: {app}/TortoiseOverlays;
Source: dist\*.exe; DestDir: {app}; Flags: ignoreversion restartreplace uninsrestartdelete
Source: win32\shellext\THgShell.dll; DestDir: {app}; Flags: ignoreversion restartreplace uninsrestartdelete
|
@@ -1,7 +1,7 @@ [py2exe]
excludes=pywin, pywin.dialogs, pywin.dialogs.list, PyQt, PyQt4.QtCode, PyQt4.QtGui
-includes=cairo, pango, pangocairo, atk, gobject, dbhash
-packages=email, hgext, hgext.convert, encodings, hggtk, hggtk.logview, thgutil, thgutil.iniparse
+includes=cairo, pango, pangocairo, atk, gobject, dbhash, gtk.keysyms
+packages=ctypes, email, hgext, hgext.convert, encodings, hggtk, hggtk.logview, thgutil, thgutil.iniparse
dll_excludes=iconv.dll, intl.dll, libatk-1.0-0.dll, libgdk_pixbuf-2.0-0.dll, libgdk-win32-2.0-0.dll, libglib-2.0-0.dll, libgmodule-2.0-0.dll, libgobject-2.0-0.dll, libgthread-2.0-0.dll, libgtk-win32-2.0-0.dll, libpango-1.0-0.dll, libpangowin32-1.0-0.dll, libcairo-2.dll, libglade-2.0-0.dll, libpangocairo-1.0-0.dll, libpangoft2-1.0-0.dll
|
|
|
@@ -19,8 +19,7 @@ from hggtk import gdialog, gtklib, hgcmd
class ChangeSet(gdialog.GDialog):
- """GTK+ based dialog for displaying repository logs
- """
+ 'GTK+ based dialog for displaying repository logs'
def __init__(self, ui, repo, cwd, pats, opts, stbar=None):
gdialog.GDialog.__init__(self, ui, repo, cwd, pats, opts)
self.stbar = stbar
@@ -41,10 +40,10 @@ self.parent_toggle.set_tooltip(self.tooltips, _('diff other parent'))
self.parent_toggle.set_sensitive(False)
self.parent_toggle.set_active(False)
- self.parent_toggle.connect('toggled', self._parent_toggled)
+ self.parent_toggle.connect('toggled', self.parent_toggled)
return [self.parent_toggle]
- def _parent_toggled(self, button):
+ def parent_toggled(self, button):
self.load_details(self.currev)
def prepare_display(self):
@@ -67,7 +66,7 @@ self._setting_hpos = -1
def load_details(self, rev):
- '''Load selected changeset details into buffer and filelist'''
+ 'Load selected changeset details into buffer and filelist'
self.currev = rev
ctx = self.repo[rev]
if not ctx:
@@ -114,7 +113,7 @@ if len(self._filelist) > 1:
self._filesel.select_path((1,))
- def _filelist_rowchanged(self, sel):
+ def filelist_rowchanged(self, sel):
model, path = sel.get_selected()
if not path:
return
@@ -211,11 +210,11 @@
sob, eob = buf.get_bounds()
pos = buf.get_iter_at_offset(offset)
- buf.apply_tag_by_name("mono", pos, eob)
+ buf.apply_tag_by_name('mono', pos, eob)
return True
def prepare_diff(self, difflines, offset, fname):
- '''Borrowed from hgview; parses changeset diffs'''
+ 'Borrowed from hgview; parses changeset diffs'
def addtag( name, offset, length ):
if tags and tags[-1][0] == name and tags[-1][2]==offset:
tags[-1][2] += length
@@ -230,22 +229,22 @@ rem += 1
outlines = []
tags = []
- txt = toutf("=== (+%d,-%d) %s ===\n" % (add, rem, fname))
- addtag( "greybg", offset, len(txt) )
+ txt = toutf('=== (+%d,-%d) %s ===\n' % (add, rem, fname))
+ addtag( 'greybg', offset, len(txt) )
outlines.append(txt)
offset += len(txt.decode('utf-8'))
for l1 in difflines[3:]:
l = toutf(l1)
- if l.startswith("@@"):
- tag = "blue"
- elif l.startswith("+"):
- tag = "green"
+ if l.startswith('@@'):
+ tag = 'blue'
+ elif l.startswith('+'):
+ tag = 'green'
l = diffexpand(l)
- elif l.startswith("-"):
- tag = "red"
+ elif l.startswith('-'):
+ tag = 'red'
l = diffexpand(l)
else:
- tag = "black"
+ tag = 'black'
l = diffexpand(l)
l = l+"\n"
length = len(l.decode('utf-8'))
@@ -268,7 +267,7 @@ self.load_details(linkrev)
def get_link_text(self, tag, widget, liter):
- """handle clicking on a link in a textview"""
+ 'handle clicking on a link in a textview'
text_buffer = widget.get_buffer()
beg = liter.copy()
while not beg.begins_tag(tag):
@@ -286,18 +285,18 @@ menuitem.set_border_width(1)
return menuitem
- _menu = gtk.Menu()
- _menu.append(create_menu(_('_visual diff'), self._diff_file_rev))
- _menu.append(create_menu(_('diff to _local'), self._diff_to_local))
- _menu.append(create_menu(_('_view at revision'), self._view_file_rev))
- self._save_menu = create_menu(_('_save at revision'), self._save_file_rev)
- _menu.append(self._save_menu)
- _menu.append(create_menu(_('_file history'), self._file_history))
- self._ann_menu = create_menu(_('_annotate file'), self._ann_file)
- _menu.append(self._ann_menu)
- _menu.append(create_menu(_('_revert file contents'), self._revert_file))
- _menu.show_all()
- return _menu
+ menu = gtk.Menu()
+ menu.append(create_menu(_('_visual diff'), self.diff_file_rev))
+ menu.append(create_menu(_('diff to _local'), self.diff_to_local))
+ menu.append(create_menu(_('_view at revision'), self.view_file_rev))
+ self.save_menu = create_menu(_('_save at revision'), self.save_file_rev)
+ menu.append(self.save_menu)
+ menu.append(create_menu(_('_file history'), self.file_history))
+ self.ann_menu = create_menu(_('_annotate file'), self.ann_file)
+ menu.append(self.ann_menu)
+ menu.append(create_menu(_('_revert file contents'), self.revert_file))
+ menu.show_all()
+ return menu
def get_body(self):
self.curfile = ''
@@ -306,7 +305,7 @@ self.clipboard = gtk.Clipboard(selection=sel)
else:
self.clipboard = None
- self._filemenu = self.file_context_menu()
+ self.filemenu = self.file_context_menu()
details_frame = gtk.Frame()
details_frame.set_shadow_type(gtk.SHADOW_ETCHED_IN)
@@ -316,7 +315,7 @@
details_text = gtk.TextView()
details_text.set_wrap_mode(gtk.WRAP_NONE)
- details_text.connect('populate-popup', self._add_to_popup)
+ details_text.connect('populate-popup', self.add_to_popup)
details_text.set_editable(False)
details_text.modify_font(pango.FontDescription(self.fontcomment))
scroller.add(details_text)
@@ -328,12 +327,12 @@
filelist_tree = gtk.TreeView()
filesel = filelist_tree.get_selection()
- filesel.connect("changed", self._filelist_rowchanged)
+ filesel.connect('changed', self.filelist_rowchanged)
self._filesel = filesel
filelist_tree.connect('button-release-event',
- self._file_button_release)
- filelist_tree.connect('popup-menu', self._file_popup_menu)
- filelist_tree.connect('row-activated', self._file_row_act)
+ self.file_button_release)
+ filelist_tree.connect('popup-menu', self.file_popup_menu)
+ filelist_tree.connect('row-activated', self.file_row_act)
filelist_tree.set_search_equal_func(self.search_filelist)
accelgroup = gtk.AccelGroup()
@@ -391,9 +390,9 @@ return True
def setup_tags(self):
- """Creates the tags to be used inside the TextView"""
+ 'Creates the tags to be used inside the TextView'
def make_texttag( name, **kwargs ):
- """Helper function generating a TextTag"""
+ 'Helper function generating a TextTag'
tag = gtk.TextTag(name)
for key, value in kwargs.iteritems():
key = key.replace("_","-")
@@ -417,30 +416,30 @@ tag_table.add(make_texttag('parent', foreground='#000090',
paragraph_background='#F0F0F0'))
- 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",
+ 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",
+ tag_table.add( make_texttag( 'yellowbg', background='yellow' ))
+ link_tag = make_texttag( 'link', foreground='blue',
underline=pango.UNDERLINE_SINGLE )
- link_tag.connect("event", self.link_event )
+ link_tag.connect('event', self.link_event )
tag_table.add( link_tag )
- def _file_button_release(self, widget, event):
+ def file_button_release(self, widget, event):
if event.button == 3 and not (event.state & (gtk.gdk.SHIFT_MASK |
gtk.gdk.CONTROL_MASK)):
- self._file_popup_menu(widget, event.button, event.time)
+ self.file_popup_menu(widget, event.button, event.time)
return False
- def _file_popup_menu(self, treeview, button=0, time=0):
+ def file_popup_menu(self, treeview, button=0, time=0):
if not self.curfile:
return
- self._filemenu.popup(None, None, None, button, time)
+ self.filemenu.popup(None, None, None, button, time)
# If the filelog entry this changeset references does not link
# back to this changeset, it means this changeset did not
@@ -453,8 +452,8 @@ has_filelog = fctx.filelog().linkrev(fctx.filerev()) == ctx.rev()
except LookupError:
has_filelog = False
- self._ann_menu.set_sensitive(has_filelog)
- self._save_menu.set_sensitive(has_filelog)
+ self.ann_menu.set_sensitive(has_filelog)
+ self.save_menu.set_sensitive(has_filelog)
return True
def thgdiff(self, treeview):
@@ -468,16 +467,16 @@ return False
self._diff_file('M', self.curfile)
- def _file_row_act(self, tree, path, column) :
+ def file_row_act(self, tree, path, column) :
'Default action is the first entry in the context menu'
- self._filemenu.get_children()[0].activate()
+ self.filemenu.get_children()[0].activate()
return True
- def _save_file_rev(self, menuitem):
+ def save_file_rev(self, menuitem):
wfile = util.localpath(self.curfile)
wfile, ext = os.path.splitext(os.path.basename(wfile))
filename = "%s@%d%s" % (wfile, self.currev, ext)
- fd = gtklib.NativeSaveFileDialogWrapper(Title = "Save file to",
+ fd = gtklib.NativeSaveFileDialogWrapper(Title=_("Save file to"),
InitialDir=self.cwd,
FileName=filename)
result = fd.run()
@@ -487,13 +486,13 @@ hgcmd_toq(self.repo.root, q, 'cat', '--rev',
str(self.currev), '--output', result, cpath)
- def _diff_to_local(self, menuitem):
+ def diff_to_local(self, menuitem):
if not self.curfile:
return
self.opts['rev'] = [str(self.currev), '.']
self._diff_file('M', self.curfile)
- def _diff_file_rev(self, menuitem):
+ def diff_file_rev(self, menuitem):
'User selected visual diff file from the file list context menu'
if not self.curfile:
return
@@ -501,8 +500,8 @@ self._diff_file('M', self.curfile)
del self.opts['change']
- def _view_file_rev(self, menuitem):
- '''User selected view file revision from the file list context menu'''
+ def view_file_rev(self, menuitem):
+ 'User selected view file revision from the file list context menu'
if not self.curfile:
return
rev = self.currev
@@ -515,22 +514,22 @@ self._node1, self._node2 = cmdutil.revpair(self.repo, [pair])
self._view_file('M', self.curfile, force_left=False)
- def _ann_file(self, menuitem):
- '''User selected annotate file from the file list context menu'''
+ def ann_file(self, menuitem):
+ 'User selected annotate file from the file list context menu'
from hggtk import datamine
rev = self.currev
dialog = datamine.DataMineDialog(self.ui, self.repo, self.cwd, [], {})
dialog.display()
dialog.add_annotate_page(self.curfile, str(rev))
- def _file_history(self, menuitem):
- '''User selected file history from file list context menu'''
+ def file_history(self, menuitem):
+ 'User selected file history from file list context menu'
if self.glog_parent:
# If this changeset browser is embedded in glog, send
# send this event to the main app
opts = {'pats' : [self.curfile]}
self.glog_parent.custombutton.set_active(True)
- self.glog_parent.reload_log(opts)
+ self.glog_parent.reload_log(**opts)
else:
# Else launch our own GLog instance
from hggtk import history
@@ -539,8 +538,8 @@ dialog.open_with_file(self.curfile)
dialog.display()
- def _revert_file(self, menuitem):
- '''User selected file revert from the file list context menu'''
+ def revert_file(self, menuitem):
+ 'User selected file revert from the file list context menu'
rev = self.currev
dialog = gdialog.Confirm(_('Confirm revert file to old revision'),
[], self, _('Revert %s to contents at revision %d?') %
@@ -553,9 +552,9 @@ dlg.hide()
shlib.shell_notify([self.repo.wjoin(self.curfile)])
- def _add_to_popup(self, textview, menu):
+ def add_to_popup(self, textview, menu):
menu_items = (('----', None),
- (_('Toggle _Wordwrap'), self._toggle_wordwrap),
+ (_('Toggle _Wordwrap'), self.toggle_wordwrap),
)
for label, handler in menu_items:
if label == '----':
@@ -567,7 +566,7 @@ menu.append(menuitem)
menu.show_all()
- def _toggle_wordwrap(self, sender):
+ def toggle_wordwrap(self, sender):
if self.textview.get_wrap_mode() != gtk.WRAP_NONE:
self.textview.set_wrap_mode(gtk.WRAP_NONE)
else:
|
|
|
@@ -42,11 +42,11 @@
def get_tbbuttons(self):
self.stop_button = self.make_toolbutton(gtk.STOCK_STOP, _('Stop'),
- self._stop_current_search,
+ self.stop_current_search,
tip=_('Stop operation on current tab'))
return [
self.make_toolbutton(gtk.STOCK_FIND, _('New Search'),
- self._search_clicked,
+ self.search_clicked,
tip=_('Open new search tab')),
self.stop_button
]
@@ -72,7 +72,7 @@
def load_settings(self, settings):
gdialog.GDialog.load_settings(self, settings)
- self.connect('thg-close', self._close_current_page)
+ self.connect('thg-close', self.close_current_page)
self.tabwidth = gettabwidth(self.ui)
def get_body(self):
@@ -96,78 +96,77 @@ return vbox
def _destroying(self, gtkobj):
- self._stop_all_searches()
+ self.stop_all_searches()
gdialog.GDialog._destroying(self, gtkobj)
def ann_header_context_menu(self, treeview):
- _menu = gtk.Menu()
- _button = gtk.CheckMenuItem(_('Filename'))
- _button.connect('toggled', self.toggle_annatate_columns, treeview, 2)
- _menu.append(_button)
- _button = gtk.CheckMenuItem(_('User'))
- _button.connect('toggled', self.toggle_annatate_columns, treeview, 3)
- _menu.append(_button)
- _menu.show_all()
- return _menu
+ menu = gtk.Menu()
+ button = gtk.CheckMenuItem(_('Filename'))
+ button.connect('toggled', self.toggle_annatate_columns, treeview, 2)
+ menu.append(button)
+ button = gtk.CheckMenuItem(_('User'))
+ button.connect('toggled', self.toggle_annatate_columns, treeview, 3)
+ menu.append(button)
+ menu.show_all()
+ return menu
def grep_context_menu(self):
- _menu = gtk.Menu()
- _menu.append(create_menu(_('di_splay change'), self._cmenu_display))
- _menu.append(create_menu(_('_annotate file'), self._cmenu_annotate))
- _menu.append(create_menu(_('_file history'), self._cmenu_file_log))
- _menu.show_all()
- return _menu
+ menu = gtk.Menu()
+ menu.append(create_menu(_('di_splay change'), self.cmenu_display))
+ menu.append(create_menu(_('_annotate file'), self.cmenu_annotate))
+ menu.append(create_menu(_('_file history'), self.cmenu_file_log))
+ menu.show_all()
+ return menu
def annotate_context_menu(self, objs):
- _menu = gtk.Menu()
- _menu.append(create_menu(_('_zoom to change'), self._cmenu_zoom, objs))
- _menu.append(create_menu(_('di_splay change'), self._cmenu_display))
- _menu.append(create_menu(_('_annotate parent'),
- self._annotate_parent, objs))
- _menu.show_all()
- return _menu
+ menu = gtk.Menu()
+ menu.append(create_menu(_('_zoom to change'), self.cmenu_zoom, objs))
+ menu.append(create_menu(_('di_splay change'), self.cmenu_display))
+ menu.append(create_menu(_('_annotate parent'),
+ self.annotate_parent, objs))
+ menu.show_all()
+ return menu
- def _annotate_parent(self, menuitem, objs):
+ def annotate_parent(self, menuitem, objs):
if not self.currev:
return
parent = self.repo[self.currev].parents()[0].rev()
self.trigger_annotate(parent, objs)
- def _cmenu_zoom(self, menuitem, objs):
+ def cmenu_zoom(self, menuitem, objs):
(frame, treeview, path, graphview) = objs
graphview.scroll_to_revision(int(self.currev))
graphview.set_revision_id(int(self.currev))
- def _cmenu_display(self, menuitem):
+ def cmenu_display(self, menuitem):
statopts = {'rev' : [self.currev] }
dlg = changeset.ChangeSet(self.ui, self.repo, self.cwd, [], statopts)
dlg.display()
- def _cmenu_annotate(self, menuitem):
+ def cmenu_annotate(self, menuitem):
self.add_annotate_page(self.curpath, self.currev)
- def _cmenu_file_log(self, menuitem):
+ def cmenu_file_log(self, menuitem):
from hggtk import history
dlg = history.GLog(self.ui, self.repo, self.cwd, [self.repo.root], {})
dlg.open_with_file(self.curpath)
dlg.display()
- def _grep_button_release(self, widget, event):
+ def grep_button_release(self, widget, event):
if event.button == 3 and not (event.state & (gtk.gdk.SHIFT_MASK |
gtk.gdk.CONTROL_MASK)):
- self._grep_popup_menu(widget, event.button, event.time)
+ self.grep_popup_menu(widget, event.button, event.time)
return False
- def _grep_popup_menu(self, treeview, button=0, time=0):
+ def grep_popup_menu(self, treeview, button=0, time=0):
self.grep_cmenu.popup(None, None, None, button, time)
return True
- def _grep_thgdiff(self, treeview):
+ def grep_thgdiff(self, treeview):
self._do_diff([], {'change' : self.currev}, modal=True)
- def _grep_row_act(self, tree, path, column):
- """Default action is the first entry in the context menu
- """
+ def grep_row_act(self, tree, path, column):
+ 'Default action is the first entry in the context menu'
self.grep_cmenu.get_children()[0].activate()
return True
@@ -184,7 +183,7 @@ self.changedesc[rev] = (desc, author)
return (desc, author)
- def _search_clicked(self, button, data):
+ def search_clicked(self, button, data):
self.add_search_page()
def create_tab_close_button(self):
@@ -246,10 +245,10 @@ treeview.get_selection().set_mode(gtk.SELECTION_SINGLE)
treeview.set_rules_hint(True)
treeview.set_property('fixed-height-mode', True)
- treeview.connect("cursor-changed", self._grep_selection_changed)
- treeview.connect('button-release-event', self._grep_button_release)
- treeview.connect('popup-menu', self._grep_popup_menu)
- treeview.connect('row-activated', self._grep_row_act)
+ treeview.connect("cursor-changed", self.grep_selection_changed)
+ treeview.connect('button-release-event', self.grep_button_release)
+ treeview.connect('popup-menu', self.grep_popup_menu)
+ treeview.connect('row-activated', self.grep_row_act)
accelgroup = gtk.AccelGroup()
self.add_accel_group(accelgroup)
@@ -257,7 +256,7 @@ key, modifier = gtk.accelerator_parse(mod+'d')
treeview.add_accelerator('thg-diff', accelgroup, key,
modifier, gtk.ACCEL_VISIBLE)
- treeview.connect('thg-diff', self._grep_thgdiff)
+ treeview.connect('thg-diff', self.grep_thgdiff)
results = gtk.ListStore(str, str, str, str)
treeview.set_model(results)
@@ -305,8 +304,8 @@ excludes.connect('activate', self.trigger_search, objs)
# Includes/excludes must disable following copies
objs = (includes, excludes, follow)
- includes.connect('changed', self._update_following_possible, objs)
- excludes.connect('changed', self._update_following_possible, objs)
+ includes.connect('changed', self.update_following_possible, objs)
+ excludes.connect('changed', self.update_following_possible, objs)
if hasattr(self.notebook, 'set_tab_reorderable'):
self.notebook.set_tab_reorderable(frame, True)
@@ -394,7 +393,7 @@ self.stbar.end()
return False
- def _grep_selection_changed(self, treeview):
+ def grep_selection_changed(self, treeview):
"""
Callback for when the user selects grep output.
"""
@@ -406,23 +405,23 @@ self.curpath = fromutf(model[paths][self.COL_PATH])
self.stbar.set_status_text(toutf(model[paths][self.COL_TOOLTIP]))
- def _close_current_page(self, window):
+ def close_current_page(self, window):
num = self.notebook.get_current_page()
if num != -1 and self.notebook.get_n_pages():
self.notebook.remove_page(num)
self.emit_stop_by_name('thg-close')
- def _stop_current_search(self, button, widget):
+ def stop_current_search(self, button, widget):
num = self.notebook.get_current_page()
frame = self.notebook.get_nth_page(num)
- self._stop_search(frame)
+ self.stop_search(frame)
- def _stop_all_searches(self):
+ def stop_all_searches(self):
for num in xrange(self.notebook.get_n_pages()):
frame = self.notebook.get_nth_page(num)
- self._stop_search(frame)
+ self.stop_search(frame)
- def _stop_search(self, frame):
+ def stop_search(self, frame):
if getattr(frame, '_mythread', None):
frame._mythread.terminate()
frame._mythread.join()
@@ -434,7 +433,7 @@ if num != -1 and self.notebook.get_n_pages() > 1:
self.notebook.remove_page(num)
- def _add_header_context_menu(self, col, menu):
+ def add_header_context_menu(self, col, menu):
lb = gtk.Label(col.get_title())
lb.show()
col.set_widget(lb)
@@ -442,17 +441,17 @@ while wgt:
if type(wgt) == gtk.Button:
wgt.connect("button-press-event",
- self._tree_header_button_press, menu)
+ self.tree_header_button_press, menu)
break
wgt = wgt.get_parent()
- def _tree_header_button_press(self, widget, event, menu):
+ def tree_header_button_press(self, widget, event, menu):
if event.button == 3:
menu.popup(None, None, None, event.button, event.time)
return True
return False
- def _update_following_possible(self, widget, objs):
+ def update_following_possible(self, widget, objs):
(includes, excludes, follow) = objs
allow = not includes.get_text() and not excludes.get_text()
if not allow:
@@ -511,7 +510,7 @@ key, modifier = gtk.accelerator_parse(mod+'d')
treeview.add_accelerator('thg-diff', accelgroup, key,
modifier, gtk.ACCEL_VISIBLE)
- treeview.connect('thg-diff', self._annotate_thgdiff)
+ treeview.connect('thg-diff', self.annotate_thgdiff)
results = gtk.ListStore(str, str, str, str, str, str, str)
treeview.set_model(results)
@@ -537,7 +536,7 @@ column.add_attribute(cell, 'background', self.COL_COLOR)
column.set_visible(visible)
treeview.append_column(column)
- self._add_header_context_menu(column, context_menu)
+ self.add_header_context_menu(column, context_menu)
treeview.set_headers_clickable(True)
if hasattr(treeview, 'set_tooltip_column'):
treeview.set_tooltip_column(self.COL_TOOLTIP)
@@ -575,13 +574,13 @@ objs = (frame, treeview, path, graphview)
graphview.treeview.connect('row-activated', self.log_activate, objs)
graphview.treeview.connect('button-release-event',
- self._ann_button_release, objs)
- graphview.treeview.connect('popup-menu', self._ann_popup_menu, objs)
+ self.ann_button_release, objs)
+ graphview.treeview.connect('popup-menu', self.ann_popup_menu, objs)
- treeview.connect("cursor-changed", self._ann_selection_changed)
- treeview.connect('button-release-event', self._ann_button_release, objs)
- treeview.connect('popup-menu', self._ann_popup_menu, objs)
- treeview.connect('row-activated', self._ann_row_act, objs)
+ treeview.connect("cursor-changed", self.ann_selection_changed)
+ treeview.connect('button-release-event', self.ann_button_release, objs)
+ treeview.connect('popup-menu', self.ann_popup_menu, objs)
+ treeview.connect('row-activated', self.ann_row_act, objs)
def search_in_file(self, model, column, key, iter):
"""Searches all fields shown in the tree when the user hits crtr+f,
@@ -594,7 +593,7 @@ return False
return True
- def _annotate_thgdiff(self, treeview):
+ def annotate_thgdiff(self, treeview):
self._do_diff([], {'change' : self.currev}, modal=True)
def toggle_annatate_columns(self, button, treeview, col):
@@ -715,7 +714,7 @@ self.stbar.end()
return False
- def _ann_selection_changed(self, treeview):
+ def ann_selection_changed(self, treeview):
"""
User selected line of annotate output, describe revision
responsible for this line in the status bar
@@ -728,18 +727,18 @@ self.path = model.path
self.stbar.set_status_text(model[anniter][self.COL_TOOLTIP])
- def _ann_button_release(self, widget, event, objs):
+ def ann_button_release(self, widget, event, objs):
if event.button == 3 and not (event.state & (gtk.gdk.SHIFT_MASK |
gtk.gdk.CONTROL_MASK)):
- self._ann_popup_menu(widget, event.button, event.time, objs)
+ self.ann_popup_menu(widget, event.button, event.time, objs)
return False
- def _ann_popup_menu(self, treeview, button, time, objs):
+ def ann_popup_menu(self, treeview, button, time, objs):
ann_cmenu = self.annotate_context_menu(objs)
ann_cmenu.popup(None, None, None, button, time)
return True
- def _ann_row_act(self, tree, path, column, objs):
+ def ann_row_act(self, tree, path, column, objs):
ann_cmenu = self.annotate_context_menu(objs)
ann_cmenu.get_children()[0].activate()
|
@@ -213,7 +213,7 @@
def test_opt(self, opt):
- return opt in self.opts and self.opts[opt]
+ return self.opts.get(opt, False)
def _parse_config(self):
# defaults
|
@@ -78,14 +78,21 @@
def synch_clicked(self, toolbutton, data):
from hggtk import synch
+ parents = [x.node() for x in self.repo.parents()]
dlg = synch.SynchDialog([], False, True)
- dlg.set_notify_func(self.synch_complete, None)
+ dlg.set_notify_func(self.synch_complete, parents)
dlg.show_all()
- def synch_complete(self, _):
+ def synch_complete(self, parents):
self.repo.invalidate()
+ newparents = [x.node() for x in self.repo.parents()]
if len(self.repo) != self.origtip:
- self.newbutton.set_active(True)
+ if self.newbutton.get_active():
+ self.reload_log()
+ else:
+ self.newbutton.set_active(True)
+ elif not parents == newparents:
+ self.refresh_model()
def toggle_view_column(self, button, property):
active = button.get_active()
@@ -344,8 +351,7 @@ elif self.filter == 'all':
self.graphview.refresh(True, None, self.opts)
elif self.filter == 'new':
- newtip = len(self.repo)-1
- self.opts['revrange'] = [newtip, self.origtip+1]
+ self.opts['revrange'] = [len(self.repo)-1, self.origtip]
self.graphview.refresh(True, None, self.opts)
elif self.filter == 'only_merges':
self.opts['only_merges'] = True
|
@@ -6,6 +6,7 @@
import os
import gtk
+import gobject
from mercurial import cmdutil, util, hg, ui
@@ -15,9 +16,8 @@from hggtk import gtklib, gdialog, hgcmd
class FilterDialog(gtk.Dialog):
- """ Dialog for creating log filters """
+ 'Dialog for creating log filters'
def __init__(self, root='', revs=[], files=[], filterfunc=None):
- """ Initialize the Dialog """
buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
super(FilterDialog, self).__init__(flags=gtk.DIALOG_MODAL,
buttons=buttons)
@@ -28,14 +28,14 @@ self._btn_apply.connect('clicked', self._btn_apply_clicked)
self.action_area.pack_end(self._btn_apply)
- self.set_title(_("Log Filter - %s") % os.path.basename(root))
+ self.set_title(_('Log Filter - %s') % os.path.basename(root))
self.filterfunc = filterfunc
try:
self.repo = hg.repository(ui.ui(), path=root)
except hglib.RepoError:
- return None
+ gobject.idle_add(self.destroy)
self.set_default_size(350, 120)
|
@@ -457,7 +457,7 @@ self.treeview.append_column(self.utc_column)
def text_color_orig(self, parents, rev, author):
- if self.origtip is not None and int(rev) > self.origtip:
+ if self.origtip is not None and int(rev) >= self.origtip:
return 'darkgreen'
if len(parents) == 2:
# mark merge changesets blue
@@ -476,7 +476,7 @@ color_cache = {}
def text_color_author(self, parents, rev, author):
- if self.origtip is not None and int(rev) > self.origtip:
+ if self.origtip is not None and int(rev) >= self.origtip:
return 'darkgreen'
for re, v in self.author_pats:
if (re.search(author)):
|
@@ -357,7 +357,7 @@ self.merge_diff_text.set_editable(False)
self.merge_diff_text.modify_font(self.difffont)
sel = self.filetree.get_selection()
- sel = set_mode(gtk.SELECTION_SINGLE)
+ sel.set_mode(gtk.SELECTION_SINGLE)
self.treeselid = sel.connect('changed', self.merge_sel_changed)
scroller.add(self.merge_diff_text)
diff_frame.add(scroller)
@@ -441,7 +441,7 @@ if self.count_revs() <= 1:
checks += (('deleted', _('deleted')),
('unknown', _('unknown')),
- ('close', _('clean')),
+ ('clean', _('clean')),
('ignored', _('ignored')))
for ctuple in checks:
@@ -576,20 +576,21 @@ (modified, added, removed, deleted, unknown, ignored, clean) = status
self._node1, self._node2, self.modified = n1, n2, modified
- changetypes = (('modified', 'M', modified),
- ('added', 'A', added),
- ('removed', 'R', removed),
- ('deleted', '!', deleted),
- ('unknown', '?', unknown),
- ('ignored', 'I', ignored))
-
- explicit_changetypes = changetypes + (('clean', 'C', clean),)
+ changetypes = (('M', 'modified', modified),
+ ('A', 'added', added),
+ ('R', 'removed', removed),
+ ('!', 'deleted', deleted),
+ ('?', 'unknown', unknown),
+ ('I', 'ignored', ignored),
+ ('C', 'clean', clean))
# List of the currently checked and selected files to pass on to
# the new data
model, tpaths = selection.get_selected_rows()
- recheck = [entry[FM_PATH] for entry in model if entry[FM_CHECKED]]
reselect = [model[path][FM_PATH] for path in tpaths]
+ waschecked = {}
+ for row in model:
+ waschecked[row[FM_PATH]] = row[FM_CHECKED], row[FM_PARTIAL_SELECTED]
# merge-state of files
ms = merge_.mergestate(repo)
@@ -599,16 +600,17 @@ selection.handler_block(self.treeselid)
self.filemodel.clear()
- for opt, char, changes in ([ct for ct in explicit_changetypes
- if self.test_opt(ct[0])] or changetypes):
- for wfile in changes:
+ types = [ct for ct in changetypes if self.opts.get(ct[1])]
+ for stat, _, wfiles in types:
+ for wfile in wfiles:
mst = wfile in ms and ms[wfile].upper() or ""
wfile = util.localpath(wfile)
- model.append([wfile in recheck, char,
- hglib.toutf(wfile), wfile, mst, False])
+ ck, p = waschecked.get(wfile, (stat in 'MAR', False))
+ model.append([ck, stat, hglib.toutf(wfile), wfile, mst, p])
- self.auto_check()
+ self.auto_check() # may check more files
+ # recover selections
firstrow = None
for i, row in enumerate(model):
if row[FM_PATH] in reselect:
@@ -618,10 +620,10 @@ selection.select_iter(row.iter)
selection.handler_unblock(self.treeselid)
- # clear buffer after a merge commit
if len(model):
selection.select_path((firstrow or 0,))
else:
+ # clear diff pane if no files
if self.merging:
self.merge_diff_text.set_buffer(gtk.TextBuffer())
else:
|
@@ -301,7 +301,7 @@ folder = m.group(7) or "."
passwd = ''
scheme = 'ssh'
- elif path.startswith('http'):
+ elif path.startswith('http://') or path.startswith('https://'):
snpaqf = urlparse.urlparse(path)
scheme, netloc, folder, params, query, fragment = snpaqf
host, port, user, passwd = url.netlocsplit(netloc)
@@ -581,9 +581,9 @@
def _add_path(self, *args):
self.new_path('http://')
- self._edit_path()
+ self._edit_path(new=True)
- def _edit_path(self, *args):
+ def _edit_path(self, *args, **opts):
selection = self.pathtree.get_selection()
if not selection.count_selected_rows():
return
@@ -602,6 +602,10 @@ model[path][1] = url.hidepassword(dialog.newpath)
model[path][2] = dialog.newpath
self.dirty_event()
+ elif opts.has_key('new') and opts['new'] == True:
+ del self.pathdata[path]
+ self.refresh_path_list()
+ self.dirty_event()
def _remove_path(self, *args):
selection = self.pathtree.get_selection()
@@ -670,6 +674,7 @@ elif event.button == 1:
selection = self.pathtree.get_selection()
selection.unselect_all()
+ self.refresh_path_list()
def refresh_path_list(self):
"""Update sensitivity of buttons"""
|
@@ -93,12 +93,12 @@ """
merge, addrem, unknown, clean, ignored, deleted, unresolved, resolved \
= GStatus.get_menu_info(self)
- return (merge + (('_shelve', self.shelve_file),),
- addrem + (('_shelve', self.shelve_file),),
- unknown + (('_shelve', self.shelve_file),),
+ return (merge + ((_('_shelve'), self.shelve_file),),
+ addrem + ((_('_shelve'), self.shelve_file),),
+ unknown + ((_('_shelve'), self.shelve_file),),
clean,
ignored,
- deleted + (('_shelve', self.shelve_file),),
+ deleted + ((_('_shelve'), self.shelve_file),),
unresolved,
resolved,
)
|
@@ -225,7 +225,7 @@ if (!bAppendItems)
return NOERROR;
- int sz = sizeof(menuDescList) / sizeof(MenuDescription);
+ const int sz = sizeof(menuDescList) / sizeof(MenuDescription);
bool promoted[ sz ];
memset(&promoted, 0, sizeof(promoted));
|
@@ -15,6 +15,8 @@ // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
+#include <time.h>
+
#include "stdafx.h"
#include "Directory.h"
|
@@ -20,6 +20,11 @@
#include <vector>
+// Visual Studio has UINT32 instead of uint32_t
+#ifndef uint32_t
+#define uint32_t UINT32
+#endif
+
class Winstat;
class Direntry
|
@@ -1,6 +1,6 @@ ; shellext: Declares the module parameters for the DLL.
-LIBRARY TORTOISEHGSHELL
+LIBRARY THGSHELL
DESCRIPTION 'Shell Extensions for TortoiseHg'
EXPORTS
|
@@ -14,7 +14,9 @@ template <class T> T GET_SAFE( T a ) {EnterCriticalSection(&g_critSectionBreak); T z = a; LeaveCriticalSection(&g_critSectionBreak); return z;}
template <class T> void SET_SAFE( T & a , T b) {EnterCriticalSection(&g_critSectionBreak); a = b; LeaveCriticalSection(&g_critSectionBreak);}
+#ifndef ARRAYSIZE
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
+#endif
extern int LocalToWideChar(LPWSTR pWide, LPTSTR pLocal, DWORD dwChars);
extern int WideCharToLocal(LPTSTR pLocal, LPWSTR pWide, DWORD dwChars);
|
Loading...