1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#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 );
}
}
|