예제 #1
0
    def __init__(self, project_history_tracker=None, *args, **kw):
        GUIDialog.__init__(self, *args, **kw)

        self.title(_("Description creation"))

        self.focus()

        self.grid()
        self.columnconfigure(0, weight=0)
        self.columnconfigure(1, weight=1)

        self.pht = project_history_tracker

        self.rowconfigure(0, weight=0)
        l = VarLabel(self, text=_("Description name"))
        l.grid(row=0, column=0, sticky="NES")

        v = self.var_name = StringVar()
        e = self.e_name = HKEntry(self, textvariable=v)
        e.grid(row=0, column=1, sticky="NEWS")
        # Set input focus to description name entry initially.
        e.focus_set()

        v.trace_variable("w", self.on_var_name_write)
        if self.pht is not None:
            # do not generate name in demo mode
            v.set(self.pht.p.gen_uniq_desc_name())
            # autoselect default name to speed up its customization
            e.selection_range(0, END)

        self.rowconfigure(1, weight=0)
        l = VarLabel(self, text=_("Description kind"))
        l.grid(row=1, column=0, sticky="NES")

        v = self.var_kind = StringVar()
        cb = self.cb_kind = VarCombobox(self,
                                        textvariable=v,
                                        values=[
                                            _("System bus device template"),
                                            _("Machine draft"),
                                            _("PCI(E) function template")
                                        ],
                                        state="readonly")
        v.set(cb.cget("values")[0].get())
        cb.grid(row=1, column=1, sticky="NEWS")

        cb.config(width=max([len(s.get()) for s in cb.cget("values")]))

        self.rowconfigure(2, weight=0)
        b = VarButton(self, text=_("Add"), command=self.on_add)
        b.grid(row=2, column=0, columns=2, sticky="NES")

        self.bind("<Escape>", self.on_escape, "+")

        # corresponds to 'Enter' key
        self.bind("<Return>", self.on_enter, "+")
예제 #2
0
    def gen_prop_value_widget(self, prop_type, prop_val):
        if prop_type == QOMPropertyTypeLink:
            var = StringVar()
            keys = [ DeviceSettingsWidget.gen_node_link_text(n) \
                    for n in [ None ] + list(self.dsw.mach.id2node.values())
                   ]

            ret = Combobox(self.dsw.props_lf,
                textvariable = var,
                values = keys,
                state = "readonly"
            )
            if prop_val:
                current = DeviceSettingsWidget.gen_node_link_text(prop_val)
            else:
                current = keys[0]

            var.set(current)
        elif prop_type == QOMPropertyTypeBoolean:
            var = BooleanVar()
            ret = VarCheckbutton(
                self.dsw.props_lf,
                text = StringVar(""),
                variable = var
            )
            if prop_val is None:
                current = False
            else:
                current = bool(prop_val)

            var.set(current)
        else:
            var = StringVar()
            ret = HKEntry(
                self.dsw.props_lf,
                textvariable = var
            )

            if prop_val:
                if prop_type == QOMPropertyTypeInteger:
                    current = prop_type.build_val(prop_val)
                else:
                    current = str(prop_val)
            else:
                if prop_type == QOMPropertyTypeInteger:
                    current = "0x0"
                else:
                    current = ""

            var.set(current)

        return ret, var
예제 #3
0
    def __init__(self, irq, *args, **kw):
        SettingsWidget.__init__(self, irq, *args, **kw)

        self.irq = irq

        for pfx, txt in [
            ("src_", _("Source")),
            ("dst_", _("Destination"))
        ]:
            lf = VarLabelFrame(self, text = txt)
            lf.pack(fill = BOTH, expand = False)

            lf.columnconfigure(0, weight = 0)
            lf.columnconfigure(1, weight = 1)

            for row in xrange(0, 3):
                lf.rowconfigure(row, weight = 1)

            l = VarLabel(lf, text = _("Node"))
            l.grid(row = 0, column = 0, sticky = "NE")

            node_var = StringVar()
            node_var.trace_variable("w", self.on_node_text_changed)
            node_cb = Combobox(lf,
                textvariable = node_var,
                values = [],
                state = "readonly"
            )
            node_cb.grid(row = 0, column = 1, sticky = "NEW")

            irq_idx_l = VarLabel(lf, text = _("GPIO index"))
            irq_idx_l.grid(row = 1, column = 0, sticky = "NE")

            irq_idx_var = StringVar()
            irq_idx_e = HKEntry(lf, textvariable = irq_idx_var)
            irq_idx_e.grid(row = 1, column = 1, sticky = "NEW")

            irq_name_l = VarLabel(lf, text = _("GPIO name"))
            irq_name_l.grid(row = 2, column = 0, sticky = "NE")

            irq_name_var = StringVar()
            irq_name_e = HKEntry(lf, textvariable = irq_name_var)
            irq_name_e.grid(row = 2, column = 1, sticky = "NEW")

            for v in ["lf", "node_var", "node_cb",
                      "irq_idx_l", "irq_idx_e", "irq_idx_var",
                      "irq_name_l", "irq_name_e", "irq_name_var"]:
                setattr(self, pfx + v, locals()[v])

        self.__auto_var_base_cbs = None
        self.v_var_base.trace_variable("w", self.__on_var_base)
