
- Added RigidConstraint. - Depricated some methods (get_result, get_constrainedness) and added some new methods (get_solution, get_cluster, get_status). Removed old SelectionConstraint and renamed FunctionConstraint to SelectionConstraint Depricated ClusterSolver2D Small bugfixes in cluster ClusterSolver3D Renamed solvergui directory to workbench Renamed solvertest directory to test
130 lines
4.7 KiB
Python
130 lines
4.7 KiB
Python
from includes import *
|
|
from pointDialog import *
|
|
from distanceDialog import *
|
|
from angleDialog import *
|
|
from ui_constraint import *
|
|
|
|
from prototypeObjects import *
|
|
|
|
class Panel(QtGui.QWidget):
|
|
def __init__(self, mainWindow, widget):
|
|
QtGui.QWidget.__init__(self, widget)
|
|
self.ui = Ui_ConstraintDialog()
|
|
self.ui.setupUi(self)
|
|
self.mainWindow = mainWindow
|
|
self.prototypeManager = PrototypeManager()
|
|
self.prototypeManager.setPanel(self)
|
|
self.ui.treeWidget.setItemHidden(self.ui.treeWidget.headerItem(), True)
|
|
self.addConstraintPages()
|
|
self.createTriggers()
|
|
self.handleTrigger = True
|
|
self.updateSelection = True
|
|
|
|
def addConstraintPages(self):
|
|
self.ui.stackedWidget.addWidget(PointDialog(self))
|
|
self.ui.stackedWidget.addWidget(DistanceDialog(self))
|
|
self.ui.stackedWidget.addWidget(AngleDialog(self, self.mainWindow))
|
|
|
|
def createTriggers(self):
|
|
QtCore.QObject.connect(self.ui.treeWidget,QtCore.SIGNAL("currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)"), self.selectionChanged)
|
|
#QtCore.QObject.connect(self.ui.tabWidget,QtCore.SIGNAL("currentChanged(int)"), self.tabChanged)
|
|
|
|
def reset(self):
|
|
index = self.ui.stackedWidget.currentIndex()
|
|
for i in range(self.ui.stackedWidget.count()):
|
|
self.ui.stackedWidget.setCurrentIndex(i+1)
|
|
self.ui.stackedWidget.currentWidget().reset()
|
|
|
|
def addItemToSelectionList(self, objectName, objectType):
|
|
newWidget = QtGui.QTreeWidgetItem()
|
|
newWidget.setText(0, objectName)
|
|
|
|
if objectType == ObjectType.POINT:
|
|
itemList = self.ui.treeWidget.topLevelItem(0)
|
|
elif objectType == ObjectType.DISTANCE_CONSTRAINT:
|
|
itemList = self.ui.treeWidget.topLevelItem(1)
|
|
elif objectType == ObjectType.ANGLE_CONSTRAINT:
|
|
itemList = self.ui.treeWidget.topLevelItem(2)
|
|
elif objectType == ObjectType.FIXED_POINT:
|
|
itemList = self.ui.treeWidget.topLevelItem(3)
|
|
elif objectType == ObjectType.DISTANCE_HELPER:
|
|
itemList = self.ui.treeWidget.topLevelItem(4)
|
|
else:
|
|
return
|
|
|
|
itemList.addChild(newWidget)
|
|
|
|
def selectionChanged(self, currTreeItem, prevTreeItem):
|
|
if self.handleTrigger:
|
|
self.prototypeManager.selectObjectByName(currTreeItem.text(0))
|
|
self.updateEdit()
|
|
#self.mainWindow.updateWindow()
|
|
|
|
def selectItemByName(self, name):
|
|
self.updateSelectionList(name)
|
|
self.updateEdit()
|
|
|
|
def renameItem(self, oldName, newName):
|
|
itemList = self.ui.treeWidget.findItems(oldName, QtCore.Qt.MatchCaseSensitive | QtCore.Qt.MatchRecursive,0)
|
|
if len(itemList) > 0:
|
|
itemList[0].setText(0,newName)
|
|
|
|
def removeItem(self, name):
|
|
itemList = self.ui.treeWidget.findItems(name, QtCore.Qt.MatchCaseSensitive | QtCore.Qt.MatchRecursive,0)
|
|
if len(itemList) > 0:
|
|
parentItem = itemList[0].parent()
|
|
parentItem.takeChild(parentItem.indexOfChild(itemList[0]))
|
|
|
|
def removeItems(self, itemNames):
|
|
self.handleTrigger = False
|
|
for name in itemNames:
|
|
self.removeItem(name)
|
|
self.handleTrigger = True
|
|
|
|
def keyPressEvent(self, keyEvent):
|
|
if keyEvent.key() == QtCore.Qt.Key_Delete:
|
|
self.prototypeManager.deleteObject(self.prototypeManager.objectSelected)
|
|
self.mainWindow.updateWindow()
|
|
|
|
def updateSelectionList(self, name):
|
|
itemList = self.ui.treeWidget.findItems(name, QtCore.Qt.MatchCaseSensitive | QtCore.Qt.MatchRecursive,0)
|
|
if len(itemList) > 0:
|
|
treeItem = itemList[0]
|
|
self.ui.treeWidget.setCurrentItem(treeItem)
|
|
|
|
def updateEdit(self):
|
|
if self.prototypeManager.objectSelected != None:
|
|
obj = self.prototypeManager.objectSelected
|
|
if obj.objType == ObjectType.POINT:
|
|
self.ui.stackedWidget.setCurrentIndex(1)
|
|
if not self.updateSelection:
|
|
self.ui.stackedWidget.currentWidget().needUpdateObject = False
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
self.ui.stackedWidget.currentWidget().needUpdateObject = True
|
|
else:
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
elif obj.objType == ObjectType.DISTANCE_CONSTRAINT:
|
|
self.ui.stackedWidget.setCurrentIndex(2)
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
elif obj.objType == ObjectType.ANGLE_CONSTRAINT:
|
|
self.ui.stackedWidget.setCurrentIndex(3)
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
elif obj.objType == ObjectType.FIXED_POINT:
|
|
self.ui.stackedWidget.setCurrentIndex(1)
|
|
if not self.updateSelection:
|
|
self.ui.stackedWidget.currentWidget().needUpdateObject = False
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
self.ui.stackedWidget.currentWidget().needUpdateObject = True
|
|
else:
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
elif obj.objType == ObjectType.DISTANCE_HELPER:
|
|
self.ui.stackedWidget.setCurrentIndex(2)
|
|
self.ui.stackedWidget.currentWidget().update(obj)
|
|
else:
|
|
self.ui.stackedWidget.setCurrentIndex(0)
|
|
|
|
def updateMainWindow(self):
|
|
self.mainWindow.updateWindow()
|
|
|
|
|