~ubuntu-branches/ubuntu/lucid/skrooge/lucid

« back to all changes in this revision

Viewing changes to skgbasegui/skggraphicsview.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Mercatante
  • Date: 2009-05-02 06:47:15 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20090502064715-b7l4eciitw3asos3
Tags: 0.2.7-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
#include <QSvgGenerator>
37
37
#include <qmath.h>
38
38
 
39
 
SKGGraphicsView::SKGGraphicsView(QWidget *parent)
40
 
                : QWidget(parent)
 
39
SKGGraphicsView::SKGGraphicsView ( QWidget *parent )
 
40
                : QWidget ( parent )
41
41
{
42
 
        ui.setupUi(this);
 
42
        ui.setupUi ( this );
43
43
 
44
 
        ui.kGraphicsView->setBackgroundBrush(Qt::white);
 
44
        ui.kGraphicsView->setBackgroundBrush ( Qt::white );
45
45
 
46
46
        //Set icons
47
 
        ui.kZoomIn->setIcon(KIcon("zoom-in"));
48
 
        ui.kZoomOut->setIcon(KIcon("zoom-out"));
49
 
        ui.kZoomOriginal->setIcon(KIcon("zoom-original"));
50
 
        ui.kPrint->setIcon(KIcon("printer"));
51
 
        ui.kCopy->setIcon(KIcon("edit-copy"));
 
47
        ui.kZoomIn->setIcon ( KIcon ( "zoom-in" ) );
 
48
        ui.kZoomOut->setIcon ( KIcon ( "zoom-out" ) );
 
49
        ui.kZoomOriginal->setIcon ( KIcon ( "zoom-original" ) );
 
50
        ui.kPrint->setIcon ( KIcon ( "printer" ) );
 
51
        ui.kCopy->setIcon ( KIcon ( "edit-copy" ) );
52
52
 
53
53
        //Build contextual menu
54
 
        ui.kGraphicsView->setContextMenuPolicy(Qt::CustomContextMenu);
55
 
        connect(ui.kGraphicsView, SIGNAL(customContextMenuRequested(const QPoint & ) ),this,SLOT(showMenu( const QPoint& )));
56
 
 
57
 
        menu = new KMenu(ui.kGraphicsView);
58
 
        menu->addTitle(i18n("Graphic"));
59
 
 
60
 
        QAction* actZoomOriginal = menu->addAction(ui.kZoomOriginal->icon(), ui.kZoomOriginal->toolTip());
61
 
        connect(actZoomOriginal, SIGNAL(triggered(bool)), this, SLOT(onZoomOriginal()));
62
 
 
63
 
        QAction* actZoomIn = menu->addAction(ui.kZoomIn->icon(), ui.kZoomIn->toolTip());
64
 
        connect(actZoomIn, SIGNAL(triggered(bool)), this, SLOT(onZoomIn()));
65
 
 
66
 
        QAction* actZoomOut = menu->addAction(ui.kZoomOut->icon(), ui.kZoomOut->toolTip());
67
 
        connect(actZoomOut, SIGNAL(triggered(bool)), this, SLOT(onZoomOut()));
68
 
 
69
 
        menu->addSeparator();
70
 
 
71
 
        QAction* actCopy = menu->addAction(ui.kCopy->icon(), ui.kCopy->toolTip());
72
 
        connect(actCopy, SIGNAL(triggered(bool)), this, SLOT(onCopy()));
73
 
 
74
 
        QAction* actPrint = menu->addAction(ui.kPrint->icon(), ui.kPrint->toolTip());
75
 
        connect(actPrint, SIGNAL(triggered(bool)), this, SLOT(onPrint()));
76
 
 
77
 
        QMenu* exp=menu->addMenu(i18n("Export"));
78
 
 
79
 
        QAction* actPDF = exp->addAction(KIcon("application-pdf"), i18n("Export PDF..."));
80
 
        connect(actPDF, SIGNAL(triggered(bool)), this, SLOT(onSavePDF()));
81
 
 
82
 
        QAction* actSvg = exp->addAction(KIcon("image-svg+xml"), i18n("Export SVG..."));
83
 
        connect(actSvg, SIGNAL(triggered(bool)), this, SLOT(onSaveSvg()));
84
 
 
85
 
        QAction* actImage = exp->addAction(KIcon("image-png"), i18n("Export image..."));
86
 
        connect(actImage, SIGNAL(triggered(bool)), this, SLOT(onSaveImage()));
87
 
 
88
 
        menu->addSeparator();
89
 
 
90
 
        actShowToolBar = menu->addAction(i18n("Show tool bar"));
91
 
        actShowToolBar->setCheckable(true);
92
 
        actShowToolBar->setChecked(true);
93
 
        connect(actShowToolBar, SIGNAL(triggered(bool)), this, SLOT(onSwitchToolBarVisibility()));
 
54
        ui.kGraphicsView->setContextMenuPolicy ( Qt::CustomContextMenu );
 
55
 
 
56
        mainMenu = new KMenu ( ui.kGraphicsView );
 
57
 
 
58
        QAction* actZoomOriginal = mainMenu->addAction ( ui.kZoomOriginal->icon(), ui.kZoomOriginal->toolTip() );
 
59
        connect ( actZoomOriginal, SIGNAL ( triggered ( bool ) ), this, SLOT ( onZoomOriginal() ) );
 
60
 
 
61
        QAction* actZoomIn = mainMenu->addAction ( ui.kZoomIn->icon(), ui.kZoomIn->toolTip() );
 
62
        connect ( actZoomIn, SIGNAL ( triggered ( bool ) ), this, SLOT ( onZoomIn() ) );
 
63
 
 
64
        QAction* actZoomOut = mainMenu->addAction ( ui.kZoomOut->icon(), ui.kZoomOut->toolTip() );
 
65
        connect ( actZoomOut, SIGNAL ( triggered ( bool ) ), this, SLOT ( onZoomOut() ) );
 
66
 
 
67
        mainMenu->addSeparator();
 
68
 
 
69
        QAction* actCopy = mainMenu->addAction ( ui.kCopy->icon(), ui.kCopy->toolTip() );
 
70
        connect ( actCopy, SIGNAL ( triggered ( bool ) ), this, SLOT ( onCopy() ) );
 
71
 
 
72
        QAction* actPrint = mainMenu->addAction ( ui.kPrint->icon(), ui.kPrint->toolTip() );
 
73
        connect ( actPrint, SIGNAL ( triggered ( bool ) ), this, SLOT ( onPrint() ) );
 
74
 
 
75
        QMenu* exp=mainMenu->addMenu ( i18n ( "Export" ) );
 
76
 
 
77
        QAction* actPDF = exp->addAction ( KIcon ( "application-pdf" ), i18n ( "Export PDF..." ) );
 
78
        connect ( actPDF, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSavePDF() ) );
 