예제 #4
0
    def __init__(self, bus, *args, **kw):
        SettingsWidget.__init__(self, bus, *args, **kw)

        self.bus = bus

        self.bus_fr = fr = GUIFrame(self)
        fr.pack(fill=BOTH, expand=False)

        fr.columnconfigure(0, weight=0)
        fr.columnconfigure(1, weight=1)
        fr.rowconfigure(0, weight=0)

        l = VarLabel(fr, text=_("Parent device"))
        l.grid(row=0, column=0, sticky="NES")

        self.var_parent = StringVar()
        self.cb_parent = Combobox(fr,
                                  textvariable=self.var_parent,
                                  state="readonly")
        self.cb_parent.grid(row=0, column=1, sticky="NEWS")

        self.fields = []
        if type(bus) is BusNode:
            self.fields.extend([(_("C type"), "c_type", str),
                                (_("Casting macro"), "cast", str),
                                (_("Child name"), "child_name", str),
                                (_("Always show index"), "force_index", bool)])

        # Common bus type
        for row, (text, field, _type) in enumerate(self.fields, start=1):
            if _type is str:
                l = VarLabel(fr, text=text)
                v = StringVar()
                w = HKEntry(fr, textvariable=v)
            elif _type is bool:
                l = None
                v = BooleanVar()
                w = VarCheckbutton(fr, text=text, variable=v)

            fr.rowconfigure(row, weight=0)
            if l is None:
                w.grid(row=row, column=0, sticky="NEWS", columnspan=2)
            else:
                l.grid(row=row, column=0, sticky="NES")
                w.grid(row=row, column=1, sticky="NEWS")

            setattr(self, "w_" + field, w)
            setattr(self, "var_" + field, v)
예제 #5
0
    def __init__(self, master, repo, *a, **kw):
        GUIFrame.__init__(self, master, *a, **kw)

        if repo is None:
            refname = ""
            refs = []
        else:
            # auto select HEAD as ref
            try:
                refname = repo.head.ref.name
            except TypeError:
                refname = repo.head.commit.hexsha

            refs = [r.name for r in repo.references]

        selected = StringVar()
        cb = Combobox(self,
            width = 41, # To fit 40 hex digits of git SHA1
            values = refs,
            textvariable = selected
        )
        cb.pack(side = "top", fill = "x", expand = True)

        selected.set(refname)

        self.selected = selected
    def __init__(self, master):
        '''Create a new panel with the given parent.'''

        Frame.__init__(self, master)
        self._ship_name = StringVar()
        self._create_ui()
        self.reset()
예제 #7
0
    def add(self, itemType, cnf = {}, **kw):
        # handle variable text only for items which have such parameters
        if itemType in [
            # "radiobutton" - TODO: check it
            "cascade",
            "command",
            "checkbutton"
            # "separator" - does not have such parameters
        ]:
            for param in ["label", "accelerator"]:
                if param in cnf:
                    var = cnf.pop(param)
                elif param in kw:
                    var = kw.pop(param)
                else:
                    var = ""

                if not isinstance(var, variables):
                    var = StringVar(self, var)

                binding = MenuVarBinding(self, var, self.count, param)
                var.trace_variable("w", binding.on_var_changed)

                if cnf:
                    cnf[param] = var.get()
                else:
                    kw[param] = var.get()

        self.count = self.count + 1

        Menu.add(self, itemType, cnf or kw)
예제 #8
0
    def __init__(self, *args, **kw):
        QOMDescriptionSettingsWidget.__init__(self, *args, **kw)

        self.mw = None

        self.var_tabs = v = BooleanVar()
        self.buttons_fr.columnconfigure(2, weight=0)
        chb = VarCheckbutton(self.buttons_fr, text=_("Use tabs"), variable=v)
        chb.grid(row=0, column=2, sticky="NEWS")
        v.trace_variable("w", self.__on_tabs__)

        # mesh step seleection
        self.buttons_fr.columnconfigure(3, weight=0)
        self.buttons_fr.columnconfigure(4, weight=0)
        self.buttons_fr.columnconfigure(5, weight=0)

        Separator(self.buttons_fr, orient=VERTICAL).grid(row=0,
                                                         column=3,
                                                         sticky="NEWS")

        l = VarLabel(self.buttons_fr, text=_("Mesh step:"))
        l.grid(row=0, column=4, sticky="NEWS")

        self.var_mesh_step = v = StringVar()
        v.trace_variable("w", self.__on_mesh_step)
        self.mesh_step_sb = sb = Spinbox(self.buttons_fr,
                                         from_=MIN_MESH_STEP,
                                         to=MAX_MESH_STEP,
                                         textvariable=v,
                                         width=len(str(MAX_MESH_STEP)))
        sb.grid(row=0, column=5, sticky="NEWS")

        self.var_tabs.set(True)
예제 #9
0
 def __init__(self, root=None):
     """init"""
     self.root = root or Tk()
     self.root.title('Pylint')
     #reporter
     self.reporter = None
     #message queue for output from reporter
     self.msg_queue = six.moves.queue.Queue()
     self.msgs = []
     self.visible_msgs = []
     self.filenames = []
     self.rating = StringVar()
     self.tabs = {}
     self.report_stream = BasicStream(self)
     #gui objects
     self.lb_messages = None
     self.showhistory = None
     self.results = None
     self.btnRun = None
     self.information_box = None
     self.convention_box = None
     self.refactor_box = None
     self.warning_box = None
     self.error_box = None
     self.fatal_box = None
     self.txtModule = None
     self.status = None
     self.msg_type_dict = None
     self.init_gui()
예제 #10
0
    def on_b1_press_dt(self, event):
        item = self.device_tree.identify('item', event.x, event.y)
        if item:
            self.add_button.config(state="active")
            for widget in self.fr.winfo_children():
                widget.destroy()

            dt_type = self.device_tree.item(item, "text")
            self.v = StringVar()
            self.v.set(dt_type)  # initialize

            b = Radiobutton(self.fr,
                            text=dt_type,
                            variable=self.v,
                            value=dt_type)
            b.pack(anchor="w")

            macros = self.device_tree.item(item, "values")[0]
            if not macros == "None":
                l = macros.split(" ")
                for mstr in l:
                    b = Radiobutton(self.fr,
                                    text=mstr,
                                    variable=self.v,
                                    value=mstr)
                b.pack(anchor="w")

            b.select()
