Note Level enhancement and crash fixe (#2568)
* Add Note Level context menu * Fix Replace Note Level crash
This commit is contained in:
parent
1223e0dc7b
commit
5bceaad2c4
2 changed files with 71 additions and 60 deletions
|
@ -3111,9 +3111,8 @@ const bool CellArea::isControlPressed() { return isCtrlPressed; }
|
|||
void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) {
|
||||
CommandManager *cmdManager = CommandManager::instance();
|
||||
|
||||
bool soundCellsSelected = m_viewer->areSoundCellsSelected();
|
||||
|
||||
if (m_viewer->areSoundTextCellsSelected()) return; // Magpies stop here
|
||||
bool soundCellsSelected = m_viewer->areSoundCellsSelected();
|
||||
bool soundTextCellsSelected = m_viewer->areSoundTextCellsSelected();
|
||||
|
||||
menu.addSeparator();
|
||||
|
||||
|
@ -3124,13 +3123,17 @@ void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) {
|
|||
}
|
||||
|
||||
if (isCellSelected) {
|
||||
bool addSeparator = false;
|
||||
// open fx settings instead of level settings when clicked on zerary fx
|
||||
// level
|
||||
if (cell.m_level && cell.m_level->getZeraryFxLevel())
|
||||
if (cell.m_level && cell.m_level->getZeraryFxLevel()) {
|
||||
menu.addAction(cmdManager->getAction(MI_FxParamEditor));
|
||||
else
|
||||
addSeparator = true;
|
||||
} else if (!soundTextCellsSelected) {
|
||||
menu.addAction(cmdManager->getAction(MI_LevelSettings));
|
||||
menu.addSeparator();
|
||||
addSeparator = true;
|
||||
}
|
||||
if (addSeparator) menu.addSeparator();
|
||||
|
||||
if (!soundCellsSelected) {
|
||||
QMenu *reframeSubMenu = new QMenu(tr("Reframe"), this);
|
||||
|
@ -3162,74 +3165,81 @@ void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) {
|
|||
}
|
||||
menu.addMenu(eachSubMenu);
|
||||
|
||||
QMenu *editCellNumbersMenu = new QMenu(tr("Edit Cell Numbers"), this);
|
||||
{
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Reverse));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Swing));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Random));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Dup));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rollup));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rolldown));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_TimeStretch));
|
||||
editCellNumbersMenu->addAction(
|
||||
cmdManager->getAction(MI_AutoInputCellNumber));
|
||||
if (!soundTextCellsSelected) {
|
||||
QMenu *editCellNumbersMenu = new QMenu(tr("Edit Cell Numbers"), this);
|
||||
{
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Reverse));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Swing));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Random));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Dup));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rollup));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rolldown));
|
||||
editCellNumbersMenu->addAction(cmdManager->getAction(MI_TimeStretch));
|
||||
editCellNumbersMenu->addAction(
|
||||
cmdManager->getAction(MI_AutoInputCellNumber));
|
||||
}
|
||||
menu.addMenu(editCellNumbersMenu);
|
||||
}
|
||||
menu.addMenu(editCellNumbersMenu);
|
||||
menu.addAction(cmdManager->getAction(MI_FillEmptyCell));
|
||||
|
||||
menu.addSeparator();
|
||||
menu.addAction(cmdManager->getAction(MI_Autorenumber));
|
||||
|
||||
if (!soundTextCellsSelected)
|
||||
menu.addAction(cmdManager->getAction(MI_Autorenumber));
|
||||
}
|
||||
|
||||
QMenu *replaceLevelMenu = new QMenu(tr("Replace Level"), this);
|
||||
menu.addMenu(replaceLevelMenu);
|
||||
if (!soundTextCellsSelected) {
|
||||
QMenu *replaceLevelMenu = new QMenu(tr("Replace Level"), this);
|
||||
menu.addMenu(replaceLevelMenu);
|
||||
|
||||
replaceLevelMenu->addAction(cmdManager->getAction(MI_ReplaceLevel));
|
||||
replaceLevelMenu->addAction(cmdManager->getAction(MI_ReplaceLevel));
|
||||
|
||||
replaceLevelMenu->addAction(
|
||||
cmdManager->getAction(MI_ReplaceParentDirectory));
|
||||
replaceLevelMenu->addAction(
|
||||
cmdManager->getAction(MI_ReplaceParentDirectory));
|
||||
|
||||
{
|
||||
// replace with another level in scene cast
|
||||
std::vector<TXshLevel *> levels;
|
||||
TApp::instance()
|
||||
->getCurrentScene()
|
||||
->getScene()
|
||||
->getLevelSet()
|
||||
->listLevels(levels);
|
||||
if (!levels.empty()) {
|
||||
QMenu *replaceMenu = replaceLevelMenu->addMenu(tr("Replace with"));
|
||||
connect(replaceMenu, SIGNAL(triggered(QAction *)), this,
|
||||
SLOT(onReplaceByCastedLevel(QAction *)));
|
||||
for (int i = 0; i < (int)levels.size(); i++) {
|
||||
if (!levels[i]->getSimpleLevel() && !levels[i]->getChildLevel())
|
||||
continue;
|
||||
{
|
||||
// replace with another level in scene cast
|
||||
std::vector<TXshLevel *> levels;
|
||||
TApp::instance()
|
||||
->getCurrentScene()
|
||||
->getScene()
|
||||
->getLevelSet()
|
||||
->listLevels(levels);
|
||||
if (!levels.empty()) {
|
||||
QMenu *replaceMenu = replaceLevelMenu->addMenu(tr("Replace with"));
|
||||
connect(replaceMenu, SIGNAL(triggered(QAction *)), this,
|
||||
SLOT(onReplaceByCastedLevel(QAction *)));
|
||||
for (int i = 0; i < (int)levels.size(); i++) {
|
||||
if (!levels[i]->getSimpleLevel() && !levels[i]->getChildLevel())
|
||||
continue;
|
||||
|
||||
if (levels[i]->getChildLevel() &&
|
||||
!TApp::instance()->getCurrentXsheet()->getXsheet()->isLevelUsed(
|
||||
levels[i]))
|
||||
continue;
|
||||
if (levels[i]->getChildLevel() &&
|
||||
!TApp::instance()->getCurrentXsheet()->getXsheet()->isLevelUsed(
|
||||
levels[i]))
|
||||
continue;
|
||||
|
||||
QString tmpLevelName = QString::fromStdWString(levels[i]->getName());
|
||||
QAction *tmpAction = new QAction(tmpLevelName, replaceMenu);
|
||||
tmpAction->setData(tmpLevelName);
|
||||
replaceMenu->addAction(tmpAction);
|
||||
QString tmpLevelName =
|
||||
QString::fromStdWString(levels[i]->getName());
|
||||
QAction *tmpAction = new QAction(tmpLevelName, replaceMenu);
|
||||
tmpAction->setData(tmpLevelName);
|
||||
replaceMenu->addAction(tmpAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!soundCellsSelected) {
|
||||
if (selectionContainTlvImage(m_viewer->getCellSelection(),
|
||||
m_viewer->getXsheet()))
|
||||
replaceLevelMenu->addAction(
|
||||
cmdManager->getAction(MI_RevertToCleanedUp));
|
||||
if (selectionContainLevelImage(m_viewer->getCellSelection(),
|
||||
if (!soundCellsSelected && !soundTextCellsSelected) {
|
||||
if (selectionContainTlvImage(m_viewer->getCellSelection(),
|
||||
m_viewer->getXsheet()))
|
||||
replaceLevelMenu->addAction(
|
||||
cmdManager->getAction(MI_RevertToLastSaved));
|
||||
menu.addAction(cmdManager->getAction(MI_SetKeyframes));
|
||||
replaceLevelMenu->addAction(
|
||||
cmdManager->getAction(MI_RevertToCleanedUp));
|
||||
if (selectionContainLevelImage(m_viewer->getCellSelection(),
|
||||
m_viewer->getXsheet()))
|
||||
replaceLevelMenu->addAction(
|
||||
cmdManager->getAction(MI_RevertToLastSaved));
|
||||
menu.addAction(cmdManager->getAction(MI_SetKeyframes));
|
||||
}
|
||||
menu.addSeparator();
|
||||
}
|
||||
menu.addSeparator();
|
||||
|
||||
menu.addAction(cmdManager->getAction(MI_Cut));
|
||||
menu.addAction(cmdManager->getAction(MI_Copy));
|
||||
|
@ -3244,7 +3254,8 @@ void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) {
|
|||
|
||||
menu.addAction(cmdManager->getAction(MI_Clear));
|
||||
menu.addAction(cmdManager->getAction(MI_Insert));
|
||||
menu.addAction(cmdManager->getAction(MI_Duplicate));
|
||||
if (!soundTextCellsSelected)
|
||||
menu.addAction(cmdManager->getAction(MI_Duplicate));
|
||||
menu.addSeparator();
|
||||
|
||||
TXshSimpleLevel *sl = TApp::instance()->getCurrentLevel()->getSimpleLevel();
|
||||
|
|
|
@ -46,7 +46,7 @@ void TXshSoundTextColumn::createSoundTextLevel(int row,
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool TXshSoundTextColumn::canSetCell(const TXshCell &cell) const {
|
||||
return true;
|
||||
return cell.isEmpty() || cell.m_level->getSoundTextLevel() != 0;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue