Warning, /graphics/peruse/src/creator/qml/PageMetaInfo.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright (C) 2018 Wolthera van Hövell tot Westerflier<griffinvalley@gmail.com> 0003 * 0004 * This library is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU Lesser General Public 0006 * License as published by the Free Software Foundation; either 0007 * version 2.1 of the License, or (at your option) version 3, or any 0008 * later version accepted by the membership of KDE e.V. (or its 0009 * successor approved by the membership of KDE e.V.), which shall 0010 * act as a proxy defined in Section 6 of version 3 of the license. 0011 * 0012 * This library is distributed in the hope that it will be useful, 0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0015 * Lesser General Public License for more details. 0016 * 0017 * You should have received a copy of the GNU Lesser General Public 0018 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 0019 * 0020 */ 0021 0022 import QtQuick 2.12 0023 import QtQuick.Layouts 1.4 0024 import QtQuick.Controls 2.12 as QtControls 0025 import QtQuick.Dialogs 1.3 0026 0027 import org.kde.kirigami 2.13 as Kirigami 0028 /** 0029 * Page that holds an image to edit the frames on. 0030 */ 0031 import QtQuick 2.0 0032 0033 Kirigami.ScrollablePage { 0034 id: root; 0035 title: i18nc("title text for the page meta information editor sheet", "Edit Page Information"); 0036 property QtObject page; 0037 property string colorname: "#ffffff"; 0038 signal save(); 0039 0040 actions { 0041 main: saveAndCloseAction; 0042 } 0043 Kirigami.Action { 0044 id: saveAndCloseAction; 0045 text: i18nc("Saves the remaining unsaved edited fields and closes the metainfo editor", "Close Editor"); 0046 iconName: "dialog-ok"; 0047 shortcut: "Esc"; 0048 onTriggered: { 0049 root.page.setTitle(defaultTitle.text, "") 0050 root.save(); 0051 pageStack.pop(); 0052 } 0053 } 0054 0055 Kirigami.FormLayout { 0056 Layout.fillWidth: true 0057 QtControls.TextField { 0058 id: defaultTitle; 0059 Kirigami.FormData.label: i18nc("label text for the edit field for the page title", "Title"); 0060 placeholderText: i18nc("placeholder text for the page title text-input", "Write to add default title"); 0061 text: root.page.title(""); 0062 onEditingFinished: root.page.setTitle(text, ""); 0063 } 0064 QtControls.TextField { 0065 id: pageId; 0066 Kirigami.FormData.label: i18nc("label text for the edit field for the page id", "ID"); 0067 placeholderText: i18nc("placeholder text for page ID text-input", "Write to add an ID"); 0068 text: root.page.id 0069 onEditingFinished: root.page.id = text 0070 } 0071 QtControls.ComboBox { 0072 id: transition; 0073 Kirigami.FormData.label: i18nc("label text for the edit field for the page transition type", "Transition"); 0074 model: root.page.availableTransitions(); 0075 currentIndex: root.page.transition!==""? 0076 root.page.availableTransitions().indexOf(root.page.transition): 0077 root.page.availableTransitions().indexOf("none"); 0078 onActivated: root.page.transition = currentText; 0079 } 0080 Row { 0081 Kirigami.FormData.label: i18nc("label text for the edit field for the page background color", "Background Color"); 0082 height: Kirigami.Units.iconSizes.medium; 0083 Rectangle { 0084 id: pageBackgroundColor; 0085 height: Kirigami.Units.iconSizes.medium; 0086 width: Kirigami.Units.iconSizes.huge; 0087 radius: 3; 0088 border.color: Kirigami.Theme.disabledTextColor; 0089 border.width: 1; 0090 color: root.page.bgcolor !== ""? root.page.bgcolor: root.colorname; 0091 MouseArea { 0092 anchors.fill: parent; 0093 onClicked: { 0094 backgroundColorDialog.open(); 0095 0096 } 0097 hoverEnabled: true; 0098 onEntered: parent.border.color = Kirigami.Theme.buttonHoverColor; 0099 onExited: parent.border.color = Kirigami.Theme.disabledTextColor; 0100 } 0101 ColorDialog { 0102 id: backgroundColorDialog 0103 title: i18nc("@title color choosing dialog","Choose the background color for page"); 0104 color: root.page.bgcolor !== ""? root.page.bgcolor: root.colorname; 0105 onAccepted: root.page.bgcolor = color; 0106 } 0107 } 0108 } 0109 0110 Kirigami.Separator { 0111 Kirigami.FormData.label: i18nc("label text for the edit field for the page frames", "Frames"); 0112 Kirigami.FormData.isSection: true 0113 } 0114 0115 Repeater { 0116 model: page.framePointStrings 0117 delegate: RowLayout { 0118 Kirigami.FormData.label: i18nc("Comic book panel frame name.", "Frame %1", index+1); 0119 Layout.fillWidth: true; 0120 ColumnLayout { 0121 QtControls.Switch { 0122 text: i18nc("A switch which lets the user change the background colour of the page when this frame is focused", "Change page background color"); 0123 } 0124 RowLayout { 0125 QtControls.Label { 0126 height: Kirigami.Units.iconSizes.medium; 0127 text: i18nc("Label from frame background color.", "Background Color:"); 0128 } 0129 Rectangle { 0130 height: Kirigami.Units.iconSizes.medium; 0131 width: Kirigami.Units.iconSizes.huge; 0132 radius: 3; 0133 border.color: Kirigami.Theme.disabledTextColor; 0134 border.width: 1; 0135 color: page.frame(index).bgcolor !== ""? page.frame(index).bgcolor: pageBackgroundColor.color; 0136 MouseArea { 0137 anchors.fill: parent; 0138 onClicked: { 0139 frameBackgroundColorDialog.open(); 0140 } 0141 hoverEnabled: true; 0142 onEntered: parent.border.color = Kirigami.Theme.buttonHoverColor; 0143 onExited: parent.border.color = Kirigami.Theme.disabledTextColor; 0144 } 0145 ColorDialog { 0146 id: frameBackgroundColorDialog 0147 title: i18nc("@title color choosing dialog","Choose background color for this frame"); 0148 color: page.frame(index).bgcolor !== ""? page.frame(index).bgcolor: pageBackgroundColor.color; 0149 onAccepted: page.frame(index).bgcolor = color; 0150 } 0151 } 0152 } 0153 } 0154 Item { height: Kirigami.Units.iconSizes.medium; Layout.fillWidth: true; } 0155 QtControls.ToolButton { 0156 QtControls.ToolTip.delay: Kirigami.Units.toolTipDelay; QtControls.ToolTip.timeout: 5000; QtControls.ToolTip.visible: parent.visible && (Kirigami.Settings.tabletMode ? pressed : hovered) && QtControls.ToolTip.text.length > 0 0157 QtControls.ToolTip.text: i18nc("swap the position of this frame with the previous one", "Move Up"); 0158 icon.name: "go-up" 0159 display: QtControls.AbstractButton.IconOnly 0160 onClicked: { page.swapFrames(index, index - 1); } 0161 enabled: index > 0; 0162 visible: enabled; 0163 } 0164 QtControls.ToolButton { 0165 QtControls.ToolTip.delay: Kirigami.Units.toolTipDelay; QtControls.ToolTip.timeout: 5000; QtControls.ToolTip.visible: parent.visible && (Kirigami.Settings.tabletMode ? pressed : hovered) && QtControls.ToolTip.text.length > 0 0166 QtControls.ToolTip.text: i18nc("swap the position of this frame with the next one", "Move Down"); 0167 icon.name: "go-down" 0168 display: QtControls.AbstractButton.IconOnly 0169 onClicked: { page.swapFrames(index, index + 1); } 0170 enabled: index < page.framePointStrings.length - 1; 0171 visible: enabled; 0172 } 0173 QtControls.ToolButton { 0174 QtControls.ToolTip.delay: Kirigami.Units.toolTipDelay; QtControls.ToolTip.timeout: 5000; QtControls.ToolTip.visible: parent.visible && (Kirigami.Settings.tabletMode ? pressed : hovered) && QtControls.ToolTip.text.length > 0 0175 QtControls.ToolTip.text: i18nc("remove the frame from the page", "Delete Frame"); 0176 icon.name: "list-remove" 0177 display: QtControls.AbstractButton.IconOnly 0178 onClicked: page.removeFrame(index); 0179 } 0180 } 0181 } 0182 Kirigami.Separator { 0183 Kirigami.FormData.label: i18nc("label text for the edit field for the page textareas", "Text Areas"); 0184 Kirigami.FormData.isSection: true; 0185 } 0186 Row { 0187 spacing: Kirigami.Units.smallSpacing; 0188 Kirigami.FormData.label: i18nc("Label from textlayer background color.", "Background Color:"); 0189 Rectangle { 0190 height: Kirigami.Units.iconSizes.medium; 0191 width: Kirigami.Units.iconSizes.huge; 0192 id: textLayerBgColor; 0193 radius: 3; 0194 border.color: Kirigami.Theme.disabledTextColor; 0195 border.width: 1; 0196 color: page.textLayer("").bgcolor !== ""? page.textLayer("").bgcolor: pageBackgroundColor.color; 0197 MouseArea { 0198 anchors.fill: parent; 0199 onClicked: { 0200 textLayerBackgroundColorDialog.open(); 0201 0202 } 0203 hoverEnabled: true; 0204 onEntered: parent.border.color = Kirigami.Theme.buttonHoverColor; 0205 onExited: parent.border.color = Kirigami.Theme.disabledTextColor; 0206 } 0207 ColorDialog { 0208 id: textLayerBackgroundColorDialog 0209 title: i18nc("@title color choosing dialog","Choose the background color for all text areas on this page"); 0210 color: page.textLayer("").bgcolor !== ""? page.textLayer("").bgcolor: pageBackgroundColor.color; 0211 onAccepted: page.textLayer("").bgcolor = color; 0212 } 0213 } 0214 } 0215 Repeater { 0216 model: page.textLayer("").textareaPointStrings; 0217 delegate: Kirigami.SwipeListItem { 0218 Layout.fillWidth: true 0219 height: childrenRect.height 0220 supportsMouseEvents: true; 0221 actions: [ 0222 Kirigami.Action { 0223 text: i18nc("swap the position of this text area with the previous one", "Move Up"); 0224 iconName: "go-up" 0225 onTriggered: { page.textLayer("").swapTextareas(index, index - 1); } 0226 enabled: index > 0; 0227 visible: enabled; 0228 }, 0229 Kirigami.Action { 0230 text: i18nc("swap the position of this text area with the next one", "Move Down"); 0231 iconName: "go-down" 0232 onTriggered: { page.textLayer("").swapTextareas(index, index + 1); } 0233 enabled: index < page.textLayer("").textareaPointStrings.length - 1; 0234 visible: enabled; 0235 }, 0236 Kirigami.Action { 0237 text: i18nc("remove the text area from the page", "Delete Text Area"); 0238 iconName: "list-remove" 0239 onTriggered: page.textLayer("").removeTextarea(index); 0240 } 0241 ] 0242 contentItem: Item { 0243 Layout.fillWidth: true; 0244 Layout.fillHeight: true; 0245 QtControls.Label { 0246 id: textareaLabel; 0247 text: i18nc("Comic book panel textarea name.", "Text Area %1", index+1); 0248 } 0249 QtControls.TextArea { 0250 anchors { 0251 top: textareaLabel.bottom; 0252 topMargin: Kirigami.Units.smallSpacing; 0253 } 0254 width:parent.width-Kirigami.Units.iconSizes.huge; 0255 wrapMode: TextEdit.Wrap 0256 text: page.textLayer("").textarea(index).paragraphs.join("\n\n"); 0257 onEditingFinished: page.textLayer("").textarea(index).paragraphs = text.split("\n\n"); 0258 } 0259 } 0260 } 0261 } 0262 Kirigami.Separator { 0263 Kirigami.FormData.label: i18nc("label text for the edit field for the page jumps", "Jumps"); 0264 Kirigami.FormData.isSection: true; 0265 } 0266 Repeater { 0267 id: jumpsRepeater; 0268 model: page.jumps 0269 delegate: Kirigami.SwipeListItem { 0270 Layout.fillWidth: true 0271 height: childrenRect.height 0272 supportsMouseEvents: true; 0273 actions: [ 0274 Kirigami.Action { 0275 text: i18nc("swap the position of this jump with the previous one", "Move Up"); 0276 iconName: "go-up" 0277 onTriggered: { page.swapJumps(index, index - 1); } 0278 enabled: index > 0; 0279 visible: enabled; 0280 }, 0281 Kirigami.Action { 0282 text: i18nc("swap the position of this jump with the next one", "Move Down"); 0283 iconName: "go-down" 0284 onTriggered: { page.swapJumps(index, index + 1); } 0285 enabled: index < jumpsRepeater.count - 1; 0286 visible: enabled; 0287 }, 0288 Kirigami.Action { 0289 text: i18nc("remove the jump from the page", "Delete Jump"); 0290 iconName: "list-remove" 0291 onTriggered: page.removeJump(index); 0292 } 0293 ] 0294 contentItem: Item { 0295 Layout.fillWidth: true; 0296 Layout.fillHeight: true; 0297 QtControls.Label { 0298 id: jumpLabel; 0299 text: i18nc("Comic book panel jump name.", "Jump %1", index+1); 0300 } 0301 QtControls.Label { 0302 id: pageIndexLabel; 0303 anchors { 0304 top: jumpLabel.bottom; 0305 topMargin: Kirigami.Units.smallSpacing; 0306 } 0307 height: jumpIndexSpin.height; 0308 text: i18nc("Label from jump page index.", "Page Index:"); 0309 } 0310 0311 QtControls.SpinBox { 0312 anchors { 0313 top: jumpLabel.bottom; 0314 topMargin: Kirigami.Units.smallSpacing; 0315 left: pageIndexLabel.right; 0316 leftMargin: Kirigami.Units.smallSpacing; 0317 } 0318 from: 0; 0319 to: 99; 0320 id: jumpIndexSpin; 0321 value: modelData.pageIndex; 0322 onValueChanged: { 0323 if (modelData.pageIndex !== value) { 0324 modelData.pageIndex = value; 0325 } 0326 } 0327 } 0328 } 0329 } 0330 } 0331 } 0332 }