by
Changes to 18 files · Browse files at 06d05ce40d38 Showing diff from parent e617ed8ab664 1ffc12ec41cf Diff from another changeset...
@@ -174,7 +174,10 @@ self._rev = ctx.rev()
self.clear()
self.annfile = wfile
- self.setText(hglib.tounicode(fctx.data()))
+ if util.binary(fctx.data()):
+ self.setText(_('File is binary.\n'))
+ else:
+ self.setText(hglib.tounicode(fctx.data()))
if line:
self.setCursorPosition(int(line) - 1, 0)
self._updatelexer(fctx)
@@ -187,6 +190,8 @@ return
ctx = self.repo[self._rev]
fctx = ctx[hglib.fromunicode(self.annfile)]
+ if util.binary(fctx.data()):
+ return
self._thread.abort()
self._thread.start(fctx)
|
@@ -223,3 +223,8 @@ '--rename', namelocal, newnamelocal]
self.cmd.run(cmdline)
self.finishfunc = finished
+
+ def reject(self):
+ # prevent signals from reaching deleted objects
+ self.repo.repositoryChanged.disconnect(self.refresh)
+ super(BookmarkDialog, self).reject()
|
@@ -140,7 +140,7 @@
self.splitter = QSplitter(Qt.Vertical)
self.setCentralWidget(self.splitter)
- self.repoview = HgRepoView(self.repo, self.splitter)
+ self.repoview = HgRepoView(self.repo, 'fileLogDialog', self.splitter)
self.contentframe = QFrame(self.splitter)
vbox = QVBoxLayout()
@@ -277,8 +277,10 @@ self.splitter = QSplitter(Qt.Vertical)
self.setCentralWidget(self.splitter)
self.horizontalLayout = QHBoxLayout()
- self.tableView_revisions_left = HgRepoView(self.repo, self)
- self.tableView_revisions_right = HgRepoView(self.repo, self)
+ self.tableView_revisions_left = HgRepoView(self.repo,
+ 'fileDiffDialogLeft', self)
+ self.tableView_revisions_right = HgRepoView(self.repo,
+ 'fileDiffDialogRight', self)
self.horizontalLayout.addWidget(self.tableView_revisions_left)
self.horizontalLayout.addWidget(self.tableView_revisions_right)
self.frame = QFrame()
|
@@ -629,7 +629,7 @@ self.flabel += _(' <i>(was added, now missing)</i>')
return
- if status in ('I', '?'):
+ if status in ('I', '?', 'C'):
try:
data = open(repo.wjoin(wfile), 'r').read()
if '\0' in data:
|
@@ -703,8 +703,9 @@ self._refreshFileListWidget()
except Exception, e:
self.showMessage.emit(hglib.tounicode(str(e)))
- import traceback
- traceback.print_exc()
+ if 'THGDEBUG' in os.environ:
+ import traceback
+ traceback.print_exc()
finally:
self.refreshing = False
if self.reselectFileItem:
|
@@ -30,8 +30,9 @@
self.setLayout(QVBoxLayout())
- lbl = QLabel(_('<b>Remove patches from queue?<ul><li>%s</ul></b>') %
- '<li>'.join(patches))
+ msg = _('Remove patches from queue?')
+ patchesu = u'<li>'.join([hglib.tounicode(p) for p in patches])
+ lbl = QLabel(u'<b>%s<ul><li>%s</ul></b>' % (msg, patchesu))
self.layout().addWidget(lbl)
self.keepchk = QCheckBox(_('Keep patch files'))
|
@@ -13,13 +13,21 @@ import tempfile
import re
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
from mercurial import extensions
from tortoisehg.util import hglib, paths, wconfig
from hgext.color import _styles
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
+if PYQT_VERSION_STR.split('.') < ['4', '7'] or \
+ QT_VERSION_STR.split('.') < ['4', '6']:
+ sys.stderr.write('TortoiseHg requires Qt 4.6 and PyQt 4.7\n')
+ sys.stderr.write('You have Qt %s and PyQt %s\n' %
+ (QT_VERSION_STR, PYQT_VERSION_STR))
+ sys.exit()
+
tmproot = None
def gettempdir():
global tmproot
@@ -65,7 +73,7 @@ except EnvironmentError:
pass
else:
- qtlib.WarningMsgBox(_('Unable to create a config file'),
+ WarningMsgBox(_('Unable to create a config file'),
_('Insufficient access rights.'), parent=parent)
return None, {}
|
@@ -21,10 +21,10 @@ 'revert': (_('Checkmark files to revert'), _('Revert')),
'remove': (_('Checkmark files to remove'), _('Remove')),}
-ICONS = { 'add': 'add',
- 'forget': 'remove',
+ICONS = { 'add': 'fileadd',
+ 'forget': 'hg-remove',
'revert': 'hg-revert',
- 'remove': 'remove',}
+ 'remove': 'hg-remove',}
class QuickOpDialog(QDialog):
""" Dialog for performing quick dirstate operations """
|
|
@@ -32,10 +32,12 @@ menuRequested = pyqtSignal(QPoint, object)
showMessage = pyqtSignal(unicode)
- def __init__(self, repo, parent=None):
+ def __init__(self, repo, cfgname, parent=None):
QTableView.__init__(self, parent)
self.repo = repo
self.current_rev = -1
+ self.resized = False
+ self.cfgname = cfgname
self.setShowGrid(False)
vh = self.verticalHeader()
@@ -101,35 +103,34 @@ self.setItemDelegateForColumn(c, self.standardDelegate)
def resizeColumns(self, *args):
- # resize columns the smart way: the column holding Description
- # is resized according to the total widget size.
if not self.model():
return
hh = self.horizontalHeader()
hh.setStretchLastSection(False)
self._resizeColumns()
hh.setStretchLastSection(True)
+ self.resized = True
def _resizeColumns(self):
# _resizeColumns misbehaves if called with last section streched
for c, w in enumerate(self._columnWidthHints()):
self.setColumnWidth(c, w)
- def sizeHintForColumn(self, column):
- return self._columnWidthHints()[column]
-
def _columnWidthHints(self):
"""Return list of recommended widths of all columns"""
model = self.model()
- col1_width = self.viewport().width()
fontm = QFontMetrics(self.font())
- tot_stretch = 0.0
widths = [-1 for _i in xrange(model.columnCount(QModelIndex()))]
+
+ key = '%s/column_widths/%s' % (self.cfgname, str(self.repo[0]))
+ col_widths = [int(w) for w in QSettings().value(key).toStringList()]
+
for c in range(model.columnCount(QModelIndex())):
- if model._columns[c] in model._stretchs:
- tot_stretch += model._stretchs[model._columns[c]]
- continue
- w = model.maxWidthValueForColumn(c)
+ if c < len(col_widths) and col_widths[c] > 0:
+ w = col_widths[c]
+ else:
+ w = model.maxWidthValueForColumn(c)
+
if isinstance(w, int):
widths[c] = w
elif w is not None:
@@ -138,12 +139,7 @@ else:
w = super(HgRepoView, self).sizeHintForColumn(c)
widths[c] = w
- col1_width -= widths[c]
- col1_width = max(col1_width, 100)
- for c in range(model.columnCount(QModelIndex())):
- if model._columns[c] in model._stretchs:
- w = model._stretchs[model._columns[c]] / tot_stretch
- widths[c] = col1_width * w
+
return widths
def revFromindex(self, index):
@@ -237,3 +233,43 @@ idx = self.model().indexFromRev(rev)
if idx is not None:
self.setCurrentIndex(idx)
+
+ def saveSettings(self, s = None):
+ if not s:
+ s = QSettings()
+
+ col_widths = []
+ for c in range(self.model().columnCount(QModelIndex())):
+ col_widths.append(self.columnWidth(c))
+
+ key = '%s/column_widths/%s' % (self.cfgname, str(self.repo[0]))
+ s.setValue(key, col_widths)
+ s.setValue('%s/widget_width' % self.cfgname, self.viewport().width())
+
+ def resizeEvent(self, e):
+ # re-size columns the smart way: the column holding Description
+ # is re-sized according to the total widget size.
+ key = '%s/widget_width' % self.cfgname
+ widget_width, ok = QSettings().value(key).toInt()
+ if not ok:
+ widget_width = 0
+
+ if self.resized:
+ model = self.model()
+ vp_width = self.viewport().width()
+ total_width = stretch_col = 0
+
+ if vp_width != widget_width:
+ for c in range(model.columnCount(QModelIndex())):
+ if model._columns[c] in model._stretchs:
+ #save the description column
+ stretch_col = c
+ else:
+ #total the other widths
+ total_width += self.columnWidth(c)
+
+ width = max(vp_width - total_width, 100)
+ self.setColumnWidth(stretch_col, width)
+
+ super(HgRepoView, self).resizeEvent(e)
+
|
@@ -123,7 +123,7 @@
self.layout().addWidget(self.repotabs_splitter)
- self.repoview = view = HgRepoView(self.repo, self)
+ self.repoview = view = HgRepoView(self.repo, 'repoWidget', self)
view.revisionClicked.connect(self.onRevisionClicked)
view.revisionSelected.connect(self.onRevisionSelected)
view.revisionAltClicked.connect(self.onRevisionSelected)
@@ -673,6 +673,7 @@
self.setupModels()
self.filterbar.refresh()
+ self.repoview.saveSettings()
def reloadTaskTab(self):
tti = self.taskTabsWidget.currentIndex()
@@ -795,6 +796,7 @@ self.manifestDemand.forward('saveSettings', s, 'workbench')
self.grepDemand.forward('saveSettings', s)
self.filterbar.saveSettings(s)
+ self.repoview.saveSettings(s)
return True
def incoming(self):
@@ -954,7 +956,7 @@ entry(menu)
submenu = menu.addMenu(_('Export'))
- entry(submenu, None, isrev, _('Export patch'), 'hg-export',
+ entry(submenu, None, isrev, _('Export patch...'), 'hg-export',
self.exportRevisions)
entry(submenu, None, isrev, _('Email patch...'), 'mail-forward',
self.emailRevision)
@@ -1051,9 +1053,9 @@ menu = QMenu(self)
for name, cb, icon in (
(_('Visual Diff...'), diffPair, 'visualdiff'),
- (_('Export Selected'), exportPair, 'hg-export'),
+ (_('Export Selected...'), exportPair, 'hg-export'),
(_('Email Selected...'), emailPair, 'mail-forward'),
- (_('Export DAG Range'), exportDagRange, 'hg-export'),
+ (_('Export DAG Range...'), exportDagRange, 'hg-export'),
(_('Email DAG Range...'), emailDagRange, 'mail-forward'),
(_('Bisect - Good, Bad...'), bisectNormal, 'hg-bisect-good-bad'),
(_('Bisect - Bad, Good...'), bisectReverse, 'hg-bisect-bad-good'),
@@ -1126,7 +1128,7 @@ run.email(self.repo.ui, rev=self.menuselection, repo=self.repo)
menu = QMenu(self)
for name, cb, icon in (
- (_('Export Selected'), exportSel, 'hg-export'),
+ (_('Export Selected...'), exportSel, 'hg-export'),
(_('Email Selected...'), emailSel, 'mail-forward'),
):
a = QAction(name, self)
@@ -1156,7 +1158,12 @@ def exportRevisions(self, revisions):
if not revisions:
revisions = [self.rev]
- epath = os.path.join(self.repo.root, self.repo.shortname + '_%r.patch')
+ dir = QFileDialog.getExistingDirectory(self, _('Export patch'),
+ hglib.tounicode(self.repo.root))
+ if not dir:
+ return
+ epath = os.path.join(hglib.fromunicode(dir),
+ self.repo.shortname + '_%r.patch')
cmdline = ['export', '--repository', self.repo.root, '--verbose',
'--output', epath]
for rev in revisions:
|
|
|
@@ -649,17 +649,18 @@
def inclicked(self):
url = self.currentUrl(True)
- self.showMessage.emit(_('Getting incoming changesets from %s...') % url)
+ urlu = hglib.tounicode(url)
+ self.showMessage.emit(_('Getting incoming changesets from %s...') % urlu)
if self.embedded and not url.startswith('p4://') and \
not self.opts.get('subrepos'):
def finished(ret, output):
if ret == 0 and os.path.exists(bfile):
- self.showMessage.emit(_('Found incoming changesets from %s') % url)
- self.incomingBundle.emit(bfile)
+ self.showMessage.emit(_('Found incoming changesets from %s') % urlu)
+ self.incomingBundle.emit(hglib.tounicode(bfile))
elif ret == 1:
- self.showMessage.emit(_('No incoming changesets from %s') % url)
+ self.showMessage.emit(_('No incoming changesets from %s') % urlu)
else:
- self.showMessage.emit(_('Incoming from %s aborted, ret %d') % (url, ret))
+ self.showMessage.emit(_('Incoming from %s aborted, ret %d') % (urlu, ret))
bfile = url
for badchar in (':', '*', '\\', '?', '#'):
bfile = bfile.replace(badchar, '')
@@ -672,22 +673,23 @@ else:
def finished(ret, output):
if ret == 0:
- self.showMessage.emit(_('Found incoming changesets from %s') % url)
+ self.showMessage.emit(_('Found incoming changesets from %s') % urlu)
elif ret == 1:
- self.showMessage.emit(_('No incoming changesets from %s') % url)
+ self.showMessage.emit(_('No incoming changesets from %s') % urlu)
else:
- self.showMessage.emit(_('Incoming from %s aborted, ret %d') % (url, ret))
+ self.showMessage.emit(_('Incoming from %s aborted, ret %d') % (urlu, ret))
self.finishfunc = finished
cmdline = ['--repository', self.repo.root, 'incoming']
self.run(cmdline, ('force', 'branch', 'rev', 'subrepos'))
def pullclicked(self):
url = self.currentUrl(True)
+ urlu = hglib.tounicode(url)
def finished(ret, output):
if ret == 0:
- self.showMessage.emit(_('Pull from %s completed') % url)
+ self.showMessage.emit(_('Pull from %s completed') % urlu)
else:
- self.showMessage.emit(_('Pull from %s aborted, ret %d') % (url, ret))
+ self.showMessage.emit(_('Pull from %s aborted, ret %d') % (urlu, ret))
# handle file conflicts during rebase
if os.path.exists(self.repo.join('rebasestate')):
dlg = rebase.RebaseDialog(self.repo, self)
@@ -704,7 +706,7 @@ dlg.exec_()
return
self.finishfunc = finished
- self.showMessage.emit(_('Pulling from %s...') % url)
+ self.showMessage.emit(_('Pulling from %s...') % urlu)
cmdline = ['--repository', self.repo.root, 'pull', '--verbose']
uimerge = self.repo.ui.configbool('tortoisehg', 'autoresolve') \
and 'ui.merge=internal:merge' or 'ui.merge=internal:fail'
@@ -718,18 +720,19 @@
def outclicked(self):
url = self.currentUrl(True)
- self.showMessage.emit(_('Finding outgoing changesets to %s...') % url)
+ urlu = hglib.tounicode(url)
+ self.showMessage.emit(_('Finding outgoing changesets to %s...') % urlu)
if self.embedded and not self.opts.get('subrepos'):
def outputnodes(ret, data):
if ret == 0:
nodes = [n for n in data.splitlines() if len(n) == 40]
self.outgoingNodes.emit(nodes)
self.showMessage.emit(_('%d outgoing changesets to %s') %
- (len(nodes), url))
+ (len(nodes), urlu))
elif ret == 1:
- self.showMessage.emit(_('No outgoing changesets to %s') % url)
+ self.showMessage.emit(_('No outgoing changesets to %s') % urlu)
else:
- self.showMessage.emit(_('Outgoing to %s aborted, ret %d') % (url, ret))
+ self.showMessage.emit(_('Outgoing to %s aborted, ret %d') % (urlu, ret))
self.finishfunc = outputnodes
cmdline = ['--repository', self.repo.root, 'outgoing', '--quiet',
'--template', '{node}\n']
@@ -784,20 +787,21 @@
def pushclicked(self):
url = self.currentUrl(True)
+ urlu = hglib.tounicode(url)
if not hg.islocal(self.currentUrl(False)):
r = qtlib.QuestionMsgBox(_('Confirm Push to remote Repository'),
_('Push to remote repository\n%s\n?')
- % url)
+ % urlu)
if not r:
- self.showMessage.emit(_('Push to %s aborted') % url)
+ self.showMessage.emit(_('Push to %s aborted') % urlu)
return
- self.showMessage.emit(_('Pushing to %s...') % url)
+ self.showMessage.emit(_('Pushing to %s...') % urlu)
def finished(ret, output):
if ret == 0:
- self.showMessage.emit(_('Push to %s completed') % url)
+ self.showMessage.emit(_('Push to %s completed') % urlu)
else:
- self.showMessage.emit(_('Push to %s aborted, ret %d') % (url, ret))
+ self.showMessage.emit(_('Push to %s aborted, ret %d') % (urlu, ret))
self.finishfunc = finished
cmdline = ['--repository', self.repo.root, 'push']
self.run(cmdline, ('force', 'new-branch', 'branch', 'rev'))
@@ -1037,8 +1041,13 @@ super(SecureDialog, self).__init__(parent)
def genfingerprint():
- pem = ssl.get_server_certificate( (host, 443) )
- der = ssl.PEM_cert_to_DER_cert(pem)
+ try:
+ pem = ssl.get_server_certificate( (host, 443) )
+ der = ssl.PEM_cert_to_DER_cert(pem)
+ except Exception, e:
+ qtlib.WarningMsgBox(_('Certificate Query Error'),
+ hglib.tounicode(str(e)), parent=self)
+ return
hash = util.sha1(der).hexdigest()
pretty = ":".join([hash[x:x + 2] for x in xrange(0, len(hash), 2)])
le.setText(pretty)
|
@@ -5,13 +5,9 @@ # This software may be used and distributed according to the terms of the
# GNU General Public License version 2, incorporated herein by reference.
-import os
-
-from mercurial import error, util
-
-from tortoisehg.util import hglib, i18n
+from tortoisehg.util import hglib
from tortoisehg.hgqt.i18n import _
-from tortoisehg.hgqt import qtlib, cmdui
+from tortoisehg.hgqt import qtlib, cmdui, i18n
from PyQt4.QtCore import *
from PyQt4.QtGui import *
@@ -255,9 +251,8 @@ ctx = self.repo[self.rev]
msgset = keep._('Added tag %s for changeset %s')
message = (english and msgset['id'] or msgset['str']) \
- % (tag, str(ctx))
- if not isinstance(message, str):
- message = hglib.fromunicode(message)
+ % (tagu, str(ctx))
+ message = hglib.fromunicode(message)
def finished():
if exists:
@@ -306,9 +301,8 @@ return
if not message:
msgset = keep._('Removed tag %s')
- message = (english and msgset['id'] or msgset['str']) % tag
- if not isinstance(message, str):
- message = hglib.fromunicode(message)
+ message = (english and msgset['id'] or msgset['str']) % tagu
+ message = hglib.fromunicode(message)
def finished():
self.set_status(_("Tag '%s' has been removed") % tagu, True)
@@ -322,6 +316,11 @@ self.finishfunc = finished
self.cmd.run(cmd)
+ def reject(self):
+ # prevent signals from reaching deleted objects
+ self.repo.repositoryChanged.disconnect(self.refresh)
+ super(BookmarkDialog, self).reject()
+
def run(ui, *pats, **opts):
kargs = {}
tag = len(pats) > 0 and pats[0] or None
|
|
|
@@ -288,7 +288,7 @@
# If more than one file, diff on working dir copy.
copyworkingdir = len(MAR) > 1
- dirs, labels, fns_and_mtimes = snapshotset(repo, ctxs, sa, sb, cpy,
+ dirs, labels, fns_and_mtimes = snapshotset(repo, ctxs, sa, sb, cpy,
copyworkingdir)
dir1a, dir1b, dir2 = dirs
label1a, label1b, label2 = labels
@@ -358,7 +358,6 @@ def __init__(self, repo, pats, ctx1a, sa, ctx1b, sb, ctx2, cpy):
'Initialize the Dialog'
QDialog.__init__(self)
- self.curFile = None
self.setWindowIcon(qtlib.geticon('visualdiff'))
@@ -378,10 +377,12 @@ self.reponame = hglib.fromunicode(repo.displayname)
self.ctxs = (ctx1a, ctx1b, ctx2)
+ self.filesets = (sa, sb)
self.copies = cpy
- self.ui = repo.ui
+ self.repo = repo
+ self.curFile = None
- layout = QVBoxLayout()
+ layout = QVBoxLayout()
self.setLayout(layout)
lbl = QLabel(_('Temporary files are removed when this dialog'
@@ -397,9 +398,10 @@ preferred = besttool(repo.ui, tools)
self.diffpath, self.diffopts, self.mergeopts = tools[preferred]
self.tools = tools
+ self.preferred = preferred
if len(tools) > 1:
- hbox = QHBoxLayout()
+ hbox = QHBoxLayout()
combo = QComboBox()
lbl = QLabel(_('Select Tool:'))
lbl.setBuddy(combo)
@@ -411,13 +413,10 @@ if name == preferred:
defrow = i
combo.setCurrentIndex(defrow)
- patterns = repo.ui.configitems('diff-patterns')
- patterns = [(p, t) for p,t in patterns if t in tools]
- callable = lambda row: self.fileSelect(row, repo, combo,
- patterns, preferred)
- list.currentRowChanged.connect(callable)
- combo.currentIndexChanged['QString'].connect(self.toolSelect)
+ list.currentRowChanged.connect(self.updateToolSelection)
+ combo.currentIndexChanged['QString'].connect(self.onToolSelected)
+ self.toolCombo = combo
BB = QDialogButtonBox
bb = BB()
@@ -440,11 +439,13 @@
self.updateDiffButtons(preferred)
- callable = lambda: self.fillmodel(repo, sa, sb)
QShortcut(QKeySequence('CTRL+D'), self.list, self.activateCurrent)
- QTimer.singleShot(0, callable)
+ QTimer.singleShot(0, self.fillmodel)
- def fillmodel(self, repo, sa, sb):
+ @pyqtSlot()
+ def fillmodel(self):
+ repo = self.repo
+ sa, sb = self.filesets
self.dirs, self.revs = snapshotset(repo, self.ctxs, sa, sb, self.copies)[:2]
def get_status(file, mod, add, rem):
@@ -463,26 +464,23 @@ self.list.addItem(row)
@pyqtSlot(QString)
- def toolSelect(self, tool):
+ def onToolSelected(self, tool):
'user selected a tool from the tool combo'
tool = hglib.fromunicode(tool)
assert tool in self.tools
self.diffpath, self.diffopts, self.mergeopts = self.tools[tool]
self.updateDiffButtons(tool)
- def updateDiffButtons(self, tool):
- if hasattr(self, 'p1button'):
- d2 = self.ui.configbool('merge-tools', tool + '.dirdiff')
- d3 = self.ui.configbool('merge-tools', tool + '.dir3diff')
- self.p1button.setEnabled(d2)
- self.p2button.setEnabled(d2)
- self.p3button.setEnabled(d3)
- elif hasattr(self, 'dbutton'):
- d2 = self.ui.configbool('merge-tools', tool + '.dirdiff')
- self.dbutton.setEnabled(d2)
+ @pyqtSlot(int)
+ def updateToolSelection(self, row):
+ 'user selected a file, pick an appropriate tool from combo'
+ if row == -1:
+ return
- def fileSelect(self, row, repo, combo, patterns, preferred):
- 'user selected a file, pick an appropriate tool from combo'
+ repo = self.repo
+ patterns = repo.ui.configitems('diff-patterns')
+ patterns = [(p, t) for p,t in patterns if t in tools]
+
fname = self.list.item(row).text()[2:]
fname = hglib.fromunicode(fname)
if self.curFile == fname:
@@ -494,10 +492,10 @@ selected = tool
break
else:
- selected = preferred
+ selected = self.preferred
for i, name in enumerate(self.tools.iterkeys()):
if name == selected:
- combo.setCurrentIndex(i)
+ self.toolCombo.setCurrentIndex(i)
def activateCurrent(self):
'CTRL+D has been pressed'
@@ -509,6 +507,17 @@ 'A QListWidgetItem has been activated'
self.launch(item.text()[2:])
+ def updateDiffButtons(self, tool):
+ if hasattr(self, 'p1button'):
+ d2 = self.repo.ui.configbool('merge-tools', tool + '.dirdiff')
+ d3 = self.repo.ui.configbool('merge-tools', tool + '.dir3diff')
+ self.p1button.setEnabled(d2)
+ self.p2button.setEnabled(d2)
+ self.p3button.setEnabled(d3)
+ elif hasattr(self, 'dbutton'):
+ d2 = self.repo.ui.configbool('merge-tools', tool + '.dirdiff')
+ self.dbutton.setEnabled(d2)
+
def launch(self, fname):
fname = hglib.fromunicode(fname)
source = self.copies.get(fname, None)
|
|
|
|
|
@@ -67,10 +67,8 @@ <?define docdiffEXE.guid = {F4A6629F-85C1-406E-8262-C02E8DBDB4FA} ?>
<?define KDiff3EXE.guid = {075ECC11-1B44-48DB-B7FD-D3207BB801A4} ?>
- <?define TortoisePlinkEXE.guid = {7679909C-7390-4546-9FCA-A5A31520DA50} ?>
- <?define PageantEXE.guid = {228F24A3-FA1C-4439-BCB4-71DF790E61DC} ?>
- <?define thgcmd.guid = {7B660ED7-CAEA-4851-8ABD-751251842457} ?>
- <?define hgcmd.guid = {4A986763-BD4D-46DC-89CD-A36F037D847E} ?>
+ <?define TortoisePlinkEXE.guid = {E983CBBB-BD4E-4698-BE6F-CECB80D5BA76} ?>
+ <?define PageantEXE.guid = {91F28A55-874F-4957-A288-BB0F24E419A4} ?>
<?define chmFile.guid = {422C758A-6CB2-4531-BE6A-366B3CD1FD8D} ?>
<?define pdfFile.guid = {A0EC2473-996A-4DBC-9F44-76B63B57AE31} ?>
|
@@ -93,7 +93,7 @@ Source='dist\thg.exe'
/>
<Environment Id="Environment" Name="PATH" Part="last" System="yes"
- Permanent="no" Value="[INSTALLDIR]bin" Action="set"
+ Permanent="no" Value="[INSTALLDIR]" Action="set"
/>
</Component>
<Component Id='WinExecutable' Guid='$(var.ComponentWinExecutableGUID)' Win64='$(var.IsX64)'>
@@ -197,6 +197,17 @@ />
</Component>
+ <Component Id='TortoisePlinkEXE' Guid='$(var.TortoisePlinkEXE.guid)' Win64='$(var.IsX64)'>
+ <File Id='TortoisePlinkEXE' Name='TortoisePlink.exe' KeyPath='yes'
+ Source='..\contrib\TortoisePlink.exe'
+ />
+ </Component>
+ <Component Id='PageantEXE' Guid='$(var.PageantEXE.guid)' Win64='$(var.IsX64)'>
+ <File Id='PageantEXE' Name='Pageant.exe' KeyPath='yes'
+ Source='..\contrib\Pageant.exe'
+ />
+ </Component>
+
<?if $(var.Platform) = "x64" ?>
<Component Id='KDiff3EXE' Guid='$(var.KDiff3EXE.guid)' Win64='$(var.IsX64)'>
<File Id='KDiff3EXE' Name='kdiff3.exe' KeyPath='yes'
@@ -239,29 +250,6 @@ </Component>
</Directory>
- <Directory Id='binFolder' Name='bin'>
- <Component Id='TortoisePlinkEXE' Guid='$(var.TortoisePlinkEXE.guid)' Win64='$(var.IsX64)'>
- <File Id='TortoisePlinkEXE' Name='TortoisePlink.exe' KeyPath='yes'
- Source='..\contrib\TortoisePlink.exe'
- />
- </Component>
- <Component Id='PageantEXE' Guid='$(var.PageantEXE.guid)' Win64='$(var.IsX64)'>
- <File Id='PageantEXE' Name='Pageant.exe' KeyPath='yes'
- Source='..\contrib\Pageant.exe'
- />
- </Component>
- <Component Id='ThgCmd' Guid='$(var.thgcmd.guid)' Win64='$(var.IsX64)'>
- <File Id='Thg.Cmd' Name='thg.cmd' KeyPath='yes'
- Source='win32\thg.cmd'
- />
- </Component>
- <Component Id='HgCmd' Guid='$(var.hgcmd.guid)' Win64='$(var.IsX64)'>
- <File Id='Hg.Cmd' Name='hg.cmd' KeyPath='yes'
- Source='win32\hg.cmd'
- />
- </Component>
- </Directory>
-
<Directory Id='HGRCD' Name='hgrc.d'>
<Component Id='mercurial.rc' Guid='$(var.mercurial.rc.guid)' Win64='$(var.IsX64)'>
<File Id='mercurial.rc' Name='Mercurial.rc' ReadOnly='yes'
@@ -385,8 +373,6 @@ <ComponentRef Id='helpFolder' />
<ComponentRef Id='distOutput' />
<ComponentRef Id='imageFormats' />
- <ComponentRef Id='ThgCmd' />
- <ComponentRef Id='HgCmd' />
<ComponentGroupRef Id='templatesFolder' />
<ComponentRef Id='Icons' />
</Feature>
|
Loading...