diff options
Diffstat (limited to 'qtjava/javalib/examples/mdi/MDIWindow.java')
-rw-r--r-- | qtjava/javalib/examples/mdi/MDIWindow.java | 135 |
1 files changed, 135 insertions, 0 deletions
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 ); + } +} + +} + |