def set_code(self, code): """Update widgets from code""" # Get attributes from code attributes = [] strip = lambda s: s.strip('u').strip("'").strip('"') for attr_dict in parse_dict_strings(unicode(code).strip()[19:-1]): attrs = list(strip(s) for s in parse_dict_strings(attr_dict[1:-1])) attributes.append(dict(zip(attrs[::2], attrs[1::2]))) if not attributes: return # Set widgets from attributes # --------------------------- # Figure attributes figure_attributes = attributes[0] for key, widget in self.figure_attributes_panel: try: obj = figure_attributes[key] kwargs_key = key + "_kwargs" if kwargs_key in figure_attributes: widget.set_kwargs(figure_attributes[kwargs_key]) except KeyError: obj = "" widget.code = charts.object2code(key, obj) # Series attributes self.all_series_panel.update(attributes[1:])
def __init__(self, grid, series_dict): self.grid = grid wx.Panel.__init__(self, grid, -1) self.chart_type_book = wx.Treebook(self, -1, style=wx.BK_LEFT) self.il = wx.ImageList(24, 24) # Add plot panels for i, plot_type_dict in enumerate(self.plot_types): plot_type = plot_type_dict["type"] PlotPanelClass = plot_type_dict["panel_class"] series_data = {} if plot_type == series_dict["type"]: for key in series_dict: series_data[key] = charts.object2code(key, series_dict[key]) plot_panel = PlotPanelClass(self.chart_type_book, series_data, -1) self.chart_type_book.AddPage(plot_panel, plot_type, imageId=i) self.il.Add(icons[plot_type_dict["type"]]) self.plot_type = series_dict["type"] self._properties() self.__do_layout()