Merge remote-tracking branch 'upstream/master' into stop_motion_improvements

This commit is contained in:
Jeremy Bullock 2020-04-15 16:12:57 -06:00
commit 962b2cd89e
6 changed files with 136 additions and 64 deletions

View file

@ -283,6 +283,8 @@ public:
void pressButton(EGadget buttonId); void pressButton(EGadget buttonId);
void showHideAllParts(bool); void showHideAllParts(bool);
void showHidePlaybar(bool);
void showHideFrameSlider(bool);
void enableProgressBar(bool enable); void enableProgressBar(bool enable);
void setProgressBarStatus(const std::vector<UCHAR> *status); void setProgressBarStatus(const std::vector<UCHAR> *status);

View file

@ -467,7 +467,7 @@ void cloneSubXsheets(TXsheet *xsh) {
// PasteColumnsUndo // PasteColumnsUndo
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class PasteColumnsUndo final : public TUndo { class PasteColumnsUndo : public TUndo {
std::set<int> m_indices; std::set<int> m_indices;
StageObjectsData *m_data; StageObjectsData *m_data;
QMap<TFxPort *, TFx *> m_columnLinks; QMap<TFxPort *, TFx *> m_columnLinks;
@ -1349,3 +1349,23 @@ ColumnsStatusCommand
c16(MI_LockSelectedColumns, CMD_LOCK, TARGET_SELECTED), c16(MI_LockSelectedColumns, CMD_LOCK, TARGET_SELECTED),
c17(MI_UnlockSelectedColumns, CMD_UNLOCK, TARGET_SELECTED); c17(MI_UnlockSelectedColumns, CMD_UNLOCK, TARGET_SELECTED);
} // namespace } // namespace
//=============================================================================
// ConvertToVectorUndo
//-----------------------------------------------------------------------------
// Same in functionality to PasteColumnsUndo; think of it perhaps like
// pasting the newly created vector column.
class ConvertToVectorUndo final : public PasteColumnsUndo {
public:
ConvertToVectorUndo(std::set<int> indices) : PasteColumnsUndo(indices) {};
QString getHistoryString() override {
return QObject::tr("Convert to Vectors");
}
};
void ColumnCmd::addConvertToVectorUndo(std::set<int> &newColumnIndices)
{
TUndoManager::manager()->add(new ConvertToVectorUndo(newColumnIndices));
}

View file

@ -32,6 +32,9 @@ bool canResequence(int index);
void cloneChild(int index); void cloneChild(int index);
void clearCells(int index); void clearCells(int index);
//! Adds an undo object for converting layer to vector.
void addConvertToVectorUndo(std::set<int> &newColumnIndices);
} // namespace } // namespace
#endif #endif

View file

@ -46,6 +46,7 @@
#include "tcolorstyles.h" #include "tcolorstyles.h"
#include "tstroke.h" #include "tstroke.h"
#include "tpersistset.h" #include "tpersistset.h"
#include "columncommand.h"
// Qt includes // Qt includes
#include <QFrame> #include <QFrame>
@ -950,6 +951,7 @@ bool VectorizerPopup::apply() {
SLOT(onFinished()), Qt::QueuedConnection); SLOT(onFinished()), Qt::QueuedConnection);
assert(ret); assert(ret);
std::set<int> newColumnIndices;
int newIndexColumn = c1 + 1; int newIndexColumn = c1 + 1;
for (auto const level : levels) { for (auto const level : levels) {
TXshSimpleLevel *sl = dynamic_cast<TXshSimpleLevel *>(level); TXshSimpleLevel *sl = dynamic_cast<TXshSimpleLevel *>(level);
@ -1017,9 +1019,11 @@ bool VectorizerPopup::apply() {
} }
} }
} }
newColumnIndices.insert(newIndexColumn);
newIndexColumn += 1; newIndexColumn += 1;
} else if (vl) { } else if (vl) {
std::vector<TFrameId> gomi; std::vector<TFrameId> gomi;
newColumnIndices.insert(scene->getXsheet()->getFirstFreeColumnIndex());
scene->getXsheet()->exposeLevel( scene->getXsheet()->exposeLevel(
0, scene->getXsheet()->getFirstFreeColumnIndex(), vl, gomi); 0, scene->getXsheet()->getFirstFreeColumnIndex(), vl, gomi);
} }
@ -1027,6 +1031,10 @@ bool VectorizerPopup::apply() {
if (m_vectorizer->isCanceled()) break; if (m_vectorizer->isCanceled()) break;
} }
// Add undo object
if (!m_vectorizer->isCanceled())
ColumnCmd::addConvertToVectorUndo(newColumnIndices);
m_progressDialog->close(); m_progressDialog->close();
delete m_vectorizer; delete m_vectorizer;

