diff demos/browser/browsermainwindow.d @ 73:7bfd46c330dc

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents 71b382c10ef6
children 37caa90ce503
line wrap: on
line diff
--- a/demos/browser/browsermainwindow.d	Wed May 20 22:44:31 2009 +0000
+++ b/demos/browser/browsermainwindow.d	Fri May 22 10:59:00 2009 +0000
@@ -38,12 +38,29 @@
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
+module browsermainwindow:
 
-import QtGui.QMainWindow;
-import QtGui.QIcon;
-import QtCore.QUrl;
 
-import browsermainwindow;
+import qt.core.QUrl;
+import qt.core.QSettings;
+import qt.gui.QMainWindow;
+import qt.gui.QIcon;
+import qt.gui.QDesktopWidget;
+import qt.gui.QFileDialog;
+import qt.gui.QPlainTextEdit;
+import qt.gui.QPrintDialog;
+import qt.gui.QPrintPreviewDialog;
+import qt.gui.QPrinter;
+import qt.gui.QMenuBar;
+import qt.gui.QMessageBox;
+import qt.gui.QStatusBar;
+import qt.gui.QToolBar;
+import qt.gui.QInputDialog;
+
+import qt.core.QDebug;
+
+import qt.webkit.QWebFrame;
+import qt.webkit.QWebHistory;
 
 import autosaver;
 import bookmarks;
@@ -54,1020 +71,955 @@
 import settings;
 import tabwidget;
 import toolbarsearch;
+import webview;
 import ui_passworddialog;
