Beispiel #1
0
class TemplateLabelEditor(QtGui.QTabWidget):
    labelUpdated = QtCore.Signal()
    moveLabel = QtCore.Signal(float, float, object)

    def __init__(self, parent=None):
        super(TemplateLabelEditor, self).__init__(parent=parent)
        self._template = None
        self.member_groups = {group: TemplateLabelGroup(group) for group in members}
        self.style_editor = TextStyleEditorWidget()
        self.style_editor.savePressed.connect(self.save_style)
        for group, widget in self.member_groups.iteritems():
            widget.labelUpdated.connect(self.labelUpdated.emit)
            widget.moveLabel.connect(self.moveLabel.emit)
            widget.editStyle.connect(self.edit_style)
            scroll = QtGui.QScrollArea()
            scroll.setWidget(widget)
            self.addTab(scroll, unicode(group[0].upper() + group[1:]))
        self.current_member = None

    def edit_style(self, member, style):
        self.current_member = member
        style = str(style)
        tc = vcs.createtextcombined(Tt_source=style, To_source=style)
        self.style_editor.setTextObject(tc)
        self.style_editor.show()
        self.style_editor.raise_()

    def save_style(self, style):
        current_obj = self.style_editor.textObject
        style = str(style)
        if style == current_obj.name:
            to_name = current_obj.To_name
            to_src = "default"
            tt_name = current_obj.Tt_name
            tt_src = "default"
        else:
            to_name = style
            to_src = current_obj.To_name
            tt_name = style
            tt_src = current_obj.Tt_name
        try:
            to = vcs.gettextorientation(to_name)
        except ValueError:
            to = vcs.createtextorientation(name=to_name, source=to_src)
        try:
            tt = vcs.gettexttable(tt_name)
        except ValueError:
            tt = vcs.createtexttable(name=tt_name, source=tt_src)
        get_textstyles().updated(tt_name)
        self.current_member.texttable = tt
        self.current_member.textorientation = to
        self.current_member = None
        self.sync()
        self.labelUpdated.emit()

    @property
    def template(self):
        return self._template

    @template.setter
    def template(self, value):
        self._template = value
        self.sync()

    def sync(self):
        """Retrieve all values from the template and update the GUI."""
        for member_group in members:
            for member in members[member_group]:
                attr = getattr(self._template, member)
                self.member_groups[member_group].get(member).setLabel(attr)