36
36
#include <QSvgGenerator>
39
SKGGraphicsView::SKGGraphicsView(QWidget *parent)
39
SKGGraphicsView::SKGGraphicsView ( QWidget *parent )
44
ui.kGraphicsView->setBackgroundBrush(Qt::white);
44
ui.kGraphicsView->setBackgroundBrush ( Qt::white );
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" ) );
53
53
//Build contextual menu
54
ui.kGraphicsView->setContextMenuPolicy(Qt::CustomContextMenu);
55
connect(ui.kGraphicsView, SIGNAL(customContextMenuRequested(const QPoint & ) ),this,SLOT(showMenu( const QPoint& )));
57
menu = new KMenu(ui.kGraphicsView);
58
menu->addTitle(i18n("Graphic"));
60
QAction* actZoomOriginal = menu->addAction(ui.kZoomOriginal->icon(), ui.kZoomOriginal->toolTip());
61
connect(actZoomOriginal, SIGNAL(triggered(bool)), this, SLOT(onZoomOriginal()));
63
QAction* actZoomIn = menu->addAction(ui.kZoomIn->icon(), ui.kZoomIn->toolTip());
64
connect(actZoomIn, SIGNAL(triggered(bool)), this, SLOT(onZoomIn()));
66
QAction* actZoomOut = menu->addAction(ui.kZoomOut->icon(), ui.kZoomOut->toolTip());
67
connect(actZoomOut, SIGNAL(triggered(bool)), this, SLOT(onZoomOut()));
71
QAction* actCopy = menu->addAction(ui.kCopy->icon(), ui.kCopy->toolTip());
72
connect(actCopy, SIGNAL(triggered(bool)), this, SLOT(onCopy()));
74
QAction* actPrint = menu->addAction(ui.kPrint->icon(), ui.kPrint->toolTip());
75
connect(actPrint, SIGNAL(triggered(bool)), this, SLOT(onPrint()));
77
QMenu* exp=menu->addMenu(i18n("Export"));
79
QAction* actPDF = exp->addAction(KIcon("application-pdf"), i18n("Export PDF..."));
80
connect(actPDF, SIGNAL(triggered(bool)), this, SLOT(onSavePDF()));
82
QAction* actSvg = exp->addAction(KIcon("image-svg+xml"), i18n("Export SVG..."));
83
connect(actSvg, SIGNAL(triggered(bool)), this, SLOT(onSaveSvg()));
85
QAction* actImage = exp->addAction(KIcon("image-png"), i18n("Export image..."));
86
connect(actImage, SIGNAL(triggered(bool)), this, SLOT(onSaveImage()));
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 );
56
mainMenu = new KMenu ( ui.kGraphicsView );
58
QAction* actZoomOriginal = mainMenu->addAction ( ui.kZoomOriginal->icon(), ui.kZoomOriginal->toolTip() );
59
connect ( actZoomOriginal, SIGNAL ( triggered ( bool ) ), this, SLOT ( onZoomOriginal() ) );
61
QAction* actZoomIn = mainMenu->addAction ( ui.kZoomIn->icon(), ui.kZoomIn->toolTip() );
62
connect ( actZoomIn, SIGNAL ( triggered ( bool ) ), this, SLOT ( onZoomIn() ) );
64
QAction* actZoomOut = mainMenu->addAction ( ui.kZoomOut->icon(), ui.kZoomOut->toolTip() );
65
connect ( actZoomOut, SIGNAL ( triggered ( bool ) ), this, SLOT ( onZoomOut() ) );
67
mainMenu->addSeparator();
69
QAction* actCopy = mainMenu->addAction ( ui.kCopy->icon(), ui.kCopy->toolTip() );
70
connect ( actCopy, SIGNAL ( triggered ( bool ) ), this, SLOT ( onCopy() ) );
72
QAction* actPrint = mainMenu->addAction ( ui.kPrint->icon(), ui.kPrint->toolTip() );
73
connect ( actPrint, SIGNAL ( triggered ( bool ) ), this, SLOT ( onPrint() ) );
75
QMenu* exp=mainMenu->addMenu ( i18n ( "Export" ) );
77
QAction* actPDF = exp->addAction ( KIcon ( "application-pdf" ), i18n ( "Export PDF..." ) );
78
connect ( actPDF, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSavePDF() ) );
80
QAction* actSvg = exp->addAction ( KIcon ( "image-svg+xml" ), i18n ( "Export SVG..." ) );
81
connect ( actSvg, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSaveSvg() ) );
83
QAction* actImage = exp->addAction ( KIcon ( "image-png" ), i18n ( "Export image..." ) );
84
connect ( actImage, SIGNAL ( triggered ( bool ) ), this, SLOT ( onSaveImage() ) );
86
mainMenu->addSeparator();
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() ) );
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() ) );
103
connect ( ui.kGraphicsView, SIGNAL ( customContextMenuRequested ( const QPoint & ) ),this,SLOT ( showMenu ( const QPoint& ) ) );
96
106
SKGGraphicsView::~SKGGraphicsView()
108
actAntialiasing=NULL;
100
113
void SKGGraphicsView::setScene ( QGraphicsScene * iScene )
102
ui.kGraphicsView->setScene(iScene);
115
ui.kGraphicsView->setScene ( iScene );
105
118
QGraphicsView* SKGGraphicsView::graphicsView()
110
123
QString SKGGraphicsView::getState() const
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 );
117
root.setAttribute("isToolBarVisible", isToolBarVisible() ? "Y" : "N");
130
root.setAttribute ( "isToolBarVisible", isToolBarVisible() ? "Y" : "N" );
131
if ( actAntialiasing ) root.setAttribute ( "antialiasing", actAntialiasing->isChecked() ? "Y" : "N" );
119
133
return doc.toString();
122
void SKGGraphicsView::setState(const QString& iState )
136
void SKGGraphicsView::setState ( const QString& iState )
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();
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" );
146
QString antialiasing=root.attribute ( "antialiasing" );
147
if ( !antialiasing.isEmpty() && actAntialiasing ) actAntialiasing->setChecked ( antialiasing=="Y" );
134
151
KMenu* SKGGraphicsView::getContextualMenu() const
139
void SKGGraphicsView::showMenu(const QPoint& pos)
141
menu->popup(this->mapToGlobal(pos));
144
void SKGGraphicsView::setToolBarVisible(bool iVisibility)
146
ui.toolBar->setVisible(iVisibility);
147
actShowToolBar->setChecked(iVisibility);
156
void SKGGraphicsView::showMenu ( const QPoint& pos )
158
if ( mainMenu ) mainMenu->popup ( ui.kGraphicsView->mapToGlobal ( pos ) );
161
void SKGGraphicsView::setToolBarVisible ( bool iVisibility )
163
ui.toolBar->setVisible ( iVisibility );
164
if ( actShowToolBar ) actShowToolBar->setChecked ( iVisibility );
150
167
bool SKGGraphicsView::isToolBarVisible() const
155
172
void SKGGraphicsView::onSwitchToolBarVisibility()
157
setToolBarVisible(!isToolBarVisible());
174
setToolBarVisible ( !isToolBarVisible() );
177
void SKGGraphicsView::onSwitchAntialiasing()
179
if ( actAntialiasing ) ui.kGraphicsView->setRenderHint ( QPainter::Antialiasing, actAntialiasing->isChecked() );
160
182
void SKGGraphicsView::onZoom()
162
_SKGTRACEIN(10, "SKGGraphicsView::onZoom");
184
_SKGTRACEIN ( 10, "SKGGraphicsView::onZoom" );
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 ) );
167
matrix.scale(scale*originalMatrix.m11(), scale*originalMatrix.m22());
189
matrix.scale ( scale*originalMatrix.m11(), scale*originalMatrix.m22() );
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();
176
198
void SKGGraphicsView::onZoomIn()
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 );
182
204
void SKGGraphicsView::onZoomOut()
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 );
188
210
void SKGGraphicsView::onZoomOriginal()
190
_SKGTRACEIN(10, "SKGGraphicsView::onZoomOriginal");
191
ui.kZoomSlider->setValue(0);
212
_SKGTRACEIN ( 10, "SKGGraphicsView::onZoomOriginal" );
213
ui.kZoomSlider->setValue ( 0 );
195
217
void SKGGraphicsView::onPrint()
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 );
206
228
void SKGGraphicsView::onSavePDF()
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;
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 );
218
QDesktopServices::openUrl(QUrl(fileName));
240
QDesktopServices::openUrl ( QUrl ( fileName ) );
221
243
void SKGGraphicsView::onSaveSvg()
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;
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 );
233
QDesktopServices::openUrl(QUrl(fileName));
255
QDesktopServices::openUrl ( QUrl ( fileName ) );
236
258
void SKGGraphicsView::onSaveImage()
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;
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 );
248
QDesktopServices::openUrl(QUrl(fileName));
270
QDesktopServices::openUrl ( QUrl ( fileName ) );
251
273
void SKGGraphicsView::onCopy()
253
_SKGTRACEIN(10, "SKGGraphicsView::onCopy");
275
_SKGTRACEIN ( 10, "SKGGraphicsView::onCopy" );
254
276
QClipboard *clipboard = QApplication::clipboard();
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 );
263
285
#include "skggraphicsview.moc"