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

A Configuration Dialog Page to configure the canvas input. More...

#include <kis_input_configuration_page.h>

+ Inheritance diagram for KisInputConfigurationPage:

Classes

struct  Private
 

Public Slots

void revertChanges ()
 
void saveChanges ()
 
void setDefaults ()
 
void slotScrollerStateChanged (QScroller::State state)
 

Public Member Functions

 KisInputConfigurationPage (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
 ~KisInputConfigurationPage ()
 

Private Slots

void changeCurrentProfile (const QString &newProfile)
 
void checkForConflicts ()
 
void editProfilesButtonClicked ()
 
void updateSelectedProfile ()
 

Private Attributes

QScopedPointer< Privatem_d
 
Ui::KisInputConfigurationPage * ui
 

Detailed Description

A Configuration Dialog Page to configure the canvas input.

Definition at line 22 of file kis_input_configuration_page.h.

Constructor & Destructor Documentation

◆ KisInputConfigurationPage()

KisInputConfigurationPage::KisInputConfigurationPage ( QWidget * parent = 0,
Qt::WindowFlags f = Qt::WindowFlags() )

Definition at line 33 of file kis_input_configuration_page.cpp.

34 : QWidget(parent, f)
35 , m_d(new Private)
36{
37 ui = new Ui::KisInputConfigurationPage;
38 ui->setupUi(this);
39
40 ui->profileComboBox->setModel(new KisInputProfileModel(ui->profileComboBox));
42 connect(ui->profileComboBox, SIGNAL(currentTextChanged(QString)), SLOT(changeCurrentProfile(QString)));
43
44 ui->editProfilesButton->setIcon(KisIconUtils::loadIcon("document-edit"));
45
46 connect(ui->editProfilesButton, SIGNAL(clicked(bool)), SLOT(editProfilesButtonClicked()));
47 connect(KisInputProfileManager::instance(), SIGNAL(profilesChanged()), SLOT(updateSelectedProfile()));
50 this,
52
54 Q_FOREACH(KisAbstractInputAction * action, actions) {
56 item->setAction(action);
57 ui->configurationItemsArea->addWidget(item);
58 m_d->actionInputConfigurationMap.insert(action, item);
59 connect(item,
61 this,
63 Qt::UniqueConnection);
64 }
66 ui->configurationItemsArea->addStretch(20); // ensures listed input are on top
67
68 QScroller *scroller = KisKineticScroller::createPreconfiguredScroller(ui->scrollArea);
69 if (scroller) {
70 connect(scroller, SIGNAL(stateChanged(QScroller::State)),
71 this, SLOT(slotScrollerStateChanged(QScroller::State)));
72 }
73}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
Abstract base class for input actions.
A collapsible widget displaying an action, its description and associated shortcuts.
void setAction(KisAbstractInputAction *action)
void slotScrollerStateChanged(QScroller::State state)
Ui::KisInputConfigurationPage * ui
void changeCurrentProfile(const QString &newProfile)
QList< KisAbstractInputAction * > actions
static KisInputProfileManager * instance()
A model providing a list of profiles available.
QIcon loadIcon(const QString &name)
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)

References KisInputProfileManager::actions, changeCurrentProfile(), checkForConflicts(), connect(), KisKineticScroller::createPreconfiguredScroller(), KisInputProfileManager::currentProfileChanged(), editProfilesButtonClicked(), KisInputConfigurationPageItem::inputConfigurationChanged(), KisInputProfileManager::instance(), KisIconUtils::loadIcon(), m_d, KisInputConfigurationPageItem::setAction(), slotScrollerStateChanged(), ui, and updateSelectedProfile().

◆ ~KisInputConfigurationPage()

KisInputConfigurationPage::~KisInputConfigurationPage ( )
default

Member Function Documentation

◆ changeCurrentProfile

void KisInputConfigurationPage::changeCurrentProfile ( const QString & newProfile)
privateslot

◆ checkForConflicts

void KisInputConfigurationPage::checkForConflicts ( )
privateslot

Definition at line 87 of file kis_input_configuration_page.cpp.

