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
|
../stopmotion/gphotocam.h
|
||||||
cameracapturelevelcontrol.h
|
cameracapturelevelcontrol.h
|
||||||
navtageditorpopup.h
|
navtageditorpopup.h
|
||||||
|
viewereventlogpopup.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(HEADERS
|
set(HEADERS
|
||||||
|
@ -388,6 +389,7 @@ set(SOURCES
|
||||||
../stopmotion/gphotocam.cpp
|
../stopmotion/gphotocam.cpp
|
||||||
cameracapturelevelcontrol.cpp
|
cameracapturelevelcontrol.cpp
|
||||||
navtageditorpopup.cpp
|
navtageditorpopup.cpp
|
||||||
|
viewereventlogpopup.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if(WITH_TRANSLATION)
|
if(WITH_TRANSLATION)
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "toonz/tonionskinmaskhandle.h"
|
#include "toonz/tonionskinmaskhandle.h"
|
||||||
#include "toonz/stage.h"
|
#include "toonz/stage.h"
|
||||||
#include "toonz/toonzfolders.h"
|
#include "toonz/toonzfolders.h"
|
||||||
|
#include "viewereventlogpopup.h"
|
||||||
|
|
||||||
// TnzCore includes
|
// TnzCore includes
|
||||||
#include "tsystem.h"
|
#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,
|
QWidget* PreferencesPopup::createUI(PreferencesItemId id,
|
||||||
const QList<ComboBoxItem>& comboItems,
|
const QList<ComboBoxItem>& comboItems,
|
||||||
bool isLineEdit) {
|
bool isLineEdit) {
|
||||||
|
@ -1554,7 +1567,8 @@ inline T PreferencesPopup::getUI(PreferencesItemId id) {
|
||||||
PreferencesPopup::PreferencesPopup()
|
PreferencesPopup::PreferencesPopup()
|
||||||
: QDialog(TApp::instance()->getMainWindow())
|
: QDialog(TApp::instance()->getMainWindow())
|
||||||
, m_formatProperties()
|
, m_formatProperties()
|
||||||
, m_additionalStyleEdit(nullptr) {
|
, m_additionalStyleEdit(nullptr)
|
||||||
|
, m_viewerEventLogPopup(0) {
|
||||||
setWindowTitle(tr("Preferences"));
|
setWindowTitle(tr("Preferences"));
|
||||||
setObjectName("PreferencesPopup");
|
setObjectName("PreferencesPopup");
|
||||||
|
|
||||||
|
@ -2307,11 +2321,15 @@ QWidget* PreferencesPopup::createTouchTabletPage() {
|
||||||
new CheckBox(tr("Enable Touch Gesture Controls"));
|
new CheckBox(tr("Enable Touch Gesture Controls"));
|
||||||
enableTouchGestures->setChecked(touchAction->isChecked());
|
enableTouchGestures->setChecked(touchAction->isChecked());
|
||||||
|
|
||||||
|
QPushButton* viewerEventLogBtn =
|
||||||
|
new QPushButton(tr("Open Viewer Event Log"));
|
||||||
|
|
||||||
QWidget* widget = new QWidget(this);
|
QWidget* widget = new QWidget(this);
|
||||||
QGridLayout* lay = new QGridLayout();
|
QGridLayout* lay = new QGridLayout();
|
||||||
setupLayout(lay);
|
setupLayout(lay);
|
||||||
|
|
||||||
lay->addWidget(enableTouchGestures, 0, 0, 1, 2);
|
lay->addWidget(enableTouchGestures, 0, 0, 1, 2);
|
||||||
|
lay->addWidget(viewerEventLogBtn, 0, 3, 1, 1);
|
||||||
if (winInkAvailable) insertUI(winInkEnabled, lay);
|
if (winInkAvailable) insertUI(winInkEnabled, lay);
|
||||||
#ifdef WITH_WINTAB
|
#ifdef WITH_WINTAB
|
||||||
insertUI(useQtNativeWinInk, lay);
|
insertUI(useQtNativeWinInk, lay);
|
||||||
|
@ -2326,6 +2344,9 @@ QWidget* PreferencesPopup::createTouchTabletPage() {
|
||||||
SLOT(setChecked(bool)));
|
SLOT(setChecked(bool)));
|
||||||
ret = ret && connect(touchAction, SIGNAL(triggered(bool)),
|
ret = ret && connect(touchAction, SIGNAL(triggered(bool)),
|
||||||
enableTouchGestures, SLOT(setChecked(bool)));
|
enableTouchGestures, SLOT(setChecked(bool)));
|
||||||
|
ret = ret && connect(viewerEventLogBtn, SIGNAL(clicked()), this,
|
||||||
|
SLOT(onOpenViewerEventLog()));
|
||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
|
|
||||||
return widget;
|
return widget;
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
// TnzLib includes
|
// TnzLib includes
|
||||||
#include "toonz/preferences.h"
|
#include "toonz/preferences.h"
|
||||||
|
|
||||||
|
#include "viewereventlogpopup.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QFontComboBox>
|
#include <QFontComboBox>
|
||||||
|
@ -96,6 +98,8 @@ private:
|
||||||
QCheckBox* m_importLibraryCB;
|
QCheckBox* m_importLibraryCB;
|
||||||
QCheckBox* m_importToonzfarmCB;
|
QCheckBox* m_importToonzfarmCB;
|
||||||
|
|
||||||
|
ViewerEventLogPopup *m_viewerEventLogPopup;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void rebuildFormatsList();
|
void rebuildFormatsList();
|
||||||
QList<ComboBoxItem> buildFontStyleList() const;
|
QList<ComboBoxItem> buildFontStyleList() const;
|
||||||
|
@ -193,6 +197,7 @@ private slots:
|
||||||
void onLutPathChanged();
|
void onLutPathChanged();
|
||||||
void onCheck30bitDisplay();
|
void onCheck30bitDisplay();
|
||||||
void onFrameFormatButton();
|
void onFrameFormatButton();
|
||||||
|
void onOpenViewerEventLog();
|
||||||
|
|
||||||
void onAddLevelFormat();
|
void onAddLevelFormat();
|
||||||
void onRemoveLevelFormat();
|
void onRemoveLevelFormat();
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#include "stopmotion.h"
|
#include "stopmotion.h"
|
||||||
#include "tstopwatch.h"
|
#include "tstopwatch.h"
|
||||||
|
|
||||||
|
#include "viewereventlogpopup.h"
|
||||||
|
|
||||||
// TnzQt includes
|
// TnzQt includes
|
||||||
#include "toonzqt/tselectionhandle.h"
|
#include "toonzqt/tselectionhandle.h"
|
||||||
#include "toonzqt/styleselection.h"
|
#include "toonzqt/styleselection.h"
|
||||||
|
@ -1284,88 +1286,28 @@ void SceneViewer::touchEvent(QTouchEvent *e, int type) {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
bool SceneViewer::event(QEvent *e) {
|
bool SceneViewer::event(QEvent *e) {
|
||||||
/*
|
|
||||||
switch (e->type()) {
|
switch (e->type()) {
|
||||||
// case QEvent::Enter:
|
case QEvent::Enter:
|
||||||
// qDebug() << "[enter] ************************** Enter";
|
case QEvent::Leave:
|
||||||
// break;
|
case QEvent::TabletPress:
|
||||||
// case QEvent::Leave:
|
case QEvent::TabletMove:
|
||||||
// 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::TabletRelease:
|
case QEvent::TabletRelease:
|
||||||
qDebug() << "[enter] ************************** TabletRelease mouseState("
|
|
||||||
<< m_mouseState << ") tabletState(" << m_tabletState << ")";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case QEvent::TouchBegin:
|
case QEvent::TouchBegin:
|
||||||
qDebug() << "[enter] ************************** TouchBegin";
|
|
||||||
break;
|
|
||||||
case QEvent::TouchEnd:
|
case QEvent::TouchEnd:
|
||||||
qDebug() << "[enter] ************************** TouchEnd";
|
|
||||||
break;
|
|
||||||
case QEvent::TouchCancel:
|
case QEvent::TouchCancel:
|
||||||
qDebug() << "[enter] ************************** TouchCancel";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case QEvent::Gesture:
|
case QEvent::Gesture:
|
||||||
qDebug() << "[enter] ************************** Gesture";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case QEvent::MouseButtonPress:
|
case QEvent::MouseButtonPress:
|
||||||
qDebug()
|
case QEvent::MouseMove:
|
||||||
<< "[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::MouseButtonRelease:
|
case QEvent::MouseButtonRelease:
|
||||||
qDebug()
|
|
||||||
<< "[enter] ************************** MouseButtonRelease mouseState("
|
|
||||||
<< m_mouseState << ") tabletState(" << m_tabletState << ")";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case QEvent::MouseButtonDblClick:
|
case QEvent::MouseButtonDblClick:
|
||||||
qDebug() << "[enter] ************************** MouseButtonDblClick";
|
case QEvent::KeyPress:
|
||||||
break;
|
case QEvent::KeyRelease:
|
||||||
|
ViewerEventLogManager::instance()->addEventMessage(e);
|
||||||
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;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qDebug() << "[enter] ************************** Event: "<< e;
|
// qDebug() << "[enter] ************************** Event: "<< e;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
int key = 0;
|
int key = 0;
|
||||||
if (e->type() == QEvent::KeyPress) {
|
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