Files
create/src/Mod/Sketcher/Gui/TaskSketcherConstrains.h
Abdullah Tahiri f59ef75cfa Sketcher new Feature: Non-driving constraints (aka Driven constraints or dimensions)
====================================================================================

It allows to enable and disable a constraint in the constraint list.

When disabled, the constraints current value is shown, but its value is not enforced (it is driven by the other constraints and user interaction).

A disabled constraint can be enabled (as far as it is enforceable, see non-driving constraints to external geometry below).

The sketcher functionality has been extended to support non-driving constraints to external geometry elements. This were previously excluded from
the possibility of creating a constraint on them (as their values depend on other sketches and would be redundant with the unchanged value or conflicting when value is changed).
Now these constraints are created as non-driving, but as they are not enforceable, the UI does not allow you to make them driving.

The constraint filter has been extended to include a Non-Driving constraints category.

Thanks again to Werner for his continuous support, and specially in this case to DeepSOIC, as he pointed towards a much better implementation solution than my original idea.
2015-05-30 16:39:25 +02:00

98 lines
3.5 KiB
C++

/***************************************************************************
* Copyright (c) 2009 Jürgen Riegel <juergen.riegel@web.de> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef GUI_TASKVIEW_TaskSketcherConstrains_H
#define GUI_TASKVIEW_TaskSketcherConstrains_H
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <boost/signals.hpp>
namespace App {
class Property;
}
namespace SketcherGui {
class ViewProviderSketch;
class Ui_TaskSketcherConstrains;
class ConstraintView : public QListWidget
{
Q_OBJECT
public:
explicit ConstraintView(QWidget *parent = 0);
~ConstraintView();
protected:
void contextMenuEvent (QContextMenuEvent* event);
Q_SIGNALS:
void onUpdateDrivingStatus(QListWidgetItem *item, bool status);
protected Q_SLOTS:
void modifyCurrentItem();
void renameCurrentItem();
void deleteSelectedItems();
void doSelectConstraints();
void updateDrivingStatus();
};
class TaskSketcherConstrains : public Gui::TaskView::TaskBox, public Gui::SelectionObserver
{
Q_OBJECT
public:
TaskSketcherConstrains(ViewProviderSketch *sketchView);
~TaskSketcherConstrains();
/// Observer message from the Selection
void onSelectionChanged(const Gui::SelectionChanges& msg);
private:
void slotConstraintsChanged(void);
public Q_SLOTS:
void on_comboBoxFilter_currentIndexChanged(int);
void on_listWidgetConstraints_itemSelectionChanged(void);
void on_listWidgetConstraints_itemActivated(QListWidgetItem *item);
void on_listWidgetConstraints_itemChanged(QListWidgetItem * item);
void on_listWidgetConstraints_updateDrivingStatus(QListWidgetItem *item, bool status);
protected:
void changeEvent(QEvent *e);
ViewProviderSketch *sketchView;
typedef boost::BOOST_SIGNALS_NAMESPACE::connection Connection;
Connection connectionConstraintsChanged;
private:
QWidget* proxy;
bool inEditMode;
Ui_TaskSketcherConstrains* ui;
};
} //namespace SketcherGui
#endif // GUI_TASKVIEW_TASKAPPERANCE_H