/**************************************************************************** ** $Id: helpwindow.h,v 1.3 1999/06/17 22:02:28 ettrich Exp $ ** ** Copyright (C) 1992-1999 Troll Tech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef HELPWINDOW_H #define HELPWINDOW_H #include <qtextbrowser.h> #include <qmainwindow.h> class HelpWindow : public QMainWindow { Q_OBJECT public: HelpWindow( const QString& home_, const QString& path, QWidget* parent = 0, const char *name=0 ); ~HelpWindow(); void setupSlideshow( const QString& file); private slots: void setBackwardAvailable( bool ); void setForwardAvailable( bool ); void textChanged(); void about(); void aboutQt(); void openFile(); void newWindow(); private: QTextBrowser* browser; int backwardId, forwardId; }; #endif
/**************************************************************************** ** $Id: helpwindow.cpp,v 1.9 1999/06/18 01:12:08 ettrich Exp $ ** ** Copyright (C) 1992-1999 Troll Tech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "helpwindow.h" #include <qstatusbar.h> #include <qpixmap.h> #include <qpopupmenu.h> #include <qmenubar.h> #include <qtoolbar.h> #include <qtoolbutton.h> #include <qiconset.h> #include <qfile.h> #include <qtextstream.h> #include <qstylesheet.h> #include <qmessagebox.h> #include <qfiledialog.h> #include <qapplication.h> HelpWindow::HelpWindow( const QString& home_, const QString& path, QWidget* parent, const char *name ) : QMainWindow( parent, name, WDestructiveClose ) { browser = new QTextBrowser( this ); browser->mimeSourceFactory()->setFilePath( path ); browser->setFrameStyle( QFrame::Panel | QFrame::Sunken ); connect( browser, SIGNAL( textChanged() ), this, SLOT( textChanged() ) ); setCentralWidget( browser ); if ( !home_.isEmpty() ) browser->setSource( home_ ); connect( browser, SIGNAL( highlighted( const QString&) ), statusBar(), SLOT( message( const QString&)) ); resize( 640,700 ); QPopupMenu* file = new QPopupMenu( this ); file->insertItem( tr("&New Window"), this, SLOT( newWindow() ), ALT | Key_N ); file->insertItem( tr("&Open File"), this, SLOT( openFile() ), ALT | Key_O ); file->insertSeparator(); file->insertItem( tr("&Close"), this, SLOT( close() ), ALT | Key_Q ); file->insertItem( tr("E&xit"), qApp, SLOT( closeAllWindows() ), ALT | Key_X ); QPopupMenu* go = new QPopupMenu( this ); backwardId = go->insertItem( QPixmap("back.xpm"), tr("&Backward"), browser, SLOT( backward() ), ALT | Key_Left ); forwardId = go->insertItem( QPixmap("forward.xpm"), tr("&Forward"), browser, SLOT( forward() ), ALT | Key_Right ); go->insertItem( QPixmap("home.xpm"), tr("&Home"), browser, SLOT( home() ) ); QPopupMenu* help = new QPopupMenu( this ); help->insertItem( tr("&About ..."), this, SLOT( about() ) ); help->insertItem( tr("About &Qt ..."), this, SLOT( aboutQt() ) ); menuBar()->insertItem( tr("&File"), file ); menuBar()->insertItem( tr("&Go"), go ); menuBar()->insertSeparator(); menuBar()->insertItem( tr("&Help"), help ); menuBar()->setItemEnabled( forwardId, FALSE); menuBar()->setItemEnabled( backwardId, FALSE); connect( browser, SIGNAL( backwardAvailable( bool ) ), this, SLOT( setBackwardAvailable( bool ) ) ); connect( browser, SIGNAL( forwardAvailable( bool ) ), this, SLOT( setForwardAvailable( bool ) ) ); QToolBar* toolbar = new QToolBar( this ); addToolBar( toolbar, "Toolbar"); QToolButton* button; button = new QToolButton( QPixmap("back.xpm"), tr("Backward"), "", browser, SLOT(backward()), toolbar ); connect( browser, SIGNAL( backwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) ); button->setEnabled( FALSE ); button = new QToolButton( QPixmap("forward.xpm"), tr("Forward"), "", browser, SLOT(forward()), toolbar ); connect( browser, SIGNAL( forwardAvailable(bool) ), button, SLOT( setEnabled(bool) ) ); button->setEnabled( FALSE ); button = new QToolButton( QPixmap("home.xpm"), tr("Home"), "", browser, SLOT(home()), toolbar ); browser->setFocus(); } void HelpWindow::setBackwardAvailable( bool b) { menuBar()->setItemEnabled( backwardId, b); } void HelpWindow::setForwardAvailable( bool b) { menuBar()->setItemEnabled( forwardId, b); } void HelpWindow::textChanged() { if ( browser->documentTitle().isNull() ) setCaption( browser->context() ); else setCaption( browser->documentTitle() ) ; } HelpWindow::~HelpWindow() { } void HelpWindow::about() { QMessageBox::about( this, "QBrowser Example", "<p>This example implements a simple HTML browser " "using Qt's rich text capabilities</p>" "<p>It's just about 100 lines of C++ code, so don't expect too much :-)</p>" ); } void HelpWindow::aboutQt() { QMessageBox::aboutQt( this, "QBrowser" ); } void HelpWindow::openFile() { QString fn = QFileDialog::getOpenFileName( QString::null, QString::null, this ); if ( !fn.isEmpty() ) browser->setSource( fn ); } void HelpWindow::newWindow() { ( new HelpWindow(browser->source(), "qbrowser") )->show(); }
/**************************************************************************** ** $Id: main.cpp,v 1.7 1999/06/17 22:46:58 warwick Exp $ ** ** Copyright (C) 1992-1999 Troll Tech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include <qapplication.h> #include <qwindowsstyle.h> #include <qstylesheet.h> #include "helpwindow.h" #include <stdlib.h> int main( int argc, char ** argv ) { QApplication::setColorSpec( QApplication::ManyColor ); QApplication a(argc, argv); QStyleSheetItem* style; // Modify the application-wide default style sheet to handle // some extra HTML gracefully. // // Ignore any bodytext in <head>...</head>: style = new QStyleSheetItem( QStyleSheet::defaultSheet(), "head" ); style->setDisplayMode(QStyleSheetItem::DisplayNone); // // Not in default style sheet, just fake it: style = new QStyleSheetItem( QStyleSheet::defaultSheet(), "dl" ); style->setDisplayMode(QStyleSheetItem::DisplayBlock); style = new QStyleSheetItem( QStyleSheet::defaultSheet(), "dt" ); style->setDisplayMode(QStyleSheetItem::DisplayBlock); style->setContexts("dl"); // // Many HTML files omit the </p> or </li>, so we add this for efficiency: QStyleSheet::defaultSheet()->item("p")->setSelfNesting( FALSE ); QStyleSheet::defaultSheet()->item("li")->setSelfNesting( FALSE ); QString home; if (argc > 1) home = argv[1]; else home = QString(getenv("QTDIR")) + "/doc/index.html"; ( new HelpWindow(home, ".", 0, "qbrowser") )->show(); QObject::connect( &a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) ); return a.exec(); }
Copyright © 1999 Troll Tech | Trademarks | Qt version 2.00
|