dust3d/src/skeletonpartlistwidget.h

85 lines
2.6 KiB
C
Raw Normal View History

#ifndef SKELETON_PART_LIST_WIDGET_H
#define SKELETON_PART_LIST_WIDGET_H
#include <QListWidget>
#include <map>
#include <QLabel>
#include <QPushButton>
#include <QMouseEvent>
#include "skeletondocument.h"
class SkeletonPartWidget : public QWidget
{
Q_OBJECT
2018-04-08 01:30:55 +00:00
signals:
void setPartLockState(QUuid partId, bool locked);
void setPartVisibleState(QUuid partId, bool visible);
void setPartSubdivState(QUuid partId, bool subdived);
2018-04-11 09:19:27 +00:00
void setPartDisableState(QUuid partId, bool disabled);
2018-04-15 12:11:51 +00:00
void setPartXmirrorState(QUuid partId, bool mirrored);
void setPartZmirrorState(QUuid partId, bool mirrored);
2018-04-17 16:14:31 +00:00
void setPartDeformThickness(QUuid partId, float thickness);
void setPartDeformWidth(QUuid partId, float width);
void checkPart(QUuid partId);
void groupOperationAdded();
public:
SkeletonPartWidget(const SkeletonDocument *document, QUuid partId);
void reload();
2018-04-08 01:30:55 +00:00
void updatePreview();
void updateLockButton();
void updateVisibleButton();
void updateSubdivButton();
2018-04-11 09:19:27 +00:00
void updateDisableButton();
2018-04-15 12:11:51 +00:00
void updateXmirrorButton();
void updateZmirrorButton();
2018-04-17 16:14:31 +00:00
void updateDeformButton();
void updateCheckedState(bool checked);
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
public slots:
2018-04-17 16:14:31 +00:00
void showDeformSettingPopup(const QPoint &pos);
private:
const SkeletonDocument *m_document;
QUuid m_partId;
QLabel *m_previewLabel;
QPushButton *m_visibleButton;
2018-04-07 12:30:26 +00:00
QPushButton *m_lockButton;
QPushButton *m_subdivButton;
2018-04-11 09:19:27 +00:00
QPushButton *m_disableButton;
2018-04-15 12:11:51 +00:00
QPushButton *m_xMirrorButton;
QPushButton *m_zMirrorButton;
2018-04-17 16:14:31 +00:00
QPushButton *m_deformButton;
QPushButton *m_roundButton;
QLabel *m_nameLabel;
QWidget *m_backgroundWidget;
2018-04-08 01:30:55 +00:00
private:
2018-04-17 16:14:31 +00:00
void initToolButton(QPushButton *button);
2018-04-08 01:30:55 +00:00
void initButton(QPushButton *button);
void updateButton(QPushButton *button, QChar icon, bool highlighted);
};
class SkeletonPartListWidget : public QListWidget
{
Q_OBJECT
public:
SkeletonPartListWidget(const SkeletonDocument *document, QWidget *parent);
public slots:
void partChanged(QUuid partId);
void partListChanged();
void partPreviewChanged(QUuid partid);
2018-04-08 01:30:55 +00:00
void partLockStateChanged(QUuid partId);
void partVisibleStateChanged(QUuid partId);
void partSubdivStateChanged(QUuid partId);
2018-04-11 09:19:27 +00:00
void partDisableStateChanged(QUuid partId);
2018-04-15 12:11:51 +00:00
void partXmirrorStateChanged(QUuid partId);
2018-04-17 16:14:31 +00:00
void partDeformChanged(QUuid partId);
void partChecked(QUuid partId);
void partUnchecked(QUuid partId);
protected:
virtual QSize sizeHint() const;
private:
const SkeletonDocument *m_document;
std::map<QUuid, QListWidgetItem *> m_itemMap;
};
#endif