enable selection in the dialog item list
now the user can use the Ctrl and/or Shift key to select multiple items to be deleted
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <QAction>
|
||||
# include <QListWidget>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskChamferParameters.h"
|
||||
@@ -109,6 +110,9 @@ TaskChamferParameters::TaskChamferParameters(ViewProviderDressUp *DressUpView, Q
|
||||
|
||||
void TaskChamferParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
{
|
||||
// executed when the user selected something in the CAD object
|
||||
// adds/deletes the selection accordingly
|
||||
|
||||
if (selectionMode == none)
|
||||
return;
|
||||
|
||||
@@ -155,21 +159,39 @@ void TaskChamferParameters::clearButtons(const selectionModes notThis)
|
||||
|
||||
void TaskChamferParameters::onRefDeleted(void)
|
||||
{
|
||||
// get vector of selected objects of active document to assure we have a valid selection
|
||||
std::vector<Gui::SelectionObject> selection = Gui::Selection().getSelectionEx();
|
||||
if (selection.size() == 0) {
|
||||
QMessageBox::warning(this, tr("Selection error"), tr("Nothing selected!"));
|
||||
return;
|
||||
}
|
||||
// assure we we are not in selection mode
|
||||
exitSelectionMode();
|
||||
clearButtons(none);
|
||||
// delete any selections since the reference might be highlighted
|
||||
// delete any selections since the reference(s) might be highlighted
|
||||
Gui::Selection().clearSelection();
|
||||
DressUpView->highlightReferences(false);
|
||||
|
||||
PartDesign::Chamfer* pcChamfer = static_cast<PartDesign::Chamfer*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcChamfer->Base.getValue();
|
||||
std::vector<std::string> refs = pcChamfer->Base.getSubValues();
|
||||
refs.erase(refs.begin() + ui->listWidgetReferences->currentRow());
|
||||
setupTransaction();
|
||||
pcChamfer->Base.setValue(base, refs);
|
||||
ui->listWidgetReferences->model()->removeRow(ui->listWidgetReferences->currentRow());
|
||||
pcChamfer->getDocument()->recomputeFeature(pcChamfer);
|
||||
// get the list of items to be deleted
|
||||
QList<QListWidgetItem*> selectedList = ui->listWidgetReferences->selectedItems();
|
||||
|
||||
// delete the selection backwards to assure the list index keeps valid for the deletion
|
||||
for (int i = selectedList.count() - 1; i > -1; i--) {
|
||||
QListWidgetItem* item = selectedList.at(i);
|
||||
// get the fillet object
|
||||
PartDesign::Chamfer* pcChamfer = static_cast<PartDesign::Chamfer*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcChamfer->Base.getValue();
|
||||
// get all fillet references
|
||||
std::vector<std::string> refs = pcChamfer->Base.getSubValues();
|
||||
// the ref index is the same as the listWidgetReferences index
|
||||
// so we can erase using the row number of the element to be deleted
|
||||
int rowNumber = ui->listWidgetReferences->row(selectedList.at(i));
|
||||
refs.erase(refs.begin() + rowNumber);
|
||||
setupTransaction();
|
||||
pcChamfer->Base.setValue(base, refs);
|
||||
ui->listWidgetReferences->model()->removeRow(rowNumber);
|
||||
pcChamfer->getDocument()->recomputeFeature(pcChamfer);
|
||||
}
|
||||
|
||||
// if there is only one item left, it cannot be deleted
|
||||
if (ui->listWidgetReferences->count() == 1) {
|
||||
|
||||
@@ -52,6 +52,9 @@ click again to end selection</string>
|
||||
<string>- select an item to highlight it
|
||||
- double-click on an item to see the chamfers</string>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#ifndef _PreComp_
|
||||
# include <QMessageBox>
|
||||
# include <QAction>
|
||||
# include <QListWidget>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskDraftParameters.h"
|
||||
@@ -131,6 +132,9 @@ TaskDraftParameters::TaskDraftParameters(ViewProviderDressUp *DressUpView, QWidg
|
||||
|
||||
void TaskDraftParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
{
|
||||
// executed when the user selected something in the CAD object
|
||||
// adds/deletes the selection accordingly
|
||||
|
||||
if (selectionMode == none)
|
||||
return;
|
||||
|
||||
@@ -229,21 +233,40 @@ void TaskDraftParameters::onButtonLine(bool checked)
|
||||
|
||||
void TaskDraftParameters::onRefDeleted(void)
|
||||
{
|
||||
// get vector of selected objects of active document to assure we have a valid selection
|
||||
std::vector<Gui::SelectionObject> selection = Gui::Selection().getSelectionEx();
|
||||
if (selection.size() == 0) {
|
||||
QMessageBox::warning(this, tr("Selection error"), tr("Nothing selected!"));
|
||||
return;
|
||||
}
|
||||
// assure we we are not in selection mode
|
||||
exitSelectionMode();
|
||||
clearButtons(none);
|
||||
// delete any selections since the reference might be highlighted
|
||||
// delete any selections since the reference(s) might be highlighted
|
||||
Gui::Selection().clearSelection();
|
||||
DressUpView->highlightReferences(false);
|
||||
|
||||
PartDesign::Draft* pcDraft = static_cast<PartDesign::Draft*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcDraft->Base.getValue();
|
||||
std::vector<std::string> faces = pcDraft->Base.getSubValues();
|
||||
faces.erase(faces.begin() + ui->listWidgetReferences->currentRow());
|
||||
setupTransaction();
|
||||
pcDraft->Base.setValue(base, faces);
|
||||
ui->listWidgetReferences->model()->removeRow(ui->listWidgetReferences->currentRow());
|
||||
pcDraft->getDocument()->recomputeFeature(pcDraft);
|
||||
// get the list of items to be deleted
|
||||
QList<QListWidgetItem*> selectedList = ui->listWidgetReferences->selectedItems();
|
||||
|
||||
// delete the selection backwards to assure the list index keeps valid for the deletion
|
||||
for (int i = selectedList.count() - 1; i > -1; i--) {
|
||||
//QMessageBox::warning(this, tr("i"), QString::number(i));
|
||||
QListWidgetItem* item = selectedList.at(i);
|
||||
// get the fillet object
|
||||
PartDesign::Draft* pcDraft = static_cast<PartDesign::Draft*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcDraft->Base.getValue();
|
||||
// get all fillet references
|
||||
std::vector<std::string> refs = pcDraft->Base.getSubValues();
|
||||
// the ref index is the same as the listWidgetReferences index
|
||||
// so we can erase using the row number of the element to be deleted
|
||||
int rowNumber = ui->listWidgetReferences->row(selectedList.at(i));
|
||||
refs.erase(refs.begin() + rowNumber);
|
||||
setupTransaction();
|
||||
pcDraft->Base.setValue(base, refs);
|
||||
ui->listWidgetReferences->model()->removeRow(rowNumber);
|
||||
pcDraft->getDocument()->recomputeFeature(pcDraft);
|
||||
}
|
||||
|
||||
// if there is only one item left, it cannot be deleted
|
||||
if (ui->listWidgetReferences->count() == 1) {
|
||||
|
||||
@@ -52,6 +52,9 @@ click again to end selection</string>
|
||||
<string>- select an item to highlight it
|
||||
- double-click on an item to see the drafts</string>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
||||
@@ -197,7 +197,7 @@ void TaskDressUpParameters::setSelection(QListWidgetItem* current) {
|
||||
hideObject();
|
||||
// highlight all objects in the list
|
||||
DressUpView->highlightReferences(true);
|
||||
// clear existing selections
|
||||
// clear existing selection because only the current item is highlighted, not all selected ones to keep the overview
|
||||
Gui::Selection().clearSelection();
|
||||
// highligh the selected item
|
||||
Gui::Selection().addSelection(docName.c_str(), objName.c_str(), subName.c_str(), 0, 0, 0);
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#ifndef _PreComp_
|
||||
# include <QAction>
|
||||
# include <QKeyEvent>
|
||||
# include <QListWidget>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskFilletParameters.h"
|
||||
@@ -110,6 +111,9 @@ TaskFilletParameters::TaskFilletParameters(ViewProviderDressUp *DressUpView, QWi
|
||||
|
||||
void TaskFilletParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
{
|
||||
// executed when the user selected something in the CAD object
|
||||
// adds/deletes the selection accordingly
|
||||
|
||||
if (selectionMode == none)
|
||||
return;
|
||||
|
||||
@@ -155,21 +159,40 @@ void TaskFilletParameters::clearButtons(const selectionModes notThis)
|
||||
|
||||
void TaskFilletParameters::onRefDeleted(void)
|
||||
{
|
||||
// get vector of selected objects of active document to assure we have a valid selection
|
||||
std::vector<Gui::SelectionObject> selection = Gui::Selection().getSelectionEx();
|
||||
if (selection.size() == 0) {
|
||||
QMessageBox::warning(this, tr("Selection error"), tr("Nothing selected!"));
|
||||
return;
|
||||
}
|
||||
// assure we we are not in selection mode
|
||||
exitSelectionMode();
|
||||
clearButtons(none);
|
||||
// delete any selections since the reference might be highlighted
|
||||
// delete any selections since the reference(s) might be highlighted
|
||||
Gui::Selection().clearSelection();
|
||||
DressUpView->highlightReferences(false);
|
||||
|
||||
PartDesign::Fillet* pcFillet = static_cast<PartDesign::Fillet*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcFillet->Base.getValue();
|
||||
std::vector<std::string> refs = pcFillet->Base.getSubValues();
|
||||
refs.erase(refs.begin() + ui->listWidgetReferences->currentRow());
|
||||
setupTransaction();
|
||||
pcFillet->Base.setValue(base, refs);
|
||||
ui->listWidgetReferences->model()->removeRow(ui->listWidgetReferences->currentRow());
|
||||
pcFillet->getDocument()->recomputeFeature(pcFillet);
|
||||
// get the list of items to be deleted
|
||||
QList<QListWidgetItem*> selectedList = ui->listWidgetReferences->selectedItems();
|
||||
|
||||
// delete the selection backwards to assure the list index keeps valid for the deletion
|
||||
for (int i = selectedList.count()-1; i > -1; i--) {
|
||||
//QMessageBox::warning(this, tr("i"), QString::number(i));
|
||||
QListWidgetItem* item = selectedList.at(i);
|
||||
// get the fillet object
|
||||
PartDesign::Fillet* pcFillet = static_cast<PartDesign::Fillet*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcFillet->Base.getValue();
|
||||
// get all fillet references
|
||||
std::vector<std::string> refs = pcFillet->Base.getSubValues();
|
||||
// the ref index is the same as the listWidgetReferences index
|
||||
// so we can erase using the row number of the element to be deleted
|
||||
int rowNumber = ui->listWidgetReferences->row(selectedList.at(i));
|
||||
refs.erase(refs.begin() + rowNumber);
|
||||
setupTransaction();
|
||||
pcFillet->Base.setValue(base, refs);
|
||||
ui->listWidgetReferences->model()->removeRow(rowNumber);
|
||||
pcFillet->getDocument()->recomputeFeature(pcFillet);
|
||||
}
|
||||
|
||||
// if there is only one item left, it cannot be deleted
|
||||
if (ui->listWidgetReferences->count() == 1) {
|
||||
|
||||
@@ -52,6 +52,9 @@ click again to end selection</string>
|
||||
<string>- select an item to highlight it
|
||||
- double-click on an item to see the fillets</string>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <QAction>
|
||||
# include <QListWidget>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskThicknessParameters.h"
|
||||
@@ -131,6 +132,9 @@ TaskThicknessParameters::TaskThicknessParameters(ViewProviderDressUp *DressUpVie
|
||||
|
||||
void TaskThicknessParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
{
|
||||
// executed when the user selected something in the CAD object
|
||||
// adds/deletes the selection accordingly
|
||||
|
||||
if (selectionMode == none)
|
||||
return;
|
||||
|
||||
@@ -177,23 +181,39 @@ void TaskThicknessParameters::clearButtons(const selectionModes notThis)
|
||||
|
||||
void TaskThicknessParameters::onRefDeleted(void)
|
||||
{
|
||||
// get vector of selected objects of active document to assure we have a valid selection
|
||||
std::vector<Gui::SelectionObject> selection = Gui::Selection().getSelectionEx();
|
||||
if (selection.size() == 0) {
|
||||
QMessageBox::warning(this, tr("Selection error"), tr("Nothing selected!"));
|
||||
return;
|
||||
}
|
||||
// assure we we are not in selection mode
|
||||
exitSelectionMode();
|
||||
clearButtons(none);
|
||||
// delete any selections since the reference might be highlighted
|
||||
// delete any selections since the reference(s) might be highlighted
|
||||
Gui::Selection().clearSelection();
|
||||
DressUpView->highlightReferences(false);
|
||||
|
||||
PartDesign::Thickness* pcThickness = static_cast<PartDesign::Thickness*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcThickness->Base.getValue();
|
||||
std::vector<std::string> faces = pcThickness->Base.getSubValues();
|
||||
faces.erase(faces.begin() + ui->listWidgetReferences->currentRow());
|
||||
setupTransaction();
|
||||
pcThickness->Base.setValue(base, faces);
|
||||
ui->listWidgetReferences->model()->removeRow(ui->listWidgetReferences->currentRow());
|
||||
pcThickness->getDocument()->recomputeFeature(pcThickness);
|
||||
clearButtons(none);
|
||||
exitSelectionMode();
|
||||
// get the list of items to be deleted
|
||||
QList<QListWidgetItem*> selectedList = ui->listWidgetReferences->selectedItems();
|
||||
|
||||
// delete the selection backwards to assure the list index keeps valid for the deletion
|
||||
for (int i = selectedList.count() - 1; i > -1; i--) {
|
||||
QListWidgetItem* item = selectedList.at(i);
|
||||
// get the fillet object
|
||||
PartDesign::Thickness* pcThickness = static_cast<PartDesign::Thickness*>(DressUpView->getObject());
|
||||
App::DocumentObject* base = pcThickness->Base.getValue();
|
||||
// get all fillet references
|
||||
std::vector<std::string> refs = pcThickness->Base.getSubValues();
|
||||
// the ref index is the same as the listWidgetReferences index
|
||||
// so we can erase using the row number of the element to be deleted
|
||||
int rowNumber = ui->listWidgetReferences->row(selectedList.at(i));
|
||||
refs.erase(refs.begin() + rowNumber);
|
||||
setupTransaction();
|
||||
pcThickness->Base.setValue(base, refs);
|
||||
ui->listWidgetReferences->model()->removeRow(rowNumber);
|
||||
pcThickness->getDocument()->recomputeFeature(pcThickness);
|
||||
}
|
||||
|
||||
// if there is only one item left, it cannot be deleted
|
||||
if (ui->listWidgetReferences->count() == 1) {
|
||||
|
||||
@@ -52,6 +52,9 @@ click again to end selection</string>
|
||||
<string>- select an item to highlight it
|
||||
- double-click on an item to see the features</string>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::MultiSelection</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
||||
Reference in New Issue
Block a user