Warning, /utilities/skanpage/src/qml/ExportWindow.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * SPDX-FileCopyrightText: 2015 by Kåre Särs <kare.sars@iki .fi>
0003 * SPDX-FileCopyrightText: 2021 by Alexander Stippich <a.stippich@gmx.net>
0004 *
0005 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007
0008 import QtQuick
0009 import QtQuick.Controls
0010 import QtQuick.Layouts
0011 import QtQuick.Window
0012 import QtQuick.Dialogs
0013
0014 import org.kde.kirigami as Kirigami
0015
0016 import org.kde.skanpage
0017
0018 Window {
0019 id: exportWindow
0020
0021 title: i18n("Export PDF")
0022 color: Kirigami.Theme.backgroundColor
0023
0024 modality: Qt.WindowModal
0025 flags: Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint
0026 | Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint
0027
0028 minimumHeight: 300
0029 minimumWidth: 600
0030
0031 ColumnLayout {
0032 anchors.fill: parent
0033 anchors.margins: Kirigami.Units.smallSpacing
0034 spacing: Kirigami.Units.smallSpacing
0035
0036 GridLayout {
0037 Layout.fillWidth: true
0038 Layout.fillHeight: true
0039 columns: 3
0040 rowSpacing: Kirigami.Units.smallSpacing
0041 columnSpacing: Kirigami.Units.smallSpacing
0042
0043 Label {
0044 text: i18n("Title:")
0045 Layout.alignment: Qt.AlignRight
0046 }
0047
0048 TextField {
0049 id: fileTitleItem
0050 Layout.fillWidth: true
0051 text: skanpage.documentModel.name
0052 }
0053
0054 Item {
0055 width: 1
0056 height: 1
0057 }
0058
0059 Label {
0060 text: i18n("File:")
0061 Layout.alignment: Qt.AlignRight
0062 }
0063
0064 TextField {
0065 id: fileNameItem
0066 Layout.fillWidth: true
0067 text: skanpage.configuration.defaultFolder + "/" + skanpage.documentModel.fileName
0068 }
0069
0070 ToolButton {
0071 icon.name: "folder"
0072 width: height
0073 onClicked: fileNameDialog.open()
0074 }
0075
0076 Item {
0077 visible: skanpage.OCRavailable()
0078 width: 1
0079 height: 1
0080 }
0081
0082 CheckBox {
0083 id: ocrCheckBox
0084 visible: skanpage.OCRavailable()
0085 text: i18n("Enable optical character recognition (OCR)")
0086 enabled: ocrList.count > 0
0087 checked: enabled
0088 }
0089
0090 Item {
0091 visible: skanpage.OCRavailable()
0092 width: 1
0093 height: 1
0094 }
0095
0096 Item {
0097 visible: skanpage.OCRavailable()
0098 width: 1
0099 height: 1
0100 }
0101
0102 Label {
0103 visible: skanpage.OCRavailable()
0104 enabled: ocrCheckBox.checked
0105 text: i18n("Languages:")
0106 }
0107
0108 Item {
0109 visible: skanpage.OCRavailable()
0110 width: 1
0111 height: 1
0112 }
0113
0114 Item {
0115 visible: skanpage.OCRavailable()
0116 width: 1
0117 height: 1
0118 }
0119
0120 ScrollView {
0121 id: ocrScroll
0122 Layout.fillHeight: true
0123 Layout.fillWidth: true
0124 visible: skanpage.OCRavailable()
0125 enabled: ocrCheckBox.checked
0126
0127 Component.onCompleted: ocrScroll.background.visible = true
0128
0129 ListView {
0130 id: ocrList
0131 clip: true
0132 model: skanpage.languageModel
0133
0134 delegate: CheckDelegate {
0135 text: i18n("%1 [%2]", model.name, model.code)
0136 onClicked: model.use = checked
0137 width: ocrScroll.width
0138 }
0139 }
0140 }
0141
0142 Item {
0143 visible: skanpage.OCRavailable()
0144 width: 1
0145 height: 1
0146 }
0147
0148 Item {
0149 visible: skanpage.OCRavailable()
0150 width: 1
0151 height: 1
0152 }
0153
0154 Label {
0155 visible: skanpage.OCRavailable()
0156 text: i18n("If your required language is not listed, please install Tesseract's language file with your package manager.")
0157 font.italic: true
0158 wrapMode: Text.WordWrap
0159 Layout.maximumWidth: fileNameItem.width
0160 }
0161
0162 Item {
0163 visible: skanpage.OCRavailable()
0164 width: 1
0165 height: 1
0166 }
0167
0168 Item {
0169 Layout.fillHeight: true
0170 Layout.fillWidth: true
0171 Layout.columnSpan: 3
0172 }
0173 }
0174
0175 RowLayout {
0176 spacing: Kirigami.Units.smallSpacing
0177 Layout.alignment: Qt.AlignRight
0178
0179 Button {
0180 id: saveButton
0181 icon.name: "document-save"
0182 text: i18n("Save")
0183 onClicked: {
0184 skanpage.documentModel.exportPDF(fileNameItem.text, fileTitleItem.text, ocrCheckBox.checked && skanpage.OCRavailable())
0185 exportWindow.close()
0186 }
0187 }
0188
0189 Button {
0190 action: cancelAction
0191 }
0192 }
0193 }
0194
0195 Action {
0196 id: cancelAction
0197 icon.name: "dialog-close"
0198 text: i18n("Cancel")
0199 shortcut: "Esc"
0200 onTriggered: exportWindow.close()
0201 }
0202
0203 FileDialog {
0204 id: fileNameDialog
0205 currentFolder: skanpage.configuration.defaultFolder
0206 nameFilters: skanpage.formatModel.pdfFormatFilter()
0207 onAccepted: fileNameItem.text = selectedFile
0208 }
0209 }
0210