File indexing completed on 2024-04-14 05:44:27

0001 /*
0002  *  SPDX-FileCopyrightText: 2002-2003 Jesper K. Pedersen <blackie@kde.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-only
0005  **/
0006 
0007 #ifndef zerowidget
0008 #define zerowidget
0009 
0010 #include "regexpwidget.h"
0011 
0012 /**
0013    Represents any widget in the regular expression dialog, which do not have sub widget.
0014    @internal
0015 */
0016 class ZeroWidget : public RegExpWidget
0017 {
0018 public:
0019     ZeroWidget(const QString &text, RegExpEditorWindow *editorWindow, QWidget *parent);
0020     void addNewChild(DragAccepter *accepter, RegExpWidget *child) override;
0021     QSize sizeHint() const override;
0022 
0023 protected:
0024     void paintEvent(QPaintEvent *e) override;
0025 
0026 private:
0027     QString _text;
0028 
0029     mutable QSize _textSize;
0030     mutable QSize _boxSize;
0031 };
0032 
0033 /**
0034    RegExp widget for `any single character'
0035    @internal
0036 */
0037 class AnyCharWidget : public ZeroWidget
0038 {
0039 public:
0040     AnyCharWidget(RegExpEditorWindow *editorWindow, QWidget *parent);
0041 
0042     RegExp *regExp() const override;
0043     RegExpType type() const override
0044     {
0045         return DOT;
0046     }
0047 };
0048 
0049 /**
0050    RegExp widget for `beginning of line'
0051    @internal
0052 */
0053 class BegLineWidget : public ZeroWidget
0054 {
0055 public:
0056     BegLineWidget(RegExpEditorWindow *editorWindow, QWidget *parent);
0057     RegExp *regExp() const override;
0058     RegExpType type() const override
0059     {
0060         return BEGLINE;
0061     }
0062 };
0063 
0064 /**
0065    RegExp widget for `end of line'
0066    @internal
0067 */
0068 class EndLineWidget : public ZeroWidget
0069 {
0070 public:
0071     EndLineWidget(RegExpEditorWindow *editorWindow, QWidget *parent);
0072     RegExp *regExp() const override;
0073     RegExpType type() const override
0074     {
0075         return ENDLINE;
0076     }
0077 };
0078 
0079 /**
0080    RegExp widget for `word boundary'
0081    @internal
0082 */
0083 class WordBoundaryWidget : public ZeroWidget
0084 {
0085 public:
0086     WordBoundaryWidget(RegExpEditorWindow *editorWindow, QWidget *parent);
0087     RegExp *regExp() const override;
0088     RegExpType type() const override
0089     {
0090         return WORDBOUNDARY;
0091     }
0092 };
0093 
0094 /**
0095    RegExp widget for `end of word'
0096    @internal
0097 */
0098 class NonWordBoundaryWidget : public ZeroWidget
0099 {
0100 public:
0101     NonWordBoundaryWidget(RegExpEditorWindow *editorWindow, QWidget *parent);
0102     RegExp *regExp() const override;
0103     RegExpType type() const override
0104     {
0105         return NONWORDBOUNDARY;
0106     }
0107 };
0108 
0109 #endif // zerowidget