示例#1
0
文件: view.py 项目: radoveev/pdc
 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)
示例#2
0
 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")
示例#3
0
文件: model.py 项目: radoveev/pdc
 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")
示例#4
0
文件: view.py 项目: radoveev/pdc
 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")
示例#5
0
 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")
示例#6
0
文件: view.py 项目: radoveev/pdc
 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")
示例#7
0
文件: model.py 项目: radoveev/pdc
 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")