コード例 #1
0
ファイル: configDialog.py プロジェクト: jrecuero/automat
    def getSelectionFromResource(self, attr, ctrl):
        """ Get the data entered for a given attribute.

        It returns the dialog values entered by the user for the given
        attribute.
        """
        dicta    = []
        attrName = config.getResourceAttrName(attr)
        attrType = config.getResourceAttrType(attr)
        attrDim  = config.getResourceAttrDim(attr)
        if attrName not in ctrl:
            return
        if attrType in (config.RES_TYPE_SINGLE, ):
            dicta = str(ctrl[attrName].GetValue())
        elif attrType in (config.RES_TYPE_LIST, ):
            dicta = config.getResourceAttrValues(attr)(self)[ctrl[attrName].GetSelection()]
        elif attrType in (config.RES_TYPE_SINGLE_ARRAY, ):
            for index in xrange(attrDim):
                dicta.append(str(ctrl[attrName][index].GetValue()))
        elif attrType in (config.RES_TYPE_LIST_ARRAY, ):
            for index in xrange(attrDim):
                dicta.append(config.getResourceAttrValues(attr)(self)[ctrl[attrName][index].GetSelection()])
        elif attrType in (config.RES_TYPE_GROUP, ):
            for index in xrange(attrDim):
                dicta.append({})
                for childAttr in config.getResourceAttrValues(attr):
                    childAttrName = config.getResourceAttrName(childAttr)
                    dicta[index][childAttrName] = self.getSelectionFromResource(childAttr, self.ctrl[attrName][index])
        return dicta
コード例 #2
0
ファイル: configDialog.py プロジェクト: jrecuero/automat
    def addCtrlFromResource(self, attr, index=None):
        """ Create a new control widget in the dialog.

        It process data from a new entry and it creates the proper widget for
        that. Data is coming from the resource.attribute entry.
        """
        attrName = config.getResourceAttrName(attr)
        dispName = config.getResourceAttrDisplay(attr)
        attrType = config.getResourceAttrType(attr)
        attrDim  = config.getResourceAttrDim(attr)
        attrDeps = config.getResourceAttrDeps(attr)
        lbl, ctrl = [], []
        if attrType in (config.RES_TYPE_SINGLE, ):
            lbl, ctrl = self.addLabelTextCtrlEntry(self.sizer,
                                                   '%s: ' % dispName,
                                                   fieldName=attrName if index is None else (attrName, index),
                                                   data=attrDeps)
            self.Bind(wx.EVT_TEXT, self.OnTextCtrlAction, ctrl)
        elif attrType in (config.RES_TYPE_LIST, ):
            lbl, ctrl = self.addLabelChoiceEntry(self.sizer,
                                                 '%s: ' % dispName,
                                                 choices=config.getResourceAttrValues(attr)(self),
                                                 initSel=config.getResourceAttrDefault(attr)(self),
                                                 fieldName=attrName if index is None else (attrName, index),
                                                 data=attrDeps)
        elif attrType in (config.RES_TYPE_SINGLE_ARRAY, ):
            for i in xrange(attrDim):
                lbl, aCtrl = self.addLabelTextCtrlEntry(self.sizer,
                                                        '%s [%s]: ' % (dispName, i),
                                                        attrName if index is None else (attrName, index),
                                                        data=attrDeps)
                ctrl.append(aCtrl)
                self.Bind(wx.EVT_TEXT, self.OnTextCtrlAction, aCtrl)
        elif attrType in (config.RES_TYPE_LIST_ARRAY, ):
            for i in xrange(attrDim):
                lbl, aCtrl = self.addLabelChoiceEntry(self.sizer,
                                                      '%s [%s]: ' % (dispName, i),
                                                      choices=config.getResourceAttrValues(attr)(self),
                                                      initSel=config.getResourceAttrDefault(attr)(self),
                                                      fieldName=attrName if index is None else (attrName, index),
                                                      data=attrDeps)
                self.ctrl.append(aCtrl)
        elif attrType in (config.RES_TYPE_GROUP, ):
            for i in xrange(attrDim):
                lbl.append({})
                ctrl.append({})
                for childAttr in [aAttr for aAttr in config.getResourceAttrValues(attr) if config.getResourceAttrEnable(aAttr)]:
                    childAttrName = config.getResourceAttrName(childAttr)
                    lbl[i][childAttrName], ctrl[i][childAttrName] = self.addCtrlFromResource(childAttr, i)
        return (lbl, ctrl)