File indexing completed on 2024-05-05 16:18:15

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(QEvent *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     Q_OBJECT
0070 public:
0071     VariableIntEditor(VariableIntItem *item, QWidget *parent);
0072 
0073 protected Q_SLOTS:
0074     void setItemValue(int newValue);
0075 
0076 private:
0077     QSpinBox *m_spinBox;
0078 };
0079 
0080 class VariableBoolEditor : public VariableEditor
0081 {
0082     Q_OBJECT
0083 public:
0084     VariableBoolEditor(VariableBoolItem *item, QWidget *parent);
0085 
0086 protected Q_SLOTS:
0087     void setItemValue(int enabled);
0088 
0089 private:
0090     QComboBox *m_comboBox;
0091 };
0092 
0093 class VariableStringListEditor : public VariableEditor
0094 {
0095     Q_OBJECT
0096 public:
0097     VariableStringListEditor(VariableStringListItem *item, QWidget *parent);
0098 
0099 protected Q_SLOTS:
0100     void setItemValue(const QString &newValue);
0101 
0102 private:
0103     QComboBox *m_comboBox;
0104 };
0105 
0106 class VariableColorEditor : public VariableEditor
0107 {
0108     Q_OBJECT
0109 public:
0110     VariableColorEditor(VariableColorItem *item, QWidget *parent);
0111 
0112 protected Q_SLOTS:
0113     void setItemValue(const QColor &newValue);
0114 
0115 private:
0116     KColorCombo *m_comboBox;
0117 };
0118 
0119 class VariableFontEditor : public VariableEditor
0120 {
0121     Q_OBJECT
0122 public:
0123     VariableFontEditor(VariableFontItem *item, QWidget *parent);
0124 
0125 protected Q_SLOTS:
0126     void setItemValue(const QFont &newValue);
0127 
0128 private:
0129     QFontComboBox *m_comboBox;
0130 };
0131 
0132 class VariableStringEditor : public VariableEditor
0133 {
0134     Q_OBJECT
0135 public:
0136     VariableStringEditor(VariableStringItem *item, QWidget *parent);
0137 
0138 protected Q_SLOTS:
0139     void setItemValue(const QString &newValue);
0140 
0141 private:
0142     QLineEdit *m_lineEdit;
0143 };
0144 
0145 class VariableSpellCheckEditor : public VariableEditor
0146 {
0147     Q_OBJECT
0148 public:
0149     VariableSpellCheckEditor(VariableSpellCheckItem *item, QWidget *parent);
0150 
0151 protected Q_SLOTS:
0152     void setItemValue(const QString &newValue);
0153 
0154 private:
0155     Sonnet::DictionaryComboBox *m_dictionaryCombo;
0156 };
0157 
0158 class VariableRemoveSpacesEditor : public VariableEditor
0159 {
0160     Q_OBJECT
0161 public:
0162     VariableRemoveSpacesEditor(VariableRemoveSpacesItem *item, QWidget *parent);
0163 
0164 protected Q_SLOTS:
0165     void setItemValue(int enabled);
0166 
0167 private:
0168     QComboBox *m_comboBox;
0169 };
0170 
0171 #endif