79
 
 
80
        QAction* actSvg = exp->addAction ( KIcon ( "image-svg+xml" ), i18n ( "Export SVG..." ) );
 
81
        connect ( actSvg, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSaveSvg() ) );
 
82
 
 
83
        QAction* actImage = exp->addAction ( KIcon ( "image-png" ), i18n ( "Export image..." ) );
 
84
        connect ( actImage, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSaveImage() ) );
 
85
 
 
86
        mainMenu->addSeparator();
 
87
 
 
88
        actShowToolBar = mainMenu->addAction ( i18n ( "Show tool bar" ) );
 
89
        if ( actShowToolBar ) {
 
90
                actShowToolBar->setCheckable ( true );
 
91
                actShowToolBar->setChecked ( true );
 
92
                connect ( actShowToolBar, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSwitchToolBarVisibility() ) );
 
93
        }
 
94
 
 
95
        actAntialiasing = mainMenu->addAction ( i18n ( "Antialiasing" ) );
 
96
        if ( actAntialiasing ) {
 
97
                actAntialiasing->setCheckable ( true );
 
98
                actAntialiasing->setChecked ( true );
 
99
                onSwitchAntialiasing();
 
100
                connect ( actAntialiasing, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSwitchAntialiasing() ) );
 
101
        }
 
102
 
 
103
        connect ( ui.kGraphicsView, SIGNAL ( customContextMenuRequested ( const QPoint & ) ),this,SLOT ( showMenu ( const QPoint& ) ) );
94
104
}
95
105
 
96
106
SKGGraphicsView::~SKGGraphicsView()
97
107
{
 
108
        actAntialiasing=NULL;
 
109
        actShowToolBar=NULL;
 
110
        mainMenu=NULL;
98
111
}
99
112
 
