From a345acb90f2ff1ef057a90c0e37e0f7f58de6359 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Thu, 20 Aug 2015 21:02:13 -0400 Subject: [PATCH] Added skeletal print view. --- glabels/CMakeLists.txt | 3 + glabels/MainWindow.cpp | 33 ++- glabels/MainWindow.h | 4 + glabels/PrintView.cpp | 70 ++++++ glabels/PrintView.h | 71 ++++++ glabels/SimplePreview.cpp | 23 +- glabels/SimplePreview.h | 8 +- glabels/ui/PrintView.ui | 469 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 672 insertions(+), 9 deletions(-) create mode 100644 glabels/PrintView.cpp create mode 100644 glabels/PrintView.h create mode 100644 glabels/ui/PrintView.ui diff --git a/glabels/CMakeLists.txt b/glabels/CMakeLists.txt index 97b691c..855606f 100644 --- a/glabels/CMakeLists.txt +++ b/glabels/CMakeLists.txt @@ -34,6 +34,7 @@ set (glabels_sources NewLabelDialog.cpp ObjectEditor.cpp Outline.cpp + PrintView.cpp TemplatePicker.cpp TemplatePickerItem.cpp TextNode.cpp @@ -62,6 +63,7 @@ set (glabels_qobject_headers MainWindow.h NewLabelDialog.h ObjectEditor.h + PrintView.h SimplePreview.h TemplatePicker.h View.h @@ -70,6 +72,7 @@ set (glabels_qobject_headers set (glabels_forms ui/NewLabelDialog.ui ui/ObjectEditor.ui + ui/PrintView.ui ) set (glabels_resource_files diff --git a/glabels/MainWindow.cpp b/glabels/MainWindow.cpp index 0a46162..9116013 100644 --- a/glabels/MainWindow.cpp +++ b/glabels/MainWindow.cpp @@ -34,6 +34,7 @@ #include "libglabels/Db.h" #include "View.h" #include "ObjectEditor.h" +#include "PrintView.h" #include "LabelModel.h" #include "LabelModelBoxObject.h" #include "Icons.h" @@ -65,8 +66,15 @@ namespace glabels createStatusBar(); QWidget* editorPage = createEditorPage(); + QWidget* mergePage = createMergePage(); + QWidget* printPage = createPrintPage(); + + QTabWidget* notebook = new QTabWidget(); + notebook->addTab( editorPage, "Editor" ); + notebook->addTab( mergePage, "Merge" ); + notebook->addTab( printPage, "Print" ); - setCentralWidget( editorPage ); + setCentralWidget( notebook ); setDocVerbsEnabled( false ); setPasteVerbsEnabled( false ); @@ -104,6 +112,7 @@ namespace glabels mModel = label; mView->setModel( mModel ); mObjectEditor->setModel( mModel ); + mPrintView->setModel( mModel ); setDocVerbsEnabled( true ); setSelectionVerbsEnabled( false ); @@ -593,6 +602,28 @@ namespace glabels } + /// + /// Create Merge Page + /// + QWidget* MainWindow::createMergePage() + { + QWidget* page = new QWidget; + + return page; + } + + + /// + /// Create Print Page + /// + QWidget* MainWindow::createPrintPage() + { + mPrintView = new PrintView(); + + return mPrintView; + } + + /// /// Set enabled state of actions associated with a document. /// diff --git a/glabels/MainWindow.h b/glabels/MainWindow.h index 16a53db..05d8bf5 100644 --- a/glabels/MainWindow.h +++ b/glabels/MainWindow.h @@ -37,6 +37,7 @@ namespace glabels class LabelModel; class View; class ObjectEditor; + class PrintView; /// @@ -152,6 +153,8 @@ namespace glabels void createStatusBar(); QWidget* createEditorPage(); + QWidget* createMergePage(); + QWidget* createPrintPage(); void setDocVerbsEnabled( bool ); void setDocModifiedVerbsEnabled( bool ); @@ -189,6 +192,7 @@ namespace glabels LabelModel* mModel; View* mView; ObjectEditor* mObjectEditor; + PrintView* mPrintView; QLabel* zoomInfoLabel; QLabel* cursorInfoLabel; diff --git a/glabels/PrintView.cpp b/glabels/PrintView.cpp new file mode 100644 index 0000000..5889d18 --- /dev/null +++ b/glabels/PrintView.cpp @@ -0,0 +1,70 @@ +/* PrintView.cpp + * + * Copyright (C) 2013 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt 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 3 of the License, or + * (at your option) any later version. + * + * gLabels-qt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gLabels-qt. If not, see . + */ + +#include "PrintView.h" + +#include "LabelModel.h" + + +namespace glabels +{ + + /// + /// Constructor + /// + PrintView::PrintView( QWidget *parent ) + : QWidget(parent) + { + setupUi( this ); + } + + + /// + /// Set Model + /// + void PrintView::setModel( LabelModel* model ) + { + mModel = model; + + connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) ); + connect( mModel, SIGNAL(changed()), this, SLOT(onLabelChanged()) ); + + onLabelSizeChanged(); + onLabelChanged(); + } + + + /// + /// Label size changed handler + /// + void PrintView::onLabelSizeChanged() + { + preview->setTemplate( mModel->tmplate() ); + } + + + /// + /// Label changed handler + /// + void PrintView::onLabelChanged() + { + } + +} diff --git a/glabels/PrintView.h b/glabels/PrintView.h new file mode 100644 index 0000000..a921335 --- /dev/null +++ b/glabels/PrintView.h @@ -0,0 +1,71 @@ +/* PrintView.h + * + * Copyright (C) 2013 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt 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 3 of the License, or + * (at your option) any later version. + * + * gLabels-qt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gLabels-qt. If not, see . + */ + +#ifndef glabels_PrintView_h +#define glabels_PrintView_h + +#include "ui_PrintView.h" + + +namespace glabels +{ + class LabelModel; // Forward reference + + + /// + /// Print View Widget + /// + class PrintView : public QWidget, public Ui_PrintView + { + Q_OBJECT + + + ///////////////////////////////// + // Life Cycle + ///////////////////////////////// + public: + PrintView( QWidget *parent = 0 ); + + + ///////////////////////////////// + // Public methods + ///////////////////////////////// + void setModel( LabelModel* model ); + + + ///////////////////////////////// + // Slots + ///////////////////////////////// + private slots: + void onLabelChanged(); + void onLabelSizeChanged(); + + + ///////////////////////////////// + // Private Data + ///////////////////////////////// + private: + LabelModel* mModel; + + }; + +} + +#endif // glabels_PrintView_h diff --git a/glabels/SimplePreview.cpp b/glabels/SimplePreview.cpp index 447667a..0edda80 100644 --- a/glabels/SimplePreview.cpp +++ b/glabels/SimplePreview.cpp @@ -22,7 +22,7 @@ #include #include -#include +#include // @@ -58,7 +58,7 @@ namespace glabels /// Constructor /// SimplePreview::SimplePreview( QWidget *parent = 0 ) - : mScale(1), mTmplate(NULL), mRotateFlag(false), QGraphicsView(parent) + : mTmplate(NULL), mRotateFlag(false), QGraphicsView(parent) { mScene = new QGraphicsScene(); setScene( mScene ); @@ -91,6 +91,15 @@ namespace glabels } + /// + /// Resize Event Handler + /// + void SimplePreview::resizeEvent( QResizeEvent* event ) + { + fitInView( mScene->sceneRect(), Qt::KeepAspectRatio ); + } + + /// /// Update View /// @@ -107,9 +116,7 @@ namespace glabels double h = 1.10 * mTmplate->pageHeight(); mScene->setSceneRect( x, y, w, h ); - fitInView( x, y, w, h, Qt::KeepAspectRatio ); - - mScale = matrix().m11(); + fitInView( mScene->sceneRect(), Qt::KeepAspectRatio ); drawPaper( mTmplate->pageWidth(), mTmplate->pageHeight() ); drawLabels(); @@ -143,7 +150,8 @@ namespace glabels QBrush brush( paperColor ); QPen pen( paperOutlineColor ); - pen.setWidthF( paperOutlineWidthPixels / mScale ); + pen.setCosmetic( true ); + pen.setWidthF( paperOutlineWidthPixels ); QGraphicsRectItem *pageItem = new QGraphicsRectItem( 0, 0, pw, ph ); pageItem->setBrush( brush ); @@ -175,7 +183,8 @@ namespace glabels { QBrush brush( labelColor ); QPen pen( labelOutlineColor ); - pen.setWidthF( labelOutlineWidthPixels / mScale ); + pen.setCosmetic( true ); + pen.setWidthF( labelOutlineWidthPixels ); QGraphicsPathItem *labelItem = new QGraphicsPathItem( path ); labelItem->setBrush( brush ); diff --git a/glabels/SimplePreview.h b/glabels/SimplePreview.h index c23b026..810780d 100644 --- a/glabels/SimplePreview.h +++ b/glabels/SimplePreview.h @@ -55,6 +55,13 @@ namespace glabels void setRotate( bool rotateFlag ); + ///////////////////////////////////// + // Event handlers + ///////////////////////////////////// + protected: + void resizeEvent( QResizeEvent* event ); + + ///////////////////////////////// // Internal Methods ///////////////////////////////// @@ -75,7 +82,6 @@ namespace glabels bool mRotateFlag; QGraphicsScene *mScene; - double mScale; }; diff --git a/glabels/ui/PrintView.ui b/glabels/ui/PrintView.ui new file mode 100644 index 0000000..8a9785e --- /dev/null +++ b/glabels/ui/PrintView.ui @@ -0,0 +1,469 @@ + + + PrintView + + + + 0 + 0 + 778 + 574 + + + + + 0 + 0 + + + + Form + + + + + + QLayout::SetDefaultConstraint + + + + + + 0 + 0 + + + + + 400 + 520 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Page + + + + + + + + + + of + + + + + + + nn + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + QLayout::SetFixedSize + + + 24 + + + + + Print + + + + :/icons/24x24/actions/fallback-file-print.png:/icons/24x24/actions/fallback-file-print.png + + + Qt::ToolButtonTextUnderIcon + + + + + + + + 0 + 0 + + + + + 350 + 0 + + + + + 350 + 16777215 + + + + Printer + + + + + + + + + + + Properties + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + 0 + + + + + 350 + 0 + + + + + 350 + 16777215 + + + + Copies + + + + + + + + Labels from: + + + + + + + + + + to: + + + + + + + + + + + + + + Sheets: + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + 0 + + + + + 350 + 0 + + + + + 350 + 16777215 + + + + Merge options + + + + + + + + Start on label: + + + + + + + + + + on 1st sheet + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Copies: + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + 0 + + + + + 350 + 0 + + + + + 350 + 16777215 + + + + Print options + + + + + + + + print outlines + + + + + + + print crop marks + + + + + + + print in reverse (i.e. a mirror image) + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Vertical + + + + + + + + glabels::SimplePreview + QWidget +
SimplePreview.h
+ 1 +
+
+ + + + +