HelpBrowser::HelpBrowser( QWidget * parent ): QWidget(parent) { QRect availableScreenRect = qApp->desktop()->availableGeometry(this); mSizeHint = QSize( availableScreenRect.width() * 0.4, availableScreenRect.height() * 0.7 ); QtCollider::WebPage *webPage = new QtCollider::WebPage(this); webPage->setDelegateReload(true); webPage->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); mWebView = new QWebView; mWebView->setPage( webPage ); mWebView->settings()->setAttribute( QWebSettings::LocalStorageEnabled, true ); mWebView->setContextMenuPolicy( Qt::CustomContextMenu ); // Set the style's standard palette to avoid system's palette incoherencies // get in the way of rendering web pages mWebView->setPalette( style()->standardPalette() ); mWebView->installEventFilter(this); mLoadProgressIndicator = new LoadProgressIndicator; mLoadProgressIndicator->setIndent(10); QVBoxLayout *layout = new QVBoxLayout; layout->setContentsMargins(0,0,0,0); layout->setSpacing(0); layout->addWidget(mWebView); setLayout(layout); connect( mWebView, SIGNAL(linkClicked(QUrl)), this, SLOT(onLinkClicked(QUrl)) ); connect( mWebView, SIGNAL(loadStarted()), mLoadProgressIndicator, SLOT(start()) ); connect( mWebView, SIGNAL(loadFinished(bool)), mLoadProgressIndicator, SLOT(stop()) ); connect( mWebView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenuRequest(QPoint)) ); connect( webPage->action(QWebPage::Reload), SIGNAL(triggered(bool)), this, SLOT(onReload()) ); connect( webPage, SIGNAL(jsConsoleMsg(QString,int,QString)), this, SLOT(onJsConsoleMsg(QString,int,QString)) ); ScProcess * scProcess = Main::scProcess(); connect( scProcess, SIGNAL(response(QString,QString)), this, SLOT(onScResponse(QString,QString)) ); connect( scProcess, SIGNAL(finished(int)), mLoadProgressIndicator, SLOT(stop()) ); // FIXME: should actually respond to class library shutdown, but we don't have that signal connect( scProcess, SIGNAL(classLibraryRecompiled()), mLoadProgressIndicator, SLOT(stop()) ); createActions(); applySettings( Main::settings() ); setFocusProxy(mWebView); }
HelpBrowser::HelpBrowser( QWidget * parent ): QWidget(parent) { QRect availableScreenRect = qApp->desktop()->availableGeometry(this); mSizeHint = QSize( availableScreenRect.width() * 0.4, availableScreenRect.height() * 0.7 ); QtCollider::WebPage *webPage = new QtCollider::WebPage(this); webPage->setDelegateReload(true); webPage->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); mWebView = new QWebView; mWebView->setPage( webPage ); mWebView->settings()->setAttribute( QWebSettings::LocalStorageEnabled, true ); // NOTE: we assume all web page shortcuts have Qt::WidgetShortcut context mWebView->setContextMenuPolicy( Qt::ActionsContextMenu ); mWebView->addAction( webPage->action( QWebPage::Copy ) ); mWebView->addAction( webPage->action( QWebPage::Paste ) ); // Set the style's standard palette to avoid system's palette incoherencies // get in the way of rendering web pages mWebView->setPalette( style()->standardPalette() ); mWebView->installEventFilter(this); mLoadProgressIndicator = new LoadProgressIndicator; mLoadProgressIndicator->setIndent(10); QToolBar *toolBar = new QToolBar; toolBar->setIconSize( QSize(16,16) ); QAction *action = toolBar->addAction("Home"); connect( action, SIGNAL(triggered()), this, SLOT(goHome()) ); toolBar->addAction( mWebView->pageAction(QWebPage::Back) ); toolBar->addAction( mWebView->pageAction(QWebPage::Forward) ); toolBar->addAction( mWebView->pageAction(QWebPage::Reload) ); toolBar->addWidget(mLoadProgressIndicator); QVBoxLayout *layout = new QVBoxLayout; layout->setContentsMargins(0,0,0,0); layout->setSpacing(0); layout->addWidget(toolBar); layout->addWidget(mWebView); setLayout(layout); connect( mWebView, SIGNAL(linkClicked(QUrl)), this, SLOT(onLinkClicked(QUrl)) ); connect( mWebView, SIGNAL(loadStarted()), mLoadProgressIndicator, SLOT(start()) ); connect( mWebView, SIGNAL(loadFinished(bool)), mLoadProgressIndicator, SLOT(stop()) ); connect( webPage->action(QWebPage::Reload), SIGNAL(triggered(bool)), this, SLOT(onReload()) ); connect( webPage, SIGNAL(jsConsoleMsg(QString,int,QString)), this, SLOT(onJsConsoleMsg(QString,int,QString)) ); ScProcess * scProcess = Main::scProcess(); connect( scProcess, SIGNAL(response(QString,QString)), this, SLOT(onScResponse(QString,QString)) ); connect( scProcess, SIGNAL(finished(int)), mLoadProgressIndicator, SLOT(stop()) ); // FIXME: should actually respond to class library shutdown, but we don't have that signal connect( scProcess, SIGNAL(classLibraryRecompiled()), mLoadProgressIndicator, SLOT(stop()) ); mEvaluateShortcut = new QShortcut(this); mEvaluateShortcut->setContext( Qt::WidgetWithChildrenShortcut ); connect( mEvaluateShortcut, SIGNAL(activated()), this, SLOT(evaluateSelection()) ); applySettings( Main::settings() ); }