12#include <QApplication>
13#include <QGraphicsPixmapItem>
14#include <QGraphicsScene>
25int DlgImportCroppingNonPdf::MINIMUM_DIALOG_WIDTH = 350;
26int DlgImportCroppingNonPdf::MINIMUM_PREVIEW_HEIGHT = 200;
29 m_fileName (fileName),
31 m_nonPdfCropping (nullptr)
35 setWindowTitle (tr (
"Image File Import Cropping"));
38 QWidget *subPanel =
new QWidget ();
39 QGridLayout *layout =
new QGridLayout (subPanel);
40 subPanel->setLayout (layout);
44 createPreview (layout, row);
45 finishPanel (subPanel);
49 layout->setColumnStretch (0, 1);
50 layout->setColumnStretch (1, 0);
51 layout->setColumnStretch (2, 0);
52 layout->setColumnStretch (3, 1);
59 delete m_nonPdfCropping;
62void DlgImportCroppingNonPdf::createNonPdfCropping ()
69void DlgImportCroppingNonPdf::createPreview (QGridLayout *layout,
74 QLabel *labelPreview =
new QLabel (tr (
"Preview"));
75 layout->addWidget (labelPreview, row++, 0, 1, 1, Qt::AlignLeft);
77 m_scenePreview =
new QGraphicsScene (
this);
78 m_viewPreview =
new ViewPreview (m_scenePreview,
81 m_viewPreview->setWhatsThis (tr (
"Preview window that shows what part of the image will be imported. "
82 "The image portion inside the rectangular frame will be imported from the currently selected page. "
83 "The frame can be moved and resized by dragging the corner handles."));
84 m_viewPreview->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
85 m_viewPreview->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
86 m_viewPreview->setMinimumHeight (MINIMUM_PREVIEW_HEIGHT);
87 layout->addWidget (m_viewPreview, row++, 0, 1, 4);
90 initializeFrameGeometryAndPixmap ();
91 createNonPdfCropping ();
94void DlgImportCroppingNonPdf::finishPanel (QWidget *subPanel)
96 const int STRETCH_OFF = 0, STRETCH_ON = 1;
98 QVBoxLayout *panelLayout =
new QVBoxLayout (
this);
100 setMinimumWidth (MINIMUM_DIALOG_WIDTH);
101 setLayout (panelLayout);
103 panelLayout->addWidget (subPanel);
104 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_ON);
106 QWidget *panelButtons =
new QWidget (
this);
107 QHBoxLayout *buttonLayout =
new QHBoxLayout (panelButtons);
109 QHBoxLayout *layoutRightSide =
new QHBoxLayout;
111 QWidget *widgetRightSide =
new QWidget;
112 widgetRightSide->setLayout (layoutRightSide);
113 buttonLayout->addWidget (widgetRightSide);
115 QSpacerItem *spacerExpanding =
new QSpacerItem (40, 5, QSizePolicy::Expanding, QSizePolicy::Expanding);
116 layoutRightSide->addItem (spacerExpanding);
118 m_btnOk =
new QPushButton (tr (
"Ok"));
119 layoutRightSide->addWidget (m_btnOk, 0, Qt::AlignRight);
120 connect (m_btnOk, SIGNAL (released ()),
this, SLOT (slotOk ()));
122 QSpacerItem *spacerFixed =
new QSpacerItem (40, 5, QSizePolicy::Fixed, QSizePolicy::Fixed);
123 layoutRightSide->addItem (spacerFixed);
125 m_btnCancel =
new QPushButton (tr (
"Cancel"));
126 layoutRightSide->addWidget (m_btnCancel, 0, Qt::AlignRight);
127 connect (m_btnCancel, SIGNAL (released ()),
this, SLOT (slotCancel ()));
129 panelLayout->addWidget (panelButtons, STRETCH_ON);
130 panelLayout->setStretch (panelLayout->count () - 1, STRETCH_OFF);
138 QRectF rectFramePixels = m_nonPdfCropping->frameRect ();
140 return m_image.copy (rectFramePixels.toRect ());
143void DlgImportCroppingNonPdf::initializeFrameGeometryAndPixmap ()
145 m_image = loadImage ();
146 QGraphicsPixmapItem *pixmap =
new QGraphicsPixmapItem (QPixmap::fromImage (m_image));
147 m_scenePreview->addItem (pixmap);
150 m_viewPreview->setSceneRect (pixmap->boundingRect ());
153QImage DlgImportCroppingNonPdf::loadImage ()
const
156 image.load (m_fileName);
161void DlgImportCroppingNonPdf::saveGeometryToSettings()
179 settings.endGroup ();
182void DlgImportCroppingNonPdf::slotCancel ()
187 QApplication::restoreOverrideCursor ();
189 setResult (QDialog::Rejected);
190 saveGeometryToSettings();
194void DlgImportCroppingNonPdf::slotOk ()
199 QApplication::restoreOverrideCursor ();
201 setResult (QDialog::Accepted);
202 saveGeometryToSettings();
206void DlgImportCroppingNonPdf::updatePreview ()
210 if (m_pixmap !=
nullptr) {
211 m_scenePreview->removeItem (m_pixmap);
214 m_image = loadImage ();
215 m_pixmap =
new QGraphicsPixmapItem (QPixmap::fromImage (m_image));
216 m_scenePreview->addItem (m_pixmap);
219 QApplication::restoreOverrideCursor ();
#define ENGAUGE_CHECK_PTR(ptr)
Drop in replacement for Q_CHECK_PTR.
log4cpp::Category * mainCat
const QString SETTINGS_ENGAUGE
const QString SETTINGS_GROUP_IMPORT_CROPPING
const QString SETTINGS_IMPORT_CROPPING_POS
const QString SETTINGS_DIGITIZER
virtual void showEvent(QShowEvent *event)
Do preparation before dialog is displayed.
QImage image() const
Image that was selected. Value is null if loading failed.
virtual ~DlgImportCroppingNonPdf()
DlgImportCroppingNonPdf(const QString &fileName)
Single constructor.
This class shows a frame around the selected portion of the import preview window.
@ VIEW_ASPECT_RATIO_ONE_TO_ONE
#define LOG4CPP_INFO_S(logger)