File indexing completed on 2024-05-05 03:51:45

0001 /*.
0002     SPDX-FileCopyrightText: 2007 Vladimir Kuznetsov <ks.vladimir@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef STEP_ITEMPALETTE_H
0008 #define STEP_ITEMPALETTE_H
0009 
0010 #include <QDockWidget>
0011 #include <QList>
0012 
0013 class WorldModel;
0014 class QToolButton;
0015 class QScrollArea;
0016 class QAction;
0017 class QActionGroup;
0018 class PaletteLayout;
0019 
0020 namespace StepCore { class MetaObject; }
0021 
0022 class ItemPalette: public QDockWidget
0023 {
0024     Q_OBJECT
0025 
0026 public:
0027     explicit ItemPalette(WorldModel* worldModel, QWidget* parent = nullptr);
0028 
0029 signals:
0030     void beginAddItem(const QString& name);
0031 
0032 public slots:
0033     void endAddItem(const QString& name, bool success);
0034 
0035 protected slots:
0036     void actionTriggered(QAction* action);
0037     void showButtonTextToggled(bool b);
0038 
0039 protected:
0040     void createSeparator();
0041     void createToolButton(QAction* action);
0042     void createObjectAction(const StepCore::MetaObject* metaObject);
0043 
0044     bool event(QEvent* event) override;
0045 
0046     WorldModel*     _worldModel;
0047     QScrollArea*    _scrollArea;
0048     QWidget*        _widget;
0049     PaletteLayout*  _layout;
0050 
0051     QAction*        _pointerAction;
0052     QActionGroup*   _actionGroup;
0053 
0054     QList<QToolButton*> _toolButtons;
0055 };
0056 
0057 #endif
0058