Changeset 5eb521beaac7…
Parent 03ae3c1a9691…
by
Changes to 24 files · Browse files at 5eb521beaac7 Showing diff from parent 03ae3c1a9691 Diff from another changeset...
@@ -46,6 +46,7 @@ class AboutDialog(gtk.AboutDialog):
def __init__(self):
super(AboutDialog, self).__init__()
+ shlib.set_tortoise_keys(self)
lib_versions = ', '.join([
"Mercurial-%s" % hgversion,
|
@@ -12,12 +12,14 @@ from hgcmd import CmdDialog
from mercurial.i18n import _
import histselect
+import shlib
class BackoutDialog(gtk.Window):
""" Backout effect of a changeset """
def __init__(self, root='', rev=''):
""" Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ shlib.set_tortoise_keys(self)
self.root = root
self.set_title(_('Backout changeset - ') + rev)
|
@@ -19,6 +19,7 @@ """ Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
shlib.set_tortoise_icon(self, 'menuclone.ico')
+ shlib.set_tortoise_keys(self)
# set dialog title
title = 'hg clone'
|
@@ -26,6 +26,7 @@ def __init__(self, branch, close):
gtk.Dialog.__init__(self, parent=None, flags=gtk.DIALOG_MODAL,
buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
+ shlib.set_tortoise_keys(self)
self.connect('response', self.response)
self.set_title(_('Branch Operations'))
self.newbranch = None
|
@@ -257,6 +257,7 @@ def _setup_gtk(self):
self.set_title(self.get_title())
shlib.set_tortoise_icon(self, self.get_icon())
+ shlib.set_tortoise_keys(self)
# Minimum size
minx, miny = self.get_minsize()
|
@@ -17,7 +17,7 @@ from mercurial.i18n import _
from mercurial import hg, ui, mdiff, cmdutil, match, util, commands
from hglib import toutf, fromutf, diffexpand, rootpath, RepoError
-from shlib import set_tortoise_icon
+import shlib
import gtklib
# This function and some key bits below borrowed ruthelessly from
@@ -39,7 +39,8 @@ def __init__(self):
'Initialize the Dialog'
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
- set_tortoise_icon(self, 'detect_rename.ico')
+ shlib.set_tortoise_icon(self, 'detect_rename.ico')
+ shlib.set_tortoise_keys(self)
self.root = rootpath()
self.notify_func = None
|
@@ -10,8 +10,8 @@ import os
import threading
import Queue
+import shlib
from hglib import HgThread, hgcmd_toq, toutf
-from shlib import set_tortoise_icon, get_system_times
from mercurial.i18n import _
class CmdDialog(gtk.Dialog):
@@ -23,7 +23,8 @@ #buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)
)
- set_tortoise_icon(self, 'hg.ico')
+ shlib.set_tortoise_icon(self, 'hg.ico')
+ shlib.set_tortoise_keys(self)
self.cmdline = cmdline
self.returncode = None
self.hgthread = None
@@ -146,7 +147,7 @@ self.pbar.unmap()
else:
# pulse the progress bar every ~100ms
- tm = get_system_times()[4]
+ tm = shlib.get_system_times()[4]
if tm - self.last_pbar_update < 0.100:
return
self.last_pbar_update = tm
|
@@ -16,7 +16,6 @@ from mercurial import hg, ui, extensions
from mercurial.i18n import _
from hglib import RepoError, fromutf, toutf
-from hgcmd import CmdDialog
class EmailDialog(gtk.Window):
""" Send patches or bundles via email """
@@ -25,6 +24,7 @@ gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
shlib.set_tortoise_icon(self, 'hg.ico')
+ shlib.set_tortoise_keys(self)
self.root = root
self.revargs = revargs
@@ -352,6 +352,7 @@ cmdline += ['--desc', tmpfile]
cmdline.extend(self.revargs)
+ from hgcmd import CmdDialog
dlg = CmdDialog(cmdline)
dlg.show_all()
dlg.run()
|
@@ -10,7 +10,7 @@ from mercurial import hg, ui, match
from mercurial.i18n import _
from dialog import *
-from shlib import shell_notify, set_tortoise_icon
+import shlib
import hglib
class HgIgnoreDialog(gtk.Window):
@@ -18,7 +18,8 @@ def __init__(self, fileglob='', *pats):
'Initialize the Dialog'
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
- set_tortoise_icon(self, 'ignore.ico')
+ shlib.set_tortoise_icon(self, 'ignore.ico')
+ shlib.set_tortoise_keys(self)
self.root = hglib.rootpath()
self.set_title(_('Ignore filter for ') + os.path.basename(self.root))
@@ -192,7 +193,7 @@ f.close()
except IOError:
pass
- shell_notify(self.repo.wjoin('.hgignore'))
+ shlib.shell_notify(self.repo.wjoin('.hgignore'))
if self.notify_func: self.notify_func()
def run(_ui, *pats, **opts):
|
@@ -17,12 +17,13 @@ def __init__(self, repos=[]):
""" Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ shlib.set_tortoise_icon(self, 'menucreaterepos.ico')
+ shlib.set_tortoise_keys(self)
# set dialog title and icon
self.cwd = cwd and cwd or os.getcwd()
title = 'hg init - %s' % toutf(self.cwd)
self.set_title(title)
- shlib.set_tortoise_icon(self, 'menucreaterepos.ico')
# preconditioning info
self._dest_path = os.path.abspath(repos and repos[0] or os.getcwd())
|
@@ -17,7 +17,6 @@ import hglib
import gtk
import gobject
-
import os
import pdb
import sys
@@ -25,6 +24,14 @@
nonrepo_commands = 'userconfig clone debugcomplete init about help version'
+if 'copy-clipboard' not in gobject.signal_list_names(gtk.TreeView):
+ gobject.signal_new('copy-clipboard', gtk.TreeView,
+ gobject.SIGNAL_ACTION, gobject.TYPE_NONE, ())
+ gobject.signal_new('thg-exit', gtk.Window,
+ gobject.SIGNAL_ACTION, gobject.TYPE_NONE, ())
+ gobject.signal_new('thg-close', gtk.Window,
+ gobject.SIGNAL_ACTION, gobject.TYPE_NONE, ())
+
def dispatch(args):
"run the command specified in args"
try:
@@ -41,7 +48,7 @@ opts['cmd'] = ' '.join(sys.argv[1:])
opts['error'] = error
print error
- gtkrun(run(u, **opts))
+ run(u, **opts)
def get_list_from_file(filename):
try:
@@ -167,13 +174,21 @@ raise
raise hglib.ParseError(cmd, _("invalid arguments"))
-def gtkrun(mainwin):
- if hasattr(mainwin, 'display'):
- mainwin.display()
- mainwin.show_all()
- mainwin.connect('destroy', gtk.main_quit)
- if 'response' in gobject.signal_list_names(mainwin):
- mainwin.connect('response', gtk.main_quit)
+mainwindow = None
+def thgexit(win):
+ if hasattr(mainwindow, 'should_live'):
+ if mainwindow.should_live(): return
+ mainwindow.destroy()
+
+def gtkrun(win):
+ global mainwindow
+ mainwindow = win
+ if hasattr(win, 'display'):
+ win.display()
+ win.show_all()
+ if 'response' in gobject.signal_list_names(win):
+ win.connect('response', gtk.main_quit)
+ win.connect('destroy', gtk.main_quit)
gtk.gdk.threads_init()
gtk.gdk.threads_enter()
gtk.main()
|
@@ -10,7 +10,7 @@ from dialog import question_dialog, error_dialog
from mercurial import util
from mercurial.i18n import _
-from shlib import set_tortoise_icon
+import shlib
import hglib
class HistoryDialog(gtk.Dialog):
@@ -25,8 +25,9 @@ buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
super(HistoryDialog, self).__init__(flags=gtk.DIALOG_MODAL,
buttons=buttons)
+ shlib.set_tortoise_icon(self, 'menulog.ico')
+ shlib.set_tortoise_keys(self)
- set_tortoise_icon(self, 'menulog.ico')
# set dialog title
title = "hg log "
if root: title += " - %s" % hglib.toutf(root)
|
@@ -11,7 +11,7 @@ from mercurial import cmdutil, util, hg, ui
from mercurial.i18n import _
from hglib import RepoError
-from shlib import shell_notify, set_tortoise_icon
+import shlib
class FilterDialog(gtk.Dialog):
""" Dialog for creating log filters """
@@ -20,8 +20,9 @@ buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
super(FilterDialog, self).__init__(flags=gtk.DIALOG_MODAL,
buttons=buttons)
+ shlib.set_tortoise_icon(self, 'menucheckout.ico')
+ shlib.set_tortoise_keys(self)
- set_tortoise_icon(self, 'menucheckout.ico')
self.set_title("hg log filter - %s" % os.path.basename(root))
self.filterfunc = filterfunc
|
@@ -11,7 +11,7 @@ from mercurial.i18n import _
from mercurial import util, hg, ui
from hgcmd import CmdDialog
-from shlib import set_tortoise_icon, shell_notify
+import shlib
import histselect
import hglib
@@ -20,8 +20,9 @@ def __init__(self, root='', rev=''):
""" Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ shlib.set_tortoise_icon(self, 'menumerge.ico')
+ shlib.set_tortoise_keys(self)
- set_tortoise_icon(self, 'menumerge.ico')
# set dialog title
title = "hg merge"
if root: title += " - %s" % root
@@ -205,7 +206,7 @@ dlg.hide()
if self.notify_func:
self.notify_func(self.notify_args)
- shell_notify([self.root])
+ shlib.shell_notify([self.root])
self._refresh()
def _do_merge(self):
@@ -229,7 +230,7 @@ dlg = CmdDialog(cmdline)
dlg.run()
dlg.hide()
- shell_notify([self.root])
+ shlib.shell_notify([self.root])
if self.notify_func:
self.notify_func(self.notify_args)
self._refresh()
|
@@ -15,15 +15,16 @@ from mercurial import hg, ui, util
from dialog import error_dialog, question_dialog
from hglib import HgThread, toutf, RepoError, rootpath
-from shlib import set_tortoise_icon, shell_notify
+import shlib
import gtklib
class RecoveryDialog(gtk.Window):
def __init__(self):
""" Initialize the Dialog. """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ shlib.set_tortoise_icon(self, 'general.ico')
+ shlib.set_tortoise_keys(self)
- set_tortoise_icon(self, 'general.ico')
self.root = rootpath()
self.selected_path = None
self.hgthread = None
@@ -127,7 +128,7 @@ def _notify(self, ret, *args):
import time
time.sleep(0.5) # give fs some time to pick up changes
- shell_notify([self.root])
+ shlib.shell_notify([self.root])
def _rollback_clicked(self, toolbutton, data=None):
response = question_dialog(self, _('Rollback repository'),
|
@@ -29,9 +29,8 @@ def __init__(self, webdir_conf):
""" Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-
- set_tortoise_icon(self, 'proxy.ico')
- self.connect('delete-event', self._delete)
+ shlib.set_tortoise_icon(self, 'proxy.ico')
+ shlib.set_tortoise_keys(self)
# Pipe stderr, stdout to self.write
self._queue = Queue.Queue()
@@ -135,11 +134,11 @@ tbutton.connect('clicked', handler, userdata)
return tbutton
- def _delete(self, widget, event):
+ def should_live(self, widget, event):
if self._server_stopped():
- gtk.main_quit()
+ return True
else:
- return True
+ return False
def _server_stopped(self):
'''
|
@@ -130,13 +130,22 @@ def set_tortoise_icon(window, thgicon):
ico = get_tortoise_icon(thgicon)
if ico: window.set_icon_from_file(ico)
- # Global keybindings for TortoiseHg
- window.connect('key-press-event', window_key_press)
-def window_key_press(window, event):
- if event.keyval == ord('q') and (event.state & gtk.gdk.CONTROL_MASK):
- devent = gtk.gdk.Event(gtk.gdk.DELETE)
- window.emit('delete_event', devent)
+def set_tortoise_keys(window):
+ accelgroup = gtk.AccelGroup()
+ window.add_accel_group(accelgroup)
+ key, modifier = gtk.accelerator_parse('<Control>w')
+ window.add_accelerator('thg-close', accelgroup, key, modifier, gtk.ACCEL_VISIBLE)
+ window.connect('thg-close', thgclose)
+ key, modifier = gtk.accelerator_parse('<Control>q')
+ window.add_accelerator('thg-exit', accelgroup, key, modifier, gtk.ACCEL_VISIBLE)
+ from hgtk import thgexit
+ window.connect('thg-exit', thgexit)
+
+def thgclose(window):
+ if hasattr(window, 'should_live'):
+ if window.should_live(): return
+ window.destroy()
def get_tortoise_icon(thgicon):
'''Find a tortoise icon, apply to PyGtk window'''
|
@@ -329,12 +329,7 @@ self.diff_model = gtk.ListStore(bool, str, str, str, bool, int,
pango.FontDescription)
- # Create a new signal for our purposes
newsigname = 'copy-clipboard'
- if newsigname not in gobject.signal_list_names(gtk.TreeView):
- gobject.signal_new(newsigname, gtk.TreeView,
- gobject.SIGNAL_ACTION, gobject.TYPE_NONE, ())
-
self.diff_tree = gtk.TreeView(self.diff_model)
self.diff_tree.connect(newsigname, self.copy_to_clipboard)
|
@@ -23,8 +23,9 @@ def __init__(self, repos=[], pushmode=False):
""" Initialize the Dialog. """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ shlib.set_tortoise_icon(self, 'menusynch.ico')
+ shlib.set_tortoise_keys(self)
- shlib.set_tortoise_icon(self, 'menusynch.ico')
self.root = rootpath()
self.selected_path = None
self.hgthread = None
|
@@ -11,12 +11,14 @@ from mercurial.i18n import _
from mercurial.node import short, nullid
from hglib import RepoError
+import shlib
class TagAddDialog(gtk.Window):
""" Dialog to add tag to Mercurial repo """
def __init__(self, root='', tag='', rev=''):
""" Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+ shlib.set_tortoise_keys(self)
# set dialog title
title = 'hg tag '
|
@@ -198,6 +198,7 @@ def __init__(self, path, alias):
gtk.Dialog.__init__(self, parent=None, flags=gtk.DIALOG_MODAL,
buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
+ shlib.set_tortoise_keys(self)
self.connect('response', self.response)
self.set_title(_('Edit remote repository path'))
self.newpath, self.newalias = None, None
@@ -341,6 +342,7 @@ """ Initialize the Dialog. """
gtk.Dialog.__init__(self, parent=None, flags=0,
buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
+ shlib.set_tortoise_keys(self)
self.ui = ui.ui()
try:
@@ -353,8 +355,7 @@ self.response(gtk.RESPONSE_CANCEL)
# Catch close events
- self.connect('delete-event', self._delete)
- self.connect('response', self._response)
+ self.connect('response', self.should_live)
if configrepo:
self.ui = repo.ui
@@ -424,14 +425,13 @@ self._btn_apply.set_sensitive(False)
self.dirty = False
- def _delete(self, widget, event):
- return True
-
- def _response(self, widget, response_id):
+ def should_live(self, *args):
if self.dirty:
if question_dialog(self, _('Quit without saving?'),
_('Yes to abandon changes, No to continue')) != gtk.RESPONSE_YES:
- widget.emit_stop_by_name('response')
+ self.emit_stop_by_name('response')
+ return True
+ return False
def focus_field(self, focusfield):
'''Set page and focus to requested datum'''
|
@@ -11,15 +11,16 @@ from mercurial import util, hg, ui
from mercurial.node import *
from mercurial.i18n import _
-from shlib import shell_notify, set_tortoise_icon
from hglib import rootpath, toutf, RepoError
+import shlib
class UpdateDialog(gtk.Window):
""" Dialog to update Mercurial repo """
def __init__(self, rev=None):
""" Initialize the Dialog """
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
- set_tortoise_icon(self, 'menucheckout.ico')
+ shlib.set_tortoise_icon(self, 'menucheckout.ico')
+ shlib.set_tortoise_keys(self)
self.root = rootpath()
self.rev = rev
self.notify_func = None
@@ -177,7 +178,7 @@ if self.notify_func:
self.notify_func(self.notify_args)
self._refresh()
- shell_notify([self.root])
+ shlib.shell_notify([self.root])
def run(ui, *pats, **opts):
return UpdateDialog()
|
@@ -50,8 +50,10 @@ def __init__(self, canonpats, opts):
'Initialize the Dialog'
gtk.Dialog.__init__(self)
+ shlib.set_tortoise_icon(self, 'menushowchanged.ico')
+ shlib.set_tortoise_keys(self)
+
self.set_title('Visual Diffs')
- shlib.set_tortoise_icon(self, 'menushowchanged.ico')
self.set_default_size(400, 150)
lbl = gtk.Label(_('Temporary files are removed when this dialog'
|
@@ -51,8 +51,10 @@ for l in sys.stderr.readlines():
if l.startswith('Traceback'):
from hggtk.bugreport import run
+ from mercurial import ui
+ from hggtk.hgtk import gtkrun
sys.stderr.seek(0)
error = 'Recoverable runtime error (stderr):\n' + sys.stderr.read()
- run(**{'cmd':' '.join(sys.argv[1:]), 'error':error})
+ gtkrun(run(ui.ui(), **{'cmd':' '.join(sys.argv[1:]), 'error':error}))
break
sys.exit(ret)
|
Loading...