[processing] add button to collapse/expand short help

This commit is contained in:
Alexander Bruy 2017-06-06 10:20:56 +03:00
parent ffac4f9648
commit f4853a2173
2 changed files with 44 additions and 4 deletions

View File

@ -30,8 +30,8 @@ import os
import webbrowser import webbrowser
from qgis.PyQt import uic from qgis.PyQt import uic
from qgis.PyQt.QtCore import QCoreApplication, QByteArray, QUrl from qgis.PyQt.QtCore import Qt, QCoreApplication, QByteArray, QUrl
from qgis.PyQt.QtWidgets import QApplication, QDialogButtonBox from qgis.PyQt.QtWidgets import QApplication, QDialogButtonBox, QVBoxLayout, QToolButton
from qgis.utils import iface from qgis.utils import iface
from qgis.core import (QgsProject, from qgis.core import (QgsProject,
@ -80,6 +80,20 @@ class AlgorithmDialogBase(BASE, WIDGET):
super(AlgorithmDialogBase, self).__init__(iface.mainWindow()) super(AlgorithmDialogBase, self).__init__(iface.mainWindow())
self.setupUi(self) self.setupUi(self)
# don't collapse parameters panel
self.splitter.setCollapsible(0, False)
# add collapse button to splitter
splitterHandle = self.splitter.handle(1)
handleLayout = QVBoxLayout()
handleLayout.setContentsMargins(0, 0, 0, 0)
self.btnCollapse = QToolButton(splitterHandle)
self.btnCollapse.setAutoRaise(True)
self.btnCollapse.setFixedSize(12, 12)
handleLayout.addWidget(self.btnCollapse)
handleLayout.insertStretch(0)
splitterHandle.setLayout(handleLayout)
self.feedback = AlgorithmDialogFeedback(self) self.feedback = AlgorithmDialogFeedback(self)
self.feedback.progressChanged.connect(self.setPercentage) self.feedback.progressChanged.connect(self.setPercentage)
self.buttonCancel.clicked.connect(self.feedback.cancel) self.buttonCancel.clicked.connect(self.feedback.cancel)
@ -87,6 +101,8 @@ class AlgorithmDialogBase(BASE, WIDGET):
self.settings = QgsSettings() self.settings = QgsSettings()
self.splitter.restoreState(self.settings.value("/Processing/dialogBaseSplitter", QByteArray())) self.splitter.restoreState(self.settings.value("/Processing/dialogBaseSplitter", QByteArray()))
self.restoreGeometry(self.settings.value("/Processing/dialogBase", QByteArray())) self.restoreGeometry(self.settings.value("/Processing/dialogBase", QByteArray()))
self.splitterState = self.splitter.saveState()
self.splitterChanged(0, 0)
self.setWindowTitle(self.alg.displayName()) self.setWindowTitle(self.alg.displayName())
@ -103,8 +119,8 @@ class AlgorithmDialogBase(BASE, WIDGET):
self.btnClose = self.buttonBox.button(QDialogButtonBox.Close) self.btnClose = self.buttonBox.button(QDialogButtonBox.Close)
self.buttonBox.helpRequested.connect(self.openHelp) self.buttonBox.helpRequested.connect(self.openHelp)
# don't collapse parameters panel self.btnCollapse.clicked.connect(self.toggleCollapsed)
self.splitter.setCollapsible(0, False) self.splitter.splitterMoved.connect(self.splitterChanged)
# desktop = QDesktopWidget() # desktop = QDesktopWidget()
# if desktop.physicalDpiX() > 96: # if desktop.physicalDpiX() > 96:
@ -209,6 +225,24 @@ class AlgorithmDialogBase(BASE, WIDGET):
def finish(self, context): def finish(self, context):
pass pass
def toggleCollapsed(self):
if self.helpCollapsed:
self.splitter.restoreState(self.splitterState)
self.btnCollapse.setArrowType(Qt.RightArrow)
else:
self.splitterState = self.splitter.saveState()
self.splitter.setSizes([1, 0])
self.btnCollapse.setArrowType(Qt.LeftArrow)
self.helpCollapsed = not self.helpCollapsed
def splitterChanged(self, pos, index):
if self.splitter.sizes()[1] == 0:
self.helpCollapsed = True
self.btnCollapse.setArrowType(Qt.LeftArrow)
else:
self.helpCollapsed = False
self.btnCollapse.setArrowType(Qt.RightArrow)
def openHelp(self): def openHelp(self):
algHelp = self.alg.helpUrl() algHelp = self.alg.helpUrl()
if algHelp is not None: if algHelp is not None:

View File

@ -25,6 +25,9 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="handleWidth">
<number>16</number>
</property>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@ -112,6 +115,9 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="accessibleName">
<string/>
</property>
<property name="openLinks"> <property name="openLinks">
<bool>false</bool> <bool>false</bool>
</property> </property>