예제 #11
0
    def _init_corpus_select(self, parent):
        innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
        self.var = StringVar(innerframe)
        self.var.set(self.model.DEFAULT_CORPUS)
        Label(
            innerframe,
            justify=LEFT,
            text=' Corpus: ',
            background=self._BACKGROUND_COLOUR,
            padx=2,
            pady=1,
            border=0,
        ).pack(side='left')

        other_corpora = list(self.model.CORPORA.keys()).remove(
            self.model.DEFAULT_CORPUS)
        om = OptionMenu(innerframe,
                        self.var,
                        self.model.DEFAULT_CORPUS,
                        command=self.corpus_selected,
                        *self.model.non_default_corpora())
        om['borderwidth'] = 0
        om['highlightthickness'] = 1
        om.pack(side='left')
        innerframe.pack(side='top', fill='x', anchor='n')
예제 #12
0
 def gen_str_widgets(self, master):
     v = StringVar()
     w = HKEntry(master, textvariable = v)
     w._validate = lambda : True
     w._set_color = lambda color : w.config(bg = color)
     w._cast = lambda x : x
     return v, w
예제 #13
0
    def __init__(self, node, machine, *args, **kw):
        GUIFrame.__init__(self, *args, **kw)

        try:
            self.mht = self.winfo_toplevel().mht
        except AttributeError:
            # snapshot mode
            self.mht = None

        if self.mht is not None:
            self.mht.watch_changed(self.on_changed)

        self.node = node
        self.mach = machine

        self.node_fr = fr = GUIFrame(self)
        fr.pack(fill = BOTH, expand = False)
        fr.columnconfigure(0, weight = 0)
        fr.columnconfigure(1, weight = 1)

        # variable name base editing
        fr.rowconfigure(0, weight = 0)
        VarLabel(fr,
            text = _("Variable name base")
        ).grid(
            row = 0,
            column = 0,
            sticky = "NSW"
        )

        self.v_var_base = v = StringVar()
        HKEntry(fr,
            textvariable = v
        ).grid(
            row = 0,
            column = 1,
            sticky = "NESW"
        )

        fr.rowconfigure(1, weight = 0)
        VarLabel(fr,
            text = _("Name of variable")
        ).grid(
            row = 1,
            column = 0,
            sticky = "NSW"
        )

        HKEntry(fr,
            text = machine.node_id2var_name[node.id],
            state = "readonly"
        ).grid(
            row = 1,
            column = 1,
            sticky = "NESW"
        )

        self.refresh_after = self.after(0, self.__refresh_single__)

        self.bind("<Destroy>", self.__on_destroy__)
예제 #14
0
 def __init__(self, *args, **kw):
     if "text" in kw:
         self.text_var = kw.pop("text")
         kw["text"] = self.text_var.get()
     else:
         self.text_var = StringVar("")
     Button.__init__(self, *args, **kw)
     self.text_var.trace_variable("w", self.on_var_changed)
예제 #15
0
    def __refresh__(self):
        desc = self.desc
        for attr, info in desc.__attribute_info__.items():
            try:
                _input = info["input"]
            except KeyError:
                _input = None

            cur_val = getattr(desc, attr)
            v = getattr(self, "_var_" + attr)

            if _input is PCIId:
                if not PCIId.db.built and cur_val is None:
                    # use string values only without database
                    cur_val = ""
                # use appropriate widget/variable pair
                if isinstance(cur_val, str):
                    if not isinstance(v, StringVar):
                        v = StringVar()
                        setattr(self, "_var_" + attr, v)

                        # Fill frame with appropriate widget
                        frame = getattr(self, "_w_" + attr)
                        for w in frame.winfo_children():
                            w.destroy()

                        w = HKEntry(frame, textvariable = v)
                        w.grid(row = 0, column = 0, sticky = "NEWS")
                elif cur_val is None or isinstance(cur_val, PCIId):
                    if not isinstance(v, ObjRefVar):
                        v = ObjRefVar()
                        setattr(self, "_var_" + attr, v)

                        frame = getattr(self, "_w_" + attr)

                        for w in frame.winfo_children():
                            w.destroy()

                        w = PCIIdWidget(v, frame)
                        w.grid(row = 0, column = 0, sticky = "NEWS")

            widget_val = v.get()

            if _input is int:
                try:
                    widget_val = int(widget_val, base = 0)
                except ValueError:
                    widget_val = None

            if widget_val != cur_val:
                v.set(cur_val)

        for cb in self._all_highlights:
            cb()
예제 #16
0
def main():
    root = Tk()
    root.title("Test VarTreeview")

    device_tree = VarTreeview(root)
    device_tree["columns"] = ("Macros")

    dev = StringVar()
    macro = StringVar()
    dev.set("Devices")
    macro.set("Macros")

    device_tree.heading("#0", text=dev)
    device_tree.heading("Macros", text=macro)

    device_tree.grid(sticky="NEWS")

    test = Mytest(600, dev, macro)
    test.test_begin(root)

    root.mainloop()
예제 #17
0
    def __init__(self, *args, **kw):
        text = kw.get("text", "")
        if isinstance(text, variables):
            kw["text"] = text.get()

        Checkbutton.__init__(self, *args, **kw)

        # `StringVar` requires its master to be initialized.
        if not isinstance(text, variables):
            text = StringVar(self, text)

        self.text_var = text
        text.trace_variable("w", self.on_var_changed)