View file

@ -67,11 +67,10 @@
enum CV_Parts { enum CV_Parts {
CVPARTS_None = 0, CVPARTS_None = 0,
CVPARTS_TOOLBAR = 0x1, CVPARTS_PLAYBAR = 0x1,
CVPARTS_TOOLOPTIONS = 0x2, CVPARTS_FRAMESLIDER = 0x4,
CVPARTS_FLIPCONSOLE = 0x4,
CVPARTS_End = 0x8, CVPARTS_End = 0x8,
CVPARTS_ALL = CVPARTS_TOOLBAR | CVPARTS_TOOLOPTIONS | CVPARTS_FLIPCONSOLE CVPARTS_ALL = CVPARTS_PLAYBAR | CVPARTS_FRAMESLIDER
}; };
using namespace DVGui; using namespace DVGui;
@ -182,7 +181,6 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
->getFrameRate()); ->getFrameRate());
updateFrameRange(), updateFrameMarkers(); updateFrameRange(), updateFrameMarkers();
setLayout(mainLayout); setLayout(mainLayout);
m_visiblePartsFlag = CVPARTS_ALL; m_visiblePartsFlag = CVPARTS_ALL;
@ -199,7 +197,8 @@ SceneViewerPanel::SceneViewerPanel(QWidget *parent, Qt::WFlags flags)
void SceneViewerPanel::updateShowHide() { void SceneViewerPanel::updateShowHide() {
// flip console // flip console
m_flipConsole->showHideAllParts(m_visiblePartsFlag & CVPARTS_FLIPCONSOLE); m_flipConsole->showHidePlaybar(m_visiblePartsFlag & CVPARTS_PLAYBAR);
m_flipConsole->showHideFrameSlider(m_visiblePartsFlag & CVPARTS_FRAMESLIDER);
update(); update();
} }
@ -213,21 +212,27 @@ void SceneViewerPanel::contextMenuEvent(QContextMenuEvent* event) {
menu->exec(event->globalPos()); menu->exec(event->globalPos());
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void SceneViewerPanel::addShowHideContextMenu(QMenu *menu) { void SceneViewerPanel::addShowHideContextMenu(QMenu *menu) {
QMenu *showHideMenu = menu->addMenu(tr("GUI Show / Hide")); QMenu *showHideMenu = menu->addMenu(tr("GUI Show / Hide"));
// actions
QAction* flipConsoleSHAct = showHideMenu->addAction(tr("Console")); // actions
flipConsoleSHAct->setCheckable(true); QAction *playbarSHAct = showHideMenu->addAction(tr("Playback Toolbar"));
flipConsoleSHAct->setChecked(m_visiblePartsFlag & CVPARTS_FLIPCONSOLE); QAction *frameSliderSHAct = showHideMenu->addAction(tr("Frame Slider"));
flipConsoleSHAct->setData((UINT)CVPARTS_FLIPCONSOLE);
playbarSHAct->setCheckable(true);
playbarSHAct->setChecked(m_visiblePartsFlag & CVPARTS_PLAYBAR);
playbarSHAct->setData((UINT)CVPARTS_PLAYBAR);
frameSliderSHAct->setCheckable(true);
frameSliderSHAct->setChecked(m_visiblePartsFlag & CVPARTS_FRAMESLIDER);
frameSliderSHAct->setData((UINT)CVPARTS_FRAMESLIDER);
QActionGroup *showHideActGroup = new QActionGroup(this); QActionGroup *showHideActGroup = new QActionGroup(this);
showHideActGroup->setExclusive(false); showHideActGroup->setExclusive(false);
showHideActGroup->addAction(flipConsoleSHAct); showHideActGroup->addAction(playbarSHAct);
showHideActGroup->addAction(frameSliderSHAct);
connect(showHideActGroup, SIGNAL(triggered(QAction *)), this, connect(showHideActGroup, SIGNAL(triggered(QAction *)), this,
SLOT(onShowHideActionTriggered(QAction *))); SLOT(onShowHideActionTriggered(QAction *)));

View file

@ -429,7 +429,9 @@ enum {
eShowDefineLoadBox = 0x400, eShowDefineLoadBox = 0x400,
eShowUseLoadBox = 0x800, eShowUseLoadBox = 0x800,
eShowViewerControls = 0x1000, eShowViewerControls = 0x1000,
eShowHowMany = 0x2000 eShowSound = 0x2000,
eShowLocator = 0x4000,
eShowHowMany = 0x8000
}; };
FlipConsole::FlipConsole(QVBoxLayout *mainLayout, std::vector<int> gadgetsMask, FlipConsole::FlipConsole(QVBoxLayout *mainLayout, std::vector<int> gadgetsMask,
@ -542,6 +544,18 @@ void FlipConsole::showHideAllParts(bool isShow) {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void FlipConsole::showHidePlaybar(bool isShow) {
m_playToolBarContainer->setVisible(isShow);
}
//-----------------------------------------------------------------------------
void FlipConsole::showHideFrameSlider(bool isShow) {
m_frameSliderFrame->setVisible(isShow);
}
//-----------------------------------------------------------------------------
void showEvent(QShowEvent *); void showEvent(QShowEvent *);
void hideEvent(QHideEvent *); void hideEvent(QHideEvent *);
@ -992,10 +1006,20 @@ void FlipConsole::applyCustomizeMask() {
enableButton(eDefineSubCamera, m_customizeMask & eShowDefineSubCamera); enableButton(eDefineSubCamera, m_customizeMask & eShowDefineSubCamera);
enableButton(eDefineLoadBox, m_customizeMask & eShowDefineLoadBox); enableButton(eDefineLoadBox, m_customizeMask & eShowDefineLoadBox);
enableButton(eUseLoadBox, m_customizeMask & eShowUseLoadBox); enableButton(eUseLoadBox, m_customizeMask & eShowUseLoadBox);
if (m_subcamSep) if (m_subcamSep) {
m_subcamSep->setVisible(m_customizeMask & eShowDefineSubCamera || int count = m_gadgetsMask.size();
m_customizeMask & eShowDefineLoadBox || bool hasDefineLoadBox =
m_customizeMask & eShowUseLoadBox); std::find(m_gadgetsMask.begin(), m_gadgetsMask.end(), eDefineLoadBox) ==
m_gadgetsMask.end();
bool hasUseLoadBox = std::find(m_gadgetsMask.begin(), m_gadgetsMask.end(),
eUseLoadBox) == m_gadgetsMask.end();
bool hasDefineSubCam = std::find(m_gadgetsMask.begin(), m_gadgetsMask.end(),
eDefineSubCamera) == m_gadgetsMask.end();
m_subcamSep->setVisible(
(hasDefineSubCam && m_customizeMask & eShowDefineSubCamera) ||
(hasDefineLoadBox && m_customizeMask & eShowDefineLoadBox) ||
(hasUseLoadBox && m_customizeMask & eShowUseLoadBox));
}
enableButton(eWhiteBg, m_customizeMask & eShowBg); enableButton(eWhiteBg, m_customizeMask & eShowBg);
enableButton(eBlackBg, m_customizeMask & eShowBg); enableButton(eBlackBg, m_customizeMask & eShowBg);
@ -1016,6 +1040,9 @@ void FlipConsole::applyCustomizeMask() {
enableButton(eNext, m_customizeMask & eShowVcr); enableButton(eNext, m_customizeMask & eShowVcr);
enableButton(eLast, m_customizeMask & eShowVcr); enableButton(eLast, m_customizeMask & eShowVcr);
enableButton(eSound, m_customizeMask & eShowSound);
enableButton(eLocator, m_customizeMask & eShowLocator);
if (m_vcrSep) m_vcrSep->setVisible(m_customizeMask & eShowVcr); if (m_vcrSep) m_vcrSep->setVisible(m_customizeMask & eShowVcr);
enableButton(eMatte, m_customizeMask & eShowcolorFilter); enableButton(eMatte, m_customizeMask & eShowcolorFilter);
@ -1094,8 +1121,6 @@ void FlipConsole::createCustomizeMenu(bool withCustomWidget) {
hasButton(m_gadgetsMask, eBlackBg) || hasButton(m_gadgetsMask, eBlackBg) ||
hasButton(m_gadgetsMask, eCheckBg)) hasButton(m_gadgetsMask, eCheckBg))
addMenuItem(eShowBg, tr("Background Colors"), menu); addMenuItem(eShowBg, tr("Background Colors"), menu);
if (hasButton(m_gadgetsMask, eRate))
addMenuItem(eShowFramerate, tr("Framerate"), menu);
addMenuItem(eShowVcr, tr("Playback Controls"), menu); addMenuItem(eShowVcr, tr("Playback Controls"), menu);
@ -1103,11 +1128,17 @@ void FlipConsole::createCustomizeMenu(bool withCustomWidget) {
hasButton(m_gadgetsMask, eBlue) || hasButton(m_gadgetsMask, eMatte)) hasButton(m_gadgetsMask, eBlue) || hasButton(m_gadgetsMask, eMatte))
addMenuItem(eShowcolorFilter, tr("Color Channels"), menu); addMenuItem(eShowcolorFilter, tr("Color Channels"), menu);
if (withCustomWidget) addMenuItem(eShowCustom, tr("Set Key"), menu); if (hasButton(m_gadgetsMask, eSound))
addMenuItem(eShowSound, tr("Sound"), menu);
if (hasButton(m_gadgetsMask, eHisto)) if (hasButton(m_gadgetsMask, eHisto))
addMenuItem(eShowHisto, tr("Histogram"), menu); addMenuItem(eShowHisto, tr("Histogram"), menu);
if (hasButton(m_gadgetsMask, eLocator))
addMenuItem(eShowLocator, tr("Locator"), menu);
if (withCustomWidget) addMenuItem(eShowCustom, tr("Set Key"), menu);
if (hasButton(m_gadgetsMask, eFilledRaster)) if (hasButton(m_gadgetsMask, eFilledRaster))
addMenuItem(eFilledRaster, tr("Display Areas as Filled"), menu); addMenuItem(eFilledRaster, tr("Display Areas as Filled"), menu);
@ -1118,6 +1149,9 @@ void FlipConsole::createCustomizeMenu(bool withCustomWidget) {
hasButton(m_gadgetsMask, eResetView)) hasButton(m_gadgetsMask, eResetView))
addMenuItem(eShowViewerControls, tr("Viewer Controls"), menu); addMenuItem(eShowViewerControls, tr("Viewer Controls"), menu);
if (hasButton(m_gadgetsMask, eRate))
addMenuItem(eShowFramerate, tr("Framerate"), menu);
bool ret = connect(menu, SIGNAL(triggered(QAction *)), this, bool ret = connect(menu, SIGNAL(triggered(QAction *)), this,
SLOT(onCustomizeButtonPressed(QAction *))); SLOT(onCustomizeButtonPressed(QAction *)));
assert(ret); assert(ret);