Files
sethLabels/model/GenericTemplate.cpp
Jaye Evins e6673a0a24 Add generic templates (#307)
- Add generic full-page templates.  (This feature from 3.4 was missing)
- Also add generic half-page, quarter-page, and envelope templates.
- Add several more common envelope sizes to page-sizes.xml
- Qt print backend does not need pwg_size.
    - Replace with pwg_class, to distinguish between ISO and NA sizes
2026-02-11 11:27:41 -05:00

135 lines
4.5 KiB
C++

// GenericTemplate.cpp
//
// Copyright (C) 2026 Jaye Evins <evins@snaught.com>
//
// 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 <http://www.gnu.org/licenses/>.
//
#include "GenericTemplate.hpp"
#include "FrameRect.hpp"
#include <QDebug>
namespace glabels::model
{
Template GenericTemplate::fullPage( const Paper& paper )
{
// TRANSLATORS
//: %1 = page size. (e.g. A4)
return sheetTemplate( paper, 1, 1, QString( tr( "%1 full-page labels" ) ).arg( paper.name() ) );
}
Template GenericTemplate::halfPage1x2( const Paper& paper )
{
// TRANSLATORS
//: %1 = page size. (e.g. A4)
return sheetTemplate( paper, 1, 2, QString( tr( "%1 half-page labels" ) ).arg( paper.name() ) );
}
Template GenericTemplate::halfPage2x1( const Paper& paper )
{
return sheetTemplate( paper, 2, 1, QString( tr( "%1 half-page labels" ) ).arg( paper.name() ) );
}
Template GenericTemplate::quarterPage2x2( const Paper& paper )
{
// TRANSLATORS
//: %1 = page size. (e.g. A4)
return sheetTemplate( paper, 2, 2, QString( tr( "%1 quarter-page labels" ) ).arg( paper.name() ) );
}
Template GenericTemplate::envelope( const Paper& paper )
{
// TRANSLATORS
//: %1 = envelope size. (e.g. DL)
QString description = QString( tr( "%1 envelope" ) ).arg( paper.name() );
Template tmplate( tr("Generic"),
paper.id() + "-ENV",
description,
paper.id(),
paper.width(),
paper.height() );
FrameRect frame( paper.width(),
paper.height(),
Distance::pt( 0 ),
Distance::pt( 0 ),
Distance::pt( 0 ) );
Layout layout( 1,
1,
Distance::pt( 0 ),
Distance::pt( 0 ),
Distance::pt( 0 ),
Distance::pt( 0 ) );
frame.addLayout( layout );
tmplate.addFrame( frame );
tmplate.addCategory( "mail" );
return tmplate;
}
Template GenericTemplate::sheetTemplate( const Paper& paper,
int nx,
int ny,
const QString& description )
{
Template tmplate( tr("Generic"),
QString( "%1-%2x%3" ).arg(paper.id()).arg(nx).arg(ny),
description,
paper.id(),
paper.width(),
paper.height() );
FrameRect frame( paper.width()/nx,
paper.height()/ny,
Distance::pt( 0 ),
Distance::pt( 0 ),
Distance::pt( 0 ) );
Layout layout( nx,
ny,
Distance::pt( 0 ),
Distance::pt( 0 ),
paper.width()/nx,
paper.height()/ny );
frame.addLayout( layout );
tmplate.addFrame( frame );
tmplate.addCategory( "label" );
tmplate.addCategory( "rectangle-label" );
tmplate.addCategory( "card" );
return tmplate;
}
}