by
Changes to 3 files · Browse files at 059e9f79d6c7 Showing diff from parent fa4af62c8e59 d572bfb39e7d Diff from another changeset...
@@ -9,7 +9,7 @@ import stat
import shutil
-from mercurial import cmdutil
+from mercurial import cmdutil, hg, ui
from tortoisehg.util import hglib
from tortoisehg.hgqt.i18n import _
@@ -137,10 +137,10 @@ unknown = self.ucb.isChecked()
ignored = self.icb.isChecked()
trash = self.tcb.isChecked()
- delf = self.foldercb.isChecked()
- keep = self.hgfilecb.isChecked()
+ delfolders = self.foldercb.isChecked()
+ keephg = self.hgfilecb.isChecked()
- if not (unknown or ignored or trash or delf):
+ if not (unknown or ignored or trash or delfolders):
QDialog.accept(self)
return
if not qtlib.QuestionMsgBox(_('Confirm file deletions'),
@@ -153,9 +153,13 @@ qtlib.InfoMsgBox(_('Deletion failures'),
_('Unable to delete %d files or folders') %
len(self.th.failures), parent=self)
- self.reject()
+ if self.th.failures is not None:
+ self.reject()
- self.th = PurgeThread(self.repo, ignored, unknown, trash, delf, keep, self)
+ opts = dict(unknown=unknown, ignored=ignored, trash=trash,
+ delfolders=delfolders, keephg=keephg)
+
+ self.th = PurgeThread(self.repo, opts, self)
self.th.progress.connect(self.progress)
self.th.showMessage.connect(self.showMessage)
self.th.finished.connect(completed)
@@ -165,27 +169,28 @@ progress = pyqtSignal(QString, object, QString, QString, object)
showMessage = pyqtSignal(QString)
- def __init__(self, repo, ignored, unknown, trash, delf, keephg, parent):
+ def __init__(self, repo, opts, parent):
super(PurgeThread, self).__init__(parent)
self.failures = 0
- self.repo = repo
- self.ignored = ignored
- self.unknown = unknown
- self.trash = trash
- self.delfolders = delf
- self.keephg = keephg
+ self.root = repo.root
+ self.opts = opts
def run(self):
- self.failures = self.purge(self.repo, self.ignored, self.unknown,
- self.trash, self.delfolders, self.keephg)
+ try:
+ self.failures = self.purge(self.root, self.opts)
+ except Exception, e:
+ self.failures = None
+ self.showMessage.emit(hglib.tounicode(str(e)))
- def purge(self, repo, ignored, unknown, trash, delfolders, keephg):
+ def purge(self, root, opts):
+ repo = hg.repository(ui.ui(), self.root)
+ keephg = opts['keephg']
directories = []
failures = []
- if trash:
+ if opts['trash']:
self.showMessage.emit(_('Deleting trash folder...'))
- trashcan = self.repo.join('Trashcan')
+ trashcan = repo.join('Trashcan')
try:
shutil.rmtree(trashcan)
except EnvironmentError:
@@ -194,7 +199,8 @@ self.showMessage.emit('')
match = cmdutil.match(repo, [], {})
match.dir = directories.append
- status = repo.status(match=match, ignored=ignored, unknown=unknown)
+ status = repo.status(match=match, ignored=opts['ignored'],
+ unknown=opts['unknown'], clean=False)
files = status[4] + status[5]
def remove(remove_func, name):
@@ -224,7 +230,7 @@ self.progress.emit(*data)
self.showMessage.emit(_('Deleted %d files') % len(files))
- if delfolders:
+ if opts['delfolders']:
for i, f in enumerate(sorted(directories, reverse=True)):
if not os.listdir(repo.wjoin(f)):
data = ('rmdir', i, f, '', len(directories))
|
@@ -210,17 +210,29 @@ a.setChecked(self.whitespaceVisibility() == m)
a.triggered.connect(lambda: self.setWhitespaceVisibility(m))
mkaction(name, mode)
+ vsmenu = QMenu(_('EolnVisibility'), self)
+ for name, mode in ((_('Visible'), True),
+ (_('Invisible'), False)):
+ def mkaction(n, m):
+ a = vsmenu.addAction(n)
+ a.setCheckable(True)
+ a.setChecked(self.eolVisibility() == m)
+ a.triggered.connect(lambda: self.setEolVisibility(m))
+ mkaction(name, mode)
self._stdMenu.addMenu(wrapmenu)
self._stdMenu.addMenu(wsmenu)
+ self._stdMenu.addMenu(vsmenu)
return self._stdMenu
def saveSettings(self, qs, prefix):
qs.setValue(prefix+'/wrap', self.wrapMode())
qs.setValue(prefix+'/whitespace', self.whitespaceVisibility())
+ qs.setValue(prefix+'/eol', self.eolVisibility())
def loadSettings(self, qs, prefix):
self.setWrapMode(qs.value(prefix+'/wrap').toInt()[0])
self.setWhitespaceVisibility(qs.value(prefix+'/whitespace').toInt()[0])
+ self.setEolVisibility(qs.value(prefix+'/eol').toBool())
@pyqtSlot(unicode, bool, bool, bool)
def find(self, exp, icase=True, wrap=False, forward=True):
|
@@ -93,9 +93,18 @@
f = QFile(path)
f.open(QIODevice.ReadOnly)
+ earlybytes = f.readData(4096)
+ if '\0' in earlybytes:
+ qtlib.ErrorMsgBox(_('Unable to merge rejects'),
+ _('This appears to be a binary file'))
+ self.hide()
+ QTimer.singleShot(0, self.reject)
+ return
+
+ f.seek(0)
editor.read(f)
editor.setModified(False)
- lexer = lexers.get_lexer(path, f.readData(1024), self)
+ lexer = lexers.get_lexer(path, earlybytes, self)
editor.setLexer(lexer)
editor.setMarginLineNumbers(1, True)
editor.setMarginWidth(1, str(editor.lines())+'X')
@@ -103,7 +112,7 @@ buf = cStringIO.StringIO()
try:
buf.write('diff -r aaaaaaaaaaaa -r bbbbbbbbbbb %s\n' % path)
- buf.write(open(path + '.rej', 'r').read())
+ buf.write(open(path + '.rej', 'rb').read())
buf.seek(0)
except IOError, e:
pass
@@ -163,7 +172,7 @@ buf = cStringIO.StringIO()
chunk = self.chunks[row]
chunk.write(buf)
- self.rejectbrowser.showChunk(buf.getvalue().splitlines()[1:])
+ self.rejectbrowser.showChunk(buf.getvalue().splitlines(True)[1:])
self.editor.setCursorPosition(chunk.fromline-1, 0)
self.editor.ensureLineVisible(chunk.fromline-1)
self.editor.markerDeleteAll(-1)
@@ -253,7 +262,7 @@ elif line[0] == '-':
removed.append(i)
self.markerDeleteAll(-1)
- self.setText(u'\n'.join(utext))
+ self.setText(u''.join(utext))
for i in added:
self.markerAdd(i, self.addedMark)
self.markerAdd(i, self.addedColor)
|
Loading...