refactoring: unify viewer and comboviewer classes
This commit is contained in:
parent
67d7d16507
commit
b387bd82b6
5 changed files with 266 additions and 1129 deletions
|
@ -1,78 +1,30 @@
|
||||||
|
|
||||||
// TnzCore includes
|
|
||||||
#include "tconvert.h"
|
|
||||||
#include "tgeometry.h"
|
|
||||||
#include "tgl.h"
|
|
||||||
#include "trop.h"
|
|
||||||
#include "tstopwatch.h"
|
|
||||||
#include "tsystem.h"
|
|
||||||
|
|
||||||
// TnzLib includes
|
|
||||||
#include "toonz/tscenehandle.h"
|
|
||||||
#include "toonz/txsheethandle.h"
|
|
||||||
#include "toonz/tframehandle.h"
|
|
||||||
#include "toonz/tcolumnhandle.h"
|
|
||||||
#include "toonz/txshlevelhandle.h"
|
|
||||||
#include "toonz/toonzscene.h"
|
|
||||||
#include "toonz/sceneproperties.h"
|
|
||||||
#include "toonz/txsheet.h"
|
|
||||||
#include "toonz/stage.h"
|
|
||||||
#include "toonz/stage2.h"
|
|
||||||
#include "toonz/txshlevel.h"
|
|
||||||
#include "toonz/txshcell.h"
|
|
||||||
#include "toonz/tcamera.h"
|
|
||||||
#include "toonz/tstageobjecttree.h"
|
|
||||||
#include "toonz/tobjecthandle.h"
|
|
||||||
#include "toonz/tpalettehandle.h"
|
|
||||||
#include "toonz/tonionskinmaskhandle.h"
|
|
||||||
#include "toutputproperties.h"
|
|
||||||
#include "toonz/palettecontroller.h"
|
|
||||||
#include "toonz/toonzfolders.h"
|
|
||||||
#include "toonz/preferences.h"
|
|
||||||
#include "toonz/tproject.h"
|
|
||||||
|
|
||||||
// TnzQt includes
|
// TnzQt includes
|
||||||
#include "toonzqt/menubarcommand.h"
|
|
||||||
#include "toonzqt/dvdialog.h"
|
|
||||||
#include "toonzqt/gutil.h"
|
|
||||||
#include "toonzqt/imageutils.h"
|
#include "toonzqt/imageutils.h"
|
||||||
#include "toonzqt/flipconsole.h"
|
|
||||||
|
|
||||||
// TnzTools includes
|
// TnzTools includes
|
||||||
#include "tools/toolhandle.h"
|
|
||||||
#include "tools/tooloptions.h"
|
#include "tools/tooloptions.h"
|
||||||
|
|
||||||
// Tnz6 includes
|
// Tnz6 includes
|
||||||
#include "tapp.h"
|
#include "tapp.h"
|
||||||
#include "mainwindow.h"
|
#include "toolbar.h"
|
||||||
#include "sceneviewer.h"
|
|
||||||
#include "xsheetdragtool.h"
|
|
||||||
#include "ruler.h"
|
#include "ruler.h"
|
||||||
#include "menubarcommandids.h"
|
#include "menubarcommandids.h"
|
||||||
#include "toolbar.h"
|
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QPainter>
|
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
#include <QGridLayout>
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QDialogButtonBox>
|
|
||||||
#include <QAbstractButton>
|
|
||||||
#include <QMouseEvent>
|
|
||||||
#include <QWheelEvent>
|
|
||||||
#include <QLabel>
|
|
||||||
#include <QRadioButton>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QSlider>
|
|
||||||
#include <QButtonGroup>
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QToolBar>
|
|
||||||
#include <QMainWindow>
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
#include "comboviewerpane.h"
|
#include "comboviewerpane.h"
|
||||||
|
|
||||||
using namespace DVGui;
|
// this enum is to keep comaptibility with older versions
|
||||||
|
enum CV_Parts {
|
||||||
|
CVPARTS_None = 0,
|
||||||
|
CVPARTS_TOOLBAR = 0x1,
|
||||||
|
CVPARTS_TOOLOPTIONS = 0x2,
|
||||||
|
CVPARTS_FLIPCONSOLE = 0x4,
|
||||||
|
CVPARTS_End = 0x8,
|
||||||
|
CVPARTS_ALL = CVPARTS_TOOLBAR | CVPARTS_TOOLOPTIONS | CVPARTS_FLIPCONSOLE
|
||||||
|
};
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
// ComboViewerPanel
|
// ComboViewerPanel
|
||||||
|
@ -81,60 +33,26 @@ using namespace DVGui;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if QT_VERSION >= 0x050500
|
|
||||||
ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WindowFlags flags)
|
ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WindowFlags flags)
|
||||||
#else
|
: BaseViewerPanel(parent, flags) {
|
||||||
ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
|
||||||
#endif
|
|
||||||
: QFrame(parent) {
|
|
||||||
TApp *app = TApp::instance();
|
|
||||||
|
|
||||||
setFrameStyle(QFrame::StyledPanel);
|
|
||||||
setObjectName("ComboViewerPanel");
|
setObjectName("ComboViewerPanel");
|
||||||
|
|
||||||
|
TApp *app = TApp::instance();
|
||||||
|
|
||||||
// ToolBar
|
// ToolBar
|
||||||
m_toolbar = new Toolbar(this, true);
|
m_toolbar = new Toolbar(this, true);
|
||||||
// Tool Options
|
// Tool Options
|
||||||
m_toolOptions = new ToolOptions();
|
m_toolOptions = new ToolOptions();
|
||||||
m_toolOptions->setObjectName("ComboViewerToolOptions");
|
m_toolOptions->setObjectName("ComboViewerToolOptions");
|
||||||
|
// Rulers
|
||||||
// Viewer
|
|
||||||
ImageUtils::FullScreenWidget *fsWidget =
|
|
||||||
new ImageUtils::FullScreenWidget(this);
|
|
||||||
fsWidget->setWidget(m_sceneViewer = new SceneViewer(fsWidget));
|
|
||||||
m_sceneViewer->setIsStyleShortcutSwitchable();
|
|
||||||
|
|
||||||
#if defined(Q_OS_WIN) && (QT_VERSION >= 0x050500) && (QT_VERSION < 0x050600)
|
|
||||||
// Workaround for QTBUG-48288
|
|
||||||
// This code should be removed after updating Qt.
|
|
||||||
// Qt may crash in handling WM_SIZE of m_sceneViewer in splash.finish(&w)
|
|
||||||
// in main.cpp. To suppress sending WM_SIZE, set window position here.
|
|
||||||
// WM_SIZE will not be sent if window position is not changed.
|
|
||||||
::SetWindowPos(reinterpret_cast<HWND>(m_sceneViewer->winId()), HWND_TOP, 0, 0,
|
|
||||||
0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_vRuler = new Ruler(this, m_sceneViewer, true);
|
m_vRuler = new Ruler(this, m_sceneViewer, true);
|
||||||
m_hRuler = new Ruler(this, m_sceneViewer, false);
|
m_hRuler = new Ruler(this, m_sceneViewer, false);
|
||||||
|
|
||||||
m_sceneViewer->setRulers(m_vRuler, m_hRuler);
|
m_sceneViewer->setRulers(m_vRuler, m_hRuler);
|
||||||
|
|
||||||
m_keyFrameButton = new ViewerKeyframeNavigator(this, app->getCurrentFrame());
|
|
||||||
m_keyFrameButton->setObjectHandle(app->getCurrentObject());
|
|
||||||
m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
|
|
||||||
|
|
||||||
// FlipConsole
|
|
||||||
std::vector<int> buttonMask = {FlipConsole::eFilledRaster,
|
|
||||||
FlipConsole::eDefineLoadBox,
|
|
||||||
FlipConsole::eUseLoadBox};
|
|
||||||
|
|
||||||
/* --- layout --- */
|
/* --- layout --- */
|
||||||
QVBoxLayout *mainLayout = new QVBoxLayout();
|
|
||||||
mainLayout->setMargin(0);
|
|
||||||
mainLayout->setSpacing(0);
|
|
||||||
{
|
{
|
||||||
mainLayout->addWidget(m_toolbar, 0);
|
m_mainLayout->insertWidget(0, m_toolbar, 0);
|
||||||
mainLayout->addWidget(m_toolOptions, 0);
|
m_mainLayout->insertWidget(1, m_toolOptions, 0);
|
||||||
|
|
||||||
QGridLayout *viewerL = new QGridLayout();
|
QGridLayout *viewerL = new QGridLayout();
|
||||||
viewerL->setMargin(0);
|
viewerL->setMargin(0);
|
||||||
|
@ -142,68 +60,20 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
{
|
{
|
||||||
viewerL->addWidget(m_vRuler, 1, 0);
|
viewerL->addWidget(m_vRuler, 1, 0);
|
||||||
viewerL->addWidget(m_hRuler, 0, 1);
|
viewerL->addWidget(m_hRuler, 0, 1);
|
||||||
viewerL->addWidget(fsWidget, 1, 1);
|
viewerL->addWidget(m_fsWidget, 1, 1);
|
||||||
}
|
}
|
||||||
mainLayout->addLayout(viewerL, 1);
|
viewerL->setRowStretch(1, 1);
|
||||||
m_flipConsole =
|
viewerL->setColumnStretch(1, 1);
|
||||||
new FlipConsole(mainLayout, buttonMask, false, m_keyFrameButton,
|
m_mainLayout->insertLayout(2, viewerL, 1);
|
||||||
"SceneViewerConsole", this, true);
|
|
||||||
}
|
}
|
||||||
setLayout(mainLayout);
|
setLayout(m_mainLayout);
|
||||||
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eMatte, false, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eSave, false, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eCompare, false, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eSaveImg, false, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eGRed, false, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eGGreen, false, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eGBlue, false, false);
|
|
||||||
// m_flipConsole->enableButton(FlipConsole::eSound, false, false);
|
|
||||||
|
|
||||||
m_flipConsole->setFrameRate(app->getCurrentScene()
|
|
||||||
->getScene()
|
|
||||||
->getProperties()
|
|
||||||
->getOutputProperties()
|
|
||||||
->getFrameRate());
|
|
||||||
m_flipConsole->setFrameHandle(TApp::instance()->getCurrentFrame());
|
|
||||||
|
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
// When zoom changed, only if the viewer is active, change window title.
|
|
||||||
ret =
|
|
||||||
ret && connect(m_flipConsole, SIGNAL(buttonPressed(FlipConsole::EGadget)),
|
|
||||||
this, SLOT(onButtonPressed(FlipConsole::EGadget)));
|
|
||||||
ret = connect(m_sceneViewer, SIGNAL(onZoomChanged()),
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
ret = ret && connect(m_sceneViewer, SIGNAL(previewToggled()),
|
ret = ret && connect(m_sceneViewer, SIGNAL(previewToggled()),
|
||||||
SLOT(changeWindowTitle()));
|
SLOT(changeWindowTitle()));
|
||||||
ret = ret &&
|
|
||||||
connect(m_flipConsole, SIGNAL(playStateChanged(bool)),
|
|
||||||
TApp::instance()->getCurrentFrame(), SLOT(setPlaying(bool)));
|
|
||||||
ret = ret && connect(m_flipConsole, SIGNAL(playStateChanged(bool)), this,
|
|
||||||
SLOT(onPlayingStatusChanged(bool)));
|
|
||||||
ret = ret &&
|
|
||||||
connect(m_flipConsole, SIGNAL(buttonPressed(FlipConsole::EGadget)),
|
|
||||||
m_sceneViewer, SLOT(onButtonPressed(FlipConsole::EGadget)));
|
|
||||||
ret = ret && connect(m_sceneViewer, SIGNAL(previewStatusChanged()), this,
|
|
||||||
SLOT(update()));
|
|
||||||
ret = ret && connect(m_sceneViewer, SIGNAL(onFlipHChanged(bool)), this,
|
|
||||||
SLOT(setFlipHButtonChecked(bool)));
|
|
||||||
ret = ret && connect(m_sceneViewer, SIGNAL(onFlipVChanged(bool)), this,
|
|
||||||
SLOT(setFlipVButtonChecked(bool)));
|
|
||||||
ret = ret && connect(app->getCurrentScene(), SIGNAL(sceneSwitched()), this,
|
|
||||||
SLOT(onSceneSwitched()));
|
|
||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
|
|
||||||
m_flipConsole->setChecked(FlipConsole::eSound, true);
|
|
||||||
m_playSound = m_flipConsole->isChecked(FlipConsole::eSound);
|
|
||||||
m_flipConsole->setFrameRate(app->getCurrentScene()
|
|
||||||
->getScene()
|
|
||||||
->getProperties()
|
|
||||||
->getOutputProperties()
|
|
||||||
->getFrameRate());
|
|
||||||
|
|
||||||
UINT mask = 0;
|
UINT mask = 0;
|
||||||
mask = mask | eShowVcr;
|
mask = mask | eShowVcr;
|
||||||
mask = mask | eShowFramerate;
|
mask = mask | eShowFramerate;
|
||||||
|
@ -216,10 +86,8 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
m_flipConsole->setCustomizemask(mask);
|
m_flipConsole->setCustomizemask(mask);
|
||||||
|
|
||||||
// initial state of the parts
|
// initial state of the parts
|
||||||
m_visiblePartsFlag = CVPARTS_ALL;
|
m_visiblePartsFlag = VPPARTS_COMBO_ALL;
|
||||||
updateShowHide();
|
updateShowHide();
|
||||||
|
|
||||||
setFocusProxy(m_sceneViewer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -228,25 +96,13 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
|
|
||||||
void ComboViewerPanel::updateShowHide() {
|
void ComboViewerPanel::updateShowHide() {
|
||||||
// toolbar
|
// toolbar
|
||||||
m_toolbar->setVisible(m_visiblePartsFlag & CVPARTS_TOOLBAR);
|
m_toolbar->setVisible(m_visiblePartsFlag & VPPARTS_TOOLBAR);
|
||||||
// tool options bar
|
// tool options bar
|
||||||
m_toolOptions->setVisible(m_visiblePartsFlag & CVPARTS_TOOLOPTIONS);
|
m_toolOptions->setVisible(m_visiblePartsFlag & VPPARTS_TOOLOPTIONS);
|
||||||
// flip console
|
// flip console
|
||||||
m_flipConsole->showHidePlaybar(m_visiblePartsFlag & CVPARTS_PLAYBAR);
|
BaseViewerPanel::updateShowHide();
|
||||||
m_flipConsole->showHideFrameSlider(m_visiblePartsFlag & CVPARTS_FRAMESLIDER);
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
/*! showing the show/hide commands
|
|
||||||
*/
|
|
||||||
|
|
||||||
// void ComboViewerPanel::contextMenuEvent(QContextMenuEvent *event) {
|
|
||||||
// QMenu *menu = new QMenu(this);
|
|
||||||
// addShowHideContextMenu(menu);
|
|
||||||
// menu->exec(event->globalPos());
|
|
||||||
//}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void ComboViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
void ComboViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
||||||
|
@ -258,20 +114,20 @@ void ComboViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
||||||
QAction *frameSliderSHAct = showHideMenu->addAction(tr("Frame Slider"));
|
QAction *frameSliderSHAct = showHideMenu->addAction(tr("Frame Slider"));
|
||||||
|
|
||||||
toolbarSHAct->setCheckable(true);
|
toolbarSHAct->setCheckable(true);
|
||||||
toolbarSHAct->setChecked(m_visiblePartsFlag & CVPARTS_TOOLBAR);
|
toolbarSHAct->setChecked(m_visiblePartsFlag & VPPARTS_TOOLBAR);
|
||||||
toolbarSHAct->setData((UINT)CVPARTS_TOOLBAR);
|
toolbarSHAct->setData((UINT)VPPARTS_TOOLBAR);
|
||||||
|
|
||||||
toolOptionsSHAct->setCheckable(true);
|
toolOptionsSHAct->setCheckable(true);
|
||||||
toolOptionsSHAct->setChecked(m_visiblePartsFlag & CVPARTS_TOOLOPTIONS);
|
toolOptionsSHAct->setChecked(m_visiblePartsFlag & VPPARTS_TOOLOPTIONS);
|
||||||
toolOptionsSHAct->setData((UINT)CVPARTS_TOOLOPTIONS);
|
toolOptionsSHAct->setData((UINT)VPPARTS_TOOLOPTIONS);
|
||||||
|
|
||||||
playbarSHAct->setCheckable(true);
|
playbarSHAct->setCheckable(true);
|
||||||
playbarSHAct->setChecked(m_visiblePartsFlag & CVPARTS_PLAYBAR);
|
playbarSHAct->setChecked(m_visiblePartsFlag & VPPARTS_PLAYBAR);
|
||||||
playbarSHAct->setData((UINT)CVPARTS_PLAYBAR);
|
playbarSHAct->setData((UINT)VPPARTS_PLAYBAR);
|
||||||
|
|
||||||
frameSliderSHAct->setCheckable(true);
|
frameSliderSHAct->setCheckable(true);
|
||||||
frameSliderSHAct->setChecked(m_visiblePartsFlag & CVPARTS_FRAMESLIDER);
|
frameSliderSHAct->setChecked(m_visiblePartsFlag & VPPARTS_FRAMESLIDER);
|
||||||
frameSliderSHAct->setData((UINT)CVPARTS_FRAMESLIDER);
|
frameSliderSHAct->setData((UINT)VPPARTS_FRAMESLIDER);
|
||||||
|
|
||||||
QActionGroup *showHideActGroup = new QActionGroup(this);
|
QActionGroup *showHideActGroup = new QActionGroup(this);
|
||||||
showHideActGroup->setExclusive(false);
|
showHideActGroup->setExclusive(false);
|
||||||
|
@ -295,630 +151,18 @@ void ComboViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
/*! slot function for show/hide the parts
|
|
||||||
*/
|
|
||||||
|
|
||||||
void ComboViewerPanel::onShowHideActionTriggered(QAction *act) {
|
void ComboViewerPanel::checkOldVersionVisblePartsFlags(QSettings &settings) {
|
||||||
CV_Parts part = (CV_Parts)act->data().toUInt();
|
if (!settings.contains("visibleParts")) return;
|
||||||
assert(part < CVPARTS_End);
|
UINT oldVisiblePartsFlag =
|
||||||
|
settings.value("visibleParts", CVPARTS_ALL).toUInt();
|
||||||
m_visiblePartsFlag ^= part;
|
m_visiblePartsFlag = VPPARTS_None;
|
||||||
|
if (oldVisiblePartsFlag & CVPARTS_TOOLBAR)
|
||||||
updateShowHide();
|
m_visiblePartsFlag |= VPPARTS_TOOLBAR;
|
||||||
}
|
if (oldVisiblePartsFlag & CVPARTS_TOOLOPTIONS)
|
||||||
|
m_visiblePartsFlag |= VPPARTS_TOOLOPTIONS;
|
||||||
//-----------------------------------------------------------------------------
|
if (oldVisiblePartsFlag & CVPARTS_FLIPCONSOLE)
|
||||||
|
m_visiblePartsFlag |= VPPARTS_PLAYBAR | VPPARTS_FRAMESLIDER;
|
||||||
void ComboViewerPanel::onDrawFrame(int frame,
|
settings.remove("visibleParts");
|
||||||
const ImagePainter::VisualSettings &settings,
|
settings.setValue("viewerVisibleParts", m_visiblePartsFlag);
|
||||||
QElapsedTimer *, qint64) {
|
|
||||||
TApp *app = TApp::instance();
|
|
||||||
m_sceneViewer->setVisual(settings);
|
|
||||||
|
|
||||||
TFrameHandle *frameHandle = app->getCurrentFrame();
|
|
||||||
|
|
||||||
if (m_sceneViewer->isPreviewEnabled()) {
|
|
||||||
class Previewer *pr = Previewer::instance(m_sceneViewer->getPreviewMode() ==
|
|
||||||
SceneViewer::SUBCAMERA_PREVIEW);
|
|
||||||
|
|
||||||
pr->getRaster(frame - 1); // the 'getRaster' starts the render of the frame
|
|
||||||
// is not already started
|
|
||||||
int curFrame = frame;
|
|
||||||
if (frameHandle->isPlaying() &&
|
|
||||||
!pr->isFrameReady(
|
|
||||||
frame - 1)) // stops on last rendered frame until current is ready!
|
|
||||||
{
|
|
||||||
while (frame > 0 && !pr->isFrameReady(frame - 1)) frame--;
|
|
||||||
if (frame == 0)
|
|
||||||
frame = curFrame; // if no frame is ready, I stay on current...no use
|
|
||||||
// to rewind
|
|
||||||
m_flipConsole->setCurrentFrame(frame);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(frame >= 0);
|
|
||||||
if (frame != frameHandle->getFrameIndex() + 1) {
|
|
||||||
int oldFrame = frameHandle->getFrame();
|
|
||||||
frameHandle->setCurrentFrame(frame);
|
|
||||||
if (!frameHandle->isPlaying() && !frameHandle->isEditingLevel() &&
|
|
||||||
oldFrame != frameHandle->getFrame())
|
|
||||||
frameHandle->scrubXsheet(
|
|
||||||
frame - 1, frame - 1,
|
|
||||||
TApp::instance()->getCurrentXsheet()->getXsheet());
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (settings.m_blankColor != TPixel::Transparent)
|
|
||||||
m_sceneViewer->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
ComboViewerPanel::~ComboViewerPanel() {}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::showEvent(QShowEvent *event) {
|
|
||||||
TApp *app = TApp::instance();
|
|
||||||
TFrameHandle *frameHandle = app->getCurrentFrame();
|
|
||||||
TSceneHandle *sceneHandle = app->getCurrentScene();
|
|
||||||
TXshLevelHandle *levelHandle = app->getCurrentLevel();
|
|
||||||
TObjectHandle *objectHandle = app->getCurrentObject();
|
|
||||||
TXsheetHandle *xshHandle = app->getCurrentXsheet();
|
|
||||||
|
|
||||||
bool ret = true;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
onSceneChanged(): called when the scene changed
|
|
||||||
- set new scene's FPS
|
|
||||||
- update the range of frame slider with a new framehandle
|
|
||||||
- set the marker
|
|
||||||
- update key frames
|
|
||||||
*/
|
|
||||||
ret =
|
|
||||||
connect(xshHandle, SIGNAL(xsheetChanged()), this, SLOT(onSceneChanged()));
|
|
||||||
ret = ret && connect(sceneHandle, SIGNAL(sceneSwitched()), this,
|
|
||||||
SLOT(onSceneChanged()));
|
|
||||||
ret = ret && connect(sceneHandle, SIGNAL(sceneChanged()), this,
|
|
||||||
SLOT(onSceneChanged()));
|
|
||||||
|
|
||||||
/*!
|
|
||||||
changeWindowTitle(): called when the scene / level / frame is changed
|
|
||||||
- chenge the title text
|
|
||||||
*/
|
|
||||||
ret = ret && connect(sceneHandle, SIGNAL(nameSceneChanged()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
ret =
|
|
||||||
ret && connect(sceneHandle, SIGNAL(preferenceChanged(const QString &)),
|
|
||||||
m_flipConsole, SLOT(onPreferenceChanged(const QString &)));
|
|
||||||
|
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
// onXshLevelSwitched(TXshLevel*): changeWindowTitle() + updateFrameRange()
|
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelSwitched(TXshLevel *)), this,
|
|
||||||
SLOT(onXshLevelSwitched(TXshLevel *)));
|
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelTitleChanged()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
// updateFrameRange(): update the frame slider's range
|
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
|
||||||
SLOT(updateFrameRange()));
|
|
||||||
|
|
||||||
// onFrameTypeChanged(): reset the marker positions in the flip console
|
|
||||||
ret = ret && connect(frameHandle, SIGNAL(frameTypeChanged()), this,
|
|
||||||
SLOT(onFrameTypeChanged()));
|
|
||||||
|
|
||||||
// onFrameChanged(): update the flipconsole according to the current frame
|
|
||||||
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
|
||||||
SLOT(onFrameChanged()));
|
|
||||||
|
|
||||||
ret = ret && connect(app->getCurrentTool(), SIGNAL(toolSwitched()),
|
|
||||||
m_sceneViewer, SLOT(onToolSwitched()));
|
|
||||||
|
|
||||||
assert(ret);
|
|
||||||
|
|
||||||
m_flipConsole->setActive(true);
|
|
||||||
m_flipConsole->onPreferenceChanged("");
|
|
||||||
|
|
||||||
// refresh
|
|
||||||
onSceneChanged();
|
|
||||||
changeWindowTitle();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::hideEvent(QHideEvent *event) {
|
|
||||||
TApp *app = TApp::instance();
|
|
||||||
disconnect(app->getCurrentFrame(), 0, this, 0);
|
|
||||||
disconnect(app->getCurrentScene(), 0, this, 0);
|
|
||||||
disconnect(app->getCurrentLevel(), 0, this, 0);
|
|
||||||
disconnect(app->getCurrentObject(), 0, this, 0);
|
|
||||||
disconnect(app->getCurrentXsheet(), 0, this, 0);
|
|
||||||
|
|
||||||
disconnect(app->getCurrentTool(), SIGNAL(toolSwitched()), m_sceneViewer,
|
|
||||||
SLOT(onToolSwitched()));
|
|
||||||
disconnect(app->getCurrentScene(), SIGNAL(preferenceChanged(const QString &)),
|
|
||||||
m_flipConsole, SLOT(onPreferenceChanged(const QString &)));
|
|
||||||
|
|
||||||
m_flipConsole->setActive(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
|
||||||
bool ret = true;
|
|
||||||
|
|
||||||
TPanelTitleBarButtonSet *viewModeButtonSet;
|
|
||||||
m_referenceModeBs = viewModeButtonSet = new TPanelTitleBarButtonSet();
|
|
||||||
int x = -272;
|
|
||||||
int iconWidth = 20;
|
|
||||||
TPanelTitleBarButton *button;
|
|
||||||
|
|
||||||
// buttons for show / hide toggle for the field guide and the safe area
|
|
||||||
TPanelTitleBarButtonForSafeArea *safeAreaButton =
|
|
||||||
new TPanelTitleBarButtonForSafeArea(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_safe.svg"));
|
|
||||||
safeAreaButton->setToolTip(tr("Safe Area (Right Click to Select)"));
|
|
||||||
titleBar->add(QPoint(x, 0), safeAreaButton);
|
|
||||||
ret = ret && connect(safeAreaButton, SIGNAL(toggled(bool)),
|
|
||||||
CommandManager::instance()->getAction(MI_SafeArea),
|
|
||||||
SLOT(trigger()));
|
|
||||||
ret = ret && connect(CommandManager::instance()->getAction(MI_SafeArea),
|
|
||||||
SIGNAL(triggered(bool)), safeAreaButton,
|
|
||||||
SLOT(setPressed(bool)));
|
|
||||||
// initialize state
|
|
||||||
safeAreaButton->setPressed(
|
|
||||||
CommandManager::instance()->getAction(MI_SafeArea)->isChecked());
|
|
||||||
|
|
||||||
button = new TPanelTitleBarButton(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_grid.svg"));
|
|
||||||
button->setToolTip(tr("Grids and Overlays\nRight click to adjust."));
|
|
||||||
x += 1 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), button);
|
|
||||||
ret = ret && connect(button, SIGNAL(toggled(bool)),
|
|
||||||
CommandManager::instance()->getAction(MI_FieldGuide),
|
|
||||||
SLOT(trigger()));
|
|
||||||
ret = ret && connect(CommandManager::instance()->getAction(MI_FieldGuide),
|
|
||||||
SIGNAL(triggered(bool)), button, SLOT(setPressed(bool)));
|
|
||||||
// initialize state
|
|
||||||
button->setPressed(
|
|
||||||
CommandManager::instance()->getAction(MI_FieldGuide)->isChecked());
|
|
||||||
|
|
||||||
TPanelTitleBarButtonForGrids *gridMoreButton =
|
|
||||||
new TPanelTitleBarButtonForGrids(
|
|
||||||
titleBar, getIconThemePath("actions/9/pane_more.svg"));
|
|
||||||
gridMoreButton->setToolTip(tr("Grids and Overlays Settings"));
|
|
||||||
x += 1 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), gridMoreButton);
|
|
||||||
connect(gridMoreButton, &TPanelTitleBarButtonForGrids::updateViewer,
|
|
||||||
[=]() { m_sceneViewer->update(); });
|
|
||||||
|
|
||||||
// view mode toggles
|
|
||||||
button = new TPanelTitleBarButton(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_table.svg"));
|
|
||||||
button->setToolTip(tr("Camera Stand View"));
|
|
||||||
x += 10 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), button);
|
|
||||||
button->setButtonSet(viewModeButtonSet, SceneViewer::NORMAL_REFERENCE);
|
|
||||||
button->setPressed(true);
|
|
||||||
|
|
||||||
button = new TPanelTitleBarButton(titleBar,
|
|
||||||
getIconThemePath("actions/20/pane_3d.svg"));
|
|
||||||
button->setToolTip(tr("3D View"));
|
|
||||||
x += +1 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), button);
|
|
||||||
button->setButtonSet(viewModeButtonSet, SceneViewer::CAMERA3D_REFERENCE);
|
|
||||||
|
|
||||||
button = new TPanelTitleBarButton(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_cam.svg"));
|
|
||||||
button->setToolTip(tr("Camera View"));
|
|
||||||
x += +1 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), button);
|
|
||||||
button->setButtonSet(viewModeButtonSet, SceneViewer::CAMERA_REFERENCE);
|
|
||||||
|
|
||||||
TPanelTitleBarButtonForCameraView *camTransparencyButton =
|
|
||||||
new TPanelTitleBarButtonForCameraView(
|
|
||||||
titleBar, getIconThemePath("actions/9/pane_more.svg"));
|
|
||||||
camTransparencyButton->setToolTip(tr("Change camera view transparency."));
|
|
||||||
x += 1 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), camTransparencyButton);
|
|
||||||
connect(camTransparencyButton,
|
|
||||||
&TPanelTitleBarButtonForCameraView::updateViewer,
|
|
||||||
[=]() { m_sceneViewer->update(); });
|
|
||||||
|
|
||||||
ret = ret && connect(viewModeButtonSet, SIGNAL(selected(int)), m_sceneViewer,
|
|
||||||
SLOT(setReferenceMode(int)));
|
|
||||||
|
|
||||||
// freeze button
|
|
||||||
button = new TPanelTitleBarButton(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_freeze.svg"));
|
|
||||||
x += 10 + iconWidth;
|
|
||||||
|
|
||||||
button->setToolTip(tr("Freeze"));
|
|
||||||
titleBar->add(QPoint(x, 0), button);
|
|
||||||
ret = ret && connect(button, SIGNAL(toggled(bool)), m_sceneViewer,
|
|
||||||
SLOT(freeze(bool)));
|
|
||||||
|
|
||||||
// preview toggles
|
|
||||||
m_previewButton = new TPanelTitleBarButton(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_preview.svg"));
|
|
||||||
x += 10 + iconWidth;
|
|
||||||
titleBar->add(QPoint(x, 0), m_previewButton);
|
|
||||||
m_previewButton->setToolTip(tr("Preview"));
|
|
||||||
ret = ret && connect(m_previewButton, SIGNAL(toggled(bool)),
|
|
||||||
SLOT(enableFullPreview(bool)));
|
|
||||||
|
|
||||||
m_subcameraPreviewButton = new TPanelTitleBarButton(
|
|
||||||
titleBar, getIconThemePath("actions/20/pane_subpreview.svg"));
|
|
||||||
x += +1 + 24; // width of pane_preview.svg = 24px
|
|
||||||
|
|
||||||
titleBar->add(QPoint(x, 0), m_subcameraPreviewButton);
|
|
||||||
m_subcameraPreviewButton->setToolTip(tr("Sub-camera Preview"));
|
|
||||||
ret = ret && connect(m_subcameraPreviewButton, SIGNAL(toggled(bool)),
|
|
||||||
SLOT(enableSubCameraPreview(bool)));
|
|
||||||
|
|
||||||
assert(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::enableFullPreview(bool enabled) {
|
|
||||||
m_subcameraPreviewButton->setPressed(false);
|
|
||||||
m_sceneViewer->enablePreview(enabled ? SceneViewer::FULL_PREVIEW
|
|
||||||
: SceneViewer::NO_PREVIEW);
|
|
||||||
m_flipConsole->setProgressBarStatus(
|
|
||||||
&Previewer::instance(false)->getProgressBarStatus());
|
|
||||||
enableFlipConsoleForCamerastand(enabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::enableSubCameraPreview(bool enabled) {
|
|
||||||
m_previewButton->setPressed(false);
|
|
||||||
m_sceneViewer->enablePreview(enabled ? SceneViewer::SUBCAMERA_PREVIEW
|
|
||||||
: SceneViewer::NO_PREVIEW);
|
|
||||||
m_flipConsole->setProgressBarStatus(
|
|
||||||
&Previewer::instance(true)->getProgressBarStatus());
|
|
||||||
enableFlipConsoleForCamerastand(enabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::enableFlipConsoleForCamerastand(bool on) {
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eMatte, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eSave, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eCompare, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eSaveImg, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eGRed, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eGGreen, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eGBlue, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eBlackBg, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eWhiteBg, on, false);
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eCheckBg, on, false);
|
|
||||||
|
|
||||||
m_flipConsole->enableProgressBar(on);
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::onXshLevelSwitched(TXshLevel *) {
|
|
||||||
changeWindowTitle();
|
|
||||||
m_sceneViewer->update();
|
|
||||||
// If the level is switched by using the combobox in the film strip, the
|
|
||||||
// current level switches without change in the frame type (level or scene).
|
|
||||||
// For such case, update the frame range of the console here.
|
|
||||||
if (TApp::instance()->getCurrentFrame()->isEditingLevel()) updateFrameRange();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::onPlayingStatusChanged(bool playing) {
|
|
||||||
if (playing) {
|
|
||||||
m_playing = true;
|
|
||||||
} else {
|
|
||||||
m_playing = false;
|
|
||||||
m_first = true;
|
|
||||||
}
|
|
||||||
if (Preferences::instance()->getOnionSkinDuringPlayback()) return;
|
|
||||||
OnionSkinMask osm =
|
|
||||||
TApp::instance()->getCurrentOnionSkin()->getOnionSkinMask();
|
|
||||||
if (playing) {
|
|
||||||
m_onionSkinActive = osm.isEnabled();
|
|
||||||
if (m_onionSkinActive) {
|
|
||||||
osm.enable(false);
|
|
||||||
TApp::instance()->getCurrentOnionSkin()->setOnionSkinMask(osm);
|
|
||||||
TApp::instance()->getCurrentOnionSkin()->notifyOnionSkinMaskChanged();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (m_onionSkinActive) {
|
|
||||||
osm.enable(true);
|
|
||||||
TApp::instance()->getCurrentOnionSkin()->setOnionSkinMask(osm);
|
|
||||||
TApp::instance()->getCurrentOnionSkin()->notifyOnionSkinMaskChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_sceneViewer->invalidateToolStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::changeWindowTitle() {
|
|
||||||
TApp *app = TApp::instance();
|
|
||||||
ToonzScene *scene = app->getCurrentScene()->getScene();
|
|
||||||
if (!scene) return;
|
|
||||||
if (!parentWidget()) return;
|
|
||||||
int frame = app->getCurrentFrame()->getFrame();
|
|
||||||
|
|
||||||
// put the titlebar texts in this string
|
|
||||||
QString name;
|
|
||||||
|
|
||||||
// if the frame type is "scene editing"
|
|
||||||
if (app->getCurrentFrame()->isEditingScene()) {
|
|
||||||
TProject *project = scene->getProject();
|
|
||||||
QString sceneName = QString::fromStdWString(scene->getSceneName());
|
|
||||||
if (sceneName.isEmpty()) sceneName = tr("Untitled");
|
|
||||||
|
|
||||||
if (app->getCurrentScene()->getDirtyFlag()) sceneName += QString("*");
|
|
||||||
name = tr("Scene: ") + sceneName;
|
|
||||||
if (frame >= 0)
|
|
||||||
name =
|
|
||||||
name + tr(" :: Frame: ") + tr(std::to_string(frame + 1).c_str());
|
|
||||||
int col = app->getCurrentColumn()->getColumnIndex();
|
|
||||||
if (col < 0) {
|
|
||||||
if ((m_sceneViewer->getIsFlippedX() || m_sceneViewer->getIsFlippedY()) &&
|
|
||||||
!m_sceneViewer->is3DView()) {
|
|
||||||
name = name + tr(" (Flipped)");
|
|
||||||
}
|
|
||||||
parentWidget()->setWindowTitle(name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
|
|
||||||
TXshCell cell = xsh->getCell(frame, col);
|
|
||||||
if (cell.isEmpty()) {
|
|
||||||
if ((m_sceneViewer->getIsFlippedX() || m_sceneViewer->getIsFlippedY()) &&
|
|
||||||
!m_sceneViewer->is3DView()) {
|
|
||||||
name = name + tr(" (Flipped)");
|
|
||||||
}
|
|
||||||
parentWidget()->setWindowTitle(name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
assert(cell.m_level.getPointer());
|
|
||||||
TFilePath fp(cell.m_level->getName());
|
|
||||||
QString imageName =
|
|
||||||
QString::fromStdWString(fp.withFrame(cell.m_frameId).getWideString());
|
|
||||||
name = name + tr(" :: Level: ") + imageName;
|
|
||||||
|
|
||||||
if (!m_sceneViewer->is3DView()) {
|
|
||||||
TAffine aff = m_sceneViewer->getViewMatrix() *
|
|
||||||
m_sceneViewer->getNormalZoomScale().inv();
|
|
||||||
if (m_sceneViewer->getIsFlippedX()) aff = aff * TScale(-1, 1);
|
|
||||||
if (m_sceneViewer->getIsFlippedY()) aff = aff * TScale(1, -1);
|
|
||||||
name = name + " :: Zoom : " +
|
|
||||||
QString::number(tround(100.0 * sqrt(aff.det()))) + "%";
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the current level exists and some option is set in the preference,
|
|
||||||
// set the zoom value to the current level's dpi
|
|
||||||
else if (Preferences::instance()
|
|
||||||
->isActualPixelViewOnSceneEditingModeEnabled() &&
|
|
||||||
TApp::instance()->getCurrentLevel()->getSimpleLevel() &&
|
|
||||||
!CleanupPreviewCheck::instance()
|
|
||||||
->isEnabled() // cleanup preview must be OFF
|
|
||||||
&& !CameraTestCheck::instance() // camera test mode must be OFF
|
|
||||||
// neither
|
|
||||||
->isEnabled() &&
|
|
||||||
!m_sceneViewer->is3DView()) {
|
|
||||||
TAffine aff = m_sceneViewer->getViewMatrix() *
|
|
||||||
m_sceneViewer->getNormalZoomScale().inv();
|
|
||||||
if (m_sceneViewer->getIsFlippedX()) aff = aff * TScale(-1, 1);
|
|
||||||
if (m_sceneViewer->getIsFlippedY()) aff = aff * TScale(1, -1);
|
|
||||||
name = name + " :: Zoom : " +
|
|
||||||
QString::number(tround(100.0 * sqrt(aff.det()))) + "%";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// if the frame type is "level editing"
|
|
||||||
else {
|
|
||||||
TXshLevel *level = app->getCurrentLevel()->getLevel();
|
|
||||||
if (level) {
|
|
||||||
TFilePath fp(level->getName());
|
|
||||||
QString imageName = QString::fromStdWString(
|
|
||||||
fp.withFrame(app->getCurrentFrame()->getFid()).getWideString());
|
|
||||||
|
|
||||||
name = name + tr("Level: ") + imageName;
|
|
||||||
if (!m_sceneViewer->is3DView()) {
|
|
||||||
TAffine aff = m_sceneViewer->getViewMatrix() *
|
|
||||||
m_sceneViewer->getNormalZoomScale().inv();
|
|
||||||
if (m_sceneViewer->getIsFlippedX()) aff = aff * TScale(-1, 1);
|
|
||||||
if (m_sceneViewer->getIsFlippedY()) aff = aff * TScale(1, -1);
|
|
||||||
name = name + " :: Zoom : " +
|
|
||||||
QString::number(tround(100.0 * sqrt(aff.det()))) + "%";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((m_sceneViewer->getIsFlippedX() || m_sceneViewer->getIsFlippedY()) &&
|
|
||||||
!m_sceneViewer->is3DView()) {
|
|
||||||
name = name + tr(" (Flipped)");
|
|
||||||
}
|
|
||||||
parentWidget()->setWindowTitle(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
/*! update the frame range according to the current frame type
|
|
||||||
*/
|
|
||||||
void ComboViewerPanel::updateFrameRange() {
|
|
||||||
TFrameHandle *fh = TApp::instance()->getCurrentFrame();
|
|
||||||
int frameIndex = fh->getFrameIndex();
|
|
||||||
int maxFrameIndex = fh->getMaxFrameIndex();
|
|
||||||
if (frameIndex > maxFrameIndex) frameIndex = maxFrameIndex;
|
|
||||||
m_flipConsole->setFrameRange(1, maxFrameIndex + 1, 1, frameIndex + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::onSceneChanged() {
|
|
||||||
TFrameHandle *fh = TApp::instance()->getCurrentFrame();
|
|
||||||
int frameIndex = fh->getFrameIndex();
|
|
||||||
int maxFrameIndex = fh->getMaxFrameIndex();
|
|
||||||
if (frameIndex > maxFrameIndex) maxFrameIndex = frameIndex;
|
|
||||||
// update fps only when the scene settings is changed
|
|
||||||
m_flipConsole->setFrameRate(TApp::instance()
|
|
||||||
->getCurrentScene()
|
|
||||||
->getScene()
|
|
||||||
->getProperties()
|
|
||||||
->getOutputProperties()
|
|
||||||
->getFrameRate(),
|
|
||||||
false);
|
|
||||||
// update the frame slider's range with new frameHandle
|
|
||||||
m_flipConsole->setFrameRange(1, maxFrameIndex + 1, 1, frameIndex + 1);
|
|
||||||
|
|
||||||
// set the markers
|
|
||||||
int fromIndex, toIndex, dummy;
|
|
||||||
XsheetGUI::getPlayRange(fromIndex, toIndex, dummy);
|
|
||||||
m_flipConsole->setMarkers(fromIndex, toIndex);
|
|
||||||
|
|
||||||
// update the key frames
|
|
||||||
if (m_keyFrameButton && (m_keyFrameButton->getCurrentFrame() != frameIndex))
|
|
||||||
m_keyFrameButton->setCurrentFrame(frameIndex);
|
|
||||||
hasSoundtrack();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::onSceneSwitched() {
|
|
||||||
m_previewButton->setPressed(false);
|
|
||||||
m_subcameraPreviewButton->setPressed(false);
|
|
||||||
enableFlipConsoleForCamerastand(false);
|
|
||||||
m_sceneViewer->enablePreview(SceneViewer::NO_PREVIEW);
|
|
||||||
m_flipConsole->setChecked(FlipConsole::eDefineSubCamera, false);
|
|
||||||
m_flipConsole->setFrameRate(TApp::instance()
|
|
||||||
->getCurrentScene()
|
|
||||||
->getScene()
|
|
||||||
->getProperties()
|
|
||||||
->getOutputProperties()
|
|
||||||
->getFrameRate());
|
|
||||||
m_sceneViewer->setEditPreviewSubcamera(false);
|
|
||||||
onSceneChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::onFrameChanged() {
|
|
||||||
int frameIndex = TApp::instance()->getCurrentFrame()->getFrameIndex();
|
|
||||||
m_flipConsole->setCurrentFrame(frameIndex + 1);
|
|
||||||
if (m_keyFrameButton && (m_keyFrameButton->getCurrentFrame() != frameIndex))
|
|
||||||
m_keyFrameButton->setCurrentFrame(frameIndex);
|
|
||||||
|
|
||||||
if (m_playing && m_playSound) {
|
|
||||||
if (m_first == true && hasSoundtrack()) {
|
|
||||||
playAudioFrame(frameIndex);
|
|
||||||
} else if (m_hasSoundtrack) {
|
|
||||||
playAudioFrame(frameIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
/*! reset the marker positions in the flip console
|
|
||||||
*/
|
|
||||||
void ComboViewerPanel::onFrameTypeChanged() {
|
|
||||||
if (TApp::instance()->getCurrentFrame()->getFrameType() ==
|
|
||||||
TFrameHandle::LevelFrame &&
|
|
||||||
m_sceneViewer->isPreviewEnabled()) {
|
|
||||||
m_previewButton->setPressed(false);
|
|
||||||
m_subcameraPreviewButton->setPressed(false);
|
|
||||||
enableFlipConsoleForCamerastand(false);
|
|
||||||
m_sceneViewer->enablePreview(SceneViewer::NO_PREVIEW);
|
|
||||||
}
|
|
||||||
m_flipConsole->setChecked(FlipConsole::eDefineSubCamera, false);
|
|
||||||
m_sceneViewer->setEditPreviewSubcamera(false);
|
|
||||||
|
|
||||||
updateFrameRange();
|
|
||||||
|
|
||||||
// if in the scene editing mode, get the preview marker positions
|
|
||||||
if (TApp::instance()->getCurrentFrame()->isEditingScene()) {
|
|
||||||
// set the markers
|
|
||||||
int fromIndex, toIndex, dummy;
|
|
||||||
XsheetGUI::getPlayRange(fromIndex, toIndex, dummy);
|
|
||||||
m_flipConsole->setMarkers(fromIndex, toIndex);
|
|
||||||
}
|
|
||||||
// if in the level editing mode, ignore the preview marker
|
|
||||||
else
|
|
||||||
m_flipConsole->setMarkers(0, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::playAudioFrame(int frame) {
|
|
||||||
if (m_first) {
|
|
||||||
m_first = false;
|
|
||||||
m_fps = TApp::instance()
|
|
||||||
->getCurrentScene()
|
|
||||||
->getScene()
|
|
||||||
->getProperties()
|
|
||||||
->getOutputProperties()
|
|
||||||
->getFrameRate();
|
|
||||||
m_samplesPerFrame = m_sound->getSampleRate() / std::abs(m_fps);
|
|
||||||
}
|
|
||||||
if (!m_sound) return;
|
|
||||||
m_viewerFps = m_flipConsole->getCurrentFps();
|
|
||||||
double s0 = frame * m_samplesPerFrame, s1 = s0 + m_samplesPerFrame;
|
|
||||||
// make the sound stop if the viewerfps is higher so the next sound can play
|
|
||||||
// on time.
|
|
||||||
if (m_fps < m_viewerFps)
|
|
||||||
TApp::instance()->getCurrentXsheet()->getXsheet()->stopScrub();
|
|
||||||
TApp::instance()->getCurrentXsheet()->getXsheet()->play(m_sound, s0, s1,
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
bool ComboViewerPanel::hasSoundtrack() {
|
|
||||||
if (m_sound != NULL) {
|
|
||||||
m_sound = NULL;
|
|
||||||
m_hasSoundtrack = false;
|
|
||||||
m_first = true;
|
|
||||||
}
|
|
||||||
TXsheetHandle *xsheetHandle = TApp::instance()->getCurrentXsheet();
|
|
||||||
TXsheet::SoundProperties *prop = new TXsheet::SoundProperties();
|
|
||||||
if (!m_sceneViewer->isPreviewEnabled()) prop->m_isPreview = true;
|
|
||||||
m_sound = xsheetHandle->getXsheet()->makeSound(prop);
|
|
||||||
if (m_sound == NULL) {
|
|
||||||
m_hasSoundtrack = false;
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
m_hasSoundtrack = true;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ComboViewerPanel::onButtonPressed(FlipConsole::EGadget button) {
|
|
||||||
if (button == FlipConsole::eSound) {
|
|
||||||
m_playSound = !m_playSound;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ComboViewerPanel::setFlipHButtonChecked(bool checked) {
|
|
||||||
m_flipConsole->setChecked(FlipConsole::eFlipHorizontal, checked);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ComboViewerPanel::setFlipVButtonChecked(bool checked) {
|
|
||||||
m_flipConsole->setChecked(FlipConsole::eFlipVertical, checked);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void ComboViewerPanel::setVisiblePartsFlag(UINT flag) {
|
|
||||||
m_visiblePartsFlag = flag;
|
|
||||||
updateShowHide();
|
|
||||||
}
|
|
||||||
|
|
||||||
// SaveLoadQSettings
|
|
||||||
void ComboViewerPanel::save(QSettings &settings, bool forPopupIni) const {
|
|
||||||
settings.setValue("visibleParts", m_visiblePartsFlag);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ComboViewerPanel::load(QSettings &settings) {
|
|
||||||
m_visiblePartsFlag = settings.value("visibleParts", CVPARTS_ALL).toUInt();
|
|
||||||
updateShowHide();
|
|
||||||
}
|
}
|
|
@ -3,140 +3,34 @@
|
||||||
#ifndef COMBOVIEWER_PANE_INCLUDED
|
#ifndef COMBOVIEWER_PANE_INCLUDED
|
||||||
#define COMBOVIEWER_PANE_INCLUDED
|
#define COMBOVIEWER_PANE_INCLUDED
|
||||||
|
|
||||||
#include "sceneviewer.h"
|
#include "viewerpane.h"
|
||||||
#include "toonzqt/intfield.h"
|
|
||||||
#include "toonzqt/keyframenavigator.h"
|
|
||||||
|
|
||||||
#include "toonzqt/flipconsoleowner.h"
|
|
||||||
#include "saveloadqsettings.h"
|
|
||||||
|
|
||||||
#include <QFrame>
|
|
||||||
|
|
||||||
class QPoint;
|
|
||||||
class QToolBar;
|
|
||||||
class QLabel;
|
|
||||||
class QSlider;
|
|
||||||
class QActionGroup;
|
|
||||||
class QButtonGroup;
|
|
||||||
class QToolBar;
|
|
||||||
class Ruler;
|
|
||||||
|
|
||||||
class Toolbar;
|
class Toolbar;
|
||||||
class TPanel;
|
|
||||||
class Ruler;
|
|
||||||
class FlipConsole;
|
|
||||||
class TXshLevel;
|
|
||||||
class ToolOptions;
|
class ToolOptions;
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// ComboViewerPanel
|
// ComboViewerPanel
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
enum CV_Parts {
|
|
||||||
CVPARTS_None = 0,
|
|
||||||
CVPARTS_TOOLBAR = 0x1,
|
|
||||||
CVPARTS_TOOLOPTIONS = 0x2,
|
|
||||||
CVPARTS_PLAYBAR = 0x4,
|
|
||||||
CVPARTS_FRAMESLIDER = 0x8,
|
|
||||||
CVPARTS_End = 0x16,
|
|
||||||
CVPARTS_ALL = CVPARTS_TOOLBAR | CVPARTS_TOOLOPTIONS | CVPARTS_PLAYBAR |
|
|
||||||
CVPARTS_FRAMESLIDER
|
|
||||||
};
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
class ComboViewerPanel final : public BaseViewerPanel {
|
||||||
|
|
||||||
class ComboViewerPanel final : public QFrame,
|
|
||||||
public FlipConsoleOwner,
|
|
||||||
public SaveLoadQSettings {
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
SceneViewer *m_sceneViewer;
|
|
||||||
FlipConsole *m_flipConsole;
|
|
||||||
ViewerKeyframeNavigator *m_keyFrameButton;
|
|
||||||
TPanelTitleBarButtonSet *m_referenceModeBs;
|
|
||||||
|
|
||||||
Toolbar *m_toolbar;
|
Toolbar *m_toolbar;
|
||||||
ToolOptions *m_toolOptions;
|
ToolOptions *m_toolOptions;
|
||||||
Ruler *m_vRuler;
|
Ruler *m_vRuler;
|
||||||
Ruler *m_hRuler;
|
Ruler *m_hRuler;
|
||||||
UINT m_visiblePartsFlag;
|
|
||||||
bool m_onionSkinActive = false;
|
|
||||||
bool m_playSound = true;
|
|
||||||
bool m_hasSoundtrack = false;
|
|
||||||
bool m_playing = false;
|
|
||||||
double m_fps;
|
|
||||||
int m_viewerFps;
|
|
||||||
double m_samplesPerFrame;
|
|
||||||
bool m_first = true;
|
|
||||||
TSoundTrack *m_sound = NULL;
|
|
||||||
|
|
||||||
TPanelTitleBarButton *m_previewButton;
|
|
||||||
TPanelTitleBarButton *m_subcameraPreviewButton;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
#if QT_VERSION >= 0x050500
|
|
||||||
ComboViewerPanel(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
ComboViewerPanel(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
||||||
#else
|
~ComboViewerPanel() {}
|
||||||
ComboViewerPanel(QWidget *parent = 0, Qt::WFlags flags = 0);
|
|
||||||
#endif
|
|
||||||
~ComboViewerPanel();
|
|
||||||
|
|
||||||
SceneViewer *getSceneViewer() { return m_sceneViewer; }
|
|
||||||
ToolOptions *getToolOptions() { return m_toolOptions; }
|
ToolOptions *getToolOptions() { return m_toolOptions; }
|
||||||
|
|
||||||
// toggle show/hide of the widgets according to m_visiblePartsFlag
|
void updateShowHide() override;
|
||||||
void setVisiblePartsFlag(UINT flag);
|
void addShowHideContextMenu(QMenu *) override;
|
||||||
void updateShowHide();
|
|
||||||
void addShowHideContextMenu(QMenu *);
|
|
||||||
|
|
||||||
void onDrawFrame(int frame, const ImagePainter::VisualSettings &settings,
|
|
||||||
QElapsedTimer *timer, qint64 targetInstant) override;
|
|
||||||
|
|
||||||
void onEnterPanel() {
|
|
||||||
m_sceneViewer->setFocus(Qt::OtherFocusReason);
|
|
||||||
// activate shortcut key for this flipconsole
|
|
||||||
m_flipConsole->makeCurrent();
|
|
||||||
}
|
|
||||||
void onLeavePanel() { m_sceneViewer->clearFocus(); }
|
|
||||||
|
|
||||||
// SaveLoadQSettings
|
|
||||||
virtual void save(QSettings &settings,
|
|
||||||
bool forPopupIni = false) const override;
|
|
||||||
virtual void load(QSettings &settings) override;
|
|
||||||
|
|
||||||
void initializeTitleBar(TPanelTitleBar *titleBar);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void showEvent(QShowEvent *) override;
|
void checkOldVersionVisblePartsFlags(QSettings &settings) override;
|
||||||
void hideEvent(QHideEvent *) override;
|
|
||||||
void createFrameToolBar();
|
|
||||||
void createPlayToolBar();
|
|
||||||
void addColorMaskButton(QWidget *parent, const char *iconSVGName, int id);
|
|
||||||
// void contextMenuEvent(QContextMenuEvent *event) override;
|
|
||||||
void playAudioFrame(int frame);
|
|
||||||
bool hasSoundtrack();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void onSceneChanged();
|
|
||||||
void changeWindowTitle();
|
|
||||||
void updateFrameRange();
|
|
||||||
void onXshLevelSwitched(TXshLevel *);
|
|
||||||
void onPlayingStatusChanged(bool playing);
|
|
||||||
// for showing/hiding the parts
|
|
||||||
void onShowHideActionTriggered(QAction *);
|
|
||||||
void enableFlipConsoleForCamerastand(bool on);
|
|
||||||
void onButtonPressed(FlipConsole::EGadget button);
|
|
||||||
void setFlipHButtonChecked(bool checked);
|
|
||||||
void setFlipVButtonChecked(bool checked);
|
|
||||||
|
|
||||||
protected slots:
|
|
||||||
void onFrameChanged();
|
|
||||||
|
|
||||||
// need to update the preview marker as well as the frame range in flipconsole
|
|
||||||
void onFrameTypeChanged();
|
|
||||||
|
|
||||||
void onSceneSwitched();
|
|
||||||
void enableFullPreview(bool enabled);
|
|
||||||
void enableSubCameraPreview(bool enabled);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1909,18 +1909,11 @@ void SceneViewer::onContextMenu(const QPoint &pos, const QPoint &globalPos) {
|
||||||
|
|
||||||
menu->addLevelCommands(columnIndices);
|
menu->addLevelCommands(columnIndices);
|
||||||
|
|
||||||
ComboViewerPanel *cvp =
|
BaseViewerPanel *bvp =
|
||||||
qobject_cast<ComboViewerPanel *>(parentWidget()->parentWidget());
|
qobject_cast<BaseViewerPanel *>(parentWidget()->parentWidget());
|
||||||
if (cvp) {
|
if (bvp) {
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
cvp->addShowHideContextMenu(menu);
|
bvp->addShowHideContextMenu(menu);
|
||||||
}
|
|
||||||
|
|
||||||
SceneViewerPanel *svp = qobject_cast<SceneViewerPanel *>(
|
|
||||||
parentWidget()->parentWidget()->parentWidget());
|
|
||||||
if (svp) {
|
|
||||||
menu->addSeparator();
|
|
||||||
svp->addShowHideContextMenu(menu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
menu->exec(globalPos);
|
menu->exec(globalPos);
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#include "viewerpane.h"
|
|
||||||
|
|
||||||
// TnzCore includes
|
// TnzCore includes
|
||||||
#include "tconvert.h"
|
#include "tconvert.h"
|
||||||
|
@ -63,64 +62,31 @@
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
enum CV_Parts {
|
#include "viewerpane.h"
|
||||||
CVPARTS_None = 0,
|
|
||||||
CVPARTS_PLAYBAR = 0x1,
|
|
||||||
CVPARTS_FRAMESLIDER = 0x4,
|
|
||||||
CVPARTS_End = 0x8,
|
|
||||||
CVPARTS_ALL = CVPARTS_PLAYBAR | CVPARTS_FRAMESLIDER
|
|
||||||
};
|
|
||||||
|
|
||||||
using namespace DVGui;
|
using namespace DVGui;
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
// SceneViewerPanel
|
// BaseViewerPanel
|
||||||
//
|
//
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if QT_VERSION >= 0x050500
|
BaseViewerPanel::BaseViewerPanel(QWidget *parent, Qt::WindowFlags flags)
|
||||||
SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WindowFlags flags)
|
|
||||||
#else
|
|
||||||
SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
|
||||||
#endif
|
|
||||||
: QFrame(parent) {
|
: QFrame(parent) {
|
||||||
setFrameStyle(QFrame::StyledPanel);
|
TApp *app = TApp::instance();
|
||||||
setObjectName("ViewerPanel");
|
|
||||||
|
|
||||||
QVBoxLayout *mainLayout = new QVBoxLayout(this);
|
setFrameStyle(QFrame::StyledPanel);
|
||||||
mainLayout->setMargin(0);
|
|
||||||
mainLayout->setSpacing(0);
|
m_mainLayout = new QVBoxLayout();
|
||||||
|
m_mainLayout->setMargin(0);
|
||||||
|
m_mainLayout->setSpacing(0);
|
||||||
|
|
||||||
// Viewer
|
// Viewer
|
||||||
QWidget *viewer = new QWidget(this);
|
m_fsWidget = new ImageUtils::FullScreenWidget(this);
|
||||||
QGridLayout *viewerL = new QGridLayout(viewer);
|
m_fsWidget->setWidget(m_sceneViewer = new SceneViewer(m_fsWidget));
|
||||||
|
|
||||||
ImageUtils::FullScreenWidget *fsWidget =
|
|
||||||
new ImageUtils::FullScreenWidget(viewer);
|
|
||||||
|
|
||||||
fsWidget->setWidget(m_sceneViewer = new SceneViewer(fsWidget));
|
|
||||||
m_sceneViewer->setIsStyleShortcutSwitchable();
|
m_sceneViewer->setIsStyleShortcutSwitchable();
|
||||||
|
|
||||||
bool ret = true;
|
|
||||||
ret = ret && connect(m_sceneViewer, SIGNAL(onZoomChanged()),
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
|
|
||||||
Ruler *vRuler = new Ruler(viewer, m_sceneViewer, true);
|
|
||||||
Ruler *hRuler = new Ruler(viewer, m_sceneViewer, false);
|
|
||||||
m_sceneViewer->setRulers(vRuler, hRuler);
|
|
||||||
|
|
||||||
viewerL->setMargin(0);
|
|
||||||
viewerL->setSpacing(0);
|
|
||||||
viewerL->addWidget(vRuler, 1, 0);
|
|
||||||
viewerL->addWidget(hRuler, 0, 1);
|
|
||||||
viewerL->addWidget(fsWidget, 1, 1, 19, 13);
|
|
||||||
viewer->setMinimumHeight(200);
|
|
||||||
viewer->setLayout(viewerL);
|
|
||||||
|
|
||||||
mainLayout->addWidget(viewer, Qt::AlignCenter);
|
|
||||||
|
|
||||||
TApp *app = TApp::instance();
|
|
||||||
m_keyFrameButton = new ViewerKeyframeNavigator(0, app->getCurrentFrame());
|
m_keyFrameButton = new ViewerKeyframeNavigator(0, app->getCurrentFrame());
|
||||||
m_keyFrameButton->setObjectHandle(app->getCurrentObject());
|
m_keyFrameButton->setObjectHandle(app->getCurrentObject());
|
||||||
m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
|
m_keyFrameButton->setXsheetHandle(app->getCurrentXsheet());
|
||||||
|
@ -130,9 +96,9 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
FlipConsole::eUseLoadBox};
|
FlipConsole::eUseLoadBox};
|
||||||
|
|
||||||
m_flipConsole =
|
m_flipConsole =
|
||||||
new FlipConsole(mainLayout, buttonMask, false, m_keyFrameButton,
|
new FlipConsole(m_mainLayout, buttonMask, false, m_keyFrameButton,
|
||||||
"SceneViewerConsole", this, true);
|
"SceneViewerConsole", this, true);
|
||||||
mainLayout->addWidget(m_flipConsole);
|
m_mainLayout->addWidget(m_flipConsole);
|
||||||
|
|
||||||
m_flipConsole->enableButton(FlipConsole::eMatte, false, false);
|
m_flipConsole->enableButton(FlipConsole::eMatte, false, false);
|
||||||
m_flipConsole->enableButton(FlipConsole::eSave, false, false);
|
m_flipConsole->enableButton(FlipConsole::eSave, false, false);
|
||||||
|
@ -144,9 +110,20 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
m_flipConsole->enableButton(FlipConsole::eBlackBg, false, false);
|
m_flipConsole->enableButton(FlipConsole::eBlackBg, false, false);
|
||||||
m_flipConsole->enableButton(FlipConsole::eWhiteBg, false, false);
|
m_flipConsole->enableButton(FlipConsole::eWhiteBg, false, false);
|
||||||
m_flipConsole->enableButton(FlipConsole::eCheckBg, false, false);
|
m_flipConsole->enableButton(FlipConsole::eCheckBg, false, false);
|
||||||
|
m_flipConsole->setChecked(FlipConsole::eSound, true);
|
||||||
|
m_playSound = m_flipConsole->isChecked(FlipConsole::eSound);
|
||||||
|
|
||||||
|
m_flipConsole->setFrameRate(app->getCurrentScene()
|
||||||
|
->getScene()
|
||||||
|
->getProperties()
|
||||||
|
->getOutputProperties()
|
||||||
|
->getFrameRate());
|
||||||
m_flipConsole->setFrameHandle(TApp::instance()->getCurrentFrame());
|
m_flipConsole->setFrameHandle(TApp::instance()->getCurrentFrame());
|
||||||
|
|
||||||
|
bool ret = true;
|
||||||
|
// When zoom changed, only if the viewer is active, change window titl
|
||||||
|
ret = ret && connect(m_sceneViewer, SIGNAL(onZoomChanged()),
|
||||||
|
SLOT(changeWindowTitle()));
|
||||||
ret = ret &&
|
ret = ret &&
|
||||||
connect(m_flipConsole, SIGNAL(playStateChanged(bool)),
|
connect(m_flipConsole, SIGNAL(playStateChanged(bool)),
|
||||||
TApp::instance()->getCurrentFrame(), SLOT(setPlaying(bool)));
|
TApp::instance()->getCurrentFrame(), SLOT(setPlaying(bool)));
|
||||||
|
@ -157,7 +134,6 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
ret = ret &&
|
ret = ret &&
|
||||||
connect(m_flipConsole, SIGNAL(buttonPressed(FlipConsole::EGadget)),
|
connect(m_flipConsole, SIGNAL(buttonPressed(FlipConsole::EGadget)),
|
||||||
m_sceneViewer, SLOT(onButtonPressed(FlipConsole::EGadget)));
|
m_sceneViewer, SLOT(onButtonPressed(FlipConsole::EGadget)));
|
||||||
|
|
||||||
ret =
|
ret =
|
||||||
ret && connect(m_flipConsole, SIGNAL(buttonPressed(FlipConsole::EGadget)),
|
ret && connect(m_flipConsole, SIGNAL(buttonPressed(FlipConsole::EGadget)),
|
||||||
this, SLOT(onButtonPressed(FlipConsole::EGadget)));
|
this, SLOT(onButtonPressed(FlipConsole::EGadget)));
|
||||||
|
@ -173,13 +149,6 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
SLOT(onSceneSwitched()));
|
SLOT(onSceneSwitched()));
|
||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
m_flipConsole->setChecked(FlipConsole::eSound, true);
|
|
||||||
m_playSound = m_flipConsole->isChecked(FlipConsole::eSound);
|
|
||||||
m_flipConsole->setFrameRate(app->getCurrentScene()
|
|
||||||
->getScene()
|
|
||||||
->getProperties()
|
|
||||||
->getOutputProperties()
|
|
||||||
->getFrameRate());
|
|
||||||
|
|
||||||
UINT mask = 0;
|
UINT mask = 0;
|
||||||
mask = mask | eShowVcr;
|
mask = mask | eShowVcr;
|
||||||
|
@ -192,13 +161,6 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
mask = mask & ~eShowHisto;
|
mask = mask & ~eShowHisto;
|
||||||
m_flipConsole->setCustomizemask(mask);
|
m_flipConsole->setCustomizemask(mask);
|
||||||
|
|
||||||
updateFrameRange(), updateFrameMarkers();
|
|
||||||
|
|
||||||
setLayout(mainLayout);
|
|
||||||
|
|
||||||
m_visiblePartsFlag = CVPARTS_ALL;
|
|
||||||
updateShowHide();
|
|
||||||
|
|
||||||
setFocusProxy(m_sceneViewer);
|
setFocusProxy(m_sceneViewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,10 +170,10 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||||
/*! toggle show/hide of the widgets according to m_visibleFlag
|
/*! toggle show/hide of the widgets according to m_visibleFlag
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void SceneViewerPanel::updateShowHide() {
|
void BaseViewerPanel::updateShowHide() {
|
||||||
// flip console
|
// flip console
|
||||||
m_flipConsole->showHidePlaybar(m_visiblePartsFlag & CVPARTS_PLAYBAR);
|
m_flipConsole->showHidePlaybar(m_visiblePartsFlag & VPPARTS_PLAYBAR);
|
||||||
m_flipConsole->showHideFrameSlider(m_visiblePartsFlag & CVPARTS_FRAMESLIDER);
|
m_flipConsole->showHideFrameSlider(m_visiblePartsFlag & VPPARTS_FRAMESLIDER);
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +181,7 @@ void SceneViewerPanel::updateShowHide() {
|
||||||
/*! showing the show/hide commands
|
/*! showing the show/hide commands
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// void SceneViewerPanel::contextMenuEvent(QContextMenuEvent *event) {
|
// void BaseViewerPanel::contextMenuEvent(QContextMenuEvent *event) {
|
||||||
// QMenu *menu = new QMenu(this);
|
// QMenu *menu = new QMenu(this);
|
||||||
// addShowHideContextMenu(menu);
|
// addShowHideContextMenu(menu);
|
||||||
// menu->exec(event->globalPos());
|
// menu->exec(event->globalPos());
|
||||||
|
@ -227,7 +189,7 @@ void SceneViewerPanel::updateShowHide() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
void BaseViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
||||||
QMenu *showHideMenu = menu->addMenu(tr("GUI Show / Hide"));
|
QMenu *showHideMenu = menu->addMenu(tr("GUI Show / Hide"));
|
||||||
|
|
||||||
// actions
|
// actions
|
||||||
|
@ -235,12 +197,12 @@ void SceneViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
||||||
QAction *frameSliderSHAct = showHideMenu->addAction(tr("Frame Slider"));
|
QAction *frameSliderSHAct = showHideMenu->addAction(tr("Frame Slider"));
|
||||||
|
|
||||||
playbarSHAct->setCheckable(true);
|
playbarSHAct->setCheckable(true);
|
||||||
playbarSHAct->setChecked(m_visiblePartsFlag & CVPARTS_PLAYBAR);
|
playbarSHAct->setChecked(m_visiblePartsFlag & VPPARTS_PLAYBAR);
|
||||||
playbarSHAct->setData((UINT)CVPARTS_PLAYBAR);
|
playbarSHAct->setData((UINT)VPPARTS_PLAYBAR);
|
||||||
|
|
||||||
frameSliderSHAct->setCheckable(true);
|
frameSliderSHAct->setCheckable(true);
|
||||||
frameSliderSHAct->setChecked(m_visiblePartsFlag & CVPARTS_FRAMESLIDER);
|
frameSliderSHAct->setChecked(m_visiblePartsFlag & VPPARTS_FRAMESLIDER);
|
||||||
frameSliderSHAct->setData((UINT)CVPARTS_FRAMESLIDER);
|
frameSliderSHAct->setData((UINT)VPPARTS_FRAMESLIDER);
|
||||||
|
|
||||||
QActionGroup *showHideActGroup = new QActionGroup(this);
|
QActionGroup *showHideActGroup = new QActionGroup(this);
|
||||||
showHideActGroup->setExclusive(false);
|
showHideActGroup->setExclusive(false);
|
||||||
|
@ -265,18 +227,20 @@ void SceneViewerPanel::addShowHideContextMenu(QMenu *menu) {
|
||||||
/*! slot function for show/hide the parts
|
/*! slot function for show/hide the parts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void SceneViewerPanel::onShowHideActionTriggered(QAction *act) {
|
void BaseViewerPanel::onShowHideActionTriggered(QAction *act) {
|
||||||
CV_Parts part = (CV_Parts)act->data().toUInt();
|
VP_Parts part = (VP_Parts)act->data().toUInt();
|
||||||
assert(part < CVPARTS_End);
|
assert(part < VPPARTS_End);
|
||||||
|
|
||||||
m_visiblePartsFlag ^= part;
|
m_visiblePartsFlag ^= part;
|
||||||
|
|
||||||
updateShowHide();
|
updateShowHide();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneViewerPanel::onDrawFrame(int frame,
|
//-----------------------------------------------------------------------------
|
||||||
const ImagePainter::VisualSettings &settings,
|
|
||||||
QElapsedTimer *, qint64) {
|
void BaseViewerPanel::onDrawFrame(int frame,
|
||||||
|
const ImagePainter::VisualSettings &settings,
|
||||||
|
QElapsedTimer *, qint64) {
|
||||||
TApp *app = TApp::instance();
|
TApp *app = TApp::instance();
|
||||||
m_sceneViewer->setVisual(settings);
|
m_sceneViewer->setVisual(settings);
|
||||||
|
|
||||||
|
@ -295,7 +259,10 @@ void SceneViewerPanel::onDrawFrame(int frame,
|
||||||
!pr->isFrameReady(
|
!pr->isFrameReady(
|
||||||
frame - 1)) // stops on last rendered frame until current is ready!
|
frame - 1)) // stops on last rendered frame until current is ready!
|
||||||
{
|
{
|
||||||
while (frame > 1 && !pr->isFrameReady(frame - 1)) frame--;
|
while (frame > 0 && !pr->isFrameReady(frame - 1)) frame--;
|
||||||
|
if (frame == 0)
|
||||||
|
frame = curFrame; // if no frame is ready, I stay on current...no use
|
||||||
|
// to rewind
|
||||||
m_flipConsole->setCurrentFrame(frame);
|
m_flipConsole->setCurrentFrame(frame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -317,22 +284,22 @@ void SceneViewerPanel::onDrawFrame(int frame,
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
SceneViewerPanel::~SceneViewerPanel() {}
|
void BaseViewerPanel::showEvent(QShowEvent *event) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void SceneViewerPanel::showEvent(QShowEvent *event) {
|
|
||||||
TApp *app = TApp::instance();
|
TApp *app = TApp::instance();
|
||||||
TFrameHandle *frameHandle = app->getCurrentFrame();
|
TFrameHandle *frameHandle = app->getCurrentFrame();
|
||||||
TSceneHandle *sceneHandle = app->getCurrentScene();
|
TSceneHandle *sceneHandle = app->getCurrentScene();
|
||||||
TXshLevelHandle *levelHandle = app->getCurrentLevel();
|
TXshLevelHandle *levelHandle = app->getCurrentLevel();
|
||||||
TObjectHandle *objectHandle = app->getCurrentObject();
|
|
||||||
TXsheetHandle *xshHandle = app->getCurrentXsheet();
|
TXsheetHandle *xshHandle = app->getCurrentXsheet();
|
||||||
|
|
||||||
onSceneChanged();
|
|
||||||
|
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
onSceneChanged(): called when the scene changed
|
||||||
|
- set new scene's FPS
|
||||||
|
- update the range of frame slider with a new framehandle
|
||||||
|
- set the marker
|
||||||
|
- update key frames
|
||||||
|
*/
|
||||||
ret = ret && connect(xshHandle, SIGNAL(xsheetChanged()), this,
|
ret = ret && connect(xshHandle, SIGNAL(xsheetChanged()), this,
|
||||||
SLOT(onSceneChanged()));
|
SLOT(onSceneChanged()));
|
||||||
ret = ret && connect(sceneHandle, SIGNAL(sceneSwitched()), this,
|
ret = ret && connect(sceneHandle, SIGNAL(sceneSwitched()), this,
|
||||||
|
@ -340,90 +307,66 @@ void SceneViewerPanel::showEvent(QShowEvent *event) {
|
||||||
ret = ret && connect(sceneHandle, SIGNAL(sceneChanged()), this,
|
ret = ret && connect(sceneHandle, SIGNAL(sceneChanged()), this,
|
||||||
SLOT(onSceneChanged()));
|
SLOT(onSceneChanged()));
|
||||||
|
|
||||||
|
/*!
|
||||||
|
changeWindowTitle(): called when the scene / level / frame is changed
|
||||||
|
- chenge the title text
|
||||||
|
*/
|
||||||
ret = ret && connect(sceneHandle, SIGNAL(nameSceneChanged()), this,
|
ret = ret && connect(sceneHandle, SIGNAL(nameSceneChanged()), this,
|
||||||
SLOT(changeWindowTitle()));
|
SLOT(changeWindowTitle()));
|
||||||
ret =
|
|
||||||
ret && connect(sceneHandle, SIGNAL(preferenceChanged(const QString &)),
|
|
||||||
m_flipConsole, SLOT(onPreferenceChanged(const QString &)));
|
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelSwitched(TXshLevel *)), this,
|
|
||||||
SLOT(onXshLevelSwitched(TXshLevel *)));
|
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
ret = ret && connect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
||||||
SLOT(changeWindowTitle()));
|
SLOT(changeWindowTitle()));
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelTitleChanged()), this,
|
ret = ret && connect(levelHandle, SIGNAL(xshLevelTitleChanged()), this,
|
||||||
SLOT(changeWindowTitle()));
|
SLOT(changeWindowTitle()));
|
||||||
|
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
||||||
|
SLOT(changeWindowTitle()));
|
||||||
|
|
||||||
|
// updateFrameRange(): update the frame slider's range
|
||||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
ret = ret && connect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
||||||
SLOT(updateFrameRange()));
|
SLOT(updateFrameRange()));
|
||||||
|
|
||||||
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
// onFrameTypeChanged(): reset the marker positions in the flip console
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
|
||||||
SLOT(onFrameSwitched()));
|
|
||||||
ret = ret && connect(frameHandle, SIGNAL(frameTypeChanged()), this,
|
ret = ret && connect(frameHandle, SIGNAL(frameTypeChanged()), this,
|
||||||
SLOT(onFrameTypeChanged()));
|
SLOT(onFrameTypeChanged()));
|
||||||
|
|
||||||
|
// onXshLevelSwitched(TXshLevel*)<29>F changeWindowTitle() + updateFrameRange()
|
||||||
|
ret = ret && connect(levelHandle, SIGNAL(xshLevelSwitched(TXshLevel *)), this,
|
||||||
|
SLOT(onXshLevelSwitched(TXshLevel *)));
|
||||||
|
|
||||||
|
// onFrameSwitched(): update the flipconsole according to the current frame
|
||||||
|
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
||||||
|
SLOT(onFrameSwitched()));
|
||||||
|
|
||||||
ret = ret && connect(app->getCurrentTool(), SIGNAL(toolSwitched()),
|
ret = ret && connect(app->getCurrentTool(), SIGNAL(toolSwitched()),
|
||||||
m_sceneViewer, SLOT(onToolSwitched()));
|
m_sceneViewer, SLOT(onToolSwitched()));
|
||||||
|
ret =
|
||||||
|
ret && connect(sceneHandle, SIGNAL(preferenceChanged(const QString &)),
|
||||||
|
m_flipConsole, SLOT(onPreferenceChanged(const QString &)));
|
||||||
|
|
||||||
assert(ret);
|
assert(ret);
|
||||||
|
|
||||||
// Aggiorno FPS al valore definito nel viewer corrente.
|
|
||||||
// frameHandle->setPreviewFrameRate(m_fpsSlider->value());
|
|
||||||
m_flipConsole->setActive(true);
|
m_flipConsole->setActive(true);
|
||||||
m_flipConsole->onPreferenceChanged("");
|
m_flipConsole->onPreferenceChanged("");
|
||||||
|
|
||||||
|
// refresh
|
||||||
|
onSceneChanged();
|
||||||
|
changeWindowTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::hideEvent(QHideEvent *event) {
|
void BaseViewerPanel::hideEvent(QHideEvent *event) {
|
||||||
TApp *app = TApp::instance();
|
TApp *app = TApp::instance();
|
||||||
TFrameHandle *frameHandle = app->getCurrentFrame();
|
disconnect(app->getCurrentFrame(), nullptr, this, nullptr);
|
||||||
TSceneHandle *sceneHandle = app->getCurrentScene();
|
disconnect(app->getCurrentScene(), nullptr, this, nullptr);
|
||||||
TXshLevelHandle *levelHandle = app->getCurrentLevel();
|
disconnect(app->getCurrentLevel(), nullptr, this, nullptr);
|
||||||
TObjectHandle *objectHandle = app->getCurrentObject();
|
disconnect(app->getCurrentXsheet(), nullptr, this, nullptr);
|
||||||
TXsheetHandle *xshHandle = app->getCurrentXsheet();
|
|
||||||
|
|
||||||
disconnect(xshHandle, SIGNAL(xsheetChanged()), this, SLOT(onSceneChanged()));
|
|
||||||
|
|
||||||
disconnect(sceneHandle, SIGNAL(sceneChanged()), this, SLOT(onSceneChanged()));
|
|
||||||
disconnect(sceneHandle, SIGNAL(nameSceneChanged()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
disconnect(sceneHandle, SIGNAL(sceneSwitched()), this,
|
|
||||||
SLOT(onSceneChanged()));
|
|
||||||
disconnect(levelHandle, SIGNAL(xshLevelSwitched(TXshLevel *)), this,
|
|
||||||
SLOT(onXshLevelSwitched(TXshLevel *)));
|
|
||||||
disconnect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
disconnect(levelHandle, SIGNAL(xshLevelTitleChanged()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
disconnect(levelHandle, SIGNAL(xshLevelChanged()), this,
|
|
||||||
SLOT(updateFrameRange()));
|
|
||||||
|
|
||||||
disconnect(frameHandle, SIGNAL(frameSwitched()), this,
|
|
||||||
SLOT(changeWindowTitle()));
|
|
||||||
disconnect(frameHandle, SIGNAL(frameSwitched()), this,
|
|
||||||
SLOT(onFrameSwitched()));
|
|
||||||
disconnect(frameHandle, SIGNAL(frameTypeChanged()), this,
|
|
||||||
SLOT(onFrameTypeChanged()));
|
|
||||||
|
|
||||||
disconnect(app->getCurrentTool(), SIGNAL(toolSwitched()), m_sceneViewer,
|
|
||||||
SLOT(onToolSwitched()));
|
|
||||||
disconnect(app->getCurrentScene(), SIGNAL(preferenceChanged(const QString &)),
|
|
||||||
m_flipConsole, SLOT(onPreferenceChanged(const QString &)));
|
|
||||||
|
|
||||||
m_flipConsole->setActive(false);
|
m_flipConsole->setActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::resizeEvent(QResizeEvent *e) {
|
void BaseViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
||||||
QWidget::resizeEvent(e);
|
|
||||||
repaint();
|
|
||||||
m_sceneViewer->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void SceneViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
TPanelTitleBarButtonSet *viewModeButtonSet;
|
TPanelTitleBarButtonSet *viewModeButtonSet;
|
||||||
|
@ -483,14 +426,14 @@ void SceneViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
||||||
button = new TPanelTitleBarButton(titleBar,
|
button = new TPanelTitleBarButton(titleBar,
|
||||||
getIconThemePath("actions/20/pane_3d.svg"));
|
getIconThemePath("actions/20/pane_3d.svg"));
|
||||||
button->setToolTip(tr("3D View"));
|
button->setToolTip(tr("3D View"));
|
||||||
x += +1 + iconWidth;
|
x += 1 + iconWidth;
|
||||||
titleBar->add(QPoint(x, 0), button);
|
titleBar->add(QPoint(x, 0), button);
|
||||||
button->setButtonSet(viewModeButtonSet, SceneViewer::CAMERA3D_REFERENCE);
|
button->setButtonSet(viewModeButtonSet, SceneViewer::CAMERA3D_REFERENCE);
|
||||||
|
|
||||||
button = new TPanelTitleBarButton(
|
button = new TPanelTitleBarButton(
|
||||||
titleBar, getIconThemePath("actions/20/pane_cam.svg"));
|
titleBar, getIconThemePath("actions/20/pane_cam.svg"));
|
||||||
button->setToolTip(tr("Camera View"));
|
button->setToolTip(tr("Camera View"));
|
||||||
x += +1 + iconWidth;
|
x += 1 + iconWidth;
|
||||||
titleBar->add(QPoint(x, 0), button);
|
titleBar->add(QPoint(x, 0), button);
|
||||||
button->setButtonSet(viewModeButtonSet, SceneViewer::CAMERA_REFERENCE);
|
button->setButtonSet(viewModeButtonSet, SceneViewer::CAMERA_REFERENCE);
|
||||||
|
|
||||||
|
@ -512,7 +455,7 @@ void SceneViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
||||||
titleBar, getIconThemePath("actions/20/pane_freeze.svg"));
|
titleBar, getIconThemePath("actions/20/pane_freeze.svg"));
|
||||||
x += 10 + iconWidth;
|
x += 10 + iconWidth;
|
||||||
|
|
||||||
button->setToolTip(tr("Freeze")); // RC1
|
button->setToolTip(tr("Freeze"));
|
||||||
titleBar->add(QPoint(x, 0), button);
|
titleBar->add(QPoint(x, 0), button);
|
||||||
ret = ret && connect(button, SIGNAL(toggled(bool)), m_sceneViewer,
|
ret = ret && connect(button, SIGNAL(toggled(bool)), m_sceneViewer,
|
||||||
SLOT(freeze(bool)));
|
SLOT(freeze(bool)));
|
||||||
|
@ -528,7 +471,7 @@ void SceneViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
||||||
|
|
||||||
m_subcameraPreviewButton = new TPanelTitleBarButton(
|
m_subcameraPreviewButton = new TPanelTitleBarButton(
|
||||||
titleBar, getIconThemePath("actions/20/pane_subpreview.svg"));
|
titleBar, getIconThemePath("actions/20/pane_subpreview.svg"));
|
||||||
x += +1 + 24; // width of pane_preview.svg = 24px
|
x += 1 + 24; // width of pane_preview.svg = 24px
|
||||||
|
|
||||||
titleBar->add(QPoint(x, 0), m_subcameraPreviewButton);
|
titleBar->add(QPoint(x, 0), m_subcameraPreviewButton);
|
||||||
m_subcameraPreviewButton->setToolTip(tr("Sub-camera Preview"));
|
m_subcameraPreviewButton->setToolTip(tr("Sub-camera Preview"));
|
||||||
|
@ -540,7 +483,7 @@ void SceneViewerPanel::initializeTitleBar(TPanelTitleBar *titleBar) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::enableFullPreview(bool enabled) {
|
void BaseViewerPanel::enableFullPreview(bool enabled) {
|
||||||
m_subcameraPreviewButton->setPressed(false);
|
m_subcameraPreviewButton->setPressed(false);
|
||||||
m_sceneViewer->enablePreview(enabled ? SceneViewer::FULL_PREVIEW
|
m_sceneViewer->enablePreview(enabled ? SceneViewer::FULL_PREVIEW
|
||||||
: SceneViewer::NO_PREVIEW);
|
: SceneViewer::NO_PREVIEW);
|
||||||
|
@ -551,7 +494,7 @@ void SceneViewerPanel::enableFullPreview(bool enabled) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::enableSubCameraPreview(bool enabled) {
|
void BaseViewerPanel::enableSubCameraPreview(bool enabled) {
|
||||||
m_previewButton->setPressed(false);
|
m_previewButton->setPressed(false);
|
||||||
m_sceneViewer->enablePreview(enabled ? SceneViewer::SUBCAMERA_PREVIEW
|
m_sceneViewer->enablePreview(enabled ? SceneViewer::SUBCAMERA_PREVIEW
|
||||||
: SceneViewer::NO_PREVIEW);
|
: SceneViewer::NO_PREVIEW);
|
||||||
|
@ -562,7 +505,7 @@ void SceneViewerPanel::enableSubCameraPreview(bool enabled) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::enableFlipConsoleForCamerastand(bool on) {
|
void BaseViewerPanel::enableFlipConsoleForCamerastand(bool on) {
|
||||||
m_flipConsole->enableButton(FlipConsole::eMatte, on, false);
|
m_flipConsole->enableButton(FlipConsole::eMatte, on, false);
|
||||||
m_flipConsole->enableButton(FlipConsole::eSave, on, false);
|
m_flipConsole->enableButton(FlipConsole::eSave, on, false);
|
||||||
m_flipConsole->enableButton(FlipConsole::eCompare, on, false);
|
m_flipConsole->enableButton(FlipConsole::eCompare, on, false);
|
||||||
|
@ -575,27 +518,23 @@ void SceneViewerPanel::enableFlipConsoleForCamerastand(bool on) {
|
||||||
m_flipConsole->enableButton(FlipConsole::eCheckBg, on, false);
|
m_flipConsole->enableButton(FlipConsole::eCheckBg, on, false);
|
||||||
|
|
||||||
m_flipConsole->enableProgressBar(on);
|
m_flipConsole->enableProgressBar(on);
|
||||||
// m_flipConsole->enableBlanks(on); // blank frames are now always enabled
|
|
||||||
// m_flipConsole->update();
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::onXshLevelSwitched(TXshLevel *) {
|
void BaseViewerPanel::onXshLevelSwitched(TXshLevel *) {
|
||||||
changeWindowTitle();
|
changeWindowTitle();
|
||||||
m_sceneViewer->update();
|
m_sceneViewer->update();
|
||||||
// If the level switched by using the level choose combo box in the film
|
// If the level is switched by using the combobox in the film strip, the
|
||||||
// strip,
|
// current level switches without change in the frame type (level or scene).
|
||||||
// the current level switches without change in the frame type (level or
|
|
||||||
// scene).
|
|
||||||
// For such case, update the frame range of the console here.
|
// For such case, update the frame range of the console here.
|
||||||
if (TApp::instance()->getCurrentFrame()->isEditingLevel()) updateFrameRange();
|
if (TApp::instance()->getCurrentFrame()->isEditingLevel()) updateFrameRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::onPlayingStatusChanged(bool playing) {
|
void BaseViewerPanel::onPlayingStatusChanged(bool playing) {
|
||||||
if (playing) {
|
if (playing) {
|
||||||
m_playing = true;
|
m_playing = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -624,14 +563,17 @@ void SceneViewerPanel::onPlayingStatusChanged(bool playing) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::changeWindowTitle() {
|
void BaseViewerPanel::changeWindowTitle() { // —vŠm”F
|
||||||
TApp *app = TApp::instance();
|
TApp *app = TApp::instance();
|
||||||
// zoom = sqrt(m_sceneViewer->getViewMatrix().det());
|
|
||||||
ToonzScene *scene = app->getCurrentScene()->getScene();
|
ToonzScene *scene = app->getCurrentScene()->getScene();
|
||||||
if (!scene) return;
|
if (!scene) return;
|
||||||
if (!parentWidget()) return;
|
if (!parentWidget()) return;
|
||||||
int frame = app->getCurrentFrame()->getFrame();
|
int frame = app->getCurrentFrame()->getFrame();
|
||||||
|
|
||||||
|
// put the titlebar texts in this string
|
||||||
QString name;
|
QString name;
|
||||||
|
|
||||||
|
// if the frame type is "scene editing"
|
||||||
if (app->getCurrentFrame()->isEditingScene()) {
|
if (app->getCurrentFrame()->isEditingScene()) {
|
||||||
TProject *project = scene->getProject();
|
TProject *project = scene->getProject();
|
||||||
QString sceneName = QString::fromStdWString(scene->getSceneName());
|
QString sceneName = QString::fromStdWString(scene->getSceneName());
|
||||||
|
@ -671,7 +613,9 @@ void SceneViewerPanel::changeWindowTitle() {
|
||||||
QString imageName =
|
QString imageName =
|
||||||
QString::fromStdWString(fp.withFrame(cell.m_frameId).getWideString());
|
QString::fromStdWString(fp.withFrame(cell.m_frameId).getWideString());
|
||||||
name = name + tr(" :: Level: ") + imageName;
|
name = name + tr(" :: Level: ") + imageName;
|
||||||
} else {
|
}
|
||||||
|
// if the frame type is "level editing"
|
||||||
|
else {
|
||||||
TXshLevel *level = app->getCurrentLevel()->getLevel();
|
TXshLevel *level = app->getCurrentLevel()->getLevel();
|
||||||
if (level) {
|
if (level) {
|
||||||
TFilePath fp(level->getName());
|
TFilePath fp(level->getName());
|
||||||
|
@ -696,8 +640,9 @@ void SceneViewerPanel::changeWindowTitle() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
/*! update the frame range according to the current frame type
|
||||||
void SceneViewerPanel::updateFrameRange() {
|
*/
|
||||||
|
void BaseViewerPanel::updateFrameRange() {
|
||||||
TFrameHandle *fh = TApp::instance()->getCurrentFrame();
|
TFrameHandle *fh = TApp::instance()->getCurrentFrame();
|
||||||
int frameIndex = fh->getFrameIndex();
|
int frameIndex = fh->getFrameIndex();
|
||||||
int maxFrameIndex = fh->getMaxFrameIndex();
|
int maxFrameIndex = fh->getMaxFrameIndex();
|
||||||
|
@ -707,7 +652,7 @@ void SceneViewerPanel::updateFrameRange() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::updateFrameMarkers() {
|
void BaseViewerPanel::updateFrameMarkers() {
|
||||||
int fromIndex, toIndex, dummy;
|
int fromIndex, toIndex, dummy;
|
||||||
XsheetGUI::getPlayRange(fromIndex, toIndex, dummy);
|
XsheetGUI::getPlayRange(fromIndex, toIndex, dummy);
|
||||||
TFrameHandle *fh = TApp::instance()->getCurrentFrame();
|
TFrameHandle *fh = TApp::instance()->getCurrentFrame();
|
||||||
|
@ -720,7 +665,7 @@ void SceneViewerPanel::updateFrameMarkers() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::onSceneChanged() {
|
void BaseViewerPanel::onSceneChanged() {
|
||||||
updateFrameRange();
|
updateFrameRange();
|
||||||
updateFrameMarkers();
|
updateFrameMarkers();
|
||||||
changeWindowTitle();
|
changeWindowTitle();
|
||||||
|
@ -735,8 +680,6 @@ void SceneViewerPanel::onSceneChanged() {
|
||||||
->getOutputProperties()
|
->getOutputProperties()
|
||||||
->getFrameRate(),
|
->getFrameRate(),
|
||||||
false);
|
false);
|
||||||
// vinz: perche veniva fatto?
|
|
||||||
// m_flipConsole->updateCurrentFPS(scene->getProperties()->getOutputProperties()->getFrameRate());
|
|
||||||
|
|
||||||
int frameIndex = TApp::instance()->getCurrentFrame()->getFrameIndex();
|
int frameIndex = TApp::instance()->getCurrentFrame()->getFrameIndex();
|
||||||
if (m_keyFrameButton->getCurrentFrame() != frameIndex)
|
if (m_keyFrameButton->getCurrentFrame() != frameIndex)
|
||||||
|
@ -746,7 +689,7 @@ void SceneViewerPanel::onSceneChanged() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::onSceneSwitched() {
|
void BaseViewerPanel::onSceneSwitched() {
|
||||||
m_previewButton->setPressed(false);
|
m_previewButton->setPressed(false);
|
||||||
m_subcameraPreviewButton->setPressed(false);
|
m_subcameraPreviewButton->setPressed(false);
|
||||||
enableFlipConsoleForCamerastand(false);
|
enableFlipConsoleForCamerastand(false);
|
||||||
|
@ -764,7 +707,7 @@ void SceneViewerPanel::onSceneSwitched() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::onFrameSwitched() {
|
void BaseViewerPanel::onFrameSwitched() {
|
||||||
int frameIndex = TApp::instance()->getCurrentFrame()->getFrameIndex();
|
int frameIndex = TApp::instance()->getCurrentFrame()->getFrameIndex();
|
||||||
m_flipConsole->setCurrentFrame(frameIndex + 1);
|
m_flipConsole->setCurrentFrame(frameIndex + 1);
|
||||||
if (m_keyFrameButton->getCurrentFrame() != frameIndex)
|
if (m_keyFrameButton->getCurrentFrame() != frameIndex)
|
||||||
|
@ -780,8 +723,9 @@ void SceneViewerPanel::onFrameSwitched() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
/*! reset the marker positions in the flip console
|
||||||
void SceneViewerPanel::onFrameTypeChanged() {
|
*/
|
||||||
|
void BaseViewerPanel::onFrameTypeChanged() {
|
||||||
if (TApp::instance()->getCurrentFrame()->getFrameType() ==
|
if (TApp::instance()->getCurrentFrame()->getFrameType() ==
|
||||||
TFrameHandle::LevelFrame) {
|
TFrameHandle::LevelFrame) {
|
||||||
if (m_sceneViewer->isPreviewEnabled()) {
|
if (m_sceneViewer->isPreviewEnabled()) {
|
||||||
|
@ -803,7 +747,7 @@ void SceneViewerPanel::onFrameTypeChanged() {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::playAudioFrame(int frame) {
|
void BaseViewerPanel::playAudioFrame(int frame) {
|
||||||
if (m_first) {
|
if (m_first) {
|
||||||
m_first = false;
|
m_first = false;
|
||||||
m_fps = TApp::instance()
|
m_fps = TApp::instance()
|
||||||
|
@ -828,7 +772,7 @@ void SceneViewerPanel::playAudioFrame(int frame) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
bool SceneViewerPanel::hasSoundtrack() {
|
bool BaseViewerPanel::hasSoundtrack() {
|
||||||
if (m_sound != NULL) {
|
if (m_sound != NULL) {
|
||||||
m_sound = NULL;
|
m_sound = NULL;
|
||||||
m_hasSoundtrack = false;
|
m_hasSoundtrack = false;
|
||||||
|
@ -855,21 +799,21 @@ bool SceneViewerPanel::hasSoundtrack() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneViewerPanel::onButtonPressed(FlipConsole::EGadget button) {
|
void BaseViewerPanel::onButtonPressed(FlipConsole::EGadget button) {
|
||||||
if (button == FlipConsole::eSound) {
|
if (button == FlipConsole::eSound) {
|
||||||
m_playSound = !m_playSound;
|
m_playSound = !m_playSound;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneViewerPanel::setFlipHButtonChecked(bool checked) {
|
void BaseViewerPanel::setFlipHButtonChecked(bool checked) {
|
||||||
m_flipConsole->setChecked(FlipConsole::eFlipHorizontal, checked);
|
m_flipConsole->setChecked(FlipConsole::eFlipHorizontal, checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneViewerPanel::setFlipVButtonChecked(bool checked) {
|
void BaseViewerPanel::setFlipVButtonChecked(bool checked) {
|
||||||
m_flipConsole->setChecked(FlipConsole::eFlipVertical, checked);
|
m_flipConsole->setChecked(FlipConsole::eFlipVertical, checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneViewerPanel::changeSceneFps(int value) {
|
void BaseViewerPanel::changeSceneFps(int value) {
|
||||||
double oldFps = TApp::instance()
|
double oldFps = TApp::instance()
|
||||||
->getCurrentScene()
|
->getCurrentScene()
|
||||||
->getScene()
|
->getScene()
|
||||||
|
@ -892,7 +836,7 @@ void SceneViewerPanel::changeSceneFps(int value) {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::setVisiblePartsFlag(UINT flag) {
|
void BaseViewerPanel::setVisiblePartsFlag(UINT flag) {
|
||||||
m_visiblePartsFlag = flag;
|
m_visiblePartsFlag = flag;
|
||||||
updateShowHide();
|
updateShowHide();
|
||||||
}
|
}
|
||||||
|
@ -900,15 +844,17 @@ void SceneViewerPanel::setVisiblePartsFlag(UINT flag) {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
// SaveLoadQSettings
|
// SaveLoadQSettings
|
||||||
void SceneViewerPanel::save(QSettings &settings, bool forPopupIni) const {
|
void BaseViewerPanel::save(QSettings &settings, bool forPopupIni) const {
|
||||||
settings.setValue("visibleParts", m_visiblePartsFlag);
|
settings.setValue("viewerVisibleParts", m_visiblePartsFlag);
|
||||||
settings.setValue("consoleParts", m_flipConsole->getCustomizeMask());
|
settings.setValue("consoleParts", m_flipConsole->getCustomizeMask());
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SceneViewerPanel::load(QSettings &settings) {
|
void BaseViewerPanel::load(QSettings &settings) {
|
||||||
m_visiblePartsFlag = settings.value("visibleParts", CVPARTS_ALL).toUInt();
|
checkOldVersionVisblePartsFlags(settings);
|
||||||
|
m_visiblePartsFlag =
|
||||||
|
settings.value("viewerVisibleParts", m_visiblePartsFlag).toUInt();
|
||||||
updateShowHide();
|
updateShowHide();
|
||||||
UINT mask = 0;
|
UINT mask = 0;
|
||||||
mask = mask | eShowVcr;
|
mask = mask | eShowVcr;
|
||||||
|
@ -922,3 +868,47 @@ void SceneViewerPanel::load(QSettings &settings) {
|
||||||
m_flipConsole->setCustomizemask(
|
m_flipConsole->setCustomizemask(
|
||||||
settings.value("consoleParts", mask).toUInt());
|
settings.value("consoleParts", mask).toUInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
// SceneViewerPanel
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WindowFlags flags)
|
||||||
|
: BaseViewerPanel(parent, flags) {
|
||||||
|
setObjectName("ViewerPanel");
|
||||||
|
setMinimumHeight(200);
|
||||||
|
|
||||||
|
Ruler *vRuler = new Ruler(this, m_sceneViewer, true);
|
||||||
|
Ruler *hRuler = new Ruler(this, m_sceneViewer, false);
|
||||||
|
m_sceneViewer->setRulers(vRuler, hRuler);
|
||||||
|
|
||||||
|
{
|
||||||
|
QGridLayout *viewerL = new QGridLayout();
|
||||||
|
viewerL->setMargin(0);
|
||||||
|
viewerL->setSpacing(0);
|
||||||
|
{
|
||||||
|
viewerL->addWidget(vRuler, 1, 0);
|
||||||
|
viewerL->addWidget(hRuler, 0, 1);
|
||||||
|
viewerL->addWidget(m_fsWidget, 1, 1);
|
||||||
|
}
|
||||||
|
viewerL->setRowStretch(1, 1);
|
||||||
|
viewerL->setColumnStretch(1, 1);
|
||||||
|
m_mainLayout->insertLayout(0, viewerL, 1);
|
||||||
|
}
|
||||||
|
setLayout(m_mainLayout);
|
||||||
|
// initial state of the parts
|
||||||
|
m_visiblePartsFlag = VPPARTS_ALL;
|
||||||
|
updateShowHide();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void SceneViewerPanel::checkOldVersionVisblePartsFlags(QSettings &settings) {
|
||||||
|
if (!settings.contains("visibleParts")) return;
|
||||||
|
m_visiblePartsFlag =
|
||||||
|
settings.value("visibleParts", m_visiblePartsFlag).toUInt();
|
||||||
|
settings.remove("visibleParts");
|
||||||
|
settings.setValue("viewerVisibleParts", m_visiblePartsFlag);
|
||||||
|
}
|
|
@ -27,16 +27,29 @@ class Ruler;
|
||||||
|
|
||||||
class FlipConsole;
|
class FlipConsole;
|
||||||
class TXshLevel;
|
class TXshLevel;
|
||||||
class SceneViewerPanel final : public QFrame,
|
enum VP_Parts {
|
||||||
public FlipConsoleOwner,
|
VPPARTS_None = 0,
|
||||||
public SaveLoadQSettings {
|
VPPARTS_PLAYBAR = 0x1,
|
||||||
Q_OBJECT
|
VPPARTS_FRAMESLIDER = 0x2,
|
||||||
|
VPPARTS_TOOLBAR = 0x4,
|
||||||
|
VPPARTS_TOOLOPTIONS = 0x8,
|
||||||
|
VPPARTS_End = 0x10,
|
||||||
|
|
||||||
|
VPPARTS_ALL = VPPARTS_PLAYBAR | VPPARTS_FRAMESLIDER,
|
||||||
|
VPPARTS_COMBO_ALL = VPPARTS_ALL | VPPARTS_TOOLBAR | VPPARTS_TOOLOPTIONS
|
||||||
|
};
|
||||||
|
|
||||||
|
class BaseViewerPanel : public QFrame,
|
||||||
|
public FlipConsoleOwner,
|
||||||
|
public SaveLoadQSettings {
|
||||||
|
Q_OBJECT
|
||||||
|
protected:
|
||||||
friend class SceneViewer;
|
friend class SceneViewer;
|
||||||
|
QVBoxLayout *m_mainLayout;
|
||||||
SceneViewer *m_sceneViewer;
|
SceneViewer *m_sceneViewer;
|
||||||
|
ImageUtils::FullScreenWidget *m_fsWidget;
|
||||||
FlipConsole *m_flipConsole;
|
FlipConsole *m_flipConsole;
|
||||||
ViewerKeyframeNavigator *m_keyFrameButton;
|
ViewerKeyframeNavigator *m_keyFrameButton;
|
||||||
|
|
||||||
TPanelTitleBarButtonSet *m_referenceModeBs;
|
TPanelTitleBarButtonSet *m_referenceModeBs;
|
||||||
TPanelTitleBarButton *m_previewButton;
|
TPanelTitleBarButton *m_previewButton;
|
||||||
TPanelTitleBarButton *m_subcameraPreviewButton;
|
TPanelTitleBarButton *m_subcameraPreviewButton;
|
||||||
|
@ -52,17 +65,14 @@ class SceneViewerPanel final : public QFrame,
|
||||||
TSoundTrack *m_sound = NULL;
|
TSoundTrack *m_sound = NULL;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
#if QT_VERSION >= 0x050500
|
BaseViewerPanel(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
||||||
SceneViewerPanel(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
~BaseViewerPanel() {}
|
||||||
#else
|
|
||||||
SceneViewerPanel(QWidget *parent = 0, Qt::WFlags flags = 0);
|
virtual void updateShowHide();
|
||||||
#endif
|
virtual void addShowHideContextMenu(QMenu *);
|
||||||
~SceneViewerPanel();
|
|
||||||
|
|
||||||
// toggle show/hide of the widgets according to m_visiblePartsFlag
|
// toggle show/hide of the widgets according to m_visiblePartsFlag
|
||||||
void setVisiblePartsFlag(UINT flag);
|
void setVisiblePartsFlag(UINT flag);
|
||||||
void updateShowHide();
|
|
||||||
void addShowHideContextMenu(QMenu *);
|
|
||||||
|
|
||||||
void onDrawFrame(int frame, const ImagePainter::VisualSettings &settings,
|
void onDrawFrame(int frame, const ImagePainter::VisualSettings &settings,
|
||||||
QElapsedTimer *timer, qint64 targetInstant) override;
|
QElapsedTimer *timer, qint64 targetInstant) override;
|
||||||
|
@ -82,25 +92,21 @@ public:
|
||||||
void initializeTitleBar(TPanelTitleBar *titleBar);
|
void initializeTitleBar(TPanelTitleBar *titleBar);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// void contextMenuEvent(QContextMenuEvent *event) override;
|
||||||
void showEvent(QShowEvent *) override;
|
void showEvent(QShowEvent *) override;
|
||||||
void hideEvent(QHideEvent *) override;
|
void hideEvent(QHideEvent *) override;
|
||||||
void resizeEvent(QResizeEvent *) override;
|
|
||||||
void createFrameToolBar();
|
|
||||||
void createPlayToolBar();
|
|
||||||
void addColorMaskButton(QWidget *parent, const char *iconSVGName, int id);
|
|
||||||
// reimplementation of TPanel::widgetFocusOnEnter
|
|
||||||
|
|
||||||
void enableFlipConsoleForCamerastand(bool on);
|
void enableFlipConsoleForCamerastand(bool on);
|
||||||
void playAudioFrame(int frame);
|
void playAudioFrame(int frame);
|
||||||
bool hasSoundtrack();
|
bool hasSoundtrack();
|
||||||
// void contextMenuEvent(QContextMenuEvent *event) override;
|
|
||||||
|
virtual void checkOldVersionVisblePartsFlags(QSettings &settings) = 0;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void changeWindowTitle();
|
void changeWindowTitle();
|
||||||
|
void updateFrameRange();
|
||||||
void onSceneChanged();
|
void onSceneChanged();
|
||||||
void onXshLevelSwitched(TXshLevel *);
|
void onXshLevelSwitched(TXshLevel *);
|
||||||
void updateFrameRange();
|
|
||||||
void updateFrameMarkers();
|
void updateFrameMarkers();
|
||||||
void onButtonPressed(FlipConsole::EGadget button);
|
void onButtonPressed(FlipConsole::EGadget button);
|
||||||
void setFlipHButtonChecked(bool checked);
|
void setFlipHButtonChecked(bool checked);
|
||||||
|
@ -119,4 +125,14 @@ protected slots:
|
||||||
void enableSubCameraPreview(bool enabled);
|
void enableSubCameraPreview(bool enabled);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class SceneViewerPanel final : public BaseViewerPanel {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
SceneViewerPanel(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
||||||
|
~SceneViewerPanel() {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void checkOldVersionVisblePartsFlags(QSettings &settings) override;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue