Пример #1
0
def get_settings(client_id, name="", cv=None, config_path=""):
    from dace.config import Config

    if cv is None:
        clientpath = "./client_configs/" + client_id + ".conf"
        if os.path.isfile(clientpath):
            Config.load(clientpath)
        else:
            Config.load()

    if cv is None:
        cv = Config.get()
    ret = {}
    for i, (cname, cval) in enumerate(sorted(cv.items())):
        cpath = tuple(list(config_path) + [cname])
        try:
            meta = Config.get_metadata(*cpath)

            # A dict contains more elements
            if meta['type'] == 'dict':
                ret[cname] = {
                    "value": get_settings(client_id, cname, cval, cpath),
                    "meta": meta
                }
                continue
            # Other values can be included directly
            ret[cname] = {"value": cval, "meta": meta}
        except KeyError:
            print('WARNING: No metadata for configuration key', cpath)

    return ret
Пример #2
0
    def render_config_subtree(self, cv, config_path, grid):
        # Add notebook to grid and render each child within

        columized = False
        notebook = Gtk.Notebook()
        grid.add(notebook)
        grid.set_hexpand(True)
        for i, (cname, cval) in enumerate(sorted(cv.items())):
            # Create current config "path"
            cpath = tuple(list(config_path) + [cname])
            meta = Config.get_metadata(*cpath)
            if meta['type'] == 'dict':
                gtklabel = Gtk.Label()
                gtklabel.set_label(meta['title'])
                ngrid = Gtk.Grid()
                notebook.append_page(ngrid, gtklabel)
                self.render_config_subtree(cval, cpath, ngrid)
                continue

            if columized == False:
                grid.insert_column(0)
                grid.insert_column(1)
                columized = True
            self.render_config_element(cval, cpath, grid, i, meta)
Пример #3
0
    def render_config_dialog(self):
        # Load metadata for configuration
        Config.load_schema()

        self.window = Gtk.Window()
        notebook = Gtk.Notebook()
        notebook.set_scrollable(True)
        self.window.add(notebook)

        # General (top-level) settings
        gtklabel = Gtk.Label()
        gtklabel.set_label('General')
        general_grid = Gtk.Grid()
        general_grid.set_hexpand(True)
        notebook.append_page(general_grid, gtklabel)
        columized = False

        for i, (cname, cval) in enumerate(sorted(Config.get().items())):
            meta = Config.get_metadata(cname)
            if meta['type'] == 'dict':
                gtklabel = Gtk.Label()
                gtklabel.set_label(meta['title'])
                grid = Gtk.Grid()
                grid.set_hexpand(True)
                notebook.append_page(grid, gtklabel)
                self.render_config_subtree(cval, (cname, ), grid)
                continue

            if columized == False:
                general_grid.insert_column(0)
                general_grid.insert_column(1)
                columized = True
            self.render_config_element(cval, (cname, ), general_grid, i, meta)

        self.window.show_all()
        self.window.connect("delete-event", self.win_close_callback, None)