[qet] [728] Seconde application du patch de Sebastien Goueze : il est desormais possible d' exporter un schema vers le presse-papier depuis le dialogue d'export. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
- To: qet@xxxxxxxxxxxxxxxxxxx
- Subject: [qet] [728] Seconde application du patch de Sebastien Goueze : il est desormais possible d' exporter un schema vers le presse-papier depuis le dialogue d'export.
- From: subversion@xxxxxxxxxxxxx
- Date: Sun, 09 Aug 2009 15:53:35 +0200
Revision: 728
Author: xavier
Date: 2009-08-09 15:53:35 +0200 (Sun, 09 Aug 2009)
Log Message:
-----------
Seconde application du patch de Sebastien Goueze : il est desormais possible d'exporter un schema vers le presse-papier depuis le dialogue d'export.
Modified Paths:
--------------
trunk/sources/exportdialog.cpp
trunk/sources/exportdialog.h
Modified: trunk/sources/exportdialog.cpp
===================================================================
--- trunk/sources/exportdialog.cpp 2009-08-09 12:51:02 UTC (rev 727)
+++ trunk/sources/exportdialog.cpp 2009-08-09 13:53:35 UTC (rev 728)
@@ -95,17 +95,19 @@
@return Le widget representant la liste des schemas
*/
QWidget *ExportDialog::initDiagramsListPart() {
- preview_mapper_ = new QSignalMapper(this);
- width_mapper_ = new QSignalMapper(this);
- height_mapper_ = new QSignalMapper(this);
- ratio_mapper_ = new QSignalMapper(this);
- reset_mapper_ = new QSignalMapper(this);
+ preview_mapper_ = new QSignalMapper(this);
+ width_mapper_ = new QSignalMapper(this);
+ height_mapper_ = new QSignalMapper(this);
+ ratio_mapper_ = new QSignalMapper(this);
+ reset_mapper_ = new QSignalMapper(this);
+ clipboard_mapper_ = new QSignalMapper(this);
- connect(preview_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_previewDiagram(int)));
- connect(width_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_correctHeight(int)));
- connect(height_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_correctWidth(int)));
- connect(ratio_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_keepRatioChanged(int)));
- connect(reset_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_resetSize(int)));
+ connect(preview_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_previewDiagram(int)));
+ connect(width_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_correctHeight(int)));
+ connect(height_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_correctWidth(int)));
+ connect(ratio_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_keepRatioChanged(int)));
+ connect(reset_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_resetSize(int)));
+ connect(clipboard_mapper_, SIGNAL(mapped(int)), this, SLOT(slot_exportToClipBoard(int)));
diagrams_list_layout_ = new QGridLayout();
@@ -140,6 +142,10 @@
// mappings et signaux pour l'apercu du schema
preview_mapper_ -> setMapping(diagram_line -> preview, line_count);
connect(diagram_line -> preview, SIGNAL(clicked(bool)), preview_mapper_, SLOT(map()));
+
+ // mappings et signaux pour l'export du schema vers le presse-papier
+ clipboard_mapper_ -> setMapping(diagram_line -> clipboard, line_count);
+ connect(diagram_line -> clipboard, SIGNAL(clicked(bool)), clipboard_mapper_, SLOT(map()));
}
QWidget *widget_diagrams_list = new QWidget();
@@ -339,9 +345,9 @@
@param width Largeur de l'export SVG
@param height Hauteur de l'export SVG
@param keep_aspect_ratio True pour conserver le ratio, false sinon
- @param file Fichier dans lequel sera enregistre le code SVG
+ @param io_device Peripherique de sortie pour le code SVG (souvent : un fichier)
*/
-void ExportDialog::generateSvg(Diagram *diagram, int width, int height, bool keep_aspect_ratio, QFile &file) {
+void ExportDialog::generateSvg(Diagram *diagram, int width, int height, bool keep_aspect_ratio, QIODevice &io_device) {
saveReloadDiagramParameters(diagram, true);
// genere une QPicture a partir du schema
@@ -356,7 +362,7 @@
// "joue" la QPicture sur un QSvgGenerator
QSvgGenerator svg_engine;
svg_engine.setSize(QSize(width, height));
- svg_engine.setOutputDevice(&file);
+ svg_engine.setOutputDevice(&io_device);
QPainter svg_painter(&svg_engine);
picture.play(&svg_painter);
@@ -433,7 +439,7 @@
// determine le nom de fichier a utiliser
QString diagram_path = diagram_line -> file_name -> text();
- // determine le chemin du fichier du fichier
+ // determine le chemin du fichier
QDir target_dir_path(export_properties.destination_directory);
diagram_path = target_dir_path.absoluteFilePath(diagram_path);
@@ -543,8 +549,8 @@
}
/**
- Cette methode fait apparaitre un dialogue permettant de redimensionner et
- previsualiser un des schemas a exporter
+ Cette methode fait apparaitre un dialogue permettant de previsualiser un
+ des schemas a exporter
@param diagram_id numero du schema a previsualiser
*/
void ExportDialog::slot_previewDiagram(int diagram_id) {
@@ -593,6 +599,45 @@
}
/**
+ Cette methode exporte un schema vers le presse-papier
+ @param diagram_id numero du schema a previsualiser
+*/
+void ExportDialog::slot_exportToClipBoard(int diagram_id) {
+ // recupere l'ExportDiagramLine concernee
+ ExportDialog::ExportDiagramLine *diagram_line = diagram_lines_[diagram_id];
+ if (!diagram_line) return;
+
+ // recupere le format a utiliser (acronyme et extension)
+ QString format_acronym = epw -> exportProperties().format;
+
+ QClipboard *clipboard = QApplication::clipboard();
+
+ // enregistre l'image dans le fichier
+ if (format_acronym == "SVG") {
+ QByteArray ba;
+ QBuffer buffer(&ba);
+ buffer.open(QIODevice::WriteOnly);
+ generateSvg(
+ diagram_line -> diagram,
+ diagram_line -> width -> value(),
+ diagram_line -> height -> value(),
+ diagram_line -> keep_ratio -> isChecked(),
+ buffer
+ );
+ buffer.close();
+ clipboard -> setText(ba);
+ } else {
+ QImage image = generateImage(
+ diagram_line -> diagram,
+ diagram_line -> width -> value(),
+ diagram_line -> height -> value(),
+ diagram_line -> keep_ratio -> isChecked()
+ );
+ clipboard -> setImage(image);
+ }
+}
+
+/**
Constructeur
@param dia Schema concerne
*/
@@ -641,6 +686,10 @@
preview = new QPushButton();
preview -> setIcon(QET::Icons::ZoomOriginal);
preview -> setToolTip(QObject::tr("Aper\347u"));
+
+ clipboard = new QPushButton();
+ clipboard -> setIcon(QET::Icons::CopyFile);
+ clipboard -> setToolTip(QObject::tr("Exporter vers le presse-papier"));
}
/**
@@ -661,5 +710,6 @@
layout -> addWidget(keep_ratio);
layout -> addWidget(reset_size);
layout -> addWidget(preview);
+ layout -> addWidget(clipboard);
return(layout);
}
Modified: trunk/sources/exportdialog.h
===================================================================
--- trunk/sources/exportdialog.h 2009-08-09 12:51:02 UTC (rev 727)
+++ trunk/sources/exportdialog.h 2009-08-09 13:53:35 UTC (rev 728)
@@ -58,6 +58,7 @@
QPushButton *keep_ratio;
QPushButton *reset_size;
QPushButton *preview;
+ QPushButton *clipboard;
};
// attributs
@@ -73,6 +74,7 @@
QSignalMapper *height_mapper_;
QSignalMapper *ratio_mapper_;
QSignalMapper *reset_mapper_;
+ QSignalMapper *clipboard_mapper_;
// elements relatifs au traitement effectue par le dialogue
QETProject *project_;
@@ -81,7 +83,7 @@
private:
QWidget *initDiagramsListPart();
void saveReloadDiagramParameters(Diagram *, bool = true);
- void generateSvg(Diagram *, int, int, bool, QFile &);
+ void generateSvg(Diagram *, int, int, bool, QIODevice &);
QImage generateImage(Diagram *, int, int, bool);
void exportDiagram(ExportDiagramLine *);
qreal diagramRatio(Diagram *);
@@ -97,5 +99,6 @@
void slot_checkDiagramsCount();
void slot_changeFilesExtension(bool = false);
void slot_previewDiagram(int);
+ void slot_exportToClipBoard(int);
};
#endif