예제 #18
0
    def gen_row(self, row):
        var_p_name = StringVar()
        var_p_name.set(self.prop.prop_name)
        e_p_name = HKEntry(self.dsw.props_lf, textvariable = var_p_name)
        e_p_name.grid(
            column = 0,
            row = row,
            sticky = "NEWS"
        )

        om_p_type, var_p_type  = DeviceSettingsWidget.gen_prop_type_optionmenu(
            self.dsw.props_lf,
            self.prop.prop_type
        )
        om_p_type.grid(
            column = 1,
            row = row,
            sticky = "NEWS"
        )
        var_p_type.trace_variable("w", self.on_prop_type_changed)

        w_p_val, var_p_val = self.gen_prop_value_widget(
            self.prop.prop_type,
            self.prop.prop_val 
        )
        w_p_val.grid(
            column = 2,
            row = row,
            sticky = "NEWS"
        )

        bt_del = VarButton(
            self.dsw.props_lf,
            text = _("Delete"),
            command = self.on_delete
        )
        bt_del.grid(
            column = 3,
            row = row,
            sticky = "NEWS"
        )

        self.row = row
        self.e_name = e_p_name
        self.v_name = var_p_name
        self.om_type = om_p_type
        self.v_type = var_p_type
        self.w_val = w_p_val
        self.val_widget_prop_type = self.prop.prop_type
        self.v_val = var_p_val
        self.bt_del = bt_del
예제 #19
0
    def __init__(self, *args, **kw):
        # "textvariable" argument has same effect to VarLabel as "text"
        try:
            var = kw.pop("textvariable")
        except KeyError:
            pass
        else:
            if "text" in kw:
                raise RuntimeError('"text" and "textvariable" '
                    'arguments cannot be passed together to a VarLabel'
                )
            kw["text"] = var

        if "text" in kw:
            text = kw.pop("text")
            if isinstance(text, variables):
                kw["text"] = text.get()
                self.text_var = text
            else:
                self.text_var = StringVar(value = text)
        else:
            self.text_var = StringVar()
        Label.__init__(self, *args, **kw)
        self.text_var.trace_variable("w", self.on_var_changed)
예제 #20
0
    def gen_prop_type_optionmenu(parent, current = None):
        var = StringVar()
        keys = []
        for ptn in DeviceSettingsWidget.prop_type_name_map.values():
            keys.append(ptn[0])

        om = OptionMenu(parent, var, *keys)

        if current:
            current = DeviceSettingsWidget.prop_type_name_map[current][0]
        else:
            current = next(itervalues(DeviceSettingsWidget.prop_type_name_map))

        var.set(current)

        return om, var
예제 #21
0
    def gen_int_widgets(self, master):
        v = StringVar()
        w = HKEntry(master, textvariable = v)

        def validate():
            try:
                (int(v.get(), base = 0))
            except ValueError:
                return False
            else:
                return True

        w._validate = validate
        w._set_color = lambda color : w.config(bg = color)
        w._cast = lambda x : int(x, base = 0)
        return v, w
예제 #22
0
    def gen_row(self):
        p = self.dsw.buses_lf

        p.rowconfigure(self.idx, weight = 1)

        self.v = StringVar()
        # When a bus is selected all Combobox values lists should be updated
        # to prevent selecting of this bus in another Combobox
        self._on_var_changed = self.v.trace_variable("w", self.on_var_changed)

        self.cb = Combobox(p,
            textvariable = self.v,
            state = "readonly"
        )
        self.cb.grid(row = self.idx, column = 0, sticky = "NEWS")

        self._on_bus_selected = self.dsw.bind(
            DeviceSettingsWidget.EVENT_BUS_SELECTED, self.on_bus_selected, "+")
예제 #23
0
    def __init__(self, cpu, *args, **kw):
        QOMInstanceSettingsWidget.__init__(self, cpu, *args, **kw)

        self.cpu = cpu

        self.cpu_fr = fr = GUIFrame(self)
        fr.pack(fill=BOTH, expand=False)

        fr.columnconfigure(0, weight=0)
        fr.columnconfigure(1, weight=1)
        fr.rowconfigure(0, weight=0)

        l = VarLabel(fr, text=_("QOM type"))
        v = self.qom_type_var = StringVar()
        e = HKEntry(fr, textvariable=v)
        v.trace_variable("w", self._on_qom_type_var_changed)

        l.grid(row=0, column=0, sticky="W")
        e.grid(row=0, column=1, sticky="EW")
예제 #24
0
    def append_row_to_grid(self, grid, rows, mio):
        # update delete button
        if not rows:
            bt_del = getattr(self, "bt_del_" + mio)
            bt_del.config(state="normal")

        row = len(rows)

        l = Label(grid, text=str(row) + ":")
        l.grid(row=row, column=0, sticky="NES")

        v = StringVar()
        e = HKEntry(grid, textvariable=v)
        e.grid(row=row, column=1, sticky="NEWS")

        row_desc = (l, e, v)

        rows.append(row_desc)

        return row_desc
예제 #25
0
    def test_auto_reformat(self):
        fmt = FormatVar(value="Text is '%s'")
        text = StringVar(value="[ a text will be here ]")
        res = fmt % text

        self.assertIsInstance(res, StringVar)

        self.assertEqual(res.get(), "Text is '[ a text will be here ]'")

        def on_w(*__):
            val = res.get()
            # print("New value: %s" % val)
            self._cur_val = val

        res.trace_variable("w", on_w)

        text.set("A text")
        self.assertEqual(self._cur_val, "Text is 'A text'")

        fmt.set("'%s' is text.")
        self.assertEqual(self._cur_val, "'A text' is text.")
