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 set_kwargs(self, code): """Sets widget from kwargs string Parameters ---------- code: String \tCode representation of kwargs value """ kwargs = {} kwarglist = list(parse_dict_strings(code[1:-1])) for kwarg, val in zip(kwarglist[::2], kwarglist[1::2]): kwargs[unquote_string(kwarg)] = val for key in kwargs: if key == "color": color = code2color(kwargs[key]) self.colorselect.SetValue(color) self.colorselect.SetOwnForegroundColour(color) elif key == "fontname": self.font_face = unquote_string(kwargs[key]) if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetFaceName(self.font_face) elif key == "fontsize": if kwargs[key]: self.font_size = int(kwargs[key]) else: self.font_size = get_default_font().GetPointSize() if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetPointSize(self.font_size) elif key == "fontstyle": self.font_style = \ self.style_mpl2wx[unquote_string(kwargs[key])] if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetStyle(self.font_style) elif key == "fontweight": self.font_weight = \ self.weight_mpl2wx[unquote_string(kwargs[key])] if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetWeight(self.font_weight)
def set_kwargs(self, code): """Sets widget from kwargs string Parameters ---------- code: String \tCode representation of kwargs value """ kwargs = {} kwarglist = list(parse_dict_strings(code[1:-1])) for kwarg, val in zip(kwarglist[::2], kwarglist[1::2]): kwargs[unquote_string(kwarg)] = val for key in kwargs: if key == "color": color = code2color(kwargs[key]) self.colorselect.SetOwnForegroundColour(color) elif key == "fontname": self.font_face = unquote_string(kwargs[key]) if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetFaceName(self.font_face) elif key == "fontsize": if kwargs[key]: self.font_size = int(kwargs[key]) else: self.font_size = get_default_font().GetPointSize() if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetPointSize(self.font_size) elif key == "fontstyle": self.font_style = \ self.style_mpl2wx[unquote_string(kwargs[key])] if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetStyle(self.font_style) elif key == "fontweight": self.font_weight = \ self.weight_mpl2wx[unquote_string(kwargs[key])] if self.chosen_font is None: self.chosen_font = get_default_font() self.chosen_font.SetWeight(self.font_weight)
def set_kwargs(self, code): """Sets widget from kwargs string Parameters ---------- code: String \tCode representation of kwargs value """ kwargs = {} kwarglist = list(parse_dict_strings(code[1:-1])) for kwarg, val in zip(kwarglist[::2], kwarglist[1::2]): kwargs[unquote_string(kwarg)] = val for key in kwargs: if key == "direction": self.attrs[key] = unquote_string(kwargs[key]) label = self.choice_param2label[self.attrs[key]] label_list = self.direction_choicectrl.Items self.direction_choicectrl.SetSelection(label_list.index(label)) elif key == "pad": self.attrs[key] = int(kwargs[key]) self.pad_intctrl.SetValue(self.attrs[key]) elif key in ["top", "right"]: self.attrs[key] = (not kwargs[key] == "False") if self.attrs[key]: self.sec_checkboxctrl.Set3StateValue(wx.CHK_CHECKED) else: self.sec_checkboxctrl.Set3StateValue(wx.CHK_UNCHECKED) elif key == "labelsize": self.attrs[key] = int(kwargs[key]) self.labelsize_intctrl.SetValue(self.attrs[key])
def test_param_parse_dict_strings(code, res): """Unit test for parse_dict_strings""" assert list(parse_dict_strings(code)) == res