diff --git a/gui/KCC.ui b/gui/KCC.ui
index bb6340c..c7033b2 100644
--- a/gui/KCC.ui
+++ b/gui/KCC.ui
@@ -6,8 +6,8 @@
0
0
- 566
- 671
+ 644
+ 706
@@ -22,241 +22,6 @@
5
- -
-
-
- false
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- 300
-
-
- 1
-
-
- Qt::Orientation::Horizontal
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 99
-
-
- 5
-
-
- 0
-
-
-
- -
-
-
- <html><head/><body><p>After calculating the cropping boundaries, "back up" a specified percentage amount.</p></body></html>
-
-
- Preserve Margin %
-
-
-
- -
-
-
- Cropping power:
-
-
-
-
-
-
- -
-
-
-
- 0
- 30
-
-
-
-
- true
-
-
-
- false
-
-
- Qt::AlignmentFlag::AlignJustify|Qt::AlignmentFlag::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- false
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- JPEG Quality:
-
-
-
- -
-
-
- 95
-
-
- 5
-
-
- 85
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- false
-
-
- <html><head/><body><p>Warning: chunk size greater than default may cause<br/>performance/battery issues, especially on older devices.</p></body></html>
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
- 0
- 0
-
-
-
- Chunk size MB:
-
-
-
- -
-
-
- 50
-
-
- 600
-
-
- 400
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Greater than default may cause performance issues on older ereaders.
-
-
-
-
-
-
- -
-
-
-
- 0
- 150
-
-
-
- <html><head/><body><p>Double click on source to open it in metadata editor.</p></body></html>
-
-
-
-
-
- QAbstractItemView::SelectionMode::NoSelection
-
-
- QAbstractItemView::ScrollMode::ScrollPerPixel
-
-
- QAbstractItemView::ScrollMode::ScrollPerPixel
-
-
-
-
@@ -378,9 +143,12 @@
- -
-
-
+
-
+
+
+ false
+
+
0
@@ -393,533 +161,52 @@
0
-
-
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Main Drive<br/></span>Use dedicated temporary directory on main OS drive.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Source File Drive<br/></span>Create temporary file directory on source file drive.</p></body></html>
+
-
+
+
+ 300
-
- Temp Directory
+
+ 1
-
-
- -
-
-
- Delete input file(s) or directory. It's not recoverable!
-
-
- Delete input
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - JPEG<br/></span>Use JPEG files</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - force PNG<br/></span>Create PNG files instead JPEG for black and white images</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - mozJpeg<br/></span>10-20% smaller JPEG file, with the same image quality, but processing time multiplied by 2</p></body></html>
-
-
- JPEG/PNG/mozJpeg
-
-
- true
-
-
-
- -
-
-
- <html><head/><body><p style='white-space:pre'>Enable right-to-left reading.</p></body></html>
-
-
- Right-to-left (manga)
+
+ Qt::Orientation::Horizontal
-
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Split<br/></span>Double page spreads will be cut into two separate pages.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Split and rotate<br/></span>Double page spreads will be displayed twice. First split and then rotated. </p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Rotate<br/></span>Double page spreads will be rotated.</p></body></html>
-
-
- Spread splitter
-
-
- true
-
-
-
- -
-
-
- Resize cover to exact device resolution by center-cropping to aspect ratio first.
-May crop top/bottom or left/right depending on source aspect ratio. Not implemented for Kindle Scribe.
-
-
- Cover Fill
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Don't use metadata Title<br/></span>Write default title.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Add metadata Title to the default schema<br/></span>Write default title with Title from ComicInfo.xml or other embedded metadata.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Use metadata Title only<br/></span>Write Title from ComicInfo.xml or other embedded metadata.</p></body></html>
-
-
- Metadata Title
-
-
- true
-
-
-
- -
-
-
- false
-
-
- Don't quantize PNG images to 16 colors (4 bit)
-
-This will double file size but preserve all 256 colors (8 bit).
-
-Eink only has 16 shades of gray so you probably don't want this.
-
-
- No Quantize
-
-
-
- -
-
-
- The JPEG quality, on a scale from 0 (worst) to 95 (best).
-
-Default is 85 for most devices besides Kindle Scribe and Colorsoft, which are 90.
-
-Higher values are larger and higher quality, and may resolve blank page issues.
-
-
- Custom JPEG Quality
-
-
-
- -
-
-
- false
-
-
- Force full color images to be saved in lossless PNG format, dramatically increases the filesize.
-
-
- Force PNG RGB
-
-
-
- -
-
-
- <html><head/><body><p>When the spread splitter option is partially checked,</p><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Rotate Last<br/></span>Put the rotated 2 page spread after the split spreads.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Rotate First<br/></span>Put the rotated 2 page spread before the split spreads.</p></body></html>
-
-
- Rotate First
-
-
-
- -
-
-
- <html><head/><body><p style='white-space:pre'>Disable conversion to grayscale.</p></body></html>
-
-
- Color mode
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Disabled<br/></span>Disabled</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Horizontal<br/></span>Crop empty horizontal lines.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Both<br/></span>Crop empty horizontal and vertical lines.</p></body></html>
-
-
- Inter-panel crop
-
-
- true
-
-
-
- -
-
-
- Erase rainbow effect on color eink screen by attenuating interfering frequencies
-
-
- Rainbow eraser
-
-
-
- -
-
-
- <html><head/><body><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Unchecked - Automatic mode<br/></span>The output will be split automatically.</p><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Checked - Volume mode<br/></span>Every subdirectory will be considered as a separate volume.</p></body></html>
-
-
- Output split
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - 2 page landscape<br/></span>2 viewports for left and right pages</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - 1 page landscape<br/></span>A single centered viewport for 1 page</p></body></html>
-
-
- 1 Page Landscape
-
-
-
- -
-
-
- Render vector PDFs to device width instead of height.
-
-Useful if you plan to crop a little off the top and bottom to fill screen.
-
-
- PDF Width Render
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:700; text-decoration: underline;">Unchecked<br/></span>Maximal output file size is 100 MB for Webtoon, 400 MB for others before split occurs.</p><p><span style=" font-weight:700; text-decoration: underline;">Checked</span><br/>Output file size specified in "Chunk size MB" before split occurs.</p></body></html>
-
-
- Chunk size
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - BW only<br/></span>Only autocontrast bw pages. Ignored for pages where near blacks or whites don't exist.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Disabled<br/></span>Disable autocontrast</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - BW and Color<br/></span>BW and color images will be autocontrasted. Ignored for pages where near blacks or whites don't exist.</p></body></html>
-
-
- Custom Autocontrast
-
-
- true
-
-
-
- -
-
-
- Do not rotate double page spreads in spread splitter option.
-
-
- No rotate
-
-
-
- -
-
+
-
+
0
0
-
- Qt::FocusPolicy::ClickFocus
+
+ 99
-
- Default Author is KCC
+
+ 5
-
- Default Author
-
-
- false
+
+ 0
- -
-
+
-
+
- Shift first page to opposite side in landscape for two page spread alignment
+ <html><head/><body><p>After calculating the cropping boundaries, "back up" a specified percentage amount.</p></body></html>
- Spread shift
-
-
-
- -
-
-
- <html><head/><body><p>By default, KCC maps the darkest pixel value to pure black (the black point.)</p><p>Extreme black point sets the black point to be the most common dark pixel value.</p><p>Useful when text is black but artwork is gray.</p></body></html>
-
-
- Extreme Black Point
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Nothing<br/></span>Images smaller than device resolution will not be resized.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Stretching<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be not preserved.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Upscaling<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be preserved.</p></body></html>
-
-
- Stretch/Upscale
-
-
- true
-
-
-
- -
-
-
- <html><head/><body><p>Set a custom gamma correction.</p><p>1.0 is default (disabled).<br/>< 1.0 makes the image brighter.<br/>> 1.0 makes the image darker. </p><p>1.8 was the default in KCC 9.1.0 and earlier.</p><p>Use if you want to make midtones darker.</p></body></html>
-
-
- Custom gamma
-
-
-
- -
-
-
- Replace JPG with lossy WebP and PNG with lossless WebP. This includes the JPG Quality.
-
-Ignored for Kindle EPUB/MOBI and all PDF.
-
-
- WebP (experimental)
-
-
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
- 0
- 0
-
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - next to source<br/></span>Place output files next to source files</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - folder next to source<br/></span>Place output files in a folder next to source files</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Custom<br/></span>Place output files in custom directory specified by right button</p></body></html>
-
-
- Output Folder
-
-
- true
-
-
-
- -
-
-
-
- 0
- 30
-
-
-
- <html><head/><body><p>Use this to select the default output directory.</p></body></html>
-
-
-
-
-
-
- :/Other/icons/folder_new.png:/Other/icons/folder_new.png
-
-
-
-
-
-
- -
-
-
- <html><head/><body><p style='white-space:pre'>Enable special parsing mode for Korean Webtoons.</p></body></html>
-
-
- Webtoon mode
-
-
-
- -
-
-
- Rotate 2 page spreads in opposite direction than normal.
-
-
- Rotate Right
-
-
-
- -
-
-
- <html><head/><body><p>Use the PDF/EPUB image extraction method from older KCC versions.</p><p><br/></p><p>Use if standard extraction fails for whatever reason.</p></body></html>
-
-
- Legacy Extract
-
-
-
- -
-
-
- <html><head/><body><p style='white-space:pre'>Do not process any image, ignore profile and processing options.</p></body></html>
-
-
- Disable processing
-
-
-
- -
-
-
- <html><head/><body><p>Attempt to crop main cover from wide image.</p></body></html>
-
-
- Smart Cover Crop
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Autodetection<br/></span>The color of margins fill will be detected automatically.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - White<br/></span>Margins will be untouched.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Black<br/></span>Margins will be filled with black color.</p></body></html>
-
-
- W/B margins
-
-
- true
+ Preserve Margin %
-
-
-
-
- 0
- 0
-
-
-
- Qt::FocusPolicy::ClickFocus
-
-
- <html><head/><body><p>Default Title</p></body></html>
-
-
- Default Title
-
-
- false
-
-
-
- -
-
-
- <html><head/><body><p>Combines all selected files into a single file. (Helpful for combining chapters into volumes.)</p></body></html>
-
+
- File Fusion
-
-
-
- -
-
-
- <html><head/><body><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Unchecked - 4 panels<br/></span>Zoom each corner separately.</p><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Indeterminate - 2 panels<br/></span>Zoom only the top and bottom of the page.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - 4 high-quality panels<br/></span>Zoom each corner separately. Try to increase the quality of magnification. Check wiki for more details.</p></body></html>
-
-
- Panel View 4/2/HQ
-
-
- true
-
-
-
- -
-
-
- false
-
-
- Use a more compatible 8 bit PNG instead of 4 bit.
-
-
- PNG Legacy Mode
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Disabled</span></p><p>Disabled</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Margins<br/></span>Margins</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Margins + page numbers<br/></span>Margins +page numbers</p></body></html>
-
-
- Cropping mode
-
-
- true
-
-
-
- -
-
-
- <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - 1x4<br/></span>Keep format 1x4 panels strips.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - 2x2<br/></span>Turn 1x4 strips to 2x2 to maximize screen usage.</p></body></html>
-
-
- 1x4 to 2x2 strips
-
-
-
- -
-
-
- <html><head/><body><p>Invert the page turn direction.</p><p>Usually used with right to left manga but you want to page turn left to right. Spread splitting would still be right to left in this case.</p><p>Will break various features like landscape mode order.</p></body></html>
-
-
- Invert Direction
-
-
-
- -
-
-
- <html><head/><body><p>In virtual panel mode:</p><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Horizontal<br/></span>First two panels are the top panels.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Vertical<br/></span>First two panels are the side panels.</p></body></html>
-
-
- Vertical 4 Panel
+ Cropping power:
@@ -1064,6 +351,27 @@ Ignored for Kindle EPUB/MOBI and all PDF.
formatBox
+ -
+
+
+
+ 0
+ 30
+
+
+
+
+ true
+
+
+
+ false
+
+
+ Qt::AlignmentFlag::AlignJustify|Qt::AlignmentFlag::AlignVCenter
+
+
+
-
@@ -1105,6 +413,554 @@ Ignored for Kindle EPUB/MOBI and all PDF.
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Rotate 2 page spreads in opposite direction than normal.
+
+
+ Rotate Right
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Main Drive<br/></span>Use dedicated temporary directory on main OS drive.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Source File Drive<br/></span>Create temporary file directory on source file drive.</p></body></html>
+
+
+ Temp Directory
+
+
+
+ -
+
+
+ Delete input file(s) or directory. It's not recoverable!
+
+
+ Delete input
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::FocusPolicy::ClickFocus
+
+
+ Default Author is KCC
+
+
+ Default Author
+
+
+ false
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - BW only<br/></span>Only autocontrast bw pages. Ignored for pages where near blacks or whites don't exist.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Disabled<br/></span>Disable autocontrast</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - BW and Color<br/></span>BW and color images will be autocontrasted. Ignored for pages where near blacks or whites don't exist.</p></body></html>
+
+
+ Custom Autocontrast
+
+
+ true
+
+
+
+ -
+
+
+ <html><head/><body><p>By default, KCC maps the darkest pixel value to pure black (the black point.)</p><p>Extreme black point sets the black point to be the most common dark pixel value.</p><p>Useful when text is black but artwork is gray.</p></body></html>
+
+
+ Extreme Black Point
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - next to source<br/></span>Place output files next to source files</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - folder next to source<br/></span>Place output files in a folder next to source files</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Custom<br/></span>Place output files in custom directory specified by right button</p></body></html>
+
+
+ Output Folder
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 30
+
+
+
+ <html><head/><body><p>Use this to select the default output directory.</p></body></html>
+
+
+
+
+
+
+ :/Other/icons/folder_new.png:/Other/icons/folder_new.png
+
+
+
+
+
+
+ -
+
+
+ <html><head/><body><p>In virtual panel mode:</p><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Horizontal<br/></span>First two panels are the top panels.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Vertical<br/></span>First two panels are the side panels.</p></body></html>
+
+
+ Vertical 4 Panel
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - JPEG<br/></span>Use JPEG files</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - force PNG<br/></span>Create PNG files instead JPEG for black and white images</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - mozJpeg<br/></span>10-20% smaller JPEG file, with the same image quality, but processing time multiplied by 2</p></body></html>
+
+
+ JPEG/PNG/mozJpeg
+
+
+ true
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Disabled<br/></span>Disabled</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Horizontal<br/></span>Crop empty horizontal lines.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Both<br/></span>Crop empty horizontal and vertical lines.</p></body></html>
+
+
+ Inter-panel crop
+
+
+ true
+
+
+
+ -
+
+
+ false
+
+
+ Force full color images to be saved in lossless PNG format, dramatically increases the filesize.
+
+
+ Force PNG RGB
+
+
+
+ -
+
+
+ Do not rotate double page spreads in spread splitter option.
+
+
+ No rotate
+
+
+
+ -
+
+
+ Shift first page to opposite side in landscape for two page spread alignment
+
+
+ Spread shift
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Split<br/></span>Double page spreads will be cut into two separate pages.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Split and rotate<br/></span>Double page spreads will be displayed twice. First split and then rotated. </p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Rotate<br/></span>Double page spreads will be rotated.</p></body></html>
+
+
+ Spread splitter
+
+
+ true
+
+
+
+ -
+
+
+ false
+
+
+ Use a more compatible 8 bit PNG instead of 4 bit.
+
+
+ PNG Legacy Mode
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:700; text-decoration: underline;">Unchecked<br/></span>Maximal output file size is 100 MB for Webtoon, 400 MB for others before split occurs.</p><p><span style=" font-weight:700; text-decoration: underline;">Checked</span><br/>Output file size specified in "Chunk size MB" before split occurs.</p></body></html>
+
+
+ Chunk size
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Nothing<br/></span>Images smaller than device resolution will not be resized.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Stretching<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be not preserved.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Upscaling<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be preserved.</p></body></html>
+
+
+ Stretch/Upscale
+
+
+ true
+
+
+
+ -
+
+
+ Resize cover to exact device resolution by center-cropping to aspect ratio first.
+May crop top/bottom or left/right depending on source aspect ratio. Not implemented for Kindle Scribe.
+
+
+ Cover Fill
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - 2 page landscape<br/></span>2 viewports for left and right pages</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - 1 page landscape<br/></span>A single centered viewport for 1 page</p></body></html>
+
+
+ 1 Page Landscape
+
+
+
+ -
+
+
+ <html><head/><body><p>Set a custom gamma correction.</p><p>1.0 is default (disabled).<br/>< 1.0 makes the image brighter.<br/>> 1.0 makes the image darker. </p><p>1.8 was the default in KCC 9.1.0 and earlier.</p><p>Use if you want to make midtones darker.</p></body></html>
+
+
+ Custom gamma
+
+
+
+ -
+
+
+ <html><head/><body><p>When the spread splitter option is partially checked,</p><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Rotate Last<br/></span>Put the rotated 2 page spread after the split spreads.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Rotate First<br/></span>Put the rotated 2 page spread before the split spreads.</p></body></html>
+
+
+ Rotate First
+
+
+
+ -
+
+
+ <html><head/><body><p style='white-space:pre'>Enable special parsing mode for Korean Webtoons.</p></body></html>
+
+
+ Webtoon mode
+
+
+
+ -
+
+
+ <html><head/><body><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Unchecked - Automatic mode<br/></span>The output will be split automatically.</p><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Checked - Volume mode<br/></span>Every subdirectory will be considered as a separate volume.</p></body></html>
+
+
+ Output split
+
+
+
+ -
+
+
+ <html><head/><body><p>Invert the page turn direction.</p><p>Usually used with right to left manga but you want to page turn left to right. Spread splitting would still be right to left in this case.</p><p>Will break various features like landscape mode order.</p></body></html>
+
+
+ Invert Direction
+
+
+
+ -
+
+
+ false
+
+
+ Don't quantize PNG images to 16 colors (4 bit)
+
+This will double file size but preserve all 256 colors (8 bit).
+
+Eink only has 16 shades of gray so you probably don't want this.
+
+
+ No Quantize
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Autodetection<br/></span>The color of margins fill will be detected automatically.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - White<br/></span>Margins will be untouched.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Black<br/></span>Margins will be filled with black color.</p></body></html>
+
+
+ W/B margins
+
+
+ true
+
+
+
+ -
+
+
+ <html><head/><body><p>Attempt to crop main cover from wide image.</p></body></html>
+
+
+ Smart Cover Crop
+
+
+
+ -
+
+
+ <html><head/><body><p style='white-space:pre'>Disable conversion to grayscale.</p></body></html>
+
+
+ Color mode
+
+
+
+ -
+
+
+ The JPEG quality, on a scale from 0 (worst) to 95 (best).
+
+Default is 85 for most devices besides Kindle Scribe and Colorsoft, which are 90.
+
+Higher values are larger and higher quality, and may resolve blank page issues.
+
+
+ Custom JPEG Quality
+
+
+
+ -
+
+
+ Erase rainbow effect on color eink screen by attenuating interfering frequencies
+
+
+ Rainbow eraser
+
+
+
+ -
+
+
+ <html><head/><body><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Unchecked - 4 panels<br/></span>Zoom each corner separately.</p><p style='white-space:pre'><span style=" font-weight:600; text-decoration: underline;">Indeterminate - 2 panels<br/></span>Zoom only the top and bottom of the page.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - 4 high-quality panels<br/></span>Zoom each corner separately. Try to increase the quality of magnification. Check wiki for more details.</p></body></html>
+
+
+ Panel View 4/2/HQ
+
+
+ true
+
+
+
+ -
+
+
+ <html><head/><body><p style='white-space:pre'>Enable right-to-left reading.</p></body></html>
+
+
+ Right-to-left (manga)
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::FocusPolicy::ClickFocus
+
+
+ <html><head/><body><p>Default Title</p></body></html>
+
+
+ Default Title
+
+
+ false
+
+
+
+ -
+
+
+ Replace JPG with lossy WebP and PNG with lossless WebP. This includes the JPG Quality.
+
+Ignored for Kindle EPUB/MOBI and all PDF.
+
+
+ WebP (experimental)
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Disabled</span></p><p>Disabled</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Margins<br/></span>Margins</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Margins + page numbers<br/></span>Margins +page numbers</p></body></html>
+
+
+ Cropping mode
+
+
+ true
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - 1x4<br/></span>Keep format 1x4 panels strips.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - 2x2<br/></span>Turn 1x4 strips to 2x2 to maximize screen usage.</p></body></html>
+
+
+ 1x4 to 2x2 strips
+
+
+
+ -
+
+
+ <html><head/><body><p style='white-space:pre'>Do not process any image, ignore profile and processing options.</p></body></html>
+
+
+ Disable processing
+
+
+
+ -
+
+
+ <html><head/><body><p>Combines all selected files into a single file. (Helpful for combining chapters into volumes.)</p></body></html>
+
+
+ File Fusion
+
+
+
+ -
+
+
+ Render vector PDFs to device width instead of height.
+
+Useful if you plan to crop a little off the top and bottom to fill screen.
+
+
+ PDF Width Render
+
+
+
+ -
+
+
+ <html><head/><body><p>Use the PDF/EPUB image extraction method from older KCC versions.</p><p><br/></p><p>Use if standard extraction fails for whatever reason.</p></body></html>
+
+
+ Legacy Extract
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Don't use metadata Title<br/></span>Write default title.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Add metadata Title to the default schema<br/></span>Write default title with Title from ComicInfo.xml or other embedded metadata.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Use metadata Title only<br/></span>Write Title from ComicInfo.xml or other embedded metadata.</p></body></html>
+
+
+ Metadata Title
+
+
+ true
+
+
+
+
+
+
-
@@ -1178,6 +1034,150 @@ Ignored for Kindle EPUB/MOBI and all PDF.
+ -
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ JPEG Quality:
+
+
+
+ -
+
+
+ 95
+
+
+ 5
+
+
+ 85
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 150
+
+
+
+ <html><head/><body><p>Double click on source to open it in metadata editor.</p></body></html>
+
+
+
+
+
+ QAbstractItemView::SelectionMode::NoSelection
+
+
+ QAbstractItemView::ScrollMode::ScrollPerPixel
+
+
+ QAbstractItemView::ScrollMode::ScrollPerPixel
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ <html><head/><body><p>Warning: chunk size greater than default may cause<br/>performance/battery issues, especially on older devices.</p></body></html>
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Chunk size MB:
+
+
+
+ -
+
+
+ 50
+
+
+ 600
+
+
+ 400
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Greater than default may cause performance issues on older ereaders.
+
+
+
+
+
+
@@ -1210,19 +1210,8 @@ Ignored for Kindle EPUB/MOBI and all PDF.
croppingPowerSlider
preserveMarginBox
spreadShiftBox
- deleteBox
- disableProcessingBox
fileFusionBox
- noRotateBox
- interPanelCropBox
- metadataTitleBox
- coverFillBox
- chunkSizeCheckBox
chunkSizeBox
- eraseRainbowBox
- rotateFirstBox
- autoLevelBox
- autocontrastBox
editorButton
kofiButton
wikiButton
diff --git a/kindlecomicconverter/KCC_ui.py b/kindlecomicconverter/KCC_ui.py
index 86a242c..de9a533 100644
--- a/kindlecomicconverter/KCC_ui.py
+++ b/kindlecomicconverter/KCC_ui.py
@@ -26,7 +26,7 @@ class Ui_mainWindow(object):
def setupUi(self, mainWindow):
if not mainWindow.objectName():
mainWindow.setObjectName(u"mainWindow")
- mainWindow.resize(566, 671)
+ mainWindow.resize(644, 706)
icon = QIcon()
icon.addFile(u":/Icon/icons/comic2ebook.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
mainWindow.setWindowIcon(icon)
@@ -35,134 +35,6 @@ class Ui_mainWindow(object):
self.gridLayout = QGridLayout(self.centralWidget)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(-1, -1, -1, 5)
- self.croppingWidget = QWidget(self.centralWidget)
- self.croppingWidget.setObjectName(u"croppingWidget")
- self.croppingWidget.setVisible(False)
- self.gridLayout_5 = QGridLayout(self.croppingWidget)
- self.gridLayout_5.setObjectName(u"gridLayout_5")
- self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
- self.croppingPowerSlider = QSlider(self.croppingWidget)
- self.croppingPowerSlider.setObjectName(u"croppingPowerSlider")
- self.croppingPowerSlider.setMaximum(300)
- self.croppingPowerSlider.setSingleStep(1)
- self.croppingPowerSlider.setOrientation(Qt.Orientation.Horizontal)
-
- self.gridLayout_5.addWidget(self.croppingPowerSlider, 0, 1, 1, 1)
-
- self.preserveMarginBox = QSpinBox(self.croppingWidget)
- self.preserveMarginBox.setObjectName(u"preserveMarginBox")
- sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.preserveMarginBox.sizePolicy().hasHeightForWidth())
- self.preserveMarginBox.setSizePolicy(sizePolicy)
- self.preserveMarginBox.setMaximum(99)
- self.preserveMarginBox.setSingleStep(5)
- self.preserveMarginBox.setValue(0)
-
- self.gridLayout_5.addWidget(self.preserveMarginBox, 1, 1, 1, 1)
-
- self.preserveMarginLabel = QLabel(self.croppingWidget)
- self.preserveMarginLabel.setObjectName(u"preserveMarginLabel")
-
- self.gridLayout_5.addWidget(self.preserveMarginLabel, 1, 0, 1, 1)
-
- self.croppingPowerLabel = QLabel(self.croppingWidget)
- self.croppingPowerLabel.setObjectName(u"croppingPowerLabel")
-
- self.gridLayout_5.addWidget(self.croppingPowerLabel, 0, 0, 1, 1)
-
-
- self.gridLayout.addWidget(self.croppingWidget, 9, 0, 1, 2)
-
- self.progressBar = QProgressBar(self.centralWidget)
- self.progressBar.setObjectName(u"progressBar")
- self.progressBar.setMinimumSize(QSize(0, 30))
- font = QFont()
- font.setBold(True)
- self.progressBar.setFont(font)
- self.progressBar.setVisible(False)
- self.progressBar.setAlignment(Qt.AlignmentFlag.AlignJustify|Qt.AlignmentFlag.AlignVCenter)
-
- self.gridLayout.addWidget(self.progressBar, 1, 0, 1, 2)
-
- self.jpegQualityWidget = QWidget(self.centralWidget)
- self.jpegQualityWidget.setObjectName(u"jpegQualityWidget")
- sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
- sizePolicy1.setHorizontalStretch(0)
- sizePolicy1.setVerticalStretch(0)
- sizePolicy1.setHeightForWidth(self.jpegQualityWidget.sizePolicy().hasHeightForWidth())
- self.jpegQualityWidget.setSizePolicy(sizePolicy1)
- self.jpegQualityWidget.setVisible(False)
- self.horizontalLayout_12 = QHBoxLayout(self.jpegQualityWidget)
- self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
- self.horizontalLayout_12.setContentsMargins(0, 0, 0, 0)
- self.jpegQualityLabel = QLabel(self.jpegQualityWidget)
- self.jpegQualityLabel.setObjectName(u"jpegQualityLabel")
-
- self.horizontalLayout_12.addWidget(self.jpegQualityLabel)
-
- self.jpegQualitySpinBox = QSpinBox(self.jpegQualityWidget)
- self.jpegQualitySpinBox.setObjectName(u"jpegQualitySpinBox")
- self.jpegQualitySpinBox.setMaximum(95)
- self.jpegQualitySpinBox.setSingleStep(5)
- self.jpegQualitySpinBox.setValue(85)
-
- self.horizontalLayout_12.addWidget(self.jpegQualitySpinBox)
-
-
- self.gridLayout.addWidget(self.jpegQualityWidget, 10, 0, 1, 1)
-
- self.chunkSizeWidget = QWidget(self.centralWidget)
- self.chunkSizeWidget.setObjectName(u"chunkSizeWidget")
- sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
- sizePolicy2.setHorizontalStretch(0)
- sizePolicy2.setVerticalStretch(0)
- sizePolicy2.setHeightForWidth(self.chunkSizeWidget.sizePolicy().hasHeightForWidth())
- self.chunkSizeWidget.setSizePolicy(sizePolicy2)
- self.chunkSizeWidget.setVisible(False)
- self.horizontalLayout_4 = QHBoxLayout(self.chunkSizeWidget)
- self.horizontalLayout_4.setSpacing(0)
- self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
- self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
- self.chunkSizeLabel = QLabel(self.chunkSizeWidget)
- self.chunkSizeLabel.setObjectName(u"chunkSizeLabel")
- sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred)
- sizePolicy3.setHorizontalStretch(0)
- sizePolicy3.setVerticalStretch(0)
- sizePolicy3.setHeightForWidth(self.chunkSizeLabel.sizePolicy().hasHeightForWidth())
- self.chunkSizeLabel.setSizePolicy(sizePolicy3)
-
- self.horizontalLayout_4.addWidget(self.chunkSizeLabel)
-
- self.chunkSizeBox = QSpinBox(self.chunkSizeWidget)
- self.chunkSizeBox.setObjectName(u"chunkSizeBox")
- self.chunkSizeBox.setMinimum(50)
- self.chunkSizeBox.setMaximum(600)
- self.chunkSizeBox.setValue(400)
-
- self.horizontalLayout_4.addWidget(self.chunkSizeBox)
-
- self.chunkSizeWarnLabel = QLabel(self.chunkSizeWidget)
- self.chunkSizeWarnLabel.setObjectName(u"chunkSizeWarnLabel")
- sizePolicy3.setHeightForWidth(self.chunkSizeWarnLabel.sizePolicy().hasHeightForWidth())
- self.chunkSizeWarnLabel.setSizePolicy(sizePolicy3)
-
- self.horizontalLayout_4.addWidget(self.chunkSizeWarnLabel)
-
-
- self.gridLayout.addWidget(self.chunkSizeWidget, 6, 0, 1, 1)
-
- self.jobList = QListWidget(self.centralWidget)
- self.jobList.setObjectName(u"jobList")
- self.jobList.setMinimumSize(QSize(0, 150))
- self.jobList.setStyleSheet(u"")
- self.jobList.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection)
- self.jobList.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
- self.jobList.setHorizontalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
-
- self.gridLayout.addWidget(self.jobList, 2, 0, 1, 2)
-
self.toolWidget = QWidget(self.centralWidget)
self.toolWidget.setObjectName(u"toolWidget")
self.gridLayout_6 = QGridLayout(self.toolWidget)
@@ -220,285 +92,74 @@ class Ui_mainWindow(object):
self.gridLayout.addWidget(self.toolWidget, 0, 0, 1, 2)
- self.optionWidget = QWidget(self.centralWidget)
- self.optionWidget.setObjectName(u"optionWidget")
- self.gridLayout_2 = QGridLayout(self.optionWidget)
- self.gridLayout_2.setObjectName(u"gridLayout_2")
- self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
- self.tempDirBox = QCheckBox(self.optionWidget)
- self.tempDirBox.setObjectName(u"tempDirBox")
+ self.croppingWidget = QWidget(self.centralWidget)
+ self.croppingWidget.setObjectName(u"croppingWidget")
+ self.croppingWidget.setVisible(False)
+ self.gridLayout_5 = QGridLayout(self.croppingWidget)
+ self.gridLayout_5.setObjectName(u"gridLayout_5")
+ self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
+ self.croppingPowerSlider = QSlider(self.croppingWidget)
+ self.croppingPowerSlider.setObjectName(u"croppingPowerSlider")
+ self.croppingPowerSlider.setMaximum(300)
+ self.croppingPowerSlider.setSingleStep(1)
+ self.croppingPowerSlider.setOrientation(Qt.Orientation.Horizontal)
- self.gridLayout_2.addWidget(self.tempDirBox, 12, 2, 1, 1)
+ self.gridLayout_5.addWidget(self.croppingPowerSlider, 0, 1, 1, 1)
- self.deleteBox = QCheckBox(self.optionWidget)
- self.deleteBox.setObjectName(u"deleteBox")
+ self.preserveMarginBox = QSpinBox(self.croppingWidget)
+ self.preserveMarginBox.setObjectName(u"preserveMarginBox")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.preserveMarginBox.sizePolicy().hasHeightForWidth())
+ self.preserveMarginBox.setSizePolicy(sizePolicy)
+ self.preserveMarginBox.setMaximum(99)
+ self.preserveMarginBox.setSingleStep(5)
+ self.preserveMarginBox.setValue(0)
- self.gridLayout_2.addWidget(self.deleteBox, 5, 1, 1, 1)
+ self.gridLayout_5.addWidget(self.preserveMarginBox, 1, 1, 1, 1)
- self.mozJpegBox = QCheckBox(self.optionWidget)
- self.mozJpegBox.setObjectName(u"mozJpegBox")
- self.mozJpegBox.setTristate(True)
+ self.preserveMarginLabel = QLabel(self.croppingWidget)
+ self.preserveMarginLabel.setObjectName(u"preserveMarginLabel")
- self.gridLayout_2.addWidget(self.mozJpegBox, 4, 0, 1, 1)
+ self.gridLayout_5.addWidget(self.preserveMarginLabel, 1, 0, 1, 1)
- self.mangaBox = QCheckBox(self.optionWidget)
- self.mangaBox.setObjectName(u"mangaBox")
+ self.croppingPowerLabel = QLabel(self.croppingWidget)
+ self.croppingPowerLabel.setObjectName(u"croppingPowerLabel")
- self.gridLayout_2.addWidget(self.mangaBox, 1, 0, 1, 1)
+ self.gridLayout_5.addWidget(self.croppingPowerLabel, 0, 0, 1, 1)
- self.rotateBox = QCheckBox(self.optionWidget)
- self.rotateBox.setObjectName(u"rotateBox")
- self.rotateBox.setTristate(True)
- self.gridLayout_2.addWidget(self.rotateBox, 1, 1, 1, 1)
-
- self.coverFillBox = QCheckBox(self.optionWidget)
- self.coverFillBox.setObjectName(u"coverFillBox")
-
- self.gridLayout_2.addWidget(self.coverFillBox, 9, 1, 1, 1)
-
- self.metadataTitleBox = QCheckBox(self.optionWidget)
- self.metadataTitleBox.setObjectName(u"metadataTitleBox")
- self.metadataTitleBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.metadataTitleBox, 7, 0, 1, 1)
-
- self.noQuantizeBox = QCheckBox(self.optionWidget)
- self.noQuantizeBox.setObjectName(u"noQuantizeBox")
- self.noQuantizeBox.setEnabled(False)
-
- self.gridLayout_2.addWidget(self.noQuantizeBox, 10, 2, 1, 1)
-
- self.jpegQualityBox = QCheckBox(self.optionWidget)
- self.jpegQualityBox.setObjectName(u"jpegQualityBox")
-
- self.gridLayout_2.addWidget(self.jpegQualityBox, 8, 0, 1, 1)
-
- self.forcePngRgbBox = QCheckBox(self.optionWidget)
- self.forcePngRgbBox.setObjectName(u"forcePngRgbBox")
- self.forcePngRgbBox.setEnabled(False)
-
- self.gridLayout_2.addWidget(self.forcePngRgbBox, 11, 2, 1, 1)
-
- self.rotateFirstBox = QCheckBox(self.optionWidget)
- self.rotateFirstBox.setObjectName(u"rotateFirstBox")
-
- self.gridLayout_2.addWidget(self.rotateFirstBox, 8, 1, 1, 1)
-
- self.colorBox = QCheckBox(self.optionWidget)
- self.colorBox.setObjectName(u"colorBox")
-
- self.gridLayout_2.addWidget(self.colorBox, 3, 2, 1, 1)
-
- self.interPanelCropBox = QCheckBox(self.optionWidget)
- self.interPanelCropBox.setObjectName(u"interPanelCropBox")
- self.interPanelCropBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.interPanelCropBox, 6, 2, 1, 1)
-
- self.eraseRainbowBox = QCheckBox(self.optionWidget)
- self.eraseRainbowBox.setObjectName(u"eraseRainbowBox")
-
- self.gridLayout_2.addWidget(self.eraseRainbowBox, 7, 2, 1, 1)
-
- self.outputSplit = QCheckBox(self.optionWidget)
- self.outputSplit.setObjectName(u"outputSplit")
-
- self.gridLayout_2.addWidget(self.outputSplit, 3, 1, 1, 1)
-
- self.onePageLandscapeBox = QCheckBox(self.optionWidget)
- self.onePageLandscapeBox.setObjectName(u"onePageLandscapeBox")
-
- self.gridLayout_2.addWidget(self.onePageLandscapeBox, 12, 1, 1, 1)
-
- self.pdfWidthBox = QCheckBox(self.optionWidget)
- self.pdfWidthBox.setObjectName(u"pdfWidthBox")
-
- self.gridLayout_2.addWidget(self.pdfWidthBox, 10, 0, 1, 1)
-
- self.chunkSizeCheckBox = QCheckBox(self.optionWidget)
- self.chunkSizeCheckBox.setObjectName(u"chunkSizeCheckBox")
-
- self.gridLayout_2.addWidget(self.chunkSizeCheckBox, 7, 1, 1, 1)
-
- self.autocontrastBox = QCheckBox(self.optionWidget)
- self.autocontrastBox.setObjectName(u"autocontrastBox")
- self.autocontrastBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.autocontrastBox, 9, 2, 1, 1)
-
- self.noRotateBox = QCheckBox(self.optionWidget)
- self.noRotateBox.setObjectName(u"noRotateBox")
-
- self.gridLayout_2.addWidget(self.noRotateBox, 6, 1, 1, 1)
-
- self.authorEdit = QLineEdit(self.optionWidget)
- self.authorEdit.setObjectName(u"authorEdit")
- sizePolicy2.setHeightForWidth(self.authorEdit.sizePolicy().hasHeightForWidth())
- self.authorEdit.setSizePolicy(sizePolicy2)
- self.authorEdit.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
- self.authorEdit.setClearButtonEnabled(False)
-
- self.gridLayout_2.addWidget(self.authorEdit, 0, 1, 1, 1)
-
- self.spreadShiftBox = QCheckBox(self.optionWidget)
- self.spreadShiftBox.setObjectName(u"spreadShiftBox")
-
- self.gridLayout_2.addWidget(self.spreadShiftBox, 5, 0, 1, 1)
-
- self.autoLevelBox = QCheckBox(self.optionWidget)
- self.autoLevelBox.setObjectName(u"autoLevelBox")
-
- self.gridLayout_2.addWidget(self.autoLevelBox, 8, 2, 1, 1)
-
- self.upscaleBox = QCheckBox(self.optionWidget)
- self.upscaleBox.setObjectName(u"upscaleBox")
- self.upscaleBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.upscaleBox, 2, 1, 1, 1)
-
- self.gammaBox = QCheckBox(self.optionWidget)
- self.gammaBox.setObjectName(u"gammaBox")
-
- self.gridLayout_2.addWidget(self.gammaBox, 2, 2, 1, 1)
-
- self.webpBox = QCheckBox(self.optionWidget)
- self.webpBox.setObjectName(u"webpBox")
-
- self.gridLayout_2.addWidget(self.webpBox, 12, 0, 1, 1)
-
- self.outputFolderWidget = QWidget(self.optionWidget)
- self.outputFolderWidget.setObjectName(u"outputFolderWidget")
- self.horizontalLayout_3 = QHBoxLayout(self.outputFolderWidget)
- self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
- self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
- self.defaultOutputFolderBox = QCheckBox(self.outputFolderWidget)
- self.defaultOutputFolderBox.setObjectName(u"defaultOutputFolderBox")
- sizePolicy.setHeightForWidth(self.defaultOutputFolderBox.sizePolicy().hasHeightForWidth())
- self.defaultOutputFolderBox.setSizePolicy(sizePolicy)
- self.defaultOutputFolderBox.setTristate(True)
-
- self.horizontalLayout_3.addWidget(self.defaultOutputFolderBox)
-
- self.defaultOutputFolderButton = QPushButton(self.outputFolderWidget)
- self.defaultOutputFolderButton.setObjectName(u"defaultOutputFolderButton")
- self.defaultOutputFolderButton.setMinimumSize(QSize(0, 30))
- icon5 = QIcon()
- icon5.addFile(u":/Other/icons/folder_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.defaultOutputFolderButton.setIcon(icon5)
-
- self.horizontalLayout_3.addWidget(self.defaultOutputFolderButton)
-
-
- self.gridLayout_2.addWidget(self.outputFolderWidget, 0, 2, 1, 1)
-
- self.webtoonBox = QCheckBox(self.optionWidget)
- self.webtoonBox.setObjectName(u"webtoonBox")
-
- self.gridLayout_2.addWidget(self.webtoonBox, 2, 0, 1, 1)
-
- self.rotateRightBox = QCheckBox(self.optionWidget)
- self.rotateRightBox.setObjectName(u"rotateRightBox")
-
- self.gridLayout_2.addWidget(self.rotateRightBox, 10, 1, 1, 1)
-
- self.legacyExtractBox = QCheckBox(self.optionWidget)
- self.legacyExtractBox.setObjectName(u"legacyExtractBox")
-
- self.gridLayout_2.addWidget(self.legacyExtractBox, 9, 0, 1, 1)
-
- self.disableProcessingBox = QCheckBox(self.optionWidget)
- self.disableProcessingBox.setObjectName(u"disableProcessingBox")
-
- self.gridLayout_2.addWidget(self.disableProcessingBox, 5, 2, 1, 1)
-
- self.smartCoverCropBox = QCheckBox(self.optionWidget)
- self.smartCoverCropBox.setObjectName(u"smartCoverCropBox")
-
- self.gridLayout_2.addWidget(self.smartCoverCropBox, 11, 1, 1, 1)
-
- self.borderBox = QCheckBox(self.optionWidget)
- self.borderBox.setObjectName(u"borderBox")
- self.borderBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.borderBox, 3, 0, 1, 1)
-
- self.titleEdit = QLineEdit(self.optionWidget)
- self.titleEdit.setObjectName(u"titleEdit")
- sizePolicy2.setHeightForWidth(self.titleEdit.sizePolicy().hasHeightForWidth())
- self.titleEdit.setSizePolicy(sizePolicy2)
- self.titleEdit.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
- self.titleEdit.setClearButtonEnabled(False)
-
- self.gridLayout_2.addWidget(self.titleEdit, 0, 0, 1, 1)
-
- self.fileFusionBox = QCheckBox(self.optionWidget)
- self.fileFusionBox.setObjectName(u"fileFusionBox")
-
- self.gridLayout_2.addWidget(self.fileFusionBox, 6, 0, 1, 1)
-
- self.qualityBox = QCheckBox(self.optionWidget)
- self.qualityBox.setObjectName(u"qualityBox")
- self.qualityBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.qualityBox, 1, 2, 1, 1)
-
- self.pngLegacyBox = QCheckBox(self.optionWidget)
- self.pngLegacyBox.setObjectName(u"pngLegacyBox")
- self.pngLegacyBox.setEnabled(False)
-
- self.gridLayout_2.addWidget(self.pngLegacyBox, 11, 0, 1, 1)
-
- self.croppingBox = QCheckBox(self.optionWidget)
- self.croppingBox.setObjectName(u"croppingBox")
- self.croppingBox.setTristate(True)
-
- self.gridLayout_2.addWidget(self.croppingBox, 4, 2, 1, 1)
-
- self.maximizeStrips = QCheckBox(self.optionWidget)
- self.maximizeStrips.setObjectName(u"maximizeStrips")
-
- self.gridLayout_2.addWidget(self.maximizeStrips, 4, 1, 1, 1)
-
- self.invertDirectionBox = QCheckBox(self.optionWidget)
- self.invertDirectionBox.setObjectName(u"invertDirectionBox")
-
- self.gridLayout_2.addWidget(self.invertDirectionBox, 13, 0, 1, 1)
-
- self.vertical4PanelBox = QCheckBox(self.optionWidget)
- self.vertical4PanelBox.setObjectName(u"vertical4PanelBox")
-
- self.gridLayout_2.addWidget(self.vertical4PanelBox, 13, 2, 1, 1)
-
-
- self.gridLayout.addWidget(self.optionWidget, 5, 0, 1, 2)
+ self.gridLayout.addWidget(self.croppingWidget, 9, 0, 1, 2)
self.buttonWidget = QWidget(self.centralWidget)
self.buttonWidget.setObjectName(u"buttonWidget")
- sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
- sizePolicy4.setHorizontalStretch(0)
- sizePolicy4.setVerticalStretch(0)
- sizePolicy4.setHeightForWidth(self.buttonWidget.sizePolicy().hasHeightForWidth())
- self.buttonWidget.setSizePolicy(sizePolicy4)
+ sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
+ sizePolicy1.setHorizontalStretch(0)
+ sizePolicy1.setVerticalStretch(0)
+ sizePolicy1.setHeightForWidth(self.buttonWidget.sizePolicy().hasHeightForWidth())
+ self.buttonWidget.setSizePolicy(sizePolicy1)
self.gridLayout_4 = QGridLayout(self.buttonWidget)
self.gridLayout_4.setObjectName(u"gridLayout_4")
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
self.convertButton = QPushButton(self.buttonWidget)
self.convertButton.setObjectName(u"convertButton")
self.convertButton.setMinimumSize(QSize(0, 30))
+ font = QFont()
+ font.setBold(True)
self.convertButton.setFont(font)
- icon6 = QIcon()
- icon6.addFile(u":/Other/icons/convert.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.convertButton.setIcon(icon6)
+ icon5 = QIcon()
+ icon5.addFile(u":/Other/icons/convert.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.convertButton.setIcon(icon5)
self.gridLayout_4.addWidget(self.convertButton, 1, 3, 1, 1)
self.clearButton = QPushButton(self.buttonWidget)
self.clearButton.setObjectName(u"clearButton")
self.clearButton.setMinimumSize(QSize(0, 30))
- icon7 = QIcon()
- icon7.addFile(u":/Other/icons/clear.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.clearButton.setIcon(icon7)
+ icon6 = QIcon()
+ icon6.addFile(u":/Other/icons/clear.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.clearButton.setIcon(icon6)
self.gridLayout_4.addWidget(self.clearButton, 0, 3, 1, 1)
@@ -511,20 +172,22 @@ class Ui_mainWindow(object):
self.fileButton = QPushButton(self.buttonWidget)
self.fileButton.setObjectName(u"fileButton")
self.fileButton.setMinimumSize(QSize(0, 30))
- icon8 = QIcon()
- icon8.addFile(u":/Other/icons/document_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.fileButton.setIcon(icon8)
+ icon7 = QIcon()
+ icon7.addFile(u":/Other/icons/document_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.fileButton.setIcon(icon7)
self.gridLayout_4.addWidget(self.fileButton, 0, 1, 1, 1)
self.directoryButton = QPushButton(self.buttonWidget)
self.directoryButton.setObjectName(u"directoryButton")
- sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
- sizePolicy5.setHorizontalStretch(0)
- sizePolicy5.setVerticalStretch(0)
- sizePolicy5.setHeightForWidth(self.directoryButton.sizePolicy().hasHeightForWidth())
- self.directoryButton.setSizePolicy(sizePolicy5)
- self.directoryButton.setIcon(icon5)
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.directoryButton.sizePolicy().hasHeightForWidth())
+ self.directoryButton.setSizePolicy(sizePolicy2)
+ icon8 = QIcon()
+ icon8.addFile(u":/Other/icons/folder_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.directoryButton.setIcon(icon8)
self.gridLayout_4.addWidget(self.directoryButton, 0, 4, 1, 1)
@@ -543,6 +206,15 @@ class Ui_mainWindow(object):
self.gridLayout.addWidget(self.buttonWidget, 3, 0, 1, 2)
+ self.progressBar = QProgressBar(self.centralWidget)
+ self.progressBar.setObjectName(u"progressBar")
+ self.progressBar.setMinimumSize(QSize(0, 30))
+ self.progressBar.setFont(font)
+ self.progressBar.setVisible(False)
+ self.progressBar.setAlignment(Qt.AlignmentFlag.AlignJustify|Qt.AlignmentFlag.AlignVCenter)
+
+ self.gridLayout.addWidget(self.progressBar, 1, 0, 1, 2)
+
self.gammaWidget = QWidget(self.centralWidget)
self.gammaWidget.setObjectName(u"gammaWidget")
self.gammaWidget.setVisible(False)
@@ -565,6 +237,260 @@ class Ui_mainWindow(object):
self.gridLayout.addWidget(self.gammaWidget, 7, 0, 1, 2)
+ self.optionWidget = QWidget(self.centralWidget)
+ self.optionWidget.setObjectName(u"optionWidget")
+ self.gridLayout_2 = QGridLayout(self.optionWidget)
+ self.gridLayout_2.setObjectName(u"gridLayout_2")
+ self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.rotateRightBox = QCheckBox(self.optionWidget)
+ self.rotateRightBox.setObjectName(u"rotateRightBox")
+
+ self.gridLayout_2.addWidget(self.rotateRightBox, 8, 1, 1, 1)
+
+ self.tempDirBox = QCheckBox(self.optionWidget)
+ self.tempDirBox.setObjectName(u"tempDirBox")
+
+ self.gridLayout_2.addWidget(self.tempDirBox, 9, 3, 1, 1)
+
+ self.deleteBox = QCheckBox(self.optionWidget)
+ self.deleteBox.setObjectName(u"deleteBox")
+
+ self.gridLayout_2.addWidget(self.deleteBox, 1, 3, 1, 1)
+
+ self.authorEdit = QLineEdit(self.optionWidget)
+ self.authorEdit.setObjectName(u"authorEdit")
+ sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+ sizePolicy3.setHorizontalStretch(0)
+ sizePolicy3.setVerticalStretch(0)
+ sizePolicy3.setHeightForWidth(self.authorEdit.sizePolicy().hasHeightForWidth())
+ self.authorEdit.setSizePolicy(sizePolicy3)
+ self.authorEdit.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
+ self.authorEdit.setClearButtonEnabled(False)
+
+ self.gridLayout_2.addWidget(self.authorEdit, 0, 1, 1, 1)
+
+ self.autocontrastBox = QCheckBox(self.optionWidget)
+ self.autocontrastBox.setObjectName(u"autocontrastBox")
+ self.autocontrastBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.autocontrastBox, 8, 2, 1, 1)
+
+ self.autoLevelBox = QCheckBox(self.optionWidget)
+ self.autoLevelBox.setObjectName(u"autoLevelBox")
+
+ self.gridLayout_2.addWidget(self.autoLevelBox, 7, 2, 1, 1)
+
+ self.outputFolderWidget = QWidget(self.optionWidget)
+ self.outputFolderWidget.setObjectName(u"outputFolderWidget")
+ self.horizontalLayout_3 = QHBoxLayout(self.outputFolderWidget)
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+ self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.defaultOutputFolderBox = QCheckBox(self.outputFolderWidget)
+ self.defaultOutputFolderBox.setObjectName(u"defaultOutputFolderBox")
+ sizePolicy.setHeightForWidth(self.defaultOutputFolderBox.sizePolicy().hasHeightForWidth())
+ self.defaultOutputFolderBox.setSizePolicy(sizePolicy)
+ self.defaultOutputFolderBox.setTristate(True)
+
+ self.horizontalLayout_3.addWidget(self.defaultOutputFolderBox)
+
+ self.defaultOutputFolderButton = QPushButton(self.outputFolderWidget)
+ self.defaultOutputFolderButton.setObjectName(u"defaultOutputFolderButton")
+ self.defaultOutputFolderButton.setMinimumSize(QSize(0, 30))
+ self.defaultOutputFolderButton.setIcon(icon8)
+
+ self.horizontalLayout_3.addWidget(self.defaultOutputFolderButton)
+
+
+ self.gridLayout_2.addWidget(self.outputFolderWidget, 0, 2, 1, 1)
+
+ self.vertical4PanelBox = QCheckBox(self.optionWidget)
+ self.vertical4PanelBox.setObjectName(u"vertical4PanelBox")
+
+ self.gridLayout_2.addWidget(self.vertical4PanelBox, 9, 2, 1, 1)
+
+ self.mozJpegBox = QCheckBox(self.optionWidget)
+ self.mozJpegBox.setObjectName(u"mozJpegBox")
+ self.mozJpegBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.mozJpegBox, 4, 0, 1, 1)
+
+ self.interPanelCropBox = QCheckBox(self.optionWidget)
+ self.interPanelCropBox.setObjectName(u"interPanelCropBox")
+ self.interPanelCropBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.interPanelCropBox, 5, 2, 1, 1)
+
+ self.forcePngRgbBox = QCheckBox(self.optionWidget)
+ self.forcePngRgbBox.setObjectName(u"forcePngRgbBox")
+ self.forcePngRgbBox.setEnabled(False)
+
+ self.gridLayout_2.addWidget(self.forcePngRgbBox, 8, 3, 1, 1)
+
+ self.noRotateBox = QCheckBox(self.optionWidget)
+ self.noRotateBox.setObjectName(u"noRotateBox")
+
+ self.gridLayout_2.addWidget(self.noRotateBox, 5, 1, 1, 1)
+
+ self.spreadShiftBox = QCheckBox(self.optionWidget)
+ self.spreadShiftBox.setObjectName(u"spreadShiftBox")
+
+ self.gridLayout_2.addWidget(self.spreadShiftBox, 5, 0, 1, 1)
+
+ self.rotateBox = QCheckBox(self.optionWidget)
+ self.rotateBox.setObjectName(u"rotateBox")
+ self.rotateBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.rotateBox, 1, 1, 1, 1)
+
+ self.pngLegacyBox = QCheckBox(self.optionWidget)
+ self.pngLegacyBox.setObjectName(u"pngLegacyBox")
+ self.pngLegacyBox.setEnabled(False)
+
+ self.gridLayout_2.addWidget(self.pngLegacyBox, 8, 0, 1, 1)
+
+ self.chunkSizeCheckBox = QCheckBox(self.optionWidget)
+ self.chunkSizeCheckBox.setObjectName(u"chunkSizeCheckBox")
+
+ self.gridLayout_2.addWidget(self.chunkSizeCheckBox, 5, 3, 1, 1)
+
+ self.upscaleBox = QCheckBox(self.optionWidget)
+ self.upscaleBox.setObjectName(u"upscaleBox")
+ self.upscaleBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.upscaleBox, 2, 1, 1, 1)
+
+ self.coverFillBox = QCheckBox(self.optionWidget)
+ self.coverFillBox.setObjectName(u"coverFillBox")
+
+ self.gridLayout_2.addWidget(self.coverFillBox, 7, 1, 1, 1)
+
+ self.onePageLandscapeBox = QCheckBox(self.optionWidget)
+ self.onePageLandscapeBox.setObjectName(u"onePageLandscapeBox")
+
+ self.gridLayout_2.addWidget(self.onePageLandscapeBox, 10, 1, 1, 1)
+
+ self.gammaBox = QCheckBox(self.optionWidget)
+ self.gammaBox.setObjectName(u"gammaBox")
+
+ self.gridLayout_2.addWidget(self.gammaBox, 2, 2, 1, 1)
+
+ self.rotateFirstBox = QCheckBox(self.optionWidget)
+ self.rotateFirstBox.setObjectName(u"rotateFirstBox")
+
+ self.gridLayout_2.addWidget(self.rotateFirstBox, 6, 1, 1, 1)
+
+ self.webtoonBox = QCheckBox(self.optionWidget)
+ self.webtoonBox.setObjectName(u"webtoonBox")
+
+ self.gridLayout_2.addWidget(self.webtoonBox, 2, 0, 1, 1)
+
+ self.outputSplit = QCheckBox(self.optionWidget)
+ self.outputSplit.setObjectName(u"outputSplit")
+
+ self.gridLayout_2.addWidget(self.outputSplit, 3, 1, 1, 1)
+
+ self.invertDirectionBox = QCheckBox(self.optionWidget)
+ self.invertDirectionBox.setObjectName(u"invertDirectionBox")
+
+ self.gridLayout_2.addWidget(self.invertDirectionBox, 10, 0, 1, 1)
+
+ self.noQuantizeBox = QCheckBox(self.optionWidget)
+ self.noQuantizeBox.setObjectName(u"noQuantizeBox")
+ self.noQuantizeBox.setEnabled(False)
+
+ self.gridLayout_2.addWidget(self.noQuantizeBox, 7, 3, 1, 1)
+
+ self.borderBox = QCheckBox(self.optionWidget)
+ self.borderBox.setObjectName(u"borderBox")
+ self.borderBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.borderBox, 3, 0, 1, 1)
+
+ self.smartCoverCropBox = QCheckBox(self.optionWidget)
+ self.smartCoverCropBox.setObjectName(u"smartCoverCropBox")
+
+ self.gridLayout_2.addWidget(self.smartCoverCropBox, 9, 1, 1, 1)
+
+ self.colorBox = QCheckBox(self.optionWidget)
+ self.colorBox.setObjectName(u"colorBox")
+
+ self.gridLayout_2.addWidget(self.colorBox, 3, 2, 1, 1)
+
+ self.jpegQualityBox = QCheckBox(self.optionWidget)
+ self.jpegQualityBox.setObjectName(u"jpegQualityBox")
+
+ self.gridLayout_2.addWidget(self.jpegQualityBox, 7, 0, 1, 1)
+
+ self.eraseRainbowBox = QCheckBox(self.optionWidget)
+ self.eraseRainbowBox.setObjectName(u"eraseRainbowBox")
+
+ self.gridLayout_2.addWidget(self.eraseRainbowBox, 6, 2, 1, 1)
+
+ self.qualityBox = QCheckBox(self.optionWidget)
+ self.qualityBox.setObjectName(u"qualityBox")
+ self.qualityBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.qualityBox, 1, 2, 1, 1)
+
+ self.mangaBox = QCheckBox(self.optionWidget)
+ self.mangaBox.setObjectName(u"mangaBox")
+
+ self.gridLayout_2.addWidget(self.mangaBox, 1, 0, 1, 1)
+
+ self.titleEdit = QLineEdit(self.optionWidget)
+ self.titleEdit.setObjectName(u"titleEdit")
+ sizePolicy3.setHeightForWidth(self.titleEdit.sizePolicy().hasHeightForWidth())
+ self.titleEdit.setSizePolicy(sizePolicy3)
+ self.titleEdit.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
+ self.titleEdit.setClearButtonEnabled(False)
+
+ self.gridLayout_2.addWidget(self.titleEdit, 0, 0, 1, 1)
+
+ self.webpBox = QCheckBox(self.optionWidget)
+ self.webpBox.setObjectName(u"webpBox")
+
+ self.gridLayout_2.addWidget(self.webpBox, 9, 0, 1, 1)
+
+ self.croppingBox = QCheckBox(self.optionWidget)
+ self.croppingBox.setObjectName(u"croppingBox")
+ self.croppingBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.croppingBox, 4, 2, 1, 1)
+
+ self.maximizeStrips = QCheckBox(self.optionWidget)
+ self.maximizeStrips.setObjectName(u"maximizeStrips")
+
+ self.gridLayout_2.addWidget(self.maximizeStrips, 4, 1, 1, 1)
+
+ self.disableProcessingBox = QCheckBox(self.optionWidget)
+ self.disableProcessingBox.setObjectName(u"disableProcessingBox")
+
+ self.gridLayout_2.addWidget(self.disableProcessingBox, 6, 3, 1, 1)
+
+ self.fileFusionBox = QCheckBox(self.optionWidget)
+ self.fileFusionBox.setObjectName(u"fileFusionBox")
+
+ self.gridLayout_2.addWidget(self.fileFusionBox, 6, 0, 1, 1)
+
+ self.pdfWidthBox = QCheckBox(self.optionWidget)
+ self.pdfWidthBox.setObjectName(u"pdfWidthBox")
+
+ self.gridLayout_2.addWidget(self.pdfWidthBox, 4, 3, 1, 1)
+
+ self.legacyExtractBox = QCheckBox(self.optionWidget)
+ self.legacyExtractBox.setObjectName(u"legacyExtractBox")
+
+ self.gridLayout_2.addWidget(self.legacyExtractBox, 3, 3, 1, 1)
+
+ self.metadataTitleBox = QCheckBox(self.optionWidget)
+ self.metadataTitleBox.setObjectName(u"metadataTitleBox")
+ self.metadataTitleBox.setTristate(True)
+
+ self.gridLayout_2.addWidget(self.metadataTitleBox, 2, 3, 1, 1)
+
+
+ self.gridLayout.addWidget(self.optionWidget, 5, 0, 1, 2)
+
self.customWidget = QWidget(self.centralWidget)
self.customWidget.setObjectName(u"customWidget")
self.customWidget.setVisible(False)
@@ -573,8 +499,11 @@ class Ui_mainWindow(object):
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
self.hLabel = QLabel(self.customWidget)
self.hLabel.setObjectName(u"hLabel")
- sizePolicy1.setHeightForWidth(self.hLabel.sizePolicy().hasHeightForWidth())
- self.hLabel.setSizePolicy(sizePolicy1)
+ sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Preferred)
+ sizePolicy4.setHorizontalStretch(0)
+ sizePolicy4.setVerticalStretch(0)
+ sizePolicy4.setHeightForWidth(self.hLabel.sizePolicy().hasHeightForWidth())
+ self.hLabel.setSizePolicy(sizePolicy4)
self.gridLayout_3.addWidget(self.hLabel, 0, 2, 1, 1)
@@ -586,8 +515,8 @@ class Ui_mainWindow(object):
self.wLabel = QLabel(self.customWidget)
self.wLabel.setObjectName(u"wLabel")
- sizePolicy1.setHeightForWidth(self.wLabel.sizePolicy().hasHeightForWidth())
- self.wLabel.setSizePolicy(sizePolicy1)
+ sizePolicy4.setHeightForWidth(self.wLabel.sizePolicy().hasHeightForWidth())
+ self.wLabel.setSizePolicy(sizePolicy4)
self.gridLayout_3.addWidget(self.wLabel, 0, 0, 1, 1)
@@ -600,6 +529,77 @@ class Ui_mainWindow(object):
self.gridLayout.addWidget(self.customWidget, 8, 0, 1, 2)
+ self.jpegQualityWidget = QWidget(self.centralWidget)
+ self.jpegQualityWidget.setObjectName(u"jpegQualityWidget")
+ sizePolicy4.setHeightForWidth(self.jpegQualityWidget.sizePolicy().hasHeightForWidth())
+ self.jpegQualityWidget.setSizePolicy(sizePolicy4)
+ self.jpegQualityWidget.setVisible(False)
+ self.horizontalLayout_12 = QHBoxLayout(self.jpegQualityWidget)
+ self.horizontalLayout_12.setObjectName(u"horizontalLayout_12")
+ self.horizontalLayout_12.setContentsMargins(0, 0, 0, 0)
+ self.jpegQualityLabel = QLabel(self.jpegQualityWidget)
+ self.jpegQualityLabel.setObjectName(u"jpegQualityLabel")
+
+ self.horizontalLayout_12.addWidget(self.jpegQualityLabel)
+
+ self.jpegQualitySpinBox = QSpinBox(self.jpegQualityWidget)
+ self.jpegQualitySpinBox.setObjectName(u"jpegQualitySpinBox")
+ self.jpegQualitySpinBox.setMaximum(95)
+ self.jpegQualitySpinBox.setSingleStep(5)
+ self.jpegQualitySpinBox.setValue(85)
+
+ self.horizontalLayout_12.addWidget(self.jpegQualitySpinBox)
+
+
+ self.gridLayout.addWidget(self.jpegQualityWidget, 10, 0, 1, 1)
+
+ self.jobList = QListWidget(self.centralWidget)
+ self.jobList.setObjectName(u"jobList")
+ self.jobList.setMinimumSize(QSize(0, 150))
+ self.jobList.setStyleSheet(u"")
+ self.jobList.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection)
+ self.jobList.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
+ self.jobList.setHorizontalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
+
+ self.gridLayout.addWidget(self.jobList, 2, 0, 1, 2)
+
+ self.chunkSizeWidget = QWidget(self.centralWidget)
+ self.chunkSizeWidget.setObjectName(u"chunkSizeWidget")
+ sizePolicy3.setHeightForWidth(self.chunkSizeWidget.sizePolicy().hasHeightForWidth())
+ self.chunkSizeWidget.setSizePolicy(sizePolicy3)
+ self.chunkSizeWidget.setVisible(False)
+ self.horizontalLayout_4 = QHBoxLayout(self.chunkSizeWidget)
+ self.horizontalLayout_4.setSpacing(0)
+ self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
+ self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
+ self.chunkSizeLabel = QLabel(self.chunkSizeWidget)
+ self.chunkSizeLabel.setObjectName(u"chunkSizeLabel")
+ sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred)
+ sizePolicy5.setHorizontalStretch(0)
+ sizePolicy5.setVerticalStretch(0)
+ sizePolicy5.setHeightForWidth(self.chunkSizeLabel.sizePolicy().hasHeightForWidth())
+ self.chunkSizeLabel.setSizePolicy(sizePolicy5)
+
+ self.horizontalLayout_4.addWidget(self.chunkSizeLabel)
+
+ self.chunkSizeBox = QSpinBox(self.chunkSizeWidget)
+ self.chunkSizeBox.setObjectName(u"chunkSizeBox")
+ self.chunkSizeBox.setMinimum(50)
+ self.chunkSizeBox.setMaximum(600)
+ self.chunkSizeBox.setValue(400)
+
+ self.horizontalLayout_4.addWidget(self.chunkSizeBox)
+
+ self.chunkSizeWarnLabel = QLabel(self.chunkSizeWidget)
+ self.chunkSizeWarnLabel.setObjectName(u"chunkSizeWarnLabel")
+ sizePolicy5.setHeightForWidth(self.chunkSizeWarnLabel.sizePolicy().hasHeightForWidth())
+ self.chunkSizeWarnLabel.setSizePolicy(sizePolicy5)
+
+ self.horizontalLayout_4.addWidget(self.chunkSizeWarnLabel)
+
+
+ self.gridLayout.addWidget(self.chunkSizeWidget, 6, 0, 1, 1)
+
mainWindow.setCentralWidget(self.centralWidget)
self.statusBar = QStatusBar(mainWindow)
self.statusBar.setObjectName(u"statusBar")
@@ -627,20 +627,9 @@ class Ui_mainWindow(object):
QWidget.setTabOrder(self.croppingBox, self.croppingPowerSlider)
QWidget.setTabOrder(self.croppingPowerSlider, self.preserveMarginBox)
QWidget.setTabOrder(self.preserveMarginBox, self.spreadShiftBox)
- QWidget.setTabOrder(self.spreadShiftBox, self.deleteBox)
- QWidget.setTabOrder(self.deleteBox, self.disableProcessingBox)
- QWidget.setTabOrder(self.disableProcessingBox, self.fileFusionBox)
- QWidget.setTabOrder(self.fileFusionBox, self.noRotateBox)
- QWidget.setTabOrder(self.noRotateBox, self.interPanelCropBox)
- QWidget.setTabOrder(self.interPanelCropBox, self.metadataTitleBox)
- QWidget.setTabOrder(self.metadataTitleBox, self.coverFillBox)
- QWidget.setTabOrder(self.coverFillBox, self.chunkSizeCheckBox)
- QWidget.setTabOrder(self.chunkSizeCheckBox, self.chunkSizeBox)
- QWidget.setTabOrder(self.chunkSizeBox, self.eraseRainbowBox)
- QWidget.setTabOrder(self.eraseRainbowBox, self.rotateFirstBox)
- QWidget.setTabOrder(self.rotateFirstBox, self.autoLevelBox)
- QWidget.setTabOrder(self.autoLevelBox, self.autocontrastBox)
- QWidget.setTabOrder(self.autocontrastBox, self.editorButton)
+ QWidget.setTabOrder(self.spreadShiftBox, self.fileFusionBox)
+ QWidget.setTabOrder(self.fileFusionBox, self.chunkSizeBox)
+ QWidget.setTabOrder(self.chunkSizeBox, self.editorButton)
QWidget.setTabOrder(self.editorButton, self.kofiButton)
QWidget.setTabOrder(self.kofiButton, self.wikiButton)
@@ -651,20 +640,6 @@ class Ui_mainWindow(object):
def retranslateUi(self, mainWindow):
mainWindow.setWindowTitle(QCoreApplication.translate("mainWindow", u"Kindle Comic Converter", None))
-#if QT_CONFIG(tooltip)
- self.preserveMarginLabel.setToolTip(QCoreApplication.translate("mainWindow", u"After calculating the cropping boundaries, "back up" a specified percentage amount.
", None))
-#endif // QT_CONFIG(tooltip)
- self.preserveMarginLabel.setText(QCoreApplication.translate("mainWindow", u"Preserve Margin %", None))
- self.croppingPowerLabel.setText(QCoreApplication.translate("mainWindow", u"Cropping power:", None))
- self.jpegQualityLabel.setText(QCoreApplication.translate("mainWindow", u"JPEG Quality:", None))
-#if QT_CONFIG(tooltip)
- self.chunkSizeWidget.setToolTip(QCoreApplication.translate("mainWindow", u"
Warning: chunk size greater than default may cause
performance/battery issues, especially on older devices.
", None))
-#endif // QT_CONFIG(tooltip)
- self.chunkSizeLabel.setText(QCoreApplication.translate("mainWindow", u"Chunk size MB:", None))
- self.chunkSizeWarnLabel.setText(QCoreApplication.translate("mainWindow", u"Greater than default may cause performance issues on older ereaders.", None))
-#if QT_CONFIG(tooltip)
- self.jobList.setToolTip(QCoreApplication.translate("mainWindow", u"Double click on source to open it in metadata editor.
", None))
-#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(tooltip)
self.editorButton.setToolTip(QCoreApplication.translate("mainWindow", u"Shift+Click to edit directory.
", None))
#endif // QT_CONFIG(tooltip)
@@ -675,186 +650,10 @@ class Ui_mainWindow(object):
self.humbleButton.setText(QCoreApplication.translate("mainWindow", u"Humble Bundle Referral", None))
self.discordButton.setText(QCoreApplication.translate("mainWindow", u"Discord", None))
#if QT_CONFIG(tooltip)
- self.tempDirBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Main Drive
Use dedicated temporary directory on main OS drive.
Checked - Source File Drive
Create temporary file directory on source file drive.
", None))
+ self.preserveMarginLabel.setToolTip(QCoreApplication.translate("mainWindow", u"After calculating the cropping boundaries, "back up" a specified percentage amount.
", None))
#endif // QT_CONFIG(tooltip)
- self.tempDirBox.setText(QCoreApplication.translate("mainWindow", u"Temp Directory", None))
-#if QT_CONFIG(tooltip)
- self.deleteBox.setToolTip(QCoreApplication.translate("mainWindow", u"Delete input file(s) or directory. It's not recoverable!", None))
-#endif // QT_CONFIG(tooltip)
- self.deleteBox.setText(QCoreApplication.translate("mainWindow", u"Delete input", None))
-#if QT_CONFIG(tooltip)
- self.mozJpegBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - JPEG
Use JPEG files
Indeterminate - force PNG
Create PNG files instead JPEG for black and white images
Checked - mozJpeg
10-20% smaller JPEG file, with the same image quality, but processing time multiplied by 2
", None))
-#endif // QT_CONFIG(tooltip)
- self.mozJpegBox.setText(QCoreApplication.translate("mainWindow", u"JPEG/PNG/mozJpeg", None))
-#if QT_CONFIG(tooltip)
- self.mangaBox.setToolTip(QCoreApplication.translate("mainWindow", u"Enable right-to-left reading.
", None))
-#endif // QT_CONFIG(tooltip)
- self.mangaBox.setText(QCoreApplication.translate("mainWindow", u"Right-to-left (manga)", None))
-#if QT_CONFIG(tooltip)
- self.rotateBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Split
Double page spreads will be cut into two separate pages.
Indeterminate - Split and rotate
Double page spreads will be displayed twice. First split and then rotated.
Checked - Rotate
Double page spreads will be rotated.
", None))
-#endif // QT_CONFIG(tooltip)
- self.rotateBox.setText(QCoreApplication.translate("mainWindow", u"Spread splitter", None))
-#if QT_CONFIG(tooltip)
- self.coverFillBox.setToolTip(QCoreApplication.translate("mainWindow", u"Resize cover to exact device resolution by center-cropping to aspect ratio first.\n"
-"May crop top/bottom or left/right depending on source aspect ratio. Not implemented for Kindle Scribe.", None))
-#endif // QT_CONFIG(tooltip)
- self.coverFillBox.setText(QCoreApplication.translate("mainWindow", u"Cover Fill", None))
-#if QT_CONFIG(tooltip)
- self.metadataTitleBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Don't use metadata Title
Write default title.
Indeterminate - Add metadata Title to the default schema
Write default title with Title from ComicInfo.xml or other embedded metadata.
Checked - Use metadata Title only
Write Title from ComicInfo.xml or other embedded metadata.
", None))
-#endif // QT_CONFIG(tooltip)
- self.metadataTitleBox.setText(QCoreApplication.translate("mainWindow", u"Metadata Title", None))
-#if QT_CONFIG(tooltip)
- self.noQuantizeBox.setToolTip(QCoreApplication.translate("mainWindow", u"Don't quantize PNG images to 16 colors (4 bit)\n"
-"\n"
-"This will double file size but preserve all 256 colors (8 bit).\n"
-"\n"
-"Eink only has 16 shades of gray so you probably don't want this.", None))
-#endif // QT_CONFIG(tooltip)
- self.noQuantizeBox.setText(QCoreApplication.translate("mainWindow", u"No Quantize", None))
-#if QT_CONFIG(tooltip)
- self.jpegQualityBox.setToolTip(QCoreApplication.translate("mainWindow", u"The JPEG quality, on a scale from 0 (worst) to 95 (best). \n"
-"\n"
-"Default is 85 for most devices besides Kindle Scribe and Colorsoft, which are 90.\n"
-"\n"
-"Higher values are larger and higher quality, and may resolve blank page issues.", None))
-#endif // QT_CONFIG(tooltip)
- self.jpegQualityBox.setText(QCoreApplication.translate("mainWindow", u"Custom JPEG Quality", None))
-#if QT_CONFIG(tooltip)
- self.forcePngRgbBox.setToolTip(QCoreApplication.translate("mainWindow", u"Force full color images to be saved in lossless PNG format, dramatically increases the filesize.", None))
-#endif // QT_CONFIG(tooltip)
- self.forcePngRgbBox.setText(QCoreApplication.translate("mainWindow", u"Force PNG RGB", None))
-#if QT_CONFIG(tooltip)
- self.rotateFirstBox.setToolTip(QCoreApplication.translate("mainWindow", u"When the spread splitter option is partially checked,
Unchecked - Rotate Last
Put the rotated 2 page spread after the split spreads.
Checked - Rotate First
Put the rotated 2 page spread before the split spreads.
", None))
-#endif // QT_CONFIG(tooltip)
- self.rotateFirstBox.setText(QCoreApplication.translate("mainWindow", u"Rotate First", None))
-#if QT_CONFIG(tooltip)
- self.colorBox.setToolTip(QCoreApplication.translate("mainWindow", u"Disable conversion to grayscale.
", None))
-#endif // QT_CONFIG(tooltip)
- self.colorBox.setText(QCoreApplication.translate("mainWindow", u"Color mode", None))
-#if QT_CONFIG(tooltip)
- self.interPanelCropBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Disabled
Disabled
Indeterminate - Horizontal
Crop empty horizontal lines.
Checked - Both
Crop empty horizontal and vertical lines.
", None))
-#endif // QT_CONFIG(tooltip)
- self.interPanelCropBox.setText(QCoreApplication.translate("mainWindow", u"Inter-panel crop", None))
-#if QT_CONFIG(tooltip)
- self.eraseRainbowBox.setToolTip(QCoreApplication.translate("mainWindow", u"Erase rainbow effect on color eink screen by attenuating interfering frequencies", None))
-#endif // QT_CONFIG(tooltip)
- self.eraseRainbowBox.setText(QCoreApplication.translate("mainWindow", u"Rainbow eraser", None))
-#if QT_CONFIG(tooltip)
- self.outputSplit.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Automatic mode
The output will be split automatically.
Checked - Volume mode
Every subdirectory will be considered as a separate volume.
", None))
-#endif // QT_CONFIG(tooltip)
- self.outputSplit.setText(QCoreApplication.translate("mainWindow", u"Output split", None))
-#if QT_CONFIG(tooltip)
- self.onePageLandscapeBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - 2 page landscape
2 viewports for left and right pages
Checked - 1 page landscape
A single centered viewport for 1 page
", None))
-#endif // QT_CONFIG(tooltip)
- self.onePageLandscapeBox.setText(QCoreApplication.translate("mainWindow", u"1 Page Landscape", None))
-#if QT_CONFIG(tooltip)
- self.pdfWidthBox.setToolTip(QCoreApplication.translate("mainWindow", u"Render vector PDFs to device width instead of height.\n"
-"\n"
-"Useful if you plan to crop a little off the top and bottom to fill screen.", None))
-#endif // QT_CONFIG(tooltip)
- self.pdfWidthBox.setText(QCoreApplication.translate("mainWindow", u"PDF Width Render", None))
-#if QT_CONFIG(tooltip)
- self.chunkSizeCheckBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked
Maximal output file size is 100 MB for Webtoon, 400 MB for others before split occurs.
Checked
Output file size specified in "Chunk size MB" before split occurs.
", None))
-#endif // QT_CONFIG(tooltip)
- self.chunkSizeCheckBox.setText(QCoreApplication.translate("mainWindow", u"Chunk size", None))
-#if QT_CONFIG(tooltip)
- self.autocontrastBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - BW only
Only autocontrast bw pages. Ignored for pages where near blacks or whites don't exist.
Indeterminate - Disabled
Disable autocontrast
Checked - BW and Color
BW and color images will be autocontrasted. Ignored for pages where near blacks or whites don't exist.
", None))
-#endif // QT_CONFIG(tooltip)
- self.autocontrastBox.setText(QCoreApplication.translate("mainWindow", u"Custom Autocontrast", None))
-#if QT_CONFIG(tooltip)
- self.noRotateBox.setToolTip(QCoreApplication.translate("mainWindow", u"Do not rotate double page spreads in spread splitter option.", None))
-#endif // QT_CONFIG(tooltip)
- self.noRotateBox.setText(QCoreApplication.translate("mainWindow", u"No rotate", None))
-#if QT_CONFIG(tooltip)
- self.authorEdit.setToolTip(QCoreApplication.translate("mainWindow", u"Default Author is KCC", None))
-#endif // QT_CONFIG(tooltip)
- self.authorEdit.setPlaceholderText(QCoreApplication.translate("mainWindow", u"Default Author", None))
-#if QT_CONFIG(tooltip)
- self.spreadShiftBox.setToolTip(QCoreApplication.translate("mainWindow", u"Shift first page to opposite side in landscape for two page spread alignment", None))
-#endif // QT_CONFIG(tooltip)
- self.spreadShiftBox.setText(QCoreApplication.translate("mainWindow", u"Spread shift", None))
-#if QT_CONFIG(tooltip)
- self.autoLevelBox.setToolTip(QCoreApplication.translate("mainWindow", u"By default, KCC maps the darkest pixel value to pure black (the black point.)
Extreme black point sets the black point to be the most common dark pixel value.
Useful when text is black but artwork is gray.
", None))
-#endif // QT_CONFIG(tooltip)
- self.autoLevelBox.setText(QCoreApplication.translate("mainWindow", u"Extreme Black Point", None))
-#if QT_CONFIG(tooltip)
- self.upscaleBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Nothing
Images smaller than device resolution will not be resized.
Indeterminate - Stretching
Images smaller than device resolution will be resized. Aspect ratio will be not preserved.
Checked - Upscaling
Images smaller than device resolution will be resized. Aspect ratio will be preserved.
", None))
-#endif // QT_CONFIG(tooltip)
- self.upscaleBox.setText(QCoreApplication.translate("mainWindow", u"Stretch/Upscale", None))
-#if QT_CONFIG(tooltip)
- self.gammaBox.setToolTip(QCoreApplication.translate("mainWindow", u"Set a custom gamma correction.
1.0 is default (disabled).
< 1.0 makes the image brighter.
> 1.0 makes the image darker.
1.8 was the default in KCC 9.1.0 and earlier.
Use if you want to make midtones darker.
", None))
-#endif // QT_CONFIG(tooltip)
- self.gammaBox.setText(QCoreApplication.translate("mainWindow", u"Custom gamma", None))
-#if QT_CONFIG(tooltip)
- self.webpBox.setToolTip(QCoreApplication.translate("mainWindow", u"Replace JPG with lossy WebP and PNG with lossless WebP. This includes the JPG Quality.\n"
-"\n"
-"Ignored for Kindle EPUB/MOBI and all PDF.", None))
-#endif // QT_CONFIG(tooltip)
- self.webpBox.setText(QCoreApplication.translate("mainWindow", u"WebP (experimental)", None))
-#if QT_CONFIG(tooltip)
- self.defaultOutputFolderBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - next to source
Place output files next to source files
Indeterminate - folder next to source
Place output files in a folder next to source files
Checked - Custom
Place output files in custom directory specified by right button
", None))
-#endif // QT_CONFIG(tooltip)
- self.defaultOutputFolderBox.setText(QCoreApplication.translate("mainWindow", u"Output Folder", None))
-#if QT_CONFIG(tooltip)
- self.defaultOutputFolderButton.setToolTip(QCoreApplication.translate("mainWindow", u"Use this to select the default output directory.
", None))
-#endif // QT_CONFIG(tooltip)
- self.defaultOutputFolderButton.setText("")
-#if QT_CONFIG(tooltip)
- self.webtoonBox.setToolTip(QCoreApplication.translate("mainWindow", u"Enable special parsing mode for Korean Webtoons.
", None))
-#endif // QT_CONFIG(tooltip)
- self.webtoonBox.setText(QCoreApplication.translate("mainWindow", u"Webtoon mode", None))
-#if QT_CONFIG(tooltip)
- self.rotateRightBox.setToolTip(QCoreApplication.translate("mainWindow", u"Rotate 2 page spreads in opposite direction than normal.", None))
-#endif // QT_CONFIG(tooltip)
- self.rotateRightBox.setText(QCoreApplication.translate("mainWindow", u"Rotate Right", None))
-#if QT_CONFIG(tooltip)
- self.legacyExtractBox.setToolTip(QCoreApplication.translate("mainWindow", u"Use the PDF/EPUB image extraction method from older KCC versions.
Use if standard extraction fails for whatever reason.
", None))
-#endif // QT_CONFIG(tooltip)
- self.legacyExtractBox.setText(QCoreApplication.translate("mainWindow", u"Legacy Extract", None))
-#if QT_CONFIG(tooltip)
- self.disableProcessingBox.setToolTip(QCoreApplication.translate("mainWindow", u"Do not process any image, ignore profile and processing options.
", None))
-#endif // QT_CONFIG(tooltip)
- self.disableProcessingBox.setText(QCoreApplication.translate("mainWindow", u"Disable processing", None))
-#if QT_CONFIG(tooltip)
- self.smartCoverCropBox.setToolTip(QCoreApplication.translate("mainWindow", u"Attempt to crop main cover from wide image.
", None))
-#endif // QT_CONFIG(tooltip)
- self.smartCoverCropBox.setText(QCoreApplication.translate("mainWindow", u"Smart Cover Crop", None))
-#if QT_CONFIG(tooltip)
- self.borderBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Autodetection
The color of margins fill will be detected automatically.
Indeterminate - White
Margins will be untouched.
Checked - Black
Margins will be filled with black color.
", None))
-#endif // QT_CONFIG(tooltip)
- self.borderBox.setText(QCoreApplication.translate("mainWindow", u"W/B margins", None))
-#if QT_CONFIG(tooltip)
- self.titleEdit.setToolTip(QCoreApplication.translate("mainWindow", u"Default Title
", None))
-#endif // QT_CONFIG(tooltip)
- self.titleEdit.setPlaceholderText(QCoreApplication.translate("mainWindow", u"Default Title", None))
-#if QT_CONFIG(tooltip)
- self.fileFusionBox.setToolTip(QCoreApplication.translate("mainWindow", u"Combines all selected files into a single file. (Helpful for combining chapters into volumes.)
", None))
-#endif // QT_CONFIG(tooltip)
- self.fileFusionBox.setText(QCoreApplication.translate("mainWindow", u"File Fusion", None))
-#if QT_CONFIG(tooltip)
- self.qualityBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - 4 panels
Zoom each corner separately.
Indeterminate - 2 panels
Zoom only the top and bottom of the page.
Checked - 4 high-quality panels
Zoom each corner separately. Try to increase the quality of magnification. Check wiki for more details.
", None))
-#endif // QT_CONFIG(tooltip)
- self.qualityBox.setText(QCoreApplication.translate("mainWindow", u"Panel View 4/2/HQ", None))
-#if QT_CONFIG(tooltip)
- self.pngLegacyBox.setToolTip(QCoreApplication.translate("mainWindow", u"Use a more compatible 8 bit PNG instead of 4 bit.", None))
-#endif // QT_CONFIG(tooltip)
- self.pngLegacyBox.setText(QCoreApplication.translate("mainWindow", u"PNG Legacy Mode", None))
-#if QT_CONFIG(tooltip)
- self.croppingBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Disabled
Disabled
Indeterminate - Margins
Margins
Checked - Margins + page numbers
Margins +page numbers
", None))
-#endif // QT_CONFIG(tooltip)
- self.croppingBox.setText(QCoreApplication.translate("mainWindow", u"Cropping mode", None))
-#if QT_CONFIG(tooltip)
- self.maximizeStrips.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - 1x4
Keep format 1x4 panels strips.
Checked - 2x2
Turn 1x4 strips to 2x2 to maximize screen usage.
", None))
-#endif // QT_CONFIG(tooltip)
- self.maximizeStrips.setText(QCoreApplication.translate("mainWindow", u"1x4 to 2x2 strips", None))
-#if QT_CONFIG(tooltip)
- self.invertDirectionBox.setToolTip(QCoreApplication.translate("mainWindow", u"Invert the page turn direction.
Usually used with right to left manga but you want to page turn left to right. Spread splitting would still be right to left in this case.
Will break various features like landscape mode order.
", None))
-#endif // QT_CONFIG(tooltip)
- self.invertDirectionBox.setText(QCoreApplication.translate("mainWindow", u"Invert Direction", None))
-#if QT_CONFIG(tooltip)
- self.vertical4PanelBox.setToolTip(QCoreApplication.translate("mainWindow", u"In virtual panel mode:
Unchecked - Horizontal
First two panels are the top panels.
Checked - Vertical
First two panels are the side panels.
", None))
-#endif // QT_CONFIG(tooltip)
- self.vertical4PanelBox.setText(QCoreApplication.translate("mainWindow", u"Vertical 4 Panel", None))
+ self.preserveMarginLabel.setText(QCoreApplication.translate("mainWindow", u"Preserve Margin %", None))
+ self.croppingPowerLabel.setText(QCoreApplication.translate("mainWindow", u"Cropping power:", None))
#if QT_CONFIG(tooltip)
self.convertButton.setToolTip(QCoreApplication.translate("mainWindow", u"Shift+Click to select the output directory for this list.
", None))
#endif // QT_CONFIG(tooltip)
@@ -875,6 +674,187 @@ class Ui_mainWindow(object):
self.formatBox.setToolTip(QCoreApplication.translate("mainWindow", u"Output format.
", None))
#endif // QT_CONFIG(tooltip)
self.gammaLabel.setText(QCoreApplication.translate("mainWindow", u"Gamma: Auto", None))
+#if QT_CONFIG(tooltip)
+ self.rotateRightBox.setToolTip(QCoreApplication.translate("mainWindow", u"Rotate 2 page spreads in opposite direction than normal.", None))
+#endif // QT_CONFIG(tooltip)
+ self.rotateRightBox.setText(QCoreApplication.translate("mainWindow", u"Rotate Right", None))
+#if QT_CONFIG(tooltip)
+ self.tempDirBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Main Drive
Use dedicated temporary directory on main OS drive.
Checked - Source File Drive
Create temporary file directory on source file drive.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.tempDirBox.setText(QCoreApplication.translate("mainWindow", u"Temp Directory", None))
+#if QT_CONFIG(tooltip)
+ self.deleteBox.setToolTip(QCoreApplication.translate("mainWindow", u"Delete input file(s) or directory. It's not recoverable!", None))
+#endif // QT_CONFIG(tooltip)
+ self.deleteBox.setText(QCoreApplication.translate("mainWindow", u"Delete input", None))
+#if QT_CONFIG(tooltip)
+ self.authorEdit.setToolTip(QCoreApplication.translate("mainWindow", u"Default Author is KCC", None))
+#endif // QT_CONFIG(tooltip)
+ self.authorEdit.setPlaceholderText(QCoreApplication.translate("mainWindow", u"Default Author", None))
+#if QT_CONFIG(tooltip)
+ self.autocontrastBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - BW only
Only autocontrast bw pages. Ignored for pages where near blacks or whites don't exist.
Indeterminate - Disabled
Disable autocontrast
Checked - BW and Color
BW and color images will be autocontrasted. Ignored for pages where near blacks or whites don't exist.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.autocontrastBox.setText(QCoreApplication.translate("mainWindow", u"Custom Autocontrast", None))
+#if QT_CONFIG(tooltip)
+ self.autoLevelBox.setToolTip(QCoreApplication.translate("mainWindow", u"By default, KCC maps the darkest pixel value to pure black (the black point.)
Extreme black point sets the black point to be the most common dark pixel value.
Useful when text is black but artwork is gray.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.autoLevelBox.setText(QCoreApplication.translate("mainWindow", u"Extreme Black Point", None))
+#if QT_CONFIG(tooltip)
+ self.defaultOutputFolderBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - next to source
Place output files next to source files
Indeterminate - folder next to source
Place output files in a folder next to source files
Checked - Custom
Place output files in custom directory specified by right button
", None))
+#endif // QT_CONFIG(tooltip)
+ self.defaultOutputFolderBox.setText(QCoreApplication.translate("mainWindow", u"Output Folder", None))
+#if QT_CONFIG(tooltip)
+ self.defaultOutputFolderButton.setToolTip(QCoreApplication.translate("mainWindow", u"Use this to select the default output directory.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.defaultOutputFolderButton.setText("")
+#if QT_CONFIG(tooltip)
+ self.vertical4PanelBox.setToolTip(QCoreApplication.translate("mainWindow", u"In virtual panel mode:
Unchecked - Horizontal
First two panels are the top panels.
Checked - Vertical
First two panels are the side panels.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.vertical4PanelBox.setText(QCoreApplication.translate("mainWindow", u"Vertical 4 Panel", None))
+#if QT_CONFIG(tooltip)
+ self.mozJpegBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - JPEG
Use JPEG files
Indeterminate - force PNG
Create PNG files instead JPEG for black and white images
Checked - mozJpeg
10-20% smaller JPEG file, with the same image quality, but processing time multiplied by 2
", None))
+#endif // QT_CONFIG(tooltip)
+ self.mozJpegBox.setText(QCoreApplication.translate("mainWindow", u"JPEG/PNG/mozJpeg", None))
+#if QT_CONFIG(tooltip)
+ self.interPanelCropBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Disabled
Disabled
Indeterminate - Horizontal
Crop empty horizontal lines.
Checked - Both
Crop empty horizontal and vertical lines.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.interPanelCropBox.setText(QCoreApplication.translate("mainWindow", u"Inter-panel crop", None))
+#if QT_CONFIG(tooltip)
+ self.forcePngRgbBox.setToolTip(QCoreApplication.translate("mainWindow", u"Force full color images to be saved in lossless PNG format, dramatically increases the filesize.", None))
+#endif // QT_CONFIG(tooltip)
+ self.forcePngRgbBox.setText(QCoreApplication.translate("mainWindow", u"Force PNG RGB", None))
+#if QT_CONFIG(tooltip)
+ self.noRotateBox.setToolTip(QCoreApplication.translate("mainWindow", u"Do not rotate double page spreads in spread splitter option.", None))
+#endif // QT_CONFIG(tooltip)
+ self.noRotateBox.setText(QCoreApplication.translate("mainWindow", u"No rotate", None))
+#if QT_CONFIG(tooltip)
+ self.spreadShiftBox.setToolTip(QCoreApplication.translate("mainWindow", u"Shift first page to opposite side in landscape for two page spread alignment", None))
+#endif // QT_CONFIG(tooltip)
+ self.spreadShiftBox.setText(QCoreApplication.translate("mainWindow", u"Spread shift", None))
+#if QT_CONFIG(tooltip)
+ self.rotateBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Split
Double page spreads will be cut into two separate pages.
Indeterminate - Split and rotate
Double page spreads will be displayed twice. First split and then rotated.
Checked - Rotate
Double page spreads will be rotated.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.rotateBox.setText(QCoreApplication.translate("mainWindow", u"Spread splitter", None))
+#if QT_CONFIG(tooltip)
+ self.pngLegacyBox.setToolTip(QCoreApplication.translate("mainWindow", u"Use a more compatible 8 bit PNG instead of 4 bit.", None))
+#endif // QT_CONFIG(tooltip)
+ self.pngLegacyBox.setText(QCoreApplication.translate("mainWindow", u"PNG Legacy Mode", None))
+#if QT_CONFIG(tooltip)
+ self.chunkSizeCheckBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked
Maximal output file size is 100 MB for Webtoon, 400 MB for others before split occurs.
Checked
Output file size specified in "Chunk size MB" before split occurs.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.chunkSizeCheckBox.setText(QCoreApplication.translate("mainWindow", u"Chunk size", None))
+#if QT_CONFIG(tooltip)
+ self.upscaleBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Nothing
Images smaller than device resolution will not be resized.
Indeterminate - Stretching
Images smaller than device resolution will be resized. Aspect ratio will be not preserved.
Checked - Upscaling
Images smaller than device resolution will be resized. Aspect ratio will be preserved.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.upscaleBox.setText(QCoreApplication.translate("mainWindow", u"Stretch/Upscale", None))
+#if QT_CONFIG(tooltip)
+ self.coverFillBox.setToolTip(QCoreApplication.translate("mainWindow", u"Resize cover to exact device resolution by center-cropping to aspect ratio first.\n"
+"May crop top/bottom or left/right depending on source aspect ratio. Not implemented for Kindle Scribe.", None))
+#endif // QT_CONFIG(tooltip)
+ self.coverFillBox.setText(QCoreApplication.translate("mainWindow", u"Cover Fill", None))
+#if QT_CONFIG(tooltip)
+ self.onePageLandscapeBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - 2 page landscape
2 viewports for left and right pages
Checked - 1 page landscape
A single centered viewport for 1 page
", None))
+#endif // QT_CONFIG(tooltip)
+ self.onePageLandscapeBox.setText(QCoreApplication.translate("mainWindow", u"1 Page Landscape", None))
+#if QT_CONFIG(tooltip)
+ self.gammaBox.setToolTip(QCoreApplication.translate("mainWindow", u"Set a custom gamma correction.
1.0 is default (disabled).
< 1.0 makes the image brighter.
> 1.0 makes the image darker.
1.8 was the default in KCC 9.1.0 and earlier.
Use if you want to make midtones darker.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.gammaBox.setText(QCoreApplication.translate("mainWindow", u"Custom gamma", None))
+#if QT_CONFIG(tooltip)
+ self.rotateFirstBox.setToolTip(QCoreApplication.translate("mainWindow", u"When the spread splitter option is partially checked,
Unchecked - Rotate Last
Put the rotated 2 page spread after the split spreads.
Checked - Rotate First
Put the rotated 2 page spread before the split spreads.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.rotateFirstBox.setText(QCoreApplication.translate("mainWindow", u"Rotate First", None))
+#if QT_CONFIG(tooltip)
+ self.webtoonBox.setToolTip(QCoreApplication.translate("mainWindow", u"Enable special parsing mode for Korean Webtoons.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.webtoonBox.setText(QCoreApplication.translate("mainWindow", u"Webtoon mode", None))
+#if QT_CONFIG(tooltip)
+ self.outputSplit.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Automatic mode
The output will be split automatically.
Checked - Volume mode
Every subdirectory will be considered as a separate volume.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.outputSplit.setText(QCoreApplication.translate("mainWindow", u"Output split", None))
+#if QT_CONFIG(tooltip)
+ self.invertDirectionBox.setToolTip(QCoreApplication.translate("mainWindow", u"Invert the page turn direction.
Usually used with right to left manga but you want to page turn left to right. Spread splitting would still be right to left in this case.
Will break various features like landscape mode order.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.invertDirectionBox.setText(QCoreApplication.translate("mainWindow", u"Invert Direction", None))
+#if QT_CONFIG(tooltip)
+ self.noQuantizeBox.setToolTip(QCoreApplication.translate("mainWindow", u"Don't quantize PNG images to 16 colors (4 bit)\n"
+"\n"
+"This will double file size but preserve all 256 colors (8 bit).\n"
+"\n"
+"Eink only has 16 shades of gray so you probably don't want this.", None))
+#endif // QT_CONFIG(tooltip)
+ self.noQuantizeBox.setText(QCoreApplication.translate("mainWindow", u"No Quantize", None))
+#if QT_CONFIG(tooltip)
+ self.borderBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Autodetection
The color of margins fill will be detected automatically.
Indeterminate - White
Margins will be untouched.
Checked - Black
Margins will be filled with black color.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.borderBox.setText(QCoreApplication.translate("mainWindow", u"W/B margins", None))
+#if QT_CONFIG(tooltip)
+ self.smartCoverCropBox.setToolTip(QCoreApplication.translate("mainWindow", u"Attempt to crop main cover from wide image.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.smartCoverCropBox.setText(QCoreApplication.translate("mainWindow", u"Smart Cover Crop", None))
+#if QT_CONFIG(tooltip)
+ self.colorBox.setToolTip(QCoreApplication.translate("mainWindow", u"Disable conversion to grayscale.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.colorBox.setText(QCoreApplication.translate("mainWindow", u"Color mode", None))
+#if QT_CONFIG(tooltip)
+ self.jpegQualityBox.setToolTip(QCoreApplication.translate("mainWindow", u"The JPEG quality, on a scale from 0 (worst) to 95 (best). \n"
+"\n"
+"Default is 85 for most devices besides Kindle Scribe and Colorsoft, which are 90.\n"
+"\n"
+"Higher values are larger and higher quality, and may resolve blank page issues.", None))
+#endif // QT_CONFIG(tooltip)
+ self.jpegQualityBox.setText(QCoreApplication.translate("mainWindow", u"Custom JPEG Quality", None))
+#if QT_CONFIG(tooltip)
+ self.eraseRainbowBox.setToolTip(QCoreApplication.translate("mainWindow", u"Erase rainbow effect on color eink screen by attenuating interfering frequencies", None))
+#endif // QT_CONFIG(tooltip)
+ self.eraseRainbowBox.setText(QCoreApplication.translate("mainWindow", u"Rainbow eraser", None))
+#if QT_CONFIG(tooltip)
+ self.qualityBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - 4 panels
Zoom each corner separately.
Indeterminate - 2 panels
Zoom only the top and bottom of the page.
Checked - 4 high-quality panels
Zoom each corner separately. Try to increase the quality of magnification. Check wiki for more details.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.qualityBox.setText(QCoreApplication.translate("mainWindow", u"Panel View 4/2/HQ", None))
+#if QT_CONFIG(tooltip)
+ self.mangaBox.setToolTip(QCoreApplication.translate("mainWindow", u"Enable right-to-left reading.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.mangaBox.setText(QCoreApplication.translate("mainWindow", u"Right-to-left (manga)", None))
+#if QT_CONFIG(tooltip)
+ self.titleEdit.setToolTip(QCoreApplication.translate("mainWindow", u"Default Title
", None))
+#endif // QT_CONFIG(tooltip)
+ self.titleEdit.setPlaceholderText(QCoreApplication.translate("mainWindow", u"Default Title", None))
+#if QT_CONFIG(tooltip)
+ self.webpBox.setToolTip(QCoreApplication.translate("mainWindow", u"Replace JPG with lossy WebP and PNG with lossless WebP. This includes the JPG Quality.\n"
+"\n"
+"Ignored for Kindle EPUB/MOBI and all PDF.", None))
+#endif // QT_CONFIG(tooltip)
+ self.webpBox.setText(QCoreApplication.translate("mainWindow", u"WebP (experimental)", None))
+#if QT_CONFIG(tooltip)
+ self.croppingBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Disabled
Disabled
Indeterminate - Margins
Margins
Checked - Margins + page numbers
Margins +page numbers
", None))
+#endif // QT_CONFIG(tooltip)
+ self.croppingBox.setText(QCoreApplication.translate("mainWindow", u"Cropping mode", None))
+#if QT_CONFIG(tooltip)
+ self.maximizeStrips.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - 1x4
Keep format 1x4 panels strips.
Checked - 2x2
Turn 1x4 strips to 2x2 to maximize screen usage.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.maximizeStrips.setText(QCoreApplication.translate("mainWindow", u"1x4 to 2x2 strips", None))
+#if QT_CONFIG(tooltip)
+ self.disableProcessingBox.setToolTip(QCoreApplication.translate("mainWindow", u"Do not process any image, ignore profile and processing options.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.disableProcessingBox.setText(QCoreApplication.translate("mainWindow", u"Disable processing", None))
+#if QT_CONFIG(tooltip)
+ self.fileFusionBox.setToolTip(QCoreApplication.translate("mainWindow", u"Combines all selected files into a single file. (Helpful for combining chapters into volumes.)
", None))
+#endif // QT_CONFIG(tooltip)
+ self.fileFusionBox.setText(QCoreApplication.translate("mainWindow", u"File Fusion", None))
+#if QT_CONFIG(tooltip)
+ self.pdfWidthBox.setToolTip(QCoreApplication.translate("mainWindow", u"Render vector PDFs to device width instead of height.\n"
+"\n"
+"Useful if you plan to crop a little off the top and bottom to fill screen.", None))
+#endif // QT_CONFIG(tooltip)
+ self.pdfWidthBox.setText(QCoreApplication.translate("mainWindow", u"PDF Width Render", None))
+#if QT_CONFIG(tooltip)
+ self.legacyExtractBox.setToolTip(QCoreApplication.translate("mainWindow", u"Use the PDF/EPUB image extraction method from older KCC versions.
Use if standard extraction fails for whatever reason.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.legacyExtractBox.setText(QCoreApplication.translate("mainWindow", u"Legacy Extract", None))
+#if QT_CONFIG(tooltip)
+ self.metadataTitleBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Don't use metadata Title
Write default title.
Indeterminate - Add metadata Title to the default schema
Write default title with Title from ComicInfo.xml or other embedded metadata.
Checked - Use metadata Title only
Write Title from ComicInfo.xml or other embedded metadata.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.metadataTitleBox.setText(QCoreApplication.translate("mainWindow", u"Metadata Title", None))
#if QT_CONFIG(tooltip)
self.hLabel.setToolTip(QCoreApplication.translate("mainWindow", u"Resolution of the target device.
", None))
#endif // QT_CONFIG(tooltip)
@@ -889,5 +869,14 @@ class Ui_mainWindow(object):
#if QT_CONFIG(tooltip)
self.heightBox.setToolTip(QCoreApplication.translate("mainWindow", u"Resolution of the target device.
", None))
#endif // QT_CONFIG(tooltip)
+ self.jpegQualityLabel.setText(QCoreApplication.translate("mainWindow", u"JPEG Quality:", None))
+#if QT_CONFIG(tooltip)
+ self.jobList.setToolTip(QCoreApplication.translate("mainWindow", u"Double click on source to open it in metadata editor.
", None))
+#endif // QT_CONFIG(tooltip)
+#if QT_CONFIG(tooltip)
+ self.chunkSizeWidget.setToolTip(QCoreApplication.translate("mainWindow", u"Warning: chunk size greater than default may cause
performance/battery issues, especially on older devices.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.chunkSizeLabel.setText(QCoreApplication.translate("mainWindow", u"Chunk size MB:", None))
+ self.chunkSizeWarnLabel.setText(QCoreApplication.translate("mainWindow", u"Greater than default may cause performance issues on older ereaders.", None))
# retranslateUi