예제 #26
0
    def __mod__(self, args):

        if not isinstance(args, tuple):
            args = (args, )

        @as_variable(self, *args)
        def do_format(fmt, *args):
            return fmt % args

        # Wrapping do_format in `StringVar` is required because
        # `Variable` instance cannot be used with Tk.
        # TODO: move that mechanics elsewhere making `FormatVar` Tk
        # independent.

        # Initial setting
        ret = StringVar(value=do_format.get())

        # Auto update
        do_format.trace_variable("w",
                                 lambda: StringVar.set(ret, do_format.get()))

        ret.set = forbid_set

        return ret
예제 #27
0
    def __init__(self, qom_desc, *args, **kw):
        GUIFrame.__init__(self, *args, **kw)

        self.desc = qom_desc
        try:
            self.pht = self.winfo_toplevel().pht
        except AttributeError:
            self.pht = None

        # shapshot mode without PHT
        if self.pht is not None:
            self.pht.watch_changed(self.__on_changed__)

        sf = self.settings_fr = GUIFrame(self)
        sf.pack(fill = BOTH, expand = False)

        f = self.qomd_fr = GUIFrame(sf)
        f.pack(fill = BOTH, expand = False)

        f.columnconfigure(0, weight = 0)
        f.columnconfigure(1, weight = 1)

        have_pciid = False

        for row, (attr, info) in enumerate(qom_desc.__attribute_info__.items()):
            f.rowconfigure(row, weight = 0)

            l = VarLabel(f, text = info["short"])
            l.grid(row = row, column = 0, sticky = "NES")

            try:
                _input = info["input"]
            except KeyError:
                # attribute is read-only
                v = StringVar()
                w = HKEntry(f, textvariable = v, state="readonly")
            else:
                if _input is str:
                    v = StringVar()
                    w = HKEntry(f, textvariable = v)
                elif _input is int:
                    v = StringVar()
                    w = HKEntry(f, textvariable = v)

                    def validate(varname, junk, act, entry = w, var = v):
                        validate_int(var, entry = entry)

                    v.trace_variable("w", validate)
                elif _input is PCIId:
                    have_pciid = True
                    """ Value of PCI Id could be presented either by PCIId
object or by a string. So the actual widget/variable pair will be assigned
during refresh.     """
                    v = None
                    w = GUIFrame(f)
                    w.grid()
                    w.rowconfigure(0, weight = 1)
                    w.columnconfigure(0, weight = 1)
                elif _input is bool:
                    v = BooleanVar()
                    w = Checkbutton(f, variable = v)
                else:
                    raise RuntimeError("Input of QOM template attribute %s of"
                        " type %s is not supported" % (attr, _input.__name__)
                    )

            w.grid(row = row, column = 1, sticky = "NEWS")
            setattr(self, "_var_" + attr, v)
            setattr(self, "_w_" + attr, w)

        btf = self.buttons_fr = GUIFrame(self)
        btf.pack(fill = BOTH, expand = False)

        btf.rowconfigure(0, weight = 0)
        btf.columnconfigure(0, weight = 1)
        btf.columnconfigure(1, weight = 0)

        bt_apply = VarButton(btf,
            text = _("Apply"),
            command = self.__on_apply__
        )
        bt_apply.grid(row = 0, column = 1, sticky = "NEWS")

        bt_revert = VarButton(btf,
            text = _("Refresh"),
            command = self.__on_refresh__
        )
        bt_revert.grid(row = 0, column = 0, sticky = "NES")

        self.after(0, self.__refresh__)

        self.bind("<Destroy>", self.__on_destroy__, "+")

        self.__have_pciid = have_pciid
        if have_pciid:
            self.qsig_watch("qvc_available", self.__on_qvc_available)
