geosolver/workbench/panel.py
kwikrick 22e159a5ad Changes to GeometricSolver:
- 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
2009-10-09 12:23:02 +00:00

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()