-import webview;
-
-import QtCore.QSettings;
-
-import QtGui.QDesktopWidget;
-import QtGui.QFileDialog;
-import QtGui.QPlainTextEdit;
-import QtGui.QPrintDialog;
-import QtGui.QPrintPreviewDialog;
-import QtGui.QPrinter;
-import QtGui.QMenuBar;
-import QtGui.QMessageBox;
-import QtGui.QStatusBar;
-import QtGui.QToolBar;
-import QtGui.QInputDialog;
-
-import QtWebKit.QWebFrame;
-import QtWebKit.QWebHistory;
-
-import QtCore.QDebug;
 
 
-class AutoSaver;
-class BookmarksToolBar;
-class ChaseWidget;
-class QWebFrame;
-class TabWidget;
-class ToolbarSearch;
-class WebView;
+/*!
+The MainWindow of the Browser Application.
 
-/*!
-    The MainWindow of the Browser Application.
-
-    Handles the tab widget and all the actions
- */
-class BrowserMainWindow : public QMainWindow {
-    Q_OBJECT
-	
-static const qint32 BrowserMainWindowMagic = 0xba;
-	
-public:
-    this(QWidget *parent = null, Qt.WindowFlags flags = 0);
+Handles the tab widget and all the actions
+*/
+class BrowserMainWindow : public QMainWindow
 {
 	
-	super(parent, flags);
-	m_tabWidget = new TabWidget(this);
-	m_autoSaver = new AutoSaver(this);
-	m_historyBack = 0;
-	m_historyForward = 0;
-	m_stop = 0;
-	m_reload = 0;
-	
-    setAttribute(Qt.WA_DeleteOnClose, true);
-    statusBar().setSizeGripEnabled(true);
-    setupMenu();
-    setupToolBar();
+static const qint32 BrowserMainWindowMagic = 0xba;
+
+public:
 
-    QWidget *centralWidget = new QWidget(this);
-    BookmarksModel *boomarksModel = BrowserApplication::bookmarksManager().bookmarksModel();
-    m_bookmarksToolbar = new BookmarksToolBar(boomarksModel, this);
-    connect(m_bookmarksToolbar, SIGNAL(openUrl(const QUrl&)),
-            m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
-    connect(m_bookmarksToolbar.toggleViewAction(), SIGNAL(toggled(bool)),
-            this, SLOT(updateBookmarksToolbarActionText(bool)));
+	this(QWidget parent = null, Qt.WindowFlags flags = 0);
+	{
+		super(parent, flags);
+		m_tabWidget = new TabWidget(this);
+		m_autoSaver = new AutoSaver(this);
+		m_historyBack = 0;
+		m_historyForward = 0;
+		m_stop = 0;
+		m_reload = 0;
 
-    QVBoxLayout *layout = new QVBoxLayout;
-    layout.setSpacing(0);
-    layout.setMargin(0);
-version(Q_WS_MAC)
-{
-    layout.addWidget(m_bookmarksToolbar);
-    layout.addWidget(new QWidget); // <- OS X tab widget style bug
-} else {
-    addToolBarBreak();
-    addToolBar(m_bookmarksToolbar);
-}
-    layout.addWidget(m_tabWidget);
-    centralWidget.setLayout(layout);
-	setCentralWidget(centralWidget);
+		setAttribute(Qt.WA_DeleteOnClose, true);
+		statusBar().setSizeGripEnabled(true);
+		setupMenu();
+		setupToolBar();
+
+		QWidget centralWidget = new QWidget(this);
+		BookmarksModel boomarksModel = BrowserApplication.bookmarksManager().bookmarksModel();
+		m_bookmarksToolbar = new BookmarksToolBar(boomarksModel, this);
+		m_bookmarksToolba.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
+		m_bookmarksToolbar.toggleViewAction.toggled.connect(&thisupdateBookmarksToolbarActionText);
 
-    connect(m_tabWidget, SIGNAL(loadPage(const QString &)),
-        this, SLOT(loadPage(const QString &)));
-    connect(m_tabWidget, SIGNAL(setCurrentTitle(const QString &)),
-        this, SLOT(slotUpdateWindowTitle(const QString &)));
-    connect(m_tabWidget, SIGNAL(showStatusBarMessage(const QString&)),
-            statusBar(), SLOT(showMessage(const QString&)));
-    connect(m_tabWidget, SIGNAL(linkHovered(const QString&)),
-            statusBar(), SLOT(showMessage(const QString&)));
-    connect(m_tabWidget, SIGNAL(loadProgress(int)),
-            this, SLOT(slotLoadProgress(int)));
-    connect(m_tabWidget, SIGNAL(tabsChanged()),
-            m_autoSaver, SLOT(changeOccurred()));
-    connect(m_tabWidget, SIGNAL(geometryChangeRequested(const QRect &)),
-            this, SLOT(geometryChangeRequested(const QRect &)));
-    connect(m_tabWidget, SIGNAL(printRequested(QWebFrame *)),
-            this, SLOT(printRequested(QWebFrame *)));
-    connect(m_tabWidget, SIGNAL(menuBarVisibilityChangeRequested(bool)),
-            menuBar(), SLOT(setVisible(bool)));
-    connect(m_tabWidget, SIGNAL(statusBarVisibilityChangeRequested(bool)),
-            statusBar(), SLOT(setVisible(bool)));
-    connect(m_tabWidget, SIGNAL(toolBarVisibilityChangeRequested(bool)),
-            m_navigationBar, SLOT(setVisible(bool)));
-    connect(m_tabWidget, SIGNAL(toolBarVisibilityChangeRequested(bool)),
-            m_bookmarksToolbar, SLOT(setVisible(bool)));
-version(Q_WS_MAC) {
-    connect(m_tabWidget, SIGNAL(lastTabClosed()),
-            this, SLOT(close()));
-} else {
-    connect(m_tabWidget, SIGNAL(lastTabClosed()),
-            m_tabWidget, SLOT(newTab()));
-}
+		QVBoxLayout layout = new QVBoxLayout;
+		layout.setSpacing(0);
+		layout.setMargin(0);
+		version(Q_WS_MAC)
+		{
+			layout.addWidget(m_bookmarksToolbar);
+			layout.addWidget(new QWidget); // <- OS X tab widget style bug
+		} else {
+			addToolBarBreak();
+			addToolBar(m_bookmarksToolbar);
+		}
+		layout.addWidget(m_tabWidget);
+		centralWidget.setLayout(layout);
+		setCentralWidget(centralWidget);
 
-    slotUpdateWindowTitle();
-    loadDefaultState();
-    m_tabWidget.newTab();
+		m_tabWidget.loadPage.connect(&thisloadPage);
+		m_tabWidget.setCurrentTitle.connect(&this.slotUpdateWindowTitle);
+		m_tabWidget.showStatusBarMessage.connect(&statusBar().showMessage);
+		m_tabWidget.linkHovered.connect(&statusBar().showMessage);
+		m_tabWidget.loadProgress.connect(&this.slotLoadProgress);
+		m_tabWidget.tabsChanged.connect(&m_autoSaver.changeOccurred);
+		m_tabWidget.geometryChangeRequested.connect(&this.geometryChangeRequested);
+		m_tabWidget.printRequested.connect(&this.printRequested);
+		m_tabWidget.menuBarVisibilityChangeRequested.connect(&menuBar().setVisible);
+		m_tabWidget.statusBarVisibilityChangeRequested.connect(&statusBar().setVisible);
+		m_tabWidget.toolBarVisibilityChangeRequested.connect(&m_navigationBar.setVisible);
+		m_tabWidget.toolBarVisibilityChangeRequested.connect(&m_bookmarksToolbar.setVisible);
+		version(Q_WS_MAC) {
+			m_tabWidget.lastTabClosed().connect(&thisclose);
+		} else {
+			m_tabWidget.lastTabClosed().connect(&m_tabWidget.newTab);
+		}
 
-    int size = m_tabWidget.lineEditStack().sizeHint().height();
-    m_navigationBar.setIconSize(QSize(size, size));
+		slotUpdateWindowTitle();
+		loadDefaultState();
+		m_tabWidget.newTab();
 
-}
+		int size = m_tabWidget.lineEditStack().sizeHint().height();
+		m_navigationBar.setIconSize(QSize(size, size));
+	}
 
+	~this()
+	{
+		m_autoSaver.changeOccurred();
+		m_autoSaver.saveIfNeccessary();
+	}
 
 
-   ~this()
-{
-    m_autoSaver.changeOccurred();
-    m_autoSaver.saveIfNeccessary();
-}
-
-
-QSize sizeHint()
-{
-    QRect desktopRect = QApplication::desktop().screenGeometry();
-    QSize size = desktopRect.size() * qreal(0.9);
-    return size;
-}
+	QSize sizeHint()
+	{
+		QRect desktopRect = QApplication.desktop().screenGeometry();
+		QSize size = desktopRect.size() * qreal(0.9);
+		return size;
+	}
 
 public:
-static QUrl guessUrlFromString(const QString &string)
-{
-    QString urlStr = string.trimmed();
-    QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
+
+	static QUrl guessUrlFromString(QString &string)
+	{
+		QString urlStr = string.trimmed();
+		QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
+
+		// Check if it looks like a qualified URL. Try parsing it and see.
+		bool hasSchema = test.exactMatch(urlStr);
+		if (hasSchema) {
+			QUrl url = QUrl.fromEncoded(urlStr.toUtf8(), QUrl.TolerantMode);
+			if (url.isValid())
+				return url;
+		}
 
-    // Check if it looks like a qualified URL. Try parsing it and see.
-    bool hasSchema = test.exactMatch(urlStr);
-    if (hasSchema) {
-        QUrl url = QUrl::fromEncoded(urlStr.toUtf8(), QUrl::TolerantMode);
-        if (url.isValid())
-            return url;
-    }
+		// Might be a file.
+		if (QFile.exists(urlStr)) {
+			QFileInfo info(urlStr);
+			return QUrl.fromLocalFile(info.absoluteFilePath());
+		}
 
-    // Might be a file.
-    if (QFile::exists(urlStr)) {
-        QFileInfo info(urlStr);
-        return QUrl::fromLocalFile(info.absoluteFilePath());
-    }
+		// Might be a shorturl - try to detect the schema.
+		if (!hasSchema) {
+			int dotIndex = urlStr.indexOf(QLatin1Char('.'));
+			if (dotIndex != -1) {
+				QString prefix = urlStr.left(dotIndex).toLower();
+				QByteArray schema = (prefix == QLatin1String("ftp")) ? prefix.toLatin1() : "http";
+				QUrl url =
+				QUrl.fromEncoded(schema + "://" + urlStr.toUtf8(), QUrl.TolerantMode);
+				if (url.isValid())
+					return url;
+			}
+		}
+
+		// Fall back to QUrl's own tolerant parser.
+		QUrl url = QUrl.fromEncoded(string.toUtf8(), QUrl.TolerantMode);
 
-    // Might be a shorturl - try to detect the schema.
-    if (!hasSchema) {
-        int dotIndex = urlStr.indexOf(QLatin1Char('.'));
-        if (dotIndex != -1) {
-            QString prefix = urlStr.left(dotIndex).toLower();
-            QByteArray schema = (prefix == QLatin1String("ftp")) ? prefix.toLatin1() : "http";
-            QUrl url =
-                QUrl::fromEncoded(schema + "://" + urlStr.toUtf8(), QUrl::TolerantMode);
-            if (url.isValid())
-                return url;
-        }
-    }
+		// finally for cases where the user just types in a hostname add http
+		if (url.scheme().isEmpty())
+			url = QUrl.fromEncoded("http://" + string.toUtf8(), QUrl.TolerantMode);
+		return url;
+	}
+
+	TabWidget tabWidget()
+	{
+		return m_tabWidget;
+	}
+
+	WebView currentTab()
+	{
+		return m_tabWidget.currentWebView();
+	}
 
-    // Fall back to QUrl's own tolerant parser.
-    QUrl url = QUrl::fromEncoded(string.toUtf8(), QUrl::TolerantMode);
+	QByteArray saveState(bool withTabs)
+	{
+		int version = 2;
+		QByteArray data;
+		QDataStream stream(&data, QIODevice.WriteOnly);
+
+		stream << qint32(BrowserMainWindowMagic);
+		stream << qint32(version);
 
-    // finally for cases where the user just types in a hostname add http
-    if (url.scheme().isEmpty())
-        url = QUrl::fromEncoded("http://" + string.toUtf8(), QUrl::TolerantMode);
-    return url;
-}
+		stream << size();
+		stream << !m_navigationBar.isHidden();
+		stream << !m_bookmarksToolbar.isHidden();
+		stream << !statusBar().isHidden();
+		if (withTabs)
+			stream << tabWidget().saveState();
+		else
+			stream << QByteArray();
+		return data;
+	}
 
 
+	bool restoreState(QByteArray state)
+	{
+		int version_ = 2;
+		QByteArray sd = state;
+		QDataStream stream(&sd, QIODevice.ReadOnly);
+		if (stream.atEnd())
+			return false;
 
-TabWidget* tabWidget()
-{
-    return m_tabWidget;
-}
+		qint32 marker;
+		qint32 v;
+		stream >> marker;
+		stream >> v;
+		if (marker != BrowserMainWindowMagic || v != version_)
+			return false;
 
-WebView* currentTab()
-{
-    return m_tabWidget.currentWebView();
-}
+		QSize size;
+		bool showToolbar;
+		bool showBookmarksBar;
+		bool showStatusbar;
+		QByteArray tabState;
 
-QByteArray saveState(bool withTabs)
-{
-    int version = 2;
-    QByteArray data;
-    QDataStream stream(&data, QIODevice::WriteOnly);
+		stream >> size;
+		stream >> showToolbar;
+		stream >> showBookmarksBar;
+		stream >> showStatusbar;
+		stream >> tabState;
 
-    stream << qint32(BrowserMainWindowMagic);
-    stream << qint32(version);
+		resize(size);
+
+		m_navigationBar.setVisible(showToolbar);
+		updateToolbarActionText(showToolbar);
+
+		m_bookmarksToolbar.setVisible(showBookmarksBar);
+		updateBookmarksToolbarActionText(showBookmarksBar);
 
-    stream << size();
-    stream << !m_navigationBar.isHidden();
-    stream << !m_bookmarksToolbar.isHidden();
-    stream << !statusBar().isHidden();
-    if (withTabs)
-        stream << tabWidget().saveState();
-    else
-        stream << QByteArray();
-    return data;
-}
+		statusBar().setVisible(showStatusbar);
+		updateStatusbarActionText(showStatusbar);
+
+		if (!tabWidget().restoreState(tabState))
+			return false;
+
+		return true;
+	}
+
+public:
+
+	void loadPage(QString page)
+	{
+		QUrl url = guessUrlFromString(page);
+		loadUrl(url);
+	}
 
 
-    bool restoreState(const QByteArray &state)
-{
-    int version = 2;
-    QByteArray sd = state;
-    QDataStream stream(&sd, QIODevice::ReadOnly);
-    if (stream.atEnd())
-        return false;
-
-    qint32 marker;
-    qint32 v;
-    stream >> marker;
-    stream >> v;
-    if (marker != BrowserMainWindowMagic || v != version)
-        return false;
-
-    QSize size;
-    bool showToolbar;
-    bool showBookmarksBar;
-    bool showStatusbar;
-    QByteArray tabState;
-
-    stream >> size;
-    stream >> showToolbar;
-    stream >> showBookmarksBar;
-    stream >> showStatusbar;
-    stream >> tabState;
-
-    resize(size);
-
-    m_navigationBar.setVisible(showToolbar);
-    updateToolbarActionText(showToolbar);
-
-    m_bookmarksToolbar.setVisible(showBookmarksBar);
-    updateBookmarksToolbarActionText(showBookmarksBar);
-
-    statusBar().setVisible(showStatusbar);
-    updateStatusbarActionText(showStatusbar);
-
-    if (!tabWidget().restoreState(tabState))
-        return false;
-
-    return true;
-}
-
-
-public slots:
-void loadPage(const QString &page)
-{
-    QUrl url = guessUrlFromString(page);
-    loadUrl(url);
-}
-
-
-void slotHome()
-{
-    QSettings settings;
-    settings.beginGroup(QLatin1String("MainWindow"));
-    QString home = settings.value(QLatin1String("home"), QLatin1String("http://qtsoftware.com/")).toString();
-    loadPage(home);
-}
+	void slotHome()
+	{
+		QSettings settings;
+		settings.beginGroup(QLatin1String("MainWindow"));
+		QString home = settings.value(QLatin1String("home"), QLatin1String("http://qtsoftware.com/")).toString();
+		loadPage(home);
+	}
 
 protected:
-    void closeEvent(QCloseEvent *event);
-{
-    if (m_tabWidget.count() > 1) {
-        int ret = QMessageBox.warning(this, QString(),
-                           tr("Are you sure you want to close the window?"
-                              "  There are %1 tab open").arg(m_tabWidget.count()),
-                           QMessageBox.Yes | QMessageBox.No,
-                           QMessageBox.No);
-        if (ret == QMessageBox.No) {
-            event.ignore();
-            return;
-        }
-    }
-    event.accept();
-    deleteLater();
-}
+
+	void closeEvent(QCloseEvent event);
+	{
+		if (m_tabWidget.count() > 1) {
+			int ret = QMessageBox.warning(this, QString(),
+				   tr("Are you sure you want to close the window?"
+				      "  There are %1 tab open").arg(m_tabWidget.count()),
+				   QMessageBox.Yes | QMessageBox.No,
+				   QMessageBox.No);
+			if (ret == QMessageBox.No) {
+				event.ignore();
+				return;
+			}
+		}
+		event.accept();
+		deleteLater();
+	}
+
+private:
+
+	void save()
+	{
+		BrowserApplication.instance().saveSession();
+
+		QSettings settings;
+		settings.beginGroup(QLatin1String("BrowserMainWindow"));
+		QByteArray data = saveState(false);
+		settings.setValue(QLatin1String("defaultState"), data);
+		settings.endGroup();
+	}
 
-private slots:
-void save()
-{
-    BrowserApplication::instance().saveSession();
+	void slotLoadProgress(int progress)
+	{
+		if (progress < 100 && progress > 0) {
+			m_chaseWidget.setAnimated(true);
+			m_stopReload.triggered.disconnect(&m_reload.trigger);
+			if (m_stopIcon.isNull())
+				m_stopIcon = style().standardIcon(QStyle.SP_BrowserStop);
+			m_stopReload.setIcon(m_stopIcon);
+			m_stopReload.triggered.connect(&m_stop.trigger);
+			m_stopReload.setToolTip(tr("Stop loading the current page"));
+		} else {
+			m_chaseWidget.setAnimated(false);
+			m_stopReload.triggered.disconnect(m_stop.trigger);
+			m_stopReload.setIcon(m_reloadIcon);
+			m_stopReload.triggered.connect(&m_reload.trigger);
+			m_stopReload.setToolTip(tr("Reload the current page"));
+		}
+	}
+
+	void slotUpdateStatusbar(QString &string);
+	{
+		statusBar().showMessage(string, 2000);
+	}
+
+	void slotUpdateWindowTitle(QString &title = QString())
+	{
+		if (title.isEmpty()) {
+			setWindowTitle(tr("Qt Demo Browser"));
+		} else {
+			version(Q_WS_MAC)
+			{
+				setWindowTitle(title);
+			} else {
+				setWindowTitle(tr("%1 - Qt Demo Browser", "Page title and Browser name").arg(title));
+			}
+		}
+	}
+
+	void loadUrl(QUrl &url);
+	{
+		if (!currentTab() || !url.isValid())
+			return;
+
+			m_tabWidget.currentLineEdit().setText(QString.fromUtf8(url.toEncoded()));
+			m_tabWidget.loadUrlInCurrentTab(url);
+	}
+
+	void slotPreferences()
+	{
+		SettingsDialog s = new SettingsDialog(this);
+		s.show();
+	}
+
+	void slotFileNew()
+	{
+		BrowserApplication.instance().newMainWindow();
+		BrowserMainWindow mw = BrowserApplication.instance().mainWindow();
+		mw.slotHome();
+	}
 
-    QSettings settings;
-    settings.beginGroup(QLatin1String("BrowserMainWindow"));
-    QByteArray data = saveState(false);
-    settings.setValue(QLatin1String("defaultState"), data);
-    settings.endGroup();
-}
+	void slotFileOpen()
+	{
+		QString file = QFileDialog.getOpenFileName(this, tr("Open Web Resource"), QString(),
+		tr("Web Resources (*.html *.htm *.svg *.png *.gif *.svgz);;All files (*.*)"));
+
+		if (file.isEmpty())
+			return;
+
+		loadPage(file);
+	}
+
+	void slotFilePrintPreview();
+	{
+		version(QT_NO_PRINTER)
+		{
+			if (!currentTab())
+				return;
+			QPrintPreviewDialog dialog = new QPrintPreviewDialog(this);
+			dialog.paintRequested.connect(&currentTab.print);
+			dialog.exec();
+		}
+	}
+
+	void slotFilePrint()
+	{
+		if (!currentTab())
+			return;
+		printRequested(currentTab().page().mainFrame());
+	}
+
+	void slotPrivateBrowsing()
+	{
+		QWebSettings settings = QWebSettings.globalSettings();
+		bool pb = settings.testAttribute(QWebSettings.PrivateBrowsingEnabled);
+		if (!pb) {
+			QString title = tr("Are you sure you want to turn on private browsing?");
+			QString text = tr("<b>%1</b><br><br>When private browsing in turned on,"
+			" webpages are not added to the history,"
+			" items are automatically removed from the Downloads window," \
+			" new cookies are not stored, current cookies can't be accessed," \
+			" site icons wont be stored, session wont be saved, " \
+			" and searches are not addded to the pop-up menu in the Google search box." \
+			"  Until you close the window, you can still click the Back and Forward buttons" \
+			" to return to the webpages you have opened.").arg(title);
 
-void slotLoadProgress(int progress)
-{
-    if (progress < 100 && progress > 0) {
-        m_chaseWidget.setAnimated(true);
-        disconnect(m_stopReload, SIGNAL(triggered()), m_reload, SLOT(trigger()));
-        if (m_stopIcon.isNull())
-            m_stopIcon = style().standardIcon(QStyle::SP_BrowserStop);
-        m_stopReload.setIcon(m_stopIcon);
-        connect(m_stopReload, SIGNAL(triggered()), m_stop, SLOT(trigger()));
-        m_stopReload.setToolTip(tr("Stop loading the current page"));
-    } else {
-        m_chaseWidget.setAnimated(false);
-        disconnect(m_stopReload, SIGNAL(triggered()), m_stop, SLOT(trigger()));
-        m_stopReload.setIcon(m_reloadIcon);
-        connect(m_stopReload, SIGNAL(triggered()), m_reload, SLOT(trigger()));
-        m_stopReload.setToolTip(tr("Reload the current page"));
-    }
-}
+			QMessageBox.StandardButton button = QMessageBox.question(this, QString(), text,
+			       QMessageBox.Ok | QMessageBox.Cancel,
+			       QMessageBox.Ok);
+			if (button == QMessageBox.Ok) {
+				settings.setAttribute(QWebSettings.PrivateBrowsingEnabled, true);
+			}
+		} else {
+			settings.setAttribute(QWebSettings.PrivateBrowsingEnabled, false);
+
+			QList<BrowserMainWindow*> windows = BrowserApplication.instance().mainWindows();
+			for (int i = 0; i < windows.count(); ++i) {
+				BrowserMainWindow window = windows.at(i);
+				window.m_lastSearch = QString.null;
+				window.tabWidget().clear();
+			}
+		}
+	}
+
+	void slotFileSaveAs()
+	{
+		BrowserApplication.downloadManager().download(currentTab().url(), true);
+	}
 
-    void slotUpdateStatusbar(const QString &string);
-{
-    statusBar().showMessage(string, 2000);
-}
+	void slotEditFind()
+	{
+		if (!currentTab())
+			return;
+		bool ok;
+		QString search = QInputDialog.getText(this, tr("Find"),
+			tr("Text:"), QLineEdit.Normal, m_lastSearch, &ok);
+		if (ok && !search.isEmpty()) {
+			m_lastSearch = search;
+			if (!currentTab().findText(m_lastSearch))
+				slotUpdateStatusbar(tr("\"%1\" not found.").arg(m_lastSearch));
+		}
+	}
+
+	void slotEditFindNext()
+	{
+		if (!currentTab() && !m_lastSearch.isEmpty())
+			return;
+		currentTab().findText(m_lastSearch);
+	}
+
+	void slotEditFindPrevious()
+	{
+		if (!currentTab() && !m_lastSearch.isEmpty())
+			return;
+		currentTab().findText(m_lastSearch, QWebPage.FindBackward);
+	}
 
 
-    void slotUpdateWindowTitle(const QString &title = QString())
-{
-    if (title.isEmpty()) {
-        setWindowTitle(tr("Qt Demo Browser"));
-    } else {
-version(Q_WS_MAC)
-{
-        setWindowTitle(title);
-} else {
-        setWindowTitle(tr("%1 - Qt Demo Browser", "Page title and Browser name").arg(title));
-}
-    }
-}
-
-    void loadUrl(const QUrl &url);
-{
-    if (!currentTab() || !url.isValid())
-        return;
-
-    m_tabWidget.currentLineEdit().setText(QString::fromUtf8(url.toEncoded()));
-    m_tabWidget.loadUrlInCurrentTab(url);
-}
-
-    void slotPreferences()
-{
-    SettingsDialog *s = new SettingsDialog(this);
-    s.show();
-}
+	void slotShowBookmarksDialog();
+	{
+		BookmarksDialog dialog = new BookmarksDialog(this);
+		dialog.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
+		dialog.show();
+	}
 
-void slotFileNew()
-{
-    BrowserApplication::instance().newMainWindow();
-    BrowserMainWindow *mw = BrowserApplication::instance().mainWindow();
-    mw.slotHome();
-}
-
-void slotFileOpen()
-{
-    QString file = QFileDialog::getOpenFileName(this, tr("Open Web Resource"), QString(),
-            tr("Web Resources (*.html *.htm *.svg *.png *.gif *.svgz);;All files (*.*)"));
-
-    if (file.isEmpty())
-        return;
+	void slotAddBookmark()
+	{
+		WebView webView = currentTab();
+		QString url = webView.url().toString();
+		QString title = webView.title();
+		AddBookmarkDialog dialog(url, title);
+		dialog.exec();
+	}
 
-    loadPage(file);
-}
-
-    void slotFilePrintPreview();
-{
-version(QT_NO_PRINTER)
+	void slotViewZoomIn()
 	{
-    if (!currentTab())
-        return;
-    QPrintPreviewDialog *dialog = new QPrintPreviewDialog(this);
-    connect(dialog, SIGNAL(paintRequested(QPrinter *)),
-            currentTab(), SLOT(print(QPrinter *)));
-    dialog.exec();
-}
-}
-
+		if (!currentTab())
+			return;
+		currentTab().setZoomFactor(currentTab().zoomFactor() + 0.1);
+	}
 
-    void slotFilePrint()
-{
-    if (!currentTab())
-        return;
-    printRequested(currentTab().page().mainFrame());
-}
+	void BslotViewZoomOut()
+	{
+		if (!currentTab())
+			return;
+		currentTab().setZoomFactor(currentTab().zoomFactor() - 0.1);
+	}
 
-    void slotPrivateBrowsing()
-{
-    QWebSettings *settings = QWebSettings::globalSettings();
-    bool pb = settings.testAttribute(QWebSettings::PrivateBrowsingEnabled);
-    if (!pb) {
-        QString title = tr("Are you sure you want to turn on private browsing?");
-        QString text = tr("<b>%1</b><br><br>When private browsing in turned on,"
-            " webpages are not added to the history,"
-            " items are automatically removed from the Downloads window," \
-            " new cookies are not stored, current cookies can't be accessed," \
-            " site icons wont be stored, session wont be saved, " \
-            " and searches are not addded to the pop-up menu in the Google search box." \
-            "  Until you close the window, you can still click the Back and Forward buttons" \
-            " to return to the webpages you have opened.").arg(title);
-
-        QMessageBox.StandardButton button = QMessageBox.question(this, QString(), text,
-                               QMessageBox.Ok | QMessageBox.Cancel,
-                               QMessageBox.Ok);
-        if (button == QMessageBox.Ok) {
-            settings.setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
-        }
-    } else {
-        settings.setAttribute(QWebSettings::PrivateBrowsingEnabled, false);
+	void slotViewResetZoom()
+	{
+		if (!currentTab())
+			return;
+		currentTab().setZoomFactor(1.0);
+	}
 
-        QList<BrowserMainWindow*> windows = BrowserApplication::instance().mainWindows();
-        for (int i = 0; i < windows.count(); ++i) {
-            BrowserMainWindow *window = windows.at(i);
-            window.m_lastSearch = QString::null;
-            window.tabWidget().clear();
-        }
-    }
-}
-
-    void slotFileSaveAs()
-{
-    BrowserApplication::downloadManager().download(currentTab().url(), true);
-}
+	void slotViewZoomTextOnly(bool enable)
+	{
+		if (!currentTab())
+			return;
+		currentTab().page().settings().setAttribute(QWebSettings.ZoomTextOnly, enable);
+	}
 
-    void slotEditFind()
-{
-    if (!currentTab())
-        return;
-    bool ok;
-    QString search = QInputDialog::getText(this, tr("Find"),
-                                          tr("Text:"), QLineEdit::Normal,
-                                          m_lastSearch, &ok);
-    if (ok && !search.isEmpty()) {
-        m_lastSearch = search;
-        if (!currentTab().findText(m_lastSearch))
-            slotUpdateStatusbar(tr("\"%1\" not found.").arg(m_lastSearch));
-    }
-}
-
-void slotEditFindNext()
-{
-    if (!currentTab() && !m_lastSearch.isEmpty())
-        return;
-    currentTab().findText(m_lastSearch);
-}
-
-void slotEditFindPrevious()
-{
-    if (!currentTab() && !m_lastSearch.isEmpty())
-        return;
-    currentTab().findText(m_lastSearch, QWebPage::FindBackward);
-}
+	void slotViewToolbar()
+	{
+		if (m_navigationBar.isVisible()) {
+			updateToolbarActionText(false);
+			m_navigationBar.close();
+		} else {
+			updateToolbarActionText(true);
+			m_navigationBar.show();
+		}
+		m_autoSaver.changeOccurred();
+	}
 
 
-    void slotShowBookmarksDialog();
-{
-    BookmarksDialog *dialog = new BookmarksDialog(this);
-    connect(dialog, SIGNAL(openUrl(const QUrl&)),
-            m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
-    dialog.show();
-}
-
-void slotAddBookmark()
-{
-    WebView *webView = currentTab();
-    QString url = webView.url().toString();
-    QString title = webView.title();
-    AddBookmarkDialog dialog(url, title);
-    dialog.exec();
-}
-
-void slotViewZoomIn()
-{
-    if (!currentTab())
-        return;
-    currentTab().setZoomFactor(currentTab().zoomFactor() + 0.1);
-}
-
-void BslotViewZoomOut()
-{
-    if (!currentTab())
-        return;
-    currentTab().setZoomFactor(currentTab().zoomFactor() - 0.1);
-}
-
-void slotViewResetZoom()
-{
-    if (!currentTab())
-        return;
-    currentTab().setZoomFactor(1.0);
-}
-
-void slotViewZoomTextOnly(bool enable)
-{
-    if (!currentTab())
-        return;
-    currentTab().page().settings().setAttribute(QWebSettings::ZoomTextOnly, enable);
-}
-
-
-    void slotViewToolbar()
-{
-    if (m_navigationBar.isVisible()) {
-        updateToolbarActionText(false);
-        m_navigationBar.close();
-    } else {
-        updateToolbarActionText(true);
-        m_navigationBar.show();
-    }
-    m_autoSaver.changeOccurred();
-}
-
+	void slotViewBookmarksBar()
+	{
+		if (m_bookmarksToolbar.isVisible()) {
+			updateBookmarksToolbarActionText(false);
+			m_bookmarksToolbar.close();
+		} else {
+			updateBookmarksToolbarActionText(true);
+			m_bookmarksToolbar.show();
+		}
+		m_autoSaver.changeOccurred();
+	}
 
-    void slotViewBookmarksBar()
-{
-    if (m_bookmarksToolbar.isVisible()) {
-        updateBookmarksToolbarActionText(false);
-        m_bookmarksToolbar.close();
-    } else {
-        updateBookmarksToolbarActionText(true);
-        m_bookmarksToolbar.show();
-    }
-    m_autoSaver.changeOccurred();
-}
-
-    void slotViewStatusbar()
-{
-    if (statusBar().isVisible()) {
-        updateStatusbarActionText(false);
-        statusBar().close();
-    } else {
-        updateStatusbarActionText(true);
-        statusBar().show();
-    }
-    m_autoSaver.changeOccurred();
-}
-
-void slotViewPageSource()
-{
-    if (!currentTab())
-        return;
+	void slotViewStatusbar()
+	{
+		if (statusBar().isVisible()) {
+			updateStatusbarActionText(false);
+			statusBar().close();
+		} else {
+			updateStatusbarActionText(true);
+			statusBar().show();
+		}
+		m_autoSaver.changeOccurred();
+	}
 
-    QString markup = currentTab().page().mainFrame().toHtml();
-    QPlainTextEdit *view = new QPlainTextEdit(markup);
-    view.setWindowTitle(tr("Page Source of %1").arg(currentTab().title()));
-    view.setMinimumWidth(640);
-    view.setAttribute(Qt.WA_DeleteOnClose);
-    view.show();
-}
-
+	void slotViewPageSource()
+	{
+		if (!currentTab())
+			return;
 
-void slotViewFullScreen(bool makeFullScreen)
-{
-    if (makeFullScreen) {
-        showFullScreen();
-    } else {
-        if (isMinimized())
-            showMinimized();
-        else if (isMaximized())
-            showMaximized();
-        else showNormal();
-    }
-}
-
-void slotWebSearch()
-{
-    m_toolbarSearch.lineEdit().selectAll();
-    m_toolbarSearch.lineEdit().setFocus();
-}
-
-
-    void slotToggleInspector(bool enable);
-{
-    QWebSettings::globalSettings().setAttribute(QWebSettings::DeveloperExtrasEnabled, enable);
-    if (enable) {
-        int result = QMessageBox.question(this, tr("Web Inspector"),
-                                           tr("The web inspector will only work correctly for pages that were loaded after enabling.\n"
-                                           "Do you want to reload all pages?"),
-                                           QMessageBox.Yes | QMessageBox.No);
-        if (result == QMessageBox.Yes) {
-            m_tabWidget.reloadAllTabs();
-        }
-    }
-}
+		QString markup = currentTab().page().mainFrame().toHtml();
+		QPlainTextEdit view = new QPlainTextEdit(markup);
+		view.setWindowTitle(tr("Page Source of %1").arg(currentTab().title()));
+		view.setMinimumWidth(640);
+		view.setAttribute(Qt.WA_DeleteOnClose);
+		view.show();
+	}
 
 
-    void slotAboutApplication()
-{
-    QMessageBox.about(this, tr("About"), tr(
-        "Version %1"
-        "<p>This demo demonstrates Qt's "
-        "webkit facilities in action, providing an example "
-        "browser for you to experiment with.<p>"
-        "<p>QtWebKit is based on the Open Source WebKit Project developed at <a href=\"http://webkit.org/\">http://webkit.org/</a>."
-        ).arg(QCoreApplication::applicationVersion()));
-}
+	void slotViewFullScreen(bool makeFullScreen)
+	{
+		if (makeFullScreen) {
+			showFullScreen();
+		} else {
+			if (isMinimized())
+				showMinimized();
+			else if (isMaximized())
+				showMaximized();
+			else showNormal();
+		}
+	}
 
-    void slotDownloadManager()
-{
-    BrowserApplication::downloadManager().show();
-}
+	void slotWebSearch()
+	{
+		m_toolbarSearch.lineEdit().selectAll();
+		m_toolbarSearch.lineEdit().setFocus();
+	}
+
+	void slotToggleInspector(bool enable);
+	{
+		QWebSettings.globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, enable);
+		if (enable) {
+			int result = QMessageBox.question(this, tr("Web Inspector"),
+						   tr("The web inspector will only work correctly for pages that were loaded after enabling.\n"
+						   "Do you want to reload all pages?"),
+						   QMessageBox.Yes | QMessageBox.No);
+			if (result == QMessageBox.Yes) {
+				m_tabWidget.reloadAllTabs();
+			}
+		}
+	}
 
-    void slotSelectLineEdit();
-{
-    m_tabWidget.currentLineEdit().selectAll();
-    m_tabWidget.currentLineEdit().setFocus();
-}
+	void slotAboutApplication()
+	{
+		QMessageBox.about(this, tr("About"), tr(
+			"Version %1"
+			"<p>This demo demonstrates Qt's "
+			"webkit facilities in action, providing an example "
+			"browser for you to experiment with.<p>"
+			"<p>QtWebKit is based on the Open Source WebKit Project developed at <a href=\"http://webkit.org/\">http://webkit.org/</a>."
+			).arg(QCoreApplication.applicationVersion()));
+	}
+
+	void slotDownloadManager()
+	{
+		BrowserApplication.downloadManager().show();
+	}
 
-    void slotAboutToShowBackMenu();
-{
-    m_historyBackMenu.clear();
-    if (!currentTab())
-        return;
-    QWebHistory *history = currentTab().history();
-    int historyCount = history.count();
-    for (int i = history.backItems(historyCount).count() - 1; i >= 0; --i) {
-        QWebHistoryItem item = history.backItems(history.count()).at(i);
-        QAction *action = new QAction(this);
-        action.setData(-1*(historyCount-i-1));
-        QIcon icon = BrowserApplication::instance().icon(item.url());
-        action.setIcon(icon);
-        action.setText(item.title());
-        m_historyBackMenu.addAction(action);
-    }
-}
+	void slotSelectLineEdit();
+	{
+		m_tabWidget.currentLineEdit().selectAll();
+		m_tabWidget.currentLineEdit().setFocus();
+	}
+
+	void slotAboutToShowBackMenu();
+	{
+		m_historyBackMenu.clear();
+		if (!currentTab())
+			return;
+		QWebHistory history = currentTab().history();
+		int historyCount = history.count();
+		for (int i = history.backItems(historyCount).count() - 1; i >= 0; --i) {
+			QWebHistoryItem item = history.backItems(history.count()).at(i);
+			QAction action = new QAction(this);
+			action.setData(-1*(historyCount-i-1));
+			QIcon icon = BrowserApplication.instance().icon(item.url());
+			action.setIcon(icon);
+			action.setText(item.title());
+			m_historyBackMenu.addAction(action);
+		}
+	}
 
 
-    void slotAboutToShowForwardMenu();
-{
-    m_historyForwardMenu.clear();
-    if (!currentTab())
-        return;
-    QWebHistory *history = currentTab().history();
-    int historyCount = history.count();
-    for (int i = 0; i < history.forwardItems(history.count()).count(); ++i) {
-        QWebHistoryItem item = history.forwardItems(historyCount).at(i);
-        QAction *action = new QAction(this);
-        action.setData(historyCount-i);
-        QIcon icon = BrowserApplication::instance().icon(item.url());
-        action.setIcon(icon);
-        action.setText(item.title());
-        m_historyForwardMenu.addAction(action);
-    }
-}
+	void slotAboutToShowForwardMenu();
+	{
+		m_historyForwardMenu.clear();
+		if (!currentTab())
+			return;
+		QWebHistory history = currentTab().history();
+		int historyCount = history.count();
+		for (int i = 0; i < history.forwardItems(history.count()).count(); ++i) {
+			QWebHistoryItem item = history.forwardItems(historyCount).at(i);
+			QAction action = new QAction(this);
+			action.setData(historyCount-i);
+			QIcon icon = BrowserApplication.instance().icon(item.url());
+			action.setIcon(icon);
+			action.setText(item.title());
+			m_historyForwardMenu.addAction(action);
+		}
+	}
 
-    void slotAboutToShowWindowMenu()
-{
-    m_windowMenu.clear();
-    m_windowMenu.addAction(m_tabWidget.nextTabAction());
-    m_windowMenu.addAction(m_tabWidget.previousTabAction());
-    m_windowMenu.addSeparator();
-    m_windowMenu.addAction(tr("Downloads"), this, SLOT(slotDownloadManager()), QKeySequence(tr("Alt+Ctrl+L", "Download Manager")));
+	void slotAboutToShowWindowMenu()
+	{
+		m_windowMenu.clear();
+		m_windowMenu.addAction(m_tabWidget.nextTabAction());
+		m_windowMenu.addAction(m_tabWidget.previousTabAction());
+		m_windowMenu.addSeparator();
+		m_windowMenu.addAction(tr("Downloads"), this, SLOT(slotDownloadManager()), QKeySequence(tr("Alt+Ctrl+L", "Download Manager")));
 
-    m_windowMenu.addSeparator();
-    QList<BrowserMainWindow*> windows = BrowserApplication::instance().mainWindows();
-    for (int i = 0; i < windows.count(); ++i) {
-        BrowserMainWindow *window = windows.at(i);
-        QAction *action = m_windowMenu.addAction(window.windowTitle(), this, SLOT(slotShowWindow()));
-        action.setData(i);
-        action.setCheckable(true);
-        if (window == this)
-            action.setChecked(true);
-    }
-}
+		m_windowMenu.addSeparator();
+		QList<BrowserMainWindow*> windows = BrowserApplication.instance().mainWindows();
+		for (int i = 0; i < windows.count(); ++i) {
+			BrowserMainWindow window = windows.at(i);
+			QAction action = m_windowMenu.addAction(window.windowTitle(), this, SLOT(slotShowWindow()));
+			action.setData(i);
+			action.setCheckable(true);
+			if (window == this)
+			action.setChecked(true);
+		}
+	}
 
-    void slotOpenActionUrl(QAction *action)
-{
-    int offset = action.data().toInt();
-    QWebHistory *history = currentTab().history();
-    if (offset < 0)
-        history.goToItem(history.backItems(-1*offset).first()); // back
-    else if (offset > 0)
-        history.goToItem(history.forwardItems(history.count() - offset + 1).back()); // forward
- }
-    void slotShowWindow()
-{
-    if (QAction *action = qobject_cast<QAction*>(sender())) {
-        QVariant v = action.data();
-        if (v.canConvert<int>()) {
-            int offset = qvariant_cast<int>(v);
-            QList<BrowserMainWindow*> windows = BrowserApplication::instance().mainWindows();
-            windows.at(offset).activateWindow();
-            windows.at(offset).currentTab().setFocus();
-        }
-    }
-}
+	void slotOpenActionUrl(QAction action)
+	{
+		int offset = action.data().toInt();
+		QWebHistory history = currentTab().history();
+		if (offset < 0)
+			history.goToItem(history.backItems(-1*offset).first()); // back
+		else if (offset > 0)
+			history.goToItem(history.forwardItems(history.count() - offset + 1).back()); // forward
+	}
+
+	void slotShowWindow()
+	{
+		if (QAction action = qobject_cast<QAction*>(sender())) {
+			QVariant v = action.data();
+			if (v.canConvert<int>()) {
+				int offset = qvariant_cast<int>(v);
+				QList<BrowserMainWindow*> windows = BrowserApplication.instance().mainWindows();
+				windows.at(offset).activateWindow();
+				windows.at(offset).currentTab().setFocus();
+			}
+		}
+	}
 
-void slotSwapFocus()
-{
-    if (currentTab().hasFocus())
-        m_tabWidget.currentLineEdit().setFocus();
-    else
-        currentTab().setFocus();
-}
+	void slotSwapFocus()
+	{
+		if (currentTab().hasFocus())
+			m_tabWidget.currentLineEdit().setFocus();
+		else
+			currentTab().setFocus();
+	}
 
-void printRequested(QWebFrame *frame)
-{
-	version(QT_NO_PRINTER)
+	void printRequested(QWebFrame frame)
 	{
-		QPrinter printer;
-		QPrintDialog *dialog = new QPrintDialog(&printer, this);
-		dialog.setWindowTitle(tr("Print Document"));
-		if (dialog.exec() != QDialog::Accepted)
-			return;
-		frame.print(&printer);
+		version(QT_NO_PRINTER)
+		{
+			QPrinter printer;
+			QPrintDialog dialog = new QPrintDialog(&printer, this);
+			dialog.setWindowTitle(tr("Print Document"));
+			if (dialog.exec() != QDialog.Accepted)
+				return;
+			frame.print(&printer);
+		}
 	}
-}
 
-    void geometryChangeRequested(const QRect &geometry)
-{
-    setGeometry(geometry);
-}
+	void geometryChangeRequested(QRect &geometry)
+	{
+		setGeometry(geometry);
+	}
 
 
-    void updateToolbarActionText(bool visible)
-{
-    m_viewToolbar.setText(!visible ? tr("Show Toolbar") : tr("Hide Toolbar"));
-}
+	void updateToolbarActionText(bool visible)
+	{
+		m_viewToolbar.setText(!visible ? tr("Show Toolbar") : tr("Hide Toolbar"));
+	}
     
-    void updateBookmarksToolbarActionText(bool visible)
-{
-    m_viewBookmarkBar.setText(!visible ? tr("Show Bookmarks bar") : tr("Hide Bookmarks bar"));
-}
-
+	void updateBookmarksToolbarActionText(bool visible)
+	{
+		m_viewBookmarkBar.setText(!visible ? tr("Show Bookmarks bar") : tr("Hide Bookmarks bar"));
+	}
 
 private:
-void loadDefaultState()
-{
-    QSettings settings;
-    settings.beginGroup(QLatin1String("BrowserMainWindow"));
-    QByteArray data = settings.value(QLatin1String("defaultState")).toByteArray();
-    restoreState(data);
-    settings.endGroup();
-}
 
+	void loadDefaultState()
+	{
+		QSettings settings;
+		settings.beginGroup(QLatin1String("BrowserMainWindow"));
+		QByteArray data = settings.value(QLatin1String("defaultState")).toByteArray();
+		restoreState(data);
+		settings.endGroup();
+	}
 
-    void setupMenu();
-{
-    new QShortcut(QKeySequence(Qt.Key_F6), this, SLOT(slotSwapFocus()));
+	void setupMenu();
+	{
+		new QShortcut(QKeySequence(Qt.Key_F6), this, SLOT(slotSwapFocus()));
 
-    // File
-    QMenu *fileMenu = menuBar().addMenu(tr("&File"));
+		// File
+		QMenu fileMenu = menuBar().addMenu(tr("&File"));
 
-    fileMenu.addAction(tr("&New Window"), this, SLOT(slotFileNew()), QKeySequence::New);
-    fileMenu.addAction(m_tabWidget.newTabAction());
-    fileMenu.addAction(tr("&Open File..."), this, SLOT(slotFileOpen()), QKeySequence::Open);
-    fileMenu.addAction(tr("Open &Location..."), this,
-                SLOT(slotSelectLineEdit()), QKeySequence(Qt.ControlModifier + Qt.Key_L));
-    fileMenu.addSeparator();
-    fileMenu.addAction(m_tabWidget.closeTabAction());
-    fileMenu.addSeparator();
-    fileMenu.addAction(tr("&Save As..."), this,
-                SLOT(slotFileSaveAs()), QKeySequence(QKeySequence::Save));
-    fileMenu.addSeparator();
-    BookmarksManager *bookmarksManager = BrowserApplication::bookmarksManager();
-    fileMenu.addAction(tr("&Import Bookmarks..."), bookmarksManager, SLOT(importBookmarks()));
-    fileMenu.addAction(tr("&Export Bookmarks..."), bookmarksManager, SLOT(exportBookmarks()));
-    fileMenu.addSeparator();
-    fileMenu.addAction(tr("P&rint Preview..."), this, SLOT(slotFilePrintPreview()));
-    fileMenu.addAction(tr("&Print..."), this, SLOT(slotFilePrint()), QKeySequence::Print);
-    fileMenu.addSeparator();
-    QAction *action = fileMenu.addAction(tr("Private &Browsing..."), this, SLOT(slotPrivateBrowsing()));
-    action.setCheckable(true);
-    fileMenu.addSeparator();
+		fileMenu.addAction(tr("&New Window"), this, SLOT(slotFileNew()), QKeySequence.New);
+		fileMenu.addAction(m_tabWidget.newTabAction());
+		fileMenu.addAction(tr("&Open File..."), this, SLOT(slotFileOpen()), QKeySequence.Open);
+		fileMenu.addAction(tr("Open &Location..."), this, SLOT(slotSelectLineEdit()), QKeySequence(Qt.ControlModifier + Qt.Key_L));
+		fileMenu.addSeparator();
+		fileMenu.addAction(m_tabWidget.closeTabAction());
+		fileMenu.addSeparator();
+		fileMenu.addAction(tr("&Save As..."), this,  SLOT(slotFileSaveAs()), QKeySequence(QKeySequence.Save));
+		fileMenu.addSeparator();
+		BookmarksManager bookmarksManager = BrowserApplication.bookmarksManager();
+		fileMenu.addAction(tr("&Import Bookmarks..."), bookmarksManager, SLOT(importBookmarks()));
+		fileMenu.addAction(tr("&Export Bookmarks..."), bookmarksManager, SLOT(exportBookmarks()));
+		fileMenu.addSeparator();
+		fileMenu.addAction(tr("P&rint Preview..."), this, SLOT(slotFilePrintPreview()));
+		fileMenu.addAction(tr("&Print..."), this, SLOT(slotFilePrint()), QKeySequence.Print);
+		fileMenu.addSeparator();
+		QAction action = fileMenu.addAction(tr("Private &Browsing..."), this, SLOT(slotPrivateBrowsing()));
+		action.setCheckable(true);
+		fileMenu.addSeparator();
 
-version(Q_WS_MAC) {
-    fileMenu.addAction(tr("&Quit"), BrowserApplication::instance(), SLOT(quitBrowser()), QKeySequence(Qt.CTRL | Qt.Key_Q));
-} else {
-    fileMenu.addAction(tr("&Quit"), this, SLOT(close()), QKeySequence(Qt.CTRL | Qt.Key_Q));
-}
+		version(Q_WS_MAC) {
+			fileMenu.addAction(tr("&Quit"), BrowserApplication.instance(), SLOT(quitBrowser()), QKeySequence(Qt.CTRL | Qt.Key_Q));
+		} else {
+			fileMenu.addAction(tr("&Quit"), this, SLOT(close()), QKeySequence(Qt.CTRL | Qt.Key_Q));
+		}
 
-    // Edit
-    QMenu *editMenu = menuBar().addMenu(tr("&Edit"));
-    QAction *m_undo = editMenu.addAction(tr("&Undo"));
-    m_undo.setShortcuts(QKeySequence::Undo);
-    m_tabWidget.addWebAction(m_undo, QWebPage::Undo);
-    QAction *m_redo = editMenu.addAction(tr("&Redo"));
-    m_redo.setShortcuts(QKeySequence::Redo);
-    m_tabWidget.addWebAction(m_redo, QWebPage::Redo);
-    editMenu.addSeparator();
-    QAction *m_cut = editMenu.addAction(tr("Cu&t"));
-    m_cut.setShortcuts(QKeySequence::Cut);
-    m_tabWidget.addWebAction(m_cut, QWebPage::Cut);
-    QAction *m_copy = editMenu.addAction(tr("&Copy"));
-    m_copy.setShortcuts(QKeySequence::Copy);
-    m_tabWidget.addWebAction(m_copy, QWebPage::Copy);
-    QAction *m_paste = editMenu.addAction(tr("&Paste"));
-    m_paste.setShortcuts(QKeySequence::Paste);
-    m_tabWidget.addWebAction(m_paste, QWebPage::Paste);
-    editMenu.addSeparator();
+		// Edit
+		QMenu editMenu = menuBar().addMenu(tr("&Edit"));
+		QAction m_undo = editMenu.addAction(tr("&Undo"));
+		m_undo.setShortcuts(QKeySequence.Undo);
+		m_tabWidget.addWebAction(m_undo, QWebPage.Undo);
+		QAction m_redo = editMenu.addAction(tr("&Redo"));
+		m_redo.setShortcuts(QKeySequence.Redo);
+		m_tabWidget.addWebAction(m_redo, QWebPage.Redo);
+		editMenu.addSeparator();
+		QAction m_cut = editMenu.addAction(tr("Cu&t"));
+		m_cut.setShortcuts(QKeySequence.Cut);
+		m_tabWidget.addWebAction(m_cut, QWebPage.Cut);
+		QAction m_copy = editMenu.addAction(tr("&Copy"));
+		m_copy.setShortcuts(QKeySequence.Copy);
+		m_tabWidget.addWebAction(m_copy, QWebPage.Copy);
+		QAction m_paste = editMenu.addAction(tr("&Paste"));
+		m_paste.setShortcuts(QKeySequence.Paste);
+		m_tabWidget.addWebAction(m_paste, QWebPage.Paste);
+		editMenu.addSeparator();
 
-    QAction *m_find = editMenu.addAction(tr("&Find"));
-    m_find.setShortcuts(QKeySequence::Find);
-    connect(m_find, SIGNAL(triggered()), this, SLOT(slotEditFind()));
-    new QShortcut(QKeySequence(Qt.Key_Slash), this, SLOT(slotEditFind()));
-
-    QAction *m_findNext = editMenu.addAction(tr("&Find Next"));
-    m_findNext.setShortcuts(QKeySequence::FindNext);
-    connect(m_findNext, SIGNAL(triggered()), this, SLOT(slotEditFindNext()));
+		QAction m_find = editMenu.addAction(tr("&Find"));
+		m_find.setShortcuts(QKeySequence.Find);
+		m_find.triggered().connect(&this.slotEditFind);
+		new QShortcut(QKeySequence(Qt.Key_Slash), this, SLOT(slotEditFind()));
 
-    QAction *m_findPrevious = editMenu.addAction(tr("&Find Previous"));
-    m_findPrevious.setShortcuts(QKeySequence::FindPrevious);
-    connect(m_findPrevious, SIGNAL(triggered()), this, SLOT(slotEditFindPrevious()));
+		QAction m_findNext = editMenu.addAction(tr("&Find Next"));
+		m_findNext.setShortcuts(QKeySequence.FindNext);
+		m_findNext.triggered().connect(&this.slotEditFindNext);
 
-    editMenu.addSeparator();
-    editMenu.addAction(tr("&Preferences"), this, SLOT(slotPreferences()), tr("Ctrl+,"));
-
-    // View
-    QMenu *viewMenu = menuBar().addMenu(tr("&View"));
+		QAction m_findPrevious = editMenu.addAction(tr("&Find Previous"));
+		m_findPrevious.setShortcuts(QKeySequence.FindPrevious);
+		m_findPrevious.triggered().connect(&this.slotEditFindPrevious);
 
-    m_viewBookmarkBar = new QAction(this);
-    updateBookmarksToolbarActionText(true);
-    m_viewBookmarkBar.setShortcut(tr("Shift+Ctrl+B"));
-    connect(m_viewBookmarkBar, SIGNAL(triggered()), this, SLOT(slotViewBookmarksBar()));
-    viewMenu.addAction(m_viewBookmarkBar);
+		editMenu.addSeparator();
+		editMenu.addAction(tr("&Preferences"), this, SLOT(slotPreferences()), tr("Ctrl+,"));
+
+		// View
+		QMenu viewMenu = menuBar().addMenu(tr("&View"));
 
-    m_viewToolbar = new QAction(this);
-    updateToolbarActionText(true);
-    m_viewToolbar.setShortcut(tr("Ctrl+|"));
-    connect(m_viewToolbar, SIGNAL(triggered()), this, SLOT(slotViewToolbar()));
-    viewMenu.addAction(m_viewToolbar);
+		m_viewBookmarkBar = new QAction(this);
+		updateBookmarksToolbarActionText(true);
+		m_viewBookmarkBar.setShortcut(tr("Shift+Ctrl+B"));
+		m_viewBookmarkBar.triggered().connect(&this.slotViewBookmarksBar);
+		viewMenu.addAction(m_viewBookmarkBar);
 
-    m_viewStatusbar = new QAction(this);
-    updateStatusbarActionText(true);
-    m_viewStatusbar.setShortcut(tr("Ctrl+/"));
-    connect(m_viewStatusbar, SIGNAL(triggered()), this, SLOT(slotViewStatusbar()));
-    viewMenu.addAction(m_viewStatusbar);
+		m_viewToolbar = new QAction(this);
+		updateToolbarActionText(true);
+		m_viewToolbar.setShortcut(tr("Ctrl+|"));
+		m_viewToolbar.triggered().connect(&this.slotViewToolbar);
+		viewMenu.addAction(m_viewToolbar);
 
-    viewMenu.addSeparator();
+		m_viewStatusbar = new QAction(this);
+		updateStatusbarActionText(true);
+		m_viewStatusbar.setShortcut(tr("Ctrl+/"));
+		m_viewStatusbar.triggered().connect(&this.slotViewStatusbar);
+		viewMenu.addAction(m_viewStatusbar);
 
-    m_stop = viewMenu.addAction(tr("&Stop"));
-    QList<QKeySequence> shortcuts;
-    shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Period));
-    shortcuts.append(Qt.Key_Escape);
-    m_stop.setShortcuts(shortcuts);
-    m_tabWidget.addWebAction(m_stop, QWebPage::Stop);
+		viewMenu.addSeparator();
 
-    m_reload = viewMenu.addAction(tr("Reload Page"));
-    m_reload.setShortcuts(QKeySequence::Refresh);
-    m_tabWidget.addWebAction(m_reload, QWebPage::Reload);
+		m_stop = viewMenu.addAction(tr("&Stop"));
+		QList<QKeySequence> shortcuts;
+		shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Period));
+		shortcuts.append(Qt.Key_Escape);
+		m_stop.setShortcuts(shortcuts);
+		m_tabWidget.addWebAction(m_stop, QWebPage.Stop);
 
