Merge pull request #1237 from manongjohn/viewer_event_log
Viewer Event Log
This commit is contained in:
commit
77cd09bc9c
|
@ -141,6 +141,7 @@ set(MOC_HEADERS
|
|||
../stopmotion/gphotocam.h
|
||||
cameracapturelevelcontrol.h
|
||||
navtageditorpopup.h
|
||||
viewereventlogpopup.h
|
||||
)
|
||||
|
||||
set(HEADERS
|
||||
|
@ -388,6 +389,7 @@ set(SOURCES
|
|||
../stopmotion/gphotocam.cpp
|
||||
cameracapturelevelcontrol.cpp
|
||||
navtageditorpopup.cpp
|
||||
viewereventlogpopup.cpp
|
||||
)
|
||||
|
||||
if(WITH_TRANSLATION)
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "toonz/tonionskinmaskhandle.h"
|
||||
#include "toonz/stage.h"
|
||||
#include "toonz/toonzfolders.h"
|
||||
#include "viewereventlogpopup.h"
|
||||
|
||||
// TnzCore includes
|
||||
#include "tsystem.h"
|
||||
|
@ -981,6 +982,18 @@ void PreferencesPopup::onImportPolicyExternallyChanged(int policy) {
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void PreferencesPopup::onOpenViewerEventLog() {
|
||||
if (!m_viewerEventLogPopup) {
|
||||
m_viewerEventLogPopup = new ViewerEventLogPopup();
|
||||
ViewerEventLogManager::instance()->setViewerEventLogPopup(
|
||||
m_viewerEventLogPopup);
|
||||
}
|
||||
|
||||
m_viewerEventLogPopup->show();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
QWidget* PreferencesPopup::createUI(PreferencesItemId id,
|
||||
const QList<ComboBoxItem>& comboItems,
|
||||
bool isLineEdit) {
|
||||
|
@ -1554,7 +1567,8 @@ inline T PreferencesPopup::getUI(PreferencesItemId id) {
|
|||
PreferencesPopup::PreferencesPopup()
|
||||
: QDialog(TApp::instance()->getMainWindow())
|
||||
, m_formatProperties()
|
||||
, m_additionalStyleEdit(nullptr) {
|
||||
, m_additionalStyleEdit(nullptr)
|
||||
, m_viewerEventLogPopup(0) {
|
||||
setWindowTitle(tr("Preferences"));
|
||||
setObjectName("PreferencesPopup");
|
||||
|
||||
|
@ -2307,11 +2321,15 @@ QWidget* PreferencesPopup::createTouchTabletPage() {
|
|||
new CheckBox(tr("Enable Touch Gesture Controls"));
|
||||
enableTouchGestures->setChecked(touchAction->isChecked());
|
||||
|
||||
QPushButton* viewerEventLogBtn =
|
||||
new QPushButton(tr("Open Viewer Event Log"));
|
||||
|
||||
QWidget* widget = new QWidget(this);
|
||||
QGridLayout* lay = new QGridLayout();
|
||||
setupLayout(lay);
|
||||
|
||||
lay->addWidget(enableTouchGestures, 0, 0, 1, 2);
|
||||
lay->addWidget(viewerEventLogBtn, 0, 3, 1, 1);
|
||||
if (winInkAvailable) insertUI(winInkEnabled, lay);
|
||||
#ifdef WITH_WINTAB
|
||||
insertUI(useQtNativeWinInk, lay);
|
||||
|
@ -2326,6 +2344,9 @@ QWidget* PreferencesPopup::createTouchTabletPage() {
|
|||
SLOT(setChecked(bool)));
|
||||
ret = ret && connect(touchAction, SIGNAL(triggered(bool)),
|
||||
enableTouchGestures, SLOT(setChecked(bool)));
|
||||
ret = ret && connect(viewerEventLogBtn, SIGNAL(clicked()), this,
|
||||
SLOT(onOpenViewerEventLog()));
|
||||
|
||||
assert(ret);
|
||||
|
||||
return widget;
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
// TnzLib includes
|
||||
#include "toonz/preferences.h"
|
||||
|
||||
#include "viewereventlogpopup.h"
|
||||
|
||||
// Qt includes
|
||||
#include <QComboBox>
|
||||
#include <QFontComboBox>
|
||||
|
@ -96,6 +98,8 @@ private:
|
|||
QCheckBox* m_importLibraryCB;
|
||||
QCheckBox* m_importToonzfarmCB;
|
||||
|
||||
ViewerEventLogPopup *m_viewerEventLogPopup;
|
||||
|
||||
private:
|
||||
void rebuildFormatsList();
|
||||
QList<ComboBoxItem> buildFontStyleList() const;
|
||||
|
@ -193,6 +197,7 @@ private slots:
|
|||
void onLutPathChanged();
|
||||
void onCheck30bitDisplay();
|
||||
void onFrameFormatButton();
|
||||
void onOpenViewerEventLog();
|
||||
|
||||
void onAddLevelFormat();
|
||||
void onRemoveLevelFormat();
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
#include "stopmotion.h"
|
||||
#include "tstopwatch.h"
|
||||
|
||||
#include "viewereventlogpopup.h"
|
||||
|
||||
// TnzQt includes
|
||||
#include "toonzqt/tselectionhandle.h"
|
||||
#include "toonzqt/styleselection.h"
|
||||
|
@ -1284,88 +1286,28 @@ void SceneViewer::touchEvent(QTouchEvent *e, int type) {
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool SceneViewer::event(QEvent *e) {
|
||||
/*
|
||||
switch (e->type()) {
|
||||
// case QEvent::Enter:
|
||||
// qDebug() << "[enter] ************************** Enter";
|
||||
// break;
|
||||
// case QEvent::Leave:
|
||||
// qDebug() << "[enter] ************************** Leave";
|
||||
// break;
|
||||
|
||||
case QEvent::TabletPress: {
|
||||
QTabletEvent *te = static_cast<QTabletEvent *>(e);
|
||||
qDebug() << "[enter] ************************** TabletPress mouseState("
|
||||
<< m_mouseState << ") tabletState(" << m_tabletState
|
||||
<< ") pressure(" << m_pressure << ") pointerType("
|
||||
<< te->pointerType() << ") device(" << te->device() << ")";
|
||||
} break;
|
||||
// case QEvent::TabletMove:
|
||||
// qDebug() << "[enter] ************************** TabletMove
|
||||
//mouseState("<<m_mouseState<<") tabletState("<<m_tabletState<<") pressure("
|
||||
//<< m_pressure << ")";
|
||||
// break;
|
||||
case QEvent::Enter:
|
||||
case QEvent::Leave:
|
||||
case QEvent::TabletPress:
|
||||
case QEvent::TabletMove:
|
||||
case QEvent::TabletRelease:
|
||||
qDebug() << "[enter] ************************** TabletRelease mouseState("
|
||||
<< m_mouseState << ") tabletState(" << m_tabletState << ")";
|
||||
break;
|
||||
|
||||
case QEvent::TouchBegin:
|
||||
qDebug() << "[enter] ************************** TouchBegin";
|
||||
break;
|
||||
case QEvent::TouchEnd:
|
||||
qDebug() << "[enter] ************************** TouchEnd";
|
||||
break;
|
||||
case QEvent::TouchCancel:
|
||||
qDebug() << "[enter] ************************** TouchCancel";
|
||||
break;
|
||||
|
||||
case QEvent::Gesture:
|
||||
qDebug() << "[enter] ************************** Gesture";
|
||||
break;
|
||||
|
||||
case QEvent::MouseButtonPress:
|
||||
qDebug()
|
||||
<< "[enter] ************************** MouseButtonPress mouseState("
|
||||
<< m_mouseState << ") tabletState(" << m_tabletState << ") pressure("
|
||||
<< m_pressure << ") tabletEvent(" << m_tabletEvent << ")";
|
||||
break;
|
||||
// case QEvent::MouseMove:
|
||||
// qDebug() << "[enter] ************************** MouseMove mouseState("
|
||||
//<< m_mouseState << ") tabletState("<<m_tabletState<<") pressure(" <<
|
||||
//m_pressure << ")";
|
||||
// break;
|
||||
case QEvent::MouseMove:
|
||||
case QEvent::MouseButtonRelease:
|
||||
qDebug()
|
||||
<< "[enter] ************************** MouseButtonRelease mouseState("
|
||||
<< m_mouseState << ") tabletState(" << m_tabletState << ")";
|
||||
break;
|
||||
|
||||
case QEvent::MouseButtonDblClick:
|
||||
qDebug() << "[enter] ************************** MouseButtonDblClick";
|
||||
break;
|
||||
|
||||
case QEvent::KeyPress: {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(e);
|
||||
QString keyStr = QKeySequence(keyEvent->key() + keyEvent->modifiers())
|
||||
.toString();
|
||||
qDebug() << "[enter] ************************** KeyPress key=" <<
|
||||
keyStr;
|
||||
}
|
||||
break;
|
||||
|
||||
case QEvent::KeyRelease: {
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(e);
|
||||
QString keyStr = QKeySequence(keyEvent->key() + keyEvent->modifiers())
|
||||
.toString();
|
||||
qDebug() << "[enter] ************************** KeyRelease key=" <<
|
||||
keyStr;
|
||||
}
|
||||
case QEvent::KeyPress:
|
||||
case QEvent::KeyRelease:
|
||||
ViewerEventLogManager::instance()->addEventMessage(e);
|
||||
break;
|
||||
default:
|
||||
qDebug() << "[enter] ************************** Event: "<< e;
|
||||
// qDebug() << "[enter] ************************** Event: "<< e;
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
int key = 0;
|
||||
if (e->type() == QEvent::KeyPress) {
|
||||
|
|
321
toonz/sources/toonz/viewereventlogpopup.cpp
Normal file
321
toonz/sources/toonz/viewereventlogpopup.cpp
Normal file
|
@ -0,0 +1,321 @@
|
|||
#include "viewereventlogpopup.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QTabletEvent>
|
||||
#include <QTextEdit>
|
||||
#include <QVBoxLayout>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
|
||||
//=============================================================================
|
||||
// ViewerEventLog
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
ViewerEventLogPopup::ViewerEventLogPopup(QWidget *parent)
|
||||
: QSplitter(parent), m_logging(true), m_lastMsgCount(0) {
|
||||
setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||
setWindowTitle(tr("Viewer Event Log"));
|
||||
|
||||
// style sheet
|
||||
setObjectName("ViewerEventLog");
|
||||
setFrameStyle(QFrame::StyledPanel);
|
||||
|
||||
//-------Left side
|
||||
m_eventEnter = new QCheckBox(tr("Enter"), this);
|
||||
m_eventLeave = new QCheckBox(tr("Leave"), this);
|
||||
m_eventTabletPress = new QCheckBox(tr("Stylus Press"), this);
|
||||
m_eventTabletMove = new QCheckBox(tr("Stylus Move"), this);
|
||||
m_eventTabletRelease = new QCheckBox(tr("Stylus Release"), this);
|
||||
m_eventTouchBegin = new QCheckBox(tr("Touch Begin"), this);
|
||||
m_eventTouchEnd = new QCheckBox(tr("Touch End"), this);
|
||||
m_eventTouchCancel = new QCheckBox(tr("Touch Cancel"), this);
|
||||
m_eventGesture = new QCheckBox(tr("Gesture"), this);
|
||||
m_eventMouseButtonPress = new QCheckBox(tr("Mouse Button Press"), this);
|
||||
m_eventMouseMove = new QCheckBox(tr("Mouse Move"), this);
|
||||
m_eventMouseButtonRelease = new QCheckBox(tr("Mouse Button Release"), this);
|
||||
m_eventMouseButtonDblClick =
|
||||
new QCheckBox(tr("Mouse Button Double-Click"), this);
|
||||
m_eventKeyPress = new QCheckBox(tr("Key Press"), this);
|
||||
m_eventKeyRelease = new QCheckBox(tr("Key Release"), this);
|
||||
|
||||
m_eventEnter->setChecked(true);
|
||||
m_eventLeave->setChecked(true);
|
||||
m_eventTabletPress->setChecked(true);
|
||||
m_eventTabletMove->setChecked(true);
|
||||
m_eventTabletRelease->setChecked(true);
|
||||
m_eventTouchBegin->setChecked(true);
|
||||
m_eventTouchEnd->setChecked(true);
|
||||
m_eventTouchCancel->setChecked(true);
|
||||
m_eventGesture->setChecked(true);
|
||||
m_eventMouseButtonPress->setChecked(true);
|
||||
m_eventMouseMove->setChecked(true);
|
||||
m_eventMouseButtonRelease->setChecked(true);
|
||||
m_eventMouseButtonDblClick->setChecked(true);
|
||||
m_eventKeyPress->setChecked(true);
|
||||
m_eventKeyRelease->setChecked(true);
|
||||
|
||||
QFrame *filterBox = new QFrame(this);
|
||||
QVBoxLayout *vFilterLayout = new QVBoxLayout(filterBox);
|
||||
vFilterLayout->setMargin(10);
|
||||
vFilterLayout->setSpacing(5);
|
||||
|
||||
vFilterLayout->addWidget(new QLabel(tr("Capture events:"), this));
|
||||
vFilterLayout->addWidget(m_eventEnter);
|
||||
vFilterLayout->addWidget(m_eventLeave);
|
||||
vFilterLayout->addWidget(m_eventTabletPress);
|
||||
vFilterLayout->addWidget(m_eventTabletMove);
|
||||
vFilterLayout->addWidget(m_eventTabletRelease);
|
||||
vFilterLayout->addWidget(m_eventTouchBegin);
|
||||
vFilterLayout->addWidget(m_eventTouchEnd);
|
||||
vFilterLayout->addWidget(m_eventTouchCancel);
|
||||
vFilterLayout->addWidget(m_eventGesture);
|
||||
vFilterLayout->addWidget(m_eventMouseButtonPress);
|
||||
vFilterLayout->addWidget(m_eventMouseMove);
|
||||
vFilterLayout->addWidget(m_eventMouseButtonRelease);
|
||||
vFilterLayout->addWidget(m_eventMouseButtonDblClick);
|
||||
vFilterLayout->addWidget(m_eventKeyPress);
|
||||
vFilterLayout->addWidget(m_eventKeyRelease);
|
||||
|
||||
vFilterLayout->addStretch();
|
||||
|
||||
filterBox->setLayout(vFilterLayout);
|
||||
|
||||
addWidget(filterBox);
|
||||
//------end left side
|
||||
|
||||
//------begin right side
|
||||
|
||||
m_pauseBtn = new QPushButton(tr("Pause"), this);
|
||||
connect(m_pauseBtn, SIGNAL(pressed()), this, SLOT(onPauseButtonPressed()));
|
||||
QPushButton *copyBtn = new QPushButton(tr("Copy to Clipboard"), this);
|
||||
connect(copyBtn, SIGNAL(pressed()), this, SLOT(onCopyButtonPressed()));
|
||||
QPushButton *clearBtn = new QPushButton(tr("Clear Log"), this);
|
||||
connect(clearBtn, SIGNAL(pressed()), this, SLOT(onClearButtonPressed()));
|
||||
|
||||
m_eventLog = new QTextEdit(this);
|
||||
m_eventLog->setReadOnly(true);
|
||||
m_eventLog->setLineWrapMode(QTextEdit::LineWrapMode::NoWrap);
|
||||
m_eventLog->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||
|
||||
QFrame *logBox = new QFrame(this);
|
||||
|
||||
QVBoxLayout *vLogLayout = new QVBoxLayout(logBox);
|
||||
|
||||
vLogLayout->addWidget(m_eventLog);
|
||||
|
||||
QHBoxLayout *btnLayout = new QHBoxLayout();
|
||||
btnLayout->addWidget(m_pauseBtn);
|
||||
btnLayout->addWidget(copyBtn);
|
||||
btnLayout->addWidget(clearBtn);
|
||||
|
||||
vLogLayout->addLayout(btnLayout);
|
||||
|
||||
logBox->setLayout(vFilterLayout);
|
||||
|
||||
addWidget(logBox);
|
||||
|
||||
//------end right side (the task sheet)
|
||||
|
||||
setStretchFactor(1, 2);
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
void ViewerEventLogPopup::addEventMessage(QEvent *e) {
|
||||
if (!m_logging) return;
|
||||
|
||||
QString eventMsg = tr("Unknown event");
|
||||
|
||||
switch (e->type()) {
|
||||
case QEvent::Enter: {
|
||||
if (!m_eventEnter->isChecked()) return;
|
||||
eventMsg = tr("Entered viewer");
|
||||
} break;
|
||||
|
||||
case QEvent::Leave: {
|
||||
if (!m_eventLeave->isChecked()) return;
|
||||
eventMsg = tr("Left viewer");
|
||||
} break;
|
||||
|
||||
case QEvent::TabletPress: {
|
||||
if (!m_eventTabletPress->isChecked()) return;
|
||||
|
||||
QTabletEvent *te = dynamic_cast<QTabletEvent *>(e);
|
||||
float pressure = (int)(te->pressure() * 1000 + 0.5);
|
||||
eventMsg = tr("Stylus pressed at X=%1 Y=%2 Pressure=%3%")
|
||||
.arg(te->pos().x())
|
||||
.arg(te->pos().y())
|
||||
.arg(pressure / 10.0);
|
||||
} break;
|
||||
|
||||
case QEvent::TabletMove: {
|
||||
if (!m_eventTabletMove->isChecked()) return;
|
||||
|
||||
QTabletEvent *te = dynamic_cast<QTabletEvent *>(e);
|
||||
QString operation =
|
||||
((te->buttons() & Qt::LeftButton) ||
|
||||
(te->buttons() & Qt::RightButton) || (te->buttons() & Qt::MidButton))
|
||||
? tr("dragged")
|
||||
: tr("moved");
|
||||
float pressure = (int)(te->pressure() * 1000 + 0.5);
|
||||
eventMsg = tr("Stylus %1 to X=%2 Y=%3 Pressure=%4%")
|
||||
.arg(operation)
|
||||
.arg(te->pos().x())
|
||||
.arg(te->pos().y())
|
||||
.arg(pressure / 10.0);
|
||||
} break;
|
||||
|
||||
case QEvent::TabletRelease: {
|
||||
if (!m_eventTabletRelease->isChecked()) return;
|
||||
|
||||
eventMsg = tr("Stylus released");
|
||||
} break;
|
||||
|
||||
case QEvent::TouchBegin: {
|
||||
if (!m_eventTouchBegin->isChecked()) return;
|
||||
|
||||
eventMsg = tr("Touch begins");
|
||||
} break;
|
||||
|
||||
case QEvent::TouchEnd: {
|
||||
if (!m_eventTouchEnd->isChecked()) return;
|
||||
|
||||
eventMsg = tr("Touch ended");
|
||||
} break;
|
||||
|
||||
case QEvent::TouchCancel: {
|
||||
if (!m_eventTouchCancel->isChecked()) return;
|
||||
|
||||
eventMsg = tr("Touch cancelled");
|
||||
} break;
|
||||
|
||||
case QEvent::Gesture: {
|
||||
if (!m_eventGesture->isChecked()) return;
|
||||
|
||||
eventMsg = tr("Gesture encountered");
|
||||
} break;
|
||||
|
||||
case QEvent::MouseButtonPress: {
|
||||
if (!m_eventMouseButtonPress->isChecked()) return;
|
||||
|
||||
QMouseEvent *me = dynamic_cast<QMouseEvent *>(e);
|
||||
QString usedButton =
|
||||
(me->buttons() & Qt::LeftButton)
|
||||
? tr("LEFT")
|
||||
: (me->buttons() & Qt::RightButton)
|
||||
? tr("RIGHT")
|
||||
: (me->buttons() & Qt::MidButton) ? tr("MIDDLE") : tr("NO");
|
||||
|
||||
eventMsg = tr("Mouse %1 button pressed at X=%2 Y=%3")
|
||||
.arg(usedButton)
|
||||
.arg(me->pos().x())
|
||||
.arg(me->pos().y());
|
||||
} break;
|
||||
|
||||
case QEvent::MouseMove: {
|
||||
if (!m_eventMouseMove->isChecked()) return;
|
||||
|
||||
QMouseEvent *me = dynamic_cast<QMouseEvent *>(e);
|
||||
QString operation =
|
||||
((me->buttons() & Qt::LeftButton) ||
|
||||
(me->buttons() & Qt::RightButton) || (me->buttons() & Qt::MidButton))
|
||||
? tr("dragged")
|
||||
: tr("moved");
|
||||
eventMsg = tr("Mouse %1 to X=%2 Y=%3")
|
||||
.arg(operation)
|
||||
.arg(me->pos().x())
|
||||
.arg(me->pos().y());
|
||||
} break;
|
||||
|
||||
case QEvent::MouseButtonRelease: {
|
||||
if (!m_eventMouseButtonRelease->isChecked()) return;
|
||||
|
||||
eventMsg = tr("Mouse button released");
|
||||
} break;
|
||||
|
||||
case QEvent::MouseButtonDblClick: {
|
||||
if (!m_eventMouseButtonDblClick->isChecked()) return;
|
||||
|
||||
QMouseEvent *me = dynamic_cast<QMouseEvent *>(e);
|
||||
QString usedButton =
|
||||
(me->buttons() & Qt::LeftButton)
|
||||
? tr("LEFT")
|
||||
: (me->buttons() & Qt::RightButton)
|
||||
? tr("RIGHT")
|
||||
: (me->buttons() & Qt::MidButton) ? tr("MIDDLE") : tr("NO");
|
||||
|
||||
eventMsg = tr("Mouse %1 button double-clicked at X=%2 Y=%3")
|
||||
.arg(usedButton)
|
||||
.arg(me->pos().x())
|
||||
.arg(me->pos().y());
|
||||
} break;
|
||||
|
||||
case QEvent::KeyPress: {
|
||||
if (!m_eventKeyPress->isChecked()) return;
|
||||
|
||||
QKeyEvent *keyEvent = dynamic_cast<QKeyEvent *>(e);
|
||||
QString keyStr =
|
||||
QKeySequence(keyEvent->key() + keyEvent->modifiers()).toString();
|
||||
eventMsg = tr("Key pressed: %1").arg(keyStr);
|
||||
} break;
|
||||
|
||||
case QEvent::KeyRelease: {
|
||||
if (!m_eventKeyRelease->isChecked()) return;
|
||||
|
||||
QKeyEvent *keyEvent = dynamic_cast<QKeyEvent *>(e);
|
||||
QString keyStr =
|
||||
QKeySequence(keyEvent->key() + keyEvent->modifiers()).toString();
|
||||
eventMsg = tr("Key released: %1").arg(keyStr);
|
||||
} break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_lastMsg == eventMsg) {
|
||||
m_lastMsgCount++;
|
||||
return;
|
||||
}
|
||||
|
||||
m_lastMsg = eventMsg;
|
||||
|
||||
if (m_lastMsgCount > 1)
|
||||
eventMsg += " [x" + QString::number(m_lastMsgCount) + "]";
|
||||
|
||||
m_eventLog->append(eventMsg);
|
||||
m_eventLog->moveCursor(QTextCursor::End);
|
||||
|
||||
m_lastMsgCount = 1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
void ViewerEventLogPopup::onPauseButtonPressed() {
|
||||
m_logging = !m_logging;
|
||||
if (m_logging) {
|
||||
m_pauseBtn->setText("Pause");
|
||||
m_eventLog->append("*** Event logging resumed ***");
|
||||
} else {
|
||||
m_pauseBtn->setText("Resume");
|
||||
m_eventLog->append("*** Event logging paused ***");
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
void ViewerEventLogPopup::onCopyButtonPressed() {
|
||||
QClipboard *clipboard = QApplication::clipboard();
|
||||
clipboard->setText(m_eventLog->toPlainText());
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
void ViewerEventLogPopup::onClearButtonPressed() { m_eventLog->clear(); }
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
void ViewerEventLogPopup::hideEvent(QHideEvent *e) {
|
||||
if (m_logging) onPauseButtonPressed();
|
||||
}
|
73
toonz/sources/toonz/viewereventlogpopup.h
Normal file
73
toonz/sources/toonz/viewereventlogpopup.h
Normal file
|
@ -0,0 +1,73 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef VIEWER_EVENT_LOG_H
|
||||
#define VIEWER_EVENT_LOG_H
|
||||
|
||||
#include <QSplitter>
|
||||
#include <QEvent>
|
||||
|
||||
class QTextEdit;
|
||||
class QCheckBox;
|
||||
class QPushButton;
|
||||
|
||||
//**************************************************************
|
||||
// Viewer Event Log Popup
|
||||
//**************************************************************
|
||||
|
||||
class ViewerEventLogPopup final : public QSplitter {
|
||||
Q_OBJECT
|
||||
|
||||
QTextEdit *m_eventLog;
|
||||
QCheckBox *m_eventEnter, *m_eventLeave, *m_eventTabletPress,
|
||||
*m_eventTabletMove, *m_eventTabletRelease, *m_eventTouchBegin,
|
||||
*m_eventTouchEnd, *m_eventTouchCancel, *m_eventGesture,
|
||||
*m_eventMouseButtonPress, *m_eventMouseMove, *m_eventMouseButtonRelease,
|
||||
*m_eventMouseButtonDblClick, *m_eventKeyPress, *m_eventKeyRelease;
|
||||
|
||||
QPushButton *m_pauseBtn;
|
||||
|
||||
QString m_lastMsg;
|
||||
int m_lastMsgCount;
|
||||
|
||||
bool m_logging;
|
||||
|
||||
public:
|
||||
ViewerEventLogPopup(QWidget *parent = 0);
|
||||
|
||||
void addEventMessage(QEvent *e);
|
||||
|
||||
void hideEvent(QHideEvent *e) override;
|
||||
|
||||
public slots:
|
||||
void onPauseButtonPressed();
|
||||
void onCopyButtonPressed();
|
||||
void onClearButtonPressed();
|
||||
};
|
||||
|
||||
//**************************************************************
|
||||
// Viewer Event Log Manager
|
||||
//**************************************************************
|
||||
|
||||
class ViewerEventLogManager { // singleton
|
||||
|
||||
ViewerEventLogPopup *m_viewerEventLogPopup;
|
||||
|
||||
ViewerEventLogManager() {}
|
||||
|
||||
public:
|
||||
static ViewerEventLogManager *instance() {
|
||||
static ViewerEventLogManager _instance;
|
||||
return &_instance;
|
||||
}
|
||||
|
||||
void setViewerEventLogPopup(ViewerEventLogPopup *popup) {
|
||||
m_viewerEventLogPopup = popup;
|
||||
}
|
||||
|
||||
void addEventMessage(QEvent *e) {
|
||||
if (!m_viewerEventLogPopup) return;
|
||||
m_viewerEventLogPopup->addEventMessage(e);
|
||||
}
|
||||
};
|
||||
|
||||
#endif // VIEWER_EVENT_LOG_H
|
Loading…
Reference in a new issue