[Gui] Issue #3923 - Arbitrary Tree item ordering + tests
This commit is contained in:
@@ -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";}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user