-    viewMenu.addAction(tr("Zoom &In"), this, SLOT(slotViewZoomIn()), QKeySequence(Qt.CTRL | Qt.Key_Plus));
-    viewMenu.addAction(tr("Zoom &Out"), this, SLOT(slotViewZoomOut()), QKeySequence(Qt.CTRL | Qt.Key_Minus));
-    viewMenu.addAction(tr("Reset &Zoom"), this, SLOT(slotViewResetZoom()), QKeySequence(Qt.CTRL | Qt.Key_0));
-    QAction *zoomTextOnlyAction = viewMenu.addAction(tr("Zoom &Text Only"));
-    connect(zoomTextOnlyAction, SIGNAL(toggled(bool)), this, SLOT(slotViewZoomTextOnly(bool)));
-    zoomTextOnlyAction.setCheckable(true);
-    zoomTextOnlyAction.setChecked(false);
+		m_reload = viewMenu.addAction(tr("Reload Page"));
+		m_reload.setShortcuts(QKeySequence.Refresh);
+		m_tabWidget.addWebAction(m_reload, QWebPage.Reload);
 
-    viewMenu.addSeparator();
-    viewMenu.addAction(tr("Page S&ource"), this, SLOT(slotViewPageSource()), tr("Ctrl+Alt+U"));
-    QAction *a = viewMenu.addAction(tr("&Full Screen"), this, SLOT(slotViewFullScreen(bool)),  Qt.Key_F11);
-    a.setCheckable(true);
+		viewMenu.addAction(tr("Zoom &In"), this, SLOT(slotViewZoomIn()), QKeySequence(Qt.CTRL | Qt.Key_Plus));
+		viewMenu.addAction(tr("Zoom &Out"), this, SLOT(slotViewZoomOut()), QKeySequence(Qt.CTRL | Qt.Key_Minus));
+		viewMenu.addAction(tr("Reset &Zoom"), this, SLOT(slotViewResetZoom()), QKeySequence(Qt.CTRL | Qt.Key_0));
+		QAction zoomTextOnlyAction = viewMenu.addAction(tr("Zoom &Text Only"));
+		zoomTextOnlyAction.toggled().connect(&this.slotViewZoomTextOnly);
+		zoomTextOnlyAction.setCheckable(true);
+		zoomTextOnlyAction.setChecked(false);
+
+		viewMenu.addSeparator();
+		viewMenu.addAction(tr("Page S&ource"), this, SLOT(slotViewPageSource()), tr("Ctrl+Alt+U"));
+		QAction a = viewMenu.addAction(tr("&Full Screen"), this, SLOT(slotViewFullScreen(bool)),  Qt.Key_F11);
+		a.setCheckable(true);
 