예제 #28
0
    def init_gui(self):
        """init helper"""

        window = PanedWindow(self.root, orient="vertical")
        window.pack(side=TOP, fill=BOTH, expand=True)

        top_pane = Frame(window)
        window.add(top_pane)
        mid_pane = Frame(window)
        window.add(mid_pane)
        bottom_pane = Frame(window)
        window.add(bottom_pane)

        #setting up frames
        top_frame = Frame(top_pane)
        mid_frame = Frame(top_pane)
        history_frame = Frame(top_pane)
        radio_frame = Frame(mid_pane)
        rating_frame = Frame(mid_pane)
        res_frame = Frame(mid_pane)
        check_frame = Frame(bottom_pane)
        msg_frame = Frame(bottom_pane)
        btn_frame = Frame(bottom_pane)
        top_frame.pack(side=TOP, fill=X)
        mid_frame.pack(side=TOP, fill=X)
        history_frame.pack(side=TOP, fill=BOTH, expand=True)
        radio_frame.pack(side=TOP, fill=X)
        rating_frame.pack(side=TOP, fill=X)
        res_frame.pack(side=TOP, fill=BOTH, expand=True)
        check_frame.pack(side=TOP, fill=X)
        msg_frame.pack(side=TOP, fill=BOTH, expand=True)
        btn_frame.pack(side=TOP, fill=X)

        # Binding F5 application-wide to run lint
        self.root.bind('<F5>', self.run_lint)

        #Message ListBox
        rightscrollbar = Scrollbar(msg_frame)
        rightscrollbar.pack(side=RIGHT, fill=Y)
        bottomscrollbar = Scrollbar(msg_frame, orient=HORIZONTAL)
        bottomscrollbar.pack(side=BOTTOM, fill=X)
        self.lb_messages = Listbox(msg_frame,
                                   yscrollcommand=rightscrollbar.set,
                                   xscrollcommand=bottomscrollbar.set,
                                   bg="white")
        self.lb_messages.bind("<Double-Button-1>", self.show_sourcefile)
        self.lb_messages.pack(expand=True, fill=BOTH)
        rightscrollbar.config(command=self.lb_messages.yview)
        bottomscrollbar.config(command=self.lb_messages.xview)

        #History ListBoxes
        rightscrollbar2 = Scrollbar(history_frame)
        rightscrollbar2.pack(side=RIGHT, fill=Y)
        bottomscrollbar2 = Scrollbar(history_frame, orient=HORIZONTAL)
        bottomscrollbar2.pack(side=BOTTOM, fill=X)
        self.showhistory = Listbox(history_frame,
                                   yscrollcommand=rightscrollbar2.set,
                                   xscrollcommand=bottomscrollbar2.set,
                                   bg="white")
        self.showhistory.pack(expand=True, fill=BOTH)
        rightscrollbar2.config(command=self.showhistory.yview)
        bottomscrollbar2.config(command=self.showhistory.xview)
        self.showhistory.bind('<Double-Button-1>', self.select_recent_file)
        self.set_history_window()

        #status bar
        self.status = Label(self.root, text="", bd=1, relief=SUNKEN, anchor=W)
        self.status.pack(side=BOTTOM, fill=X)

        #labelbl_ratingls
        lbl_rating_label = Label(rating_frame, text='Rating:')
        lbl_rating_label.pack(side=LEFT)
        lbl_rating = Label(rating_frame, textvariable=self.rating)
        lbl_rating.pack(side=LEFT)
        Label(mid_frame, text='Recently Used:').pack(side=LEFT)
        Label(top_frame, text='Module or package').pack(side=LEFT)

        #file textbox
        self.txt_module = Entry(top_frame, background='white')
        self.txt_module.bind('<Return>', self.run_lint)
        self.txt_module.pack(side=LEFT, expand=True, fill=X)

        #results box
        rightscrollbar = Scrollbar(res_frame)
        rightscrollbar.pack(side=RIGHT, fill=Y)
        bottomscrollbar = Scrollbar(res_frame, orient=HORIZONTAL)
        bottomscrollbar.pack(side=BOTTOM, fill=X)
        self.results = Listbox(res_frame,
                               yscrollcommand=rightscrollbar.set,
                               xscrollcommand=bottomscrollbar.set,
                               bg="white",
                               font="Courier")
        self.results.pack(expand=True, fill=BOTH, side=BOTTOM)
        rightscrollbar.config(command=self.results.yview)
        bottomscrollbar.config(command=self.results.xview)

        #buttons
        Button(top_frame, text='Open', command=self.file_open).pack(side=LEFT)
        Button(top_frame,
               text='Open Package',
               command=(lambda: self.file_open(package=True))).pack(side=LEFT)

        self.btnRun = Button(top_frame, text='Run', command=self.run_lint)
        self.btnRun.pack(side=LEFT)
        Button(btn_frame, text='Quit', command=self.quit).pack(side=BOTTOM)

        #radio buttons
        self.information_box = IntVar()
        self.convention_box = IntVar()
        self.refactor_box = IntVar()
        self.warning_box = IntVar()
        self.error_box = IntVar()
        self.fatal_box = IntVar()
        i = Checkbutton(check_frame,
                        text="Information",
                        fg=COLORS['(I)'],
                        variable=self.information_box,
                        command=self.refresh_msg_window)
        c = Checkbutton(check_frame,
                        text="Convention",
                        fg=COLORS['(C)'],
                        variable=self.convention_box,
                        command=self.refresh_msg_window)
        r = Checkbutton(check_frame,
                        text="Refactor",
                        fg=COLORS['(R)'],
                        variable=self.refactor_box,
                        command=self.refresh_msg_window)
        w = Checkbutton(check_frame,
                        text="Warning",
                        fg=COLORS['(W)'],
                        variable=self.warning_box,
                        command=self.refresh_msg_window)
        e = Checkbutton(check_frame,
                        text="Error",
                        fg=COLORS['(E)'],
                        variable=self.error_box,
                        command=self.refresh_msg_window)
        f = Checkbutton(check_frame,
                        text="Fatal",
                        fg=COLORS['(F)'],
                        variable=self.fatal_box,
                        command=self.refresh_msg_window)
        i.select()
        c.select()
        r.select()
        w.select()
        e.select()
        f.select()
        i.pack(side=LEFT)
        c.pack(side=LEFT)
        r.pack(side=LEFT)
        w.pack(side=LEFT)
        e.pack(side=LEFT)
        f.pack(side=LEFT)

        #check boxes
        self.box = StringVar()
        # XXX should be generated
        report = Radiobutton(radio_frame,
                             text="Report",
                             variable=self.box,
                             value="Report",
                             command=self.refresh_results_window)
        raw_met = Radiobutton(radio_frame,
                              text="Raw metrics",
                              variable=self.box,
                              value="Raw metrics",
                              command=self.refresh_results_window)
        dup = Radiobutton(radio_frame,
                          text="Duplication",
                          variable=self.box,
                          value="Duplication",
                          command=self.refresh_results_window)
        ext = Radiobutton(radio_frame,
                          text="External dependencies",
                          variable=self.box,
                          value="External dependencies",
                          command=self.refresh_results_window)
        stat = Radiobutton(radio_frame,
                           text="Statistics by type",
                           variable=self.box,
                           value="Statistics by type",
                           command=self.refresh_results_window)
        msg_cat = Radiobutton(radio_frame,
                              text="Messages by category",
                              variable=self.box,
                              value="Messages by category",
                              command=self.refresh_results_window)
        msg = Radiobutton(radio_frame,
                          text="Messages",
                          variable=self.box,
                          value="Messages",
                          command=self.refresh_results_window)
        source_file = Radiobutton(radio_frame,
                                  text="Source File",
                                  variable=self.box,
                                  value="Source File",
                                  command=self.refresh_results_window)
        report.select()
        report.grid(column=0, row=0, sticky=W)
        raw_met.grid(column=1, row=0, sticky=W)
        dup.grid(column=2, row=0, sticky=W)
        msg.grid(column=3, row=0, sticky=W)
        stat.grid(column=0, row=1, sticky=W)
        msg_cat.grid(column=1, row=1, sticky=W)
        ext.grid(column=2, row=1, sticky=W)
        source_file.grid(column=3, row=1, sticky=W)

        #dictionary for check boxes and associated error term
        self.msg_type_dict = {
            'I': lambda: self.information_box.get() == 1,
            'C': lambda: self.convention_box.get() == 1,
            'R': lambda: self.refactor_box.get() == 1,
            'E': lambda: self.error_box.get() == 1,
            'W': lambda: self.warning_box.get() == 1,
            'F': lambda: self.fatal_box.get() == 1
        }
        self.txt_module.focus_set()
