⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quickprintgui.cpp

📁 一个非常好的GIS开源新版本
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2003 by Tim Sutton                                      * *   tim@linfiniti.com                                                     * *                                                                         * *   This is a plugin generated from the QGIS plugin template              * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * ***************************************************************************/#include "quickprintgui.h"#include <qgsquickprint.h>#include "qgscontexthelp.h"#include "qgsapplication.h"//qt includes#include <QMessageBox>#include <QFileDialog>#include <QSettings>#include <QPrinter>//standard includesQuickPrintGui::QuickPrintGui( QgsMapCanvas * thepMapCanvas,     QWidget* parent,  Qt::WFlags fl ): mpMapCanvas ( thepMapCanvas ), QDialog ( parent, fl ) {  setupUi(this);  grpOuput->hide();  //until properly implemented  cboPageSize->addItem("A0 (841 x 1189 mm)","QPrinter::A0");  cboPageSize->addItem("A1 (594 x 841 mm)","QPrinter::A1");  cboPageSize->addItem("A2 (420 x 594 mm)","QPrinter::A2");  cboPageSize->addItem("A3 (297 x 420 mm)","QPrinter::A3");  cboPageSize->addItem("A4 (210 x 297 mm, 8.26 x 11.69 inches)","QPrinter::A4");  cboPageSize->addItem("A5 (148 x 210 mm)","QPrinter::A5");  cboPageSize->addItem("A6 (105 x 148 mm)","QPrinter::A6");  cboPageSize->addItem("A7 (74 x 105 mm)","QPrinter::A7");  cboPageSize->addItem("A8 (52 x 74 mm)","QPrinter::A8");  cboPageSize->addItem("A9 (37 x 52 mm)","QPrinter::A9");  cboPageSize->addItem("B0 (1030 x 1456 mm)","QPrinter::B0");  cboPageSize->addItem("B1 (728 x 1030 mm)","QPrinter::B1");  cboPageSize->addItem("B10 (32 x 45 mm)","QPrinter::B10");  cboPageSize->addItem("B2 (515 x 728 mm)","QPrinter::B2");  cboPageSize->addItem("B3 (364 x 515 mm)","QPrinter::B3");  cboPageSize->addItem("B4 (257 x 364 mm)","QPrinter::B4");  cboPageSize->addItem("B5 (182 x 257 mm, 7.17 x 10.13 inches)","QPrinter::B5");  cboPageSize->addItem("B6 (128 x 182 mm)","QPrinter::B6");  cboPageSize->addItem("B7 (91 x 128 mm)","QPrinter::B7");  cboPageSize->addItem("B8 (64 x 91 mm)","QPrinter::B8");  cboPageSize->addItem("B9 (45 x 64 mm)","QPrinter::B9");  cboPageSize->addItem("C5E (163 x 229 mm)","QPrinter::C5E");  cboPageSize->addItem("Comm10E (105 x 241 mm, U.S. Common 10 Envelope)","QPrinter::Comm10E");  cboPageSize->addItem("DLE (110 x 220 mm)","QPrinter::DLE");  cboPageSize->addItem("Executive (7.5 x 10 inches, 191 x 254 mm)","QPrinter::Executive");  cboPageSize->addItem("Folio (210 x 330 mm)","QPrinter::Folio");  cboPageSize->addItem("Ledger (432 x 279 mm)","QPrinter::Ledger");  cboPageSize->addItem("Legal (8.5 x 14 inches, 216 x 356 mm)","QPrinter::Legal");  cboPageSize->addItem("Letter (8.5 x 11 inches, 216 x 279 mm)","QPrinter::Letter");  readSettings();}  QuickPrintGui::~QuickPrintGui(){}void QuickPrintGui::readSettings(){  QSettings mySettings;  leMapTitle->setText(mySettings.value("quickprint/mapTitle", "Quantum GIS").toString());  leMapName->setText(mySettings.value("quickprint/mapName", "Quick Print").toString());  teCopyright->setText(mySettings.value("quickprint/mapCopyright", "(c) QGIS 2008").toString());  bool myIncrementLastFileFlag = mySettings.value("quickprint/incrementLastFile", false).toBool();  radUseIncrementedFileName->setChecked(myIncrementLastFileFlag);  QString myPageSize = mySettings.value("quickprint/pageSize",            "QPrinter::A4").toString();  cboPageSize->setCurrentIndex(cboPageSize->findData(myPageSize));}void QuickPrintGui::writeSettings(){  QSettings mySettings;  mySettings.setValue("quickprint/mapTitle", leMapTitle->text());  mySettings.setValue("quickprint/mapName", leMapName->text());  mySettings.setValue("quickprint/mapCopyright", teCopyright->text());  mySettings.setValue("quickprint/incrementLastFile", radUseIncrementedFileName->isChecked());  mySettings.setValue("quickprint/pageSize",       cboPageSize->itemData(cboPageSize->currentIndex()));}void QuickPrintGui::on_buttonBox_accepted(){  writeSettings();  QSettings mySettings;  // where we keep last used filter in persistant state  QString myLastUsedDir = mySettings.value ( "quickprint/lastSaveAsPdfDir", "." ).toString();  //create a file dialog  std::auto_ptr < QFileDialog > myFileDialog  (    new QFileDialog (      this,      QFileDialog::tr ( "Save experiment report to portable document format (.pdf)" ),      myLastUsedDir,      tr ( "Portable Document Format (*.pdf)" )    )  );  myFileDialog->setFileMode ( QFileDialog::AnyFile );  myFileDialog->setAcceptMode ( QFileDialog::AcceptSave );  //prompt the user for a filename  QString myOutputFileName;  if ( myFileDialog->exec() == QDialog::Accepted )  {    QStringList myFiles = myFileDialog->selectedFiles();    if ( !myFiles.isEmpty() )    {      myOutputFileName = myFiles[0];    }  }  if ( !myOutputFileName.isEmpty() )  {    if ( myFileDialog->selectedFilter() == tr ( "Portable Document Format (*.pdf)" ) )    {      //ensure the user never ommitted the extension from the filename      if ( !myOutputFileName.toUpper().endsWith ( ".PDF" ) )      {        myOutputFileName += ".pdf";      }      // call plugin print method here      QString myNorthArrowFile = QgsApplication::pkgDataPath() + "/svg/north_arrows/default.svg";      QgsQuickPrint myQuickPrint;      myQuickPrint.setMapCanvas(mpMapCanvas);      myQuickPrint.setTitle(leMapTitle->text());      myQuickPrint.setName(leMapName->text());      myQuickPrint.setCopyright(teCopyright->text());      myQuickPrint.setLogo1(QgsApplication::iconsPath() + "/qgis-icon.png");      myQuickPrint.setNorthArrow(myNorthArrowFile);      myQuickPrint.setOutputPdf(myOutputFileName);      QString myPageSizeString = cboPageSize->itemData(cboPageSize->currentIndex()).toString();      myQuickPrint.setPageSize(QgsQuickPrint::stringToPageSize( myPageSizeString ));      qDebug("Page size : " + myPageSizeString.toLocal8Bit());      myQuickPrint.printMap();    }    else    {      QMessageBox::warning ( this, tr ( "quickprint" ), tr ( "Unknown format: " ) +            myFileDialog->selectedFilter() );    }    mySettings.setValue ( "quickprint/lastSaveAsPdfDir", myFileDialog->directory().absolutePath() );  }  //close the dialog  accept();} void QuickPrintGui::on_buttonBox_rejected(){  reject();}void QuickPrintGui::on_buttonBox_helpRequested(){  QgsContextHelp::run(context_id);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -