More work on Amuse Editor

This commit is contained in:
Jack Andersen
2018-07-17 21:39:26 -10:00
parent 3f265cdb46
commit f50ee6e8f1
38 changed files with 1193 additions and 140 deletions

View File

@@ -2,13 +2,65 @@
#define AMUSE_STATUSBAR_WIDGET_HPP
#include <QStatusBar>
#include <QLabel>
class StatusBarFocus;
class StatusBarWidget : public QStatusBar
{
friend class StatusBarFocus;
Q_OBJECT
QLabel* m_normalMessage;
StatusBarFocus* m_curFocus = nullptr;
public:
explicit StatusBarWidget(QWidget* parent = Q_NULLPTR);
explicit StatusBarWidget(QWidget* parent = Q_NULLPTR) : QStatusBar(parent) {}
void setNormalMessage(const QString& message) { m_normalMessage->setText(message); }
};
class StatusBarFocus : public QObject
{
Q_OBJECT
QString m_message;
public:
explicit StatusBarFocus(StatusBarWidget* statusWidget)
: QObject(statusWidget) {}
~StatusBarFocus() { exit(); }
void setMessage(const QString& message)
{
m_message = message;
if (StatusBarWidget* widget = qobject_cast<StatusBarWidget*>(parent()))
{
if (widget->m_curFocus == this)
{
if (m_message.isEmpty())
widget->clearMessage();
else
widget->showMessage(m_message);
}
}
}
void enter()
{
if (StatusBarWidget* widget = qobject_cast<StatusBarWidget*>(parent()))
{
widget->m_curFocus = this;
if (m_message.isEmpty())
widget->clearMessage();
else
widget->showMessage(m_message);
}
}
void exit()
{
if (StatusBarWidget* widget = qobject_cast<StatusBarWidget*>(parent()))
{
if (widget->m_curFocus == this)
{
widget->clearMessage();
widget->m_curFocus = nullptr;
}
}
}
};
#endif //AMUSE_STATUSBAR_WIDGET_HPP