| 1 | /* $Id: viewer.cpp 2 2005-11-16 15:49:26Z dmik $ */
|
|---|
| 2 |
|
|---|
| 3 | #include "viewer.h"
|
|---|
| 4 | #include <qstring.h>
|
|---|
| 5 | #include <qstringlist.h>
|
|---|
| 6 | #include <qtextview.h>
|
|---|
| 7 | #include <qpushbutton.h>
|
|---|
| 8 | #include <qlayout.h>
|
|---|
| 9 |
|
|---|
| 10 | Viewer::Viewer()
|
|---|
| 11 | :QWidget()
|
|---|
| 12 | {
|
|---|
| 13 | setFontSubstitutions();
|
|---|
| 14 |
|
|---|
| 15 | QString greeting_heb = QString::fromUtf8( "\327\251\327\234\327\225\327\235" );
|
|---|
| 16 | QString greeting_ru = QString::fromUtf8( "\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265" );
|
|---|
| 17 | QString greeting_en( "Hello" );
|
|---|
| 18 |
|
|---|
| 19 | greetings = new QTextView( this, "textview" );
|
|---|
| 20 |
|
|---|
| 21 | greetings->setText( greeting_en + "\n" +
|
|---|
| 22 | greeting_ru + "\n" +
|
|---|
| 23 | greeting_heb );
|
|---|
| 24 |
|
|---|
| 25 | fontInfo = new QTextView( this, "fontinfo" );
|
|---|
| 26 |
|
|---|
| 27 | setDefault();
|
|---|
| 28 |
|
|---|
| 29 | defaultButton = new QPushButton( "Default", this,
|
|---|
| 30 | "pushbutton1" );
|
|---|
| 31 | defaultButton->setFont( QFont( "times" ) );
|
|---|
| 32 | connect( defaultButton, SIGNAL( clicked() ),
|
|---|
| 33 | this, SLOT( setDefault() ) );
|
|---|
| 34 |
|
|---|
| 35 | sansSerifButton = new QPushButton( "Sans Serif", this,
|
|---|
| 36 | "pushbutton2" );
|
|---|
| 37 | sansSerifButton->setFont( QFont( "Helvetica", 12 ) );
|
|---|
| 38 | connect( sansSerifButton, SIGNAL( clicked() ),
|
|---|
| 39 | this, SLOT( setSansSerif() ) );
|
|---|
| 40 |
|
|---|
| 41 | italicsButton = new QPushButton( "Italics", this,
|
|---|
| 42 | "pushbutton3" );
|
|---|
| 43 | italicsButton->setFont( QFont( "lucida", 12, QFont::Bold, TRUE ) );
|
|---|
| 44 | connect( italicsButton, SIGNAL( clicked() ),
|
|---|
| 45 | this, SLOT( setItalics() ) );
|
|---|
| 46 |
|
|---|
| 47 | layout();
|
|---|
| 48 | }
|
|---|
| 49 |
|
|---|
| 50 | void Viewer::setDefault()
|
|---|
| 51 | {
|
|---|
| 52 | QFont font( "Bavaria" );
|
|---|
| 53 | font.setPointSize( 24 );
|
|---|
| 54 |
|
|---|
| 55 | font.setWeight( QFont::Bold );
|
|---|
| 56 | font.setUnderline( TRUE );
|
|---|
| 57 |
|
|---|
| 58 | greetings->setFont( font );
|
|---|
| 59 |
|
|---|
| 60 | showFontInfo( font );
|
|---|
| 61 | }
|
|---|
| 62 |
|
|---|
| 63 | void Viewer::setSansSerif()
|
|---|
| 64 | {
|
|---|
| 65 | QFont font( "Newyork", 18 );
|
|---|
| 66 | font.setStyleHint( QFont::SansSerif );
|
|---|
| 67 | greetings->setFont( font );
|
|---|
| 68 |
|
|---|
| 69 | showFontInfo( font );
|
|---|
| 70 | }
|
|---|
| 71 |
|
|---|
| 72 | void Viewer::setItalics()
|
|---|
| 73 | {
|
|---|
| 74 | QFont font( "Tokyo" );
|
|---|
| 75 | font.setPointSize( 32 );
|
|---|
| 76 | font.setWeight( QFont::Bold );
|
|---|
| 77 | font.setItalic( TRUE );
|
|---|
| 78 |
|
|---|
| 79 | greetings->setFont( font );
|
|---|
| 80 |
|
|---|
| 81 | showFontInfo( font );
|
|---|
| 82 | }
|
|---|
| 83 |
|
|---|
| 84 | void Viewer::showFontInfo( QFont & font )
|
|---|
| 85 | {
|
|---|
| 86 | QFontInfo info( font );
|
|---|
| 87 |
|
|---|
| 88 | QString messageText;
|
|---|
| 89 | messageText = "Font requested: \"" +
|
|---|
| 90 | font.family() + "\" " +
|
|---|
| 91 | QString::number( font.pointSize() ) + "pt<BR>" +
|
|---|
| 92 | "Font used: \"" +
|
|---|
| 93 | info.family() + "\" " +
|
|---|
| 94 | QString::number( info.pointSize() ) + "pt<P>";
|
|---|
| 95 |
|
|---|
| 96 | QStringList substitutions = QFont::substitutes( font.family() );
|
|---|
| 97 |
|
|---|
| 98 | if ( ! substitutions.isEmpty() ){
|
|---|
| 99 | messageText += "The following substitutions exist for " + \
|
|---|
| 100 | font.family() + ":<UL>";
|
|---|
| 101 |
|
|---|
| 102 | QStringList::Iterator i = substitutions.begin();
|
|---|
| 103 | while ( i != substitutions.end() ){
|
|---|
| 104 | messageText += "<LI>\"" + (* i) + "\"";
|
|---|
| 105 | i++;
|
|---|
| 106 | }
|
|---|
| 107 | messageText += "</UL>";
|
|---|
| 108 | } else {
|
|---|
| 109 | messageText += "No substitutions exist for " + \
|
|---|
| 110 | font.family() + ".";
|
|---|
| 111 | }
|
|---|
| 112 |
|
|---|
| 113 | fontInfo->setText( messageText );
|
|---|
| 114 | }
|
|---|
| 115 |
|
|---|
| 116 | void Viewer::setFontSubstitutions()
|
|---|
| 117 | {
|
|---|
| 118 | QStringList substitutes;
|
|---|
| 119 | substitutes.append( "Times" );
|
|---|
| 120 | substitutes += "Mincho",
|
|---|
| 121 | substitutes << "Arabic Newspaper" << "crox";
|
|---|
| 122 |
|
|---|
| 123 | QFont::insertSubstitutions( "Bavaria", substitutes );
|
|---|
| 124 |
|
|---|
| 125 | QFont::insertSubstitution( "Tokyo", "Lucida" );
|
|---|
| 126 | }
|
|---|
| 127 |
|
|---|
| 128 |
|
|---|
| 129 | // For those who prefer to use Qt Designer for creating GUIs
|
|---|
| 130 | // the following function might not be of particular interest:
|
|---|
| 131 | // all it does is creating the widget layout.
|
|---|
| 132 |
|
|---|
| 133 | void Viewer::layout()
|
|---|
| 134 | {
|
|---|
| 135 | QHBoxLayout * textViewContainer = new QHBoxLayout();
|
|---|
| 136 | textViewContainer->addWidget( greetings );
|
|---|
| 137 | textViewContainer->addWidget( fontInfo );
|
|---|
| 138 |
|
|---|
| 139 | QHBoxLayout * buttonContainer = new QHBoxLayout();
|
|---|
| 140 |
|
|---|
| 141 | buttonContainer->addWidget( defaultButton );
|
|---|
| 142 | buttonContainer->addWidget( sansSerifButton );
|
|---|
| 143 | buttonContainer->addWidget( italicsButton );
|
|---|
| 144 |
|
|---|
| 145 | int maxButtonHeight = defaultButton->height();
|
|---|
| 146 |
|
|---|
| 147 | if ( sansSerifButton->height() > maxButtonHeight )
|
|---|
| 148 | maxButtonHeight = sansSerifButton->height();
|
|---|
| 149 | if ( italicsButton->height() > maxButtonHeight )
|
|---|
| 150 | maxButtonHeight = italicsButton->height();
|
|---|
| 151 |
|
|---|
| 152 | defaultButton->setFixedHeight( maxButtonHeight );
|
|---|
| 153 | sansSerifButton->setFixedHeight( maxButtonHeight );
|
|---|
| 154 | italicsButton->setFixedHeight( maxButtonHeight );
|
|---|
| 155 |
|
|---|
| 156 | QVBoxLayout * container = new QVBoxLayout( this );
|
|---|
| 157 | container->addLayout( textViewContainer );
|
|---|
| 158 | container->addLayout( buttonContainer );
|
|---|
| 159 |
|
|---|
| 160 | resize( 700, 250 );
|
|---|
| 161 | }
|
|---|