Here is the updated patchset:
# HG changeset patch
# User Simon Giesecke <[email protected]>
# Date 1562663911 -7200
# Tue Jul 09 11:18:31 2019 +0200
# Node ID 273b4ae25ccb8e26ca8b27b61861a621abcfb71f
# Parent 7f3142453cd546d701a7455cab9568cce08d9974
Bugfix: do not return matcher function, but use it for calling diff
diff -r 7f3142453cd5 -r 273b4ae25ccb hgviewlib/hggraph.py
--- a/hgviewlib/hggraph.py Wed Jun 26 13:55:23 2019 +0200
+++ b/hgviewlib/hggraph.py Tue Jul 09 11:18:31 2019 +0200
@@ -64,9 +64,9 @@
# backward compat with mercurial < 5.0
if tuple(map(int, hgversion.split('.', 2)[:2])) < (5, 0):
if files is None:
- return match.always(repo.root, repo.getcwd())
+ matchfn = match.always(repo.root, repo.getcwd())
else:
- return match.exact(repo.root, repo.getcwd(), files)
+ matchfn = match.exact(repo.root, repo.getcwd(), files)
else:
if files is None:
matchfn = match.always()
# HG changeset patch
# User Simon Giesecke <[email protected]>
# Date 1564495318 -7200
# Tue Jul 30 16:01:58 2019 +0200
# Node ID 9b01ad1b0ee86c2eba0a5b9f903228ce7c5400f5
# Parent 273b4ae25ccb8e26ca8b27b61861a621abcfb71f
Bugfix: support conversion of QString to unicode
Removed unused import for methodcaller
Inlined redundant lambda
diff -r 273b4ae25ccb -r 9b01ad1b0ee8 hgviewlib/qt4/hgrepoviewer.py
--- a/hgviewlib/qt4/hgrepoviewer.py Tue Jul 09 11:18:31 2019 +0200
+++ b/hgviewlib/qt4/hgrepoviewer.py Tue Jul 30 16:01:58 2019 +0200
@@ -14,7 +14,6 @@
import re
import errno
from functools import partial
-from operator import methodcaller
from PyQt4 import QtCore, QtGui, Qsci
@@ -87,11 +86,10 @@
self.setupModels(fromhead)
self._setupQuickOpen()
- to_utf8 = methodcaller('encode', 'utf-8')
if self.cfg.getFileDescriptionView() == 'asfile':
- fileselcallback = compose(self.displaySelectedFile, to_utf8)
+ fileselcallback = compose(self.displaySelectedFile, tounicode)
else:
- fileselcallback =
compose(self.textview_status.displayFile, to_utf8)
+ fileselcallback =
compose(self.textview_status.displayFile, tounicode)
self.tableView_filelist.file_selected[str].connect(fileselcallback)
self.tableView_filelist.file_selected[str,
int].connect(fileselcallback)
diff -r 273b4ae25ccb -r 9b01ad1b0ee8 hgviewlib/util.py
--- a/hgviewlib/util.py Tue Jul 09 11:18:31 2019 +0200
+++ b/hgviewlib/util.py Tue Jul 30 16:01:58 2019 +0200
@@ -30,6 +30,8 @@
"""
if isinstance(text, unicode):
return text
+ elif hasattr(text, 'toUtf8'): # a QString
+ return text.toUtf8().data()
else:
text = str(text)
for encoding in ('utf-8', 'iso-8859-15', 'cp1252'):
# HG changeset patch
# User Simon Giesecke <[email protected]>
# Date 1564495420 -7200
# Tue Jul 30 16:03:40 2019 +0200
# Node ID 093ed6e5aa51b1a454a13c5b171221a6e8169d77
# Parent 9b01ad1b0ee86c2eba0a5b9f903228ce7c5400f5
Bugfix: status may be a QVariant
diff -r 9b01ad1b0ee8 -r 093ed6e5aa51 hgviewlib/qt4/hgrepoviewer.py
--- a/hgviewlib/qt4/hgrepoviewer.py Tue Jul 30 16:01:58 2019 +0200
+++ b/hgviewlib/qt4/hgrepoviewer.py Tue Jul 30 16:03:40 2019 +0200
@@ -294,6 +294,8 @@
status = settings.value(entryname)
if status is None:
status = 1
+ elif isinstance(status, QtCore.QVariant):
+ status = int(status.toBool())
else:
try:
status = int(status)
On Mon, Jul 29, 2019 at 2:40 PM Simon Giesecke <[email protected]> wrote:
>
>
> Hi,
>
> On Sat, Jul 27, 2019 at 1:12 AM Mads Kiilerich <[email protected]> wrote:
>>
>> On 7/26/19 4:08 PM, Simon Giesecke wrote:
>> > Hi,
>> >
>> > I needed the following patches to get hgview (with the Qt frontend)
>> > basically running on my Fedora 30 instance. Please consider merging them.
>>
>>
>> I confirm they make the QT frontend work - tested with Mercurial 4.9.
>>
>> (The curses frontend is however still broken. And migration to Python 3
>> will very soon be necessary for Fedora packaging.)
>
>
> Yes that's true, I can check migrating to Python 3, but probably some
> dependencies will need to be migrated first.
>
>> > # HG changeset patch
>> > # User Simon Giesecke <[email protected]>
>> > # Date 1562663911 -7200
>> > # Tue Jul 09 11:18:31 2019 +0200
>> > # Node ID 273b4ae25ccb8e26ca8b27b61861a621abcfb71f
>> > # Parent 7f3142453cd546d701a7455cab9568cce08d9974
>> > Bugfix: do not return matcher function, but use it for calling diff
>>
>>
>> Fixing a trivial recent regression for Mercurial < 5.0 from
>> http://hg.logilab.org/review/hgview/rev/15113c412f4c .
>>
>>
>> >
>> > # HG changeset patch
>> > # User Simon Giesecke <[email protected]>
>> > # Date 1562664056 -7200
>> > # Tue Jul 09 11:20:56 2019 +0200
>> > # Node ID e73ef9c7f73339207df78209f8b9ed384c166aad
>> > # Parent 273b4ae25ccb8e26ca8b27b61861a621abcfb71f
>> > Bugfix: status may be a QVariant
>>
>>
>> Is it known what introduced this change? Is the old behaviour still
>> relevant?
>
>
> Unfortunately, I have no idea. I am not familiar with PyQt4 or sip, I was
> just trying to do some minimal changes to make it work.
>
> Probably this is not the best approach, following
> https://www.riverbankcomputing.com/static/Docs/PyQt4/python_v3.html#qvariant
> (this is about Python3, but I did not find any equivalent documentation
> regarding Python2) and
> https://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt_qvariant.html,
> which sounds as if converting to int should actually work. So maybe this is
> more a bug in PyQt4, and my change just works around that?
>
> Unfortunately, I have no idea when hgview last worked, since I am a new user.
>
>> > diff --git a/hgviewlib/qt4/hgrepoviewer.py b/hgviewlib/qt4/hgrepoviewer.py
>> > --- a/hgviewlib/qt4/hgrepoviewer.py
>> > +++ b/hgviewlib/qt4/hgrepoviewer.py
>> > @@ -299,6 +299,9 @@ class HgRepoViewer(ActionsMixin, HgDialo
>> > else:
>> > try:
>> > status = int(status)
>> > + except TypeError:
>> > + # assume status is a QVariant
>> > + status = int(status.toBool())
>> > except ValueError:
>> > # for backward compatibility
>> > status = {'false': False , 'true':
>> > True}.get(status.lower(), status)
>>
>>
>> Instead of catching the generic TypeError, how about something like:
>>
>> status = settings.value(entryname)
>> if status is None:
>> status = 1
>> + elif isinstance(status, QtCore.QVariant):
>> + status = int(status.toBool())
>> else:
>> try:
>> status = int(status)
>>
>
> Yes, that's probably better, I will change the patch to do just that. Thanks
> for the suggestion!
>
> Best wishes
> Simon
_______________________________________________
Python-Projects mailing list
[email protected]
https://lists.logilab.org/mailman/listinfo/python-projects