-    // History
-    HistoryMenu *historyMenu = new HistoryMenu(this);
-    connect(historyMenu, SIGNAL(openUrl(const QUrl&)),
-            m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
-    connect(historyMenu, SIGNAL(hovered(const QString&)), this,
-            SLOT(slotUpdateStatusbar(const QString&)));
-    historyMenu.setTitle(tr("Hi&story"));
-    menuBar().addMenu(historyMenu);
-    QList<QAction*> historyActions;
+		// History
+		HistoryMenu historyMenu = new HistoryMenu(this);
+		historyMenu.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
+		historyMenu.hovered.connect(&this.slotUpdateStatusbar);
+		historyMenu.setTitle(tr("Hi&story"));
+		menuBar().addMenu(historyMenu);
+		QList<QAction> historyActions;
 
-    m_historyBack = new QAction(tr("Back"), this);
-    m_tabWidget.addWebAction(m_historyBack, QWebPage::Back);
-    m_historyBack.setShortcuts(QKeySequence::Back);
-    m_historyBack.setIconVisibleInMenu(false);
+		m_historyBack = new QAction(tr("Back"), this);
+		m_tabWidget.addWebAction(m_historyBack, QWebPage.Back);
+		m_historyBack.setShortcuts(QKeySequence.Back);
+		m_historyBack.setIconVisibleInMenu(false);
 
-    m_historyForward = new QAction(tr("Forward"), this);
-    m_tabWidget.addWebAction(m_historyForward, QWebPage::Forward);
-    m_historyForward.setShortcuts(QKeySequence::Forward);
-    m_historyForward.setIconVisibleInMenu(false);
-
-    QAction *m_historyHome = new QAction(tr("Home"), this);
-    connect(m_historyHome, SIGNAL(triggered()), this, SLOT(slotHome()));
-    m_historyHome.setShortcut(QKeySequence(Qt.CTRL | Qt.SHIFT | Qt.Key_H));
+		m_historyForward = new QAction(tr("Forward"), this);
+		m_tabWidget.addWebAction(m_historyForward, QWebPage.Forward);
+		m_historyForward.setShortcuts(QKeySequence.Forward);
+		m_historyForward.setIconVisibleInMenu(false);
 
-    m_restoreLastSession = new QAction(tr("Restore Last Session"), this);
-    connect(m_restoreLastSession, SIGNAL(triggered()), BrowserApplication::instance(), SLOT(restoreLastSession()));
-    m_restoreLastSession.setEnabled(BrowserApplication::instance().canRestoreSession());
+		QAction m_historyHome = new QAction(tr("Home"), this);
+		m_historyHome.triggered().connect(&this.slotHome);
+		m_historyHome.setShortcut(QKeySequence(Qt.CTRL | Qt.SHIFT | Qt.Key_H));
 
-    historyActions.append(m_historyBack);
-    historyActions.append(m_historyForward);
-    historyActions.append(m_historyHome);
-    historyActions.append(m_tabWidget.recentlyClosedTabsAction());
-    historyActions.append(m_restoreLastSession);
-    historyMenu.setInitialActions(historyActions);
+		m_restoreLastSession = new QAction(tr("Restore Last Session"), this);
+		m_restoreLastSession.triggered().connect(BrowserApplication.instance().restoreLastSession);
+		m_restoreLastSession.setEnabled(BrowserApplication.instance().canRestoreSession());
+
+		historyActions.append(m_historyBack);
+		historyActions.append(m_historyForward);
+		historyActions.append(m_historyHome);
+		historyActions.append(m_tabWidget.recentlyClosedTabsAction());
+		historyActions.append(m_restoreLastSession);
+		historyMenu.setInitialActions(historyActions);
 
-    // Bookmarks
-    BookmarksMenu *bookmarksMenu = new BookmarksMenu(this);
-    connect(bookmarksMenu, SIGNAL(openUrl(const QUrl&)),
-            m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
-    connect(bookmarksMenu, SIGNAL(hovered(const QString&)),
-            this, SLOT(slotUpdateStatusbar(const QString&)));
-    bookmarksMenu.setTitle(tr("&Bookmarks"));
-    menuBar().addMenu(bookmarksMenu);
-
-    QList<QAction*> bookmarksActions;
+		// Bookmarks
+		BookmarksMenu bookmarksMenu = new BookmarksMenu(this);
+		bookmarksMenu.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
+		bookmarksMenu.hovered.connect(&this.slotUpdateStatusbar);
+		bookmarksMenu.setTitle(tr("&Bookmarks"));
+		menuBar().addMenu(bookmarksMenu);
 
-    QAction *showAllBookmarksAction = new QAction(tr("Show All Bookmarks"), this);
-    connect(showAllBookmarksAction, SIGNAL(triggered()), this, SLOT(slotShowBookmarksDialog()));
-    m_addBookmark = new QAction(QIcon(QLatin1String(":addbookmark.png")), tr("Add Bookmark..."), this);
-    m_addBookmark.setIconVisibleInMenu(false);
+		QList<QAction> bookmarksActions;
 
-    connect(m_addBookmark, SIGNAL(triggered()), this, SLOT(slotAddBookmark()));
-    m_addBookmark.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_D));
+		QAction showAllBookmarksAction = new QAction(tr("Show All Bookmarks"), this);
+		showAllBookmarksAction.triggered().connect(&this.slotShowBookmarksDialog);
+		m_addBookmark = new QAction(QIcon(QLatin1String(":addbookmark.png")), tr("Add Bookmark..."), this);
+		m_addBookmark.setIconVisibleInMenu(false);
 
