def open_config_window(self):
        config_window = Toplevel(self)
        config_window.iconbitmap(r'data\app.ico')
        config_window.minsize(500, 350)

        config_frame = Labelframe(config_window)
        config_frame.config(text="App Configuration",
                            relief='groove',
                            borderwidth=5)
        config_frame.pack(expand=1, fill='both', padx=5, pady=5)

        offset_title = Label(config_frame)
        offset_title.config(text='Numbering offset (Default 0)')
        offset_title.pack(anchor='nw', padx=5, pady=5)

        offset_entry = Entry(config_frame)
        offset_entry.config(
            width=10,
            exportselection=0,
            validate='key',
            validatecommand=(offset_entry.register(validate_config_entry),
                             '%P'))
        offset_entry.pack(anchor='nw', padx=5, pady=5)

        battle_value_frame = Labelframe(config_frame)
        battle_value_frame.config(text='Battle weighting',
                                  relief='groove',
                                  borderwidth=5)
        battle_value_frame.pack(anchor='nw',
                                fill='both',
                                expand=1,
                                padx=5,
                                pady=5)

        descriptor_frame = Frame(battle_value_frame)
        descriptor_frame.pack(side='left', fill='both', expand=1)

        entry_frame = Frame(battle_value_frame)
        entry_frame.pack(side='left', fill='both', expand=1)

        skirmish_title = Label(descriptor_frame)
        skirmish_title.config(text='Skirmish weighting (Default = 1):')
        skirmish_title.pack(anchor='nw', padx=5, pady=7)

        skirmish_entry = Entry(entry_frame)
        skirmish_entry.config(
            width=10,
            exportselection=0,
            validate='key',
            validatecommand=(skirmish_entry.register(validate_config_entry),
                             '%P'))
        skirmish_entry.pack(anchor='nw', padx=5, pady=5)

        advance_title = Label(descriptor_frame)
        advance_title.config(text='Advance weighting (Default = 1):')
        advance_title.pack(anchor='nw', padx=5, pady=10)

        advance_entry = Entry(entry_frame)
        advance_entry.config(
            width=10,
            exportselection=0,
            validate='key',
            validatecommand=(advance_entry.register(validate_config_entry),
                             '%P'))
        advance_entry.pack(anchor='nw', padx=5, pady=5)

        clan_war_title = Label(descriptor_frame)
        clan_war_title.config(text='Clan War weighting (Default = 3):')
        clan_war_title.pack(anchor='nw', padx=5, pady=6)

        clan_war_entry = Entry(entry_frame)
        clan_war_entry.config(
            width=10,
            exportselection=0,
            validate='key',
            validatecommand=(clan_war_entry.register(validate_config_entry),
                             '%P'))
        clan_war_entry.pack(anchor='nw', padx=5, pady=5)

        buttons_frame = Frame(config_frame)
        buttons_frame.pack(anchor='sw', fill='both', expand=0)

        apply_button = Button(buttons_frame)
        apply_button.config(text='Apply',
                            command=partial(self.config_apply, offset_entry,
                                            skirmish_entry, advance_entry,
                                            clan_war_entry))
        apply_button.pack(side='right', padx=5, pady=5)

        cancel_button = Button(buttons_frame)
        cancel_button.config(text='Cancel',
                             command=lambda: config_window.destroy())
        cancel_button.pack(side='right', padx=5, pady=5)

        ok_button = Button(buttons_frame)
        ok_button.config(text='OK',
                         style='OK.TButton',
                         command=partial(self.config_ok, offset_entry,
                                         skirmish_entry, advance_entry,
                                         clan_war_entry, config_window))
        ok_button.pack(side='right', padx=5, pady=5)

        offset_entry.insert('end', self.offset)
        skirmish_entry.insert('end', self.skirmish_value)
        advance_entry.insert('end', self.advance_value)
        clan_war_entry.insert('end', self.clan_war_value)
