[Gui] Issue #3923 - Arbitrary Tree item ordering + tests

This commit is contained in:
Tomas Pavlicek
2021-10-26 19:09:34 +02:00
parent ea355833fd
commit 345dcd5252
16 changed files with 826 additions and 22 deletions

View File

@@ -3684,6 +3684,116 @@ void StdTreeDrag::activated(int)
}
}
//===========================================================================
// Std_GroupMoveUp
//===========================================================================
DEF_STD_CMD_A(StdGroupMoveUp)
StdGroupMoveUp::StdGroupMoveUp()
: Command("Std_GroupMoveUp")
{
sGroup = QT_TR_NOOP("TreeView");
sMenuText = QT_TR_NOOP("Move up in group");
sToolTipText = QT_TR_NOOP("Move object one place higher in its group");
sStatusTip = sToolTipText;
sWhatsThis = "Std_GroupMoveUp";
sPixmap = "button_up";
sAccel = "Alt+Up";
eType = 0;
}
void StdGroupMoveUp::activated(int iMsg)
{
Q_UNUSED(iMsg);
TreeWidget *tree = TreeWidget::instance();
if (!tree) {
return;
}
std::vector<DocumentObjectItem *> selected;
if (!tree->getSelectedSiblingObjectItems(selected)) {
return;
}
DocumentObjectItem *previous;
if (!tree->allowMoveUpInGroup(selected, &previous)) {
return;
}
TreeWidget::moveSiblings(selected, previous, -1);
}
bool StdGroupMoveUp::isActive(void)
{
TreeWidget *tree = TreeWidget::instance();
if (!tree) {
return false;
}
std::vector<DocumentObjectItem *> selected;
if (!tree->getSelectedSiblingObjectItems(selected)) {
return false;
}
return tree->allowMoveUpInGroup(selected);
}
//===========================================================================
// Std_GroupMoveDown
//===========================================================================
DEF_STD_CMD_A(StdGroupMoveDown)
StdGroupMoveDown::StdGroupMoveDown()
: Command("Std_GroupMoveDown")
{
sGroup = QT_TR_NOOP("TreeView");
sMenuText = QT_TR_NOOP("Move down in group");
sToolTipText = QT_TR_NOOP("Move object one place lower in its group");
sStatusTip = sToolTipText;
sWhatsThis = "Std_GroupMoveDown";
sPixmap = "button_down";
sAccel = "Alt+Down";
eType = 0;
}
void StdGroupMoveDown::activated(int iMsg)
{
Q_UNUSED(iMsg);
TreeWidget *tree = TreeWidget::instance();
if (!tree) {
return;
}
std::vector<DocumentObjectItem *> selected;
if (!tree->getSelectedSiblingObjectItems(selected)) {
return;
}
DocumentObjectItem *next ;
if (!tree->allowMoveDownInGroup(selected, &next)) {
return;
}
TreeWidget::moveSiblings(selected, next, +1);
}
bool StdGroupMoveDown::isActive(void)
{
TreeWidget *tree = TreeWidget::instance();
if (!tree) {
return false;
}
std::vector<DocumentObjectItem *> selected;
if (!tree->getSelectedSiblingObjectItems(selected)) {
return false;
}
return tree->allowMoveDownInGroup(selected);
}
//======================================================================
// Std_TreeViewActions
//===========================================================================
@@ -3718,6 +3828,11 @@ public:
addCommand(new StdTreeDrag(),cmds.size());
addCommand(new StdTreeSelection(),cmds.size());
addCommand();
addCommand(new StdGroupMoveUp());
addCommand(new StdGroupMoveDown());
};
virtual const char* className() const {return "StdCmdTreeViewActions";}
};