예제 #29
0
    def __init__(self, parent, app):
        parent.title('Auth window')

        self.parent = parent
        self.root = app

        # Widget Initialization
        self._label_header = Label(
            parent,
            font="{Segoe UI} 20 bold",
            foreground="#ff0000",
            text="Trakt Account Authorization",
        )
        self._button_get_code = Button(
            parent,
            font="{MS Sans Serif} 12 bold",
            text="Get PIN Code",
        )
        self._label_enter_code = Label(
            parent,
            font="{MS Sans Serif} 14",
            text="Enter the code:",
        )
        self._label_click = Label(
            parent,
            font="{MS Sans Serif} 14",
            text="Click the button to get a code:",
        )
        self.pin_code = StringVar()
        self._entry_code = Entry(
            parent,
            font="{MS Sans Serif} 14 bold",
            width=10,
            justify="center",
            textvariable=self.pin_code,
            state="disabled",
        )
        self._button_done = Button(
            parent,
            borderwidth=3,
            font="{MS Sans Serif} 12 bold",
            text="Done",
            state="disabled",
        )

        # widget commands
        self._button_get_code.configure(command=self.button_get_code_command)
        self._button_done.configure(command=self.button_done_command)

        # Geometry Management
        self._label_header.grid(in_=parent,
                                column=1,
                                row=1,
                                columnspan=1,
                                ipadx=0,
                                ipady=0,
                                padx=0,
                                pady=0,
                                rowspan=1,
                                sticky="ew")
        self._label_click.grid(in_=parent,
                               column=1,
                               row=2,
                               columnspan=1,
                               ipadx=0,
                               ipady=0,
                               padx=0,
                               pady=0,
                               rowspan=1,
                               sticky="")
        self._button_get_code.grid(in_=parent,
                                   column=1,
                                   row=3,
                                   columnspan=1,
                                   ipadx=0,
                                   ipady=0,
                                   padx=0,
                                   pady=0,
                                   rowspan=1,
                                   sticky="")
        self._label_enter_code.grid(in_=parent,
                                    column=1,
                                    row=4,
                                    columnspan=1,
                                    ipadx=0,
                                    ipady=0,
                                    padx=0,
                                    pady=0,
                                    rowspan=1,
                                    sticky="")
        self._entry_code.grid(in_=parent,
                              column=1,
                              row=5,
                              columnspan=1,
                              ipadx=5,
                              ipady=0,
                              padx=5,
                              pady=0,
                              rowspan=1,
                              sticky="")
        self._button_done.grid(in_=parent,
                               column=1,
                               row=6,
                               columnspan=1,
                               ipadx=0,
                               ipady=0,
                               padx=0,
                               pady=0,
                               rowspan=1,
                               sticky="")

        # Resize Behavior
        parent.resizable(False, False)
        parent.grid_rowconfigure(1, weight=1, minsize=40, pad=10)
        parent.grid_rowconfigure(2, weight=1, minsize=40, pad=10)
        parent.grid_rowconfigure(3, weight=1, minsize=40, pad=10)
        parent.grid_rowconfigure(4, weight=1, minsize=40, pad=10)
        parent.grid_rowconfigure(5, weight=1, minsize=50, pad=10)
        parent.grid_rowconfigure(6, weight=1, minsize=50, pad=10)
        parent.grid_columnconfigure(1, weight=1, minsize=0, pad=10)
