File indexing completed on 2024-04-28 15:30:34

0001 /*
0002     SPDX-FileCopyrightText: 2002-2010 Anders Lund <anders@alweb.dk>
0003 
0004     Rewritten based on code of:
0005     SPDX-FileCopyrightText: 2002 Michael Goffioul <kdeprint@swing.be>
0006 
0007     SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009 
0010 #ifndef KATE_PRINT_CONFIG_WIDGETS_H
0011 #define KATE_PRINT_CONFIG_WIDGETS_H
0012 
0013 #include <QWidget>
0014 
0015 class KColorButton;
0016 class KFontRequester;
0017 
0018 class QCheckBox;
0019 class QLabel;
0020 class QLineEdit;
0021 class QComboBox;
0022 class QSpinBox;
0023 class QGroupBox;
0024 
0025 namespace KatePrinter
0026 {
0027 // BEGIN Text settings
0028 /*
0029  *  Text settings page:
0030  *  - Print Line Numbers
0031  *    () Smart () Yes () No
0032  */
0033 class KatePrintTextSettings : public QWidget
0034 {
0035     Q_OBJECT
0036 public:
0037     explicit KatePrintTextSettings(QWidget *parent = nullptr);
0038     ~KatePrintTextSettings() override;
0039 
0040     bool printLineNumbers();
0041     bool printGuide();
0042     bool dontPrintFoldedCode() const;
0043 
0044 private:
0045     void readSettings();
0046     void writeSettings();
0047 
0048     QCheckBox *cbLineNumbers;
0049     QCheckBox *cbGuide;
0050     QCheckBox *cbFolding;
0051 };
0052 // END Text Settings
0053 
0054 // BEGIN Header/Footer
0055 /*
0056  *  Header & Footer page:
0057  *  - enable header/footer
0058  *  - header/footer props
0059  *    o formats
0060  *    o colors
0061  */
0062 
0063 class KatePrintHeaderFooter : public QWidget
0064 {
0065     Q_OBJECT
0066 public:
0067     explicit KatePrintHeaderFooter(QWidget *parent = nullptr);
0068     ~KatePrintHeaderFooter() override;
0069 
0070     QFont font();
0071 
0072     bool useHeader();
0073     QStringList headerFormat();
0074     QColor headerForeground();
0075     QColor headerBackground();
0076     bool useHeaderBackground();
0077 
0078     bool useFooter();
0079     QStringList footerFormat();
0080     QColor footerForeground();
0081     QColor footerBackground();
0082     bool useFooterBackground();
0083 
0084 public Q_SLOTS:
0085     void showContextMenu(const QPoint &pos);
0086 
0087 private:
0088     void readSettings();
0089     void writeSettings();
0090 
0091     QCheckBox *cbEnableHeader, *cbEnableFooter;
0092     KFontRequester *lFontPreview;
0093     QGroupBox *gbHeader, *gbFooter;
0094     QLineEdit *leHeaderLeft, *leHeaderCenter, *leHeaderRight;
0095     KColorButton *kcbtnHeaderFg, *kcbtnHeaderBg;
0096     QCheckBox *cbHeaderEnableBgColor;
0097     QLineEdit *leFooterLeft, *leFooterCenter, *leFooterRight;
0098     KColorButton *kcbtnFooterFg, *kcbtnFooterBg;
0099     QCheckBox *cbFooterEnableBgColor;
0100 };
0101 
0102 // END Header/Footer
0103 
0104 // BEGIN Layout
0105 /*
0106  *  Layout page:
0107  *  - Color scheme
0108  *  - Use Box
0109  *  - Box properties
0110  *    o Width
0111  *    o Margin
0112  *    o Color
0113  */
0114 class KatePrintLayout : public QWidget
0115 {
0116     Q_OBJECT
0117 public:
0118     explicit KatePrintLayout(QWidget *parent = nullptr);
0119     ~KatePrintLayout() override;
0120 
0121     QString colorScheme();
0122     QFont textFont();
0123     bool useBackground();
0124     bool useBox();
0125     int boxWidth();
0126     int boxMargin();
0127     QColor boxColor();
0128 
0129 private:
0130     void readSettings();
0131     void writeSettings();
0132 
0133     QComboBox *cmbSchema;
0134     KFontRequester *lFontPreview;
0135     QCheckBox *cbEnableBox;
0136     QCheckBox *cbDrawBackground;
0137     QGroupBox *gbBoxProps;
0138     QSpinBox *sbBoxWidth;
0139     QSpinBox *sbBoxMargin;
0140     KColorButton *kcbtnBoxColor;
0141 };
0142 // END Layout
0143 
0144 }
0145 
0146 #endif