Beispiel #1
0
 def set_value(self, value):
     # value is a list of enums.  Pick the first one, and get the
     # MasterElement that it corresponds to, and set the mapchooser
     # and funchooser accordingly.  This assumes that all enums in
     # value correspond to elements with the same orders.
     el = masterelement.getMasterElementFromEnum(value[0])
     self.mapchooser.set_state( ` el.map_order() `)
     self.funchooser.set_state( ` el.fun_order() `)
     self.build(interactive=0)
     for val, (elclass, ewidget) in zip(value, self.classwidgets):
         ewidget.set_state(val.name)
     self.widgetChanged(validity=1, interactive=0)
Beispiel #2
0
 def set_value(self, value):
     # value is a list of enums.  Pick the first one, and get the
     # MasterElement that it corresponds to, and set the mapchooser
     # and funchooser accordingly.  This assumes that all enums in
     # value correspond to elements with the same orders.
     el = masterelement.getMasterElementFromEnum(value[0])
     self.mapchooser.set_state(`el.map_order()`)
     self.funchooser.set_state(`el.fun_order()`)
     self.build(interactive=0)
     for val, (elclass, ewidget) in zip(value, self.classwidgets):
         ewidget.set_state(val.name)
     self.widgetChanged(validity=1, interactive=0)
Beispiel #3
0
    def build(self, interactive):
        debug.mainthreadTest()
        elclasses = masterelement.getMasterElementEnumClasses()
        elgeometries = masterelement.getMasterElementGeometries()
        nclasses = len(elclasses)

        # Build the widgets
        if self.table is None or nclasses != self.nclasses:
            self.nclasses = nclasses
            if self.table:
                self.table.destroy()
            self.tablelabels = []
            self.table = gtk.Table(rows=2 + nclasses, columns=2)
            self.gtk.add(self.table)

            # Choosers for mapping and interpolation order
            self.mapchooser = chooser.ChooserWidget([],
                                                    callback=self.orderCB,
                                                    name="Map")
            self.funchooser = chooser.ChooserWidget([],
                                                    callback=self.orderCB,
                                                    name="Func")
            label = gtk.Label('mapping order')
            tooltips.set_tooltip_text(
                label,
                'Polynomial order of the functions used to map master elements to physical space.'
            )
            label.set_alignment(1.0, 0.5)
            self.tablelabels.append(label)
            self.table.attach(label, 0, 1, 0, 1, xpadding=5, xoptions=gtk.FILL)
            self.table.attach(self.mapchooser.gtk,
                              1,
                              2,
                              0,
                              1,
                              xpadding=5,
                              xoptions=gtk.EXPAND | gtk.FILL)
            label = gtk.Label('interpolation order:')
            tooltips.set_tooltip_text(
                label,
                'Polynomial order of the functions used to interpolate within elements.'
            )
            label.set_alignment(1.0, 0.5)
            self.tablelabels.append(label)
            self.table.attach(label, 0, 1, 1, 2, xpadding=5, xoptions=gtk.FILL)
            self.table.attach(self.funchooser.gtk,
                              1,
                              2,
                              1,
                              2,
                              xpadding=5,
                              xoptions=gtk.EXPAND | gtk.FILL)

            # Choosers for each element geometry
            row = 2
            self.classwidgets = []
            for geometry, elclass in zip(elgeometries, elclasses):
                label = gtk.Label( ` geometry ` + '-cornered element:')
                tooltips.set_tooltip_text(
                    label,
                    'Type of finite element to use for %d cornered Skeleton elements'
                    % geometry)
                label.set_alignment(1.0, 0.5)
                self.tablelabels.append(label)
                self.table.attach(label, 0, 1, row, row + 1, xoptions=gtk.FILL)
                ewidget = chooser.ChooserWidget([],
                                                name="%d-cornered" % geometry)
                self.classwidgets.append((elclass, ewidget))
                self.table.attach(ewidget.gtk,
                                  1,
                                  2,
                                  row,
                                  row + 1,
                                  xpadding=5,
                                  xoptions=gtk.EXPAND | gtk.FILL)
                row += 1

        # Set the allowed values for each chooser.
        # Find out which mapping and interpolation orders have to be listed.
        maporderdict = {}
        funorderdict = {}
        for elclass in elclasses:
            for elname in elclass.names:
                el = masterelement.getMasterElementFromEnum(elclass(elname))
                maporderdict[el.map_order()] = 1
                funorderdict[el.fun_order()] = 1
        maporders = maporderdict.keys()
        maporders.sort()
        funorders = funorderdict.keys()
        funorders.sort()
        # List the orders in the widgets
        self.mapchooser.update([ ` order ` for order in maporders])
        self.funchooser.update([ ` order ` for order in funorders])
        try:
            current_map = int(self.mapchooser.get_value())
            current_fun = int(self.funchooser.get_value())
        except:
            # If the choosers don't have values, it's because there
            # aren't any elements defined.
            self.widgetChanged(validity=0, interactive=interactive)
        else:
            # Find and list the element types for the current orders
            ok = True
            for elclass, ewidget in self.classwidgets:
                elements = masterelement.getMasterElementsFromEnumClass(
                    elclass)
                okels = [
                    el for el in elements if el.map_order() == current_map
                    and el.fun_order() == current_fun
                ]
                ok = ok and len(okels) > 0
                ewidget.update([el.name() for el in okels], elclass.helpdict)
            self.widgetChanged(validity=ok, interactive=interactive)