-    bookmarksActions.append(showAllBookmarksAction);
-    bookmarksActions.append(m_addBookmark);
-    bookmarksMenu.setInitialActions(bookmarksActions);
+		m_addBookmark.triggered().connect(&this.slotAddBookmark);
+		m_addBookmark.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_D));
 
-    // Window
-    m_windowMenu = menuBar().addMenu(tr("&Window"));
-    connect(m_windowMenu, SIGNAL(aboutToShow()),
-            this, SLOT(slotAboutToShowWindowMenu()));
-    slotAboutToShowWindowMenu();
+		bookmarksActions.append(showAllBookmarksAction);
+		bookmarksActions.append(m_addBookmark);
+		bookmarksMenu.setInitialActions(bookmarksActions);
 
-    QMenu *toolsMenu = menuBar().addMenu(tr("&Tools"));
-    toolsMenu.addAction(tr("Web &Search"), this, SLOT(slotWebSearch()), QKeySequence(tr("Ctrl+K", "Web Search")));
-#ifndef Q_CC_MINGW
-    a = toolsMenu.addAction(tr("Enable Web &Inspector"), this, SLOT(slotToggleInspector(bool)));
-    a.setCheckable(true);
-#endif
+		// Window
+		m_windowMenu = menuBar().addMenu(tr("&Window"));
+		m_windowMenu.aboutToShow().connect(&this.slotAboutToShowWindowMenu);
+		slotAboutToShowWindowMenu();
 
