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

#include <PythonPluginsModel.h>

+ Inheritance diagram for PythonPluginsModel:

Public Types

enum  Column {
  COL_ENABLED , COL_NAME , COL_COMMENT , COL_STATUS ,
  COLUMN_COUNT
}
 

Public Member Functions

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

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

PythonPluginManager * m_pluginManager
 

Detailed Description

Definition at line 19 of file PythonPluginsModel.h.

Member Enumeration Documentation

◆ Column

Enumerator
COL_ENABLED 
COL_NAME 
COL_COMMENT 
COL_STATUS 
COLUMN_COUNT 

Definition at line 25 of file PythonPluginsModel.h.

Constructor & Destructor Documentation

◆ PythonPluginsModel()

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

Definition at line 20 of file PythonPluginsModel.cpp.

21 : QAbstractTableModel(parent)
22 , m_pluginManager(pluginManager)
23{
24}
PythonPluginManager * m_pluginManager

Member Function Documentation

◆ columnCount()

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

Definition at line 26 of file PythonPluginsModel.cpp.

27{
28 return COLUMN_COUNT;
29}

References COLUMN_COUNT.

◆ data()

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

Definition at line 65 of file PythonPluginsModel.cpp.

66{
67 if (index.isValid()) {
68 PythonPlugin *plugin = static_cast<PythonPlugin*>(index.internalPointer());
70
71 switch (role) {
72 case Qt::DisplayRole:
73 switch (index.column()) {
74 case COL_NAME:
75 return plugin->name();
76 case COL_COMMENT:
77 return plugin->comment();
78 case COL_STATUS:
79 return plugin->statusText();
80 default:
81 break;
82 }
83 break;
84 case Qt::CheckStateRole:
85 if (index.column() == COL_ENABLED) {
86 return plugin->isEnabled() ? Qt::Checked : Qt::Unchecked;
87 }
88 break;
89 case Qt::ToolTipRole:
90 if (index.column() == COL_COMMENT) {
91 // Show comment in case it was elided
92 return plugin->comment();
93 } else {
94 const QString error = plugin->errorReason();
95 if (!error.isEmpty()) {
96 return error;
97 }
98 }
99 break;
100 case Qt::ForegroundRole:
101 if (plugin->isUnstable() || !plugin->errorReason().isEmpty()) {
102 if (plugin->isEnabled()) {
103 KColorScheme scheme(QPalette::Active, KColorScheme::View);
104 return scheme.foreground(KColorScheme::NegativeText).color();
105 } else {
106 KColorScheme scheme(QPalette::Disabled, KColorScheme::View);
107 return scheme.foreground(KColorScheme::NegativeText).color();
108 }
109 } else if (!plugin->isEnabled()) {
110 // Show disabled plugins with a disabled color,
111 // without actually disabling the widget (which prevents selecting it)
112 return qApp->palette().color(QPalette::Disabled, QPalette::WindowText);
113 }
114 break;
115 default:
116 break;
117 }
118 }
119
120 return QVariant();
121}
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_ENABLED, COL_NAME, COL_STATUS, PythonPlugin::comment(), PythonPlugin::errorReason(), KColorScheme::foreground(), index(), PythonPlugin::isEnabled(), PythonPlugin::isUnstable(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, PythonPlugin::name(), KColorScheme::NegativeText, plugin(), PythonPlugin::statusText(), and KColorScheme::View.

◆ flags()

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

Definition at line 123 of file PythonPluginsModel.cpp.

124{
125 PythonPlugin *plugin = static_cast<PythonPlugin*>(index.internalPointer());
126 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(plugin, Qt::ItemIsSelectable);
127
128 int result = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
129 if (index.column() == COL_ENABLED) {
130 result |= Qt::ItemIsUserCheckable;
131 }
132
133 return static_cast<Qt::ItemFlag>(result);
134}

References COL_ENABLED, index(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, and plugin().

◆ headerData()

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

Definition at line 48 of file PythonPluginsModel.cpp.

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

References COL_COMMENT, COL_NAME, and COL_STATUS.

◆ index()

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

Definition at line 36 of file PythonPluginsModel.cpp.

37{
38 if (!parent.isValid() && column < COLUMN_COUNT) {
40 if (plugin) {
41 return createIndex(row, column, plugin);
42 }
43 }
44
45 return QModelIndex();
46}
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 147 of file PythonPluginsModel.cpp.

148{
149 if (index.isValid()) {
150 PythonPlugin * plugin = static_cast<PythonPlugin*>(index.internalPointer());
151 return plugin;
152 }
153 return 0;
154}

References index(), and plugin().

◆ rowCount()

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

Definition at line 31 of file PythonPluginsModel.cpp.

32{
33 return m_pluginManager->plugins().size();
34}
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 136 of file PythonPluginsModel.cpp.

137{
138 PythonPlugin *plugin = static_cast<PythonPlugin*>(index.internalPointer());
140
141 if (role == Qt::CheckStateRole) {
143 }
144 return true;
145}
float value(const T *src, size_t ch)
void setPluginEnabled(PythonPlugin &plugin, bool enabled)

References index(), 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 44 of file PythonPluginsModel.h.


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