Adaptation de l'impression pour Qt >= 4.4

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@376 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2008-08-17 16:16:44 +00:00
parent 75f689ffa9
commit 3957baaa6f
3 changed files with 28 additions and 7 deletions

View File

@@ -31,6 +31,9 @@ DiagramPrintDialog::DiagramPrintDialog(Diagram *dia, QWidget *parent) :
{
// initialise l'imprimante
printer = new QPrinter();
// orientation paysage par defaut
printer -> setOrientation(QPrinter::Landscape);
}
/**
@@ -55,6 +58,20 @@ QString DiagramPrintDialog::PDFName() const {
return(pdf_name);
}
/**
Definit le nom du document
*/
void DiagramPrintDialog::setDocName(const QString &name) {
doc_name = name;
}
/**
@return le nom du document
*/
QString DiagramPrintDialog::docName() const {
return(doc_name);
}
/**
Execute le dialogue d'impression
*/
@@ -62,9 +79,10 @@ void DiagramPrintDialog::exec() {
// affichage du dialogue d'impression standard
QPrintDialog print_dialog(printer);
print_dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
print_dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile | QAbstractPrintDialog::PrintShowPageSize);
#ifndef Q_OS_WIN32
if (!pdf_name.isEmpty()) printer -> setOutputFileName(pdf_name);
if (!doc_name.isEmpty()) printer -> setDocName(doc_name);
#endif
if (print_dialog.exec() == QDialog::Rejected) return;
@@ -227,11 +245,7 @@ void DiagramPrintDialog::print() {
// impression physique (!= fichier PDF)
if (printer -> outputFileName().isEmpty()) {
// lorsqu'on imprime en paysage sur imprimante reelle, il faut pivoter soi-meme le rendu
if (printer -> orientation() == QPrinter::Landscape) {
qp.rotate(90.0);
qp.translate(0.0, -printer -> pageRect().height());
}
// utiliser cette condition pour agir differemment en cas d'impression physique
}
diagram -> setDisplayGrid(false);

View File

@@ -38,6 +38,8 @@ class DiagramPrintDialog : public QWidget {
public:
void setPDFName(const QString &);
QString PDFName() const;
void setDocName(const QString &);
QString docName() const;
int pagesCount(bool = false) const;
int horizontalPagesCount(bool = false) const;
int verticalPagesCount(bool = false) const;
@@ -57,6 +59,7 @@ class DiagramPrintDialog : public QWidget {
private:
Diagram *diagram;
QPrinter *printer;
QString doc_name;
QString pdf_name;
QDialog *dialog;
QLabel *options_label;

View File

@@ -530,17 +530,21 @@ void DiagramView::dialogExport() {
*/
void DiagramView::dialogPrint() {
// determine un nom possible pour le pdf
// determine un nom possible pour le document et le pdf
QString doc_name;
QString pdf_file_name;
if (!file_name.isEmpty()) {
doc_name = QFileInfo(file_name).fileName();
pdf_file_name = file_name;
pdf_file_name.replace(QRegExp("\\.qet$", Qt::CaseInsensitive), "");
} else {
doc_name = tr("schema");
pdf_file_name = QDir::toNativeSeparators(QDir::homePath() + "/" + tr("schema"));
}
pdf_file_name += ".pdf";
DiagramPrintDialog print_dialog(scene, this);
print_dialog.setDocName(doc_name);
print_dialog.setPDFName(pdf_file_name);
print_dialog.exec();
}