-    QMenu *helpMenu = menuBar().addMenu(tr("&Help"));
-    helpMenu.addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
-    helpMenu.addAction(tr("About &Demo Browser"), this, SLOT(slotAboutApplication()));
-}
-
+		QMenu toolsMenu = menuBar().addMenu(tr("&Tools"));
+		toolsMenu.addAction(tr("Web &Search"), this, SLOT(slotWebSearch()), QKeySequence(tr("Ctrl+K", "Web Search")));
+		version(Q_CC_MINGW)
+		{
+			a = toolsMenu.addAction(tr("Enable Web &Inspector"), this, SLOT(slotToggleInspector(bool)));
+			a.setCheckable(true);
+		}
 
-    void setupToolBar()
-{
-    setUnifiedTitleAndToolBarOnMac(true);
-    m_navigationBar = addToolBar(tr("Navigation"));
-    connect(m_navigationBar.toggleViewAction(), SIGNAL(toggled(bool)),
-            this, SLOT(updateToolbarActionText(bool)));
+		QMenu helpMenu = menuBar().addMenu(tr("&Help"));
+		helpMenu.addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
+		helpMenu.addAction(tr("About &Demo Browser"), this, SLOT(slotAboutApplication()));
+	}
+
+	void setupToolBar()
+	{
+		setUnifiedTitleAndToolBarOnMac(true);
+		m_navigationBar = addToolBar(tr("Navigation"));
+		m_navigationBar.toggleViewAction().toggled.connect(&this.updateToolbarActionText);
 
-    m_historyBack.setIcon(style().standardIcon(QStyle::SP_ArrowBack, 0, this));
-    m_historyBackMenu = new QMenu(this);
-    m_historyBack.setMenu(m_historyBackMenu);
-    connect(m_historyBackMenu, SIGNAL(aboutToShow()),
-            this, SLOT(slotAboutToShowBackMenu()));
-    connect(m_historyBackMenu, SIGNAL(triggered(QAction *)),
-            this, SLOT(slotOpenActionUrl(QAction *)));
-    m_navigationBar.addAction(m_historyBack);
+		m_historyBack.setIcon(style().standardIcon(QStyle.SP_ArrowBack, 0, this));
+		m_historyBackMenu = new QMenu(this);
+		m_historyBack.setMenu(m_historyBackMenu);
+		m_historyBackMenu.aboutToShow().connect(&this.slotAboutToShowBackMenu);
+		m_historyBackMenu.triggered.connect(&this.slotOpenActionUrl);
+		m_navigationBar.addAction(m_historyBack);
 
-    m_historyForward.setIcon(style().standardIcon(QStyle::SP_ArrowForward, 0, this));
-    m_historyForwardMenu = new QMenu(this);
-    connect(m_historyForwardMenu, SIGNAL(aboutToShow()),
-            this, SLOT(slotAboutToShowForwardMenu()));
-    connect(m_historyForwardMenu, SIGNAL(triggered(QAction *)),
-            this, SLOT(slotOpenActionUrl(QAction *)));
-    m_historyForward.setMenu(m_historyForwardMenu);
-    m_navigationBar.addAction(m_historyForward);
+		m_historyForward.setIcon(style().standardIcon(QStyle.SP_ArrowForward, 0, this));
+		m_historyForwardMenu = new QMenu(this);
+		m_historyForwardMenu.aboutToShow.connect(&this.slotAboutToShowForwardMenu);
+		m_historyForwardMenu.triggered.connect(&this.slotOpenActionUrl);
+		m_historyForward.setMenu(m_historyForwardMenu);
+		m_navigationBar.addAction(m_historyForward);
 
-    m_stopReload = new QAction(this);
-    m_reloadIcon = style().standardIcon(QStyle::SP_BrowserReload);
-    m_stopReload.setIcon(m_reloadIcon);
+		m_stopReload = new QAction(this);
+		m_reloadIcon = style().standardIcon(QStyle.SP_BrowserReload);
+		m_stopReload.setIcon(m_reloadIcon);
 
-    m_navigationBar.addAction(m_stopReload);
+		m_navigationBar.addAction(m_stopReload);
 
-    m_navigationBar.addWidget(m_tabWidget.lineEditStack());
+		m_navigationBar.addWidget(m_tabWidget.lineEditStack());
 
-    m_toolbarSearch = new ToolbarSearch(m_navigationBar);
-    m_navigationBar.addWidget(m_toolbarSearch);
-    connect(m_toolbarSearch, SIGNAL(search(const QUrl&)), SLOT(loadUrl(const QUrl&)));
+		m_toolbarSearch = new ToolbarSearch(m_navigationBar);
+		m_navigationBar.addWidget(m_toolbarSearch);
+		m_toolbarSearch.search.connect(&loadUrl);
 
-    m_chaseWidget = new ChaseWidget(this);
-    m_navigationBar.addWidget(m_chaseWidget);
-}
+		m_chaseWidget = new ChaseWidget(this);
+		m_navigationBar.addWidget(m_chaseWidget);
+	}
 
