File indexing completed on 2024-04-28 09:47:01

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 altnwidget
0008 #define altnwidget
0009 
0010 #include "multicontainerwidget.h"
0011 
0012 class QPaintEvent;
0013 class AltnRegExp;
0014 
0015 /**
0016    RegExp widget for alternatives.
0017 
0018    @internal
0019 */
0020 class AltnWidget : public MultiContainerWidget
0021 {
0022 public:
0023     AltnWidget(RegExpEditorWindow *editorWindow, QWidget *parent);
0024     AltnWidget(AltnRegExp *regexp, RegExpEditorWindow *editorWindow, QWidget *parent);
0025     void addNewChild(DragAccepter *accepter, RegExpWidget *child) override;
0026     QSize sizeHint() const override;
0027     RegExp *regExp() const override;
0028     void applyRegExpToSelection(RegExpType type) override;
0029     RegExpType type() const override
0030     {
0031         return ALTN;
0032     }
0033 
0034     RegExp *selection() const override;
0035     bool validateSelection() const override;
0036     void setConcChild(ConcWidget *child) override;
0037     void addNewConcChild(DragAccepter *accepter, ConcWidget *child) override;
0038     void deleteSelection() override;
0039 
0040 protected:
0041     void paintEvent(QPaintEvent *e) override;
0042 
0043 private:
0044     /**
0045        This functions runs through all the dragaccepters and calls @ref
0046        DragAccepter::setDrawLine.
0047     */
0048     void updateDrawLineInfo();
0049 
0050     QString _text;
0051     mutable QSize _textSize;
0052 
0053     mutable int _childrenWidth;
0054     mutable int _childrenHeight;
0055 };
0056 
0057 #endif // altnwidget