You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qt3/examples/chart/chartform_files.cpp

114 lines
2.7 KiB

#include "canvasview.h"
#include "chartform.h"
#include <qfile.h>
#include <qfiledialog.h>
#include <qpainter.h>
#include <qprinter.h>
#include <qstatusbar.h>
void ChartForm::load( const QString& filename )
{
QFile file( filename );
if ( !file.open( IO_ReadOnly ) ) {
statusBar()->message( QString( "Failed to load \'%1\'" ).
arg( filename ), 2000 );
return;
}
init(); // Make sure we have colours
m_filename = filename;
QTextStream ts( &file );
Element element;
int errors = 0;
int i = 0;
while ( !ts.eof() ) {
ts >> element;
if ( element.isValid() )
m_elements[i++] = element;
else
errors++;
if ( i == MAX_ELEMENTS ) {
statusBar()->message(
QString( "Read maximum number of elements (%1)"
" discarding others" ).arg( i ), 2000 );
break;
}
}
file.close();
QString bad = "";
if ( errors ) {
bad = QString( "; skipped " ) + QString::number( errors ) + " bad record";
if ( errors > 1 )
bad += "s";
}
statusBar()->message( QString( "Read %1 values from \'%2\'%3" ).
arg( i ).arg( filename ).arg( bad ), 3000 );
setCaption( QString( "Chart -- %1" ).arg( filename ) );
updateRecentFiles( filename );
drawElements();
m_changed = FALSE;
}
void ChartForm::fileSave()
{
if ( m_filename.isEmpty() ) {
fileSaveAs();
return;
}
QFile file( m_filename );
if ( !file.open( IO_WriteOnly ) ) {
statusBar()->message( QString( "Failed to save \'%1\'" ).
arg( m_filename ), 2000 );
return;
}
QTextStream ts( &file );
for ( int i = 0; i < MAX_ELEMENTS; ++i )
if ( m_elements[i].isValid() )
ts << m_elements[i];
file.close();
setCaption( QString( "Chart -- %1" ).arg( m_filename ) );
statusBar()->message( QString( "Saved \'%1\'" ).arg( m_filename ), 2000 );
m_changed = FALSE;
}
void ChartForm::fileSaveAsPixmap()
{
QString filename = QFileDialog::getSaveFileName(
QString::null, "Images (*.png *.xpm *.jpg)",
this, "file save as bitmap",
"Chart -- File Save As Bitmap" );
if ( QPixmap::grabWidget( m_canvasView ).
save( filename,
filename.mid( filename.findRev( '.' ) + 1 ).upper() ) )
statusBar()->message( QString( "Wrote \'%1\'" ).arg( filename ), 2000 );
else
statusBar()->message( QString( "Failed to write \'%1\'" ).
arg( filename ), 2000 );
}
void ChartForm::filePrint()
{
if ( !m_printer )
m_printer = new QPrinter;
if ( m_printer->setup() ) {
QPainter painter( m_printer );
m_canvas->drawArea( QRect( 0, 0, m_canvas->width(), m_canvas->height() ),
&painter, FALSE );
if ( !m_printer->outputFileName().isEmpty() )
statusBar()->message( QString( "Printed \'%1\'" ).
arg( m_printer->outputFileName() ), 2000 );
}
}