-    void updateStatusbarActionText(bool visible)
-{
-    m_viewStatusbar.setText(!visible ? tr("Show Status Bar") : tr("Hide Status Bar"));
-}
-
+	void updateStatusbarActionText(bool visible)
+	{
+		m_viewStatusbar.setText(!visible ? tr("Show Status Bar") : tr("Hide Status Bar"));
+	}
 
 private:
-    QToolBar *m_navigationBar;
-    ToolbarSearch *m_toolbarSearch;
-    BookmarksToolBar *m_bookmarksToolbar;
-    ChaseWidget *m_chaseWidget;
-    TabWidget *m_tabWidget;
-    AutoSaver *m_autoSaver;
 
-    QAction *m_historyBack;
-    QMenu *m_historyBackMenu;
-    QAction *m_historyForward;
-    QMenu *m_historyForwardMenu;
-    QMenu *m_windowMenu;
+	QToolBar m_navigationBar;
+	ToolbarSearch m_toolbarSearch;
+	BookmarksToolBar m_bookmarksToolbar;
+	ChaseWidget m_chaseWidget;
+	TabWidget m_tabWidget;
+	AutoSaver m_autoSaver;
+
+	QAction m_historyBack;
+	QMenu m_historyBackMenu;
+	QAction m_historyForward;
+	QMenu m_historyForwardMenu;
+	QMenu m_windowMenu;
 
-    QAction *m_stop;
-    QAction *m_reload;
-    QAction *m_stopReload;
-    QAction *m_viewToolbar;
-    QAction *m_viewBookmarkBar;
-    QAction *m_viewStatusbar;
-    QAction *m_restoreLastSession;
-    QAction *m_addBookmark;
+	QAction m_stop;
+	QAction m_reload;
+	QAction m_stopReload;
+	QAction m_viewToolbar;
+	QAction m_viewBookmarkBar;
+	QAction m_viewStatusbar;
+	QAction m_restoreLastSession;
+	QAction m_addBookmark;
 
-    QIcon m_reloadIcon;
-    QIcon m_stopIcon;
+	QIcon m_reloadIcon;
+	QIcon m_stopIcon;
 
-    QString m_lastSearch;
+	QString m_lastSearch;
 }