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:
|
|
|
@@ -31,59 +31,60 @@ self.hgthread = None
self.fromlog = fromlog
self.notify_func = None
+ self.last_drop_time = None
# persistent app data
self._settings = settings.Settings('synch')
self.set_default_size(655, 552)
- self._paths = self._get_paths()
- self.origchangecount = len(self.repo.changelog)
+ self.paths = self.get_paths()
+ self.origchangecount = len(self.repo)
name = self.repo.ui.config('web', 'name') or os.path.basename(self.root)
self.set_title(_('TortoiseHg Synchronize - ') + name)
- self.connect('delete-event', self._delete)
+ self.connect('delete-event', self.delete)
# toolbar
self.tbar = gtk.Toolbar()
self.tips = gtk.Tooltips()
- self._stop_button = self._toolbutton(gtk.STOCK_STOP,
- _('Stop'), self._stop_clicked, tip=_('Stop the hg operation'))
- self._stop_button.set_sensitive(False)
+ self.stop_button = self.toolbutton(gtk.STOCK_STOP,
+ _('Stop'), self.stop_clicked, tip=_('Stop the hg operation'))
+ self.stop_button.set_sensitive(False)
tbuttons = [
- self._toolbutton(gtk.STOCK_GO_DOWN,
+ self.toolbutton(gtk.STOCK_GO_DOWN,
_('Incoming'),
- self._incoming_clicked,
+ self.incoming_clicked,
tip=_('Display changes that can be pulled'
' from selected repository')),
- self._toolbutton(gtk.STOCK_GOTO_BOTTOM,
+ self.toolbutton(gtk.STOCK_GOTO_BOTTOM,
_(' Pull '),
- self._pull_clicked,
+ self.pull_clicked,
tip=_('Pull changes from selected'
' repository')),
gtk.SeparatorToolItem(),
- self._toolbutton(gtk.STOCK_GO_UP,
+ self.toolbutton(gtk.STOCK_GO_UP,
_('Outgoing'),
- self._outgoing_clicked,
- tip=_('Display local changes that will be pushed'
- ' to selected repository')),
- self._toolbutton(gtk.STOCK_GOTO_TOP,
+ self.outgoing_clicked,
+ tip=_('Display local changes that will be '
+ ' pushed to selected repository')),
+ self.toolbutton(gtk.STOCK_GOTO_TOP,
_('Push'),
- self._push_clicked,
+ self.push_clicked,
tip=_('Push local changes to selected'
' repository')),
- self._toolbutton(gtk.STOCK_GOTO_LAST,
+ self.toolbutton(gtk.STOCK_GOTO_LAST,
_('Email'),
- self._email_clicked,
+ self.email_clicked,
tip=_('Email local outgoing changes to'
' one or more recipients')),
gtk.SeparatorToolItem(),
- self._stop_button,
+ self.stop_button,
gtk.SeparatorToolItem(),
- self._toolbutton(gtk.STOCK_PREFERENCES,
+ self.toolbutton(gtk.STOCK_PREFERENCES,
_('Configure'),
- self._conf_clicked,
+ self.conf_clicked,
tip=_('Configure peer repository paths')),
gtk.SeparatorToolItem(),
]
@@ -97,22 +98,22 @@ targethbox = gtk.HBox()
lbl = gtk.Button(_('Repo:'))
lbl.unset_flags(gtk.CAN_FOCUS)
- lbl.connect('clicked', self._btn_remotepath_clicked)
+ lbl.connect('clicked', self.btn_remotepath_clicked)
targethbox.pack_start(lbl, False, False)
lbl = gtk.Button(_('Bundle:'))
lbl.unset_flags(gtk.CAN_FOCUS)
- lbl.connect('clicked', self._btn_bundlepath_clicked)
+ lbl.connect('clicked', self.btn_bundlepath_clicked)
targethbox.pack_start(lbl, False, False)
# revisions combo box
self.pathlist = gtk.ListStore(str, str)
- self._pathbox = gtk.ComboBoxEntry(self.pathlist, 0)
- self._pathtext = self._pathbox.get_child()
+ self.pathbox = gtk.ComboBoxEntry(self.pathlist, 0)
+ self.pathtext = self.pathbox.get_child()
cell = gtk.CellRendererText()
- self._pathbox.pack_end(cell, False)
- self._pathbox.add_attribute(cell, 'text', 1)
- targethbox.pack_start(self._pathbox, True, True)
+ self.pathbox.pack_end(cell, False)
+ self.pathbox.add_attribute(cell, 'text', 1)
+ targethbox.pack_start(self.pathbox, True, True)
self.fill_path_combo()
defrow = None
@@ -126,11 +127,11 @@ defpushrow = i
if repos:
- self._pathtext.set_text(hglib.toutf(repos[0]))
+ self.pathtext.set_text(hglib.toutf(repos[0]))
elif defpushrow is not None and pushmode:
- self._pathbox.set_active(defpushrow)
+ self.pathbox.set_active(defpushrow)
elif defrow is not None:
- self._pathbox.set_active(defrow)
+ self.pathbox.set_active(defrow)
# support dropping of repos or bundle files
self.drag_dest_set(gtk.DEST_DEFAULT_ALL,
@@ -138,11 +139,11 @@ self.connect('drag_data_received', self._drag_receive)
# create checkbox to disable proxy
- self._use_proxy = gtk.CheckButton(_('use proxy server'))
+ self.use_proxy = gtk.CheckButton(_('use proxy server'))
if ui.ui().config('http_proxy', 'host', ''):
- self._use_proxy.set_active(True)
+ self.use_proxy.set_active(True)
else:
- self._use_proxy.set_sensitive(False)
+ self.use_proxy.set_sensitive(False)
frame = gtk.Frame(_('Post pull operation'))
ppvbox = gtk.VBox()
@@ -159,13 +160,13 @@
self.expander = expander = gtk.Expander(_('Advanced Options'))
expander.set_expanded(False)
- expander.connect_after('activate', self._expanded)
+ expander.connect_after('activate', self.expanded)
hbox = gtk.HBox()
expander.add(hbox)
leftvbox = gtk.VBox()
leftvbox.pack_start(frame, False, False, 2)
- leftvbox.pack_start(self._use_proxy, False, False, 3)
+ leftvbox.pack_start(self.use_proxy, False, False, 3)
rightvbox = gtk.VBox()
rightvbox.pack_start(targethbox, False, False, 2)
@@ -177,15 +178,15 @@ vbox.pack_start(tophbox, False, False, 2)
revvbox = gtk.VBox()
- self._reventry = gtk.Entry()
- self._cmdentry = gtk.Entry()
- self._force = gtk.CheckButton(_('Force pull or push'))
- self.tips.set_tip(self._force, _('Run even when remote repository'
+ self.reventry = gtk.Entry()
+ self.cmdentry = gtk.Entry()
+ self.force = gtk.CheckButton(_('Force pull or push'))
+ self.tips.set_tip(self.force, _('Run even when remote repository'
' is unrelated.'))
revhbox = gtk.HBox()
revhbox.pack_start(gtk.Label(_('Target Revision:')), False, False, 2)
- revhbox.pack_start(self._reventry, True, True, 2)
+ revhbox.pack_start(self.reventry, True, True, 2)
reveventbox = gtk.EventBox()
reveventbox.add(revhbox)
self.tips.set_tip(reveventbox, _('A specific revision up to which you'
@@ -193,13 +194,13 @@
cmdhbox = gtk.HBox()
cmdhbox.pack_start(gtk.Label(_('Remote Command:')), False, False, 2)
- cmdhbox.pack_start(self._cmdentry, True, True, 2)
+ cmdhbox.pack_start(self.cmdentry, True, True, 2)
cmdeventbox = gtk.EventBox()
cmdeventbox.add(cmdhbox)
self.tips.set_tip(cmdeventbox, _('Name of hg executable on remote'
' machine.'))
- revvbox.pack_start(self._force, False, False, 8)
+ revvbox.pack_start(self.force, False, False, 8)
revvbox.pack_start(reveventbox, True, True, 2)
revvbox.pack_start(cmdeventbox, True, True, 2)
hbox.pack_start(revvbox, True, True, 4)
@@ -207,14 +208,14 @@ frame = gtk.Frame(_('Incoming/Outgoing'))
hbox.pack_start(frame, False, False, 2)
- self._showpatch = gtk.CheckButton(_('Show Patches'))
- self._newestfirst = gtk.CheckButton(_('Show Newest First'))
- self._nomerge = gtk.CheckButton(_('Show No Merges'))
+ self.showpatch = gtk.CheckButton(_('Show Patches'))
+ self.newestfirst = gtk.CheckButton(_('Show Newest First'))
+ self.nomerge = gtk.CheckButton(_('Show No Merges'))
iovbox = gtk.VBox()
- iovbox.pack_start(self._showpatch, False, False, 2)
- iovbox.pack_start(self._newestfirst, False, False, 2)
- iovbox.pack_start(self._nomerge, False, False, 2)
+ iovbox.pack_start(self.showpatch, False, False, 2)
+ iovbox.pack_start(self.newestfirst, False, False, 2)
+ iovbox.pack_start(self.nomerge, False, False, 2)
frame.add(iovbox)
# hg output window
@@ -226,7 +227,7 @@ self.textview.modify_font(pango.FontDescription('Monospace'))
scrolledwindow.add(self.textview)
self.textview.set_editable(False)
- self.textview.connect('populate-popup', self._add_to_popup)
+ self.textview.connect('populate-popup', self.add_to_popup)
self.textbuffer = self.textview.get_buffer()
self.textbuffer.create_tag('error', weight=pango.WEIGHT_HEAVY,
foreground='#900000')
@@ -243,11 +244,10 @@
self.stbar = gtklib.StatusBar()
vbox.pack_start(self.stbar, False, False, 2)
- self.connect('map', self.update_buttons)
- self._last_drop_time = None
self.load_settings()
self.update_pull_setting()
+ gobject.idle_add(self.update_buttons)
def update_pull_setting(self):
ppull = self.repo.ui.config('tortoisehg', 'postpull', 'None')
@@ -261,24 +261,24 @@
def fill_path_combo(self):
self.pathlist.clear()
- for alias, path in self._paths:
+ for alias, path in self.paths:
path = url.hidepassword(path)
self.pathlist.append([hglib.toutf(path), hglib.toutf(alias)])
def _drag_receive(self, widget, context, x, y, selection, targetType, time):
- if time != self._last_drop_time:
+ if time != self.last_drop_time:
files = selection.get_uris()
gobject.idle_add(self._set_path, files[0])
- self._last_drop_time = time
+ self.last_drop_time = time
def _set_path(self, uri):
if not uri.startswith('file://'):
return
path = urllib.unquote(uri[7:])
if paths.find_root(path) == path:
- self._pathtext.set_text(hglib.toutf(path))
+ self.pathtext.set_text(hglib.toutf(path))
elif not os.path.isdir(path) and path.endswith('.hg'):
- self._pathtext.set_text(hglib.toutf(path))
+ self.pathtext.set_text(hglib.toutf(path))
def update_buttons(self, *args):
self.buttonhbox.hide()
@@ -287,7 +287,7 @@ repo = hg.repository(ui.ui(), path=self.root)
except hglib.RepoError:
return
- tip = len(repo.changelog)
+ tip = len(repo)
if self.origchangecount == tip or self.fromlog:
self.viewpulled.hide()
else:
@@ -319,7 +319,7 @@ self.stbar.begin()
self.stbar.set_status_text('hg ' + ' '.join(cmdline))
- def _get_paths(self, sort="value"):
+ def get_paths(self, sort="value"):
""" retrieve symbolic paths """
try:
self.ui = ui.ui()
@@ -337,7 +337,7 @@ except hglib.RepoError:
return None
- def _btn_remotepath_clicked(self, button):
+ def btn_remotepath_clicked(self, button):
""" select source folder to clone """
dlg = gtk.FileChooserDialog(title=_('Select Repository'),
action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
@@ -347,10 +347,10 @@ dlg.set_current_folder(self.root)
response = dlg.run()
if response == gtk.RESPONSE_OK:
- self._pathtext.set_text(dlg.get_filename())
+ self.pathtext.set_text(dlg.get_filename())
dlg.destroy()
- def _btn_bundlepath_clicked(self, button):
+ def btn_bundlepath_clicked(self, button):
""" select bundle to read from """
dlg = gtk.FileChooserDialog(title=_('Select Bundle'),
action=gtk.FILE_CHOOSER_ACTION_OPEN,
@@ -368,11 +368,11 @@ dlg.add_filter(filefilter)
response = dlg.run()
if response == gtk.RESPONSE_OK:
- self._pathtext.set_text(dlg.get_filename())
+ self.pathtext.set_text(dlg.get_filename())
dlg.destroy()
def should_live(self):
- if self._cmd_running():
+ if self.cmd_running():
dialog.error_dialog(self, _('Cannot close now'),
_('command is running'))
return True
@@ -381,11 +381,11 @@ self._settings.write()
return False
- def _delete(self, widget, event):
+ def delete(self, widget, event):
if not self.should_live():
self.destroy()
- def _toolbutton(self, stock, label, handler,
+ def toolbutton(self, stock, label, handler,
menu=None, userdata=None, tip=None):
if menu:
tbutton = gtk.MenuToolButton(stock)
@@ -399,27 +399,27 @@ tbutton.connect('clicked', handler, userdata)
return tbutton
- def _get_advanced_options(self):
+ def get_advanced_options(self):
opts = {}
- if self._showpatch.get_active():
+ if self.showpatch.get_active():
opts['patch'] = ['--patch']
- if self._nomerge.get_active():
+ if self.nomerge.get_active():
opts['no-merges'] = ['--no-merges']
- if self._force.get_active():
+ if self.force.get_active():
opts['force'] = ['--force']
- if self._newestfirst.get_active():
+ if self.newestfirst.get_active():
opts['newest-first'] = ['--newest-first']
- remotecmd = self._cmdentry.get_text().strip()
+ remotecmd = self.cmdentry.get_text().strip()
if remotecmd != "":
opts['remotecmd'] = ['--remotecmd', remotecmd]
- target_rev = self._reventry.get_text().strip()
+ target_rev = self.reventry.get_text().strip()
if target_rev != "":
opts['rev'] = ['--rev', target_rev]
return opts
- def _pull_clicked(self, toolbutton, data=None):
- aopts = self._get_advanced_options()
+ def pull_clicked(self, toolbutton, data=None):
+ aopts = self.get_advanced_options()
if self.fetchradio.get_active():
cmd = ['fetch', '--message', 'merge']
# load the fetch extensions explicitly
@@ -435,19 +435,19 @@ # load the rebase extensions explicitly
extensions.load(self.ui, 'rebase', None)
cmd += aopts.get('rev', [])
- self._exec_cmd(cmd)
+ self.exec_cmd(cmd)
- def _push_clicked(self, toolbutton, data=None):
- aopts = self._get_advanced_options()
+ def push_clicked(self, toolbutton, data=None):
+ aopts = self.get_advanced_options()
cmd = ['push']
cmd += aopts.get('rev', [])
cmd += aopts.get('force', [])
cmd += aopts.get('remotecmd', [])
- self._exec_cmd(cmd)
+ self.exec_cmd(cmd)
- def _conf_clicked(self, toolbutton, data=None):
- newpath = hglib.fromutf(self._pathtext.get_text()).strip()
- for alias, path in self._paths:
+ def conf_clicked(self, toolbutton, data=None):
+ newpath = hglib.fromutf(self.pathtext.get_text()).strip()
+ for alias, path in self.paths:
if path == newpath:
newpath = None
break
@@ -459,20 +459,20 @@ dlg.focus_field('tortoisehg.postpull')
dlg.run()
dlg.hide()
- self._paths = self._get_paths()
+ self.paths = self.get_paths()
self.fill_path_combo()
self.update_pull_setting()
- def _email_clicked(self, toolbutton, data=None):
+ def email_clicked(self, toolbutton, data=None):
opts = []
- path = hglib.fromutf(self._pathtext.get_text()).strip()
- rev = self._get_advanced_options().get('rev')
+ path = hglib.fromutf(self.pathtext.get_text()).strip()
+ rev = self.get_advanced_options().get('rev')
if path:
opts.extend(['--outgoing', path])
elif not rev:
dialog.info_dialog(self, _('No repository selected'),
_('Select a peer repository to compare with'))
- self._pathbox.grab_focus()
+ self.pathbox.grab_focus()
return
if rev:
opts.extend(rev)
@@ -482,8 +482,8 @@ dlg.present()
dlg.set_transient_for(None)
- def _incoming_clicked(self, toolbutton, data=None):
- aopts = self._get_advanced_options()
+ def incoming_clicked(self, toolbutton, data=None):
+ aopts = self.get_advanced_options()
cmd = ['incoming']
cmd += aopts.get('rev', [])
cmd += aopts.get('patch', [])
@@ -491,10 +491,10 @@ cmd += aopts.get('force', [])
cmd += aopts.get('newest-first', [])
cmd += aopts.get('remotecmd', [])
- self._exec_cmd(cmd)
+ self.exec_cmd(cmd)
- def _outgoing_clicked(self, toolbutton, data=None):
- aopts = self._get_advanced_options()
+ def outgoing_clicked(self, toolbutton, data=None):
+ aopts = self.get_advanced_options()
cmd = ['outgoing']
cmd += aopts.get('rev', [])
cmd += aopts.get('patch', [])
@@ -502,26 +502,26 @@ cmd += aopts.get('force', [])
cmd += aopts.get('newest-first', [])
cmd += aopts.get('remotecmd', [])
- self._exec_cmd(cmd)
+ self.exec_cmd(cmd)
- def _stop_clicked(self, toolbutton, data=None):
- if self._cmd_running():
+ def stop_clicked(self, toolbutton, data=None):
+ if self.cmd_running():
self.hgthread.terminate()
- self._stop_button.set_sensitive(False)
+ self.stop_button.set_sensitive(False)
- def _exec_cmd(self, cmd):
- if self._cmd_running():
+ def exec_cmd(self, cmd):
+ if self.cmd_running():
dialog.error_dialog(self, _('Cannot run now'),
_('Please try again after the previous command is completed'))
return
- self._stop_button.set_sensitive(True)
+ self.stop_button.set_sensitive(True)
proxy_host = ui.ui().config('http_proxy', 'host', '')
- use_proxy = self._use_proxy.get_active()
- text_entry = self._pathbox.get_child()
+ use_proxy = self.use_proxy.get_active()
+ text_entry = self.pathbox.get_child()
remote_path = hglib.fromutf(text_entry.get_text()).strip()
- for alias, path in self._paths:
+ for alias, path in self.paths:
if remote_path == alias:
remote_path = path
elif remote_path == url.hidepassword(path):
@@ -543,15 +543,15 @@ self.stbar.begin()
self.stbar.set_status_text('hg ' + ' '.join(cmd + [remote_path]))
- self._add_src_to_recent(remote_path)
+ self.add_src_to_recent(remote_path)
- def _cmd_running(self):
+ def cmd_running(self):
if self.hgthread and self.hgthread.isAlive():
return True
else:
return False
- def _add_src_to_recent(self, src):
+ def add_src_to_recent(self, src):
if os.path.exists(src):
src = os.path.abspath(src)
@@ -594,13 +594,13 @@ except Queue.Empty:
pass
- if self._cmd_running():
+ if self.cmd_running():
return True
else:
# Update button states
self.update_buttons()
self.stbar.end()
- self._stop_button.set_sensitive(False)
+ self.stop_button.set_sensitive(False)
if self.hgthread.return_code() is None:
self.write_err(_('[command interrupted]'))
if self.notify_func:
@@ -609,14 +609,14 @@
AdvancedDefaults = {
'expander.expanded': False,
- '_reventry.text': '',
- '_cmdentry.text': '',
- '_force.active': False,
- '_showpatch.active': False,
- '_newestfirst.active': False,
- '_nomerge.active': False,}
+ 'reventry.text': '',
+ 'cmdentry.text': '',
+ 'force.active': False,
+ 'showpatch.active': False,
+ 'newestfirst.active': False,
+ 'nomerge.active': False,}
- def _expanded(self, expander):
+ def expanded(self, expander):
if not expander.get_expanded():
self.load_settings(SynchDialog.AdvancedDefaults.get)
@@ -634,9 +634,9 @@ value = getattr(getattr(self, member), 'get_%s'%attr)()
set_value(key, value)
- 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 == '----':
@@ -648,7 +648,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:
|
@@ -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...