Krita Source Code Documentation
Loading...
Searching...
No Matches
pyqtpluginsettings.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-only
5 */
7
8#include "ui_manager.h"
9
10#include <QVBoxLayout>
11#include <QSortFilterProxyModel>
12#include <kconfiggroup.h>
13#include <QTreeView>
14
15
16#include "kis_config.h"
17#include "kis_icon_utils.h"
18#include "PythonPluginManager.h"
19
21 : KisPreferenceSet(parent)
22 , m_pluginManager(pluginManager)
23 , m_page(new Ui::ManagerPage)
24{
25 m_page->setupUi(this);
26
27 QSortFilterProxyModel* const proxy_model = new QSortFilterProxyModel(this);
28 proxy_model->setSourceModel(pluginManager->model());
29 m_page->pluginsList->setModel(proxy_model);
30 m_page->pluginsList->resizeColumnToContents(0);
31 m_page->pluginsList->sortByColumn(0, Qt::AscendingOrder);
32
33 const bool is_enabled = bool(pluginManager);
34 const bool is_visible = !is_enabled;
35 m_page->errorLabel->setVisible(is_visible);
36 m_page->pluginsList->setEnabled(is_enabled);
37 m_page->textBrowser->setEnabled(is_enabled);
38
39 connect(m_page->pluginsList, SIGNAL(clicked(QModelIndex)), SLOT(updateManual(QModelIndex)));
40}
41
46
48{
49 return QString("pykritapluginmanager");
50}
51
53{
54 return header();
55}
56
58{
59 return QString(i18n("Python Plugin Manager"));
60}
61
62
64{
65 return KisIconUtils::loadIcon("python");
66}
67
68
70{
71 Q_EMIT(settingsChanged());
72}
73
77
81
82void PyQtPluginSettings::updateManual(const QModelIndex &index)
83{
84 QModelIndex unsortedIndex = static_cast<QSortFilterProxyModel*>(m_page->pluginsList->model())->mapToSource(index);
85
86 PythonPlugin *plugin = m_pluginManager->model()->plugin(unsortedIndex);
87 if (plugin && !plugin->manual().isEmpty()) {
88 QString manual = plugin->manual();
89 if (manual.startsWith("<html")) {
90 m_page->textBrowser->setHtml(manual);
91 }
92 else {
93 m_page->textBrowser->setText(manual);
94 }
95 }
96 else {
97 m_page->textBrowser->setHtml("<html><body><h1>No Manual Available</h2></body></html>");
98 }
99}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QString name() override
void loadDefaultPreferences() override
QString id() override
QString header() override
void savePreferences() const override
Ui::ManagerPage * m_page
void loadPreferences() override
PythonPluginManager * m_pluginManager
void updateManual(const QModelIndex &index)
PyQtPluginSettings(PythonPluginManager *pluginManager, QWidget *parent=nullptr)
void settingsChanged() const
PythonPluginsModel * model()
QString manual() const
PythonPlugin * plugin(const QModelIndex &) const
QIcon loadIcon(const QString &name)