Added Show All pocket extension checkbox for better UX.

This commit is contained in:
Markus Lampert
2018-12-28 18:39:32 -08:00
committed by wmayer
parent 2fb4196630
commit b583439b27
2 changed files with 64 additions and 30 deletions

View File

@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>381</width>
<width>430</width>
<height>617</height>
</rect>
</property>
@@ -23,7 +23,7 @@
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Default Length</string>
@@ -31,6 +31,16 @@
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::QuantitySpinBox" name="defaultLength">
<property name="minimum">
<double>-999999999.000000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="extendCorners">
<property name="text">
<string>Extend Corners</string>
@@ -40,13 +50,10 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="Gui::QuantitySpinBox" name="defaultLength">
<property name="minimum">
<double>-999999999.000000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
<item row="0" column="0">
<widget class="QCheckBox" name="showExtensions">
<property name="text">
<string>Show All</string>
</property>
</widget>
</item>
@@ -61,9 +68,6 @@
<property name="tabKeyNavigation">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="headerHidden">
<bool>true</bool>
</property>

View File

@@ -45,7 +45,7 @@ __doc__ = "Pocket Shape operation page controller and command implementation."
def translate(context, text, disambig=None):
return QtCore.QCoreApplication.translate(context, text, disambig)
if True:
if False:
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
PathLog.trackModule(PathLog.thisModule())
else:
@@ -53,7 +53,10 @@ else:
class _Extension(object):
ColourEnabled = (1.0, .5, .5)
ColourDisabled = (1.0, 1.0, .5)
#ColourDisabled = (1.0, 1.0, .5)
ColourDisabled = (.5, .5, .5)
TransparencySelected = 0.0
TransparencyDeselected = 0.7
def __init__(self, obj, base, face, edge):
self.obj = obj
@@ -85,7 +88,7 @@ class _Extension(object):
return None
mat.diffuseColor = self.ColourDisabled
mat.transparency = 0.5
mat.transparency = self.TransparencyDeselected
hnt.faceType = coin.SoShapeHints.UNKNOWN_FACE_TYPE
hnt.vertexOrdering = coin.SoShapeHints.CLOCKWISE
@@ -125,6 +128,12 @@ class _Extension(object):
def disable(self):
self.material.diffuseColor = self.ColourDisabled
def select(self):
self.material.transparency = self.TransparencySelected
def deselect(self):
self.material.transparency = self.TransparencyDeselected
Page = None
class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
@@ -153,6 +162,11 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
self.model = QtGui.QStandardItemModel(self.form.extensionTree)
self.model.setHorizontalHeaderLabels(['Base', 'Extension'])
if 0 < len(obj.ExtensionFeature):
self.form.showExtensions.setCheckState(QtCore.Qt.Checked)
else:
self.form.showExtensions.setCheckState(QtCore.Qt.Unchecked)
global Page
Page = self
@@ -169,7 +183,9 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
for featureRow in range(model.rowCount()):
feature = model.child(featureRow, 0);
for edgeRow in range(feature.rowCount()):
cb(feature.child(edgeRow, 0))
item = feature.child(edgeRow, 0)
ext = item.data(self.DataObject)
cb(item, ext)
def getFields(self, obj):
PathLog.track(obj.Label, self.model.rowCount(), self.model.columnCount())
@@ -178,8 +194,7 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
extensions = []
def extractExtension(item):
ext = item.data(self.DataObject)
def extractExtension(item, ext):
if ext and ext.edge and item.checkState() == QtCore.Qt.Checked:
extensions.append(ext.ext)
@@ -267,8 +282,7 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
collapsedFeatures.append("%s.%s" % (modelName, feature.data(QtCore.Qt.EditRole)))
# remove current extensions and all their visuals
def removeItemSwitch(item):
ext = item.data(self.DataObject)
def removeItemSwitch(item, ext):
ext.hide()
self.switch.removeChild(ext.root)
self.forAllItemsCall(removeItemSwitch)
@@ -331,14 +345,18 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
return True
return False
def setSelectionVisuals(item):
ext = item.data(self.DataObject)
def setSelectionVisuals(item, ext):
if selectItem(item, ext):
self.selectionModel.select(item.index(), QtGui.QItemSelectionModel.Select)
if self.selectionModel.isSelected(item.index()):
selected = self.selectionModel.isSelected(item.index())
if selected:
FreeCADGui.Selection.addSelection(ext.base, ext.face)
ext.show()
elif item.checkState() == QtCore.Qt.Checked:
ext.select()
else:
ext.deselect()
if self.form.showExtensions.isChecked() or self.selectionModel.isSelected(item.index()):
ext.show()
else:
ext.hide()
@@ -348,9 +366,9 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
self.restoreSelection([])
def extensionsClear(self):
def disableItem(item):
def disableItem(item, ext):
item.setCheckState(QtCore.Qt.Unchecked)
item.data(self.DataObject).disable()
ext.disable()
self.forAllItemsCall(disableItem)
self.setDirty()
@@ -373,14 +391,24 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
def updateItemEnabled(self, item):
ext = item.data(self.DataObject)
if item.checkState() == QtCore.Qt.Checked:
ext.show()
ext.enable()
else:
ext.disable()
if not self.selectionModel.isSelected(item.index()):
ext.hide()
self.setDirty()
def showHideExtension(self):
if self.form.showExtensions.isChecked():
def enableExtensionEdit(item, ext):
ext.show()
self.forAllItemsCall(enableExtensionEdit)
else:
def disableExtensionEdit(item, ext):
#item.setCheckState(QtCore.Qt.Unchecked)
#ext.disable()
ext.hide()
self.forAllItemsCall(disableExtensionEdit)
#self.setDirty()
def getSignalsForUpdate(self, obj):
PathLog.track(obj.Label)
signals = []
@@ -388,6 +416,7 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
return signals
def registerSignalHandlers(self, obj):
self.form.showExtensions.clicked.connect(self.showHideExtension)
self.form.extendCorners.clicked.connect(lambda : self.setExtensions(obj.Proxy.getExtensions(obj)))
self.form.buttonClear.clicked.connect(self.extensionsClear)
self.form.buttonDisable.clicked.connect(self.extensionsDisable)
@@ -397,6 +426,7 @@ class TaskPanelExtensionPage(PathOpGui.TaskPanelPage):
self.selectionModel = self.form.extensionTree.selectionModel()
self.selectionModel.selectionChanged.connect(self.selectionChanged)
self.selectionChanged()
class TaskPanelOpPage(PathPocketBaseGui.TaskPanelOpPage):
'''Page controller class for Pocket operation'''