Today I was busy porting reportbug-ng to QT4. One really cool thing I
noticed is the new QWebView widget, which is the main widget of the
QWebKit module. It works surprisingly easy compared to the good old
QTextBrowser of QT3 -- now you can just throw an URL at it and it will
render the page nicely complete with CSS, images, etc.

Here's the obligatory screenshot:

as you can see, the bugreport looks much better than in the old version
of rng. WebKit does a really good job rendering the HTML, I think the
fonts look even smoother than under firefox.

To ease the transition to from QT3 to QT4 I've extracted all the Debian
BTS specific stuff to
python-debianbts and
uploaded it to unstable. Rng uses it to query our Bug Tracking System
via it's SOAP interface and get the data in Python's native data types.

There is still the problem with rng (QT3) crashing when showing
bugreports. I've investigated the problem a bit and found out that it is
not rng's fault but probably a problem with
python-qt3 or one of it's underlying
libs. QTextBrowser causes segfaults in nearly 50% of the cases where you
try to render html from a different thread: here's an easy way to
reproduce:

# crash.py# Usage: python crash.py "some text"# python crash.py "some evil html"fromqtimport*importsysimportthreadingclassForm(QMainWindow):def__init__(self,parent=None,name=None,fl=0):QMainWindow.__init__(self,parent,name,fl)self.browser=QTextBrowser(self,"browser")self.setCentralWidget(self.browser)if__name__=='__main__':iflen(sys.argv)&lt;2:print'Usage: %s "some text"'%sys.argv[0]sys.exit()s=str(sys.argv[1])# setup qt stuff with a browserapp=QApplication(sys.argv)app.connect(app,SIGNAL("lastWindowClosed()"),app,SLOT("quit()"))form=Form()app.setMainWidget(form)form.show()# start a different thread and try to set the text in the browser# we wait 1.0 second -- just to make sure the change happens after the# start of app.exec_loop() belowt=threading.Timer(1.0,form.browser.setText,(s,))t.start()app.exec_loop()

QWebView doesn't seem to have this problem, the QT4 version of rng
didn't crash a single time.

I'm not quite ready with the porting to QT4, and since I'll be quite
busy during the next weeks I suppose it will take a few weeks until the
new version will be updated to unstable.