summaryrefslogtreecommitdiffstats
path: root/qtjava/javalib/examples
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit90825e2392b2d70e43c7a25b8a3752299a933894 (patch)
treee33aa27f02b74604afbfd0ea4f1cfca8833d882a /qtjava/javalib/examples
downloadtdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz
tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'qtjava/javalib/examples')
-rw-r--r--qtjava/javalib/examples/aclock/AnalogClock.java158
-rw-r--r--qtjava/javalib/examples/addressbook/ABCentralWidget.java357
-rw-r--r--qtjava/javalib/examples/addressbook/ABMainWindow.java102
-rw-r--r--qtjava/javalib/examples/addressbook/Main.java31
-rw-r--r--qtjava/javalib/examples/addressbook/fileopen.xpm22
-rw-r--r--qtjava/javalib/examples/addressbook/fileprint.xpm24
-rw-r--r--qtjava/javalib/examples/addressbook/filesave.xpm22
-rw-r--r--qtjava/javalib/examples/application/ApplicationWindow.java318
-rw-r--r--qtjava/javalib/examples/application/Main.java17
-rw-r--r--qtjava/javalib/examples/biff/Biff.java80
-rw-r--r--qtjava/javalib/examples/biff/Main.java30
-rw-r--r--qtjava/javalib/examples/biff/bmp.java195
-rw-r--r--qtjava/javalib/examples/buttongroups/ButtonsGroups.java117
-rw-r--r--qtjava/javalib/examples/buttongroups/Main.java33
-rw-r--r--qtjava/javalib/examples/buttongroups/README13
-rw-r--r--qtjava/javalib/examples/checklists/CheckLists.java171
-rw-r--r--qtjava/javalib/examples/checklists/Main.java31
-rw-r--r--qtjava/javalib/examples/cursor/CursorView.java150
-rw-r--r--qtjava/javalib/examples/cursor/README2
-rw-r--r--qtjava/javalib/examples/dclock/DigitalClock.java115
-rw-r--r--qtjava/javalib/examples/dclock/Main.java30
-rw-r--r--qtjava/javalib/examples/dclock/README5
-rw-r--r--qtjava/javalib/examples/demo/sql/BookForm.java191
-rw-r--r--qtjava/javalib/examples/demo/sql/ConnectDialog.java138
-rw-r--r--qtjava/javalib/examples/demo/sql/EditBookForm.java267
-rw-r--r--qtjava/javalib/examples/demo/sql/Main.java20
-rw-r--r--qtjava/javalib/examples/demo/widgets/Main.java20
-rw-r--r--qtjava/javalib/examples/demo/widgets/WidgetsBase.java6116
-rw-r--r--qtjava/javalib/examples/dragdrop/DropSite.java167
-rw-r--r--qtjava/javalib/examples/dragdrop/Main.java87
-rw-r--r--qtjava/javalib/examples/dragdrop/SecretDrag.java53
-rw-r--r--qtjava/javalib/examples/dragdrop/SecretSource.java69
-rw-r--r--qtjava/javalib/examples/dragdrop/trolltech.bmpbin0 -> 30054 bytes
-rw-r--r--qtjava/javalib/examples/dragdrop/trolltech.gifbin0 -> 42629 bytes
-rw-r--r--qtjava/javalib/examples/drawlines/ConnectWidget.java122
-rw-r--r--qtjava/javalib/examples/drawlines/README3
-rw-r--r--qtjava/javalib/examples/forever/Forever.java120
-rw-r--r--qtjava/javalib/examples/forever/README3
-rw-r--r--qtjava/javalib/examples/hello/Hello.java107
-rw-r--r--qtjava/javalib/examples/hello/Main.java45
-rw-r--r--qtjava/javalib/examples/hello/README3
-rw-r--r--qtjava/javalib/examples/helpviewer/HelpWindow.java364
-rw-r--r--qtjava/javalib/examples/helpviewer/Main.java48
-rw-r--r--qtjava/javalib/examples/helpviewer/back.xpm27
-rw-r--r--qtjava/javalib/examples/helpviewer/forward.xpm28
-rw-r--r--qtjava/javalib/examples/helpviewer/home.xpm27
-rw-r--r--qtjava/javalib/examples/iconview/ListenDND.java69
-rw-r--r--qtjava/javalib/examples/layout/ExampleWidget.java152
-rw-r--r--qtjava/javalib/examples/lineedits/LineEdits.java225
-rw-r--r--qtjava/javalib/examples/lineedits/Main.java32
-rw-r--r--qtjava/javalib/examples/listbox/ListBoxDemo.java190
-rw-r--r--qtjava/javalib/examples/listbox/Main.java30
-rw-r--r--qtjava/javalib/examples/mdi/ApplicationWindow.java290
-rw-r--r--qtjava/javalib/examples/mdi/MDIWindow.java135
-rw-r--r--qtjava/javalib/examples/mdi/Main.java27
-rw-r--r--qtjava/javalib/examples/mdi/document.xpm25
-rw-r--r--qtjava/javalib/examples/menu/MenuExample.java326
-rw-r--r--qtjava/javalib/examples/menu/README2
-rw-r--r--qtjava/javalib/examples/picture/PictureDisplay.java119
-rw-r--r--qtjava/javalib/examples/picture/car_orig.picbin0 -> 1872 bytes
-rw-r--r--qtjava/javalib/examples/picture/flag.bmpbin0 -> 1650 bytes
-rw-r--r--qtjava/javalib/examples/popup/Frame.java166
-rw-r--r--qtjava/javalib/examples/popup/README3
-rw-r--r--qtjava/javalib/examples/progressbar/Main.java31
-rw-r--r--qtjava/javalib/examples/progressbar/ProgressBar.java174
-rw-r--r--qtjava/javalib/examples/qfd/FontDisplayer.java167
-rw-r--r--qtjava/javalib/examples/qfd/Main.java38
-rw-r--r--qtjava/javalib/examples/qmag/MagWidget.java356
-rw-r--r--qtjava/javalib/examples/qmag/README6
-rw-r--r--qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.map511
-rw-r--r--qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.txt7
-rw-r--r--qtjava/javalib/examples/qwerty/Editor.java351
-rw-r--r--qtjava/javalib/examples/qwerty/IBM277.map350
-rw-r--r--qtjava/javalib/examples/qwerty/IBM277.txt7
-rw-r--r--qtjava/javalib/examples/qwerty/Main.java44
-rw-r--r--qtjava/javalib/examples/qwerty/eucJP.txt7
-rw-r--r--qtjava/javalib/examples/qwerty/koi8.txt7
-rw-r--r--qtjava/javalib/examples/qwerty/latin1.txt7
-rw-r--r--qtjava/javalib/examples/qwerty/msunicode.txtbin0 -> 298 bytes
-rw-r--r--qtjava/javalib/examples/qwerty/unicode.txtbin0 -> 208 bytes
-rw-r--r--qtjava/javalib/examples/rangecontrols/Main.java33
-rw-r--r--qtjava/javalib/examples/rangecontrols/RangeControls.java74
-rw-r--r--qtjava/javalib/examples/richtext/Main.java32
-rw-r--r--qtjava/javalib/examples/richtext/MyRichText.java150
-rw-r--r--qtjava/javalib/examples/richtext/marble.pngbin0 -> 26015 bytes
-rw-r--r--qtjava/javalib/examples/rot13/Rot13.java90
-rw-r--r--qtjava/javalib/examples/scribble/Main.java36
-rw-r--r--qtjava/javalib/examples/scribble/Scribble.java216
-rw-r--r--qtjava/javalib/examples/showimg/ImageIconProvider.java73
-rw-r--r--qtjava/javalib/examples/showimg/ImageTextEditor.java144
-rw-r--r--qtjava/javalib/examples/showimg/ImageViewer.java703
-rw-r--r--qtjava/javalib/examples/showimg/Main.java59
-rw-r--r--qtjava/javalib/examples/showimg/README14
-rw-r--r--qtjava/javalib/examples/sound/SoundPlayer.java116
-rw-r--r--qtjava/javalib/examples/sound/sounds/1.wavbin0 -> 8624 bytes
-rw-r--r--qtjava/javalib/examples/sound/sounds/2.wavbin0 -> 7266 bytes
-rw-r--r--qtjava/javalib/examples/sound/sounds/3.wavbin0 -> 4709 bytes
-rw-r--r--qtjava/javalib/examples/sound/sounds/4.wavbin0 -> 5538 bytes
-rw-r--r--qtjava/javalib/examples/splitter/Test.java97
-rw-r--r--qtjava/javalib/examples/tabdialog/Main.java33
-rw-r--r--qtjava/javalib/examples/tabdialog/TabDialog.java114
-rw-r--r--qtjava/javalib/examples/table/small-table-demo/Main.java183
-rw-r--r--qtjava/javalib/examples/textedit/Main.java30
-rw-r--r--qtjava/javalib/examples/textedit/TextEdit.java494
-rw-r--r--qtjava/javalib/examples/textedit/editcopy.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/editcut.xpm32
-rw-r--r--qtjava/javalib/examples/textedit/editpaste.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/editredo.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/editundo.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/example.html340
-rw-r--r--qtjava/javalib/examples/textedit/filenew.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/fileopen.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/fileprint.xpm117
-rw-r--r--qtjava/javalib/examples/textedit/filesave.xpm36
-rw-r--r--qtjava/javalib/examples/textedit/textbold.xpm27
-rw-r--r--qtjava/javalib/examples/textedit/textcenter.xpm27
-rw-r--r--qtjava/javalib/examples/textedit/textitalic.xpm27
-rw-r--r--qtjava/javalib/examples/textedit/textjustify.xpm27
-rw-r--r--qtjava/javalib/examples/textedit/textleft.xpm27
-rw-r--r--qtjava/javalib/examples/textedit/textright.xpm27
-rw-r--r--qtjava/javalib/examples/textedit/textunder.xpm27
-rw-r--r--qtjava/javalib/examples/tux/MoveMe.java68
-rw-r--r--qtjava/javalib/examples/tux/tux.pngbin0 -> 14786 bytes
-rw-r--r--qtjava/javalib/examples/widgets/MyWidgetView.java58
-rw-r--r--qtjava/javalib/examples/widgets/README4
-rw-r--r--qtjava/javalib/examples/widgets/WidgetView.java829
-rw-r--r--qtjava/javalib/examples/widgets/qt.pngbin0 -> 355 bytes
-rw-r--r--qtjava/javalib/examples/widgets/trolltech.bmpbin0 -> 13366 bytes
-rw-r--r--qtjava/javalib/examples/widgets/trolltech.gifbin0 -> 42629 bytes
-rw-r--r--qtjava/javalib/examples/widgets/tt-logo.pngbin0 -> 4547 bytes
-rw-r--r--qtjava/javalib/examples/wizard/Main.java29
-rw-r--r--qtjava/javalib/examples/wizard/Wizard.java237
132 files changed, 18748 insertions, 0 deletions
diff --git a/qtjava/javalib/examples/aclock/AnalogClock.java b/qtjava/javalib/examples/aclock/AnalogClock.java
new file mode 100644
index 00000000..2d97cb67
--- /dev/null
+++ b/qtjava/javalib/examples/aclock/AnalogClock.java
@@ -0,0 +1,158 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.Date;
+
+class AnalogClock extends QWidget // analog clock widget
+{
+
+private Date time;
+
+//
+// Constructs an analog clock widget that uses an internal QTimer.
+//
+
+public AnalogClock( QWidget parent )
+{
+ this(parent, null);
+}
+
+public AnalogClock( QWidget parent, String name )
+{
+ super( parent, name );
+ time = new Date(); // get current time
+ QTimer internalTimer = new QTimer( this ); // create internal timer
+ connect( internalTimer, SIGNAL("timeout()"), SLOT("timeout()") );
+ internalTimer.start( 5000 ); // emit signal every 5 seconds
+}
+
+
+public void setTime( Date t )
+{
+ time = t;
+ timeout();
+}
+
+//
+// The QTimer.timeout() signal is received by this slot.
+//
+
+public void timeout()
+{
+ Date old_time = new Date(); // get the current time
+ old_time.setTime( time.getTime() - 5000 );
+ time.setTime( time.getTime() + 5000 );
+ if ( old_time.getMinutes() != time.getMinutes() ) { // minute has changed
+ if (autoMask())
+ updateMask();
+ else
+ update();
+ }
+}
+
+
+public void paintEvent( QPaintEvent event )
+{
+ if ( autoMask() )
+ return;
+ QPainter paint = new QPainter( this );
+ paint.setBrush( colorGroup().foreground() );
+ drawClock( paint );
+}
+
+// If the clock is transparent, we use updateMask()
+// instead of paintEvent()
+
+public void updateMask() // paint clock mask
+{
+ QBitmap bm = new QBitmap( size() );
+ bm.fill( color0() ); //transparent
+
+ QPainter paint = new QPainter();
+ paint.begin( bm, this );
+ paint.setBrush( color1() ); // use non-transparent color
+ paint.setPen( color1() );
+
+ drawClock( paint );
+
+ paint.end();
+ setMask( bm );
+}
+
+//
+// The clock is painted using a 1000x1000 square coordinate system, in
+// the a centered square, as big as possible. The painter's pen and
+// brush colors are used.
+//
+public void drawClock( QPainter paint )
+{
+ paint.save();
+
+ paint.setWindow( -500,-500, 1000,1000 );
+
+ QRect v = paint.viewport();
+ int d = v.width() < v.height() ? v.width() : v.height();
+ paint.setViewport( v.left() + (v.width()-d)/2,
+ v.top() + (v.height()-d)/2, d, d );
+
+ // time = QTime.currentTime();
+ QPointArray pts = new QPointArray();
+
+ paint.save();
+ paint.rotate( 30*(time.getHours()%12-3) + time.getMinutes()/2 );
+ pts.setPoints( 4, new short[] { -20,0, 0,-20, 300,0, 0,20 } );
+ paint.drawConvexPolygon( pts );
+ paint.restore();
+
+ paint.save();
+ paint.rotate( (time.getMinutes()-15)*6 );
+ pts.setPoints( 4, new short[] { -10,0, 0,-10, 400,0, 0,10 } );
+ paint.drawConvexPolygon( pts );
+ paint.restore();
+
+ for ( int i=0; i<12; i++ ) {
+ paint.drawLine( 440,0, 460,0 );
+ paint.rotate( 30 );
+ }
+
+ paint.restore();
+}
+
+
+public void setAutoMask(boolean b)
+{
+ if (b)
+ setBackgroundMode( PaletteForeground );
+ else
+ setBackgroundMode( PaletteBackground );
+ super.setAutoMask(b);
+}
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+ AnalogClock clock = new AnalogClock(null, null);
+ if ( args.length == 1 && args[0].equals("-transparent") )
+ clock.setAutoMask( true );
+ clock.resize( 100, 100 );
+ a.setMainWidget( clock );
+ clock.setCaption("Qt Example - Analog Clock");
+ clock.show();
+ int result = a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
+
diff --git a/qtjava/javalib/examples/addressbook/ABCentralWidget.java b/qtjava/javalib/examples/addressbook/ABCentralWidget.java
new file mode 100644
index 00000000..8dd6af37
--- /dev/null
+++ b/qtjava/javalib/examples/addressbook/ABCentralWidget.java
@@ -0,0 +1,357 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright ( C ) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+import org.kde.qt.*;
+import java.util.*;
+
+public class ABCentralWidget extends QWidget
+{
+ protected QGridLayout mainGrid;
+ protected QTabWidget tabWidget;
+ protected QListView listView;
+ protected QPushButton add, change, find;
+ protected QLineEdit iFirstName, iLastName, iAddress, iEMail,
+ sFirstName, sLastName, sAddress, sEMail;
+ protected QCheckBox cFirstName, cLastName, cAddress, cEMail;
+
+
+public ABCentralWidget( QWidget parent, String name )
+{
+ super( parent, name );
+ mainGrid = new QGridLayout( this, 2, 1, 5, 5 );
+
+ setupTabWidget();
+ setupListView();
+
+ mainGrid.setRowStretch( 0, 0 );
+ mainGrid.setRowStretch( 1, 1 );
+}
+
+public ABCentralWidget( QWidget parent )
+{
+ this(parent, null);
+}
+
+public void save( String filename )
+{
+ if ( listView.firstChild() == null )
+ return;
+
+ QFile f = new QFile( filename );
+ if ( !f.open( QIODevice.IO_WriteOnly ) )
+ return;
+
+ QTextStream t = new QTextStream( f );
+
+ Iterator it = listView.itemList().iterator();
+ while ( it.hasNext() ) {
+ QListViewItem currentItem = (QListViewItem) it.next();
+ for ( int i = 0; i < 4; i++ ) {
+ t.writeRawBytes( currentItem.text(i), currentItem.text(i).length() );
+ t.writeRawBytes( "\n", 1 );
+ }
+ }
+
+ f.close();
+}
+
+public void load( String filename )
+{
+ listView.clear();
+
+ QFile f = new QFile( filename );
+ if ( !f.open( QIODevice.IO_ReadOnly ) )
+ return;
+
+ QTextStream t = new QTextStream( f );
+
+ while ( !t.atEnd() ) {
+ QListViewItem item = new QListViewItem( listView );
+ for ( int i = 0; i < 4; i++ )
+ item.setText( i, t.readLine() );
+ }
+
+ f.close();
+}
+
+public void setupTabWidget()
+{
+ tabWidget = new QTabWidget( this );
+
+ QWidget input = new QWidget( tabWidget );
+ QGridLayout grid1 = new QGridLayout( input, 2, 5, 5, 5 );
+
+ QLabel liFirstName = new QLabel( "First &Name", input );
+ liFirstName.resize( liFirstName.sizeHint() );
+ grid1.addWidget( liFirstName, 0, 0 );
+
+ QLabel liLastName = new QLabel( "&Last Name", input );
+ liLastName.resize( liLastName.sizeHint() );
+ grid1.addWidget( liLastName, 0, 1 );
+
+ QLabel liAddress = new QLabel( "Add&ress", input );
+ liAddress.resize( liAddress.sizeHint() );
+ grid1.addWidget( liAddress, 0, 2 );
+
+ QLabel liEMail = new QLabel( "&E-Mail", input );
+ liEMail.resize( liEMail.sizeHint() );
+ grid1.addWidget( liEMail, 0, 3 );
+
+ add = new QPushButton( "A&dd", input );
+ add.resize( add.sizeHint() );
+ grid1.addWidget( add, 0, 4 );
+ connect( add, SIGNAL( "clicked()" ), this, SLOT( "addEntry()" ) );
+
+ iFirstName = new QLineEdit( input );
+ iFirstName.resize( iFirstName.sizeHint() );
+ grid1.addWidget( iFirstName, 1, 0 );
+ liFirstName.setBuddy( iFirstName );
+
+ iLastName = new QLineEdit( input );
+ iLastName.resize( iLastName.sizeHint() );
+ grid1.addWidget( iLastName, 1, 1 );
+ liLastName.setBuddy( iLastName );
+
+ iAddress = new QLineEdit( input );
+ iAddress.resize( iAddress.sizeHint() );
+ grid1.addWidget( iAddress, 1, 2 );
+ liAddress.setBuddy( iAddress );
+
+ iEMail = new QLineEdit( input );
+ iEMail.resize( iEMail.sizeHint() );
+ grid1.addWidget( iEMail, 1, 3 );
+ liEMail.setBuddy( iEMail );
+
+ change = new QPushButton( "&Change", input );
+ change.resize( change.sizeHint() );
+ grid1.addWidget( change, 1, 4 );
+ connect( change, SIGNAL( "clicked()" ), this, SLOT( "changeEntry()" ) );
+
+ tabWidget.addTab( input, "&Add/Change Entry" );
+
+ // --------------------------------------
+
+ QWidget search = new QWidget( this );
+ QGridLayout grid2 = new QGridLayout( search, 2, 5, 5, 5 );
+
+ cFirstName = new QCheckBox( "First &Name", search );
+ cFirstName.resize( cFirstName.sizeHint() );
+ grid2.addWidget( cFirstName, 0, 0 );
+ connect( cFirstName, SIGNAL( "clicked()" ), this, SLOT( "toggleFirstName()" ) );
+
+ cLastName = new QCheckBox( "&Last Name", search );
+ cLastName.resize( cLastName.sizeHint() );
+ grid2.addWidget( cLastName, 0, 1 );
+ connect( cLastName, SIGNAL( "clicked()" ), this, SLOT( "toggleLastName()" ) );
+
+ cAddress = new QCheckBox( "Add&ress", search );
+ cAddress.resize( cAddress.sizeHint() );
+ grid2.addWidget( cAddress, 0, 2 );
+ connect( cAddress, SIGNAL( "clicked()" ), this, SLOT( "toggleAddress()" ) );
+
+ cEMail = new QCheckBox( "&E-Mail", search );
+ cEMail.resize( cEMail.sizeHint() );
+ grid2.addWidget( cEMail, 0, 3 );
+ connect( cEMail, SIGNAL( "clicked()" ), this, SLOT( "toggleEMail()" ) );
+
+ sFirstName = new QLineEdit( search );
+ sFirstName.resize( sFirstName.sizeHint() );
+ grid2.addWidget( sFirstName, 1, 0 );
+
+ sLastName = new QLineEdit( search );
+ sLastName.resize( sLastName.sizeHint() );
+ grid2.addWidget( sLastName, 1, 1 );
+
+ sAddress = new QLineEdit( search );
+ sAddress.resize( sAddress.sizeHint() );
+ grid2.addWidget( sAddress, 1, 2 );
+
+ sEMail = new QLineEdit( search );
+ sEMail.resize( sEMail.sizeHint() );
+ grid2.addWidget( sEMail, 1, 3 );
+
+ find = new QPushButton( "F&ind", search );
+ find.resize( find.sizeHint() );
+ grid2.addWidget( find, 1, 4 );
+ connect( find, SIGNAL( "clicked()" ), this, SLOT( "findEntries()" ) );
+
+ cFirstName.setChecked( true );
+ sFirstName.setEnabled( true );
+ sLastName.setEnabled( false );
+ sAddress.setEnabled( false );
+ sEMail.setEnabled( false );
+
+ tabWidget.addTab( search, "&Search" );
+
+ mainGrid.addWidget( tabWidget, 0, 0 );
+}
+
+public void setupListView()
+{
+ listView = new QListView( this );
+ listView.addColumn( "First Name" );
+ listView.addColumn( "Last Name" );
+ listView.addColumn( "Address" );
+ listView.addColumn( "E-Mail" );
+
+ listView.setSelectionMode( QListView.Extended );
+
+ connect( listView, SIGNAL( "clicked( QListViewItem )" ), this, SLOT( "itemSelected( QListViewItem )" ) );
+
+ mainGrid.addWidget( listView, 1, 0 );
+ listView.setAllColumnsShowFocus( true );
+}
+
+public void addEntry()
+{
+ if ( !iFirstName.text().equals("") || !iLastName.text().equals("") ||
+ !iAddress.text().equals("") || !iEMail.text().equals("") ) {
+ QListViewItem item = new QListViewItem( listView );
+ item.setText( 0, iFirstName.text() );
+ item.setText( 1, iLastName.text() );
+ item.setText( 2, iAddress.text() );
+ item.setText( 3, iEMail.text() );
+ }
+
+ iFirstName.setText( "" );
+ iLastName.setText( "" );
+ iAddress.setText( "" );
+ iEMail.setText( "" );
+}
+
+public void changeEntry()
+{
+ QListViewItem item = listView.currentItem();
+
+ if ( item != null &&
+ ( !iFirstName.text().equals("") || !iLastName.text().equals("") ||
+ !iAddress.text().equals("") || !iEMail.text().equals("") ) ) {
+ item.setText( 0, iFirstName.text() );
+ item.setText( 1, iLastName.text() );
+ item.setText( 2, iAddress.text() );
+ item.setText( 3, iEMail.text() );
+ }
+}
+
+public void selectionChanged()
+{
+ iFirstName.setText( "" );
+ iLastName.setText( "" );
+ iAddress.setText( "" );
+ iEMail.setText( "" );
+}
+
+public void itemSelected( QListViewItem item )
+{
+ item.setSelected( true );
+ item.repaint();
+
+ iFirstName.setText( item.text( 0 ) );
+ iLastName.setText( item.text( 1 ) );
+ iAddress.setText( item.text( 2 ) );
+ iEMail.setText( item.text( 3 ) );
+}
+
+public void toggleFirstName()
+{
+ sFirstName.setText( "" );
+
+ if ( cFirstName.isChecked() ) {
+ sFirstName.setEnabled( true );
+ sFirstName.setFocus();
+ }
+ else
+ sFirstName.setEnabled( false );
+}
+
+public void toggleLastName()
+{
+ sLastName.setText( "" );
+
+ if ( cLastName.isChecked() ) {
+ sLastName.setEnabled( true );
+ sLastName.setFocus();
+ }
+ else
+ sLastName.setEnabled( false );
+}
+
+public void toggleAddress()
+{
+ sAddress.setText( "" );
+
+ if ( cAddress.isChecked() ) {
+ sAddress.setEnabled( true );
+ sAddress.setFocus();
+ }
+ else
+ sAddress.setEnabled( false );
+}
+
+public void toggleEMail()
+{
+ sEMail.setText( "" );
+
+ if ( cEMail.isChecked() ) {
+ sEMail.setEnabled( true );
+ sEMail.setFocus();
+ }
+ else
+ sEMail.setEnabled( false );
+}
+
+public void findEntries()
+{
+ if ( !cFirstName.isChecked() &&
+ !cLastName.isChecked() &&
+ !cAddress.isChecked() &&
+ !cEMail.isChecked() ) {
+ listView.clearSelection();
+ return;
+ }
+
+ Iterator it = listView.itemList().iterator();
+ while ( it.hasNext() ) {
+ QListViewItem currentItem = (QListViewItem) it.next();
+ boolean select = true;
+
+ if ( cFirstName.isChecked() ) {
+ if ( select && currentItem.text( 0 ).indexOf( sFirstName.text() ) != -1 )
+ select = true;
+ else
+ select = false;
+ }
+ if ( cLastName.isChecked() ) {
+ if ( select && currentItem.text( 1 ).indexOf( sLastName.text() ) != -1 )
+ select = true;
+ else
+ select = false;
+ }
+ if ( cAddress.isChecked() ) {
+ if ( select && currentItem.text( 2 ).indexOf( sAddress.text() ) != -1 )
+ select = true;
+ else
+ select = false;
+ }
+ if ( cEMail.isChecked() ) {
+ if ( select && currentItem.text( 3 ).indexOf( sEMail.text() ) != -1 )
+ select = true;
+ else
+ select = false;
+ }
+
+ if ( select )
+ currentItem.setSelected( true );
+ else
+ currentItem.setSelected( false );
+ currentItem.repaint();
+ }
+}
+
+}
diff --git a/qtjava/javalib/examples/addressbook/ABMainWindow.java b/qtjava/javalib/examples/addressbook/ABMainWindow.java
new file mode 100644
index 00000000..588098f4
--- /dev/null
+++ b/qtjava/javalib/examples/addressbook/ABMainWindow.java
@@ -0,0 +1,102 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright ( C ) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+import org.kde.qt.*;
+
+class ABMainWindow extends QMainWindow
+{
+ protected QToolBar fileTools;
+ protected String filename;
+ protected ABCentralWidget view;
+
+public ABMainWindow()
+{
+ super( null, "example addressbook application" );
+ filename = "";
+ setupMenuBar();
+ setupFileTools();
+ setupStatusBar();
+ setupCentralWidget();
+}
+
+public void setupMenuBar()
+{
+ QPopupMenu file = new QPopupMenu( this );
+ menuBar().insertItem( "&File", file );
+
+ file.insertItem( "New", this, SLOT( "fileNew()" ), new QKeySequence(CTRL + Key_N) );
+ file.insertItem( new QIconSet(new QPixmap( "fileopen.xpm" )), "Open", this, SLOT( "fileOpen()" ), new QKeySequence(CTRL + Key_O) );
+ file.insertSeparator();
+ file.insertItem( new QIconSet(new QPixmap( "filesave.xpm" )), "Save", this, SLOT( "fileSave()" ), new QKeySequence(CTRL + Key_S) );
+ file.insertItem( "Save As...", this, SLOT( "fileSaveAs()" ) );
+ file.insertSeparator();
+ file.insertItem( new QIconSet(new QPixmap( "fileprint.xpm" )), "Print...", this, SLOT( "filePrint()" ), new QKeySequence(CTRL + Key_P) );
+ file.insertSeparator();
+ file.insertItem( "Close", this, SLOT( "closeWindow()" ), new QKeySequence(CTRL + Key_W) );
+ file.insertItem( "Quit", qApp(), SLOT( "quit()" ), new QKeySequence(CTRL + Key_Q) );
+}
+
+public void setupFileTools()
+{
+ //fileTools = new QToolBar( this, "file operations" );
+}
+
+public void setupStatusBar()
+{
+ //statusBar()->message( "Ready", 2000 );
+}
+
+public void setupCentralWidget()
+{
+ view = new ABCentralWidget( this );
+ setCentralWidget( view );
+}
+
+public void closeWindow()
+{
+ close();
+}
+
+public void fileNew()
+{
+}
+
+public void fileOpen()
+{
+ String fn = QFileDialog.getOpenFileName( "", "", this );
+ if ( !fn.equals("") ) {
+ filename = fn;
+ view.load( filename );
+ }
+}
+
+public void fileSave()
+{
+ if ( filename.equals("") ) {
+ fileSaveAs();
+ return;
+ }
+
+ view.save( filename );
+}
+
+public void fileSaveAs()
+{
+ String fn = QFileDialog.getSaveFileName( "", "", this );
+ if ( !fn.equals("") ) {
+ filename = fn;
+ fileSave();
+ }
+}
+
+public void filePrint()
+{
+}
+
+}
diff --git a/qtjava/javalib/examples/addressbook/Main.java b/qtjava/javalib/examples/addressbook/Main.java
new file mode 100644
index 00000000..eeda8adc
--- /dev/null
+++ b/qtjava/javalib/examples/addressbook/Main.java
@@ -0,0 +1,31 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright ( C ) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+
+ ABMainWindow mw = new ABMainWindow();
+ mw.setCaption( "Qt Example - Addressbook" );
+ a.setMainWidget( mw );
+ mw.show();
+
+ a.connect( a, Qt.SIGNAL( "lastWindowClosed()" ), a, Qt.SLOT( "quit()" ) );
+ int result = a.exec();
+ return;
+}
+ static {
+ qtjava.initialize();
+ }
+
+}
diff --git a/qtjava/javalib/examples/addressbook/fileopen.xpm b/qtjava/javalib/examples/addressbook/fileopen.xpm
new file mode 100644
index 00000000..880417ee
--- /dev/null
+++ b/qtjava/javalib/examples/addressbook/fileopen.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static const char *fileopen[] = {
+" 16 13 5 1",
+". c #040404",
+"# c #808304",
+"a c None",
+"b c #f3f704",
+"c c #f3f7f3",
+"aaaaaaaaa...aaaa",
+"aaaaaaaa.aaa.a.a",
+"aaaaaaaaaaaaa..a",
+"a...aaaaaaaa...a",
+".bcb.......aaaaa",
+".cbcbcbcbc.aaaaa",
+".bcbcbcbcb.aaaaa",
+".cbcb...........",
+".bcb.#########.a",
+".cb.#########.aa",
+".b.#########.aaa",
+"..#########.aaaa",
+"...........aaaaa"
+};
diff --git a/qtjava/javalib/examples/addressbook/fileprint.xpm b/qtjava/javalib/examples/addressbook/fileprint.xpm
new file mode 100644
index 00000000..6ada912f
--- /dev/null
+++ b/qtjava/javalib/examples/addressbook/fileprint.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static const char *fileprint[] = {
+" 16 14 6 1",
+". c #000000",
+"# c #848284",
+"a c #c6c3c6",
+"b c #ffff00",
+"c c #ffffff",
+"d c None",
+"ddddd.........dd",
+"dddd.cccccccc.dd",
+"dddd.c.....c.ddd",
+"ddd.cccccccc.ddd",
+"ddd.c.....c....d",
+"dd.cccccccc.a.a.",
+"d..........a.a..",
+".aaaaaaaaaa.a.a.",
+".............aa.",
+".aaaaaa###aa.a.d",
+".aaaaaabbbaa...d",
+".............a.d",
+"d.aaaaaaaaa.a.dd",
+"dd...........ddd"
+};
diff --git a/qtjava/javalib/examples/addressbook/filesave.xpm b/qtjava/javalib/examples/addressbook/filesave.xpm
new file mode 100644
index 00000000..bd6870f4
--- /dev/null
+++ b/qtjava/javalib/examples/addressbook/filesave.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static const char *filesave[] = {
+" 14 14 4 1",
+". c #040404",
+"# c #808304",
+"a c #bfc2bf",
+"b c None",
+"..............",
+".#.aaaaaaaa.a.",
+".#.aaaaaaaa...",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".##........##.",
+".############.",
+".##.........#.",
+".##......aa.#.",
+".##......aa.#.",
+".##......aa.#.",
+"b............."
+};
diff --git a/qtjava/javalib/examples/application/ApplicationWindow.java b/qtjava/javalib/examples/application/ApplicationWindow.java
new file mode 100644
index 00000000..e334ad17
--- /dev/null
+++ b/qtjava/javalib/examples/application/ApplicationWindow.java
@@ -0,0 +1,318 @@
+import org.kde.qt.*;
+
+public class ApplicationWindow extends QMainWindow {
+ private QPrinter printer;
+ private QMultiLineEdit e;
+ private String filename;
+
+ private final String fileOpenText = "<img source=\"fileopen\"> "+
+ "Click this button to open a <em>new file</em>. <br><br>"+
+ "You can also select the <b>Open command</b> from the File menu.";
+ private final String fileSaveText = "Click this button to save the file you are "+
+ "editing. You will be prompted for a file name.\n\n"+
+ "You can also select the Save command from the File menu.\n\n"+
+ "Note that implementing this function is left as an exercise for the reader.";
+ private final String filePrintText = "Click this button to print the file you "+
+ "are editing.\n\n"+
+ "You can also select the Print command from the File menu.";
+
+ private final String[] fileopen = {
+ " 16 13 5 1",
+ ". c #040404",
+ "# c #808304",
+ "a c None",
+ "b c #f3f704",
+ "c c #f3f7f3",
+ "aaaaaaaaa...aaaa",
+ "aaaaaaaa.aaa.a.a",
+ "aaaaaaaaaaaaa..a",
+ "a...aaaaaaaa...a",
+ ".bcb.......aaaaa",
+ ".cbcbcbcbc.aaaaa",
+ ".bcbcbcbcb.aaaaa",
+ ".cbcb...........",
+ ".bcb.#########.a",
+ ".cb.#########.aa",
+ ".b.#########.aaa",
+ "..#########.aaaa",
+ "...........aaaaa"
+ };
+
+ private final String[] filesave = {
+ " 14 14 4 1",
+ ". c #040404",
+ "# c #808304",
+ "a c #bfc2bf",
+ "b c None",
+ "..............",
+ ".#.aaaaaaaa.a.",
+ ".#.aaaaaaaa...",
+ ".#.aaaaaaaa.#.",
+ ".#.aaaaaaaa.#.",
+ ".#.aaaaaaaa.#.",
+ ".#.aaaaaaaa.#.",
+ ".##........##.",
+ ".############.",
+ ".##.........#.",
+ ".##......aa.#.",
+ ".##......aa.#.",
+ ".##......aa.#.",
+ "b............."
+ };
+
+ private final String[] fileprint = {
+ " 16 14 6 1",
+ ". c #000000",
+ "# c #848284",
+ "a c #c6c3c6",
+ "b c #ffff00",
+ "c c #ffffff",
+ "d c None",
+ "ddddd.........dd",
+ "dddd.cccccccc.dd",
+ "dddd.c.....c.ddd",
+ "ddd.cccccccc.ddd",
+ "ddd.c.....c....d",
+ "dd.cccccccc.a.a.",
+ "d..........a.a..",
+ ".aaaaaaaaaa.a.a.",
+ ".............aa.",
+ ".aaaaaa###aa.a.d",
+ ".aaaaaabbbaa...d",
+ ".............a.d",
+ "d.aaaaaaaaa.a.dd",
+ "dd...........ddd"
+ };
+
+
+
+
+ public ApplicationWindow() {
+ super(null, "example application main window", WDestructiveClose);
+
+ // create a printer
+
+ printer = new QPrinter();
+
+
+ // create user interface actions
+
+ QAction fileNewAction, fileOpenAction, fileSaveAction,
+ fileSaveAsAction, filePrintAction, fileCloseAction,
+ fileQuitAction;
+
+ fileNewAction = new QAction("New", "&New", new QKeySequence(CTRL+Key_N), this, "new", false);
+ connect(fileNewAction, SIGNAL("activated()"), this, SLOT("newDoc()"));
+
+ fileOpenAction = new QAction("Open File", new QIconSet(new QPixmap(fileopen)), "&Open", new QKeySequence(CTRL+Key_O), this, "open", false);
+ connect(fileOpenAction, SIGNAL("activated()"), this, SLOT("load()"));
+ QMimeSourceFactory.defaultFactory().setPixmap("fileopen", new QPixmap(fileopen));
+ fileOpenAction.setWhatsThis(fileOpenText);
+
+ fileSaveAction = new QAction("Save File", new QIconSet(new QPixmap(filesave)), "&Save", new QKeySequence(CTRL+Key_S), this, "save", false);
+ connect(fileSaveAction, SIGNAL("activated()"), this, SLOT("save()"));
+ fileSaveAction.setWhatsThis(fileSaveText);
+
+ fileSaveAsAction = new QAction("Save File As", "Save &as", new QKeySequence(), this, "save as", false);
+ connect(fileSaveAsAction, SIGNAL("activated()"), this, SLOT("saveAs()"));
+ fileSaveAsAction.setWhatsThis(fileSaveText);
+
+ filePrintAction = new QAction("Print File", new QIconSet(new QPixmap(fileprint)), "&Print", new QKeySequence(CTRL+Key_P), this, "print", false);
+ connect(filePrintAction, SIGNAL("activated()"), this, SLOT("print()"));
+ filePrintAction.setWhatsThis(filePrintText);
+
+ fileCloseAction = new QAction("Close", "&Close", new QKeySequence(CTRL+Key_W), this, "close", false);
+ connect(fileCloseAction, SIGNAL("activated()"), this, SLOT("close()"));
+
+ fileQuitAction = new QAction("Quit", "&Quit", new QKeySequence(CTRL+Key_Q), this, "quit", false);
+ connect(fileQuitAction, SIGNAL("activated()"), qApp(), SLOT("closeAllWindows()"));
+
+
+ // populate a tool bar with some actions
+
+ QToolBar fileTools = new QToolBar(this, "file operations");
+ fileTools.setLabel(tr("File Operations"));
+ fileOpenAction.addTo(fileTools);
+ fileSaveAction.addTo(fileTools);
+ filePrintAction.addTo(fileTools);
+ QWhatsThis.whatsThisButton(fileTools);
+
+
+ // popuplate a menu with all actions
+
+ QPopupMenu file = new QPopupMenu(this, "file");
+ menuBar().insertItem("&File", file);
+ fileNewAction.addTo(file);
+ fileOpenAction.addTo(file);
+ fileSaveAction.addTo(file);
+ fileSaveAsAction.addTo(file);
+ file.insertSeparator();
+ filePrintAction.addTo(file);
+ file.insertSeparator();
+ fileCloseAction.addTo(file);
+ fileQuitAction.addTo(file);
+
+
+ // add a help menu
+
+ QPopupMenu help = new QPopupMenu(this, "help");
+ menuBar().insertSeparator();
+ menuBar().insertItem("&Help", help);
+ help.insertItem("&About", this, SLOT("about()"), new QKeySequence(Key_F1), -1, -1);
+ help.insertItem("About &Qt", this, SLOT("aboutQt()"));
+ help.insertSeparator();
+ help.insertItem("What's &This", this, SLOT("whatsThis()"), new QKeySequence(SHIFT+Key_F1), -1, -1);
+
+
+ // create and define the central widget
+
+ e = new QMultiLineEdit(this, "editor");
+ e.setFocus();
+ setCentralWidget(e);
+ statusBar().message("Ready", 2000);
+ resize(450, 600);
+ }
+
+ private void newDoc() {
+ ApplicationWindow ed = new ApplicationWindow();
+ ed.show();
+ }
+
+ private void load() {
+ String fn = QFileDialog.getOpenFileName("", "", this);
+ if (!(fn.length()==0))
+ load(fn);
+ else
+ statusBar().message("Loading aborted", 2000);
+ }
+
+
+ private void load(String fileName) {
+ QFile f = new QFile(fileName);
+ if (!f.open(1))
+ return;
+
+ filename = fileName;
+
+ e.setAutoUpdate(false);
+ e.clear();
+
+ QTextStream t = new QTextStream(f);
+ while (!t.eof()) {
+ String s = t.readLine();
+ e.append(s);
+ }
+ f.close();
+
+ e.setAutoUpdate(true);
+ e.repaint();
+ e.setEdited(false);
+ setCaption(fileName);
+ String s = "Loaded document "+fileName;
+ statusBar().message(s, 2000);
+ }
+
+ private void save() {
+ if (filename.length()==0) {
+ saveAs();
+ return;
+ }
+
+ String text = e.text();
+ QFile f = new QFile(filename);
+ if (!f.open(2)) {
+ statusBar().message("Could not write to "+filename, 2000);
+ return;
+ }
+
+ QTextStream t = new QTextStream(f);
+ t.writeRawBytes(text, text.length());
+ f.close();
+
+ e.setEdited(false);
+
+ setCaption(filename);
+
+ statusBar().message("File "+filename+" saved", 2000);
+ }
+
+
+ private void saveAs() {
+ String fn = QFileDialog.getSaveFileName("", "", this);
+ if (!(fn.length()==0)) {
+ filename = fn;
+ save();
+ } else {
+ statusBar().message("Saving aborted", 2000);
+ }
+ }
+
+ private void print() {
+ final int Margin = 10;
+ int pageNo = 1;
+
+ if (printer.setup(this)) { // printer dialog
+ statusBar().message("Printing...");
+ QPainter p = new QPainter();
+ p.begin(printer); // paint on printer
+ p.setFont(e.font());
+ int yPos = 0; // y position for each line
+ QFontMetrics fm = p.fontMetrics();
+
+ // need width/height of printer surface
+ QPaintDeviceMetrics metrics = new QPaintDeviceMetrics(printer);
+
+ for(int i = 0 ; i < e.numLines() ; i++) {
+ if (Margin + yPos > metrics.height() - Margin) {
+ String msg = "Printing (page ";
+ msg += ++pageNo;
+ msg += ")...";
+ statusBar().message(msg);
+ printer.newPage(); // no more room on this page
+ yPos = 0; // back to top of page
+ }
+ p.drawText(Margin, Margin + yPos, metrics.width(),
+ fm.lineSpacing(), ExpandTabs | DontClip, e.textLine(i));
+ yPos = yPos + fm.lineSpacing();
+ }
+ p.end(); // send job to printer
+ statusBar().message("Printing completed", 2000);
+ } else {
+ statusBar().message("Printing aborted", 2000);
+ }
+ }
+
+ protected void closeEvent(QCloseEvent ce) {
+ if (!e.edited()) {
+ ce.accept();
+ return;
+ }
+
+ switch(QMessageBox.information(this, "Qt Application Example",
+ "The document has been changed since the last save.",
+ "Save Now", "Cancel", "Leave Anyway", 0, 1)) {
+ case 0:
+ save();
+ ce.accept();
+ break;
+ case 1:
+ default: // just for sanity
+ ce.ignore();
+ break;
+ case 2:
+ ce.accept();
+ break;
+ }
+ }
+
+ private void about() {
+ QMessageBox.about(this, "Qt Application Example",
+ "This example demonstrates simple use of "+
+ "QMainWindow,\nQMenuBar and QToolBar.");
+ }
+
+
+ private void aboutQt() {
+ QMessageBox.aboutQt(this, "Qt Application Example");
+ }
+}
diff --git a/qtjava/javalib/examples/application/Main.java b/qtjava/javalib/examples/application/Main.java
new file mode 100644
index 00000000..2ba09ea9
--- /dev/null
+++ b/qtjava/javalib/examples/application/Main.java
@@ -0,0 +1,17 @@
+import org.kde.qt.*;
+
+public class Main extends QObject {
+ public static void main(String[] args) {
+ QApplication a = new QApplication (args);
+ ApplicationWindow mw = new ApplicationWindow();
+ mw.setCaption("Document 1");
+ mw.show();
+ a.connect(a, SIGNAL("lastWindowClosed()"), a, SLOT("quit()"));
+ a.exec();
+ return;
+ }
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/biff/Biff.java b/qtjava/javalib/examples/biff/Biff.java
new file mode 100644
index 00000000..b3107da4
--- /dev/null
+++ b/qtjava/javalib/examples/biff/Biff.java
@@ -0,0 +1,80 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.Calendar;
+
+class Biff extends QWidget
+{
+private Calendar lastModified;
+private QPixmap hasNewMail = new QPixmap();
+private QPixmap noNewMail = new QPixmap();
+private String mailbox;
+private boolean gotMail;
+
+public Biff( )
+{
+ this(null, null);
+}
+public Biff( QWidget parent, String name )
+{
+ super( parent, name, WType_Modal );
+// QFileInfo fi = new QFileInfo(System.getProperty("MAIL"));
+ QFileInfo fi = new QFileInfo("");
+ if ( !fi.exists() ) {
+ String s = "/var/spool/mail/";
+ s += System.getProperty("user.name");
+ fi.setFile( s );
+ }
+ if ( fi.exists() ) {
+ mailbox = fi.absFilePath();
+ startTimer( 1000 );
+ }
+
+ setMinimumSize( 48, 48 );
+ setMaximumSize( 48, 48 );
+ resize( 48, 48 );
+
+ hasNewMail.loadFromData( bmp.hasmail_bmp_data );
+ noNewMail.loadFromData( bmp.nomail_bmp_data );
+
+ gotMail = false;
+ lastModified = fi.lastModified();
+}
+
+
+protected void timerEvent( QTimerEvent event )
+{
+ QFileInfo fi = new QFileInfo( mailbox );
+ boolean newState = ( fi.lastModified() != lastModified &&
+ fi.lastModified().after( fi.lastRead() ) );
+ if ( newState != gotMail ) {
+ if ( gotMail )
+ lastModified = fi.lastModified();
+ gotMail = newState;
+ repaint( false );
+ }
+}
+
+
+protected void paintEvent( QPaintEvent event )
+{
+ if ( gotMail )
+ bitBlt( this, 0, 0, hasNewMail );
+ else
+ bitBlt( this, 0, 0, noNewMail );
+}
+
+
+protected void mousePressEvent( QMouseEvent event )
+{
+ QFileInfo fi = new QFileInfo( mailbox );
+ lastModified = fi.lastModified();
+}
+}
diff --git a/qtjava/javalib/examples/biff/Main.java b/qtjava/javalib/examples/biff/Main.java
new file mode 100644
index 00000000..abf20598
--- /dev/null
+++ b/qtjava/javalib/examples/biff/Main.java
@@ -0,0 +1,30 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+ Biff b = new Biff();
+ a.setMainWidget( b );
+ b.show();
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/biff/bmp.java b/qtjava/javalib/examples/biff/bmp.java
new file mode 100644
index 00000000..dfc7c516
--- /dev/null
+++ b/qtjava/javalib/examples/biff/bmp.java
@@ -0,0 +1,195 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+
+class bmp
+{
+
+public static char[] hasmail_bmp_data = {
+ 0x42,0x4d,0xc2,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,
+ 0x28,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,
+ 0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0x6d,0x0b,0x00,0x00,
+ 0x6d,0x0b,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0x00,0x51,0x61,0x30,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x00,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,
+ 0x00,0x01,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x00,0x01,0x00,0x00,0x01,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x00,0x01,
+ 0x00,0x00,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x10,0x10,0x10,0x10,0x00,
+ 0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x01,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x01,0x01,0x01,0x01,0x00,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x10,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x10,0x10,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,0x01,0x01,
+ 0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x10,0x10,0x10,0x01,0x10,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x10,0x11,0x00,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x01,0x01,0x01,0x01,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x10,0x01,0x10,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x10,
+ 0x10,0x10,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x11,
+ 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x01,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x01,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x11,0x01,0x10,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x10,
+ 0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x01,0x10,0x00,0x00,0x00,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x11,0x10,
+ 0x10,0x10,0x10,0x10,0x01,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x11,0x11,0x11,0x10,0x01,0x10,0x10,0x10,0x01,0x00,0x10,0x10,
+ 0x01,0x10,0x00,0x00,0x00,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x00,0x00,
+ 0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x01,0x10,
+ 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x01,0x11,0x00,0x10,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x10,0x01,0x11,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x01,0x10,0x00,0x00,0x01,0x10,
+ 0x01,0x11,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x10,0x00,0x01,0x11,0x11,0x10,0x00,0x01,0x11,0x01,0x11,0x00,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x00,0x10,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x11,0x01,0x11,0x11,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x11,0x11,
+ 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x11,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x01,0x11,0x00,0x10,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x10,0x00,0x00,
+ 0x01,0x11,0x00,0x00,0x01,0x11,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x10,0x00,0x00,
+ 0x01,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x11,0x11,0x11,0x10,0x00,0x00,0x00,0x01,0x11,0x11,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x01,0x10,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x11,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x01,0x11,
+ 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x10,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,
+ 0x01,0x10,0x10,0x10,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x00,0x00,0x01,0x11,0x01,0x01,
+ 0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x11,0x11,0x01,0x11,0x10,0x10,0x10,0x11,0x10,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x11,0x11,0x01,0x11,0x01,0x01,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,
+ 0x11,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x10,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+};
+
+static char[] nomail_bmp_data = {
+ 0x42,0x4d,0xc6,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,
+ 0x28,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,
+ 0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0x6d,0x0b,0x00,0x00,
+ 0x6d,0x0b,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0x00,0x38,0x30,0x61,0x00,0xa6,0x8a,0xff,0x00,
+ 0x01,0x01,0x01,0x01,0x11,0x01,0x11,0x10,0x11,0x10,0x11,0x01,0x01,0x11,
+ 0x01,0x11,0x11,0x01,0x11,0x10,0x01,0x10,0x01,0x11,0x10,0x01,0x11,0x01,
+ 0x11,0x11,0x00,0x11,0x10,0x11,0x10,0x00,0x00,0x00,0x11,0x11,0x01,0x11,
+ 0x10,0x00,0x00,0x01,0x11,0x01,0x01,0x00,0x01,0x10,0x00,0x10,0x10,0x00,
+ 0x00,0x10,0x01,0x10,0x10,0x01,0x00,0x01,0x10,0x11,0x01,0x00,0x10,0x10,
+ 0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x11,0x10,
+ 0x11,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x00,0x00,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10,0x11,0x11,0x10,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x10,0x11,0x10,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,
+ 0x11,0x10,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10,0x11,0x11,
+ 0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10,0x11,0x11,0x10,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x10,0x11,0x10,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10,
+ 0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10,0x11,0x11,0x10,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,
+ 0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x00,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x01,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x10,0x01,0x11,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x10,
+ 0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x00,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x10,0x01,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,
+ 0x11,0x11,0x11,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x01,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x01,0x10,0x01,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x01,0x10,0x00,0x00,0x00,
+ 0x00,0x00,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x10,0x01,0x11,0x11,0x11,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x00,
+ 0x11,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x00,0x01,0x01,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x10,0x01,
+ 0x11,0x11,0x10,0x01,0x11,0x00,0x01,0x01,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x10,0x00,0x00,0x01,0x11,0x10,0x00,
+ 0x11,0x10,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x01,0x11,0x00,0x00,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x00,0x10,0x00,0x11,0x10,0x00,0x01,0x11,0x00,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x10,
+ 0x01,0x11,0x00,0x01,0x11,0x00,0x00,0x11,0x00,0x01,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x10,0x00,
+ 0x11,0x01,0x00,0x01,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x00,0x01,0x01,0x10,0x00,
+ 0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x00,
+ 0x00,0x01,0x11,0x11,0x11,0x10,0x00,0x01,0x11,0x00,0x00,0x01,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x01,0x11,0x11,0x11,
+ 0x11,0x11,0x00,0x01,0x11,0x10,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,
+ 0x11,0x11,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x10,0x01,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x01,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x00,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x00,0x01,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x01,0x11,
+ 0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x00,0x01,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x10,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11
+};
+
+}
diff --git a/qtjava/javalib/examples/buttongroups/ButtonsGroups.java b/qtjava/javalib/examples/buttongroups/ButtonsGroups.java
new file mode 100644
index 00000000..0ac7e811
--- /dev/null
+++ b/qtjava/javalib/examples/buttongroups/ButtonsGroups.java
@@ -0,0 +1,117 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+class ButtonsGroups extends QWidget
+{
+protected QCheckBox state;
+protected QRadioButton rb21, rb22, rb23;
+
+
+
+
+/*
+ Constructor
+ *
+ Creates all child widgets of the ButtonGroups window
+ */
+
+public ButtonsGroups( )
+{
+ this(null, null);
+}
+
+public ButtonsGroups( QWidget parent, String name )
+{
+ super( parent, name );
+ // Create Widgets which allow easy layouting
+ QVBoxLayout vbox = new QVBoxLayout( this );
+ QHBoxLayout box1 = new QHBoxLayout( vbox );
+ QHBoxLayout box2 = new QHBoxLayout( vbox );
+
+ // ------- first group
+
+ // Create an exclusive button group
+ QButtonGroup bgrp1 = new QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 1 (exclusive)", this);
+ box1.addWidget( bgrp1 );
+ bgrp1.setExclusive( true );
+
+ // insert 3 radiobuttons
+ QRadioButton rb11 = new QRadioButton( "&Radiobutton 1", bgrp1 );
+ rb11.setChecked( true );
+ new QRadioButton( "R&adiobutton 2", bgrp1 );
+ new QRadioButton( "Ra&diobutton 3", bgrp1 );
+
+ // ------- second group
+
+ // Create a non-exclusive buttongroup
+ QButtonGroup bgrp2 = new QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 2 (non-exclusive)", this );
+ box1.addWidget( bgrp2 );
+ bgrp2.setExclusive( false );
+
+ // insert 3 checkboxes
+ new QCheckBox( "&Checkbox 1", bgrp2 );
+ QCheckBox cb12 = new QCheckBox( "C&heckbox 2", bgrp2 );
+ cb12.setChecked( true );
+ QCheckBox cb13 = new QCheckBox( "Triple &State Button", bgrp2 );
+ cb13.setTristate( true );
+ cb13.setChecked( true );
+
+ // ------------ third group
+
+ // create a buttongroup which is exclusive for radiobuttons and non-exclusive for all other buttons
+ QButtonGroup bgrp3 = new QButtonGroup( 1, QGroupBox.Horizontal, "Button Group 3 (Radiobutton-exclusive)", this );
+ box2.addWidget( bgrp3 );
+ bgrp3.setRadioButtonExclusive( true );
+
+ // insert three radiobuttons
+ rb21 = new QRadioButton( "Rad&iobutton 1", bgrp3 );
+ rb22 = new QRadioButton( "Radi&obutton 2", bgrp3 );
+ rb23 = new QRadioButton( "Radio&button 3", bgrp3 );
+ rb23.setChecked( true );
+
+ // insert a checkbox...
+ state = new QCheckBox( "E&nable Radiobuttons", bgrp3 );
+ state.setChecked( true );
+ // ...and connect its SIGNAL clicked() with the SLOT slotChangeGrp3State()
+ connect( state, SIGNAL(" clicked()"), this, SLOT(" slotChangeGrp3State()") );
+
+ // ------------ fourth group
+
+ // create a groupbox which layouts its childs in a columns
+ QGroupBox bgrp4 = new QButtonGroup( 1, QGroupBox.Horizontal, "Groupbox with normal buttons", this );
+ box2.addWidget( bgrp4 );
+
+ // insert three pushbuttons...
+ new QPushButton( "&Push Button", bgrp4 );
+ QPushButton tb2 = new QPushButton( "&Toggle Button", bgrp4 );
+ QPushButton tb3 = new QPushButton( "&Flat Button", bgrp4 );
+
+ // ... and make the second one a toggle button
+ tb2.setToggleButton( true );
+ tb2.setOn( true );
+
+ // ... and make the third one a flat button
+ tb3.setFlat(true);
+}
+
+/*
+ SLOT slotChangeGrp3State()
+ *
+ enables/disables the radiobuttons of the third buttongroup
+ */
+
+public void slotChangeGrp3State()
+{
+ rb21.setEnabled( state.isChecked() );
+ rb22.setEnabled( state.isChecked() );
+ rb23.setEnabled( state.isChecked() );
+}
+}
diff --git a/qtjava/javalib/examples/buttongroups/Main.java b/qtjava/javalib/examples/buttongroups/Main.java
new file mode 100644
index 00000000..a7652d87
--- /dev/null
+++ b/qtjava/javalib/examples/buttongroups/Main.java
@@ -0,0 +1,33 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+
+ ButtonsGroups buttonsgroups = new ButtonsGroups();
+ buttonsgroups.resize( 500, 250 );
+ buttonsgroups.setCaption( "Qt Example - Buttongroups" );
+ a.setMainWidget( buttonsgroups );
+ buttonsgroups.show();
+
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+
+}
+
+}
diff --git a/qtjava/javalib/examples/buttongroups/README b/qtjava/javalib/examples/buttongroups/README
new file mode 100644
index 00000000..b43913e3
--- /dev/null
+++ b/qtjava/javalib/examples/buttongroups/README
@@ -0,0 +1,13 @@
+This example program shows how to use
+
+ - different types of buttons
+ - different types of groupboxes
+
+The buttons which are used are radiobuttons, checkboxes (also tristate checkboxes),
+normal pusbuttons and toggleable pushbuttons.
+These buttons are seperated in four groups using groupboxes. The example shows how
+to make a buttongroup totally exclusive (only one button can be checked), exclusive
+for radiobuttons only or non-exclusive. Also it is demonstrated how buttons (and
+other widgets too!) can be laid out in rows and columns in a groupbox.
+
+Important parts of the source code are documented as well to make it easy to understand.
diff --git a/qtjava/javalib/examples/checklists/CheckLists.java b/qtjava/javalib/examples/checklists/CheckLists.java
new file mode 100644
index 00000000..ef3dd8bf
--- /dev/null
+++ b/qtjava/javalib/examples/checklists/CheckLists.java
@@ -0,0 +1,171 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.*;
+
+class CheckLists extends QWidget
+{
+
+protected QListView lv1, lv2;
+protected QLabel label;
+
+/*
+ Constructor
+ *
+ Create all child widgets of the CheckList Widget
+ */
+
+CheckLists( )
+{
+ this(null, null);
+}
+
+CheckLists( QWidget parent, String name )
+{
+ super( parent, name );
+ QHBoxLayout lay = new QHBoxLayout( this );
+ lay.setMargin( 5 );
+
+ // create a widget which layouts its childs in a column
+ QVBoxLayout vbox1 = new QVBoxLayout( lay );
+ vbox1.setMargin( 5 );
+
+ // First child: a Label
+ vbox1.addWidget( new QLabel( "Check some items!", this ) );
+
+ // Second child: the ListView
+ lv1 = new QListView( this );
+ vbox1.addWidget( lv1 );
+ lv1.addColumn( "Items" );
+ lv1.setRootIsDecorated( true );
+
+ // create a list with 4 ListViewItems which will be parent items of other ListViewItems
+ ArrayList parentList = new ArrayList();
+
+ parentList.add( new QListViewItem( lv1, "Parent Item 1" ) );
+ parentList.add( new QListViewItem( lv1, "Parent Item 2" ) );
+ parentList.add( new QListViewItem( lv1, "Parent Item 3" ) );
+ parentList.add( new QListViewItem( lv1, "Parent Item 4" ) );
+
+ QListViewItem item = null;
+ int num = 1;
+ // go through the list of parent items...
+ for ( Iterator it = parentList.iterator(); it.hasNext(); num++ ) {
+ item = (QListViewItem) it.next();
+ item.setOpen( true );
+ // ...and create 5 checkable child ListViewItems for each parent item
+ for ( int i = 1; i <= 5; i++ )
+ new QCheckListItem( item, i + ". Child of Parent " + num, QCheckListItem.CheckBox );
+ }
+
+ // Create another widget for layouting
+ QVBoxLayout tmp = new QVBoxLayout( lay );
+ tmp.setMargin( 5 );
+
+ // create a pushbutton
+ QPushButton copy1 = new QPushButton( " -> ", this );
+ tmp.addWidget( copy1 );
+ copy1.setMaximumWidth( copy1.sizeHint().width() );
+ // connect the SIGNAL clicked() of the pushbutton with the SLOT copy1to2()
+ connect( copy1, SIGNAL(" clicked()"), this, SLOT(" copy1to2()") );
+
+ // another widget for layouting
+ QVBoxLayout vbox2 = new QVBoxLayout( lay );
+ vbox2.setMargin( 5 );
+
+ // and another label
+ vbox2.addWidget( new QLabel( "Check one item!", this ) );
+
+ // create the second listview
+ lv2 = new QListView( this );
+ vbox2.addWidget( lv2 );
+ lv2.addColumn( "Items" );
+ lv2.setRootIsDecorated( true );
+
+ // another widget needed for layouting only
+ tmp = new QVBoxLayout( lay );
+ tmp.setMargin( 5 );
+
+ // create another pushbutton...
+ QPushButton copy2 = new QPushButton( " -> ", this );
+ lay.addWidget( copy2 );
+ copy2.setMaximumWidth( copy2.sizeHint().width() );
+ // ...and connect its clicked() SIGNAL to the copy2to3() SLOT
+ connect( copy2, SIGNAL(" clicked()"), this, SLOT(" copy2to3()") );
+
+ tmp = new QVBoxLayout( lay );
+ tmp.setMargin( 5 );
+
+ // and create a label which will be at the right of the window
+ label = new QLabel( "No Item yet...", this );
+ tmp.addWidget( label );
+}
+
+/*
+ SLOT copy1to2()
+ *
+ Copies all checked ListViewItems from the first ListView to
+ the second one, and inserts them as Radio-ListViewItem.
+ */
+
+public void copy1to2()
+{
+ // create an iterator which operates on the first ListView
+ Iterator it = lv1.itemList().iterator();
+
+ lv2.clear();
+
+ // Insert first a controller Item into the second ListView. Always if Radio-ListViewItems
+ // are inserted into a Listview, the parent item of these MUST be a controller Item!
+ QCheckListItem item = new QCheckListItem( lv2, "Controller", QCheckListItem.Controller );
+ item.setOpen( true );
+
+ // iterate through the first ListView...
+ while ( it.hasNext() ) {
+ QListViewItem current = (QListViewItem) it.next();
+ // ...check state of childs, and...
+ if ( current.parent() != null )
+ // ...if the item is checked...
+ if ( ( (QCheckListItem) current ).isOn() )
+ // ...insert a Radio-ListViewItem with the same text into the second ListView
+ new QCheckListItem( item, current.text( 0 ), QCheckListItem.RadioButton );
+
+ }
+ if ( item.firstChild() != null )
+ ( ( QCheckListItem )item.firstChild() ).setOn( true );
+}
+
+/*
+ SLOT copy2to3()
+ *
+ Copies the checked item of the second ListView into the
+ Label at the right.
+ */
+
+public void copy2to3()
+{
+ // create an iterator which operates on the second ListView
+ Iterator it = lv2.itemList().iterator();
+
+ label.setText( "No Item checked" );
+
+ // iterate through the second ListView...
+ while ( it.hasNext() ) {
+ QListViewItem current = (QListViewItem) it.next();
+ // ...check state of childs, and...
+ if ( current.parent() != null )
+ // ...if the item is checked...
+ if ( ( (QCheckListItem) current ).isOn() )
+ // ...set the text of the item to the label
+ label.setText( current.text( 0 ) );
+ }
+}
+}
+
diff --git a/qtjava/javalib/examples/checklists/Main.java b/qtjava/javalib/examples/checklists/Main.java
new file mode 100644
index 00000000..8d21a20b
--- /dev/null
+++ b/qtjava/javalib/examples/checklists/Main.java
@@ -0,0 +1,31 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+
+ CheckLists checklists = new CheckLists();
+ checklists.resize( 650, 350 );
+ checklists.setCaption( "Qt Example - CheckLists" );
+ a.setMainWidget( checklists );
+ checklists.show();
+
+ a.exec();
+ return;
+}
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/cursor/CursorView.java b/qtjava/javalib/examples/cursor/CursorView.java
new file mode 100644
index 00000000..39eeb591
--- /dev/null
+++ b/qtjava/javalib/examples/cursor/CursorView.java
@@ -0,0 +1,150 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+//
+// The CursorView contains many labels with different cursors.
+//
+
+class CursorView extends QWidget // cursor view
+{
+
+// cb_bits and cm_bits were generated by X bitmap program.
+
+static final int cb_width = 32;
+static final int cb_height = 32;
+
+static char cb_bits[] = { // cursor bitmap
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00,
+ 0x00, 0x06, 0x30, 0x00, 0x80, 0x01, 0xc0, 0x00, 0x40, 0x00, 0x00, 0x01,
+ 0x20, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x04, 0x08, 0x3e, 0x3e, 0x08,
+ 0x08, 0x03, 0xe0, 0x08, 0xc4, 0x00, 0x00, 0x11, 0x04, 0x1e, 0x78, 0x10,
+ 0x02, 0x0c, 0x30, 0x20, 0x02, 0x40, 0x00, 0x20, 0x02, 0x40, 0x00, 0x20,
+ 0x02, 0x40, 0x00, 0x20, 0x02, 0x20, 0x04, 0x20, 0x02, 0x20, 0x04, 0x20,
+ 0x02, 0x10, 0x08, 0x20, 0x02, 0x08, 0x08, 0x20, 0x02, 0xf0, 0x07, 0x20,
+ 0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10, 0x08, 0x00, 0xc0, 0x08,
+ 0x08, 0x3c, 0x30, 0x08, 0x10, 0xe6, 0x19, 0x04, 0x20, 0x00, 0x0f, 0x02,
+ 0x40, 0x00, 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0x00, 0x06, 0x30, 0x00,
+ 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static final int cm_width = 32;
+static final int cm_height = 32;
+
+static char cm_bits[] = { // cursor bitmap mask
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0xfe, 0x3f, 0x00,
+ 0x80, 0x07, 0xf0, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0x60, 0x00, 0x00, 0x03,
+ 0x30, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0x0c, 0x0c, 0x3e, 0x3e, 0x18,
+ 0x0e, 0x03, 0xe0, 0x18, 0xc6, 0x00, 0x00, 0x31, 0x07, 0x1e, 0x78, 0x30,
+ 0x03, 0x0c, 0x30, 0x60, 0x03, 0x40, 0x00, 0x60, 0x03, 0x40, 0x00, 0x60,
+ 0x03, 0x40, 0x00, 0x60, 0x03, 0x20, 0x04, 0x60, 0x03, 0x20, 0x04, 0x60,
+ 0x03, 0x10, 0x08, 0x60, 0x03, 0x08, 0x08, 0x60, 0x03, 0xf0, 0x07, 0x60,
+ 0x06, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x30, 0x0c, 0x00, 0xc0, 0x18,
+ 0x0c, 0x3c, 0x30, 0x18, 0x18, 0xe6, 0x19, 0x0c, 0x30, 0x00, 0x0f, 0x06,
+ 0x60, 0x00, 0x00, 0x03, 0xc0, 0x01, 0xc0, 0x01, 0x80, 0x07, 0xf0, 0x00,
+ 0x00, 0xfe, 0x3f, 0x00, 0x00, 0xf8, 0x0f, 0x00};
+
+
+ static int[] shapeList = {
+ ArrowCursor,
+ UpArrowCursor,
+ CrossCursor,
+ WaitCursor,
+ IbeamCursor,
+ SizeVerCursor,
+ SizeHorCursor,
+ SizeBDiagCursor,
+ SizeFDiagCursor,
+ SizeAllCursor,
+ BlankCursor,
+ SplitVCursor,
+ SplitHCursor,
+ PointingHandCursor,
+ ForbiddenCursor,
+ WhatsThisCursor
+ };
+
+ static String[] nameList = {
+ "arrowCursor" ,
+ "upArrowCursor" ,
+ "crossCursor" ,
+ "waitCursor" ,
+ "ibeamCursor" ,
+ "sizeVerCursor" ,
+ "sizeHorCursor" ,
+ "sizeBDiagCursor" ,
+ "sizeFDiagCursor" ,
+ "sizeAllCursor" ,
+ "blankCursor" ,
+ "splitVCursor" ,
+ "splitHCursor" ,
+ "pointingHandCursor" ,
+ "forbiddenCursor" ,
+ "whatsThisCursor"
+ };
+
+//
+// Constructs a cursor view.
+//
+
+public CursorView() // construct view
+{
+ setCaption( "CursorView" ); // set window caption
+
+ QGridLayout grid = new QGridLayout( this, 5, 4, 20 );
+ QLabel label;
+
+ int i=0;
+ for ( int y=0; y<4; y++ ) { // create the small labels
+ for ( int x=0; x<4; x++ ) {
+ label = new QLabel( this );
+ label.setCursor( new QCursor( shapeList[i] ) );
+ label.setText( nameList[i] );
+ label.setAlignment( AlignCenter );
+ label.setFrameStyle( QFrame.Box | QFrame.Raised );
+ grid.addWidget( label, x, y );
+ i++;
+ }
+ }
+
+ QBitmap cb = new QBitmap( cb_width, cb_height, cb_bits, true );
+ QBitmap cm = new QBitmap( cm_width, cm_height, cm_bits, true );
+ QCursor custom = new QCursor( cb, cm ); // create bitmap cursor
+
+ label = new QLabel( this ); // create the big label
+ label.setCursor( custom );
+ label.setText( "Custom bitmap cursor" );
+ label.setAlignment( AlignCenter );
+ label.setFrameStyle( QFrame.Box | QFrame.Sunken );
+ grid.addMultiCellWidget( label, 4, 4, 0, 3 );
+
+}
+
+
+//
+// Create and display a CursorView.
+//
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args ); // application object
+ CursorView v = new CursorView(); // cursor view
+ a.setMainWidget( v );
+ v.setCaption("Qt Example - Cursors");
+ v.show();
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/cursor/README b/qtjava/javalib/examples/cursor/README
new file mode 100644
index 00000000..c2040e5f
--- /dev/null
+++ b/qtjava/javalib/examples/cursor/README
@@ -0,0 +1,2 @@
+The cursor sample program displays the predefined cursors and
+creates a custom bitmap cursor.
diff --git a/qtjava/javalib/examples/dclock/DigitalClock.java b/qtjava/javalib/examples/dclock/DigitalClock.java
new file mode 100644
index 00000000..6bc1d87f
--- /dev/null
+++ b/qtjava/javalib/examples/dclock/DigitalClock.java
@@ -0,0 +1,115 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.Date;
+import java.text.*;
+
+class DigitalClock extends QLCDNumber // digital clock widget
+{
+
+private boolean showingColon;
+private int normalTimer;
+private int showDateTimer;
+
+
+
+
+DigitalClock( )
+{
+ this(null, null);
+}
+
+//
+// Constructs a DigitalClock widget with a parent and a name.
+//
+DigitalClock( QWidget parent )
+{
+ this(parent, null);
+}
+
+DigitalClock( QWidget parent, String name )
+{
+ super( parent, name );
+ showingColon = false;
+ setFrameStyle( QFrame.Panel | QFrame.Raised );
+ setLineWidth( 2 ); // set frame line width
+ showTime(); // display the current time
+ normalTimer = startTimer( 500 ); // 1/2 second timer events
+ showDateTimer = -1; // not showing date
+}
+
+
+//
+// Handles timer events for the digital clock widget.
+// There are two different timers; one timer for updating the clock
+// and another one for switching back from date mode to time mode.
+//
+
+protected void timerEvent( QTimerEvent e )
+{
+ if ( e.timerId() == showDateTimer ) // stop showing date
+ stopDate();
+ else { // normal timer
+ if ( showDateTimer == -1 ) // not showing date
+ showTime();
+ }
+}
+
+//
+// Enters date mode when the left mouse button is pressed.
+//
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ if ( e.button() == QMouseEvent.LeftButton ) // left button pressed
+ showDate();
+}
+
+
+//
+// Shows the current date in the internal lcd widget.
+// Fires a timer to stop showing the date.
+//
+
+void showDate()
+{
+ if ( showDateTimer != -1 ) // already showing date
+ return;
+ // Java always prints at least two digits for the year
+ DateFormat dateFormat = new SimpleDateFormat( "yy d" );
+ String s = dateFormat.format(new Date());
+ display( s ); // sets the LCD number/text
+ showDateTimer = startTimer( 2000 ); // keep this state for 2 secs
+}
+
+//
+// Stops showing the date.
+//
+
+void stopDate()
+{
+ killTimer( showDateTimer );
+ showDateTimer = -1;
+ showTime();
+}
+
+//
+// Shows the current time in the internal lcd widget.
+//
+
+void showTime()
+{
+ showingColon = !showingColon; // toggle/blink colon
+ DateFormat timeFormat = new SimpleDateFormat( (showingColon ? "HH:mm": "HH mm") );
+ String s = timeFormat.format(new Date());
+ display( s ); // set LCD number/text
+}
+}
diff --git a/qtjava/javalib/examples/dclock/Main.java b/qtjava/javalib/examples/dclock/Main.java
new file mode 100644
index 00000000..1aeb174e
--- /dev/null
+++ b/qtjava/javalib/examples/dclock/Main.java
@@ -0,0 +1,30 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+ DigitalClock clock = new DigitalClock();
+ clock.resize( 170, 80 );
+ a.setMainWidget( clock );
+ clock.setCaption("Qt Example - Digital Clock");
+ clock.show();
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+}
diff --git a/qtjava/javalib/examples/dclock/README b/qtjava/javalib/examples/dclock/README
new file mode 100644
index 00000000..dfa58402
--- /dev/null
+++ b/qtjava/javalib/examples/dclock/README
@@ -0,0 +1,5 @@
+The dclock program displays a digital LCD clock and can switch
+between time and date.
+
+See also the aclock sample that displays an analog clock.
+
diff --git a/qtjava/javalib/examples/demo/sql/BookForm.java b/qtjava/javalib/examples/demo/sql/BookForm.java
new file mode 100644
index 00000000..67670357
--- /dev/null
+++ b/qtjava/javalib/examples/demo/sql/BookForm.java
@@ -0,0 +1,191 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'book.ui'
+**
+** Created: Wed Aug 8 03:34:02 2001
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+import org.kde.qt.*;
+
+public class BookForm extends QWidget {
+ QDataTable AuthorDataTable;
+ QDataTable BookDataTable;
+ QPushButton connectButton;
+ QPushButton editButton;
+
+ QGridLayout BookFormLayout;
+ QSizePolicy policy_1;
+ QSizePolicy policy_2;
+ QSpacerItem spacer;
+ QSpacerItem spacer_2;
+
+ QSqlCursor authorCursor;
+ QSqlCursor bookCursor;
+
+/*
+ * Constructs a BookForm which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+BookForm( QWidget parent, String name, int fl )
+{
+ super( parent, name, fl );
+ if ( name == null )
+ setName( "BookForm" );
+ resize( 478, 498 );
+ setCaption( trUtf8( "Book" ) );
+ BookFormLayout = new QGridLayout( this );
+ BookFormLayout.setSpacing( 6 );
+ BookFormLayout.setMargin( 11 );
+
+ AuthorDataTable = new QDataTable( this, "AuthorDataTable" );
+ AuthorDataTable.addColumn( "surname", trUtf8( "Surname", "" ) );
+ AuthorDataTable.addColumn( "forename", trUtf8( "Forename", "" ) );
+ AuthorDataTable.setSorting( true );
+ AuthorDataTable.setConfirmDelete( true );
+ AuthorDataTable.setSort( new String[] { "surname ASC", "forename ASC" } );
+
+ BookFormLayout.addMultiCellWidget( AuthorDataTable, 1, 1, 0, 2 );
+ spacer = new QSpacerItem( 20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum );
+ BookFormLayout.addMultiCell( spacer, 0, 0, 1, 2 );
+
+ BookDataTable = new QDataTable( this, "BookDataTable" );
+ BookDataTable.addColumn( "title", trUtf8( "Title", "" ) );
+ BookDataTable.addColumn( "price", trUtf8( "Price", "" ) );
+ BookDataTable.addColumn( "notes", trUtf8( "Notes", "" ) );
+ BookDataTable.setReadOnly( true );
+ BookDataTable.setSorting( true );
+ BookDataTable.setSort( new String[] { "title ASC" } );
+
+ BookFormLayout.addMultiCellWidget( BookDataTable, 2, 2, 0, 2 );
+ spacer_2 = new QSpacerItem( 20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum );
+ BookFormLayout.addMultiCell( spacer_2, 3, 3, 0, 1 );
+
+ connectButton = new QPushButton( this, "connectButton" );
+ policy_1 = new QSizePolicy( (int)0, (int)0, connectButton.sizePolicy().hasHeightForWidth() );
+ connectButton.setSizePolicy( policy_1 );
+ connectButton.setText( trUtf8( "&Connect..." ) );
+
+ BookFormLayout.addWidget( connectButton, 0, 0 );
+
+ editButton = new QPushButton( this, "editButton" );
+ editButton.setEnabled( false );
+ policy_2 = new QSizePolicy( (int)0, (int)0, editButton.sizePolicy().hasHeightForWidth() );
+ editButton.setSizePolicy( policy_2 );
+ editButton.setText( trUtf8( "&Edit Books" ) );
+
+ BookFormLayout.addWidget( editButton, 3, 2 );
+
+ // database support
+
+
+
+
+
+ // signals and slots connections
+ connect( editButton, SIGNAL( "clicked()" ), this, SLOT( "editClicked()" ) );
+ connect( AuthorDataTable, SIGNAL( "primeInsert(QSqlRecord)" ), this, SLOT( "primeInsertAuthor(QSqlRecord)" ) );
+ connect( AuthorDataTable, SIGNAL( "currentChanged(QSqlRecord)" ), this, SLOT( "newCurrentAuthor(QSqlRecord)" ) );
+ connect( connectButton, SIGNAL( "clicked()" ), this, SLOT( "connectClicked()" ) );
+
+ // tab order
+ setTabOrder( connectButton, editButton );
+ init();
+}
+
+BookForm( QWidget parent, String name )
+{
+ this(parent, name, 0);
+}
+
+BookForm( QWidget parent )
+{
+ this(parent, null, 0);
+}
+
+BookForm( )
+{
+ this(null, null, 0);
+}
+
+void init()
+{
+}
+
+public void destroy()
+{
+}
+
+void editClicked()
+{
+ EditBookForm dialog = new EditBookForm( this, "Edit Book Form", true, 0 );
+ QSqlCursor cur = new QSqlCursor( "book" );
+ dialog.BookDataBrowser.setSqlCursor( cur );
+ dialog.BookDataBrowser.setFilter( BookDataTable.filter() );
+ String[] sort = new String[BookDataTable.sort().size()];
+ sort = (String[]) BookDataTable.sort().toArray(sort);
+ dialog.BookDataBrowser.setSort(QSqlIndex.fromStringList(
+ sort, cur ) );
+ dialog.BookDataBrowser.refresh();
+ int i = BookDataTable.currentRow();
+ if ( i == -1 ) i = 0; // Always use the first row
+ dialog.BookDataBrowser.seek( i );
+ dialog.exec();
+ dialog = null;
+ BookDataTable.refresh();
+}
+
+void connectClicked()
+{
+ boolean ok = false;
+ ConnectDialog dialog = new ConnectDialog( this, "Connect", true, 0 );
+ String[] drivers = new String[QSqlDatabase.drivers().size()];;
+ drivers = (String[]) QSqlDatabase.drivers().toArray(drivers);
+ dialog.comboDriver.insertStringList( drivers );
+ dialog.editDatabase.setText( "book" );
+ if ( dialog.exec() == QDialog.Accepted ) {
+ // QSqlDatabase.removeDatabase( QSqlDatabase.defaultConnection() );
+ QSqlDatabase db = QSqlDatabase.addDatabase( dialog.comboDriver.currentText() );
+ db.setDatabaseName( dialog.editDatabase.text() );
+ db.setUserName( dialog.editUsername.text() );
+ db.setPassword( dialog.editPassword.text() );
+ db.setHostName( dialog.editHostname.text() );
+ if ( !db.open() ) {
+ //## warning?
+ ok= false;
+ } else
+ ok = true;
+ }
+ if ( !ok ) {
+ editButton.setEnabled( false );
+ BookDataTable.setSqlCursor( (QSqlCursor) null );
+ AuthorDataTable.setSqlCursor( (QSqlCursor) null );
+ } else {
+ editButton.setEnabled( true );
+ authorCursor = new QSqlCursor( "author" );
+ AuthorDataTable.setSqlCursor( authorCursor, false, true );
+ bookCursor = new QSqlCursor( "book" );
+ BookDataTable.setSqlCursor( bookCursor, false, true );
+ AuthorDataTable.refresh( QDataTable.RefreshAll );
+ BookDataTable.refresh( QDataTable.RefreshAll );
+ }
+ dialog = null;
+}
+
+void newCurrentAuthor(QSqlRecord author)
+{
+ BookDataTable.setFilter( "authorid=" + author.value( "id" ).toString() );
+ BookDataTable.refresh();
+}
+
+void primeInsertAuthor(QSqlRecord buffer)
+{
+ QSqlQuery q = new QSqlQuery();
+ q.exec( "UPDATE sequence SET sequence = sequence + 1 WHERE tablename='author';" );
+ q.exec( "SELECT sequence FROM sequence WHERE tablename='author';" );
+ if ( q.next() ) {
+ buffer.setValue( "id", q.value( 0 ) );
+ }
+}
+
+}
diff --git a/qtjava/javalib/examples/demo/sql/ConnectDialog.java b/qtjava/javalib/examples/demo/sql/ConnectDialog.java
new file mode 100644
index 00000000..bbd17391
--- /dev/null
+++ b/qtjava/javalib/examples/demo/sql/ConnectDialog.java
@@ -0,0 +1,138 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'connect.ui'
+**
+** Created: Wed Aug 8 03:35:48 2001
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+import org.kde.qt.*;
+
+public class ConnectDialog extends QDialog {
+ QLineEdit editDatabase;
+ QLabel TextLabel3;
+ QLineEdit editPassword;
+ QLabel TextLabel4;
+ QLabel TextLabel4_2;
+ QLabel TextLabel2;
+ QLabel TextLabel5;
+ QComboBox comboDriver;
+ QLineEdit editHostname;
+ QLineEdit editUsername;
+ QPushButton PushButton1;
+ QPushButton PushButton2;
+
+ QGridLayout ConnectDialogLayout;
+ QSpacerItem spacer;
+
+/*
+ * Constructs a ConnectDialog which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ *
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * true to construct a modal dialog.
+ */
+ConnectDialog( QWidget parent, String name, boolean modal, int fl )
+{
+ super( parent, name, modal, fl );
+ if ( name == null )
+ setName( "ConnectDialog" );
+ resize( 294, 207 );
+ setCaption( trUtf8( "Connect..." ) );
+ ConnectDialogLayout = new QGridLayout( this );
+ ConnectDialogLayout.setSpacing( 6 );
+ ConnectDialogLayout.setMargin( 11 );
+
+ editDatabase = new QLineEdit( this, "editDatabase" );
+
+ ConnectDialogLayout.addMultiCellWidget( editDatabase, 1, 1, 2, 3 );
+
+ TextLabel3 = new QLabel( this, "TextLabel3" );
+ TextLabel3.setText( trUtf8( "Database Name:" ) );
+
+ ConnectDialogLayout.addMultiCellWidget( TextLabel3, 1, 1, 0, 1 );
+
+ editPassword = new QLineEdit( this, "editPassword" );
+ editPassword.setEchoMode( QLineEdit.Password );
+
+ ConnectDialogLayout.addMultiCellWidget( editPassword, 3, 3, 2, 3 );
+
+ TextLabel4 = new QLabel( this, "TextLabel4" );
+ TextLabel4.setText( trUtf8( "&Username:" ) );
+
+ ConnectDialogLayout.addMultiCellWidget( TextLabel4, 2, 2, 0, 1 );
+
+ TextLabel4_2 = new QLabel( this, "TextLabel4_2" );
+ TextLabel4_2.setText( trUtf8( "&Password:" ) );
+
+ ConnectDialogLayout.addMultiCellWidget( TextLabel4_2, 3, 3, 0, 1 );
+
+ TextLabel2 = new QLabel( this, "TextLabel2" );
+ TextLabel2.setText( trUtf8( "D&river" ) );
+
+ ConnectDialogLayout.addMultiCellWidget( TextLabel2, 0, 0, 0, 1 );
+
+ TextLabel5 = new QLabel( this, "TextLabel5" );
+ TextLabel5.setText( trUtf8( "&Hostname:" ) );
+
+ ConnectDialogLayout.addMultiCellWidget( TextLabel5, 4, 4, 0, 1 );
+
+ comboDriver = new QComboBox( false, this, "comboDriver" );
+ comboDriver.setEditable( true );
+
+ ConnectDialogLayout.addMultiCellWidget( comboDriver, 0, 0, 2, 3 );
+
+ editHostname = new QLineEdit( this, "editHostname" );
+
+ ConnectDialogLayout.addMultiCellWidget( editHostname, 4, 4, 2, 3 );
+
+ editUsername = new QLineEdit( this, "editUsername" );
+
+ ConnectDialogLayout.addMultiCellWidget( editUsername, 2, 2, 2, 3 );
+
+ PushButton1 = new QPushButton( this, "PushButton1" );
+ PushButton1.setText( trUtf8( "&OK" ) );
+ PushButton1.setDefault( true );
+
+ ConnectDialogLayout.addMultiCellWidget( PushButton1, 5, 5, 1, 2 );
+
+ PushButton2 = new QPushButton( this, "PushButton2" );
+ PushButton2.setText( trUtf8( "&Cancel" ) );
+
+ ConnectDialogLayout.addWidget( PushButton2, 5, 3 );
+ spacer = new QSpacerItem( 20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum );
+ ConnectDialogLayout.addItem( spacer, 5, 0 );
+
+
+
+
+
+ // signals and slots connections
+ connect( PushButton1, SIGNAL( "clicked()" ), this, SLOT( "accept()" ) );
+ connect( PushButton2, SIGNAL( "clicked()" ), this, SLOT( "reject()" ) );
+
+ // tab order
+ setTabOrder( comboDriver, editDatabase );
+ setTabOrder( editDatabase, editUsername );
+ setTabOrder( editUsername, editPassword );
+ setTabOrder( editPassword, editHostname );
+ setTabOrder( editHostname, PushButton1 );
+ setTabOrder( PushButton1, PushButton2 );
+
+ // buddies
+ TextLabel4.setBuddy( editUsername );
+ TextLabel4_2.setBuddy( editPassword );
+ TextLabel2.setBuddy( comboDriver );
+ TextLabel5.setBuddy( editHostname );
+ init();
+}
+
+void init()
+{
+}
+
+public void destroy()
+{
+}
+
+}
diff --git a/qtjava/javalib/examples/demo/sql/EditBookForm.java b/qtjava/javalib/examples/demo/sql/EditBookForm.java
new file mode 100644
index 00000000..6c07176f
--- /dev/null
+++ b/qtjava/javalib/examples/demo/sql/EditBookForm.java
@@ -0,0 +1,267 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'editbook.ui'
+**
+** Created: Wed Aug 8 03:37:45 2001
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.HashMap;
+
+public class EditBookForm extends QDialog {
+ QDataBrowser BookDataBrowser;
+ QLabel labelPrice;
+ QLabel labelTitle;
+ QLineEdit QLineEditTitle;
+ QLineEdit QLineEditPrice;
+ QPushButton PushButtonInsert;
+ QPushButton PushButtonUpdate;
+ QPushButton PushButtonDelete;
+ QPushButton PushButtonClose;
+ QPushButton PushButtonFirst;
+ QPushButton PushButtonPrev;
+ QPushButton PushButtonNext;
+ QPushButton PushButtonLast;
+ QLabel TextLabel1;
+ QComboBox ComboBoxAuthor;
+
+ QVBoxLayout EditBookFormLayout;
+ QGridLayout BookDataBrowserLayout;
+ QGridLayout Layout2;
+ QHBoxLayout Layout6;
+ QHBoxLayout Layout3;
+ QHBoxLayout Layout6_2;
+
+ HashMap authorMap;
+ QSizePolicy policy_1;
+ QSqlForm BookDataBrowserForm;
+
+/*
+ * Constructs a EditBookForm which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ *
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * true to construct a modal dialog.
+ */
+EditBookForm( QWidget parent, String name, boolean modal, int fl )
+{
+ super( parent, name, modal, fl );
+ if ( name == null )
+ setName( "EditBookForm" );
+ resize( 524, 371 );
+ setCaption( trUtf8( "Edit Books" ) );
+ EditBookFormLayout = new QVBoxLayout( this );
+ EditBookFormLayout.setSpacing( 6 );
+ EditBookFormLayout.setMargin( 11 );
+
+ BookDataBrowser = new QDataBrowser( this, "BookDataBrowser" );
+ BookDataBrowserLayout = new QGridLayout( BookDataBrowser );
+ BookDataBrowser.setSort( new String[] { "title ASC" } );
+ BookDataBrowserLayout.setSpacing( 6 );
+ BookDataBrowserLayout.setMargin( 11 );
+
+ Layout2 = new QGridLayout();
+ Layout2.setSpacing( 6 );
+ Layout2.setMargin( 0 );
+
+ labelPrice = new QLabel( BookDataBrowser, "labelPrice" );
+ labelPrice.setText( trUtf8( "Price" ) );
+
+ Layout2.addWidget( labelPrice, 1, 0 );
+
+ labelTitle = new QLabel( BookDataBrowser, "labelTitle" );
+ labelTitle.setText( trUtf8( "Title" ) );
+
+ Layout2.addWidget( labelTitle, 0, 0 );
+
+ QLineEditTitle = new QLineEdit( BookDataBrowser, "QLineEditTitle" );
+
+ Layout2.addWidget( QLineEditTitle, 0, 1 );
+
+ QLineEditPrice = new QLineEdit( BookDataBrowser, "QLineEditPrice" );
+
+ Layout2.addWidget( QLineEditPrice, 1, 1 );
+
+ BookDataBrowserLayout.addLayout( Layout2, 0, 0 );
+
+ Layout6 = new QHBoxLayout();
+ Layout6.setSpacing( 6 );
+ Layout6.setMargin( 0 );
+
+ PushButtonInsert = new QPushButton( BookDataBrowser, "PushButtonInsert" );
+ PushButtonInsert.setText( trUtf8( "&Insert" ) );
+ Layout6.addWidget( PushButtonInsert );
+
+ PushButtonUpdate = new QPushButton( BookDataBrowser, "PushButtonUpdate" );
+ PushButtonUpdate.setText( trUtf8( "&Update" ) );
+ PushButtonUpdate.setDefault( true );
+ Layout6.addWidget( PushButtonUpdate );
+
+ PushButtonDelete = new QPushButton( BookDataBrowser, "PushButtonDelete" );
+ PushButtonDelete.setText( trUtf8( "&Delete" ) );
+ Layout6.addWidget( PushButtonDelete );
+
+ PushButtonClose = new QPushButton( BookDataBrowser, "PushButtonClose" );
+ PushButtonClose.setText( trUtf8( "&Close" ) );
+ Layout6.addWidget( PushButtonClose );
+
+ BookDataBrowserLayout.addLayout( Layout6, 3, 0 );
+
+ Layout3 = new QHBoxLayout();
+ Layout3.setSpacing( 6 );
+ Layout3.setMargin( 0 );
+
+ PushButtonFirst = new QPushButton( BookDataBrowser, "PushButtonFirst" );
+ PushButtonFirst.setText( trUtf8( "|< &First" ) );
+ Layout3.addWidget( PushButtonFirst );
+
+ PushButtonPrev = new QPushButton( BookDataBrowser, "PushButtonPrev" );
+ PushButtonPrev.setText( trUtf8( "<< &Prev" ) );
+ Layout3.addWidget( PushButtonPrev );
+
+ PushButtonNext = new QPushButton( BookDataBrowser, "PushButtonNext" );
+ PushButtonNext.setText( trUtf8( "&Next >>" ) );
+ Layout3.addWidget( PushButtonNext );
+
+ PushButtonLast = new QPushButton( BookDataBrowser, "PushButtonLast" );
+ PushButtonLast.setText( trUtf8( "&Last >|" ) );
+ Layout3.addWidget( PushButtonLast );
+
+ BookDataBrowserLayout.addLayout( Layout3, 2, 0 );
+
+ Layout6_2 = new QHBoxLayout();
+ Layout6_2.setSpacing( 6 );
+ Layout6_2.setMargin( 0 );
+
+ TextLabel1 = new QLabel( BookDataBrowser, "TextLabel1" );
+ TextLabel1.setText( trUtf8( "Author" ) );
+ Layout6_2.addWidget( TextLabel1 );
+
+ ComboBoxAuthor = new QComboBox( false, BookDataBrowser, "ComboBoxAuthor" );
+ policy_1 = new QSizePolicy( (int)7, (int)0, ComboBoxAuthor.sizePolicy().hasHeightForWidth() );
+ ComboBoxAuthor.setSizePolicy( policy_1 );
+ Layout6_2.addWidget( ComboBoxAuthor );
+
+ BookDataBrowserLayout.addLayout( Layout6_2, 1, 0 );
+ EditBookFormLayout.addWidget( BookDataBrowser );
+
+ // database support
+ BookDataBrowserForm = new QSqlForm( this, "BookDataBrowserForm" );
+ BookDataBrowserForm.insert( QLineEditTitle, "title" );
+ BookDataBrowserForm.insert( QLineEditPrice, "price" );
+ BookDataBrowser.setForm( BookDataBrowserForm );
+
+
+
+
+
+ // signals and slots connections
+ connect( PushButtonFirst, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "first()" ) );
+ connect( BookDataBrowser, SIGNAL( "firstRecordAvailable( boolean )" ), PushButtonFirst, SLOT( "setEnabled(boolean)" ) );
+ connect( PushButtonPrev, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "prev()" ) );
+ connect( BookDataBrowser, SIGNAL( "prevRecordAvailable( boolean )" ), PushButtonPrev, SLOT( "setEnabled(boolean)" ) );
+ connect( PushButtonNext, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "next()" ) );
+ connect( BookDataBrowser, SIGNAL( "nextRecordAvailable( boolean )" ), PushButtonNext, SLOT( "setEnabled(boolean)" ) );
+ connect( PushButtonLast, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "last()" ) );
+ connect( BookDataBrowser, SIGNAL( "lastRecordAvailable( boolean )" ), PushButtonLast, SLOT( "setEnabled(boolean)" ) );
+ connect( PushButtonInsert, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "insert()" ) );
+ connect( PushButtonUpdate, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "update()" ) );
+ connect( PushButtonDelete, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "del()" ) );
+ connect( PushButtonClose, SIGNAL( "clicked()" ), this, SLOT( "accept()" ) );
+ connect( BookDataBrowser, SIGNAL( "primeUpdate(QSqlRecord)" ), this, SLOT( "primeUpdateBook(QSqlRecord)" ) );
+ connect( BookDataBrowser, SIGNAL( "beforeUpdate(QSqlRecord)" ), this, SLOT( "beforeUpdateBook(QSqlRecord)" ) );
+ connect( BookDataBrowser, SIGNAL( "beforeInsert(QSqlRecord)" ), this, SLOT( "beforeUpdateBook(QSqlRecord)" ) );
+ connect( BookDataBrowser, SIGNAL( "primeInsert(QSqlRecord)" ), this, SLOT( "primeInsertBook(QSqlRecord)" ) );
+ connect( BookDataBrowser, SIGNAL( "primeInsert(QSqlRecord)" ), this, SLOT( "primeInsertBook(QSqlRecord)" ) );
+
+ // tab order
+ setTabOrder( QLineEditTitle, QLineEditPrice );
+ setTabOrder( QLineEditPrice, ComboBoxAuthor );
+ setTabOrder( ComboBoxAuthor, PushButtonFirst );
+ setTabOrder( PushButtonFirst, PushButtonPrev );
+ setTabOrder( PushButtonPrev, PushButtonNext );
+ setTabOrder( PushButtonNext, PushButtonLast );
+ setTabOrder( PushButtonLast, PushButtonInsert );
+ setTabOrder( PushButtonInsert, PushButtonUpdate );
+ setTabOrder( PushButtonUpdate, PushButtonDelete );
+ setTabOrder( PushButtonDelete, PushButtonClose );
+ init();
+}
+
+/*
+ * Widget polish. Reimplemented to handle
+ * default data browser initialization
+ */
+public void polish()
+{
+ if ( BookDataBrowser != null ) {
+ if ( BookDataBrowser.sqlCursor() == null ) {
+ QSqlCursor cursor = new QSqlCursor( "book" );
+ BookDataBrowser.setSqlCursor( cursor, true );
+ BookDataBrowser.refresh();
+ BookDataBrowser.first();
+ }
+ }
+ super.polish();
+}
+
+void beforeUpdateBook(QSqlRecord buffer)
+{
+ int[] id = { 0 };
+ mapAuthor( ComboBoxAuthor.currentText(), id, false );
+ buffer.setValue( "authorid", new QVariant(id[0]) );
+}
+
+void mapAuthor(String name, int[] id, boolean populate)
+{
+// if ( populate )
+// authorMap[ name ] = id;
+// else
+// id[0] = authorMap[ name ];
+}
+
+void primeInsertBook(QSqlRecord buffer)
+{
+ QSqlQuery q = new QSqlQuery();
+ q.exec( "UPDATE sequence SET sequence = sequence + 1 WHERE tablename='book';" );
+ q.exec( "SELECT sequence FROM sequence WHERE tablename='book';" );
+ if ( q.next() ) {
+ buffer.setValue( "id", q.value( 0 ) );
+ }
+}
+
+void primeUpdateBook(QSqlRecord buffer)
+{
+ // Who is this book's author?
+ QSqlQuery query = new QSqlQuery( "SELECT surname FROM author WHERE id=" +
+ buffer.value( "authorid" ).toString() + ";" );
+ String author = "";
+ if ( query.next() )
+ author = query.value( 0 ).toString();
+ // Set the ComboBox to the right author
+ for ( int i = 0; i < ComboBoxAuthor.count(); i++ ) {
+ if ( ComboBoxAuthor.text( i ) == author ) {
+ ComboBoxAuthor.setCurrentItem( i ) ;
+ break;
+ }
+ }
+}
+
+void init()
+{
+ authorMap = new HashMap();
+ QSqlQuery query = new QSqlQuery( "SELECT surname, id FROM author ORDER BY surname;" );
+ while ( query.next() ) {
+ ComboBoxAuthor.insertItem( query.value( 0 ).toString() );
+ int[] id = new int[1];
+ id[0] = query.value( 1 ).toInt();
+ mapAuthor( query.value( 0 ).toString(), id, true );
+ }
+}
+
+public void destroy()
+{
+}
+
+}
diff --git a/qtjava/javalib/examples/demo/sql/Main.java b/qtjava/javalib/examples/demo/sql/Main.java
new file mode 100644
index 00000000..1bf81c88
--- /dev/null
+++ b/qtjava/javalib/examples/demo/sql/Main.java
@@ -0,0 +1,20 @@
+import org.kde.qt.*;
+
+public class Main {
+
+ public static void main(String[] args)
+ {
+ QApplication a = new QApplication(args);
+ BookForm form = new BookForm();
+
+ a.setMainWidget( form );
+ form.show();
+ a.exec();
+
+ return;
+ }
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/demo/widgets/Main.java b/qtjava/javalib/examples/demo/widgets/Main.java
new file mode 100644
index 00000000..f78ca26d
--- /dev/null
+++ b/qtjava/javalib/examples/demo/widgets/Main.java
@@ -0,0 +1,20 @@
+import org.kde.qt.*;
+
+public class Main {
+
+ public static void main(String[] args)
+ {
+ QApplication a = new QApplication(args);
+ WidgetsBase widgets = new WidgetsBase();
+
+ a.setMainWidget( widgets );
+ widgets.show();
+ a.exec();
+
+ return;
+ }
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/demo/widgets/WidgetsBase.java b/qtjava/javalib/examples/demo/widgets/WidgetsBase.java
new file mode 100644
index 00000000..74382cee
--- /dev/null
+++ b/qtjava/javalib/examples/demo/widgets/WidgetsBase.java
@@ -0,0 +1,6116 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'widgetsbase.ui'
+**
+** Created: Tue Aug 7 11:42:58 2001
+** by: The User Interface Compiler (uic)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.Date;
+import java.util.Calendar;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+public class WidgetsBase extends QWidget {
+ QListBox ListBox3;
+ QTextEdit TextEdit1;
+ QTabWidget TabWidget2;
+ QWidget tab;
+ QIconView IconView1;
+ QWidget tab_2;
+ QTable Table1;
+ QWidget tab_3;
+ QListView ListView3;
+ QGroupBox groupBox;
+ QLCDNumber lcdDisplay;
+ QSlider slider;
+ QLabel TextLabel1_2;
+ QPushButton pushButton;
+ QComboBox buttonColorBox;
+ QLineEdit lineEdit;
+ QLabel TextLabel1_2_2;
+ QSpinBox spinBox;
+ QProgressBar progressBar;
+ QLabel colorTest;
+ QLabel PixmapLabel1;
+ QButtonGroup ButtonGroup1;
+ QCheckBox CheckBox1;
+ QCheckBox CheckBox2;
+ QCheckBox CheckBox3;
+ QButtonGroup ButtonGroup2;
+ QRadioButton RadioButton3;
+ QRadioButton RadioButton4;
+ QRadioButton RadioButton2;
+ QGroupBox GroupBox1;
+ AnalogClock clock;
+ QDateEdit dateEdit;
+ QTimeEdit timeEdit;
+ QLabel dateTimeLabel;
+
+ QGridLayout WidgetsBaseLayout;
+ QGridLayout tabLayout;
+ QGridLayout tabLayout_2;
+ QGridLayout tabLayout_3;
+ QGridLayout groupBoxLayout;
+ QHBoxLayout Layout9;
+ QGridLayout ButtonGroup1Layout;
+ QGridLayout ButtonGroup2Layout;
+ QGridLayout GroupBox1Layout;
+ QHBoxLayout Layout5;
+ QSizePolicy sizePolicy1;
+ QSizePolicy sizePolicy2;
+ QSizePolicy sizePolicy3;
+
+ QIconViewItem item1;
+ QIconViewItem item2;
+ QIconViewItem item3;
+ QIconViewItem item4;
+ QIconViewItem item5;
+ QIconViewItem item6;
+ QIconViewItem item7;
+ QIconViewItem item8;
+ QIconViewItem item9;
+ QIconViewItem item10;
+ QIconViewItem item11;
+ QIconViewItem item12;
+ QIconViewItem item13;
+ QIconViewItem item14;
+ QIconViewItem item15;
+ QIconViewItem item16;
+ QIconViewItem item17;
+
+ QListViewItem item_1;
+ QListViewItem item_2;
+ QListViewItem item_3;
+ QListViewItem item_4;
+ QListViewItem item_5;
+ QListViewItem item_6;
+
+static String[] image0_data = {
+"16 16 92 2",
+"Qt c None",
+".N c #100c10",
+".P c #101010",
+".r c #101410",
+"#a c #181818",
+"#e c #181c18",
+".A c #202020",
+".X c #202420",
+".V c #292c29",
+".9 c #312c29",
+".o c #312c31",
+".m c #313031",
+".3 c #393439",
+"## c #393831",
+".z c #393839",
+".E c #414041",
+".p c #4a444a",
+".n c #4a484a",
+".F c #525052",
+"#i c #5a5952",
+".# c #5a595a",
+".G c #5a5d5a",
+"#. c #626162",
+".Y c #62655a",
+".q c #6a696a",
+".j c #6a6d6a",
+".h c #736d73",
+".k c #737173",
+".O c #838183",
+".y c #8b858b",
+".w c #8b8983",
+".i c #8b898b",
+"#h c #949194",
+".d c #9c999c",
+".x c #a49da4",
+".8 c #a4a1a4",
+"#g c #b4b2b4",
+".2 c #b4b6b4",
+"#r c #bda17b",
+"#d c #bda583",
+".1 c #bdaa94",
+".L c #bdae9c",
+".c c #bdb6b4",
+"#z c #c5a17b",
+"#l c #c5a583",
+"#y c #c5aa83",
+"#x c #c5aa8b",
+".7 c #c5aa94",
+".U c #c5b29c",
+"#w c #c5b69c",
+"#b c #c5baac",
+".v c #c5bab4",
+"#u c #c5beac",
+"#p c #cdbaa4",
+"#v c #cdbaac",
+"#s c #cdc2bd",
+"#t c #cdc6bd",
+".Q c #cdc6c5",
+".M c #cdcacd",
+".l c #cdcecd",
+".s c #d5ced5",
+".W c #d5d6d5",
+"#o c #decab4",
+"#m c #ded2cd",
+".b c #dedede",
+"#n c #e6dacd",
+".e c #e6dee6",
+".u c #e6e2de",
+".a c #e6e2e6",
+"#q c #eeceac",
+"#k c #eed2b4",
+"#c c #eedabd",
+".6 c #eedec5",
+".4 c #eedecd",
+".T c #eee2d5",
+".D c #eee2de",
+"#j c #f6dac5",
+".0 c #f6e2cd",
+".5 c #f6e2d5",
+".Z c #f6e6d5",
+"#f c #f6eade",
+".K c #f6eae6",
+".J c #f6eee6",
+".g c #f6eef6",
+".R c #f6f2e6",
+".S c #ffeee6",
+".C c #fff2f6",
+".I c #fff6f6",
+".t c #fff6ff",
+".H c #fffaf6",
+".B c #fffaff",
+".f c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+"QtQtQtQt.#.a.b.a.b.a.c.#.d.#QtQt",
+"QtQtQtQt.#.e.f.f.f.f.g.h.f.d.#Qt",
+"QtQtQtQt.#.a.f.i.j.f.f.k.l.f.d.m",
+"QtQtQtQt.#.e.f.n.o.f.f.i.k.j.p.m",
+".d.dQt.d.q.f.a.m.r.s.f.t.u.v.w.m",
+"Qt.d.x.d.j.f.y.z.A.j.f.B.C.D.v.m",
+"QtQt.d.d.q.f.E.F.G.m.H.I.J.K.L.m",
+"QtQtQt.d.h.M.N.O.x.P.Q.R.S.T.U.m",
+"QtQtQt.d.d.F.V.W.I.X.Y.J.Z.0.1.m",
+"QtQtQt.d.2.n.p.n.3.E.o.4.5.6.7.m",
+"QtQtQt.d.8.A.9#..F###a#b.6#c#d.m",
+"QtQtQt.d.h#e.c#f#g#h.r#i#j#k#l.m",
+"QtQtQtQt.q#m#n#f.Z.0#o#p#k#q#r.m",
+"QtQtQtQt.##s#t#u#v#w.U#x#y#r#z.m",
+"QtQtQtQt.#.m.m.m.m.m.m.m.m.m.m.m"};
+
+static String[] image1_data = {
+"16 16 53 1",
+". c None",
+"l c #313031",
+"n c #4a444a",
+"# c #5a595a",
+"i c #6a6d6a",
+"h c #736d73",
+"j c #737173",
+"r c #8b8983",
+"m c #8b898b",
+"d c #9c999c",
+"Q c #bda17b",
+"K c #bda583",
+"F c #bdaa94",
+"z c #bdae9c",
+"c c #bdb6b4",
+"Y c #c5a17b",
+"M c #c5a583",
+"X c #c5aa83",
+"W c #c5aa8b",
+"H c #c5aa94",
+"D c #c5b29c",
+"V c #c5b69c",
+"q c #c5bab4",
+"T c #c5beac",
+"U c #cdbaac",
+"R c #cdc2bd",
+"S c #cdc6bd",
+"k c #cdcecd",
+"b c #dedede",
+"e c #e6dee6",
+"p c #e6e2de",
+"a c #e6e2e6",
+"P c #eeceac",
+"O c #eed2b4",
+"J c #eedabd",
+"G c #eedec5",
+"C c #eee2d5",
+"u c #eee2de",
+"E c #f6e2cd",
+"I c #f6e6d5",
+"N c #f6eade",
+"y c #f6eae6",
+"x c #f6eee6",
+"g c #f6eef6",
+"A c #f6f2e6",
+"B c #ffeee6",
+"t c #fff2f6",
+"L c #fff6ee",
+"w c #fff6f6",
+"o c #fff6ff",
+"v c #fffaf6",
+"s c #fffaff",
+"f c #ffffff",
+"....#########...",
+"....#ababac#d#..",
+"....#effffghfd#.",
+"....#affiffjkfdl",
+"....#efjjffmjinl",
+"....#affhffopqrl",
+"....#efjjjfstuql",
+"....#affffvwxyzl",
+"....#efffvwABCDl",
+"....#affhwxxhEFl",
+"....#efjwjBjjGHl",
+"....#awjxjIEiJKl",
+"....#eLxjIEjjjMl",
+"....#axNIEJJOPQl",
+"....#RSTUVDWXQYl",
+"....#lllllllllll"};
+
+static String[] image2_data = {
+"16 16 116 2",
+"Qt c None",
+".3 c #000000",
+"#q c #000008",
+"## c #000408",
+"#p c #080408",
+".V c #080808",
+"#v c #080c08",
+"#w c #100c08",
+"#o c #100c10",
+".J c #101010",
+".U c #101410",
+"#l c #181410",
+"#n c #201c20",
+"#e c #202420",
+"#. c #292429",
+"#m c #292829",
+".2 c #292c29",
+".y c #312c31",
+".s c #313031",
+"#g c #313431",
+".9 c #393439",
+".I c #393831",
+".T c #393839",
+"#C c #413c41",
+"#f c #414041",
+".7 c #4a4441",
+".D c #4a444a",
+".K c #4a4841",
+".x c #4a484a",
+".E c #4a4c4a",
+"#a c #52504a",
+".S c #525052",
+".Z c #525552",
+".H c #52555a",
+".z c #5a5552",
+".a c #5a595a",
+".1 c #5a5d5a",
+"#D c #625d5a",
+".8 c #625d62",
+".u c #626162",
+".O c #62616a",
+"#h c #6a6562",
+".w c #6a696a",
+".C c #6a6d6a",
+"#x c #736d62",
+".k c #736d73",
+".q c #737173",
+"#E c #7b756a",
+".l c #7b757b",
+".0 c #7b7973",
+".v c #7b797b",
+".R c #838583",
+".P c #8b8583",
+".N c #8b8983",
+".B c #8b898b",
+".F c #948d94",
+".Q c #94959c",
+"#r c #9c8d83",
+".e c #9c999c",
+".G c #9c9d9c",
+"#F c #a4998b",
+"#M c #a49d94",
+".n c #a4a5a4",
+"#y c #ac9d8b",
+"#L c #aca59c",
+".W c #aca5a4",
+".o c #acaaac",
+"#N c #b4a594",
+"#Q c #bda17b",
+"#B c #bda583",
+"#k c #bdaa94",
+".6 c #bdae9c",
+"#K c #bdb2ac",
+"#i c #bdb6ac",
+".d c #bdb6b4",
+".m c #bdbabd",
+"#X c #c5a17b",
+"#J c #c5a583",
+"#W c #c5aa83",
+"#V c #c5aa8b",
+"#u c #c5aa94",
+"#d c #c5b29c",
+"#U c #c5b69c",
+"#G c #c5baa4",
+".M c #c5bab4",
+"#T c #c5beac",
+"#O c #cdbaa4",
+"#s c #cdbaac",
+"#b c #cdbeb4",
+"#R c #cdc2bd",
+"#S c #cdc6bd",
+".4 c #cdcac5",
+".r c #cdcecd",
+"#z c #d5c6ac",
+".p c #dedade",
+".c c #dedede",
+".h c #e6dee6",
+".b c #e6e2e6",
+"#P c #eeceac",
+"#I c #eed2b4",
+"#A c #eedabd",
+"#t c #eedec5",
+"#c c #eee2d5",
+".Y c #eee2de",
+".X c #eee6e6",
+".L c #eeeaee",
+".g c #f60000",
+"#H c #f6dac5",
+"#j c #f6e2cd",
+".5 c #f6eae6",
+".j c #f6eef6",
+".A c #f6f2f6",
+".t c #ff0000",
+".f c #ffb208",
+".# c #fff208",
+".i c #ffffff",
+"QtQt.#Qt.a.a.a.a.a.a.a.a.aQtQtQt",
+"QtQtQtQt.a.b.c.b.c.b.d.a.e.aQtQt",
+".fQt.#Qt.g.h.i.i.i.i.j.k.i.e.aQt",
+"QtQtQt.f.l.m.n.o.p.i.i.q.r.i.e.s",
+".tQt.f.u.l.v.w.x.y.z.A.B.q.C.D.s",
+"QtQt.E.F.G.F.C.H.I.J.K.L.A.M.N.s",
+".#Qt.O.P.Q.R.k.S.T.U.V.W.X.Y.M.s",
+"QtQt.Z.q.0.q.1.x.2.U.3.u.4.5.6.s",
+"QtQt.7.a.8.a.E.9#..V###a#b#c#d.s",
+"QtQt#e#f#f#f#g#..J##.3#h#i#j#k.s",
+"QtQt#l#e#m#e#n#o#p#q.J#r#s#t#u.s",
+"QtQtQt.V#v#w####.3#v#x#y#z#A#B.s",
+"QtQtQtQt#C.V.V.3#D#E#F#G#H#I#J.s",
+"QtQtQtQt.a#K#L#M#F#N#O#A#I#P#Q.s",
+"QtQtQtQt.a#R#S#T#s#U#d#V#W#Q#X.s",
+"QtQtQtQt.a.s.s.s.s.s.s.s.s.s.s.s"};
+
+static String[] image3_data = {
+"16 16 87 2",
+"Qt c None",
+".q c #313031",
+".w c #4a444a",
+".# c #5a595a",
+".v c #6a6d6a",
+".h c #736d73",
+".o c #737173",
+".E c #8b8983",
+".u c #8b898b",
+".i c #9c0000",
+".d c #9c999c",
+".G c #b40000",
+".F c #bd0000",
+".r c #bd2831",
+".s c #bd595a",
+"#m c #bda17b",
+"## c #bda583",
+".2 c #bdaa94",
+".R c #bdae9c",
+".Z c #bdb6ac",
+".c c #bdb6b4",
+".k c #c50000",
+".l c #c50008",
+"#a c #c52c31",
+".Y c #c53031",
+".M c #c55d5a",
+"#u c #c5a17b",
+"#h c #c5a583",
+"#t c #c5aa83",
+"#s c #c5aa8b",
+".7 c #c5aa94",
+".X c #c5b29c",
+"#r c #c5b69c",
+".D c #c5bab4",
+"#i c #cd3431",
+".A c #cd3439",
+"#o c #cd6162",
+".I c #cd656a",
+"#p c #cd918b",
+".S c #cd959c",
+"#q c #cdbaac",
+"#n c #cdc2bd",
+".O c #cdc6c5",
+".x c #cdcacd",
+".p c #cdcecd",
+".j c #d54041",
+".U c #d5cecd",
+".m c #de797b",
+"#j c #deaaa4",
+".z c #dedade",
+".b c #dedede",
+".3 c #e6aaac",
+".t c #e6b2b4",
+".J c #e6b6b4",
+".4 c #e6d2cd",
+".9 c #e6ded5",
+".e c #e6dee6",
+".C c #e6e2de",
+".a c #e6e2e6",
+".N c #eebabd",
+"#l c #eeceac",
+"#g c #eed2b4",
+"#. c #eedabd",
+"#e c #eedac5",
+".6 c #eedec5",
+".W c #eee2d5",
+".L c #eee2de",
+".8 c #eee6e6",
+"#b c #eeeae6",
+".y c #eeeaee",
+".B c #eeeeee",
+"#f c #f6dac5",
+".1 c #f6e2cd",
+".5 c #f6e2d5",
+".0 c #f6e6d5",
+"#k c #f6e6de",
+".Q c #f6eae6",
+".P c #f6eee6",
+".g c #f6eef6",
+".T c #f6f6f6",
+"#d c #ffeae6",
+".V c #ffeee6",
+".K c #fff2f6",
+"#c c #fff6ee",
+".n c #fff6ff",
+".H c #fffaff",
+".f c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+"QtQtQtQt.#.a.b.a.b.a.c.#.d.#QtQt",
+"QtQtQtQt.#.e.f.f.f.f.g.h.f.d.#Qt",
+"QtQtQtQt.i.j.k.l.m.n.f.o.p.f.d.q",
+"QtQtQt.i.k.r.s.s.k.r.t.u.o.v.w.q",
+"QtQtQt.k.i.x.y.g.z.A.r.B.C.D.E.q",
+"QtQt.F.G.#.H.j.I.J.t.k.x.K.L.D.q",
+"QtQt.kQt.#.j.M.z.y.N.k.O.P.Q.R.q",
+"QtQt.kQt.#.j.S.T.f.m.F.U.V.W.X.q",
+"QtQt.kQt.#.N.Y.t.m.k.Z.W.0.1.2.q",
+"QtQt.F.i.#.f.3.M.M.Z.4.0.5.6.7.q",
+"QtQtQt.k.#.f.K.8.9.W.0.1.6#.##.q",
+"QtQtQt.G#a#b#c.P#d.0.1#e#f#g#h.q",
+"QtQtQtQt.i#i#j#k.0.1#.#.#g#l#m.q",
+"QtQtQtQt.##n#o#p#q#r.X#s#t#m#u.q",
+"QtQtQtQt.#.q.q.q.q.q.q.q.q.q.q.q"};
+
+static String[] image4_data = {
+"16 16 63 1",
+". c None",
+"l c #313031",
+"o c #4a444a",
+"p c #523829",
+"K c #5a3c31",
+"# c #5a595a",
+"n c #6a6d6a",
+"h c #736d73",
+"j c #737173",
+"v c #8b8983",
+"m c #8b898b",
+"W c #94897b",
+"V c #948983",
+"N c #948d83",
+"O c #948d8b",
+"M c #9c9183",
+"q c #9c918b",
+"d c #9c999c",
+"i c #9c9d9c",
+"w c #a49da4",
+"0 c #bda17b",
+"U c #bda583",
+"J c #bdaa94",
+"E c #bdae9c",
+"c c #bdb6b4",
+"8 c #c5a17b",
+"Y c #c5a583",
+"7 c #c5aa83",
+"6 c #c5aa8b",
+"Q c #c5aa94",
+"G c #c5b29c",
+"5 c #c5b69c",
+"u c #c5bab4",
+"3 c #c5beac",
+"4 c #cdbaac",
+"1 c #cdc2bd",
+"2 c #cdc6bd",
+"k c #cdcecd",
+"r c #d5cec5",
+"L c #decec5",
+"b c #dedede",
+"e c #e6dee6",
+"t c #e6e2de",
+"a c #e6e2e6",
+"Z c #eeceac",
+"X c #eed2b4",
+"T c #eedabd",
+"P c #eedec5",
+"F c #eee2d5",
+"z c #eee2de",
+"I c #f6e2cd",
+"H c #f6e6d5",
+"S c #f6eade",
+"D c #f6eae6",
+"C c #f6eee6",
+"g c #f6eef6",
+"y c #fff2f6",
+"R c #fff6ee",
+"B c #fff6f6",
+"s c #fff6ff",
+"A c #fffaf6",
+"x c #fffaff",
+"f c #ffffff",
+"....#########...",
+"....#ababac#d#..",
+"....#effffghfd#.",
+"....#affdifjkfdl",
+"....#efffffmjnol",
+"..pqrqpffffstuvl",
+"....#effwdwxyzul",
+"....#affffABCDEl",
+"....#effwdwdwFGl",
+"....#affABCCHIJl",
+"..KqLMKAqNqOqPQl",
+"....#aBRCSHIPTUl",
+"....#eRCVWVWVXYl",
+"....#aCSHITTXZ0l",
+"....#12345G6708l",
+"....#lllllllllll"};
+
+static String[] image5_data = {
+"16 16 130 2",
+"Qt c None",
+".p c #313031",
+".y c #4a444a",
+".# c #5a595a",
+"#w c #622020",
+".x c #6a6d6a",
+"#r c #735552",
+"#X c #736562",
+".j c #736d73",
+".n c #737173",
+"#H c #7b7173",
+"#P c #837573",
+"#R c #8b6d62",
+"#S c #8b8173",
+".I c #8b8983",
+".w c #8b898b",
+"#e c #945552",
+"#m c #94756a",
+"#y c #948173",
+"#J c #94897b",
+"#D c #948d94",
+"#O c #949194",
+".t c #9c5d62",
+"#Z c #9c8173",
+"#0 c #9c857b",
+"#1 c #9c9183",
+"#. c #9c959c",
+".d c #9c999c",
+"#q c #a44041",
+"#T c #a49583",
+".E c #a49594",
+"#N c #a4a1a4",
+"#C c #a4a5a4",
+"#d c #ac504a",
+"#Q c #ac898b",
+"#Y c #ac8d83",
+".Y c #acaaac",
+".B c #b45052",
+".9 c #b46562",
+"#i c #b4716a",
+".P c #b49594",
+"#2 c #b4a194",
+".u c #b4a1a4",
+"#G c #b4aeb4",
+"#j c #bd2829",
+".4 c #bd595a",
+".U c #bd6162",
+"#h c #bd9d9c",
+"#4 c #bda17b",
+"#M c #bda583",
+"#p c #bdaa94",
+".1 c #bdae9c",
+"#n c #bdb2a4",
+"## c #bdb6ac",
+".c c #bdb6b4",
+"#F c #bdbabd",
+"#s c #bdbebd",
+".5 c #c5555a",
+".6 c #c55d62",
+".M c #c5696a",
+"a# c #c5a17b",
+"#W c #c5a583",
+"a. c #c5aa83",
+"#9 c #c5aa8b",
+"#B c #c5aa94",
+"#b c #c5b29c",
+"#8 c #c5b69c",
+".H c #c5bab4",
+"#6 c #c5beac",
+"#E c #c5c2c5",
+".D c #c5c6c5",
+".s c #cd595a",
+".3 c #cd6562",
+".X c #cdb2b4",
+"#7 c #cdbaac",
+".V c #cdbabd",
+".Z c #cdc2bd",
+"#g c #cdc2c5",
+"#5 c #cdc6bd",
+".J c #cdcacd",
+".o c #cdcecd",
+"#x c #d53c31",
+"#k c #d55d5a",
+"#v c #d56973",
+"#l c #d5aeac",
+"#K c #d5c2ac",
+"#z c #d5c2b4",
+".r c #d5c2c5",
+"#f c #d5cacd",
+".S c #d5ced5",
+"#u c #d5d2d5",
+".z c #d5d6d5",
+"#I c #de5539",
+".l c #de7973",
+".k c #de8583",
+".W c #de8d94",
+"#U c #dec6b4",
+".v c #decacd",
+".F c #dececd",
+".C c #ded6d5",
+"#t c #ded6de",
+".m c #dedade",
+".b c #dedede",
+".e c #e6dee6",
+".G c #e6e2de",
+".a c #e6e2e6",
+".O c #e6e6e6",
+"#c c #ee715a",
+".7 c #ee8583",
+".A c #eec2c5",
+"#3 c #eeceac",
+"#V c #eed2b4",
+"#L c #eedabd",
+".T c #eedade",
+"#A c #eedec5",
+"#a c #eee2d5",
+".R c #eee2de",
+".Q c #eee2e6",
+".N c #eee6ee",
+".K c #eeeeee",
+".8 c #f68583",
+".2 c #f6998b",
+"#o c #f6e2cd",
+".0 c #f6eae6",
+".i c #f6eef6",
+".q c #f6f6f6",
+".L c #ffeaee",
+".h c #fff2f6",
+".g c #fffaff",
+".f c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+"QtQtQtQt.#.a.b.a.b.a.c.#.d.#QtQt",
+"QtQtQtQt.#.e.f.g.h.f.i.j.f.d.#Qt",
+"QtQtQtQt.#.a.f.k.l.m.f.n.o.f.d.p",
+"QtQtQtQt.#.q.r.s.t.u.v.w.n.x.y.p",
+"QtQtQt.z.z.a.A.B.C.D.E.F.G.H.I.p",
+"QtQtQt.J.K.L.M.t.N.O.J.P.Q.R.H.p",
+"QtQt.S.N.T.U.V.W.X.e.Y.P.Z.0.1.p",
+"Qt.2.3.4.5.6.7.8.9.J#..P###a#b.p",
+"#c#d#d#e#f#g#h#i#j#k#l#m#n#o#p.p",
+"Qt#q#r#s#t#u.S.o#v#w#x#y#z#A#B.p",
+"QtQt#C#D#E#F#G#E#H#x#I#J#K#L#M.p",
+"QtQtQt.d#N#O.Y#P#Q#R#S#T#U#V#W.p",
+"QtQtQtQt#X#Y#Z#0#1#2#b#K#V#3#4.p",
+"QtQtQtQt.#.Z#5#6#7#8#b#9a.#4a#.p",
+"QtQtQtQt.#.p.p.p.p.p.p.p.p.p.p.p"};
+
+static String[] image6_data = {
+"16 16 135 2",
+"Qt c None",
+"#W c #001429",
+"#M c #00305a",
+"#L c #003862",
+"#V c #080c18",
+"#X c #081429",
+"#N c #082852",
+"#p c #083052",
+"#C c #08305a",
+"#K c #083462",
+"#g c #083c6a",
+".X c #084c7b",
+".V c #085d94",
+"#f c #086194",
+"#J c #101c29",
+".8 c #10487b",
+".L c #104c7b",
+"#x c #104c83",
+"#o c #10558b",
+".K c #105d8b",
+".J c #105d94",
+".W c #106194",
+"#v c #182831",
+"#w c #184c7b",
+".U c #18699c",
+".5 c #186d9c",
+".T c #2079a4",
+"#U c #292429",
+"#O c #293039",
+".z c #296594",
+"#n c #296d94",
+".s c #313031",
+"#m c #31556a",
+".y c #3179a4",
+".x c #317dac",
+"#D c #394c5a",
+"#c c #394c62",
+".e c #395573",
+".2 c #396583",
+"#e c #3981ac",
+".Q c #41658b",
+".o c #416d94",
+".D c #4a444a",
+"#Y c #4a4c4a",
+"#B c #52799c",
+".4 c #528db4",
+".# c #5a595a",
+".9 c #5a7183",
+".E c #5a7994",
+".H c #5a99bd",
+"#h c #626d7b",
+".C c #6a6d6a",
+"#d c #6a91ac",
+".G c #6aa1c5",
+".j c #736d73",
+".q c #737173",
+".Y c #7389a4",
+".k c #738da4",
+".f c #7b91ac",
+"#q c #83898b",
+".I c #83aec5",
+".P c #8b8983",
+".B c #8b898b",
+".g c #8ba1bd",
+".3 c #8baec5",
+".7 c #8bb2cd",
+".S c #8bb6cd",
+".v c #94b6d5",
+".d c #9c999c",
+".R c #9cb2c5",
+".n c #9cb6c5",
+".6 c #9cbed5",
+"#P c #a49d9c",
+".t c #a4b2c5",
+"#E c #aca19c",
+"#4 c #aca1a4",
+"#5 c #acaaa4",
+"#6 c #b4aea4",
+".A c #b4becd",
+"#A c #b4c6de",
+"#9 c #bda17b",
+"#T c #bda583",
+"#u c #bdaa94",
+"#b c #bdae9c",
+"#Q c #bdb6ac",
+".c c #bdb6b4",
+".p c #bdc6d5",
+".w c #bdd2e6",
+"ae c #c5a17b",
+"#3 c #c5a583",
+"ad c #c5aa83",
+"ac c #c5aa8b",
+"#I c #c5aa94",
+"#l c #c5b29c",
+"ab c #c5b69c",
+".O c #c5bab4",
+"a# c #c5beac",
+".F c #c5d2de",
+"#y c #c5d2e6",
+"aa c #cdbaac",
+"#7 c #cdbeb4",
+"a. c #cdc2bd",
+"#r c #cdc6bd",
+"#i c #cdcac5",
+".r c #cdcecd",
+".l c #cdd2d5",
+".m c #cdd6e6",
+".u c #cddee6",
+"#F c #decec5",
+"#. c #ded2d5",
+".b c #dedede",
+"#z c #dee6ee",
+".N c #e6e2de",
+".a c #e6e2e6",
+"#8 c #eeceac",
+"#2 c #eed2b4",
+"#S c #eedabd",
+"#0 c #eedac5",
+"#Z c #eedacd",
+"#H c #eedec5",
+"#R c #eedecd",
+"#k c #eee2d5",
+".1 c #eee2de",
+".Z c #eeeeee",
+"#1 c #f6dac5",
+"#t c #f6e2cd",
+"#G c #f6e2d5",
+"#s c #f6e6d5",
+"#a c #f6eae6",
+"## c #f6eee6",
+".i c #f6eef6",
+"#j c #ffeee6",
+".0 c #fff2f6",
+".M c #fff6ff",
+".h c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+"QtQtQtQt.#.a.b.a.b.a.c.#.d.#QtQt",
+"QtQtQtQt.e.f.g.h.h.h.i.j.h.d.#Qt",
+"QtQtQt.k.l.m.n.o.p.h.h.q.r.h.d.s",
+"QtQt.t.u.v.w.x.y.z.A.h.B.q.C.D.s",
+"Qt.E.F.G.H.h.I.J.K.L.b.M.N.O.P.s",
+".Q.R.S.T.U.V.J.J.W.X.Y.Z.0.1.O.s",
+".2.3.4.5.6.h.7.W.V.8.9#.###a#b.s",
+"#c#d#e#f.W.h.7.J.J#g#h#i#j#k#l.s",
+".2#m#n.J.K.h.3#o.X#p#q#r#s#t#u.s",
+"Qt#v#w#x#y#z#A#B#C#D#E#F#G#H#I.s",
+"QtQt#J#K#L#g#M#N#O#P#Q#R#H#S#T.s",
+"QtQtQt#U#V#W#X#Y#P#Q#Z#0#1#2#3.s",
+"QtQtQtQt.##4#5#6#7#0#S#S#2#8#9.s",
+"QtQtQtQt.#a.#ra#aaab#lacad#9ae.s",
+"QtQtQtQt.#.s.s.s.s.s.s.s.s.s.s.s"};
+
+static String[] image7_data = {
+"16 16 109 2",
+"Qt c None",
+"#e c #000000",
+".V c #000400",
+".6 c #080408",
+"#d c #080808",
+".D c #080c08",
+".O c #100c10",
+".5 c #101410",
+"#c c #181818",
+".U c #201c20",
+".N c #202020",
+".C c #202420",
+"#k c #292429",
+".4 c #292829",
+".o c #313031",
+"#b c #313431",
+".B c #393839",
+"#w c #393c39",
+"#v c #413c41",
+"#a c #414041",
+"## c #414441",
+".w c #4a444a",
+".3 c #4a484a",
+".M c #524c52",
+".A c #525052",
+".2 c #525552",
+".# c #5a595a",
+".1 c #625d62",
+".T c #626162",
+".z c #626562",
+".J c #6a696a",
+".v c #6a6d6a",
+"#r c #736d62",
+"#y c #736d6a",
+".h c #736d73",
+"#f c #73716a",
+".n c #737173",
+"#x c #7b716a",
+"#l c #7b7173",
+".W c #7b7573",
+".q c #7b757b",
+".r c #7b797b",
+".y c #837d83",
+".L c #838183",
+".t c #8b858b",
+".I c #8b8983",
+".u c #8b898b",
+"#z c #94857b",
+".K c #949194",
+".d c #9c999c",
+".s c #a4a1a4",
+"#q c #acaeac",
+".E c #b4b2b4",
+".S c #b4b6b4",
+"#I c #bda17b",
+"#u c #bda583",
+"#j c #bdaa94",
+".Z c #bdae9c",
+".c c #bdb6b4",
+".0 c #bdb6bd",
+".x c #bdbabd",
+"#Q c #c5a17b",
+"#D c #c5a583",
+"#P c #c5aa83",
+"#O c #c5aa8b",
+"#p c #c5aa94",
+"#. c #c5b29c",
+"#N c #c5b69c",
+".H c #c5bab4",
+"#L c #c5beac",
+".p c #c5c2c5",
+".m c #c5c6c5",
+"#M c #cdbaac",
+"#J c #cdc2bd",
+"#K c #cdc6bd",
+".l c #cdcacd",
+".k c #cdcecd",
+".j c #d5d2d5",
+"#F c #decab4",
+"#A c #deceb4",
+"#E c #ded2c5",
+".i c #dedade",
+".b c #dedede",
+"#s c #e6cebd",
+"#m c #e6d2c5",
+"#g c #e6dacd",
+".7 c #e6ded5",
+".e c #e6dee6",
+".G c #e6e2de",
+".a c #e6e2e6",
+"#H c #eeceac",
+"#C c #eed2b4",
+"#G c #eed6bd",
+"#t c #eedabd",
+"#o c #eedec5",
+".9 c #eee2d5",
+".R c #eee2de",
+".P c #eee6e6",
+".F c #eeeeee",
+"#B c #f6dac5",
+"#i c #f6e2cd",
+"#n c #f6e2d5",
+"#h c #f6e6d5",
+".Y c #f6eae6",
+".X c #f6eee6",
+".g c #f6eef6",
+".8 c #ffeee6",
+".Q c #fff2f6",
+".f c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+"QtQtQtQt.#.a.b.a.b.a.c.#.d.#QtQt",
+"QtQtQtQt.#.e.f.f.f.f.g.h.f.d.#Qt",
+".i.j.k.l.m.a.b.a.b.e.k.n.k.f.d.o",
+".p.n.q.q.r.r.r.r.r.s.t.u.n.v.w.o",
+".x.v.s.y.z.A.B.C.D.E.r.F.G.H.I.o",
+".x.J.a.K.L.M.B.N.O.E.y.P.Q.R.H.o",
+".S.T.n.J.#.w.o.U.V.E.W.R.X.Y.Z.o",
+".0.#.1.2.3.B.4.5.6.E.W.7.8.9#..o",
+".E.A###a#b.4#c#d#e.0#f#g#h#i#j.o",
+".E##.o.4#k#c.O#e#e.x#l#m#n#o#p.o",
+"#q.E.E.E#q.E.E.0.x#q#r#s#o#t#u.o",
+".M#v#v#w.#.W.W#f#x#y#z#A#B#C#D.o",
+"QtQtQtQt.#.R#g#g#E#s#F#G#C#H#I.o",
+"QtQtQtQt.##J#K#L#M#N#.#O#P#I#Q.o",
+"QtQtQtQt.#.o.o.o.o.o.o.o.o.o.o.o"};
+
+static String[] image8_data = {
+"16 16 137 2",
+"Qt c None",
+"#Z c #103810",
+"#Q c #103c10",
+"#M c #104c08",
+"#L c #183810",
+"#X c #183c10",
+"#z c #183c18",
+"#Y c #184418",
+"#m c #205d10",
+"#A c #206508",
+"#W c #293829",
+"#P c #295d29",
+".I c #298510",
+".H c #298908",
+".q c #313031",
+"#R c #314020",
+"#n c #318118",
+".T c #318518",
+".3 c #318d08",
+".S c #318d10",
+".v c #399510",
+".G c #399910",
+"#F c #414c31",
+"#d c #419529",
+".F c #419d18",
+".B c #4a444a",
+"#N c #4a7141",
+"#b c #527141",
+".0 c #527941",
+"#B c #52894a",
+"#c c #529539",
+".4 c #529d39",
+".u c #52a529",
+".# c #5a595a",
+"#0 c #5a614a",
+".P c #5a715a",
+".2 c #62aa41",
+".e c #6a696a",
+".A c #6a6d6a",
+"#E c #6a816a",
+".j c #736d73",
+".p c #737173",
+".K c #7b7d7b",
+".C c #7b856a",
+"#O c #7b8d7b",
+".5 c #7bae7b",
+"#t c #837d7b",
+".E c #83c262",
+"#h c #8b8583",
+".O c #8b8983",
+".z c #8b898b",
+"#u c #8b8d7b",
+".n c #949194",
+".d c #9c999c",
+".6 c #9cb694",
+".1 c #9cc68b",
+"#S c #a49d9c",
+".k c #a4a5a4",
+".U c #a4be9c",
+".w c #a4c69c",
+".R c #a4ce94",
+"#1 c #aca19c",
+"#6 c #aca1a4",
+"#G c #aca59c",
+"#7 c #acaaa4",
+".W c #acaaac",
+"#g c #acaeac",
+".f c #acb2ac",
+".Q c #acc6a4",
+"#8 c #b4aea4",
+".x c #b4aeb4",
+"#D c #b4b2b4",
+".8 c #b4b6b4",
+".m c #b4c6a4",
+".t c #b4d69c",
+"a# c #bda17b",
+"#V c #bda583",
+"#y c #bdaa94",
+"#a c #bdae9c",
+"#T c #bdb6ac",
+".c c #bdb6b4",
+"#s c #bdb6bd",
+"ag c #c5a17b",
+"#5 c #c5a583",
+"af c #c5aa83",
+"ae c #c5aa8b",
+"#K c #c5aa94",
+"#l c #c5b29c",
+"ad c #c5b69c",
+".N c #c5bab4",
+"ab c #c5beac",
+"#r c #c5bebd",
+".r c #c5c2c5",
+".y c #c5c6c5",
+".J c #c5cac5",
+".l c #c5deb4",
+"ac c #cdbaac",
+"#9 c #cdbeb4",
+"aa c #cdc2bd",
+"#v c #cdc6bd",
+"#C c #cdc6cd",
+"#i c #cdcac5",
+".g c #cdcacd",
+".o c #cdcecd",
+"#f c #cdd2cd",
+"#q c #d5cecd",
+".7 c #d5ced5",
+"#p c #d5d2d5",
+"#o c #d5d6cd",
+"#H c #decec5",
+".9 c #ded2d5",
+".V c #ded6d5",
+"#e c #dedade",
+".b c #dedede",
+".D c #deeed5",
+".M c #e6e2de",
+".a c #e6e2e6",
+"a. c #eeceac",
+"#4 c #eed2b4",
+"#U c #eedabd",
+"#2 c #eedac5",
+"#J c #eedec5",
+"#k c #eee2d5",
+".Z c #eee2de",
+".X c #eeeeee",
+".s c #eef2e6",
+"#3 c #f6dac5",
+"#x c #f6e2cd",
+"#I c #f6e2d5",
+"#w c #f6e6d5",
+"## c #f6eae6",
+"#. c #f6eee6",
+".i c #f6eef6",
+"#j c #ffeee6",
+".Y c #fff2f6",
+".L c #fff6ff",
+".h c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+"QtQtQtQt.#.a.b.a.b.a.c.#.d.#QtQt",
+"QtQtQtQt.e.f.g.h.h.h.i.j.h.d.#Qt",
+"QtQtQt.k.a.l.m.n.o.h.h.p.o.h.d.q",
+"QtQt.r.s.t.u.v.w.x.y.h.z.p.A.B.q",
+"Qt.C.D.E.F.G.H.I.J.K.a.L.M.N.O.q",
+".P.Q.R.F.v.S.T.U.V.W.n.X.Y.Z.N.q",
+".0.1.2.3.4.5.6.7.y.8.O.9#.###a.q",
+"#b#c#d#c#e#f.7.y.r#g#h#i#j#k#l.q",
+"#b#m#n#o#p#q.y#r#s#t#u#v#w#x#y.q",
+"Qt#z#A#B.o#C.r#D#E#F#G#H#I#J#K.q",
+"QtQt#L#M#N#O#P#Q#R#S#T#x#J#U#V.q",
+"QtQtQt#W#X#Y#Z#0#1#T#x#2#3#4#5.q",
+"QtQtQtQt.B#6#7#8#9#x#U#U#4a.a#.q",
+"QtQtQtQt.#aa#vabacad#laeafa#ag.q",
+"QtQtQtQt.#.q.q.q.q.q.q.q.q.q.q.q"};
+
+static String[] image9_data = {
+"16 16 140 2",
+"Qt c None",
+"#Q c #101410",
+"#5 c #181408",
+"ad c #202010",
+"ac c #292008",
+"#Y c #312810",
+".y c #313031",
+"#d c #393808",
+"#1 c #393829",
+"#X c #413829",
+"#F c #414029",
+".Z c #414041",
+".7 c #414441",
+".F c #4a444a",
+"#v c #4a4831",
+"ae c #524410",
+"aa c #524818",
+"#6 c #524c4a",
+".6 c #525031",
+"#e c #5a4c20",
+"a# c #5a5020",
+".5 c #5a5529",
+"#s c #5a5539",
+"#h c #5a5541",
+"#j c #5a5941",
+".# c #5a595a",
+"af c #625518",
+"ab c #625520",
+".V c #62594a",
+"a. c #6a5920",
+".3 c #6a5d20",
+".4 c #6a6131",
+"#B c #6a614a",
+"#R c #6a6962",
+".E c #6a6d6a",
+"#f c #736531",
+"#Z c #736962",
+".r c #736d73",
+".w c #737173",
+".2 c #7b6118",
+"#9 c #7b6929",
+"#g c #7b6d41",
+"#8 c #7b6d5a",
+"#G c #7b7173",
+".c c #7b7962",
+"#w c #7b7d7b",
+"ag c #836920",
+".a c #836d18",
+".m c #837962",
+".1 c #8b6d18",
+"#4 c #8b7129",
+"#J c #8b816a",
+"#p c #8b8573",
+"#c c #8b857b",
+"#k c #8b858b",
+".P c #8b8983",
+".D c #8b898b",
+"#3 c #947929",
+"#T c #948973",
+".8 c #948d94",
+".e c #949194",
+"ah c #9c8129",
+".U c #9c8539",
+"#A c #9c957b",
+".i c #9c999c",
+".b c #a48529",
+"#2 c #a48939",
+".0 c #a49983",
+".L c #a49da4",
+".T c #ac8d41",
+"ai c #ac9131",
+".S c #ac9141",
+".v c #ac914a",
+"#r c #ac9552",
+".C c #aca5ac",
+".u c #b49931",
+"#q c #b49941",
+".n c #b4aeb4",
+"aj c #bd9d41",
+".t c #bda139",
+"#E c #bda14a",
+".A c #bda55a",
+"#z c #bdaa94",
+"#S c #bdae94",
+"#b c #bdae9c",
+".Q c #bdb29c",
+".h c #bdb6b4",
+".d c #bdbebd",
+".z c #c5aa41",
+"#K c #c5aa4a",
+"#i c #c5aa52",
+"#I c #c5aa94",
+".s c #c5ae41",
+"#D c #c5ae52",
+"#o c #c5b29c",
+"#H c #c5b2a4",
+"#P c #c5b66a",
+"#x c #c5baac",
+".O c #c5bab4",
+"#L c #cdb65a",
+"#l c #cdc2bd",
+".H c #cdc673",
+"#7 c #cdc6bd",
+".9 c #cdcacd",
+".x c #cdcecd",
+".j c #d5ba4a",
+".R c #d5ba52",
+"#0 c #d5ba5a",
+"#C c #d5ba62",
+"#M c #d5be5a",
+".k c #d5c252",
+".o c #d5d2d5",
+".l c #dec252",
+"#u c #dec662",
+"#t c #deca6a",
+".J c #dece6a",
+".g c #dedede",
+"#N c #e6ce6a",
+".B c #e6d26a",
+".K c #e6d273",
+".G c #e6d65a",
+"#O c #e6d66a",
+".N c #e6e2de",
+".f c #e6e2e6",
+"#U c #eee27b",
+"#n c #eee2d5",
+".Y c #eee2de",
+".I c #f6e26a",
+"#W c #f6e27b",
+"#y c #f6e2cd",
+"#V c #f6e67b",
+"#a c #f6eae6",
+"## c #f6eee6",
+".q c #f6eef6",
+"#m c #ffeee6",
+".X c #fff2f6",
+"#. c #fff6f6",
+".M c #fff6ff",
+".W c #fffaff",
+".p c #ffffff",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQt",
+".a.b.c.d.e.f.g.f.g.f.h.#.i.#QtQt",
+".j.k.l.m.n.o.p.p.p.p.q.r.p.i.#Qt",
+".s.t.u.v.c.n.o.p.p.p.p.w.x.p.i.y",
+".t.z.A.c.B.m.C.o.p.p.p.D.w.E.F.y",
+".G.H.c.I.J.K.c.L.o.p.p.M.N.O.P.y",
+".Q.c.R.t.S.T.U.V.i.o.p.W.X.Y.O.y",
+".Z.0.1.2.3.4.5.6.7.8.9#.###a#b.y",
+"Qt.Z#c#d#e#f#g#h#i#j#k#l#m#n#o.y",
+"QtQt.Z#p#q#r#s#t#u#u#v#w#x#y#z.y",
+"QtQtQt.7#A#B#C#D#i#E#i#F#G#H#I.y",
+"QtQtQtQt.Z#J#K#L#M#N#O#P#Q#R#S.y",
+"QtQtQtQt.#.Z#T#U#V#W#P#X#M#Y#Z.y",
+"QtQtQtQt.#.f.Z#J#0#r#1#2#3#4#5#6",
+"QtQtQtQt.##l#7.Z#8#X#9a.a#aaabac",
+"QtQtQtQt.#.y.y.y.Zadaeafagahaiaj"};
+
+static String[] image10_data = {
+"32 32 197 2",
+"Qt c None",
+".b c #000000",
+".A c #000400",
+"#n c #004062",
+"#q c #00446a",
+"#p c #00507b",
+"#g c #005083",
+"#l c #005583",
+".0 c #00659c",
+".8 c #00699c",
+".N c #080408",
+"#a c #080808",
+"aN c #08484a",
+"ao c #085552",
+".1 c #087dbd",
+".F c #100c10",
+".r c #101010",
+".a c #101410",
+"aG c #10484a",
+"aF c #106d6a",
+".L c #1079b4",
+".K c #107db4",
+"#m c #107dbd",
+".U c #1081bd",
+".T c #1085c5",
+"#y c #109194",
+".m c #181818",
+"a8 c #184420",
+"a2 c #184820",
+"aa c #186d73",
+"aD c #187d7b",
+"#I c #189194",
+"al c #189594",
+"aE c #18959c",
+".I c #201c20",
+".c c #202020",
+"a7 c #205d31",
+"aT c #206531",
+"a# c #20aeac",
+".# c #292829",
+"aY c #297939",
+"aM c #297941",
+"ai c #298d41",
+"ay c #299141",
+"#e c #29a1de",
+"#A c #29aeb4",
+"#J c #29b2b4",
+".v c #313031",
+"a5 c #317941",
+"#7 c #31914a",
+"#f c #3199d5",
+"#c c #31a1de",
+"#z c #31b6bd",
+".d c #393839",
+"#6 c #399552",
+".Z c #39aede",
+"aJ c #41994a",
+"ak c #41aa52",
+"#L c #41c6cd",
+"a0 c #4ab25a",
+"#d c #4ab6e6",
+".g c #524c52",
+".j c #525552",
+"a1 c #52b25a",
+"aS c #52b65a",
+".7 c #5ab6e6",
+"an c #5acac5",
+"#W c #5acec5",
+".Q c #62bade",
+"aL c #6ac26a",
+".6 c #6ac6ee",
+"aH c #730c18",
+"aP c #730c20",
+"aZ c #73c273",
+"aC c #73c673",
+".4 c #7bcef6",
+"am c #7bd2cd",
+".S c #7bd2ff",
+"aj c #83c67b",
+"#K c #83dad5",
+"av c #8b1020",
+"#r c #8b816a",
+"aO c #948973",
+"bc c #948d73",
+"b. c #949173",
+"#5 c #94b68b",
+"a9 c #9c8d7b",
+"b# c #9c917b",
+"a6 c #9c957b",
+"aQ c #9c9983",
+"#8 c #9cb68b",
+"#T c #9cdede",
+".5 c #9cdef6",
+"ag c #a41429",
+"a4 c #a4997b",
+"aU c #a49983",
+"#C c #a49d83",
+"#V c #a4e2de",
+".Y c #a4e2f6",
+"#3 c #ac1429",
+"aW c #ac857b",
+"aV c #ac897b",
+"ac c #ac9d83",
+"aB c #acdea4",
+"aR c #acdeac",
+".W c #ace2f6",
+".R c #aceaff",
+"a3 c #b4a58b",
+"#o c #b4aa8b",
+"aX c #b4aa94",
+"#h c #b4ae8b",
+"#w c #b4ae94",
+"ah c #b4e2b4",
+"ap c #bdae94",
+"ab c #bdb294",
+"aI c #bdb29c",
+"bb c #bdb694",
+"#9 c #bde6e6",
+"a. c #bde6ee",
+"aK c #bdeecd",
+"#F c #c56d6a",
+".9 c #c5b29c",
+"aq c #c5b694",
+".H c #c5b69c",
+"aw c #c5b6a4",
+".u c #c5ba9c",
+"#v c #c5baa4",
+".2 c #c5be9c",
+"#S c #cd1831",
+"au c #cd2029",
+"ba c #cdbe9c",
+"#X c #cdbea4",
+"#B c #cdc29c",
+"#. c #cdc2a4",
+"#Y c #cdc2ac",
+"#i c #cdc6a4",
+"#u c #cdc6ac",
+"#4 c #cdc6b4",
+"#H c #d51c39",
+".y c #d5c6a4",
+".V c #d5c6ac",
+".p c #d5caac",
+".M c #d5cab4",
+".D c #d5ceac",
+"ax c #d5ceb4",
+".E c #deceac",
+".t c #deceb4",
+".o c #ded2b4",
+"#k c #ded2bd",
+".s c #ded6bd",
+"#s c #ded6c5",
+"#M c #dedac5",
+"af c #e63c4a",
+"#G c #e6484a",
+"#N c #e6b6ac",
+".C c #e6d6bd",
+"#t c #e6d6c5",
+".G c #e6dac5",
+"#D c #e6dacd",
+".P c #e6decd",
+"## c #e6e2cd",
+"#b c #e6e2d5",
+"az c #e6f2ee",
+"#U c #e6f2f6",
+".X c #e6f2ff",
+"#E c #eeb6ac",
+"#j c #eedecd",
+"#x c #eee2cd",
+".n c #eee2d5",
+".B c #eee6d5",
+".J c #eee6de",
+".x c #eeeade",
+".l c #eeeee6",
+"#2 c #f6757b",
+".O c #f6e6de",
+".3 c #f6eade",
+".w c #f6eae6",
+".f c #f6eee6",
+".i c #f6eeee",
+".h c #f6f2ee",
+".k c #f6f6ee",
+"at c #ff444a",
+"#R c #ff5d5a",
+"ar c #ff5d62",
+"#Q c #ff8183",
+"as c #ff898b",
+"ad c #ff8d94",
+"#P c #ff9d9c",
+"#O c #ff9da4",
+"ae c #ffa5ac",
+"#Z c #ffbabd",
+"#1 c #ffc6c5",
+"#0 c #ffd6d5",
+".z c #fff2ee",
+".q c #fff6ee",
+".e c #fff6f6",
+"aA c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.a.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.c.d.e.f.f.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQt.g.e.h.f.i.f.f.bQtQtQtQtQtQtQtQtQtQtQt.b.b.b.bQtQtQtQtQt",
+"QtQtQt.j.k.f.l.h.f.h.f.bQtQtQtQtQtQtQtQtQtQt.m.n.o.o.p.b.bQtQtQt",
+"QtQt.#.e.f.f.h.h.q.h.e.h.bQtQtQtQtQtQtQtQt.r.n.s.s.t.t.p.u.bQtQt",
+"QtQt.v.w.x.x.y.b.b.y.h.z.bQtQtQtQtQtQtQt.A.B.s.C.o.o.D.E.y.bQtQt",
+"Qt.F.e.x.w.y.bQtQt.b.e.h.z.bQtQtQtQtQtQt.c.G.G.s.C.t.t.p.p.H.bQt",
+"Qt.I.B.x.x.bQtQtQtQt.b.h.f.f.bQtQtQtQt.r.J.G.s.K.L.M.p.D.y.y.bQt",
+".N.h.O.x.f.bQtQtQtQt.b.y.h.f.bQtQtQtQt.r.P.G.Q.R.S.T.U.V.p.y.bQt",
+".b.J.n.x.x.bQtQtQtQtQt.A.l.f.x.bQtQt.c.J.G.K.W.X.Y.Z.0.1.2.y.bQt",
+".b.n.J.B.3.bQtQtQtQtQt.A.i.x.3.B.b.A.3.P.P.K.4.5.6.7.U.8.9#.#..b",
+".b.n##.B.B.bQtQtQtQtQt#a.x.3.B.B#b.n.P.P.G.8#c#d#e#f.0#g#h#.#i.b",
+".b.P.n.n.J.y#aQtQtQt.F.h.3.B.J.n.n.P#j.G.G#k#l.8#m.8#l#n#o#..p.b",
+".b.P.P.n##.B.i.N.A#a.h.J.n.B#b.n.P.P.G.G.s.s.p#g#p#q#n#r#h#..u.b",
+".b.G#j.P.n.n.B.B.3.B.J.n.B.n.n.P#j.G.P#s#t.s#k#u#v#w#w#o#..y.u.b",
+".b.G.G.P.P#x.P.n##.n##.n.P#x.P.P.G.G.s#t#k#k#y#z#A#.#B#.#i.y#C.b",
+"Qt.b#D.G.P.P#j#E#F#G#H#D.P.P#j.G.G#s.G.s.s#I#J#K#L#I#..y.p.y.bQt",
+"Qt.b.M.G#M.G#N#O#P#Q#R#S#k.G.G.G.s.C#k#k.o#z#T#U#V#W#y#X#i.u.bQt",
+"Qt.b#Y.s.G.G#F#Z#0#1#2#3#4#k.G#5#6#7#8.t.o#I#T#9a.a#aaab.yac.bQt",
+"QtQt.b.s.s#t#Gad#Zaeafag#v#kahaiajak#7#5.pala#amanalaoapaq.bQtQt",
+"QtQt.b.p.s#k#HarasatauavawaxayazaAaBaC#7.VaDaE#IalaFaGapac.bQtQt",
+"QtQtQt.bax.oag#S#G#SagaHaIaxaJaBaKaBaLaMab#.aDaaaoaNaOab.bQtQtQt",
+"QtQtQt.b#Y.paxav#3avaPaQ#v.payaLaRaBaSaTab#.#.abacacacaU.bQtQtQt",
+"QtQtQtQt.b#..p.VaVaWaXaI#..taYaZa0a1aJa2a3#.#i#..2#Xa4.bQtQtQtQt",
+"QtQtQtQtQt.b#X.p.p.V.p.V.p.p.VaYaSaJa5a2a3#..p.y#Xa6.bQtQtQtQtQt",
+"QtQtQtQtQtQt.bab.y.p.y.p.y.p#i#.aTa7a8a9#h#.#..yb..bQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.b.b#o.y#..y.y.p.y#.apapap#.#.ac.b.bQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.b.bb##oba#i.y#i#.bb#obc.b.bQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.b.b.b.b.b.b.b.b.b.bQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image11_data = {
+"32 32 62 1",
+". c None",
+"j c #000000",
+"5 c #080c08",
+"7 c #181418",
+"c c #313031",
+"S c #393439",
+"N c #393c39",
+"a c #414441",
+"b c #4a444a",
+"# c #4a484a",
+"O c #525052",
+"F c #625d62",
+"L c #626562",
+"T c #6a656a",
+"k c #6a696a",
+"0 c #737573",
+"W c #7b797b",
+"2 c #7b7d7b",
+"Z c #838183",
+"V c #8b898b",
+"p c #8b8d8b",
+"Y c #948d94",
+"i c #949194",
+"X c #949594",
+"u c #9c959c",
+"R c #9c999c",
+"o c #9c9d9c",
+"D c #a49da4",
+"h c #a4a1a4",
+"P c #a4a5a4",
+"z c #aca5ac",
+"I c #acaaac",
+"6 c #acaeac",
+"3 c #b4aeb4",
+"M c #b4b2b4",
+"g c #b4b6b4",
+"n c #bdb6bd",
+"t c #bdbabd",
+"x c #bdbebd",
+"q c #c5bec5",
+"E c #c5c2c5",
+"C c #c5c6c5",
+"K c #cdc6cd",
+"H c #cdcacd",
+"m c #cdcecd",
+"s c #d5ced5",
+"f c #d5d2d5",
+"Q c #d5d6d5",
+"U c #ded6de",
+"w c #dedade",
+"B c #dedede",
+"l c #e6dee6",
+"G c #e6e2e6",
+"v c #e6e6e6",
+"A c #eee6ee",
+"J c #eeeaee",
+"e c #eeeeee",
+"r c #f6eef6",
+"y c #f6f2f6",
+"4 c #f6f6f6",
+"1 c #fff6ff",
+"d c #ffffff",
+"................................",
+".........#a#a#ab................",
+"........cddefghi#b#.............",
+".......jjkkdelmnhop#a...........",
+".......jqhhkkdrelsthuc..........",
+".......jvwxhhkkdeywfgzc.........",
+"........jjABChhkkdAwwtDc........",
+"..a#......jjvlEhhFGvwHIc........",
+".cdh#b......jjJwKLGBlfMN........",
+".cdGqzcc......jjhOvlBwEhc.......",
+".jdyvCKPcc.....bkEGlwQKRS.......",
+".jkdeAlKEPcc...TxGBlwwtRc.......",
+".jhkdyAJGEEhcccxlGGwUwgVWj......",
+".jEhkdeyBlwftqtUwGwwlsXYZWjj....",
+"..jChkddrerwBwlwBlwwAxIzhuY0#b..",
+"..j1EhkWdddrerereJwsCngtgMIopWa#",
+"...j1ChhkkWddddddvftEmwfsEtMIuV2",
+"....j1BCEhhkkkkkkWQlfGvGQfCEg3Po",
+".....jK4lBKqEt3PiXkWAJAeABUmKxnI",
+"......5jE4wfQt6hVzDhLWJyyJGwfHEt",
+"........jjjxJHqPhxsqhDkWddyJGUfK",
+"...........jj7jjjtGUBKhhkWddeABQ",
+".................jjC1BlChPkWddrG",
+"...................jjCylBChhkWdd",
+".....................jjC1BlChhkW",
+".......................jjKylBKhh",
+".........................jjC1BlC",
+"...........................jjCyl",
+".............................jjC",
+"...............................j",
+"................................",
+"................................"};
+
+static String[] image12_data = {
+"32 32 177 2",
+"Qt c None",
+".# c #000000",
+"aU c #000c08",
+".Z c #000c10",
+"aT c #002029",
+".a c #002831",
+".c c #002c39",
+"aS c #009da4",
+"#i c #00a1a4",
+".1 c #00a5ac",
+".F c #00aeac",
+"#W c #00b2b4",
+".u c #00b6bd",
+".n c #00bebd",
+"#n c #00c2bd",
+"#h c #00c2c5",
+".h c #00c6cd",
+"## c #00cac5",
+".0 c #00cecd",
+".N c #00d2cd",
+".E c #00dad5",
+".x c #00dade",
+".t c #00e2e6",
+".q c #00e6e6",
+".m c #00eaee",
+".j c #00f2ee",
+".g c #00f6f6",
+".d c #00faff",
+".b c #00ffff",
+"#m c #088983",
+"#a c #08a5ac",
+".O c #08aeb4",
+".y c #08b6bd",
+".r c #08bec5",
+".k c #08c6cd",
+".e c #08ced5",
+"#. c #108983",
+"aQ c #10898b",
+".Y c #108d8b",
+"at c #10918b",
+".A c #181418",
+".D c #414041",
+".B c #4a444a",
+".C c #4a484a",
+".J c #625d4a",
+"aK c #6a5d52",
+"aL c #6a6152",
+"aM c #6a615a",
+"aN c #6a6552",
+"aj c #6a655a",
+".8 c #73654a",
+".V c #736552",
+"au c #73655a",
+"#X c #73695a",
+"#U c #7b6d52",
+"am c #7b6d5a",
+"aO c #7b6d62",
+"#k c #7b715a",
+"aP c #7b7162",
+"#f c #83715a",
+"#H c #83755a",
+"#t c #83795a",
+"#Q c #83796a",
+"#O c #8b7562",
+"#z c #8b7962",
+"#r c #8b7d62",
+"aR c #8b7d73",
+"#4 c #8b816a",
+"ao c #948162",
+"#w c #94816a",
+"#j c #94856a",
+"#K c #948573",
+"#P c #948973",
+"#F c #94897b",
+"#p c #9c856a",
+"#D c #9c897b",
+".3 c #9c8d6a",
+"#J c #9c8d73",
+"#B c #9c8d7b",
+"#u c #9c917b",
+"#b c #a48d73",
+"#s c #a49183",
+"aE c #a49573",
+"#o c #a4957b",
+"#A c #a49583",
+"ay c #a4997b",
+"aJ c #ac9583",
+".M c #ac9983",
+"aa c #ac9d83",
+".2 c #ac9d8b",
+"ap c #aca183",
+"#2 c #aca18b",
+".P c #b49d83",
+"av c #b4a183",
+".f c #b4a18b",
+"az c #b4a583",
+"aI c #b4a58b",
+"a. c #b4a594",
+".K c #b4aa94",
+"aH c #bdaa8b",
+"#3 c #bdaa94",
+"ag c #bdae9c",
+"aD c #c5ae83",
+"aG c #c5ae94",
+"#N c #cdae83",
+"#x c #cdb283",
+"#C c #cdb28b",
+"#q c #cdb68b",
+"aq c #cdba9c",
+"ar c #cdbea4",
+".L c #cdc6b4",
+"#c c #d5b68b",
+".4 c #d5ba8b",
+".R c #d5be9c",
+"ah c #d5c2ac",
+".9 c #d5c6b4",
+".W c #d5cab4",
+"a# c #d5ceb4",
+"aC c #dec294",
+"ax c #dec29c",
+"aF c #dec69c",
+"al c #dec6a4",
+"ad c #decaa4",
+"as c #decabd",
+"ai c #decebd",
+"aw c #e6caa4",
+"ak c #e6cea4",
+"#0 c #e6ceb4",
+".G c #e6d2bd",
+"#M c #e6d6c5",
+"#G c #e6dacd",
+"#E c #e6dad5",
+".s c #e6dede",
+"#v c #e6e2de",
+"ac c #eed2b4",
+".5 c #eed6ac",
+"#8 c #eed6b4",
+"#7 c #eed6bd",
+"ab c #eedab4",
+"aA c #eedabd",
+"#6 c #eedebd",
+"aB c #eedec5",
+".z c #eeded5",
+"#T c #eee2c5",
+"#V c #eee2cd",
+"af c #eee2d5",
+".o c #eee2de",
+".l c #eee6de",
+".v c #eee6e6",
+".Q c #eeeaee",
+"an c #f6d6b4",
+"#d c #f6dab4",
+"#Z c #f6dec5",
+"ae c #f6e2cd",
+".S c #f6e6cd",
+".6 c #f6e6d5",
+"#R c #f6ead5",
+"#9 c #f6eade",
+"#g c #f6eede",
+"#l c #f6eee6",
+".I c #f6eeee",
+".U c #f6f2f6",
+"#e c #f6f6f6",
+"#5 c #ffe6cd",
+"#1 c #ffe6d5",
+"#Y c #ffeacd",
+"#S c #ffead5",
+"#L c #ffeade",
+".7 c #ffeede",
+".H c #ffeee6",
+".T c #fff2e6",
+"#I c #fff2ee",
+"#y c #fff6ee",
+".X c #fff6f6",
+".p c #fffaf6",
+".w c #fffaff",
+".i c #ffffff",
+"Qt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+".a.b.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+".c.d.e.f.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+".a.g.h.f.i.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQt",
+".c.j.k.f.i.i.#QtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.l.#QtQtQtQtQtQtQt",
+".a.m.n.f.i.i.i.#QtQtQtQtQtQtQtQtQtQtQt.#.#.o.p.p.#QtQtQtQtQtQtQt",
+".c.q.r.f.i.i.i.i.#QtQtQtQtQtQtQtQtQt.#.s.i.p.i.p.#QtQtQtQtQtQtQt",
+".a.t.u.f.i.i.i.i.i.#QtQtQtQtQtQt.#.#.v.i.p.i.p.w.#QtQtQtQtQtQtQt",
+".c.x.y.f.i.i.i.i.i.i.#QtQtQtQt.#.z.w.i.i.i.i.i.p.A.B.C.B.C.DQtQt",
+".a.E.F.f.i.i.i.i.i.i.i.#QtQt.#.G.H.i.w.i.i.i.w.I.J.K.L.p.p.M.#Qt",
+".c.N.O.P.i.i.i.i.i.i.i.Q.#.#.R.S.T.w.i.i.i.i.i.U.V.K.W.X.i.M.Y.Z",
+".a.0.1.2.i.i.i.i.i.i.i.Q.3.4.5.6.7.i.w.i.i.i.w.U.8.K.9.H.p.M#..Z",
+".c###a.M.i.i.i.i.i.i.i.Q#b#c#d.S.T.w.i.i.i.i.i#e#f.K.W#g.i.M.Y.Z",
+".a#h#i.M.i.i.i.i.i.i.i.Q#j#c.5.S.H.w.p.i.w.i.p.X#k.K.L#l.p.M#m.Z",
+".c#n#a#o.i.i.i.i.i.i.i.Q#p#q#d.S.T.p.i.p.i.p.i.X#r.K.W#g.i.M.Y.Z",
+".a#h#i#s.i.i.i.i.i.i.w.v#r#c.5.6.7.p.p.p.p.p.p.X#t.K.9.H.p.M#..Z",
+".c#n#a#u.i.i.i.w.i.p.w#v#w#x#d.S.T.X.p.p.p.p.p#y#z.K.W#g.i#A.Y.Z",
+".a#h#i#B.p.w.p.p.X.X#y.s#t#C.5.S.H.p#y.X#y.X#y.p#t.K.L#l.p#o#m.Z",
+".c#n#a#D.p#y.X#y#y.T#y#E#z#x#d.S.T#y.p#y.p#y.p#y#z.K.W#g.i#u.Y.Z",
+".a#h#i#F.T#y.T.T#l.T.7#G#H#x.5.6.7#y#I#y#y#y#I#y#t.K.9.H.p#J#..Z",
+".c#n#a#K.T.H.T.7.7.7#L#M#H#N#d.S.T#I#y#y#y#y#y#I#O.K.W#g.i#P.Y.Z",
+".#.Y#i#Q.M.7#R#S#R.6#T.G#U#N.5.S.H#I.T#y.T#y#V#H#H.K.L#l.p#K#m.Z",
+"Qt.#.Y#W#X.M#S.S#Y#T#Z#0#f#N#d.S.T.T#y#l#1.3#z#2#3.L.9#g.i#4.Y.Z",
+"QtQt.#.Y#W#X.M#5#6#7#8#0#U#N.5#5#g.T#9#z.3#2a..9.9.Wa#.H.p#4#..Z",
+"QtQtQt.#.Y#W#Xaaabac#8ad#f#N#daeaf.W#z#2agah.9.9aiai#M#g.i#r.Y.Z",
+"QtQtQtQt.#.Y#Waj.Macakalam#N.5anao.3apaqaras#T.6#R.H#9#l.p#z#m.Z",
+"QtQtQtQtQt.#at#Wauavawax#f#Nan#zayazaq#8aAaBae.6#9#g.H#9.X#H.Y.Z",
+"QtQtQtQtQtQt.#.Y#W#XaaaC#UaD#taEazaFadaGaHaIaa.fapaaaaaJ#o#f#..Z",
+"QtQtQtQtQtQtQt.#.Y#WaK.M#f#HaEaLajaKaMaNauauauaj#X#X#X#XaOaPaQ.Z",
+"QtQtQtQtQtQtQtQt.#.Y#W#XamaRaP.1aS#a#i.1#i#a#i.1#i#a#i.1#i#a#i.Z",
+"QtQtQtQtQtQtQtQtQt.#.Y#.aQ#..YaT.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#Qt",
+"QtQtQtQtQtQtQtQtQtQt.Z.ZaU.Z.ZQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image13_data = {
+"32 32 311 2",
+".q c None",
+".# c None",
+"Qt c None",
+"#A c #000000",
+"ah c #080400",
+"c0 c #080c08",
+"aE c #100400",
+"#P c #100800",
+"bm c #101418",
+"#7 c #180800",
+"aQ c #181410",
+"cV c #181810",
+"#Z c #200c00",
+"#I c #201000",
+"ar c #201010",
+"bz c #201818",
+"a3 c #202420",
+"bJ c #292418",
+"cZ c #292818",
+"cX c #292820",
+"cb c #312418",
+"bA c #312420",
+"cq c #312818",
+"cJ c #312820",
+"b1 c #312c20",
+"cY c #312c29",
+"cW c #313029",
+"bN c #313031",
+"bj c #392c20",
+"aD c #414041",
+"aO c #4a4439",
+".m c #4a484a",
+"cy c #4a4c4a",
+"b3 c #524839",
+"aG c #524c41",
+".k c #525052",
+"cr c #525552",
+"aB c #5a4829",
+"aC c #5a4831",
+"cc c #5a555a",
+"bw c #5a595a",
+"a7 c #5a5d5a",
+"ba c #624431",
+"ap c #625031",
+"aH c #625d62",
+".i c #626162",
+"#8 c #626562",
+"bk c #6a4c31",
+"a2 c #6a5541",
+"aF c #6a5d52",
+"bQ c #6a655a",
+".g c #6a656a",
+".e c #6a696a",
+".2 c #6a6d6a",
+"bS c #73695a",
+"b6 c #736962",
+"bP c #736d62",
+".G c #736d73",
+".K c #737173",
+"bT c #7b7162",
+".c c #7b797b",
+"a1 c #834c31",
+"aM c #835031",
+"aA c #835529",
+"bi c #837152",
+"bU c #837562",
+"b0 c #8b755a",
+"a6 c #8b7d62",
+"cP c #8b7d6a",
+"aS c #8b8173",
+"bp c #8b8573",
+".a c #8b858b",
+"bn c #8b898b",
+"bO c #8b8d8b",
+"an c #945018",
+"bW c #948573",
+"bB c #94857b",
+"bC c #94897b",
+".W c #949194",
+"aP c #9c4041",
+"bb c #9c408b",
+".n c #9c489c",
+"be c #9c897b",
+"br c #9c8d7b",
+"#O c #a44800",
+"by c #a4488b",
+"#y c #a44c00",
+"af c #a44c10",
+".l c #a44ca4",
+".o c #a47da4",
+"bY c #a4917b",
+"bE c #a49583",
+"b8 c #a4998b",
+"#G c #ac4c00",
+"#i c #ac5000",
+".p c #ac7dac",
+".j c #ac81ac",
+"ci c #ac998b",
+"aN c #b44c8b",
+"a8 c #b48d6a",
+"bv c #b4997b",
+"bg c #b4a18b",
+"ck c #b4a594",
+"bM c #b4aaa4",
+"bK c #b4aeac",
+"at c #b4b2ac",
+"ad c #bd6129",
+".h c #bd8dbd",
+".f c #bd91bd",
+"cI c #bd9d6a",
+"cp c #bd9d73",
+"bx c #bda17b",
+"bt c #bdaa94",
+"b4 c #bdb2a4",
+"#0 c #bdb6b4",
+".H c #bdbabd",
+"bR c #c5655a",
+".V c #c56dc5",
+".A c #c571c5",
+"ab c #c58162",
+"as c #c58dac",
+".d c #c599c5",
+"cS c #c5a57b",
+"cQ c #c5ae8b",
+"cN c #c5ae94",
+"bG c #c5b294",
+"ao c #cd4883",
+".x c #cd5031",
+"cj c #cd716a",
+"ay c #cd8162",
+"cl c #cdbaa4",
+"cK c #cdc2bd",
+".r c #cdcacd",
+"#Y c #d53808",
+"#q c #d53c08",
+"ag c #d53c18",
+".L c #d55531",
+"bl c #d5594a",
+".Q c #d57d29",
+"aZ c #d58162",
+"b# c #d5859c",
+"aT c #d599b4",
+".b c #d5aad5",
+"cC c #d5c6ac",
+"cg c #d5cab4",
+"#z c #de3c08",
+"aq c #de3c20",
+".Y c #de5929",
+".3 c #de8531",
+"aR c #deaac5",
+"cm c #dec6ac",
+"#H c #e64008",
+"bV c #e681c5",
+"a4 c #e68573",
+"bo c #e685cd",
+"bq c #e6897b",
+".t c #e695e6",
+"bd c #e6aecd",
+"bc c #e6b6e6",
+"cH c #e6c69c",
+"cn c #e6caa4",
+"cG c #e6ceac",
+"cE c #e6ceb4",
+"cF c #e6d2b4",
+"cB c #e6d6c5",
+"#6 c #ee4808",
+"a0 c #ee5539",
+"#o c #ee7900",
+"a5 c #ee8dcd",
+".C c #ee9d52",
+"cA c #eee2cd",
+"cz c #eee6de",
+"az c #f66139",
+"## c #f67900",
+"#W c #f67908",
+"#F c #f67d00",
+"aL c #f68131",
+"bX c #f68d7b",
+"cD c #f69183",
+"#V c #f6ae83",
+"bh c #f6bac5",
+"bD c #f6bad5",
+"b7 c #f6bed5",
+"#D c #f6c2ac",
+".N c #f6deac",
+"cf c #f6e6d5",
+"ce c #f6eade",
+"cd c #f6eee6",
+"aW c #f6f2ee",
+"ae c #ff5510",
+"#p c #ff5908",
+"#a c #ff6108",
+"ac c #ff6529",
+"#3 c #ff6531",
+"#5 c #ff6d20",
+"#w c #ff7500",
+".7 c #ff7539",
+"#g c #ff7900",
+"#M c #ff7931",
+".T c #ff7d00",
+"#X c #ff7d18",
+"aK c #ff7d5a",
+"al c #ff7d62",
+".6 c #ff8100",
+"#x c #ff8108",
+"b. c #ff815a",
+".P c #ff8500",
+"#j c #ff8552",
+".J c #ff8900",
+"#h c #ff8908",
+"#b c #ff8929",
+"#E c #ff8952",
+"#n c #ff8d08",
+".1 c #ff9100",
+"#. c #ff9108",
+"am c #ff9139",
+"bZ c #ff91cd",
+"#m c #ff9529",
+"aa c #ff9573",
+".9 c #ff9931",
+"#4 c #ff9d31",
+".y c #ff9d52",
+"cT c #ff9d7b",
+"ax c #ff9d83",
+"bs c #ff9dde",
+".0 c #ffa131",
+".O c #ffa139",
+"aY c #ffa583",
+"#2 c #ffa5a4",
+".U c #ffae00",
+"#N c #ffae08",
+"#t c #ffae83",
+"#1 c #ffae8b",
+"#e c #ffb200",
+"#v c #ffb208",
+"#S c #ffb28b",
+"c. c #ffb29c",
+".5 c #ffb600",
+"av c #ffb694",
+"cM c #ffb69c",
+"ct c #ffb6a4",
+"#J c #ffb6ff",
+"#f c #ffba08",
+"#u c #ffba18",
+"a# c #ffba9c",
+".w c #ffbaff",
+"#d c #ffbe31",
+"#l c #ffbe7b",
+"cL c #ffbeac",
+"ca c #ffc2a4",
+"#r c #ffc2ac",
+"a9 c #ffc2c5",
+"bf c #ffc2d5",
+"bH c #ffc6a4",
+"cu c #ffc6ac",
+"cU c #ffc6c5",
+"b5 c #ffc6e6",
+".S c #ffca39",
+"cw c #ffcaa4",
+"aj c #ffcaac",
+"aw c #ffcab4",
+"cx c #ffcac5",
+"aJ c #ffcacd",
+"ak c #ffcad5",
+".4 c #ffce41",
+".8 c #ffcea4",
+"cv c #ffceac",
+"bI c #ffced5",
+"bF c #ffcee6",
+".F c #ffd231",
+"#K c #ffd2ac",
+"aI c #ffd2c5",
+"b9 c #ffd2e6",
+"#c c #ffd69c",
+"ai c #ffd6ac",
+".Z c #ffd6bd",
+"cR c #ffd6de",
+"cO c #ffd6e6",
+"ch c #ffd6ee",
+"bL c #ffd6ff",
+".D c #ffda6a",
+"cs c #ffdacd",
+"#s c #ffdade",
+"#L c #ffdaee",
+"au c #ffdaff",
+".M c #ffde6a",
+"#k c #ffde83",
+".R c #ffdeb4",
+"#C c #ffdebd",
+".z c #ffdec5",
+"#B c #ffdee6",
+"#R c #ffdeff",
+"aX c #ffe2cd",
+"bu c #ffe2f6",
+".X c #ffe2ff",
+"c# c #ffe6f6",
+".B c #ffe6ff",
+"#U c #ffeaf6",
+".I c #ffeaff",
+".E c #ffeebd",
+"#T c #ffeede",
+"b2 c #ffeeff",
+"co c #fff2f6",
+".s c #fff2ff",
+"aV c #fff6ee",
+"#9 c #fff6f6",
+".u c #fff6ff",
+"aU c #fffaf6",
+"#Q c #fffaff",
+"a. c #fffff6",
+".v c #ffffff",
+"Qt.#Qt.a.b.c.d.e.f.g.h.i.j.k.l.m.n.k.o.k.p.k.o.k.p.k.o.kQt.#Qt.#",
+".qQt.q.c.r.s.r.s.r.s.r.s.r.s.r.t.r.s.r.s.r.s.r.s.r.s.r.k.qQt.qQt",
+"Qt.#Qt.c.u.v.v.v.v.v.v.v.v.v.v.w.v.v.v.v.v.v.v.v.v.v.u.k.x.y.z.v",
+".qQt.q.A.r.v.v.v.v.v.v.v.v.v.v.B.v.v.v.v.v.v.v.v.v.v.r.x.C.D.E.F",
+"Qt.#Qt.G.u.v.v.v.v.v.v.v.v.v.v.H.v.v.v.v.v.v.v.v.v.v.x.y.z.I.F.J",
+".qQt.q.K.r.v.v.v.v.v.v.v.v.v.v.B.v.v.v.v.v.v.v.v.v.L.C.M.N.O.J.P",
+"Qt.#Qt.G.u.v.v.v.v.v.v.v.v.v.v.w.v.v.v.v.v.v.v.v.Q.y.z.R.S.T.U.P",
+".qQt.q.V.W.B.H.B.H.B.H.B.H.X.H.B.H.B.H.B.H.B.H.Y.C.M.Z.0.T.P.P.1",
+"Qt.#Qt.2.u.v.v.v.v.v.v.v.v.v.v.H.v.v.v.v.v.v.3.y.z.R.4.T.U.P.5.6",
+".qQt.q.2.r.v.v.v.v.v.v.v.v.v.v.B.v.v.v.v.v.7.C.M.8.9.T.P.J#.###a",
+"Qt.#Qt.e.u.v.v.v.v.v.v.v.v.v.v.w.v.v.v.v#b.y.z#c#d.T#e.P#f#g#h#i",
+".qQt.q.e.r.v.v.v.v.v.v.v.v.v.v.B.v.v.v#j.C#k#l#m.T.P.P#n#o#p#i#q",
+"Qt.#Qt.g.u.v.v.v.v.v.v.v.v.v.v.H.v.v#r#l#s#t#u.6#v.J#f#w#x#y#z#A",
+".qQt.q.e.W.B.H.B.H.B.H.B.H.B.H.B.H#B#C.v#D#E.6.P.P#.#F#p#G#H#IQt",
+"Qt.#Qt.g.u.v.v.v.v.v.v.v.v.v.v#J.v#K.v.X#L#M#N.J#f#g#x#O#H#PQt.#",
+".qQt.q.g.r.v.v.v.v.v.v.v.v.v#Q#R#S.v#T#U#V#M#W#X#o#p#O#Y#ZQt.qQt",
+"Qt.#Qt.i.u.v.v.v.v.v.v.v.v#Q.v#0#Q#Q.v#1#2#3#4#5.6#G#6#7Qt.#Qt.#",
+".qQt.q#8.r.v.v.v.v.v.v.v#Q.v#9#Ba.#Qa#aaabacadaeafagah#A.qQt.qQt",
+"Qt.#Qt.i.u.v.v.v.v.v.v#Q.v.u.vai.vajakalamanaoapaqaras#AQt.#Qt.#",
+".qQt.q.i.W.B.H.B.H.X#0#Ratauav.vawaxayazaAaBaCaDaEaFaG#A.qQt.qQt",
+"Qt.#QtaH.u.v.v.v.v#Q.v.u.v.s.vaIaJaKaLaMaNaOaPaQaRaSaT#AQt.#Qt.#",
+".qQt.qaH.r.v.v.vaU.vaV.vaW#BaXaYaZa0a1a2a3#AaSa4aSa5a6#A.qQt.qQt",
+"Qt.#Qta7.u.v.v#Q.v.u.v.s.va8a9b.b#babb#AbcaSbdbebfbgbh#AQt.#Qt.#",
+".qQt.qaH.r.vaU.vaV.vaW.vbibjbkblbjbmbnbobpbqbrbsbtbubv#A.qQt.qQt",
+"Qt.#Qtbw.u#Q.v.u.v.s.vbxbybzbA#AbcbBbdbCbDbEbFbG#UbHbIbJQt.#Qt.#",
+".qQt.qbw.W#RataubKbLbMbN#A#AbObPbQbRbSbTbUbVbWbXbYbZb0b1.qQt.qQt",
+"Qt.#Qtbw.u.u.v.s.vb2.vb3bcb4b5b6b7b8b9c.c#ca.saj.sbHbIcbQt.#Qt.#",
+".qQt.qcc.r.vcd.vce.vcf.vcgchcicjck#Lclb2cm.ucncocncocpcq.qQt.qQt",
+"Qt.#Qtcr.u.s.v.I.v.B.vcs.uct#LaS.Icu.ucv.ucv.scw.sbHcxcbQt.#Qt.#",
+".qQt.qcy.r.vce.vcz.vcA.vcB.scCcDcE.ucF#QcG.ucncocHcocIcJ.qQt.qQt",
+"Qt.#QtaDb2cK.IcL.BclbucM#LcNcOcPcOcQcRaYbIcSbIcTcxcIcUcbQt.#Qt.#",
+".qQt.qcVcJcWcJcWcXb1cYcYcXcJcXcJbJb1bJb1bJcXcZb1bJb1bJc0.qQt.qQt"};
+
+static String[] image14_data = {
+"32 32 147 2",
+"Qt c None",
+".c c #000000",
+"ag c #000400",
+"aj c #00aeb4",
+"#k c #080808",
+"#t c #080c08",
+"ai c #08b2b4",
+"af c #08e2e6",
+"aq c #100c08",
+"#B c #100c10",
+".l c #101410",
+"ae c #10e6e6",
+"ac c #10ffff",
+"#8 c #292c29",
+"ad c #312c31",
+".h c #313031",
+"am c #313431",
+"al c #393439",
+"#d c #393839",
+".f c #393c39",
+"an c #413c41",
+".A c #414041",
+"ap c #414441",
+".7 c #4a444a",
+"#c c #4a484a",
+".x c #4a4c4a",
+"#W c #524c52",
+".W c #525052",
+".n c #525552",
+"#Z c #52cade",
+"#0 c #52cede",
+"#T c #52d2de",
+"ak c #5a5552",
+".6 c #5a555a",
+".V c #5a595a",
+".e c #5a5d5a",
+"#L c #5ad2de",
+".a c #625d62",
+".U c #626162",
+"ao c #626562",
+"#R c #62cede",
+"#K c #62cee6",
+"#J c #62d2de",
+"#7 c #62d2e6",
+"#S c #62d6de",
+"#Y c #62d6e6",
+".k c #6a696a",
+"#4 c #6acede",
+"#E c #6ad2de",
+"#F c #6ad2e6",
+".L c #737173",
+".z c #737573",
+"#U c #73cede",
+"a. c #73cee6",
+"#D c #73d2e6",
+"#z c #73d6e6",
+".g c #7b757b",
+".T c #7b797b",
+".J c #7b7d7b",
+"#I c #7bd2e6",
+"#x c #7bd6e6",
+"#y c #7bdae6",
+".m c #837d83",
+".o c #838183",
+"#2 c #838583",
+"#3 c #83d6e6",
+"#p c #83dae6",
+".b c #8b858b",
+".d c #8b898b",
+"#N c #8b8d8b",
+"#o c #8bd6e6",
+"#C c #8bdae6",
+"#A c #8bdaee",
+"#q c #8bdee6",
+"#w c #8bdeee",
+".j c #948d94",
+".y c #949194",
+".S c #949594",
+"#r c #94dae6",
+"#a c #94dee6",
+"#i c #94deee",
+".K c #9c959c",
+".# c #9c999c",
+".p c #9c9d9c",
+"#Q c #9cdee6",
+"## c #9cdeee",
+"#1 c #9ce2ee",
+".i c #a49da4",
+".2 c #a4e2ee",
+"#P c #a4e2f6",
+"ab c #a4e6ee",
+"#n c #a4e6f6",
+".w c #acaaac",
+"#m c #ace2ee",
+"#h c #ace6ee",
+".1 c #ace6f6",
+".3 c #aceaf6",
+"a# c #b4b6bd",
+"#6 c #b4babd",
+".0 c #b4e6ee",
+".4 c #b4e6f6",
+"#G c #b4eaee",
+".P c #b4eaf6",
+"#9 c #bdbabd",
+".v c #bdbec5",
+"aa c #bdd6de",
+"#. c #bdeaee",
+"#g c #bdeaf6",
+".Q c #bdeef6",
+".O c #bdeeff",
+"#b c #c5c2c5",
+"#H c #c5c6c5",
+".q c #c5c6cd",
+"#l c #c5cacd",
+".Z c #c5eaf6",
+"#f c #c5eef6",
+".t c #cddede",
+"#5 c #cdeaee",
+"#V c #cdeaf6",
+".N c #cdeef6",
+"#v c #cdeeff",
+".9 c #cdf2f6",
+".Y c #cdf2ff",
+"ah c #d5d2d5",
+"#M c #d5d6d5",
+".r c #d5dee6",
+".s c #d5e2e6",
+".5 c #d5eef6",
+".R c #d5f2f6",
+"#O c #d5f2ff",
+".F c #d5f6ff",
+".u c #dedede",
+".I c #dedee6",
+".B c #dee2e6",
+"#u c #def2f6",
+".E c #def6ff",
+"#X c #defaff",
+".G c #e6f6f6",
+".H c #e6f6ff",
+".D c #e6faff",
+"#s c #eef2f6",
+".M c #eef6ff",
+".C c #eefaff",
+"#e c #eeffff",
+"#j c #f6f6ff",
+".8 c #f6faff",
+".X c #f6ffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.aQtQtQt",
+"QtQtQtQtQtQtQtQt.b.c.c.c.c.c.c.dQtQtQtQtQtQtQtQtQtQtQt.e.fQtQt.g",
+"QtQtQtQtQtQt.c.c.h.e.b.#.i.j.k.l.c.cQtQtQtQtQtQtQtQtQtQtQtQt.m.a",
+"QtQtQtQtQt.c.n.o.p.q.r.s.t.r.u.v.w.x.cQtQtQtQtQtQtQt.y.j.zQtQt.A",
+"QtQtQtQt.c.n.v.r.B.C.D.E.E.F.E.G.H.I.J.cQtQtQtQtQt.i.K.m.g.LQtQt",
+"QtQtQt.c.n.v.s.C.M.D.E.E.N.O.P.Q.Q.R.C.a.cQtQtQt.S.K.T.k.U.V.WQt",
+"QtQt.c.n.v.s.X.C.C.C.D.Y.Z.0.1.2.3.4.5.C.h.cQtQt.j.o.k.6.6.x.7Qt",
+"QtQt.c.o.s.C.C.X.8.C.R.9#..1.2###a.2.0.5#b.cQtQt.z.L.n.W#c.7#dQt",
+"Qt.d.h.i.B.C.C#e.X.C.E#f#g#h.2#i###i.3.N#j#k.dQtQt.V.n.x.7#dQtQt",
+"Qt.c.x#l.H.D.H.C.G.H.5#f#m#n#a#o#p#q#r.4#s.W#tQtQtQt#c.A.fQtQtQt",
+"Qt.c.b.B.D.H.D#u.E.R#v.P.1###w#x#y#z#A##.5.##BQtQtQtQtQtQtQtQtQt",
+"Qt.c.#.B.E.E.Y.9#f#f.0.1#r#C#x#D#E#F#z###G#H#kQtQtQtQtQtQtQtQtQt",
+"Qt.c.i.r.E.R#f#g#g#h.1###w#x#I#J#K#L#I#i.Q#M#BQtQtQtQtQtQtQtQtQt",
+"Qt.c#N.r#O.Y#h.1#h#P#Q#C#x#D#R#S#T#L#U#i#V.w#kQtQtQtQtQtQtQtQtQt",
+"Qt.c#W#H#X#f.1.2.2#i#A#x#I#J#Y#Z#0#L#p#h.C.V#BQtQtQtQtQtQtQtQtQt",
+"Qt.d.l.v.E.Y#1###r#C#x#D#R#S#Z#0#Z#F#r.N#s.c#2QtQtQtQtQtQtQtQtQt",
+"QtQt.c.j.s#O#1#r#w#3#x#4#K#T#0#Z#F#x.1#5.K.cQtQtQtQtQtQtQtQtQtQt",
+"QtQt.c.x#6.8.P###C#3#U#7#L#L#L#x#x#m#5.C#8.bQtQtQtQtQtQtQtQtQtQt",
+"QtQtQt.c.J#9.X.P.2###p#z#Ia.#p#C.1#5#j.V.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQt.c.Ta#aa.5.P#G###a#iab.N#5#s.V.c.Lac.cQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.c#d.d#9#s#j.N.Q.N#j#s.jad.c.xaeaf.y.cQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.c.cag.W.##Hah.w.n.c.c.bagaiajak.L.j.cQtQtQtQtQtQtQt",
+"QtQtQt.#.aQtQtQt.d.c.c.c.c.c.c#2QtQtQt.cal.x.6.L.y.cQtQtQtQtQtQt",
+"QtQtQt.e.fQtQt.gQtQtQtQtQtQtQtQtQtQtQtQt.cam.Aak.L.j.cQtQtQtQtQt",
+"QtQtQtQtQtQt.m.a.7QtQtQtQtQtQtQtQtQtQtQtQt.cal.A.6.L.y.cQtQtQtQt",
+"QtQt.y#N.gQtQt.AQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cam.Aak.L.y.cQtQtQt",
+"Qt.p.K.m.g.LQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cal.f.V.L.y.cQtQt",
+".S.S.T.k.U.V.WQt.S.eQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cal.f.V.L.y.cQt",
+".j.o.k.6.6.x.7Qt.aanQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cal.A.V.k.y.c",
+".g.L.n.W#c.7#dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cal.A.Vao.l",
+"Qt.V.6.xap#dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cal.A#Waq",
+"QtQt#c.A.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c#t#kQt"};
+
+static String[] image15_data = {
+"32 32 205 2",
+"Qt c None",
+".p c #000000",
+".x c #000008",
+"#x c #000408",
+".q c #080408",
+"#N c #080800",
+"#M c #080808",
+"#s c #080c08",
+".P c #100400",
+"#t c #100c08",
+"#U c #101010",
+".n c #180800",
+".9 c #180808",
+".o c #180c08",
+"#7 c #181010",
+"#L c #181418",
+".# c #181818",
+".a c #181c10",
+".h c #181c18",
+".g c #201c18",
+"#K c #202020",
+"#8 c #202420",
+".b c #292418",
+"#J c #292429",
+"#I c #292829",
+"#0 c #292c29",
+"#3 c #312c31",
+"#H c #313031",
+"#V c #313431",
+"#X c #393031",
+".c c #393418",
+".d c #393818",
+"#G c #393839",
+".e c #413410",
+"#6 c #413c41",
+"#1 c #414041",
+".f c #4a3c10",
+"#5 c #4a444a",
+"#4 c #4a484a",
+"a0 c #524c52",
+"aT c #525052",
+".B c #5a4c08",
+"a4 c #5a4c41",
+"aF c #5a504a",
+"aE c #5a5552",
+"#C c #5a555a",
+"#B c #5a595a",
+"#D c #5a5d5a",
+"#r c #625518",
+"#k c #625910",
+"at c #62595a",
+"#A c #625d62",
+"#z c #626162",
+"#y c #6a656a",
+"#u c #6a696a",
+"#w c #6a6d6a",
+"ao c #736d73",
+"#l c #737173",
+"az c #737573",
+"a6 c #7b695a",
+"aQ c #7b6d62",
+"#i c #7b7120",
+"#j c #7b7129",
+"aw c #7b7573",
+"#9 c #7b757b",
+"#v c #7b797b",
+"#2 c #7b7d7b",
+"#h c #837129",
+"aP c #83716a",
+".T c #837520",
+".i c #837529",
+"aG c #837573",
+"au c #837973",
+"a1 c #83797b",
+"ak c #837d7b",
+"ad c #837d83",
+"#m c #838183",
+"#n c #838583",
+"#g c #8b8139",
+"#f c #8b8539",
+"#O c #8b858b",
+"#o c #8b898b",
+".8 c #8b8d8b",
+".m c #948939",
+"#S c #948d94",
+".7 c #949194",
+"#Z c #949594",
+".w c #9c8d41",
+".l c #9c9141",
+"ac c #9c918b",
+".6 c #9c959c",
+"#e c #9c995a",
+"## c #9c999c",
+".4 c #9c9d9c",
+"a5 c #a4897b",
+"a3 c #a4918b",
+"aN c #a49594",
+"av c #a49994",
+"#d c #a49d5a",
+"as c #a49d9c",
+".5 c #a49da4",
+".3 c #a4a1a4",
+"#. c #a4a5a4",
+".1 c #aca162",
+"#c c #aca56a",
+"#W c #aca5ac",
+".2 c #acaaac",
+".k c #acae4a",
+"#F c #acaeac",
+".H c #b4ae73",
+".N c #b4aeb4",
+".O c #b4b2b4",
+"#E c #b4b6b4",
+"aO c #bdaea4",
+"#b c #bdb273",
+".0 c #bdb673",
+"#q c #bdb6bd",
+"#p c #bdbabd",
+".M c #bdbebd",
+"aH c #c5aea4",
+"a2 c #c5b6ac",
+"al c #c5b6b4",
+"aj c #c5bebd",
+".S c #c5bec5",
+".v c #c5c294",
+".R c #c5c2c5",
+".K c #c5c6c5",
+"ba c #cda58b",
+"a8 c #cdae94",
+"bj c #cdb29c",
+"ab c #cdbebd",
+".Z c #cdc694",
+".L c #cdc6cd",
+"#R c #cdcacd",
+".G c #cdce9c",
+".J c #cdcecd",
+"bk c #d5b29c",
+"aZ c #d5b69c",
+"aS c #d5b6a4",
+"bi c #d5baa4",
+"aM c #d5baac",
+"aI c #d5beac",
+"bh c #d5beb4",
+"ay c #d5c2b4",
+"bg c #d5c6b4",
+"bf c #d5c6bd",
+"an c #d5cabd",
+"bd c #d5cac5",
+".Y c #d5ce9c",
+".u c #d5cea4",
+".I c #d5d6d5",
+"ar c #dec6bd",
+"be c #decac5",
+"ai c #decec5",
+"bc c #dececd",
+"bb c #ded2cd",
+".j c #ded68b",
+"aa c #ded6d5",
+"aJ c #dedade",
+"#Q c #dedede",
+".X c #e6daac",
+"#T c #e6dee6",
+".W c #e6e2bd",
+"#P c #e6e2e6",
+"b. c #eec6ac",
+"b# c #eecaac",
+"aY c #eeceb4",
+"aL c #eed6c5",
+"ah c #eee2de",
+".t c #eee6c5",
+".V c #eee6cd",
+"a. c #eee6ee",
+".F c #eeeacd",
+"#Y c #eeeaee",
+".y c #eeeeee",
+"a7 c #f6ceb4",
+"aX c #f6d6bd",
+"aR c #f6d6c5",
+"aW c #f6dacd",
+"aD c #f6decd",
+"aK c #f6e2d5",
+"aB c #f6e6d5",
+"aq c #f6e6de",
+"ag c #f6e6e6",
+"a# c #f6eeee",
+".A c #f6eef6",
+".E c #f6f2cd",
+".s c #f6f2de",
+".U c #f6f2e6",
+".z c #f6f2f6",
+".Q c #f6f6f6",
+"a9 c #ffe2d5",
+"aC c #ffe6d5",
+"ax c #ffe6de",
+"aV c #ffeade",
+"ap c #ffeae6",
+"am c #ffeee6",
+"aU c #ffeeee",
+"af c #fff2ee",
+"aA c #fff6f6",
+".D c #fffaee",
+"ae c #fffaf6",
+".C c #fffaff",
+"#a c #ffffe6",
+".r c #ffffff",
+"QtQtQtQtQtQtQtQtQtQt.#.a.b.c.d.e.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.g.h.g.i.j.k.l.m.gQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"Qt.n.o.p.q.p.q.p.q.p.q.i.r.s.t.u.v.w.x.p.q.p.q.p.q.p.o.nQtQtQtQt",
+".p.r.y.z.y.z.z.A.y.A.B.r.C.D.E.F.G.H.i.p.I.J.K.L.M.M.N.O.PQtQtQt",
+".p.Q.R.S.R.S.R.M.S.T.r.U.V.W.X.Y.Z.0.1.i.p.2.3.4.5.6.7.8.9QtQtQt",
+".p.z.M#..3.5##.3.i#a.Y#b#c#d#e#f#g#h#i#j#k.p#l#m#m#m#n#o.pQtQtQt",
+".p.z.S.2#p.2#q#p#r.h.g#s#t.p#t.p.p.p.p.p.p.p#u#u#v#w#u#w#xQtQtQt",
+".p.z.M.6##.4#p#p.R#o#m#l#u#y#z#A#B#B#C#C#B#B#C#D#u#l#m.4.pQtQtQt",
+".p.Q.R#E.S.O.3#.#q#F.2###G#H#H#I#I#I#I#J#K.##L#s#M#N#v#o.xQtQtQt",
+".p.z#p.3#..N#F.3.4.3.7#O#G#P#Q#P#Q#P#Q#P#Q#P#Q#P.p#R.p#l.pQtQtQt",
+".p.y.S.6##.3.5.6#S.8.7#n#G#T.r.r.r.r.r.r.r.r.r.r#U.Q#S.p.qQtQtQt",
+".p.Q.M.2.2#q.O.M.O.2.4#S#V#P.r.r.r.r.r.r.r.r.r.r#K.r.Q#R.pQtQtQt",
+".p.z.S.M#q.3#W###S#O#v#l#H#T.r#m.r#m#R.r#O#D#O.r#X#P.r.Q#S.pQtQt",
+".p#Y#E#Z#Z##.7.2.5.O#Z.7#0#P.r.r.r.r.r.r.r.r.r.r#1.N#P.r.Q#R.pQt",
+".p.y.S.2.N.O.2.O.3.6#O#2#3#T.r#m#A.r#O#D#R#D#O.r#4#5#6#H#I.h#7Qt",
+".p.A#E.6##.3###S#n#m#2#v#8#P.r.r.r.r.r.r.r.r.r.r.z#R#.#W#m#9.pQt",
+".pa.#p#o#S.7##.3.O.3#O#v#I#T.r#D#W#m.r#m#R#D#A#m.ra#a#aaabac.pQt",
+".p#Y.O#F#E.O.2##.7.5#nad#8#P.r.r.r.r.r.r.r.r.r.raeaeafagahai.pQt",
+".p#P.O.4.3.4#W#o#m#m#m#v#I#T.r#m#A.L#A#m.r#m.L#B#majakalaman.pQt",
+".p#T.2ad#m#n#n.5###Z#2ao#8#P.r.r.r.r.r.r.r.raeaeafafamapaqar.pQt",
+".p#T.O#.#W.6.8.7#S.7#m#v#I#T.r#D#O.L#A#m#Wae#masatauavawaxay.pQt",
+".p#T#F.6.7.7#n#mazao#w#y#8#P.r.r.r.r.r.raeaAafafapapaBaCaDay.pQt",
+".p.I.2.8.7#S.7#n.8#oad#l#J#T.r#m#A#D.LakatakatalaEaFaGaHaDaI.pQt",
+".paJ#.#9az#2#v#v#2#l#u#u.h#P.r.r.r.raAaAafafapapaBaKaDaDaLaM.pQt",
+".paJ#W#Z.6#S#o#v#v#lao#D.##T.r#m#A.RakaEataNaEaFaGaOaPaQaRaS.pQt",
+".p#Q.4#m#nad#n#m#m#O#BaT#U#P.r.raAaAafaUapaVaKaKaDaWaLaXaYaZ.pQt",
+".p#Q.3ad#mazad#lad#l#Ca0#U#T.rakata1ata2aEa3aGaOaPa4a5a6a7a8.pQt",
+".p.3aTaTaTaTaT#CaTaT#4#5#M#PaAaAafamaVaVaKa9aDaWaLaXaYa7b.a8.pQt",
+"Qt.n.o.p.q.p.q.p.q.p#x.p.q#TaAafaUapaVaBa9aDaDaRaRa7a7b#b.ba.pQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt.p#Pbbbcbdbebfbgaybhbibibjbka8a8baba.pQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.pQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image16_data = {
+"32 32 50 1",
+". c None",
+"# c #000000",
+"h c #000400",
+"O c #080408",
+"r c #080808",
+"D c #080c08",
+"T c #100c10",
+"i c #101010",
+"b c #101410",
+"a c #181818",
+"H c #201c20",
+"x c #202020",
+"s c #202420",
+"M c #393839",
+"K c #5a595a",
+"L c #626162",
+"P c #737573",
+"B c #7b757b",
+"I c #837d83",
+"E c #8b858b",
+"R c #8b898b",
+"S c #8b8d8b",
+"V c #948d94",
+"t c #949194",
+"c c #949594",
+"j c #9c959c",
+"F c #9c999c",
+"C c #9c9d9c",
+"U c #a49da4",
+"k c #a4a1a4",
+"l c #a4a5a4",
+"y c #aca5ac",
+"z c #acaaac",
+"u c #acaeac",
+"d c #b4aeb4",
+"m c #b4b2b4",
+"G c #b4b6b4",
+"A c #bdb6bd",
+"v c #bdbabd",
+"n c #bdbebd",
+"J c #c5bec5",
+"e c #c5c2c5",
+"q c #c5c6c5",
+"N c #cdc6cd",
+"o c #cdcacd",
+"w c #cdcecd",
+"Q c #d5ced5",
+"f c #d5d2d5",
+"g c #d5d6d5",
+"p c #ded6de",
+"................................",
+"................................",
+"................................",
+"................................",
+"...........##########...........",
+".......#aabacdeffgfgf####.......",
+".....hi#jcklmneoffpgpgpgqr##....",
+"....sctkluuvnqqowffpfgfpfgf#....",
+"....xcyzdumAeqwwffpgpgpgpgper...",
+"....#BCzummvveqwwffgfpfgfpfnh...",
+"....#DEkumvveeowffpgpgpgpgp##...",
+".....#bjFzGnneqwwffpfgfpf###....",
+"......#iaHIyJJowffpgpJK###......",
+".......#fL#itJqffpfg###M#.......",
+"........#gNG#rO#####PdF#........",
+".........repwQwQwoeAuy#.........",
+"..........#gpgpgponmR#..........",
+"...........#fpfgQqGS#...........",
+"............#gffovA#............",
+".............rQQqz#.............",
+".............TNqek#.............",
+".............OeqvU#.............",
+".............#Nqvc#.............",
+".............#qqmV#.............",
+".............#oeAR#.............",
+".............#oeGR#.............",
+".............#peAE#.............",
+".............#fJGR#.............",
+"..............####..............",
+"................................",
+"................................",
+"................................"};
+
+static String[] image17_data = {
+"32 32 93 2",
+"Qt c None",
+".# c #000000",
+"#a c #6a6962",
+"#i c #6a696a",
+"#d c #7b7973",
+".3 c #7b797b",
+".V c #7b7d7b",
+".2 c #837d7b",
+"#A c #837d83",
+".U c #838183",
+".S c #838583",
+".T c #8b8583",
+"#q c #8b858b",
+".1 c #8b898b",
+"#y c #8b8d8b",
+".o c #945d31",
+".R c #948d8b",
+"#u c #948d94",
+"#z c #94918b",
+".Q c #949194",
+"#p c #949594",
+".F c #9c6139",
+"#h c #9c9594",
+"## c #9c959c",
+".P c #9c999c",
+".O c #9c9d9c",
+"#v c #a49d9c",
+"#g c #a49da4",
+"#w c #a4a19c",
+"#. c #a4a1a4",
+".N c #a4a5a4",
+".0 c #aca5a4",
+"#f c #aca5ac",
+"#t c #acaaa4",
+".M c #acaaac",
+"#m c #acaeac",
+"#c c #b4aeac",
+".L c #b4aeb4",
+".K c #b4b2b4",
+".9 c #b4b6b4",
+".Z c #bdb6b4",
+"#l c #bdb6bd",
+"#x c #bdbab4",
+".J c #bdbabd",
+".D c #bdbebd",
+".8 c #c5bebd",
+".E c #c5bec5",
+".C c #c5c2c5",
+"#e c #c5c6c5",
+"#s c #cdc6c5",
+".I c #cdc6cd",
+"#j c #cdcac5",
+".B c #cdcacd",
+".A c #cdcecd",
+".7 c #d5cecd",
+"#k c #d5ced5",
+".z c #d5d2d5",
+".y c #d5d6d5",
+".p c #de914a",
+"#r c #ded6d5",
+".H c #ded6de",
+".Y c #dedad5",
+".4 c #dedade",
+".q c #dedede",
+".W c #e69552",
+"#n c #e6dede",
+"#o c #e6dee6",
+".G c #e6e2e6",
+".X c #e6e6e6",
+".n c #ee9952",
+".6 c #eee6e6",
+".x c #eee6ee",
+"#b c #eeeae6",
+".w c #eeeaee",
+".m c #f69d52",
+".5 c #f6eeee",
+".v c #f6eef6",
+".u c #f6f2f6",
+".d c #ffa152",
+".a c #ffa55a",
+".b c #ffb66a",
+".c c #ffba73",
+".e c #ffc283",
+".i c #ffca8b",
+".h c #ffce94",
+".f c #ffce9c",
+".l c #ffd29c",
+".g c #ffd69c",
+".k c #ffd6a4",
+".j c #ffdaa4",
+".t c #fff6ff",
+".s c #fffaff",
+".r c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#QtQtQtQtQt.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#QtQt.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.#.#.#.#.#QtQtQtQt.#.#.#.#.#.#.#.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.#.#QtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#QtQtQtQtQt",
+"QtQtQt.#.#.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQt.#.a.b.c.b.c.d.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"Qt.#.c.e.f.g.g.f.e.b.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+".#.a.e.f.g.g.h.h.i.e.d.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQtQtQtQt",
+".#.b.f.j.k.l.h.e.c.b.c.b.c.b.c.b.c.b.c.b.c.b.c.b.#QtQtQtQtQtQtQt",
+".#.c.i.k.l.e.b.a.d.m.n.m.n.m.n.m.n.m.n.m.n.m.n.m.#QtQtQtQtQtQtQt",
+".#.b.j.l.f.b.a.o.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",
+".#.c.l.l.e.c.p.#.q.r.r.r.r.r.s.t.u.v.w.x.q.q.y.z.A.B.C.C.D.E.D.#",
+".#.b.g.f.c.d.F.#.r.w.w.G.G.H.y.B.I.C.J.K.L.M.N.O.P.Q.R.S.T.U.V.#",
+".#.c.h.e.b.W.#.r.q.w.X.x.X.G.Y.y.B.I.C.C.Z.Z.M.0.O.P.Q.1.2.3.#Qt",
+".#.b.f.b.a.o.#.x.4.X.w.5.u.X.6.q.H.7.B.C.8.9.K.M#..P##.1.2#a.#Qt",
+".#.c.e.c.p.#.s.H.q.X.w.v#b.w.G.G.Y.y.A.B.D.J.K#c.N#..Q.1#d.#QtQt",
+".#.b.c.d.F.#.w.7.4.G.w.w.x.X.X.q.4.z.7#e.C.J.9.M#f#g#h.U#i.#QtQt",
+".#.c.b.W.#.v#j.z.4.G.X.x.G.G.4.4.z#k#e#e.J#l#m.M#..P.1.3.#QtQtQt",
+".#.b.a.o.#.X.I.z#n.G.6.G#o.4.4.z.z.B.I.D.J.K.L.0#.#p#q#i.#QtQtQt",
+".#.c.p.#.G.C.B.z.y#n.4.4.y#r.z#k#e#s.D.J.9.K#t#..P#u.3.#QtQtQtQt",
+".#.d.F.#.w.J.I.A#r#r#r.z.z.7.7#s.I.8.D.9.K.M#f#v.P.U#i.#QtQtQtQt",
+".#.W.#.4.K.J.D#s.B.A.B.A.B.B#e#e.D.J.9.K.M#f#w##.1.3.#QtQtQtQtQt",
+".#.o.#.y.L.9.8.D.C#e.I#e.I.C.C.J.J.9.K.M.M#.#g.Q.S#a.#QtQtQtQtQt",
+".#.#.A.M.M.K.K#l.9.J.J.J#x#l.9.K#m#m.N#..O.O.Q.U#d.#QtQtQtQtQtQt",
+".#.#.B#..0#.#f.0.M.M.M.0.M.N.N#.#g.P.P#p###p.S.V#i.#QtQtQtQtQtQt",
+".#.C#y#y.1#u#z.Q.Q.Q#z.Q#z#u.1.1.T#q.U#A.3.3#d#i.#QtQtQtQtQtQtQt",
+".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image18_data = {
+"32 32 251 2",
+".p c None",
+"bU c #000000",
+"#A c #000083",
+"#z c #0000ff",
+"b4 c #000400",
+"#L c #0004ff",
+"bq c #080400",
+"bI c #080408",
+"#T c #0804ff",
+"be c #080808",
+"#n c #0808ff",
+"b2 c #080c08",
+"#b c #080cff",
+"bi c #100808",
+"b3 c #100c10",
+"#h c #100cff",
+"b1 c #101010",
+"#e c #1010ff",
+"b0 c #101410",
+"bY c #181418",
+"#l c #1814ff",
+"bZ c #181818",
+"#S c #1818ff",
+"#m c #181cff",
+"bW c #201c18",
+"bX c #201c20",
+"#y c #201cff",
+"bV c #202020",
+"#i c #2020ff",
+"ad c #2024ff",
+".6 c #292420",
+"#. c #292429",
+".S c #292829",
+"#K c #2928ff",
+".F c #312829",
+".N c #312c31",
+"#R c #312cff",
+"#J c #3130ff",
+"#x c #3134ff",
+".o c #392c31",
+"bJ c #393031",
+".n c #393431",
+"ac c #3934ff",
+"#I c #3938ff",
+"bC c #413439",
+".m c #413839",
+"bj c #413c39",
+"#O c #413cb4",
+"#w c #413cff",
+"ao c #4140b4",
+"#H c #4140ff",
+"#v c #4144ff",
+".l c #4a4041",
+"aS c #4a4441",
+"#9 c #4a44b4",
+"ab c #4a44ff",
+"#G c #4a48ff",
+"aa c #4a4cff",
+".k c #52444a",
+".j c #52484a",
+"#u c #524cff",
+"#Q c #5250ff",
+"#F c #5255ff",
+".i c #5a4c52",
+"#U c #5a5052",
+".g c #5a5552",
+"#t c #5a55ff",
+"#E c #5a59ff",
+"a# c #5a5dff",
+".h c #62555a",
+".f c #62595a",
+"am c #625d52",
+".e c #625d5a",
+"#s c #6261ff",
+"#r c #6265ff",
+".d c #6a6162",
+"#f c #6a6562",
+"#1 c #6a65ff",
+"#D c #6a69ff",
+".c c #73696a",
+".Y c #736d6a",
+"#P c #736dff",
+"#q c #7371ff",
+"#0 c #7375ff",
+".7 c #7b6d73",
+".b c #7b7173",
+"#p c #7b75ff",
+"#Z c #7b79ac",
+"a. c #7b79ff",
+"an c #7b7dac",
+"#C c #7b7dff",
+"bR c #837152",
+"aM c #83756a",
+".a c #83757b",
+".# c #83797b",
+"#N c #837db4",
+"#B c #837dff",
+"#o c #8381ff",
+"aG c #8b7973",
+"aV c #8b7d6a",
+"Qt c #8b7d83",
+"al c #8b817b",
+"aO c #948173",
+".B c #948983",
+"bK c #9c815a",
+".q c #9c816a",
+"bw c #9c8573",
+"a1 c #9c857b",
+"bc c #9c8973",
+"a6 c #9c897b",
+"bl c #9c8d7b",
+".0 c #9c8d8b",
+"bF c #9c917b",
+"aB c #9c9183",
+"av c #9c918b",
+"## c #9c9594",
+"aA c #9c9994",
+"bt c #a48973",
+"bx c #a48d73",
+"b. c #a48d7b",
+".8 c #a4918b",
+"aN c #a4957b",
+".G c #a4958b",
+".L c #a49594",
+".W c #a4959c",
+"ay c #a49994",
+".3 c #a4999c",
+"az c #a49d94",
+"ax c #a49d9c",
+"#M c #a4a1bd",
+"#Y c #a4a5c5",
+"bE c #ac9173",
+"ak c #aca194",
+"#8 c #aca19c",
+".R c #aca5a4",
+"bQ c #b4997b",
+"bB c #b4a58b",
+"aJ c #b4a594",
+"aH c #b4aa94",
+"#X c #b4aa9c",
+"#g c #b4aaa4",
+"#7 c #b4aea4",
+"aw c #b4b2a4",
+"bh c #bdaa8b",
+"bv c #bdae9c",
+"aX c #bdaea4",
+"bA c #bdb29c",
+"#6 c #bdb2a4",
+"aI c #bdb2ac",
+"aF c #bdb6ac",
+"bP c #c5ae8b",
+"aW c #c5b28b",
+"bb c #c5b6a4",
+"bg c #c5b6ac",
+"#5 c #c5bab4",
+"aj c #c5beb4",
+"bO c #cdba9c",
+".A c #cdbab4",
+"#W c #cdbeb4",
+"bn c #cdc2b4",
+"ai c #cdc6b4",
+".Q c #cdc6c5",
+"bN c #d5be9c",
+"a2 c #d5c69c",
+"au c #d5c6b4",
+"a5 c #d5c6bd",
+"aR c #d5cab4",
+"#4 c #d5cabd",
+".9 c #d5cacd",
+"bL c #deca9c",
+"bM c #decaa4",
+"#2 c #decaac",
+"#V c #decab4",
+"#j c #deceb4",
+"a4 c #decebd",
+"ah c #ded2c5",
+".1 c #ded6bd",
+"ag c #ded6c5",
+"aQ c #ded6cd",
+".V c #ded6d5",
+"aP c #e6cea4",
+"bf c #e6ceac",
+"ae c #e6ceb4",
+"br c #e6d2a4",
+"a0 c #e6d2ac",
+"ap c #e6d2b4",
+".O c #e6d2bd",
+"bm c #e6d6ac",
+"aC c #e6d6b4",
+".T c #e6d6bd",
+"aE c #e6d6c5",
+"aL c #e6d6cd",
+".P c #e6dac5",
+"at c #e6dacd",
+".z c #e6e2d5",
+"bT c #eed6b4",
+"by c #eedaac",
+"bD c #eedab4",
+"bS c #eedabd",
+".H c #eedac5",
+"a3 c #eedacd",
+"bG c #eedebd",
+"aZ c #eedec5",
+"ba c #eedecd",
+"aU c #eeded5",
+"#3 c #eee2cd",
+".y c #eeeae6",
+".2 c #eeeaee",
+"bo c #f6e2b4",
+"bz c #f6e2cd",
+"bu c #f6e2d5",
+".4 c #f6e6c5",
+"a9 c #f6e6cd",
+"af c #f6e6d5",
+"as c #f6e6de",
+".r c #f6eacd",
+".t c #f6ead5",
+".v c #f6eade",
+".w c #f6eae6",
+"aY c #f6eede",
+".x c #f6eee6",
+".K c #f6eeee",
+".5 c #f6f2ee",
+"bd c #ffe6bd",
+"bH c #ffe6c5",
+"a7 c #ffeabd",
+"#k c #ffeac5",
+".M c #ffeacd",
+"b# c #ffead5",
+"#a c #ffeebd",
+"#d c #ffeec5",
+"bp c #ffeecd",
+".u c #ffeed5",
+"ar c #ffeede",
+"aT c #fff2d5",
+"aD c #fff2de",
+"a8 c #fff2e6",
+".C c #fff2ee",
+".X c #fff2f6",
+"bk c #fff6d5",
+"aq c #fff6de",
+".Z c #fff6e6",
+"#c c #fff6ee",
+".D c #fff6f6",
+"bs c #fffade",
+"aK c #fffae6",
+".I c #fffaee",
+".s c #fffaf6",
+".J c #fffaff",
+".U c #fffff6",
+".E c #ffffff",
+"Qt.#.a.b.b.c.c.d.d.e.f.g.h.i.i.j.k.l.l.m.m.n.o.p.p.p.p.p.p.p.p.p",
+".#.q.r.s.t.u.t.v.v.v.v.w.w.x.y.x.z.A.B.C.D.E.F.p.p.p.p.p.p.p.p.p",
+".#.s.G.H.E.I.s.I.s.I.s.s.E.s.E.J.K.L.M.E.E.J.N.p.p.p.p.p.p.p.p.p",
+".b.O.E.G.P.E.I.s.I.s.s.s.s.E.s.E.Q.R.E.E.s.D.S.p.p.p.p.p.p.p.p.p",
+".b.O.I.E.G.T.E.I.s.s.U.s.E.J.E.V.W.I.E.J.E.X.F.p.p.p.p.p.p.p.p.p",
+".Y.O.Z.I.E.0.1.E.I.s.s.J.s.E.2.3.4.E.J.E.s.5.6.p.p.p.p.p.p.p.p.p",
+".7.O.I.I.I.E.8.O.E.s.E.s.E.J.9.R.E.E.E.J.E.K#..p.p.p.p.p.p.p.p.p",
+".c.O.Z.I.Z.I.E.0.T.E.s.J.s.K###a.E.E.J.E.s.x#b.p.p.p.p.p.p.p.p.p",
+".c.O.I.I.I#c.s.E.8.H.E.s.K###d.E.E.J.E.J.E.w#e#b.p.p.p.p.p.p.p.p",
+"#f.O.Z#c.Z.I.I.I.E.L.P.E.Q#g#c.E.J.E.s.E.s.w#b#h#i.p.p.p.p.p.p.p",
+"#f.O.I.Z.I.I.s.I.s.E.L#j.L#k.E.J.E.J.E.s.E.w#e#h#i#l.p.p.p.p.p.p",
+".e.O.Z#c.Z#c#c.I#c.I.K.8.4.E.D.s.D.s.D.s.I.v#b#h#m#l#n.p.p.p.p.p",
+"#o#o#o#o#o#o#o#o#o#o#o#o#o#p#q#r#s#t#u#v#w#x#e#b#y#e#b#z.p.p.p.p",
+"#A#A#A#o#B#o#C#o#B#o#C#o#C#p#D#r#E#F#G#H#I#J#K#i#l#e#L#z#z.p.p.p",
+".f#M#N#O#A#A#A#o#o#o#o#o#B#q#P#s#E#Q#G#H#I#R#K#y#S#b#T#z#z#z.p.p",
+"#U#V.P#W#X#Y#Z#A#A#A#B#o#0#q#1#s#F#u#v#w#x#R#i#y#e#b#z#z#z#A.p.p",
+".h#2#3#4#5#6#7#8###Z#9#Aa.#P#1a##taaab#Iac#Kad#S#e#n#z#z#A.p.p.p",
+".iaeaf#3agahaiajakalamanao#A#A#A#A#A#A#A#A#A#b#h#b#T#z#A.p.p.p.p",
+"#Uapaqarar.tasatau#Xavalaw#8axayazaAayaAazaB#e#h#h#L#A.p.p.p.p.p",
+".jaCaqaqaqaqaDaraEauaFaGaHajaFaFawaFawaIawaJ#b#h#n#A.p.p.p.p.p.p",
+".jap.Zaq.Z.ZaKaq.waLaMaNaOaPatagaLahaQahaLaR#e#b#A.p.p.p.p.p.p.p",
+"aSapaTaqaq.ZaqaqaUaVaWaiaXaJ.rar.varaYaraYaZ#b#A.p.p.p.p.p.p.p.p",
+".ka0aqaqaqaqaK.Ea1a2a3a4a5a6a7.Z.ZaD.Za8.Za9#A.p.p.p.p.p.p.p.p.p",
+".la0aTaqaTaq.Eb.a0b#baat#jbbbcbdaq.Zaq.Zaq.Mbe.p.p.p.p.p.p.p.p.p",
+".lbfaqaTaq.Ea6a0aqarb##3.Haubgbhaqaq.Zaq.Z#kbi.p.p.p.p.p.p.p.p.p",
+"bja0aTbk.EblbmaqaDaq.u.taE.Tbnbcbo.Zaqaqaqbpbq.p.p.p.p.p.p.p.p.p",
+"bjbrbs.sbtbmaqaqaqaTaq.ubuaEa4bvbwbdaqaDaq#kbe.p.p.p.p.p.p.p.p.p",
+".na0#cbxbybkaTaqaTaqaTaD.rbzaEa4bAbBa7aqaT#kbq.p.p.p.p.p.p.p.p.p",
+"bCbDbEbDaTaTbkaTaqaTaqbkaTaZ.HaZaubFbGa7aqbHbI.p.p.p.p.p.p.p.p.p",
+"bJbKbLa0aPa0aPa0a0a0a0a0bMbMbNbObPbQbRbSbTbDbU.p.p.p.p.p.p.p.p.p",
+".N.F.F#..S.6#.bVbVbWbXbYbZb0bYb1b1b2b3bebeb4bI.p.p.p.p.p.p.p.p.p",
+".p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p"};
+
+static String[] image19_data = {
+"32 32 66 2",
+"Qt c None",
+".# c #000000",
+".7 c #000400",
+"## c #080808",
+".a c #080c08",
+".C c #100c10",
+".Z c #101410",
+".R c #181418",
+".d c #181818",
+".e c #202020",
+".2 c #202420",
+".8 c #292c29",
+".b c #312c31",
+".D c #313031",
+".5 c #313431",
+".J c #393439",
+".E c #414441",
+".g c #4a444a",
+".h c #4a484a",
+".n c #4a4c4a",
+".t c #524c52",
+".o c #525052",
+".s c #525552",
+".u c #5a555a",
+".K c #5a5d5a",
+".l c #625d62",
+".p c #626162",
+".k c #6a696a",
+".z c #737173",
+".A c #737573",
+".v c #7b757b",
+".j c #7b7d7b",
+".x c #837d83",
+".H c #838183",
+".O c #8b858b",
+".y c #8b898b",
+".S c #949194",
+".N c #949594",
+".f c #9c959c",
+".U c #9c999c",
+".F c #9c9d9c",
+".T c #a49da4",
+".c c #a4a5a4",
+".B c #aca5ac",
+".r c #acaeac",
+".G c #b4aeb4",
+".w c #b4b6b4",
+".0 c #bdb6bd",
+".3 c #bdbebd",
+".L c #c5bec5",
+".X c #c5c2c5",
+".P c #c5c6c5",
+".I c #cdc6cd",
+".q c #cdcacd",
+".1 c #cdcecd",
+".Y c #d5ced5",
+".i c #d5d2d5",
+".M c #d5d6d5",
+".m c #ded6de",
+".W c #dedede",
+".V c #e6dee6",
+"#. c #e6e6e6",
+".6 c #eee6ee",
+".Q c #eeeaee",
+".9 c #f6f2f6",
+".4 c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.aQt.#.b.c.#.#.d.#QtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.e.f.#.g.h.i.j.k.l.m.#QtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.#.#Qt.e.n.h.n.o.p.k.p.o.q.r.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.s.g.e.t.s.u.s.p.l.p.k.v.w.#.x.y.#QtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.g.h.u.h.n.h.u.k.k.z.A.j.A.j.x.q.B.#QtQtQt",
+"QtQtQtQtQtQtQtQt.C.a.D.s.t.E.k.F.G.F.v.z.H.j.H.y.H.q.I.y.JQtQtQt",
+"QtQtQtQtQtQtQt.#.h.s.o.g.K.L.M.L.c.B.r.N.j.y.O.y.c.P.o.dQtQtQtQt",
+"QtQtQtQtQtQtQt.#.u.s.g.y.Q.w.v.h.D.R.D.h.f.S.f.S.T.S.H.z.#QtQtQt",
+"QtQtQtQtQt.#.#.b.K.g.c.Q.O.u.e.#.#.#.#.b.c.N.U.F.c.B.r.i.q.#QtQt",
+"QtQtQtQt.#.j.p.l.u.y.V.x.t.a.#.#QtQt.#.#.T.F.T.c.B.c.I.W.L.eQtQt",
+"QtQtQtQt.#.A.K.p.k.Q.O.n.a.#QtQtQtQtQt.#.U.B.c.B.r.m.X.N.j.#QtQt",
+"QtQtQtQtQt.R.k.l.L.w.u.R.#QtQtQtQtQtQt.#.B.c.G.r.Y.c.v.#.#QtQtQt",
+"QtQtQt.#.Z.k.z.x.M.A.e.#QtQtQtQtQtQt.#.0.r.0.w.L.q.A.#QtQtQtQtQt",
+"QtQt.#.F.v.j.v.c.0.E.#QtQtQtQtQtQtQt.#.w.0.w.L.X.1.Y.#QtQtQtQtQt",
+"QtQt.#.N.j.x.j.L.U.2.#QtQtQtQtQtQt.#.w.0.3.L.X.P.q.m.4.#QtQtQtQt",
+"QtQtQt.5.y.y.y.3.H.#QtQtQtQtQtQt.#.3.L.3.I.X.i.W.V.6.V.j.dQtQtQt",
+"QtQtQt.d.O.N.S.0.j.#QtQtQtQtQt.#.X.L.X.q.q.i.M.0.c.B.r.A.7QtQtQt",
+"QtQt.D.S.f.F.T.w.f.8.#QtQt.#.#.3.I.X.Y.q.i.6.B.l.#.#.#.#QtQtQtQt",
+"Qt.#.S.G.U.F.c.G.w.N.8.#.#.P.X.P.q.q.1.m.M.9.U.dQtQtQtQtQtQtQtQt",
+"Qt.#.1.w.B.c.G.r.0.Y.L.3.I.X.1.q.i.M.m.W.V.9.V.7QtQtQtQtQtQtQtQt",
+"QtQt.#.A.w.G.w.0.3.L.X.P.q.q.1.m.M.V#..9.9.9.4.p.#QtQtQtQtQtQtQt",
+"QtQt.#.r.0.3.0.3.I.X.Y.q.i.M.m.W.V.6.G.r.9.4.V.c.#QtQtQtQtQtQtQt",
+"Qt.#.q.P.1.L.X.P.X.q.1.m.M.V.W.V.9.i.k.b.5.G.r.k.eQtQtQtQtQtQtQt",
+"QtQt##.M.y.F.m.Y.V.M.m.W.Q.9.9.6.4.3.t.R.#.#.t.5.#QtQtQtQtQtQtQt",
+"QtQtQt.d.#.q.W.m.3.V.W.9.1.y.9.4.4.0.8.#QtQt.#.#QtQtQtQtQtQtQtQt",
+"QtQtQt.#.0.9.Q.F.p.6.9.6.T.5.t.4.4.w.#QtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQt.#.Q.X.p.#.4.4.q.z.d.#.4.w.F.#QtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.#.y.#.#.4.4.c.u.#Qt.#.v.h.#QtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.#QtQt.#.U.N.8.#QtQt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.#.y.e.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image20_data = {
+"32 32 28 1",
+". c None",
+"# c #000000",
+"w c #292018",
+"x c #312420",
+"s c #312820",
+"u c #312c20",
+"y c #392820",
+"j c #392c20",
+"h c #392c29",
+"t c #393029",
+"a c #413429",
+"b c #413431",
+"i c #413829",
+"m c #413831",
+"n c #4a3831",
+"r c #4a3c31",
+"d c #524039",
+"l c #524431",
+"k c #524439",
+"c c #5a4439",
+"e c #5a4839",
+"q c #5a4841",
+"z c #624c41",
+"o c #625541",
+"f c #6a5541",
+"p c #6a554a",
+"g c #6a594a",
+"v c #73594a",
+"....................####........",
+"..................##abaa#.......",
+"................##cdefgbh#......",
+"...............#ijkclcaee#......",
+"..............#mncefcceg#.......",
+".............#iekcopkckn#.......",
+".............#qcefppeaq#........",
+"............#hkmkcocaem#........",
+"............#encnpeiqn#.........",
+"............#qamaeaj##..........",
+".............#rnqg##............",
+".........##...####..............",
+"........#nn#....................",
+".......#snan#.............##....",
+".......#eceph#..........##tj#...",
+".......#amkee#........##uhaea#..",
+"........#nvg#........#tinmncn#..",
+".........###........#hkmasaes#..",
+"....................#encninme#..",
+"...................#keankmke#...",
+"...................#qbnenpne#...",
+"..................#wieanxna#....",
+"..................#nqiymnmz#....",
+"..................#nanisie#.....",
+"..................#nnmssz#......",
+"..............##...#nqm##.......",
+".............#hn#...###.........",
+"............#hkes#..............",
+"............#enknn#.............",
+"............#nkcah#.............",
+".............#####..............",
+"................................"};
+
+static String[] image21_data = {
+"32 32 87 2",
+"Qt c None",
+".# c #000000",
+".Z c #18b618",
+"#t c #393839",
+".j c #414041",
+"#g c #4a484a",
+".3 c #524c52",
+"#q c #525052",
+"#u c #525552",
+"#. c #5a595a",
+".1 c #5a59de",
+".T c #5a59e6",
+"#c c #5a5d5a",
+".P c #5ac25a",
+"#k c #626162",
+".n c #626562",
+".0 c #62c662",
+".g c #6a656a",
+".f c #6a696a",
+".W c #6a6d6a",
+".4 c #736d73",
+"## c #737173",
+".p c #737573",
+".U c #7b71ee",
+".Y c #7b757b",
+"#h c #7b797b",
+"#p c #7b7d7b",
+".N c #838183",
+"#m c #8b898b",
+".6 c #8bda8b",
+".Q c #948d94",
+"#a c #949194",
+"#d c #9c959c",
+"#n c #9c999c",
+"#i c #a49da4",
+".c c #a4a1a4",
+"#o c #a4a5a4",
+".O c #a4e2a4",
+".s c #aca5ac",
+".o c #acaaac",
+"#s c #b4aeb4",
+".5 c #b4b2b4",
+".F c #b4b6b4",
+".X c #bdb6bd",
+".z c #bdbabd",
+".a c #bdbebd",
+".d c #c5bec5",
+".t c #c5c2c5",
+"#j c #c5c6c5",
+".9 c #cdc6cd",
+"#f c #cdcacd",
+"#e c #cdcecd",
+"#r c #d5ced5",
+".r c #d5d2d5",
+".L c #d5d2ee",
+".e c #d5d6d5",
+".H c #debec5",
+".R c #dec2c5",
+"#l c #ded6de",
+".2 c #ded6ff",
+".y c #dedade",
+".8 c #dedede",
+".k c #e6dee6",
+".u c #e6e2e6",
+".x c #e6e6e6",
+".M c #e6e6ee",
+".V c #e6e6f6",
+".7 c #e6f6e6",
+".I c #eec6c5",
+".q c #eee6ee",
+".A c #eeeaee",
+".l c #eeeeee",
+".G c #eef6ee",
+".m c #f6eef6",
+".K c #f6eeff",
+".h c #f6f2f6",
+"#b c #f6f2ff",
+".B c #f6f6f6",
+".D c #ff7173",
+".C c #ff858b",
+".S c #ffa1a4",
+".w c #ffd2d5",
+".J c #ffd6d5",
+".v c #ffe6ee",
+".E c #fff6ff",
+".i c #fffaff",
+".b c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQt.#.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"Qt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+".#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+".#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"Qt.#.#QtQtQtQtQtQtQtQtQt.#.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQt.#.#QtQtQtQtQtQt.#.#.a.b.b.b.c.#.#QtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQt.#.#.#QtQtQt.#.d.e.f.g.h.i.b.b.d.#.#QtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.#.#.#.j.k.l.h.h.m.n.f.b.k.n.f.o.#.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.p.i.b.i.i.b.b.b.f.g.m.q.r.a.s.#QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.#.t.u.f.n.b.b.b.b.f.i.v.w.h.x.u.y.d.#QtQtQtQtQtQtQt",
+"QtQtQtQtQt.#.z.A.i.b.b.g.f.B.f.A.b.C.D.i.E.l.A.y.d.#QtQtQtQtQtQt",
+"QtQtQtQtQt.#.F.u.A.i.b.i.b.f.h.b.G.H.I.J.i.K.L.M.y.d.#QtQtQtQtQt",
+"QtQtQtQtQt.#.N.r.u.A.i.l.f.h.b.O.P.Q.R.S.E.T.U.V.A.y.d.#QtQtQtQt",
+"QtQtQtQtQt.#.W.X.e.u.A.Y.x.b.b.O.Z.0.G.b.1.2.i.i.l.x.r.d.#QtQtQt",
+"QtQtQtQtQt.#.3.4.5.y.r.p.h.i.b.b.6.7.E.T.2.b.b.b.E.q.8.9.d.#QtQt",
+"QtQtQtQtQtQt.##.##.z#a.8.u.m.i.b#b.2.1.2.b.b.b.b.E.m.8.y.a.#QtQt",
+"QtQtQtQtQtQt.#.j#c.p#d#e.y.8.m.i.E.T.2.b.b.b.b.b.b.h.q.y#f.a.#Qt",
+"QtQtQtQtQtQtQt.##g.n#h#i#j.e.u.m.i.b.b.b.b.b.b.b.b.i.A.k.r.z.#Qt",
+"QtQtQtQtQtQtQtQt.##k.Y#a.o#f.y.x.h.E.b.b.b.b.b.b.b.b.h.u#l#j#a.#",
+"QtQtQtQtQtQtQtQtQt.#.f#m#n.o#e.k.x.A.h.i.i.b.b.b.b.b.B.A.e.r#o.#",
+"QtQtQtQtQtQtQtQtQtQt.##p#d.c.X.t.u.u.A.l.E.i.b.b.b.b.i.l.k.e.N.#",
+"QtQtQtQtQtQtQtQtQtQtQt.#.p#d.o.5.a.r.y.q.A.h.B.i.i.b.i.h.x.r#q.#",
+"QtQtQtQtQtQtQtQtQtQtQtQt.#.##d.F.t#j#r.8.A.m.B.B.i.i.b.i#s.p#t.#",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.z#f.r.y.u.h.h.h.h.B.r#a#k#g.#Qt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.9.u.h.E.m.e.t.o#a#h#u.#QtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.8.b.B.k#j.5#m.#QtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image22_data = {
+"38 37 210 2",
+"Qt c None",
+".W c #000000",
+"bo c #000400",
+"bp c #080408",
+"bn c #080808",
+".P c #100c10",
+"bh c #101010",
+"#L c #101410",
+"a3 c #181818",
+".H c #181c18",
+"aR c #201c10",
+"a0 c #201c18",
+"aG c #202018",
+".G c #202020",
+"aF c #292420",
+"#K c #292429",
+"#k c #292829",
+".z c #292c29",
+"#j c #312c31",
+"#. c #313031",
+".X c #393839",
+".r c #393c39",
+".q c #414041",
+"aS c #414439",
+"b. c #4a4439",
+"a1 c #4a4441",
+"aQ c #4a4841",
+".n c #4a4c4a",
+"#1 c #524831",
+".o c #524c52",
+"ap c #52504a",
+".e c #525552",
+"#v c #5a4839",
+".c c #5a555a",
+".# c #5a595a",
+"a2 c #625d5a",
+"bm c #62615a",
+"bj c #6a6162",
+"a8 c #6a6562",
+"aZ c #6a6962",
+"a9 c #736962",
+"be c #73696a",
+"aE c #736d6a",
+"ah c #73716a",
+"aC c #7b7573",
+"#G c #7b797b",
+"#F c #7b7d7b",
+"aT c #837d7b",
+".v c #83b26a",
+".u c #83b66a",
+"as c #8b8983",
+".I c #8baa6a",
+".B c #8bb273",
+"b# c #94898b",
+"ag c #948d8b",
+"#Z c #949594",
+"#g c #94a16a",
+"#q c #94a573",
+".6 c #94aa73",
+"#T c #9c996a",
+"#7 c #9c9973",
+"ab c #9c999c",
+"#U c #9c9d73",
+"aO c #9ca173",
+"#A c #9ca17b",
+"#z c #9ca57b",
+".5 c #9cae7b",
+"a7 c #a4896a",
+"aM c #a49973",
+"aH c #a4a19c",
+".g c #a4a1a4",
+"#P c #a4aa83",
+"#H c #a4ae7b",
+"#d c #a4ae83",
+"#c c #a4b28b",
+"aL c #ac9d83",
+"aP c #aca1a4",
+"bd c #aca5a4",
+"aq c #acaaa4",
+"#D c #acae8b",
+"#X c #acb27b",
+".S c #acbe94",
+".Z c #acbe9c",
+"az c #b4aa8b",
+"aD c #b4aeac",
+"ae c #b4b2ac",
+"#0 c #b4ba83",
+"#m c #b4ba9c",
+".V c #b4c29c",
+".T c #b4c6a4",
+"ba c #bd9d7b",
+"al c #bdb69c",
+"#2 c #bdba8b",
+"am c #bdbaa4",
+"ad c #bdbab4",
+"ac c #bdbabd",
+"#x c #bdbea4",
+"#J c #bdc68b",
+"#a c #bdc6ac",
+".M c #bdcaac",
+"bk c #c5a17b",
+"aU c #c5a57b",
+"aW c #c5ae83",
+"at c #c5b283",
+"aI c #c5b68b",
+"ai c #c5ba8b",
+"ax c #c5baa4",
+"#W c #c5c2ac",
+"af c #c5c2bd",
+"#w c #c5c6ac",
+".h c #c5c6c5",
+".3 c #c5cab4",
+".t c #c5f6b4",
+".l c #c5fabd",
+".i c #c5ffbd",
+".j c #c5ffc5",
+"bi c #cda57b",
+"bg c #cda583",
+"a4 c #cdaa83",
+"a. c #cdc6b4",
+"ar c #cdc6c5",
+".m c #cdc6cd",
+"#Y c #cdcecd",
+"#t c #cdd6bd",
+"#h c #cddeac",
+".8 c #cde6ac",
+".9 c #cdeaac",
+".J c #cdeeb4",
+".A c #cdf2b4",
+".w c #cdf6bd",
+".p c #cdfabd",
+"#S c #d5daa4",
+"#B c #d5deac",
+"#p c #d5e2ac",
+"#i c #d5e2bd",
+"#e c #d5e6b4",
+".7 c #d5eab4",
+".Y c #d5eabd",
+".Q c #d5eeb4",
+".R c #d5eebd",
+".C c #d5f2c5",
+".x c #d5f6cd",
+"bf c #deba94",
+"av c #ded2a4",
+"aj c #ded6a4",
+"ak c #ded6ac",
+"#8 c #dedaa4",
+"#5 c #dedaac",
+"#R c #dedeac",
+"#Q c #dedeb4",
+"#s c #dedec5",
+".d c #dedede",
+"#C c #dee2ac",
+"#O c #dee2bd",
+"#o c #dee6b4",
+"#y c #dee6bd",
+"#f c #deeab4",
+"#n c #deeabd",
+".4 c #deeec5",
+".K c #def2c5",
+".L c #def2cd",
+".O c #def6cd",
+".D c #def6d5",
+".y c #defad5",
+"bc c #e6c294",
+"a6 c #e6c69c",
+"a5 c #e6ca9c",
+"aV c #e6cea4",
+"aY c #e6d2a4",
+"aN c #e6d2ac",
+"au c #e6d6a4",
+"aB c #e6d6b4",
+"aA c #e6dab4",
+"ao c #e6dabd",
+"#6 c #e6deac",
+"#4 c #e6deb4",
+".b c #e6dee6",
+"#3 c #e6e2bd",
+"aa c #e6e2c5",
+"#N c #e6e6c5",
+"#r c #e6eac5",
+"#V c #e6eacd",
+"#u c #e6eec5",
+"## c #e6eecd",
+".0 c #e6f2cd",
+".2 c #e6f2d5",
+".U c #e6f6d5",
+".E c #e6f6de",
+".s c #e6fade",
+".k c #e6ffde",
+".f c #e6ffe6",
+"bb c #eec69c",
+"bl c #eec6a4",
+"aX c #eed6b4",
+"aK c #eedebd",
+"ay c #eee2c5",
+"an c #eee6cd",
+"#9 c #eeeacd",
+"#E c #eeead5",
+"#I c #eeeecd",
+"#l c #eeeed5",
+"#M c #eeeede",
+".1 c #eef2d5",
+"#b c #eef2de",
+".N c #eef6de",
+".F c #eefade",
+"aJ c #f6e6d5",
+"aw c #f6ead5",
+"a# c #f6eed5",
+".a c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.a.b.c.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.a.a.a.d.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.e.f.a.a.g.h.a.b.e.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.#.i.j.i.a.a.g.h.a.d.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.#.k.i.l.i.l.i.a.a.g.m.a.b.n.oQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt.#.p.l.p.l.p.l.p.l.a.a.g.h.a.d.q.rQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQt.c.s.t.u.v.w.t.w.t.w.x.y.a.a.a.a.a.b.z.zQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQt.c.A.B.A.w.v.B.C.y.D.s.E.F.E.a.a.a.a.a.d.G.HQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQt.o.E.A.I.A.J.K.L.M.M.N.E.E.L.O.C.C.a.a.a.a.a.b.P.PQtQtQtQtQtQtQtQtQtQt",
+"QtQtQt.q.Q.I.R.S.T.U.N.E.N.T.V.K.K.R.R.Q.R.J.a.a.a.a.a.d.W.WQtQtQtQtQtQtQtQt",
+"QtQt.X.N.Y.Z.0.1.2.3.M.2.4.4.Y.5.6.7.8.7.9.7.R.0.a.a.a.a.a.b.zQtQtQtQtQtQtQt",
+"QtQt#.###a#a.3#b.1#####c#d#e#f#e#e#g#e#h#i##.1.1#b.1.a.a.a.a#jQtQtQtQtQtQtQt",
+"Qt#k#l.1#a#b###m#c#n#o#o#p#q#g#p#p#d#r#s#t#b#l#b###u#n#n.a#vQtQtQtQtQtQtQtQt",
+"Qt.H#b#w#x#r#r#y#y#z#A#B#C#p#C#D#x#l#E#F#G#H#I#r#r#o#o#C#J#KQtQtQtQtQtQtQtQt",
+"#L#M#N#N#O#P#A#Q#R#R#S#T#U#N#V#l#W#l#X#Y.g#Z#F#0#R#Q#B#R#1QtQtQtQtQtQtQtQtQt",
+".P#2#3#4#4#5#6#T#7#8#3#N#9#Wa.#wa#aaabacadaeafagah#8#5#2.GQtQtQtQtQtQtQtQtQt",
+"Qt#.#1aiajakajajajalam#E#E#Eanalao#Xaeaeahapaqaras#Haj#vQtQtQtQtQtQtQtQtQtQt",
+"QtQtQt#.#vatauavaw#Eaw#WaxayazaAaBaCaDaEaFaGaEaHaEavaI.HQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQt#j#1atanaJayaKaAaLaMaNaOaPasaQaRaQaSaTaUaV#1QtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt#K#vaWaXaNaNaVaYaVaZasaga0aQa1aqa2aVaWa3QtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.G#1a4a5a5a6a7a8a1a8a9b.b#aTbaa6#vQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.H#vaUbbbc#va1bdbdbebda2bfbgbhQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQta3#1bia6a6#1a1a1bjbka6#1QtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt#L#vaUbla6#vbma6aU.PQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbh#1bga6a6a6#vQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbn#vaUbgboQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbp.WQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image23_data = {
+"32 32 83 2",
+"Qt c None",
+".# c #000000",
+"#q c #000400",
+"#f c #101010",
+"#e c #101410",
+".2 c #313031",
+".0 c #313431",
+"#j c #31aa00",
+".1 c #393439",
+".3 c #393839",
+".6 c #393c39",
+".7 c #413c41",
+".4 c #414041",
+"#a c #418120",
+"#d c #418520",
+".5 c #4a444a",
+".8 c #4a484a",
+".Y c #4a4c4a",
+"#m c #4a8520",
+".V c #524c52",
+".X c #525052",
+"#c c #52ba29",
+"#g c #52be29",
+".Q c #5a595a",
+".U c #5a5d5a",
+"#l c #5abe31",
+".P c #625d62",
+".S c #626562",
+".W c #6a656a",
+".T c #6a696a",
+".R c #6a6d6a",
+".Z c #737173",
+".M c #7b757b",
+".E c #7b7d7b",
+".D c #838583",
+"## c #83c25a",
+"#n c #83da5a",
+".j c #8b898b",
+"#p c #8bde5a",
+"#o c #8bde62",
+".w c #948d94",
+".m c #949194",
+".H c #9c0000",
+".p c #9c959c",
+".9 c #9c999c",
+"#. c #9c9d9c",
+".z c #a40408",
+".y c #a40c10",
+".t c #a41410",
+".G c #a49da4",
+".F c #a4a1a4",
+".x c #a4a5a4",
+".s c #ac2020",
+".o c #ac2829",
+".n c #ac2c29",
+".l c #ac2c31",
+".f c #ac3031",
+".O c #aca5ac",
+".J c #acaaac",
+".q c #acaeac",
+".g c #b43031",
+".k c #b43439",
+".r c #b4aeb4",
+".v c #b4b2b4",
+".C c #b4b6b4",
+".L c #bdb6bd",
+"#i c #c5eeac",
+"#b c #c5eeb4",
+".u c #cdcecd",
+"#k c #cdf2b4",
+".A c #d5ced5",
+".e c #d5d2d5",
+".h c #d5d6d5",
+".d c #ded6de",
+".K c #dedade",
+".a c #dedede",
+".B c #e6dee6",
+".i c #e6e2e6",
+"#h c #f6f2f6",
+".I c #f6f6f6",
+".N c #fff6ff",
+".b c #fffaff",
+".c c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.a.b.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.b.c.b.c.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.#.a.c.b.d.e.c.b.#.#QtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQt.#.c.c.c.f.g.h.d.c.c.#.#QtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.i.b.c.j.c.c.k.l.d.e.c.b.#.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.c.c.c.m.c.c.c.c.n.o.e.e.b.c.#.#QtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.a.c.c.c.c.p.m.c.q.r.c.s.t.e.u.b.b.#.#QtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.c.q.v.c.c.c.c.w.j.c.q.x.c.y.z.u.A.b.b.#.#QtQtQt",
+"QtQtQtQtQtQt.#.B.b.r.h.C.C.c.c.c.c.D.E.c.F.G.b.H.H.A.u.b.I.#.#Qt",
+"QtQtQtQtQt.#.B.b.J.h.v.K.L.C.c.c.c.c.c.M.M.b.c.b.b.H.b.N.b.I.#Qt",
+"QtQtQtQt.#.a.b.O.e.c.c.K.q.c.c.P.Q.c.c.c.b.R.S.b.b.T.N.b.I.#QtQt",
+"QtQtQt.#.B.b.F.F.d.e.d.h.r.c.U.c.c.V.c.c.c.b.c.W.T.b.b.N.B.#.#Qt",
+"QtQtQt.#.N.b.b.b.F.O.x.h.c.c.c.X.Y.c.b.Z.b.b.b.b.N.b.I.b.#.c.u.#",
+"QtQt.#.K.b.0.1.b.c.b.O.c.c.Y.V.c.c.c.Z.b.c.0.1.b.b.b.b.K.#.u.#Qt",
+"QtQt.#.b.2.b.b.1.3.b.b.c.4.c.b.5.b.c.T.b.2.b.b.1.2.b.I.#.u.A.#Qt",
+"Qt.#.a.N.b.0.1.b.b.1.6.b.c.7.7.b.c.T.c.b.b.0.1.b.b.N.a.#.A.8.c.#",
+"Qt.#.I.0.2.b.I.0.2.b.b.1.0.b.b.b.b.T.b.0.2.b.I.0.I.b.#.A.u.8.c.#",
+".#.u.b.N.b.0.1.b.b.0.1.b.b.0.1.b.T.b.b.b.b.0.1.N.b.K.#.u.Y.c.#Qt",
+".#.A.I.1.2.b.I.1.2.b.N.1.2.b.b.b.S.b.N.1.2.b.I.b.K.#.u.c.8.9.#Qt",
+".#.9.A.I.b.0.1.N.b.0.1.b.b.0.b.W.b.b.1.b.b.0.b.I.#.c.A.X.c.#QtQt",
+".#.9.9.A.u.N.I.0.2.b.I.0.2.b.I.T.N.b.I.0.2.N.I.K.#.#.#.#.#.#.#Qt",
+"Qt.#.#.9#..u.A.N.b.0.1.N.b.N.T.N.b.0.1.N.b.I.b.#.#.c###a.#.9.G.#",
+"QtQtQt.#.#.9.9.A.u.N.I.1.I.N.S.N.2.N.I.1.2.N.K.#.##b#c#d.#.9.u.#",
+"QtQtQtQtQt.#.#.9.G.u.A.I.b.W.b.I.b.0.1.I.N.#.##e#f#b#g#a.#.#.#.#",
+"QtQtQtQtQtQtQt.#.#.9.9.A.u.N.I.0.2.N.I.N#h.#.c#i#i.c#c#j.c#b#j.#",
+"QtQtQtQtQtQtQtQtQt.#.#.9#..u.A.I.N.0.1.I.a.##k#c#g#c#l#c#g#c#m.#",
+"QtQtQtQtQtQtQtQtQtQtQt.#.#.9.9.A.u.I#h.I.#.##n#o#n#c#c#c#n#p#a.#",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.9.G.u.A#h.#.##q#q.##b#g#a.#.#.#.#",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.9.9.A.#.9.u.8.##b#c#d.#QtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.9#..#.G.u.##c#o#a.#QtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#QtQtQt"};
+
+static String[] image24_data = {
+"32 32 147 2",
+"Qt c None",
+".# c #000000",
+".a c #000400",
+".b c #080408",
+"#0 c #083808",
+"aa c #102008",
+"#q c #102400",
+"af c #102408",
+"ad c #102410",
+"#B c #102808",
+"ae c #182810",
+"ag c #182c10",
+"ai c #183410",
+"#p c #184408",
+"ab c #184808",
+"#i c #186508",
+"ah c #203410",
+"#v c #203c10",
+"aj c #203c18",
+"al c #204010",
+"#o c #204408",
+"ak c #204410",
+"an c #204418",
+"#W c #205d08",
+"ac c #206910",
+"#j c #207110",
+"#V c #208910",
+"am c #294818",
+"ap c #294c18",
+"aq c #294c20",
+"#I c #296108",
+".R c #296908",
+".6 c #296910",
+"#r c #296d10",
+"#c c #297110",
+".i c #297508",
+".J c #297510",
+".o c #297910",
+"#P c #299518",
+"ao c #314c20",
+"#C c #316d10",
+".7 c #317910",
+"#Q c #317d10",
+"#n c #319510",
+"#b c #319518",
+"#N c #31aa10",
+"#d c #397920",
+"#1 c #397d20",
+"#A c #399518",
+".G c #39a118",
+"#y c #39aa18",
+"#g c #417d18",
+"#E c #418d29",
+".F c #41a118",
+"#J c #41a510",
+".E c #41a520",
+".9 c #41aa18",
+".U c #41aa29",
+"#m c #41b610",
+"#e c #4a7d29",
+".5 c #4a8120",
+"#R c #4a8929",
+"#X c #4a8931",
+"#D c #4a9129",
+"#K c #4a9131",
+"#s c #4a9d20",
+".D c #4aa518",
+".H c #4aaa29",
+".L c #4aae29",
+"#. c #4ab618",
+"#O c #4ab620",
+".V c #4aba18",
+".P c #4aba20",
+"#5 c #4aba29",
+".n c #527d41",
+"#f c #529129",
+".3 c #52a529",
+".M c #52aa20",
+".Q c #52aa29",
+".N c #52b239",
+".8 c #52b618",
+".2 c #52b629",
+"#4 c #52ba29",
+".O c #52be29",
+".z c #5a7d41",
+".h c #5a814a",
+".4 c #5a854a",
+"#Z c #5ac231",
+".W c #5aca31",
+".c c #62814a",
+".1 c #62be39",
+".0 c #62ca31",
+"## c #62ce31",
+".Z c #62ce39",
+"#x c #6abe5a",
+".Y c #6ad639",
+"#t c #73ae52",
+"#9 c #73ce39",
+"#U c #73d241",
+"#a c #73d641",
+".X c #73da41",
+".v c #7bbe52",
+".T c #7bbe62",
+".w c #7bc25a",
+"#z c #7bd64a",
+"#6 c #7bd652",
+".u c #83c25a",
+"#H c #83ca62",
+"a. c #83d64a",
+"#7 c #8bbe73",
+"#M c #8bc273",
+"#8 c #8bca6a",
+"#G c #8bce73",
+"a# c #8bde5a",
+"#F c #94c67b",
+"#l c #94c68b",
+".t c #94d66a",
+"#T c #9cce83",
+".K c #a4ca8b",
+".S c #a4ce94",
+"#3 c #a4da94",
+".I c #acc294",
+".y c #acc694",
+".m c #acc69c",
+"#u c #acd294",
+"#Y c #acde94",
+".g c #b4d69c",
+"#w c #b4e2a4",
+".C c #bde2a4",
+".s c #bde6a4",
+".x c #bde6ac",
+".f c #cde2c5",
+".d c #d5e2c5",
+"#2 c #d5e6c5",
+".q c #d5e6cd",
+"#h c #dee6d5",
+"#k c #deeede",
+".l c #e6eede",
+".k c #e6eee6",
+".B c #e6f2de",
+".r c #eeeee6",
+".e c #eef2e6",
+"#L c #eef6ee",
+"#S c #f6f6ee",
+".p c #f6faf6",
+".j c #fffaff",
+".A c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.#.a.#.aQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.b.#.c.d.e.f.g.h.b.#.bQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt.#.a.i.j.k.e.l.e.k.e.f.m.n.a.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.b.#.o.p.q.r.s.t.u.v.w.t.x.r.e.y.z.#QtQtQtQt",
+"Qt.aQtQtQtQtQtQtQt.a.i.A.B.C.t.w.D.E.F.E.G.E.H.w.C.e.I.h.#QtQtQt",
+"Qt.#.bQtQtQtQtQt.b.J.A.B.K.v.L.F.M.N.O.P.O.N.Q.L.u.C.e.y.bQtQtQt",
+"Qt.a.R.aQtQtQt.a.i.A.B.S.T.E.U.V.W.X.Y.X.Z.0.1.2.3.w.C.e.4.aQtQt",
+"Qt.#.5.6.bQt.b.7.A.B.S.8.9#.###a#b#c.J#c.J#c#d#e#f.2.u.t.e.#QtQt",
+"Qt.a#g#h#i.a#j.p#k#l#m.9.W#a#n#o#p.a.#.a.#.a#q#o#p#r#s#t#u#vQtQt",
+"Qt.#.5.q.k.n.k#w#x#.#y#z#A#p#o.#.bQtQtQtQtQt.b.##B#p#C#D.u.r.bQt",
+"Qt.a#E.k#F#G#H#H#m#y#z#n#p.a.#QtQtQtQtQtQtQtQtQt.##B#p#I#J.g.#Qt",
+"Qt.##K#L#M#.#y#N#O#z#P#p.bQtQtQtQtQtQtQtQtQtQtQtQt.##B#p#Q.v.bQt",
+"Qt.a#R#S#T#O#N#O#U#V#p.aQtQtQtQtQtQtQtQtQtQtQtQtQt.a#q#B#W#J.#Qt",
+"Qt.##X#L#Y#O#y#Z###0.bQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.b#B#o#I.bQt",
+"Qt.a#1#2#3#4#O#5#O#6#i.aQtQtQtQtQtQtQtQtQtQtQtQtQtQt.##B#q#o.#Qt",
+"Qt.#.6#7#8#Z#9a.a##Za..6.bQtQtQtQtQtQtQtQtQtQtQtQtQt.#aa#B.#QtQt",
+"Qt.aabac#iac#iac#iac#i.5.R.aQtQtQtQtQtQtQtQtQtQtQt.#adaeaf.#QtQt",
+"Qt.#.b.#.b.#.b.#.b.#.b.#.b.#.bQtQtQtQtQtQtQtQtQtQt.#agae.#QtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ahaiah.#QtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.##v#vaj.#QtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#akalak.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#amanam.#QtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#aoap.#.#QtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#aq.#.#.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image25_data = {
+"32 32 41 1",
+". c None",
+"# c #000000",
+"L c #313031",
+"M c #313431",
+"K c #414041",
+"J c #4a4c4a",
+"H c #524c52",
+"D c #5a595a",
+"I c #736d73",
+"G c #737173",
+"z c #838183",
+"y c #a4a1a4",
+"A c #c5be00",
+"E c #c5c6c5",
+"s c #cdc629",
+"q c #cdc631",
+"C c #cdc6cd",
+"j c #cdca18",
+"t c #cdca31",
+"k c #cdca39",
+"x c #d5ce18",
+"c c #d5d208",
+"F c #dedade",
+"B c #dedede",
+"a c #ffff00",
+"e c #ffff08",
+"h c #ffff18",
+"b c #ffff29",
+"i c #ffff41",
+"n c #ffff4a",
+"w c #ffff52",
+"d c #ffff5a",
+"f c #ffff7b",
+"g c #ffff83",
+"l c #ffffa4",
+"u c #ffffac",
+"m c #ffffb4",
+"o c #ffffc5",
+"p c #ffffd5",
+"v c #ffffde",
+"r c #ffffff",
+"........................#.......",
+".......................#a#......",
+".......................#a#......",
+".......................#b#......",
+"..................##..#cdc#..##.",
+".................#ae###fgf###ea#",
+"..................#hijklmlkjih#.",
+"...................#nflopolfn#..",
+"....................#qmprpms#...",
+"....................#tuvrvut#...",
+"...................#wflovolfw#..",
+"..................#eixqlulqxie#.",
+".................#aa###wdw###aa#",
+"................#r##yz#AbA#..##.",
+"...............#rBCyzD##a#......",
+"..............#rBEyzD#.#a#......",
+".............#rBCyzD#..#a#......",
+"............#rBEyzD#....#.......",
+"...........#rBCyzD#.............",
+"..........#FzEyzD#..............",
+".........#FzGHzD#...............",
+"........#FzIJKL#................",
+".......#FzGHKM#.................",
+"......#FzIJKL#..................",
+".....#FzGHKM#...................",
+"....#FzIJKL#....................",
+"...#FzGHKM#.....................",
+"..#FzIJKL#......................",
+".#FzGHKM#.......................",
+"#FzIJKL#........................",
+"FzGHKM#.........................",
+"zIJKL#.........................."};
+
+static String[] image26_data = {
+"34 34 196 2",
+"Qt c None",
+".# c #000000",
+".a c #000400",
+"#t c #002431",
+"#Y c #002839",
+"#2 c #00507b",
+"aV c #080400",
+".f c #080408",
+"aR c #080808",
+"#u c #082839",
+"#F c #083041",
+"#K c #08304a",
+"#J c #083452",
+"#h c #083852",
+".K c #083c52",
+".L c #083c5a",
+".J c #08405a",
+"ah c #08486a",
+"ay c #085073",
+"#3 c #086194",
+"#l c #0899c5",
+"#z c #0899cd",
+"#a c #089dcd",
+"a8 c #100c08",
+".V c #10405a",
+"au c #10486a",
+"aC c #10507b",
+"#M c #10659c",
+"#4 c #10699c",
+"#N c #1071ac",
+"#P c #1081b4",
+"## c #10a1cd",
+".b c #181818",
+"ai c #185983",
+"#O c #1879b4",
+"#w c #1885b4",
+"#x c #1885bd",
+"#y c #1891bd",
+".h c #201808",
+".t c #201810",
+"b# c #201c10",
+"aj c #20618b",
+"ak c #20658b",
+"#A c #2081a4",
+"#S c #2085ac",
+"ba c #292010",
+"#Z c #29556a",
+"#5 c #29658b",
+"av c #296d94",
+"al c #29759c",
+"a. c #2989b4",
+"an c #298dac",
+"#T c #298db4",
+"#B c #2991b4",
+"aL c #313031",
+".B c #315d73",
+"#Q c #31719c",
+"#8 c #31759c",
+"#6 c #3175a4",
+"#7 c #3179a4",
+"am c #317dac",
+"#R c #3181a4",
+"#9 c #3181ac",
+"#b c #31aad5",
+"#E c #397594",
+".Z c #39aed5",
+"aH c #413c41",
+"#m c #4191ac",
+"#C c #4191b4",
+".0 c #41aed5",
+"#c c #41b2de",
+"#U c #4a9dbd",
+"a# c #4aa1c5",
+"bb c #523c20",
+"#n c #52a1bd",
+"#o c #52a5c5",
+"aQ c #6285a4",
+"a6 c #6a656a",
+".w c #6a696a",
+".s c #6a6d6a",
+".1 c #6ac2de",
+"a1 c #736d6a",
+"#r c #737173",
+"a5 c #737573",
+"aK c #7395ac",
+"#d c #73aabd",
+"a7 c #7b757b",
+"#i c #7b797b",
+"#G c #7b7d7b",
+"#D c #7bb6cd",
+"ao c #7bbacd",
+"a9 c #837d7b",
+"a2 c #837d83",
+".C c #838183",
+"aM c #838583",
+".2 c #83cade",
+".S c #83cae6",
+".R c #83cee6",
+"a3 c #8b8583",
+"#j c #8b858b",
+"#s c #8b898b",
+".8 c #8b8d8b",
+"#q c #8bc2d5",
+".v c #948d94",
+".x c #949194",
+"#. c #949594",
+"ag c #94aabd",
+".3 c #94becd",
+"#f c #94c2d5",
+"#p c #94c6d5",
+"#e c #94c6de",
+".G c #94d6e6",
+".F c #94d6ee",
+".D c #9c959c",
+"aW c #9c9994",
+".7 c #9c999c",
+".9 c #9c9d9c",
+"aG c #9cb2c5",
+"#0 c #9cc2cd",
+".H c #9cd6ee",
+"aS c #a49d9c",
+".X c #a49da4",
+".p c #a4a1a4",
+".u c #a4a5a4",
+"#V c #a4cade",
+".4 c #a4cede",
+"ac c #a4cee6",
+"#g c #a4d2de",
+"b. c #aca5a4",
+".r c #aca5ac",
+".W c #acaaac",
+"aq c #acaeac",
+".E c #b4aeac",
+".k c #b4b2b4",
+".m c #b4b6b4",
+".6 c #b4ced5",
+"a0 c #bdb6b4",
+"ae c #bdb6bd",
+"aY c #bdbab4",
+".Q c #bdbabd",
+".O c #bdbebd",
+"az c #bdcad5",
+"aa c #bdd2e6",
+".T c #bdd6de",
+".5 c #bddaee",
+"aP c #c5bebd",
+".Y c #c5bec5",
+".N c #c5c2c5",
+".g c #c5c6c5",
+"#H c #c5c6cd",
+"aD c #c5d2de",
+"#W c #c5daee",
+"#1 c #c5deee",
+".I c #c5eaf6",
+".y c #c5eaff",
+"aT c #cdc2c5",
+"#L c #cdc6cd",
+"aX c #cdcac5",
+"#v c #cdcacd",
+"aO c #cdcecd",
+"#I c #cdd6de",
+"aJ c #d5cecd",
+"#k c #d5ced5",
+".P c #d5d2d5",
+"a4 c #d5d6d5",
+"aw c #d5deee",
+"aF c #ded6d5",
+"aI c #ded6de",
+"aE c #dedad5",
+".M c #dedade",
+"aZ c #dedede",
+"#X c #dee2e6",
+"ab c #dee2ee",
+"aN c #e6dade",
+"aB c #e6dede",
+"aU c #e6dee6",
+".q c #e6e2e6",
+".n c #e6e6e6",
+"ap c #e6e6ee",
+".A c #e6f2f6",
+"ar c #eee6e6",
+".o c #eee6ee",
+"ax c #eeeae6",
+".i c #eeeaee",
+".j c #eeeeee",
+"ad c #eeeef6",
+".U c #eef2f6",
+".z c #eef2ff",
+"aA c #f6eeee",
+".l c #f6eef6",
+"at c #f6f2f6",
+".d c #f6f6f6",
+"af c #fff6f6",
+"as c #fff6ff",
+".c c #fffaff",
+".e c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.a.#QtQtQtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.b.c.d.e.#.f.#QtQtQtQtQtQtQtQt.#.g.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.h.i.i.j.c.d.e.#.a.#QtQtQtQt.#.g.k.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.i.i.i.i.i.l.c.d.e.#.f.#.#.g.m.k.#.eQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQt.#.i.i.i.i.i.i.n.o.j.c.d.#.g.k.p.k.#.#.#.a.#.#QtQtQtQt",
+"QtQtQtQtQtQtQt.#.i.i.i.i.i.n.i.n.o.q.#.g.m.p.r.k.m.k.r.s.#.#QtQtQtQt",
+"Qt.#.#.#QtQtQt.t.i.i.o.i.n.o.n.o.q.#.g.k.p.u.p.u.p.v.w.#.x.x.#QtQtQt",
+".#.y.z.A.#.#.#.B.i.i.i.o.i.n.o.q.#.g.m.p.r.p.r.p.v.s.#.C.D.E.aQtQtQt",
+".#.F.G.H.I.z.A.J.K.L.n.o.n.o.M.#.N.k.p.u.p.u.p.v.w.#.C.D.O.P.Q.aQtQt",
+"Qt.#.R.S.F.H.H.T.z.U.V.L.B.#.#.m.W.X.r.p.r.p.v.s.#.s.D.Y.P.P.Y.#QtQt",
+"Qt.#.Z.0.1.S.2.3.4.5.6.z.A.L.7.D.8.7.9.p.p.v.w.#.C#..O.P.P.P.Q.aQtQt",
+"Qt.####a#b.Z#c#d#e#f.3#g.5.U#h#i#j.x.9.p.v.s.#.C.D.Y.P.P.P#k.Q.#QtQt",
+"QtQt.##l#a###a#m#n#o#d#p#q.5.K#r#i#j.x#s#t#u#s.x.m#v#v#v#v#k.m.aQtQt",
+"QtQt.##w#x#y#z#A#B#B#C#o#o#D#E#h#F#G#i#t#H#I#J#K.Q.O.N.g#L#v.Q.#QtQt",
+"QtQt.##M#N#O#P#Q#R#S#A#B#T#U#V#W#X#h#Y#Z#0.5#1.U.K.O.Q.O.O#v.m.aQtQt",
+"QtQtQt.##2#3#4#5#6#7#8#9a.#T#B#Ba##Vaaab#f#facad.V.k.k.kae#Lae.#QtQt",
+"QtQtQt.#.qafagahaiajak#8alam#R#San#B#T#U#n#oao#pap.L.Waqaq.N.k.aQtQt",
+"QtQtQt.#arafasatatagauaiajav#6#7am#9a.#T#B#Ba##oaw.L.r.u.W.Q.k.#QtQt",
+"QtQtQtQt.#.natat.j.jax.oagayaiajav#8alam#R#San#Baz.J.9.p.p.m.W.aQtQt",
+"QtQtQtQt.#.qat.iaA.i.i.naraBaBagaCaiajav#6#7am#9a.aD.J.7.Xaq.W.#QtQt",
+"QtQtQtQt.#arax.i.nar.q.qaBaBaEaF.P.Pagayaiajav#8alaG.K.D#..u.u.#QtQt",
+"QtQtQtQtQtaHar.qar.q.qaBaB.MaI.PaFaJ#k#v#vagaCaiajaK.V.x.x.D.X.#QtQt",
+"QtQtQtQtQtaLaM.N.P.MaEaNaFaF.P.PaOaO#v#v.N.NaPaPagayaQ.##s.x#..aQtQt",
+"QtQtQtQtQtQt.f.aaRaS#v.PaF.P.PaJaJ#v#v.gaTaPaP.QaU#s#r.##s#s.x.#QtQt",
+"QtQtQtQtQtQtQtQtQtaV.aaVaW.YaX#v.g#v.N.NaPaPaYaZ#s.k.s.#.CaM.C.aQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQt.f.aaR.x.Q.N.NaPaP.QaU#sa0aF#ja1.#a2a2aVQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaV.aaV#s.kaY.Ma3.ka4a3.W#r.#a2a5aRQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.aaRa6.W.Ma3.WaIa1.##ia7a8QtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaV.aaVa9.Pa9b.a1.#.sb#QtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.aaR#i#r.##rbaQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtaV.aaVbbQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image27_data = {
+"16 16 37 1",
+". c None",
+"j c #000000",
+"a c #292829",
+"b c #292c29",
+"# c #312c31",
+"B c #313031",
+"g c #393839",
+"e c #4a484a",
+"f c #525552",
+"G c #6a6d6a",
+"D c #737173",
+"u c #737573",
+"H c #838183",
+"E c #838583",
+"p c #8b858b",
+"A c #8b898b",
+"v c #8b8d8b",
+"x c #949194",
+"w c #949594",
+"s c #9c959c",
+"y c #9c9d9c",
+"o c #a4a1a4",
+"q c #a4a5a4",
+"r c #aca5ac",
+"h c #acaaac",
+"k c #acaeac",
+"t c #b4aeb4",
+"n c #b4b2b4",
+"i c #b4b6b4",
+"d c #bdb6bd",
+"c c #bdbabd",
+"m c #bdbebd",
+"F c #c5c200",
+"l c #cdc6cd",
+"C c #ffff00",
+"z c #ffffc5",
+"I c #ffffff",
+"....#...........",
+"....ab..........",
+"....#c#.........",
+"....acdb........",
+"eeefgchi#.......",
+".jklmnoonb......",
+"..jphqrsot#.....",
+"...juvwwxyjz....",
+"....juAjzvBC#jz.",
+".....jDEjCFCFC..",
+"......jGHFzzzF#.",
+"......jzCCzIzCCz",
+"........jFzzzFj.",
+"........jCFCFC..",
+".......jz.jCjjz.",
+"..........jz...."};
+
+static String[] image28_data = {
+"16 16 90 2",
+"Qt c None",
+".7 c #181810",
+".w c #200c00",
+".K c #201000",
+".D c #291008",
+".W c #312c20",
+".R c #313031",
+".X c #4a444a",
+".2 c #523c31",
+".Q c #5a4831",
+".8 c #5a5052",
+".# c #5a595a",
+"#d c #73695a",
+".V c #835539",
+".P c #8b5531",
+".0 c #94796a",
+".9 c #9c9d94",
+".C c #a44800",
+".J c #a44808",
+".s c #a44c00",
+".1 c #a47152",
+".6 c #a49583",
+"#e c #a4958b",
+".3 c #b4b2b4",
+"#p c #bda17b",
+"#b c #bda583",
+".Y c #bdaa94",
+"#f c #bdb6a4",
+".U c #c57d5a",
+"#x c #c5a17b",
+"#j c #c5a583",
+"#w c #c5aa83",
+"#v c #c5aa8b",
+".4 c #c5aa94",
+"#u c #c5b294",
+"#t c #c5b69c",
+"#r c #c5beac",
+".e c #cd7d41",
+".O c #cd7d62",
+".a c #cd8141",
+"#s c #cdbaac",
+"#. c #cdc2bd",
+"#q c #cdc6bd",
+".I c #d56529",
+".H c #d57141",
+".j c #d5ced5",
+".u c #de9162",
+".Z c #ded2c5",
+"## c #ded6d5",
+".d c #dedede",
+"#c c #e6cab4",
+"#n c #e6d2b4",
+".m c #e6d6cd",
+".h c #e6dee6",
+".c c #e6e2e6",
+".r c #ee7908",
+".S c #eeb694",
+"#o c #eeceac",
+"#i c #eed2b4",
+"#a c #eedabd",
+"#h c #eedac5",
+".p c #eedacd",
+".t c #eedad5",
+".L c #eee2de",
+".o c #f67d08",
+".A c #f69562",
+".G c #f6b694",
+".E c #f6ba9c",
+".M c #f6d2b4",
+"#g c #f6e2cd",
+"#m c #f6e6d5",
+"#l c #f6eade",
+"#k c #f6eee6",
+".x c #f6eef6",
+".B c #ff8108",
+".v c #ff8508",
+".l c #ff8900",
+".k c #ff8910",
+".g c #ff9110",
+".f c #ffc68b",
+".n c #ffca8b",
+".q c #ffca94",
+".T c #ffcab4",
+".b c #ffce8b",
+".N c #ffd6bd",
+".y c #ffdac5",
+".z c #ffe2cd",
+".F c #ffe6cd",
+".5 c #fff6f6",
+".i c #ffffff",
+"QtQt.#.#.#.#.#.#.#.#.#.#.#.#.a.b",
+"QtQt.#.c.d.c.d.c.d.c.d.cQt.e.f.g",
+"QtQt.#.h.i.i.i.h.i.i.i.j.e.f.k.l",
+"QtQt.#.c.i.i.i.c.i.i.m.e.n.k.l.o",
+"QtQt.#.h.c.h.c.h.i.p.e.q.k.l.r.s",
+"QtQt.#.c.i.i.i.c.t.u.f.v.l.r.s.w",
+"QtQt.#.h.i.i.i.x.y.z.A.B.r.C.DQt",
+"QtQt.#.c.d.c.d.E.F.G.H.I.J.KQtQt",
+"QtQt.#.h.i.i.L.M.N.O.P.Q.D.RQtQt",
+"QtQt.#.c.i.i.S.T.U.V.W.X.Y.RQtQt",
+"QtQt.#.h.c.Z.0.1.2.#.3.3.4.RQtQt",
+"QtQt.#.c.5.6.7.8.9#.###a#b.RQtQt",
+"QtQt.#.h#c#d#e#f#g#h#a#i#j.RQtQt",
+"QtQt.#.c#k#l#m#g#h#a#n#o#p.RQtQt",
+"QtQt.##.#q#r#s#t#u#v#w#x#x.RQtQt",
+"QtQt.#.R.R.R.R.R.R.R.R.R.R.RQtQt"};
+
+static String[] image29_data = {
+"16 16 9 1",
+". c None",
+"# c #000000",
+"b c #008100",
+"d c #00c200",
+"f c #830000",
+"g c #838100",
+"c c #c50000",
+"a c #c5ffc5",
+"e c #ff0000",
+"................",
+"........##......",
+".......#ab#.....",
+"......#cdbb#....",
+".....#ecbbb#....",
+"....#ebdcbbb#...",
+"...eccbdbcdbb#..",
+"..ecbdcdddbbb#..",
+".ccbdaacbbdbbb#.",
+".cfbgddacdbdbba#",
+".ccf#dddaaddbab#",
+".ec#.##dddadab#.",
+".ec#...#dddab#..",
+".ec#....##ab#...",
+"..e#......##....",
+"..e............."};
+
+static String[] image30_data = {
+"22 22 14 1",
+". c None",
+"# c #000000",
+"k c #313031",
+"d c #830000",
+"j c #838183",
+"h c #acaaac",
+"i c #acaeac",
+"g c #b4aeb4",
+"b c #cd0000",
+"f c #cdcacd",
+"c c #d50000",
+"l c #ff0000",
+"a c #ff8183",
+"e c #ffffff",
+"...................##.",
+"..................#ab#",
+".................#abc#",
+"................#abcd#",
+"...####........#abcd#.",
+"..#eeee#......#abcd#..",
+"..#effg#.....#abcd#...",
+"..#effh#....#abcd#....",
+"..#effg#...#abcd#.....",
+"..#effh#..#abcd#......",
+"..#efhg#.#abcd#.......",
+"..#ehihj#fbcd#........",
+"...#ehjk#fgd#.........",
+"...#eij#fijj#..ddddd..",
+"....#j#fghj#..dd###d#.",
+"...#effihj#dddd#...d#.",
+"..#effghj#.####....d#.",
+".#effihj#.........d#..",
+".#ffghj#.........d#...",
+".efihj#.........d#....",
+"dljjj#.........d#.....",
+"ld.##..........d#....."};
+
+static String[] image31_data = {
+"22 22 73 2",
+"Qt c None",
+".b c #000000",
+".e c #080008",
+".j c #080408",
+".l c #083452",
+".a c #083c5a",
+".V c #0889ac",
+"#d c #0891b4",
+".T c #0895bd",
+".E c #089dc5",
+"#e c #103452",
+".k c #103852",
+".# c #10385a",
+".c c #104062",
+".0 c #10658b",
+"#. c #106994",
+"#b c #106d94",
+".U c #1089ac",
+".N c #1091bd",
+".O c #1095bd",
+".W c #1099c5",
+".P c #109dc5",
+".D c #10aecd",
+"#f c #10b2d5",
+".7 c #10c2de",
+".m c #18405a",
+"#a c #186994",
+"#c c #18719c",
+".Z c #18a1c5",
+".8 c #18aed5",
+".9 c #18c2de",
+".6 c #18c6e6",
+".R c #204062",
+"## c #20759c",
+"#g c #20a5cd",
+".2 c #20c6de",
+".v c #294c62",
+".M c #29aed5",
+".5 c #29c6de",
+".G c #31556a",
+".g c #317d9c",
+".d c #3181a4",
+".J c #41bede",
+".3 c #41d2de",
+".L c #4ac2de",
+".4 c #4adeee",
+".Y c #4ae2ee",
+".X c #5ac2de",
+".F c #5ac6de",
+".K c #62c2de",
+".t c #62c6e6",
+".C c #6abede",
+".f c #83bad5",
+".I c #83bed5",
+".B c #83cae6",
+".x c #94cede",
+".1 c #94cee6",
+".n c #9cc6de",
+".h c #9ccade",
+".o c #accede",
+".s c #acdaee",
+".A c #b4deee",
+".Q c #bddeee",
+".y c #bde2ee",
+".r c #c5e2f6",
+".w c #cde2ee",
+".z c #d5eaf6",
+".S c #deeaf6",
+".u c #deeef6",
+".q c #deeeff",
+".H c #e6eeff",
+".i c #e6f2ff",
+".p c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.a.bQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.c.d.eQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.a.f.g.bQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.c.h.i.d.jQtQtQtQtQtQtQt",
+"QtQtQt.k.l.k.l.k.l.m.a.n.o.p.g.bQtQtQtQtQtQt",
+"QtQtQt.k.n.q.p.p.p.p.r.s.t.u.p.d.eQtQtQtQtQt",
+"QtQtQt.v.w.x.y.z.A.B.C.D.E.F.u.p.g.bQtQtQtQt",
+"QtQtQt.G.H.I.J.K.L.D.M.N.O.P.t.Q.i.d.eQtQtQt",
+"QtQtQt.R.S.B.T.U.V.O.E.N.T.W.X.Y.Z.0.bQtQtQt",
+"QtQtQt.l.S.1.2.3.4.5.6.7.8.9.Y.Z#..bQtQtQtQt",
+"QtQtQt.k###a.0#a#b#c#d.W.7.Y.Z.0.bQtQtQtQtQt",
+"QtQtQt#e.b.b.e.b.b.b.c#f.Y.Z#..bQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.a#g.Z.0.bQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.c.d#..bQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.a.0.bQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.c.bQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.aQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+static String[] image32_data = {
+"22 22 9 1",
+". c None",
+"b c #000000",
+"a c #000083",
+"g c #830000",
+"c c #8381ff",
+"f c #c50000",
+"# c #c5c2ff",
+"d c #ffc2c5",
+"e c #ffffff",
+"................#ab...",
+"...............#ccab..",
+"..............#ccccab.",
+".............#ccccccab",
+"............#cccccccca",
+"...........#ccccccccca",
+"..........#cccccccccab",
+".........#cccccccccab.",
+"........#cccccccccab..",
+".......deecccccccab...",
+"......dffeecccccab....",
+".....dffffeecccab.....",
+"....dffffffeecab......",
+"...dffffffffeab.......",
+"..dfffffffffgb........",
+".dfffffffffgb.........",
+"dddfffffffgb..........",
+"ddddfffffgb...........",
+".ddddfffgb............",
+"..ddddfgb.............",
+"...dddgb..............",
+"....dgb..............."};
+
+static String[] image33_data = {
+"22 22 113 2",
+"Qt c None",
+".H c #000000",
+"#p c #000408",
+".S c #000410",
+".n c #000c18",
+".w c #001018",
+"#u c #080408",
+".3 c #080808",
+".6 c #080810",
+".1 c #080c18",
+".i c #081020",
+".G c #081c39",
+".d c #08244a",
+".x c #082852",
+".E c #08345a",
+".A c #0879b4",
+".X c #0879bd",
+".p c #0889cd",
+".F c #10345a",
+".a c #10386a",
+".y c #103c73",
+".D c #104473",
+".0 c #104c83",
+".R c #10508b",
+"#l c #105594",
+".N c #1075bd",
+".C c #1079bd",
+".t c #1079c5",
+".W c #107dc5",
+".Y c #1085c5",
+".c c #183862",
+".# c #183c73",
+".5 c #188dcd",
+".B c #18a1d5",
+".O c #18a5de",
+"#g c #202020",
+"#T c #202420",
+".b c #203c62",
+".r c #207dac",
+".v c #207db4",
+".Q c #2085c5",
+"#U c #292429",
+"#A c #292829",
+"#S c #292c29",
+".s c #293c6a",
+".I c #312c31",
+".U c #316da4",
+".m c #317db4",
+"#B c #393839",
+"#G c #393c39",
+".J c #3971a4",
+".q c #41b6de",
+".Z c #41bee6",
+".u c #41c2e6",
+".P c #4ac2ee",
+".M c #52a5d5",
+"#F c #625d62",
+"#h c #626162",
+".h c #6295bd",
+".k c #62aede",
+"#r c #6a656a",
+"#C c #737573",
+"#I c #7b757b",
+"#i c #838183",
+"#w c #838583",
+"#v c #8b858b",
+"#. c #8b898b",
+"#E c #948d94",
+"#n c #949594",
+".l c #94bee6",
+"#x c #9c959c",
+"## c #9c999c",
+"#Q c #9c9d9c",
+"#P c #a49da4",
+"#z c #a4a1a4",
+".e c #a4c2e6",
+"#t c #aca5ac",
+"#j c #acaaac",
+"#R c #acaeac",
+".L c #acd2f6",
+"#N c #b4aeb4",
+"#O c #b4b2b4",
+"#L c #b4b6b4",
+"#q c #bdb6bd",
+"#f c #bdbabd",
+"#K c #bdbebd",
+"#m c #c5bac5",
+"#J c #c5c2c5",
+"#M c #c5c6c5",
+".z c #c5d6f6",
+"#y c #cdc6cd",
+"#D c #cdcacd",
+"#a c #cdcecd",
+".4 c #d5ced5",
+".T c #d5d2d5",
+"#o c #d5d6d5",
+".g c #d5e2f6",
+"#b c #ded6de",
+".7 c #dedade",
+"#d c #dedede",
+"#c c #deeaf6",
+"#k c #e6dae6",
+"#e c #e6dee6",
+"#s c #e6e2e6",
+".2 c #e6e6e6",
+".K c #e6eaff",
+".j c #e6eeff",
+".9 c #eee6ee",
+".8 c #eeeaee",
+".f c #eeeeff",
+"#H c #f6f2f6",
+".o c #f6f2ff",
+".V c #ffffff",
+"QtQtQtQtQtQtQtQt.#.a.#.b.c.dQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.a.e.f.g.h.iQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.j.k.l.m.nQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.a.o.p.q.r.iQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.s.j.t.u.v.wQtQtQtQtQtQtQtQt",
+"QtQtQtQt.x.y.a.b.b.z.A.B.C.D.E.F.G.HQtQtQtQt",
+"QtQtQtQt.I.x.J.K.L.M.N.C.O.P.Q.R.S.HQtQtQtQt",
+"QtQtQtQt.H.T.x.U.V.W.X.Y.Z.Q.0.1.2.HQtQtQtQt",
+"QtQtQt.3.4.4.T.x.J.V.5.P.Q.R.6.7.8.9.HQtQtQt",
+"QtQtQt.H#.###a#b.x.U#c.Q.0.6#d#e#d#f.HQtQtQt",
+"QtQt#g#h#i#j#k.7#e.x#l.R.1.7#e#d.9#f#m.HQtQt",
+"QtQt.H#h#n#o.7.7.7#e.x#p.7.7.7.7#d#e#q.HQtQt",
+"Qt.H#r#h.4.4#j.T#e#d.T#s#e.T#t#a#b#e#m#f#uQt",
+"Qt.H#h#h#v#v#w.7#d.T#x#y.7#b#w#.#a#z#q#f.HQt",
+".H#A#B#B#B#C#v#D.T#.#E#x.4#d#v#v#F#B#B#G#B.H",
+".H.V#H#H#H#B#w.4#w#v#w#v##.4#w#.#B.V#H#H#H.H",
+".H#H.V.V.V#B#v#w#v#v#v#w#v#v#v#w#B.4.4#a#D.H",
+".H.9#s#s.7#I#B#B#B#B#B#B#B#B#B#B#C#J#f#K#L.H",
+".H.7#b.T.T#D#D#y#D#y#D#y#D#y#D#M#q#N#N#j#j.H",
+".H#a#J#J#K#f#L#q#L#q#L#q#L#q#L#O#z#P###Q#n.H",
+".H#R#t#z#t#####x###x###x###x###n#E#w#w#i#i.H",
+"Qt#S#A#S#A#A#T#A#U#A#T#A#U#A#T#A#T#U#g#T#gQt"};
+
+static String[] image34_data = {
+"16 16 4 1",
+". c None",
+"# c #000000",
+"b c #9cfa9c",
+"a c #9cff9c",
+"................",
+"................",
+"..############..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image35_data = {
+"16 16 4 1",
+". c None",
+"# c #000000",
+"b c #00beff",
+"a c #00c2ff",
+"................",
+"................",
+"..############..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image36_data = {
+"16 16 5 1",
+". c None",
+"# c #000000",
+"b c #4181b4",
+"c c #4a81b4",
+"a c #4a85bd",
+"................",
+"................",
+"..############..",
+"..#ababababab#..",
+"..#cacacacaca#..",
+"..#ababababab#..",
+"..#cacacacaca#..",
+"..#ababababab#..",
+"..#cacacacaca#..",
+"..#ababababab#..",
+"..#cacacacaca#..",
+"..#ababababab#..",
+"..#cacacacaca#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image37_data = {
+"16 16 4 1",
+". c None",
+"# c #000000",
+"b c #b4e2e6",
+"a c #b4e2ee",
+"................",
+"................",
+"..############..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..#ababababab#..",
+"..#aaaaaaaaaa#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image38_data = {
+"16 16 4 1",
+". c None",
+"# c #000000",
+"b c #f6a562",
+"a c #ffa562",
+"................",
+"................",
+"..############..",
+"..#ababababab#..",
+"..#bababababa#..",
+"..#ababababab#..",
+"..#bababababa#..",
+"..#ababababab#..",
+"..#bababababa#..",
+"..#ababababab#..",
+"..#bababababa#..",
+"..#ababababab#..",
+"..#bababababa#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image39_data = {
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #ff8d00",
+"................",
+"................",
+"..############..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..#aaaaaaaaaa#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image40_data = {
+"16 16 5 1",
+". c None",
+"# c #000000",
+"b c #cd5d5a",
+"c c #d55d5a",
+"a c #d55d62",
+"................",
+"................",
+"..############..",
+"..#ababababab#..",
+"..#bacabacaba#..",
+"..#ababababab#..",
+"..#cabacabaca#..",
+"..#ababababab#..",
+"..#bacabacaba#..",
+"..#ababababab#..",
+"..#cabacabaca#..",
+"..#ababababab#..",
+"..#bacabacaba#..",
+"..############..",
+"................",
+"................"};
+
+static String[] image41_data = {
+"100 100 587 2",
+"#u c #000000",
+"#Q c #000008",
+"a# c #000010",
+"aJ c #000018",
+"#t c #000400",
+"#P c #000408",
+"aw c #000410",
+"bu c #000418",
+"#s c #000800",
+"a9 c #000808",
+"dD c #000810",
+"be c #000c00",
+"et c #001000",
+"dE c #001400",
+"bi c #080000",
+"al c #080008",
+"aj c #080010",
+"bc c #080018",
+"#O c #080400",
+"ak c #080408",
+"a. c #080410",
+"a8 c #080418",
+"#N c #080800",
+"aa c #080808",
+"ax c #080810",
+"b4 c #080818",
+"dP c #080820",
+"bd c #080c00",
+"bg c #080c08",
+"ay c #080c10",
+"dQ c #080c18",
+"e9 c #080c20",
+"#9 c #081000",
+"eA c #081008",
+"am c #081400",
+"#r c #081800",
+"ex c #081c00",
+"bT c #100808",
+"eO c #100c00",
+"fl c #100c08",
+"a7 c #100c10",
+"eK c #101000",
+"gx c #101010",
+"cl c #101018",
+"bN c #101020",
+"ai c #101400",
+"f2 c #101410",
+"cs c #101800",
+"#R c #101c00",
+"aK c #102000",
+"bf c #102400",
+"#M c #181c00",
+"aI c #182000",
+"#b c #182400",
+"#a c #182800",
+"## c #182c00",
+"g4 c #202400",
+"gr c #202408",
+"fH c #202410",
+"a6 c #202800",
+"gy c #202808",
+"dr c #202c00",
+"bv c #203000",
+"#v c #203400",
+"fe c #203800",
+"do c #293000",
+"#c c #293400",
+"fJ c #293408",
+"a0 c #293800",
+"aP c #293c00",
+"eh c #294000",
+"cS c #313800",
+"ah c #313c00",
+"bM c #313c08",
+"aV c #314000",
+"#d c #314008",
+"cE c #314800",
+"d8 c #393400",
+"an c #393800",
+"c2 c #393c08",
+"dg c #394000",
+"e2 c #394008",
+"g7 c #394010",
+"av c #394400",
+"cm c #394408",
+"#L c #394410",
+"#q c #394800",
+"cr c #394808",
+"az c #394c00",
+"ev c #394c08",
+"f5 c #413400",
+"#. c #413c00",
+"b5 c #414808",
+"h# c #414810",
+"ey c #414c00",
+"#S c #414c08",
+"dI c #414c10",
+"bS c #415000",
+".9 c #415008",
+"#w c #415500",
+"e7 c #415510",
+"gW c #415900",
+"d9 c #4a4400",
+"cw c #4a5010",
+"c8 c #4a5518",
+"fm c #4a5900",
+"#f c #4a5908",
+"cD c #4a5910",
+"cg c #4a6110",
+"gk c #524c00",
+"#e c #525010",
+"bA c #525d08",
+"fI c #525d29",
+"hf c #526108",
+"cP c #526110",
+"g3 c #526118",
+"ch c #526120",
+"gQ c #526510",
+"eb c #526d08",
+"bj c #5a5d00",
+"eq c #5a5d08",
+"dd c #5a5d18",
+"gh c #5a6118",
+"gw c #5a6131",
+"b8 c #5a6510",
+"aH c #5a6518",
+"gd c #5a6520",
+"b9 c #5a6908",
+"#8 c #5a6910",
+"c1 c #5a6920",
+"f3 c #5a6d08",
+"g9 c #5a6d10",
+"dH c #5a6d18",
+"dC c #5a6d20",
+"f0 c #5a7110",
+"ab c #5a7118",
+"bL c #5a7120",
+"ff c #5a7518",
+"gI c #626510",
+"eP c #626939",
+"gc c #626d18",
+"eF c #626d20",
+"fo c #626d39",
+"ao c #627118",
+"bt c #627120",
+"fh c #627129",
+"el c #627510",
+"bk c #627518",
+"b. c #627520",
+"gU c #627900",
+"e5 c #627918",
+"dF c #627920",
+"cI c #6a6910",
+"ag c #6a6d18",
+".8 c #6a7118",
+"eL c #6a7139",
+"fx c #6a7529",
+"gq c #6a7531",
+"da c #6a7908",
+"fj c #6a7910",
+"bU c #6a7918",
+".7 c #6a7920",
+"dl c #6a7929",
+"fA c #6a7931",
+"fy c #6a7939",
+"#x c #6a7d10",
+"bh c #6a7d18",
+"ep c #6a7d20",
+"eE c #6a7d29",
+"eT c #6a7d31",
+"fr c #6a8118",
+"gf c #6a8120",
+"de c #737518",
+"f6 c #737520",
+"fV c #737920",
+"d# c #737d10",
+"cO c #737d20",
+"eX c #737d29",
+"ft c #737d39",
+"aW c #738120",
+"dZ c #738129",
+"dz c #738131",
+"aZ c #738520",
+"fX c #738529",
+"fa c #738531",
+"aA c #738929",
+"gD c #738931",
+"eg c #7b7931",
+"d4 c #7b7d20",
+"dO c #7b7d29",
+"dv c #7b7d31",
+"a5 c #7b8120",
+"e3 c #7b8131",
+"dR c #7b8139",
+"b3 c #7b8141",
+"ha c #7b8518",
+"es c #7b8520",
+"go c #7b8529",
+"gR c #7b8931",
+"bw c #7b8d20",
+"au c #7b8d29",
+"ck c #7b8d31",
+"gZ c #7b9118",
+"fc c #7b9129",
+"br c #7b9131",
+"dV c #837d31",
+"ek c #838120",
+"fu c #838139",
+"eB c #838141",
+"dY c #838531",
+"eI c #838539",
+"fM c #838541",
+"fB c #838918",
+"#g c #838929",
+"bs c #838939",
+"#K c #838941",
+"dq c #83894a",
+"e8 c #838d31",
+"bO c #839129",
+"bB c #839131",
+"dy c #839531",
+"bz c #839929",
+"#h c #839931",
+"bK c #839939",
+"#p c #8b8931",
+"gP c #8b8d29",
+"aO c #8b9931",
+"gE c #8b9d31",
+"#o c #8b9d39",
+"hb c #8ba129",
+"aQ c #8ba131",
+"dL c #8ba139",
+"gO c #8ba531",
+"g5 c #8ba539",
+"e1 c #949129",
+"aU c #949941",
+"ct c #949d20",
+"ds c #949d31",
+"ej c #949d39",
+".6 c #949d41",
+"fd c #94a110",
+"c. c #94a129",
+"cW c #94a510",
+"dM c #94a531",
+"c3 c #94a539",
+"bm c #94a541",
+"eD c #94a54a",
+"bJ c #94aa39",
+"dn c #94aa4a",
+"gl c #94ae29",
+"c0 c #94ae39",
+"e. c #94ae41",
+"cy c #94b200",
+"ec c #94b220",
+"f8 c #94b229",
+"em c #94b231",
+"#l c #94b600",
+"dK c #94b608",
+"dx c #94b610",
+"gp c #94ba00",
+"eR c #94ba08",
+"fP c #94ba10",
+"fg c #9c9939",
+"cn c #9c9d31",
+"bl c #9c9d4a",
+"ez c #9c9d52",
+"gF c #9ca139",
+"dT c #9ca541",
+"f9 c #9caa39",
+"ei c #9cae20",
+"aL c #9cae41",
+"g. c #9cb231",
+"gN c #9cb239",
+".5 c #9cb241",
+"bp c #9cb24a",
+"hg c #9cb608",
+"ew c #9cb610",
+"gX c #9cb620",
+".S c #9cb639",
+"ac c #9cb641",
+"#G c #9cba00",
+"a4 c #9cba08",
+"gV c #9cba10",
+".H c #9cba18",
+"cu c #9cba20",
+".R c #9cba39",
+"cv c #9cbe00",
+".w c #9cbe08",
+".z c #9cbe10",
+".A c #9cbe18",
+"aC c #9cbe20",
+"cX c #9cbe29",
+"cR c #9cc200",
+".n c #9cc208",
+".C c #9cc210",
+"#W c #9cc218",
+"e# c #9cc600",
+"cL c #9cc608",
+"g# c #9cc610",
+"#1 c #9cca08",
+"fD c #a4a531",
+"bq c #a4ae41",
+"gs c #a4ae52",
+"#y c #a4b231",
+"f4 c #a4b241",
+"#J c #a4b24a",
+"b6 c #a4b252",
+"cT c #a4b631",
+"fF c #a4b639",
+"eN c #a4b641",
+"dJ c #a4b64a",
+"dc c #a4b652",
+"b0 c #a4ba10",
+"ca c #a4ba20",
+"dX c #a4ba39",
+".U c #a4ba41",
+"eo c #a4ba4a",
+"d7 c #a4ba52",
+"fR c #a4be00",
+"c5 c #a4be08",
+"c7 c #a4be10",
+"d0 c #a4be18",
+"eJ c #a4be20",
+"d1 c #a4be29",
+".P c #a4be39",
+"d. c #a4be41",
+"du c #a4be4a",
+"aY c #a4c200",
+".u c #a4c208",
+".m c #a4c210",
+".s c #a4c218",
+".G c #a4c220",
+".M c #a4c229",
+"ee c #a4c231",
+"di c #a4c239",
+"eS c #a4c241",
+"d5 c #a4c24a",
+".1 c #a4c600",
+".g c #a4c608",
+".# c #a4c610",
+".c c #a4c618",
+".x c #a4c620",
+"ed c #a4c629",
+"cp c #a4c631",
+"fY c #a4ca00",
+".J c #a4ca08",
+".j c #a4ca10",
+".q c #a4ca18",
+"#Z c #a4ca20",
+"fN c #a4ce00",
+"#X c #a4ce08",
+"gj c #a4ce10",
+"cZ c #a4ce18",
+"dh c #aca54a",
+"gM c #acb241",
+"cf c #acb24a",
+"cF c #acb631",
+"#7 c #acb639",
+"eG c #acb641",
+"cx c #acb652",
+"ap c #acba39",
+"#i c #acba4a",
+"eM c #acba52",
+"fv c #acba5a",
+"#4 c #acbe08",
+"e4 c #acbe31",
+"f1 c #acbe39",
+"bW c #acbe41",
+"gG c #acbe4a",
+"dk c #acbe52",
+"bb c #acc200",
+"bQ c #acc208",
+"fT c #acc210",
+"ef c #acc218",
+"fq c #acc220",
+"bY c #acc229",
+"gH c #acc231",
+"#j c #acc239",
+"ci c #acc241",
+"ea c #acc24a",
+"dm c #acc252",
+"ba c #acc600",
+".E c #acc608",
+"#2 c #acc610",
+".B c #acc618",
+"gB c #acc620",
+"a2 c #acc629",
+"aX c #acc631",
+".N c #acc639",
+"#z c #acc641",
+"cN c #acc652",
+"cV c #acca00",
+"dG c #acca08",
+"#E c #acca10",
+".k c #acca18",
+"aN c #acca20",
+"#H c #acca29",
+".Z c #acca31",
+"by c #acca39",
+"#U c #acca41",
+".W c #acca4a",
+"eW c #acce00",
+".I c #acce08",
+"c6 c #acce10",
+"cK c #acce18",
+"#k c #acce29",
+"ge c #acce31",
+"cU c #acce39",
+"g1 c #acd208",
+"#0 c #acd218",
+"cM c #acd229",
+"dp c #b4b641",
+"bR c #b4ba52",
+"aG c #b4ba5a",
+"fk c #b4be20",
+"bn c #b4be41",
+"eU c #b4be4a",
+"gC c #b4be52",
+"hh c #b4be5a",
+"gz c #b4be62",
+"dU c #b4c210",
+"f# c #b4c218",
+"eH c #b4c220",
+"d6 c #b4c229",
+".Q c #b4c239",
+".T c #b4c241",
+"fp c #b4c252",
+"bo c #b4c25a",
+"#T c #b4c262",
+"g2 c #b4c600",
+"#D c #b4c608",
+"eV c #b4c610",
+"as c #b4c618",
+"bZ c #b4c620",
+"gt c #b4c639",
+"a1 c #b4c641",
+"dt c #b4c64a",
+"cA c #b4ca00",
+".v c #b4ca08",
+".o c #b4ca10",
+".r c #b4ca18",
+".y c #b4ca20",
+".L c #b4ca29",
+"fZ c #b4ca31",
+"eZ c #b4ca39",
+"aF c #b4ca41",
+"cq c #b4ca4a",
+"ce c #b4ca52",
+"fs c #b4ca5a",
+"a3 c #b4ce00",
+".0 c #b4ce08",
+".d c #b4ce10",
+".e c #b4ce18",
+"#B c #b4ce20",
+".2 c #b4ce29",
+"b7 c #b4ce31",
+"ae c #b4ce39",
+"aq c #b4ce41",
+"gn c #b4ce4a",
+"gg c #b4d200",
+".h c #b4d208",
+".f c #b4d210",
+"#C c #b4d218",
+"aS c #b4d231",
+"dS c #b4d239",
+"fO c #b4d629",
+"bV c #bdbe5a",
+"fG c #bdc24a",
+"cJ c #bdc25a",
+"fU c #bdc262",
+"fQ c #bdc629",
+"bF c #bdc631",
+"gL c #bdc639",
+"#n c #bdc64a",
+"bC c #bdc652",
+"hd c #bdc65a",
+"cc c #bdca10",
+"b1 c #bdca18",
+"cb c #bdca20",
+"#m c #bdca29",
+"en c #bdca31",
+"aR c #bdca39",
+"fb c #bdca41",
+"bI c #bdca4a",
+"at c #bdca52",
+"gS c #bdca5a",
+"gJ c #bdca6a",
+"g0 c #bdce00",
+"cz c #bdce08",
+"cB c #bdce10",
+".b c #bdce18",
+".i c #bdce20",
+"aE c #bdce29",
+"cC c #bdce31",
+".F c #bdce39",
+".O c #bdce41",
+".V c #bdce4a",
+"bD c #bdce52",
+".4 c #bdce5a",
+"fi c #bdce62",
+"hi c #bdd200",
+"aT c #bdd208",
+".a c #bdd210",
+"Qt c #bdd218",
+".l c #bdd220",
+"fW c #bdd229",
+"bG c #bdd231",
+"bH c #bdd239",
+"d3 c #bdd241",
+"er c #bdd24a",
+"gm c #bdd600",
+"dB c #bdd608",
+".D c #bdd610",
+"#3 c #bdd618",
+".p c #bdd620",
+".K c #bdd629",
+"#V c #bdd639",
+"fS c #bdd64a",
+"#Y c #bdda10",
+"ar c #bdda18",
+"e0 c #c5ca52",
+"eC c #c5ca5a",
+"eY c #c5ca62",
+"c4 c #c5ce31",
+"bX c #c5ce39",
+"c# c #c5ce41",
+"b2 c #c5ce5a",
+"e6 c #c5ce62",
+"h. c #c5ce6a",
+"d2 c #c5d218",
+"gK c #c5d220",
+"fK c #c5d231",
+"dw c #c5d239",
+"cd c #c5d241",
+"c9 c #c5d24a",
+"aM c #c5d252",
+"#I c #c5d25a",
+"dA c #c5d262",
+"fL c #c5d618",
+"bx c #c5d620",
+"aD c #c5d629",
+"cj c #c5d631",
+".Y c #c5d639",
+"ad c #c5d641",
+".3 c #c5d64a",
+"#6 c #c5d652",
+"g6 c #c5d65a",
+"#F c #c5da10",
+"cG c #c5da18",
+".t c #c5da20",
+"dW c #c5da29",
+"cY c #c5da39",
+"#A c #c5da41",
+"fE c #c5da4a",
+"hc c #c5da52",
+"fn c #c5de39",
+"eQ c #cdce7b",
+"fC c #cdd241",
+"gb c #cdd24a",
+"gY c #cdd252",
+"gu c #cdd25a",
+"g8 c #cdd262",
+"gT c #cdd26a",
+"fw c #cdd283",
+"fz c #cdd28b",
+"co c #cdd641",
+"bE c #cdd64a",
+"he c #cdd652",
+"af c #cdd65a",
+"b# c #cdd662",
+"eu c #cdd66a",
+"ga c #cdd673",
+"#5 c #cdda31",
+"dj c #cdda41",
+"dN c #cdda4a",
+".X c #cdda52",
+"cQ c #cdda62",
+"df c #cdde20",
+"aB c #cdde4a",
+"db c #cdde62",
+"f. c #cdde6a",
+"f7 c #cde241",
+"gv c #d5d694",
+"cH c #d5da52",
+"gA c #d5de4a",
+"bP c #d5de52",
+"gi c #d5de6a",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.b.c.b.#.b.c.b.#.b.c.b.c.b.c.b.c.b.c.b.c.b.c.b.c.b.c.b.#.a.#.a.#.a.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.e.#.e.#.e.#.e.#.e.#.e.#.e.#.e.#.d.#.f.g.f.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.g.a.g.a.g.a.#.a.#Qt.#Qt.#.b.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.a.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.g.h.g.f.g.f.g.f.g.f.#.d.g.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#Qt.#Qt.#.a.#.a.#.a.#.a.#.a.#Qt.#Qt.#Qt.#Qt.#.b.c.b.c.b.c.i.cQt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.e.#.e.#.d.#.d.g.f.g.f.g.f.#.d.#.d.#.d.#.d.#.e.#.e.#.e.c.e.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.b.c.b.c.b.#Qt.#.a.#.a.#.a.#.a.#.a.#.a.#.a.g.a.g.a.g.a.#.a.#.a.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.e.#.e.#.e.#.d.#.e.#.d.#.d.#.d.#.d.g.f.g.h.g.h.g.f.g.f.g.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.jQt.#.b.#Qt.k.l.c.e.m.i.c.l.c.b.cQt.cQt.c.e.mQt.m.d.#Qt.m.d.kQt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.n.o.m.e.#.o.m.e.#.l.k.p.q.e.c.e.m.r.m.b.q.p.s.r.mQt.k.e.m.e.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.t.q.d.mQt.kQt.#.o.u.a.#.d.n.v.wQt.#.e.m.e.c.i.x.i.s.y.s.r.z.r.mQt.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.m.d.jQt.j.a.g.d.#.d.u.d.g.d.w.o.mQt.c.r.A.B.s.y.x.l.c.e.C.o.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.v.g.D.j.d.w.E.w.b.#.b.cQt.c.b.c.e.c.l.x.F.G.y.H.i.s.r.z.o.g.D.I.a.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.J.D.J.a.#.e.c.K.G.L.M.F.N.O.P.Q.R.Q.S.T.U.V.W.X.N.Y.Z.l.c.D.J.0.g.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.D.1.0.#.p.2.3.N.4.5.6.7.8.9#.###a#b#a#a#c#d#e#f#g#h#i#j.Y#k.e#l.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.g.f.#.f.#.d.#.e.#.d.#.d.g.d.g.f.g.v.z#m.N#n#o#p#q#c#r#s#t#s#t#t#u#t#u#t#u#t#t#s#s#r#v#w#x#y#z#A.G#B.s.e.#.f.#.d.#.e.#.e.#.d.#.d.#.d.#.e.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.f.J.f.j#C.c.e.c.i.cQt.m#D#E#F#G.o#H#I#J#K#L#M#t#N#t#t#t#O#t#t#t#P#Q#P#u#P#u#t#u#t#t#s#t#s#R#S.7#T#U#V#W.v#X#Y.nQt.s#B#Z#B.z.e#0.b.c.b.#.b.#.b.#Qt.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.f.g.h#1.f.##C.c.e.c#2.m#3.w#4.m#5#6#7#8#c#9#O#ua.#Qa##Q#Q#u#Q#u#Q#u#Q#u#u#u#Q#Q#Q#Qa##Paa#u#t#s#R##abacad.x#E.n.d.q.l.c.r.c.p.#.u.#.e.#.e.#.e.#.d.#.e.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.f.J.f.j.f.##C.#.d.#.a.z.raeaf.5agahai#t#t#ta.#Qaj#Qak#u#O#t#O#t#t#u#O#u#t#ual#Qa#a#a#a#a.#u#t#t#samanaoapaq.3.H.r.c#3.#.e.k.l.z.b.#.b.#Qt.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.f.g.f.#.f.#.f.#.f.Jar.#as#jatauav#s#t#u#O#taa#u#Q#u#Q#u#t#u#t#u#t#u#t#u#t#u#u#u#Qawa#a#a##Qa.akaxay#t#t#razaAacaBaC.o.g.a.g.o.xaD.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.##C.##C.##C.#.a.J.0.waEaFaGaHaI#taka.axakak#u#u#u#O#uak#u#O#t#O#t#P#Q#P#u#t#u#t#u#Q#Qa.#Qa##Qa##QaJa#ax#t#saK.8aLaM#HQt.g.a#E.laNQt.#.a.#.a.#.a.#.a.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.##C.#.d.#.f.1.h#GaD#zaO.9am#t#t#QaJa##Q#Qaa#t#t#u#t#u#P#u#t#u#t#Qa##Q#Q#u#t#u#t#u#P#P#Q#Q#Q#Qa#a#aJa#aw#u#s#RaPaQaRaSQt.n.a.j.o.#.f.g.f.g.f.g.d.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.##C.c#C.#.a.JaT.#.i#zaU#c#s#t#Oaaa.#Qa##Q#u#t#O#uak#Qa.#Qaj#Qa.#Qa#a#a#a#a##Q#P#Qayayax#u#Q#Pax#P#P#Qa##P#P#u#t#saVaWataX.r.uaTaY.a.g.a.g.a.#.a.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.e.#.f.g.f.#.i.NaZ#b#t#uaa#u#u#Qak#Pak#u#Q#u#Q#Q#Q#Qa##Q#Q#Q#Q#Q#Q#Q#Q#u#Q#u#Q#u#P#u#Q#uax#P#u#t#t#u#Q#u#Q#u#t#ta0aAa1a2.b.1a3.g.f.g.f.g.f.g.f.g.d.#.d.#.d.#.e.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.l.c.d.J.da4aE#za5a6#t#ual#Qaa#ua7#u#Q#Qa8a#aJa#a##Qak#t#O#u#t#u#N#t#s#t#t#taaa9ay#Q#Q#Q#Q#Q#Pa9#O#u#t#u#Q#Qa##u#t#s#Mb.b##Hba.I.a.u.a.j.a.nbb.#.a.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.c#2.g.D.waD#zaZ#a#t#uax#P#Q#t#u#tak#ua#a#bcawa.#Q#t#u#t#sbdbe#9aK#bbf#b#R#9#t#t#t#t#tbg#P#Q#Q#P#Paa#saa#tak#Qa##Qaa#s#cbhaR#Bba.#.d.#.d.##3.##3.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.l.m.a#E.i.NaU#a#t#ualal#Q#ubi#u#Q#Pa8a#a##Q#Q#u#tbdaI#cbjbkblbmbnacbobpbqbrbsbta0#R#s#t#t#PbuaJa#awa.#u#Q#Pa.a#a##P#t#tbvbwaf.G.l.k.p.m.e.kQt.#Qt.#Qt.#.a.#.a.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.wbx.m.rbybz#c#t#ua.#Q#Q#u#u#u#u#P#Q#Qak#u#t#t#9bvbAbBbCbDbE#jbF.MaEa2bG.ZbH.NbIbJbKbLbMbe#t#ubN#Qaw#Q#Q#u#P#Q#Q#Qaw#t#t#sahbObP.G.e.c.e.c.e.m.o.#.d.#.d.g.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#bQ.m.yaXbRbS#s#uala.#Q#ubT#Nakaka#akbg#t#sbd#qbUbVbWbXbYbZb0b1.kbx.k.e.n.o.n.o.s#Aaqb2bmb3#L#R#t#Qa#b4axak#u#Q#u#Q#Paa#Nbd#sb5b6.V.G.B.s.l.x.iaN.b.#.a.#.a.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.jbQb7.Vb8am#uaa#u#Q#u#u#O#O#uak#Qak#ubea6b9c.c#cacb.sb1.mcc.u.a.g.d.g.0.g.h.J.a.g.raCcdcecfcgaI#t#u#uaa#P#Q#uaa#uak#u#ubd#t#9chcicj.A.B.x#B.s.p.#.e.#.d.#.f.g.f.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.##F.##IckaI#t#O#u#N#tbi#ual#ubi#ucl#ubdcmcna1co.m.a#2Qt#2Qt.B.b.m.d.gQt.jQt.j#C.#.f.j.e#W.2cpcqaLcrcs#t#uak#u#Qaaak#u#u#uaa#O#t#Rct.Zadcu.y.G.y.x.b.#Qt.#.a.#.a.#.a.#Qt.#",
+".#.d.#.d.#.d.#.e.#.d.#.d.#.d.g.fcv#5aLav#t#s#N#u#u#u#u#u#Qak#u#N#ubdcwcxcqbZcyczcvcA.ucB.m.o.m.e.u.d.##C.#.e.C.d.w.f.j.o.w#C#ZcCaLcDbe#t#t#Q#Qakaa#u#tak#uak#Q#tcEcFaebZ.A.r.c.l.#.d.#.d.#.d.g.f.g.d.#.d",
+"Qt.#.a.#.a.#.b.#.b.kcG.u.d#E.h#Eb1cHcI#taa#Qaa#t#t#u#uaaala.cl#uamaocJ#z.F.B.b.#.a.#.a.#.b.c.b.#.f.J.pcK.e.j.DcL#3.wQt.c.e.#.ocM.OcNcObe#tayaw#Qak#t#t#tak#Qaj#t#scPcQ.G.o.#cB.k.a.#.a.#.b.c.f.#Qt.#.a.#",
+".#.d.g.f.#.e.#.e.#Qt.#.v.j.DcR.da2#7cS#ta.a##u#t#u#O#u#Q#u#u#u#9abcTcUaE.z.o.w.v.#.d.g.d.#.d.#.d.JcV.n#C.##2.z.l#HcWcXcY.A#CcZ.E.C.Lc0c1#9#t#P#Q#u#t#u#t#u#Q#Q#Q#uc2c3c4c5.0#EcB.gcB.g.d.c.e.#.f.#.d.#.d",
+"Qt.#.a.#.a.#.b.cQt.#.d.u#3c6.vc7af#8ai#uax#Q#Q#t#O#ta.#u#t#t#Nc8bocUad.s.d.#.a.#.a.#.a.#.a.#Qt.##3.gcGcK.o.sc9d.d#aPda.U.F.H.o.#.d#Wdbdcddbe#t#t#P#Qak#uak#Qa.#Q#tcsdea1cb.mdf.u.a.#Qt.#.b.c#C.#.a.#Qt.#",
+".#.d.g.f.g.d.#.e.m.d.n.d#E.a.naE.5#c#t#O#P#Q#u#O#Q#Q#Qaa#u#sdgdhdi#B.C.o.g.D.jQt.#.d.g.f.g.f.#.d.j.a#0Qt.Adjdkdl#r#s#Rb.dm#A.HbxcL.D.G.Vdncr#tbd#u#P#Q#P#u#Q#Q#Q#u#tdodpaX.i.k.o.#.d.#.e.#.e.#.f.#.d.#.d",
+"Qt.#.a.#.a.#.b.c.e.q.a.#.a.#.laFdq#9#t#N#O#t#t#ta.#Qa##t#sdrdsdt.F.z.o.g.a.g.d.#Qt.#.a.g.a.g.a.#.Dcv.E.x#6dudv#R#t#t#s#rcOcedwdx.0c6bb.Hdbdydr#t#O#Qaw#Qak#Qak#Q#Q#t#9dzdAa2.o#2.b.c.b.c.b.c#C.#Qt.#.a.#",
+".#.d.g.f.#.d.#.e.CQt.j.f.n.e#HbI#L#O#taa#u#N#t#t#Qaj#Q#tbe#8a1bZ.c.v.gdBcR.v.m.e.#.e.g.h.g.h.g.f.g.v.A#AdmdCam#ta#a#dD#tdEdF.UcC.z.0cRdG#H.VdH#s#t#P#Q#Q#Q#P#u#Q#Qaa#tdIdJdwdK#3.#.b.c.e.#.e.#.e.#.d.#.d",
+"Qt.#.a.#.a.#Qt.c.e.qQt.#.oaNc9dLcs#tax#P#t#t#O#ua#a8#Q#tavdMdNa4.acR.a.J.0.m.paN.b.#.a.gaT.J.a.g.0.#.3dJdO#R#ta9dPa#dQbg#s#adRcNcC#W.D.g.odSb6aP#s#ta.#Qak#uak#u#Qak#t#MdTaFdU#EcB.#.b.c.a.##C.cQt.#Qt.#",
+".#.d.#.d.g.d.#.e.c.e.g.d.z.Kdi#p#ta.#P#Q#u#u#u#Qa#a.#u#9bUcd.mczdG.0.g.a.n.d.q.r.#.d.g.h.1.h.g.d.#.y.UdV#r#ta9#Q#Qa##Q#u#t#s#rbtceb7.m.v.gdWdXdY#s#t#u#Q#u#P#u#P#u#Q#u#tdZc9d0cB.g.d.c.e.#.d.#.e.#.d.#.d",
+".b.#Qt.#.a.#.a.#.l.m.0.#.b.M.4#q#Na#aj#Qak#uak#Qa##Q#tdobVd1d2aY.a.g.a.gQt.#.b.cQt.g.D.IaT.J#3.cd3bWd4cs#t#P#P#Q#Q#P#Q#u#t#t#tbecOd5cYa4.0.kd6d7d8#t#N#uak#u#u#uak#uaa#Nd9dtb1.gcB.m.e.#.a.##C.cQt.#.a.#",
+".#.e.#.d.g.f.#.e.c.e.n.f.#.Le.#c#ta##Q#Q#u#P#Qa##Q#u#sbAbWcb#2.0.g.f.g.f.#.e.#.d.u.0e#a3cR.v.mcCeabt#R#t#ua.#Qax#t#t#taaaa#Q#u#t#bebec.p.g.deda1cDbd#s#u#u#Q#u#t#u#u#P#tbvbn.scz.u.d.m.e.#.d.#.e.#.d.#.d",
+".b.#.b.#.a.gQt.c.r.c.a.#.bee.6#r#s#Qak#uak#Qaja#aj#u#MbBbXefd2.g.a.g.a.g.a.#.a.#.D.1dB.I.v.md3cieg#R#t#sax#Qa##P#t#taa#P#Q#Qa.#sbeeheib7.d.g.Y.PejaKbd#u#Q#Q#Q#t#t#ua.#u#Rbz.F.g.d.g.b.#.a.#Qt.cQt.#Qt.#",
+".#.e.#.d.g.h.#.e.A.l.g.d.c.FdF#s#t#Q#u#t#u#Qa#a##Q#tdobCbY.b#2cB.g.h.g.h.g.f.g.f.Ia3.J.a.z.Y.Pek#9#t#ua7#u#Q#Q#Q#uaa#t#u#uaa#u#taKelem.L.#.f.meneo#c#s#t#u#Q#u#u#u#uaw#u#sepaX.o.u.d.#.d.g.d.##C.#.d.#.d",
+".b.c.b.#.a.g.a.#.iaN.d.g.i#z.8#s#O#u#O#uak#Qaja#al#seq.4bZ.mQt.m.a.#.a.g.a.g.a.g.a.n.v.Aereaes#R#t#u#Q#u#Q#Pa.#u#Qaa#Q#ua7#t#tetbs.R.F.AQt.#.Ea2eubS#s#t#Q#Q#Q#u#u#ub4#u#scPcdc7cB.g.d.#Qt.##C.#Qt.#.a.#",
+".#.e.#.d.g.h.g.e.c.pcR.0.c.Oev#s#t#t#u#t#u#Qa#a##ubdbtbEewcc.#.o.#.d.g.f.g.f.g.f.#.o.A.Yduaoex#s#tak#u#uaaak#u#Q#u#Q#uak#u#taIbtd.bHed.icK.dcv.laFao#s#t#u#Q#u#u#u#Qa8#Q#teycias.m.d.#.d.#.d.#.f.#.d.#.d",
+".b.#.b.#.a.g.a.c.l.k.v.g.i.P#.#s#t#u#O#t#O#Qaja##Qbdezcib1.u.b.m.b.cQt.#Qt.#Qt.c.l.sd3d.esex#seA#t#u#taaa7#u#Q#u#u#ua.#Q#taIeBdmbG.#.r.c#3.g.0.ccddyam#tak#Qak#u#Q#Qa8#Q#sa0eCca.e.gcB.#Qt.#Qt.j.a.#Qt.#",
+".#.d.#.e.g.f.#.e.c.ecv.f.s.Q#a#t#u#P#u#t#u#Qa#a##u#9eDbF.BcBc5.o.#.e.#.e.#.d.#.e.GendueE#r#seA#P#t#u#u#Q#u#Q#u#u#u#Q#P#tbeeFead6.z.f.C#2.g.a.g.reeeG#r#t#P#Q#t#u#u#Qa##Q#tdreoeH.m.d.m.e.#.d.#.f.#.d.#.d",
+".a.#Qt.c.b.c.a.#.e.#.a.u.idX#b#t#P#Q#t#u#P#Qa##Q#NaKaG.Mbx.g.d.#.f.j#3#E.D.J.0.#c9dmdvam#t#s#N#tak#Qa##Qal#Q#Q#Qa#a7#tcseIapbZ.#Qt.C#C.q.f.j#3.z.F.UaK#t#P#Q#N#u#t#u#Q#u#t#bcJeJ.b.#.i.c.a.g.f.#Qt.#.a.#",
+".g.f.#.e.s.e.g.f.#.d.g.d.x.Tbf#t#u#Q#u#u#u#Q#Q#Q#t#bacaE.j.hcL.d.gdG.g.fcv.v.#.ybWbt#R#t#uak#t#u#ua##Qa##Q#Q#Qa#b4#QeKeLeMbX.uaT.##2.C#C.w#E.j.l.sa1aK#t#Q#Q#t#t#u#t#u#u#u#beN#m.#cB.s#B.#.h.g.f.#.d.#.d",
+".a.#Qt.c.i.c.a.gQt.#.d.m.i.S#a#u#t#uak#u#P#Qa##Q#t#bboaX.d.gQt.c#3.n#3#0.E.zc9.Ud4aI#t#uak#u#O#t#Q#Qal#Q#P#ual#Qa8#QeOePeQcqdU.u.f.n#C.q.oeR.r.caEeS#b#t#P#Q#t#t#t#u#u#u#taIaGbY.b.#.i.c.a.g.f.#.a.#Qt.#",
+".g.d.#.e.s.e.g.f.j.d.C.e.Gbn#a#t#u#u#u#u#u#Q#Q#Q#u#b.5bG.n.0.j#C.q#C#EQt.sadeNeTcs#s#say#u#uakak#u#Q#u#Q#u#t#u#Q#Qax#ucsbteUd1eVcLeWcLar.j#E.z#Bed.TaK#t#u#P#u#O#u#t#u#t#ua6.5cC.#.d.s.e.g.h.#.f.#.d.#.d",
+"Qt.#Qt.#.b.c.a.g#3.#.d.c.F.U#c#t#t#u#P#u#t#u#Q#u#t#Rbq.Z.v.gQt.c.e.#eV.A#6dmeXcs#taaax#Qalaxax#ual#Q#P#u#O#t#t#ual#Pak#taibteYeZ.ecRcV.Jar.qQtaN.ObJ#R#t#P#Q#Q#tak#uak#u#tdobobY.b.#.b.c.a.g.f.#Qt.#.a.#",
+".#.d.#.e.c.e.g.f.#.b.m.r.GbI#d#t#u#Q#u#u#u#t#u#Q#t#9brbH.w.h.#.e.j#2.saBdudC#R#t#Pa8#Q#Q#Pak#u#Q#Q#Q#u#u#u#t#t#t#u#Q#P#N#taIbte0#H#3.ndG.g.f.m#BaXe1et#t#Qaw#u#P#uak#Q#u#te2eo#m.#cB.#.e.g.f.#.d.#.d.#.d",
+"Qt.#Qt.c.b.c.a.g.d.kQtd0.yce#e#t#t#Qal#Q#t#u#P#Qaa#tbs.N.o.J#C.mar.Cc9dme3#r#taaa.awa.#Qa.#u#Q#Qa##Qal#u#t#t#O#t#u#Qa#ak#N#t#MeFe4#k.p.w.v.n.vd0.Fe5#saaa#a##Q#u#Q#Pa.#u#s#Se6eJ.b.#Qt.#.a.##C.cQt.#Qt.#",
+".#.d.#.e.c.e.g.f.n.p.cas.A.Xe7#s#u#Q#Q#Q#u#t#u#Qa9#tdCbI.CaT.g.dcL.pd.eE#R#ta9#P#Paa#P#P#u#P#t#u#Qa##Q#Q#u#t#u#t#N#Q#Qa##u#t#NbeaZe4.Z#B.#.f.g.ici#8#tay#Qa##u#u#uakak#u#scDceeH.m.d.#.d.g.d.#.e.#.d.#.d",
+"Qt.#.a.#.b.c.a.gQt.m.l.c#B.Ne8#s#t#Qa#a.#Q#uay#Qay#t#caLad.j.f.n#3.Zd##r#tawe9#Q#Q#N#t#uakak#t#ua#b4a.#Qa.#u#u#tak#Qaj#Qaj#Q#O#tetbkf.aXf##E.vaNeCdr#taka##Q#u#uak#Qak#u#sfafb.G.b.#.a.#Qt.##C.#Qt.#.a.#",
+".#.d.g.d.c.e.g.f.#.e.c.e.zbHfcam#ta##Qa##Q#Pax#P#Q#t#r#oby.r.#.f.Cfdfe#s#ta#a#a#aa#N#taaak#Q#u#uay#u#uax#P#Q#u#Q#u#Q#Q#Q#Q#Q#u#t#s#Rffa1aX.i.zaE#h#R#ua.#Qak#u#u#P#Q#P#tamfg.N.y.#cB.g.f.#.e.#.e.#.d.#.d",
+".a.#.a.#.b.cQt.#.d.q.b.k.oa2cxbv#sa.a#a#a.#Pax#Q#Q#s#sfhfi.M.e.j#C.MfjaK#sdDdQ#Q#Q#tbgaa#Q#Qa.ak#taieK#uak#Pa##Qaj#Qak#Qak#uak#t#t#t#Raoe6.Nfka1cI#sbia##Q#Q#O#uax#ufl#tdoeNc9d0.b.#.a.#.b.c#C.cQt.#Qt.#",
+".#.d.g.d.c.e.#.d.CQt.m#3cv.ldifm#taa#Qa##Q#Q#Q#Q#ubg#tbMbmcd.A.d.Cfndub.am#tbg#u#uaaa9#u#uax#u#tameLfo#M#u#t#Paj#Q#Q#u#t#u#t#u#t#ueA#t#RbkfpceeUdr#t#ua.#uak#u#u#Q#u#N#s#wc9fq.b.#.d.g.d.#.e.#.e.#.d.#.d",
+".a.#.a.#.b.cQt.#.e.k.e#E.v.q.Yfr#s#tak#Qa##Q#Q#Q#Qa9#tbeb3fs.2.n.e.A.FcNftet#s#saaax#Q#ua7#t#t#9fufvfwfxai#taa#Qa.#Qak#t#O#t#O#ta.#u#s#s#9fyfzfAeK#u#Oakalbial#u#Qaa#O#sfBfCas.k.b.#.a.#.i.c#C.#Qt.#.a.#",
+".g.f.g.d.c.e.#.d.mQt.m.a.1.0#HfDcs#t#uak#Qa##Qax#u#Q#P#t#L#Jcp.e.C.e.HfEceb.#b#s#t#P#uaa#u#taIfhfFbXcqfGbt#M#u#t#u#Q#u#t#u#t#u#P#Q#Q#s#s#ufHfIfJ#t#u#t#N#ubi#u#Q#uaa#uaIdMfKa4fL.#.b.g.d.s#B.#.d.#.d.#.d",
+".a.g.a.#.b.c.b.#Qt.c.b.gdB.1.rcidI#N#taa#Q#Qax#P#P#Qb4#u#Rcgcq.k.o#0.o.HbHdueIam#t#ua.ak#t#bfMeabZ.mdUbYeYbt#M#N#O#u#O#tak#uak#Q#Qa9ak#Qa8#u#t#sbi#Qbi#t#O#ual#Qak#t#NdIb2d0cB#E.b.#.a.#.i.x#C.#.a.#Qt.#",
+".g.f.g.d.#.e.#.e.#.e.#.0fNa3dKdNfx#R#uaa#Qa##P#uaa#Pawcl#taK.5cCfO.E.n.tfPbGcNbtbe#t#s#tbebtdmfQ.#aTfReVeZb2eF#s#t#t#u#t#u#P#u#P#u#u#Pa#a#b4#u#u#ual#u#u#u#u#ua.ak#t#9btfSfTcK.d.#.d.g.f.c#B.#.e.#.d.#.d",
+".a.#.a.#Qt.#Qt.#Qt.#.a.#.a.#Qt.MfUdr#sbga#a##Q#u#taaaw#Qak#tavbp.O.c.f.J.0.Cb7cNfVbfbebfbs.UfW.cQt.#.f.#.e.ZbWfXbe#t#t#Qa.#Q#t#u#P#u#P#ual#Q#t#u#Q#u#u#u#u#u#Q#uaw#tcrbJ.3.c.r.cQt.gaTfY.a.c.b.cQt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.##Ba1ao#9#ua#aJ#u#u#uaa#Qa#ak#uaicDea.L#W.D#X.0.CfZduf0ehf0.ScY.j.I.C#2.ndG.n.p.Zf1b.#R#tf2#u#ubg#t#u#u#u#u#u#u#u#u#tak#u#t#u#u#u#u#sbef3.F.s.o.q.e.#.f.1.h.g.d.#.e.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.cdwf4f5#taxaJaj#Q#uaaa.a#b4#u#tbdf6bJdb.xbb.1.D.mf7f8f9g.d3ed.o.n#Cg##C.#dG.C#Vbygaabam#s#s#t#t#u#t#uak#u#t#uak#u#u#uak#tak#tak#s#saPbqaS.vcR#3.c.b.#.a.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.bd0gbgcai#ua#a#a##uak#Qa##Qak#u#t#sgddc.V.A.o.g.0a4.lgecC.A.r.m.d.j.f.jar.JdG.w#BcpdtaoaK#sbd#u#Q#u#u#u#u#u#u#u#u#u#u#u#t#u#u#u#t#sgfby.e.1gg.n.e.c.e.#.d.g.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#eVa2dpb5#t#uaj#Qaj#Qak#Qa##Qaxaa#tamghdngi#H.ocRba.j#3.m.ecKcG.g.f.n.0gjar.g.v.#as.Ze6dFam#taxa#al#u#t#uak#u#t#uak#uak#t#u#u#u#tgkgldWcRgm.I.v.#.b.c.a.g.a.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.ddGasgngo#R#t#u#Q#Qa.#u#Q#u#Q#Q#Qay#tbecrbr.Vae.p.#.d.n.0.g.a.j.a.J.IgpdG.j.fcR.h.#.reeeUgqgr#ua.#u#u#u#u#u#u#u#u#u#u#uaa#t#u#tcsbm.L.c.h.1.h.j.e.#.e.g.h.g.f.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.D.ubEfF.8#R#t#t#Q#Qak#uak#u#Q#u#Pa9#t#tdrdCgsdXen.G.l.B.d#G.v.j.Dgj.d.n.a.g.v.g.0.mgtgugvgw#taa#t#uak#u#t#uak#u#u#u#uaaaa#tgxgygzee#B.#.f.g#3.c.b.#.a.g.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#cBcvcBd0gAf9a0#t#N#u#P#P#Q#t#N#taa#u#Q#tbd#t#sa0dYdJbI.N#m.s.i.c.o.w#3.c.e.q.e.z.igBaE#zgCgqfJ#t#u#u#u#u#u#u#u#u#u#t#u#uak#u#u#t#MgDbIeeef.qQt.m.d.#.d.#.f.g.f.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.keVd0c9gEdg#t#t#Q#Q#Q#u#u#t#N#O#t#P#uak#t#s#s#.cPgFgGb#cqc#gH.i.c.l#HcdbycdaFeYaOgIdreK#tal#Q#Qak#u#uak#u#uakak#uak#uak#uak#t#9btgJ#zbZ.m.a.u.b.c.b.cQt.gaT.g.a.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.sgK.#.ogBgLaWcS#t#t#Qa.akaa#t#u#t#t#u#Q#Qa##u#t#t#9#bahbSbkbBgMgN.Q.RbWgOgPf0gQdr#R#t#t#u#Qa#a##uak#u#u#u#u#u#u#u#t#u#t#u#t#u#t#taKdCbCaqas.ncG.#.e.s.e.#.f.g.h.g.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.c.ifqd2fT.bb7bCgR#M#N#Oakax#u#Q#u#t#tak#Qawa#a.#Q#N#sbd#sbebeaics#b#ba6#baIam#s#t#t#ubi#ual#Qal#u#Q#tak#uak#u#u#uak#uak#uak#uak#taa#t#RfhgSae.b.#Qt.c.i.cQt.#.a.g.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.bgBbZ.mcB.u.baXfGbtdo#t#t#N#Q#uak#u#t#u#P#Qa##Q#Q#u#u#u#t#t#t#u#t#t#t#u#t#u#t#tax#Qa.a#a.#Qak#u#O#u#t#u#t#taaakak#u#t#u#t#u#t#u#t#Pbg#t#Re5fbaN.o.#.d.#.e.#.d.g.f.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.igBb1.mcBc7asgtgTcOdr#s#Nbgax#Qak#Qak#Qak#Qak#Qa.#P#P#uak#Qak#Qa.awaw#Q#Q#Q#Q#Qa##Q#Q#ual#u#O#O#u#uak#u#uakaa#uak#uak#uak#uak#t#tbgbd#s#agUbZ.k.a.#.a.#.a.#Qt.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.dgVaD.BeV#2cBc5.bfZfbbwah#t#t#t#P#Q#Q#u#P#u#t#u#P#Qak#Qa.#Q#Q#u#Q#Qa##Q#Q#Q#Q#u#Q#uak#tak#ubi#u#u#u#u#u#u#u#u#t#u#u#t#u#t#u#t#u#t#u#tbe#sbegWgX.e.#.d.#.d.#.d.#.e.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#cB.B.ief.b#2cz.1bb#BgYbOb5ai#Oakaj#Qa.#u#O#t#O#uak#Q#Q#Q#Q#uaabgbga9ak#Q#P#taa#N#t#u#O#u#O#ual#Q#Q#uak#u#uaagx#tak#uak#uak#uak#t#t#t#tbeaPgZd3.zQt.#.b.cQt.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#cB.ebQa4bx.#.vaYg0g1g2.G.Xbpg3cs#t#u#Q#u#P#u#t#u#t#u#u#Qak#u#u#u#O#u#t#u#t#u#t#u#u#t#t#u#u#uak#Qal#u#t#t#t#tcsg4#M#t#t#u#t#u#t#u#t#tcsbebvbK.3.G.d.#.e.c.e.#.d.g.f.g.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.a.#.a.#.a.#.a.g.a.#.id1bIbWctcE#s#u#t#u#Q#Q#Q#uak#u#u#u#u#u#Q#t#t#u#O#t#O#u#Q#uaa#P#P#ual#Qak#Qawaa#s#sgkbmgzgRam#t#s#t#t#t#t#t#9#saPg5g6.M.ecKQt.#.a.#.a.g.a.g.a.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.f.g.f.g.f.g.d.#QtaN.i.GcYgef1gQg7ai#t#uaaaa#P#u#u#u#u#u#Q#Q#Q#u#t#u#t#uak#Pax#Q#Q#uak#u#O#u#t#tbeaPgfgl.Ld1bIbL#R#tbgeA#t#tam#sazaQ.O.G.o.n.f.#.d.g.f.g.f.g.f.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.a.#.a.#.a.#.o.m.l.xef.Hd3.Ng8c3decSai#t#t#uaa#Pa.a.b4b4a8a##Q#u#u#u#Q#Qa.a.a.aafl#N#N#tbd#9crg9bqbydW.c#Beeh.dCcs#tbd#9#tbeaPdLgiaX.r.qcB.mQt.#Qt.#.a.#.a.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.g.d.#.d.#.d.c.l.xbZ.AbZgBfKcigMdlh#aI#N#s#t#u#u#u#Q#Q#Q#u#u#u#u#u#u#u#u#t#t#t#s#sa6dIbtbJ.FaS.ecv.h.#ef#UbCdC#r#s#setbvdL.OaX.B.##3.#.d.#.e.#.e.#.d.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#Qt.#Qt.#.a.#bx.k.e.s.lgB.i.ceVc5.iaeb#eMgFdld9bv#R#s#s#t#s#t#t#u#t#u#t#t#s#s#s#ra0fmhahbb2hc.3.c.v.1gmfY.f.kbZaqhdbh##beaPdyg6.M.y.cQt.g.d#E.b.c.b.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.d.#.d.#.d.wQt.##2.z.r.z.e#Eczc5as.MdwaFhedtbnbzephfeya0dr#b#baIa6dre2#ScDdZfgeN.3aqfKd0fT.c.ocRggfN.h.gQt.mas.ZfbgUgWgZ.3.Gas.##3.u.v.#.o.#.e.#.d.#.d.g.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.b.#.b.c.b.#Qt.#.E.kbx.k.p.k.b.k.o#Edf#Bb1hgdUc7b1.s.FaXcd#zeC#icJeNhhf4bogGe6ceb2.NfbeJ.r.mcB#2.r.k#3.u.v.j#3.m#3.u.r.xfqcuad.G.e.m.b.j.d.#Qt.z.b.#Qt.#.a.#.a.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.e.#.e.#.e.#.e.##3.m.o.q#3.#Qt#EcBc5.o.#Qt#E.a.gcz.g.oc7ascaeHeJ#mbYcCbY#meJbZd0.y.s.b.#.a.#cB.#.e.#.e.m.e.m.d.ncG.u.ocK.e.z.ocK#C.C.e.j.o.zQt.#.d.#.d.g.f.g.f.g.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.b.c.b.#.b.c.b.#Qt.#.a.#Qt.#.a.#.a.#.a.#.b.#cB.#cB.g.d.gcB.m.e.m.b.#.b.#.b.c.b.c.b.c.b.#.b.#.b.#Qt.#.b.c.b.c.b.#.b.cQt.#.a.#Qt.#.b.c.b.c.b.c.b.#Qt.#.a.#Qt.#.a.#Qt.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.e.#.e.#.e.#.e.#.e.#.d.#.f.g.f.gcB.#.d.#.b.#.d.m.d.u.d.u.d.u.d.#cB.g.d.#cB.g.d.#cB.g.d.#.b.#.d.g.f.#.e.#.e.#.d.c.e.#.d.g.d.#.e.#.e.#.e.c.e.#.d.#.d.#.d.#.e.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.b.#.b.c.b.#Qt.#.a.#.a.#.a.#Qt.#.b.c.b.c.e.#.b.#.d.#cB.#.i.x.i.c.b.#Qt.#.a.g.a.g.a.#.a.gaT.J.a.#.a.g.a.#.b.c.i.c.a.#.b.c.b.#.b.c.b.c.b.#.a.#.b.c.b.c.b.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.g.d.#.d.#.e.#.e.#.e.#.d.g.f.g.f.#.d.#.e.#.e.#.e.m.e.#.d.#.d.#.e.s#B.s.e.#.e.#.d.g.f.g.d.g.d.#.f.1.h.g.d.g.h.g.f.#.e.c.e.g.d.#.e.#.d.#.e.c.e.#.e.#.d.#.e.#.e.#.d.#.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.a.g.a.#Qt.#.b.#.b.cQt.#.a.#.a.#.b.c.b.c.b.#.a.#.a.#.a.#Qt.#Qt.#.a.#.a.#.a.#.a.#Qt.#.b.c.i.c.i.c.a.g.a.#.a.g.a.#Qt.#Qt.#.a.#Qt.#Qt.#.b.c.b.cQt.#Qt.#.b.c.b.#.a.#.a.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.g.h.g.f.#.d.#.e.#.e.#.d.#.d.g.d.#.e.#.e.#.e.#.d.#.d.g.d.#.d.#.d.g.h.g.h.g.f.g.d.#.e.c.e.s#B.s#B.#.d.#.d.#.d.g.f.g.f.g.d.#.d.#.d.#.d.#.e.#.e.#.d.#.e.#.e.#.d.g.h.g.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.J.a.g.a.#.b.c.b.#Qt.#.a.#.a.#.f.##C.##C.##C.c#C.cQt.c#C.jQt.j.f.#.f.#.f.##C.c#C.c#C.c#C.c#C.c.b.cQt.#.a.#Qt.#.a.J.a.#Qt.#Qt.#.a.#.b.c.b.#Qt.#Qt.#.b.c.a.JhifY.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.g.h.g.f.g.d.#.e.#.e.#.d.#.d.#.d.g.f.#.f.#.e.#.e.c.e.c#C.#.f.#.f.g.f.#.f.#.d.#.e.#.e.#.e.#.d.#.e.c.e.#.d.#.d.#.d.g.h.g.f.#.e.#.d.g.d.#.e.#.e.#.d.#.d.#.e.g.hfY.h.g.d.#.d",
+"Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.a.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#Qt.#Qt.#Qt.#Qt.#.a.#Qt.#.a.#Qt.#Qt.#Qt.#Qt.#Qt.#.a.#Qt.#.a.#Qt.#.a.#.a.#.a.#Qt.#.a.#Qt.#Qt.#Qt.#.a.#Qt.#Qt.#.a.#.a.g.a.#.a.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d",
+".a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#.a.#Qt.#",
+".#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d.#.d"};
+
+
+/*
+ * Constructs a WidgetsBase which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+WidgetsBase( QWidget parent, String name, int fl )
+{
+ super( parent, name, fl );
+ QPixmap image0 = new QPixmap( ( String[] ) image0_data );
+ QPixmap image1 = new QPixmap( ( String[] ) image1_data );
+ QPixmap image2 = new QPixmap( ( String[] ) image2_data );
+ QPixmap image3 = new QPixmap( ( String[] ) image3_data );
+ QPixmap image4 = new QPixmap( ( String[] ) image4_data );
+ QPixmap image5 = new QPixmap( ( String[] ) image5_data );
+ QPixmap image6 = new QPixmap( ( String[] ) image6_data );
+ QPixmap image7 = new QPixmap( ( String[] ) image7_data );
+ QPixmap image8 = new QPixmap( ( String[] ) image8_data );
+ QPixmap image9 = new QPixmap( ( String[] ) image9_data );
+ QPixmap image10 = new QPixmap( ( String[] ) image10_data );
+ QPixmap image11 = new QPixmap( ( String[] ) image11_data );
+ QPixmap image12 = new QPixmap( ( String[] ) image12_data );
+ QPixmap image13 = new QPixmap( ( String[] ) image13_data );
+ QPixmap image14 = new QPixmap( ( String[] ) image14_data );
+ QPixmap image15 = new QPixmap( ( String[] ) image15_data );
+ QPixmap image16 = new QPixmap( ( String[] ) image16_data );
+ QPixmap image17 = new QPixmap( ( String[] ) image17_data );
+ QPixmap image18 = new QPixmap( ( String[] ) image18_data );
+ QPixmap image19 = new QPixmap( ( String[] ) image19_data );
+ QPixmap image20 = new QPixmap( ( String[] ) image20_data );
+ QPixmap image21 = new QPixmap( ( String[] ) image21_data );
+ QPixmap image22 = new QPixmap( ( String[] ) image22_data );
+ QPixmap image23 = new QPixmap( ( String[] ) image23_data );
+ QPixmap image24 = new QPixmap( ( String[] ) image24_data );
+ QPixmap image25 = new QPixmap( ( String[] ) image25_data );
+ QPixmap image26 = new QPixmap( ( String[] ) image26_data );
+ QPixmap image27 = new QPixmap( ( String[] ) image27_data );
+ QPixmap image28 = new QPixmap( ( String[] ) image28_data );
+ QPixmap image29 = new QPixmap( ( String[] ) image29_data );
+ QPixmap image30 = new QPixmap( ( String[] ) image30_data );
+ QPixmap image31 = new QPixmap( ( String[] ) image31_data );
+ QPixmap image32 = new QPixmap( ( String[] ) image32_data );
+ QPixmap image33 = new QPixmap( ( String[] ) image33_data );
+ QPixmap image34 = new QPixmap( ( String[] ) image34_data );
+ QPixmap image35 = new QPixmap( ( String[] ) image35_data );
+ QPixmap image36 = new QPixmap( ( String[] ) image36_data );
+ QPixmap image37 = new QPixmap( ( String[] ) image37_data );
+ QPixmap image38 = new QPixmap( ( String[] ) image38_data );
+ QPixmap image39 = new QPixmap( ( String[] ) image39_data );
+ QPixmap image40 = new QPixmap( ( String[] ) image40_data );
+ QPixmap image41 = new QPixmap( ( String[] ) image41_data );
+ if ( name == null )
+ setName( "WidgetsBase" );
+ resize( 718, 565 );
+ setCaption( trUtf8( "Widgets" ) );
+ WidgetsBaseLayout = new QGridLayout( this );
+ WidgetsBaseLayout.setSpacing( 6 );
+ WidgetsBaseLayout.setMargin( 11 );
+
+ ListBox3 = new QListBox( this, "ListBox3" );
+ ListBox3.insertItem( image0, trUtf8( "Applix", "" ) );
+ ListBox3.insertItem( image1, trUtf8( "Binary", "" ) );
+ ListBox3.insertItem( image2, trUtf8( "Core", "" ) );
+ ListBox3.insertItem( image3, trUtf8( "Deb", "" ) );
+ ListBox3.insertItem( image4, trUtf8( "Document", "" ) );
+ ListBox3.insertItem( image5, trUtf8( "Pdf", "" ) );
+ ListBox3.insertItem( image6, trUtf8( "Readme", "" ) );
+ ListBox3.insertItem( image7, trUtf8( "Shellscript", "" ) );
+ ListBox3.insertItem( image8, trUtf8( "Recycled", "" ) );
+ ListBox3.insertItem( image9, trUtf8( "Video", "" ) );
+
+ WidgetsBaseLayout.addWidget( ListBox3, 2, 0 );
+
+ TextEdit1 = new QTextEdit( this, "TextEdit1" );
+ TextEdit1.setText( trUtf8( "<p><h1><b><font size=\"5\" >Richtext </h1>\n"
++ "</p><p>Qt supports formatted rich text, such as the heading above, <i><font >emphasized</font></i>, <b><font >bold </font></b>and <u><font >underlined </font></u>text, as well as colored text. This is <font color=\"#ff0000\" >red</font>, while this is <font color=\"#00bb00\" >green</font>, and this is <font color=\"#0000ff\" >blue</font>. </p>\n"
++ "<> </>\n"
++ "" ) );
+
+ WidgetsBaseLayout.addWidget( TextEdit1, 2, 1 );
+
+ TabWidget2 = new QTabWidget( this, "TabWidget2" );
+
+ tab = new QWidget( TabWidget2, "tab" );
+ tabLayout = new QGridLayout( tab );
+ tabLayout.setSpacing( 6 );
+ tabLayout.setMargin( 11 );
+
+ IconView1 = new QIconView( tab, "IconView1" );
+ item1 = new QIconViewItem( IconView1, trUtf8( "Item 1", "" ), image10 );
+ item2 = new QIconViewItem( IconView1, trUtf8( "Item 2", "" ), image11 );
+ item3 = new QIconViewItem( IconView1, trUtf8( "Item 3", "" ), image12 );
+ item4 = new QIconViewItem( IconView1, trUtf8( "Item 4", "" ), image13 );
+ item5 = new QIconViewItem( IconView1, trUtf8( "Item 5", "" ), image14 );
+ item6 = new QIconViewItem( IconView1, trUtf8( "Item 6", "" ), image15 );
+ item7 = new QIconViewItem( IconView1, trUtf8( "Item 7", "" ), image16 );
+ item8 = new QIconViewItem( IconView1, trUtf8( "Item 8", "" ), image17 );
+ item9 = new QIconViewItem( IconView1, trUtf8( "Item 9", "" ), image18 );
+ item10 = new QIconViewItem( IconView1, trUtf8( "Item 10", "" ), image19 );
+ item11 = new QIconViewItem( IconView1, trUtf8( "Item 11", "" ), image20 );
+ item12 = new QIconViewItem( IconView1, trUtf8( "Item 12", "" ), image21 );
+ item13 = new QIconViewItem( IconView1, trUtf8( "Item 13", "" ), image22 );
+ item14 = new QIconViewItem( IconView1, trUtf8( "Item 14", "" ), image23 );
+ item15 = new QIconViewItem( IconView1, trUtf8( "Item 15", "" ), image24 );
+ item16 = new QIconViewItem( IconView1, trUtf8( "Item 16", "" ), image25 );
+ item17 = new QIconViewItem( IconView1, trUtf8( "Item 17", "" ), image26 );
+ IconView1.setArrangement( QIconView.LeftToRight );
+ IconView1.setResizeMode( QIconView.Adjust );
+
+ tabLayout.addWidget( IconView1, 0, 0 );
+ TabWidget2.insertTab( tab, trUtf8( "Iconview", "" ) );
+
+ tab_2 = new QWidget( TabWidget2, "tab_2" );
+ tabLayout_2 = new QGridLayout( tab_2 );
+ tabLayout_2.setSpacing( 6 );
+ tabLayout_2.setMargin( 11 );
+
+ Table1 = new QTable( tab_2, "Table1" );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "Tables", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "are", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "easy", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "with", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "Qt", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "6", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "7", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "8", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "9", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "10", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "11", "" ) );
+ Table1.setNumCols( Table1.numCols() + 1 ); Table1.horizontalHeader().setLabel( Table1.numCols() - 1, trUtf8( "12", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, new QIconSet(image27), trUtf8( "", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, new QIconSet(image28), trUtf8( "", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, new QIconSet(image29), trUtf8( "", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "4", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "5", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "6", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "7", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "8", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "9", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "10", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "11", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "12", "" ) );
+ Table1.setNumRows( Table1.numRows() + 1 ); Table1.verticalHeader().setLabel( Table1.numRows() - 1, trUtf8( "13", "" ) );
+ Table1.setNumRows( 13 );
+ Table1.setNumCols( 12 );
+
+ tabLayout_2.addWidget( Table1, 0, 0 );
+ TabWidget2.insertTab( tab_2, trUtf8( "Table", "" ) );
+
+ tab_3 = new QWidget( TabWidget2, "tab_3" );
+ tabLayout_3 = new QGridLayout( tab_3 );
+ tabLayout_3.setSpacing( 6 );
+ tabLayout_3.setMargin( 11 );
+
+ ListView3 = new QListView( tab_3, "ListView3" );
+ ListView3.addColumn( trUtf8( "Things", "" ) );
+ ListView3.addColumn( trUtf8( "Text", "" ) );
+ ListView3.addColumn( trUtf8( "Stuff", "" ) );
+ item_1 = new QListViewItem( ListView3, "" );
+ item_1.setPixmap( 0, image30 );
+ item_1.setText( 1, trUtf8( "Airbrush", "" ) );
+ item_1.setPixmap( 1, image31 );
+ item_1.setText( 2, trUtf8( "What stuff?", "" ) );
+
+ item_4 = new QListViewItem( ListView3, item_1 );
+ item_4.setPixmap( 0, image32 );
+ item_4.setText( 1, trUtf8( "Eraser", "" ) );
+ item_4.setPixmap( 1, image31 );
+ item_4.setText( 2, trUtf8( "Here?", "" ) );
+
+ item_2 = new QListViewItem( ListView3, item_4 );
+ item_2.setOpen( true );
+ item_3 = new QListViewItem( item_2, item_4 );
+ item_3.setOpen( true );
+ item_5 = new QListViewItem( item_3, item_4 );
+ item_5.setText( 0, trUtf8( "Subitem", "" ) );
+ item_5.setPixmap( 0, image28 );
+ item_3.setText( 0, trUtf8( "Pixmap subitem 1", "" ) );
+ item_2.setOpen( true );
+ item_6 = new QListViewItem( item_2, item_3 );
+ item_6.setText( 0, trUtf8( "Pixmap subitem 2 ", "" ) );
+ item_2.setText( 0, trUtf8( "Pixmap item", "" ) );
+ item_2.setPixmap( 0, image33 );
+ item_2.setText( 1, trUtf8( "Nothing", "" ) );
+ item_2.setText( 2, trUtf8( "Nothing Again", "" ) );
+
+ ListView3.setAllColumnsShowFocus( true );
+ ListView3.setResizeMode( QListView.AllColumns );
+
+ tabLayout_3.addWidget( ListView3, 0, 0 );
+ TabWidget2.insertTab( tab_3, trUtf8( "Listview", "" ) );
+
+ WidgetsBaseLayout.addMultiCellWidget( TabWidget2, 3, 3, 0, 1 );
+
+ groupBox = new QGroupBox( this, "groupBox" );
+ groupBox.setTitle( trUtf8( "Group box" ) );
+ groupBox.setColumnLayout(0, Qt.Vertical );
+ groupBox.layout().setSpacing( 0 );
+ groupBox.layout().setMargin( 0 );
+ groupBoxLayout = new QGridLayout( groupBox.layout() );
+ groupBoxLayout.setAlignment( Qt.AlignTop );
+ groupBoxLayout.setSpacing( 6 );
+ groupBoxLayout.setMargin( 11 );
+
+ lcdDisplay = new QLCDNumber( groupBox, "lcdDisplay" );
+ sizePolicy1 = new QSizePolicy();
+ sizePolicy1.setHorData(7);
+ sizePolicy1.setVerData(7);
+ sizePolicy1.setHeightForWidth(lcdDisplay.sizePolicy().hasHeightForWidth());
+ lcdDisplay.setSizePolicy( sizePolicy1 );
+ lcdDisplay.setNumDigits( 2 );
+ lcdDisplay.setSegmentStyle( QLCDNumber.Filled );
+
+ groupBoxLayout.addMultiCellWidget( lcdDisplay, 0, 2, 3, 3 );
+
+ slider = new QSlider( groupBox, "slider" );
+ slider.setOrientation( QSlider.Horizontal );
+ slider.setTickmarks( QSlider.Left );
+ slider.setTickInterval( 5 );
+
+ groupBoxLayout.addWidget( slider, 2, 2 );
+
+ TextLabel1_2 = new QLabel( groupBox, "TextLabel1_2" );
+ TextLabel1_2.setText( trUtf8( "Pick a base color:" ) );
+
+ groupBoxLayout.addWidget( TextLabel1_2, 0, 0 );
+
+ pushButton = new QPushButton( groupBox, "pushButton" );
+ pushButton.setCursor( new QCursor( 0 ) );
+ pushButton.setText( trUtf8( "&Reset colors" ) );
+
+ groupBoxLayout.addWidget( pushButton, 2, 0 );
+
+ buttonColorBox = new QComboBox( false, groupBox, "buttonColorBox" );
+ buttonColorBox.insertItem( image34, trUtf8( "pale green", "" ) );
+ buttonColorBox.insertItem( image35, trUtf8( "deep sky blue", "" ) );
+ buttonColorBox.insertItem( image36, trUtf8( "steel blue", "" ) );
+ buttonColorBox.insertItem( image37, trUtf8( "powder blue", "" ) );
+ buttonColorBox.insertItem( image38, trUtf8( "sandy brown", "" ) );
+ buttonColorBox.insertItem( image39, trUtf8( "dark orange", "" ) );
+ buttonColorBox.insertItem( image40, trUtf8( "indian red", "" ) );
+
+ groupBoxLayout.addWidget( buttonColorBox, 1, 0 );
+
+ lineEdit = new QLineEdit( groupBox, "lineEdit" );
+ lineEdit.setText( trUtf8( "hot pink" ) );
+
+ groupBoxLayout.addWidget( lineEdit, 1, 1 );
+
+ TextLabel1_2_2 = new QLabel( groupBox, "TextLabel1_2_2" );
+ TextLabel1_2_2.setText( trUtf8( "Enter a color name and hit return:" ) );
+
+ groupBoxLayout.addWidget( TextLabel1_2_2, 0, 1 );
+
+ spinBox = new QSpinBox( groupBox, "spinBox" );
+
+ groupBoxLayout.addWidget( spinBox, 1, 2 );
+
+ progressBar = new QProgressBar( groupBox, "progressBar" );
+
+ groupBoxLayout.addWidget( progressBar, 0, 2 );
+
+ colorTest = new QLabel( groupBox, "colorTest" );
+ colorTest.setFrameShape( QLabel.Box );
+ colorTest.setFrameShadow( QLabel.Sunken );
+ colorTest.setText( trUtf8( "Color test area" ) );
+ colorTest.setAlignment( QLabel.AlignAuto | QLabel.AlignCenter );
+
+ groupBoxLayout.addWidget( colorTest, 2, 1 );
+
+ WidgetsBaseLayout.addMultiCellWidget( groupBox, 1, 1, 0, 1 );
+
+ Layout9 = new QHBoxLayout();
+ Layout9.setSpacing( 6 );
+ Layout9.setMargin( 0 );
+
+ PixmapLabel1 = new QLabel( this, "PixmapLabel1" );
+ PixmapLabel1.setFrameShape( QLabel.Panel );
+ PixmapLabel1.setMargin( 1 );
+ PixmapLabel1.setPixmap( image41 );
+ PixmapLabel1.setScaledContents( true );
+ Layout9.addWidget( PixmapLabel1 );
+
+ ButtonGroup1 = new QButtonGroup( this, "ButtonGroup1" );
+ ButtonGroup1.setTitle( trUtf8( "Check boxes" ) );
+ ButtonGroup1.setColumnLayout(0, Qt.Vertical );
+ ButtonGroup1.layout().setSpacing( 0 );
+ ButtonGroup1.layout().setMargin( 0 );
+ ButtonGroup1Layout = new QGridLayout( ButtonGroup1.layout() );
+ ButtonGroup1Layout.setAlignment( Qt.AlignTop );
+ ButtonGroup1Layout.setSpacing( 6 );
+ ButtonGroup1Layout.setMargin( 11 );
+
+ CheckBox1 = new QCheckBox( ButtonGroup1, "CheckBox1" );
+ CheckBox1.setText( trUtf8( "Apples" ) );
+
+ ButtonGroup1Layout.addWidget( CheckBox1, 0, 0 );
+
+ CheckBox2 = new QCheckBox( ButtonGroup1, "CheckBox2" );
+ CheckBox2.setText( trUtf8( "Banana" ) );
+
+ ButtonGroup1Layout.addWidget( CheckBox2, 1, 0 );
+
+ CheckBox3 = new QCheckBox( ButtonGroup1, "CheckBox3" );
+ CheckBox3.setText( trUtf8( "Orange" ) );
+ CheckBox3.setChecked( true );
+
+ ButtonGroup1Layout.addWidget( CheckBox3, 2, 0 );
+ Layout9.addWidget( ButtonGroup1 );
+
+ ButtonGroup2 = new QButtonGroup( this, "ButtonGroup2" );
+ ButtonGroup2.setTitle( trUtf8( "Radio buttons" ) );
+ ButtonGroup2.setColumnLayout(0, Qt.Vertical );
+ ButtonGroup2.layout().setSpacing( 0 );
+ ButtonGroup2.layout().setMargin( 0 );
+ ButtonGroup2Layout = new QGridLayout( ButtonGroup2.layout() );
+ ButtonGroup2Layout.setAlignment( Qt.AlignTop );
+ ButtonGroup2Layout.setSpacing( 6 );
+ ButtonGroup2Layout.setMargin( 11 );
+
+ RadioButton3 = new QRadioButton( ButtonGroup2, "RadioButton3" );
+ RadioButton3.setText( trUtf8( "Sprite" ) );
+
+ ButtonGroup2Layout.addWidget( RadioButton3, 1, 0 );
+
+ RadioButton4 = new QRadioButton( ButtonGroup2, "RadioButton4" );
+ RadioButton4.setText( trUtf8( "Farris" ) );
+
+ ButtonGroup2Layout.addWidget( RadioButton4, 2, 0 );
+
+ RadioButton2 = new QRadioButton( ButtonGroup2, "RadioButton2" );
+ RadioButton2.setText( trUtf8( "Solo" ) );
+ RadioButton2.setChecked( true );
+
+ ButtonGroup2Layout.addWidget( RadioButton2, 0, 0 );
+ Layout9.addWidget( ButtonGroup2 );
+
+ GroupBox1 = new QGroupBox( this, "GroupBox1" );
+ sizePolicy2 = new QSizePolicy();
+ sizePolicy2.setHorData(7);
+ sizePolicy2.setVerData(7);
+ sizePolicy2.setHeightForWidth(GroupBox1.sizePolicy().hasHeightForWidth());
+ GroupBox1.setSizePolicy( sizePolicy2 );
+ GroupBox1.setTitle( trUtf8( "Date/Time editors" ) );
+ GroupBox1.setColumnLayout(0, Qt.Vertical );
+ GroupBox1.layout().setSpacing( 0 );
+ GroupBox1.layout().setMargin( 0 );
+ GroupBox1Layout = new QGridLayout( GroupBox1.layout() );
+ GroupBox1Layout.setAlignment( Qt.AlignTop );
+ GroupBox1Layout.setSpacing( 6 );
+ GroupBox1Layout.setMargin( 11 );
+
+ clock = new AnalogClock( GroupBox1, "clock" );
+ sizePolicy3 = new QSizePolicy();
+ sizePolicy3.setHorData(0);
+ sizePolicy3.setVerData(0);
+ sizePolicy3.setHeightForWidth(clock.sizePolicy().hasHeightForWidth());
+ clock.setSizePolicy( sizePolicy3 );
+ clock.setMinimumSize( new QSize( 100, 100 ) );
+
+ GroupBox1Layout.addMultiCellWidget( clock, 0, 2, 0, 0 );
+
+ dateEdit = new QDateEdit( GroupBox1, "dateEdit" );
+
+ GroupBox1Layout.addWidget( dateEdit, 1, 1 );
+
+ timeEdit = new QTimeEdit( GroupBox1, "timeEdit" );
+ timeEdit.setAutoAdvance( true );
+
+ GroupBox1Layout.addWidget( timeEdit, 2, 1 );
+
+ Layout5 = new QHBoxLayout();
+ Layout5.setSpacing( 6 );
+ Layout5.setMargin( 0 );
+
+ dateTimeLabel = new QLabel( GroupBox1, "dateTimeLabel" );
+ dateTimeLabel.setText( trUtf8( "DateTime string goes here!" ) );
+ Layout5.addWidget( dateTimeLabel );
+ QSpacerItem spacer = new QSpacerItem( 20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum );
+ Layout5.addItem( spacer );
+
+ GroupBox1Layout.addLayout( Layout5, 0, 1 );
+ Layout9.addWidget( GroupBox1 );
+
+ WidgetsBaseLayout.addMultiCellLayout( Layout9, 0, 0, 0, 1 );
+
+
+
+
+
+ // signals and slots connections
+ connect( slider, SIGNAL( "valueChanged(int)" ), lcdDisplay, SLOT( "display(int)" ) );
+ connect( slider, SIGNAL( "valueChanged(int)" ), progressBar, SLOT( "setProgress(int)" ) );
+ connect( dateEdit, SIGNAL( "valueChanged(Calendar)" ), this, SLOT( "updateDateTimeString()" ) );
+ connect( slider, SIGNAL( "valueChanged(int)" ), spinBox, SLOT( "setValue(int)" ) );
+ connect( spinBox, SIGNAL( "valueChanged(int)" ), slider, SLOT( "setValue(int)" ) );
+ connect( spinBox, SIGNAL( "valueChanged(int)" ), progressBar, SLOT( "setProgress(int)" ) );
+ connect( spinBox, SIGNAL( "valueChanged(int)" ), lcdDisplay, SLOT( "display(int)" ) );
+ connect( buttonColorBox, SIGNAL( "activated(String)" ), this, SLOT( "setColor(String)" ) );
+ connect( lineEdit, SIGNAL( "textChanged(String)" ), this, SLOT( "updateColorTest(String)" ) );
+ connect( lineEdit, SIGNAL( "returnPressed()" ), this, SLOT( "setColor()" ) );
+ connect( timeEdit, SIGNAL( "valueChanged(Date)" ), this, SLOT( "updateDateTimeString()" ) );
+ connect( timeEdit, SIGNAL( "valueChanged(Date)" ), this, SLOT( "updateClock()" ) );
+ connect( pushButton, SIGNAL( "clicked()" ), this, SLOT( "resetColors()" ) );
+
+ init();
+}
+
+WidgetsBase( QWidget parent, String name)
+{
+ this(parent, name, 0);
+}
+
+WidgetsBase( QWidget parent)
+{
+ this(parent, null, 0);
+}
+
+WidgetsBase( )
+{
+ this(null, null, 0);
+}
+
+public void resetColors()
+{
+ groupBox.setPalette( palette() );
+}
+
+public void setColor()
+{
+ setColor( lineEdit.text() );
+}
+
+public void updateClock()
+{
+ clock.setTime( timeEdit.time() );
+}
+
+void init()
+{
+ timeEdit.setTime( new Date() );
+ dateEdit.setDate( Calendar.getInstance() );
+}
+
+public void destroy()
+{
+}
+
+public void setColor(String color)
+{
+ groupBox.setPalette( new QPalette(new QColor( color )) );
+}
+
+public void updateColorTest(String color)
+{
+ colorTest.setPalette( new QPalette(new QColor( color )) );
+}
+
+public void updateDateTimeString()
+{
+// Calendar dt = Calendar.getInstance();
+ DateFormat df = DateFormat.getInstance();
+// df.setCalendar(dt);
+// dt.setDate( dateEdit.date() );
+// dt.setTime( timeEdit.time() );
+ dateTimeLabel.setText( df.format(timeEdit.time()) );
+}
+
+}
diff --git a/qtjava/javalib/examples/dragdrop/DropSite.java b/qtjava/javalib/examples/dragdrop/DropSite.java
new file mode 100644
index 00000000..3584f1e4
--- /dev/null
+++ b/qtjava/javalib/examples/dragdrop/DropSite.java
@@ -0,0 +1,167 @@
+/***************************************************************************
+* $Id$
+**
+* Drop site example implementation
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.*;
+
+
+class DropSite extends QLabel
+{
+ SecretSource s;
+
+void setSecretSource(SecretSource source)
+{
+ s = source;
+}
+
+DropSite( QWidget parent )
+{
+ this(parent, null);
+}
+
+DropSite( QWidget parent, String name )
+{
+ super( parent, name );
+ setAcceptDrops(true);
+}
+
+
+{
+ // nothing necessary
+}
+
+
+protected void dragMoveEvent( QDragMoveEvent e )
+{
+ // Check if you want the drag at e.pos()...
+ // Give the user some feedback...
+}
+
+
+protected void dragEnterEvent( QDragEnterEvent e )
+{
+ // Check if you want the drag...
+ if ( SecretDrag.canDecode( e )
+ || QTextDrag.canDecode( e )
+ || QImageDrag.canDecode( e )
+ || QUriDrag.canDecode( e ) ) {
+ e.accept();
+ }
+
+ // Give the user some feedback...
+ String t = "";
+ for( int i=0; e.format( i ) != null; i++ ) {
+ t += "\n";
+ t += e.format( i );
+ }
+ emit("message", t );
+ setBackgroundColor(white());
+}
+
+protected void dragLeaveEvent( QDragLeaveEvent e )
+{
+ // Give the user some feedback...
+ emit("message", "");
+ setBackgroundColor(lightGray());
+}
+
+
+protected void dropEvent( QDropEvent e )
+{
+ setBackgroundColor(lightGray());
+
+ // Try to decode to the data you understand...
+
+ StringBuffer str = new StringBuffer("");
+ if ( QTextDrag.decode( e, str ) ) {
+ setText( str.toString() );
+ setMinimumSize( minimumSize().expandedTo( sizeHint() ) );
+ return;
+ }
+
+ QPixmap pm = new QPixmap();
+ if ( QImageDrag.decode( e, pm ) ) {
+ setPixmap( pm );
+ setMinimumSize( minimumSize().expandedTo( sizeHint() ) );
+ return;
+ }
+
+ ArrayList strings = new ArrayList();
+ if ( QUriDrag.decode( e, strings ) ) {
+ String m = "Full URLs:\n";
+ Iterator it = strings.iterator();
+ while (it.hasNext())
+ m += " " + (String) it.next() + "\n";
+ ArrayList files = new ArrayList();
+ if ( QUriDrag.decodeLocalFiles( e, files ) ) {
+ m = m + "Files:\n";
+ Iterator i = strings.iterator();
+ while (i.hasNext())
+ m = m + " " + (String) i.next() + "\n";
+ }
+ setText( m );
+ setMinimumSize( minimumSize().expandedTo( sizeHint() ) );
+ return;
+ }
+
+ if ( SecretDrag.decode( e, str ) ) {
+ setText( str.toString() );
+ setMinimumSize( minimumSize().expandedTo( sizeHint() ) );
+ return;
+ }
+}
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ QDragObject drobj;
+ if ( pixmap() != null ) {
+ drobj = new QImageDrag( pixmap().convertToImage(), this );
+ QPixmap pm = new QPixmap();
+ pm.convertFromImage(pixmap().convertToImage().smoothScale(
+ pixmap().width()/3,pixmap().height()/3));
+ drobj.setPixmap(pm,new QPoint(-5,-7));
+ // Try it.
+// new DragMoviePlayer(drobj);
+ } else {
+ drobj = new QTextDrag( text(), this );
+ }
+ drobj.dragCopy();
+}
+
+class DragMoviePlayer extends QObject {
+ QDragObject dobj;
+ QMovie movie;
+
+DragMoviePlayer( QDragObject p )
+{
+// QObject(p),
+ dobj = p;
+ movie = new QMovie("trolltech.gif" );
+ movie.connectUpdate(this,SLOT("updatePixmap(QRect)"));
+}
+
+void updatePixmap( QRect rect )
+{
+ dobj.setPixmap(movie.framePixmap());
+}
+
+
+}
+
+void backgroundColorChange( QColor color )
+{
+ // Reduce flicker by using repaint() rather than update()
+ repaint();
+}
+
+}
diff --git a/qtjava/javalib/examples/dragdrop/Main.java b/qtjava/javalib/examples/dragdrop/Main.java
new file mode 100644
index 00000000..3297aaec
--- /dev/null
+++ b/qtjava/javalib/examples/dragdrop/Main.java
@@ -0,0 +1,87 @@
+/***************************************************************************
+* $Id$
+**
+* Ritual main() for Qt applications
+**
+* Copyright (C) 1996 by Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+
+static DropSite addStuff( QWidget parent, boolean image )
+{
+ return addStuff(parent, image, false);
+}
+
+static DropSite addStuff( QWidget parent, boolean image, boolean secret )
+{
+ QVBoxLayout tll = new QVBoxLayout( parent, 10 );
+ DropSite d = new DropSite( parent );
+ d.setFrameStyle( QFrame.Sunken + QFrame.WinPanel );
+ tll.addWidget( d );
+ if ( image ) {
+ QPixmap stuff = new QPixmap();
+ if ( !stuff.load( "trolltech.bmp" ) ) {
+ stuff = new QPixmap(20,20);
+ stuff.fill(Qt.green());
+ }
+ d.setPixmap( stuff );
+ } else {
+ d.setText("Drag and Drop");
+ }
+ d.setFont(new QFont("Helvetica",18));
+ if ( secret ) {
+ SecretSource s = new SecretSource( (byte) 42, parent );
+ tll.addWidget( s );
+ d.setSecretSource( s);
+ }
+
+ QLabel format = new QLabel( "\n\n\n\nNone\n\n\n\n", parent );
+ tll.addWidget( format );
+ tll.activate();
+ parent.resize( parent.sizeHint() );
+
+ QObject.connect( d, Qt.SIGNAL("message(String)"),
+ format, Qt.SLOT("setText(String)") );
+ return d;
+}
+
+
+
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+
+ QWidget mw = new QWidget();
+ DropSite d1 = addStuff( mw, true );
+ mw.setCaption( "Qt Example - Drag and Drop" );
+ mw.show();
+
+ QWidget mw2 = new QWidget();
+ DropSite d2 = addStuff( mw2, false );
+ mw2.setCaption( "Qt Example - Drag and Drop" );
+ mw2.show();
+
+ QWidget mw3 = new QWidget();
+ DropSite d3 = addStuff( mw3, true, true );
+ mw3.setCaption( "Qt Example - Drag and Drop" );
+ mw3.show();
+
+ QObject.connect(Qt.qApp(),Qt.SIGNAL("lastWindowClosed()"),Qt.qApp(),Qt.SLOT("quit()"));
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/dragdrop/SecretDrag.java b/qtjava/javalib/examples/dragdrop/SecretDrag.java
new file mode 100644
index 00000000..fd12aed3
--- /dev/null
+++ b/qtjava/javalib/examples/dragdrop/SecretDrag.java
@@ -0,0 +1,53 @@
+/***************************************************************************
+* $Id$
+**
+* Custom MIME type implementation example
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+
+class SecretDrag extends QStoredDrag {
+
+//create the object withe the secret byte
+public SecretDrag( byte secret, QWidget parent, String name )
+{
+ super( "secret/magic", parent, name );
+ byte[] data = { 0 };
+ data[0]= secret;
+ setEncodedData( data );
+}
+
+public SecretDrag( byte secret, QWidget parent )
+{
+ this(secret, parent, null);
+}
+
+
+public static boolean canDecode( QDragMoveEvent e )
+{
+ return e.provides( "secret/magic" );
+}
+
+//decode it into a string
+public static boolean decode( QDropEvent e, StringBuffer str )
+{
+ byte[] payload = e.data( "secret/magic" );
+ if ( payload.length > 0 ) {
+ e.accept();
+ String msg = "The secret number is " + payload[0];
+ str.setLength(0);
+ str.append(msg);
+ return true;
+ }
+ return false;
+}
+
+}
diff --git a/qtjava/javalib/examples/dragdrop/SecretSource.java b/qtjava/javalib/examples/dragdrop/SecretSource.java
new file mode 100644
index 00000000..00824dee
--- /dev/null
+++ b/qtjava/javalib/examples/dragdrop/SecretSource.java
@@ -0,0 +1,69 @@
+/***************************************************************************
+* $Id$
+**
+* Custom MIME type implementation example
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+class SecretSource extends QLabel
+{
+private int mySecret;
+
+SecretSource( byte secret, QWidget parent )
+{
+ this(secret, parent, null);
+}
+
+SecretSource( byte secret, QWidget parent, String name )
+{
+ super( "Secret", parent, name );
+ setBackgroundColor( blue().light() );
+ setFrameStyle( Box | Sunken );
+ setMinimumHeight( sizeHint().height() * 2 );
+ setAlignment( AlignCenter );
+ mySecret = secret;
+}
+
+{
+}
+
+/* XPM */
+static String picture_xpm[] = {
+"16 16 3 1",
+" c None",
+". c #000000",
+"X c #FFFF00",
+" ..... ",
+" ..XXXXX.. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXXXX. ",
+" .XX..XXX..XX. ",
+".XXXXXXXXXXXXX. ",
+".XX...XXX...XX. ",
+".XXX..XXX..XXX. ",
+".XXXXXXXXXXXXX. ",
+".XXXXXX.XXXXXX. ",
+" .XX.XX.XX.XX. ",
+" .XXX..X..XXX. ",
+" .XXXXXXXXX. ",
+" ..XXXXX.. ",
+" ..... ",
+" "};
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ SecretDrag sd = new SecretDrag( (byte) mySecret, this );
+ sd.setPixmap(new QPixmap(picture_xpm),new QPoint(8,8));
+ sd.dragCopy();
+ mySecret++;
+}
+
+}
diff --git a/qtjava/javalib/examples/dragdrop/trolltech.bmp b/qtjava/javalib/examples/dragdrop/trolltech.bmp
new file mode 100644
index 00000000..220861e2
--- /dev/null
+++ b/qtjava/javalib/examples/dragdrop/trolltech.bmp
Binary files differ
diff --git a/qtjava/javalib/examples/dragdrop/trolltech.gif b/qtjava/javalib/examples/dragdrop/trolltech.gif
new file mode 100644
index 00000000..f674369e
--- /dev/null
+++ b/qtjava/javalib/examples/dragdrop/trolltech.gif
Binary files differ
diff --git a/qtjava/javalib/examples/drawlines/ConnectWidget.java b/qtjava/javalib/examples/drawlines/ConnectWidget.java
new file mode 100644
index 00000000..c51f2703
--- /dev/null
+++ b/qtjava/javalib/examples/drawlines/ConnectWidget.java
@@ -0,0 +1,122 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.Random;
+
+//
+// ConnectWidget - draws connected lines
+//
+class ConnectWidget extends QWidget
+{
+static final int MAXPOINTS = 2000; // maximum number of points
+static final int MAXCOLORS = 40;
+
+private QPoint[] points; // point array
+private QColor[] colors; // color array
+private int count; // count = number of points
+private boolean down; // true if mouse down
+private Random generator = new Random(System.currentTimeMillis());
+
+//
+// Constructs a ConnectWidget.
+//
+public ConnectWidget( )
+{
+ this(null, null);
+}
+
+public ConnectWidget( QWidget parent, String name )
+{
+ super( parent, name, WStaticContents );
+ setBackgroundColor( white() ); // white background
+ count = 0;
+ down = false;
+ points = new QPoint[MAXPOINTS];
+ colors = new QColor[MAXCOLORS];
+ for ( int i=0; i<MAXCOLORS; i++ ) // init color array
+ colors[i] = new QColor( generator.nextInt(255), generator.nextInt(255), generator.nextInt(255) );
+}
+
+
+//
+// Handles paint events for the connect widget.
+//
+
+protected void paintEvent( QPaintEvent e )
+{
+ QPainter paint = new QPainter( this );
+ for ( int i=0; i<count-1; i++ ) { // connect all points
+ for ( int j=i+1; j<count; j++ ) {
+ paint.setPen( colors[generator.nextInt(MAXCOLORS)] ); // set random pen color
+ paint.drawLine( points[i], points[j] ); // draw line
+ }
+ }
+ paint.end();
+}
+
+
+//
+// Handles mouse press events for the connect widget.
+//
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ down = true;
+ count = 0; // start recording points
+ erase(); // erase widget contents
+}
+
+
+//
+// Handles mouse release events for the connect widget.
+//
+
+protected void mouseReleaseEvent( QMouseEvent e )
+{
+ down = false; // done recording points
+ update(); // draw the lines
+}
+
+
+//
+// Handles mouse move events for the connect widget.
+//
+
+protected void mouseMoveEvent( QMouseEvent e )
+{
+ if ( down && count < MAXPOINTS ) {
+ QPainter paint = new QPainter( this );
+ points[count++] = new QPoint(e.pos()); // add point
+ paint.drawPoint( e.pos() ); // plot point
+ paint.end();
+ }
+}
+
+
+//
+// Create and display a ConnectWidget.
+//
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+ ConnectWidget connect = new ConnectWidget();
+ connect.setCaption( "Qt Example - Draw lines");
+ a.setMainWidget( connect );
+ connect.show();
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/drawlines/README b/qtjava/javalib/examples/drawlines/README
new file mode 100644
index 00000000..2a7c577c
--- /dev/null
+++ b/qtjava/javalib/examples/drawlines/README
@@ -0,0 +1,3 @@
+The connect program connects points with lines. Drag the mouse
+inside the widget and release it. It was inspired by an example in a
+Windows book.
diff --git a/qtjava/javalib/examples/forever/Forever.java b/qtjava/javalib/examples/forever/Forever.java
new file mode 100644
index 00000000..24cebcd3
--- /dev/null
+++ b/qtjava/javalib/examples/forever/Forever.java
@@ -0,0 +1,120 @@
+/***************************************************************************
+* $Id$
+**
+* Definition of something or other
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.Random;
+
+
+
+class Forever extends QWidget
+{
+static final int numColors = 120;
+
+private int rectangles;
+private QColor[] colors = new QColor[numColors];
+private Random generator = new Random(System.currentTimeMillis());
+
+
+
+//
+// Forever - a widget that draws rectangles forever.
+//
+
+//
+// Constructs a Forever widget.
+//
+Forever( )
+{
+ this(null, null);
+}
+
+Forever( QWidget parent, String name )
+{
+ super( parent, name );
+ for (int a=0; a<numColors; a++) {
+ colors[a] = new QColor( generator.nextInt(255),
+ generator.nextInt(255),
+ generator.nextInt(255) );
+ }
+ rectangles = 0;
+ startTimer( 0 ); // run continuous timer
+ QTimer counter = new QTimer( this );
+ connect( counter, SIGNAL("timeout()"),
+ this, SLOT("updateCaption()") );
+ counter.start( 1000 );
+}
+
+
+void updateCaption()
+{
+ String s = "Qt Example - Forever - " + rectangles + " rectangles/second";
+ rectangles = 0;
+ setCaption( s );
+}
+
+
+//
+// Handles paint events for the Forever widget.
+//
+
+protected void paintEvent( QPaintEvent e )
+{
+ QPainter paint = new QPainter( this ); // painter object
+ int w = width();
+ int h = height();
+ if(w <= 0 || h <= 0)
+ return;
+ paint.setPen( NoPen ); // do not draw outline
+ paint.setBrush( colors[generator.nextInt(numColors)]);// set random brush color
+
+// QPoint p1 = new QPoint( generator.nextInt(w), generator.nextInt(h)); // p1 = top left
+// QPoint p2 = new QPoint( generator.nextInt(w), generator.nextInt(h)); // p2 = bottom right
+
+// QRect r = new QRect( p1, p2 );
+// paint.drawRect( r ); // draw filled rectangle
+ paint.drawRect( generator.nextInt(w), generator.nextInt(h),
+ generator.nextInt(w), generator.nextInt(h) ); // draw filled rectangle
+}
+
+//
+// Handles timer events for the Forever widget.
+//
+
+protected void timerEvent( QTimerEvent e )
+{
+ for ( int i=0; i<100; i++ ) {
+ repaint( false ); // repaint, don't erase
+ rectangles++;
+ }
+}
+
+
+//
+// Create and display Forever widget.
+//
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args ); // create application object
+ Forever always = new Forever(); // create widget
+ a.setMainWidget( always ); // set as main widget
+ always.setCaption("Qt Example - Forever");
+ always.show(); // show widget
+ a.exec(); // run event loop
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+}
diff --git a/qtjava/javalib/examples/forever/README b/qtjava/javalib/examples/forever/README
new file mode 100644
index 00000000..00aeedc5
--- /dev/null
+++ b/qtjava/javalib/examples/forever/README
@@ -0,0 +1,3 @@
+The forever program draws filled rectangles with random color and random
+position and size.
+
diff --git a/qtjava/javalib/examples/hello/Hello.java b/qtjava/javalib/examples/hello/Hello.java
new file mode 100644
index 00000000..c5e85041
--- /dev/null
+++ b/qtjava/javalib/examples/hello/Hello.java
@@ -0,0 +1,107 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+class Hello extends QWidget
+{
+private String t;
+private int b = 0;
+
+
+/*
+ Constructs a Hello widget. Starts a 40 ms animation timer.
+*/
+Hello( String text )
+{
+ this(text, null, null);
+}
+
+Hello( String text, QWidget parent, String name )
+{
+ super(parent,name);
+ t = text;
+ QTimer timer = new QTimer(this);
+ connect( timer, SIGNAL("timeout()"), SLOT("animate()") );
+ timer.start( 40 );
+
+ resize( 260, 130 );
+}
+
+
+/*
+ This private slot is called each time the timer fires.
+*/
+
+void animate()
+{
+ b = (b + 1) & 15;
+ repaint( false );
+}
+
+
+/*
+ Handles mouse button release events for the Hello widget.
+
+ We emit the clicked() signal when the mouse is released inside
+ the widget.
+*/
+
+protected void mouseReleaseEvent( QMouseEvent e )
+{
+ if ( rect().contains( e.pos() ) )
+ emit("clicked");
+}
+
+
+ static int sin_tbl[] = {
+ 0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38};
+
+/*
+ Handles paint events for the Hello widget.
+
+ Flicker-free update. The text is first drawn in the pixmap and the
+ pixmap is then blt'ed to the screen.
+*/
+protected void paintEvent( QPaintEvent e )
+{
+ if ( t.equals("") )
+ return;
+
+ // 1: Compute some sizes, positions etc.
+ QFontMetrics fm = fontMetrics();
+ int w = fm.width(t) + 20;
+ int h = fm.height() * 2;
+ int pmx = width()/2 - w/2;
+ int pmy = height()/2 - h/2;
+
+ // 2: Create the pixmap and fill it with the widget's background
+ QPixmap pm = new QPixmap( w, h );
+ pm.fill( this, pmx, pmy );
+
+ // 3: Paint the pixmap. Cool wave effect
+ QPainter p = new QPainter();
+ int x = 10;
+ int y = h/2 + fm.descent();
+ int i = 0;
+ p.begin( pm );
+ p.setFont( font() );
+ while ( i < t.length() ) {
+ int i16 = (b+i) & 15;
+ p.setPen( new QColor((15-i16)*16,255,255,QColor.Hsv) );
+ p.drawText( x, y-sin_tbl[i16]*h/800, t.substring(i,i+1), 1 );
+ x += fm.width( t.substring(i,i+1) );
+ i++;
+ }
+ p.end();
+
+ // 4: Copy the pixmap to the Hello widget
+ bitBlt( this, pmx, pmy, pm );
+}
+}
diff --git a/qtjava/javalib/examples/hello/Main.java b/qtjava/javalib/examples/hello/Main.java
new file mode 100644
index 00000000..1313b2cf
--- /dev/null
+++ b/qtjava/javalib/examples/hello/Main.java
@@ -0,0 +1,45 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+/*
+ The program starts here. It parses the command line and builds a message
+ string to be displayed by the Hello widget.
+*/
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication(args);
+ String s = "";
+ for ( int i=1; i<args.length; i++ ) {
+ s += args[i];
+ if ( i<args.length-1 )
+ s += " ";
+ }
+ if ( s.equals("") )
+ s = "Hello, World";
+ Hello h = new Hello( s );
+ h.setCaption( "Qt says hello" );
+ QObject.connect( h, Qt.SIGNAL("clicked()"), a, Qt.SLOT("quit()") );
+ h.setFont( new QFont("times",32,QFont.Bold) ); // default font
+ h.setBackgroundColor( Qt.white() ); // default bg color
+ a.setMainWidget( h );
+ h.show();
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/hello/README b/qtjava/javalib/examples/hello/README
new file mode 100644
index 00000000..1d956010
--- /dev/null
+++ b/qtjava/javalib/examples/hello/README
@@ -0,0 +1,3 @@
+Since the classic "hello world" program is too trivial in Qt, We made
+this one - it draws the words "hello world" moving around and in
+rainbow colors.
diff --git a/qtjava/javalib/examples/helpviewer/HelpWindow.java b/qtjava/javalib/examples/helpviewer/HelpWindow.java
new file mode 100644
index 00000000..abec33e1
--- /dev/null
+++ b/qtjava/javalib/examples/helpviewer/HelpWindow.java
@@ -0,0 +1,364 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+import java.util.*;
+
+
+class HelpWindow extends QMainWindow
+{
+private QTextBrowser browser;
+private QComboBox pathCombo;
+private int backwardId, forwardId;
+private String selectedURL;
+private ArrayList history = new ArrayList();
+private ArrayList bookmarks = new ArrayList();
+private HashMap mHistory = new HashMap();
+private HashMap mBookmarks = new HashMap();
+private QPopupMenu hist, bookm;
+
+
+
+
+HelpWindow( String home_, String _path )
+{
+ this(home_, _path, null, null);
+}
+
+HelpWindow( String home_, String _path,
+ QWidget parent, String name )
+{
+ super( parent, name, WDestructiveClose );
+ readHistory();
+ readBookmarks();
+
+ browser = new QTextBrowser( this );
+
+ browser.mimeSourceFactory().setFilePath( new String[] { _path } );
+ browser.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+ connect( browser, SIGNAL(" textChanged()"),
+ this, SLOT(" textChanged()") );
+
+ setCentralWidget( browser );
+
+ if ( !home_.equals("") )
+ browser.setSource( home_ );
+
+ connect( browser, SIGNAL(" highlighted( String)"),
+ statusBar(), SLOT(" message( String)") );
+
+ resize( 640,700 );
+
+ QPopupMenu file = new QPopupMenu( this );
+ file.insertItem( tr("&New Window"), this, SLOT(" newWindow()"), new QKeySequence(CTRL+Key_N) );
+ file.insertItem( tr("&Open File"), this, SLOT(" openFile()"), new QKeySequence(CTRL+Key_O) );
+ file.insertItem( tr("&Print"), this, SLOT(" print()"), new QKeySequence(CTRL+Key_P) );
+ file.insertSeparator();
+ file.insertItem( tr("&Close"), this, SLOT(" close()"), new QKeySequence(CTRL+Key_Q) );
+ file.insertItem( tr("E&xit"), qApp(), SLOT(" closeAllWindows()"), new QKeySequence(CTRL+Key_X) );
+
+ // The same three icons are used twice each.
+ QIconSet icon_back = new QIconSet( new QPixmap("back.xpm") );
+ QIconSet icon_forward = new QIconSet( new QPixmap("forward.xpm") );
+ QIconSet icon_home = new QIconSet( new QPixmap("home.xpm") );
+
+ QPopupMenu go = new QPopupMenu( this );
+ backwardId = go.insertItem( icon_back,
+ tr("&Backward"), browser, SLOT(" backward()"),
+ new QKeySequence(CTRL+Key_Left) );
+ forwardId = go.insertItem( icon_forward,
+ tr("&Forward"), browser, SLOT(" forward()"),
+ new QKeySequence(CTRL+Key_Right) );
+ go.insertItem( icon_home, 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()") );
+
+ hist = new QPopupMenu( this );
+ Iterator it = history.iterator();
+ while (it.hasNext()) {
+ String item = (String) it.next();
+ mHistory.put(new Integer(hist.insertItem( item )), item);
+ }
+ connect( hist, SIGNAL(" activated( int )"),
+ this, SLOT(" histChosen( int )") );
+
+ bookm = new QPopupMenu( this );
+ bookm.insertItem( tr( "Add Bookmark" ), this, SLOT(" addBookmark()") );
+ bookm.insertSeparator();
+
+ Iterator it2 = bookmarks.iterator();
+ while (it2.hasNext()) {
+ String item = (String) it2.next();
+ mBookmarks.put(new Integer(bookm.insertItem( item )), item);
+ }
+ connect( bookm, SIGNAL(" activated( int )"),
+ this, SLOT(" bookmChosen( int )") );
+
+ menuBar().insertItem( tr("&File"), file );
+ menuBar().insertItem( tr("&Go"), go );
+ menuBar().insertItem( tr( "History" ), hist );
+ menuBar().insertItem( tr( "Bookmarks" ), bookm );
+ menuBar().insertSeparator();
+ menuBar().insertItem( tr("&Help"), help );
+
+ menuBar().setItemEnabled( forwardId, false);
+ menuBar().setItemEnabled( backwardId, false);
+ connect( browser, SIGNAL(" backwardAvailable( boolean )"),
+ this, SLOT(" setBackwardAvailable( boolean )") );
+ connect( browser, SIGNAL(" forwardAvailable( boolean )"),
+ this, SLOT(" setForwardAvailable( boolean )") );
+
+
+ QToolBar toolbar = new QToolBar( this );
+ addToolBar( toolbar, "Toolbar");
+ QToolButton button;
+
+ button = new QToolButton( icon_back, tr("Backward"), "", browser, SLOT("backward()"), toolbar );
+ connect( browser, SIGNAL(" backwardAvailable(boolean)"), button, SLOT(" setEnabled(boolean)") );
+ button.setEnabled( false );
+ button = new QToolButton( icon_forward, tr("Forward"), "", browser, SLOT("forward()"), toolbar );
+ connect( browser, SIGNAL(" forwardAvailable(boolean)"), button, SLOT(" setEnabled(boolean)") );
+ button.setEnabled( false );
+ button = new QToolButton( icon_home, tr("Home"), "", browser, SLOT("home()"), toolbar );
+
+ toolbar.addSeparator();
+
+ pathCombo = new QComboBox( true, toolbar );
+ connect( pathCombo, SIGNAL(" activated( String )"),
+ this, SLOT(" pathSelected( String )") );
+ toolbar.setStretchableWidget( pathCombo );
+ setRightJustification( true );
+ setDockEnabled( DockLeft, false );
+ setDockEnabled( DockRight, false );
+
+ pathCombo.insertItem( home_ );
+ browser.setFocus();
+
+}
+
+
+void setBackwardAvailable( boolean b)
+{
+ menuBar().setItemEnabled( backwardId, b);
+}
+
+void setForwardAvailable( boolean b)
+{
+ menuBar().setItemEnabled( forwardId, b);
+}
+
+
+void textChanged()
+{
+ if ( browser.documentTitle() == null ) {
+ setCaption( "Qt Example - Helpviewer - " + browser.context() );
+ selectedURL = browser.context();
+ }
+ else {
+ setCaption( "Qt Example - Helpviewer - " + browser.documentTitle() ) ;
+ selectedURL = browser.documentTitle();
+ }
+
+ if ( !selectedURL.equals("") && pathCombo != null ) {
+ boolean exists = false;
+ int i;
+ for ( i = 0; i < pathCombo.count(); ++i ) {
+ if ( pathCombo.text( i ) == selectedURL ) {
+ exists = true;
+ break;
+ }
+ }
+ if ( !exists ) {
+ pathCombo.insertItem( selectedURL, 0 );
+ pathCombo.setCurrentItem( 0 );
+ mHistory.put( new Integer(hist.insertItem( selectedURL )), selectedURL);
+ } else
+ pathCombo.setCurrentItem( i );
+ selectedURL = null;
+ }
+}
+
+public void cleanUp()
+{
+ history.clear();
+ Iterator it = mHistory.values().iterator();
+ while (it.hasNext())
+ history.add(it.next());
+
+ QFile f = new QFile( QDir.currentDirPath() + "/.history" );
+ f.open( QIODevice.IO_WriteOnly );
+ QTextStream t = new QTextStream( f );
+ Iterator it1 = history.iterator();
+ while (it1.hasNext()) {
+ String item = (String) it1.next();
+ t.writeRawBytes( item, item.length() );
+ t.writeRawBytes( "\n", 1 );
+ }
+ f.close();
+
+ bookmarks.clear();
+ Iterator it3 = mBookmarks.values().iterator();
+ while (it3.hasNext())
+ bookmarks.add(it3.next());
+
+ QFile f2 = new QFile( QDir.currentDirPath() + "/.bookmarks" );
+ f2.open( QIODevice.IO_WriteOnly );
+ QTextStream t2 = new QTextStream( f2 );
+ Iterator it2 = bookmarks.iterator();
+ while (it2.hasNext()) {
+ String item = (String) it2.next();
+ t2.writeRawBytes( item, item.length() );
+ t2.writeRawBytes( "\n", 1 );
+ }
+ f2.close();
+}
+
+
+void about()
+{
+ QMessageBox.about( this, "HelpViewer Example",
+ "<p>This example implements a simple HTML help viewer "
+ + "using Qt's rich text capabilities</p>"
+ + "<p>It's just about 100 lines of Java code, so don't expect too much :-)</p>"
+ );
+}
+
+
+void aboutQt()
+{
+ QMessageBox.aboutQt( this, "QBrowser" );
+}
+
+void openFile()
+{
+ String fn = QFileDialog.getOpenFileName( "", "", this );
+ if ( !fn.equals("") )
+ browser.setSource( fn );
+}
+
+void newWindow()
+{
+ ( new HelpWindow(browser.source(), "qbrowser") ).show();
+}
+
+void print()
+{
+ QPrinter printer = new QPrinter();//(QPrinter.HighResolution );
+ printer.setFullPage(true);
+ if ( printer.setup( this ) ) {
+ QPainter p = new QPainter( printer );
+ QPaintDeviceMetrics metrics = new QPaintDeviceMetrics(p.device());
+ int dpix = metrics.logicalDpiX();
+ int dpiy = metrics.logicalDpiY();
+ int margin = 72; // pt
+ QRect body = new QRect(margin*dpix/72, margin*dpiy/72,
+ metrics.width()-margin*dpix/72*2,
+ metrics.height()-margin*dpiy/72*2 );
+ QFont font = new QFont("times", 10);
+ ArrayList filePaths = browser.mimeSourceFactory().filePath();
+ String file = "";
+ Iterator it = filePaths.iterator();
+ while (it.hasNext()) {
+ file = new QUrl( new QUrl((String) it.next()), new QUrl( browser.source() ).path() ).path();
+ if ( QFile.exists( file ) )
+ break;
+ else
+ file = "";
+ }
+ if ( file.equals("") )
+ return;
+ QFile f = new QFile( file );
+ if ( !f.open( QIODevice.IO_ReadOnly ) )
+ return;
+ QTextStream ts = new QTextStream( f );
+ QSimpleRichText richText = new QSimpleRichText( ts.read(), font, browser.context(), browser.styleSheet(),
+ browser.mimeSourceFactory(), body.height() );
+ richText.setWidth( p, body.width() );
+ QRect view = new QRect( body.topLeft(), body.bottomRight() );
+ int page = 1;
+ do {
+ richText.draw( p, body.left(), body.top(), view, colorGroup() );
+ view.moveBy( 0, body.height() );
+ p.translate( 0 , -body.height() );
+ p.setFont( font );
+ p.drawText( view.right() - p.fontMetrics().width( new Integer(page).toString() ),
+ view.bottom() + p.fontMetrics().ascent() + 5, new Integer(page).toString() );
+ if ( view.top() >= richText.height() )
+ break;
+ printer.newPage();
+ page++;
+ } while (true);
+ }
+}
+
+void pathSelected( String _path )
+{
+ browser.setSource( _path );
+ Iterator it = mHistory.values().iterator();
+ boolean exists = false;
+ while (it.hasNext()) {
+ if ( ((String) it.next()).equals(_path) ) {
+ exists = true;
+ break;
+ }
+ }
+ if ( !exists )
+ mHistory.put( new Integer(hist.insertItem( _path )), _path);
+}
+
+void readHistory()
+{
+ if ( QFile.exists( QDir.currentDirPath() + "/.history" ) ) {
+ QFile f = new QFile( QDir.currentDirPath() + "/.history" );
+ f.open( QIODevice.IO_ReadOnly );
+ QTextStream t = new QTextStream( f );
+ while ( !t.atEnd() ) {
+ String item = t.readLine();
+ history.add((Object) item);
+ }
+ f.close();
+ while ( history.size() > 20 )
+ history.remove( 0 );
+ }
+}
+
+void readBookmarks()
+{
+ if ( QFile.exists( QDir.currentDirPath() + "/.bookmarks" ) ) {
+ QFile f = new QFile( QDir.currentDirPath() + "/.bookmarks" );
+ f.open( QIODevice.IO_ReadOnly );
+ QTextStream t = new QTextStream( f );
+
+ while ( !t.atEnd() ) {
+ String item = t.readLine();
+ bookmarks.add((Object) item);
+ }
+ f.close();
+ }
+}
+
+void histChosen( int i )
+{
+ if ( mHistory.containsKey( new Integer(i) ) )
+ browser.setSource( (String) mHistory.get( new Integer(i) ) );
+}
+
+void bookmChosen( int i )
+{
+ if ( mBookmarks.containsKey( new Integer(i) ) )
+ browser.setSource( (String) mBookmarks.get( new Integer(i) ) );
+}
+
+void addBookmark()
+{
+ mBookmarks.put( new Integer(bookm.insertItem( caption() )), browser.context() );
+}
+}
diff --git a/qtjava/javalib/examples/helpviewer/Main.java b/qtjava/javalib/examples/helpviewer/Main.java
new file mode 100644
index 00000000..da01e3dc
--- /dev/null
+++ b/qtjava/javalib/examples/helpviewer/Main.java
@@ -0,0 +1,48 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+
+public static void main( String[] args )
+{
+ QApplication.setColorSpec( QApplication.ManyColor );
+ QApplication a = new QApplication(args);
+
+ String home = null;
+ if (args.length > 0)
+ home = args[0];
+// else
+// home = System.getenv("QTDIR") + "/doc/html/index.html";
+
+
+ HelpWindow help = new HelpWindow(home, ".", null, "help viewer");
+ help.setCaption("Qt Example - Helpviewer");
+ if ( QApplication.desktop().width() > 400
+ && QApplication.desktop().height() > 500 )
+ help.show();
+ else
+ help.showMaximized();
+
+ QObject.connect( a, Qt.SIGNAL("aboutToQuit()"),
+ help, Qt.SLOT("cleanUp()") );
+ QObject.connect( a, Qt.SIGNAL("lastWindowClosed()"),
+ a, Qt.SLOT("quit()") );
+
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
diff --git a/qtjava/javalib/examples/helpviewer/back.xpm b/qtjava/javalib/examples/helpviewer/back.xpm
new file mode 100644
index 00000000..7dc5b72c
--- /dev/null
+++ b/qtjava/javalib/examples/helpviewer/back.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+/* Drawn by Mark Donohoe for the K Desktop Environment */
+/* See http://www.kde.org */
+static char*back[]={
+"16 16 5 1",
+"# c #000000",
+"a c #ffffff",
+"c c #808080",
+"b c #c0c0c0",
+". c None",
+"................",
+".......#........",
+"......##........",
+".....#a#........",
+"....#aa########.",
+"...#aabaaaaaaa#.",
+"..#aabbbbbbbbb#.",
+"...#abbbbbbbbb#.",
+"...c#ab########.",
+"....c#a#ccccccc.",
+".....c##c.......",
+"......c#c.......",
+".......cc.......",
+"........c.......",
+"................",
+"......................"};
+
diff --git a/qtjava/javalib/examples/helpviewer/forward.xpm b/qtjava/javalib/examples/helpviewer/forward.xpm
new file mode 100644
index 00000000..2ed81348
--- /dev/null
+++ b/qtjava/javalib/examples/helpviewer/forward.xpm
@@ -0,0 +1,28 @@
+/* XPM */
+/* Drawn by Mark Donohoe for the K Desktop Environment */
+/* See http://www.kde.org */
+static char*forward[]={
+"16 16 5 1",
+"# c #000000",
+"a c #ffffff",
+"c c #808080",
+"b c #c0c0c0",
+". c None",
+"................",
+"................",
+".........#......",
+".........##.....",
+".........#a#....",
+"..########aa#...",
+"..#aaaaaaabaa#..",
+"..#bbbbbbbbbaa#.",
+"..#bbbbbbbbba#..",
+"..########ba#c..",
+"..ccccccc#a#c...",
+"........c##c....",
+"........c#c.....",
+"........cc......",
+"........c.......",
+"................",
+"................"};
+
diff --git a/qtjava/javalib/examples/helpviewer/home.xpm b/qtjava/javalib/examples/helpviewer/home.xpm
new file mode 100644
index 00000000..9c1369d9
--- /dev/null
+++ b/qtjava/javalib/examples/helpviewer/home.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+/* Drawn by Mark Donohoe for the K Desktop Environment */
+/* See http://www.kde.org */
+static char*home[]={
+"16 16 4 1",
+"# c #000000",
+"a c #ffffff",
+"b c #c0c0c0",
+". c None",
+"........... ....",
+" ....##.......",
+"..#...####......",
+"..#..#aabb#.....",
+"..#.#aaaabb#....",
+"..##aaaaaabb#...",
+"..#aaaaaaaabb#..",
+".#aaaaaaaaabbb#.",
+"###aaaaaaaabb###",
+"..#aaaaaaaabb#..",
+"..#aaa###aabb#..",
+"..#aaa#.#aabb#..",
+"..#aaa#.#aabb#..",
+"..#aaa#.#aabb#..",
+"..#aaa#.#aabb#..",
+"..#####.######..",
+"................"};
+
diff --git a/qtjava/javalib/examples/iconview/ListenDND.java b/qtjava/javalib/examples/iconview/ListenDND.java
new file mode 100644
index 00000000..59521a55
--- /dev/null
+++ b/qtjava/javalib/examples/iconview/ListenDND.java
@@ -0,0 +1,69 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+
+class ListenDND extends QObject
+{
+
+public ListenDND( QWidget w )
+ {view = w;}
+
+ void dropped( QDropEvent mime ) {
+ qDebug( "Dropped Mimesource {0} into the view {1}", new Object[] { mime, view } );
+ qDebug( " Formats:" );
+ int i = 0;
+ String str = mime.format( i );
+ qDebug( " " + str );
+ while ( str != null ) {
+ qDebug( " " + str );
+ str = mime.format( ++i );
+ }
+ };
+ void moved() {
+ qDebug( "All selected items were moved to another widget" );
+ }
+
+protected QWidget view;
+
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+
+ QIconView qiconview = new QIconView();
+ qiconview.setSelectionMode( QIconView.Extended );
+
+ for ( int i = 0; i < 3000; i++ ) {
+ QIconViewItem item = new QIconViewItem( qiconview, "Item " + (i + 1) );
+ item.setRenameEnabled( true );
+ }
+
+ qiconview.setCaption( "Qt Example - Iconview" );
+
+ ListenDND listen_dnd = new ListenDND( qiconview );
+ QObject.connect( qiconview, SIGNAL(" dropped( QDropEvent , ArrayList )"),
+ listen_dnd, SLOT(" dropped( QDropEvent )") );
+ QObject.connect( qiconview, SIGNAL(" moved()"), listen_dnd, SLOT(" moved()") );
+
+ a.setMainWidget( qiconview );
+ qiconview.show();
+ qiconview.resize( qiconview.sizeHint() );
+
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
+
diff --git a/qtjava/javalib/examples/layout/ExampleWidget.java b/qtjava/javalib/examples/layout/ExampleWidget.java
new file mode 100644
index 00000000..77d96816
--- /dev/null
+++ b/qtjava/javalib/examples/layout/ExampleWidget.java
@@ -0,0 +1,152 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+
+class ExampleWidget extends QWidget
+{
+
+ExampleWidget( )
+{
+ this(null, null);
+}
+
+ExampleWidget( QWidget parent, String name )
+{
+ super( parent, name );
+ // Make the top-level layout; a vertical box to contain all widgets
+ // and sub-layouts.
+ QBoxLayout topLayout = new QVBoxLayout( this, 5 );
+
+ // Create a menubar...
+ QMenuBar menubar = new QMenuBar( this );
+ menubar.setSeparator( QMenuBar.InWindowsStyle );
+ QPopupMenu popup;
+ popup = new QPopupMenu( this );
+ popup.insertItem( "&Quit", qApp(), SLOT("quit()") );
+ menubar.insertItem( "&File", popup );
+
+ // ...and tell the layout about it.
+ topLayout.setMenuBar( menubar );
+
+ // Make an hbox that will hold a row of buttons.
+ QBoxLayout buttons = new QHBoxLayout( topLayout );
+ int i;
+ for ( i = 1; i <= 4; i++ ) {
+ QPushButton but = new QPushButton( this );
+ String s = "Button " + i;
+ but.setText( s );
+
+ // Set horizontal stretch factor to 10 to let the buttons
+ // stretch horizontally. The buttons will not stretch
+ // vertically, since bigWidget below will take up vertical
+ // stretch.
+ buttons.addWidget( but, 10 );
+ // (Actually, the result would have been the same with a
+ // stretch factor of 0; if no items in a layout have non-zero
+ // stretch, the space is divided equally between members.)
+ }
+
+ // Make another hbox that will hold a left-justified row of buttons.
+ QBoxLayout buttons2 = new QHBoxLayout( topLayout );
+
+ QPushButton but = new QPushButton( "Button five", this );
+ buttons2.addWidget( but );
+
+ but = new QPushButton( "Button 6", this );
+ buttons2.addWidget( but );
+
+ // Fill up the rest of the hbox with stretchable space, so that
+ // the buttons get their minimum width and are pushed to the left.
+ buttons2.addStretch( 10 );
+
+ // Make a big widget that will grab all space in the middle.
+ QMultiLineEdit bigWidget = new QMultiLineEdit( this );
+ bigWidget.setText( "This widget will get all the remaining space" );
+ bigWidget.setFrameStyle( QFrame.Panel | QFrame.Plain );
+
+ // Set vertical stretch factor to 10 to let the bigWidget stretch
+ // vertically. It will stretch horizontally because there are no
+ // widgets beside it to take up horizontal stretch.
+ // topLayout.addWidget( bigWidget, 10 );
+ topLayout.addWidget( bigWidget );
+
+ // Make a grid that will hold a vertical table of QLabel/QLineEdit
+ // pairs next to a large QMultiLineEdit.
+
+ // Don't use hard-coded row/column numbers in QGridLayout, you'll
+ // regret it when you have to change the layout.
+ int numRows = 3;
+ int labelCol = 0;
+ int linedCol = 1;
+ int multiCol = 2;
+
+ // Let the grid-layout have a spacing of 10 pixels between
+ // widgets, overriding the default from topLayout.
+ QGridLayout grid = new QGridLayout( topLayout, 0, 0, 10 );
+ int row;
+
+ for ( row = 0; row < numRows; row++ ) {
+ QLineEdit ed = new QLineEdit( this );
+ // The line edit goes in the second column
+ grid.addWidget( ed, row, linedCol );
+
+ // Make a label that is a buddy of the line edit
+ String s= "Line &" + (row+1);
+ QLabel label = new QLabel( ed, s, this );
+ // The label goes in the first column.
+ grid.addWidget( label, row, labelCol );
+ }
+
+ // The multiline edit will cover the entire vertical range of the
+ // grid (rows 0 to numRows) and stay in column 2.
+
+ QMultiLineEdit med = new QMultiLineEdit( this );
+ grid.addMultiCellWidget( med, 0, -1, multiCol, multiCol );
+
+ // The labels will take the space they need. Let the remaining
+ // horizontal space be shared so that the multiline edit gets
+ // twice as much as the line edit.
+ grid.setColStretch( linedCol, 10 );
+ grid.setColStretch( multiCol, 20 );
+
+ // Add a widget at the bottom.
+ QLabel sb = new QLabel( this );
+ sb.setText( "Let's pretend this is a status bar" );
+ sb.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+ // This widget will use all horizontal space, and have a fixed height.
+
+ // we should have made a subclass and implemented sizePolicy there...
+ sb.setFixedHeight( sb.sizeHint().height() );
+
+ sb.setAlignment( AlignVCenter | AlignLeft );
+ topLayout.addWidget( sb );
+
+ topLayout.activate();
+}
+
+
+public static void main( String[] args )
+{
+ QApplication a = new QApplication( args );
+
+ ExampleWidget f = new ExampleWidget();
+ a.setMainWidget(f);
+ f.setCaption("Qt Example - Caption");
+ f.show();
+
+ a.exec();
+ return;
+}
+
+static {
+ qtjava.initialize();
+}
+}
diff --git a/qtjava/javalib/examples/lineedits/LineEdits.java b/qtjava/javalib/examples/lineedits/LineEdits.java
new file mode 100644
index 00000000..ce79891f
--- /dev/null
+++ b/qtjava/javalib/examples/lineedits/LineEdits.java
@@ -0,0 +1,225 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+class LineEdits extends QGroupBox
+{
+protected QLineEdit lined1, lined2, lined3, lined4;
+protected QComboBox combo1, combo2, combo3, combo4;
+
+
+
+
+/*
+ Constructor
+ *
+ Creates child widgets of the LineEdits widget
+ */
+
+LineEdits( )
+{
+ this(null, null);
+}
+
+LineEdits( QWidget parent, String name )
+{
+ super( 0, Horizontal, "Line edits", parent, name );
+ setMargin( 10 );
+
+ QVBoxLayout box = new QVBoxLayout( layout() );
+
+ QHBoxLayout row1 = new QHBoxLayout( box );
+ row1.setMargin( 5 );
+
+ // Create a Label
+ QLabel label = new QLabel( "Echo Mode: ", this);
+ row1.addWidget( label );
+
+ // Create a Combobox with three items...
+ combo1 = new QComboBox( false, this );
+ row1.addWidget( combo1 );
+ combo1.insertItem( "Normal", -1 );
+ combo1.insertItem( "Password", -1 );
+ combo1.insertItem( "No Echo", -1 );
+ // ...and connect the activated() SIGNAL with the slotEchoChanged() SLOT to be able
+ // to react when an item is selected
+ connect( combo1, SIGNAL(" activated( int )"), this, SLOT(" slotEchoChanged( int )") );
+
+ // insert the first LineEdit
+ lined1 = new QLineEdit( this );
+ box.addWidget( lined1 );
+
+ // another widget which is used for layouting
+ QHBoxLayout row2 = new QHBoxLayout( box );
+ row2.setMargin( 5 );
+
+ // and the second label
+ label = new QLabel( "Validator: ", this );
+ row2.addWidget( label );
+
+ // A second Combobox with again three items...
+ combo2 = new QComboBox( false, this );
+ row2.addWidget( combo2 );
+ combo2.insertItem( "No Validator", -1 );
+ combo2.insertItem( "Integer Validator", -1 );
+ combo2.insertItem( "Double Validator", -1 );
+ // ...and again the activated() SIGNAL gets connected with a SLOT
+ connect( combo2, SIGNAL(" activated( int )"), this, SLOT(" slotValidatorChanged( int )") );
+
+ // and the second LineEdit
+ lined2 = new QLineEdit( this );
+ box.addWidget( lined2 );
+
+ // yet another widget which is used for layouting
+ QHBoxLayout row3 = new QHBoxLayout( box );
+ row3.setMargin( 5 );
+
+ // we need a label for this too
+ label = new QLabel( "Alignment: ", this );
+ row3.addWidget( label );
+
+ // A combo box for setting alignment
+ combo3 = new QComboBox( false, this );
+ row3.addWidget( combo3 );
+ combo3.insertItem( "Left", -1 );
+ combo3.insertItem( "Centered", -1 );
+ combo3.insertItem( "Right", -1 );
+ // ...and again the activated() SIGNAL gets connected with a SLOT
+ connect( combo3, SIGNAL(" activated( int )"), this, SLOT(" slotAlignmentChanged( int )") );
+
+ // and the third lineedit
+ lined3 = new QLineEdit( this );
+ box.addWidget( lined3 );
+
+ // last widget used for layouting
+ QHBox row4 = new QHBox( this );
+ box.addWidget( row4 );
+ row4.setMargin( 5 );
+
+ // last label
+ new QLabel( "Read-Only: ", row4 );
+
+ // A combo box for setting alignment
+ combo4 = new QComboBox( false, row4 );
+ combo4.insertItem( "False", -1 );
+ combo4.insertItem( "True", -1 );
+ // ...and again the activated() SIGNAL gets connected with a SLOT
+ connect( combo4, SIGNAL(" activated( int )"), this, SLOT(" slotReadOnlyChanged( int )") );
+
+ // and the last lineedit
+ lined4 = new QLineEdit( this );
+ box.addWidget( lined4 );
+
+ // give the first LineEdit the focus at the beginning
+ lined1.setFocus();
+}
+
+/*
+ SLOT slotEchoChanged( int i )
+ *
+ i contains the number of the item which the user has been chosen in the
+ first Combobox. According to this value, we set the Echo-Mode for the
+ first LineEdit.
+ */
+
+void slotEchoChanged( int i )
+{
+ switch ( i ) {
+ case 0:
+ lined1.setEchoMode( QLineEdit.Normal );
+ break;
+ case 1:
+ lined1.setEchoMode( QLineEdit.Password );
+ break;
+ case 2:
+ lined1.setEchoMode( QLineEdit.NoEcho );
+ break;
+ }
+
+ lined1.setFocus();
+}
+
+/*
+ SLOT slotValidatorChanged( int i )
+ *
+ i contains the number of the item which the user has been chosen in the
+ second Combobox. According to this value, we set a validator for the
+ second LineEdit. A validator checks in a LineEdit each character which
+ the user enters and accepts it if it is valid, else the character gets
+ ignored and not inserted into the lineedit.
+ */
+
+void slotValidatorChanged( int i )
+{
+ switch ( i ) {
+ case 0:
+ lined2.setValidator( null );
+ break;
+ case 1:
+ lined2.setValidator( new QIntValidator( lined2 ) );
+ break;
+ case 2:
+ lined2.setValidator( new QDoubleValidator( -999.0, 999.0, 2,
+ lined2 ) );
+ break;
+ }
+
+ lined2.setText( "" );
+ lined2.setFocus();
+}
+
+
+/*
+ SLOT slotAlignmentChanged( int i )
+ *
+ i contains the number of the item which the user has been chosen in
+ the third Combobox. According to this value, we set an alignment
+ third LineEdit.
+ */
+
+void slotAlignmentChanged( int i )
+{
+ switch ( i ) {
+ case 0:
+ lined3.setAlignment( QLineEdit.AlignLeft );
+ break;
+ case 1:
+ lined3.setAlignment( QLineEdit.AlignCenter );
+ break;
+ case 2:
+ lined3.setAlignment( QLineEdit.AlignRight );
+ break;
+ }
+
+ lined3.setFocus();
+}
+
+
+/*
+ SLOT slotReadOnlyChanged( int i )
+ *
+ i contains the number of the item which the user has been chosen in
+ the fourth Combobox. According to this value, we toggle read-only.
+ */
+
+void slotReadOnlyChanged( int i )
+{
+ switch ( i ) {
+ case 0:
+ lined4.setReadOnly( false );
+ break;
+ case 1:
+ lined4.setReadOnly( true );
+ break;
+ }
+
+ lined4.setFocus();
+}
+}
diff --git a/qtjava/javalib/examples/lineedits/Main.java b/qtjava/javalib/examples/lineedits/Main.java
new file mode 100644
index 00000000..19424534
--- /dev/null
+++ b/qtjava/javalib/examples/lineedits/Main.java
@@ -0,0 +1,32 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ LineEdits lineedits = new LineEdits();
+ lineedits.setCaption( "Qt Example - Lineedits" );
+ a.setMainWidget( lineedits );
+ lineedits.show();
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
+
diff --git a/qtjava/javalib/examples/listbox/ListBoxDemo.java b/qtjava/javalib/examples/listbox/ListBoxDemo.java
new file mode 100644
index 00000000..60eecffc
--- /dev/null
+++ b/qtjava/javalib/examples/listbox/ListBoxDemo.java
@@ -0,0 +1,190 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+
+class ListBoxDemo extends QWidget
+{
+
+private QListBox l;
+private QSpinBox columns;
+private QSpinBox rows;
+private QButtonGroup bg;
+
+
+ListBoxDemo()
+{
+ super( null, null );
+ QGridLayout g = new QGridLayout( this, 2, 2, 6 );
+
+ g.addWidget( new QLabel( "<b>Configuration:</b>", this ), 0, 0 );
+ g.addWidget( new QLabel( "<b>Result:</b>", this ), 0, 1 );
+
+ l = new QListBox( this );
+ g.addWidget( l, 1, 1 );
+ l.setFocusPolicy( QWidget.StrongFocus );
+
+ QVBoxLayout v = new QVBoxLayout();
+ g.addLayout( v, 1, 0 );
+
+ QRadioButton b = null;
+ bg = new QButtonGroup( (QWidget) null );
+
+ b = new QRadioButton( "Fixed number of columns,\n"
+ + "as many rows as needed.",
+ this );
+ bg.insert( b );
+ v.addWidget( b );
+ b.setChecked( true );
+ connect( b, SIGNAL("clicked()"), this, SLOT("setNumCols()") );
+ QHBoxLayout h = new QHBoxLayout();
+ v.addLayout( h );
+ h.addSpacing( 30 );
+ h.addSpacing( 100 );
+ h.addWidget( new QLabel( "Columns:", this ) );
+ columns = new QSpinBox( this );
+ h.addWidget( columns );
+
+ v.addSpacing( 12 );
+
+ b = new QRadioButton( "As many columns as fit on-screen,\n"
+ + "as many rows as needed.",
+ this );
+ bg.insert( b );
+ v.addWidget( b );
+ connect( b, SIGNAL("clicked()"), this, SLOT("setColsByWidth()") );
+
+ v.addSpacing( 12 );
+
+ b = new QRadioButton( "Fixed number of rows,\n"
+ + "as many columns as needed.",
+ this );
+ bg.insert( b );
+ v.addWidget( b );
+ connect( b, SIGNAL("clicked()"), this, SLOT("setNumRows()") );
+ h = new QHBoxLayout();
+ v.addLayout( h );
+ h.addSpacing( 30 );
+ h.addSpacing( 100 );
+ h.addWidget( new QLabel( "Rows:", this ) );
+ rows = new QSpinBox( this );
+ rows.setEnabled( false );
+ h.addWidget( rows );
+
+ v.addSpacing( 12 );
+
+ b = new QRadioButton( "As many rows as fit on-screen,\n"
+ + "as many columns as needed.",
+ this );
+ bg.insert( b );
+ v.addWidget( b );
+ connect( b, SIGNAL("clicked()"), this, SLOT("setRowsByHeight()") );
+
+ v.addSpacing( 12 );
+
+ QCheckBox cb = new QCheckBox( "Variable-height rows", this );
+ cb.setChecked( true );
+ connect( cb, SIGNAL("toggled(boolean)"), this, SLOT("setVariableHeight(boolean)") );
+ v.addWidget( cb );
+ v.addSpacing( 6 );
+
+ cb = new QCheckBox( "Variable-width columns", this );
+ connect( cb, SIGNAL("toggled(boolean)"), this, SLOT("setVariableWidth(boolean)") );
+ v.addWidget( cb );
+
+ cb = new QCheckBox( "Extended-Selection", this );
+ connect( cb, SIGNAL("toggled(boolean)"), this, SLOT("setMultiSelection(boolean)") );
+ v.addWidget( cb );
+
+ QPushButton pb = new QPushButton( "Sort ascending", this );
+ connect( pb, SIGNAL(" clicked()"), this, SLOT(" sortAscending()") );
+ v.addWidget( pb );
+
+ pb = new QPushButton( "Sort descending", this );
+ connect( pb, SIGNAL(" clicked()"), this, SLOT(" sortDescending()") );
+ v.addWidget( pb );
+
+ v.addStretch( 100 );
+
+ int i = 0;
+ while( ++i <= 2560 )
+ l.insertItem( "Item " + i,
+ i );
+ columns.setRange( 1, 256 );
+ columns.setValue( 1 );
+ rows.setRange( 1, 256 );
+ rows.setValue( 256 );
+
+ connect( columns, SIGNAL("valueChanged(int)"), this, SLOT("setNumCols()") );
+ connect( rows, SIGNAL("valueChanged(int)"), this, SLOT("setNumRows()") );
+}
+
+
+void setNumRows()
+{
+ columns.setEnabled( false );
+ rows.setEnabled( true );
+ l.setRowMode( rows.value() );
+}
+
+
+void setNumCols()
+{
+ columns.setEnabled( true );
+ rows.setEnabled( false );
+ l.setColumnMode( columns.value() );
+}
+
+
+void setRowsByHeight()
+{
+ columns.setEnabled( false );
+ rows.setEnabled( false );
+ l.setRowMode( QListBox.FitToHeight );
+}
+
+
+void setColsByWidth()
+{
+ columns.setEnabled( false );
+ rows.setEnabled( false );
+ l.setColumnMode( QListBox.FitToWidth );
+}
+
+
+void setVariableWidth( boolean b )
+{
+ l.setVariableWidth( b );
+}
+
+
+void setVariableHeight( boolean b )
+{
+ l.setVariableHeight( b );
+}
+
+void setMultiSelection( boolean b )
+{
+ l.clearSelection();
+ l.setSelectionMode( b ? QListBox.Extended : QListBox.Single );
+}
+
+void sortAscending()
+{
+ l.sort( true );
+}
+
+void sortDescending()
+{
+ l.sort( false );
+}
+}
diff --git a/qtjava/javalib/examples/listbox/Main.java b/qtjava/javalib/examples/listbox/Main.java
new file mode 100644
index 00000000..ff21a95f
--- /dev/null
+++ b/qtjava/javalib/examples/listbox/Main.java
@@ -0,0 +1,30 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ ListBoxDemo t = new ListBoxDemo();
+ t.setCaption( "Qt Example - Listbox" );
+ a.setMainWidget( t );
+ t.show();
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/mdi/ApplicationWindow.java b/qtjava/javalib/examples/mdi/ApplicationWindow.java
new file mode 100644
index 00000000..e74e6233
--- /dev/null
+++ b/qtjava/javalib/examples/mdi/ApplicationWindow.java
@@ -0,0 +1,290 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.ArrayList;
+
+class ApplicationWindow extends QMainWindow
+{
+
+private QPrinter printer;
+private QWorkspace ws;
+/* Keep a copy of ws.windowList(), so that the MDIWindow
+ widgets in it won't get garbage collected */
+private ArrayList windows;
+private QToolBar fileTools;
+private QPopupMenu windowsMenu;
+
+
+
+private String fileOpenText = "Click this button to open a <em>new file</em>. <br><br>"
++ "You can also select the <b>Open command</b> from the File menu.";
+private String fileSaveText = "Click this button to save the file you are "
++ "editing. You will be prompted for a file name.\n\n"
++ "You can also select the Save command from the File menu.\n\n"
++ "Note that implementing this function is left as an exercise for the reader.";
+private String filePrintText = "Click this button to print the file you "
++ "are editing.\n\n"
++ "You can also select the Print command from the File menu.";
+
+/* XPM */
+static String filesave[] = {
+" 14 14 4 1",
+". c #040404",
+"# c #808304",
+"a c #bfc2bf",
+"b c None",
+"..............",
+".#.aaaaaaaa.a.",
+".#.aaaaaaaa...",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".##........##.",
+".############.",
+".##.........#.",
+".##......aa.#.",
+".##......aa.#.",
+".##......aa.#.",
+"b............."
+};
+
+/* XPM */
+static String fileopen[] = {
+" 16 13 5 1",
+". c #040404",
+"# c #808304",
+"a c None",
+"b c #f3f704",
+"c c #f3f7f3",
+"aaaaaaaaa...aaaa",
+"aaaaaaaa.aaa.a.a",
+"aaaaaaaaaaaaa..a",
+"a...aaaaaaaa...a",
+".bcb.......aaaaa",
+".cbcbcbcbc.aaaaa",
+".bcbcbcbcb.aaaaa",
+".cbcb...........",
+".bcb.#########.a",
+".cb.#########.aa",
+".b.#########.aaa",
+"..#########.aaaa",
+"...........aaaaa"
+};
+
+/* XPM */
+static String fileprint[] = {
+" 16 14 6 1",
+". c #000000",
+"# c #848284",
+"a c #c6c3c6",
+"b c #ffff00",
+"c c #ffffff",
+"d c None",
+"ddddd.........dd",
+"dddd.cccccccc.dd",
+"dddd.c.....c.ddd",
+"ddd.cccccccc.ddd",
+"ddd.c.....c....d",
+"dd.cccccccc.a.a.",
+"d..........a.a..",
+".aaaaaaaaaa.a.a.",
+".............aa.",
+".aaaaaa###aa.a.d",
+".aaaaaabbbaa...d",
+".............a.d",
+"d.aaaaaaaaa.a.dd",
+"dd...........ddd"
+};
+
+ApplicationWindow()
+{
+ super( null, "example application main window", WDestructiveClose );
+ int id;
+
+ QPixmap openIcon, saveIcon;
+
+ fileTools = new QToolBar( this, "file operations" );
+ addToolBar( fileTools, tr( "File Operations" ), DockTop, true );
+
+ openIcon = new QPixmap( fileopen );
+ QToolButton fileOpen
+ = new QToolButton( new QIconSet(openIcon), "Open File", "",
+ this, SLOT("load()"), fileTools, "open file" );
+
+ saveIcon = new QPixmap( filesave );
+ QToolButton fileSave
+ = new QToolButton( new QIconSet(saveIcon), "Save File", "",
+ this, SLOT("save()"), fileTools, "save file" );
+
+ printer = new QPrinter();
+ QPixmap printIcon;
+
+ printIcon = new QPixmap( fileprint );
+ QToolButton filePrint
+ = new QToolButton( new QIconSet(printIcon), "Print File", "",
+ this, SLOT("print()"), fileTools, "print file" );
+ QWhatsThis.add( filePrint, filePrintText );
+
+ QWhatsThis.whatsThisButton( fileTools );
+
+ QWhatsThis.add( fileOpen, fileOpenText );
+ QWhatsThis.add( fileSave, fileSaveText );
+
+ QPopupMenu file = new QPopupMenu( this );
+ menuBar().insertItem( "&File", file );
+
+ file.insertItem( "&New", this, SLOT("newDoc()"), new QKeySequence(CTRL+Key_N) );
+
+ id = file.insertItem( new QIconSet(openIcon), "&Open...",
+ this, SLOT("load()"), new QKeySequence(CTRL+Key_O) );
+ file.setWhatsThis( id, fileOpenText );
+
+ id = file.insertItem( new QIconSet(saveIcon), "&Save",
+ this, SLOT("save()"), new QKeySequence(CTRL+Key_S) );
+ file.setWhatsThis( id, fileSaveText );
+ id = file.insertItem( "Save &As...", this, SLOT("saveAs()") );
+ file.setWhatsThis( id, fileSaveText );
+ file.insertSeparator();
+ id = file.insertItem( new QIconSet(printIcon), "&Print...",
+ this, SLOT("print()"), new QKeySequence(CTRL+Key_P) );
+ file.setWhatsThis( id, filePrintText );
+ file.insertSeparator();
+ file.insertItem( "&Close", this, SLOT("closeWindow()"), new QKeySequence(CTRL+Key_W) );
+ file.insertItem( "&Quit", qApp(), SLOT(" closeAllWindows()"), new QKeySequence(CTRL+Key_Q) );
+
+ windowsMenu = new QPopupMenu( this );
+ windowsMenu.setCheckable( true );
+ connect( windowsMenu, SIGNAL(" aboutToShow()"),
+ this, SLOT(" windowsMenuAboutToShow()") );
+ menuBar().insertItem( "&Windows", windowsMenu );
+
+ menuBar().insertSeparator();
+ QPopupMenu help = new QPopupMenu( this );
+ menuBar().insertItem( "&Help", help );
+
+ help.insertItem( "&About", this, SLOT("about()"), new QKeySequence(Key_F1));
+ help.insertItem( "About &Qt", this, SLOT("aboutQt()"));
+ help.insertSeparator();
+ help.insertItem( "What's &This", this, SLOT("whatsThis()"), new QKeySequence(SHIFT+Key_F1));
+
+ QVBox vb = new QVBox( this );
+ vb.setFrameStyle( QFrame.StyledPanel | QFrame.Sunken );
+ ws = new QWorkspace( vb );
+ ws.setScrollBarsEnabled( true );
+ setCentralWidget( vb );
+
+ statusBar().message( "Ready", 2000 );
+}
+
+
+MDIWindow newDoc()
+{
+ MDIWindow w = new MDIWindow( ws, null, WDestructiveClose );
+ connect( w, SIGNAL("message(String,int)"), statusBar(), SLOT("message(String,int)") );
+ w.setCaption("unnamed document");
+ w.setIcon( new QPixmap("document.xpm") );
+ // show the very first window in maximized mode
+ windows = ws.windowList();
+ if ( windows.size() == 0 )
+ w.showMaximized();
+ else
+ w.show();
+ return w;
+}
+
+void load()
+{
+ String fn = QFileDialog.getOpenFileName( "", "", this );
+ if ( !fn.equals("") ) {
+ MDIWindow w = newDoc();
+ w.load( fn );
+ } else {
+ statusBar().message( "Loading aborted", 2000 );
+ }
+}
+
+void save()
+{
+ MDIWindow m = (MDIWindow)ws.activeWindow();
+ if ( m != null )
+ m.save();
+}
+
+
+void saveAs()
+{
+ MDIWindow m = (MDIWindow)ws.activeWindow();
+ if ( m != null )
+ m.saveAs();
+}
+
+
+void print()
+{
+ MDIWindow m = (MDIWindow)ws.activeWindow();
+ if ( m != null)
+ m.print( printer );
+}
+
+
+void closeWindow()
+{
+ MDIWindow m = (MDIWindow)ws.activeWindow();
+ if ( m != null )
+ m.close();
+}
+
+void about()
+{
+ QMessageBox.about( this, "Qt Application Example",
+ "This example demonstrates simple use of\n "
+ + "Qt's Multiple Document Interface (MDI).");
+}
+
+
+void aboutQt()
+{
+ QMessageBox.aboutQt( this, "Qt Application Example" );
+}
+
+
+void windowsMenuAboutToShow()
+{
+ windowsMenu.clear();
+ int cascadeId = windowsMenu.insertItem("&Cascade", ws, SLOT("cascade()") );
+ int tileId = windowsMenu.insertItem("&Tile", ws, SLOT("tile()") );
+ windows = ws.windowList();
+ if ( windows.size() == 0 ) {
+ windowsMenu.setItemEnabled( cascadeId, false );
+ windowsMenu.setItemEnabled( tileId, false );
+ }
+ windowsMenu.insertSeparator();
+ for ( int i = 0; i < windows.size(); ++i ) {
+ int id = windowsMenu.insertItem(((QWidget) windows.get(i)).caption(),
+ this, SLOT(" windowsMenuActivated( int )") );
+ windowsMenu.setItemParameter( id, i );
+ windowsMenu.setItemChecked( id, ws.activeWindow() == windows.get(i) );
+ }
+}
+
+void windowsMenuActivated( int id )
+{
+ windows = ws.windowList();
+ QWidget w = (QWidget) windows.get( id );
+ if ( w != null )
+ w.showNormal();
+ w.setFocus();
+}
+
+
+}
+
diff --git a/qtjava/javalib/examples/mdi/MDIWindow.java b/qtjava/javalib/examples/mdi/MDIWindow.java
new file mode 100644
index 00000000..ef5efd64
--- /dev/null
+++ b/qtjava/javalib/examples/mdi/MDIWindow.java
@@ -0,0 +1,135 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class MDIWindow extends QMainWindow
+{
+
+private QMultiLineEdit medit;
+private QMovie mmovie;
+private String filename = "";
+
+MDIWindow( QWidget parent, String name, int wflags )
+{
+ super( parent, name, wflags );
+ mmovie = null;
+ medit = new QMultiLineEdit( this );
+ setFocusProxy( medit );
+ setCentralWidget( medit );
+}
+
+
+void load( String fn )
+{
+ filename = fn;
+ QFile f = new QFile( filename );
+ if ( !f.open( QIODevice.IO_ReadOnly ) )
+ return;
+
+ if(fn.indexOf(".gif") != -1) {
+ QWidget tmp=new QWidget(this);
+ setFocusProxy(tmp);
+ setCentralWidget(tmp);
+ medit.hide();
+ QMovie qm=new QMovie(fn);
+// qm.setDisplayWidget(tmp);
+ tmp.setBackgroundMode(QWidget.NoBackground);
+ tmp.show();
+ mmovie=qm;
+ } else {
+ mmovie = null;
+
+ QTextStream t = new QTextStream(f);
+ String s = t.read();
+ medit.setText( s );
+ f.close();
+
+
+ }
+ setCaption( filename );
+ emit("message", "Loaded document " + filename, 2000 );
+}
+
+void save()
+{
+ if ( filename.equals("") ) {
+ saveAs();
+ return;
+ }
+
+ String text = medit.text();
+ QFile f = new QFile( filename );
+ if ( !f.open( QIODevice.IO_WriteOnly ) ) {
+ emit("message", "Could not write to " + filename,
+ 2000 );
+ return;
+ }
+
+ QTextStream t = new QTextStream( f );
+ t.writeRawBytes( text, text.length() );
+ f.close();
+
+ setCaption( filename );
+
+ emit("message", "File " + filename + " saved", 2000 );
+}
+
+void saveAs()
+{
+ String fn = QFileDialog.getSaveFileName( filename, "", this );
+ if ( !fn.equals("") ) {
+ filename = fn;
+ save();
+ } else {
+ emit("message", "Saving aborted", 2000 );
+ }
+}
+
+void print( QPrinter printer)
+{
+ int Margin = 10;
+ int pageNo = 1;
+
+ if ( printer.setup(this) ) { // printer dialog
+ emit("message", "Printing...", 0 );
+ QPainter p = new QPainter();
+ if ( !p.begin( printer ) )
+ return; // paint on printer
+ p.setFont( medit.font() );
+ int yPos = 0; // y position for each line
+ QFontMetrics fm = p.fontMetrics();
+ QPaintDeviceMetrics metrics = new QPaintDeviceMetrics( printer ); // need width/height
+ // of printer surface
+ for( int i = 0 ; i < medit.numLines() ; i++ ) {
+ if ( Margin + yPos > metrics.height() - Margin ) {
+ String msg = "Printing (page ";
+ msg += (++pageNo);
+ msg += ")...";
+ emit("message", msg, 0 );
+ printer.newPage(); // no more room on this page
+ yPos = 0; // back to top of page
+ }
+ p.drawText( Margin, Margin + yPos,
+ metrics.width(), fm.lineSpacing(),
+ ExpandTabs | DontClip,
+ medit.textLine( i ) );
+ yPos = yPos + fm.lineSpacing();
+ }
+ p.end(); // send job to printer
+ emit("message", "Printing completed", 2000 );
+ } else {
+ emit("message", "Printing aborted", 2000 );
+ }
+}
+
+}
+
diff --git a/qtjava/javalib/examples/mdi/Main.java b/qtjava/javalib/examples/mdi/Main.java
new file mode 100644
index 00000000..8190b7cf
--- /dev/null
+++ b/qtjava/javalib/examples/mdi/Main.java
@@ -0,0 +1,27 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args) {
+ QApplication a = new QApplication( args );
+ ApplicationWindow mw = new ApplicationWindow();
+ mw.setCaption( "Qt Example - Multiple Documents Interface (MDI)" );
+ mw.show();
+ a.connect( a, Qt.SIGNAL("lastWindowClosed()"), a, Qt.SLOT("quit()") );
+ int res = a.exec();
+ return;
+}
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/mdi/document.xpm b/qtjava/javalib/examples/mdi/document.xpm
new file mode 100644
index 00000000..c08f63e9
--- /dev/null
+++ b/qtjava/javalib/examples/mdi/document.xpm
@@ -0,0 +1,25 @@
+/* XPM */
+static char * document_xpm[] = {
+"12 16 6 1",
+" c #040404",
+". c None",
+"X c white",
+"o c #808304",
+"O c black",
+"+ c #f3f7f3",
+" .....",
+" XXXXX ....",
+" XXXXX X ...",
+" XXXXX XX ..",
+" XooXX O.",
+" X+XXX+XXXO.",
+" XXXXXXXXXO.",
+" XoooXooXXO.",
+" XXXXXXXXXO.",
+" XXXXXXXXXO.",
+" XoXXoooXXO.",
+" XXXXXXXXXO.",
+"OXXXXXXXXXO.",
+"OXXXXXXXXXO.",
+"OOOOOOOOOOO.",
+"............"};
diff --git a/qtjava/javalib/examples/menu/MenuExample.java b/qtjava/javalib/examples/menu/MenuExample.java
new file mode 100644
index 00000000..3eca97b5
--- /dev/null
+++ b/qtjava/javalib/examples/menu/MenuExample.java
@@ -0,0 +1,326 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class MenuExample extends QWidget
+{
+
+private QMenuBar menu;
+private QLabel label;
+private boolean isBold;
+private boolean isUnderline;
+private int boldID, underlineID;
+
+
+
+/* XPM */
+static String p1_xpm[] = {
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFF0000",
+" ",
+" ",
+" .... ",
+" .XXXX. ",
+" .............. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .XXXXXXXXXXXX. ",
+" .............. ",
+" "};
+
+/* XPM */
+static String p2_xpm[] = {
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFFFFFF",
+" ",
+" ...... ",
+" .XXX.X. ",
+" .XXX.XX. ",
+" .XXX.XXX. ",
+" .XXX..... ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" .XXXXXXX. ",
+" ......... ",
+" ",
+" "};
+
+/* XPM */
+static String p3_xpm[] = {
+"16 16 3 1",
+" c None",
+". c #000000000000",
+"X c #FFFFFFFFFFFF",
+" ",
+" ",
+" ......... ",
+" ........... ",
+" ........ .. ",
+" ........... ",
+" ........... ",
+" ........... ",
+" ........... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ...XXXXX... ",
+" ......... ",
+" ",
+" "};
+
+
+/*
+ Auxiliary class to provide fancy menu items with different
+ fonts. Used for the "bold" and "underline" menu items in the options
+ menu.
+ */
+/**
+class MyMenuItem extends QCustomMenuItem
+{
+private String string;
+private QFont font;
+
+ public MyMenuItem( String s, QFont f )
+ {
+ font = f;
+ string = s;
+ }
+
+ public void paint( QPainter p, QColorGroup cg, boolean act, boolean enabled, int x, int y, int w, int h )
+ {
+ p.setFont ( font );
+ p.drawText( x, y, w, h, AlignLeft | AlignVCenter | ShowPrefix | DontClip, string );
+ }
+
+ public QSize sizeHint()
+ {
+ return new QFontMetrics( font ).size( AlignLeft | AlignVCenter | ShowPrefix | DontClip, string );
+ }
+}
+*/
+
+MenuExample( )
+{
+ this(null, null);
+}
+
+MenuExample( QWidget parent, String name )
+{
+ super( parent, name );
+ QPixmap p1 = new QPixmap( p1_xpm );
+ QPixmap p2 = new QPixmap( p2_xpm );
+ QPixmap p3 = new QPixmap( p3_xpm );
+
+ QPopupMenu print = new QPopupMenu( this );
+ print.insertTearOffHandle();
+ print.insertItem( "&Print to printer", this, SLOT("printer()") );
+ print.insertItem( "Print to &file", this, SLOT("file()") );
+ print.insertItem( "Print to fa&x", this, SLOT("fax()") );
+ print.insertSeparator();
+ print.insertItem( "Printer &Setup", this, SLOT("printerSetup()") );
+
+ QPopupMenu file = new QPopupMenu( this );
+ file.insertItem( new QIconSet(p1), "&Open", this, SLOT("open()"), new QKeySequence(CTRL+Key_O) );
+ file.insertItem( new QIconSet(p2), "&New", this, SLOT("news()"), new QKeySequence(CTRL+Key_N) );
+ file.insertItem( new QIconSet(p3), "&Save", this, SLOT("save()"), new QKeySequence(CTRL+Key_S) );
+ file.insertItem( "&Close", this, SLOT("closeDoc()"), new QKeySequence(CTRL+Key_W) );
+ file.insertSeparator();
+ file.insertItem( "&Print", print, CTRL+Key_P );
+ file.insertSeparator();
+ file.insertItem( "E&xit", qApp(), SLOT("quit()"), new QKeySequence(CTRL+Key_Q) );
+
+ QPopupMenu edit = new QPopupMenu( this );
+ int undoID = edit.insertItem( "&Undo", this, SLOT("undo()") );
+ int redoID = edit.insertItem( "&Redo", this, SLOT("redo()") );
+ edit.setItemEnabled( undoID, false );
+ edit.setItemEnabled( redoID, false );
+
+ QPopupMenu options = new QPopupMenu( this );
+ options.insertTearOffHandle();
+ options.setCaption("Options");
+ options.insertItem( "&Normal Font", this, SLOT("normal()") );
+ options.insertSeparator();
+
+ options.polish(); // adjust system settings
+ QFont f = options.font();
+ f.setBold( true );
+// boldID = options.insertItem( new MyMenuItem( "&Bold", f ) );
+ options.setAccel( new QKeySequence(CTRL+Key_B), boldID );
+ options.connectItem( boldID, this, SLOT("bold()") );
+ f = font();
+ f.setUnderline( true );
+// underlineID = options.insertItem( new MyMenuItem( "&Underline", f ) );
+ options.setAccel( new QKeySequence(CTRL+Key_U), underlineID );
+ options.connectItem( underlineID, this, SLOT("underline()") );
+
+ isBold = false;
+ isUnderline = false;
+ options.setCheckable( true );
+
+
+ QPopupMenu help = new QPopupMenu( this );
+ help.insertItem( "&About", this, SLOT("about()"), new QKeySequence(CTRL+Key_H) );
+ help.insertItem( "About &Qt", this, SLOT("aboutQt()") );
+
+ menu = new QMenuBar( this );
+ menu.insertItem( "&File", file );
+ menu.insertItem( "&Edit", edit );
+ menu.insertItem( "&Options", options );
+ menu.insertSeparator();
+ menu.insertItem( "&Help", help );
+ menu.setSeparator( QMenuBar.InWindowsStyle );
+
+ label = new QLabel( this );
+ label.setGeometry( 20, rect().center().y()-20, width()-40, 40 );
+ label.setFrameStyle( QFrame.Box | QFrame.Raised );
+ label.setLineWidth( 1 );
+ label.setAlignment( AlignCenter );
+
+ connect( this, SIGNAL("explain(String)"),
+ label, SLOT("setText(String)") );
+
+ setMinimumSize( 100, 80 );
+}
+
+
+void open()
+{
+ emit("explain", "File/Open selected" );
+}
+
+
+void news()
+{
+ emit("explain", "File/New selected" );
+}
+
+void save()
+{
+ emit("explain", "File/Save selected" );
+}
+
+
+void closeDoc()
+{
+ emit("explain", "File/Close selected" );
+}
+
+
+void undo()
+{
+ emit("explain", "Edit/Undo selected" );
+}
+
+
+void redo()
+{
+ emit("explain", "Edit/Redo selected" );
+}
+
+
+void normal()
+{
+ isBold = false;
+ isUnderline = false;
+ menu.setItemChecked( boldID, isBold );
+ menu.setItemChecked( underlineID, isUnderline );
+ emit("explain", "Options/Normal selected" );
+}
+
+
+void bold()
+{
+ isBold = !isBold;
+ menu.setItemChecked( boldID, isBold );
+ emit("explain", "Options/Bold selected" );
+}
+
+
+void underline()
+{
+ isUnderline = !isUnderline;
+ menu.setItemChecked( underlineID, isUnderline );
+ emit("explain", "Options/Underline selected" );
+}
+
+
+void about()
+{
+ QMessageBox.about( this, "Qt Menu Example",
+ "This example demonstrates simple use of Qt menus.\n"
+ + "You can cut and paste lines from it to your own\n"
+ + "programs." );
+}
+
+
+void aboutQt()
+{
+ QMessageBox.aboutQt( this, "Qt Menu Example" );
+}
+
+
+void printer()
+{
+ emit("explain", "File/Printer/Print selected" );
+}
+
+void file()
+{
+ emit("explain", "File/Printer/Print To File selected" );
+}
+
+void fax()
+{
+ emit("explain", "File/Printer/Print To Fax selected" );
+}
+
+void printerSetup()
+{
+ emit("explain", "File/Printer/Printer Setup selected" );
+}
+
+
+protected void resizeEvent( QResizeEvent e )
+{
+ label.setGeometry( 20, rect().center().y()-20, width()-40, 40 );
+}
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+ MenuExample m = new MenuExample();
+ m.setCaption("Qt Examples - Menus");
+ a.setMainWidget( m );
+ m.show();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+
+}
diff --git a/qtjava/javalib/examples/menu/README b/qtjava/javalib/examples/menu/README
new file mode 100644
index 00000000..958edd19
--- /dev/null
+++ b/qtjava/javalib/examples/menu/README
@@ -0,0 +1,2 @@
+The class MyMenuItem isn't translated to Java, as the QCustomMenuItem.paint()
+and sizeHint() virtual method callbacks aren't implemented yet.
diff --git a/qtjava/javalib/examples/picture/PictureDisplay.java b/qtjava/javalib/examples/picture/PictureDisplay.java
new file mode 100644
index 00000000..34b026b4
--- /dev/null
+++ b/qtjava/javalib/examples/picture/PictureDisplay.java
@@ -0,0 +1,119 @@
+/****************************************************************************
+** $Id$
+**
+** Copyright (C) 1992-2000 Trolltech 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.
+**
+*****************************************************************************/
+
+import org.kde.qt.*;
+
+class PictureDisplay extends QWidget // picture display widget
+{
+
+static void paintCar( QPainter p ) // paint a car
+{
+ QPointArray a = new QPointArray();
+ QBrush brush = new QBrush( Qt.yellow(), Qt.SolidPattern );
+ p.setBrush( brush ); // use solid, yellow brush
+
+ a.setPoints( 5, new short[] { 50,50, 350,50, 450,120, 450,250, 50,250 } );
+ p.drawPolygon( a ); // draw car body
+
+ QFont f = new QFont( "courier", 12, QFont.Bold, false );
+ p.setFont( f );
+
+ QColor windowColor = new QColor( 120, 120, 255 ); // a light blue color
+ brush.setColor( windowColor ); // set this brush color
+ p.setBrush( brush ); // set brush
+ p.drawRect( 80, 80, 250, 70 ); // car window
+ p.drawText( 180, 80, 150, 70, Qt.AlignCenter, "-- Qt --\nTrolltech AS" );
+
+ QPixmap pixmap = new QPixmap();
+ if ( pixmap.load("flag.bmp") ) // load and draw image
+ p.drawPixmap( 100, 90, pixmap );
+
+ p.setBackgroundMode( Qt.OpaqueMode ); // set opaque mode
+ p.setBrush( Qt.DiagCrossPattern ); // black diagonal cross pattern
+ p.drawEllipse( 90, 210, 80, 80 ); // back wheel
+ p.setBrush( Qt.CrossPattern ); // black cross fill pattern
+ p.drawEllipse( 310, 210, 80, 80 ); // front wheel
+}
+
+
+
+private QPicture pict;
+private String name;
+
+public PictureDisplay( String fileName )
+{
+ pict = new QPicture();
+ name = fileName;
+ if ( !pict.load(fileName) ) { // cannot load picture
+ pict = null;
+ name = "Not able to load picture: " + fileName;
+ }
+}
+
+protected void paintEvent( QPaintEvent event )
+{
+ QPainter paint = new QPainter( this ); // paint widget
+ if ( pict != null )
+ paint.drawPicture( pict ); // draw picture
+ else
+ paint.drawText( rect(), AlignCenter, name );
+}
+
+protected void keyPressEvent( QKeyEvent k )
+{
+// switch ( tolower(k.ascii()) ) {
+ switch ( k.ascii() ) {
+ case 'r': // reload
+ pict.load( name );
+ update();
+ break;
+ case 'q': // quit
+ QApplication.exit();
+ break;
+ }
+}
+
+
+static public void main( String[] args )
+{
+ QApplication a = new QApplication( args ); // QApplication required!
+
+ String fileName = "car.pic"; // default picture file name
+
+ if ( args.length == 1 ) // use argument as file name
+ fileName = args[0];
+
+ if ( !QFile.exists(fileName) ) {
+ QPicture pict = new QPicture(); // our picture
+ QPainter paint = new QPainter(); // our painter
+
+ paint.begin( pict ); // begin painting onto picture
+ paintCar( paint ); // paint!
+ paint.end(); // painting done
+
+ pict.save( fileName ); // save picture
+ QMessageBox.information(null, "Qt picture example", "Saved. Run me again!");
+ return;
+ } else {
+ PictureDisplay test = new PictureDisplay( fileName ); // create picture display
+ a.setMainWidget( test); // set main widget
+ test.show(); // show it
+
+ a.exec(); // start event loop
+ return;
+ }
+}
+
+static {
+ qtjava.initialize();
+}
+
+}
+
diff --git a/qtjava/javalib/examples/picture/car_orig.pic b/qtjava/javalib/examples/picture/car_orig.pic
new file mode 100644
index 00000000..a0141b75
--- /dev/null
+++ b/qtjava/javalib/examples/picture/car_orig.pic
Binary files differ
diff --git a/qtjava/javalib/examples/picture/flag.bmp b/qtjava/javalib/examples/picture/flag.bmp
new file mode 100644
index 00000000..b36afdfb
--- /dev/null
+++ b/qtjava/javalib/examples/picture/flag.bmp
Binary files differ
diff --git a/qtjava/javalib/examples/popup/Frame.java b/qtjava/javalib/examples/popup/Frame.java
new file mode 100644
index 00000000..afbf2edc
--- /dev/null
+++ b/qtjava/javalib/examples/popup/Frame.java
@@ -0,0 +1,166 @@
+/***************************************************************************
+* $Id$
+**
+* Definition of something or other
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class Frame extends QFrame
+{
+
+private QPushButton button1;
+private QPushButton button2;
+
+private QFrame popup1;
+private FancyPopup popup2;
+
+Frame()
+{
+ this(null, null);
+}
+
+Frame(QWidget parent, String name)
+{
+ super(parent, name);
+ button1 = new QPushButton("Simple Popup", this);
+ connect ( button1, SIGNAL(" clicked()"), SLOT(" button1Clicked()") );
+ button2 = new QPushButton("Fancy Popup", this);
+ connect ( button2, SIGNAL(" pressed()"), SLOT(" button2Pressed()") );
+
+ QBoxLayout l = new QHBoxLayout( this );
+ button1.setMaximumSize(button1.sizeHint());
+ button2.setMaximumSize(button2.sizeHint());
+ l.addWidget( button1 );
+ l.addWidget( button2 );
+ l.activate();
+
+// button1.setGeometry(20,20,100,30);
+// button2.setGeometry(140,20,100,30);
+ resize(270, 70);
+
+ //create a very simple popup: it is just composed with other
+ //widget and will be shown after clicking on button1
+
+ popup1 = new QFrame( this ,null, WType_Popup);
+ popup1.setFrameStyle( WinPanel|Raised );
+ popup1.resize(150,100);
+ QLineEdit tmpE = new QLineEdit( popup1 );
+ connect( tmpE, SIGNAL(" returnPressed()"), popup1, SLOT(" hide()") );
+ tmpE.setGeometry(10,10, 130, 30);
+ tmpE.setFocus();
+ QPushButton tmpB = new QPushButton("Click me!", popup1);
+ connect( tmpB, SIGNAL(" clicked()"), popup1, SLOT(" close()") );
+ tmpB.setGeometry(10, 50, 130, 30);
+
+ // the fancier version uses its own class. It will be shown when
+ // pressing button2, so they behavior is more like a modern menu
+ // or toolbar.
+
+ popup2 = new FancyPopup( this );
+
+ // you might also add new widgets to the popup, just like you do
+ // it with any other widget. The next four lines (if not
+ // commented out) will for instance add a line edit widget.
+
+// tmpE = new QLineEdit( popup2 );
+// tmpE.setFocus();
+// connect( tmpE, SIGNAL(" returnPressed()"), popup2, SLOT(" close()") );
+// tmpE.setGeometry(10, 10, 130, 30);
+}
+
+
+void button1Clicked(){
+ popup1.move( mapToGlobal( button1.geometry().bottomLeft() ) );
+ popup1.show();
+}
+
+void button2Pressed(){
+ popup2.popup(button2);
+}
+
+class FancyPopup extends QLabel
+{
+private QWidget popupParent;
+private int moves;
+
+
+
+FancyPopup( QWidget parent )
+{
+ this(parent, null);
+}
+
+FancyPopup( QWidget parent, String name )
+{
+ super( parent, name, WType_Popup );
+ setFrameStyle( WinPanel|Raised );
+ setAlignment( AlignCenter );
+ resize(150,100);
+ moves = 0;
+ setMouseTracking( true );
+}
+
+protected void mouseMoveEvent( QMouseEvent e){
+ moves++;
+ String s = e.pos().x() + "/" + e.pos().y();
+ if ((e.state() & QMouseEvent.LeftButton) != 0)
+ s += " (down)";
+ setText(s);
+}
+
+protected void mouseReleaseEvent( QMouseEvent e){
+ if (rect().contains( e.pos() ) || moves > 5)
+ close();
+}
+
+protected void closeEvent( QCloseEvent e ){
+ e.accept();
+ moves = 0;
+ if (popupParent == null)
+ return;
+
+ // remember that we (as a popup) might recieve the mouse release
+ // event instead of the popupParent. This is due to the fact that
+ // the popupParent popped us up in its mousePressEvent handler. To
+ // avoid the button remaining in pressed state we simply send a
+ // faked mouse button release event to it.
+ QMouseEvent me = new QMouseEvent( QEvent.MouseButtonRelease, new QPoint(0,0), new QPoint(0,0), QMouseEvent.LeftButton, QMouseEvent.NoButton);
+ QApplication.sendEvent( popupParent, me );
+}
+
+void popup( QWidget parent) {
+ popupParent = parent;
+ setText("Move the mouse!");
+ if (popupParent != null)
+ move( popupParent.mapToGlobal( popupParent.rect().bottomLeft() ) );
+ show();
+}
+
+}
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ Frame frame = new Frame();
+ frame.setCaption("Qt Example - Custom Popups");
+ a.setMainWidget(frame);
+ frame.show();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/popup/README b/qtjava/javalib/examples/popup/README
new file mode 100644
index 00000000..3be117bb
--- /dev/null
+++ b/qtjava/javalib/examples/popup/README
@@ -0,0 +1,3 @@
+The popup program demonstrates some easy techniques for creating custom
+popup widgets like a fancy color or line-width selection for the
+toolbar of a drawing program or a browsebox for various symbols or ...
diff --git a/qtjava/javalib/examples/progressbar/Main.java b/qtjava/javalib/examples/progressbar/Main.java
new file mode 100644
index 00000000..be103c03
--- /dev/null
+++ b/qtjava/javalib/examples/progressbar/Main.java
@@ -0,0 +1,31 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ ProgressBar progressbar = new ProgressBar();
+ progressbar.setCaption("Qt Example - ProgressBar");
+ a.setMainWidget(progressbar);
+ progressbar.show();
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/progressbar/ProgressBar.java b/qtjava/javalib/examples/progressbar/ProgressBar.java
new file mode 100644
index 00000000..1d8ab1d3
--- /dev/null
+++ b/qtjava/javalib/examples/progressbar/ProgressBar.java
@@ -0,0 +1,174 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class ProgressBar extends QButtonGroup
+{
+
+protected QRadioButton slow, normal, fast;
+protected QPushButton start, pause, reset;
+protected QProgressBar progress;
+protected QTimer timer;
+
+
+/*
+ Constructor
+ *
+ Creates child widgets of the ProgressBar widget
+ */
+
+ProgressBar( )
+{
+ this(null, null);
+}
+
+ProgressBar( QWidget parent, String name )
+{
+ super( 0, Horizontal, "Progress Bar", parent, name );
+ timer = new QTimer();
+ setMargin( 10 );
+
+ QGridLayout toplayout = new QGridLayout( layout(), 2, 2, 5);
+
+ setRadioButtonExclusive( true );
+
+ // insert three radiobuttons which the user can use
+ // to set the speed of the progress and two pushbuttons
+ // to start/pause/continue and reset the progress
+ slow = new QRadioButton( "&Slow", this );
+ normal = new QRadioButton( "&Normal", this );
+ fast = new QRadioButton( "&Fast", this );
+ QVBoxLayout vb1 = new QVBoxLayout();
+ toplayout.addLayout( vb1, 0, 0 );
+ vb1.addWidget( slow );
+ vb1.addWidget( normal );
+ vb1.addWidget( fast );
+
+ // two push buttons, one for start, for for reset.
+ start = new QPushButton( "&Start", this );
+ reset = new QPushButton( "&Reset", this );
+ QVBoxLayout vb2 = new QVBoxLayout();
+ toplayout.addLayout( vb2, 0, 1 );
+ vb2.addWidget( start );
+ vb2.addWidget( reset );
+
+ // Create the progressbar
+ progress = new QProgressBar( 100, this );
+ // progress.setStyle( new QMotifStyle() );
+ toplayout.addMultiCellWidget( progress, 1, 1, 0, 1 );
+
+ // connect the clicked() SIGNALs of the pushbuttons to SLOTs
+ connect( start, SIGNAL(" clicked()"), this, SLOT(" slotStart()") );
+ connect( reset, SIGNAL(" clicked()"), this, SLOT(" slotReset()") );
+
+ // connect the timeout() SIGNAL of the progress-timer to a SLOT
+ connect( timer, SIGNAL(" timeout()"), this, SLOT(" slotTimeout()") );
+
+ // Let's start with normal speed...
+ normal.setChecked( true );
+
+
+ // some contraints
+ start.setFixedWidth( 80 );
+ setMinimumWidth( 300 );
+}
+
+/*
+ SLOT slotStart
+ *
+ This SLOT is called if the user clicks start/pause/continue
+ button
+ */
+
+void slotStart()
+{
+ // If the progress bar is at the beginning...
+ if ( progress.progress() == -1 ) {
+ // ...set according to the checked speed-radiobutton
+ // the number of steps which are needed to complete the process
+ if ( slow.isChecked() )
+ progress.setTotalSteps( 10000 );
+ else if ( normal.isChecked() )
+ progress.setTotalSteps( 1000 );
+ else
+ progress.setTotalSteps( 50 );
+
+ // disable the speed-radiobuttons
+ slow.setEnabled( false );
+ normal.setEnabled( false );
+ fast.setEnabled( false );
+ }
+
+ // If the progress is not running...
+ if ( !timer.isActive() ) {
+ // ...start the timer (and so the progress) with a interval of 1 ms...
+ timer.start( 1 );
+ // ...and rename the start/pause/continue button to Pause
+ start.setText( "&Pause" );
+ } else { // if the prgress is running...
+ // ...stop the timer (and so the prgress)...
+ timer.stop();
+ // ...and rename the start/pause/continue button to Continue
+ start.setText( "&Continue" );
+ }
+}
+
+/*
+ SLOT slotReset
+ *
+ This SLOT is called when the user clicks the reset button
+ */
+
+void slotReset()
+{
+ // stop the timer and progress
+ timer.stop();
+
+ // rename the start/pause/continue button to Start...
+ start.setText( "&Start" );
+ // ...and enable this button
+ start.setEnabled( true );
+
+ // enable the speed-radiobuttons
+ slow.setEnabled( true );
+ normal.setEnabled( true );
+ fast.setEnabled( true );
+
+ // reset the progressbar
+ progress.reset();
+}
+
+/*
+ SLOT slotTimeout
+ *
+ This SLOT is called each ms when the timer is
+ active (== progress is running)
+ */
+
+void slotTimeout()
+{
+ int p = progress.progress();
+
+ // If the progress is complete...
+ if ( p == progress.totalSteps() ) {
+ // ...rename the start/pause/continue button to Start...
+ start.setText( "&Start" );
+ // ...and disable it...
+ start.setEnabled( false );
+ // ...and return
+ return;
+ }
+
+ // If the process is not complete increase it
+ progress.setProgress( ++p );
+}
+}
diff --git a/qtjava/javalib/examples/qfd/FontDisplayer.java b/qtjava/javalib/examples/qfd/FontDisplayer.java
new file mode 100644
index 00000000..26f658b1
--- /dev/null
+++ b/qtjava/javalib/examples/qfd/FontDisplayer.java
@@ -0,0 +1,167 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.math.*;
+
+
+
+class FontDisplayer extends QMainWindow {
+
+
+
+class FontRowTable extends QFrame {
+private QFont tablefont;
+private int row;
+
+FontRowTable( QWidget parent )
+{
+ this(parent, null);
+}
+
+FontRowTable( QWidget parent, String name )
+{
+ super(parent,name);
+ setBackgroundMode(PaletteBase);
+ setFrameStyle(Panel|Sunken);
+ setMargin(8);
+ setRow(0);
+ tablefont = QApplication.font();
+}
+
+public QSize sizeHint()
+{
+ return new QSize( 16*cellSize().width()+2*(margin()+frameWidth()),
+ 16*cellSize().height()+2*(margin()+frameWidth()) );
+}
+
+QSize cellSize()
+{
+ QFontMetrics fm = fontMetrics();
+ return new QSize( fm.maxWidth(), fm.lineSpacing()+1 );
+}
+
+protected void paintEvent( QPaintEvent e )
+{
+ super.paintEvent(e);
+System.out.println("In paintEvent");
+ QPainter p = new QPainter(this);
+ p.setClipRegion(e.region());
+ QRect r = e.rect();
+ QFontMetrics fm = fontMetrics();
+ int ml = frameWidth()+margin() + 1 + (-fm.minLeftBearing() > 0 ? -fm.minLeftBearing() : 0);
+ int mt = frameWidth()+margin();
+ QSize cell = new QSize((width()-15-ml)/16,(height()-15-mt)/16);
+
+ if ( cell.width() == 0 || cell.height() == 0 )
+ return;
+
+ int mini = r.left() / cell.width();
+ int maxi = (r.right()+cell.width()-1) / cell.width();
+ int minj = r.top() / cell.height();
+ int maxj = (r.bottom()+cell.height()-1) / cell.height();
+
+ int h = fm.height();
+
+ QColor body = new QColor(255,255,192);
+ QColor negative = new QColor(255,192,192);
+ QColor positive = new QColor(192,192,255);
+ QColor rnegative = new QColor(255,128,128);
+ QColor rpositive = new QColor(128,128,255);
+
+ for (int j = minj; j<=maxj; j++) {
+ for (int i = mini; i<=maxi; i++) {
+ if ( i < 16 && j < 16 ) {
+ int x = i * cell.width();
+ int y = j* cell.height();
+
+ char ch = (char) ((j*16+i) + (row*256));
+
+ if ( fm.inFont(ch) ) {
+ int w = fm.width(ch);
+ int lb = fm.leftBearing(ch);
+ int rb = fm.rightBearing(ch);
+
+ x += ml;
+ y += mt+h;
+
+ p.fillRect(x,y,w,-h,new QBrush(body));
+ if ( w != 0) {
+ if ( lb != 0 ) {
+ p.fillRect(x+(lb>0?0:lb), y-h/2, Math.abs(lb),-h/2,
+ new QBrush(lb < 0 ? negative : positive));
+ }
+ if ( rb != 0) {
+ p.fillRect(x+w-(rb>0?rb:0),y+2, Math.abs(rb),-h/2,
+ new QBrush(rb < 0 ? rnegative : rpositive));
+ }
+ }
+ String s = "";
+ s += ch;
+ p.setPen(new QPen(Qt.black()));
+ p.drawText(x,y,s);
+ }
+ }
+ }
+ }
+ p.end();
+}
+
+void setRow(int r)
+{
+ row = r;
+
+ QFontMetrics fm = fontMetrics();
+ String str = "mLB=" + fm.minLeftBearing() +
+ " mRB=" + fm.minRightBearing() +
+ " mW=" + fm.maxWidth();
+
+ emit("fontInformation", str);
+ update();
+}
+
+void chooseFont()
+{
+ boolean[] ok = { true };
+ QFont oldfont = tablefont;
+ tablefont = QFontDialog.getFont(ok, oldfont, this);
+
+ if (ok[0])
+ setFont(tablefont);
+ else
+ tablefont = oldfont;
+
+
+}
+}
+
+FontDisplayer( )
+{
+ this(null, null);
+}
+
+FontDisplayer( QWidget parent, String name )
+{
+ super(parent,name);
+ FontRowTable table = new FontRowTable(this);
+ QToolBar controls = new QToolBar(this);
+ new QLabel(tr("Row:"), controls);
+ QSpinBox row = new QSpinBox(0,255,1,controls);
+ controls.addSeparator();
+ QPushButton fontbutton = new QPushButton(tr("Font..."), controls);
+
+ connect(row,SIGNAL("valueChanged(int)"),table,SLOT("setRow(int)"));
+ connect(fontbutton, SIGNAL("clicked()"), table, SLOT("chooseFont()"));
+ connect(table,SIGNAL("fontInformation(String)"),
+ statusBar(),SLOT("message(String)"));
+ table.setRow(0);
+ setCentralWidget(table);
+}
+}
diff --git a/qtjava/javalib/examples/qfd/Main.java b/qtjava/javalib/examples/qfd/Main.java
new file mode 100644
index 00000000..d25f2389
--- /dev/null
+++ b/qtjava/javalib/examples/qfd/Main.java
@@ -0,0 +1,38 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class Main {
+
+public static void main(String[] args) {
+ // Use an interesting font
+ QApplication.setFont(new QFont("unifont",16));
+
+ QApplication app = new QApplication(args);
+
+ FontDisplayer m = new FontDisplayer();
+ QSize sh = m.centralWidget().sizeHint();
+ m.resize(sh.width(),
+ sh.height()+3*m.statusBar().height());
+ app.setMainWidget(m);
+ m.setCaption("Qt Example - QFD");
+ m.show();
+
+ app.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+
+}
diff --git a/qtjava/javalib/examples/qmag/MagWidget.java b/qtjava/javalib/examples/qmag/MagWidget.java
new file mode 100644
index 00000000..66c68705
--- /dev/null
+++ b/qtjava/javalib/examples/qmag/MagWidget.java
@@ -0,0 +1,356 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class MagWidget extends QWidget
+{
+private QComboBox zoom;
+private QComboBox refresh;
+private QPushButton saveButton;
+private QPushButton multiSaveButton;
+private QPushButton quitButton;
+private QPixmap pm; // pixmap, magnified
+private QPixmap p; // pixmap
+private QImage image; // image of pixmap (for RGB)
+private QLabel rgb;
+private int yoffset; // pixels in addition to the actual picture
+private int z; // magnification factor
+private int r; // autorefresh rate (index into refreshrates)
+private boolean grabbing; // true if qmag is currently grabbing
+private int grabx, graby;
+private String multifn; // filename for multisave
+
+
+static String zoomfactors[] = {
+ "100%", "200%", "300%", "400%", "500%",
+ "600%", "700%", "800%", "1600%" };
+
+static String refreshrates[] = {
+ "No autorefresh", "50 per second", "4 per second", "3 per second", "2 per second",
+ "Every second", "Every two seconds", "Every three seconds",
+ "Every five seconds", "Every ten seconds" };
+
+static int timer[] = {
+ 0, 20, 250, 333, 500, 1000, 2000, 3000, 5000, 10000 };
+
+
+MagWidget( )
+{
+ this(null, null);
+}
+
+MagWidget( QWidget parent, String name )
+{
+ super( parent, name);
+ z = 1; // default zoom (100%)
+ r = 0; // default refresh (none)
+
+ int w=0, x=0, n;
+
+ zoom = new QComboBox( false, this );
+ zoom.insertStrList( zoomfactors, 9 );
+ connect( zoom, SIGNAL("activated(int)"), SLOT("setZoom(int)") );
+
+ refresh = new QComboBox( false, this );
+ refresh.insertStrList( refreshrates, 9 );
+ connect( refresh, SIGNAL("activated(int)"), SLOT("setRefresh(int)") );
+
+ for( n=0; n<9; n++) {
+ int w2 = zoom.fontMetrics().width( zoomfactors[n] );
+ w = w2 > w ? w2 : w;
+ }
+ zoom.setGeometry( 2, 2, w+30, 20 );
+
+ x = w+34;
+ w = 0;
+ for( n=0; n<9; n++) {
+ int w2 = refresh.fontMetrics().width( refreshrates[n] );
+ w = w2 > w ? w2 : w;
+ }
+ refresh.setGeometry( x, 2, w+30, 20 );
+
+ saveButton = new QPushButton( this );
+ connect( saveButton, SIGNAL("clicked()"), this, SLOT("save()") );
+ saveButton.setText( "Save" );
+ saveButton.setGeometry( x+w+30+2, 2,
+ 10+saveButton.fontMetrics().width("Save"), 20 );
+
+ multiSaveButton = new QPushButton( this );
+ multiSaveButton.setToggleButton(true);
+ connect( multiSaveButton, SIGNAL("clicked()"), this, SLOT("multiSave()") );
+ multiSaveButton.setText( "MultiSave" );
+ multiSaveButton.setGeometry( saveButton.geometry().right() + 2, 2,
+ 10+multiSaveButton.fontMetrics().width("MultiSave"), 20 );
+
+ quitButton = new QPushButton( this );
+ connect( quitButton, SIGNAL("clicked()"), qApp(), SLOT("quit()") );
+ quitButton.setText( "Quit" );
+ quitButton.setGeometry( multiSaveButton.geometry().right() + 2, 2,
+ 10+quitButton.fontMetrics().width("Quit"), 20 );
+
+// #else
+// zoom = null;
+// multiSaveButton = null;
+
+ setRefresh(1);
+ setZoom(5);
+
+ rgb = new QLabel( this );
+ rgb.setText( "" );
+ rgb.setAlignment( AlignVCenter );
+ rgb.resize( width(), rgb.fontMetrics().height() + 4 );
+
+ yoffset = zoom.height() // top buttons
+ + 4 // space around top buttons
+ + rgb.height(); // color-value text height
+ setMinimumSize( quitButton.pos().x(), yoffset+20 );
+ resize( quitButton.geometry().topRight().x() + 2, yoffset+60 );
+// #else
+ yoffset = 0;
+ resize(350,350);
+
+ grabx = graby = -1;
+ grabbing = false;
+
+ setMouseTracking( true ); // and do let me know what pixel I'm at, eh?
+
+ grabAround( new QPoint(grabx=qApp().desktop().width()/2, graby=qApp().desktop().height()/2) );
+}
+
+
+void setZoom( int index )
+{
+ if (index == 8)
+ z = 16;
+ else
+ z = index+1;
+ grab();
+}
+
+
+void setRefresh( int index )
+{
+ r = index;
+ killTimers();
+ if (index != 0 && grabbing)
+ startTimer( timer[r] );
+}
+
+
+void save()
+{
+ if ( p != null ) {
+ killTimers();
+ String fn = QFileDialog.getSaveFileName();
+ if ( !fn.equals("") )
+ p.save( fn, "BMP" );
+ if ( r != 0)
+ startTimer( timer[r] );
+ }
+}
+
+void multiSave()
+{
+ if ( p != null ) {
+ multifn = ""; // stops saving
+ multifn = QFileDialog.getSaveFileName();
+ if ( multifn.equals("") )
+ multiSaveButton.setOn(false);
+ if ( r == 0)
+ p.save( multifn, "BMP" );
+ } else {
+ multiSaveButton.setOn(false);
+ }
+}
+
+
+void grab()
+{
+ if ( !isVisible() )
+ return; // don't eat resources when iconified
+
+ if ( grabx < 0 || graby < 0 )
+ return; // don't grab until the user has said to
+
+ int x,y, w,h;
+
+ w = (width()+z-1)/z;
+ h = (height()+z-1-yoffset)/z;
+ if ( w<1 || h<1 )
+ return; // don't ask too much from the window system :)
+
+ x = grabx-w/2; // find a suitable position to grab from
+ y = graby-h/2;
+ if ( x + w > QApplication.desktop().width() )
+ x = QApplication.desktop().width()-w;
+ else if ( x < 0 )
+ x = 0;
+ if ( y + h > QApplication.desktop().height() )
+ y = QApplication.desktop().height()-h;
+ else if ( y < 0 )
+ y = 0;
+
+ p = QPixmap.grabWindow( QApplication.desktop().winId(), x, y, w, h );
+ image = p.convertToImage();
+ QWMatrix m = new QWMatrix(); // after getting it, scale it
+ m.scale( (double)z, (double)z );
+ // A cast from Object to QPixmap is needed in java. The xForm methods
+ // have several different return types in C++, and must all be of type
+ // 'Object' for java
+ pm = (QPixmap) p.xForm( m );
+
+ if ( multiSaveButton == null || !multiSaveButton.isOn() )
+ repaint( false ); // and finally repaint, flicker-free
+}
+
+
+protected void paintEvent( QPaintEvent e )
+{
+ if ( pm != null ) {
+ QPainter paint = new QPainter( this );
+ paint.drawPixmap( 0, zoom != null ? zoom.height()+4 : 0, pm,
+ 0,0, width(), height()-yoffset );
+ }
+}
+
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ if ( !grabbing ) { // prepare to grab...
+ grabbing = true;
+ killTimers();
+ grabMouse( crossCursor() );
+ grabx = -1;
+ graby = -1;
+ } else { // REALLY prepare to grab
+ grabx = mapToGlobal(e.pos()).x();
+ graby = mapToGlobal(e.pos()).y();
+ }
+}
+
+
+
+protected void mouseReleaseEvent( QMouseEvent e )
+{
+ if ( grabbing && grabx >= 0 && graby >= 0 ) {
+ grabbing = false;
+ grabAround(e.pos());
+ releaseMouse();
+ }
+}
+
+void grabAround(QPoint pos)
+{
+ int rx, ry;
+ rx = mapToGlobal(pos).x();
+ ry = mapToGlobal(pos).y();
+ int w = Math.abs(rx-grabx);
+ int h = Math.abs(ry-graby);
+ if ( w > 10 && h > 10 ) {
+ int pz;
+ pz = 1;
+ while ( w*pz*h*pz < width()*(height()-yoffset) &&
+ w*pz < QApplication.desktop().width() &&
+ h*pz < QApplication.desktop().height() )
+ pz++;
+ if ( (w*pz*h*pz - width()*(height()-yoffset)) >
+ (width()*(height()-yoffset) - w*(pz-1)*h*(pz-1)) )
+ pz--;
+ if ( pz < 1 )
+ pz = 1;
+ if ( pz > 8 )
+ pz = 8;
+ if ( zoom != null)
+ zoom.setCurrentItem( pz-1 );
+
+ z = pz;
+ grabx = (rx < grabx ? rx : grabx) + w/2;
+ graby = (ry < graby ? ry : graby) + h/2;
+ resize( w*z, h*z+yoffset );
+ }
+ grab();
+ if ( r != 0 )
+ startTimer( timer[r] );
+}
+
+
+protected void mouseMoveEvent( QMouseEvent e )
+{
+ if ( grabbing || pm.isNull() ||
+ e.pos().y() > height() - (zoom != null ? zoom.fontMetrics().height() - 4 : 0) ||
+ e.pos().y() < (zoom != null ? zoom.height()+4 : 4) ) {
+ rgb.setText( "" );
+ } else {
+ int x,y;
+ x = e.pos().x() / z;
+ y = (e.pos().y() - ( zoom != null ? zoom.height() : 0 ) - 4) / z;
+ String pixelinfo = "";
+ if ( image.valid(x,y) )
+ {
+ int px = image.pixel(x,y);
+ pixelinfo= " " + qRed(px) + "," + qGreen(px) + "," + qBlue(px) + " ";
+ pixelinfo += "#" + Integer.toHexString(qRed(px))
+ + Integer.toHexString(qGreen(px))
+ + Integer.toHexString(qBlue(px)) + " ";
+ }
+ String label = "x=" + (x+grabx) + ", y=" + (y+graby) + " " + pixelinfo;
+ rgb.setText( label );
+ }
+}
+
+
+protected void focusOutEvent( QFocusEvent e )
+{
+ rgb.setText( "" );
+}
+
+
+protected void timerEvent( QTimerEvent e )
+{
+ grab();
+/*
+ if ( multiSaveButton.isOn() && !multifn.equals("") ) {
+ QRegExp num("[0-9][0-9]");
+ int start;
+ int len;
+ if ((start=num.match(multifn,0,&len))>=0)
+ multifn.replace(num,
+ String().setNum(multifn.mid(start,len).toInt()+1)
+ );
+ p.save( multifn, "BMP" );
+ }
+*/
+}
+
+
+protected void resizeEvent( QResizeEvent e )
+{
+ rgb.setGeometry( 0, height() - rgb.height(), width(), rgb.height() );
+ grab();
+}
+
+
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+ MagWidget m = new MagWidget();
+ a.setMainWidget( m );
+ m.show();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/qmag/README b/qtjava/javalib/examples/qmag/README
new file mode 100644
index 00000000..df10244e
--- /dev/null
+++ b/qtjava/javalib/examples/qmag/README
@@ -0,0 +1,6 @@
+The qmag program can magnify portions of the screen to let you see
+things at a pixel level.
+
+Run it, resize it appropriately, click inside, then click where you want
+to grab. Set magnification factor and auto-refresh as desired.
+
diff --git a/qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.map b/qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.map
new file mode 100644
index 00000000..1b7058ec
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.map
@@ -0,0 +1,511 @@
+<code_set_name> ANSI_X3.110-1983
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+% source: ECMA registry
+
+% alias ISO-IR-99
+% alias CSA_T500-1983
+% alias NAPLPS
+CHARMAP
+<NU> /x00 <U0000> NULL (NUL)
+<SH> /x01 <U0001> START OF HEADING (SOH)
+<SX> /x02 <U0002> START OF TEXT (STX)
+<EX> /x03 <U0003> END OF TEXT (ETX)
+<ET> /x04 <U0004> END OF TRANSMISSION (EOT)
+<EQ> /x05 <U0005> ENQUIRY (ENQ)
+<AK> /x06 <U0006> ACKNOWLEDGE (ACK)
+<BL> /x07 <U0007> BELL (BEL)
+<BS> /x08 <U0008> BACKSPACE (BS)
+<HT> /x09 <U0009> CHARACTER TABULATION (HT)
+<LF> /x0A <U000A> LINE FEED (LF)
+<VT> /x0B <U000B> LINE TABULATION (VT)
+<FF> /x0C <U000C> FORM FEED (FF)
+<CR> /x0D <U000D> CARRIAGE RETURN (CR)
+<SO> /x0E <U000E> SHIFT OUT (SO)
+<SI> /x0F <U000F> SHIFT IN (SI)
+<DL> /x10 <U0010> DATALINK ESCAPE (DLE)
+<D1> /x11 <U0011> DEVICE CONTROL ONE (DC1)
+<D2> /x12 <U0012> DEVICE CONTROL TWO (DC2)
+<D3> /x13 <U0013> DEVICE CONTROL THREE (DC3)
+<D4> /x14 <U0014> DEVICE CONTROL FOUR (DC4)
+<NK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY> /x16 <U0016> SYNCHRONOUS IDLE (SYN)
+<EB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN> /x18 <U0018> CANCEL (CAN)
+<EM> /x19 <U0019> END OF MEDIUM (EM)
+<SB> /x1A <U001A> SUBSTITUTE (SUB)
+<EC> /x1B <U001B> ESCAPE (ESC)
+<FS> /x1C <U001C> FILE SEPARATOR (IS4)
+<GS> /x1D <U001D> GROUP SEPARATOR (IS3)
+<RS> /x1E <U001E> RECORD SEPARATOR (IS2)
+<US> /x1F <U001F> UNIT SEPARATOR (IS1)
+<SP> /x20 <U0020> SPACE
+<!> /x21 <U0021> EXCLAMATION MARK
+<"> /x22 <U0022> QUOTATION MARK
+<%> /x25 <U0025> PERCENT SIGN
+<&> /x26 <U0026> AMPERSAND
+<'> /x27 <U0027> APOSTROPHE
+<(> /x28 <U0028> LEFT PARENTHESIS
+<)> /x29 <U0029> RIGHT PARENTHESIS
+<*> /x2A <U002A> ASTERISK
+<+> /x2B <U002B> PLUS SIGN
+<,> /x2C <U002C> COMMA
+<-> /x2D <U002D> HYPHEN-MINUS
+<.> /x2E <U002E> FULL STOP
+<//> /x2F <U002F> SOLIDUS
+<0> /x30 <U0030> DIGIT ZERO
+<1> /x31 <U0031> DIGIT ONE
+<2> /x32 <U0032> DIGIT TWO
+<3> /x33 <U0033> DIGIT THREE
+<4> /x34 <U0034> DIGIT FOUR
+<5> /x35 <U0035> DIGIT FIVE
+<6> /x36 <U0036> DIGIT SIX
+<7> /x37 <U0037> DIGIT SEVEN
+<8> /x38 <U0038> DIGIT EIGHT
+<9> /x39 <U0039> DIGIT NINE
+<:> /x3A <U003A> COLON
+<;> /x3B <U003B> SEMICOLON
+<<> /x3C <U003C> LESS-THAN SIGN
+<=> /x3D <U003D> EQUALS SIGN
+</>> /x3E <U003E> GREATER-THAN SIGN
+<?> /x3F <U003F> QUESTION MARK
+<At> /x40 <U0040> COMMERCIAL AT
+<A> /x41 <U0041> LATIN CAPITAL LETTER A
+<B> /x42 <U0042> LATIN CAPITAL LETTER B
+<C> /x43 <U0043> LATIN CAPITAL LETTER C
+<D> /x44 <U0044> LATIN CAPITAL LETTER D
+<E> /x45 <U0045> LATIN CAPITAL LETTER E
+<F> /x46 <U0046> LATIN CAPITAL LETTER F
+<G> /x47 <U0047> LATIN CAPITAL LETTER G
+<H> /x48 <U0048> LATIN CAPITAL LETTER H
+<I> /x49 <U0049> LATIN CAPITAL LETTER I
+<J> /x4A <U004A> LATIN CAPITAL LETTER J
+<K> /x4B <U004B> LATIN CAPITAL LETTER K
+<L> /x4C <U004C> LATIN CAPITAL LETTER L
+<M> /x4D <U004D> LATIN CAPITAL LETTER M
+<N> /x4E <U004E> LATIN CAPITAL LETTER N
+<O> /x4F <U004F> LATIN CAPITAL LETTER O
+<P> /x50 <U0050> LATIN CAPITAL LETTER P
+<Q> /x51 <U0051> LATIN CAPITAL LETTER Q
+<R> /x52 <U0052> LATIN CAPITAL LETTER R
+<S> /x53 <U0053> LATIN CAPITAL LETTER S
+<T> /x54 <U0054> LATIN CAPITAL LETTER T
+<U> /x55 <U0055> LATIN CAPITAL LETTER U
+<V> /x56 <U0056> LATIN CAPITAL LETTER V
+<W> /x57 <U0057> LATIN CAPITAL LETTER W
+<X> /x58 <U0058> LATIN CAPITAL LETTER X
+<Y> /x59 <U0059> LATIN CAPITAL LETTER Y
+<Z> /x5A <U005A> LATIN CAPITAL LETTER Z
+<<(> /x5B <U005B> LEFT SQUARE BRACKET
+<////> /x5C <U005C> REVERSE SOLIDUS
+<)/>> /x5D <U005D> RIGHT SQUARE BRACKET
+<'/>> /x5E <U005E> CIRCUMFLEX ACCENT
+<_> /x5F <U005F> LOW LINE
+<'!> /x60 <U0060> GRAVE ACCENT
+<a> /x61 <U0061> LATIN SMALL LETTER A
+<b> /x62 <U0062> LATIN SMALL LETTER B
+<c> /x63 <U0063> LATIN SMALL LETTER C
+<d> /x64 <U0064> LATIN SMALL LETTER D
+<e> /x65 <U0065> LATIN SMALL LETTER E
+<f> /x66 <U0066> LATIN SMALL LETTER F
+<g> /x67 <U0067> LATIN SMALL LETTER G
+<h> /x68 <U0068> LATIN SMALL LETTER H
+<i> /x69 <U0069> LATIN SMALL LETTER I
+<j> /x6A <U006A> LATIN SMALL LETTER J
+<k> /x6B <U006B> LATIN SMALL LETTER K
+<l> /x6C <U006C> LATIN SMALL LETTER L
+<m> /x6D <U006D> LATIN SMALL LETTER M
+<n> /x6E <U006E> LATIN SMALL LETTER N
+<o> /x6F <U006F> LATIN SMALL LETTER O
+<p> /x70 <U0070> LATIN SMALL LETTER P
+<q> /x71 <U0071> LATIN SMALL LETTER Q
+<r> /x72 <U0072> LATIN SMALL LETTER R
+<s> /x73 <U0073> LATIN SMALL LETTER S
+<t> /x74 <U0074> LATIN SMALL LETTER T
+<u> /x75 <U0075> LATIN SMALL LETTER U
+<v> /x76 <U0076> LATIN SMALL LETTER V
+<w> /x77 <U0077> LATIN SMALL LETTER W
+<x> /x78 <U0078> LATIN SMALL LETTER X
+<y> /x79 <U0079> LATIN SMALL LETTER Y
+<z> /x7A <U007A> LATIN SMALL LETTER Z
+<(!> /x7B <U007B> LEFT CURLY BRACKET
+<!!> /x7C <U007C> VERTICAL LINE
+<!)> /x7D <U007D> RIGHT CURLY BRACKET
+<'?> /x7E <U007E> TILDE
+<DT> /x7F <U007F> DELETE (DEL)
+<PA> /x80 <U0080> PADDING CHARACTER (PAD)
+<HO> /x81 <U0081> HIGH OCTET PRESET (HOP)
+<BH> /x82 <U0082> BREAK PERMITTED HERE (BPH)
+<NH> /x83 <U0083> NO BREAK HERE (NBH)
+<IN> /x84 <U0084> INDEX (IND)
+<NL> /x85 <U0085> NEXT LINE (NEL)
+<SA> /x86 <U0086> START OF SELECTED AREA (SSA)
+<ES> /x87 <U0087> END OF SELECTED AREA (ESA)
+<HS> /x88 <U0088> CHARACTER TABULATION SET (HTS)
+<HJ> /x89 <U0089> CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+<VS> /x8A <U008A> LINE TABULATION SET (VTS)
+<PD> /x8B <U008B> PARTIAL LINE FORWARD (PLD)
+<PU> /x8C <U008C> PARTIAL LINE BACKWARD (PLU)
+<RI> /x8D <U008D> REVERSE LINE FEED (RI)
+<S2> /x8E <U008E> SINGLE-SHIFT TWO (SS2)
+<S3> /x8F <U008F> SINGLE-SHIFT THREE (SS3)
+<DC> /x90 <U0090> DEVICE CONTROL STRING (DCS)
+<P1> /x91 <U0091> PRIVATE USE ONE (PU1)
+<P2> /x92 <U0092> PRIVATE USE TWO (PU2)
+<TS> /x93 <U0093> SET TRANSMIT STATE (STS)
+<CC> /x94 <U0094> CANCEL CHARACTER (CCH)
+<MW> /x95 <U0095> MESSAGE WAITING (MW)
+<SG> /x96 <U0096> START OF GUARDED AREA (SPA)
+<EG> /x97 <U0097> END OF GUARDED AREA (EPA)
+<SS> /x98 <U0098> START OF STRING (SOS)
+<GC> /x99 <U0099> SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+<SC> /x9A <U009A> SINGLE CHARACTER INTRODUCER (SCI)
+<CI> /x9B <U009B> CONTROL SEQUENCE INTRODUCER (CSI)
+<ST> /x9C <U009C> STRING TERMINATOR (ST)
+<OC> /x9D <U009D> OPERATING SYSTEM COMMAND (OSC)
+<PM> /x9E <U009E> PRIVACY MESSAGE (PM)
+<AC> /x9F <U009F> APPLICATION PROGRAM COMMAND (APC)
+<!I> /xA1 <U00A1> INVERTED EXCLAMATION MARK
+<Ct> /xA2 <U00A2> CENT SIGN
+<Pd> /xA3 <U00A3> POUND SIGN
+<DO> /xA4 <U0024> DOLLAR SIGN
+<Ye> /xA5 <U00A5> YEN SIGN
+<Nb> /xA6 <U0023> NUMBER SIGN
+<SE> /xA7 <U00A7> SECTION SIGN
+<Cu> /xA8 <U00A4> CURRENCY SIGN
+<'6> /xA9 <U2018> LEFT SINGLE QUOTATION MARK
+<"6> /xAA <U201C> LEFT DOUBLE QUOTATION MARK
+<<<> /xAB <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<<-> /xAC <U2190> LEFTWARDS ARROW
+<-!> /xAD <U2191> UPWARDS ARROW
+<-/>> /xAE <U2192> RIGHTWARDS ARROW
+<-v> /xAF <U2193> DOWNWARDS ARROW
+<DG> /xB0 <U00B0> DEGREE SIGN
+<+-> /xB1 <U00B1> PLUS-MINUS SIGN
+<2S> /xB2 <U00B2> SUPERSCRIPT TWO
+<3S> /xB3 <U00B3> SUPERSCRIPT THREE
+<*X> /xB4 <U00D7> MULTIPLICATION SIGN
+<My> /xB5 <U00B5> MICRO SIGN
+<PI> /xB6 <U00B6> PILCROW SIGN
+<.M> /xB7 <U00B7> MIDDLE DOT
+<-:> /xB8 <U00F7> DIVISION SIGN
+<'9> /xB9 <U2019> RIGHT SINGLE QUOTATION MARK
+<"9> /xBA <U201D> RIGHT DOUBLE QUOTATION MARK
+</>/>> /xBB <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<14> /xBC <U00BC> VULGAR FRACTION ONE QUARTER
+<12> /xBD <U00BD> VULGAR FRACTION ONE HALF
+<34> /xBE <U00BE> VULGAR FRACTION THREE QUARTERS
+<?I> /xBF <U00BF> INVERTED QUESTION MARK
+<"!> /xC1 <UE002> NON-SPACING GRAVE ACCENT <ISO-IR-103_C1> (not a real character)
+<"'> /xC2 <UE003> NON-SPACING ACUTE ACCENT <ISO-IR-103_C2> (not a real character)
+<"/>> /xC3 <UE004> NON-SPACING CIRCUMFLEX ACCENT <ISO-IR-103_C3> (not a real character)
+<"?> /xC4 <UE005> NON-SPACING TILDE <ISO-IR-103_C4> (not a real character)
+<"-> /xC5 <UE006> NON-SPACING MACRON <ISO-IR-103_C5> (not a real character)
+<"(> /xC6 <UE007> NON-SPACING BREVE <ISO-IR-103_C6> (not a real character)
+<".> /xC7 <UE008> NON-SPACING DOT ABOVE <ISO-IR-103_C7> (not a real character)
+<":> /xC8 <UE009> NON-SPACING DIAERESIS <ISO-IR-103_C8> (not a real character)
+<"//> /xC9 <UE011> NON-SPACING LONG SOLIDUS OVERLAY <ISO-IR-128_C9> (not a real character)
+<"0> /xCA <UE00A> NON-SPACING RING ABOVE <ISO-IR-103_CA> (not a real character)
+<",> /xCB <UE00B> NON-SPACING CEDILLA <ISO-IR-103_CB> (not a real character)
+<"_> /xCC <UE00C> NON-SPACING LOW LINE <ISO-IR-103_CC> (not a real character)
+<""> /xCD <UE00D> NON-SPACING DOUBLE ACCUTE ACCENT <ISO-IR-103_CD> (not a real character)
+<";> /xCE <UE00E> NON-SPACING OGONEK <ISO-IR-103_CE> (not a real character)
+<"<> /xCF <UE00F> NON-SPACING CARON <ISO-IR-103_CF> (not a real character)
+<-M> /xD0 <U2014> EM DASH
+<1S> /xD1 <U00B9> SUPERSCRIPT ONE
+<Rg> /xD2 <U00AE> REGISTERED SIGN
+<Co> /xD3 <U00A9> COPYRIGHT SIGN
+<TM> /xD4 <U2122> TRADE MARK SIGN
+<M8> /xD5 <U266A> EIGHTH NOTE
+<hh> /xD6 <U2500> BOX DRAWINGS LIGHT HORIZONTAL
+<vv> /xD7 <U2502> BOX DRAWINGS LIGHT VERTICAL
+<FD> /xD8 <U2571> BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+<BD> /xD9 <U2572> BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+<Fd> /xDA <U25E2> BLACK LOWER RIGHT TRIANGLE
+<Bd> /xDB <U25E3> BLACK LOWER LEFT TRIANGLE
+<18> /xDC <U215B> VULGAR FRACTION ONE EIGHTH
+<38> /xDD <U215C> VULGAR FRACTION THREE EIGHTHS
+<58> /xDE <U215D> VULGAR FRACTION FIVE EIGHTHS
+<78> /xDF <U215E> VULGAR FRACTION SEVEN EIGHTHS
+<Om> /xE0 <U2126> OHM SIGN
+<AE> /xE1 <U00C6> LATIN CAPITAL LETTER AE
+<D-> /xE2 <U00D0> LATIN CAPITAL LETTER ETH (Icelandic)
+<-a> /xE3 <U00AA> FEMININE ORDINAL INDICATOR
+<H//> /xE4 <U0126> LATIN CAPITAL LETTER H WITH STROKE
+<vh> /xE5 <U253C> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+<IJ> /xE6 <U0132> LATIN CAPITAL LIGATURE IJ
+<L.> /xE7 <U013F> LATIN CAPITAL LETTER L WITH MIDDLE DOT
+<L//> /xE8 <U0141> LATIN CAPITAL LETTER L WITH STROKE
+<O//> /xE9 <U00D8> LATIN CAPITAL LETTER O WITH STROKE
+<OE> /xEA <U0152> LATIN CAPITAL LIGATURE OE
+<-o> /xEB <U00BA> MASCULINE ORDINAL INDICATOR
+<TH> /xEC <U00DE> LATIN CAPITAL LETTER THORN (Icelandic)
+<T//> /xED <U0166> LATIN CAPITAL LETTER T WITH STROKE
+<NG> /xEE <U014A> LATIN CAPITAL LETTER ENG (Sami)
+<'n> /xEF <U0149> LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+<kk> /xF0 <U0138> LATIN SMALL LETTER KRA (Greenlandic)
+<ae> /xF1 <U00E6> LATIN SMALL LETTER AE
+<d//> /xF2 <U0111> LATIN SMALL LETTER D WITH STROKE
+<d-> /xF3 <U00F0> LATIN SMALL LETTER ETH (Icelandic)
+<h//> /xF4 <U0127> LATIN SMALL LETTER H WITH STROKE
+<i.> /xF5 <U0131> LATIN SMALL LETTER DOTLESS I
+<ij> /xF6 <U0133> LATIN SMALL LIGATURE IJ
+<l.> /xF7 <U0140> LATIN SMALL LETTER L WITH MIDDLE DOT
+<l//> /xF8 <U0142> LATIN SMALL LETTER L WITH STROKE
+<o//> /xF9 <U00F8> LATIN SMALL LETTER O WITH STROKE
+<oe> /xFA <U0153> LATIN SMALL LIGATURE OE
+<ss> /xFB <U00DF> LATIN SMALL LETTER SHARP S (German)
+<th> /xFC <U00FE> LATIN SMALL LETTER THORN (Icelandic)
+<t//> /xFD <U0167> LATIN SMALL LETTER T WITH STROKE
+<ng> /xFE <U014B> LATIN SMALL LETTER ENG (Sami)
+<''> /xC2/x20 <U00B4> ACUTE ACCENT
+<a'> /xC2/x61 <U00E1> LATIN SMALL LETTER A WITH ACUTE
+<A'> /xC2/x41 <U00C1> LATIN CAPITAL LETTER A WITH ACUTE
+<e'> /xC2/x65 <U00E9> LATIN SMALL LETTER E WITH ACUTE
+<E'> /xC2/x45 <U00C9> LATIN CAPITAL LETTER E WITH ACUTE
+<i'> /xC2/x69 <U00ED> LATIN SMALL LETTER I WITH ACUTE
+<I'> /xC2/x49 <U00CD> LATIN CAPITAL LETTER I WITH ACUTE
+<o'> /xC2/x6F <U00F3> LATIN SMALL LETTER O WITH ACUTE
+<O'> /xC2/x4F <U00D3> LATIN CAPITAL LETTER O WITH ACUTE
+<u'> /xC2/x75 <U00FA> LATIN SMALL LETTER U WITH ACUTE
+<U'> /xC2/x55 <U00DA> LATIN CAPITAL LETTER U WITH ACUTE
+<y'> /xC2/x79 <U00FD> LATIN SMALL LETTER Y WITH ACUTE
+<Y'> /xC2/x59 <U00DD> LATIN CAPITAL LETTER Y WITH ACUTE
+<c'> /xC2/x63 <U0107> LATIN SMALL LETTER C WITH ACUTE
+<C'> /xC2/x43 <U0106> LATIN CAPITAL LETTER C WITH ACUTE
+<l'> /xC2/x6C <U013A> LATIN SMALL LETTER L WITH ACUTE
+<L'> /xC2/x4C <U0139> LATIN CAPITAL LETTER L WITH ACUTE
+<n'> /xC2/x6E <U0144> LATIN SMALL LETTER N WITH ACUTE
+<N'> /xC2/x4E <U0143> LATIN CAPITAL LETTER N WITH ACUTE
+<r'> /xC2/x72 <U0155> LATIN SMALL LETTER R WITH ACUTE
+<R'> /xC2/x52 <U0154> LATIN CAPITAL LETTER R WITH ACUTE
+<s'> /xC2/x73 <U015B> LATIN SMALL LETTER S WITH ACUTE
+<S'> /xC2/x53 <U015A> LATIN CAPITAL LETTER S WITH ACUTE
+<z'> /xC2/x7A <U017A> LATIN SMALL LETTER Z WITH ACUTE
+<Z'> /xC2/x5A <U0179> LATIN CAPITAL LETTER Z WITH ACUTE
+<'(> /xC6/x20 <U02D8> BREVE
+<a(> /xC6/x61 <U0103> LATIN SMALL LETTER A WITH BREVE
+<A(> /xC6/x41 <U0102> LATIN CAPITAL LETTER A WITH BREVE
+<g(> /xC6/x67 <U011F> LATIN SMALL LETTER G WITH BREVE
+<G(> /xC6/x47 <U011E> LATIN CAPITAL LETTER G WITH BREVE
+<u(> /xC6/x75 <U016D> LATIN SMALL LETTER U WITH BREVE
+<U(> /xC6/x55 <U016C> LATIN CAPITAL LETTER U WITH BREVE
+<'<> /xCF/x20 <U02C7> CARON (Mandarin Chinese third tone)
+<c<> /xCF/x63 <U010D> LATIN SMALL LETTER C WITH CARON
+<C<> /xCF/x43 <U010C> LATIN CAPITAL LETTER C WITH CARON
+<d<> /xCF/x64 <U010F> LATIN SMALL LETTER D WITH CARON
+<D<> /xCF/x44 <U010E> LATIN CAPITAL LETTER D WITH CARON
+<e<> /xCF/x65 <U011B> LATIN SMALL LETTER E WITH CARON
+<E<> /xCF/x45 <U011A> LATIN CAPITAL LETTER E WITH CARON
+<l<> /xCF/x6C <U013E> LATIN SMALL LETTER L WITH CARON
+<L<> /xCF/x4C <U013D> LATIN CAPITAL LETTER L WITH CARON
+<n<> /xCF/x6E <U0148> LATIN SMALL LETTER N WITH CARON
+<N<> /xCF/x4E <U0147> LATIN CAPITAL LETTER N WITH CARON
+<r<> /xCF/x72 <U0159> LATIN SMALL LETTER R WITH CARON
+<R<> /xCF/x52 <U0158> LATIN CAPITAL LETTER R WITH CARON
+<s<> /xCF/x73 <U0161> LATIN SMALL LETTER S WITH CARON
+<S<> /xCF/x53 <U0160> LATIN CAPITAL LETTER S WITH CARON
+<t<> /xCF/x74 <U0165> LATIN SMALL LETTER T WITH CARON
+<T<> /xCF/x54 <U0164> LATIN CAPITAL LETTER T WITH CARON
+<z<> /xCF/x7A <U017E> LATIN SMALL LETTER Z WITH CARON
+<Z<> /xCF/x5A <U017D> LATIN CAPITAL LETTER Z WITH CARON
+<',> /xCB/x20 <U00B8> CEDILLA
+<c,> /xCB/x63 <U00E7> LATIN SMALL LETTER C WITH CEDILLA
+<C,> /xCB/x43 <U00C7> LATIN CAPITAL LETTER C WITH CEDILLA
+<g,> /xCB/x67 <U0123> LATIN SMALL LETTER G WITH CEDILLA
+<G,> /xCB/x47 <U0122> LATIN CAPITAL LETTER G WITH CEDILLA
+<k,> /xCB/x6B <U0137> LATIN SMALL LETTER K WITH CEDILLA
+<K,> /xCB/x4B <U0136> LATIN CAPITAL LETTER K WITH CEDILLA
+<l,> /xCB/x6C <U013C> LATIN SMALL LETTER L WITH CEDILLA
+<L,> /xCB/x4C <U013B> LATIN CAPITAL LETTER L WITH CEDILLA
+<n,> /xCB/x6E <U0146> LATIN SMALL LETTER N WITH CEDILLA
+<N,> /xCB/x4E <U0145> LATIN CAPITAL LETTER N WITH CEDILLA
+<r,> /xCB/x72 <U0157> LATIN SMALL LETTER R WITH CEDILLA
+<R,> /xCB/x52 <U0156> LATIN CAPITAL LETTER R WITH CEDILLA
+<s,> /xCB/x73 <U015F> LATIN SMALL LETTER S WITH CEDILLA
+<S,> /xCB/x53 <U015E> LATIN CAPITAL LETTER S WITH CEDILLA
+<t,> /xCB/x74 <U0163> LATIN SMALL LETTER T WITH CEDILLA
+<T,> /xCB/x54 <U0162> LATIN CAPITAL LETTER T WITH CEDILLA
+<a/>> /xC3/x61 <U00E2> LATIN SMALL LETTER A WITH CIRCUMFLEX
+<A/>> /xC3/x41 <U00C2> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<e/>> /xC3/x65 <U00EA> LATIN SMALL LETTER E WITH CIRCUMFLEX
+<E/>> /xC3/x45 <U00CA> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<i/>> /xC3/x69 <U00EE> LATIN SMALL LETTER I WITH CIRCUMFLEX
+<I/>> /xC3/x49 <U00CE> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<o/>> /xC3/x6F <U00F4> LATIN SMALL LETTER O WITH CIRCUMFLEX
+<O/>> /xC3/x4F <U00D4> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<u/>> /xC3/x75 <U00FB> LATIN SMALL LETTER U WITH CIRCUMFLEX
+<U/>> /xC3/x55 <U00DB> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<y/>> /xC3/x79 <U0177> LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<Y/>> /xC3/x59 <U0176> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<c/>> /xC3/x63 <U0109> LATIN SMALL LETTER C WITH CIRCUMFLEX
+<C/>> /xC3/x43 <U0108> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<g/>> /xC3/x67 <U011D> LATIN SMALL LETTER G WITH CIRCUMFLEX
+<G/>> /xC3/x47 <U011C> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<h/>> /xC3/x68 <U0125> LATIN SMALL LETTER H WITH CIRCUMFLEX
+<H/>> /xC3/x48 <U0124> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<j/>> /xC3/x6A <U0135> LATIN SMALL LETTER J WITH CIRCUMFLEX
+<J/>> /xC3/x4A <U0134> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<s/>> /xC3/x73 <U015D> LATIN SMALL LETTER S WITH CIRCUMFLEX
+<S/>> /xC3/x53 <U015C> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<w/>> /xC3/x77 <U0175> LATIN SMALL LETTER W WITH CIRCUMFLEX
+<W/>> /xC3/x57 <U0174> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<':> /xC8/x20 <U00A8> DIAERESIS
+<a:> /xC8/x61 <U00E4> LATIN SMALL LETTER A WITH DIAERESIS
+<A:> /xC8/x41 <U00C4> LATIN CAPITAL LETTER A WITH DIAERESIS
+<e:> /xC8/x65 <U00EB> LATIN SMALL LETTER E WITH DIAERESIS
+<E:> /xC8/x45 <U00CB> LATIN CAPITAL LETTER E WITH DIAERESIS
+<i:> /xC8/x69 <U00EF> LATIN SMALL LETTER I WITH DIAERESIS
+<I:> /xC8/x49 <U00CF> LATIN CAPITAL LETTER I WITH DIAERESIS
+<o:> /xC8/x6F <U00F6> LATIN SMALL LETTER O WITH DIAERESIS
+<O:> /xC8/x4F <U00D6> LATIN CAPITAL LETTER O WITH DIAERESIS
+<u:> /xC8/x75 <U00FC> LATIN SMALL LETTER U WITH DIAERESIS
+<U:> /xC8/x55 <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS
+<y:> /xC8/x79 <U00FF> LATIN SMALL LETTER Y WITH DIAERESIS
+<Y:> /xC8/x59 <U0178> LATIN CAPITAL LETTER Y WITH DIAERESIS
+<'.> /xC7/x20 <U02D9> DOT ABOVE (Mandarin Chinese light tone)
+<c.> /xC7/x63 <U010B> LATIN SMALL LETTER C WITH DOT ABOVE
+<C.> /xC7/x43 <U010A> LATIN CAPITAL LETTER C WITH DOT ABOVE
+<e.> /xC7/x65 <U0117> LATIN SMALL LETTER E WITH DOT ABOVE
+<E.> /xC7/x45 <U0116> LATIN CAPITAL LETTER E WITH DOT ABOVE
+<g.> /xC7/x67 <U0121> LATIN SMALL LETTER G WITH DOT ABOVE
+<G.> /xC7/x47 <U0120> LATIN CAPITAL LETTER G WITH DOT ABOVE
+<I.> /xC7/x49 <U0130> LATIN CAPITAL LETTER I WITH DOT ABOVE
+<z.> /xC7/x7A <U017C> LATIN SMALL LETTER Z WITH DOT ABOVE
+<Z.> /xC7/x5A <U017B> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<'"> /xCD/x20 <U02DD> DOUBLE ACUTE ACCENT
+<o"> /xCD/x6F <U0151> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<O"> /xCD/x4F <U0150> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<u"> /xCD/x75 <U0171> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<U"> /xCD/x55 <U0170> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<a!> /xC1/x61 <U00E0> LATIN SMALL LETTER A WITH GRAVE
+<A!> /xC1/x41 <U00C0> LATIN CAPITAL LETTER A WITH GRAVE
+<e!> /xC1/x65 <U00E8> LATIN SMALL LETTER E WITH GRAVE
+<E!> /xC1/x45 <U00C8> LATIN CAPITAL LETTER E WITH GRAVE
+<i!> /xC1/x69 <U00EC> LATIN SMALL LETTER I WITH GRAVE
+<I!> /xC1/x49 <U00CC> LATIN CAPITAL LETTER I WITH GRAVE
+<o!> /xC1/x6F <U00F2> LATIN SMALL LETTER O WITH GRAVE
+<O!> /xC1/x4F <U00D2> LATIN CAPITAL LETTER O WITH GRAVE
+<u!> /xC1/x75 <U00F9> LATIN SMALL LETTER U WITH GRAVE
+<U!> /xC1/x55 <U00D9> LATIN CAPITAL LETTER U WITH GRAVE
+<'m> /xC5/x20 <U00AF> MACRON
+<a-> /xC5/x61 <U0101> LATIN SMALL LETTER A WITH MACRON
+<A-> /xC5/x41 <U0100> LATIN CAPITAL LETTER A WITH MACRON
+<e-> /xC5/x65 <U0113> LATIN SMALL LETTER E WITH MACRON
+<E-> /xC5/x45 <U0112> LATIN CAPITAL LETTER E WITH MACRON
+<i-> /xC5/x69 <U012B> LATIN SMALL LETTER I WITH MACRON
+<I-> /xC5/x49 <U012A> LATIN CAPITAL LETTER I WITH MACRON
+<o-> /xC5/x6F <U014D> LATIN SMALL LETTER O WITH MACRON
+<O-> /xC5/x4F <U014C> LATIN CAPITAL LETTER O WITH MACRON
+<u-> /xC5/x75 <U016B> LATIN SMALL LETTER U WITH MACRON
+<U-> /xC5/x55 <U016A> LATIN CAPITAL LETTER U WITH MACRON
+<';> /xCE/x20 <U02DB> OGONEK
+<a;> /xCE/x61 <U0105> LATIN SMALL LETTER A WITH OGONEK
+<A;> /xCE/x41 <U0104> LATIN CAPITAL LETTER A WITH OGONEK
+<e;> /xCE/x65 <U0119> LATIN SMALL LETTER E WITH OGONEK
+<E;> /xCE/x45 <U0118> LATIN CAPITAL LETTER E WITH OGONEK
+<i;> /xCE/x69 <U012F> LATIN SMALL LETTER I WITH OGONEK
+<I;> /xCE/x49 <U012E> LATIN CAPITAL LETTER I WITH OGONEK
+<u;> /xCE/x75 <U0173> LATIN SMALL LETTER U WITH OGONEK
+<U;> /xCE/x55 <U0172> LATIN CAPITAL LETTER U WITH OGONEK
+<'0> /xCA/x20 <U02DA> RING ABOVE
+<aa> /xCA/x61 <U00E5> LATIN SMALL LETTER A WITH RING ABOVE
+<AA> /xCA/x41 <U00C5> LATIN CAPITAL LETTER A WITH RING ABOVE
+<u0> /xCA/x75 <U016F> LATIN SMALL LETTER U WITH RING ABOVE
+<U0> /xCA/x55 <U016E> LATIN CAPITAL LETTER U WITH RING ABOVE
+<a?> /xC4/x61 <U00E3> LATIN SMALL LETTER A WITH TILDE
+<A?> /xC4/x41 <U00C3> LATIN CAPITAL LETTER A WITH TILDE
+<n?> /xC4/x6E <U00F1> LATIN SMALL LETTER N WITH TILDE
+<N?> /xC4/x4E <U00D1> LATIN CAPITAL LETTER N WITH TILDE
+<i?> /xC4/x69 <U0129> LATIN SMALL LETTER I WITH TILDE
+<I?> /xC4/x49 <U0128> LATIN CAPITAL LETTER I WITH TILDE
+<o?> /xC4/x6F <U00F5> LATIN SMALL LETTER O WITH TILDE
+<O?> /xC4/x4F <U00D5> LATIN CAPITAL LETTER O WITH TILDE
+<u?> /xC4/x75 <U0169> LATIN SMALL LETTER U WITH TILDE
+<U?> /xC4/x55 <U0168> LATIN CAPITAL LETTER U WITH TILDE
+<NUL> /x00 <U0000> NUL
+<SOH> /x01 <U0001> START OF HEADING (SOH)
+<STX> /x02 <U0002> START OF TEXT (STX)
+<ETX> /x03 <U0003> END OF TEXT (ETX)
+<EOT> /x04 <U0004> END OF TRANSMISSION (EOT)
+<ENQ> /x05 <U0005> ENQUIRY (ENQ)
+<ACK> /x06 <U0006> ACKNOWLEDGE (ACK)
+<alert> /x07 <U0007> BELL (BEL)
+<BEL> /x07 <U0007> BELL (BEL)
+<backspace> /x08 <U0008> BACKSPACE (BS)
+<tab> /x09 <U0009> CHARACTER TABULATION (HT)
+<newline> /x0A <U000A> LINE FEED (LF)
+<vertical-tab> /x0B <U000B> LINE TABULATION (VT)
+<form-feed> /x0C <U000C> FORM FEED (FF)
+<carriage-return> /x0D <U000D> CARRIAGE RETURN (CR)
+<DLE> /x10 <U0010> DATALINK ESCAPE (DLE)
+<DC1> /x11 <U0011> DEVICE CONTROL ONE (DC1)
+<DC2> /x12 <U0012> DEVICE CONTROL TWO (DC2)
+<DC3> /x13 <U0013> DEVICE CONTROL THREE (DC3)
+<DC4> /x14 <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN> /x16 <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN> /x18 <U0018> CANCEL (CAN)
+<SUB> /x1A <U001A> SUBSTITUTE (SUB)
+<ESC> /x1B <U001B> ESCAPE (ESC)
+<IS4> /x1C <U001C> FILE SEPARATOR (IS4)
+<IS3> /x1D <U001D> GROUP SEPARATOR (IS3)
+<intro> /x1D <U001D> GROUP SEPARATOR (IS3)
+<IS2> /x1E <U001E> RECORD SEPARATOR (IS2)
+<IS1> /x1F <U001F> UNIT SEPARATOR (IS1)
+<DEL> /x7F <U007F> DELETE (DEL)
+<space> /x20 <U0020> SPACE
+<exclamation-mark> /x21 <U0021> EXCLAMATION MARK
+<quotation-mark> /x22 <U0022> QUOTATION MARK
+<number-sign> /xA6 <U0023> NUMBER SIGN
+<dollar-sign> /xA4 <U0024> DOLLAR SIGN
+<percent-sign> /x25 <U0025> PERCENT SIGN
+<ampersand> /x26 <U0026> AMPERSAND
+<apostrophe> /x27 <U0027> APOSTROPHE
+<left-parenthesis> /x28 <U0028> LEFT PARENTHESIS
+<right-parenthesis> /x29 <U0029> RIGHT PARENTHESIS
+<asterisk> /x2A <U002A> ASTERISK
+<plus-sign> /x2B <U002B> PLUS SIGN
+<comma> /x2C <U002C> COMMA
+<hyphen> /x2D <U002D> HYPHEN-MINUS
+<hyphen-minus> /x2D <U002D> HYPHEN-MINUS
+<period> /x2E <U002E> FULL STOP
+<full-stop> /x2E <U002E> FULL STOP
+<slash> /x2F <U002F> SOLIDUS
+<solidus> /x2F <U002F> SOLIDUS
+<zero> /x30 <U0030> DIGIT ZERO
+<one> /x31 <U0031> DIGIT ONE
+<two> /x32 <U0032> DIGIT TWO
+<three> /x33 <U0033> DIGIT THREE
+<four> /x34 <U0034> DIGIT FOUR
+<five> /x35 <U0035> DIGIT FIVE
+<six> /x36 <U0036> DIGIT SIX
+<seven> /x37 <U0037> DIGIT SEVEN
+<eight> /x38 <U0038> DIGIT EIGHT
+<nine> /x39 <U0039> DIGIT NINE
+<colon> /x3A <U003A> COLON
+<semicolon> /x3B <U003B> SEMICOLON
+<less-than-sign> /x3C <U003C> LESS-THAN SIGN
+<equals-sign> /x3D <U003D> EQUALS SIGN
+<greater-than-sign> /x3E <U003E> GREATER-THAN SIGN
+<question-mark> /x3F <U003F> QUESTION MARK
+<commercial-at> /x40 <U0040> COMMERCIAL AT
+<left-square-bracket> /x5B <U005B> LEFT SQUARE BRACKET
+<backslash> /x5C <U005C> REVERSE SOLIDUS
+<reverse-solidus> /x5C <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D <U005D> RIGHT SQUARE BRACKET
+<circumflex> /x5E <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent> /x5E <U005E> CIRCUMFLEX ACCENT
+<underscore> /x5F <U005F> LOW LINE
+<low-line> /x5F <U005F> LOW LINE
+<grave-accent> /x60 <U0060> GRAVE ACCENT
+<left-brace> /x7B <U007B> LEFT CURLY BRACKET
+<left-curly-bracket> /x7B <U007B> LEFT CURLY BRACKET
+<vertical-line> /x7C <U007C> VERTICAL LINE
+<right-brace> /x7D <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket> /x7D <U007D> RIGHT CURLY BRACKET
+<tilde> /x7E <U007E> TILDE
+END CHARMAP
diff --git a/qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.txt b/qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.txt
new file mode 100644
index 00000000..5e5582c1
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/ANSI_X3.110-1983.txt
@@ -0,0 +1,7 @@
+ABCDE
+ÂaÃaÄaÈaÊañËcÁeÂeÃeÈeÁiÂiÃiÈióÄnÁoÂoÃoÄoÈoùÁuÂa
+?????
+?????
+?????
+??????
+?????? \ No newline at end of file
diff --git a/qtjava/javalib/examples/qwerty/Editor.java b/qtjava/javalib/examples/qwerty/Editor.java
new file mode 100644
index 00000000..ba11c685
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/Editor.java
@@ -0,0 +1,351 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.ArrayList;
+
+class Editor extends QWidget
+{
+private QMenuBar m;
+private QMultiLineEdit e;
+private QPrinter printer = new QPrinter();
+private QPopupMenu save_as;
+private QPopupMenu open_as;
+private boolean changed;
+
+
+private boolean no_writing = false;
+
+static ArrayList codecList = null;
+
+static final int Uni = 0;
+static final int MBug = 1;
+static final int Lat1 = 2;
+static final int Local = 3;
+static final int Guess = 4;
+static final int Codec = 5;
+
+
+Editor( )
+{
+ this(null, null);
+}
+
+Editor( QWidget parent , String name )
+{
+ super( parent, name, WDestructiveClose );
+ m = new QMenuBar( this, "menu" );
+
+ QPopupMenu file = new QPopupMenu(this);
+ m.insertItem( "&File", file );
+
+ file.insertItem( "&New", this, SLOT("newDoc()"), new QKeySequence(ALT+Key_N) );
+ file.insertItem( "&Open...", this, SLOT("load()"), new QKeySequence(ALT+Key_O) );
+ file.insertItem( "&Save...", this, SLOT("save()"), new QKeySequence(ALT+Key_S) );
+ file.insertSeparator();
+ open_as = new QPopupMenu(file);
+ file.insertItem( "Open &As", open_as );
+ save_as = new QPopupMenu(file);
+ file.insertItem( "Sa&ve As", save_as );
+ file.insertItem( "Add &Encoding", this, SLOT("addEncoding()") );
+ file.insertSeparator();
+ file.insertItem( "&Print...", this, SLOT("print()"), new QKeySequence(ALT+Key_P) );
+ file.insertSeparator();
+ file.insertItem( "&Close", this, SLOT("close()"),new QKeySequence(ALT+Key_W) );
+ file.insertItem( "&Quit", qApp(), SLOT("closeAllWindows()"), new QKeySequence(ALT+Key_Q) );
+
+ connect( save_as, SIGNAL("activated(int)"), this, SLOT("saveAsEncoding(int)") );
+ connect( open_as, SIGNAL("activated(int)"), this, SLOT("openAsEncoding(int)") );
+ rebuildCodecList();
+
+ QPopupMenu edit = new QPopupMenu(m);
+ m.insertItem( "&Edit", edit );
+
+ edit.insertItem( "To &Uppercase", this, SLOT("toUpper()"), new QKeySequence(ALT+Key_U) );
+ edit.insertItem( "To &Lowercase", this, SLOT("toLower()"), new QKeySequence(ALT+Key_L) );
+ edit.insertSeparator();
+ edit.insertItem( "&Select Font" , this, SLOT("getFont()"), new QKeySequence(ALT+Key_F) );
+ changed = false;
+ e = new QMultiLineEdit( this, "editor" );
+ connect( e, SIGNAL(" textChanged()"), this, SLOT(" textChanged()") );
+
+ // We use Unifont - if you have it installed you'll see all
+ // Unicode character glyphs.
+ //
+ // Unifont only comes in one pixel size, so we cannot let
+ // it change pixel size as the display DPI changes.
+ //
+ QFont unifont = new QFont("unifont",16,50); unifont.setPixelSize(16);
+ e.setFont( unifont );
+
+ e.setFocus();
+}
+
+
+public void getFont()
+{
+ boolean[] ok = { true };
+ QFont f = QFontDialog.getFont( ok, e.font() );
+ if ( ok[0] ) {
+ e.setFont( f );
+ }
+}
+
+
+
+void rebuildCodecList()
+{
+ codecList = new ArrayList();
+ QTextCodec codec = null;
+ int i;
+ for (i = 0; (codec = QTextCodec.codecForIndex(i)) != null; i++)
+ codecList.add( codec );
+ int n = codecList.size();
+ for (int pm=0; pm<2; pm++) {
+ QPopupMenu menu = pm != 0 ? open_as : save_as;
+ menu.clear();
+ String local = "Local (";
+ local += QTextCodec.codecForLocale().name();
+ local += ")";
+ menu.insertItem( local, Local );
+ menu.insertItem( "Unicode", Uni );
+ menu.insertItem( "Latin1", Lat1 );
+ menu.insertItem( "Microsoft Unicode", MBug );
+ if ( pm != 0 )
+ menu.insertItem( "[guess]", Guess );
+ for ( i = 0; i < n; i++ )
+ menu.insertItem( ((QTextCodec) codecList.get(i)).name(), Codec + i );
+ }
+}
+
+void newDoc()
+{
+ Editor ed = new Editor();
+ if ( qApp().desktop().size().width() < 450
+ || qApp().desktop().size().height() < 450 ) {
+ ed.showMaximized();
+ } else {
+ ed.resize( 400, 400 );
+ ed.show();
+ }
+}
+
+
+void load()
+{
+ String fn = QFileDialog.getOpenFileName( "", "", this );
+ if ( fn != null )
+ load( fn, -1 );
+}
+
+void load( String fileName )
+{
+ load(fileName, -1);
+}
+
+void load( String fileName, int code )
+{
+ QFile f = new QFile( fileName );
+ if ( !f.open( QIODevice.IO_ReadOnly ) )
+ return;
+
+ e.setAutoUpdate( false );
+
+ QTextStream t = new QTextStream(f);
+ if ( code >= Codec )
+ t.setCodec( (QTextCodec) codecList.get(code-Codec) );
+ else if ( code == Uni )
+ t.setEncoding( QTextStream.Unicode );
+ else if ( code == MBug )
+ t.setEncoding( QTextStream.UnicodeReverse );
+ else if ( code == Lat1 )
+ t.setEncoding( QTextStream.Latin1 );
+ else if ( code == Guess ) {
+ f = new QFile(fileName);
+ f.open(QIODevice.IO_ReadOnly);
+ StringBuffer buffer = new StringBuffer();
+ int l = 256;
+ l=(int)f.readBlock(buffer,l);
+ QTextCodec codec = QTextCodec.codecForContent(buffer.toString(), l);
+ if ( codec != null ) {
+ QMessageBox.information(this,"Encoding","Codec: "+codec.name());
+ t.setCodec( codec );
+ }
+ }
+ e.setText( t.read() );
+ f.close();
+
+ e.setAutoUpdate( true );
+ e.repaint();
+ setCaption( fileName );
+
+ changed = false;
+}
+
+void openAsEncoding( int code )
+{
+ //storing filename (proper save) is left as an exercise...
+ String fn = QFileDialog.getOpenFileName( "", "", this );
+ if ( !fn.equals("") )
+ load( fn, code );
+}
+
+boolean save()
+{
+ //storing filename (proper save) is left as an exercise...
+ String fn = QFileDialog.getSaveFileName( "", "", this );
+ if ( !fn.equals("") )
+ return saveAs( fn );
+ return false;
+}
+
+void saveAsEncoding( int code )
+{
+ //storing filename (proper save) is left as an exercise...
+ String fn = QFileDialog.getSaveFileName( "", "", this );
+ if ( !fn.equals("") )
+ saveAs( fn, code );
+}
+
+void addEncoding()
+{
+ String fn = QFileDialog.getOpenFileName( "", "*.map", this );
+ if ( !fn.equals("") ) {
+ QFile f = new QFile(fn);
+ if (f.open(QIODevice.IO_ReadOnly)) {
+ if (QTextCodec.loadCharmap(f) != null) {
+ rebuildCodecList();
+ } else {
+ QMessageBox.warning(null,"Charmap error",
+ "The file did not contain a valid charmap.\n\n"
+ + "A charmap file should look like this:\n"
+ + " <code_set_name> thename\n"
+ + " <escape_char> /\n"
+ + " % alias thealias\n"
+ + " CHARMAP\n"
+ + " <tokenname> /x12 <U3456>\n"
+ + " <tokenname> /xAB/x12 <U0023>\n"
+ + " ...\n"
+ + " END CHARMAP\n"
+ );
+ }
+ }
+ }
+}
+
+
+boolean saveAs( String fileName )
+{
+ return saveAs(fileName, -1);
+}
+
+boolean saveAs( String fileName, int code )
+{
+ QFile f = new QFile( fileName );
+ if ( no_writing || !f.open( QIODevice.IO_WriteOnly ) ) {
+ QMessageBox.warning(this,"I/O Error",
+ "The file could not be opened.\n\n"
+ +fileName);
+ return false;
+ }
+ QTextStream t = new QTextStream(f);
+ if ( code >= Codec )
+ t.setCodec( (QTextCodec) codecList.get(code-Codec) );
+ else if ( code == Uni )
+ t.setEncoding( QTextStream.Unicode );
+ else if ( code == MBug )
+ t.setEncoding( QTextStream.UnicodeReverse );
+ else if ( code == Lat1 )
+ t.setEncoding( QTextStream.Latin1 );
+ t.writeRawBytes(e.text(), e.text().length());
+ f.close();
+ setCaption( fileName );
+ changed = false;
+ return true;
+}
+
+void print()
+{
+ if ( printer.setup(this) ) { // opens printer dialog
+ printer.setFullPage(true); // we'll set our own margins
+ QPainter p = new QPainter();
+ p.begin( printer ); // paint on printer
+ p.setFont( e.font() );
+ QFontMetrics fm = p.fontMetrics();
+ QPaintDeviceMetrics metrics = new QPaintDeviceMetrics( printer ); // need width/height
+ // of printer surface
+ int MARGIN = metrics.logicalDpiX() / 2; // half-inch margin
+ int yPos = MARGIN; // y position for each line
+
+ for( int i = 0 ; i < e.numLines() ; i++ ) {
+ if ( printer.aborted() )
+ break;
+ if ( yPos + fm.lineSpacing() > metrics.height() - MARGIN ) {
+ // no more room on this page
+ if ( !printer.newPage() ) // start new page
+ break; // some error
+ yPos = MARGIN; // back to top of page
+ }
+ p.drawText( MARGIN, yPos, metrics.width() - 2*MARGIN,
+ fm.lineSpacing(), ExpandTabs, e.textLine( i ) );
+ yPos += fm.lineSpacing();
+ }
+ p.end(); // send job to printer
+ }
+}
+
+protected void resizeEvent( QResizeEvent event )
+{
+ if ( e != null && m != null )
+ e.setGeometry( 0, m.height(), width(), height() - m.height() );
+}
+
+protected void closeEvent( QCloseEvent event )
+{
+ event.accept();
+
+ if ( changed ) { // the text has been changed
+ switch ( QMessageBox.warning( this, "Qwerty",
+ "Save changes to Document?",
+ tr("&Yes"),
+ tr("&No"),
+ tr("Cancel"),
+ 0, 2) ) {
+ case 0: // yes
+ if ( save() )
+ event.accept();
+ else
+ event.ignore();
+ break;
+ case 1: // no
+ event.accept();
+ break;
+ default: // cancel
+ event.ignore();
+ break;
+ }
+ }
+}
+
+void toUpper()
+{
+ e.setText(e.text().toUpperCase());
+}
+
+void toLower()
+{
+ e.setText(e.text().toLowerCase());
+}
+
+void textChanged()
+{
+ changed = true;
+}
+}
diff --git a/qtjava/javalib/examples/qwerty/IBM277.map b/qtjava/javalib/examples/qwerty/IBM277.map
new file mode 100644
index 00000000..51a2472d
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/IBM277.map
@@ -0,0 +1,350 @@
+<code_set_name> IBM277
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+% source: IBM NLS RM Vol2 SE09-8002-01, March 1990
+
+% alias EBCDIC-CP-DK
+% alias EBCDIC-CP-NO
+CHARMAP
+<NU> /x00 <U0000> NULL (NUL)
+<SH> /x01 <U0001> START OF HEADING (SOH)
+<SX> /x02 <U0002> START OF TEXT (STX)
+<EX> /x03 <U0003> END OF TEXT (ETX)
+<ST> /x04 <U009C> STRING TERMINATOR (ST)
+<HT> /x05 <U0009> CHARACTER TABULATION (HT)
+<SA> /x06 <U0086> START OF SELECTED AREA (SSA)
+<DT> /x07 <U007F> DELETE (DEL)
+<EG> /x08 <U0097> END OF GUARDED AREA (EPA)
+<RI> /x09 <U008D> REVERSE LINE FEED (RI)
+<S2> /x0A <U008E> SINGLE-SHIFT TWO (SS2)
+<VT> /x0B <U000B> LINE TABULATION (VT)
+<FF> /x0C <U000C> FORM FEED (FF)
+<CR> /x0D <U000D> CARRIAGE RETURN (CR)
+<SO> /x0E <U000E> SHIFT OUT (SO)
+<SI> /x0F <U000F> SHIFT IN (SI)
+<DL> /x10 <U0010> DATALINK ESCAPE (DLE)
+<D1> /x11 <U0011> DEVICE CONTROL ONE (DC1)
+<D2> /x12 <U0012> DEVICE CONTROL TWO (DC2)
+<D3> /x13 <U0013> DEVICE CONTROL THREE (DC3)
+<OC> /x14 <U009D> OPERATING SYSTEM COMMAND (OSC)
+<NL> /x15 <U0085> NEXT LINE (NEL)
+<BS> /x16 <U0008> BACKSPACE (BS)
+<ES> /x17 <U0087> END OF SELECTED AREA (ESA)
+<CN> /x18 <U0018> CANCEL (CAN)
+<EM> /x19 <U0019> END OF MEDIUM (EM)
+<P2> /x1A <U0092> PRIVATE USE TWO (PU2)
+<S3> /x1B <U008F> SINGLE-SHIFT THREE (SS3)
+<FS> /x1C <U001C> FILE SEPARATOR (IS4)
+<GS> /x1D <U001D> GROUP SEPARATOR (IS3)
+<RS> /x1E <U001E> RECORD SEPARATOR (IS2)
+<US> /x1F <U001F> UNIT SEPARATOR (IS1)
+<PA> /x20 <U0080> PADDING CHARACTER (PAD)
+<HO> /x21 <U0081> HIGH OCTET PRESET (HOP)
+<BH> /x22 <U0082> BREAK PERMITTED HERE (BPH)
+<NH> /x23 <U0083> NO BREAK HERE (NBH)
+<IN> /x24 <U0084> INDEX (IND)
+<LF> /x25 <U000A> LINE FEED (LF)
+<EB> /x26 <U0017> END OF TRANSMISSION BLOCK (ETB)
+<EC> /x27 <U001B> ESCAPE (ESC)
+<HS> /x28 <U0088> CHARACTER TABULATION SET (HTS)
+<HJ> /x29 <U0089> CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+<VS> /x2A <U008A> LINE TABULATION SET (VTS)
+<PD> /x2B <U008B> PARTIAL LINE FORWARD (PLD)
+<PU> /x2C <U008C> PARTIAL LINE BACKWARD (PLU)
+<EQ> /x2D <U0005> ENQUIRY (ENQ)
+<AK> /x2E <U0006> ACKNOWLEDGE (ACK)
+<BL> /x2F <U0007> BELL (BEL)
+<DC> /x30 <U0090> DEVICE CONTROL STRING (DCS)
+<P1> /x31 <U0091> PRIVATE USE ONE (PU1)
+<SY> /x32 <U0016> SYNCHRONOUS IDLE (SYN)
+<TS> /x33 <U0093> SET TRANSMIT STATE (STS)
+<CC> /x34 <U0094> CANCEL CHARACTER (CCH)
+<MW> /x35 <U0095> MESSAGE WAITING (MW)
+<SG> /x36 <U0096> START OF GUARDED AREA (SPA)
+<ET> /x37 <U0004> END OF TRANSMISSION (EOT)
+<SS> /x38 <U0098> START OF STRING (SOS)
+<GC> /x39 <U0099> SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+<SC> /x3A <U009A> SINGLE CHARACTER INTRODUCER (SCI)
+<CI> /x3B <U009B> CONTROL SEQUENCE INTRODUCER (CSI)
+<D4> /x3C <U0014> DEVICE CONTROL FOUR (DC4)
+<NK> /x3D <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<PM> /x3E <U009E> PRIVACY MESSAGE (PM)
+<SB> /x3F <U001A> SUBSTITUTE (SUB)
+<SP> /x40 <U0020> SPACE
+<NS> /x41 <U00A0> NO-BREAK SPACE
+<a/>> /x42 <U00E2> LATIN SMALL LETTER A WITH CIRCUMFLEX
+<a:> /x43 <U00E4> LATIN SMALL LETTER A WITH DIAERESIS
+<a!> /x44 <U00E0> LATIN SMALL LETTER A WITH GRAVE
+<a'> /x45 <U00E1> LATIN SMALL LETTER A WITH ACUTE
+<a?> /x46 <U00E3> LATIN SMALL LETTER A WITH TILDE
+<!)> /x47 <U007D> RIGHT CURLY BRACKET
+<c,> /x48 <U00E7> LATIN SMALL LETTER C WITH CEDILLA
+<n?> /x49 <U00F1> LATIN SMALL LETTER N WITH TILDE
+<Nb> /x4A <U0023> NUMBER SIGN
+<.> /x4B <U002E> FULL STOP
+<<> /x4C <U003C> LESS-THAN SIGN
+<(> /x4D <U0028> LEFT PARENTHESIS
+<+> /x4E <U002B> PLUS SIGN
+<!> /x4F <U0021> EXCLAMATION MARK
+<&> /x50 <U0026> AMPERSAND
+<e'> /x51 <U00E9> LATIN SMALL LETTER E WITH ACUTE
+<e/>> /x52 <U00EA> LATIN SMALL LETTER E WITH CIRCUMFLEX
+<e:> /x53 <U00EB> LATIN SMALL LETTER E WITH DIAERESIS
+<e!> /x54 <U00E8> LATIN SMALL LETTER E WITH GRAVE
+<i'> /x55 <U00ED> LATIN SMALL LETTER I WITH ACUTE
+<i/>> /x56 <U00EE> LATIN SMALL LETTER I WITH CIRCUMFLEX
+<i:> /x57 <U00EF> LATIN SMALL LETTER I WITH DIAERESIS
+<i!> /x58 <U00EC> LATIN SMALL LETTER I WITH GRAVE
+<ss> /x59 <U00DF> LATIN SMALL LETTER SHARP S (German)
+<Cu> /x5A <U00A4> CURRENCY SIGN
+<AA> /x5B <U00C5> LATIN CAPITAL LETTER A WITH RING ABOVE
+<*> /x5C <U002A> ASTERISK
+<)> /x5D <U0029> RIGHT PARENTHESIS
+<;> /x5E <U003B> SEMICOLON
+<'/>> /x5F <U005E> CIRCUMFLEX ACCENT
+<-> /x60 <U002D> HYPHEN-MINUS
+<//> /x61 <U002F> SOLIDUS
+<A/>> /x62 <U00C2> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<A:> /x63 <U00C4> LATIN CAPITAL LETTER A WITH DIAERESIS
+<A!> /x64 <U00C0> LATIN CAPITAL LETTER A WITH GRAVE
+<A'> /x65 <U00C1> LATIN CAPITAL LETTER A WITH ACUTE
+<A?> /x66 <U00C3> LATIN CAPITAL LETTER A WITH TILDE
+<DO> /x67 <U0024> DOLLAR SIGN
+<C,> /x68 <U00C7> LATIN CAPITAL LETTER C WITH CEDILLA
+<N?> /x69 <U00D1> LATIN CAPITAL LETTER N WITH TILDE
+<o//> /x6A <U00F8> LATIN SMALL LETTER O WITH STROKE
+<,> /x6B <U002C> COMMA
+<%> /x6C <U0025> PERCENT SIGN
+<_> /x6D <U005F> LOW LINE
+</>> /x6E <U003E> GREATER-THAN SIGN
+<?> /x6F <U003F> QUESTION MARK
+<BB> /x70 <U00A6> BROKEN BAR
+<E'> /x71 <U00C9> LATIN CAPITAL LETTER E WITH ACUTE
+<E/>> /x72 <U00CA> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<E:> /x73 <U00CB> LATIN CAPITAL LETTER E WITH DIAERESIS
+<E!> /x74 <U00C8> LATIN CAPITAL LETTER E WITH GRAVE
+<I'> /x75 <U00CD> LATIN CAPITAL LETTER I WITH ACUTE
+<I/>> /x76 <U00CE> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<I:> /x77 <U00CF> LATIN CAPITAL LETTER I WITH DIAERESIS
+<I!> /x78 <U00CC> LATIN CAPITAL LETTER I WITH GRAVE
+<'!> /x79 <U0060> GRAVE ACCENT
+<:> /x7A <U003A> COLON
+<AE> /x7B <U00C6> LATIN CAPITAL LETTER AE
+<O//> /x7C <U00D8> LATIN CAPITAL LETTER O WITH STROKE
+<'> /x7D <U0027> APOSTROPHE
+<=> /x7E <U003D> EQUALS SIGN
+<"> /x7F <U0022> QUOTATION MARK
+<At> /x80 <U0040> COMMERCIAL AT
+<a> /x81 <U0061> LATIN SMALL LETTER A
+<b> /x82 <U0062> LATIN SMALL LETTER B
+<c> /x83 <U0063> LATIN SMALL LETTER C
+<d> /x84 <U0064> LATIN SMALL LETTER D
+<e> /x85 <U0065> LATIN SMALL LETTER E
+<f> /x86 <U0066> LATIN SMALL LETTER F
+<g> /x87 <U0067> LATIN SMALL LETTER G
+<h> /x88 <U0068> LATIN SMALL LETTER H
+<i> /x89 <U0069> LATIN SMALL LETTER I
+<<<> /x8A <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+</>/>> /x8B <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<d-> /x8C <U00F0> LATIN SMALL LETTER ETH (Icelandic)
+<y'> /x8D <U00FD> LATIN SMALL LETTER Y WITH ACUTE
+<th> /x8E <U00FE> LATIN SMALL LETTER THORN (Icelandic)
+<+-> /x8F <U00B1> PLUS-MINUS SIGN
+<DG> /x90 <U00B0> DEGREE SIGN
+<j> /x91 <U006A> LATIN SMALL LETTER J
+<k> /x92 <U006B> LATIN SMALL LETTER K
+<l> /x93 <U006C> LATIN SMALL LETTER L
+<m> /x94 <U006D> LATIN SMALL LETTER M
+<n> /x95 <U006E> LATIN SMALL LETTER N
+<o> /x96 <U006F> LATIN SMALL LETTER O
+<p> /x97 <U0070> LATIN SMALL LETTER P
+<q> /x98 <U0071> LATIN SMALL LETTER Q
+<r> /x99 <U0072> LATIN SMALL LETTER R
+<-a> /x9A <U00AA> FEMININE ORDINAL INDICATOR
+<-o> /x9B <U00BA> MASCULINE ORDINAL INDICATOR
+<(!> /x9C <U007B> LEFT CURLY BRACKET
+<',> /x9D <U00B8> CEDILLA
+<<(> /x9E <U005B> LEFT SQUARE BRACKET
+<)/>> /x9F <U005D> RIGHT SQUARE BRACKET
+<My> /xA0 <U00B5> MICRO SIGN
+<u:> /xA1 <U00FC> LATIN SMALL LETTER U WITH DIAERESIS
+<s> /xA2 <U0073> LATIN SMALL LETTER S
+<t> /xA3 <U0074> LATIN SMALL LETTER T
+<u> /xA4 <U0075> LATIN SMALL LETTER U
+<v> /xA5 <U0076> LATIN SMALL LETTER V
+<w> /xA6 <U0077> LATIN SMALL LETTER W
+<x> /xA7 <U0078> LATIN SMALL LETTER X
+<y> /xA8 <U0079> LATIN SMALL LETTER Y
+<z> /xA9 <U007A> LATIN SMALL LETTER Z
+<!I> /xAA <U00A1> INVERTED EXCLAMATION MARK
+<?I> /xAB <U00BF> INVERTED QUESTION MARK
+<D-> /xAC <U00D0> LATIN CAPITAL LETTER ETH (Icelandic)
+<Y'> /xAD <U00DD> LATIN CAPITAL LETTER Y WITH ACUTE
+<TH> /xAE <U00DE> LATIN CAPITAL LETTER THORN (Icelandic)
+<Rg> /xAF <U00AE> REGISTERED SIGN
+<Ct> /xB0 <U00A2> CENT SIGN
+<Pd> /xB1 <U00A3> POUND SIGN
+<Ye> /xB2 <U00A5> YEN SIGN
+<.M> /xB3 <U00B7> MIDDLE DOT
+<Co> /xB4 <U00A9> COPYRIGHT SIGN
+<SE> /xB5 <U00A7> SECTION SIGN
+<PI> /xB6 <U00B6> PILCROW SIGN
+<14> /xB7 <U00BC> VULGAR FRACTION ONE QUARTER
+<12> /xB8 <U00BD> VULGAR FRACTION ONE HALF
+<34> /xB9 <U00BE> VULGAR FRACTION THREE QUARTERS
+<NO> /xBA <U00AC> NOT SIGN
+<!!> /xBB <U007C> VERTICAL LINE
+<'-> /xBC <U203E> OVERLINE
+<':> /xBD <U00A8> DIAERESIS
+<''> /xBE <U00B4> ACUTE ACCENT
+<*X> /xBF <U00D7> MULTIPLICATION SIGN
+<ae> /xC0 <U00E6> LATIN SMALL LETTER AE
+<A> /xC1 <U0041> LATIN CAPITAL LETTER A
+<B> /xC2 <U0042> LATIN CAPITAL LETTER B
+<C> /xC3 <U0043> LATIN CAPITAL LETTER C
+<D> /xC4 <U0044> LATIN CAPITAL LETTER D
+<E> /xC5 <U0045> LATIN CAPITAL LETTER E
+<F> /xC6 <U0046> LATIN CAPITAL LETTER F
+<G> /xC7 <U0047> LATIN CAPITAL LETTER G
+<H> /xC8 <U0048> LATIN CAPITAL LETTER H
+<I> /xC9 <U0049> LATIN CAPITAL LETTER I
+<--> /xCA <U00AD> SOFT HYPHEN
+<o/>> /xCB <U00F4> LATIN SMALL LETTER O WITH CIRCUMFLEX
+<o:> /xCC <U00F6> LATIN SMALL LETTER O WITH DIAERESIS
+<o!> /xCD <U00F2> LATIN SMALL LETTER O WITH GRAVE
+<o'> /xCE <U00F3> LATIN SMALL LETTER O WITH ACUTE
+<o?> /xCF <U00F5> LATIN SMALL LETTER O WITH TILDE
+<aa> /xD0 <U00E5> LATIN SMALL LETTER A WITH RING ABOVE
+<J> /xD1 <U004A> LATIN CAPITAL LETTER J
+<K> /xD2 <U004B> LATIN CAPITAL LETTER K
+<L> /xD3 <U004C> LATIN CAPITAL LETTER L
+<M> /xD4 <U004D> LATIN CAPITAL LETTER M
+<N> /xD5 <U004E> LATIN CAPITAL LETTER N
+<O> /xD6 <U004F> LATIN CAPITAL LETTER O
+<P> /xD7 <U0050> LATIN CAPITAL LETTER P
+<Q> /xD8 <U0051> LATIN CAPITAL LETTER Q
+<R> /xD9 <U0052> LATIN CAPITAL LETTER R
+<1S> /xDA <U00B9> SUPERSCRIPT ONE
+<u/>> /xDB <U00FB> LATIN SMALL LETTER U WITH CIRCUMFLEX
+<'?> /xDC <U007E> TILDE
+<u!> /xDD <U00F9> LATIN SMALL LETTER U WITH GRAVE
+<u'> /xDE <U00FA> LATIN SMALL LETTER U WITH ACUTE
+<y:> /xDF <U00FF> LATIN SMALL LETTER Y WITH DIAERESIS
+<////> /xE0 <U005C> REVERSE SOLIDUS
+<-:> /xE1 <U00F7> DIVISION SIGN
+<S> /xE2 <U0053> LATIN CAPITAL LETTER S
+<T> /xE3 <U0054> LATIN CAPITAL LETTER T
+<U> /xE4 <U0055> LATIN CAPITAL LETTER U
+<V> /xE5 <U0056> LATIN CAPITAL LETTER V
+<W> /xE6 <U0057> LATIN CAPITAL LETTER W
+<X> /xE7 <U0058> LATIN CAPITAL LETTER X
+<Y> /xE8 <U0059> LATIN CAPITAL LETTER Y
+<Z> /xE9 <U005A> LATIN CAPITAL LETTER Z
+<2S> /xEA <U00B2> SUPERSCRIPT TWO
+<O/>> /xEB <U00D4> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<O:> /xEC <U00D6> LATIN CAPITAL LETTER O WITH DIAERESIS
+<O!> /xED <U00D2> LATIN CAPITAL LETTER O WITH GRAVE
+<O'> /xEE <U00D3> LATIN CAPITAL LETTER O WITH ACUTE
+<O?> /xEF <U00D5> LATIN CAPITAL LETTER O WITH TILDE
+<0> /xF0 <U0030> DIGIT ZERO
+<1> /xF1 <U0031> DIGIT ONE
+<2> /xF2 <U0032> DIGIT TWO
+<3> /xF3 <U0033> DIGIT THREE
+<4> /xF4 <U0034> DIGIT FOUR
+<5> /xF5 <U0035> DIGIT FIVE
+<6> /xF6 <U0036> DIGIT SIX
+<7> /xF7 <U0037> DIGIT SEVEN
+<8> /xF8 <U0038> DIGIT EIGHT
+<9> /xF9 <U0039> DIGIT NINE
+<3S> /xFA <U00B3> SUPERSCRIPT THREE
+<U/>> /xFB <U00DB> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U:> /xFC <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS
+<U!> /xFD <U00D9> LATIN CAPITAL LETTER U WITH GRAVE
+<U'> /xFE <U00DA> LATIN CAPITAL LETTER U WITH ACUTE
+<AC> /xFF <U009F> APPLICATION PROGRAM COMMAND (APC)
+<NUL> /x00 <U0000> NUL
+<SOH> /x01 <U0001> START OF HEADING (SOH)
+<STX> /x02 <U0002> START OF TEXT (STX)
+<ETX> /x03 <U0003> END OF TEXT (ETX)
+<EOT> /x37 <U0004> END OF TRANSMISSION (EOT)
+<ENQ> /x2D <U0005> ENQUIRY (ENQ)
+<ACK> /x2E <U0006> ACKNOWLEDGE (ACK)
+<alert> /x2F <U0007> BELL (BEL)
+<BEL> /x2F <U0007> BELL (BEL)
+<backspace> /x16 <U0008> BACKSPACE (BS)
+<tab> /x05 <U0009> CHARACTER TABULATION (HT)
+<newline> /x25 <U000A> LINE FEED (LF)
+<vertical-tab> /x0B <U000B> LINE TABULATION (VT)
+<form-feed> /x0C <U000C> FORM FEED (FF)
+<carriage-return> /x0D <U000D> CARRIAGE RETURN (CR)
+<DLE> /x10 <U0010> DATALINK ESCAPE (DLE)
+<DC1> /x11 <U0011> DEVICE CONTROL ONE (DC1)
+<DC2> /x12 <U0012> DEVICE CONTROL TWO (DC2)
+<DC3> /x13 <U0013> DEVICE CONTROL THREE (DC3)
+<DC4> /x3C <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK> /x3D <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN> /x32 <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB> /x26 <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN> /x18 <U0018> CANCEL (CAN)
+<SUB> /x3F <U001A> SUBSTITUTE (SUB)
+<ESC> /x27 <U001B> ESCAPE (ESC)
+<IS4> /x1C <U001C> FILE SEPARATOR (IS4)
+<IS3> /x1D <U001D> GROUP SEPARATOR (IS3)
+<intro> /x1D <U001D> GROUP SEPARATOR (IS3)
+<IS2> /x1E <U001E> RECORD SEPARATOR (IS2)
+<IS1> /x1F <U001F> UNIT SEPARATOR (IS1)
+<DEL> /x07 <U007F> DELETE (DEL)
+<space> /x40 <U0020> SPACE
+<exclamation-mark> /x4F <U0021> EXCLAMATION MARK
+<quotation-mark> /x7F <U0022> QUOTATION MARK
+<number-sign> /x4A <U0023> NUMBER SIGN
+<dollar-sign> /x67 <U0024> DOLLAR SIGN
+<percent-sign> /x6C <U0025> PERCENT SIGN
+<ampersand> /x50 <U0026> AMPERSAND
+<apostrophe> /x7D <U0027> APOSTROPHE
+<left-parenthesis> /x4D <U0028> LEFT PARENTHESIS
+<right-parenthesis> /x5D <U0029> RIGHT PARENTHESIS
+<asterisk> /x5C <U002A> ASTERISK
+<plus-sign> /x4E <U002B> PLUS SIGN
+<comma> /x6B <U002C> COMMA
+<hyphen> /x60 <U002D> HYPHEN-MINUS
+<hyphen-minus> /x60 <U002D> HYPHEN-MINUS
+<period> /x4B <U002E> FULL STOP
+<full-stop> /x4B <U002E> FULL STOP
+<slash> /x61 <U002F> SOLIDUS
+<solidus> /x61 <U002F> SOLIDUS
+<zero> /xF0 <U0030> DIGIT ZERO
+<one> /xF1 <U0031> DIGIT ONE
+<two> /xF2 <U0032> DIGIT TWO
+<three> /xF3 <U0033> DIGIT THREE
+<four> /xF4 <U0034> DIGIT FOUR
+<five> /xF5 <U0035> DIGIT FIVE
+<six> /xF6 <U0036> DIGIT SIX
+<seven> /xF7 <U0037> DIGIT SEVEN
+<eight> /xF8 <U0038> DIGIT EIGHT
+<nine> /xF9 <U0039> DIGIT NINE
+<colon> /x7A <U003A> COLON
+<semicolon> /x5E <U003B> SEMICOLON
+<less-than-sign> /x4C <U003C> LESS-THAN SIGN
+<equals-sign> /x7E <U003D> EQUALS SIGN
+<greater-than-sign> /x6E <U003E> GREATER-THAN SIGN
+<question-mark> /x6F <U003F> QUESTION MARK
+<commercial-at> /x80 <U0040> COMMERCIAL AT
+<left-square-bracket> /x9E <U005B> LEFT SQUARE BRACKET
+<backslash> /xE0 <U005C> REVERSE SOLIDUS
+<reverse-solidus> /xE0 <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x9F <U005D> RIGHT SQUARE BRACKET
+<circumflex> /x5F <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent> /x5F <U005E> CIRCUMFLEX ACCENT
+<underscore> /x6D <U005F> LOW LINE
+<low-line> /x6D <U005F> LOW LINE
+<grave-accent> /x79 <U0060> GRAVE ACCENT
+<left-brace> /x9C <U007B> LEFT CURLY BRACKET
+<left-curly-bracket> /x9C <U007B> LEFT CURLY BRACKET
+<vertical-line> /xBB <U007C> VERTICAL LINE
+<right-brace> /x47 <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket> /x47 <U007D> RIGHT CURLY BRACKET
+<tilde> /xDC <U007E> TILDE
+END CHARMAP
diff --git a/qtjava/javalib/examples/qwerty/IBM277.txt b/qtjava/javalib/examples/qwerty/IBM277.txt
new file mode 100644
index 00000000..00cc7b94
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/IBM277.txt
@@ -0,0 +1,7 @@
+ÁÂÃÄÅ
+%EBFCÐÀHTQRSXUVWŒIÍÎËÏÌjÝE
+%?????
+%?????
+%?????
+%??????
+%?????? \ No newline at end of file
diff --git a/qtjava/javalib/examples/qwerty/Main.java b/qtjava/javalib/examples/qwerty/Main.java
new file mode 100644
index 00000000..67cac77e
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/Main.java
@@ -0,0 +1,44 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+
+ boolean isSmall = Qt.qApp().desktop().size().width() < 450
+ || Qt.qApp().desktop().size().height() < 450;
+
+ int i;
+ for ( i= 0; i<args.length; i++ ) {
+ Editor e = new Editor();
+ e.setCaption("Qt Example - QWERTY");
+ e.load( args[i] );
+ if ( isSmall ) {
+ e.showMaximized();
+ } else {
+ e.resize( 400, 400 );
+ e.show();
+ }
+ }
+ a.connect(a, Qt.SIGNAL("lastWindowClosed()"), a, Qt.SLOT("quit()") );
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
+
diff --git a/qtjava/javalib/examples/qwerty/eucJP.txt b/qtjava/javalib/examples/qwerty/eucJP.txt
new file mode 100644
index 00000000..a4152d2a
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/eucJP.txt
@@ -0,0 +1,7 @@
+ABCDE
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+¤¢¤¤¤¦¤¨¤ª
+¤«¤­¤¯¤±¤³
+¤µ¤·¤¹¤»¤½
+§«§¸§µ§¬§¦§¯
+§Û§è§å§Ü§Ö§ß \ No newline at end of file
diff --git a/qtjava/javalib/examples/qwerty/koi8.txt b/qtjava/javalib/examples/qwerty/koi8.txt
new file mode 100644
index 00000000..4f1a922b
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/koi8.txt
@@ -0,0 +1,7 @@
+ABCDE
+¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
+¤¤¤¤¤
+¤¤¤¤¤
+¤¤¤¤¤
+êãõëåî
+ÊÃÕËÅÎ \ No newline at end of file
diff --git a/qtjava/javalib/examples/qwerty/latin1.txt b/qtjava/javalib/examples/qwerty/latin1.txt
new file mode 100644
index 00000000..de3195d3
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/latin1.txt
@@ -0,0 +1,7 @@
+ABCDE
+áâãäåæçèéêëìíîïðñòóôõöøùá
+?????
+?????
+?????
+??????
+?????? \ No newline at end of file
diff --git a/qtjava/javalib/examples/qwerty/msunicode.txt b/qtjava/javalib/examples/qwerty/msunicode.txt
new file mode 100644
index 00000000..1f8bb76c
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/msunicode.txt
Binary files differ
diff --git a/qtjava/javalib/examples/qwerty/unicode.txt b/qtjava/javalib/examples/qwerty/unicode.txt
new file mode 100644
index 00000000..1d08d414
--- /dev/null
+++ b/qtjava/javalib/examples/qwerty/unicode.txt
Binary files differ
diff --git a/qtjava/javalib/examples/rangecontrols/Main.java b/qtjava/javalib/examples/rangecontrols/Main.java
new file mode 100644
index 00000000..3fd16e02
--- /dev/null
+++ b/qtjava/javalib/examples/rangecontrols/Main.java
@@ -0,0 +1,33 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ RangeControls rangecontrols = new RangeControls();
+ rangecontrols.resize( 500, 300 );
+ rangecontrols.setCaption( "Qt Example - Range Control Widgets" );
+ a.setMainWidget( rangecontrols );
+ rangecontrols.show();
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
+
diff --git a/qtjava/javalib/examples/rangecontrols/RangeControls.java b/qtjava/javalib/examples/rangecontrols/RangeControls.java
new file mode 100644
index 00000000..ed331e38
--- /dev/null
+++ b/qtjava/javalib/examples/rangecontrols/RangeControls.java
@@ -0,0 +1,74 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class RangeControls extends QVBox
+{
+
+private QCheckBox notches, wrapping;
+
+
+
+RangeControls( )
+{
+ this(null, null);
+}
+
+RangeControls( QWidget parent, String name )
+{
+ super( parent, name );
+ QHBox row1 = new QHBox( this );
+
+ QVBox cell2 = new QVBox( row1 );
+ cell2.setMargin( 10 );
+ cell2.setFrameStyle( QFrame.WinPanel | QFrame.Sunken );
+
+ new QWidget( cell2 );
+
+ QLabel label1 = new QLabel( "Enter a value between\n" + ( -Integer.MAX_VALUE ) + " and " + Integer.MAX_VALUE + ":", cell2 );
+ label1.setMaximumHeight( label1.sizeHint().height() );
+ QSpinBox sb1 = new QSpinBox( -Integer.MAX_VALUE, Integer.MAX_VALUE, 1, cell2 );
+ sb1.setValue( 0 );
+
+ QLabel label2 = new QLabel( "Enter a zoom value:", cell2 );
+ label2.setMaximumHeight( label2.sizeHint().height() );
+ QSpinBox sb2 = new QSpinBox( 0, 1000, 10, cell2 );
+ sb2.setSuffix( " %" );
+ sb2.setSpecialValueText( "Automatic" );
+
+ QLabel label3 = new QLabel( "Enter a price:", cell2 );
+ label3.setMaximumHeight( label3.sizeHint().height() );
+ QSpinBox sb3 = new QSpinBox( 0, Integer.MAX_VALUE, 1, cell2 );
+ sb3.setPrefix( "$" );
+ sb3.setValue( 355 );
+
+ new QWidget( cell2 );
+
+ QHBox row2 = new QHBox( this );
+
+ QVBox cell3 = new QVBox( row2 );
+ cell3.setMargin( 10 );
+ cell3.setFrameStyle( QFrame.WinPanel | QFrame.Sunken );
+ QSlider hslider = new QSlider( 0, 64, 1, 33, Qt.Horizontal, cell3 );
+ QLCDNumber lcd2 = new QLCDNumber( 2, cell3 );
+ lcd2.display( 33 );
+ lcd2.setSegmentStyle( QLCDNumber.Filled );
+ connect( hslider, SIGNAL(" valueChanged( int )"), lcd2, SLOT(" display( int )") );
+
+ QHBox cell4 = new QHBox( row2 );
+ cell4.setFrameStyle( QFrame.WinPanel | QFrame.Sunken );
+ cell4.setMargin( 10 );
+ QSlider vslider = new QSlider( 0, 64, 1, 8, Qt.Vertical, cell4 );
+ QLCDNumber lcd3 = new QLCDNumber( 3, cell4 );
+ lcd3.display( 8 );
+ connect( vslider, SIGNAL(" valueChanged( int )"), lcd3, SLOT(" display( int )") );
+}
+}
diff --git a/qtjava/javalib/examples/richtext/Main.java b/qtjava/javalib/examples/richtext/Main.java
new file mode 100644
index 00000000..887afb2a
--- /dev/null
+++ b/qtjava/javalib/examples/richtext/Main.java
@@ -0,0 +1,32 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ MyRichText richtext = new MyRichText();
+ richtext.resize( 450, 350 );
+ richtext.setCaption( "Qt Example - Richtext" );
+ a.setMainWidget( richtext );
+ richtext.show();
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/richtext/MyRichText.java b/qtjava/javalib/examples/richtext/MyRichText.java
new file mode 100644
index 00000000..5234e3c8
--- /dev/null
+++ b/qtjava/javalib/examples/richtext/MyRichText.java
@@ -0,0 +1,150 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class MyRichText extends QVBox
+{
+
+protected QTextView view;
+protected QPushButton bClose, bNext, bPrev;
+protected int num;
+
+
+
+static String[] sayings = {
+ "<b>Saying 1:</b><br>"
+ + "<hr><br><br>"
+ + "<big>Evil is that which one believes of others. It is a sin to believe evil "
+ + "of others, but it is seldom a mistake.</big><br><br>"
+ + "<center><i>-- H.L. Mencken</i></center>",
+
+ "<b>Saying 2:</b><br>"
+ + "<hr><br><br>"
+ + "<big>A well-used door needs no oil on its hinges.<br>"
+ + "A swift-flowing steam does not grow stagnant.<br>"
+ + "Neither sound nor thoughts can travel through a vacuum.<br>"
+ + "Software rots if not used.<br><br>"
+ + "These are great mysteries.</big><br><br>"
+ + "<center><i>-- Geoffrey James, \"The Tao of Programming\"</i></center>",
+
+ "<b>Saying 3:</b><br>"
+ + "<hr><br><br>"
+ + "<big>Show business is just like high school, except you get paid.</big><br><br>"
+ + "<center><i>-- Martin Mull</i></center>",
+
+ "<b>Saying 4:</b><br>"
+ + "<hr><br><br>"
+ + "<big><b>The Least Successful Executions</b><br>"
+ + "<twocolumn><p> History has furnished us with two executioners worthy of attention. "
+ + "The first performed in Sydney in Australia. In 1803 three attempts were "
+ + "made to hang a Mr. Joseph Samuels. On the first two of these the rope "
+ + "snapped, while on the third Mr. Samuels just hung there peacefully until he "
+ + "and everyone else got bored. Since he had proved unsusceptible to capital "
+ + "punishment, he was reprieved.</p>"
+ + "<p> The most important British executioner was Mr. James Berry who "
+ + "tried three times in 1885 to hang Mr. John Lee at Exeter Jail, but on each "
+ + "occasion failed to get the trap door open.<!p>"
+ + "<p> In recognition of this achievement, the Home Secretary commuted "
+ + "Lee's sentence to \"life\" imprisonment. He was released in 1917, emigrated "
+ + "to America and lived until 1933.</p></twocolumn></big><br><br>"
+ + "<center><i>-- Stephen Pile, \"The Book of Heroic Failures\"</i></center>",
+
+ "<b>Saying 5:</b><br>"
+ + "<hr><br><br>"
+ + "<big>If you can, help others. If you can't, at least don't hurt others.</big><br><br>"
+ + "<center><i>-- the Dalai Lama</i></center>",
+
+ "<b>Saying 6:</b><br>"
+ + "<hr><br><br>"
+ + "<big>Television has brought back murder into the home -- where it belongs.</big><br><br>"
+ + "<center><i>-- Alfred Hitchcock</i></center>",
+
+ "<b>Saying 7:</b><br>"
+ + "<hr><br><br>"
+ + "<big>I don't know who my grandfather was; I am much more concerned to know "
+ + "what his grandson will be.</big><br><br>"
+ + "<center><i>-- Abraham Lincoln</i></center>"
+
+ };
+
+
+MyRichText( )
+{
+ this(null, null);
+}
+
+MyRichText( QWidget parent, String name )
+{
+ super( parent, name );
+ setMargin( 5 );
+
+ view = new QTextView( this );
+ view.setText( "This is a <b>Test</b> with <i>italic</i> <u>stuff</u>" );
+ QBrush paper = new QBrush();
+ paper.setPixmap( new QPixmap( "../richtext/marble.png" ) );
+ if ( paper.pixmap() != null )
+ view.setPaper( paper );
+ else
+ view.setPaper( new QBrush(white()) );
+
+ view.setText( sayings[0] );
+ view.setMinimumSize( 450, 250 );
+
+ QHBox buttons = new QHBox( this );
+ buttons.setMargin( 5 );
+
+ bClose = new QPushButton( "&Close", buttons );
+ bPrev = new QPushButton( "<< &Prev", buttons );
+ bNext = new QPushButton( "&Next >>", buttons );
+
+ bPrev.setEnabled( false );
+
+ connect( bClose, SIGNAL(" clicked()"), qApp(), SLOT(" quit()") );
+ connect( bPrev, SIGNAL(" clicked()"), this, SLOT(" prev()") );
+ connect( bNext, SIGNAL(" clicked()"), this, SLOT(" next()") );
+
+ num = 0;
+}
+
+void prev()
+{
+ if ( num <= 0 )
+ return;
+
+ num--;
+
+ view.setText( sayings[num] );
+
+ if ( num == 0 )
+ bPrev.setEnabled( false );
+
+ bNext.setEnabled( true );
+}
+
+void next()
+{
+ if ( ++num >= sayings.length )
+ return;
+
+ view.setText( sayings[num] );
+
+ if ( num + 1 == sayings.length )
+ bNext.setEnabled( false );
+
+ bPrev.setEnabled( true );
+}
+
+
+
+
+}
+
diff --git a/qtjava/javalib/examples/richtext/marble.png b/qtjava/javalib/examples/richtext/marble.png
new file mode 100644
index 00000000..49ea3098
--- /dev/null
+++ b/qtjava/javalib/examples/richtext/marble.png
Binary files differ
diff --git a/qtjava/javalib/examples/rot13/Rot13.java b/qtjava/javalib/examples/rot13/Rot13.java
new file mode 100644
index 00000000..345f2a9d
--- /dev/null
+++ b/qtjava/javalib/examples/rot13/Rot13.java
@@ -0,0 +1,90 @@
+/***************************************************************************
+* $Id$
+**
+* Definition of something or other
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class Rot13 extends QWidget {
+private QMultiLineEdit left, right;
+
+
+
+Rot13()
+{
+ left = new QMultiLineEdit( this, "left" );
+ right = new QMultiLineEdit( this, "right" );
+ connect( left, SIGNAL("textChanged()"), this, SLOT("changeRight()") );
+ connect( right, SIGNAL("textChanged()"), this, SLOT("changeLeft()") );
+
+ QPushButton quit = new QPushButton( "&Quit", this );
+ quit.setFocusPolicy( NoFocus );
+ connect( quit, SIGNAL("clicked()"), qApp(), SLOT("quit()") );
+
+ QGridLayout l = new QGridLayout( this, 2, 2, 5 );
+ l.addWidget( left, 0, 0 );
+ l.addWidget( right, 0, 1 );
+ l.addWidget( quit, 1, 1, AlignRight );
+
+ left.setFocus();
+}
+
+
+void changeLeft()
+{
+ left.blockSignals( true );
+ left.setText( rot13( right.text() ) );
+ left.blockSignals( false );
+}
+
+
+void changeRight()
+{
+ right.blockSignals( true );
+ right.setText( rot13( left.text() ) );
+ right.blockSignals( false );
+}
+
+
+String rot13( String input )
+{
+ char[] r = input.toCharArray();
+ int i = r.length;
+ while( i-- != 0 ) {
+ if ( r[i] >= (int) 'A' && r[i] <= (int) 'M' ||
+ r[i] >= (int) 'a' && r[i] <= (int) 'm' )
+ r[i] = (char) (r[i] + 13);
+ else if ( r[i] >= (int) 'N' && r[i] <= (int) 'Z' ||
+ r[i] >= (int) 'n' && r[i] <= (int) 'z' )
+ r[i] = (char) (r[i] - 13);
+ }
+ return new String(r);
+}
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+ Rot13 r = new Rot13();
+ r.resize( 400, 400 );
+ a.setMainWidget( r );
+ r.setCaption("Qt Example - ROT13");
+ r.show();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/scribble/Main.java b/qtjava/javalib/examples/scribble/Main.java
new file mode 100644
index 00000000..01d7a416
--- /dev/null
+++ b/qtjava/javalib/examples/scribble/Main.java
@@ -0,0 +1,36 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright ( C ) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ Scribble scribble = new Scribble();
+
+ scribble.resize( 500, 350 );
+ scribble.setCaption("Qt Example - Scribble");
+ a.setMainWidget( scribble );
+ if ( QApplication.desktop().width() > 550
+ && QApplication.desktop().height() > 366 )
+ scribble.show();
+ else
+ scribble.showMaximized();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/scribble/Scribble.java b/qtjava/javalib/examples/scribble/Scribble.java
new file mode 100644
index 00000000..2adf609c
--- /dev/null
+++ b/qtjava/javalib/examples/scribble/Scribble.java
@@ -0,0 +1,216 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright ( C ) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.*;
+
+class Scribble extends QMainWindow
+{
+
+protected Canvas canvas;
+
+protected QSpinBox bPWidth;
+protected QToolButton bPColor, bSave, bClear;
+
+
+
+class Canvas extends QWidget
+{
+
+ void setPenColor( QColor c )
+ { pen.setColor( c ); }
+
+ void setPenWidth( int w )
+ { pen.setWidth( w ); }
+
+ QColor penColor()
+ { return pen.color(); }
+
+ int penWidth()
+ { return pen.width(); }
+
+
+protected QPen pen;
+protected QPointArray polyline;
+
+protected boolean mousePressed;
+
+protected QPixmap buffer = new QPixmap();
+
+public boolean no_writing = false;
+
+Canvas( QWidget parent )
+{
+ this(parent, null);
+}
+
+Canvas( QWidget parent, String name )
+{
+ super( parent, name, WStaticContents );
+ pen = new QPen( Qt.red(), 3 );
+ polyline = new QPointArray(3);
+
+ if ((qApp().args().length > 0) && !buffer.load(qApp().args()[0]))
+ buffer.fill( colorGroup().base() );
+ setBackgroundMode( QWidget.PaletteBase );
+ setCursor( Qt.crossCursor() );
+}
+
+void save( String filename, String format )
+{
+ if ( !no_writing )
+ buffer.save( filename, format.toUpperCase() );
+}
+
+void clearScreen()
+{
+ buffer.fill( colorGroup().base() );
+ repaint( false );
+}
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ mousePressed = true;
+ polyline.setPoint(0, e.pos());
+ polyline.setPoint(1, e.pos());
+ polyline.setPoint(2, e.pos());
+}
+
+protected void mouseReleaseEvent( QMouseEvent e )
+{
+ mousePressed = false;
+}
+
+protected void mouseMoveEvent( QMouseEvent e )
+{
+ if ( mousePressed ) {
+ QPainter painter = new QPainter();
+ painter.begin( buffer );
+ painter.setPen( pen );
+ polyline.setPoint(2, polyline.at(1));
+ polyline.setPoint(1, polyline.at(0));
+ polyline.setPoint(0, e.pos());
+ painter.drawPolyline( polyline );
+ painter.end();
+
+ QRect r = polyline.boundingRect();
+ r = r.normalize();
+ r.setLeft( r.left() - penWidth() );
+ r.setTop( r.top() - penWidth() );
+ r.setRight( r.right() + penWidth() );
+ r.setBottom( r.bottom() + penWidth() );
+
+ bitBlt( this, r.x(), r.y(), buffer, r.x(), r.y(), r.width(), r.height() );
+ }
+}
+
+protected void resizeEvent( QResizeEvent e )
+{
+ super.resizeEvent( e );
+
+ int w = width() > buffer.width() ?
+ width() : buffer.width();
+ int h = height() > buffer.height() ?
+ height() : buffer.height();
+
+ QPixmap tmp = new QPixmap( buffer );
+ buffer.resize( w, h );
+ buffer.fill( colorGroup().base() );
+ bitBlt( buffer, 0, 0, tmp, 0, 0, tmp.width(), tmp.height() );
+}
+
+protected void paintEvent( QPaintEvent e )
+{
+ super.paintEvent( e );
+ ArrayList rects = e.region().rects();
+ for ( int i = 0; i < rects.size(); i++ ) {
+ QRect r = (QRect) rects.get(i);
+ bitBlt( this, r.x(), r.y(), buffer, r.x(), r.y(), r.width(), r.height() );
+ }
+}
+
+}
+
+//------------------------------------------------------
+
+Scribble( )
+{
+ this(null, null);
+}
+
+Scribble( QWidget parent, String name )
+{
+ super( parent, name );
+ canvas = new Canvas( this );
+ setCentralWidget( canvas );
+
+ QToolBar tools = new QToolBar( this );
+
+ bSave = new QToolButton( new QIconSet(), "Save", "Save as PNG image", this, SLOT(" slotSave()"), tools );
+ bSave.setText( "Save as..." );
+
+ tools.addSeparator();
+
+ bPColor = new QToolButton( new QIconSet(), "Choose Pen Color", "Choose Pen Color", this, SLOT(" slotColor()"), tools );
+ bPColor.setText( "Choose Pen Color..." );
+
+ tools.addSeparator();
+
+ bPWidth = new QSpinBox( 1, 20, 1, tools );
+ QToolTip.add( bPWidth, "Choose Pen Width" );
+ connect( bPWidth, SIGNAL(" valueChanged( int )"), this, SLOT(" slotWidth( int )") );
+ bPWidth.setValue( 3 );
+
+ tools.addSeparator();
+
+ bClear = new QToolButton( new QIconSet(), "Clear Screen", "Clear Screen", this, SLOT(" slotClear()"), tools );
+ bClear.setText( "Clear Screen" );
+}
+
+void slotSave()
+{
+ QPopupMenu menu = new QPopupMenu( null );
+ HashMap formats = new HashMap();
+
+ for ( int i = 0; i < QImageIO.outputFormats().size(); i++ ) {
+ String str = (String) QImageIO.outputFormats().get( i );
+ formats.put( new Integer(menu.insertItem( str + "..." )), str );
+ }
+
+ menu.setMouseTracking( true );
+ int id = menu.exec( bSave.mapToGlobal( new QPoint( 0, bSave.height() + 1 ) ) );
+
+ if ( id != -1 ) {
+ String format = (String) formats.get( new Integer(id) );
+
+ String filename = QFileDialog.getSaveFileName( "", "*." + format.toLowerCase(), this );
+ if ( !filename.equals("") )
+ canvas.save( filename, format );
+ }
+
+}
+
+void slotColor()
+{
+ QColor c = QColorDialog.getColor( canvas.penColor(), this );
+ if ( c.isValid() )
+ canvas.setPenColor( c );
+}
+
+void slotWidth( int w )
+{
+ canvas.setPenWidth( w );
+}
+
+void slotClear()
+{
+ canvas.clearScreen();
+}
+}
diff --git a/qtjava/javalib/examples/showimg/ImageIconProvider.java b/qtjava/javalib/examples/showimg/ImageIconProvider.java
new file mode 100644
index 00000000..5d3dba76
--- /dev/null
+++ b/qtjava/javalib/examples/showimg/ImageIconProvider.java
@@ -0,0 +1,73 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.ArrayList;
+
+
+class ImageIconProvider extends QFileIconProvider
+{
+ ArrayList fmts;
+ QPixmap imagepm;
+
+
+
+/* XPM */
+static String image_xpm[] = {
+"17 15 9 1",
+" c #7F7F7F",
+". c #FFFFFF",
+"X c #00B6FF",
+"o c #BFBFBF",
+"O c #FF6C00",
+"+ c #000000",
+"@ c #0000FF",
+"# c #6CFF00",
+"$ c #FFB691",
+" ..XX",
+" ........o .XXX",
+" .OOOOOOOo. XXX+",
+" .O@@@@@@+++XXX++",
+" .O@@@@@@O.XXX+++",
+" .O@@@@@@OXXX+++.",
+" .O######XXX++...",
+" .O#####XXX++....",
+" .O##$#$XX+o+....",
+" .O#$$$$$+.o+....",
+" .O##$$##O.o+....",
+" .OOOOOOOO.o+....",
+" ..........o+....",
+" ooooooooooo+....",
+"+++++++++++++...."
+};
+
+ImageIconProvider( )
+{
+ this(null, null);
+}
+
+ImageIconProvider( QWidget parent, String name )
+{
+ super( parent, name );
+ imagepm = new QPixmap(image_xpm);
+ fmts = QImage.inputFormats();
+}
+
+
+public QPixmap pixmap( QFileInfo fi )
+{
+ String ext = fi.extension().toUpperCase();
+ if ( fmts.indexOf(ext) != -1 ) {
+ return imagepm;
+ } else {
+ return super.pixmap(fi);
+ }
+}
+}
diff --git a/qtjava/javalib/examples/showimg/ImageTextEditor.java b/qtjava/javalib/examples/showimg/ImageTextEditor.java
new file mode 100644
index 00000000..6c11c1a4
--- /dev/null
+++ b/qtjava/javalib/examples/showimg/ImageTextEditor.java
@@ -0,0 +1,144 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class ImageTextEditor extends QDialog
+{
+private QImage image;
+private QComboBox languages;
+private QComboBox keys;
+private QMultiLineEdit text;
+private QLineEdit newlang;
+private QLineEdit newkey;
+
+
+
+ImageTextEditor( QImage i, QWidget parent )
+{
+ this(i, parent, null, 0);
+}
+
+ImageTextEditor( QImage i, QWidget parent, String name, int f )
+{
+ super(parent,name,true,f);
+ image = i;
+ QVBoxLayout vbox = new QVBoxLayout(this,8);
+ vbox.setAutoAdd(true);
+
+ QGrid controls = new QGrid(3,QGrid.Horizontal,this);
+ controls.setSpacing(8);
+ QLabel l;
+ l=new QLabel("Language",controls); l.setAlignment(AlignCenter);
+ l=new QLabel("Key",controls); l.setAlignment(AlignCenter);
+ new QLabel("",controls); // dummy
+ languages = new QComboBox(controls);
+ keys = new QComboBox(controls);
+ QPushButton remove = new QPushButton("Remove",controls);
+
+ newlang = new QLineEdit(controls);
+ newkey = new QLineEdit(controls);
+ QPushButton add = new QPushButton("Add",controls);
+
+ text = new QMultiLineEdit(this);
+
+ QHBox hbox = new QHBox(this);
+ QPushButton cancel = new QPushButton("Cancel",hbox);
+ QPushButton ok = new QPushButton("OK",hbox);
+
+ connect(add,SIGNAL("clicked()"),
+ this,SLOT("addText()"));
+
+ connect(remove,SIGNAL("clicked()"),
+ this,SLOT("removeText()"));
+
+ connect(ok,SIGNAL("clicked()"),
+ this,SLOT("accept()"));
+
+ connect(cancel,SIGNAL("clicked()"),
+ this,SLOT("reject()"));
+
+ connect(languages,SIGNAL("activated(int)"),
+ this,SLOT("updateText()"));
+
+ connect(keys,SIGNAL("activated(int)"),
+ this,SLOT("updateText()"));
+
+ imageChanged();
+}
+
+void imageChanged()
+{
+ languages.clear();
+ keys.clear();
+ text.clear();
+ languages.insertItem("<any>");
+
+ languages.insertStringList( (String[]) image.textLanguages().toArray(new String[0]) );
+ keys.insertStringList( (String[]) image.textKeys().toArray(new String[0]) );
+
+ updateText();
+}
+
+public void accept()
+{
+ storeText();
+ super.accept();
+}
+
+void updateText()
+{
+ storeText();
+ newlang.setText(languages.currentText());
+ newkey.setText(keys.currentText());
+ String t = image.text(currKey(),currLang());
+
+ text.setText(t);
+}
+
+String currKey()
+{
+ return newkey.text();
+}
+
+String currLang()
+{
+ String l = newlang.text();
+ if ( l.equals("<any>") )
+ l = "";
+ return l;
+}
+
+String currText()
+{
+ String t = text.text();
+ if ( t == null ) t = "";
+ return t;
+}
+
+
+void removeText()
+{
+ image.setText(currKey(),currLang(),"");
+}
+
+void addText()
+{
+ storeText();
+}
+
+void storeText()
+{
+ if ( currKey().length() > 0 ) {
+ image.setText(currKey(),currLang(),currText());
+ }
+}
+}
diff --git a/qtjava/javalib/examples/showimg/ImageViewer.java b/qtjava/javalib/examples/showimg/ImageViewer.java
new file mode 100644
index 00000000..0b419ea9
--- /dev/null
+++ b/qtjava/javalib/examples/showimg/ImageViewer.java
@@ -0,0 +1,703 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.*;
+
+class ImageViewer extends QWidget
+{
+private int conversion_flags;
+private int alloc_context;
+private String filename;
+private QImage image = new QImage(); // the loaded image
+private QPixmap pm = new QPixmap(); // the converted pixmap
+private QPixmap pmScaled; // the scaled pixmap
+
+private QMenuBar menubar;
+private QPopupMenu file;
+private QPopupMenu saveimage;
+private QPopupMenu savepixmap;
+private QPopupMenu edit;
+private QPopupMenu options;
+
+private QWidget helpmsg;
+private QLabel status;
+private int si, sp, ac, co, mo, fd, bd, // Menu item ids
+ td, ta, ba, fa, au, ad, dd,
+ ss, cc, t1, t8, t32;
+private int[] pickx = { 0 };
+private int[] picky = { 0 };
+private int[] clickx = { 0 };
+private int[] clicky = { 0 };
+private boolean may_be_other;
+private static ImageViewer other = null;
+
+
+
+
+/*
+ In the constructor, we just pass the standard parameters on to
+ QWidget.
+
+ The menu uses a single slot to simplify the process of adding
+ more items to the options menu.
+*/
+ImageViewer( QWidget parent, String name, int wFlags )
+{
+ super( parent, name, wFlags );
+ conversion_flags = PreferDither;
+ filename = "";
+ helpmsg = null;
+ pickx[0] = -1;
+ picky[0] = -1;
+ clickx[0] = -1;
+ clicky[0] = -1;
+ alloc_context = 0;
+
+ menubar = new QMenuBar(this);
+ menubar.setSeparator( QMenuBar.InWindowsStyle );
+
+ ArrayList fmt = QImage.outputFormats();
+ saveimage = new QPopupMenu( menubar );
+ savepixmap = new QPopupMenu( menubar );
+ Iterator it = fmt.iterator();
+ while (it.hasNext()) {
+ String f = (String) it.next();
+ saveimage.insertItem( f );
+ savepixmap.insertItem( f );
+ }
+ connect( saveimage, SIGNAL("activated(int)"), this, SLOT("saveImage(int)") );
+ connect( savepixmap, SIGNAL("activated(int)"), this, SLOT("savePixmap(int)") );
+
+ file = new QPopupMenu( menubar );
+ menubar.insertItem( "&File", file );
+ file.insertItem( "&New window", this, SLOT("newWindow()"), new QKeySequence(CTRL+Key_N) );
+ file.insertItem( "&Open...", this, SLOT("openFile()"), new QKeySequence(CTRL+Key_O) );
+ si = file.insertItem( "Save image", saveimage );
+ sp = file.insertItem( "Save pixmap", savepixmap );
+ file.insertSeparator();
+ file.insertItem( "E&xit", qApp(), SLOT("quit()"), new QKeySequence(CTRL+Key_Q) );
+
+ edit = new QPopupMenu( menubar );
+ menubar.insertItem( "&Edit", edit );
+ edit.insertItem("&Copy", this, SLOT("copy()"), new QKeySequence(CTRL+Key_C));
+ edit.insertItem("&Paste", this, SLOT("paste()"), new QKeySequence(CTRL+Key_V));
+ edit.insertSeparator();
+ edit.insertItem("&Horizontal flip", this, SLOT("hFlip()"), new QKeySequence(ALT+Key_H));
+ edit.insertItem("&Vertical flip", this, SLOT("vFlip()"), new QKeySequence(ALT+Key_V));
+ edit.insertItem("&Rotate 180", this, SLOT("rot180()"), new QKeySequence(ALT+Key_R));
+ edit.insertSeparator();
+ edit.insertItem("&Text...", this, SLOT("editText()"));
+ edit.insertSeparator();
+ t1 = edit.insertItem( "Convert to &1 bit", this, SLOT("to1Bit()") );
+ t8 = edit.insertItem( "Convert to &8 bit", this, SLOT("to8Bit()") );
+ t32 = edit.insertItem( "Convert to &32 bit", this, SLOT("to32Bit()") );
+
+ options = new QPopupMenu( menubar );
+ menubar.insertItem( "&Options", options );
+ ac = options.insertItem( "AutoColor" );
+ co = options.insertItem( "ColorOnly" );
+ mo = options.insertItem( "MonoOnly" );
+ options.insertSeparator();
+ fd = options.insertItem( "DiffuseDither" );
+ bd = options.insertItem( "OrderedDither" );
+ td = options.insertItem( "ThresholdDither" );
+ options.insertSeparator();
+ ta = options.insertItem( "ThresholdAlphaDither" );
+ ba = options.insertItem( "OrderedAlphaDither" );
+ fa = options.insertItem( "DiffuseAlphaDither" );
+ options.insertSeparator();
+ ad = options.insertItem( "PreferDither" );
+ dd = options.insertItem( "AvoidDither" );
+ options.insertSeparator();
+ ss = options.insertItem( "Smooth scaling" );
+ cc = options.insertItem( "Use color context" );
+ if ( QApplication.colorSpec() == QApplication.ManyColor )
+ options.setItemEnabled( cc, false );
+ options.setCheckable( true );
+ setMenuItemFlags();
+
+ menubar.insertSeparator();
+
+ QPopupMenu help = new QPopupMenu( menubar );
+ menubar.insertItem( "&Help", help );
+ help.insertItem( "Help!", this, SLOT("giveHelp()"), new QKeySequence(CTRL+Key_H) );
+
+ connect( options, SIGNAL("activated(int)"), this, SLOT("doOption(int)") );
+
+ status = new QLabel(this);
+ status.setFrameStyle( QFrame.WinPanel | QFrame.Sunken );
+ status.setFixedHeight( fontMetrics().height() + 4 );
+
+ setMouseTracking( true );
+}
+
+void cleanUp()
+{
+ if ( alloc_context != 0 )
+ QColor.destroyAllocContext( alloc_context );
+ if ( other == this )
+ other = null;
+}
+
+/*
+ This function modifies the conversion_flags when an options menu item
+ is selected, then ensures all menu items are up to date, and reconverts
+ the image if possibly necessary.
+*/
+void doOption(int item)
+{
+ if ( item == ss || item == cc ) {
+ // Toggle
+ boolean newboolean = !options.isItemChecked(item);
+ options.setItemChecked(item, newboolean);
+ // And reconvert...
+ reconvertImage();
+ repaint(image.hasAlphaBuffer()); // show image in widget
+ return;
+ }
+
+ if ( options.isItemChecked( item ) ) return; // They are all radio buttons
+
+ int ocf = conversion_flags;
+
+ if ( item == ac ) {
+ conversion_flags = conversion_flags & ~ColorMode_Mask | AutoColor;
+ } else if ( item == co ) {
+ conversion_flags = conversion_flags & ~ColorMode_Mask | ColorOnly;
+ } else if ( item == mo ) {
+ conversion_flags = conversion_flags & ~ColorMode_Mask | MonoOnly;
+ } else if ( item == fd ) {
+ conversion_flags = conversion_flags & ~Dither_Mask | DiffuseDither;
+ } else if ( item == bd ) {
+ conversion_flags = conversion_flags & ~Dither_Mask | OrderedDither;
+ } else if ( item == td ) {
+ conversion_flags = conversion_flags & ~Dither_Mask | ThresholdDither;
+ } else if ( item == ta ) {
+ conversion_flags = conversion_flags & ~AlphaDither_Mask | ThresholdAlphaDither;
+ } else if ( item == fa ) {
+ conversion_flags = conversion_flags & ~AlphaDither_Mask | DiffuseAlphaDither;
+ } else if ( item == ba ) {
+ conversion_flags = conversion_flags & ~AlphaDither_Mask | OrderedAlphaDither;
+ } else if ( item == ad ) {
+ conversion_flags = conversion_flags & ~DitherMode_Mask | PreferDither;
+ } else if ( item == dd ) {
+ conversion_flags = conversion_flags & ~DitherMode_Mask | AvoidDither;
+ }
+
+ if ( ocf != conversion_flags ) {
+ setMenuItemFlags();
+ // And reconvert...
+ reconvertImage();
+ repaint(image.hasAlphaBuffer()); // show image in widget
+ }
+}
+
+/*
+ Set the options menu to reflect the conversion_flags value.
+*/
+void setMenuItemFlags()
+{
+ // File
+ boolean valid_image = pm.size().width() != 0 || pm.size().height() != 0;
+ file.setItemEnabled( si, valid_image );
+ file.setItemEnabled( sp, valid_image );
+
+ // Edit
+ edit.setItemEnabled( t1, image.depth() != 1 );
+ edit.setItemEnabled( t8, image.depth() != 8 );
+ edit.setItemEnabled( t32, image.depth() != 32 );
+
+ // Options
+ boolean may_need_color_dithering =
+ !valid_image
+ || image.depth() == 32 && QPixmap.defaultDepth() < 24;
+ boolean may_need_dithering = may_need_color_dithering
+ || image.depth() > 1 && options.isItemChecked(mo)
+ || image.depth() > 1 && QPixmap.defaultDepth() == 1;
+ boolean has_alpha_mask = !valid_image || image.hasAlphaBuffer();
+
+ options.setItemEnabled( fd, may_need_dithering );
+ options.setItemEnabled( bd, may_need_dithering );
+ options.setItemEnabled( td, may_need_dithering );
+
+ options.setItemEnabled( ta, has_alpha_mask );
+ options.setItemEnabled( fa, has_alpha_mask );
+ options.setItemEnabled( ba, has_alpha_mask );
+
+ options.setItemEnabled( ad, may_need_color_dithering );
+ options.setItemEnabled( dd, may_need_color_dithering );
+
+ options.setItemChecked( ac, (conversion_flags & ColorMode_Mask) == AutoColor );
+ options.setItemChecked( co, (conversion_flags & ColorMode_Mask) == ColorOnly );
+ options.setItemChecked( mo, (conversion_flags & ColorMode_Mask) == MonoOnly );
+ options.setItemChecked( fd, (conversion_flags & Dither_Mask) == DiffuseDither );
+ options.setItemChecked( bd, (conversion_flags & Dither_Mask) == OrderedDither );
+ options.setItemChecked( td, (conversion_flags & Dither_Mask) == ThresholdDither );
+ options.setItemChecked( ta, (conversion_flags & AlphaDither_Mask) == ThresholdAlphaDither );
+ options.setItemChecked( fa, (conversion_flags & AlphaDither_Mask) == DiffuseAlphaDither );
+ options.setItemChecked( ba, (conversion_flags & AlphaDither_Mask) == OrderedAlphaDither );
+ options.setItemChecked( ad, (conversion_flags & DitherMode_Mask) == PreferDither );
+ options.setItemChecked( dd, (conversion_flags & DitherMode_Mask) == AvoidDither );
+}
+
+void updateStatus()
+{
+ if ( pm.size().width() == 0 && pm.size().height() == 0 ) {
+ if ( !filename.equals("") )
+ status.setText("Could not load image");
+ else
+ status.setText("No image - select Open from File menu.");
+ } else {
+ String message, moremsg;
+ message = "" + image.width() + "x" + image.height();
+ if ( pm.size().width() != pmScaled.size().width()
+ || pm.size().height() != pmScaled.size().height() )
+ {
+ moremsg = " [" + pmScaled.width() + "x" + pmScaled.height() + "]";
+ message += moremsg;
+ }
+ moremsg = ", " + image.depth() + " bits ";
+ message += moremsg;
+ if (image.valid(pickx[0],picky[0])) {
+ moremsg = "("
+ + pickx[0] + "," + picky[0] + ")=#"
+ + Integer.toHexString(image.pixel(pickx[0],picky[0]))
+ + " ";
+ message += moremsg;
+ }
+ if ( image.numColors() > 0 ) {
+ if (image.valid(pickx[0],picky[0])) {
+ moremsg = ", " + image.pixelIndex(pickx[0],picky[0]) + "/"
+ + image.numColors() + " colors";
+ } else {
+ moremsg = ", " + image.numColors() + " colors";
+ }
+ message += moremsg;
+ }
+ if ( image.hasAlphaBuffer() ) {
+ if ( image.depth() == 8 ) {
+ int i;
+ boolean alpha[] = new boolean[256];
+ int nalpha=0;
+
+ for (i=0; i<256; i++)
+ alpha[i] = false;
+
+ for (i=0; i<image.numColors(); i++) {
+ int alevel = image.color(i) >> 24;
+ // Hack - image.color() returns a C++ unsigned int, but alevel is a signed int.
+ // If the top 8 bits are 0xffffffff, alevel is -1, not 255, and needs fixing up
+ if (alevel == -1) {
+ alevel = 255;
+ }
+ if (!alpha[alevel]) {
+ alpha[alevel] = true;
+ nalpha++;
+ }
+ }
+ moremsg = ", " + nalpha + " alpha levels";
+ } else {
+ // Too many pixels to bother counting.
+ moremsg = ", 8-bit alpha channel";
+ }
+ message += moremsg;
+ }
+ status.setText(message);
+ }
+}
+
+/*
+ This function saves the image.
+*/
+void saveImage( int item )
+{
+ String fmt = saveimage.text(item);
+ String savefilename = QFileDialog.getSaveFileName("", "",
+ this, filename);
+ if ( !savefilename.equals("") )
+ if ( !image.save( savefilename, fmt ) )
+ QMessageBox.warning( this, "Save failed", "Error saving file" );
+}
+
+/*
+ This function saves the converted image.
+*/
+void savePixmap( int item )
+{
+ String fmt = savepixmap.text(item);
+ String savefilename = QFileDialog.getSaveFileName("",
+ "", this, filename);
+ if ( !savefilename.equals("") )
+ if ( !pmScaled.save( savefilename, fmt ) )
+ QMessageBox.warning( this, "Save failed", "Error saving file" );
+}
+
+
+void newWindow()
+{
+ ImageViewer that = new ImageViewer(null, "new window", WDestructiveClose);
+ that.options.setItemChecked( that.cc, useColorContext() );
+ that.show();
+}
+
+/*
+ This function is the slot for processing the Open menu item.
+*/
+void openFile()
+{
+ String newfilename = QFileDialog.getOpenFileName();
+ if ( !newfilename.equals("") ) {
+ loadImage( newfilename ) ;
+ repaint(); // show image in widget
+ }
+}
+
+/*
+ This function loads an image from a file and resizes the widget to
+ exactly fit the image size. If the file was not found or the image
+ format was unknown it will resize the widget to fit the errorText
+ message (see above) displayed in the current font.
+
+ Returns true if the image was successfully loaded.
+*/
+
+boolean loadImage( String fileName )
+{
+ filename = fileName;
+ boolean ok = false;
+ if ( ! filename.equals("") ) {
+ QApplication.setOverrideCursor( waitCursor() ); // this might take time
+ ok = image.load(filename, null);
+ pickx[0] = -1;
+ clickx[0] = -1;
+ if ( ok )
+ ok = reconvertImage();
+ if ( ok ) {
+ setCaption( filename ); // set window caption
+ int w = pm.width();
+ int h = pm.height();
+
+ int reasonable_width = 128;
+ if ( w < reasonable_width ) {
+ // Integer scale up to something reasonable
+ int multiply = ( reasonable_width + w - 1 ) / w;
+ w *= multiply;
+ h *= multiply;
+ }
+
+ h += menubar.heightForWidth(w) + status.height();
+ resize( w, h ); // we resize to fit image
+ } else {
+ pm.resize(0,0); // couldn't load image
+ update();
+ }
+ QApplication.restoreOverrideCursor(); // restore original cursor
+ }
+ updateStatus();
+ setMenuItemFlags();
+ return ok;
+}
+
+boolean reconvertImage()
+{
+ boolean success = false;
+
+ if ( image.isNull() ) return false;
+
+ if ( alloc_context != 0 ) {
+ QColor.destroyAllocContext( alloc_context );
+ alloc_context = 0;
+ }
+ if ( useColorContext() ) {
+ alloc_context = QColor.enterAllocContext();
+ // Clear the image to hide flickering palette
+ QPainter painter = new QPainter(this);
+ painter.eraseRect(0, menubar.heightForWidth( width() ), width(), height());
+ }
+
+ QApplication.setOverrideCursor( waitCursor() ); // this might take time
+ if ( pm.convertFromImage(image, conversion_flags) )
+ {
+ pmScaled = new QPixmap();
+ scale();
+ resize( width(), height() );
+ success = true; // load successful
+ } else {
+ pm.resize(0,0); // couldn't load image
+ }
+ updateStatus();
+ setMenuItemFlags();
+ QApplication.restoreOverrideCursor(); // restore original cursor
+
+ if ( useColorContext() )
+ QColor.leaveAllocContext();
+
+ return success; // true if loaded OK
+}
+
+boolean smooth()
+{
+ return options.isItemChecked(ss);
+}
+
+boolean useColorContext()
+{
+ return options.isItemChecked(cc);
+}
+
+/*
+ This functions scales the pixmap in the member variable "pm" to fit the
+ widget size and puts the resulting pixmap in the member variable "pmScaled".
+*/
+
+void scale()
+{
+ int h = height() - menubar.heightForWidth( width() ) - status.height();
+
+ if ( image.isNull() ) return;
+
+ QApplication.setOverrideCursor( waitCursor() ); // this might take time
+ if ( width() == pm.width() && h == pm.height() )
+ { // no need to scale if widget
+ pmScaled = pm; // size equals pixmap size
+ } else {
+ if (smooth()) {
+ pmScaled.convertFromImage(image.smoothScale(width(), h),
+ conversion_flags);
+ } else {
+ QWMatrix m = new QWMatrix(); // transformation matrix
+ m.scale(((double)width())/pm.width(),// define scale factors
+ ((double)h)/pm.height());
+ pmScaled = (QPixmap) pm.xForm( m ); // create scaled pixmap
+ }
+ }
+ QApplication.restoreOverrideCursor(); // restore original cursor
+}
+
+/*
+ The resize event handler, if a valid pixmap was loaded it will call
+ scale() to fit the pixmap to the new widget size.
+*/
+
+protected void resizeEvent( QResizeEvent e )
+{
+ status.setGeometry(0, height() - status.height(),
+ width(), status.height());
+
+ if ( pm.size().width() == 0 && pm.size().height() == 0 ) // we couldn't load the image
+ return;
+
+ int h = height() - menubar.heightForWidth( width() ) - status.height();
+ if ( width() != pmScaled.width() || h != pmScaled.height())
+ { // if new size,
+ scale(); // scale pmScaled to window
+ updateStatus();
+ }
+ if ( image.hasAlphaBuffer() )
+ erase();
+}
+
+protected boolean convertEvent( QMouseEvent e, int[] x, int[] y)
+{
+ if ( pm.size().width() != 0 || pm.size().height() != 0 ) {
+ int h = height() - menubar.heightForWidth( width() ) - status.height();
+ int nx = e.x() * image.width() / width();
+ int ny = (e.y()-menubar.heightForWidth( width() )) * image.height() / h;
+ if (nx != x[0] || ny != y[0] ) {
+ x[0] = nx;
+ y[0] = ny;
+ updateStatus();
+ return true;
+ }
+ }
+ return false;
+}
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ may_be_other = convertEvent(e, clickx, clicky);
+}
+
+protected void mouseReleaseEvent( QMouseEvent e )
+{
+ if ( may_be_other )
+ other = this;
+}
+
+/*
+ Record the pixel position of interest.
+*/
+protected void mouseMoveEvent( QMouseEvent e )
+{
+ if (convertEvent(e,pickx,picky)) {
+ updateStatus();
+ if ((e.state()&LeftButton) != 0) {
+ may_be_other = false;
+ if ( clickx[0] >= 0 && other != null) {
+ copyFrom(other);
+ }
+ }
+ }
+}
+
+/*
+ Draws the portion of the scaled pixmap that needs to be updated or prints
+ an error message if no legal pixmap has been loaded.
+*/
+
+protected void paintEvent( QPaintEvent e )
+{
+ if ( pm.size().width() != 0 || pm.size().height() != 0 ) { // is an image loaded?
+ QPainter painter = new QPainter(this);
+ painter.setClipRect(e.rect());
+ painter.drawPixmap(0, menubar.heightForWidth( width() ), pmScaled);
+ }
+}
+
+
+/*
+ Explain anything that might be confusing.
+*/
+void giveHelp()
+{
+ if (helpmsg == null) {
+ String helptext =
+ "<b>Usage:</b> <tt>showimg [-m] <i>filename ...</i></tt>"
+ + "<blockquote>"
+ + "<tt>-m</tt> - use <i>ManyColor</i> color spec"
+ + "</blockquote>"
+ + "<p>Supported input formats:"
+ + "<blockquote>";
+ Iterator it = QImage.inputFormatList().iterator();
+ if (it.hasNext())
+ helptext += (String) it.next();
+ while (it.hasNext()) {
+ helptext += ", " + (String) it.next();
+ }
+ helptext += "</blockquote>";
+
+ helpmsg = new QMessageBox( "Help", helptext,
+ QMessageBox.Information, QMessageBox.Ok, 0, 0, null, null, false );
+ }
+ helpmsg.show();
+ helpmsg.raise();
+}
+
+void copyFrom(ImageViewer s)
+{
+ if ( clickx[0] >= 0 ) {
+ int dx = clickx[0];
+ int dy = clicky[0];
+ int sx = s.clickx[0];
+ int sy = s.clicky[0];
+ int sw = Math.abs(clickx[0] - pickx[0])+1;
+ int sh = Math.abs(clicky[0] - picky[0])+1;
+ if ( clickx[0] > pickx[0] ) {
+ dx = pickx[0];
+ sx -= sw-1;
+ }
+ if ( clicky[0] > picky[0] ) {
+ dy = picky[0];
+ sy -= sh-1;
+ }
+ bitBlt( new QPixmap(image), dx, dy, new QPixmap(s.image), sx, sy, sw, sh );
+ reconvertImage();
+ repaint( image.hasAlphaBuffer() );
+ }
+}
+
+void hFlip()
+{
+ setImage(image.mirror(true,false));
+}
+
+void vFlip()
+{
+ setImage(image.mirror(false,true));
+}
+
+void rot180()
+{
+ setImage(image.mirror(true,true));
+}
+
+void copy()
+{
+ QApplication.clipboard().setImage(image); // Less information loss
+}
+
+void paste()
+{
+ QImage p = QApplication.clipboard().image();
+ if ( !p.isNull() ) {
+ filename = "pasted";
+ setImage(p);
+ }
+}
+
+void setImage(QImage newimage)
+{
+ image = newimage;
+
+ pickx[0] = -1;
+ clickx[0] = -1;
+ setCaption( filename ); // set window caption
+ int w = image.width();
+ int h = image.height();
+ if ( w == 0 )
+ return;
+
+ int reasonable_width = 128;
+ if ( w < reasonable_width ) {
+ // Integer scale up to something reasonable
+ int multiply = ( reasonable_width + w - 1 ) / w;
+ w = multiply;
+ h = multiply;
+ }
+
+ h += menubar.heightForWidth(w) + status.height();
+ resize( w, h ); // we resize to fit image
+
+ reconvertImage();
+ repaint( image.hasAlphaBuffer() );
+
+ updateStatus();
+ setMenuItemFlags();
+}
+
+void editText()
+{
+ ImageTextEditor editor = new ImageTextEditor(image,this);
+ editor.exec();
+}
+
+void to1Bit()
+{
+ toBitDepth(1);
+}
+
+void to8Bit()
+{
+ toBitDepth(8);
+}
+
+void to32Bit()
+{
+ toBitDepth(32);
+}
+
+void toBitDepth(int d)
+{
+ image = image.convertDepth(d);
+ reconvertImage();
+ repaint( image.hasAlphaBuffer() );
+}
+}
diff --git a/qtjava/javalib/examples/showimg/Main.java b/qtjava/javalib/examples/showimg/Main.java
new file mode 100644
index 00000000..a72a39c9
--- /dev/null
+++ b/qtjava/javalib/examples/showimg/Main.java
@@ -0,0 +1,59 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ if ( args.length > 0 && args[0].equals("-m") ) {
+ QApplication.setColorSpec( QApplication.ManyColor );
+ }
+ else if ( args.length > 1 && args[1].equals("-n") ) {
+ QApplication.setColorSpec( QApplication.NormalColor );
+ }
+ else {
+ QApplication.setColorSpec( QApplication.CustomColor );
+ }
+
+ QApplication.setFont( new QFont("Helvetica", 12) );
+ QApplication a = new QApplication( args );
+
+ ImageIconProvider iip = new ImageIconProvider();
+ QFileDialog.setIconProvider( iip );
+
+ if ( args.length == 0 ) {
+ // Create a window which looks after its own existence.
+ ImageViewer w =
+ new ImageViewer(null, "new window", Qt.WDestructiveClose | Qt.WResizeNoErase );
+ w.setCaption("Qt Example - Image Viewer");
+ w.show();
+ } else {
+ for ( int i=0; i<args.length; i++ ) {
+ // Create a window which looks after its own existence.
+ ImageViewer w =
+ new ImageViewer(null, args[i], Qt.WDestructiveClose | Qt.WResizeNoErase );
+ w.setCaption("Qt Example - Image Viewer");
+ w.loadImage( args[i] );
+ w.show();
+ }
+ }
+
+ QObject.connect(Qt.qApp(), Qt.SIGNAL("lastWindowClosed()"), Qt.qApp(), Qt.SLOT("quit()"));
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/showimg/README b/qtjava/javalib/examples/showimg/README
new file mode 100644
index 00000000..a6c9ca98
--- /dev/null
+++ b/qtjava/javalib/examples/showimg/README
@@ -0,0 +1,14 @@
+This example demonstrates how to read in and display images, and the
+conversion facilities available. The CuteWidget can read a file into
+a pixmap and resizes the displayed pixmap when the widget is resized.
+
+Note that the function CuteWidget::paintEvent uses the drawPixmap function
+of QPainter to display the pixmap, the bitBlt function can also be used to
+display pixmaps.
+
+If you have installed the Qt imageio extension (see extensions/imageio
+in your Qt directory), you can build using that extension.
+
+Some of the conversion options will have no effect, depending on the
+display hardware used. Generally, these are disabled.
+
diff --git a/qtjava/javalib/examples/sound/SoundPlayer.java b/qtjava/javalib/examples/sound/SoundPlayer.java
new file mode 100644
index 00000000..ad6cf7a7
--- /dev/null
+++ b/qtjava/javalib/examples/sound/SoundPlayer.java
@@ -0,0 +1,116 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+class SoundPlayer extends QMainWindow {
+
+private QSound bucket3;
+private QSound bucket4;
+
+//
+// Very simple example of QSound.play(filename)
+//
+// 99% of this program is just boilerplate Qt code to put up a nice
+// window so you think something special is happening.
+//
+
+
+SoundPlayer()
+{
+ super();
+ bucket3 = new QSound("sounds/3.wav");
+ bucket4 = new QSound("sounds/4.wav");
+
+ if (!QSound.isAvailable()) {
+ // Bail out. Programs in which sound is not critical
+ // could just silently (hehe) ignore the lack of a server.
+ //
+ QMessageBox.warning(this,"No Sound",
+ "<p><b>Sorry, you are not running the Network Audio System.</b>"
+ + "<p>If you have the `au' command, run it in the background before this program. "
+ + "The latest release of the Network Audio System can be obtained from:"
+ + "<pre>\n"
+ + " &nbsp;\n"
+ + " ftp.ncd.com:/pub/ncd/technology/src/nas\n"
+ + " ftp.x.org:/contrib/audio/nas\n"
+ + "</pre>"
+ + "<p>Release 1.2 of NAS is also included with the X11R6"
+ + "contrib distribution."
+ + "<p>After installing NAS, you will then need to reconfigure Qt with NAS sound support");
+ }
+
+ QPopupMenu file = new QPopupMenu(this);
+ file.insertItem("Play &1", this, SLOT("doPlay1()"), new QKeySequence(CTRL+Key_1));
+ file.insertItem("Play &2", this, SLOT("doPlay2()"), new QKeySequence(CTRL+Key_2));
+ file.insertItem("Play from bucket &3", this, SLOT("doPlay3()"), new QKeySequence(CTRL+Key_3));
+ file.insertItem("Play from bucket &4", this, SLOT("doPlay4()"), new QKeySequence(CTRL+Key_4));
+ file.insertSeparator();
+ file.insertItem("Play 3 and 4 together", this, SLOT("doPlay34()"));
+ file.insertItem("Play all together", this, SLOT("doPlay1234()"));
+ file.insertSeparator();
+ file.insertItem("E&xit", qApp(), SLOT("quit()"));
+ menuBar().insertItem("&File", file);
+}
+
+void doPlay1()
+{
+ QSound.play("sounds/1.wav");
+}
+
+void doPlay2()
+{
+ QSound.play("sounds/2.wav");
+}
+
+void doPlay3()
+{
+ bucket3.play();
+}
+
+void doPlay4()
+{
+ bucket4.play();
+}
+
+void doPlay34()
+{
+ // Some sound platforms will only play one sound at a time
+ bucket3.play();
+ bucket4.play();
+}
+
+void doPlay1234()
+{
+ // Some sound platforms will only play one sound at a time
+ QSound.play("sounds/1.wav");
+ QSound.play("sounds/2.wav");
+ bucket3.play();
+ bucket4.play();
+}
+
+public static void main(String[] args)
+{
+ QApplication app = new QApplication(args);
+ SoundPlayer sp = new SoundPlayer();
+ app.setMainWidget(sp);
+ sp.setCaption("Qt Example - Sounds");
+ sp.show();
+ app.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+
+}
+
diff --git a/qtjava/javalib/examples/sound/sounds/1.wav b/qtjava/javalib/examples/sound/sounds/1.wav
new file mode 100644
index 00000000..30b84e30
--- /dev/null
+++ b/qtjava/javalib/examples/sound/sounds/1.wav
Binary files differ
diff --git a/qtjava/javalib/examples/sound/sounds/2.wav b/qtjava/javalib/examples/sound/sounds/2.wav
new file mode 100644
index 00000000..dd32e345
--- /dev/null
+++ b/qtjava/javalib/examples/sound/sounds/2.wav
Binary files differ
diff --git a/qtjava/javalib/examples/sound/sounds/3.wav b/qtjava/javalib/examples/sound/sounds/3.wav
new file mode 100644
index 00000000..5213eb55
--- /dev/null
+++ b/qtjava/javalib/examples/sound/sounds/3.wav
Binary files differ
diff --git a/qtjava/javalib/examples/sound/sounds/4.wav b/qtjava/javalib/examples/sound/sounds/4.wav
new file mode 100644
index 00000000..e31b0609
--- /dev/null
+++ b/qtjava/javalib/examples/sound/sounds/4.wav
Binary files differ
diff --git a/qtjava/javalib/examples/splitter/Test.java b/qtjava/javalib/examples/splitter/Test.java
new file mode 100644
index 00000000..f174bc2b
--- /dev/null
+++ b/qtjava/javalib/examples/splitter/Test.java
@@ -0,0 +1,97 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+
+
+class Test extends QWidget {
+
+
+Test(QWidget parent, String name)
+{
+ this(parent, name, 0);
+}
+
+Test(QWidget parent, String name, int f)
+{
+ super(parent, name, f);
+
+}
+
+public void paintEvent(QPaintEvent e)
+{
+ QPainter p = new QPainter(this);
+ p.setClipRect(e.rect());
+ int d = 1000; //large number
+ int x1 = 0;
+ int x2 = width()-1;
+ int y1 = 0;
+ int y2 = height()-1;
+
+ int x = (x1+x2)/2;
+ p.drawLine( x, y1, x+d, y1+d );
+ p.drawLine( x, y1, x-d, y1+d );
+ p.drawLine( x, y2, x+d, y2-d );
+ p.drawLine( x, y2, x-d, y2-d );
+
+ int y = (y1+y2)/2;
+ p.drawLine( x1, y, x1+d, y+d );
+ p.drawLine( x1, y, x1+d, y-d );
+ p.drawLine( x2, y, x2-d, y+d );
+ p.drawLine( x2, y, x2-d, y-d );
+ p.end();
+}
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ QSplitter s1 = new QSplitter( QSplitter.Vertical, null , "main" );
+
+ QSplitter s2 = new QSplitter( QSplitter.Horizontal, s1, "top" );
+
+ Test t1 = new Test( s2, "topLeft" );
+ t1.setBackgroundColor( Qt.blue().light( 180 ) );
+ t1.setMinimumSize( 50, 0 );
+
+ Test t2 = new Test( s2, "topRight" );
+ t2.setBackgroundColor( Qt.green().light( 180 ) );
+ s2.setResizeMode( t2, QSplitter.KeepSize );
+ s2.moveToFirst( t2 );
+
+ QSplitter s3 = new QSplitter( QSplitter.Horizontal, s1, "bottom" );
+
+ Test t3 = new Test( s3, "bottomLeft" );
+ t3.setBackgroundColor( Qt.red() );
+ Test t4 = new Test( s3, "bottomMiddle" );
+ t4.setBackgroundColor( Qt.white() );
+
+ Test t5 = new Test( s3, "bottomRight" );
+ t5.setMaximumHeight( 250 );
+ t5.setMinimumSize( 80, 50 );
+ t5.setBackgroundColor( Qt.yellow() );
+
+ // Qt/Embedded XOR drawing not yet implemented.
+ s1.setOpaqueResize( true );
+ s2.setOpaqueResize( true );
+ s3.setOpaqueResize( true );
+
+ a.setMainWidget( s1 );
+ s1.setCaption("Qt Example - Splitters");
+ s1.show();
+ int result = a.exec();
+ return;
+}
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/tabdialog/Main.java b/qtjava/javalib/examples/tabdialog/Main.java
new file mode 100644
index 00000000..27a0ef6a
--- /dev/null
+++ b/qtjava/javalib/examples/tabdialog/Main.java
@@ -0,0 +1,33 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+
+ QApplication a = new QApplication( args );
+
+ TabDialog tabdialog = new TabDialog( null, "tabdialog", ( args.length < 1 ? "." : args[0] ) );
+ tabdialog.resize( 450, 350 );
+ tabdialog.setCaption( "Qt Example - Tabbed Dialog" );
+ a.setMainWidget( tabdialog );
+ tabdialog.show();
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/tabdialog/TabDialog.java b/qtjava/javalib/examples/tabdialog/TabDialog.java
new file mode 100644
index 00000000..838bec10
--- /dev/null
+++ b/qtjava/javalib/examples/tabdialog/TabDialog.java
@@ -0,0 +1,114 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.text.*;
+
+class TabDialog extends QTabDialog
+{
+
+protected String filename;
+protected QFileInfo fileinfo;
+
+
+TabDialog( QWidget parent, String name, String _filename )
+{
+ super( parent, name );
+ filename = _filename;
+ fileinfo = new QFileInfo(filename);
+ setupTab1();
+ setupTab2();
+ setupTab3();
+
+ connect( this, SIGNAL(" applyButtonPressed()"), qApp(), SLOT(" quit()") );
+}
+
+void setupTab1()
+{
+ QVBox tab1 = new QVBox( this );
+ tab1.setMargin( 5 );
+
+ new QLabel( "Filename:", tab1 );
+ QLineEdit fname = new QLineEdit( filename, tab1 );
+ fname.setFocus();
+
+ new QLabel( "Path:", tab1 );
+ QLabel path = new QLabel( fileinfo.dirPath( true ), tab1 );
+ path.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+
+ new QLabel( "Size:", tab1 );
+ QLabel size = new QLabel( fileinfo.size() + " KB", tab1 );
+ size.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+
+ SimpleDateFormat dateFormat = new SimpleDateFormat("EE MMM d hh:mm:ss yyyy");
+
+ new QLabel( "Last Read:", tab1 );
+ QLabel lread = new QLabel( dateFormat.format(fileinfo.lastRead().getTime()), tab1 );
+ lread.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+
+ new QLabel( "Last Modified:", tab1 );
+ QLabel lmodif = new QLabel( dateFormat.format(fileinfo.lastModified().getTime()), tab1 );
+ lmodif.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+
+ addTab( tab1, "General" );
+}
+
+void setupTab2()
+{
+ QVBox tab2 = new QVBox( this );
+ tab2.setMargin( 5 );
+
+ QButtonGroup bg = new QButtonGroup( 1, QGroupBox.Horizontal, "Permissions", tab2 );
+
+ QCheckBox readable = new QCheckBox( "Readable", bg );
+ if ( fileinfo.isReadable() )
+ readable.setChecked( true );
+
+ QCheckBox writable = new QCheckBox( "Writeable", bg );
+ if ( fileinfo.isWritable() )
+ writable.setChecked( true );
+
+ QCheckBox executable = new QCheckBox( "Executable", bg );
+ if ( fileinfo.isExecutable() )
+ executable.setChecked( true );
+
+ QButtonGroup bg2 = new QButtonGroup( 2, QGroupBox.Horizontal, "Owner", tab2 );
+
+ new QLabel( "Owner", bg2 );
+ QLabel owner = new QLabel( fileinfo.owner(), bg2 );
+ owner.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+
+ new QLabel( "Group", bg2 );
+ QLabel group = new QLabel( fileinfo.group(), bg2 );
+ group.setFrameStyle( QFrame.Panel | QFrame.Sunken );
+
+ addTab( tab2, "Permissions" );
+}
+
+void setupTab3()
+{
+ QVBox tab3 = new QVBox( this );
+ tab3.setMargin( 5 );
+ tab3.setSpacing( 5 );
+
+ new QLabel( "Open " + filename + " with:", tab3 );
+
+ QListBox prgs = new QListBox( tab3 );
+ for ( int i = 0; i < 30; i++ ) {
+ String prg = "Application " + i;
+ prgs.insertItem( prg );
+ }
+ prgs.setCurrentItem( 3 );
+
+ new QCheckBox( "Open files with the extension '" + fileinfo.extension() + "' always with this application", tab3 );
+
+ addTab( tab3, "Applications" );
+}
+}
diff --git a/qtjava/javalib/examples/table/small-table-demo/Main.java b/qtjava/javalib/examples/table/small-table-demo/Main.java
new file mode 100644
index 00000000..a3e38843
--- /dev/null
+++ b/qtjava/javalib/examples/table/small-table-demo/Main.java
@@ -0,0 +1,183 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main extends QObject {
+
+// Qt logo: static String qtlogo_xpm[]
+/* XPM */
+static String[] qtlogo_xpm = {
+/* width height num_colors chars_per_pixel */
+" 100 100 16 1",
+/* colors */
+". c #000000",
+"# c #0b0d01",
+"a c #161a02",
+"b c #202703",
+"c c #2b3505",
+"d c #364206",
+"e c #414f07",
+"f c #4c5c08",
+"g c #566909",
+"h c #61760a",
+"i c #6c830b",
+"j c #77900c",
+"k c #829e0e",
+"l c #8cab0f",
+"m c #97b810",
+"n c #a2c511",
+/* pixels */
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmkhgecbbabbcdefikmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkjdc#..............#ceilnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmida......................aehmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmgc#.....................##..#abgmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmgd#..............................#chmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnjd....##..................#.....###..#eimnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnmga...#...............................#..agmnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnke#.......#................................acknnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnjc...#........................##....#.........dinnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnib..#...............................#...........cjnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnhb....#.#......................##......#..........ahnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnib..#..........#.....####aabba#.....#.....##.......#cinnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnjb.................#acehklmmmmljihca..................bjnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnkc..#.............#cfknnnnnnnnnnnnnlkhc#..#.............cknnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnme......##....#..#dhmnnnnnnnnnnnnnnnnnnlhda...##.......##.dmnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnng#.#....#......#bglnnnnnnnnnnnnnnnnnnnnnnlfa...#...#....#.#fnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnja...#.......#.#dknnnnnnnnnnnnnnnnnnnnnnnnnnmda.....#....##.ajnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnmd..#........#.#emnnnnnnnnnnnnnnnnnnnnnnnnnnnnmf#.#...#.......dlnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnf...#....#..#.#hnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnh#.#...........gnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnmd.#..........#hlnnnnnnnnnnnnnnnnnnnnnnnknnnnnnnnmg#............dlnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnng#.#..........fmnnnnnnnnnnnnnnnnnnnnnnnhcgnnnnnnnnme............agnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnmc..#......#..dlnnnnnnnnnnnnnnnnnnnnnnnha.ahnnnnnnnnld.#..........cmnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnni#.#.........bknnnnnnnnnnnnnnnnnnnnnnnha...ahnnnnnnnnkb...........#innnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnd..#........#gnnnnnnnnnnnnnnnnnnnnnnng#...#.#hnnnnnnnnh..........#.ennnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnla.#......#..dlnnnnnnnnnnnnnnnnnnnnnmha..#.##.bhnnnnnnnlc.........#.aknnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnj.........#.#innnnnnnnnnnnnnnnnnnnnnia.#.......ahnnnnnnni............innnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnd...........cmnnnnnnnnnnnnnnnnnnnnnha............hnnnnnnnc.........##dnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnmc..........#fnnnnnnnnnnnnnnnnnnnnnha....#...##...bgmnnnnnf##.........cmnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnk#..........aknnnnnnnnnnnnnnnnnnnnha..#.....#......cknnnnnka#.........aknnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnh...........cnnnnnnnnnnnnnnnnnnnni#..#.....#......ahmnnnnnnc...........innnnnnnnnnnnnn",
+"nnnnnnnnnnnnnng..........#ennnnnnnnnnnnnnnnnnnha.........#..#..#imnnnnnnne........#..gnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnne..........#hnnnnnnnnnnnnnnnnnnha.....#.........ahnnnnnnnnnh#.......#..ennnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnc..........#knnnnnnnnnnnnnnnnnha.#...##........ainnnnnnnnnnk#..........cnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnmb..........#lnnnnnnnnnnnnnnnnia.#.............#hnnnnnnnnnnnma..........bnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnma..........amnnnnnnnnnnnnnnnh#.............#.ainnnnnnnnnnnnna..........bnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnma..........amnnnnnnnnnnnnnnha.............#.#hnnnnnnnnnnnnnna..........bmnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnmb..........bmnnnnnnnnnnnnmha..............#.#hnnnnnnnnnnnnnna..........amnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnmb..........amnnnnnnnnnnnmia.##..#..........#.ahnnnnnnnnnnnnna..........bmnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnc..........alnnnnnnnnnnnha.##..##.............#hnnnnnnnnnnnla..........cmnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnd..........#jnnnnnnnnnnga..#...................ahnnnnnnnnnnj#..........dnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnne...........innnnnnnnnha.#....................#.ahmnnnnnnnnh.#.........ennnnnnnnnnnnnn",
+"nnnnnnnnnnnnnne.........#.hnnnnnnnnia.#...#...#.........#.....#.imnnnnnnng.#......#.#fnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnni....#..#.#.cmnnnnnnh#..#..#...#...#..............#hnnnnnnnb...........innnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnj#......#...aknnnnnkc.....#..##...#..#.............ahnnnnnka........#.#knnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnlb.#.........hnnnnnnga..#...##...#.##...............ahnnnnf.........#.bmnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnne.#.......#.clnnnnnnh#.#..##..#..#hha.............#.ahmnmb.........#.ennnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnni...........#hnnnnnnnh#...#..#..#hnnh#.#.............#ini#..#.....#..innnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnla......#....dlnnnnnnnhb....#..bhmnnnha.............#.bfc...#.....#.alnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnne#.#..#.....afnnnnnnnni#.....binnnnnnha#.........#................#ennnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnha.#....#..#.amnnnnnnnnh#...#hnnnnnnnnh..............#..........#.#hnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnb.#.....#....dmnnnnnnnnha.ainnnnnnnnnmi..........................dlnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnh#......#..#.afnnnnnnnnngdgmnnnnnnnnnnmha.#..#.................#.gnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnmc.#....#..#..#glnnnnnnnmkmnnnnnnnnnnnnnh#......................clnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnh#.............gmnnnnnnnnnnnnnnnnnnnnnnnha.#...................innnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnme..........##.#elnnnnnnnnnnnnnnnnnnnnnnnh#...................elnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnia...........#.#dknnnnnnnnnnnnnnnnnnnnnnmhb.............##.#alnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnmga..............bhlmnnnnnnnnnnnnnnnnnnnnng.#...........##.#bmnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnmc.......###...#..cimnnnnnnnnnnnnnnnnnnmic..........#......ajnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnkd........#........cfknnnnnnnnnnnnnnkfb#..........#........#hnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnic....##...........#bcehklmmnmljhfba.......................agnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnja#...............###.##aaabba#............................ahnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnhc..#..........................#.............##..........#.ahnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnib..##......................................##..........##.ahmnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnjc......................................................#.#emnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnjd#................####.....#.............##............#cjnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnmfa......................................aba.........a#bknnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnjd.................................#..elmj#.......#.clnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmgda..##................#..........cilnnnha.##..#.elnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnlgc#...#...##...........###..##dglnnnnnng#.##.#clnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnliea##....................behlnnnnnnnnnh#..#blnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkidca..............#cfilnnnnnnnnnnnnnib#cknnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmkigecbbbabcdefikmnnnnnnnnnnnnnnnnnhejnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmmmmnnnnnnnnnnnnnnnnnnnnnnnmmnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+"nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
+};
+
+// Table size
+
+static int numRows = 30;
+static int numCols = 10;
+
+// The program starts here.
+
+public static void main(String[] args)
+{
+ QApplication app = new QApplication( args );
+
+ QTable table = new QTable( numRows, numCols );
+
+ QHeader header = table.horizontalHeader();
+ header.setLabel( 0, "Tiny", 40 );
+ header.setLabel( 1, "Checkboxes" );
+ header.setLabel( 5, "Combos" );
+ header.setMovingEnabled(true);
+
+ QImage img = new QImage( qtlogo_xpm );
+ QPixmap pix = new QPixmap(img.scaleHeight( table.rowHeight(3) ));
+ table.setPixmap( 3, 2, pix );
+ table.setText( 3, 2, "A Pixmap" );
+
+ String[] comboEntries = { "one", "two", "three", "four" };
+
+ for ( int i = 0; i < numRows; ++i ){
+ QComboTableItem item = new QComboTableItem( table, comboEntries, false );
+ item.setCurrentItem( i % 4 );
+ table.setItem( i, 5, item );
+ }
+ for ( int j = 0; j < numRows; ++j )
+ table.setItem( j, 1, new QCheckTableItem( table, "Check me" ) );
+
+ app.setMainWidget( table );
+ table.show();
+ app.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/textedit/Main.java b/qtjava/javalib/examples/textedit/Main.java
new file mode 100644
index 00000000..c1597460
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/Main.java
@@ -0,0 +1,30 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+ TextEdit mw = new TextEdit();
+ mw.setCaption( "Richtext Editor" );
+ mw.resize( 640, 800 );
+ mw.show();
+ a.connect( a, Qt.SIGNAL(" lastWindowClosed()"), a, Qt.SLOT(" quit()") );
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/textedit/TextEdit.java b/qtjava/javalib/examples/textedit/TextEdit.java
new file mode 100644
index 00000000..c4adfa7a
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/TextEdit.java
@@ -0,0 +1,494 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.HashMap;
+
+class TextEdit extends QMainWindow
+{
+
+
+private QAction actionTextBold,
+ actionTextUnderline,
+ actionTextItalic,
+ actionTextColor,
+ actionAlignLeft,
+ actionAlignCenter,
+ actionAlignRight,
+ actionAlignJustify;
+ QComboBox comboStyle,
+ comboFont,
+ comboSize;
+private QTabWidget tabWidget;
+private HashMap filenames = new HashMap();
+
+
+
+TextEdit( )
+{
+ this(null, null);
+}
+
+TextEdit( QWidget parent, String name )
+{
+ super( parent, name );
+ setupFileActions();
+ setupEditActions();
+ setupTextActions();
+
+ tabWidget = new QTabWidget( this );
+ connect( tabWidget, SIGNAL(" currentChanged( QWidget )"),
+ this, SLOT(" editorChanged( QWidget )") );
+ setCentralWidget( tabWidget );
+
+ if ( qApp().args().length == 0 ) {
+ load( "example.html" );
+ } else {
+ for ( int i = 0; i < qApp().args().length; ++i )
+ load( qApp().args()[ i ] );
+ }
+}
+
+void setupFileActions()
+{
+ QToolBar tb = new QToolBar( this );
+ tb.setLabel( "File Actions" );
+ QPopupMenu menu = new QPopupMenu( this );
+ menuBar().insertItem( tr( "&File" ), menu );
+
+ QAction a;
+ a = new QAction( tr( "New" ), new QIconSet(new QPixmap( "filenew.xpm" )), tr( "&New..." ), new QKeySequence(CTRL + Key_N), this, "fileNew" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" fileNew()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ a = new QAction( tr( "Open" ), new QIconSet(new QPixmap( "fileopen.xpm" )), tr( "&Open..." ), new QKeySequence(CTRL + Key_O), this, "fileOpen" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" fileOpen()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ menu.insertSeparator();
+ a = new QAction( tr( "Save" ), new QIconSet(new QPixmap( "filesave.xpm" )), tr( "&Save..." ), new QKeySequence(CTRL + Key_S), this, "fileSave" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" fileSave()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ a = new QAction( tr( "Save As" ), new QIconSet(new QPixmap()), tr( "Save &As..." ), new QKeySequence(0), this, "fileSaveAs" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" fileSaveAs()") );
+ a.addTo( menu );
+ menu.insertSeparator();
+ a = new QAction( tr( "Print" ), new QIconSet(new QPixmap( "fileprint.xpm" )), tr( "&Print..." ), new QKeySequence(CTRL + Key_P), this, "filePrint" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" filePrint()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ a = new QAction( tr( "Close" ), new QIconSet(new QPixmap()), tr( "&Close" ), new QKeySequence(0), this, "fileClose" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" fileClose()") );
+ a.addTo( menu );
+ a = new QAction( tr( "Exit" ), new QIconSet(new QPixmap()), tr( "E&xit" ), new QKeySequence(0), this, "fileExit" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" fileExit()") );
+ a.addTo( menu );
+}
+
+void setupEditActions()
+{
+ QToolBar tb = new QToolBar( this );
+ tb.setLabel( "Edit Actions" );
+ QPopupMenu menu = new QPopupMenu( this );
+ menuBar().insertItem( tr( "&Edit" ), menu );
+
+ QAction a;
+ a = new QAction( tr( "Undo" ), new QIconSet(new QPixmap( "editundo.xpm" )), tr( "&Undo" ), new QKeySequence(CTRL + Key_Z), this, "editUndo" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" editUndo()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ a = new QAction( tr( "Redo" ), new QIconSet(new QPixmap( "editredo.xpm" )), tr( "&Redo" ), new QKeySequence(CTRL + Key_Y), this, "editRedo" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" editRedo()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ menu.insertSeparator();
+ a = new QAction( tr( "Copy" ), new QIconSet(new QPixmap( "editcopy.xpm" )), tr( "&Copy" ), new QKeySequence(CTRL + Key_C), this, "editCopy" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" editCopy()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ a = new QAction( tr( "Cut" ), new QIconSet(new QPixmap( "editcut.xpm" )), tr( "Cu&t" ), new QKeySequence(CTRL + Key_X), this, "editCut" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" editCut()") );
+ a.addTo( tb );
+ a.addTo( menu );
+ a = new QAction( tr( "Paste" ), new QIconSet(new QPixmap( "editpaste.xpm" )), tr( "&Paste" ), new QKeySequence(CTRL + Key_V), this, "editPaste" );
+ connect( a, SIGNAL(" activated()"), this, SLOT(" editPaste()") );
+ a.addTo( tb );
+ a.addTo( menu );
+}
+
+void setupTextActions()
+{
+ QToolBar tb = new QToolBar( this );
+ tb.setLabel( "Format Actions" );
+ QPopupMenu menu = new QPopupMenu( this );
+ menuBar().insertItem( tr( "F&ormat" ), menu );
+
+ comboStyle = new QComboBox( false, tb );
+ comboStyle.insertItem( "Standard" );
+ comboStyle.insertItem( "Bullet List (Disc)" );
+ comboStyle.insertItem( "Bullet List (Circle)" );
+ comboStyle.insertItem( "Bullet List (Square)" );
+ comboStyle.insertItem( "Ordered List (Decimal)" );
+ comboStyle.insertItem( "Ordered List (Alpha lower)" );
+ comboStyle.insertItem( "Ordered List (Alpha upper)" );
+ connect( comboStyle, SIGNAL(" activated( int )"),
+ this, SLOT(" textStyle( int )") );
+
+ comboFont = new QComboBox( true, tb );
+ QFontDatabase db = new QFontDatabase();
+ comboFont.insertStringList( (String[]) db.families().toArray(new String[0]) );
+ connect( comboFont, SIGNAL(" activated( String )"),
+ this, SLOT(" textFamily( String )") );
+ comboFont.lineEdit().setText( QApplication.font().family() );
+
+ comboSize = new QComboBox( true, tb );
+ int[] sizes = db.standardSizes();
+ for (int i = 0; i < sizes.length; i++ )
+ comboSize.insertItem( Integer.toString(sizes[i]) );
+ connect( comboSize, SIGNAL(" activated( String )"),
+ this, SLOT(" textSize( String )") );
+ comboSize.lineEdit().setText( Integer.toString( QApplication.font().pointSize() ) );
+
+ actionTextBold = new QAction( tr( "Bold" ), new QIconSet(new QPixmap( "textbold.xpm" )), tr( "&Bold" ), new QKeySequence(CTRL + Key_B), this, "textBold" );
+ connect( actionTextBold, SIGNAL(" activated()"), this, SLOT(" textBold()") );
+ actionTextBold.addTo( tb );
+ actionTextBold.addTo( menu );
+ actionTextBold.setToggleAction( true );
+ actionTextItalic = new QAction( tr( "Italic" ), new QIconSet(new QPixmap( "textitalic.xpm" )), tr( "&Italic" ), new QKeySequence(CTRL + Key_I), this, "textItalic" );
+ connect( actionTextItalic, SIGNAL(" activated()"), this, SLOT(" textItalic()") );
+ actionTextItalic.addTo( tb );
+ actionTextItalic.addTo( menu );
+ actionTextItalic.setToggleAction( true );
+ actionTextUnderline = new QAction( tr( "Underline" ), new QIconSet(new QPixmap( "textunder.xpm" )), tr( "&Underline" ), new QKeySequence(CTRL + Key_U), this, "textUnderline" );
+ connect( actionTextUnderline, SIGNAL(" activated()"), this, SLOT(" textUnderline()") );
+ actionTextUnderline.addTo( tb );
+ actionTextUnderline.addTo( menu );
+ actionTextUnderline.setToggleAction( true );
+ menu.insertSeparator();
+
+ QActionGroup grp = new QActionGroup( this );
+ grp.setExclusive( true );
+ connect( grp, SIGNAL(" selected( QAction )"), this, SLOT(" textAlign( QAction )") );
+
+ actionAlignLeft = new QAction( tr( "Left" ), new QIconSet(new QPixmap( "textleft.xpm" )), tr( "&Left" ), new QKeySequence(CTRL + Key_L), grp, "textLeft" );
+ actionAlignLeft.addTo( tb );
+ actionAlignLeft.addTo( menu );
+ actionAlignLeft.setToggleAction( true );
+ actionAlignCenter = new QAction( tr( "Center" ), new QIconSet(new QPixmap( "textcenter.xpm" )), tr( "C&enter" ), new QKeySequence(CTRL + Key_E), grp, "textCenter" );
+ actionAlignCenter.addTo( tb );
+ actionAlignCenter.addTo( menu );
+ actionAlignCenter.setToggleAction( true );
+ actionAlignRight = new QAction( tr( "Right" ), new QIconSet(new QPixmap( "textright.xpm" )), tr( "&Right" ), new QKeySequence(CTRL + Key_R), grp, "textRight" );
+ actionAlignRight.addTo( tb );
+ actionAlignRight.addTo( menu );
+ actionAlignRight.setToggleAction( true );
+ actionAlignJustify = new QAction( tr( "Justify" ), new QIconSet(new QPixmap( "textjustify.xpm" )), tr( "&Justify" ), new QKeySequence(CTRL + Key_J), grp, "textjustify" );
+ actionAlignJustify.addTo( tb );
+ actionAlignJustify.addTo( menu );
+ actionAlignJustify.setToggleAction( true );
+
+ menu.insertSeparator();
+
+ QPixmap pix = new QPixmap( 16, 16 );
+ pix.fill( black() );
+ actionTextColor = new QAction( tr( "Color" ), new QIconSet(pix), tr( "&Color..." ), new QKeySequence(0), this, "textColor" );
+ connect( actionTextColor, SIGNAL(" activated()"), this, SLOT(" textColor()") );
+ actionTextColor.addTo( tb );
+ actionTextColor.addTo( menu );
+}
+
+void load( String f )
+{
+ if ( !QFile.exists( f ) )
+ return;
+ QTextEdit edit = new QTextEdit( tabWidget );
+ doConnections( edit );
+ tabWidget.addTab( edit, new QFileInfo( f ).fileName() );
+ QFile file = new QFile( f );
+ if ( !file.open( QIODevice.IO_ReadOnly ) )
+ return;
+ QTextStream ts = new QTextStream( file );
+ edit.setText( ts.read() );
+ tabWidget.showPage( edit );
+ edit.viewport().setFocus();
+ filenames.put( edit, f );
+}
+
+QTextEdit currentEditor()
+{
+ if ( tabWidget.currentPage() != null &&
+ tabWidget.currentPage().inherits( "QTextEdit" ) )
+ return (QTextEdit)tabWidget.currentPage();
+ return null;
+}
+
+void doConnections( QTextEdit e )
+{
+ connect( e, SIGNAL(" currentFontChanged( QFont )"),
+ this, SLOT(" fontChanged( QFont )") );
+ connect( e, SIGNAL(" currentColorChanged( QColor )"),
+ this, SLOT(" colorChanged( QColor )") );
+ connect( e, SIGNAL(" currentAlignmentChanged( int )"),
+ this, SLOT(" alignmentChanged( int )") );
+}
+
+void fileNew()
+{
+ QTextEdit edit = new QTextEdit( tabWidget );
+ edit.setTextFormat( RichText );
+ doConnections( edit );
+ tabWidget.addTab( edit, tr( "noname" ) );
+ tabWidget.showPage( edit );
+ edit.viewport().setFocus();
+}
+
+void fileOpen()
+{
+ String fn = QFileDialog.getOpenFileName( "", tr( "HTML-Files (*.htm *.html);;All Files (*)" ), this );
+ if ( !fn.equals("") )
+ load( fn );
+}
+
+void fileSave()
+{
+ if ( currentEditor() == null )
+ return;
+ String fn;
+ if ( !filenames.containsKey( currentEditor() ) ) {
+ fileSaveAs();
+ } else {
+ QFile file = new QFile( (String) filenames.get( currentEditor() ) );
+ if ( !file.open( QIODevice.IO_WriteOnly ) )
+ return;
+ QTextStream ts = new QTextStream( file );
+ ts.writeRawBytes(currentEditor().text(), currentEditor().text().length());
+ }
+}
+
+void fileSaveAs()
+{
+ if ( currentEditor() == null )
+ return;
+ String fn = QFileDialog.getSaveFileName( "", tr( "HTML-Files (*.htm *.html);;All Files (*)" ), this );
+ if ( !fn.equals("") ) {
+ filenames.put( currentEditor(), fn );
+ fileSave();
+ tabWidget.setTabLabel( currentEditor(), new QFileInfo( fn ).fileName() );
+ }
+}
+
+void filePrint()
+{
+ if ( currentEditor() == null )
+ return;
+ QPrinter printer = new QPrinter();
+ printer.setFullPage(true);
+ if ( printer.setup( this ) ) {
+ QPainter p = new QPainter( printer );
+ // Check that there is a valid device to print to.
+ if ( p.device() == null ) return;
+ QPaintDeviceMetrics metrics = new QPaintDeviceMetrics( p.device() );
+ int dpix = metrics.logicalDpiX();
+ int dpiy = metrics.logicalDpiY();
+ int margin = 72; // pt
+ QRect body = new QRect( margin * dpix / 72, margin * dpiy / 72,
+ metrics.width() - margin * dpix / 72 * 2,
+ metrics.height() - margin * dpiy / 72 * 2 );
+ QFont font = new QFont( "times", 10 );
+ QSimpleRichText richText = new QSimpleRichText( currentEditor().text(), font, currentEditor().context(), currentEditor().styleSheet(),
+ currentEditor().mimeSourceFactory(), body.height() );
+ richText.setWidth( p, body.width() );
+ QRect view = new QRect( body.topLeft(), body.bottomRight() );
+ int page = 1;
+ do {
+ richText.draw( p, body.left(), body.top(), view, colorGroup() );
+ view.moveBy( 0, body.height() );
+ p.translate( 0 , -body.height() );
+ p.setFont( font );
+ p.drawText( view.right() - p.fontMetrics().width( Integer.toString(page) ),
+ view.bottom() + p.fontMetrics().ascent() + 5, Integer.toString(page) );
+ if ( view.top() >= richText.height() )
+ break;
+ printer.newPage();
+ page++;
+ } while (true);
+ }
+}
+
+void fileClose()
+{
+// delete currentEditor();
+ if ( currentEditor() != null )
+ currentEditor().viewport().setFocus();
+}
+
+void fileExit()
+{
+ qApp().quit();
+}
+
+void editUndo()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().undo();
+}
+
+void editRedo()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().redo();
+}
+
+void editCut()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().cut();
+}
+
+void editCopy()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().copy();
+}
+
+void editPaste()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().paste();
+}
+
+void textBold()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().setBold( actionTextBold.isOn() );
+}
+
+void textUnderline()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().setUnderline( actionTextUnderline.isOn() );
+}
+
+void textItalic()
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().setItalic( actionTextItalic.isOn() );
+}
+
+void textFamily( String f )
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().setFamily( f );
+ currentEditor().viewport().setFocus();
+}
+
+void textSize( String p )
+{
+ if ( currentEditor() == null )
+ return;
+ currentEditor().setPointSize( Integer.parseInt(p) );
+ currentEditor().viewport().setFocus();
+}
+
+void textStyle( int i )
+{
+ if ( currentEditor() == null )
+ return;
+ if ( i == 0 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayBlock, QStyleSheetItem.ListDisc );
+ else if ( i == 1 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayListItem, QStyleSheetItem.ListDisc );
+ else if ( i == 2 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayListItem, QStyleSheetItem.ListCircle );
+ else if ( i == 3 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayListItem, QStyleSheetItem.ListSquare );
+ else if ( i == 4 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayListItem, QStyleSheetItem.ListDecimal );
+ else if ( i == 5 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayListItem, QStyleSheetItem.ListLowerAlpha );
+ else if ( i == 6 )
+ currentEditor().setParagType( QStyleSheetItem.DisplayListItem, QStyleSheetItem.ListUpperAlpha );
+ currentEditor().viewport().setFocus();
+}
+
+void textColor()
+{
+ if ( currentEditor() == null )
+ return;
+ QColor col = QColorDialog.getColor( currentEditor().color(), this );
+ if ( !col.isValid() )
+ return;
+ currentEditor().setColor( col );
+ QPixmap pix = new QPixmap( 16, 16 );
+ pix.fill( black() );
+ actionTextColor.setIconSet( new QIconSet(pix) );
+}
+
+void textAlign( QAction a )
+{
+ if ( currentEditor() == null )
+ return;
+ if ( a == actionAlignLeft )
+ currentEditor().setAlignment( AlignLeft );
+ else if ( a == actionAlignCenter )
+ currentEditor().setAlignment( AlignHCenter );
+ else if ( a == actionAlignRight )
+ currentEditor().setAlignment( AlignRight );
+ else if ( a == actionAlignJustify )
+ currentEditor().setAlignment( AlignJustify );
+}
+
+void fontChanged( QFont f )
+{
+ comboFont.lineEdit().setText( f.family() );
+ comboSize.lineEdit().setText( Integer.toString( f.pointSize() ) );
+ actionTextBold.setOn( f.bold() );
+ actionTextItalic.setOn( f.italic() );
+ actionTextUnderline.setOn( f.underline() );
+}
+
+void colorChanged( QColor c )
+{
+ QPixmap pix = new QPixmap( 16, 16 );
+ pix.fill( c );
+ actionTextColor.setIconSet( new QIconSet(pix) );
+}
+
+void alignmentChanged( int a )
+{
+ if ( ( a == AlignAuto ) || ( a & AlignLeft ) != 0)
+ actionAlignLeft.setOn( true );
+ else if ( ( a & AlignHCenter ) != 0 )
+ actionAlignCenter.setOn( true );
+ else if ( ( a & AlignRight ) != 0 )
+ actionAlignRight.setOn( true );
+ else if ( ( a & AlignJustify ) != 0 )
+ actionAlignJustify.setOn( true );
+}
+
+void editorChanged( QWidget w )
+{
+ if ( currentEditor() == null )
+ return;
+ fontChanged( currentEditor().font() );
+ colorChanged( currentEditor().color() );
+ alignmentChanged( currentEditor().alignment() );
+}
+}
diff --git a/qtjava/javalib/examples/textedit/editcopy.xpm b/qtjava/javalib/examples/textedit/editcopy.xpm
new file mode 100644
index 00000000..cc6fb7a6
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/editcopy.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c #8b8bfd",
+"X c #3c3cfd",
+"o c #000082",
+"O c Gray0",
+"+ c None",
+"@ c Gray0",
+"# c Gray0",
+/* pixels */
+"++++++++++++++++++++++",
+"++++++++++++++++++++++",
+"OOOOOOOO++++++++++++++",
+"O OO+++++++++++++",
+"O OOOO O O++++++++++++",
+"O O O+++++++++++",
+"O OOOO Ooooooooo++++++",
+"O Oo oo+++++",
+"O OOOOO o OOOO oXo++++",
+"O o o.Xo+++",
+"O OOOOO o OOOO o .Xo++",
+"O o oooooo+",
+"O OOOOO o OOOO o+",
+"O o o+",
+"O OOOOO o OOOOOOOOO o+",
+"O o o+",
+"OOOOOOOOo OOOOOOOOO o+",
+"++++++++o o+",
+"++++++++o OOOOOOOOO o+",
+"++++++++o o+",
+"++++++++ooooooooooooo+",
+"++++++++++++++++++++++"
+};
diff --git a/qtjava/javalib/examples/textedit/editcut.xpm b/qtjava/javalib/examples/textedit/editcut.xpm
new file mode 100644
index 00000000..2391adda
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/editcut.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 4 1",
+" c Gray100",
+". c #000082",
+"X c Gray0",
+"o c None",
+/* pixels */
+"oooooooooooooooooooooo",
+"oooooooXoooooXoooooooo",
+"oooooooXoooooXoooooooo",
+"oooooooXoooooXoooooooo",
+"oooooooXooooXXoooooooo",
+"oooooooXXoooXooooooooo",
+"ooooooooXoooXooooooooo",
+"ooooooooXXoXXooooooooo",
+"oooooooooXXXoooooooooo",
+"oooooooooXXXoooooooooo",
+"ooooooooooXooooooooooo",
+"ooooooooo.X.oooooooooo",
+"oooooooo..o...oooooooo",
+"ooooooo.o.o.oo.ooooooo",
+"oooooo.oo.o.ooo.oooooo",
+"ooooo.ooo.o.oooo.ooooo",
+"oooo.oooo.o.oooo.ooooo",
+"oooo.oooo.oo.ooo.ooooo",
+"oooo.oooo.oo.oo.oooooo",
+"oooo.ooo.oooo..ooooooo",
+"ooooo...oooooooooooooo",
+"oooooooooooooooooooooo"
+};
diff --git a/qtjava/javalib/examples/textedit/editpaste.xpm b/qtjava/javalib/examples/textedit/editpaste.xpm
new file mode 100644
index 00000000..3f775920
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/editpaste.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c Yellow",
+"X c #c6c3c6",
+"o c #848284",
+"O c #848200",
+"+ c #000084",
+"@ c Gray0",
+"# c None",
+/* pixels */
+"######################",
+"#######@@@@@##########",
+"##@@@@@@...@@@@@@#####",
+"#@@@@@@.....@@@@@@####",
+"@@oOo@@.@@@.@@oOo@@###",
+"@oOo@XXXXXXXXX@oOo@###",
+"@OoO@XXXXXXXXX@OoO@###",
+"@oOo@@@@@@@@@@@oOo@###",
+"@OoOoOoOoOoOoOoOoO@###",
+"@oOoOoOoOoOoOoOoOo@###",
+"@OoOoOoO++++++++++@###",
+"@oOoOoOo+ + +###",
+"@OoOoOoO+ +++++ + +##",
+"@oOoOoOo+ + +#",
+"@OoOoOoO+ +++++ + +",
+"@oOoOoOo+ ++++++",
+"@OoOoOoO+ +++++ +",
+"@oOoOoOo+ +",
+"@OoOoOoO+ ++++++++++ +",
+"#@@@@@@@+ +",
+"########++++++++++++++",
+"######################"
+};
diff --git a/qtjava/javalib/examples/textedit/editredo.xpm b/qtjava/javalib/examples/textedit/editredo.xpm
new file mode 100644
index 00000000..46dc0331
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/editredo.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c #848284",
+"X c #000084",
+"o c Gray0",
+"O c None",
+"+ c Gray0",
+"@ c Gray0",
+"# c Gray0",
+/* pixels */
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOO.XXXXXXOOOOOOOOOOO",
+"OOOXXXXXXXXXXOOOOOOXOO",
+"OO.XXOOOOOOXXXXOOOXXOO",
+"OOXXOOOOOOOOOXXXOXXXOO",
+"OOXXOOOOOOOOOOXXXXXXOO",
+"OOXXOOOOOOOOOOOXXXXXOO",
+"OOXXOOOOOOOOOOXXXXXXOO",
+"OOXXOOOOOOOOOXXXXXXXOO",
+"OO.XXOOOOOOOXXXXXXXXOO",
+"OOOXXX.OOOOOOOOOOOOOOO",
+"OOOOXXXOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO"
+};
diff --git a/qtjava/javalib/examples/textedit/editundo.xpm b/qtjava/javalib/examples/textedit/editundo.xpm
new file mode 100644
index 00000000..229c1636
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/editundo.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c #848284",
+"X c #000084",
+"o c Gray0",
+"O c None",
+"+ c Gray0",
+"@ c Gray0",
+"# c Gray0",
+/* pixels */
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOXXXXXX.OOOO",
+"OOXOOOOOOXXXXXXXXXXOOO",
+"OOXXOOOXXXXOOOOOOXX.OO",
+"OOXXXOXXXOOOOOOOOOXXOO",
+"OOXXXXXXOOOOOOOOOOXXOO",
+"OOXXXXXOOOOOOOOOOOXXOO",
+"OOXXXXXXOOOOOOOOOOXXOO",
+"OOXXXXXXXOOOOOOOOOXXOO",
+"OOXXXXXXXXOOOOOOOXX.OO",
+"OOOOOOOOOOOOOOO.XXXOOO",
+"OOOOOOOOOOOOOOOXXXOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO"
+};
diff --git a/qtjava/javalib/examples/textedit/example.html b/qtjava/javalib/examples/textedit/example.html
new file mode 100644
index 00000000..56023031
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/example.html
@@ -0,0 +1,340 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>
+<title>Qt Toolkit - QLabel Class</title><style type="text/css"><!--
+h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
+a:link { color: #004faf; text-decoration: none }
+a:visited { color: #672967; text-decoration: none }body { background: white; color: black; }
+--></style>
+</head><body bgcolor="#ffffff">
+
+<h1 align=center>QLabel Class Reference</h1><br clear="all">
+<p>
+The QLabel widget provides a static information display
+<a href="#details">More...</a>
+<p>
+<code>#include &lt;<a href="qlabel-h.html">qlabel.h</a>&gt;</code>
+<p>
+Inherits <a href="qframe.html">QFrame</a>.
+<p><a href="qlabel-members.html">List of all member functions.</a>
+<h2>Public Members</h2>
+<ul>
+<li><div class="fn"><a href="#39107d"><b>QLabel</b></a> ( QWidget * parent, const char * name=0, WFlags f=0 ) </div>
+<li><div class="fn"><a href="#2bafbb"><b>QLabel</b></a> ( const QString &amp; text, QWidget * parent, const char * name=0, WFlags f=0 ) </div>
+<li><div class="fn"><a href="#5514c7"><b>QLabel</b></a> ( QWidget * buddy, const QString &amp;, QWidget * parent, const char * name=0, WFlags f=0 ) </div>
+<li><div class="fn"><a href="#9958af"><b>~QLabel</b></a> () </div>
+<li><div class="fn">QString <a href="#72cf09"><b>text</b></a> () const</div>
+<li><div class="fn">QPixmap* <a href="#101ecb"><b>pixmap</b></a> () const</div>
+<li><div class="fn">QMovie* <a href="#7dcdfe"><b>movie</b></a> () const</div>
+<li><div class="fn">TextFormat <a href="#0b92ed"><b>textFormat</b></a> () const</div>
+<li><div class="fn">void <a href="#5de3f9"><b>setTextFormat</b></a> ( TextFormat ) </div>
+<li><div class="fn">int <a href="#2fcaa3"><b>alignment</b></a> () const</div>
+<li><div class="fn">virtual void <a href="#1f406e"><b>setAlignment</b></a> ( int ) </div>
+<li><div class="fn">int <a href="#e3c907"><b>indent</b></a> () const</div>
+<li><div class="fn">void <a href="#ed9b8b"><b>setIndent</b></a> ( int ) </div>
+<li><div class="fn">bool autoResize () const <em>(obsolete)</em></div>
+<li><div class="fn">virtual void setAutoResize ( bool ) <em>(obsolete)</em></div>
+<li><div class="fn">bool <a href="#7e1f73"><b>hasScaledContents</b></a> () const</div>
+<li><div class="fn">void <a href="#e9e3cf"><b>setScaledContents</b></a> ( bool ) </div>
+<li><div class="fn">virtual void <a href="#191701"><b>setBuddy</b></a> ( QWidget * ) </div>
+<li><div class="fn">QWidget* <a href="#123954"><b>buddy</b></a> () const</div>
+</ul>
+<h2>Public Slots</h2>
+<ul>
+<li><div class="fn">virtual void <a href="#dffb43"><b>setText</b></a> ( const QString &amp; ) </div>
+<li><div class="fn">virtual void <a href="#f3f301"><b>setPixmap</b></a> ( const QPixmap &amp; ) </div>
+<li><div class="fn">virtual void <a href="#60de9f"><b>setMovie</b></a> ( const QMovie &amp; ) </div>
+<li><div class="fn">virtual void <a href="#301e3c"><b>setNum</b></a> ( int ) </div>
+<li><div class="fn">virtual void <a href="#1a8f6a"><b>setNum</b></a> ( double ) </div>
+<li><div class="fn">void <a href="#be73f3"><b>clear</b></a> () </div>
+</ul>
+<h2>Protected Members</h2>
+<ul>
+<li><div class="fn">virtual void <a href="#fac264"><b>drawContents</b></a> ( QPainter * ) </div>
+<li><div class="fn">virtual void <a href="#479dd2"><b>drawContentsMask</b></a> ( QPainter * ) </div>
+</ul>
+<h2>Properties</h2>
+<table border=1 cellpadding=3 cellspacing=0>
+<tr><th>Type<th>Name<th>READ<th>WRITE<th>Options
+<tr><td>QString<td>text<td>text<td>setText<td>&nbsp;
+<tr><td>TextFormat<td>textFormat<td>textFormat<td>setTextFormat<td>&nbsp;
+<tr><td>QPixmap<td>pixmap<td>pixmap<td>setPixmap<td>&nbsp;
+<tr><td>bool<td>scaledContents<td>hasScaledContents<td>setScaledContents<td>&nbsp;
+<tr><td>Alignment<td>alignment<td>alignment<td>setAlignment<td>&nbsp;
+<tr><td>int<td>indent<td>indent<td>setIndent<td>&nbsp;
+</table>
+<p>
+<hr><h2><a name="details"></a>Detailed Description</h2>
+The QLabel widget provides a static information display
+<p>
+QLabel is used for displaying information in the form of text or
+image to the user. No user interaction functionality is
+provided. The visual appearance of the label can be configured in
+various ways, and it can be used for specifying a focus accelerator
+key for another widget.
+<p>A QLabel can contain any of the following content types:
+<ul>
+<li> A plain text: set by passing a <a href="qstring.html">QString</a> to <a href="#dffb43">setText</a>().
+<li> A rich text: set by passing a QString that contains a rich text to setText().
+<li> A pixmap: set by passing a <a href="qpixmap.html">QPixmap</a> to <a href="#f3f301">setPixmap</a>().
+<li> A movie: set by passing a <a href="qmovie.html">QMovie</a> to <a href="#60de9f">setMovie</a>().
+<li> A number: set by passing an <em>int</em> or a <em>double</em> to <a href="#1a8f6a">setNum</a>(), which converts the number to plain text.
+<li> Nothing: The same as an empty plain text. This is the default. Set by <a href="#be73f3">clear</a>().
+</ul>
+<p>When the content is changed using any of these functions, any
+previous content is cleared.
+<p>The look of a QLabel can be tuned in several ways. All the settings
+of <a href="qframe.html">QFrame</a> are available for specifying a widget frame. The
+positioning of the content within the QLabel widget area can be
+tuned with <a href="#1f406e">setAlignment</a>() and <a href="#ed9b8b">setIndent</a>(). For example, this code
+sets up a sunken panel with a two-line text in the bottom right
+corner (both lines being flush with the right side of the label):
+<p><pre> <a href="qlabel.html">QLabel</a> *label = new <a href="qlabel.html">QLabel</a>;
+ label-&gt;<a href="qframe.html#c0d758">setFrameStyle</a>( QFrame::Panel | QFrame::Sunken );
+ label-&gt;<a href="#dffb43">setText</a>( "first line\nsecond line" );
+ label-&gt;<a href="#1f406e">setAlignment</a>( AlignBottom | AlignRight );
+</pre>
+<p>A QLabel is often used as a label for another, interactive
+widget. For this use, QLabel provides a handy mechanism for adding
+an accelerator key (see <a href="qaccel.html">QAccel</a>) that will set the keyboard focus to
+the other widget (called the QLabel's "buddy"). Example:
+<p><pre> <a href="qlineedit.html">QLineEdit</a>* phoneEdit = new <a href="qlineedit.html">QLineEdit</a>( this, "phoneEdit" );
+ <a href="qlabel.html">QLabel</a>* phoneLabel = new <a href="qlabel.html">QLabel</a>( phoneEdit, "&amp;Phone:", this, "phoneLabel" );
+</pre>
+<p>In this example, keyboard focus is transferred to the label's buddy
+(the <a href="qlineedit.html">QLineEdit</a>) when the user presses <dfn>Alt-P.</dfn> You can also
+use the <a href="#191701">setBuddy</a>() function to accomplish the same.
+<p>
+<p>See also <a href="qlineedit.html">QLineEdit</a>, <a href="qtextview.html">QTextView</a>, <a href="qpixmap.html">QPixmap</a>, <a href="qmovie.html">QMovie</a> and <a href="guibooks.html#fowler">GUI Design Handbook: Label</a>
+<p>Examples:
+ <a href="cursor-cursor-cpp.html#QLabel">cursor/cursor.cpp</a>
+ <a href="layout-layout-cpp.html#QLabel">layout/layout.cpp</a>
+ <a href="popup-popup-cpp.html#QLabel">popup/popup.cpp</a>
+ <a href="menu-menu-cpp.html#QLabel">menu/menu.cpp</a>
+ <a href="progress-progress-cpp.html#QLabel">progress/progress.cpp</a>
+ <a href="qmag-qmag-cpp.html#QLabel">qmag/qmag.cpp</a>
+ <a href="movies-main-cpp.html#QLabel">movies/main.cpp</a>
+ <a href="customlayout-main-cpp.html#QLabel">customlayout/main.cpp</a>
+
+<hr><h2>Member Function Documentation</h2>
+<h3 class="fn"><a name="5514c7"></a>QLabel::QLabel ( <a href="qwidget.html">QWidget</a> * buddy, const <a href="qstring.html">QString</a> &amp; text, <a href="qwidget.html">QWidget</a> * parent, const char * name=0, WFlags f=0 )</h3>
+<p>Constructs a label with a text and a buddy.
+<p>The <em>text</em> is set with <a href="#dffb43">setText</a>(). The <em>buddy</em> is set with <a href="#191701">setBuddy</a>().
+<p>The <em>parent, name</em> and <em>f</em> arguments are passed to the <a href="qframe.html">QFrame</a>
+constructor.
+<p>See also <a href="#dffb43">setText</a>(), <a href="#191701">setBuddy</a>(), <a href="#1f406e">setAlignment</a>(), <a href="qframe.html#c0d758">setFrameStyle</a>() and <a href="#ed9b8b">setIndent</a>().
+<h3 class="fn"><a name="39107d"></a>QLabel::QLabel ( <a href="qwidget.html">QWidget</a> * parent, const char * name=0, WFlags f=0 )</h3>
+<p>Constructs an empty label.
+<p>The <em>parent, name</em> and <em>f</em> arguments are passed to the <a href="qframe.html">QFrame</a>
+constructor.
+<p>See also <a href="#1f406e">setAlignment</a>(), <a href="qframe.html#c0d758">setFrameStyle</a>() and <a href="#ed9b8b">setIndent</a>().
+<h3 class="fn"><a name="2bafbb"></a>QLabel::QLabel ( const <a href="qstring.html">QString</a> &amp; text, <a href="qwidget.html">QWidget</a> * parent, const char * name=0, WFlags f=0 )</h3>
+<p>Constructs a label with a text. The <em>text</em> is set with <a href="#dffb43">setText</a>().
+<p>The <em>parent, name</em> and <em>f</em> arguments are passed to the <a href="qframe.html">QFrame</a>
+constructor.
+<p>See also <a href="#dffb43">setText</a>(), <a href="#1f406e">setAlignment</a>(), <a href="qframe.html#c0d758">setFrameStyle</a>() and <a href="#ed9b8b">setIndent</a>().
+<h3 class="fn"><a name="9958af"></a>QLabel::~QLabel ()</h3>
+<p>Destructs the label.
+<h3 class="fn">int <a name="2fcaa3"></a>QLabel::alignment () const</h3>
+<p>Returns the alignment setting.
+<p>See also <a href="#1f406e">setAlignment</a>().
+<h3 class="fn">bool <a name="75b2a1"></a>QLabel::autoResize () const</h3>
+<p><b>This function is obsolete.</b> It is provided to keep old source working, and will probably be removed in a future version of Qt. We strongly advise against using it in new code.<p>
+<p>Returns TRUE if auto-resizing is enabled, or FALSE if auto-resizing
+is disabled.
+<p>Auto-resizing is disabled by default.
+<p>See also <a href="#c0e104">setAutoResize</a>().
+<h3 class="fn"><a href="qwidget.html">QWidget</a> * <a name="123954"></a>QLabel::buddy () const</h3>
+<p>Returns the buddy of this label, or 0 if no buddy is currently set.
+<p>See also <a href="#191701">setBuddy</a>().
+<h3 class="fn">void <a name="be73f3"></a>QLabel::clear () <code>[slot]</code></h3>
+<p>Clears any label contents. Equivalent with <a href="#dffb43">setText</a>( "" ).
+<h3 class="fn">void <a name="fac264"></a>QLabel::drawContents ( <a href="qpainter.html">QPainter</a> * p ) <code>[virtual protected]</code></h3>
+<p>Draws the label contents using the painter <em>p.</em>
+<p>Reimplemented from <a href="qframe.html#99e687">QFrame.</a>
+<h3 class="fn">void <a name="479dd2"></a>QLabel::drawContentsMask ( <a href="qpainter.html">QPainter</a> * p ) <code>[virtual protected]</code></h3>
+<p>Draws the label contents mask using the painter <em>p.</em>
+Used only in transparent mode.
+<p>See also <a href="qwidget.html#c7a335">QWidget::setAutoMask</a>();.
+<p>Reimplemented from <a href="qframe.html#4cbf11">QFrame.</a>
+<h3 class="fn">void <a name="0435a2"></a>QLabel::fontChange ( const <a href="qfont.html">QFont</a> &amp; ) <code>[virtual protected]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Reimplemented from <a href="qwidget.html#570a8f">QWidget.</a>
+<h3 class="fn">bool <a name="7e1f73"></a>QLabel::hasScaledContents () const</h3>
+<p>Returns whether the label will scale its contents to fill all
+available space.
+<p>See also <a href="#e9e3cf">setScaledContents</a>().
+<h3 class="fn">int <a name="dae451"></a>QLabel::heightForWidth ( int w ) const <code>[virtual]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Reimplemented from <a href="qwidget.html#2e8476">QWidget.</a>
+<h3 class="fn">int <a name="e3c907"></a>QLabel::indent () const</h3>
+<p>Returns the indent of the label.
+<p>See also <a href="#ed9b8b">setIndent</a>().
+<h3 class="fn"><a href="qsize.html">QSize</a> <a name="53c8c7"></a>QLabel::minimumSizeHint () const <code>[virtual]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Reimplemented from <a href="qwidget.html#3f0fc2">QWidget.</a>
+<h3 class="fn"><a href="qmovie.html">QMovie</a>* <a name="7dcdfe"></a>QLabel::movie () const</h3>
+<p>If the label contains a movie, returns a pointer to it. Otherwise,
+returns 0.
+<p>See also <a href="#60de9f">setMovie</a>().
+<h3 class="fn"><a href="qpixmap.html">QPixmap</a> * <a name="101ecb"></a>QLabel::pixmap () const</h3>
+<p>If the label contains a pixmap, returns a pointer to it. Otherwise,
+returns 0.
+<p>See also <a href="#f3f301">setPixmap</a>().
+<h3 class="fn">void <a name="3cb6e7"></a>QLabel::resizeEvent ( <a href="qresizeevent.html">QResizeEvent</a> * e ) <code>[virtual protected]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Reimplemented from <a href="qwidget.html#28c156">QWidget.</a>
+<h3 class="fn">void <a name="1f406e"></a>QLabel::setAlignment ( int alignment ) <code>[virtual]</code></h3>
+<p>Sets the alignment of the label contents.
+<p>The <em>alignment</em> must be a bitwise OR of <a href="qt.html#AlignmentFlags">Qt::AlignmentFlags</a>
+values. The <code>WordBreak, ExpandTabs, SingleLine</code> and <code>ShowPrefix</code> flags apply only if the label contains a plain text, and
+are otherwise ignored. The <code>DontClip</code> flag is always ignored.
+<p>If the label has a buddy, the <code>ShowPrefix</code> flag is forced to TRUE.
+<p>The default alignment is <code>AlignLeft | AlignVCenter |
+ExpandTabs</code> if the label doesn't have a buddy and
+<code>AlignLeft | AlignVCenter | ExpandTabs | ShowPrefix </code> if
+the label has a buddy.
+<p>See also <a href="qt.html#AlignmentFlags">Qt::AlignmentFlags</a>, <a href="#2fcaa3">alignment</a>(), <a href="#191701">setBuddy</a>() and <a href="#dffb43">setText</a>().
+<p>Examples:
+ <a href="cursor-cursor-cpp.html#setAlignment">cursor/cursor.cpp</a>
+ <a href="layout-layout-cpp.html#setAlignment">layout/layout.cpp</a>
+ <a href="popup-popup-cpp.html#setAlignment">popup/popup.cpp</a>
+ <a href="qmag-qmag-cpp.html#setAlignment">qmag/qmag.cpp</a>
+ <a href="customlayout-main-cpp.html#setAlignment">customlayout/main.cpp</a>
+<h3 class="fn">void <a name="1b6d73"></a>QLabel::setAutoMask ( bool b ) <code>[virtual]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Reimplemented from <a href="qwidget.html#c7a335">QWidget.</a>
+<h3 class="fn">void <a name="c0e104"></a>QLabel::setAutoResize ( bool enable ) <code>[virtual]</code></h3>
+<p><b>This function is obsolete.</b> It is provided to keep old source working, and will probably be removed in a future version of Qt. We strongly advise against using it in new code.<p>
+Enables auto-resizing if <em>enable</em> is TRUE, or disables it if <em>enable</em> is FALSE.
+<p>When auto-resizing is enabled, the label will resize itself to fit
+the contents whenever the contents change. The top left corner is
+not moved. This is useful for QLabel widgets that are not managed by
+a <a href="qlayout.html">QLayout</a> (e.g. top-level widgets).
+<p>Auto-resizing is disabled by default.
+<p>See also <a href="#75b2a1">autoResize</a>(), <a href="qwidget.html#ab3108">adjustSize</a>() and <a href="#614dd5">sizeHint</a>().
+<h3 class="fn">void <a name="191701"></a>QLabel::setBuddy ( <a href="qwidget.html">QWidget</a> * buddy ) <code>[virtual]</code></h3>
+<p>Sets the buddy of this label to <em>buddy.</em>
+<p>When the user presses the accelerator key indicated by this label,
+the keyboard focus is transferred to the label's buddy widget.
+<p>The buddy mechanism is only available for QLabels that contain a
+plain text in which one letter is prefixed with '&'. It is this
+letter that is set as the accelerator key. The letter is displayed
+underlined, and the '&' is not displayed (i.e. the <code>ShowPrefix</code>
+alignment flag is turned on; see <a href="#1f406e">setAlignment</a>()).
+<p>In a dialog, you might create two data entry widgets and a label for
+each, and set up the geometry layout so each label is just to the
+left of its data entry widget (its "buddy"), somewhat like this:
+<p><pre> <a href="qlineedit.html">QLineEdit</a> *nameEd = new <a href="qlineedit.html">QLineEdit</a>( this );
+ <a href="qlabel.html">QLabel</a> *nameLb = new <a href="qlabel.html">QLabel</a>( "&amp;Name:", this );
+ nameLb-&gt;<a href="#191701">setBuddy</a>( nameEd );
+ <a href="qlineedit.html">QLineEdit</a> *phoneEd = new <a href="qlineedit.html">QLineEdit</a>( this );
+ <a href="qlabel.html">QLabel</a> *phoneLb = new <a href="qlabel.html">QLabel</a>( "&amp;Phone:", this );
+ phoneLb-&gt;<a href="#191701">setBuddy</a>( phoneEd );
+ // ( layout setup not shown )
+</pre>
+<p>With the code above, the focus jumps to the Name field when the user
+presses Alt-N, and to the Phone field when the user presses Alt-P.
+<p>To unset a previously set buddy, call this function with <em>buddy</em>
+set to 0.
+<p>See also <a href="#123954">buddy</a>(), <a href="#dffb43">setText</a>(), <a href="qaccel.html">QAccel</a> and <a href="#1f406e">setAlignment</a>().
+<p>Examples:
+ <a href="layout-layout-cpp.html#setBuddy">layout/layout.cpp</a>
+<h3 class="fn">void <a name="ed9b8b"></a>QLabel::setIndent ( int indent )</h3>
+<p>Sets the indent of the label to <em>indent</em> pixels.
+<p>The indent applies to the left edge if <a href="#2fcaa3">alignment</a>() is <code>AlignLeft,</code>
+to the right edge if alignment() is <code>AlignRight,</code> to the top edge
+if alignment() is <code>AlignTop,</code> and to to the bottom edge if
+alignment() is <code>AlignBottom.</code>
+<p>If <em>indent</em> is negative, or if no indent has been set, the label
+computes the effective indent as follows: If <a href="qframe.html#e0ccef">frameWidth</a>() is 0, the
+effective indent becomes 0. If frameWidth() is greater than 0, the
+effective indent becomes half the width of the "x" character of the
+widget's current <a href="qwidget.html#3a7237">font</a>().
+<p>If <em>indent</em> is non-negative, the effective indent is <em>indent</em>
+pixels.
+<p>See also <a href="#e3c907">indent</a>(), <a href="#1f406e">setAlignment</a>(), <a href="qframe.html#e0ccef">frameWidth</a>() and <a href="qwidget.html#3a7237">font</a>().
+<p>Examples:
+ <a href="movies-main-cpp.html#setIndent">movies/main.cpp</a>
+<h3 class="fn">void <a name="60de9f"></a>QLabel::setMovie ( const <a href="qmovie.html">QMovie</a> &amp; movie ) <code>[virtual slot]</code></h3>
+<p>Sets the label contents to <em>movie.</em> Any previous content is cleared.
+<p>The buddy accelerator, if any, is disabled.
+<p>The label resizes itself if auto-resizing is enabled.
+<p>See also <a href="#7dcdfe">movie</a>() and <a href="#191701">setBuddy</a>().
+<h3 class="fn">void <a name="1a8f6a"></a>QLabel::setNum ( double num ) <code>[virtual slot]</code></h3>
+<p>Sets the label contents to a plain text containing the printed value
+of <em>num.</em> Does nothing if this is equal to the current contents of
+the label. Any previous content is cleared.
+<p>The buddy accelerator, if any, is disabled.
+<p>The label resizes itself if auto-resizing is enabled.
+<p>See also <a href="#dffb43">setText</a>(), <a href="qstring.html#01d80b">QString::setNum</a>() and <a href="#191701">setBuddy</a>().
+<h3 class="fn">void <a name="301e3c"></a>QLabel::setNum ( int num ) <code>[virtual slot]</code></h3>
+<p>Sets the label contents to a plain text containing the printed value
+of <em>num.</em> Does nothing if this is equal to the current contents of
+the label. Any previous content is cleared.
+<p>The buddy accelerator, if any, is disabled.
+<p>The label resizes itself if auto-resizing is enabled.
+<p>See also <a href="#dffb43">setText</a>(), <a href="qstring.html#01d80b">QString::setNum</a>() and <a href="#191701">setBuddy</a>().
+<h3 class="fn">void <a name="f3f301"></a>QLabel::setPixmap ( const <a href="qpixmap.html">QPixmap</a> &amp; pixmap ) <code>[virtual slot]</code></h3>
+<p>Sets the label contents to <em>pixmap.</em> Any previous content is cleared.
+<p>The buddy accelerator, if any, is disabled.
+<p>The label resizes itself if auto-resizing is enabled.
+<p>See also <a href="#101ecb">pixmap</a>() and <a href="#191701">setBuddy</a>().
+<h3 class="fn">void <a name="e9e3cf"></a>QLabel::setScaledContents ( bool enable )</h3>
+<p>When called with <em>enable</em> == TRUE, and the label shows a pixmap,
+it will scale the pixmap to fill available space.
+<p>See also <a href="#7e1f73">hasScaledContents</a>().
+<h3 class="fn">void <a name="dffb43"></a>QLabel::setText ( const <a href="qstring.html">QString</a> &amp; text ) <code>[virtual slot]</code></h3>
+<p>Sets the label contents to <em>text,</em> or does nothing if <em>text</em> is
+equal to the current contents of the label. Any previous content is
+cleared.
+<p><em>text</em> will be interpreted either as a plain text or as a rich
+text, depending on the text format setting; see <a href="#5de3f9">setTextFormat</a>(). The
+default setting is <code>AutoText,</code> i.e. QLabel will try to auto-detect
+the format of <em>text.</em>
+<p>If <em>text</em> is interpreted as a plain text, and a buddy has been set,
+the buddy accelerator key is updated from the new text.
+<p>The label resizes itself if auto-resizing is enabled.
+<p>Note that Qlabel is well suited to display small rich text documents
+only. For large documents, use <a href="qtextview.html">QTextView</a> instead. It will flicker
+less on resize and can also provide a scrollbar if necessary.
+<p>See also <a href="#72cf09">text</a>(), <a href="#5de3f9">setTextFormat</a>(), <a href="#191701">setBuddy</a>() and <a href="#1f406e">setAlignment</a>().
+<p>Examples:
+ <a href="cursor-cursor-cpp.html#setText">cursor/cursor.cpp</a>
+ <a href="layout-layout-cpp.html#setText">layout/layout.cpp</a>
+ <a href="popup-popup-cpp.html#setText">popup/popup.cpp</a>
+ <a href="qmag-qmag-cpp.html#setText">qmag/qmag.cpp</a>
+ <a href="customlayout-main-cpp.html#setText">customlayout/main.cpp</a>
+<h3 class="fn">void <a name="5de3f9"></a>QLabel::setTextFormat ( <a href="qt.html#TextFormat">Qt::TextFormat</a> format )</h3>
+<p>Sets the text format to <em>format.</em> See the <a href="qt.html#TextFormat">Qt::TextFormat</a> enum for
+an explanation of the possible options.
+<p>The default format is <code>AutoText.</code>
+<p>See also <a href="#0b92ed">textFormat</a>() and <a href="#dffb43">setText</a>().
+<h3 class="fn"><a href="qsize.html">QSize</a> <a name="614dd5"></a>QLabel::sizeHint () const <code>[virtual]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Examples:
+ <a href="layout-layout-cpp.html#sizeHint">layout/layout.cpp</a>
+<p>Reimplemented from <a href="qwidget.html#290bcd">QWidget.</a>
+<h3 class="fn"><a href="qsizepolicy.html">QSizePolicy</a> <a name="26e1d9"></a>QLabel::sizePolicy () const <code>[virtual]</code></h3>
+<p>Reimplemented for internal reasons; the API is not affected.
+<p>Reimplemented from <a href="qwidget.html#2d5d13">QWidget.</a>
+<h3 class="fn"><a href="qstring.html">QString</a> <a name="72cf09"></a>QLabel::text () const</h3>
+<p>Returns the label text. If the content is a plain or a rich text,
+this is the string that was passed to <a href="#dffb43">setText</a>(). Otherwise, it is an
+empty/null string.
+<p>See also <a href="#dffb43">setText</a>(), <a href="#1a8f6a">setNum</a>() and <a href="#be73f3">clear</a>().
+<h3 class="fn">Qt::TextFormat <a name="0b92ed"></a>QLabel::textFormat() const</h3>
+<p>Returns the current text format.
+<p>See also <a href="#5de3f9">setTextFormat</a>().
+<hr><p>
+Search the documentation, FAQ, qt-interest archive and more (uses
+<a href="http://www.trolltech.com">www.trolltech.com</a>):<br>
+<form method=post action="http://www.trolltech.com/search.cgi">
+<input type=hidden name="version" value="3.0.0-snapshot"><nobr>
+<input size="50" name="search"><input type=submit value="Search">
+</nobr></form><hr><p>
+This file is part of the <a href="index.html">Qt toolkit</a>,
+copyright &copy; 1995-2000
+<a href="http://www.trolltech.com">Trolltech</a>, all rights reserved.<p><address><hr><div align="center">
+<table width="100%" cellspacing="0" border="0"><tr>
+<td>Copyright © 2000 Trolltech<td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
+<td align="right"><div align="right">Qt version 3.0.0-snapshot</div>
+</table></div></address></body></html>
diff --git a/qtjava/javalib/examples/textedit/filenew.xpm b/qtjava/javalib/examples/textedit/filenew.xpm
new file mode 100644
index 00000000..884d7cbb
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/filenew.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c Gray76",
+"X c Gray53",
+"o c Gray36",
+"O c Gray18",
+"+ c Gray0",
+"@ c None",
+"# c Gray0",
+/* pixels */
+"@@@@@@@@@@@@@@@@@@@@@@",
+"@@@@++++++++++@@@@@@@@",
+"@@@@+ +O+@@@@@@@",
+"@@@@+ +oO+@@@@@@",
+"@@@@+ +XoO+@@@@@",
+"@@@@+ +.XoO+@@@@",
+"@@@@+ + .XoO+@@@",
+"@@@@+ +++++++@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+ +@@@",
+"@@@@+++++++++++++++@@@",
+"@@@@@@@@@@@@@@@@@@@@@@",
+"@@@@@@@@@@@@@@@@@@@@@@"
+};
diff --git a/qtjava/javalib/examples/textedit/fileopen.xpm b/qtjava/javalib/examples/textedit/fileopen.xpm
new file mode 100644
index 00000000..82effcf7
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/fileopen.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c Yellow",
+"X c #848200",
+"o c Gray0",
+"O c None",
+"+ c Gray0",
+"@ c Gray0",
+"# c Gray0",
+/* pixels */
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO",
+"OOOOOOOOOOOOooooOOOOoO",
+"OOOOOOOOOOOoOOOOooOooO",
+"OOOOOOOOOOOOOOOOOOoooO",
+"OOOOOOOOOOOOOOOOOooooO",
+"OooooOOOOOOOOOOOoooooO",
+"o. . ooooooooooOOOOOOO",
+"o . . . . . . oOOOOOOO",
+"o. . . . . . .oOOOOOOO",
+"o . . . . . . oOOOOOOO",
+"o. . . ooooooooooooooo",
+"o . . ooXXXXXXXXXXXXoo",
+"o. . ooXXXXXXXXXXXXooO",
+"o . ooXXXXXXXXXXXXooOO",
+"o. ooXXXXXXXXXXXXooOOO",
+"o ooXXXXXXXXXXXXooOOOO",
+"oooXXXXXXXXXXXXooOOOOO",
+"ooXXXXXXXXXXXXooOOOOOO",
+"oooooooooooooooOOOOOOO",
+"OOOOOOOOOOOOOOOOOOOOOO"
+};
diff --git a/qtjava/javalib/examples/textedit/fileprint.xpm b/qtjava/javalib/examples/textedit/fileprint.xpm
new file mode 100644
index 00000000..8701d460
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/fileprint.xpm
@@ -0,0 +1,117 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 89 1",
+" c Gray0",
+". c #101008081010",
+"X c #101010101010",
+"o c #101010101818",
+"O c #181810101818",
+"+ c #181818181818",
+"@ c #181818182121",
+"# c #212118182121",
+"$ c Gray13",
+"% c #212121212929",
+"& c #292921212929",
+"* c Gray16",
+"= c #292929293131",
+"- c #313129293131",
+"; c #313131313131",
+": c #313131313939",
+"> c #393931313939",
+", c #393939393939",
+"< c #393939394242",
+"1 c #424239394242",
+"2 c Gray26",
+"3 c #4a4a4a4a5252",
+"4 c #5a5a52525a5a",
+"5 c #5a5a5a5a6363",
+"6 c #6b6b63636b6b",
+"7 c Gray42",
+"8 c #6b6b6b6b7373",
+"9 c #73736b6b7373",
+"0 c #7b7b73737b7b",
+"q c #7b7b73738484",
+"w c #0808ffff0808",
+"e c #2929ffff2929",
+"r c #3131ffff3131",
+"t c #5a5acece5a5a",
+"y c #6b6bffff6363",
+"u c #7b7bffff7b7b",
+"i c #84847b7b8484",
+"p c #84847b7b8c8c",
+"a c #8c8c7b7b9494",
+"s c #848484848c8c",
+"d c #8c8c84848c8c",
+"f c Gray55",
+"g c #8c8c84849494",
+"h c #8c8c8c8c9494",
+"j c #94948c8c9494",
+"k c #94948c8c9c9c",
+"l c Gray58",
+"z c #949494949c9c",
+"x c #9c9c94949c9c",
+"c c Gray61",
+"v c #9c9c9494a5a5",
+"b c #9c9c9c9ca5a5",
+"n c #a5a59c9ca5a5",
+"m c #a5a59c9cadad",
+"M c #adad9c9cadad",
+"N c #a5a5a5a5a5a5",
+"B c #a5a5a5a5adad",
+"V c #adada5a5adad",
+"C c Gray68",
+"Z c #adadadadb5b5",
+"A c #b5b5adadb5b5",
+"S c Gray71",
+"D c Gray74",
+"F c #9494c6c69494",
+"G c #9c9ccecea5a5",
+"H c #bdbdd6d6bdbd",
+"J c #c0c0c0c0c0c0",
+"K c #c6c6c6c6c6c6",
+"L c #cecec6c6cece",
+"P c #cececececece",
+"I c #cecececed6d6",
+"U c #d6d6ceced6d6",
+"Y c #d6d6cecedede",
+"T c Gray84",
+"R c #d6d6d6d6dede",
+"E c #deded6d6dede",
+"W c Gray87",
+"Q c #deded6d6e7e7",
+"! c #dedededee7e7",
+"~ c #d6d6ffffd6d6",
+"^ c #e7e7dedee7e7",
+"/ c #e7e7e7e7e7e7",
+"( c #e7e7e7e7efef",
+") c #efefe7e7efef",
+"_ c #efefefefefef",
+"` c #e7e7ffffe7e7",
+"' c Gray97",
+"] c Gray100",
+"[ c None",
+/* pixels */
+"[[[[[[SDPPPPKKDDCD[[[[",
+"[[[[[[D_/////___WD[[[[",
+"[[[[[[DKKKPPKKKKDK[[[[",
+"[[[[[[SDDDDSDDSSCD[[[[",
+"[[[[[KCKDKKKDDDKS[[[[[",
+"[[[[[DDSDDDDDDKKS[[[[[",
+"[[[[[DSKDDDDDKDKC[[[[[",
+"[[[[[KDDDDDDDDDDS[[[[[",
+"[[[[[CP/WWWWWWTWNNZ[[[",
+"[[[Dc9STPTPTPTWWj427S[",
+"[[Dziq0000000pag8<%@2N",
+"[DcE(!ERRRRUYGtFn2##O<",
+"Db)]]]]]]]]]~ewePa;@X#",
+"V']]]]]]]]]]`yru]Q0@ #",
+"BRILITRRW^!E!RHUILhO @",
+"jAZVBmBnmmNmnmMvzh6o #",
+"jZZmBnnnbnbbbbvxxg6o +",
+"lmmnbnbbbvcvxxxvjs6O 3",
+"jBnnvcvxvcvxvxzjhd8o+C",
+"lsdgfgdhgdhhjhjkhg6+l[",
+"S9%@$%&&&=--::>>:-:l[[",
+"[[C511,:;;;**%++.2c[[["
+};
diff --git a/qtjava/javalib/examples/textedit/filesave.xpm b/qtjava/javalib/examples/textedit/filesave.xpm
new file mode 100644
index 00000000..71cbd331
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/filesave.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *magick[] = {
+/* columns rows colors chars-per-pixel */
+"22 22 8 1",
+" c Gray100",
+". c #cab5d1",
+"X c #c1c1c1",
+"o c #848200",
+"O c Gray0",
+"+ c None",
+"@ c Gray0",
+"# c Gray0",
+/* pixels */
+"++++++++++++++++++++++",
+"+OOOOOOOOOOOOOOOOOOOO+",
+"+OooOXXXXXXXXXXXXOXXO+",
+"+OooOXXXXXXXXXXXXOXXO+",
+"+OooOXXXXXXXXX.XXOOOO+",
+"+OooOXXX..XXXXXXXOooO+",
+"+OooOXXX..XXXXXXXOooO+",
+"+OooOXXXXXXXXXXXXOooO+",
+"+OooOXXXXXXXXXXXXOooO+",
+"+OooOXXXXXXXXXXXXOooO+",
+"+OooOXXXXXXXXXXXXOooO+",
+"+OoooOOOOOOOOOOOOoooO+",
+"+OooooooooooooooooooO+",
+"+OooooooooooooooooooO+",
+"+OoooOOOOOOOOOOOOOooO+",
+"+OoooOOOOOOOOOXXXOooO+",
+"+OoooOOOOOOOOOXXXOooO+",
+"+OoooOOOOOOOOOXXXOooO+",
+"+OoooOOOOOOOOOXXXOooO+",
+"+OoooOOOOOOOOOXXXOooO+",
+"++OOOOOOOOOOOOOOOOOO++",
+"++++++++++++++++++++++"
+};
diff --git a/qtjava/javalib/examples/textedit/textbold.xpm b/qtjava/javalib/examples/textedit/textbold.xpm
new file mode 100644
index 00000000..8398e2ec
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textbold.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * bold_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ......... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ........ ",
+" ... .... ",
+" ... .... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" ... ... ",
+" .......... ",
+" ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/textedit/textcenter.xpm b/qtjava/javalib/examples/textedit/textcenter.xpm
new file mode 100644
index 00000000..837152f6
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textcenter.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * center_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/textedit/textitalic.xpm b/qtjava/javalib/examples/textedit/textitalic.xpm
new file mode 100644
index 00000000..329e66d3
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textitalic.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * italic_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ..... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ..... ",
+" ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/textedit/textjustify.xpm b/qtjava/javalib/examples/textedit/textjustify.xpm
new file mode 100644
index 00000000..75b4a274
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textjustify.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * block_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/textedit/textleft.xpm b/qtjava/javalib/examples/textedit/textleft.xpm
new file mode 100644
index 00000000..a63e7cef
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textleft.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * left_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/textedit/textright.xpm b/qtjava/javalib/examples/textedit/textright.xpm
new file mode 100644
index 00000000..3e896bd7
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textright.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * right_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ............. ",
+" ",
+" ................. ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/textedit/textunder.xpm b/qtjava/javalib/examples/textedit/textunder.xpm
new file mode 100644
index 00000000..ec962a74
--- /dev/null
+++ b/qtjava/javalib/examples/textedit/textunder.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char * under_xpm[] = {
+"22 22 2 1",
+" c None",
+". c #000000",
+" ",
+" ",
+" ",
+" ",
+" ..... .... ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... . ",
+" ... .. ",
+" ... .. ",
+" ...... ",
+" ",
+" ............ ",
+" ",
+" ",
+" "};
diff --git a/qtjava/javalib/examples/tux/MoveMe.java b/qtjava/javalib/examples/tux/MoveMe.java
new file mode 100644
index 00000000..02c4bf9a
--- /dev/null
+++ b/qtjava/javalib/examples/tux/MoveMe.java
@@ -0,0 +1,68 @@
+
+import org.kde.qt.*;
+
+class MoveMe extends QWidget
+{
+public MoveMe( QWidget parent, String name, int f)
+{
+ super(parent,name, f);
+}
+
+private QPoint clickPos;
+
+protected void mousePressEvent( QMouseEvent e )
+{
+ // if ( e.button() == LeftButton )
+ clickPos = e.pos();
+}
+
+protected void mouseMoveEvent( QMouseEvent e )
+{
+ // if ( e.state() & LeftButton )
+ move( new QPoint( e.globalPos().x() - clickPos.x(),
+ e.globalPos().y() - clickPos.y() ) );
+}
+
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ String fn="tux.png";
+
+ if ( args.length >= 1 )
+ fn = args[0];
+
+ if ( ! QFile.exists( fn ) )
+ System.exit( 1 );
+
+ QImage img = new QImage( fn );
+ QPixmap p = new QPixmap();
+ p.convertFromImage( img );
+ if ( p.mask() == null )
+ if ( img.hasAlphaBuffer() ) {
+ QBitmap bm = new QBitmap(img.createAlphaMask());
+ p.setMask( bm );
+ } else {
+ QBitmap bm = new QBitmap(img.createHeuristicMask());
+ p.setMask( bm );
+ }
+ MoveMe w = new MoveMe(null,null,Qt.WStyle_Customize|Qt.WStyle_NoBorder);
+ w.setBackgroundPixmap( p );
+ w.setFixedSize( p.size() );
+ if ( p.mask() != null )
+ w.setMask( p.mask() );
+ w.show();
+ a.setMainWidget(w);
+
+
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+
+}
diff --git a/qtjava/javalib/examples/tux/tux.png b/qtjava/javalib/examples/tux/tux.png
new file mode 100644
index 00000000..7eab1410
--- /dev/null
+++ b/qtjava/javalib/examples/tux/tux.png
Binary files differ
diff --git a/qtjava/javalib/examples/widgets/MyWidgetView.java b/qtjava/javalib/examples/widgets/MyWidgetView.java
new file mode 100644
index 00000000..db42cb9a
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/MyWidgetView.java
@@ -0,0 +1,58 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+import java.util.ArrayList;
+
+class MyWidgetView extends WidgetView
+{
+ int s;
+public MyWidgetView( )
+{
+ this(null, null);
+}
+
+public MyWidgetView( QWidget parent, String name )
+ {
+ super(parent, name);
+ s = 0;
+ setToolBarsMovable( true );
+ }
+
+ void button1Clicked()
+ {
+ ArrayList styles = QStyleFactory.keys();
+
+ s = (++s)%styles.size();
+ qApp().setStyle( (String) styles.get(s) );
+ super.button1Clicked();
+ }
+
+
+//
+// Create and display our WidgetView.
+//
+
+public static void main(String[] args)
+{
+ QApplication.setColorSpec( QApplication.CustomColor );
+ QApplication a = new QApplication( args );
+
+ MyWidgetView w = new MyWidgetView();
+ a.setMainWidget( w );
+
+ w.show();
+ int res = a.exec();
+ return;
+}
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/widgets/README b/qtjava/javalib/examples/widgets/README
new file mode 100644
index 00000000..8e1767e4
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/README
@@ -0,0 +1,4 @@
+Click the right mouse button + CTRL to identify a widget.
+
+The classes MyWhatsThis and MyMenuItem can't be translated to java
+yet, as the required virtual methods callbacks aren't implemented
diff --git a/qtjava/javalib/examples/widgets/WidgetView.java b/qtjava/javalib/examples/widgets/WidgetView.java
new file mode 100644
index 00000000..d000ce8b
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/WidgetView.java
@@ -0,0 +1,829 @@
+/***************************************************************************
+* $Id$
+**
+* Definition of something or other
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech 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.
+**
+****************************************************************************/
+
+
+import org.kde.qt.*;
+
+class WidgetView extends QMainWindow
+{
+
+private String MOVIEFILENAME = "trolltech.gif";
+private QLabel msg;
+private QCheckBox cb[] = new QCheckBox[3];
+private QGroupBox bg;
+private QLabel movielabel;
+private QMovie movie;
+private QWidget central;
+private QProgressBar prog;
+private int progress;
+private QTabWidget tabs;
+private QMultiLineEdit edit;
+private QPopupMenu textStylePopup;
+private int plainStyleID;
+private QWidget bla;
+private AnalogClock aclock;
+private DigitalClock dclock;
+
+/* XPM */
+static String[] filesave = {
+" 14 14 4 1",
+". c #040404",
+"# c #808304",
+"a c #bfc2bf",
+"b c None",
+"..............",
+".#.aaaaaaaa.a.",
+".#.aaaaaaaa...",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".##........##.",
+".############.",
+".##.........#.",
+".##......aa.#.",
+".##......aa.#.",
+".##......aa.#.",
+"b............."
+};
+
+/* XPM */
+static String[] fileopen = {
+" 16 13 5 1",
+". c #040404",
+"# c #808304",
+"a c None",
+"b c #f3f704",
+"c c #f3f7f3",
+"aaaaaaaaa...aaaa",
+"aaaaaaaa.aaa.a.a",
+"aaaaaaaaaaaaa..a",
+"a...aaaaaaaa...a",
+".bcb.......aaaaa",
+".cbcbcbcbc.aaaaa",
+".bcbcbcbcb.aaaaa",
+".cbcb...........",
+".bcb.#########.a",
+".cb.#########.aa",
+".b.#########.aaa",
+"..#########.aaaa",
+"...........aaaaa"
+};
+
+/* XPM */
+static String[] fileprint = {
+" 16 14 6 1",
+". c #000000",
+"# c #848284",
+"a c #c6c3c6",
+"b c #ffff00",
+"c c #ffffff",
+"d c None",
+"ddddd.........dd",
+"dddd.cccccccc.dd",
+"dddd.c.....c.ddd",
+"ddd.cccccccc.ddd",
+"ddd.c.....c....d",
+"dd.cccccccc.a.a.",
+"d..........a.a..",
+".aaaaaaaaaa.a.a.",
+".............aa.",
+".aaaaaa###aa.a.d",
+".aaaaaabbbaa...d",
+".............a.d",
+"d.aaaaaaaaa.a.dd",
+"dd...........ddd"
+};
+
+// Standard Qt widgets
+
+
+
+class MyListView extends QListView
+{
+public MyListView( QWidget parent )
+{
+ this(parent, null);
+}
+public MyListView( QWidget parent, String name )
+{
+ super( parent, name );
+ selected = null;
+}
+protected void contentsMousePressEvent( QMouseEvent e )
+ {
+ selected = selectedItem();
+// super.contentsMousePressEvent( e );
+ }
+protected void contentsMouseReleaseEvent( QMouseEvent e )
+ {
+// super.contentsMouseReleaseEvent( e );
+ if ( selectedItem() != selected ) {
+ emit("mySelectionChanged", selectedItem() );
+ emit("mySelectionChanged");
+ }
+ }
+
+private QListViewItem selected;
+}
+//
+// WidgetView contains lots of Qt widgets.
+//
+
+
+
+// Some sample widgets
+
+
+
+
+
+/*
+class MyWhatsThis extends QWhatsThis
+{
+public MyWhatsThis( QListBox lb)
+{
+ super( lb );
+ listbox = lb;
+}
+
+
+public String text( QPoint p) {
+ QListBoxItem i = listbox.itemAt( p );
+ if ( i != null && i.pixmap() != null ) {
+ return "Isn't that a <em>wonderful</em> pixmap? <br>"
+ + "Imagine, you could even decorate a"
+ + " <b>red</b> pushbutton with it! :-)";
+ }
+ return "This is a QListBox.";
+ }
+
+private QListBox listbox;
+}
+
+
+class MyMenuItem extends QCustomMenuItem
+{
+public MyMenuItem( String s, QFont f )
+{
+ string = s;
+ font = f;
+}
+
+ public void paint( QPainter p, QColorGroup cg, boolean act,
+ boolean enabled, int x, int y, int w, int h )
+ {
+ p.setFont ( font );
+ p.drawText( x, y, w, h,
+ AlignAuto | AlignVCenter | ShowPrefix | DontClip,
+ string );
+ }
+
+ public QSize sizeHint()
+ {
+ return QFontMetrics( font ).size( AlignAuto | AlignVCenter |
+ ShowPrefix | DontClip, string );
+ }
+private String string;
+private QFont font;
+}
+*/
+
+
+//
+// Construct the WidgetView with children
+//
+
+WidgetView( QWidget parent, String name )
+{
+ super( parent, name );
+ QColor col = new QColor();
+
+ // Set the window caption/title
+ setCaption( "Qt Example - Widgets Demo Application" );
+
+ // create a toolbar
+ QToolBar tools = new QToolBar( this, "toolbar" );
+
+ // put something in it
+ QPixmap openIcon = new QPixmap( fileopen );
+ QToolButton toolb = new QToolButton( new QIconSet(openIcon), "toolbutton 1",
+ "", this, SLOT("open()"),
+ tools, "open file" );
+ QWhatsThis.add( toolb, "This is a <b>QToolButton</b>. It lives in a "
+ + "QToolBar. This particular button doesn't do anything "
+ + "useful." );
+
+ QPixmap saveIcon = new QPixmap( filesave );
+ toolb = new QToolButton( new QIconSet(saveIcon), "toolbutton 2", "",
+ this, SLOT("dummy()"),
+ tools, "save file" );
+ QWhatsThis.add( toolb, "This is also a <b>QToolButton</b>." );
+
+ QPixmap printIcon = new QPixmap( fileprint );
+ toolb = new QToolButton( new QIconSet(printIcon), "toolbutton 3", "",
+ this, SLOT("dummy()"),
+ tools, "print file" );
+ QWhatsThis.add( toolb, "This is the third <b>QToolButton</b>.");
+
+ toolb = QWhatsThis.whatsThisButton( tools );
+ QWhatsThis.add( toolb, "This is a <b>What's This</b> button "
+ + "It enables the user to ask for help "
+ + "about widgets on the screen.");
+
+ // Install an application-global event filter to catch control+leftbutton
+ qApp().installEventFilter( this );
+
+ //make a central widget to contain the other widgets
+ central = new QWidget( this );
+ setCentralWidget( central );
+
+ // Create a layout to position the widgets
+ QHBoxLayout topLayout = new QHBoxLayout( central, 10 );
+
+ // Create a grid layout to hold most of the widgets
+ QGridLayout grid = new QGridLayout( 0, 3 ); //3 wide and autodetect number of rows
+ topLayout.addLayout( grid, 1 );
+
+ // Create an easter egg
+ QToolTip.add( menuBar(), new QRect( 0, 0, 2, 2 ), "easter egg" );
+
+ QPopupMenu popup;
+ popup = new QPopupMenu( this );
+ menuBar().insertItem( "&File", popup );
+ int id;
+ id = popup.insertItem( "&New" );
+ popup.setItemEnabled( id, false );
+ id = popup.insertItem( new QIconSet(openIcon), "&Open", this, SLOT(" open()") );
+
+ popup.insertSeparator();
+ popup.insertItem( "&Quit", qApp(), SLOT("quit()"), new QKeySequence(CTRL+Key_Q) );
+
+
+ textStylePopup = popup = new QPopupMenu( this );
+ menuBar().insertItem( "&Edit", popup );
+
+ plainStyleID = id = popup.insertItem( "&Plain" );
+ popup.setAccel( new QKeySequence(CTRL+Key_T), id );
+
+ popup.insertSeparator();
+/* QFont f = font();
+ f.setBold( true );
+ id = popup.insertItem( new MyMenuItem( "&Bold", f ) );
+ popup.setAccel( new QKeySequence(CTRL+Key_B), id );
+ f = font();
+ f.setItalic( true );
+ id = popup.insertItem( new MyMenuItem( "&Italic", f ) );
+ popup.setItemChecked( id, true );
+ popup.setAccel( new QKeySequence(CTRL+Key_I), id );
+ f = font();
+ f.setUnderline( true );
+ id = popup.insertItem( new MyMenuItem( "&Underline", f ) );
+ popup.setAccel( new QKeySequence(CTRL+Key_U), id );
+ f = font();
+ f.setStrikeOut( true );
+ id = popup.insertItem( new MyMenuItem( "&Strike", f ) );
+ connect( textStylePopup, SIGNAL("activated(int)"),
+ this, SLOT("popupSelected(int)") );
+*/
+ // Create an analog and a digital clock
+ aclock = new AnalogClock( central );
+ aclock.setAutoMask( true );
+ dclock = new DigitalClock( central );
+ dclock.setMaximumWidth(200);
+ grid.addWidget( aclock, 0, 2 );
+ grid.addWidget( dclock, 1, 2 );
+
+ // Give the dclock widget a blue palette
+ col.setRgb( 0xaa, 0xbe, 0xff );
+ dclock.setPalette( new QPalette( col ) );
+
+ // make tool tips for both of them
+ QToolTip.add( aclock, "custom widget: analog clock" );
+ QToolTip.add( dclock, "custom widget: digital clock" );
+
+ // Create a push button.
+ QPushButton pb;
+ pb = new QPushButton( "&Push button 1", central, "button1" );
+ grid.addWidget( pb, 0, 0, AlignVCenter );
+ connect( pb, SIGNAL("clicked()"), SLOT("button1Clicked()") );
+ QToolTip.add( pb, "push button 1" );
+ QWhatsThis.add( pb, "This is a <b>QPushButton</b>.<br>"
+ + "Click it and watch...<br>"
+ + "The wonders of modern technology.");
+
+ QPixmap pm = new QPixmap();
+ boolean pix = pm.load("qt.png");
+ if ( !pix ) {
+ QMessageBox.information( null, "Qt Widgets Example",
+ "Could not load the file \"qt.png\", which\n"
+ + "contains an icon used...\n\n"
+ + "The text \"line 42\" will be substituted.",
+ QMessageBox.Ok + QMessageBox.Default );
+ }
+
+ // Create a label containing a QMovie
+ movie = new QMovie( MOVIEFILENAME );
+ movielabel = new QLabel( central, "label0" );
+ movie.connectStatus(this, SLOT("movieStatus(int)"));
+ movie.connectUpdate(this, SLOT("movieUpdate(QRect)"));
+ movielabel.setFrameStyle( QFrame.Box | QFrame.Plain );
+ movielabel.setMovie( movie );
+ movielabel.setFixedSize( 128+movielabel.frameWidth()*2,
+ 64+movielabel.frameWidth()*2 );
+ grid.addWidget( movielabel, 0, 1, AlignCenter );
+ QToolTip.add( movielabel, "movie" );
+ QWhatsThis.add( movielabel, "This is a <b>QLabel</b> "
+ + "that contains a QMovie." );
+
+ // Create a group of check boxes
+ bg = new QButtonGroup( central, "checkGroup" );
+ bg.setTitle( "Check Boxes" );
+ grid.addWidget( bg, 1, 0 );
+
+ // Create a layout for the check boxes
+ QVBoxLayout vbox = new QVBoxLayout(bg, 10);
+
+ vbox.addSpacing( bg.fontMetrics().height() );
+
+ cb[0] = new QCheckBox( bg );
+ cb[0].setText( "&Read" );
+ vbox.addWidget( cb[0] );
+ cb[1] = new QCheckBox( bg );
+ cb[1].setText( "&Write" );
+ vbox.addWidget( cb[1] );
+ cb[2] = new QCheckBox( bg );
+ cb[2].setText( "&Execute" );
+ vbox.addWidget( cb[2] );
+
+ connect( bg, SIGNAL("clicked(int)"), SLOT("checkBoxClicked(int)") );
+
+ QToolTip.add( cb[0], "check box 1" );
+ QToolTip.add( cb[1], "check box 2" );
+ QToolTip.add( cb[2], "check box 3" );
+
+ // Create a group of radio buttons
+ QRadioButton rb;
+ bg = new QButtonGroup( central, "radioGroup" );
+ bg.setTitle( "Radio buttons" );
+
+ grid.addWidget( bg, 1, 1 );
+
+ // Create a layout for the radio buttons
+ vbox = new QVBoxLayout(bg, 10);
+
+ vbox.addSpacing( bg.fontMetrics().height() );
+ rb = new QRadioButton( bg );
+ rb.setText( "&AM" );
+ rb.setChecked( true );
+ vbox.addWidget(rb);
+ QToolTip.add( rb, "radio button 1" );
+ rb = new QRadioButton( bg );
+ rb.setText( "F&M" );
+ vbox.addWidget(rb);
+ QToolTip.add( rb, "radio button 2" );
+ rb = new QRadioButton( bg );
+ rb.setText( "&Short Wave" );
+ vbox.addWidget(rb);
+
+ connect( bg, SIGNAL("clicked(int)"), SLOT("radioButtonClicked(int)") );
+ QToolTip.add( rb, "radio button 3" );
+
+ // Create a list box
+ QListBox lb = new QListBox( central, "listBox" );
+ for ( int i=0; i<100; i++ ) { // fill list box
+ String str = "line " + i;
+ if ( i == 42 && pix )
+ lb.insertItem( pm );
+ else
+ lb.insertItem( str );
+ }
+ grid.addMultiCellWidget( lb, 2, 4, 0, 0 );
+ connect( lb, SIGNAL("selected(int)"), SLOT("listBoxItemSelected(int)") );
+ QToolTip.add( lb, "list box" );
+// new MyWhatsThis( lb );
+
+ vbox = new QVBoxLayout(8);
+ grid.addLayout( vbox, 2, 1 );
+
+ // Create a slider
+ QSlider sb = new QSlider( 0, 300, 30, 100, QSlider.Horizontal,
+ central, "Slider" );
+ sb.setTickmarks( QSlider.Below );
+ sb.setTickInterval( 10 );
+ sb.setFocusPolicy( QWidget.TabFocus );
+ vbox.addWidget( sb );
+
+ connect( sb, SIGNAL("valueChanged(int)"), SLOT("sliderValueChanged(int)") );
+ QToolTip.add( sb, "slider" );
+ QWhatsThis.add( sb, "This is a <b>QSlider</b>. "
+ + "The tick marks are optional."
+ + " This slider controls the speed of the movie." );
+ // Create a combo box
+ QComboBox combo = new QComboBox( false, central, "comboBox" );
+ combo.insertItem( "darkBlue" );
+ combo.insertItem( "darkRed" );
+ combo.insertItem( "darkGreen" );
+ combo.insertItem( "blue" );
+ combo.insertItem( "red" );
+ vbox.addWidget( combo );
+ connect( combo, SIGNAL("activated(int)"),
+ this, SLOT("comboBoxItemActivated(int)") );
+ QToolTip.add( combo, "read-only combo box" );
+
+ // Create an editable combo box
+ QComboBox edCombo = new QComboBox( true, central, "edComboBox" );
+ edCombo.insertItem( "Permutable" );
+ edCombo.insertItem( "Malleable" );
+ edCombo.insertItem( "Adaptable" );
+ edCombo.insertItem( "Alterable" );
+ edCombo.insertItem( "Inconstant" );
+ vbox.addWidget( edCombo );
+ connect( edCombo, SIGNAL("activated(String)"),
+ this, SLOT("edComboBoxItemActivated(String)") );
+ QToolTip.add( edCombo, "editable combo box" );
+
+ edCombo.setAutoCompletion( true );
+
+ vbox = new QVBoxLayout(8);
+ grid.addLayout( vbox, 2, 2 );
+
+ // Create a spin box
+ QSpinBox spin = new QSpinBox( 0, 10, 1, central, "spin" );
+ spin.setSuffix(" mm");
+ spin.setSpecialValueText( "Auto" );
+ connect( spin, SIGNAL(" valueChanged(String)"),
+ SLOT(" spinBoxValueChanged(String)") );
+ QToolTip.add( spin, "spin box" );
+ QWhatsThis.add( spin, "This is a <b>QSpinBox</b>. "
+ + "You can chose values in a given range "
+ + "either by using the arrow buttons "
+ + "or by typing them in." );
+ vbox.addWidget( spin );
+
+ vbox.addStretch( 1 );
+
+ // Create a tabwidget that switches between multi line edits
+ tabs = new QTabWidget( central );
+ //tabs.setTabPosition( QTabWidget.Bottom );
+ tabs.setMargin( 4 );
+ grid.addMultiCellWidget( tabs, 3, 3, 1, 2 );
+ QMultiLineEdit mle = new QMultiLineEdit( tabs, "multiLineEdit" );
+ edit = mle;
+ mle.setWordWrap( QMultiLineEdit.WidgetWidth );
+ mle.setText("This is a QMultiLineEdit widget, "
+ + "useful for small multi-line "
+ + "input fields.");
+ QToolTip.add( mle, "multi line editor" );
+
+ tabs.addTab( mle, "F&irst");
+
+ mle = new QMultiLineEdit( tabs, "multiLineEdit" );
+ String mleText = "This is another QMultiLineEdit widget.";
+ mleText += "\n";
+ mleText += "Japanese: ";
+ mleText += (char) 0x6a38; // Kanji
+ mleText += "\n";
+ mleText += "Russian:";
+ mleText += (char) 0x042e; // Cyrillic
+ mleText += "\n";
+ mleText += "Norwegian:";
+ mleText += (char) 0x00d8; // Norwegian
+ mleText += "\n";
+ mleText += "Unicode (black square):";
+ mleText += (char) 0x25A0; // BLACK SQUARE
+ mleText += "\n";
+ mle.setText( mleText );
+ QToolTip.add( mle, "second multi line editor" );
+ tabs.addTab( mle, "Se&cond");
+
+
+ // Create a single line edit
+ QLineEdit le = new QLineEdit( central, "lineEdit" );
+
+
+ grid.addMultiCellWidget( le, 4, 4, 1, 2 );
+ connect( le, SIGNAL("textChanged(String)"),
+ SLOT("lineEditTextChanged(String)") );
+ QToolTip.add( le, "single line editor" );
+ QWhatsThis.add( le, "This is a <b>QLineEdit</b>, you can enter a "
+ + "single line of text in it. "
+ + "It also it accepts text drops." );
+
+ grid.setRowStretch(0,0);
+ grid.setRowStretch(1,0);
+ grid.setRowStretch(2,0);
+ grid.setRowStretch(3,1);
+ grid.setRowStretch(4,0);
+
+ grid.setColStretch(0,1);
+ grid.setColStretch(1,1);
+ grid.setColStretch(2,1);
+
+
+ QSplitter split = new QSplitter( Vertical, central, "splitter" );
+ split.setOpaqueResize( true );
+ topLayout.addWidget( split, 1 );
+ QListView lv = new MyListView( split );
+ connect(lv, SIGNAL("selectionChanged()"),
+ this, SLOT(" selectionChanged()") );
+ connect(lv, SIGNAL("selectionChanged(QListViewItem)"),
+ this, SLOT(" selectionChanged(QListViewItem)") );
+ connect(lv, SIGNAL("clicked(QListViewItem)"),
+ this, SLOT(" clicked(QListViewItem)") );
+ connect(lv, SIGNAL("mySelectionChanged(QListViewItem)"),
+ this, SLOT(" mySelectionChanged(QListViewItem)") );
+ lv.addColumn( "One" );
+ lv.addColumn( "Two" );
+ lv.setAllColumnsShowFocus( true );
+
+ QListViewItem lvi= new QListViewItem( lv, "Text", "Text" );
+ lvi= new QListViewItem( lv, "Text", "Other Text" );
+ lvi= new QListViewItem( lv, "Text", "More Text" );
+ lvi= new QListViewItem( lv, "Text", "Extra Text" );
+ lvi.setOpen(true);
+ new QListViewItem( lvi, "SubText", "Additional Text" );
+ lvi= new QListViewItem( lvi, "SubText", "Side Text" );
+ lvi= new QListViewItem( lvi, "SubSubText", "Complimentary Text" );
+
+ QToolTip.add( lv, "list view" );
+ QWhatsThis.add( lv, "This is a <b>QListView</b>, you can display lists "
+ + "(or outline lists) of multiple-column data in it." );
+
+ lv = new QListView( split );
+ lv.addColumn( "Choices" );
+ new QCheckListItem( lv, "Onion", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Artichoke", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Pepper", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Habaneros", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Pineapple", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Ham", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Pepperoni", QCheckListItem.CheckBox );
+ new QCheckListItem( lv, "Garlic", QCheckListItem.CheckBox );
+
+
+ QCheckListItem lit = new QCheckListItem( lv, "Cheese" );
+ lit.setOpen( true );
+ new QCheckListItem( lit, "Cheddar", QCheckListItem.RadioButton );
+ new QCheckListItem( lit, "Mozarella", QCheckListItem.RadioButton );
+ new QCheckListItem( lit, "Jarlsberg", QCheckListItem.RadioButton );
+
+ QToolTip.add( lv, "list view" );
+ QWhatsThis.add( lv, "This is also a <b>QListView</b>, with "
+ + "interactive items." );
+
+ QTextView qmlv = new QTextView( "<hr><h1>QTextView</h1>"
+ + "<p>Qt supports formatted rich text, such "
+ + "as the heading above, <em>emphasized</em> and "
+ + "<b>bold</b> text, via an XML subset.</p> "
+ + "<p>Style sheets are supported.</p>",
+ "", split );
+ qmlv.setFont(new QFont("Charter",11));
+ qmlv.setFrameStyle( QFrame.WinPanel | QFrame.Sunken );
+
+ // Create an label and a message in the status bar
+ // The message is updated when buttons are clicked etc.
+ msg = new QLabel( statusBar(), "message" );
+ msg.setAlignment( AlignCenter );
+ QFont boldfont = new QFont(); boldfont.setWeight(QFont.Bold);
+ msg.setFont( boldfont );
+ statusBar().addWidget( msg, 4 );
+ QToolTip.add( msg, "Message area" );
+
+ QAccel a = new QAccel( this );
+ a.connectItem( a.insertItem( new QKeySequence(Key_F9) ),
+ this, SLOT(" showProperties()") );
+
+ prog = new QProgressBar( statusBar(), "progress" );
+ prog.setTotalSteps( 100 );
+ progress = 64;
+ prog.setProgress( progress );
+ statusBar().addWidget( prog , 1 );
+ QWhatsThis.add( prog, "This is a <b>QProgressBar</b> "
+ + "You can use it to show that a lengthy "
+ + " process is progressing. "
+ + "In this program, nothing much seems to happen." );
+ statusBar().message( "Welcome to Qt", 2000 );
+}
+
+void setStatus(String text)
+{
+ msg.setText(text);
+}
+
+void button1Clicked()
+{
+ msg.setText( "The push button was clicked" );
+ prog.setProgress( ++progress );
+}
+
+
+void movieUpdate( QRect r )
+{
+ // Uncomment this to test animated icons on your window manager
+ //setIcon( movie.framePixmap() );
+}
+
+void movieStatus( int s )
+{
+ switch ( s ) {
+ case QMovie.SourceEmpty:
+ case QMovie.UnrecognizedFormat:
+ {
+ QPixmap pm = new QPixmap("tt-logo.png");
+ movielabel.setPixmap(pm);
+ movielabel.setFixedSize(pm.size());
+ }
+ break;
+ default:
+ if ( movielabel.movie() != null ) // for flicker-free animation:
+ movielabel.setBackgroundMode( NoBackground );
+ }
+}
+
+
+void popupSelected( int selectedId )
+{
+ if ( selectedId == plainStyleID ) {
+ for ( int i = 0; i < textStylePopup.count(); i++ ) {
+ int id = textStylePopup.idAt( i );
+ textStylePopup.setItemChecked( id, false);
+ }
+ } else {
+ textStylePopup.setItemChecked( selectedId, true );
+ }
+}
+
+void checkBoxClicked( int id )
+{
+ String str;
+ str = tr("Check box " + id + " clicked : ");
+ String chk = (cb[0].isChecked() ? "r" : "-")
+ + (cb[1].isChecked() ? "w" : "-")
+ + (cb[2].isChecked() ? "x" : "-");
+ str += chk;
+ msg.setText( str );
+}
+
+
+void edComboBoxItemActivated( String text)
+{
+ String str = tr("Editable Combo Box set to ");
+ str += text;
+ msg.setText( str );
+}
+
+
+void radioButtonClicked( int id )
+{
+ msg.setText( tr("Radio button #" + id + " clicked") );
+}
+
+
+void listBoxItemSelected( int index )
+{
+ msg.setText( tr("List box item " + index +" selected") );
+}
+
+
+void sliderValueChanged( int value )
+{
+ msg.setText( tr("Movie set to " + value + "% of normal speed") );
+ movie.setSpeed( value );
+}
+
+
+void comboBoxItemActivated( int index )
+{
+ msg.setText( tr("Combo box item " + index + " activated") );
+ switch ( index ) {
+ default:
+ case 0:
+ QApplication.setWinStyleHighlightColor( darkBlue() );
+ break;
+ case 1:
+ QApplication.setWinStyleHighlightColor( darkRed() );
+ break;
+ case 2:
+ QApplication.setWinStyleHighlightColor( darkGreen() );
+ break;
+ case 3:
+ QApplication.setWinStyleHighlightColor( blue() );
+ break;
+ case 4:
+ QApplication.setWinStyleHighlightColor( red() );
+ break;
+ }
+}
+
+
+
+void lineEditTextChanged( String newText )
+{
+ String str = "Line edit text: ";
+ str += newText;
+ if ( newText.length() == 1 ) {
+ String u = " (U" + newText + "x" + newText + "x)";
+ str += u;
+ }
+ msg.setText( str );
+}
+
+
+void spinBoxValueChanged( String valueText )
+{
+ String str = "Spin box value: " ;
+ str += valueText;
+ msg.setText( str );
+}
+
+//
+// All application events are passed through this event filter.
+// We're using it to display some information about a clicked
+// widget (right mouse button + CTRL).
+//
+
+
+static boolean identify_now = true;
+
+public boolean eventFilter( QObject obj, QEvent event )
+{
+ if ( event.type() == QEvent.MouseButtonPress && event instanceof QMouseEvent && identify_now ) {
+ QMouseEvent e = (QMouseEvent)event;
+ if ( e.button() == QMouseEvent.RightButton &&
+ (e.state() & QMouseEvent.ControlButton) != 0 ){
+ String str = "The clicked widget is a\n";
+ str += obj.className();
+ str += "\nThe widget's name is\n";
+ if ( !obj.name().equals("") )
+ str += obj.name();
+ else
+ str += "<no name>";
+ identify_now = false; // don't do it in message box
+ QMessageBox.information( (QWidget)obj, "Identify Widget", str );
+ identify_now = true; // allow it again
+ }
+ }
+// return super.eventFilter( obj, event ); // don't eat event
+ return false; // don't eat event
+}
+
+
+void open()
+{
+ QFileDialog.getOpenFileName( "", "Textfiles (.txt)", this );
+}
+
+
+void dummy()
+{
+ QMessageBox.information( this, "Sorry",
+ "This function is not implemented" );
+}
+
+void selectionChanged()
+{
+ //qDebug("selectionChanged");
+}
+void selectionChanged( QListViewItem item)
+{
+ //qDebug("selectionChanged %p", item );
+}
+
+void clicked( QListViewItem item )
+{
+ //qDebug("clicked %p", item );
+}
+
+void mySelectionChanged( QListViewItem item )
+{
+ //qDebug("mySelectionChanged %p", item );
+}
+
+void showProperties()
+{
+ if ( qApp().focusWidget() == null )
+ return;
+ String output = "Properties for class '" + qApp().focusWidget().className() + "'";
+ int i = 0;
+ while( i < (int) qApp().focusWidget().metaObject().numProperties( true ) ) {
+ QMetaProperty p
+ = qApp().focusWidget().metaObject().property( i, true );
+ String tmp = "\n " + (++i) + ": " + p.name()
+ + " (read-" + (p.writable() ? "write" : "only") + ", " + p.type() + ")";
+ output += tmp;
+ }
+ qDebug( output );
+}
+}
diff --git a/qtjava/javalib/examples/widgets/qt.png b/qtjava/javalib/examples/widgets/qt.png
new file mode 100644
index 00000000..ca630a56
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/qt.png
Binary files differ
diff --git a/qtjava/javalib/examples/widgets/trolltech.bmp b/qtjava/javalib/examples/widgets/trolltech.bmp
new file mode 100644
index 00000000..01a56a2e
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/trolltech.bmp
Binary files differ
diff --git a/qtjava/javalib/examples/widgets/trolltech.gif b/qtjava/javalib/examples/widgets/trolltech.gif
new file mode 100644
index 00000000..f674369e
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/trolltech.gif
Binary files differ
diff --git a/qtjava/javalib/examples/widgets/tt-logo.png b/qtjava/javalib/examples/widgets/tt-logo.png
new file mode 100644
index 00000000..a0d9e340
--- /dev/null
+++ b/qtjava/javalib/examples/widgets/tt-logo.png
Binary files differ
diff --git a/qtjava/javalib/examples/wizard/Main.java b/qtjava/javalib/examples/wizard/Main.java
new file mode 100644
index 00000000..9f689214
--- /dev/null
+++ b/qtjava/javalib/examples/wizard/Main.java
@@ -0,0 +1,29 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+public class Main {
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ Wizard wizard = new Wizard();
+ wizard.setCaption("Qt Example - Wizard");
+ wizard.show();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}
diff --git a/qtjava/javalib/examples/wizard/Wizard.java b/qtjava/javalib/examples/wizard/Wizard.java
new file mode 100644
index 00000000..dd0659dc
--- /dev/null
+++ b/qtjava/javalib/examples/wizard/Wizard.java
@@ -0,0 +1,237 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 Trolltech 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.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class Wizard extends QWizard
+{
+protected QHBox page1, page2, page3;
+protected QLineEdit key, firstName, lastName, address, phone, email;
+protected QLabel lKey, lFirstName, lLastName, lAddress, lPhone, lEmail;
+
+
+
+
+Wizard( )
+{
+ this(null, null);
+}
+
+Wizard( QWidget parent, String name )
+{
+ super( parent, name, true );
+ setupPage1();
+ setupPage2();
+ setupPage3();
+ connect(this, SIGNAL("selected(String)"), this, SLOT("doShowPage(String)"));
+ connect(finishButton(), SIGNAL("clicked()"), qApp(), SLOT("quit()"));
+ key.setFocus();
+}
+
+void setupPage1()
+{
+ page1 = new QHBox( this );
+ page1.setSpacing(8);
+
+ QLabel info = new QLabel( page1 );
+ info.setPalette( new QPalette(yellow()) );
+ info.setText( "Enter your personal\n"
+ + "key here.\n\n"
+ + "Your personal key\n"
+ + "consists of 4 digits" );
+ info.setIndent( 8 );
+ info.setMaximumWidth( info.sizeHint().width() );
+
+ QVBox page = new QVBox( page1 );
+
+ QHBox row1 = new QHBox( page );
+
+ new QLabel( "Key:", row1 );
+
+ key = new QLineEdit( row1 );
+ key.setMaxLength( 4 );
+ key.setValidator( new QIntValidator( 1000, 9999, key ) );
+
+ connect( key, SIGNAL(" textChanged( String )"),
+ this, SLOT(" keyChanged( String )") );
+
+ addPage( page1, "Personal Key" );
+
+ setNextEnabled( page1, false );
+ setHelpEnabled( page1, false );
+}
+
+void setupPage2()
+{
+ page2 = new QHBox( this );
+ page2.setSpacing(8);
+
+ QLabel info = new QLabel( page2 );
+ info.setPalette( new QPalette(yellow()) );
+ info.setText( "\n"
+ + " Enter your personal \n"
+ + " data here. \n\n"
+ + " The required fields are \n"
+ + " First Name, Last Name \n"
+ + " and E-Mail. \n" );
+ info.setIndent(8);
+ info.setMaximumWidth( info.sizeHint().width() );
+
+ QVBox page = new QVBox( page2 );
+
+ QHBox row1 = new QHBox( page );
+ QHBox row2 = new QHBox( page );
+ QHBox row3 = new QHBox( page );
+ QHBox row4 = new QHBox( page );
+ QHBox row5 = new QHBox( page );
+
+ QLabel label1 = new QLabel( " First Name: ", row1 );
+ label1.setAlignment( Qt.AlignVCenter );
+ QLabel label2 = new QLabel( " Last Name: ", row2 );
+ label2.setAlignment( Qt.AlignVCenter );
+ QLabel label3 = new QLabel( " Address: ", row3 );
+ label3.setAlignment( Qt.AlignVCenter );
+ QLabel label4 = new QLabel( " Phone Number: ", row4 );
+ label4.setAlignment( Qt.AlignVCenter );
+ QLabel label5 = new QLabel( " E-Mail: ", row5 );
+ label5.setAlignment( Qt.AlignVCenter );
+
+ label1.setMinimumWidth( label4.sizeHint().width() );
+ label2.setMinimumWidth( label4.sizeHint().width() );
+ label3.setMinimumWidth( label4.sizeHint().width() );
+ label4.setMinimumWidth( label4.sizeHint().width() );
+ label5.setMinimumWidth( label4.sizeHint().width() );
+
+ firstName = new QLineEdit( row1 );
+ lastName = new QLineEdit( row2 );
+ address = new QLineEdit( row3 );
+ phone = new QLineEdit( row4 );
+ email = new QLineEdit( row5 );
+
+ connect( firstName, SIGNAL(" textChanged( String )"),
+ this, SLOT(" dataChanged( String )") );
+ connect( lastName, SIGNAL(" textChanged( String )"),
+ this, SLOT(" dataChanged( String )") );
+ connect( email, SIGNAL(" textChanged( String )"),
+ this, SLOT(" dataChanged( String )") );
+
+ addPage( page2, "Personal Data" );
+
+ setHelpEnabled( page2, false );
+}
+
+void setupPage3()
+{
+ page3 = new QHBox( this );
+ page3.setSpacing(8);
+
+ QLabel info = new QLabel( page3 );
+ info.setPalette( new QPalette(yellow()) );
+ info.setText( "\n"
+ + " Look here to see of \n"
+ + " the data you entered \n"
+ + " is correct. To confirm, \n"
+ + " press the [Finish] button \n"
+ + " else go back to correct \n"
+ + " mistakes." );
+ info.setIndent(8);
+ info.setAlignment( AlignTop|AlignLeft );
+ info.setMaximumWidth( info.sizeHint().width() );
+
+ QVBox page = new QVBox( page3 );
+
+ QHBox row1 = new QHBox( page );
+ QHBox row2 = new QHBox( page );
+ QHBox row3 = new QHBox( page );
+ QHBox row4 = new QHBox( page );
+ QHBox row5 = new QHBox( page );
+ QHBox row6 = new QHBox( page );
+
+ QLabel label1 = new QLabel( " Personal Key: ", row1 );
+ label1.setAlignment( Qt.AlignVCenter );
+ QLabel label2 = new QLabel( " First Name: ", row2 );
+ label2.setAlignment( Qt.AlignVCenter );
+ QLabel label3 = new QLabel( " Last Name: ", row3 );
+ label3.setAlignment( Qt.AlignVCenter );
+ QLabel label4 = new QLabel( " Address: ", row4 );
+ label4.setAlignment( Qt.AlignVCenter );
+ QLabel label5 = new QLabel( " Phone Number: ", row5 );
+ label5.setAlignment( Qt.AlignVCenter );
+ QLabel label6 = new QLabel( " E-Mail: ", row6 );
+ label6.setAlignment( Qt.AlignVCenter );
+
+ label1.setMinimumWidth( label1.sizeHint().width() );
+ label2.setMinimumWidth( label1.sizeHint().width() );
+ label3.setMinimumWidth( label1.sizeHint().width() );
+ label4.setMinimumWidth( label1.sizeHint().width() );
+ label5.setMinimumWidth( label1.sizeHint().width() );
+ label6.setMinimumWidth( label1.sizeHint().width() );
+
+ lKey = new QLabel( row1 );
+ lFirstName = new QLabel( row2 );
+ lLastName = new QLabel( row3 );
+ lAddress = new QLabel( row4 );
+ lPhone = new QLabel( row5 );
+ lEmail = new QLabel( row6 );
+
+ addPage( page3, "Finish" );
+
+ setFinish( page3, true );
+ setHelpEnabled( page3, false );
+}
+
+// The QWizard.showPage() virtual method callback isn't implemented in the java
+// bindings yet, so use the selected() signal connected to this slot 'doShowPage()'
+// instead..
+public void doShowPage( String title )
+{
+ QWidget page = currentPage();
+
+ if ( page == page1 ) {
+ } else if ( page == page2 ) {
+ } else if ( page == page3 ) {
+ lKey.setText( key.text() );
+ lFirstName.setText( firstName.text() );
+ lLastName.setText( lastName.text() );
+ lAddress.setText( address.text() );
+ lPhone.setText( phone.text() );
+ lEmail.setText( email.text() );
+ }
+
+ if ( page == page1 ) {
+ keyChanged( key.text() );
+ key.setFocus();
+ } else if ( page == page2 ) {
+ dataChanged( firstName.text() );
+ firstName.setFocus();
+ } else if ( page == page3 ) {
+ finishButton().setEnabled( true );
+ finishButton().setFocus();
+ }
+}
+
+void keyChanged( String text )
+{
+ StringBuffer t = new StringBuffer(text);
+ int[] p = { 0 };
+ boolean on = ( key.validator().validate(t, p) == QValidator.Acceptable );
+ nextButton().setEnabled( on );
+}
+
+void dataChanged( String s )
+{
+ if ( !firstName.text().equals("") &&
+ !lastName.text().equals("") &&
+ !email.text().equals("") )
+ nextButton().setEnabled( true );
+ else
+ nextButton().setEnabled( false );
+}
+}