Alternative Parametrierungsoberfläche

Info

Der folgende Abschnitt richtet sich an erfahrene Anwender, die bereits Kenntnisse in der Programmierung mit Python sowie mit dem GUI-Framework wxPython besitzen.

../../../../../_images/EditTraceStepTemplateAlternativeGUI.png

Im Bereich für die Parameter kann über den Button Parametrierungsoberfläche bearbeiten (1) eine Oberfläche programmiert werden, die dem Anwender dargestellt wird, wenn die Traceschrittvorlage in eine Analyse eingefügt wird. Dies ist vor allem dann angebracht, wenn eine Vorlage mehrere Parameter verwendet, die in Abhängigkeit zueinander stehen oder um Eingaben für Parameter komfortabler zu gestalten. Zum Beispiel, um vorgegebene Parameterwerte in einer ComboBox anzubieten. Der Entwickler der Oberfläche für die Traceschrittvorlage muss die eingegebenen Parameterwerte im Traceschrittobjekt hinterlegen und umgekehrt, bereits existierende Parameterwerte im Traceschritt in der Oberfläche anzeigen. Eine Überprüfung auf korrekte Nutzereingaben kann ebenfalls vom Entwickler umgesetzt werden.

Die zu entwickelnde Panel-Klasse muss folgende Methoden bereitstellen:

  • OnOk(self)

    Diese Methode wird aufgerufen, wenn der OK Knopf des Dialogs betätigt wurde. Es muss ‚True‘ zurückgeliefert werden, damit der Dialog geschlossen wird. Bei fehlerhaften Eingaben kann durch Rückgabe von ‚False‘ ein Schließen des Dialogs verhindert werden.

  • SetupParams(self, trcStepData)

    Diese Methode wird aufgerufen, bevor der Dialog angezeigt wird. Bereits existierende Parameterwerte im Traceschritt-Objekt können hier in die Controls der Oberfläche übernommen werden.

  • StoreParams(self, trcStepData)

    Methode zum übernehmen der eingegebenen Parameterwerte in das Traceschritt-Objekt.

Info

Die Verwendung des Arguments ‚trcStepData‘ kann der API-Dokumentation für die Traceanalyse entnommen werden.

Example

Das Beispiel zeigt eine Implementierung für einen Traceschritt mit zwei Parametern „Option“ und „Switch“. Die Parameter müssen zunächst in der Traceschrittvorlage wie gewohnt angelegt werden. Zusätzlich muss der gezeigte Quelltext unter Parametrierungsoberfläche bearbeiten (1) hinterlegt werden.

#Funktionskopf generiert, nicht editieren!
def GetParameterPanel(parent):
    return ParamPanel(parent)

import wx

class ParamPanel(wx.Panel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        self.comboOptions = wx.ComboBox(self, wx.ID_ANY,
                                            choices=["Option 1", "Option 2", "Option 3"],
                                            style=wx.CB_READONLY)

        self.checkBoxSwith = wx.CheckBox(self, wx.ID_ANY,
                                              "Use extended Evaluation")

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.comboOptions, 0, wx.EXPAND | wx.ALL, 4)
        sizer.Add(self.checkBoxSwith, 0, wx.EXPAND | wx.ALL, 4)
        self.SetSizer(sizer)
        self.Fit()

    def OnOk(self):
        if self.comboOptions.GetSelection() == wx.NOT_FOUND:
            wx.MessageBox("Please choose an option!", "Error", wx.ICON_ERROR)
            return False
        return True

    def SetupParams(self, trcStepData):
        paramDesc = trcStepData.GetParameterDescription("Option")
        paramValue = trcStepData.GetParameterValue("Option")
        if paramDesc:
            self.comboOptions.SetToolTipString(paramDesc)
        try:
            val = paramValue.Evaluate()
            self.comboOptions.SetStringSelection(val)
        except:
            pass

        paramDesc = trcStepData.GetParameterDescription("Switch")
        paramValue = trcStepData.GetParameterValue("Switch")
        if paramDesc:
            self.checkBoxSwith.SetToolTipString(paramDesc)
        val = paramValue.Evaluate()
        self.checkBoxSwith.SetValue(bool(val))

    def StoreParams(self, trcStepData):
        trcStepData.SetParameterValue("Option", self.comboOptions.GetStringSelection())
        trcStepData.SetParameterValue("Switch", self.checkBoxSwith.GetValue())