PartDesign: add/remove features to list view in linear pattern panel
This commit is contained in:
@@ -231,12 +231,30 @@ void TaskLinearPatternParameters::kickUpdateViewTimer() const
|
|||||||
updateViewTimer->start();
|
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)
|
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)) {
|
if (originalSelected(msg)) {
|
||||||
exitSelectionMode();
|
exitSelectionMode();
|
||||||
} else {
|
}
|
||||||
|
else if (selectionMode == reference) {
|
||||||
// TODO check if this works correctly (2015-09-01, Fat-Zer)
|
// TODO check if this works correctly (2015-09-01, Fat-Zer)
|
||||||
exitSelectionMode();
|
exitSelectionMode();
|
||||||
std::vector<std::string> directions;
|
std::vector<std::string> directions;
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ private Q_SLOTS:
|
|||||||
virtual void onFeatureDeleted(void);
|
virtual void onFeatureDeleted(void);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void addObject(App::DocumentObject*);
|
||||||
|
virtual void removeObject(App::DocumentObject*);
|
||||||
virtual void changeEvent(QEvent *e);
|
virtual void changeEvent(QEvent *e);
|
||||||
virtual void onSelectionChanged(const Gui::SelectionChanges& msg);
|
virtual void onSelectionChanged(const Gui::SelectionChanges& msg);
|
||||||
virtual void clearButtons();
|
virtual void clearButtons();
|
||||||
|
|||||||
@@ -116,6 +116,14 @@ int TaskTransformedParameters::getUpdateViewTimeout() const
|
|||||||
return 500;
|
return 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TaskTransformedParameters::addObject(App::DocumentObject*)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskTransformedParameters::removeObject(App::DocumentObject*)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool TaskTransformedParameters::originalSelected(const Gui::SelectionChanges& msg)
|
bool TaskTransformedParameters::originalSelected(const Gui::SelectionChanges& msg)
|
||||||
{
|
{
|
||||||
if (msg.Type == Gui::SelectionChanges::AddSelection && (
|
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*> originals = pcTransformed->Originals.getValues();
|
||||||
std::vector<App::DocumentObject*>::iterator o = std::find(originals.begin(), originals.end(), selectedObject);
|
std::vector<App::DocumentObject*>::iterator o = std::find(originals.begin(), originals.end(), selectedObject);
|
||||||
if (selectionMode == addFeature) {
|
if (selectionMode == addFeature) {
|
||||||
if (o == originals.end())
|
if (o == originals.end()) {
|
||||||
originals.push_back(selectedObject);
|
originals.push_back(selectedObject);
|
||||||
else
|
addObject(selectedObject);
|
||||||
|
}
|
||||||
|
else {
|
||||||
return false; // duplicate selection
|
return false; // duplicate selection
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (o != originals.end())
|
if (o != originals.end()) {
|
||||||
originals.erase(o);
|
originals.erase(o);
|
||||||
else
|
removeObject(selectedObject);
|
||||||
|
}
|
||||||
|
else {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setupTransaction();
|
setupTransaction();
|
||||||
pcTransformed->Originals.setValues(originals);
|
pcTransformed->Originals.setValues(originals);
|
||||||
|
|||||||
@@ -190,6 +190,8 @@ protected:
|
|||||||
void checkVisibility();
|
void checkVisibility();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void addObject(App::DocumentObject*);
|
||||||
|
virtual void removeObject(App::DocumentObject*);
|
||||||
/** Notifies when the object is about to be removed. */
|
/** Notifies when the object is about to be removed. */
|
||||||
virtual void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj);
|
virtual void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj);
|
||||||
virtual void changeEvent(QEvent *e) = 0;
|
virtual void changeEvent(QEvent *e) = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user