Warning, /plasma/plasma-workspace/kcms/style/ui/GtkStylePage.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2020 Mikhail Zolotukhin <zomial@protonmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 import QtCore
0008 import QtQuick 2.7
0009 import QtQuick.Layouts 1.1
0010 import QtQuick.Dialogs 6.3 as QtDialogs
0011 import QtQuick.Controls 2.10 as QtControls
0012 import org.kde.kirigami 2.10 as Kirigami
0013 import org.kde.newstuff 1.91 as NewStuff
0014 
0015 Kirigami.Page {
0016     id: gtkStylePage
0017     title: i18n("GNOME/GTK Application Style")
0018 
0019     ColumnLayout {
0020         anchors.fill: parent
0021 
0022         Kirigami.InlineMessage {
0023             id: infoLabel
0024             Layout.fillWidth: true
0025 
0026             showCloseButton: true
0027             visible: false
0028 
0029             Connections {
0030                 target: kcm.gtkPage
0031                 function onShowErrorMessage(message) {
0032                     infoLabel.type = Kirigami.MessageType.Error;
0033                     infoLabel.text = message;
0034                     infoLabel.visible = true;
0035                 }
0036             }
0037         }
0038 
0039         Kirigami.FormLayout {
0040             wideMode: true
0041 
0042             Row {
0043                 Kirigami.FormData.label: i18n("GTK theme:")
0044 
0045                 Flow {
0046                     spacing: Kirigami.Units.smallSpacing
0047 
0048                     QtControls.ComboBox {
0049                         id: gtkThemeCombo
0050                         model: kcm.gtkPage.gtkThemesModel
0051                         currentIndex: model.findThemeIndex(kcm.gtkPage.gtkThemesModel.selectedTheme)
0052                         onCurrentTextChanged: function() {
0053                             model.selectedTheme = currentText
0054                             gtkRemoveButton.enabled = model.selectedThemeRemovable()
0055                         }
0056                         onActivated: model.setSelectedThemeDirty()
0057                         textRole: "theme-name"
0058                     }
0059 
0060                     QtControls.Button {
0061                         id: gtkRemoveButton
0062                         icon.name: "edit-delete"
0063                         onClicked: gtkThemeCombo.model.removeSelectedTheme()
0064                     }
0065 
0066                     QtControls.Button {
0067                         icon.name: "preview"
0068                         text: i18n("Preview…")
0069                         onClicked: kcm.gtkPage.showGtkPreview()
0070                         visible: kcm.gtkPage.gtkPreviewAvailable()
0071                     }
0072 
0073                 }
0074             }
0075 
0076         }
0077 
0078         Item {
0079             Layout.fillHeight: true
0080         }
0081 
0082         Kirigami.ActionToolBar {
0083             flat: false
0084             alignment: Qt.AlignRight
0085             actions: [
0086                 Kirigami.Action {
0087                     text: i18n("Install from File…")
0088                     icon.name: "document-import"
0089                     onTriggered: fileDialogLoader.active = true
0090                 },
0091                 NewStuff.Action {
0092                     text: i18n("Get New GNOME/GTK Application Styles…")
0093                     configFile: "gtk_themes.knsrc"
0094                     onEntryEvent: function (entry, event) {
0095                         if (event == NewStuff.Entry.StatusChangedEvent) {
0096                             kcm.load();
0097                         }
0098                     }
0099                 }
0100             ]
0101         }
0102     }
0103 
0104     Loader {
0105         id: fileDialogLoader
0106         active: false
0107         sourceComponent: QtDialogs.FileDialog {
0108             title: i18n("Select GTK Theme Archive")
0109             currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
0110             nameFilters: [ i18n("GTK Theme Archive (*.tar.xz *.tar.gz *.tar.bz2)") ]
0111             Component.onCompleted: open()
0112             onAccepted: {
0113                 kcm.gtkPage.installGtkThemeFromFile(selectedFile)
0114                 fileDialogLoader.active = false
0115             }
0116             onRejected: {
0117                 fileDialogLoader.active = false
0118             }
0119         }
0120     }
0121 }