PartDesign: add/remove features to list view in linear pattern panel

This commit is contained in:
wmayer
2020-02-15 15:55:11 +01:00
parent 902cd411f8
commit fa963d36d1
4 changed files with 42 additions and 6 deletions

View File

@@ -231,12 +231,30 @@ void TaskLinearPatternParameters::kickUpdateViewTimer() const
updateViewTimer->start();
}
void TaskLinearPatternParameters::addObject(App::DocumentObject* obj)
{
QString label = QString::fromUtf8(obj->Label.getValue());
QString objectName = QString::fromLatin1(obj->getNameInDocument());
QListWidgetItem* item = new QListWidgetItem();
item->setText(label);
item->setData(Qt::UserRole, objectName);
ui->listWidgetFeatures->addItem(item);
}
void TaskLinearPatternParameters::removeObject(App::DocumentObject* obj)
{
QString label = QString::fromUtf8(obj->Label.getValue());
removeItemFromListWidget(ui->listWidgetFeatures, label);
}
void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
{
if (selectionMode!=none && msg.Type == Gui::SelectionChanges::AddSelection) {
if (selectionMode != none && msg.Type == Gui::SelectionChanges::AddSelection) {
if (originalSelected(msg)) {
exitSelectionMode();
} else {
}
else if (selectionMode == reference) {
// TODO check if this works correctly (2015-09-01, Fat-Zer)
exitSelectionMode();
std::vector<std::string> directions;

View File

@@ -69,6 +69,8 @@ private Q_SLOTS:
virtual void onFeatureDeleted(void);
protected:
virtual void addObject(App::DocumentObject*);
virtual void removeObject(App::DocumentObject*);
virtual void changeEvent(QEvent *e);
virtual void onSelectionChanged(const Gui::SelectionChanges& msg);
virtual void clearButtons();

View File

@@ -116,6 +116,14 @@ int TaskTransformedParameters::getUpdateViewTimeout() const
return 500;
}
void TaskTransformedParameters::addObject(App::DocumentObject*)
{
}
void TaskTransformedParameters::removeObject(App::DocumentObject*)
{
}
bool TaskTransformedParameters::originalSelected(const Gui::SelectionChanges& msg)
{
if (msg.Type == Gui::SelectionChanges::AddSelection && (
@@ -132,15 +140,21 @@ bool TaskTransformedParameters::originalSelected(const Gui::SelectionChanges& ms
std::vector<App::DocumentObject*> originals = pcTransformed->Originals.getValues();
std::vector<App::DocumentObject*>::iterator o = std::find(originals.begin(), originals.end(), selectedObject);
if (selectionMode == addFeature) {
if (o == originals.end())
if (o == originals.end()) {
originals.push_back(selectedObject);
else
addObject(selectedObject);
}
else {
return false; // duplicate selection
}
} else {
if (o != originals.end())
if (o != originals.end()) {
originals.erase(o);
else
removeObject(selectedObject);
}
else {
return false;
}
}
setupTransaction();
pcTransformed->Originals.setValues(originals);

View File

@@ -190,6 +190,8 @@ protected:
void checkVisibility();
protected:
virtual void addObject(App::DocumentObject*);
virtual void removeObject(App::DocumentObject*);
/** Notifies when the object is about to be removed. */
virtual void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj);
virtual void changeEvent(QEvent *e) = 0;