def __init__(self, model): VWidget.__init__(self) self.model = model self.label = QtWidgets.QLabel(self.model.name) self.slider = QtWidgets.QSlider(Qt.Horizontal) self.lineedit = QtWidgets.QLineEdit() # configure widgets self.slider.setMinimum(self.model.minimum) self.slider.setMaximum(self.model.maximum) intval = QtGui.QIntValidator(self.model.minimum, self.model.maximum) self.lineedit.setValidator(intval) # self.slider.setTracking(False) # create layout hbox = QtWidgets.QHBoxLayout() hbox.addWidget(self.label) hbox.addWidget(self.slider) hbox.addWidget(self.lineedit) self.setLayout(hbox) # connect Qt signals self.slider.valueChanged.connect(self.on_slider_valueChanged) self.lineedit.editingFinished.connect(self.on_lineedit_editingFinished) # connect simple signals sisi.connect(self.on__update_dial_state, signal="update dial state", sender=self.model)
def __init__(self): VWidget.__init__(self) self.sliders = {} self.lastval = {} # create layout layout = QtWidgets.QFormLayout() self.setLayout(layout) # connect simple signals sisi.connect(self.on__set_state, signal="set state", channel="editor")
def __init__(self, name, minimum=1, maximum=100): MBase.__init__(self) self.name = name self.minimum = minimum self.maximum = maximum self.animations = {} self.ignore_state_change = False # connect simple signals sisi.connect(self.on__state_changed, signal="state changed", channel="editor")
def __init__(self, delay=10, parent=None): QtCore.QObject.__init__(self, parent=parent) # the time in milliseconds we wait for state changes # before we start a redraw self.delay = delay # the number of changes that occurred self.changecount = 0 # connect simple signals sisi.connect(self.on__state_changed, signal="state changed", channel="editor")
def mode(self, value): sisi.disconnect(self.on__state_changed, signal="state changed", channel="editor") if value == "delayed": self.on__state_changed = self._delayed_redraw elif value == "direct": self.on__state_changed = self._direct_redraw elif value == "off": self.on__state_changed = self._no_redraw else: raise ValueError("Drawing mode must be either 'direct', " + "'delayed' or 'off'") self.changecount = 0 log.info("Set paperdoll drawing mode to '%s'", value) self._mode = value sisi.connect(self.on__state_changed, signal="state changed", channel="editor")
def __init__(self, model): VBaseWindow.__init__(self) self.model = model self.svgdoc = None # the SVG document of the currently displayed doll self.dials = [] # create widgets self.central = QtWidgets.QWidget() self.doll = VPaperDoll() self.sliders = VSliders() self.objectlist = QtWidgets.QTreeView() # create actions self.exportsvg = self.toolbar.addAction("export") # configure widgets self.setWindowTitle("Paperdoll editor {}".format(version)) self.objectlist.setHeaderHidden(True) self.objectlist.setIndentation(20) # create animation controls diallist = [(d.name, d) for d in self.model.dials.values()] for dialname, dialmodel in sorted(diallist): self.dials.append(VDial(dialmodel)) animation_names = [(a.name, a) for a in self.model.animations.values()] for aniname, ani in sorted(animation_names): self.sliders.add_slider(aniname, ani.default_state) # connect Qt signals self.exportsvg.triggered.connect(self.on_exportsvg_triggered) self.objectlist.clicked.connect(self.on_objectlist_clicked) # create layout hbox = QtWidgets.QHBoxLayout() hbox.addWidget(self.doll, stretch=5) hbox.addWidget(self.objectlist) dialbox = QtWidgets.QVBoxLayout() for dialview in self.dials: dialbox.addWidget(dialview) dialbox.addStretch() hbox.addLayout(dialbox) hbox.addWidget(self.sliders) self.central.setLayout(hbox) self.setCentralWidget(self.central) # connect simple signals sisi.connect(self.on__doll_drawn, signal="doll drawn")
def __init__(self): MBase.__init__(self) self.state = {} self.layers = [] self.dollgeometry = {} # the geometry that was drawn last self.modified_styles = {} self.dollfiles = {} self.connectivity = {} self.geometry = {} self.animations = {} self.dials = {} # parse paperdoll ressource files dolldir = Path("../dollfiles").resolve() for descfilepath in dolldir.glob("*.xml"): descfile = svglib.DescriptionFile(descfilepath) # parse paperdoll description file descfile.load_connectivity() descfile.load_geometry() descfile.load_animations() # store paperdoll description file descfilename = descfile.path.name assert descfilename not in self.dollfiles, descfilename self.dollfiles[descfilename] = descfile for content in ("connectivity", "geometry", "animations"): for filename in sorted(self.dollfiles): descfile = self.dollfiles[filename] self.load_content(descfile, content) for filename in sorted(self.dollfiles): self.load_doll_file(self.dollfiles[filename]) # initialize animation state for animname in self.animations: self.state[animname] = 40 # connect simple signals sisi.connect(self.on__set_state, signal="set state") sisi.connect(self.on__draw_doll, signal="draw doll") sisi.connect(self.on__export_doll, signal="export doll") sisi.connect(self.on__set_style, signal="set style")