Krita Source Code Documentation
Loading...
Searching...
No Matches
PythonPluginsModel Class Reference

#include <PythonPluginsModel.h>

+ Inheritance diagram for PythonPluginsModel:

Public Member Functions

PythonPluginplugin (const QModelIndex &) const
 
 PythonPluginsModel (QObject *parent, PythonPluginManager *pluginManager)
 

Protected Types

enum  Column { COl_NAME , COL_COMMENT , COLUMN_COUNT }
 

Protected Member Functions

int columnCount (const QModelIndex &) const override
 
QVariant data (const QModelIndex &, int) const override
 
Qt::ItemFlags flags (const QModelIndex &) const override
 
QVariant headerData (int, Qt::Orientation, int) const override
 
QModelIndex index (int row, int column, const QModelIndex &parent) const override
 
int rowCount (const QModelIndex &) const override
 
bool setData (const QModelIndex &, const QVariant &, int) override
 

Private Attributes

PythonPluginManagerm_pluginManager
 

Detailed Description

Definition at line 19 of file PythonPluginsModel.h.

Member Enumeration Documentation

◆ Column

Enumerator
COl_NAME 
COL_COMMENT 
COLUMN_COUNT 

Definition at line 26 of file PythonPluginsModel.h.

Constructor & Destructor Documentation

◆ PythonPluginsModel()

PythonPluginsModel::PythonPluginsModel ( QObject * parent,
PythonPluginManager * pluginManager )

Definition at line 18 of file PythonPluginsModel.cpp.

19 : QAbstractTableModel(parent)
20 , m_pluginManager(pluginManager)
21{
22}
PythonPluginManager * m_pluginManager

Member Function Documentation

◆ columnCount()

int PythonPluginsModel::columnCount ( const QModelIndex & ) const
overrideprotected

Definition at line 24 of file PythonPluginsModel.cpp.

25{
26 return COLUMN_COUNT;
27}

References COLUMN_COUNT.

◆ data()

QVariant PythonPluginsModel::data ( const QModelIndex & index,
int role ) const
overrideprotected

Definition at line 61 of file PythonPluginsModel.cpp.

62{
63 if (index.isValid()) {
64 PythonPlugin *plugin = static_cast<PythonPlugin*>(index.internalPointer());
66
67 switch (role) {
68 case Qt::DisplayRole:
69 switch (index.column()) {
70 case COl_NAME:
71 return plugin->name();
72 case COL_COMMENT:
73 return plugin->comment();
74 default:
75 break;
76 }
77 break;
78 case Qt::CheckStateRole:
79 if (index.column() == COl_NAME) {
80 const bool checked = plugin->isEnabled();
81 return checked ? Qt::Checked : Qt::Unchecked;
82 }
83 break;
84 case Qt::ToolTipRole:
85 {
86 auto error = plugin->errorReason();
87 if (!error.isEmpty()) {
88 return error;
89 }
90 }
91 break;
92 case Qt::ForegroundRole:
93 if (plugin->isUnstable()) {
94 KColorScheme scheme(QPalette::Inactive, KColorScheme::View);
95 return scheme.foreground(KColorScheme::NegativeText).color();
96 }
97 break;
98 default:
99 break;
100 }
101 }
102
103 return QVariant();
104}
QString comment() const
QString name() const
bool isEnabled() const
bool isUnstable() const
const QString & errorReason() const
PythonPlugin * plugin(const QModelIndex &) const
QModelIndex index(int row, int column, const QModelIndex &parent) const override
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References COL_COMMENT, COl_NAME, PythonPlugin::comment(), PythonPlugin::errorReason(), KColorScheme::foreground(), index(), PythonPlugin::isEnabled(), PythonPlugin::isUnstable(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, PythonPlugin::name(), KColorScheme::NegativeText, plugin(), and KColorScheme::View.

◆ flags()

Qt::ItemFlags PythonPluginsModel::flags ( const QModelIndex & index) const
overrideprotected

Definition at line 106 of file PythonPluginsModel.cpp.

107{
108 PythonPlugin *plugin = static_cast<PythonPlugin*>(index.internalPointer());
109 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(plugin, Qt::ItemIsSelectable);
110
111 int result = Qt::ItemIsSelectable;
112 if (index.column() == COl_NAME) {
113 result |= Qt::ItemIsUserCheckable;
114 }
115
116 // Disable UI for broken modules
117 if (!plugin->isBroken()) {
118 result |= Qt::ItemIsEnabled;
119 }
120
121 return static_cast<Qt::ItemFlag>(result);
122}
bool isBroken() const

References COl_NAME, index(), PythonPlugin::isBroken(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, and plugin().

◆ headerData()

QVariant PythonPluginsModel::headerData ( int section,
Qt::Orientation orientation,
int role ) const
overrideprotected

Definition at line 46 of file PythonPluginsModel.cpp.

47{
48 if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
49 switch (section) {
50 case COl_NAME:
51 return i18nc("@title:column", "Name");
52 case COL_COMMENT:
53 return i18nc("@title:column", "Comment");
54 default:
55 break;
56 }
57 }
58 return QVariant();
59}

References COL_COMMENT, and COl_NAME.

◆ index()

QModelIndex PythonPluginsModel::index ( int row,
int column,
const QModelIndex & parent ) const
overrideprotected

Definition at line 34 of file PythonPluginsModel.cpp.

35{
36 if (!parent.isValid() && column < COLUMN_COUNT) {
37 auto *plugin = m_pluginManager->plugin(row);
38 if (plugin) {
39 return createIndex(row, column, plugin);
40 }
41 }
42
43 return QModelIndex();
44}
PythonPlugin * plugin(int index)
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327

References COLUMN_COUNT, m_pluginManager, plugin(), and PythonPluginManager::plugin().

◆ plugin()

PythonPlugin * PythonPluginsModel::plugin ( const QModelIndex & index) const

Definition at line 138 of file PythonPluginsModel.cpp.

139{
140 if (index.isValid()) {
141 PythonPlugin * plugin = static_cast<PythonPlugin*>(index.internalPointer());
142 return plugin;
143 }
144 return 0;
145}

References index(), and plugin().

◆ rowCount()

int PythonPluginsModel::rowCount ( const QModelIndex & ) const
overrideprotected

Definition at line 29 of file PythonPluginsModel.cpp.

30{
31 return m_pluginManager->plugins().size();
32}
const QList< PythonPlugin > & plugins() const

References m_pluginManager, and PythonPluginManager::plugins().

◆ setData()

bool PythonPluginsModel::setData ( const QModelIndex & index,
const QVariant & value,
int role )
overrideprotected

Definition at line 124 of file PythonPluginsModel.cpp.

125{
126 PythonPlugin *plugin = static_cast<PythonPlugin*>(index.internalPointer());
128
129 if (role == Qt::CheckStateRole) {
131
132 const bool enabled = value.toBool();
134 }
135 return true;
136}
float value(const T *src, size_t ch)
void setPluginEnabled(PythonPlugin &plugin, bool enabled)

References index(), PythonPlugin::isBroken(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, m_pluginManager, plugin(), PythonPluginManager::setPluginEnabled(), and value().

Member Data Documentation

◆ m_pluginManager

PythonPluginManager* PythonPluginsModel::m_pluginManager
private

Definition at line 38 of file PythonPluginsModel.h.


The documentation for this class was generated from the following files: