File indexing completed on 2024-04-21 03:57:50

0001 /*
0002     SPDX-FileCopyrightText: 2011-2018 Dominik Haumann <dhaumann@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef VARIABLE_EDITOR_H
0008 #define VARIABLE_EDITOR_H
0009 
0010 #include <QWidget>
0011 
0012 class KateHelpButton;
0013 
0014 class VariableBoolItem;
0015 class VariableColorItem;
0016 class VariableFontItem;
0017 class VariableItem;
0018 class VariableStringListItem;
0019 class VariableIntItem;
0020 class VariableStringItem;
0021 class VariableSpellCheckItem;
0022 class VariableRemoveSpacesItem;
0023 
0024 class KColorCombo;
0025 class QFontComboBox;
0026 class QCheckBox;
0027 class QComboBox;
0028 class QLabel;
0029 class QLineEdit;
0030 class QSpinBox;
0031 
0032 namespace Sonnet
0033 {
0034 class DictionaryComboBox;
0035 }
0036 
0037 class VariableEditor : public QWidget
0038 {
0039     Q_OBJECT
0040 
0041 public:
0042     explicit VariableEditor(VariableItem *item, QWidget *parent = nullptr);
0043 
0044     VariableItem *item() const;
0045 
0046 Q_SIGNALS:
0047     void valueChanged();
0048 
0049 protected Q_SLOTS:
0050     void itemEnabled(bool enabled);
0051     void activateItem();
0052 
0053 protected:
0054     void paintEvent(QPaintEvent *event) override;
0055     void enterEvent(QEnterEvent *event) override;
0056     void leaveEvent(QEvent *event) override;
0057 
0058 private:
0059     VariableItem *m_item;
0060 
0061     QCheckBox *m_checkBox;
0062     QLabel *m_variable;
0063     QLabel *m_helpText;
0064     KateHelpButton *m_btnHelp;
0065 };
0066 
0067 class VariableIntEditor : public VariableEditor
0068 {
0069 public:
0070     VariableIntEditor(VariableIntItem *item, QWidget *parent);
0071 
0072 protected:
0073     void setItemValue(int newValue);
0074 
0075 private:
0076     QSpinBox *m_spinBox;
0077 };
0078 
0079 class VariableBoolEditor : public VariableEditor
0080 {
0081 public:
0082     VariableBoolEditor(VariableBoolItem *item, QWidget *parent);
0083 
0084 protected:
0085     void setItemValue(int enabled);
0086 
0087 private:
0088     QComboBox *m_comboBox;
0089 };
0090 
0091 class VariableStringListEditor : public VariableEditor
0092 {
0093 public:
0094     VariableStringListEditor(VariableStringListItem *item, QWidget *parent);
0095 
0096 protected:
0097     void setItemValue(const QString &newValue);
0098 
0099 private:
0100     QComboBox *m_comboBox;
0101 };
0102 
0103 class VariableColorEditor : public VariableEditor
0104 {
0105 public:
0106     VariableColorEditor(VariableColorItem *item, QWidget *parent);
0107 
0108 protected:
0109     void setItemValue(const QColor &newValue);
0110 
0111 private:
0112     KColorCombo *m_comboBox;
0113 };
0114 
0115 class VariableFontEditor : public VariableEditor
0116 {
0117 public:
0118     VariableFontEditor(VariableFontItem *item, QWidget *parent);
0119 
0120 protected:
0121     void setItemValue(const QFont &newValue);
0122 
0123 private:
0124     QFontComboBox *m_comboBox;
0125 };
0126 
0127 class VariableStringEditor : public VariableEditor
0128 {
0129 public:
0130     VariableStringEditor(VariableStringItem *item, QWidget *parent);
0131 
0132 protected:
0133     void setItemValue(const QString &newValue);
0134 
0135 private:
0136     QLineEdit *m_lineEdit;
0137 };
0138 
0139 class VariableSpellCheckEditor : public VariableEditor
0140 {
0141 public:
0142     VariableSpellCheckEditor(VariableSpellCheckItem *item, QWidget *parent);
0143 
0144 protected:
0145     void setItemValue(const QString &newValue);
0146 
0147 private:
0148     Sonnet::DictionaryComboBox *m_dictionaryCombo;
0149 };
0150 
0151 class VariableRemoveSpacesEditor : public VariableEditor
0152 {
0153 public:
0154     VariableRemoveSpacesEditor(VariableRemoveSpacesItem *item, QWidget *parent);
0155 
0156 protected:
0157     void setItemValue(int enabled);
0158 
0159 private:
0160     QComboBox *m_comboBox;
0161 };
0162 
0163 #endif