Beispiel #4
0
    def build(self, interactive):
        debug.mainthreadTest()
        elclasses = masterelement.getMasterElementEnumClasses()
        elgeometries = masterelement.getMasterElementGeometries()
        nclasses = len(elclasses)

        # Build the widgets
        if self.table is None or nclasses != self.nclasses:
            self.nclasses = nclasses
            if self.table:
                self.table.destroy()
            self.tablelabels = []
            self.table = gtk.Table(rows=2+nclasses, columns=2)
            self.gtk.add(self.table)

            # Choosers for mapping and interpolation order
            self.mapchooser = chooser.ChooserWidget([], callback=self.orderCB,
                                                    name="Map")
            self.funchooser = chooser.ChooserWidget([], callback=self.orderCB,
                                                    name="Func")
            label = gtk.Label('mapping order')
            tooltips.set_tooltip_text(label,'Polynomial order of the functions used to map master elements to physical space.')
            label.set_alignment(1.0, 0.5)
            self.tablelabels.append(label)
            self.table.attach(label, 0, 1, 0, 1, xpadding=5, xoptions=gtk.FILL)
            self.table.attach(self.mapchooser.gtk, 1, 2, 0, 1,
                              xpadding=5, xoptions=gtk.EXPAND|gtk.FILL)
            label = gtk.Label('interpolation order:')
            tooltips.set_tooltip_text(label,'Polynomial order of the functions used to interpolate within elements.')
            label.set_alignment(1.0, 0.5)
            self.tablelabels.append(label)
            self.table.attach(label, 0, 1, 1, 2, xpadding=5,
                              xoptions=gtk.FILL)
            self.table.attach(self.funchooser.gtk, 1, 2, 1, 2,
                              xpadding=5, xoptions=gtk.EXPAND|gtk.FILL)

            # Choosers for each element geometry
            row = 2
            self.classwidgets = []
            for geometry, elclass in zip(elgeometries, elclasses):
                label = gtk.Label(`geometry`+'-cornered element:')
                tooltips.set_tooltip_text(label,
                        'Type of finite element to use for %d cornered Skeleton elements' % geometry)
                label.set_alignment(1.0, 0.5)
                self.tablelabels.append(label)
                self.table.attach(label, 0,1, row,row+1, xoptions=gtk.FILL)
                ewidget = chooser.ChooserWidget([], name="%d-cornered"%geometry)
                self.classwidgets.append((elclass, ewidget))
                self.table.attach(ewidget.gtk, 1,2, row,row+1,
                                  xpadding=5, xoptions=gtk.EXPAND|gtk.FILL)
                row += 1

        # Set the allowed values for each chooser.
        # Find out which mapping and interpolation orders have to be listed.
        maporderdict = {}
        funorderdict = {}
        for elclass in elclasses:
            for elname in elclass.names:
                el = masterelement.getMasterElementFromEnum(elclass(elname))
                maporderdict[el.map_order()] = 1
                funorderdict[el.fun_order()] = 1
        maporders = maporderdict.keys()
        maporders.sort()
        funorders = funorderdict.keys()
        funorders.sort()
        # List the orders in the widgets
        self.mapchooser.update([`order` for order in maporders])