100
113
void SKGGraphicsView::setScene ( QGraphicsScene * iScene )
101
114
{
102
 
        ui.kGraphicsView->setScene(iScene);
 
115
        ui.kGraphicsView->setScene ( iScene );
103
116
}
104
117
 
105
118
QGraphicsView* SKGGraphicsView::graphicsView()
109
122
 
110
123
QString SKGGraphicsView::getState() const
111
124
{
112
 
        SKGTRACEIN(10, "SKGGraphicsView::getState");
113
 
        QDomDocument doc("SKGML");
114
 
        QDomElement root = doc.createElement("parameters");
115
 
        doc.appendChild(root);
 
125
        SKGTRACEIN ( 10, "SKGGraphicsView::getState" );
 
126
        QDomDocument doc ( "SKGML" );
 
127
        QDomElement root = doc.createElement ( "parameters" );
 
128
        doc.appendChild ( root );
116
129
 
117
 
        root.setAttribute("isToolBarVisible", isToolBarVisible() ? "Y" : "N");
 
130
        root.setAttribute ( "isToolBarVisible", isToolBarVisible() ? "Y" : "N" );
 
131
        if ( actAntialiasing ) root.setAttribute ( "antialiasing", actAntialiasing->isChecked() ? "Y" : "N" );
118
132
 
119
133
        return doc.toString();
120
134
}
121
135
 
122
 
void SKGGraphicsView::setState(const QString& iState )
 
