Merge branch 'RefactorPrint'
- Modifies printing model to be similar to glabels-3.x. - Allow simple projects to print by-the-page (#51) - Added collated vs uncollated document merges - Added ability to separate merge groups by page - Updated man pages - Updated misc developer documentation
This commit is contained in:
+5
-2
@@ -9,11 +9,14 @@ Acknowledgments
|
|||||||
|
|
||||||
gLabels includes contributions from
|
gLabels includes contributions from
|
||||||
|
|
||||||
* [Chris Morgan](https://github.com/chmorgan)
|
|
||||||
* [hochwasser](https://github.com/hochwasser)
|
|
||||||
* [Mario Blättermann](https://github.com/mariobl)
|
* [Mario Blättermann](https://github.com/mariobl)
|
||||||
* [probonopd](https://github.com/probonopd) - travis-ci setup, appImage
|
* [probonopd](https://github.com/probonopd) - travis-ci setup, appImage
|
||||||
|
* [gitlost](https://github.com/gitlost)
|
||||||
* [Yuri Chornoivan](https://github.com/yurchor)
|
* [Yuri Chornoivan](https://github.com/yurchor)
|
||||||
|
* [nblock](https://github.com/nblock)
|
||||||
|
* [hochwasser](https://github.com/hochwasser)
|
||||||
|
* [Chris Morgan](https://github.com/chmorgan)
|
||||||
|
* [Brian K. White](https://github.com/aljex)
|
||||||
|
|
||||||
|
|
||||||
Translations
|
Translations
|
||||||
|
|||||||
+107
-96
@@ -20,10 +20,6 @@ Assumptions/caveats
|
|||||||
A sheet contains only one size of label or card (if a sheet contains more than one size of item,
|
A sheet contains only one size of label or card (if a sheet contains more than one size of item,
|
||||||
it can be split into multiple templates for multiple pass printing).
|
it can be split into multiple templates for multiple pass printing).
|
||||||
|
|
||||||
Distances can be expressed in units of *pt*, *in*, *mm*, *cm*, or *pc*. For example:
|
|
||||||
`"1.0in"` or `"2.54cm"`. If no units are specified, computer points (*pt*) will
|
|
||||||
be assumed (1 *pt* = 1/72 *in* = 0.352778 *mm*).
|
|
||||||
|
|
||||||
|
|
||||||
Template Files
|
Template Files
|
||||||
--------------
|
--------------
|
||||||
@@ -57,22 +53,37 @@ An example template file containing a single *Template* node:
|
|||||||
</Glabels-templates>
|
</Glabels-templates>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
*Distance* Attributes
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
A distance attribute is expressed as a number followed by a unit identifier.
|
||||||
|
Valid unit identifiers are *pt*, *in*, *mm*, *cm*, or *pc*. These are a subset of
|
||||||
|
the SVG absolute length units. Examples:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<Label-round radius="1.0in" >
|
||||||
|
<Label-round radius="2.54cm">
|
||||||
|
```
|
||||||
|
|
||||||
|
If no units are specified, computer points (*pt*) will be assumed (1 *pt* = 1/72 *in* = 0.352778 *mm*).
|
||||||
|
|
||||||
|
|
||||||
*Template* Node
|
*Template* Node
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
A *Template* node describes a single stationery product. It must contain exactly one instance of
|
A *Template* node describes a single stationery product. It must contain exactly one instance of
|
||||||
a label node, either *Label-rectangle*, *Label-round*, *Label-ellipse* or *Label-cd*.
|
a label node, either *Label-rectangle*, *Label-round*, *Label-ellipse* or *Label-cd*.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
---------------|------------
|
---------------|----------|------------
|
||||||
*brand* | Brand or manufacturer of stationery product. E.g. "Avery".
|
*brand* | string | Brand or manufacturer of stationery product. E.g. "Avery".
|
||||||
*part* | Part number or name of stationery product. E.g. "8160".
|
*part* | string | Part number or name of stationery product. E.g. "8160".
|
||||||
*size* | Paper size. Must match an ID defined in *paper-sizes.xml*, "roll" or "other". E.g. "A4".
|
*size* | string | Paper size. Must match an ID defined in *paper-sizes.xml*, "roll" or "other". E.g. "A4".
|
||||||
*description* | Description of stationery product. E.g, "Mailing Labels".
|
*description* | string | Description of stationery product. E.g, "Mailing Labels".
|
||||||
*_description* | Translatable description of stationery product. Used in predefined labels instead of description.
|
*_description* | string | Translatable description of stationery product. Used in predefined labels instead of description.
|
||||||
*width* | Page width. Only valid if `size="other"` or `size="roll"`.
|
*width* | distance | Page width. Only valid if `size="other"` or `size="roll"`.
|
||||||
*height* | Page height. Only valid if `size="other"`. Value is ignored if `size="roll"`.
|
*height* | distance | Page height. Only valid if `size="other"`. Value is ignored if `size="roll"`.
|
||||||
*equiv* | Equivalent part number. If this property is present, the template is a clone of another template of the same brand. The template will inherit all properties, except brand and name from the other template. This equiv property must refer to a previously defined template - *gLabels* does not currently support forward references.
|
*equiv* | string | Equivalent part number. If this property is present, the template is a clone of another template of the same brand. The template will inherit all properties, except brand and name from the other template. This equiv property must refer to a previously defined template - *gLabels* does not currently support forward references.
|
||||||
|
|
||||||
### Guidelines for Creating Product Descriptions
|
### Guidelines for Creating Product Descriptions
|
||||||
|
|
||||||
@@ -90,10 +101,10 @@ If creating templates to be distributed with *gLabels*, please use the following
|
|||||||
A *Meta* node contains some additional information about the template. A *Template* node may contain zero
|
A *Meta* node contains some additional information about the template. A *Template* node may contain zero
|
||||||
or more *Meta* nodes. Only one property should be defined per *Meta* node.
|
or more *Meta* nodes. Only one property should be defined per *Meta* node.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*category* | A category for the template. A template can belong to multiple categories by simply adding multiple *Meta* nodes to the parent *Template* node. The category must match an existing ID defined in categories.xml. E.g. `category="media"`
|
*category* | string | A category for the template. A template can belong to multiple categories by simply adding multiple *Meta* nodes to the parent *Template* node. The category must match an existing ID defined in categories.xml. E.g. `category="media"`
|
||||||
*product_url* | A URL pointing to the vendor's webpage for the specific product, if available.
|
*product_url* | string | A URL pointing to the vendor's webpage for the specific product, if available.
|
||||||
|
|
||||||
|
|
||||||
*Label-rectangle* Node
|
*Label-rectangle* Node
|
||||||
@@ -102,14 +113,14 @@ Property | Description
|
|||||||
A *Label-rectangle* node describes the dimensions of a single label or business card that is rectangular
|
A *Label-rectangle* node describes the dimensions of a single label or business card that is rectangular
|
||||||
in shape (may have rounded edges).
|
in shape (may have rounded edges).
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*id* | Reserved for future use. Should always be 0.
|
*id* | integer | Reserved for future use. Should always be 0.
|
||||||
*width* | Width of label or card. E.g. `width="29mm"`
|
*width* | distance | Width of label or card. E.g. `width="29mm"`
|
||||||
*height* | Height of label or card. E.g. `height="100mm"`
|
*height* | distance | Height of label or card. E.g. `height="100mm"`
|
||||||
*round* | Radius of corners. For items with square edges (business cards), the radius should be 0.
|
*round* | distance | Radius of corners. For items with square edges (business cards), the radius should be 0.
|
||||||
*x_waste* | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
*x_waste* | distance | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
||||||
*y_waste* | Amount of vertical waste (over-print) to allow.
|
*y_waste* | distance | Amount of vertical waste (over-print) to allow.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -120,12 +131,12 @@ Property | Description
|
|||||||
A *Label-ellipse* node describes the dimensions of a single label or business card that is elliptical
|
A *Label-ellipse* node describes the dimensions of a single label or business card that is elliptical
|
||||||
in shape.
|
in shape.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*id* | Reserved for future use. Should always be 0.
|
*id* | integer | Reserved for future use. Should always be 0.
|
||||||
*width* | Width of label or card. E.g. `width="29mm"`
|
*width* | distance | Width of label or card. E.g. `width="29mm"`
|
||||||
*height* | Height of label or card. E.g. `height="100mm"`
|
*height* | distance | Height of label or card. E.g. `height="100mm"`
|
||||||
*waste* | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
*waste* | distance | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -135,11 +146,11 @@ Property | Description
|
|||||||
|
|
||||||
A *Label-round* node describes the dimensions of a simple round label (not a CD).
|
A *Label-round* node describes the dimensions of a simple round label (not a CD).
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*id* | Reserved for future use. Should always be 0.
|
*id* | integer | Reserved for future use. Should always be 0.
|
||||||
*radius* | Radius (1/2 diameter) of label or card. E.g. `radius="14.5mm"`
|
*radius* | distance | Radius (1/2 diameter) of label or card. E.g. `radius="14.5mm"`
|
||||||
*waste* | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
*waste* | distance | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -149,14 +160,14 @@ Property | Description
|
|||||||
|
|
||||||
A *Label-cd* node describes the dimensions of a CD, DVD, or business card CD.
|
A *Label-cd* node describes the dimensions of a CD, DVD, or business card CD.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*id* | Reserved for future use. Should always be 0.
|
*id* | integer | Reserved for future use. Should always be 0.
|
||||||
*radius* | Outer radius (1/2 diameter) of label. E.g. `radius="58.5mm"`
|
*radius* | distance | Outer radius (1/2 diameter) of label. E.g. `radius="58.5mm"`
|
||||||
*hole* | Radius (1/2 diameter) of concentric hole. E.g. `hole="18mm"`
|
*hole* | distance | Radius (1/2 diameter) of concentric hole. E.g. `hole="18mm"`
|
||||||
*width* | If present, the label is clipped to the given Width. (For use with business card CDs.)
|
*width* | distance | If present, the label is clipped to the given Width. (For use with business card CDs.)
|
||||||
*height* | If present, the label is clipped to the given height. (For use with business card CDs.)
|
*height* | distance | If present, the label is clipped to the given height. (For use with business card CDs.)
|
||||||
*waste* | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
*waste* | distance | Amount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -165,13 +176,13 @@ Property | Description
|
|||||||
|
|
||||||
A *Label-continuous* node describes the dimensions of a single section of a continuous label tape.
|
A *Label-continuous* node describes the dimensions of a single section of a continuous label tape.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
-----------------|----------|------------
|
||||||
*id* | Reserved for future use. Should always be 0.
|
*id* | integer | Reserved for future use. Should always be 0.
|
||||||
*width* | Width of label or card. E.g. `width="29mm"`
|
*width* | distance | Width of label or card. E.g. `width="29mm"`
|
||||||
*min_height* | Minimum user defined height or length of label.
|
*min_height* | distance | Minimum user defined height or length of label.
|
||||||
*max_height* | Maximum user defined height or length of label.
|
*max_height* | distance | Maximum user defined height or length of label.
|
||||||
*derault_height* | Default user defined height or length of label.
|
*default_height* | distance | Default user defined height or length of label.
|
||||||
|
|
||||||
|
|
||||||
*Label-path* Node
|
*Label-path* Node
|
||||||
@@ -179,13 +190,13 @@ Property | Description
|
|||||||
|
|
||||||
A *Label-path* node describes the dimensions of a label with an outline defined by an arbitrary path.
|
A *Label-path* node describes the dimensions of a label with an outline defined by an arbitrary path.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*id* | Reserved for future use. Should always be 0.
|
*id* | integer | Reserved for future use. Should always be 0.
|
||||||
*d_units* | Units used in path definition. (default = `"pt"`)
|
*d_units* | string | Units used in path definition. Must be a supported distance unit identifier. (default = `"pt"`)
|
||||||
*d* | Path definition. This is a subset of of the SVG path "d" attribute. Commands include "M/m", "L/l", "H/h", "V/v", and "Z/z". Commands and data must be delimited by white space."
|
*d* | string | Path definition. This is a subset of of the SVG path "d" attribute. Commands include "M/m", "L/l", "H/h", "V/v", and "Z/z". Commands and data must be delimited by white space."
|
||||||
*x_waste* | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
*x_waste* | distance | Amount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
|
||||||
*y_waste* | Amount of vertical waste (over-print) to allow.
|
*y_waste* | distance | Amount of vertical waste (over-print) to allow.
|
||||||
|
|
||||||
|
|
||||||
*Markup* Nodes
|
*Markup* Nodes
|
||||||
@@ -201,59 +212,59 @@ special areas, or other helpful hints to the user of a template.
|
|||||||
|
|
||||||
A *Markup-margin* describes a margin along all edges of a label.
|
A *Markup-margin* describes a margin along all edges of a label.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*size* | Size of the margin. I.e. the distance of the margin line from the edge of the card/label.
|
*size* | distance | Size of the margin. I.e. the distance of the margin line from the edge of the card/label.
|
||||||
*x_size* | Size of the margin in x dimension. I.e. the distance of the margin line from the edge of the card/label.
|
*x_size* | distance | Size of the margin in x dimension. I.e. the distance of the margin line from the edge of the card/label.
|
||||||
*y_size* | Size of the margin in y dimension. I.e. the distance of the margin line from the edge of the card/label.
|
*y_size* | distance | Size of the margin in y dimension. I.e. the distance of the margin line from the edge of the card/label.
|
||||||
|
|
||||||
|
|
||||||
### *Markup-line* Node
|
### *Markup-line* Node
|
||||||
|
|
||||||
A *Markup-line* node describes a markup line.
|
A *Markup-line* node describes a markup line.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*x1* | X coordinate of 1st endpoint of the line segment.
|
*x1* | distance | X coordinate of 1st endpoint of the line segment.
|
||||||
*y1* | Y coordinate of 1st endpoint of the line segment.
|
*y1* | distance | Y coordinate of 1st endpoint of the line segment.
|
||||||
*x2* | X coordinate of 2nd endpoint of the line segment.
|
*x2* | distance | X coordinate of 2nd endpoint of the line segment.
|
||||||
*y2* | Y coordinate of 2nd endpoint of the line segment.
|
*y2* | distance | Y coordinate of 2nd endpoint of the line segment.
|
||||||
|
|
||||||
|
|
||||||
### *Markup-circle* Node
|
### *Markup-circle* Node
|
||||||
|
|
||||||
A *Markup-circle* describes a markup circle.
|
A *Markup-circle* describes a markup circle.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*x0* | X coordinate of circle origin (center).
|
*x0* | distance | X coordinate of circle origin (center).
|
||||||
*y0* | Y coordinate of circle origin (center).
|
*y0* | distance | Y coordinate of circle origin (center).
|
||||||
*radius* | Radius of circle.
|
*radius* | distance | Radius of circle.
|
||||||
|
|
||||||
|
|
||||||
### *Markup-rect* Node
|
### *Markup-rect* Node
|
||||||
|
|
||||||
A *Markup-rect* describes a markup rectangle.
|
A *Markup-rect* describes a markup rectangle.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*x1* | X coordinate of upper left corner of rectangle.
|
*x1* | distance | X coordinate of upper left corner of rectangle.
|
||||||
*y1* | Y coordinate of upper left corner of rectangle.
|
*y1* | distance | Y coordinate of upper left corner of rectangle.
|
||||||
*w* | Width of rectangle.
|
*w* | distance | Width of rectangle.
|
||||||
*h* | Height of rectangle.
|
*h* | distance | Height of rectangle.
|
||||||
*r* | Radius of rounded corners of rectangle.
|
*r* | distance | Radius of rounded corners of rectangle.
|
||||||
|
|
||||||
|
|
||||||
### *Markup-ellipse* Node
|
### *Markup-ellipse* Node
|
||||||
|
|
||||||
A *Markup-ellipse* describes a markup ellipse.
|
A *Markup-ellipse* describes a markup ellipse.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*x1* | X coordinate of upper left corner of ellipse bounding box.
|
*x1* | distance | X coordinate of upper left corner of ellipse bounding box.
|
||||||
*y1* | Y coordinate of upper left corner of ellipse bounding box.
|
*y1* | distance | Y coordinate of upper left corner of ellipse bounding box.
|
||||||
*w* | Width of ellipse.
|
*w* | distance | Width of ellipse.
|
||||||
*h* | Height of ellipse.
|
*h* | distance | Height of ellipse.
|
||||||
|
|
||||||
|
|
||||||
*Layout* Node
|
*Layout* Node
|
||||||
@@ -282,13 +293,13 @@ with unique coordinates for the top left corner of that label.
|
|||||||
|
|
||||||
> A single label can always be treated as a grid of one.
|
> A single label can always be treated as a grid of one.
|
||||||
|
|
||||||
Property | Description
|
Property | Type | Description
|
||||||
--------------|------------
|
---------------|----------|------------
|
||||||
*nx* | Number of labels/cards in the grid in the X direction (horizontal).
|
*nx* | integer | Number of labels/cards in the grid in the X direction (horizontal).
|
||||||
*ny* | Number of labels/cards in the grid in the Y direction (vertical).
|
*ny* | integer | Number of labels/cards in the grid in the Y direction (vertical).
|
||||||
*x0* | Distance from left edge of sheet to the left edge of the left column of cards/labels in the layout.
|
*x0* | distance | Distance from left edge of sheet to the left edge of the left column of cards/labels in the layout.
|
||||||
*y0* | Distance from the top edge of sheet to the top edge of the top row of labels/cards in the layout.
|
*y0* | distance | Distance from the top edge of sheet to the top edge of the top row of labels/cards in the layout.
|
||||||
*dx* | Horizontal pitch of grid.
|
*dx* | distance | Horizontal pitch of grid.
|
||||||
*dy* | Vertical pitch of grid.
|
*dy* | distance | Vertical pitch of grid.
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
Developer Documentation Directory
|
Developer Documentation Directory
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
This directory contains developer documentation. For user documentation, see [user-docs/](../user-docs).
|
This directory contains developer and installation documentation primarily for developers, packagers and other contributors.
|
||||||
|
For user documentation, see [user-docs/](../user-docs/_build).
|
||||||
|
|||||||
+50
-56
@@ -1,80 +1,74 @@
|
|||||||
To Do List for gLabels 4.0 -- 2019-10-07
|
To Do List for gLabels 4.0 -- 2019-10-07
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
Expose user variables to glabels-batch
|
- [x] Expose user variables to glabels-batch
|
||||||
--------------------------------------
|
|
||||||
There should be a way to set initial values of user variables from the glabels-batch
|
|
||||||
command line. Possibly even create them on the fly.
|
|
||||||
|
|
||||||
Add programmable margin to text objects
|
There should be a way to set initial values of user variables from the glabels-batch
|
||||||
---------------------------------------
|
command line. Possibly even create them on the fly.
|
||||||
The current built-in fixed margin seems to confuse people when dealing with
|
|
||||||
different horizontal and vertical alignments.
|
|
||||||
|
|
||||||
Improve print copies UI
|
- [x] Improve print copies UI
|
||||||
-----------------------
|
|
||||||
As with previous versions of glabels, there should be a way of selecting
|
|
||||||
the number of sheets to print. Merge printing should be able to be collated
|
|
||||||
or not, and if printing multiple copies, start on the same first label.
|
|
||||||
|
|
||||||
Printer calibration tool
|
As with previous versions of glabels, there should be a way of selecting
|
||||||
------------------------
|
the number of sheets to print. Merge printing should be able to be collated
|
||||||
There desperately needs to be a printer calibration tool. At a minimum
|
or not, and if printing multiple copies, start on the same first label.
|
||||||
the tool should allow adjusting horizontal and vertical offsets. The
|
|
||||||
adjustments should be unique to each printer.
|
|
||||||
|
|
||||||
I am thinking of a test page with a cross in the center. It would have a
|
- [ ] Write help documentation
|
||||||
grid around this cross, indicating how much to adjust x & y. The user
|
|
||||||
would fold the paper in quaters and use this grid to guestimate the offsets.
|
|
||||||
|
|
||||||
There should be warnings about how printers may drift from calibration or
|
- [x] Add "User Variables" feature
|
||||||
even not have repeatable results.
|
|
||||||
|
|
||||||
* A more sophisticated tool, could adjust for scaling and skew, but it would
|
Add page to MainWindow to
|
||||||
be very difficult to interact with the user on these.
|
|
||||||
|
|
||||||
|
- Define variables,
|
||||||
Write help documentation
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
|
|
||||||
Completed List for gLabels 4.0 -- 2018-04-15
|
|
||||||
============================================
|
|
||||||
|
|
||||||
Add "User Variables" feature
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
* Add page to MainWindow to
|
|
||||||
- Define variables
|
|
||||||
- Set their initial values
|
- Set their initial values
|
||||||
- Control how they might increment (per item instance, per item copy, per page)
|
- Control how they might increment (per item instance, per item copy, per page)
|
||||||
|
|
||||||
* Save as part of glabels project file
|
Save as part of glabels project file
|
||||||
|
|
||||||
|
|
||||||
Add support for arbitrary label shapes
|
- [x] Add support for arbitrary label shapes
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
* I.e. similar to an SVG path.
|
I.e. similar to an SVG path.
|
||||||
|
|
||||||
|
|
||||||
Add support for "Continuous Roll" labels
|
- [x] Add support for "Continuous Roll" labels
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
* If product template is for a continuous roll, define a mininum and default length
|
If product template is for a continuous roll, define a mininum and default length.
|
||||||
- This determines h and dy
|
This determines h and dy
|
||||||
|
|
||||||
* Add option to Properties page to adjust this value
|
Add option to Properties page to adjust this value
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
To Do List for gLabels 4.1 -- 2019-03-17
|
To Do List for post gLabels 4.0 -- 2019-03-17
|
||||||
========================================
|
=============================================
|
||||||
|
|
||||||
|
- [ ] Create a "built-in" merge source
|
||||||
|
|
||||||
|
As an alternative to external merge sources, let the user edit the merge source
|
||||||
|
in situ. The user can add fields. The user can add records using those fields.
|
||||||
|
The user created database will become part of the glabels project file.
|
||||||
|
For simple databases, such as a small address list, this would be much easier
|
||||||
|
to deal with than creating it externally.
|
||||||
|
|
||||||
|
- [ ] Printer calibration tool
|
||||||
|
|
||||||
|
There desperately needs to be a printer calibration tool. At a minimum
|
||||||
|
the tool should allow adjusting horizontal and vertical offsets. The
|
||||||
|
adjustments should be unique to each printer.
|
||||||
|
|
||||||
|
I am thinking of a test page with a cross in the center. It would have a
|
||||||
|
grid around this cross, indicating how much to adjust x & y. The user
|
||||||
|
would fold the paper in quaters and use this grid to guestimate the offsets.
|
||||||
|
|
||||||
|
There should be warnings about how printers may drift from calibration or
|
||||||
|
even not have repeatable results.
|
||||||
|
|
||||||
|
A more sophisticated tool, could adjust for scaling and skew, but it would
|
||||||
|
be very difficult to interact with the user on these.
|
||||||
|
|
||||||
|
- [ ] Add programmable margin to text objects
|
||||||
|
|
||||||
|
The current built-in fixed margin seems to confuse people when dealing with
|
||||||
|
different horizontal and vertical alignments.
|
||||||
|
|
||||||
|
|
||||||
Create a "built-in" merge source
|
|
||||||
--------------------------------
|
|
||||||
As an alternative to external merge sources, let the user edit the merge source
|
|
||||||
in situ. The user can add fields. The user can add records using those fields.
|
|
||||||
The user created database will become part of the glabels project file.
|
|
||||||
For simple databases, such as a small address list, this would be much easier
|
|
||||||
to deal with than creating it externally.
|
|
||||||
|
|||||||
+56
-3
@@ -31,12 +31,12 @@
|
|||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
|
#include <QDebug>
|
||||||
#include <QLibraryInfo>
|
#include <QLibraryInfo>
|
||||||
#include <QLocale>
|
#include <QLocale>
|
||||||
#include <QPrinter>
|
#include <QPrinter>
|
||||||
#include <QPrinterInfo>
|
#include <QPrinterInfo>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
#include <QtDebug>
|
|
||||||
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@@ -110,8 +110,14 @@ int main( int argc, char **argv )
|
|||||||
QCoreApplication::translate( "main", "Set number of copies to <n>. (Default=1)" ),
|
QCoreApplication::translate( "main", "Set number of copies to <n>. (Default=1)" ),
|
||||||
"n", "1" },
|
"n", "1" },
|
||||||
|
|
||||||
|
{{"a","collate"},
|
||||||
|
QCoreApplication::translate( "main", "Collate merge copies." ) },
|
||||||
|
|
||||||
|
{{"g","group"},
|
||||||
|
QCoreApplication::translate( "main", "Start each merge group on a new page." ) },
|
||||||
|
|
||||||
{{"f","first"},
|
{{"f","first"},
|
||||||
QCoreApplication::translate( "main", "Set starting label on 1st page to <n>. (Default=1)" ),
|
QCoreApplication::translate( "main", "Set starting position to <n>. (Default=1)" ),
|
||||||
"n", "1" },
|
"n", "1" },
|
||||||
|
|
||||||
{{"l","outlines"},
|
{{"l","outlines"},
|
||||||
@@ -197,11 +203,58 @@ int main( int argc, char **argv )
|
|||||||
}
|
}
|
||||||
|
|
||||||
glabels::model::PageRenderer renderer( model );
|
glabels::model::PageRenderer renderer( model );
|
||||||
|
if ( model->merge()->keys().empty() )
|
||||||
|
{
|
||||||
|
// Simple project (no merge)
|
||||||
|
if ( parser.isSet( "sheets" ) )
|
||||||
|
{
|
||||||
|
// Full sheets of simple items
|
||||||
|
renderer.setNCopies( parser.value( "sheets" ).toInt() * model->frame()->nLabels() );
|
||||||
|
renderer.setStartItem( 0 );
|
||||||
|
}
|
||||||
|
else if ( parser.isSet( "copies" ) )
|
||||||
|
{
|
||||||
|
// Partial sheet(s) of simple items
|
||||||
renderer.setNCopies( parser.value( "copies" ).toInt() );
|
renderer.setNCopies( parser.value( "copies" ).toInt() );
|
||||||
renderer.setStartLabel( parser.value( "first" ).toInt() - 1 );
|
renderer.setStartItem( parser.value( "first" ).toInt() - 1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// One full sheet of simple items
|
||||||
|
renderer.setNCopies( model->frame()->nLabels() );
|
||||||
|
renderer.setStartItem( 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Project with merge
|
||||||
|
renderer.setNCopies( parser.value( "copies" ).toInt() );
|
||||||
|
renderer.setStartItem( parser.value( "first" ).toInt() - 1 );
|
||||||
|
renderer.setIsCollated( parser.isSet( "collate" ) );
|
||||||
|
renderer.setAreGroupsContiguous( !parser.isSet( "group" ) );
|
||||||
|
}
|
||||||
renderer.setPrintOutlines( parser.isSet( "outlines" ) );
|
renderer.setPrintOutlines( parser.isSet( "outlines" ) );
|
||||||
renderer.setPrintCropMarks( parser.isSet( "crop-marks" ) );
|
renderer.setPrintCropMarks( parser.isSet( "crop-marks" ) );
|
||||||
renderer.setPrintReverse( parser.isSet( "reverse" ) );
|
renderer.setPrintReverse( parser.isSet( "reverse" ) );
|
||||||
|
|
||||||
|
// Item and page count summary
|
||||||
|
if ( renderer.nPages() == 1 )
|
||||||
|
{
|
||||||
|
if ( renderer.nItems() == 1 )
|
||||||
|
{
|
||||||
|
qDebug() << "Printing 1 item on 1 page.";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << "Printing" << renderer.nItems() << "items on 1 page.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << "Printing" << renderer.nItems() << "items on" << renderer.nPages() << "pages.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do it!
|
||||||
renderer.print( &printer );
|
renderer.print( &printer );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+67
-14
@@ -70,10 +70,7 @@ namespace glabels
|
|||||||
|
|
||||||
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
|
connect( mModel, SIGNAL(changed()), this, SLOT(onModelChanged()) );
|
||||||
|
|
||||||
copiesSpin->setRange( 1, 100*mModel->frame()->nLabels() );
|
onModelChanged();
|
||||||
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() );
|
|
||||||
|
|
||||||
onFormChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -82,10 +79,15 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
void PrintView::onModelChanged()
|
void PrintView::onModelChanged()
|
||||||
{
|
{
|
||||||
copiesSpin->setRange( 1, 100*mModel->frame()->nLabels() );
|
printRangeStartPositionSpin->setRange( 1, mModel->frame()->nLabels() );
|
||||||
copiesStartSpin->setRange( 1, mModel->frame()->nLabels() );
|
printRangeLastPositionSpin->setRange( 1, mModel->frame()->nLabels() );
|
||||||
|
mergeStartPositionSpin->setRange( 1, mModel->frame()->nLabels() );
|
||||||
|
|
||||||
updateView();
|
printRangeBox->setVisible( mModel->merge()->keys().empty() );
|
||||||
|
mergeBox->setVisible( !mModel->merge()->keys().empty() );
|
||||||
|
mergeOnlyOptions->setVisible( !mModel->merge()->keys().empty() );
|
||||||
|
|
||||||
|
onFormChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -98,22 +100,24 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
if ( mRenderer.nItems() == 1 )
|
if ( mRenderer.nItems() == 1 )
|
||||||
{
|
{
|
||||||
copiesDescriptionLabel->setText( tr("(Will print a total of 1 item on 1 page.)") );
|
printDescriptionLabel->setText( tr("(Will print a total of 1 item on 1 page.)") );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
copiesDescriptionLabel->setText( tr("(Will print a total of %1 items on 1 page.)")
|
printDescriptionLabel->setText( tr("(Will print a total of %1 items on 1 page.)")
|
||||||
.arg(mRenderer.nItems()) );
|
.arg(mRenderer.nItems()) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
copiesDescriptionLabel->setText( tr("(Will print a total of %1 items on %2 pages.)")
|
printDescriptionLabel->setText( tr("(Will print a total of %1 items on %2 pages.)")
|
||||||
.arg(mRenderer.nItems()).arg(mRenderer.nPages()) );
|
.arg(mRenderer.nItems()).arg(mRenderer.nPages()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
pageSpin->setRange( 1, mRenderer.nPages() );
|
pageSpin->setRange( 1, mRenderer.nPages() );
|
||||||
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
|
nPagesLabel->setText( QString::number( mRenderer.nPages() ) );
|
||||||
|
|
||||||
|
mRenderer.setIPage( pageSpin->value() - 1 ); // Update preview
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -126,15 +130,64 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
mBlocked = true;
|
mBlocked = true;
|
||||||
|
|
||||||
mRenderer.setNCopies( copiesSpin->value() );
|
if ( mModel->merge()->keys().empty() )
|
||||||
mRenderer.setStartLabel( copiesStartSpin->value() - 1 );
|
{
|
||||||
|
// Simple project (no merge)
|
||||||
|
if ( printRangePagesRadio->isChecked() )
|
||||||
|
{
|
||||||
|
// Print full sheets of labels
|
||||||
|
int nItemsPerPage = mModel->frame()->nLabels();
|
||||||
|
|
||||||
|
printRangePagesSpin->setEnabled( true );
|
||||||
|
|
||||||
|
printRangeStartPositionSpin->setEnabled( false );
|
||||||
|
printRangeLastPositionSpin->setEnabled( false );
|
||||||
|
|
||||||
|
printRangeStartPositionSpin->setMaximum( nItemsPerPage );
|
||||||
|
printRangeLastPositionSpin->setMinimum( 1 );
|
||||||
|
|
||||||
|
printRangeStartPositionSpin->setValue( 1 );
|
||||||
|
printRangeLastPositionSpin->setValue( nItemsPerPage );
|
||||||
|
|
||||||
|
mRenderer.setNCopies( printRangePagesSpin->value()*nItemsPerPage );
|
||||||
|
mRenderer.setStartItem( 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print a partial sheet of labels
|
||||||
|
int iStart = printRangeStartPositionSpin->value();
|
||||||
|
int iLast = printRangeLastPositionSpin->value();
|
||||||
|
|
||||||
|
printRangePagesSpin->setEnabled( false );
|
||||||
|
|
||||||
|
printRangeStartPositionSpin->setEnabled( true );
|
||||||
|
printRangeLastPositionSpin->setEnabled( true );
|
||||||
|
|
||||||
|
printRangeStartPositionSpin->setMaximum( iLast );
|
||||||
|
printRangeLastPositionSpin->setMinimum( iStart );
|
||||||
|
|
||||||
|
mRenderer.setNCopies( iLast - iStart + 1 );
|
||||||
|
mRenderer.setStartItem( iStart - 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Project with merge
|
||||||
|
bool isMultipleCopies = mergeCopiesSpin->value() > 1;
|
||||||
|
|
||||||
|
mergeCollateCombo->setEnabled ( isMultipleCopies );
|
||||||
|
mergeGroupCombo->setEnabled ( isMultipleCopies );
|
||||||
|
|
||||||
|
mRenderer.setNCopies( mergeCopiesSpin->value() );
|
||||||
|
mRenderer.setIsCollated( mergeCollateCombo->currentIndex() == 1 );
|
||||||
|
mRenderer.setAreGroupsContiguous( mergeGroupCombo->currentIndex() == 0 );
|
||||||
|
mRenderer.setStartItem( mergeStartPositionSpin->value() - 1 );
|
||||||
|
}
|
||||||
|
|
||||||
mRenderer.setPrintOutlines( printOutlinesCheck->isChecked() );
|
mRenderer.setPrintOutlines( printOutlinesCheck->isChecked() );
|
||||||
mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() );
|
mRenderer.setPrintCropMarks( printCropMarksCheck->isChecked() );
|
||||||
mRenderer.setPrintReverse( printReverseCheck->isChecked() );
|
mRenderer.setPrintReverse( printReverseCheck->isChecked() );
|
||||||
|
|
||||||
mRenderer.setIPage( pageSpin->value() - 1 );
|
|
||||||
|
|
||||||
updateView();
|
updateView();
|
||||||
|
|
||||||
mBlocked = false;
|
mBlocked = false;
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ namespace glabels
|
|||||||
|
|
||||||
model::PageRenderer renderer( sheet );
|
model::PageRenderer renderer( sheet );
|
||||||
renderer.setNCopies( sheet->frame()->nLabels() );
|
renderer.setNCopies( sheet->frame()->nLabels() );
|
||||||
renderer.setStartLabel( 0 );
|
renderer.setStartItem( 0 );
|
||||||
renderer.setPrintOutlines( true );
|
renderer.setPrintOutlines( true );
|
||||||
|
|
||||||
QPrinter printer( QPrinter::HighResolution );
|
QPrinter printer( QPrinter::HighResolution );
|
||||||
|
|||||||
@@ -95,13 +95,17 @@
|
|||||||
<file>icons/flat/24x24/glabels-valign-text-middle.svg</file>
|
<file>icons/flat/24x24/glabels-valign-text-middle.svg</file>
|
||||||
<file>icons/flat/24x24/glabels-valign-text-top.svg</file>
|
<file>icons/flat/24x24/glabels-valign-text-top.svg</file>
|
||||||
|
|
||||||
|
<file>icons/flat/32x32/glabels-collated.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-file-new.svg</file>
|
<file>icons/flat/32x32/glabels-file-new.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-file-open.svg</file>
|
<file>icons/flat/32x32/glabels-file-open.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-file-recent.svg</file>
|
<file>icons/flat/32x32/glabels-file-recent.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-label-orientation-horiz.svg</file>
|
<file>icons/flat/32x32/glabels-label-orientation-horiz.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-label-orientation-vert.svg</file>
|
<file>icons/flat/32x32/glabels-label-orientation-vert.svg</file>
|
||||||
|
<file>icons/flat/32x32/glabels-merge-group-contiguous.svg</file>
|
||||||
|
<file>icons/flat/32x32/glabels-merge-group-page.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-print.svg</file>
|
<file>icons/flat/32x32/glabels-print.svg</file>
|
||||||
<file>icons/flat/32x32/glabels-select-product.svg</file>
|
<file>icons/flat/32x32/glabels-select-product.svg</file>
|
||||||
|
<file>icons/flat/32x32/glabels-uncollated.svg</file>
|
||||||
<file>icons/apps/32x32/glabels.svg</file>
|
<file>icons/apps/32x32/glabels.svg</file>
|
||||||
|
|
||||||
<file>icons/flat/48x48/glabels-edit.svg</file>
|
<file>icons/flat/48x48/glabels-edit.svg</file>
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32" >
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="4.5" y="2.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="6.5" y="4.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="8.5" y="6.5" rx="1" ry="1" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="4.5" y="17.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="6.5" y="19.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="8.5" y="21.5" rx="1" ry="1" />
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32" >
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="24" width="18" x="6.5" y="2.5" />
|
||||||
|
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="24" width="18" x="8.5" y="4.5" />
|
||||||
|
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="11" y="7" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="18" y="7" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="11" y="12" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="18" y="12" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="11" y="17" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="18" y="17" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="11" y="22" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="18" y="22" />
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,30 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32" >
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="24" width="18" x="5.5" y="1.5" />
|
||||||
|
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="24" width="18" x="7.5" y="3.5" />
|
||||||
|
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="24" width="18" x="9.5" y="5.5" />
|
||||||
|
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="12" y="8" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="19" y="8" />
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||||
|
height="4" width="6" x="12" y="13" />
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 835 B |
@@ -0,0 +1,19 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="32" >
|
||||||
|
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="2.5" y="7.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="4.5" y="9.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="6.5" y="11.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="8.5" y="13.5" rx="1" ry="1" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-opacity:1"
|
||||||
|
height="8" width="20" x="10.5" y="15.5" rx="1" ry="1" />
|
||||||
|
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 872 B |
+417
-80
@@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>852</width>
|
<width>852</width>
|
||||||
<height>792</height>
|
<height>796</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -22,6 +22,9 @@
|
|||||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,1">
|
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,1">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<property name="sizeConstraint">
|
<property name="sizeConstraint">
|
||||||
<enum>QLayout::SetDefaultConstraint</enum>
|
<enum>QLayout::SetDefaultConstraint</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -51,7 +54,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="copiesBox">
|
<widget class="QGroupBox" name="printRangeBox">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@@ -71,26 +74,29 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Copies</string>
|
<string>Print range</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QRadioButton" name="printRangePagesRadio">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Copies:</string>
|
<string>Pages</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">buttonGroup</string>
|
||||||
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="copiesSpin">
|
<widget class="QSpinBox" name="printRangePagesSpin">
|
||||||
<property name="buttonSymbols">
|
<property name="buttonSymbols">
|
||||||
<enum>QAbstractSpinBox::UpDownArrows</enum>
|
<enum>QAbstractSpinBox::UpDownArrows</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -101,7 +107,7 @@
|
|||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>9999</number>
|
<number>250</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -121,48 +127,67 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QRadioButton" name="printRangePositionsRadio">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Start on position:</string>
|
<string>Positions</string>
|
||||||
</property>
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">buttonGroup</string>
|
||||||
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="copiesStartSpin">
|
<widget class="QSpinBox" name="printRangeStartPositionSpin">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>60</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_4">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>on 1st page</string>
|
<string>to</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_2">
|
<widget class="QSpinBox" name="printRangeLastPositionSpin">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>60</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -176,29 +201,114 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
<widget class="QGroupBox" name="mergeBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Merge control</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="copiesDescriptionLabel">
|
<widget class="QLabel" name="label">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>330</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">(Will print a total of xxxx items on nnn pages.) </string>
|
<string>Copies:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="mergeCopiesSpin">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QComboBox" name="mergeCollateCombo">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">text-align:left; padding:3px;</string>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Uncollated (e.g. 1,1,1 2,2,2 3,3,3)</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../icons.qrc">
|
||||||
|
<normaloff>:/icons/flat/32x32/glabels-uncollated.svg</normaloff>:/icons/flat/32x32/glabels-uncollated.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Collated (e.g. 1,2,3 1,2,3 1,2,3)</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../icons.qrc">
|
||||||
|
<normaloff>:/icons/flat/32x32/glabels-collated.svg</normaloff>:/icons/flat/32x32/glabels-collated.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QComboBox" name="mergeGroupCombo">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">text-align:left; padding:3px;</string>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Merge groups are contiguous</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../icons.qrc">
|
||||||
|
<normaloff>:/icons/flat/32x32/glabels-merge-group-contiguous.svg</normaloff>:/icons/flat/32x32/glabels-merge-group-contiguous.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Merge groups start on a new page</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../icons.qrc">
|
||||||
|
<normaloff>:/icons/flat/32x32/glabels-merge-group-page.svg</normaloff>:/icons/flat/32x32/glabels-merge-group-page.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -223,10 +333,10 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Print options</string>
|
<string>Options</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_4">
|
<layout class="QGridLayout" name="gridLayout_4">
|
||||||
<item row="0" column="0">
|
<item row="1" column="0">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="printOutlinesCheck">
|
<widget class="QCheckBox" name="printOutlinesCheck">
|
||||||
@@ -249,11 +359,84 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="mergeOnlyOptions" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Start groups at position:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="mergeStartPositionSpin">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>12</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="printButton">
|
<widget class="QPushButton" name="printButton">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -266,7 +449,7 @@
|
|||||||
<string notr="true">text-align:left; padding:3px;</string>
|
<string notr="true">text-align:left; padding:3px;</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Print</string>
|
<string>Print...</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../icons.qrc">
|
<iconset resource="../icons.qrc">
|
||||||
@@ -278,8 +461,63 @@
|
|||||||
<height>32</height>
|
<height>32</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>2</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="printDescriptionLabel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>330</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"><html><head/><body><p>(Will print a total of xxxx items on nnn pages.)</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>2</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@@ -401,30 +639,14 @@
|
|||||||
</resources>
|
</resources>
|
||||||
<connections>
|
<connections>
|
||||||
<connection>
|
<connection>
|
||||||
<sender>copiesStartSpin</sender>
|
<sender>printRangePagesSpin</sender>
|
||||||
<signal>valueChanged(int)</signal>
|
<signal>valueChanged(int)</signal>
|
||||||
<receiver>PrintView</receiver>
|
<receiver>PrintView</receiver>
|
||||||
<slot>onFormChanged()</slot>
|
<slot>onFormChanged()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>221</x>
|
<x>175</x>
|
||||||
<y>124</y>
|
<y>122</y>
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>4</x>
|
|
||||||
<y>309</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>copiesSpin</sender>
|
|
||||||
<signal>valueChanged(int)</signal>
|
|
||||||
<receiver>PrintView</receiver>
|
|
||||||
<slot>onFormChanged()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>161</x>
|
|
||||||
<y>84</y>
|
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>2</x>
|
<x>2</x>
|
||||||
@@ -439,8 +661,8 @@
|
|||||||
<slot>onFormChanged()</slot>
|
<slot>onFormChanged()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>114</x>
|
<x>182</x>
|
||||||
<y>220</y>
|
<y>444</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>2</x>
|
<x>2</x>
|
||||||
@@ -455,8 +677,8 @@
|
|||||||
<slot>onFormChanged()</slot>
|
<slot>onFormChanged()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>84</x>
|
<x>152</x>
|
||||||
<y>248</y>
|
<y>475</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>6</x>
|
<x>6</x>
|
||||||
@@ -471,8 +693,8 @@
|
|||||||
<slot>onFormChanged()</slot>
|
<slot>onFormChanged()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>88</x>
|
<x>156</x>
|
||||||
<y>276</y>
|
<y>506</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>6</x>
|
<x>6</x>
|
||||||
@@ -487,8 +709,8 @@
|
|||||||
<slot>onFormChanged()</slot>
|
<slot>onFormChanged()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>645</x>
|
<x>641</x>
|
||||||
<y>745</y>
|
<y>760</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>1</x>
|
<x>1</x>
|
||||||
@@ -503,8 +725,8 @@
|
|||||||
<slot>onPrintButtonClicked()</slot>
|
<slot>onPrintButtonClicked()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>249</x>
|
<x>291</x>
|
||||||
<y>325</y>
|
<y>589</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>5</x>
|
<x>5</x>
|
||||||
@@ -512,10 +734,125 @@
|
|||||||
</hint>
|
</hint>
|
||||||
</hints>
|
</hints>
|
||||||
</connection>
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>mergeCopiesSpin</sender>
|
||||||
|
<signal>valueChanged(int)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>159</x>
|
||||||
|
<y>243</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>7</x>
|
||||||
|
<y>218</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>printRangePagesRadio</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>59</x>
|
||||||
|
<y>108</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>6</x>
|
||||||
|
<y>76</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>printRangeStartPositionSpin</sender>
|
||||||
|
<signal>valueChanged(int)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>142</x>
|
||||||
|
<y>149</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>5</x>
|
||||||
|
<y>123</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>printRangeLastPositionSpin</sender>
|
||||||
|
<signal>valueChanged(int)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>226</x>
|
||||||
|
<y>145</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>8</x>
|
||||||
|
<y>155</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>mergeCollateCombo</sender>
|
||||||
|
<signal>currentIndexChanged(int)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>52</x>
|
||||||
|
<y>261</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>3</x>
|
||||||
|
<y>192</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>mergeGroupCombo</sender>
|
||||||
|
<signal>currentIndexChanged(int)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>231</x>
|
||||||
|
<y>314</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>5</x>
|
||||||
|
<y>378</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>mergeStartPositionSpin</sender>
|
||||||
|
<signal>valueChanged(int)</signal>
|
||||||
|
<receiver>PrintView</receiver>
|
||||||
|
<slot>onFormChanged()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>199</x>
|
||||||
|
<y>362</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>4</x>
|
||||||
|
<y>309</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
</connections>
|
</connections>
|
||||||
<slots>
|
<slots>
|
||||||
<slot>onPrintButtonClicked()</slot>
|
<slot>onPrintButtonClicked()</slot>
|
||||||
<slot>onFormChanged()</slot>
|
<slot>onFormChanged()</slot>
|
||||||
<slot>onPrinterPropertiesButtonClicked()</slot>
|
<slot>onPrinterPropertiesButtonClicked()</slot>
|
||||||
</slots>
|
</slots>
|
||||||
|
<buttongroups>
|
||||||
|
<buttongroup name="buttonGroup"/>
|
||||||
|
</buttongroups>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
+168
-28
@@ -47,9 +47,9 @@ namespace glabels
|
|||||||
|
|
||||||
|
|
||||||
PageRenderer::PageRenderer( const Model* model )
|
PageRenderer::PageRenderer( const Model* model )
|
||||||
: mModel(nullptr), mMerge(nullptr), mVariables(nullptr), mNCopies(0), mStartLabel(0), mLastLabel(0),
|
: mModel(nullptr), mMerge(nullptr), mVariables(nullptr), mNCopies(0), mStartItem(0), mLastItem(0),
|
||||||
mPrintOutlines(false), mPrintCropMarks(false), mPrintReverse(false),
|
mPrintOutlines(false), mPrintCropMarks(false), mPrintReverse(false),
|
||||||
mIPage(0), mIsMerge(false), mNPages(0), mNLabelsPerPage(0)
|
mIPage(0), mIsMerge(false), mNPages(0), mNItemsPerPage(0)
|
||||||
{
|
{
|
||||||
if ( model )
|
if ( model )
|
||||||
{
|
{
|
||||||
@@ -79,7 +79,7 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
mMerge = mModel->merge();
|
mMerge = mModel->merge();
|
||||||
mOrigins = mModel->frame()->getOrigins();
|
mOrigins = mModel->frame()->getOrigins();
|
||||||
mNLabelsPerPage = mModel->frame()->nLabels();
|
mNItemsPerPage = mModel->frame()->nLabels();
|
||||||
mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == nullptr );
|
mIsMerge = ( dynamic_cast<const merge::None*>(mMerge) == nullptr );
|
||||||
updateNPages();
|
updateNPages();
|
||||||
|
|
||||||
@@ -96,9 +96,27 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::setStartLabel( int startLabel )
|
void PageRenderer::setStartItem( int startItem )
|
||||||
{
|
{
|
||||||
mStartLabel = startLabel;
|
mStartItem = startItem;
|
||||||
|
updateNPages();
|
||||||
|
|
||||||
|
emit changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PageRenderer::setIsCollated( bool isCollated )
|
||||||
|
{
|
||||||
|
mIsCollated = isCollated;
|
||||||
|
updateNPages();
|
||||||
|
|
||||||
|
emit changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PageRenderer::setAreGroupsContiguous( bool areGroupsContiguous )
|
||||||
|
{
|
||||||
|
mAreGroupsContiguous = areGroupsContiguous;
|
||||||
updateNPages();
|
updateNPages();
|
||||||
|
|
||||||
emit changed();
|
emit changed();
|
||||||
@@ -139,7 +157,7 @@ namespace glabels
|
|||||||
|
|
||||||
int PageRenderer::nItems() const
|
int PageRenderer::nItems() const
|
||||||
{
|
{
|
||||||
return mLastLabel - mStartLabel;
|
return mNItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -166,25 +184,49 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
if ( mModel )
|
if ( mModel )
|
||||||
{
|
{
|
||||||
if ( mIsMerge )
|
if ( !mIsMerge )
|
||||||
{
|
{
|
||||||
mLastLabel = mStartLabel + mNCopies*mMerge->nSelectedRecords();
|
// Simple project
|
||||||
|
mLastItem = mStartItem + mNCopies - 1;
|
||||||
|
mNItems = mNCopies;
|
||||||
|
mNGroups = 1;
|
||||||
|
mNItemsPerGroup = mNItems;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mLastLabel = mStartLabel + mNCopies;
|
// Merge project
|
||||||
}
|
if ( mIsCollated )
|
||||||
|
|
||||||
mNPages = mLastLabel / mNLabelsPerPage;
|
|
||||||
if ( mLastLabel % mNLabelsPerPage )
|
|
||||||
{
|
{
|
||||||
mNPages++;
|
// Collated Merge project
|
||||||
|
mNItemsPerGroup = mMerge->nSelectedRecords();
|
||||||
|
mNGroups = mNCopies;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Un-Collated Merge project
|
||||||
|
mNItemsPerGroup = mNCopies;
|
||||||
|
mNGroups = mMerge->nSelectedRecords();
|
||||||
|
}
|
||||||
|
if ( mAreGroupsContiguous )
|
||||||
|
{
|
||||||
|
// Merge groups are contiguous
|
||||||
|
mLastItem = mStartItem + mNGroups*mNItemsPerGroup - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Merge groups start on new page
|
||||||
|
mNPagesPerGroup = (mStartItem + mNItemsPerGroup - 1)/mNItemsPerPage + 1;
|
||||||
|
mLastItem = (mNGroups-1)*mNPagesPerGroup*mNItemsPerPage + mStartItem + mNItemsPerGroup - 1;
|
||||||
|
}
|
||||||
|
mNItems = mNGroups*mNItemsPerGroup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mNPages = 0;
|
mNPages = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mNPages = mLastItem/mNItemsPerPage + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -233,13 +275,20 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
if ( mModel )
|
if ( mModel )
|
||||||
{
|
{
|
||||||
if ( mIsMerge )
|
if ( !mIsMerge )
|
||||||
{
|
{
|
||||||
printMergePage( painter, iPage );
|
printSimplePage( painter, iPage );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printSimplePage( painter, iPage );
|
if ( mIsCollated )
|
||||||
|
{
|
||||||
|
printCollatedMergePage( painter, iPage );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printUnCollatedMergePage( painter, iPage );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -250,7 +299,7 @@ namespace glabels
|
|||||||
printCropMarks( painter );
|
printCropMarks( painter );
|
||||||
|
|
||||||
int iCopy = 0;
|
int iCopy = 0;
|
||||||
int iLabel = mStartLabel;
|
int iItem = mStartItem;
|
||||||
int iCurrentPage = 0;
|
int iCurrentPage = 0;
|
||||||
mVariables->resetVariables();
|
mVariables->resetVariables();
|
||||||
|
|
||||||
@@ -258,7 +307,7 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
if ( iCurrentPage == iPage )
|
if ( iCurrentPage == iPage )
|
||||||
{
|
{
|
||||||
int i = iLabel % mNLabelsPerPage;
|
int i = iItem % mNItemsPerPage;
|
||||||
|
|
||||||
painter->save();
|
painter->save();
|
||||||
|
|
||||||
@@ -276,13 +325,15 @@ namespace glabels
|
|||||||
painter->restore(); // From before translation
|
painter->restore(); // From before translation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Next copy
|
||||||
iCopy++;
|
iCopy++;
|
||||||
iLabel++;
|
iItem++;
|
||||||
iCurrentPage = iLabel / mNLabelsPerPage;
|
iCurrentPage = iItem / mNItemsPerPage;
|
||||||
|
|
||||||
|
// User variable book keeping
|
||||||
mVariables->incrementVariablesOnItem();
|
mVariables->incrementVariablesOnItem();
|
||||||
mVariables->incrementVariablesOnCopy();
|
mVariables->incrementVariablesOnCopy();
|
||||||
if ( (iLabel % mNLabelsPerPage) == 0 /* starting a new page */ )
|
if ( (iItem % mNItemsPerPage) == 0 /* starting a new page */ )
|
||||||
{
|
{
|
||||||
mVariables->incrementVariablesOnPage();
|
mVariables->incrementVariablesOnPage();
|
||||||
}
|
}
|
||||||
@@ -290,12 +341,12 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PageRenderer::printMergePage( QPainter* painter, int iPage ) const
|
void PageRenderer::printCollatedMergePage( QPainter* painter, int iPage ) const
|
||||||
{
|
{
|
||||||
printCropMarks( painter );
|
printCropMarks( painter );
|
||||||
|
|
||||||
int iCopy = 0;
|
int iCopy = 0;
|
||||||
int iLabel = mStartLabel;
|
int iItem = mStartItem;
|
||||||
int iCurrentPage = 0;
|
int iCurrentPage = 0;
|
||||||
|
|
||||||
const QList<merge::Record*> records = mMerge->selectedRecords();
|
const QList<merge::Record*> records = mMerge->selectedRecords();
|
||||||
@@ -313,7 +364,7 @@ namespace glabels
|
|||||||
{
|
{
|
||||||
if ( iCurrentPage == iPage )
|
if ( iCurrentPage == iPage )
|
||||||
{
|
{
|
||||||
int i = iLabel % mNLabelsPerPage;
|
int i = iItem % mNItemsPerPage;
|
||||||
|
|
||||||
painter->save();
|
painter->save();
|
||||||
|
|
||||||
@@ -331,20 +382,109 @@ namespace glabels
|
|||||||
painter->restore(); // From before translation
|
painter->restore(); // From before translation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Next record
|
||||||
iRecord = (iRecord + 1) % nRecords;
|
iRecord = (iRecord + 1) % nRecords;
|
||||||
if ( iRecord == 0 )
|
if ( iRecord == 0 )
|
||||||
{
|
{
|
||||||
iCopy++;
|
iCopy++;
|
||||||
|
if ( mAreGroupsContiguous )
|
||||||
|
{
|
||||||
|
iItem++;
|
||||||
}
|
}
|
||||||
iLabel++;
|
else
|
||||||
iCurrentPage = iLabel / mNLabelsPerPage;
|
{
|
||||||
|
iItem = iCopy*mNPagesPerGroup*mNItemsPerPage + mStartItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iItem++;
|
||||||
|
}
|
||||||
|
iCurrentPage = iItem / mNItemsPerPage;
|
||||||
|
|
||||||
|
// User variable book keeping
|
||||||
mVariables->incrementVariablesOnItem();
|
mVariables->incrementVariablesOnItem();
|
||||||
if ( iRecord == 0 )
|
if ( iRecord == 0 )
|
||||||
{
|
{
|
||||||
mVariables->incrementVariablesOnCopy();
|
mVariables->incrementVariablesOnCopy();
|
||||||
}
|
}
|
||||||
if ( (iLabel % mNLabelsPerPage) == 0 /* starting a new page */ )
|
if ( (iItem % mNItemsPerPage) == 0 /* starting a new page */ )
|
||||||
|
{
|
||||||
|
mVariables->incrementVariablesOnPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PageRenderer::printUnCollatedMergePage( QPainter* painter, int iPage ) const
|
||||||
|
{
|
||||||
|
printCropMarks( painter );
|
||||||
|
|
||||||
|
int iCopy = 0;
|
||||||
|
int iItem = mStartItem;
|
||||||
|
int iCurrentPage = 0;
|
||||||
|
|
||||||
|
const QList<merge::Record*> records = mMerge->selectedRecords();
|
||||||
|
int iRecord = 0;
|
||||||
|
int nRecords = records.size();
|
||||||
|
|
||||||
|
if ( nRecords == 0 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mVariables->resetVariables();
|
||||||
|
|
||||||
|
while ( (iRecord < nRecords) && (iCurrentPage <= iPage) )
|
||||||
|
{
|
||||||
|
if ( iCurrentPage == iPage )
|
||||||
|
{
|
||||||
|
int i = iItem % mNItemsPerPage;
|
||||||
|
|
||||||
|
painter->save();
|
||||||
|
|
||||||
|
painter->translate( mOrigins[i].x().pt(), mOrigins[i].y().pt() );
|
||||||
|
|
||||||
|
painter->save();
|
||||||
|
|
||||||
|
clipLabel( painter );
|
||||||
|
printLabel( painter, records[iRecord], mVariables );
|
||||||
|
|
||||||
|
painter->restore(); // From before clip
|
||||||
|
|
||||||
|
printOutline( painter );
|
||||||
|
|
||||||
|
painter->restore(); // From before translation
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next copy
|
||||||
|
iCopy = (iCopy + 1) % mNCopies;
|
||||||
|
if ( iCopy == 0 )
|
||||||
|
{
|
||||||
|
iRecord++;
|
||||||
|
if ( mAreGroupsContiguous )
|
||||||
|
{
|
||||||
|
iItem++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iItem = iRecord*mNPagesPerGroup*mNItemsPerPage + mStartItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iItem++;
|
||||||
|
}
|
||||||
|
iCurrentPage = iItem / mNItemsPerPage;
|
||||||
|
|
||||||
|
// User variable book keeping
|
||||||
|
mVariables->incrementVariablesOnItem();
|
||||||
|
mVariables->incrementVariablesOnCopy();
|
||||||
|
if ( iCopy == 0 )
|
||||||
|
{
|
||||||
|
mVariables->resetOnCopyVariables();
|
||||||
|
}
|
||||||
|
if ( (iItem % mNItemsPerPage) == 0 /* starting a new page */ )
|
||||||
{
|
{
|
||||||
mVariables->incrementVariablesOnPage();
|
mVariables->incrementVariablesOnPage();
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-8
@@ -64,7 +64,9 @@ namespace glabels
|
|||||||
void setModel( const Model* model );
|
void setModel( const Model* model );
|
||||||
const Model* model() const;
|
const Model* model() const;
|
||||||
void setNCopies( int nCopies );
|
void setNCopies( int nCopies );
|
||||||
void setStartLabel( int startLabel );
|
void setStartItem( int startItem );
|
||||||
|
void setIsCollated( bool isCollated );
|
||||||
|
void setAreGroupsContiguous( bool areGroupscontiguous );
|
||||||
void setPrintOutlines( bool printOutlinesFlag );
|
void setPrintOutlines( bool printOutlinesFlag );
|
||||||
void setPrintCropMarks( bool printCropMarksFlag );
|
void setPrintCropMarks( bool printCropMarksFlag );
|
||||||
void setPrintReverse( bool printReverseFlag );
|
void setPrintReverse( bool printReverseFlag );
|
||||||
@@ -97,7 +99,8 @@ namespace glabels
|
|||||||
private:
|
private:
|
||||||
void updateNPages();
|
void updateNPages();
|
||||||
void printSimplePage( QPainter* painter, int iPage ) const;
|
void printSimplePage( QPainter* painter, int iPage ) const;
|
||||||
void printMergePage( QPainter* painter, int iPage ) const;
|
void printCollatedMergePage( QPainter* painter, int iPage ) const;
|
||||||
|
void printUnCollatedMergePage( QPainter* painter, int iPage ) const;
|
||||||
void printCropMarks( QPainter* painter ) const;
|
void printCropMarks( QPainter* painter ) const;
|
||||||
void printOutline( QPainter* painter ) const;
|
void printOutline( QPainter* painter ) const;
|
||||||
void clipLabel( QPainter* painter ) const;
|
void clipLabel( QPainter* painter ) const;
|
||||||
@@ -113,16 +116,24 @@ namespace glabels
|
|||||||
Variables* mVariables;
|
Variables* mVariables;
|
||||||
|
|
||||||
int mNCopies;
|
int mNCopies;
|
||||||
int mStartLabel;
|
int mStartItem;
|
||||||
int mLastLabel;
|
int mLastItem;
|
||||||
bool mPrintOutlines;
|
int mNGroups;
|
||||||
bool mPrintCropMarks;
|
int mNItemsPerGroup;
|
||||||
bool mPrintReverse;
|
int mNPagesPerGroup;
|
||||||
int mIPage;
|
int mIPage;
|
||||||
|
|
||||||
bool mIsMerge;
|
bool mIsMerge;
|
||||||
|
|
||||||
|
int mNItems;
|
||||||
int mNPages;
|
int mNPages;
|
||||||
int mNLabelsPerPage;
|
int mNItemsPerPage;
|
||||||
|
|
||||||
|
bool mIsCollated;
|
||||||
|
bool mAreGroupsContiguous;
|
||||||
|
bool mPrintOutlines;
|
||||||
|
bool mPrintCropMarks;
|
||||||
|
bool mPrintReverse;
|
||||||
|
|
||||||
QVector<Point> mOrigins;
|
QVector<Point> mOrigins;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -118,6 +118,21 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Reset "on copy" variables to their initial values
|
||||||
|
///
|
||||||
|
void Variables::resetOnCopyVariables()
|
||||||
|
{
|
||||||
|
for ( auto& v : *this )
|
||||||
|
{
|
||||||
|
if ( v.increment() == Variable::Increment::PER_COPY )
|
||||||
|
{
|
||||||
|
v.resetValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Increment variables on item
|
/// Increment variables on item
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ namespace glabels
|
|||||||
void setVariables( const QMap<QString,QString>& definitions );
|
void setVariables( const QMap<QString,QString>& definitions );
|
||||||
|
|
||||||
void resetVariables();
|
void resetVariables();
|
||||||
|
void resetOnCopyVariables();
|
||||||
void incrementVariablesOnItem();
|
void incrementVariablesOnItem();
|
||||||
void incrementVariablesOnCopy();
|
void incrementVariablesOnCopy();
|
||||||
void incrementVariablesOnPage();
|
void incrementVariablesOnPage();
|
||||||
|
|||||||
+48
-20
@@ -531,26 +531,10 @@
|
|||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>PrintView</name>
|
<name>PrintView</name>
|
||||||
<message>
|
|
||||||
<source>Copies</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Copies:</source>
|
<source>Copies:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Start on position:</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>on 1st page</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Print options</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>print outlines</source>
|
<source>print outlines</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
@@ -563,10 +547,6 @@
|
|||||||
<source>print in reverse (i.e. a mirror image)</source>
|
<source>print in reverse (i.e. a mirror image)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Print</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Page</source>
|
<source>Page</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
@@ -579,6 +559,54 @@
|
|||||||
<source>nn</source>
|
<source>nn</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Options</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Print range</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Positions</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>to</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Merge control</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Uncollated (e.g. 1,1,1 2,2,2 3,3,3)</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Collated (e.g. 1,2,3 1,2,3 1,2,3)</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Merge groups are contiguous</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Merge groups start on a new page</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Print...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Start groups at position:</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>PropertiesView</name>
|
<name>PropertiesView</name>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "GLABELS-BATCH-QT" "1" "Nov 27, 2019" "" "gLabels"
|
.TH "GLABELS-BATCH-QT" "1" "Jan 01, 2020" "" "gLabels"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
glabels-batch-qt \- batch creation of labels and business cards
|
glabels-batch-qt \- batch creation of labels and business cards
|
||||||
.
|
.
|
||||||
@@ -35,9 +35,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||||||
\fBglabels\-batch\-qt\fP [\fIoptions\fP] [\fIfilename\fP]
|
\fBglabels\-batch\-qt\fP [\fIoptions\fP] [\fIfilename\fP]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.sp
|
.sp
|
||||||
\fBglabels\-batch\-qt\fP is a utility for printing files previously
|
\fBglabels\-batch\-qt\fP is a utility for printing a glabels project file
|
||||||
prepared with \fBglabels\-qt\fP from the command line. It is suitable
|
from the command line. It is suitable for use with scripts.
|
||||||
for use with scripts.
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@@ -57,13 +56,15 @@ Send output to <printer>.
|
|||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-o [<filename>], \-\-output [<filename>]
|
.B \-o [<filename>], \-\-output [<filename>]
|
||||||
Set output filename to <filename>. Set to "\-" for stdout.
|
.TP
|
||||||
(Default="output.pdf")
|
.B Set output filename to <filename>. If filename is "\-", write to standard output.
|
||||||
|
.TP
|
||||||
|
.B (Default="output.pdf")
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
.B \-s <n>, \-\-sheets <n>
|
.B \-s <n>, \-\-sheets <n>
|
||||||
Set number of sheets to <n>. (Default=1)
|
For simple projects, sets number of full sheets to <n>. (Default=1)
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@@ -72,8 +73,18 @@ Set number of copies to <n>. (Default=1)
|
|||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
|
.B \-a, \-\-collate
|
||||||
|
Collate merge copies.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
|
.B \-g, \-\-group
|
||||||
|
Start each merge group on a new page.
|
||||||
|
.UNINDENT
|
||||||
|
.INDENT 0.0
|
||||||
|
.TP
|
||||||
.B \-f <n>, \-\-first <n>
|
.B \-f <n>, \-\-first <n>
|
||||||
Set starting label on 1st page to <n>. (Default=1)
|
Set starting position to <n>. (Default=1)
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
.TP
|
.TP
|
||||||
@@ -113,7 +124,20 @@ templates here!\fP
|
|||||||
.B ${HOME}/.glabels/
|
.B ${HOME}/.glabels/
|
||||||
Directory for manually created product templates.
|
Directory for manually created product templates.
|
||||||
.UNINDENT
|
.UNINDENT
|
||||||
.SH BUGS
|
.SH KNOWN ISSUES
|
||||||
|
.sp
|
||||||
|
On GNU/Linux platforms, \fBglabels\-batch\-qt\fP must be run from within a windowing environment, such as X or Wayland. This is because Qt requires a suitable platform to obtain system font information. A work\-around is to run \fBglabels\-batch\-qt\fP using a virtual X server environment:
|
||||||
|
.INDENT 0.0
|
||||||
|
.INDENT 3.5
|
||||||
|
.sp
|
||||||
|
.nf
|
||||||
|
.ft C
|
||||||
|
xvfb\-run glabels\-batch\-qt \-o output.pdf myProject.glabels
|
||||||
|
.ft P
|
||||||
|
.fi
|
||||||
|
.UNINDENT
|
||||||
|
.UNINDENT
|
||||||
|
.SH REPORTING BUGS
|
||||||
.sp
|
.sp
|
||||||
On GNU/Linux platforms, \fBglabels\-batch\-qt\fP must be run from within a windowing environment, such as X or Wayland. This is because Qt requires a suitable platform to obtain system font information. A work\-around is to run \fBglabels\-batch\-qt\fP using a virtual X server environment:
|
On GNU/Linux platforms, \fBglabels\-batch\-qt\fP must be run from within a windowing environment, such as X or Wayland. This is because Qt requires a suitable platform to obtain system font information. A work\-around is to run \fBglabels\-batch\-qt\fP using a virtual X server environment:
|
||||||
.INDENT 0.0
|
.INDENT 0.0
|
||||||
@@ -134,9 +158,7 @@ Bugs and feature requests can be reported via the gLabels issue tracking system
|
|||||||
\fBglabels\-qt(1)\fP
|
\fBglabels\-qt(1)\fP
|
||||||
.sp
|
.sp
|
||||||
The gLabels homepage at <\fI\%http://glabels.org/\fP>.
|
The gLabels homepage at <\fI\%http://glabels.org/\fP>.
|
||||||
.SH AUTHOR
|
|
||||||
Jim Evins
|
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
2018, Jim Evins <evins@snaught.com>
|
2020, Jim Evins <evins@snaught.com>
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
.\" Man page generated from reStructuredText.
|
.\" Man page generated from reStructuredText.
|
||||||
.
|
.
|
||||||
.TH "GLABELS-QT" "1" "Nov 27, 2019" "" "gLabels"
|
.TH "GLABELS-QT" "1" "Jan 01, 2020" "" "gLabels"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
glabels-qt \- create labels and business cards
|
glabels-qt \- create labels and business cards
|
||||||
.
|
.
|
||||||
@@ -75,9 +75,7 @@ Bugs and feature requests can be reported via the gLabels issue tracking system
|
|||||||
\fBglabels\-batch\-qt(1)\fP
|
\fBglabels\-batch\-qt(1)\fP
|
||||||
.sp
|
.sp
|
||||||
The gLabels homepage at <\fI\%http://glabels.org/\fP>.
|
The gLabels homepage at <\fI\%http://glabels.org/\fP>.
|
||||||
.SH AUTHOR
|
|
||||||
Jim Evins
|
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
2018, Jim Evins <evins@snaught.com>
|
2020, Jim Evins <evins@snaught.com>
|
||||||
.\" Generated by docutils manpage writer.
|
.\" Generated by docutils manpage writer.
|
||||||
.
|
.
|
||||||
|
|||||||
+3
-3
@@ -47,7 +47,7 @@ master_doc = 'index'
|
|||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = 'gLabels'
|
project = 'gLabels'
|
||||||
copyright = '2018, Jim Evins <evins@snaught.com>'
|
copyright = '2020, Jim Evins <evins@snaught.com>'
|
||||||
author = 'Jim Evins'
|
author = 'Jim Evins'
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
@@ -149,8 +149,8 @@ latex_documents = [
|
|||||||
# One entry per manual page. List of tuples
|
# One entry per manual page. List of tuples
|
||||||
# (source start file, name, description, authors, manual section).
|
# (source start file, name, description, authors, manual section).
|
||||||
man_pages = [
|
man_pages = [
|
||||||
('man/glabels-qt', 'glabels-qt', 'create labels and business cards', [author], 1),
|
('man/glabels-qt', 'glabels-qt', 'create labels and business cards', [], 1),
|
||||||
('man/glabels-batch-qt', 'glabels-batch-qt', 'batch creation of labels and business cards', [author], 1)
|
('man/glabels-batch-qt', 'glabels-batch-qt', 'batch creation of labels and business cards', [], 1)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,8 @@ SYNOPSIS
|
|||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
:program:`glabels-batch-qt` is a utility for printing files previously
|
:program:`glabels-batch-qt` is a utility for printing a glabels project file
|
||||||
prepared with :program:`glabels-qt` from the command line. It is suitable
|
from the command line. It is suitable for use with scripts.
|
||||||
for use with scripts.
|
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
@@ -32,21 +31,28 @@ OPTIONS
|
|||||||
Send output to <printer>.
|
Send output to <printer>.
|
||||||
|
|
||||||
.. option:: -o [<filename>], --output [<filename>]
|
.. option:: -o [<filename>], --output [<filename>]
|
||||||
|
Set output filename to <filename>. If filename is "-", write to standard output.
|
||||||
Set output filename to <filename>. Set to "-" for stdout.
|
|
||||||
(Default="output.pdf")
|
(Default="output.pdf")
|
||||||
|
|
||||||
.. option:: -s <n>, --sheets <n>
|
.. option:: -s <n>, --sheets <n>
|
||||||
|
|
||||||
Set number of sheets to <n>. (Default=1)
|
For simple projects, sets number of full sheets to <n>. (Default=1)
|
||||||
|
|
||||||
.. option:: -c <n>, --copies <n>
|
.. option:: -c <n>, --copies <n>
|
||||||
|
|
||||||
Set number of copies to <n>. (Default=1)
|
Set number of copies to <n>. (Default=1)
|
||||||
|
|
||||||
|
.. option:: -a, --collate
|
||||||
|
|
||||||
|
Collate merge copies.
|
||||||
|
|
||||||
|
.. option:: -g, --group
|
||||||
|
|
||||||
|
Start each merge group on a new page.
|
||||||
|
|
||||||
.. option:: -f <n>, --first <n>
|
.. option:: -f <n>, --first <n>
|
||||||
|
|
||||||
Set starting label on 1st page to <n>. (Default=1)
|
Set starting position to <n>. (Default=1)
|
||||||
|
|
||||||
.. option:: -l, --outlines
|
.. option:: -l, --outlines
|
||||||
|
|
||||||
@@ -81,8 +87,18 @@ FILES
|
|||||||
|
|
||||||
Directory for manually created product templates.
|
Directory for manually created product templates.
|
||||||
|
|
||||||
BUGS
|
KNOWN ISSUES
|
||||||
----
|
------------
|
||||||
|
|
||||||
|
On GNU/Linux platforms, :program:`glabels-batch-qt` must be run from within a windowing environment, such as X or Wayland. This is because Qt requires a suitable platform to obtain system font information. A work-around is to run :program:`glabels-batch-qt` using a virtual X server environment:
|
||||||
|
|
||||||
|
.. code:: shell
|
||||||
|
|
||||||
|
xvfb-run glabels-batch-qt -o output.pdf myProject.glabels
|
||||||
|
|
||||||
|
|
||||||
|
REPORTING BUGS
|
||||||
|
--------------
|
||||||
|
|
||||||
On GNU/Linux platforms, :program:`glabels-batch-qt` must be run from within a windowing environment, such as X or Wayland. This is because Qt requires a suitable platform to obtain system font information. A work-around is to run :program:`glabels-batch-qt` using a virtual X server environment:
|
On GNU/Linux platforms, :program:`glabels-batch-qt` must be run from within a windowing environment, such as X or Wayland. This is because Qt requires a suitable platform to obtain system font information. A work-around is to run :program:`glabels-batch-qt` using a virtual X server environment:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user