12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <class name="Canvas">
- <relationships>
- <association name="parent" class="A" min="1" max="1" />
- <inheritance class="SCCDWidget" priority='0'/>
- <inheritance class="tk.Canvas" priority='1'/>
- </relationships>
- <constructor>
- <parameter name="parent" />
- <super class="SCCDWidget"/>
- <super class="tk.Canvas">
- <parameter expr="parent" />
- <parameter expr="**{'scrollregion': (0, 0, parent.winfo_screenwidth()*2, parent.winfo_screenheight() * 2)}"/>
- </super>
- <body>
- vbar = tk.Scrollbar(self, orient=tk.VERTICAL)
- vbar.config(command=self.yview)
- vbar.pack(side=tk.RIGHT, fill=tk.Y, pady=(0, 16))
- hbar = tk.Scrollbar(self, orient=tk.HORIZONTAL)
- hbar.config(command=self.xview)
- hbar.pack(side=tk.BOTTOM, fill=tk.X)
- self.config(background='white', yscrollcommand=vbar.set, xscrollcommand=hbar.set)
- self.focus_set()
- self.elements = {}
- self.shift = {}
- </body>
- </constructor>
- <destructor>
- <body>
- self.delete("all")
- self.destroy()
- </body>
- </destructor>
- <scxml initial="main">
- <state id="main">
- <transition target="../ready">
- <raise event="tk_widget" scope="narrow" target="'parent'">
- <parameter expr="self"/>
- </raise>
- </transition>
- </state>
- <state id="ready">
- <transition event="clear_canvas" target=".">
- <script>
- self.delete("all")
- self.elements = {}
- self.shift = {}
- </script>
- </transition>
- <transition event="define_group" target=".">
- <parameter name="element"/>
- <script>
- self.elements[element["id"]] = element
- self.shift[element["id"]] = (element["x"], element["y"])
- </script>
- </transition>
- <transition event="define_contains" target=".">
- <parameter name="element"/>
- <script>
- self.shift[element["__target"]] = self.shift[element["__source"]]
- </script>
- </transition>
- <transition event="draw_canvas" target=".">
- <parameter name="element"/>
- <script>
- print("Render: " + str(element))
- self.elements[element["id"]] = element
- shift_x, shift_y = self.shift[element["id"]]
- elem_x = shift_x + element["x"]
- elem_y = shift_y + element["y"]
- if element["type"] == "Rectangle":
- self.create_rectangle(elem_x, elem_y, elem_x + element["width"], elem_y + element["height"], fill=element["fillColour"], outline=element["lineColour"])
- elif element["type"] == "Text":
- self.create_text(elem_x, elem_y, fill=element["lineColour"], text=element["text"], anchor=tk.NW)
- elif element["type"] == "Line":
- self.create_line(elem_x, elem_y, shift_x + element["targetX"], shift_y + element["targetY"], fill=element["lineColour"], width=element["lineWidth"], arrow=tk.LAST if element["arrow"] else tk.NONE)
- else:
- print("Undefined render format: " + str(element))
- </script>
- </transition>
- </state>
- </scxml>
- </class>
|