changeset 13412:6579e4c2769a

Added basic browsing capabilities.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Tue, 12 Apr 2011 14:09:48 +0200
parents 9969324c53c3
children 82196fa2a103
files gui//Quint.pro gui//src/BrowserWidget.cpp gui//src/BrowserWidget.h gui//src/MainWindow.cpp gui//src/MainWindow.h
diffstat 5 files changed, 93 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/gui//Quint.pro	Tue Apr 12 13:01:02 2011 +0200
+++ b/gui//Quint.pro	Tue Apr 12 14:09:48 2011 +0200
@@ -45,7 +45,8 @@
     src/FilesDockWidget.cpp \
     src/CodeEdit.cpp \
     src/FileEditorMdiSubWindow.cpp \
-    src/SyntaxHighlighter.cpp
+    src/SyntaxHighlighter.cpp \
+    src/BrowserWidget.cpp
 
 HEADERS += \
         src/TerminalCharacterDecoder.h \
@@ -87,7 +88,8 @@
     src/FilesDockWidget.h \
     src/CodeEdit.h \
     src/FileEditorMdiSubWindow.h \
-    src/SyntaxHighlighter.h
+    src/SyntaxHighlighter.h \
+    src/BrowserWidget.h
 
 INCFLAGS = -g3 $$system(mkoctfile -p INCFLAGS)
 LFLAGS = $$system(mkoctfile -p LFLAGS) \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui//src/BrowserWidget.cpp	Tue Apr 12 14:09:48 2011 +0200
@@ -0,0 +1,55 @@
+#include "BrowserWidget.h"
+#include <QVBoxLayout>
+#include <QAction>
+#include <QStyle>
+#include <QApplication>
+
+BrowserWidget::BrowserWidget(QWidget *parent)
+    : QWidget(parent) {
+    construct();
+}
+
+void BrowserWidget::construct() {
+    QStyle *style = QApplication::style();
+    m_navigationToolBar = new QToolBar(this);
+    m_webView = new QWebView(this);
+    m_urlLineEdit = new QLineEdit(this);
+    m_statusBar = new QStatusBar(this);
+
+    QAction *backAction = new QAction(style->standardIcon(QStyle::SP_ArrowLeft),
+        "", m_navigationToolBar);
+    QAction *forwardAction = new QAction(style->standardIcon(QStyle::SP_ArrowRight),
+        "", m_navigationToolBar);
+
+    m_navigationToolBar->addAction(backAction);
+    m_navigationToolBar->addAction(forwardAction);
+    m_navigationToolBar->addWidget(m_urlLineEdit);
+
+    QVBoxLayout *layout = new QVBoxLayout();
+    layout->addWidget(m_navigationToolBar);
+    layout->addWidget(m_webView);
+    layout->addWidget(m_statusBar);
+    layout->setMargin(2);
+    setLayout(layout);
+
+    connect(backAction, SIGNAL(triggered()), m_webView, SLOT(back()));
+    connect(forwardAction, SIGNAL(triggered()), m_webView, SLOT(forward()));
+    connect(m_webView, SIGNAL(urlChanged(QUrl)), this, SLOT(setUrl(QUrl)));
+    connect(m_urlLineEdit, SIGNAL(returnPressed()), this, SLOT(jumpToWebsite()));
+    connect(m_webView, SIGNAL(statusBarMessage(QString)), m_statusBar, SLOT(showMessage(QString)));
+}
+
+void BrowserWidget::setUrl(QUrl url) {
+    m_urlLineEdit->setText(url.toString());
+}
+
+void BrowserWidget::jumpToWebsite() {
+    QString url = m_urlLineEdit->text();
+    if(!url.startsWith("http://"))
+        url = "http://" + url;
+    load(url);
+}
+
+void BrowserWidget::load(QUrl url) {
+    m_webView->load(url);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui//src/BrowserWidget.h	Tue Apr 12 14:09:48 2011 +0200
@@ -0,0 +1,29 @@
+#ifndef BROWSERMDISUBWINDOW_H
+#define BROWSERMDISUBWINDOW_H
+
+#include <QWidget>
+#include <QToolBar>
+#include <QLineEdit>
+#include <QtWebKit/QWebView>
+#include <QStatusBar>
+
+class BrowserWidget : public QWidget {
+    Q_OBJECT
+public:
+    BrowserWidget(QWidget *parent = 0);
+    void load(QUrl url);
+
+public slots:
+    void setUrl(QUrl url);
+    void jumpToWebsite();
+
+private:
+    void construct();
+
+    QLineEdit *m_urlLineEdit;
+    QToolBar *m_navigationToolBar;
+    QWebView *m_webView;
+    QStatusBar *m_statusBar;
+};
+
+#endif // BROWSERMDISUBWINDOW_H
--- a/gui//src/MainWindow.cpp	Tue Apr 12 13:01:02 2011 +0200
+++ b/gui//src/MainWindow.cpp	Tue Apr 12 14:09:48 2011 +0200
@@ -49,7 +49,7 @@
 }
 
 void MainWindow::openWebPage(QString url) {
-    m_webView->load(QUrl(url));
+    m_browserWidget->load(QUrl(url));
 }
 
 void MainWindow::closeEvent(QCloseEvent *closeEvent) {
@@ -69,11 +69,11 @@
     m_filesDockWidget = new FilesDockWidget(this);
     m_openedFiles = new QMdiArea(this);
     m_statusBar = new QStatusBar(this);
-    m_webView = new QWebView(this);
+    m_browserWidget = new BrowserWidget(this);
     m_centralTabWidget = new QTabWidget(this);
     m_centralTabWidget->addTab(m_octaveTerminal, "Terminal");
     m_centralTabWidget->addTab(m_openedFiles, "Editor");
-    m_centralTabWidget->addTab(m_webView, "Documentation");
+    m_centralTabWidget->addTab(m_browserWidget, "Documentation");
 
     // TODO: Add meaningfull toolbar items.
     QAction *commandAction = new QAction(style->standardIcon(QStyle::SP_CommandLink),
--- a/gui//src/MainWindow.h	Tue Apr 12 13:01:02 2011 +0200
+++ b/gui//src/MainWindow.h	Tue Apr 12 14:09:48 2011 +0200
@@ -25,13 +25,13 @@
 #include <QMdiArea>
 #include <QStatusBar>
 #include <QToolBar>
-#include <QtWebKit/QWebView>
 #include "OctaveTerminal.h"
 #include "OctaveLink.h"
 #include "VariablesDockWidget.h"
 #include "HistoryDockWidget.h"
 #include "FilesDockWidget.h"
 #include "CodeEdit.h"
+#include "BrowserWidget.h"
 
 // Octave includes
 #undef PACKAGE_BUGREPORT
@@ -115,7 +115,7 @@
     QTabWidget *m_centralTabWidget;
     QStatusBar *m_statusBar;
     QToolBar *m_generalPurposeToolbar;
-    QWebView *m_webView;
+    BrowserWidget *m_browserWidget;
     QString m_settingsFile;
 
     // Threads for running octave and managing the data interaction.