Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Topic Designer for the Script Editor - Set Geometry & Z-Index, delete Topics, etc.
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*
|
||||
* Created by Mike Wille, SLSE, 2017-06-09
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Plugins/PresentationManagement/Gui/Script/Common/preguiscriptcommon_export.h>
|
||||
#include <TopicEditorBase/topic_editor_utils.h>
|
||||
|
||||
#include <QWidget>
|
||||
#include <QVector>
|
||||
#include <QLinkedList>
|
||||
#include <QPointer>
|
||||
#include <QScrollArea>
|
||||
|
||||
|
||||
namespace PresentationManagement
|
||||
{
|
||||
|
||||
class PREGUISCRIPTCOMMON_EXPORT TopicDesigner: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum class HandleType
|
||||
{
|
||||
None, Whole,
|
||||
TopLeft, TopCenter, TopRight,
|
||||
CenterLeft, CenterRight,
|
||||
BottomLeft, BottomCenter, BottomRight
|
||||
};
|
||||
|
||||
explicit TopicDesigner(QWidget *parent = nullptr, QWidget* previewWidget = nullptr);
|
||||
~TopicDesigner();
|
||||
|
||||
void loadTopicList(const QVector<TopicEditorBase::TopicData> &topicsList); // also clears
|
||||
QVector<TopicEditorBase::TopicData> exportTopicList() const;
|
||||
void selectTopic(int topicId);
|
||||
TopicEditorBase::TopicData &selectedTopicData() noexcept(false);
|
||||
void setTopicData(const TopicEditorBase::TopicData &data);
|
||||
|
||||
private:
|
||||
enum class Affection { x, y, w, h, Whole, };
|
||||
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
void mouseMoveEvent(QMouseEvent *event) override;
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||
void keyPressEvent(QKeyEvent *event) override;
|
||||
int heightForWidth(int width) const override;
|
||||
|
||||
void paintSelectedTopicItem(QPainter *p, const TopicEditorBase::TopicData &data);
|
||||
QRect handleRect(const TopicEditorBase::TopicData &data, const HandleType &ht);
|
||||
QRect topicItemRect(const TopicEditorBase::TopicData &data);
|
||||
|
||||
bool checkConstraints(TopicEditorBase::TopicData &selected);
|
||||
void setCursorFromHandleType(const HandleType &ht);
|
||||
double oneWidthPixelInPercent();
|
||||
double oneHeightPixelInPercent();
|
||||
|
||||
void unselect();
|
||||
void findSelection(const QPoint &pos); // looks for Topic(s) on the clicked position and selects those Topics
|
||||
void internalSelectTopic(int topicId);
|
||||
|
||||
void setValues(const TopicEditorBase::TopicData &data, const QPoint &pos);
|
||||
void affect(TopicEditorBase::TopicData &selected, const Affection &affection, const QPoint &pos);
|
||||
void deleteTopicItem(const TopicEditorBase::TopicData &data);
|
||||
|
||||
public slots:
|
||||
void incIndex(const TopicEditorBase::TopicData &selected);
|
||||
void decIndex(const TopicEditorBase::TopicData &selected);
|
||||
void toFront(const TopicEditorBase::TopicData &selected);
|
||||
void toBack(const TopicEditorBase::TopicData &selected);
|
||||
|
||||
signals:
|
||||
void deleteTopicItem(int topicId);
|
||||
void topicSelected(int topicId);
|
||||
void unselected();
|
||||
void changesMade();
|
||||
|
||||
private:
|
||||
QLinkedList<TopicEditorBase::TopicData> m_topicDataList;
|
||||
int m_selectedTopicId; // must be inside the list....
|
||||
int m_lowestImportIndex;
|
||||
|
||||
HandleType m_currentResizeHandle;
|
||||
HandleType m_resizeHandleActive; // saves us code dups
|
||||
QPointF m_wholeOrgPos;
|
||||
QPointer<QWidget> m_drawWidgetPreviewContent;
|
||||
QScrollArea *m_scrollArea{nullptr};
|
||||
|
||||
};
|
||||
|
||||
} // namespace PresentationManagement
|
||||
Reference in new issue
Block a user