Beispiel #2
0
class TestprogramPane(Labelframe):
    '''
    classdocs
    '''
    def __init__(self, master, tp=None, name='No TP Loaded'):
        '''
        Constructor
        '''
        Labelframe.__init__(self, master)
        self.name = name
        self.tp = tp
        self.tree = Treeview(self)
        self.tree.pack(fill=BOTH, expand=True)
        self.config(width=200,
                    height=200,
                    relief=RIDGE,
                    text='Test Program',
                    padding=10)
        self.tree.bind('<<TreeviewSelect>>', self.show_params)
        self.param_view = Labelframe(self)
        self.pins_view = Labelframe(self)
        self.params = {}
        self.pins = {}
        self.load()

    def load(self):
        self.tree.delete(*self.tree.get_children())
        if (self.tp == None):
            self.tree.insert("", 'end', 'Default', text=self.name)
        else:
            self.populate(self.tp.testtree)

    def show_params(self, event):
        self.param_view.destroy()
        if (self.params.get(self.tree.selection()[0], None) != None):
            self.param_view = Labelframe(self)
            self.load_params(self.param_view, self.tree.selection()[0])
            self.param_view.config(text='Test Parameters')
            self.param_view.pack(fill=BOTH, expand=True)

    def populate(self, tp):
        for element in tp.iter():
            if (element.tag == 'TestRef'):
                self.tree.insert("",
                                 'end',
                                 element.get("name"),
                                 text=element.get("name"),
                                 open=True)
            else:
                self.tree.insert(element.getparent().get("name"),
                                 'end',
                                 element.get("name"),
                                 text=element.get("name"),
                                 open=True)
                if (element.tag == 'Test'):
                    self.params[element.get("name")] = {
                        'delay': element.get('delay'),
                        'force': element.get('force'),
                        'lolim': element.get('lolim'),
                        'hilim': element.get('hilim'),
                        'pinref': element.get('pinref'),
                        'testtype': element.get('testtype')
                    }

    def fetch_pins(self, tp, pinref):
        for element in tp.iter():
            if (element.get("name") == pinref):
                self.pins[element.get("name")] = {
                    'pintype': element.get("pintype"),
                    'pins': []
                }
            else:
                if (element.tag == 'Pin'
                        and element.getparent().get("name") == pinref):
                    self.pins[pinref].get('pins').append(element.get("name"))
#

    def load_params(self, master, test):
        master.config(text=test)
        self.param_tree = Treeview(master)
        self.param_tree.pack(fill=BOTH, expand=True)
        self.param_tree.heading('#0', text='Parameter')
        self.param_tree.config(columns=('value'))
        self.param_tree.column('value', width=100)
        self.param_tree.heading('value', text='Value')

        self.param_tree.insert('',
                               'end',
                               'delay',
                               text='DELAY',
                               values=self.params.get(test).get('delay'))
        self.param_tree.insert('',
                               'end',
                               'force',
                               text='FORCE',
                               values=self.params.get(test).get('force'))
        self.param_tree.insert('',
                               'end',
                               'lolim',
                               text='LOLIM',
                               values=self.params.get(test).get('lolim'))
        self.param_tree.insert('',
                               'end',
                               'hilim',
                               text='HILIM',
                               values=self.params.get(test).get('hilim'))
        self.param_tree.insert('',
                               'end',
                               'pinref',
                               text='PINREF',
                               values=self.params.get(test).get('pinref'))
        self.param_tree.insert('',
                               'end',
                               'testtype',
                               text='TESTTYPE',
                               values=self.params.get(test).get('testtype'))
        if self.pins_view: self.pins_view.destroy()
        self.pins_view = Labelframe(self)
        self.param_tree.bind('<<TreeviewSelect>>', self.show_pins)

    def show_pins(self, event):
        self.pins_view.destroy()
        self.pins_view = Labelframe(self)
        pinref = self.param_tree.item(self.param_tree.selection()[0],
                                      "value")[0]
        self.fetch_pins(self.tp.pintree, pinref)
        if (self.pins.get(pinref, None) != None):
            self.pins_view = Labelframe(self)
            self.load_pins(self.pins_view, pinref)
            self.pins_view.config(text='Pin Parameters')
            self.pins_view.pack(fill=BOTH, expand=True)

    def load_pins(self, master, pinref):
        pins_tree = Treeview(master)
        pins_tree.pack(fill=BOTH, expand=True)
        pins_tree.heading('#0',
                          text=(next(iter(self.pins)), ' PinType: ',
                                self.pins.get(pinref).get('pintype')))
        for p in self.pins.get(pinref).get('pins'):
            pins_tree.insert('', 'end', p, text=p)