void ArthurFrame::showSource() { // Check for existing source if (findChild<QTextBrowser *>()) return; QString contents; if (m_sourceFileName.isEmpty()) { contents = QString("No source for widget: '%1'").arg(objectName()); } else { QFile f(m_sourceFileName); if (!f.open(QFile::ReadOnly)) contents = QString("Could not open file: '%1'").arg(m_sourceFileName); else contents = f.readAll(); } contents.replace('&', "&"); contents.replace('<', "<"); contents.replace('>', ">"); QStringList keywords; keywords << "for " << "if " << "switch " << " int " << "#include " << "const" << "void " << "uint " << "case " << "double " << "#define " << "static" << "new" << "this"; foreach (QString keyword, keywords) contents.replace(keyword, QLatin1String("<font color=olive>") + keyword + QLatin1String("</font>")); contents.replace("(int ", "(<font color=olive><b>int </b></font>"); QStringList ppKeywords; ppKeywords << "#ifdef" << "#ifndef" << "#if" << "#endif" << "#else"; foreach (QString keyword, ppKeywords) contents.replace(keyword, QLatin1String("<font color=navy>") + keyword + QLatin1String("</font>")); contents.replace(QRegExp("(\\d\\d?)"), QLatin1String("<font color=navy>\\1</font>")); QRegExp commentRe("(//.+)\\n"); commentRe.setMinimal(true); contents.replace(commentRe, QLatin1String("<font color=red>\\1</font>\n")); QRegExp stringLiteralRe("(\".+\")"); stringLiteralRe.setMinimal(true); contents.replace(stringLiteralRe, QLatin1String("<font color=green>\\1</font>")); QString html = contents; html.prepend("<html><pre>"); html.append("</pre></html>"); QTextBrowser *sourceViewer = new QTextBrowser(0); sourceViewer->setWindowTitle("Source: " + m_sourceFileName.mid(5)); sourceViewer->setParent(this, Qt::Dialog); sourceViewer->setAttribute(Qt::WA_DeleteOnClose); sourceViewer->setLineWrapMode(QTextEdit::NoWrap); sourceViewer->setHtml(html); sourceViewer->resize(600, 600); sourceViewer->show(); }
/* * This is the TextBrowser News tab, which shows the latest news from Distro news feed */ void MainWindow::initTabNews() { QString aux(StrConstants::getTabNewsName()); QWidget *tabNews = new QWidget(); QGridLayout *gridLayoutX = new QGridLayout(tabNews); gridLayoutX->setSpacing(0); gridLayoutX->setMargin(0); QTextBrowser *text = new QTextBrowser(tabNews); text->setObjectName("textBrowser"); text->setReadOnly(true); text->setFrameShape(QFrame::NoFrame); text->setFrameShadow(QFrame::Plain); text->setOpenExternalLinks(true); gridLayoutX->addWidget(text, 0, 0, 1, 1); text->show(); #if QT_VERSION > 0x050000 int tindex = ui->twProperties->insertTab(ctn_TABINDEX_NEWS, tabNews, QApplication::translate ( "MainWindow", aux.toUtf8(), 0/*, QApplication::UnicodeUTF8*/ ) ); ui->twProperties->setTabText(ui->twProperties->indexOf(tabNews), QApplication::translate( "MainWindow", aux.toUtf8(), 0/*, QApplication::UnicodeUTF8*/)); #else int tindex = ui->twProperties->insertTab(ctn_TABINDEX_NEWS, tabNews, QApplication::translate ( "MainWindow", aux.toUtf8(), 0, QApplication::UnicodeUTF8 ) ); ui->twProperties->setTabText(ui->twProperties->indexOf(tabNews), QApplication::translate( "MainWindow", aux.toUtf8(), 0, QApplication::UnicodeUTF8)); #endif SearchBar *searchBar = new SearchBar(this); connect(searchBar, SIGNAL(textChanged(QString)), this, SLOT(searchBarTextChangedInTextBrowser(QString))); connect(searchBar, SIGNAL(closed()), this, SLOT(searchBarClosedInTextBrowser())); connect(searchBar, SIGNAL(findNext()), this, SLOT(searchBarFindNextInTextBrowser())); connect(searchBar, SIGNAL(findPrevious()), this, SLOT(searchBarFindPreviousInTextBrowser())); gridLayoutX->addWidget(searchBar, 1, 0, 1, 1); connect(text, SIGNAL(sourceChanged(QUrl)), this, SLOT(onTabNewsSourceChanged(QUrl))); text->show(); ui->twProperties->setCurrentIndex(tindex); text->setFocus(); }
int main(int argc, char **argv) { QApplication app(argc, argv); //! [0] QTextBrowser browser; QColor linkColor(Qt::red); QString sheet = QString::fromLatin1("a { text-decoration: underline; color: %1 }").arg(linkColor.name()); browser.document()->setDefaultStyleSheet(sheet); //! [0] browser.setSource(QUrl("../../../html/index.html")); browser.resize(800, 600); browser.show(); return app.exec(); }
void MainWindow::doc() { std::ifstream in; std::string s,line; in.open("doc/help",ios::in); while (getline(in,line)) { s += line + "\n"; } in.close(); QString qstr = QString::fromStdString(s); //img_label->setText(qstr); QTextBrowser *doc = new QTextBrowser(); doc->append(qstr); doc->show(); doc->setDocumentTitle(tr("Help")); }
/*! Shows the application log. \todo Write some sort of log viewer. */ void MvdMainWindow::showLog() { QFileInfo fi(paths().logFile()); QFile file(fi.absoluteFilePath()); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::warning(this, MVD_CAPTION, tr("Failed to open the log file.")); return; } QTextBrowser *viewer = new QTextBrowser; viewer->setWindowFlags(Qt::Tool); viewer->setWindowModality(Qt::NonModal); viewer->resize(640, 480); new MvdLogSyntaxHighlighter(viewer->document()); QTextStream stream(&file); QString text = stream.readAll(); viewer->setPlainText(text); viewer->show(); }
/* * Initialize the Help tab with basic information about using OctoPkg */ void MainWindow::initTabHelpUsage() { QWidget *tabHelpUsage = new QWidget(); QGridLayout *gridLayoutX = new QGridLayout(tabHelpUsage); gridLayoutX->setSpacing(0); gridLayoutX->setMargin(0); QTextBrowser *text = new QTextBrowser(tabHelpUsage); text->setObjectName("textBrowser"); text->setReadOnly(true); text->setFrameShape(QFrame::NoFrame); text->setFrameShadow(QFrame::Plain); text->setOpenExternalLinks(true); gridLayoutX->addWidget(text, 0, 0, 1, 1); QString iconPath = "<img height=\"16\" width=\"16\" src=\":/resources/images/"; QString strForMoreInfo = tr("For more information, visit:"); QString html = QString("<h2>OctoPkg</h2>") + QString("<h3><p>") + tr("A Qt5-based pkgng front-end,") + " " + tr("licensed under the terms of") + " "; if ((!WMHelper::isKDERunning() && (!WMHelper::isRazorQtRunning()))) { html += QString("<a style=\"color:'#4BC413'\" href=\"http://www.gnu.org/licenses/gpl-2.0.html\">GPL v2</a>.</p></h3>") + QString("<h4><p>") + strForMoreInfo + " " + QString("<a style=\"color:'#4BC413'\" href=\"http://octopkg.wordpress.com\">http://octopkg.wordpress.com</a>.</p></h4><br>"); } else { html += QString("<a href=\"http://www.gnu.org/licenses/gpl-2.0.html\">GPL v2</a>.</p></h3>") + QString("<h4><p>") + strForMoreInfo + " " + QString("<a href=\"http://octopkg.wordpress.com\">http://octopkg.wordpress.com</a>.</p></h4><br>"); } html += tr("Package classification:") + QString("<ul type=\"square\"><li>") + iconPath + "installed.png\"/> " + tr("An installed package") + QString("</li>") + QString("<li>") + iconPath + "unrequired.png\"/> " + tr("An installed package (not required by others)") + QString("</li>") + QString("</li>") + QString("<li>") + iconPath + "noninstalled.png\"/> " + tr("A non installed package") + QString("</li>") + QString("<li>") + iconPath + "outdated.png\"/> " + tr("An outdated package") + QString("</li>") + QString("</li></ul>") + /*QString("<li>") + iconPath + "newer.png\"/> " + tr("A newer than repository package") + QString("</li></ul>") +*/ tr("Basic usage help:") + QString("<ul><li>") + tr("Position the mouse over a package to see its description") + QString("</li><li>") + tr("Double click an installed package to see its contents") + QString("</li><li>") + tr("Right click package to install/reinstall or remove it") + QString("</li></ul>") + tr("Alt+key sequences:") + QString("<ul><li>") + tr("Alt+1 to switch to 'Info' tab") + QString("</li><li>") + tr("Alt+2 to switch to 'Files' tab") + QString("</li><li>") + tr("Alt+3 to switch to 'Transaction' tab") + QString("</li><li>") + tr("Alt+4 to switch to 'Output' tab") + QString("</li><li>") + tr("Alt+5 to switch to 'News' tab") + QString("</li><li>") + tr("Alt+6 or 'F1' to show this help page") + QString("</li><li>") + tr("Alt+\"Left key\" to go to previous clicked anchor") + QString("</li><li>") + tr("Alt+\"Right key\" to go to next clicked anchor") + QString("</li><li>") + tr("Alt+\"Home key\" to go to first clicked anchor") + QString("</li><li>") + tr("Alt+\"End key\" to go to last clicked anchor") + QString("</li></ul>") + tr("Control+key sequences:") + QString("<ul><li>") + tr("Ctrl+D or 'File/Sync database' to sync the local database with latest remote changes") + QString("</li><li>") + tr("Ctrl+U or 'File/System upgrade' to make a full system upgrade") + QString("</li><li>") + tr("Ctrl+L to find a package in the package list") + QString("</li><li>") + tr("Ctrl+F to search for text inside tab Files, News and Usage") + //QString("</li><li>") + // tr("Ctrl+N or 'View/Non installed' to show/hide non installed packages") + QString("</li><li>") + tr("Ctrl+M or 'Transaction/Commit' to start installation/removal of selected packages") + QString("</li><li>") + tr("Ctrl+E or 'Transaction/Cancel' to clear the selection of to be removed/installed packages") + QString("</li><li>") + tr("Ctrl+G or 'File/Get latest distro news' to retrieve the latest RSS based distro news") + QString("</li><li>") + tr("Ctrl+Q or 'File/Exit' to exit the application") + QString("</li></ul>") + /* tr("Control+shift+key sequences:") + QString("<ul><li>") + tr("Ctrl+Shift+C to clean local packages cache (pacman -Sc)") + QString("</li><li>") + tr("Ctrl+Shift+G to display all package groups") + QString("</li><li>") + tr("Ctrl+Shift+R to remove Pacman's transaction lock file") + QString("</li><li>") + tr("Ctrl+Shift+Y to display %1 group").arg(StrConstants::getForeignRepositoryGroupName()) + QString("</li></ul>") +*/ tr("F+key sequences:") + QString("<ul><li>") + tr("F1 to show this help page") + QString("</li><li>") + tr("F4 to open a Terminal whitin the selected directory at Files tab") + QString("</li><li>") + tr("F6 to open a File Manager whitin the selected directory at Files tab") + QString("</li><li>") + tr("F10 to maximize/demaximize package list view") + QString("</li><li>") + tr("F12 to maximize/demaximize Tab's view") + QString("</li></ul>"); text->setText(html); int tindex = ui->twProperties->addTab(tabHelpUsage, StrConstants::getHelpUsage() ); ui->twProperties->setTabText(ui->twProperties->indexOf(tabHelpUsage), StrConstants::getHelpUsage()); SearchBar *searchBar = new SearchBar(this); connect(searchBar, SIGNAL(textChanged(QString)), this, SLOT(searchBarTextChangedInTextBrowser(QString))); connect(searchBar, SIGNAL(closed()), this, SLOT(searchBarClosedInTextBrowser())); connect(searchBar, SIGNAL(findNext()), this, SLOT(searchBarFindNextInTextBrowser())); connect(searchBar, SIGNAL(findPrevious()), this, SLOT(searchBarFindPreviousInTextBrowser())); gridLayoutX->addWidget(searchBar, 1, 0, 1, 1); text->show(); ui->twProperties->setCurrentIndex(tindex); text->setFocus(); }