Error about " module object has no attribute 'QStringList' "

2013-03-17 Thread ofenerci
Dear List,

I have been working on restructured text(rest) documents and found a nice 
application which makes viewing the rest documents easy. It is a  web browser 
especially suited for Sphinx documents. 

When I run the code, I get error which says that :

->---
Traceback (most recent call last):
  File "/usr/local/bin/doc-watch", line 73, in 
self.wb.urlChanged.connect(lambda: 
self.url.setCompleter(QtGui.QCompleter(QtCore.QStringList([QtCore.QString(i.url().toString())
 for i in self.wb.history().items()]), caseSensitivity = 
QtCore.Qt.CaseInsensitive)))
AttributeError: 'module' object has no attribute 'QStringList'
<

I am running python2.7 on Debian Testing. I appreciate any help to shed any 
light on this error. The code is following:

Best Regards,
Ozhan Fenerci



#!/usr/bin/env python
#
# Copyright (C) 2012 Vinay Sajip. Licensed under the MIT license.
#
# Based on Roberto Alsina's 128-line web browser, see
#
# http://lateral.netmanagers.com.ar/weblog/posts/BB948.html
#
import json
import os
import subprocess
import sys
import tempfile
from urllib import pathname2url

import sip
sip.setapi("QString", 2)
sip.setapi("QVariant", 2)

from PyQt4 import QtGui, QtCore, QtWebKit, QtNetwork


settings = QtCore.QSettings("Vinay Sajip", "DocWatch")

class Watcher(QtCore.QThread):
"""
A watcher which looks for source file changes, builds the documentation,
and notifies the browser to refresh its contents
"""
def run(self):
self._stop = False
watch_command = 'inotifywait -rq -e close_write --exclude \'"*.html"\' 
.'.split()
make_command = 'make html'.split()
while not self._stop:
# Perhaps should put notifier access in a mutex - not bothering yet
self.notifier = subprocess.Popen(watch_command)
self.notifier.wait()
if self._stop:
break
subprocess.call(make_command)
# Refresh the UI ...
self.parent().changed.emit()

def stop(self):
self._stop = True
# Perhaps should put notifier access in a mutex - not bothering for now
if self.notifier.poll() is None:# not yet terminated ...
self.notifier.terminate()

class MainWindow(QtGui.QMainWindow):
"""
A browser intended for viewing HTML documentation generated by Sphinx.
"""
changed = QtCore.pyqtSignal()

def __init__(self, url):
QtGui.QMainWindow.__init__(self)
self.sb=self.statusBar()

self.pbar = QtGui.QProgressBar()
self.pbar.setMaximumWidth(120)
self.wb=QtWebKit.QWebView(loadProgress = self.pbar.setValue, 
loadFinished = self.pbar.hide, loadStarted = self.pbar.show, titleChanged = 
self.setWindowTitle)
self.setCentralWidget(self.wb)

self.tb=self.addToolBar("Main Toolbar")
for a in (QtWebKit.QWebPage.Back, QtWebKit.QWebPage.Forward, 
QtWebKit.QWebPage.Reload):
self.tb.addAction(self.wb.pageAction(a))

self.url = QtGui.QLineEdit(returnPressed = 
lambda:self.wb.setUrl(QtCore.QUrl.fromUserInput(self.url.text(
self.tb.addWidget(self.url)

self.wb.urlChanged.connect(lambda u: self.url.setText(u.toString()))
self.wb.urlChanged.connect(lambda: 
self.url.setCompleter(QtGui.QCompleter(QtCore.QStringList([QtCore.QString(i.url().toString())
 for i in self.wb.history().items()]), caseSensitivity = 
QtCore.Qt.CaseInsensitive)))

self.wb.statusBarMessage.connect(self.sb.showMessage)
self.wb.page().linkHovered.connect(lambda l: self.sb.showMessage(l, 
3000))

self.search = QtGui.QLineEdit(returnPressed = lambda: 
self.wb.findText(self.search.text()))
self.search.hide()
self.showSearch = QtGui.QShortcut("Ctrl+F", self, activated = lambda: 
(self.search.show() , self.search.setFocus()))
self.hideSearch = QtGui.QShortcut("Esc", self, activated = lambda: 
(self.search.hide(), self.wb.setFocus()))

self.quit = QtGui.QShortcut("Ctrl+Q", self, activated = self.close)
self.zoomIn = QtGui.QShortcut("Ctrl++", self, activated = lambda: 
self.wb.setZoomFactor(self.wb.zoomFactor()+.2))
self.zoomOut = QtGui.QShortcut("Ctrl+-", self, activated = lambda: 
self.wb.setZoomFactor(self.wb.zoomFactor()-.2))
self.zoomOne = QtGui.QShortcut("Ctrl+=", self, activated = lambda: 
self.wb.setZoomFactor(1))
self.wb.settings().setAttribute(QtWebKit.QWebSettings.PluginsEnabled, 
True)

self.sb.addPermanentWidget(self.search)
self.sb.addPermanentWidget(self.pbar)

self.load_settings()

self.wb.load(url)
self.watcher = Watcher(self)

self.changed.connect(self.wb.reload)

self.watcher.start()

def load_settings(self):
settings.beginGroup('mainwindow')
pos = settings.value('pos')
size = settings.value('size')
if isinstanc

Re: Error about " module object has no attribute 'QStringList' "

2013-03-17 Thread ofenerci
Thank you Vincent and to All,


It has worked like a charm. 
-- 
http://mail.python.org/mailman/listinfo/python-list