mirror of
https://github.com/ciromattia/kcc
synced 2026-05-20 14:32:03 +00:00
* Add bulk metadata editing support
* Enable multi-file selection in Metadata Editor using getOpenFileNames()
* Disable Volume, Number, and Title fields in bulk mode
* Pre-fill Series and author fields from first selected file in bulk mode
* Show status "Editing Y files" in bulk mode
* Add progress display during bulk save ("Processing X/Y: filename")
* Disable buttons during processing
* Skip read-only CBR files with error collection
* Show error summary dialog if any files fail to save
* Keep single file metadata editing the same
* Add bulk volume editing with rich tooltip
* Add checkbox next to Volume field for enabling bulk volume editing (only in bulk mode)
* Support single number (5), range (1-10), or comma list (1, 3, 5) input formats
* Sort files alphabetically before volume assignment
* Validate that volume count matches file count
* Add rich HTML tooltip explaining the feature
* Move bulkVolumeCheck widget definition to MetaEditor.ui
* Define bulkVolumeCheck QCheckBox in MetaEditor.ui instead of creating it programmatically in KCC_gui.py
* Update tab order to include bulkVolumeCheck after volumeLine
* Add multi-directory selection for bulk metadata editing
* Shift+click on editor button now opens multi-directory selection dialog
* Multiple directories enable bulk mode with volume number assignment
* Uses Qt's built-in dialog with multi-selection enabled for native look and feel
* Fix volume input validation in bulk metadata editor
* Handle invalid range formats like "1-2-3" or "--" that previously fell through, now returns an error message
* Add explicit check for empty/malformed range parts before attempting to parse
* Add positive number validation for all input types (range, comma-list, single number) to be consistent with single file mode which uses isnumeric()
* Add explicit validation for empty volumes list after parsing
* Keep metadata editor dialog open when error occur during bulks save
* Fix CBR read-only check in bulk metadata editor
* Check all files for CBR format during load instead of during save
* Unify the CBR check for single and bulk mode
* Handle mixed metadata values in bulk editing
* In bulk mode, compare Series + Writer/Penciller/Inker/Colorist across all selected files (instead of using only the first file)
* When values differ, show “(multiple values)” placeholder for that field
* Add hover tooltip with overwrite warning and a File|Value table (or Value|Count summary when there are >20 files)
* Code comments cleanup
* Use ExtendedSelection for multi-directory file dialog
* use !=
226 lines
6.6 KiB
XML
226 lines
6.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>editorDialog</class>
|
|
<widget class="QDialog" name="editorDialog">
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>400</width>
|
|
<height>260</height>
|
|
</rect>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>400</width>
|
|
<height>260</height>
|
|
</size>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Metadata editor</string>
|
|
</property>
|
|
<property name="windowIcon">
|
|
<iconset resource="KCC.qrc">
|
|
<normaloff>:/Icon/icons/comic2ebook.png</normaloff>:/Icon/icons/comic2ebook.png</iconset>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
<property name="bottomMargin">
|
|
<number>5</number>
|
|
</property>
|
|
<item>
|
|
<widget class="QWidget" name="editorWidget" native="true">
|
|
<layout class="QGridLayout" name="gridLayout">
|
|
<property name="leftMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<item row="0" column="0">
|
|
<widget class="QLabel" name="label_1">
|
|
<property name="text">
|
|
<string>Series:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="1">
|
|
<widget class="QLineEdit" name="seriesLine"/>
|
|
</item>
|
|
<item row="1" column="0">
|
|
<widget class="QLabel" name="label_2">
|
|
<property name="text">
|
|
<string>Volume:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="1">
|
|
<widget class="QLineEdit" name="volumeLine"/>
|
|
</item>
|
|
<item row="1" column="2">
|
|
<widget class="QCheckBox" name="bulkVolumeCheck">
|
|
<property name="visible">
|
|
<bool>false</bool>
|
|
</property>
|
|
<property name="toolTip">
|
|
<string><b>Bulk Volume Editing</b><br>Check this box to assign volume numbers to multiple files.<br><br><b>Input formats:</b><br><code>5</code> → sequence starting from 5 (5, 6, 7...)<br><code>1-10</code> → range from 1 to 10<br><code>1, 3, 5</code> → specific values<br><br><i>Note: Files are sorted alphabetically before assignment.</i></string>
|
|
</property>
|
|
<property name="text">
|
|
<string/>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="3" column="0">
|
|
<widget class="QLabel" name="label_3">
|
|
<property name="text">
|
|
<string>Number:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="3" column="1">
|
|
<widget class="QLineEdit" name="numberLine"/>
|
|
</item>
|
|
<item row="4" column="0">
|
|
<widget class="QLabel" name="label_4">
|
|
<property name="text">
|
|
<string>Writer:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="4" column="1">
|
|
<widget class="QLineEdit" name="writerLine"/>
|
|
</item>
|
|
<item row="5" column="0">
|
|
<widget class="QLabel" name="label_5">
|
|
<property name="text">
|
|
<string>Penciller:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="5" column="1">
|
|
<widget class="QLineEdit" name="pencillerLine"/>
|
|
</item>
|
|
<item row="6" column="0">
|
|
<widget class="QLabel" name="label_6">
|
|
<property name="text">
|
|
<string>Inker:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="6" column="1">
|
|
<widget class="QLineEdit" name="inkerLine"/>
|
|
</item>
|
|
<item row="7" column="0">
|
|
<widget class="QLabel" name="label_7">
|
|
<property name="text">
|
|
<string>Colorist:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="7" column="1">
|
|
<widget class="QLineEdit" name="coloristLine"/>
|
|
</item>
|
|
<item row="2" column="0">
|
|
<widget class="QLabel" name="label_8">
|
|
<property name="text">
|
|
<string>Title:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="1">
|
|
<widget class="QLineEdit" name="titleLine"/>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QWidget" name="optionWidget" native="true">
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<property name="leftMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<item>
|
|
<widget class="QLabel" name="statusLabel">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string/>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QPushButton" name="okButton">
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>0</width>
|
|
<height>30</height>
|
|
</size>
|
|
</property>
|
|
<property name="text">
|
|
<string>Save</string>
|
|
</property>
|
|
<property name="icon">
|
|
<iconset resource="KCC.qrc">
|
|
<normaloff>:/Other/icons/convert.png</normaloff>:/Other/icons/convert.png</iconset>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QPushButton" name="cancelButton">
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>0</width>
|
|
<height>30</height>
|
|
</size>
|
|
</property>
|
|
<property name="text">
|
|
<string>Cancel</string>
|
|
</property>
|
|
<property name="icon">
|
|
<iconset resource="KCC.qrc">
|
|
<normaloff>:/Other/icons/clear.png</normaloff>:/Other/icons/clear.png</iconset>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<tabstops>
|
|
<tabstop>seriesLine</tabstop>
|
|
<tabstop>volumeLine</tabstop>
|
|
<tabstop>bulkVolumeCheck</tabstop>
|
|
<tabstop>titleLine</tabstop>
|
|
<tabstop>numberLine</tabstop>
|
|
<tabstop>writerLine</tabstop>
|
|
<tabstop>pencillerLine</tabstop>
|
|
<tabstop>inkerLine</tabstop>
|
|
<tabstop>coloristLine</tabstop>
|
|
<tabstop>okButton</tabstop>
|
|
<tabstop>cancelButton</tabstop>
|
|
</tabstops>
|
|
<resources>
|
|
<include location="KCC.qrc"/>
|
|
</resources>
|
|
<connections/>
|
|
</ui>
|