Refactored how preview keeps up with model changes.
This commit is contained in:
@@ -86,6 +86,7 @@ set (glabels_qobject_headers
|
|||||||
MainWindow.h
|
MainWindow.h
|
||||||
MergeView.h
|
MergeView.h
|
||||||
ObjectEditor.h
|
ObjectEditor.h
|
||||||
|
PageRenderer.h
|
||||||
PreferencesDialog.h
|
PreferencesDialog.h
|
||||||
PrintView.h
|
PrintView.h
|
||||||
PropertiesView.h
|
PropertiesView.h
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ void LabelModel::restore( const LabelModel *savedModel )
|
|||||||
emit nameChanged();
|
emit nameChanged();
|
||||||
emit sizeChanged();
|
emit sizeChanged();
|
||||||
emit mergeChanged();
|
emit mergeChanged();
|
||||||
|
emit mergeSourceChanged();
|
||||||
|
emit mergeSelectionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -293,9 +295,11 @@ void LabelModel::setMerge( merge::Merge* merge )
|
|||||||
mMerge = merge;
|
mMerge = merge;
|
||||||
|
|
||||||
connect( mMerge, SIGNAL(sourceChanged()), this, SLOT(onMergeSourceChanged()) );
|
connect( mMerge, SIGNAL(sourceChanged()), this, SLOT(onMergeSourceChanged()) );
|
||||||
|
connect( mMerge, SIGNAL(selectionChanged()), this, SLOT(onMergeSelectionChanged()) );
|
||||||
|
|
||||||
setModified();
|
setModified();
|
||||||
|
|
||||||
|
emit changed();
|
||||||
emit mergeChanged();
|
emit mergeChanged();
|
||||||
emit mergeSourceChanged();
|
emit mergeSourceChanged();
|
||||||
}
|
}
|
||||||
@@ -431,6 +435,16 @@ void LabelModel::onMergeSourceChanged()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Merge Selection Changed Slot
|
||||||
|
///
|
||||||
|
void LabelModel::onMergeSelectionChanged()
|
||||||
|
{
|
||||||
|
emit changed();
|
||||||
|
emit mergeSelectionChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Select Object
|
/// Select Object
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ signals:
|
|||||||
void modifiedChanged();
|
void modifiedChanged();
|
||||||
void mergeChanged();
|
void mergeChanged();
|
||||||
void mergeSourceChanged();
|
void mergeSourceChanged();
|
||||||
|
void mergeSelectionChanged();
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
@@ -211,6 +212,7 @@ private slots:
|
|||||||
void onObjectChanged();
|
void onObjectChanged();
|
||||||
void onObjectMoved();
|
void onObjectMoved();
|
||||||
void onMergeSourceChanged();
|
void onMergeSourceChanged();
|
||||||
|
void onMergeSelectionChanged();
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
|||||||
@@ -49,49 +49,78 @@ PageRenderer::PageRenderer()
|
|||||||
void PageRenderer::setModel( const LabelModel* model )
|
void PageRenderer::setModel( const LabelModel* model )
|
||||||
{
|
{
|
||||||
mModel = model;
|
mModel = model;
|
||||||
|
|
||||||
|
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
|
||||||
|
|
||||||
|
onModelChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const LabelModel* PageRenderer::model() const
|
||||||
|
{
|
||||||
|
return mModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PageRenderer::onModelChanged()
|
||||||
|
{
|
||||||
mMerge = mModel->merge();
|
mMerge = mModel->merge();
|
||||||
mOrigins = mModel->frame()->getOrigins();
|
mOrigins = mModel->frame()->getOrigins();
|
||||||
mNLabelsPerPage = mModel->frame()->nLabels();
|
mNLabelsPerPage = mModel->frame()->nLabels();
|
||||||
mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == 0 );
|
mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == 0 );
|
||||||
updateNPages();
|
updateNPages();
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setNCopies( int nCopies )
|
void PageRenderer::setNCopies( int nCopies )
|
||||||
{
|
{
|
||||||
mNCopies = nCopies;
|
mNCopies = nCopies;
|
||||||
updateNPages();
|
updateNPages();
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setStartLabel( int startLabel )
|
void PageRenderer::setStartLabel( int startLabel )
|
||||||
{
|
{
|
||||||
mStartLabel = startLabel;
|
mStartLabel = startLabel;
|
||||||
updateNPages();
|
updateNPages();
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setPrintOutlines( bool printOutlinesFlag )
|
void PageRenderer::setPrintOutlines( bool printOutlinesFlag )
|
||||||
{
|
{
|
||||||
mPrintOutlines = printOutlinesFlag;
|
mPrintOutlines = printOutlinesFlag;
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setPrintCropMarks( bool printCropMarksFlag )
|
void PageRenderer::setPrintCropMarks( bool printCropMarksFlag )
|
||||||
{
|
{
|
||||||
mPrintCropMarks = printCropMarksFlag;
|
mPrintCropMarks = printCropMarksFlag;
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setPrintReverse( bool printReverseFlag )
|
void PageRenderer::setPrintReverse( bool printReverseFlag )
|
||||||
{
|
{
|
||||||
mPrintReverse = printReverseFlag;
|
mPrintReverse = printReverseFlag;
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setIPage( int iPage )
|
void PageRenderer::setIPage( int iPage )
|
||||||
{
|
{
|
||||||
mIPage = iPage;
|
mIPage = iPage;
|
||||||
|
|
||||||
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -213,6 +242,7 @@ void PageRenderer::printSimplePage( QPainter* painter, int iPage ) const
|
|||||||
|
|
||||||
void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
|
void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
|
||||||
{
|
{
|
||||||
|
int iRecord = 0;
|
||||||
int iStart = 0;
|
int iStart = 0;
|
||||||
int iEnd = mNLabelsPerPage;
|
int iEnd = mNLabelsPerPage;
|
||||||
|
|
||||||
@@ -227,7 +257,10 @@ void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
const QList<merge::Record*> records = mMerge->selectedRecords();
|
const QList<merge::Record*> records = mMerge->selectedRecords();
|
||||||
int iRecord = (iPage*mNLabelsPerPage + iStart - mStartLabel) % records.size();
|
if ( records.size() )
|
||||||
|
{
|
||||||
|
iRecord = (iPage*mNLabelsPerPage + iStart - mStartLabel) % records.size();
|
||||||
|
}
|
||||||
|
|
||||||
printCropMarks( painter );
|
printCropMarks( painter );
|
||||||
|
|
||||||
|
|||||||
+18
-1
@@ -38,8 +38,10 @@ class LabelModel;
|
|||||||
///
|
///
|
||||||
/// PageRenderer Widget
|
/// PageRenderer Widget
|
||||||
///
|
///
|
||||||
class PageRenderer
|
class PageRenderer : public QObject
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Life Cycle
|
// Life Cycle
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
@@ -52,6 +54,7 @@ public:
|
|||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
public:
|
public:
|
||||||
void setModel( const LabelModel* model );
|
void setModel( const LabelModel* model );
|
||||||
|
const LabelModel* model() const;
|
||||||
void setNCopies( int nCopies );
|
void setNCopies( int nCopies );
|
||||||
void setStartLabel( int startLabel );
|
void setStartLabel( int startLabel );
|
||||||
void setPrintOutlines( bool printOutlinesFlag );
|
void setPrintOutlines( bool printOutlinesFlag );
|
||||||
@@ -65,6 +68,20 @@ public:
|
|||||||
void printPage( QPainter* painter, int iPage ) const;
|
void printPage( QPainter* painter, int iPage ) const;
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Signals
|
||||||
|
/////////////////////////////////
|
||||||
|
signals:
|
||||||
|
void changed();
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Private slots
|
||||||
|
/////////////////////////////////
|
||||||
|
private slots:
|
||||||
|
void onModelChanged();
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Internal Methods
|
// Internal Methods
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
|||||||
+15
-12
@@ -65,11 +65,23 @@ Preview::Preview( QWidget *parent )
|
|||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Set model
|
/// Set renderer
|
||||||
///
|
///
|
||||||
void Preview::setModel( const LabelModel* model )
|
void Preview::setRenderer( const PageRenderer* renderer )
|
||||||
{
|
{
|
||||||
mModel = model;
|
mRenderer = renderer;
|
||||||
|
|
||||||
|
connect( mRenderer, SIGNAL(changed()), this, SLOT(onRendererChanged()) );
|
||||||
|
onRendererChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Renderer changed handler
|
||||||
|
///
|
||||||
|
void Preview::onRendererChanged()
|
||||||
|
{
|
||||||
|
mModel = mRenderer->model();
|
||||||
|
|
||||||
clearScene();
|
clearScene();
|
||||||
|
|
||||||
@@ -91,15 +103,6 @@ void Preview::setModel( const LabelModel* model )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Set renderer
|
|
||||||
///
|
|
||||||
void Preview::setRenderer( const PageRenderer* renderer )
|
|
||||||
{
|
|
||||||
mRenderer = renderer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Resize Event Handler
|
/// Resize Event Handler
|
||||||
///
|
///
|
||||||
|
|||||||
+3
-2
@@ -46,11 +46,12 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// Properties
|
// Renderer
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
public:
|
public:
|
||||||
void setModel( const LabelModel* model );
|
|
||||||
void setRenderer( const PageRenderer* renderer );
|
void setRenderer( const PageRenderer* renderer );
|
||||||
|
private slots:
|
||||||
|
void onRendererChanged();
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
|
|||||||
+16
-19
@@ -54,33 +54,35 @@ PrintView::~PrintView()
|
|||||||
void PrintView::setModel( LabelModel* model )
|
void PrintView::setModel( LabelModel* model )
|
||||||
{
|
{
|
||||||
mModel = model;
|
mModel = model;
|
||||||
|
mRenderer.setModel( mModel );
|
||||||
|
|
||||||
connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) );
|
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
|
||||||
connect( mModel, SIGNAL(changed()), this, SLOT(onLabelChanged()) );
|
|
||||||
|
|
||||||
onLabelSizeChanged();
|
|
||||||
onFormChanged();
|
onFormChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Label size changed handler
|
/// Model changed handler
|
||||||
///
|
///
|
||||||
void PrintView::onLabelSizeChanged()
|
void PrintView::onModelChanged()
|
||||||
{
|
{
|
||||||
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() );
|
updateView();
|
||||||
|
|
||||||
preview->setModel( mModel );
|
|
||||||
mRenderer.setModel( mModel );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Label changed handler
|
/// Update view
|
||||||
///
|
///
|
||||||
void PrintView::onLabelChanged()
|
void PrintView::updateView()
|
||||||
{
|
{
|
||||||
preview->update();
|
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() );
|
||||||
|
|
||||||
|
copiesDescriptionLabel->setText( tr("(Will print a total of %1 items on %2 pages.)")
|
||||||
|
.arg(mRenderer.nItems()).arg(mRenderer.nPages()) );
|
||||||
|
|
||||||
|
pageSpin->setRange( 1, mRenderer.nPages() );
|
||||||
|
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -95,20 +97,15 @@ void PrintView::onFormChanged()
|
|||||||
|
|
||||||
mRenderer.setNCopies( copiesSpin->value() );
|
mRenderer.setNCopies( copiesSpin->value() );
|
||||||
mRenderer.setStartLabel( copiesStartSpin->value() - 1 );
|
mRenderer.setStartLabel( copiesStartSpin->value() - 1 );
|
||||||
copiesDescriptionLabel->setText( tr("(Will print a total of %1 items on %2 pages.)")
|
|
||||||
.arg(mRenderer.nItems()).arg(mRenderer.nPages()) );
|
|
||||||
|
|
||||||
mRenderer.setPrintOutlines( printOutlinesCheck->isChecked() );
|
mRenderer.setPrintOutlines( printOutlinesCheck->isChecked() );
|
||||||
mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() );
|
mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() );
|
||||||
mRenderer.setPrintReverse( printReverseCheck->isChecked() );
|
mRenderer.setPrintReverse( printReverseCheck->isChecked() );
|
||||||
|
|
||||||
pageSpin->setRange( 1, mRenderer.nPages() );
|
|
||||||
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
|
|
||||||
|
|
||||||
mRenderer.setIPage( pageSpin->value() - 1 );
|
mRenderer.setIPage( pageSpin->value() - 1 );
|
||||||
|
|
||||||
preview->update();
|
updateView();
|
||||||
|
|
||||||
mBlocked = false;
|
mBlocked = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -56,8 +56,8 @@ public:
|
|||||||
// Slots
|
// Slots
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
private slots:
|
private slots:
|
||||||
void onLabelChanged();
|
void onModelChanged();
|
||||||
void onLabelSizeChanged();
|
void updateView();
|
||||||
void onFormChanged();
|
void onFormChanged();
|
||||||
void onPrintButtonClicked();
|
void onPrintButtonClicked();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user