88{
89 // reset all of them first.
90 Q_FOREACH (KisInputConfigurationPageItem *pageItem, m_d->actionInputConfigurationMap.values()) {
91 pageItem->setWarningEnabled(false);
92 }
93 const QList<KisShortcutConfiguration *> conflictingShortcuts =
95 KisInputProfileManager::instance()->currentProfile());
96
97 if (conflictingShortcuts.isEmpty()) {
98 return;
99 }
100
101 struct ShortcutInfo {
103 QStringList actionTexts;
104 };
105 QMap<QString, ShortcutInfo> conflictingShortcutsMap;
106
107 Q_FOREACH (KisShortcutConfiguration *shortcut, conflictingShortcuts) {
108 if (shortcut->action()) {
109 if (m_d->actionInputConfigurationMap.contains(shortcut->action())) {
110 ShortcutInfo &shortcutInfo = conflictingShortcutsMap[shortcut->getInputText()];
111 shortcutInfo.shortcutObjects.append(shortcut);
112 const QString subActionName = shortcut->action()->shortcutIndexes().key(shortcut->mode());
113 shortcutInfo.actionTexts.append(shortcut->action()->name() + " → " + subActionName);
114 } else {
115 qWarning() << "KisInputConfigurationPageItem does not exist for the specified action:"
116 << shortcut->action()->name();
117 }
118 } else {
119 qWarning() << "Action not set for the given shortcut.";
120 }
121 }
122
123 QMap<KisAbstractInputAction *, QSet<QString>> infoTexts;
124 Q_FOREACH (const ShortcutInfo &shortcutInfo, conflictingShortcutsMap) {
125 const QString text = "<b>" + shortcutInfo.shortcutObjects.first()->getInputText() + "</b>" + "<br>&nbsp;&nbsp;"
126 + shortcutInfo.actionTexts.join("<br>&nbsp;&nbsp;");
127 Q_FOREACH (KisShortcutConfiguration *shortcut, shortcutInfo.shortcutObjects) {
128 infoTexts[shortcut->action()] << text;
129 }
130 }
131
132 QMapIterator<KisAbstractInputAction *, QSet<QString>> it(infoTexts);
133 while (it.hasNext()) {
134 it.next();
135 QSetIterator<QString> it2(it.value());
136 if (!it2.hasNext()) {
137 continue;
138 }
139 QString text = "<ul> <li>" + it2.next() + "</li>";
140 while (it2.hasNext()) {
141 text += "<li>" + it2.next() + "</li>";
142 }
143 text += "</ul>";
144 m_d->actionInputConfigurationMap[it.key()]->setWarningEnabled(true, text);
145 }
146}
virtual QHash< QString, int > shortcutIndexes() const
void setWarningEnabled(bool enabled, QString additionalToolTipText=QString())
QList< KisShortcutConfiguration * > getConflictingShortcuts(KisInputProfile *profile)
A class encapsulating all settings for a single shortcut.
KisAbstractInputAction * action() const

References KisShortcutConfiguration::action(), KisInputProfileManager::getConflictingShortcuts(), KisShortcutConfiguration::getInputText(), KisInputProfileManager::instance(), m_d, KisShortcutConfiguration::mode(), KisAbstractInputAction::name, KisInputConfigurationPageItem::setWarningEnabled(), and KisAbstractInputAction::shortcutIndexes().

◆ editProfilesButtonClicked

void KisInputConfigurationPage::editProfilesButtonClicked ( )
privateslot

Definition at line 168 of file kis_input_configuration_page.cpp.

169{
171 dialog.exec();
172}
A dialog that provides facilities to edit all the available profiles.

◆ revertChanges

void KisInputConfigurationPage::revertChanges ( )
slot

◆ saveChanges

void KisInputConfigurationPage::saveChanges ( )
slot

◆ setDefaults

void KisInputConfigurationPage::setDefaults ( )
slot

Definition at line 148 of file kis_input_configuration_page.cpp.

149{
151
152 QDir profileDir(KoResourcePaths::saveLocation("data", "input/", false));
153 KisConfig(false).setCurrentInputProfile("Krita Default");
154
155 if (profileDir.exists()) {
156 QStringList entries = profileDir.entryList(QStringList() << "*.profile", QDir::Files | QDir::NoDotAndDotDot);
157 Q_FOREACH(const QString & file, entries) {
158 profileDir.remove(file);
159 }
160
162 changeCurrentProfile("Krita Default");
164 }
165 ui->profileComboBox->setCurrentItem("Krita Default");
166}
QList< QString > QStringList
void setCurrentInputProfile(const QString &name)
static QString saveLocation(const QString &type, const QString &suffix=QString(), bool create=true)

References changeCurrentProfile(), KisInputProfileManager::instance(), KisInputProfileManager::loadProfiles(), KoResourcePaths::saveLocation(), KisConfig::setCurrentInputProfile(), KisInputProfileManager::setCurrentProfile(), and ui.

◆ slotScrollerStateChanged

void KisInputConfigurationPage::slotScrollerStateChanged ( QScroller::State state)
inlineslot

Definition at line 33 of file kis_input_configuration_page.h.

KRITAWIDGETUTILS_EXPORT void updateCursor(QWidget *source, QScroller::State state)

References KisKineticScroller::updateCursor().

◆ updateSelectedProfile

void KisInputConfigurationPage::updateSelectedProfile ( )
privateslot

Definition at line 174 of file kis_input_configuration_page.cpp.

175{
176 if (KisInputProfileManager::instance()->currentProfile()) {
177 ui->profileComboBox->setCurrentItem(KisInputProfileManager::instance()->currentProfile()->name());
178 }
179}
const char * name(StandardAction id)

References KisInputProfileManager::instance(), and ui.

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisInputConfigurationPage::m_d
private

Definition at line 45 of file kis_input_configuration_page.h.

◆ ui

Ui::KisInputConfigurationPage* KisInputConfigurationPage::ui
private

Definition at line 43 of file kis_input_configuration_page.h.


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