예제 #30
0
파일: qdc-gui.py 프로젝트: ufwt/qdt
    def __init__(self, project=None):
        GUITk.__init__(self, wait_msec=1)

        for signame in ["qvc_dirtied", "qvd_failed", "qvc_available"]:
            s = CoSignal()
            s.attach(self.signal_dispatcher)
            setattr(self, "sig_" + signame, s)

        self.title_suffix = _("Qemu device creator GUI")
        self.title_suffix.trace_variable("w", self.__on_title_suffix_write__)

        self.title_not_saved_asterisk = StringVar()
        self.title_not_saved_asterisk.trace_variable(
            "w", self.__on_title_suffix_write__)
        self.saved_operation = None

        self.var_title = StringVar()
        self.title(self.var_title)

        # Hot keys, accelerators
        self.hk = hotkeys = HotKey(self)
        hotkeys.add_bindings([
            HotKeyBinding(
                self.invert_history_window,
                key_code=43,
                description=_("If editing history window is hidden then \
show it else hide it."),
                symbol="H"),
            HotKeyBinding(self.on_load,
                          key_code=32,
                          description=_("Load project from file."),
                          symbol="O"),
            HotKeyBinding(self.on_new_project,
                          key_code=57,
                          description=_("Create new project."),
                          symbol="N"),
            HotKeyBinding(self.on_add_description,
                          key_code=40,
                          description=_("Add description to the project"),
                          symbol="D"),
            HotKeyBinding(self.on_set_qemu_build_path,
                          key_code=56,
                          description=_("Set Qemu build path for the project"),
                          symbol="B"),
            HotKeyBinding(
                self.on_sel_tgt_qemu_version,
                key_code=28,
                description=_("Select target Qemu version for the project"),
                symbol="T"),
            HotKeyBinding(self.on_generate,
                          key_code=42,
                          description=_("Launch code generation"),
                          symbol="G"),
            HotKeyBinding(self.on_delete,
                          key_code=24,
                          description=_("Shutdown the application."),
                          symbol="Q"),
            HotKeyBinding(self.undo,
                          key_code=52,
                          description=_("Revert previous editing."),
                          symbol="Z"),
            HotKeyBinding(self.redo,
                          key_code=29,
                          description=_("Make reverted editing again."),
                          symbol="Y"),
            HotKeyBinding(self.on_save,
                          key_code=39,
                          description=_("Save project."),
                          symbol="S"),
            HotKeyBinding(self.on_reload,
                          key_code=27,
                          description=_("Reload current project from file."),
                          symbol="R")
        ])

        # see `set_user_settings`
        self._user_settings = None

        # Menu bar
        menubar = VarMenu(self)

        self.filemenu = filemenu = VarMenu(menubar, tearoff=False)
        filemenu.add_command(label=_("Add description"),
                             command=self.on_add_description,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_add_description))
        filemenu.add_command(label=_("Set Qemu build path"),
                             command=self.on_set_qemu_build_path,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_set_qemu_build_path))
        filemenu.add_command(label=_("Select target Qemu version"),
                             command=self.on_sel_tgt_qemu_version,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_sel_tgt_qemu_version))
        filemenu.add_command(label=_("Generate"),
                             command=self.on_generate,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_generate))
        filemenu.add_separator()
        filemenu.add_command(label=_("New project"),
                             command=self.on_new_project,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_new_project)),
        filemenu.add_command(label=_("Save"),
                             command=self.on_save,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_save)),
        filemenu.add_command(label=_("Save project as..."),
                             command=self.on_save_as)
        filemenu.add_command(label=_("Load"),
                             command=self.on_load,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_load)),
        self.reload_idx = filemenu.count
        filemenu.add_command(label=_("Reload"),
                             command=self.on_reload,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_reload)),
        self.recentmenu = recentmenu = VarMenu(filemenu, tearoff=False)
        filemenu.add_cascade(
            label=_("Recent projects"),
            menu=recentmenu,
            state=DISABLED  # a user settings instance is required
        )

        filemenu.add_separator()
        filemenu.add_command(label=_("Quit"),
                             command=self.quit,
                             accelerator=hotkeys.get_keycode_string(
                                 self.on_delete))
        menubar.add_cascade(label=_("File"), menu=filemenu)

        self.editmenu = editmenu = VarMenu(menubar, tearoff=False)
        editmenu.add_command(label=_("Undo"),
                             command=self.undo,
                             accelerator=hotkeys.get_keycode_string(self.undo))
        self.undo_idx = editmenu.count - 1

        editmenu.add_command(label=_("Redo"),
                             command=self.redo,
                             accelerator=hotkeys.get_keycode_string(self.redo))
        self.redo_idx = editmenu.count - 1

        editmenu.add_separator()

        editmenu.add_command(label=_("Rebuild Cache"),
                             command=self.rebuild_cache,
                             accelerator=hotkeys.get_keycode_string(
                                 self.rebuild_cache))

        editmenu.add_separator()

        v = self.var_history_window = BooleanVar()
        v.set(False)

        self.__on_var_history_window = v.trace_variable(
            "w", self.__on_var_history_window__)

        editmenu.add_checkbutton(label=_("Editing history window"),
                                 variable=v,
                                 accelerator=hotkeys.get_keycode_string(
                                     self.invert_history_window))

        menubar.add_cascade(label=_("Edit"), menu=editmenu)

        self.optionsmenu = optionsmenu = VarMenu(menubar, tearoff=False)

        v = self.var_schedule_generation = BooleanVar()
        v.set(False)

        self.__on_var_schedule_generation = v.trace_variable(
            "w", self.__on_var_schedule_generation__)

        optionsmenu.add_checkbutton(
            label=_("Schedule generation after cache loading"), variable=v)

        v = self.var_gen_chunk_graphs = BooleanVar()
        v.set(False)

        self.__on_var_gen_chunk_graphs = v.trace_variable(
            "w", self.__on_var_gen_chunk_graphs__)

        optionsmenu.add_checkbutton(label=_("Generate chunk graphs"),
                                    variable=v)

        menubar.add_cascade(label=_("Options"), menu=optionsmenu)

        self.config(menu=menubar)

        # Widget layout
        self.grid()
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Status bar
        self.grid_rowconfigure(1, weight=0)
        self.sb = sb = Statusbar(self)
        sb.grid(row=1, column=0, sticky="NEWS")

        # Target Qemu version in the status bar
        self._target_qemu = Variable(None)

        # This complicated scheme is required because the status must also
        # be updated on language change.
        @as_variable(self._target_qemu, _("No target"), _("Target Qemu: %s"))
        def var_target_qemu(target, no_target, target_qemu):
            if target is None:
                return no_target
            else:
                return target_qemu % target

        sb.left(var_target_qemu)

        # QEMU build path displaying
        self.var_qemu_build_path = StringVar()
        sb.left(self.var_qemu_build_path)

        # Task counters in status bar
        sb.right(_("Background tasks: "))
        sb.repack(CoStatusView(sb), RIGHT)

        self.signal_dispatcher.watch_failed(self.__on_listener_failed)

        self.protocol("WM_DELETE_WINDOW", self.on_delete)

        self.set_project(GUIProject() if project is None else project)

        self.__update_title__()
        self.__check_saved_asterisk__()

        self.qsig_watch("qvc_available", self.__on_qvc_available)