def testAcceptAllPanel(self): """ test accepting all panels """ s = QgsPanelWidgetStack() # call on empty stack s.acceptAllPanels() mp = QgsPanelWidget() s.setMainPanel(mp) # call on main panel - should be no effect s.acceptAllPanels() self.assertEqual(s.mainPanel(), mp) self.assertEqual(s.currentPanel(), mp) # add panels p1 = QgsPanelWidget() s.showPanel(p1) p1_accept_spy = QSignalSpy(p1.panelAccepted) p2 = QgsPanelWidget() s.showPanel(p2) p2_accept_spy = QSignalSpy(p2.panelAccepted) p3 = QgsPanelWidget() s.showPanel(p3) p3_accept_spy = QSignalSpy(p3.panelAccepted) # accept all s.acceptAllPanels() self.assertEqual(s.currentPanel(), mp) self.assertEqual(len(p1_accept_spy), 1) self.assertEqual(len(p2_accept_spy), 1) self.assertEqual(len(p3_accept_spy), 1)
def testAddingPanels(self): """ test adding panels to stack """ s = QgsPanelWidgetStack() mp = QgsPanelWidget() s.setMainPanel(mp) p1 = QgsPanelWidget() s.showPanel(p1) self.assertEqual(s.currentPanel(), p1) p2 = QgsPanelWidget() s.showPanel(p2) self.assertEqual(s.currentPanel(), p2)
def testMainPanel(self): """ test mainPanel methods """ s = QgsPanelWidgetStack() # no main panel self.assertFalse(s.mainPanel()) self.assertFalse(s.takeMainPanel()) # set main panel p1 = QgsPanelWidget() s.setMainPanel(p1) self.assertEqual(s.mainPanel(), p1) # takeMainPanel() self.assertEqual(s.takeMainPanel(), p1) self.assertFalse(s.mainPanel()) self.assertFalse(s.takeMainPanel())
def testTakeMainAcceptsAll(self): """ test that taking the main panel accepts all open child panels""" s = QgsPanelWidgetStack() mp = QgsPanelWidget() s.setMainPanel(mp) p1 = QgsPanelWidget() s.showPanel(p1) p1_accept_spy = QSignalSpy(p1.panelAccepted) p2 = QgsPanelWidget() s.showPanel(p2) p2_accept_spy = QSignalSpy(p2.panelAccepted) p3 = QgsPanelWidget() s.showPanel(p3) p3_accept_spy = QSignalSpy(p3.panelAccepted) # take main s.takeMainPanel() self.assertEqual(len(p1_accept_spy), 1) self.assertEqual(len(p2_accept_spy), 1) self.assertEqual(len(p3_accept_spy), 1)
def testClear(self): """ test clearing stack """ s = QgsPanelWidgetStack() # call on empty stack s.clear() # add panels mp = QgsPanelWidget() s.setMainPanel(mp) p1 = QgsPanelWidget() s.showPanel(p1) p2 = QgsPanelWidget() s.showPanel(p2) p3 = QgsPanelWidget() s.showPanel(p3) # clear s.clear() self.assertFalse(s.currentPanel()) self.assertFalse(s.mainPanel())
class ModelerParametersWidget(QWidget): def __init__(self, alg, model, algName=None, configuration=None, dialog=None, context=None): super().__init__() self._alg = alg # The algorithm to define in this dialog. It is an instance of QgsProcessingAlgorithm self.model = model # The model this algorithm is going to be added to. It is an instance of QgsProcessingModelAlgorithm self.childId = algName # The name of the algorithm in the model, in case we are editing it and not defining it for the first time self.configuration = configuration self.context = context self.dialog = dialog self.widget = ModelerParametersPanelWidget(alg, model, algName, configuration, dialog, context) class ContextGenerator(QgsProcessingContextGenerator): def __init__(self, context): super().__init__() self.processing_context = context def processingContext(self): return self.processing_context self.context_generator = ContextGenerator(self.context) self.setupUi() self.params = None def algorithm(self): return self._alg def switchToCommentTab(self): self.tab.setCurrentIndex(1) self.commentEdit.setFocus() self.commentEdit.selectAll() def setupUi(self): self.mainLayout = QVBoxLayout() self.mainLayout.setContentsMargins(0, 0, 0, 0) self.tab = QTabWidget() self.mainLayout.addWidget(self.tab) self.param_widget = QgsPanelWidgetStack() self.widget.setDockMode(True) self.param_widget.setMainPanel(self.widget) self.tab.addTab(self.param_widget, self.tr('Properties')) self.commentLayout = QVBoxLayout() self.commentEdit = QTextEdit() self.commentEdit.setAcceptRichText(False) self.commentLayout.addWidget(self.commentEdit, 1) hl = QHBoxLayout() hl.setContentsMargins(0, 0, 0, 0) hl.addWidget(QLabel(self.tr('Color'))) self.comment_color_button = QgsColorButton() self.comment_color_button.setAllowOpacity(True) self.comment_color_button.setWindowTitle(self.tr('Comment Color')) self.comment_color_button.setShowNull(True, self.tr('Default')) hl.addWidget(self.comment_color_button) self.commentLayout.addLayout(hl) w2 = QWidget() w2.setLayout(self.commentLayout) self.tab.addTab(w2, self.tr('Comments')) self.setLayout(self.mainLayout) def setComments(self, text): self.commentEdit.setPlainText(text) def comments(self): return self.commentEdit.toPlainText() def setCommentColor(self, color): if color.isValid(): self.comment_color_button.setColor(color) else: self.comment_color_button.setToNull() def commentColor(self): return self.comment_color_button.color() if not self.comment_color_button.isNull() else QColor() def getAvailableDependencies(self): return self.widget.getAvailableDependencies() def getDependenciesPanel(self): return self.widget.getDependenciesPanel() def getAvailableValuesOfType(self, paramType, outTypes=[], dataTypes=[]): return self.widget.getAvailableValuesOfType(paramType, outTypes, dataTypes) def resolveValueDescription(self, value): return self.widget.resolveValueDescription(value) def setPreviousValues(self): self.widget.setPreviousValues() def createAlgorithm(self): alg = self.widget.createAlgorithm() if alg: alg.comment().setDescription(self.comments()) alg.comment().setColor(self.commentColor()) return alg