136
void SKGGraphicsView::setState ( const QString& iState )
123
137
{
124
 
        SKGTRACEIN(10, "SKGGraphicsView::setState");
125
 
        QDomDocument doc("SKGML");
126
 
        if (doc.setContent(iState)) {
 
138
        SKGTRACEIN ( 10, "SKGGraphicsView::setState" );
 
139
        QDomDocument doc ( "SKGML" );
 
140
        if ( doc.setContent ( iState ) ) {
127
141
                QDomElement root = doc.documentElement();
128
142
 
129
 
                QString isToolBarVisible=root.attribute ("isToolBarVisible");
130
 
                if (!isToolBarVisible.isEmpty()) setToolBarVisible(isToolBarVisible=="Y");
 
143
                QString isToolBarVisible=root.attribute ( "isToolBarVisible" );
 
144
                if ( !isToolBarVisible.isEmpty() ) setToolBarVisible ( isToolBarVisible=="Y" );
 
145
 
 
146
                QString antialiasing=root.attribute ( "antialiasing" );
 
147
                if ( !antialiasing.isEmpty() && actAntialiasing ) actAntialiasing->setChecked ( antialiasing=="Y" );
131
148
        }
132
149
}
133
150
 
134
151
KMenu* SKGGraphicsView::getContextualMenu() const
135
152
{
136
 
        return menu;
137
 
}
138
 
 
139
 
void SKGGraphicsView::showMenu(const QPoint& pos)
140
 
{
141
 
        menu->popup(this->mapToGlobal(pos));
142
 
}
143
 
 
144
 
void SKGGraphicsView::setToolBarVisible(bool iVisibility)
145
 
{
146
 
        ui.toolBar->setVisible(iVisibility);
147
 
        actShowToolBar->setChecked(iVisibility);
 
153
        return mainMenu;
 
154
}
 
155
 
 
156
void SKGGraphicsView::showMenu ( const QPoint& pos )
 
157
{
 
158
        if ( mainMenu ) mainMenu->popup ( ui.kGraphicsView->mapToGlobal ( pos ) );
 
159
}
 
160
 
 
161
void SKGGraphicsView::setToolBarVisible ( bool iVisibility )
 
162
{
 
163
        ui.toolBar->setVisible ( iVisibility );
 
164
        if ( actShowToolBar ) actShowToolBar->setChecked ( iVisibility );
148
165
}
149
166
 
150
167
bool SKGGraphicsView::isToolBarVisible() const
154
171
 
155
172
void SKGGraphicsView::onSwitchToolBarVisibility()
156
173
{
157
 
        setToolBarVisible(!isToolBarVisible());
 
174
        setToolBarVisible ( !isToolBarVisible() );
 
175
}
 
176
 
 
177
void SKGGraphicsView::onSwitchAntialiasing()
 
178
{
 
179
        if ( actAntialiasing ) ui.kGraphicsView->setRenderHint ( QPainter::Antialiasing, actAntialiasing->isChecked() );
158
180
}
159
181
 
160
182
void SKGGraphicsView::onZoom()
161
183
{
162
 
        _SKGTRACEIN(10, "SKGGraphicsView::onZoom");
 
184
        _SKGTRACEIN ( 10, "SKGGraphicsView::onZoom" );
163
185
 
164
186
        int sliderValue=ui.kZoomSlider->value();
165
 
        qreal scale = qPow(qreal(1.5), ( sliderValue) / qreal(50));
 
187
        qreal scale = qPow ( qreal ( 1.5 ), ( sliderValue ) / qreal ( 50 ) );
166
188
        QMatrix matrix;
167
 
        matrix.scale(scale*originalMatrix.m11(), scale*originalMatrix.m22());
 
189
        matrix.scale ( scale*originalMatrix.m11(), scale*originalMatrix.m22() );
168
190
 
169
 
        ui.kGraphicsView->setMatrix(matrix);
170
 
        if (sliderValue==0 && ui.kGraphicsView->scene()) {
171
 
                ui.kGraphicsView->fitInView(ui.kGraphicsView->scene()->sceneRect(), Qt::KeepAspectRatio);
 
191
        ui.kGraphicsView->setMatrix ( matrix );
 
192
        if ( sliderValue==0 && ui.kGraphicsView->scene() ) {
 
193
                ui.kGraphicsView->fitInView ( ui.kGraphicsView->scene()->sceneRect(), Qt::KeepAspectRatio );
172
194
                originalMatrix=ui.kGraphicsView->matrix();
173
195
        }
174
196
}
175
197
 
176
198
void SKGGraphicsView::onZoomIn()
177
199
{
178
 
        _SKGTRACEIN(10, "SKGGraphicsView::onZoomIn");
179
 
        ui.kZoomSlider->setValue(ui.kZoomSlider->value() + 50);
 
200
        _SKGTRACEIN ( 10, "SKGGraphicsView::onZoomIn" );
 
201
        ui.kZoomSlider->setValue ( ui.kZoomSlider->value() + 50 );
180
202
}
181
203
 
182
204
void SKGGraphicsView::onZoomOut()
183
205
{
184
 
        _SKGTRACEIN(10, "SKGGraphicsView::onZoomOut");
185
 
        ui.kZoomSlider->setValue(ui.kZoomSlider->value() - 50);
 
206
        _SKGTRACEIN ( 10, "SKGGraphicsView::onZoomOut" );
 
207
        ui.kZoomSlider->setValue ( ui.kZoomSlider->value() - 50 );
186
208
}
187
209
 
188
210
void SKGGraphicsView::onZoomOriginal()
189
211
{
190
 
        _SKGTRACEIN(10, "SKGGraphicsView::onZoomOriginal");
191
 
        ui.kZoomSlider->setValue(0);
 
212
        _SKGTRACEIN ( 10, "SKGGraphicsView::onZoomOriginal" );
 
213
        ui.kZoomSlider->setValue ( 0 );
192
214
        onZoom();
193
215
}
194
216
 
195
217
void SKGGraphicsView::onPrint()
196
218
{
197
 
        _SKGTRACEIN(10, "SKGGraphicsView::onPrint");
 
219
        _SKGTRACEIN ( 10, "SKGGraphicsView::onPrint" );
198
220
        QPrinter printer;
199
 
        QPrintDialog dialog(&printer, this);
200
 
        if (dialog.exec() == QDialog::Accepted) {
201
 
                QPainter painter(&printer);
202
 
                ui.kGraphicsView->render(&painter);
 
221
        QPrintDialog dialog ( &printer, this );
 
222
        if ( dialog.exec() == QDialog::Accepted ) {
 
223
                QPainter painter ( &printer );
 
224
                ui.kGraphicsView->render ( &painter );
203
225
        }
204
226
}
205
227
 
206
228
void SKGGraphicsView::onSavePDF()
207
229
{
208
 
        _SKGTRACEIN(10, "SKGGraphicsView::onSavePDF");
209
 
        QString fileName=SKGMainPanel::getSaveFileName(KUrl("kfiledialog:///IMPEXP"), "application/pdf", this);
210
 
        if (fileName.isEmpty()) return;
 
230
        _SKGTRACEIN ( 10, "SKGGraphicsView::onSavePDF" );
 
231
        QString fileName=SKGMainPanel::getSaveFileName ( KUrl ( "kfiledialog:///IMPEXP" ), "application/pdf", this );
 
232
        if ( fileName.isEmpty() ) return;
211
233
 
212
234
        {
213
235
                QPrinter printer;
214
 
                printer.setOutputFileName(fileName);
215
 
                QPainter painter(&printer);
216
 
                ui.kGraphicsView->render(&painter);
 
236
                printer.setOutputFileName ( fileName );
 
237
                QPainter painter ( &printer );
 
238
                ui.kGraphicsView->render ( &painter );
217
239
        }
218
 
        QDesktopServices::openUrl(QUrl(fileName));
 
240
        QDesktopServices::openUrl ( QUrl ( fileName ) );
219
241
}
220
242
 
221
243
void SKGGraphicsView::onSaveSvg()
222
244
{
223
 
        _SKGTRACEIN(10, "SKGGraphicsView::onSaveSvg");
224
 
        QString fileName=SKGMainPanel::getSaveFileName(KUrl("kfiledialog:///IMPEXP"), "image/svg+xml", this);
225
 
        if (fileName.isEmpty()) return;
 
245
        _SKGTRACEIN ( 10, "SKGGraphicsView::onSaveSvg" );
 
246
        QString fileName=SKGMainPanel::getSaveFileName ( KUrl ( "kfiledialog:///IMPEXP" ), "image/svg+xml", this );
 
247
        if ( fileName.isEmpty() ) return;
226
248
 
227
249
        {
228
250
                QSvgGenerator generator;
229
 
                generator.setFileName(fileName);
230
 
                QPainter painter(&generator);
231
 
                ui.kGraphicsView->render(&painter);
 
251
                generator.setFileName ( fileName );
 
252
                QPainter painter ( &generator );
 
253
                ui.kGraphicsView->render ( &painter );
232
254
        }
233
 
        QDesktopServices::openUrl(QUrl(fileName));
 
255
        QDesktopServices::openUrl ( QUrl ( fileName ) );
234
256
}
235
257
 
236
258
void SKGGraphicsView::onSaveImage()
237
259
{
238
 
        _SKGTRACEIN(10, "SKGGraphicsView::onCopy");
239
 
        QString fileName=SKGMainPanel::getSaveFileName(KUrl("kfiledialog:///IMPEXP"), "image/png image/jpeg image/gif image/tiff" , this);
240
 
        if (fileName.isEmpty()) return;
 
260
        _SKGTRACEIN ( 10, "SKGGraphicsView::onCopy" );
 
261
        QString fileName=SKGMainPanel::getSaveFileName ( KUrl ( "kfiledialog:///IMPEXP" ), "image/png image/jpeg image/gif image/tiff" , this );
 
262
        if ( fileName.isEmpty() ) return;
241
263
 
242
264
        {
243
 
                QImage image(ui.kGraphicsView->size(), QImage::Format_ARGB32);
244
 
                QPainter painter(&image);
245
 
                ui.kGraphicsView->render(&painter);
246
 
                image.save(fileName);
 
265
                QImage image ( ui.kGraphicsView->size(), QImage::Format_ARGB32 );
 
266
                QPainter painter ( &image );
 
267
                ui.kGraphicsView->render ( &painter );
 
268
                image.save ( fileName );
247
269
        }
248
 
        QDesktopServices::openUrl(QUrl(fileName));
 
270
        QDesktopServices::openUrl ( QUrl ( fileName ) );
249
271
}
250
272
 
251
273
void SKGGraphicsView::onCopy()
252
274
{
253
 
        _SKGTRACEIN(10, "SKGGraphicsView::onCopy");
 
275
        _SKGTRACEIN ( 10, "SKGGraphicsView::onCopy" );
254
276
        QClipboard *clipboard = QApplication::clipboard();
255
 
        if (clipboard) {
 
277
        if ( clipboard ) {
256
278
 
257
 
                QImage image(ui.kGraphicsView->size(), QImage::Format_ARGB32);
258
 
                QPainter painter(&image);
259
 
                ui.kGraphicsView->render(&painter);
260
 
                clipboard->setImage(image);
 
279
                QImage image ( ui.kGraphicsView->size(), QImage::Format_ARGB32 );
 
280
                QPainter painter ( &image );
 
281
                ui.kGraphicsView->render ( &painter );
 
282
                clipboard->setImage ( image );
261
283
        }
262
284
}
263
285
#include "skggraphicsview.moc"