Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
|
946ac19a58 |
34 changed files with 414 additions and 797 deletions
|
@ -20,7 +20,7 @@ For PDFs, your printer needs to support one of the following formats:
|
|||
For Postscript, your printer needs to support Postscript natively. (SeaPrint just sends it as-is)
|
||||
|
||||
For Plaintext, SeaPrint can render it to PDF internally and then the requirements follow those of PDF.
|
||||
You can also send Plaintext to supporting printers and leave the rendering up to the printer (SeaPrint will strip leading and trailing Form Feed characters and ensure CR+LF newlines, but not do any reflow or similar). Since rendering will differ between printers, this has lowest priority for automatic format selection.
|
||||
You can also send Plaintext to supporting printers and leave the rendering up to the printer (SeaPrint will strip leading and trailing Form Feed characters and ensure CR-NL newlines, but not do any reflow or similar). Since rendering will differ between printers, this has lowest priority for automatic format selection.
|
||||
|
||||
For printing "Office" files, like .doc(x) and odt, you need to install
|
||||
`calligraconverter` (from the `calligra` package in Sailfish OS 4.2 onwards).
|
||||
|
@ -43,10 +43,6 @@ For other image formats JPEG has lowest priority as transfer format since it is
|
|||
|
||||
![Format flowchart](doc/pipeline.svg)
|
||||
|
||||
Flowchart made with [GoAT](https://github.com/blampe/goat).
|
||||
|
||||
pdf2printable, ppm2pwg and baselinify were made especially for SeaPrint and can be found [here](https://github.com/attah/ppm2pwg).
|
||||
|
||||
Printers with any of these IPP certifications and derivative standards should likely be supported:
|
||||
|
||||
* IPP Everywhere
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
Normal flow:
|
||||
If conversion is required:
|
||||
.---------------.
|
||||
PDF -------------------------------------------->| +----------------------> PDF 1.5
|
||||
.-----------------. | |
|
||||
Plaintext ---->| QTextDocument +------------------>| pdf2printable +----------------------> Postscript 2
|
||||
'-----------------' | |
|
||||
DOC/PPT .-------------------. | (Poppler+Cairo) | .---------.
|
||||
ODT/ODP ---->| Calligraconverter +---------------->| | | |
|
||||
| (optional) | | +---->| +----> PWG-Raster
|
||||
'-------------------' .--------. | | | ppm2pwg |
|
||||
Images --------------------------->| +---->| | | +----> URF-Raster
|
||||
| | '---------------' | |
|
||||
| QImage +---------------------------->| |
|
||||
.--------------. | | '---------'
|
||||
SVG ---->| QSvgRenderer +---->| +----------------------------------------------> PNG, JPEG,
|
||||
PDF -------------------------------->| |
|
||||
.------------------. | +----------------> Postscript
|
||||
Plaintext ---->| QTextDocument +----->| pdf2printable |
|
||||
| + QPdfWriter | | +----------------> PDF
|
||||
'------------------' | |
|
||||
DOC/PPT .-------------------. | |
|
||||
ODT/ODP ---->| Calligraconverter +---->| '---------.
|
||||
| (optional) | '---------------. +----> PWG-Raster
|
||||
'-------------------' .--------. | ppm2pwg |
|
||||
Images -------------------------------->| +----->| +----> URF-Raster
|
||||
| QImage | '---------'
|
||||
.--------------. | |
|
||||
SVG ---->| QSvgRenderer +--------->| +-----------------------> PNG, JPEG,
|
||||
'--------------' '--------' Reverse BMP
|
||||
|
||||
If target format is the same:
|
||||
|
||||
Postscript --------------------------------------------------------------------------------------> Postscript
|
||||
Postscript --------------------------------------------------------------------> Postscript
|
||||
.-----------------------.
|
||||
Plaintext ---->| ensure CR+LF newlines +------------------------------------------------------> Plaintext
|
||||
Plaintext ---->+ ensure CR+LF newlines +------------------------------------> Plaintext
|
||||
'-----------------------'
|
||||
PNG --------------------------------------------------------------------------------------> PNG
|
||||
PNG --------------------------------------------------------------------> PNG
|
||||
.------------.
|
||||
JPEG ---->| baselinify +-----------------------------------------------------------------> JPEG
|
||||
JPEG ---->+ baselinify +-----------------------------------------------> JPEG
|
||||
'------------' (Baseline profile)
|
||||
|
|
551
doc/pipeline.svg
551
doc/pipeline.svg
|
@ -1,4 +1,4 @@
|
|||
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='441' width='976' font-family='Menlo,Lucida Console,monospace'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='441' width='832' font-family='Menlo,Lucida Console,monospace'>
|
||||
<style type="text/css">
|
||||
svg {
|
||||
color: #000000;
|
||||
|
@ -10,103 +10,98 @@ svg {
|
|||
}
|
||||
</style>
|
||||
<g transform='translate(8,16)'>
|
||||
<path d='M 496,16 L 608,16' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,32 L 472,32' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,32 L 808,32' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,48 L 304,48' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 400,16 L 512,16' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,32 L 376,32' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,48 L 312,48' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,48 L 664,48' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,64 L 152,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 320,64 L 472,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,64 L 808,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,80 L 304,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,96 L 320,96' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 688,96 L 752,96' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,112 L 152,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 336,112 L 472,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,128 L 664,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 768,128 L 808,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,144 L 320,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 360,144 L 416,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,160 L 336,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 432,160 L 472,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 768,160 L 808,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 496,176 L 608,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 432,192 L 664,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 328,64 L 376,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,80 L 664,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,96 L 312,96' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,112 L 320,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,128 L 152,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 336,128 L 376,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 544,128 L 608,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 400,144 L 512,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,144 L 664,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,160 L 320,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 400,160 L 456,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,176 L 376,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 472,176 L 520,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,176 L 664,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 544,192 L 608,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,208 L 280,208' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 688,208 L 752,208' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,224 L 152,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 296,224 L 336,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 432,224 L 808,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 296,224 L 376,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 472,224 L 664,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,240 L 280,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 360,240 L 416,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,304 L 808,304' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 400,240 L 456,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,304 L 664,304' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,320 L 352,320' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,336 L 152,336' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 368,336 L 808,336' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 368,336 L 664,336' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,352 L 352,352' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,368 L 808,368' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,368 L 664,368' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,384 L 264,384' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 120,400 L 152,400' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 280,400 L 808,400' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 280,400 L 664,400' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,416 L 264,416' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,112 L 160,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 336,112 L 336,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 344,160 L 344,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 432,160 L 432,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 432,192 L 432,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 480,32 L 480,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,32 L 624,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,64 L 624,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,128 L 624,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 672,112 L 672,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 768,112 L 768,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 768,128 L 768,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 768,160 L 768,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,64 L 160,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,128 L 160,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 328,64 L 328,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 336,128 L 336,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 384,32 L 384,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 384,176 L 384,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 472,176 L 472,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,32 L 528,48' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,48 L 528,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,80 L 528,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,160 L 528,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,144 L 624,176' fill='none' stroke='currentColor'></path>
|
||||
<polygon points='160.000000,64.000000 148.000000,58.400002 148.000000,69.599998' fill='currentColor' transform='rotate(0.000000, 152.000000, 64.000000)'></polygon>
|
||||
<polygon points='160.000000,112.000000 148.000000,106.400002 148.000000,117.599998' fill='currentColor' transform='rotate(0.000000, 152.000000, 112.000000)'></polygon>
|
||||
<polygon points='160.000000,128.000000 148.000000,122.400002 148.000000,133.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 128.000000)'></polygon>
|
||||
<polygon points='160.000000,224.000000 148.000000,218.399994 148.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 224.000000)'></polygon>
|
||||
<polygon points='160.000000,336.000000 148.000000,330.399994 148.000000,341.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 336.000000)'></polygon>
|
||||
<polygon points='160.000000,400.000000 148.000000,394.399994 148.000000,405.600006' fill='currentColor' transform='rotate(0.000000, 152.000000, 400.000000)'></polygon>
|
||||
<polygon points='344.000000,160.000000 332.000000,154.399994 332.000000,165.600006' fill='currentColor' transform='rotate(0.000000, 336.000000, 160.000000)'></polygon>
|
||||
<polygon points='344.000000,224.000000 332.000000,218.399994 332.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 336.000000, 224.000000)'></polygon>
|
||||
<polygon points='480.000000,32.000000 468.000000,26.400000 468.000000,37.599998' fill='currentColor' transform='rotate(0.000000, 472.000000, 32.000000)'></polygon>
|
||||
<polygon points='480.000000,64.000000 468.000000,58.400002 468.000000,69.599998' fill='currentColor' transform='rotate(0.000000, 472.000000, 64.000000)'></polygon>
|
||||
<polygon points='480.000000,112.000000 468.000000,106.400002 468.000000,117.599998' fill='currentColor' transform='rotate(0.000000, 472.000000, 112.000000)'></polygon>
|
||||
<polygon points='480.000000,160.000000 468.000000,154.399994 468.000000,165.600006' fill='currentColor' transform='rotate(0.000000, 472.000000, 160.000000)'></polygon>
|
||||
<polygon points='672.000000,128.000000 660.000000,122.400002 660.000000,133.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 128.000000)'></polygon>
|
||||
<polygon points='672.000000,192.000000 660.000000,186.399994 660.000000,197.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 192.000000)'></polygon>
|
||||
<polygon points='816.000000,32.000000 804.000000,26.400000 804.000000,37.599998' fill='currentColor' transform='rotate(0.000000, 808.000000, 32.000000)'></polygon>
|
||||
<polygon points='816.000000,64.000000 804.000000,58.400002 804.000000,69.599998' fill='currentColor' transform='rotate(0.000000, 808.000000, 64.000000)'></polygon>
|
||||
<polygon points='816.000000,128.000000 804.000000,122.400002 804.000000,133.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 128.000000)'></polygon>
|
||||
<polygon points='816.000000,160.000000 804.000000,154.399994 804.000000,165.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 160.000000)'></polygon>
|
||||
<polygon points='816.000000,224.000000 804.000000,218.399994 804.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 224.000000)'></polygon>
|
||||
<polygon points='816.000000,304.000000 804.000000,298.399994 804.000000,309.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 304.000000)'></polygon>
|
||||
<polygon points='816.000000,336.000000 804.000000,330.399994 804.000000,341.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 336.000000)'></polygon>
|
||||
<polygon points='816.000000,368.000000 804.000000,362.399994 804.000000,373.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 368.000000)'></polygon>
|
||||
<polygon points='816.000000,400.000000 804.000000,394.399994 804.000000,405.600006' fill='currentColor' transform='rotate(0.000000, 808.000000, 400.000000)'></polygon>
|
||||
<path d='M 496,16 A 16,16 0 0,0 480,32' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 608,16 A 16,16 0 0,1 624,32' fill='none' stroke='currentColor'></path>
|
||||
<polygon points='384.000000,32.000000 372.000000,26.400000 372.000000,37.599998' fill='currentColor' transform='rotate(0.000000, 376.000000, 32.000000)'></polygon>
|
||||
<polygon points='384.000000,64.000000 372.000000,58.400002 372.000000,69.599998' fill='currentColor' transform='rotate(0.000000, 376.000000, 64.000000)'></polygon>
|
||||
<polygon points='384.000000,128.000000 372.000000,122.400002 372.000000,133.600006' fill='currentColor' transform='rotate(0.000000, 376.000000, 128.000000)'></polygon>
|
||||
<polygon points='384.000000,176.000000 372.000000,170.399994 372.000000,181.600006' fill='currentColor' transform='rotate(0.000000, 376.000000, 176.000000)'></polygon>
|
||||
<polygon points='384.000000,224.000000 372.000000,218.399994 372.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 376.000000, 224.000000)'></polygon>
|
||||
<polygon points='528.000000,176.000000 516.000000,170.399994 516.000000,181.600006' fill='currentColor' transform='rotate(0.000000, 520.000000, 176.000000)'></polygon>
|
||||
<polygon points='672.000000,48.000000 660.000000,42.400002 660.000000,53.599998' fill='currentColor' transform='rotate(0.000000, 664.000000, 48.000000)'></polygon>
|
||||
<polygon points='672.000000,80.000000 660.000000,74.400002 660.000000,85.599998' fill='currentColor' transform='rotate(0.000000, 664.000000, 80.000000)'></polygon>
|
||||
<polygon points='672.000000,144.000000 660.000000,138.399994 660.000000,149.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 144.000000)'></polygon>
|
||||
<polygon points='672.000000,176.000000 660.000000,170.399994 660.000000,181.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 176.000000)'></polygon>
|
||||
<polygon points='672.000000,224.000000 660.000000,218.399994 660.000000,229.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 224.000000)'></polygon>
|
||||
<polygon points='672.000000,304.000000 660.000000,298.399994 660.000000,309.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 304.000000)'></polygon>
|
||||
<polygon points='672.000000,336.000000 660.000000,330.399994 660.000000,341.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 336.000000)'></polygon>
|
||||
<polygon points='672.000000,368.000000 660.000000,362.399994 660.000000,373.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 368.000000)'></polygon>
|
||||
<polygon points='672.000000,400.000000 660.000000,394.399994 660.000000,405.600006' fill='currentColor' transform='rotate(0.000000, 664.000000, 400.000000)'></polygon>
|
||||
<path d='M 400,16 A 16,16 0 0,0 384,32' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 512,16 A 16,16 0 0,1 528,32' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,48 A 16,16 0 0,0 160,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 304,48 A 16,16 0 0,1 320,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,64 A 16,16 0 0,0 176,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 320,64 A 16,16 0 0,1 304,80' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,96 A 16,16 0 0,0 160,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 320,96 A 16,16 0 0,1 336,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 688,96 A 16,16 0 0,0 672,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 752,96 A 16,16 0 0,1 768,112' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,128 A 16,16 0 0,0 176,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 336,128 A 16,16 0 0,1 320,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 360,144 A 16,16 0 0,0 344,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 416,144 A 16,16 0 0,1 432,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 480,160 A 16,16 0 0,0 496,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,160 A 16,16 0 0,1 608,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 312,48 A 16,16 0 0,1 328,64' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,80 A 16,16 0 0,0 176,96' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 328,80 A 16,16 0 0,1 312,96' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,112 A 16,16 0 0,0 160,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 320,112 A 16,16 0 0,1 336,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,112 A 16,16 0 0,0 544,128' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 608,128 A 16,16 0 0,1 624,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 384,128 A 16,16 0 0,0 400,144' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 512,144 A 16,16 0 0,1 528,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,144 A 16,16 0 0,0 176,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 336,144 A 16,16 0 0,1 320,160' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 400,160 A 16,16 0 0,0 384,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 456,160 A 16,16 0 0,1 472,176' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 528,176 A 16,16 0 0,0 544,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 624,176 A 16,16 0 0,1 608,192' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,208 A 16,16 0 0,0 160,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 280,208 A 16,16 0 0,1 296,224' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 672,192 A 16,16 0 0,0 688,208' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 768,192 A 16,16 0 0,1 752,208' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,224 A 16,16 0 0,0 176,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 296,224 A 16,16 0 0,1 280,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 344,224 A 16,16 0 0,0 360,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 432,224 A 16,16 0 0,1 416,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 384,224 A 16,16 0 0,0 400,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 472,224 A 16,16 0 0,1 456,240' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 176,320 A 16,16 0 0,0 160,336' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 352,320 A 16,16 0 0,1 368,336' fill='none' stroke='currentColor'></path>
|
||||
<path d='M 160,336 A 16,16 0 0,0 176,352' fill='none' stroke='currentColor'></path>
|
||||
|
@ -123,26 +118,42 @@ svg {
|
|||
font-size: 1em;
|
||||
}
|
||||
</style>
|
||||
<text x='16' y='4'>N</text>
|
||||
<text x='24' y='4'>o</text>
|
||||
<text x='32' y='4'>r</text>
|
||||
<text x='40' y='4'>m</text>
|
||||
<text x='48' y='4'>a</text>
|
||||
<text x='56' y='4'>l</text>
|
||||
<text x='72' y='4'>f</text>
|
||||
<text x='80' y='4'>l</text>
|
||||
<text x='88' y='4'>o</text>
|
||||
<text x='96' y='4'>w</text>
|
||||
<text x='104' y='4'>:</text>
|
||||
<text x='16' y='4'>I</text>
|
||||
<text x='24' y='4'>f</text>
|
||||
<text x='40' y='4'>c</text>
|
||||
<text x='48' y='4'>o</text>
|
||||
<text x='56' y='4'>n</text>
|
||||
<text x='64' y='4'>v</text>
|
||||
<text x='72' y='4'>e</text>
|
||||
<text x='80' y='4'>r</text>
|
||||
<text x='88' y='4'>s</text>
|
||||
<text x='96' y='4'>i</text>
|
||||
<text x='104' y='4'>o</text>
|
||||
<text x='112' y='4'>n</text>
|
||||
<text x='128' y='4'>i</text>
|
||||
<text x='136' y='4'>s</text>
|
||||
<text x='152' y='4'>r</text>
|
||||
<text x='160' y='4'>e</text>
|
||||
<text x='168' y='4'>q</text>
|
||||
<text x='176' y='4'>u</text>
|
||||
<text x='184' y='4'>i</text>
|
||||
<text x='192' y='4'>r</text>
|
||||
<text x='200' y='4'>e</text>
|
||||
<text x='208' y='4'>d</text>
|
||||
<text x='216' y='4'>:</text>
|
||||
<text x='32' y='36'>P</text>
|
||||
<text x='40' y='36'>D</text>
|
||||
<text x='48' y='36'>F</text>
|
||||
<text x='824' y='36'>P</text>
|
||||
<text x='832' y='36'>D</text>
|
||||
<text x='840' y='36'>F</text>
|
||||
<text x='856' y='36'>1</text>
|
||||
<text x='864' y='36'>.</text>
|
||||
<text x='872' y='36'>5</text>
|
||||
<text x='680' y='52'>P</text>
|
||||
<text x='688' y='52'>o</text>
|
||||
<text x='696' y='52'>s</text>
|
||||
<text x='704' y='52'>t</text>
|
||||
<text x='712' y='52'>s</text>
|
||||
<text x='720' y='52'>c</text>
|
||||
<text x='728' y='52'>r</text>
|
||||
<text x='736' y='52'>i</text>
|
||||
<text x='744' y='52'>p</text>
|
||||
<text x='752' y='52'>t</text>
|
||||
<text x='32' y='68'>P</text>
|
||||
<text x='40' y='68'>l</text>
|
||||
<text x='48' y='68'>a</text>
|
||||
|
@ -165,125 +176,113 @@ svg {
|
|||
<text x='272' y='68'>e</text>
|
||||
<text x='280' y='68'>n</text>
|
||||
<text x='288' y='68'>t</text>
|
||||
<text x='504' y='68'>p</text>
|
||||
<text x='512' y='68'>d</text>
|
||||
<text x='520' y='68'>f</text>
|
||||
<text x='528' y='68'>2</text>
|
||||
<text x='536' y='68'>p</text>
|
||||
<text x='544' y='68'>r</text>
|
||||
<text x='552' y='68'>i</text>
|
||||
<text x='560' y='68'>n</text>
|
||||
<text x='568' y='68'>t</text>
|
||||
<text x='576' y='68'>a</text>
|
||||
<text x='584' y='68'>b</text>
|
||||
<text x='592' y='68'>l</text>
|
||||
<text x='600' y='68'>e</text>
|
||||
<text x='824' y='68'>P</text>
|
||||
<text x='832' y='68'>o</text>
|
||||
<text x='840' y='68'>s</text>
|
||||
<text x='848' y='68'>t</text>
|
||||
<text x='856' y='68'>s</text>
|
||||
<text x='864' y='68'>c</text>
|
||||
<text x='872' y='68'>r</text>
|
||||
<text x='880' y='68'>i</text>
|
||||
<text x='888' y='68'>p</text>
|
||||
<text x='896' y='68'>t</text>
|
||||
<text x='912' y='68'>2</text>
|
||||
<text x='32' y='100'>D</text>
|
||||
<text x='40' y='100'>O</text>
|
||||
<text x='48' y='100'>C</text>
|
||||
<text x='56' y='100'>/</text>
|
||||
<text x='64' y='100'>P</text>
|
||||
<text x='72' y='100'>P</text>
|
||||
<text x='80' y='100'>T</text>
|
||||
<text x='496' y='100'>(</text>
|
||||
<text x='504' y='100'>P</text>
|
||||
<text x='512' y='100'>o</text>
|
||||
<text x='520' y='100'>p</text>
|
||||
<text x='528' y='100'>p</text>
|
||||
<text x='536' y='100'>l</text>
|
||||
<text x='544' y='100'>e</text>
|
||||
<text x='552' y='100'>r</text>
|
||||
<text x='560' y='100'>+</text>
|
||||
<text x='568' y='100'>C</text>
|
||||
<text x='576' y='100'>a</text>
|
||||
<text x='584' y='100'>i</text>
|
||||
<text x='592' y='100'>r</text>
|
||||
<text x='600' y='100'>o</text>
|
||||
<text x='608' y='100'>)</text>
|
||||
<text x='32' y='116'>O</text>
|
||||
<text x='40' y='116'>D</text>
|
||||
<text x='48' y='116'>T</text>
|
||||
<text x='408' y='68'>p</text>
|
||||
<text x='416' y='68'>d</text>
|
||||
<text x='424' y='68'>f</text>
|
||||
<text x='432' y='68'>2</text>
|
||||
<text x='440' y='68'>p</text>
|
||||
<text x='448' y='68'>r</text>
|
||||
<text x='456' y='68'>i</text>
|
||||
<text x='464' y='68'>n</text>
|
||||
<text x='472' y='68'>t</text>
|
||||
<text x='480' y='68'>a</text>
|
||||
<text x='488' y='68'>b</text>
|
||||
<text x='496' y='68'>l</text>
|
||||
<text x='504' y='68'>e</text>
|
||||
<text x='192' y='84'>+</text>
|
||||
<text x='208' y='84'>Q</text>
|
||||
<text x='216' y='84'>P</text>
|
||||
<text x='224' y='84'>d</text>
|
||||
<text x='232' y='84'>f</text>
|
||||
<text x='240' y='84'>W</text>
|
||||
<text x='248' y='84'>r</text>
|
||||
<text x='256' y='84'>i</text>
|
||||
<text x='264' y='84'>t</text>
|
||||
<text x='272' y='84'>e</text>
|
||||
<text x='280' y='84'>r</text>
|
||||
<text x='680' y='84'>P</text>
|
||||
<text x='688' y='84'>D</text>
|
||||
<text x='696' y='84'>F</text>
|
||||
<text x='32' y='116'>D</text>
|
||||
<text x='40' y='116'>O</text>
|
||||
<text x='48' y='116'>C</text>
|
||||
<text x='56' y='116'>/</text>
|
||||
<text x='64' y='116'>O</text>
|
||||
<text x='72' y='116'>D</text>
|
||||
<text x='80' y='116'>P</text>
|
||||
<text x='184' y='116'>C</text>
|
||||
<text x='192' y='116'>a</text>
|
||||
<text x='200' y='116'>l</text>
|
||||
<text x='208' y='116'>l</text>
|
||||
<text x='216' y='116'>i</text>
|
||||
<text x='224' y='116'>g</text>
|
||||
<text x='232' y='116'>r</text>
|
||||
<text x='240' y='116'>a</text>
|
||||
<text x='248' y='116'>c</text>
|
||||
<text x='256' y='116'>o</text>
|
||||
<text x='264' y='116'>n</text>
|
||||
<text x='272' y='116'>v</text>
|
||||
<text x='280' y='116'>e</text>
|
||||
<text x='288' y='116'>r</text>
|
||||
<text x='296' y='116'>t</text>
|
||||
<text x='304' y='116'>e</text>
|
||||
<text x='312' y='116'>r</text>
|
||||
<text x='208' y='132'>(</text>
|
||||
<text x='216' y='132'>o</text>
|
||||
<text x='224' y='132'>p</text>
|
||||
<text x='232' y='132'>t</text>
|
||||
<text x='240' y='132'>i</text>
|
||||
<text x='248' y='132'>o</text>
|
||||
<text x='256' y='132'>n</text>
|
||||
<text x='264' y='132'>a</text>
|
||||
<text x='272' y='132'>l</text>
|
||||
<text x='280' y='132'>)</text>
|
||||
<text x='824' y='132'>P</text>
|
||||
<text x='832' y='132'>W</text>
|
||||
<text x='840' y='132'>G</text>
|
||||
<text x='848' y='132'>-</text>
|
||||
<text x='856' y='132'>R</text>
|
||||
<text x='864' y='132'>a</text>
|
||||
<text x='872' y='132'>s</text>
|
||||
<text x='880' y='132'>t</text>
|
||||
<text x='888' y='132'>e</text>
|
||||
<text x='896' y='132'>r</text>
|
||||
<text x='696' y='148'>p</text>
|
||||
<text x='704' y='148'>p</text>
|
||||
<text x='712' y='148'>m</text>
|
||||
<text x='720' y='148'>2</text>
|
||||
<text x='728' y='148'>p</text>
|
||||
<text x='736' y='148'>w</text>
|
||||
<text x='744' y='148'>g</text>
|
||||
<text x='32' y='164'>I</text>
|
||||
<text x='40' y='164'>m</text>
|
||||
<text x='48' y='164'>a</text>
|
||||
<text x='56' y='164'>g</text>
|
||||
<text x='64' y='164'>e</text>
|
||||
<text x='72' y='164'>s</text>
|
||||
<text x='824' y='164'>U</text>
|
||||
<text x='832' y='164'>R</text>
|
||||
<text x='840' y='164'>F</text>
|
||||
<text x='848' y='164'>-</text>
|
||||
<text x='856' y='164'>R</text>
|
||||
<text x='864' y='164'>a</text>
|
||||
<text x='872' y='164'>s</text>
|
||||
<text x='880' y='164'>t</text>
|
||||
<text x='888' y='164'>e</text>
|
||||
<text x='896' y='164'>r</text>
|
||||
<text x='368' y='196'>Q</text>
|
||||
<text x='376' y='196'>I</text>
|
||||
<text x='384' y='196'>m</text>
|
||||
<text x='392' y='196'>a</text>
|
||||
<text x='400' y='196'>g</text>
|
||||
<text x='408' y='196'>e</text>
|
||||
<text x='64' y='116'>P</text>
|
||||
<text x='72' y='116'>P</text>
|
||||
<text x='80' y='116'>T</text>
|
||||
<text x='32' y='132'>O</text>
|
||||
<text x='40' y='132'>D</text>
|
||||
<text x='48' y='132'>T</text>
|
||||
<text x='56' y='132'>/</text>
|
||||
<text x='64' y='132'>O</text>
|
||||
<text x='72' y='132'>D</text>
|
||||
<text x='80' y='132'>P</text>
|
||||
<text x='184' y='132'>C</text>
|
||||
<text x='192' y='132'>a</text>
|
||||
<text x='200' y='132'>l</text>
|
||||
<text x='208' y='132'>l</text>
|
||||
<text x='216' y='132'>i</text>
|
||||
<text x='224' y='132'>g</text>
|
||||
<text x='232' y='132'>r</text>
|
||||
<text x='240' y='132'>a</text>
|
||||
<text x='248' y='132'>c</text>
|
||||
<text x='256' y='132'>o</text>
|
||||
<text x='264' y='132'>n</text>
|
||||
<text x='272' y='132'>v</text>
|
||||
<text x='280' y='132'>e</text>
|
||||
<text x='288' y='132'>r</text>
|
||||
<text x='296' y='132'>t</text>
|
||||
<text x='304' y='132'>e</text>
|
||||
<text x='312' y='132'>r</text>
|
||||
<text x='208' y='148'>(</text>
|
||||
<text x='216' y='148'>o</text>
|
||||
<text x='224' y='148'>p</text>
|
||||
<text x='232' y='148'>t</text>
|
||||
<text x='240' y='148'>i</text>
|
||||
<text x='248' y='148'>o</text>
|
||||
<text x='256' y='148'>n</text>
|
||||
<text x='264' y='148'>a</text>
|
||||
<text x='272' y='148'>l</text>
|
||||
<text x='280' y='148'>)</text>
|
||||
<text x='680' y='148'>P</text>
|
||||
<text x='688' y='148'>W</text>
|
||||
<text x='696' y='148'>G</text>
|
||||
<text x='704' y='148'>-</text>
|
||||
<text x='712' y='148'>R</text>
|
||||
<text x='720' y='148'>a</text>
|
||||
<text x='728' y='148'>s</text>
|
||||
<text x='736' y='148'>t</text>
|
||||
<text x='744' y='148'>e</text>
|
||||
<text x='752' y='148'>r</text>
|
||||
<text x='552' y='164'>p</text>
|
||||
<text x='560' y='164'>p</text>
|
||||
<text x='568' y='164'>m</text>
|
||||
<text x='576' y='164'>2</text>
|
||||
<text x='584' y='164'>p</text>
|
||||
<text x='592' y='164'>w</text>
|
||||
<text x='600' y='164'>g</text>
|
||||
<text x='32' y='180'>I</text>
|
||||
<text x='40' y='180'>m</text>
|
||||
<text x='48' y='180'>a</text>
|
||||
<text x='56' y='180'>g</text>
|
||||
<text x='64' y='180'>e</text>
|
||||
<text x='72' y='180'>s</text>
|
||||
<text x='680' y='180'>U</text>
|
||||
<text x='688' y='180'>R</text>
|
||||
<text x='696' y='180'>F</text>
|
||||
<text x='704' y='180'>-</text>
|
||||
<text x='712' y='180'>R</text>
|
||||
<text x='720' y='180'>a</text>
|
||||
<text x='728' y='180'>s</text>
|
||||
<text x='736' y='180'>t</text>
|
||||
<text x='744' y='180'>e</text>
|
||||
<text x='752' y='180'>r</text>
|
||||
<text x='408' y='196'>Q</text>
|
||||
<text x='416' y='196'>I</text>
|
||||
<text x='424' y='196'>m</text>
|
||||
<text x='432' y='196'>a</text>
|
||||
<text x='440' y='196'>g</text>
|
||||
<text x='448' y='196'>e</text>
|
||||
<text x='32' y='228'>S</text>
|
||||
<text x='40' y='228'>V</text>
|
||||
<text x='48' y='228'>G</text>
|
||||
|
@ -299,25 +298,25 @@ svg {
|
|||
<text x='256' y='228'>r</text>
|
||||
<text x='264' y='228'>e</text>
|
||||
<text x='272' y='228'>r</text>
|
||||
<text x='824' y='228'>P</text>
|
||||
<text x='832' y='228'>N</text>
|
||||
<text x='840' y='228'>G</text>
|
||||
<text x='848' y='228'>,</text>
|
||||
<text x='864' y='228'>J</text>
|
||||
<text x='872' y='228'>P</text>
|
||||
<text x='880' y='228'>E</text>
|
||||
<text x='888' y='228'>G</text>
|
||||
<text x='896' y='228'>,</text>
|
||||
<text x='824' y='244'>R</text>
|
||||
<text x='832' y='244'>e</text>
|
||||
<text x='840' y='244'>v</text>
|
||||
<text x='848' y='244'>e</text>
|
||||
<text x='856' y='244'>r</text>
|
||||
<text x='864' y='244'>s</text>
|
||||
<text x='872' y='244'>e</text>
|
||||
<text x='888' y='244'>B</text>
|
||||
<text x='896' y='244'>M</text>
|
||||
<text x='904' y='244'>P</text>
|
||||
<text x='680' y='228'>P</text>
|
||||
<text x='688' y='228'>N</text>
|
||||
<text x='696' y='228'>G</text>
|
||||
<text x='704' y='228'>,</text>
|
||||
<text x='720' y='228'>J</text>
|
||||
<text x='728' y='228'>P</text>
|
||||
<text x='736' y='228'>E</text>
|
||||
<text x='744' y='228'>G</text>
|
||||
<text x='752' y='228'>,</text>
|
||||
<text x='680' y='244'>R</text>
|
||||
<text x='688' y='244'>e</text>
|
||||
<text x='696' y='244'>v</text>
|
||||
<text x='704' y='244'>e</text>
|
||||
<text x='712' y='244'>r</text>
|
||||
<text x='720' y='244'>s</text>
|
||||
<text x='728' y='244'>e</text>
|
||||
<text x='744' y='244'>B</text>
|
||||
<text x='752' y='244'>M</text>
|
||||
<text x='760' y='244'>P</text>
|
||||
<text x='16' y='276'>I</text>
|
||||
<text x='24' y='276'>f</text>
|
||||
<text x='40' y='276'>t</text>
|
||||
|
@ -352,16 +351,16 @@ svg {
|
|||
<text x='88' y='308'>i</text>
|
||||
<text x='96' y='308'>p</text>
|
||||
<text x='104' y='308'>t</text>
|
||||
<text x='824' y='308'>P</text>
|
||||
<text x='832' y='308'>o</text>
|
||||
<text x='840' y='308'>s</text>
|
||||
<text x='848' y='308'>t</text>
|
||||
<text x='856' y='308'>s</text>
|
||||
<text x='864' y='308'>c</text>
|
||||
<text x='872' y='308'>r</text>
|
||||
<text x='880' y='308'>i</text>
|
||||
<text x='888' y='308'>p</text>
|
||||
<text x='896' y='308'>t</text>
|
||||
<text x='680' y='308'>P</text>
|
||||
<text x='688' y='308'>o</text>
|
||||
<text x='696' y='308'>s</text>
|
||||
<text x='704' y='308'>t</text>
|
||||
<text x='712' y='308'>s</text>
|
||||
<text x='720' y='308'>c</text>
|
||||
<text x='728' y='308'>r</text>
|
||||
<text x='736' y='308'>i</text>
|
||||
<text x='744' y='308'>p</text>
|
||||
<text x='752' y='308'>t</text>
|
||||
<text x='32' y='340'>P</text>
|
||||
<text x='40' y='340'>l</text>
|
||||
<text x='48' y='340'>a</text>
|
||||
|
@ -390,21 +389,21 @@ svg {
|
|||
<text x='328' y='340'>n</text>
|
||||
<text x='336' y='340'>e</text>
|
||||
<text x='344' y='340'>s</text>
|
||||
<text x='824' y='340'>P</text>
|
||||
<text x='832' y='340'>l</text>
|
||||
<text x='840' y='340'>a</text>
|
||||
<text x='848' y='340'>i</text>
|
||||
<text x='856' y='340'>n</text>
|
||||
<text x='864' y='340'>t</text>
|
||||
<text x='872' y='340'>e</text>
|
||||
<text x='880' y='340'>x</text>
|
||||
<text x='888' y='340'>t</text>
|
||||
<text x='680' y='340'>P</text>
|
||||
<text x='688' y='340'>l</text>
|
||||
<text x='696' y='340'>a</text>
|
||||
<text x='704' y='340'>i</text>
|
||||
<text x='712' y='340'>n</text>
|
||||
<text x='720' y='340'>t</text>
|
||||
<text x='728' y='340'>e</text>
|
||||
<text x='736' y='340'>x</text>
|
||||
<text x='744' y='340'>t</text>
|
||||
<text x='32' y='372'>P</text>
|
||||
<text x='40' y='372'>N</text>
|
||||
<text x='48' y='372'>G</text>
|
||||
<text x='824' y='372'>P</text>
|
||||
<text x='832' y='372'>N</text>
|
||||
<text x='840' y='372'>G</text>
|
||||
<text x='680' y='372'>P</text>
|
||||
<text x='688' y='372'>N</text>
|
||||
<text x='696' y='372'>G</text>
|
||||
<text x='32' y='404'>J</text>
|
||||
<text x='40' y='404'>P</text>
|
||||
<text x='48' y='404'>E</text>
|
||||
|
@ -419,26 +418,26 @@ svg {
|
|||
<text x='240' y='404'>i</text>
|
||||
<text x='248' y='404'>f</text>
|
||||
<text x='256' y='404'>y</text>
|
||||
<text x='824' y='404'>J</text>
|
||||
<text x='832' y='404'>P</text>
|
||||
<text x='840' y='404'>E</text>
|
||||
<text x='848' y='404'>G</text>
|
||||
<text x='824' y='420'>(</text>
|
||||
<text x='832' y='420'>B</text>
|
||||
<text x='840' y='420'>a</text>
|
||||
<text x='848' y='420'>s</text>
|
||||
<text x='856' y='420'>e</text>
|
||||
<text x='864' y='420'>l</text>
|
||||
<text x='872' y='420'>i</text>
|
||||
<text x='880' y='420'>n</text>
|
||||
<text x='888' y='420'>e</text>
|
||||
<text x='904' y='420'>p</text>
|
||||
<text x='912' y='420'>r</text>
|
||||
<text x='920' y='420'>o</text>
|
||||
<text x='928' y='420'>f</text>
|
||||
<text x='936' y='420'>i</text>
|
||||
<text x='944' y='420'>l</text>
|
||||
<text x='952' y='420'>e</text>
|
||||
<text x='960' y='420'>)</text>
|
||||
<text x='680' y='404'>J</text>
|
||||
<text x='688' y='404'>P</text>
|
||||
<text x='696' y='404'>E</text>
|
||||
<text x='704' y='404'>G</text>
|
||||
<text x='680' y='420'>(</text>
|
||||
<text x='688' y='420'>B</text>
|
||||
<text x='696' y='420'>a</text>
|
||||
<text x='704' y='420'>s</text>
|
||||
<text x='712' y='420'>e</text>
|
||||
<text x='720' y='420'>l</text>
|
||||
<text x='728' y='420'>i</text>
|
||||
<text x='736' y='420'>n</text>
|
||||
<text x='744' y='420'>e</text>
|
||||
<text x='760' y='420'>p</text>
|
||||
<text x='768' y='420'>r</text>
|
||||
<text x='776' y='420'>o</text>
|
||||
<text x='784' y='420'>f</text>
|
||||
<text x='792' y='420'>i</text>
|
||||
<text x='800' y='420'>l</text>
|
||||
<text x='808' y='420'>e</text>
|
||||
<text x='816' y='420'>)</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 19 KiB |
|
@ -3,10 +3,9 @@ Type=Application
|
|||
Icon=harbour-seaprint
|
||||
X-Nemo-Application-Type=silica-qt5
|
||||
Exec=harbour-seaprint
|
||||
X-DBusActivatable=true
|
||||
Name=SeaPrint
|
||||
[X-Sailjail]
|
||||
Permissions=Internet;Pictures;Documents;Downloads;RemovableMedia;MediaIndexing;Compatibility
|
||||
OrganizationName=net.attah
|
||||
ApplicationName=seaprint
|
||||
ExecDBus=harbour-seaprint --prestart
|
||||
|
||||
|
|
|
@ -26,17 +26,14 @@ INSTALLS += i18n
|
|||
system(lrelease $$PWD/translations/*.ts)
|
||||
|
||||
CONFIG += sailfishapp
|
||||
QT += svg dbus
|
||||
PKGCONFIG += mlite5 libcurl glib-2.0
|
||||
INCLUDEPATH += $$system(pkg-config --cflags-only-I poppler-glib | sed 's/-I//g')
|
||||
QT += svg
|
||||
PKGCONFIG += mlite5 libcurl poppler-glib glib-2.0 cairo libjpeg
|
||||
LIBS += -lcurl -lglib-2.0 -lgobject-2.0 -ldl
|
||||
DEFINES += MADNESS=1
|
||||
DEFINES += PDF_CREATOR='\\"SeaPrint\ $$VERSION\\"'
|
||||
DEFINES += SEAPRINT_VERSION='\\"$$VERSION\\"'
|
||||
|
||||
SOURCES += src/harbour-seaprint.cpp \
|
||||
src/dbusadaptorbase.cpp \
|
||||
src/freedesktopdbusadaptor.cpp \
|
||||
src/rangelistchecker.cpp \
|
||||
src/convertchecker.cpp \
|
||||
src/curlrequester.cpp \
|
||||
|
@ -45,19 +42,17 @@ SOURCES += src/harbour-seaprint.cpp \
|
|||
src/ippmsg.cpp \
|
||||
src/ippprinter.cpp \
|
||||
src/mimer.cpp \
|
||||
ppm2pwg/printparameters.cpp \
|
||||
ppm2pwg/ppm2pwg.cpp \
|
||||
ppm2pwg/pdf2printable.cpp \
|
||||
ppm2pwg/baselinify.cpp \
|
||||
ppm2pwg/bytestream/bytestream.cpp \
|
||||
src/overrider.cpp \
|
||||
src/printerworker.cpp \
|
||||
src/seaprintdbusadaptor.cpp \
|
||||
src/settings.cpp
|
||||
|
||||
DISTFILES += qml/harbour-seaprint.qml \
|
||||
qml/cover/CoverPage.qml \
|
||||
qml/components/*qml \
|
||||
qml/components/*.qml \
|
||||
qml/pages/*.qml \
|
||||
qml/pages/*.js \
|
||||
qml/pages/*svg \
|
||||
|
@ -86,8 +81,6 @@ TRANSLATIONS += translations/harbour-seaprint-de.ts \
|
|||
translations/harbour-seaprint-pl.ts
|
||||
|
||||
HEADERS += \
|
||||
src/dbusadaptorbase.h \
|
||||
src/freedesktopdbusadaptor.h \
|
||||
src/rangelistchecker.h \
|
||||
src/convertchecker.h \
|
||||
src/curlrequester.h \
|
||||
|
@ -107,11 +100,9 @@ HEADERS += \
|
|||
ppm2pwg/UrfPgHdr.codable \
|
||||
ppm2pwg/bytestream/bytestream.h \
|
||||
ppm2pwg/bytestream/codable.h \
|
||||
ppm2pwg/argget.h \
|
||||
src/overrider.h \
|
||||
src/papersizes.h \
|
||||
src/printerworker.h \
|
||||
src/seaprintdbusadaptor.h \
|
||||
src/settings.h
|
||||
|
||||
INCLUDEPATH += ppm2pwg \
|
||||
|
|
2
ppm2pwg
2
ppm2pwg
|
@ -1 +1 @@
|
|||
Subproject commit acc32f3769c3b18bd6b94c55b882c7b7b778854c
|
||||
Subproject commit 927ef3e4b876f18f2881bf624474056608781fce
|
|
@ -7,7 +7,7 @@ Setting {
|
|||
property var preferred_choices: []
|
||||
property string preferred_choice_suffix: ""
|
||||
|
||||
property var actual_choices: Utils.fixupChoices(name, choices, parent.selectedFileType, parent.printer)
|
||||
property var actual_choices: Utils.fixupChoices(name, choices, parent.selectedFileType)
|
||||
|
||||
property int num_large_choices: 8
|
||||
|
||||
|
|
|
@ -20,9 +20,10 @@ Dialog {
|
|||
id: valueField
|
||||
validator: IntValidator{bottom: min; top: max;}
|
||||
width: parent.width
|
||||
placeholderText: ""+min+"-"+(max == 65535 ? "..." : max)
|
||||
placeholderText: ""+min+"-"+max
|
||||
label: title
|
||||
focus: true
|
||||
labelVisible: true
|
||||
inputMethodHints: Qt.ImhDigitsOnly
|
||||
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ Setting {
|
|||
anchors.right: parent.right
|
||||
icon.source: "image://theme/icon-s-edit"
|
||||
onClicked: {var dialog = pageStack.push(Qt.resolvedUrl("IntegerInputDialog.qml"),
|
||||
{title: prettyName,
|
||||
{value: choice, title: prettyName,
|
||||
min: low, max: high});
|
||||
dialog.accepted.connect(function() {
|
||||
choice = dialog.value;
|
||||
|
|
|
@ -104,7 +104,7 @@ Setting {
|
|||
anchors.right: parent.right
|
||||
icon.source: "image://theme/icon-s-edit"
|
||||
onClicked: {var dialog = pageStack.push(Qt.resolvedUrl("IntegerInputDialog.qml"),
|
||||
{title: prettyName + " (" + qsTr("Low") + ")",
|
||||
{value: choice, title: prettyName,
|
||||
min: 1, max: high});
|
||||
dialog.accepted.connect(function() {
|
||||
choice_low = dialog.value;
|
||||
|
@ -132,7 +132,7 @@ Setting {
|
|||
anchors.right: parent.right
|
||||
icon.source: "image://theme/icon-s-edit"
|
||||
onClicked: {var dialog = pageStack.push(Qt.resolvedUrl("IntegerInputDialog.qml"),
|
||||
{title: prettyName + " (" + qsTr("High") + ")",
|
||||
{value: choice, title: prettyName,
|
||||
min: 1, max: high});
|
||||
dialog.accepted.connect(function() {
|
||||
choice_high = dialog.value;
|
||||
|
|
|
@ -13,37 +13,9 @@ ApplicationWindow
|
|||
{
|
||||
id: appWin
|
||||
|
||||
property Page _mainPage
|
||||
|
||||
property bool expectCalligra: true
|
||||
|
||||
|
||||
function openFile(file) {
|
||||
selectedFile = file
|
||||
selectedFileType = Mimer.get_type(selectedFile);
|
||||
if(selectedFileType == "")
|
||||
{
|
||||
selectedFile = ""
|
||||
notifier.notify(qsTr("Unsupported document format"))
|
||||
}
|
||||
if(pageStack.currentPage.busyPage)
|
||||
{
|
||||
notifier.notify(qsTr("New file selected"))
|
||||
}
|
||||
else
|
||||
{
|
||||
pageStack.pop(appWin._mainPage, PageStackAction.Immediate)
|
||||
}
|
||||
}
|
||||
|
||||
property string selectedFile: ""
|
||||
property string selectedFileType
|
||||
|
||||
initialPage: Component {
|
||||
FirstPage {
|
||||
Component.onCompleted: appWin._mainPage = this
|
||||
}
|
||||
}
|
||||
initialPage: Component { FirstPage { selectedFile: Qt.application.arguments[1] ? Qt.application.arguments[1] : "" } }
|
||||
cover: Qt.resolvedUrl("cover/CoverPage.qml")
|
||||
allowedOrientations: Orientation.All
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ Page {
|
|||
AboutLabel {
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.primaryColor
|
||||
text: "© 2019-2023 Anton Thomasson et al."
|
||||
text: "© 2019-2022 Anton Thomasson et al."
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@ import Sailfish.Silica 1.0
|
|||
import "utils.js" as Utils
|
||||
|
||||
Page {
|
||||
property bool busyPage: true
|
||||
|
||||
allowedOrientations: Orientation.All
|
||||
|
||||
Component.onCompleted: {
|
||||
|
|
|
@ -12,6 +12,9 @@ Page {
|
|||
id: page
|
||||
allowedOrientations: Orientation.All
|
||||
|
||||
property string selectedFile: ""
|
||||
property string selectedFileType
|
||||
|
||||
Connections {
|
||||
target: wifi
|
||||
onConnectedChanged: {
|
||||
|
@ -57,6 +60,11 @@ Page {
|
|||
|
||||
Component.onCompleted: {
|
||||
IppDiscovery.discover();
|
||||
if(selectedFile != "")
|
||||
{
|
||||
var type = Mimer.get_type(selectedFile);
|
||||
selectedFileType = type;
|
||||
}
|
||||
}
|
||||
|
||||
property bool nagged: false
|
||||
|
@ -135,7 +143,7 @@ Page {
|
|||
|
||||
property string name: Utils.unknownForEmptyString(printer.attrs["printer-name"].value)
|
||||
property var supported_formats: Utils.supported_formats(printer, considerAdditionalFormatsSetting.value)
|
||||
property bool canPrint: supported_formats.mimetypes.indexOf(appWin.selectedFileType) != -1
|
||||
property bool canPrint: supported_formats.mimetypes.indexOf(selectedFileType) != -1
|
||||
|
||||
Connections {
|
||||
target: printer
|
||||
|
@ -174,7 +182,7 @@ Page {
|
|||
{
|
||||
if(printer.attrs.hasOwnProperty("printer-uuid"))
|
||||
{
|
||||
return JSON.parse(db.getJobSettings(printer.attrs["printer-uuid"].value, appWin.selectedFileType));
|
||||
return JSON.parse(db.getJobSettings(printer.attrs["printer-uuid"].value, selectedFileType));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -191,7 +199,7 @@ Page {
|
|||
return;
|
||||
}
|
||||
debugCountReset.restart();
|
||||
if(appWin.selectedFile == "")
|
||||
if(selectedFile == "")
|
||||
{
|
||||
noFileSelected();
|
||||
}
|
||||
|
@ -201,7 +209,7 @@ Page {
|
|||
}
|
||||
else
|
||||
{
|
||||
pageStack.push(Qt.resolvedUrl("PrinterPage.qml"), {printer: printer, selectedFile: appWin.selectedFile, jobParams: maybeGetParams()})
|
||||
pageStack.push(Qt.resolvedUrl("PrinterPage.qml"), {printer: printer, selectedFile: selectedFile, jobParams: maybeGetParams()})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -242,13 +250,13 @@ Page {
|
|||
|
||||
Label {
|
||||
id: name_label
|
||||
color: canPrint || appWin.selectedFile == "" ? Theme.primaryColor : Theme.secondaryColor
|
||||
color: canPrint || selectedFile == "" ? Theme.primaryColor : Theme.secondaryColor
|
||||
text: name
|
||||
}
|
||||
|
||||
Label {
|
||||
id: mm_label
|
||||
color: canPrint || appWin.selectedFile == "" ? Theme.primaryColor : Theme.secondaryColor
|
||||
color: canPrint || selectedFile == "" ? Theme.primaryColor : Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
text: Utils.unknownForEmptyString(printer.attrs["printer-make-and-model"].value)
|
||||
+ (Utils.existsAndNotEmpty("printer-location", printer) ? " • "+printer.attrs["printer-location"].value : "")
|
||||
|
@ -256,7 +264,7 @@ Page {
|
|||
|
||||
Label {
|
||||
id: uri_label
|
||||
color: canPrint || appWin.selectedFile == "" ? Theme.highlightColor : Theme.secondaryColor
|
||||
color: canPrint || selectedFile == "" ? Theme.highlightColor : Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeTiny
|
||||
text: printer.url
|
||||
}
|
||||
|
@ -277,7 +285,7 @@ Page {
|
|||
width: Theme.itemSizeExtraSmall/2
|
||||
visible: supported_formats.pdf
|
||||
highlightColor: "red"
|
||||
highlighted: !(appWin.selectedFile == "" || canPrint)
|
||||
highlighted: !(selectedFile == "" || canPrint)
|
||||
source: "image://theme/icon-m-file-pdf"
|
||||
}
|
||||
HighlightImage {
|
||||
|
@ -285,7 +293,7 @@ Page {
|
|||
width: Theme.itemSizeExtraSmall/2
|
||||
visible: supported_formats.postscript
|
||||
highlightColor: "red"
|
||||
highlighted: !(appWin.selectedFile == "" || canPrint)
|
||||
highlighted: !(selectedFile == "" || canPrint)
|
||||
source: "image://theme/icon-m-file-other"
|
||||
|
||||
}
|
||||
|
@ -294,7 +302,7 @@ Page {
|
|||
width: Theme.itemSizeExtraSmall/2
|
||||
visible: supported_formats.plaintext
|
||||
highlightColor: "red"
|
||||
highlighted: !(appWin.selectedFile == "" || canPrint)
|
||||
highlighted: !(selectedFile == "" || canPrint)
|
||||
source: "image://theme/icon-m-file-document"
|
||||
}
|
||||
HighlightImage {
|
||||
|
@ -302,7 +310,7 @@ Page {
|
|||
width: Theme.itemSizeExtraSmall/2
|
||||
visible: supported_formats.office
|
||||
highlightColor: "red"
|
||||
highlighted: !(appWin.selectedFile == "" || canPrint)
|
||||
highlighted: !(selectedFile == "" || canPrint)
|
||||
source: "image://theme/icon-m-file-formatted"
|
||||
}
|
||||
HighlightImage {
|
||||
|
@ -310,7 +318,7 @@ Page {
|
|||
width: Theme.itemSizeExtraSmall/2
|
||||
visible: supported_formats.office
|
||||
highlightColor: "red"
|
||||
highlighted: !(appWin.selectedFile == "" || canPrint)
|
||||
highlighted: !(selectedFile == "" || canPrint)
|
||||
source: "image://theme/icon-m-file-presentation"
|
||||
}
|
||||
HighlightImage {
|
||||
|
@ -318,7 +326,7 @@ Page {
|
|||
width: Theme.itemSizeExtraSmall/2
|
||||
visible: supported_formats.images
|
||||
highlightColor: "red"
|
||||
highlighted: !(appWin.selectedFile == "" || canPrint)
|
||||
highlighted: !(selectedFile == "" || canPrint)
|
||||
source: "image://theme/icon-m-file-image"
|
||||
}
|
||||
}
|
||||
|
@ -373,7 +381,7 @@ Page {
|
|||
Row {
|
||||
id: warningRow
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: Mimer.isOffice(appWin.selectedFileType)
|
||||
visible: Mimer.isOffice(page.selectedFileType)
|
||||
|
||||
HighlightImage {
|
||||
source: "image://theme/icon-s-warning"
|
||||
|
@ -396,7 +404,7 @@ Page {
|
|||
|
||||
horizontalAlignment: contentWidth > width ? Text.AlignRight : Text.AlignHCenter
|
||||
truncationMode: TruncationMode.Fade
|
||||
text: appWin.selectedFile != "" ? appWin.selectedFile : qsTr("No file selected")
|
||||
text: selectedFile != "" ? selectedFile : qsTr("No file selected")
|
||||
|
||||
SequentialAnimation {
|
||||
id: noFileSelectedAnimation
|
||||
|
@ -449,7 +457,18 @@ Page {
|
|||
title: qsTr("Choose file")
|
||||
|
||||
onSelectedContentPropertiesChanged: {
|
||||
appWin.openFile(selectedContentProperties.filePath);
|
||||
var mimeType = Mimer.get_type(selectedContentProperties.filePath)
|
||||
if(mimeType == Mimer.PDF || mimeType == Mimer.Postscript || mimeType == Mimer.Plaintext || Mimer.isOffice(mimeType))
|
||||
{
|
||||
page.selectedFile = selectedContentProperties.filePath
|
||||
page.selectedFileType = mimeType
|
||||
}
|
||||
else
|
||||
{
|
||||
notifier.notify(qsTr("Unsupported document format"))
|
||||
page.selectedFile = ""
|
||||
page.selectedFileType = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -459,7 +478,8 @@ Page {
|
|||
allowedOrientations: Orientation.All
|
||||
|
||||
onSelectedContentPropertiesChanged: {
|
||||
appWin.openFile(selectedContentProperties.filePath);
|
||||
page.selectedFile = selectedContentProperties.filePath
|
||||
page.selectedFileType = Mimer.get_type(selectedContentProperties.filePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -445,7 +445,7 @@ function knownPaperSize(mediaName)
|
|||
}
|
||||
|
||||
|
||||
function fixupChoices(name, choices, mimeType, printer)
|
||||
function fixupChoices(name, choices, mimeType)
|
||||
{
|
||||
switch(name) {
|
||||
case "document-format":
|
||||
|
@ -497,18 +497,7 @@ function fixupChoices(name, choices, mimeType, printer)
|
|||
return choices;
|
||||
}
|
||||
case "media":
|
||||
if(printer.attrs.hasOwnProperty("media-ready"))
|
||||
{
|
||||
for(var m in printer.attrs["media-ready"].value)
|
||||
{
|
||||
var value = printer.attrs["media-ready"].value[m];
|
||||
if(!has(choices, value))
|
||||
{
|
||||
choices.push(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return choices;
|
||||
return choices.filter(knownPaperSize);
|
||||
default:
|
||||
return choices;
|
||||
}
|
||||
|
|
|
@ -21,9 +21,6 @@ BuildRequires: pkgconfig(glib-2.0)
|
|||
BuildRequires: pkgconfig(cairo)
|
||||
BuildRequires: pkgconfig(libjpeg)
|
||||
|
||||
%define _source_payload w6T.xzdio
|
||||
%define _binary_payload w6T.xzdio
|
||||
|
||||
%description
|
||||
Network printing for Sailfish OS
|
||||
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
#include "dbusadaptorbase.h"
|
||||
#include <QtQuick>
|
||||
|
||||
void DBusAdaptorBase::doActivate()
|
||||
{
|
||||
QMetaObject::invokeMethod(_view->rootObject(), "activate");
|
||||
}
|
||||
|
||||
void DBusAdaptorBase::doOpen(const QString& fileName)
|
||||
{
|
||||
QMetaObject::invokeMethod(_view->rootObject(), "openFile", Q_ARG(QVariant, fileName));
|
||||
doActivate();
|
||||
}
|
||||
|
||||
void DBusAdaptorBase::doCreateFileAndOpen(const QString& fileContents, const QString& name)
|
||||
{
|
||||
QTemporaryFile tmpfile(QDir::tempPath() + "/" + name);
|
||||
tmpfile.setAutoRemove(false);
|
||||
tmpfile.open();
|
||||
tmpfile.write(fileContents.toUtf8());
|
||||
tmpfile.close();
|
||||
QMetaObject::invokeMethod(_view->rootObject(), "openFile", Q_ARG(QVariant, tmpfile.fileName()));
|
||||
|
||||
doActivate();
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef DBUSADAPTORBASE_H
|
||||
#define DBUSADAPTORBASE_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QtDBus/QDBusAbstractAdaptor>
|
||||
#include <QQuickView>
|
||||
|
||||
class DBusAdaptorBase
|
||||
{
|
||||
public:
|
||||
DBusAdaptorBase(QQuickView* view)
|
||||
: _view(view)
|
||||
{}
|
||||
|
||||
void doActivate();
|
||||
void doOpen(const QString& fileName);
|
||||
void doCreateFileAndOpen(const QString& fileContents, const QString& name);
|
||||
|
||||
protected:
|
||||
QQuickView* _view;
|
||||
|
||||
};
|
||||
|
||||
#endif // DBUSADAPTORBASE_H
|
|
@ -1,31 +0,0 @@
|
|||
#include "freedesktopdbusadaptor.h"
|
||||
|
||||
#include <QtQuick>
|
||||
|
||||
FreedesktopDBusAdaptor::FreedesktopDBusAdaptor(QQuickView *view)
|
||||
: QDBusAbstractAdaptor(view)
|
||||
, DBusAdaptorBase(view)
|
||||
{
|
||||
}
|
||||
|
||||
FreedesktopDBusAdaptor::~FreedesktopDBusAdaptor()
|
||||
{
|
||||
}
|
||||
|
||||
void FreedesktopDBusAdaptor::Open(const QStringList& uris, const QVariantMap& platformData)
|
||||
{
|
||||
qDebug() << platformData;
|
||||
if (!uris.isEmpty() && uris[0] != "") {
|
||||
doOpen(uris.at(0));
|
||||
}
|
||||
else if(platformData.contains("data"))
|
||||
{
|
||||
doCreateFileAndOpen(platformData["data"].toString(),
|
||||
(platformData.contains("name") ? platformData["name"].toString() : "seaprint"));
|
||||
}
|
||||
}
|
||||
|
||||
void FreedesktopDBusAdaptor::Activate(const QVariantMap&)
|
||||
{
|
||||
QMetaObject::invokeMethod(_view->rootObject(), "activate");
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef FREEDESKTOPDBUSADAPTOR_H
|
||||
#define FREEDESKTOPDBUSADAPTOR_H
|
||||
|
||||
#include "dbusadaptorbase.h"
|
||||
|
||||
class FreedesktopDBusAdaptor : public QDBusAbstractAdaptor, public DBusAdaptorBase
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Application")
|
||||
|
||||
public:
|
||||
FreedesktopDBusAdaptor(QQuickView *view);
|
||||
~FreedesktopDBusAdaptor();
|
||||
|
||||
public Q_SLOTS:
|
||||
Q_NOREPLY void Open(const QStringList& uris, const QVariantMap& platformData);
|
||||
Q_NOREPLY void Activate(const QVariantMap& platformData);
|
||||
|
||||
};
|
||||
|
||||
#endif // FREEDESKTOPDBUSADAPTOR_H
|
|
@ -1,6 +1,4 @@
|
|||
#include <QtQuick>
|
||||
#include <QVariant>
|
||||
#include <QDBusConnection>
|
||||
|
||||
#include <sailfishapp.h>
|
||||
#include <src/ippdiscovery.h>
|
||||
|
@ -10,10 +8,6 @@
|
|||
#include <src/convertchecker.h>
|
||||
#include <src/settings.h>
|
||||
#include <src/rangelistchecker.h>
|
||||
#include <src/freedesktopdbusadaptor.h>
|
||||
#include <src/seaprintdbusadaptor.h>
|
||||
#include "argget.h"
|
||||
#include <iostream>
|
||||
|
||||
Q_DECLARE_METATYPE(CURLcode)
|
||||
Q_DECLARE_METATYPE(Bytestream)
|
||||
|
@ -32,17 +26,6 @@ static QObject* singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngi
|
|||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
bool prestart = false;
|
||||
std::string FileName;
|
||||
SwitchArg<bool> pretsartOpt(prestart, {"--prestart"}, "Run prestart");
|
||||
|
||||
PosArg fileArg(FileName, "File to print", true);
|
||||
ArgGet args({&pretsartOpt}, {&fileArg});
|
||||
if(!args.get_args(argc, argv))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
qRegisterMetaType<CURLcode>();
|
||||
qRegisterMetaType<Bytestream>();
|
||||
qRegisterMetaType<PrintParameters>();
|
||||
|
@ -69,26 +52,8 @@ int main(int argc, char *argv[])
|
|||
QQuickView* view = SailfishApp::createView();
|
||||
|
||||
view->engine()->addImportPath(SailfishApp::pathTo("qml/pages").toString());
|
||||
|
||||
view->setSource(SailfishApp::pathToMainQml());
|
||||
|
||||
FreedesktopDBusAdaptor freedesktopDbus(view);
|
||||
SeaPrintDBusAdaptor seaprintDbus(view);
|
||||
|
||||
if (!QDBusConnection::sessionBus().registerObject("/net/attah/seaprint", view))
|
||||
qWarning() << "Could not register /net/attah/seaprint D-Bus object.";
|
||||
|
||||
if (!QDBusConnection::sessionBus().registerService("net.attah.seaprint"))
|
||||
qWarning() << "Could not register net.attah.seaprint D-Bus service.";
|
||||
|
||||
if(!FileName.empty())
|
||||
{
|
||||
qDebug() << "Opening" << FileName.c_str();
|
||||
QVariant fileNameVariant(FileName.c_str());
|
||||
QMetaObject::invokeMethod(view->rootObject(), "openFile", Q_ARG(QVariant, fileNameVariant));
|
||||
}
|
||||
if(!prestart)
|
||||
{
|
||||
view->show();
|
||||
}
|
||||
return app->exec();
|
||||
}
|
||||
|
|
|
@ -288,7 +288,6 @@ QString IppMsg::consume_attribute(QJsonObject& attrs, Bytestream& data)
|
|||
|| name.startsWith("printer-firmware")
|
||||
|| name.endsWith("-supported")
|
||||
|| name == "printer-icons"
|
||||
|| name == "media-ready"
|
||||
|| name.endsWith("-reasons")));
|
||||
|
||||
if(!unnamed.empty() || forceArray)
|
||||
|
|
|
@ -55,12 +55,5 @@ Mimer* Mimer::instance()
|
|||
QString Mimer::get_type(QString filename) {
|
||||
QString type = _db.mimeTypeForFile(filename).name();
|
||||
qDebug() << "MimeType:" << type;
|
||||
if(type == PDF || type == Postscript || type == Plaintext || isImage(type) || isOffice(type))
|
||||
{
|
||||
return type;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -149,16 +149,9 @@ void PrinterWorker::print(QString filename, QString mimeType, QString targetForm
|
|||
convertPdf(filename, contents, Params);
|
||||
}
|
||||
else if(mimeType == Mimer::Plaintext)
|
||||
{
|
||||
if(Params.paperSizeH == 0 && Params.getPaperSizeWInMillimeters() < 26)
|
||||
{
|
||||
convertPlaintextLabel(filename, contents, Params);
|
||||
}
|
||||
else
|
||||
{
|
||||
convertPlaintext(filename, contents, Params);
|
||||
}
|
||||
}
|
||||
else if(Mimer::isImage(mimeType))
|
||||
{
|
||||
convertImage(filename, contents, Params, margins);
|
||||
|
@ -656,6 +649,7 @@ void PrinterWorker::convertPlaintext(QString filename, Bytestream header, PrintP
|
|||
doc.setDefaultFont(font);
|
||||
(void)doc.documentLayout(); // wat
|
||||
|
||||
|
||||
// Needs to be before painter
|
||||
pdfWriter.setMargins({mmMargin, mmMargin, mmMargin, mmMargin});
|
||||
|
||||
|
@ -738,70 +732,6 @@ void PrinterWorker::convertPlaintext(QString filename, Bytestream header, PrintP
|
|||
qDebug() << "posted";
|
||||
}
|
||||
|
||||
void PrinterWorker::convertPlaintextLabel(QString filename, Bytestream header, PrintParameters Params)
|
||||
{
|
||||
QFile inFile(filename);
|
||||
if(!inFile.open(QIODevice::ReadOnly))
|
||||
{
|
||||
throw ConvertFailedException(tr("Failed to open file"));
|
||||
}
|
||||
|
||||
QString allText = inFile.readAll();
|
||||
while(allText.endsWith('\n'))
|
||||
{
|
||||
allText.chop(1);
|
||||
}
|
||||
|
||||
if(allText.contains('\n') || allText.contains('\f'))
|
||||
{
|
||||
throw ConvertFailedException(tr("Multiline label not supported"));
|
||||
}
|
||||
|
||||
QTemporaryFile tmpPdfFile;
|
||||
tmpPdfFile.open();
|
||||
|
||||
// NB: running with rotated format - pdf2printable will sort that out
|
||||
int pixelHeight = Params.getPaperSizeWInPixels();
|
||||
QFont font = QFont("Arial");
|
||||
font.setPixelSize(pixelHeight);
|
||||
|
||||
QFontMetrics fm(font);
|
||||
QString bigText = "AXgjqÈÅÄÖþ";
|
||||
QRect rect = fm.boundingRect(bigText);
|
||||
|
||||
while(rect.height() > pixelHeight*(8.0/10.0))
|
||||
{
|
||||
font.setPixelSize(font.pixelSize()-1);
|
||||
fm = QFontMetrics(font);
|
||||
rect = fm.boundingRect(bigText);
|
||||
}
|
||||
|
||||
rect = fm.boundingRect(allText);
|
||||
|
||||
int pixelWidth = rect.width() + pixelHeight/2;
|
||||
float ratio = pixelWidth*1.0/pixelHeight;
|
||||
Params.paperSizeH = Params.paperSizeW * ratio;
|
||||
|
||||
QPdfWriter pdfWriter(tmpPdfFile.fileName());
|
||||
pdfWriter.setCreator("SeaPrint " SEAPRINT_VERSION);
|
||||
QPageSize pageSize({Params.getPaperSizeHInPoints(), Params.getPaperSizeWInPoints()}, QPageSize::Point);
|
||||
pdfWriter.setPageSize(pageSize);
|
||||
pdfWriter.setMargins({0,0,0,0});
|
||||
pdfWriter.setResolution(Params.hwResH);
|
||||
|
||||
QPainter painter(&pdfWriter);
|
||||
int xOffset = -rect.x() + pixelHeight/4;
|
||||
int yOffset = -rect.y() + pixelHeight/10;
|
||||
painter.setFont(font);
|
||||
painter.drawText(xOffset, yOffset, allText);
|
||||
painter.end();
|
||||
|
||||
convertPdf(tmpPdfFile.fileName(), header, Params);
|
||||
|
||||
qDebug() << "Finished";
|
||||
qDebug() << "posted";
|
||||
}
|
||||
|
||||
void PrinterWorker::awaitResult(CurlRequester& cr, QString callback)
|
||||
{
|
||||
Bytestream resMsg;
|
||||
|
|
|
@ -60,7 +60,6 @@ private:
|
|||
void convertImage(QString filename, Bytestream header, PrintParameters Params, QMargins margins);
|
||||
void convertOfficeDocument(QString filename, Bytestream header, PrintParameters Params);
|
||||
void convertPlaintext(QString filename, Bytestream header, PrintParameters Params);
|
||||
void convertPlaintextLabel(QString filename, Bytestream header, PrintParameters Params);
|
||||
|
||||
void awaitResult(CurlRequester& cr, QString callback);
|
||||
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
#include "seaprintdbusadaptor.h"
|
||||
#include <QtQuick>
|
||||
|
||||
SeaPrintDBusAdaptor::SeaPrintDBusAdaptor(QQuickView *view)
|
||||
: QDBusAbstractAdaptor(view)
|
||||
, DBusAdaptorBase(view)
|
||||
{
|
||||
}
|
||||
|
||||
SeaPrintDBusAdaptor::~SeaPrintDBusAdaptor()
|
||||
{
|
||||
}
|
||||
|
||||
void SeaPrintDBusAdaptor::Open(const QString& fileName)
|
||||
{
|
||||
doOpen(fileName);
|
||||
}
|
||||
void SeaPrintDBusAdaptor::OpenPlaintext(const QString& fileContents, const QString& name)
|
||||
{
|
||||
doCreateFileAndOpen(fileContents, name);
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef SEAPRINTDBUSADAPTOR_H
|
||||
#define SEAPRINTDBUSADAPTOR_H
|
||||
|
||||
#include "dbusadaptorbase.h"
|
||||
|
||||
class SeaPrintDBusAdaptor : public QDBusAbstractAdaptor, public DBusAdaptorBase
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", "net.attah.seaprint")
|
||||
|
||||
public:
|
||||
SeaPrintDBusAdaptor(QQuickView *view);
|
||||
~SeaPrintDBusAdaptor();
|
||||
|
||||
public Q_SLOTS:
|
||||
Q_NOREPLY void Open(const QString& fileName);
|
||||
Q_NOREPLY void OpenPlaintext(const QString& fileContents, const QString& name);
|
||||
|
||||
};
|
||||
|
||||
#endif // SEAPRINTDBUSADAPTOR_H
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation>Nicht mit einem WLAN verbunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Dieses Dokumentformat wird nicht unterstützt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation>Dieses Format wird möglicherweise nicht richtig dargestellt</translation>
|
||||
|
@ -520,10 +524,6 @@ auf diesem Drucker</translation>
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation>Uneinheitliche Duplex-Einstellung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation>Mehrzeilige Etiketten werden nicht unterstützt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -535,14 +535,6 @@ auf diesem Drucker</translation>
|
|||
<source>Advanced</source>
|
||||
<translation>Fortgeschrittene</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation>Niedrigster</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation>Höchster</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -627,14 +619,6 @@ auf diesem Drucker</translation>
|
|||
<source>SVGs</source>
|
||||
<translation>SVGs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Dieses Dokumentformat wird nicht unterstützt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation>Neue Datei ausgewählt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
@ -1308,35 +1292,35 @@ auf diesem Drucker</translation>
|
|||
</message>
|
||||
<message>
|
||||
<source>184 x 260mm</source>
|
||||
<translation>184 x 260mm</translation>
|
||||
<translation type="unfinished">184 x 260mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>195 x 270mm</source>
|
||||
<translation>195 x 270mm</translation>
|
||||
<translation type="unfinished">195 x 270mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>55 x 85mm</source>
|
||||
<translation>55 x 85mm</translation>
|
||||
<translation type="unfinished">55 x 85mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>55 x 91mm</source>
|
||||
<translation>55 x 91mm</translation>
|
||||
<translation type="unfinished">55 x 91mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>54 x 86mm</source>
|
||||
<translation>54 x 86mm</translation>
|
||||
<translation type="unfinished">54 x 86mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>275 x 395mm</source>
|
||||
<translation>275 x 395mm</translation>
|
||||
<translation type="unfinished">275 x 395mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>89 x 119mm</source>
|
||||
<translation>89 x 119mm</translation>
|
||||
<translation type="unfinished">89 x 119mm</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Folio</source>
|
||||
<translation>Folio</translation>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Folio (Special)</source>
|
||||
|
@ -5193,6 +5177,10 @@ auf diesem Drucker</translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>utils</name>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>pending</source>
|
||||
<translation>Ausstehend</translation>
|
||||
|
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation>No hay WiFi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Formato de documento no soportado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation>Este formato puede no renderizarse correctamente</translation>
|
||||
|
@ -519,10 +523,6 @@
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -534,14 +534,6 @@
|
|||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -626,14 +618,6 @@
|
|||
<source>SVGs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Formato de documento no soportado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
@ -5192,6 +5176,10 @@
|
|||
</context>
|
||||
<context>
|
||||
<name>utils</name>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>pending</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation>Pas en WiFi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Format de document non supporté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation>Ce format peut ne pas être rendu correctement</translation>
|
||||
|
@ -520,10 +524,6 @@ sur cette imprimante</translation>
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -535,14 +535,6 @@ sur cette imprimante</translation>
|
|||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -627,14 +619,6 @@ sur cette imprimante</translation>
|
|||
<source>SVGs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Format de document non supporté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
@ -5193,6 +5177,10 @@ sur cette imprimante</translation>
|
|||
</context>
|
||||
<context>
|
||||
<name>utils</name>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>pending</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation>Niet met WiFi netwerk verbonden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Niet-ondersteunde documentindeling</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation>Dit formaat wordt mogelijk niet correct weergegeven</translation>
|
||||
|
@ -519,10 +523,6 @@
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -534,14 +534,6 @@
|
|||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -626,14 +618,6 @@
|
|||
<source>SVGs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Niet-ondersteunde documentindeling</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
@ -5192,6 +5176,10 @@
|
|||
</context>
|
||||
<context>
|
||||
<name>utils</name>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>pending</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation>Brak połączenia WiFi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Nieobsługiwany rodzaj dokumentu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation>Ten format może zostać przetworzony niepoprawnie</translation>
|
||||
|
@ -519,10 +523,6 @@
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -534,14 +534,6 @@
|
|||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -626,14 +618,6 @@
|
|||
<source>SVGs</source>
|
||||
<translation>SVG</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>Nieobsługiwany rodzaj dokumentu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
@ -5192,6 +5176,10 @@
|
|||
</context>
|
||||
<context>
|
||||
<name>utils</name>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>pending</source>
|
||||
<translation>oczekujące</translation>
|
||||
|
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation>未连接WiFi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>不受支持的格式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation>格式可能无法正确呈现</translation>
|
||||
|
@ -519,10 +523,6 @@
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -534,14 +534,6 @@
|
|||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -626,14 +618,6 @@
|
|||
<source>SVGs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation>不受支持的格式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
@ -5192,6 +5176,10 @@
|
|||
</context>
|
||||
<context>
|
||||
<name>utils</name>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>pending</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
@ -276,6 +276,10 @@
|
|||
<source>Not on WiFi</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This format may not render correctly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -519,10 +523,6 @@
|
|||
<source>Inconsistent duplex setting</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Multiline label not supported</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RangeSetting</name>
|
||||
|
@ -534,14 +534,6 @@
|
|||
<source>Advanced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Low</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>High</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Setting</name>
|
||||
|
@ -626,14 +618,6 @@
|
|||
<source>plaintext</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported document format</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New file selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>strings</name>
|
||||
|
|
Loading…
Reference in a new issue