diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /qtjava/javalib/examples | |
download | tdebindings-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')
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 Binary files differnew file mode 100644 index 00000000..220861e2 --- /dev/null +++ b/qtjava/javalib/examples/dragdrop/trolltech.bmp diff --git a/qtjava/javalib/examples/dragdrop/trolltech.gif b/qtjava/javalib/examples/dragdrop/trolltech.gif Binary files differnew file mode 100644 index 00000000..f674369e --- /dev/null +++ b/qtjava/javalib/examples/dragdrop/trolltech.gif 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 Binary files differnew file mode 100644 index 00000000..a0141b75 --- /dev/null +++ b/qtjava/javalib/examples/picture/car_orig.pic diff --git a/qtjava/javalib/examples/picture/flag.bmp b/qtjava/javalib/examples/picture/flag.bmp Binary files differnew file mode 100644 index 00000000..b36afdfb --- /dev/null +++ b/qtjava/javalib/examples/picture/flag.bmp 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 Binary files differnew file mode 100644 index 00000000..1f8bb76c --- /dev/null +++ b/qtjava/javalib/examples/qwerty/msunicode.txt diff --git a/qtjava/javalib/examples/qwerty/unicode.txt b/qtjava/javalib/examples/qwerty/unicode.txt Binary files differnew file mode 100644 index 00000000..1d08d414 --- /dev/null +++ b/qtjava/javalib/examples/qwerty/unicode.txt 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 Binary files differnew file mode 100644 index 00000000..49ea3098 --- /dev/null +++ b/qtjava/javalib/examples/richtext/marble.png 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" + + " \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 Binary files differnew file mode 100644 index 00000000..30b84e30 --- /dev/null +++ b/qtjava/javalib/examples/sound/sounds/1.wav diff --git a/qtjava/javalib/examples/sound/sounds/2.wav b/qtjava/javalib/examples/sound/sounds/2.wav Binary files differnew file mode 100644 index 00000000..dd32e345 --- /dev/null +++ b/qtjava/javalib/examples/sound/sounds/2.wav diff --git a/qtjava/javalib/examples/sound/sounds/3.wav b/qtjava/javalib/examples/sound/sounds/3.wav Binary files differnew file mode 100644 index 00000000..5213eb55 --- /dev/null +++ b/qtjava/javalib/examples/sound/sounds/3.wav diff --git a/qtjava/javalib/examples/sound/sounds/4.wav b/qtjava/javalib/examples/sound/sounds/4.wav Binary files differnew file mode 100644 index 00000000..e31b0609 --- /dev/null +++ b/qtjava/javalib/examples/sound/sounds/4.wav 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 <<a href="qlabel-h.html">qlabel.h</a>></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 & 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 &, 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 & ) </div> +<li><div class="fn">virtual void <a href="#f3f301"><b>setPixmap</b></a> ( const QPixmap & ) </div> +<li><div class="fn">virtual void <a href="#60de9f"><b>setMovie</b></a> ( const QMovie & ) </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> +<tr><td>TextFormat<td>textFormat<td>textFormat<td>setTextFormat<td> +<tr><td>QPixmap<td>pixmap<td>pixmap<td>setPixmap<td> +<tr><td>bool<td>scaledContents<td>hasScaledContents<td>setScaledContents<td> +<tr><td>Alignment<td>alignment<td>alignment<td>setAlignment<td> +<tr><td>int<td>indent<td>indent<td>setIndent<td> +</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-><a href="qframe.html#c0d758">setFrameStyle</a>( QFrame::Panel | QFrame::Sunken ); + label-><a href="#dffb43">setText</a>( "first line\nsecond line" ); + label-><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, "&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> & 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> & 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> & ) <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>( "&Name:", this ); + nameLb-><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>( "&Phone:", this ); + phoneLb-><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> & 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> & 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> & 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 © 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 Binary files differnew file mode 100644 index 00000000..7eab1410 --- /dev/null +++ b/qtjava/javalib/examples/tux/tux.png 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 Binary files differnew file mode 100644 index 00000000..ca630a56 --- /dev/null +++ b/qtjava/javalib/examples/widgets/qt.png diff --git a/qtjava/javalib/examples/widgets/trolltech.bmp b/qtjava/javalib/examples/widgets/trolltech.bmp Binary files differnew file mode 100644 index 00000000..01a56a2e --- /dev/null +++ b/qtjava/javalib/examples/widgets/trolltech.bmp diff --git a/qtjava/javalib/examples/widgets/trolltech.gif b/qtjava/javalib/examples/widgets/trolltech.gif Binary files differnew file mode 100644 index 00000000..f674369e --- /dev/null +++ b/qtjava/javalib/examples/widgets/trolltech.gif diff --git a/qtjava/javalib/examples/widgets/tt-logo.png b/qtjava/javalib/examples/widgets/tt-logo.png Binary files differnew file mode 100644 index 00000000..a0d9e340 --- /dev/null +++ b/qtjava/javalib/examples/widgets/tt-logo.png 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 ); +} +} |