drawing.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. """
  2. *REALLY* Small framework for creating/manipulating/deleting Tkinter Canvas elements.
  3. NOTE: keep this synced with svg.js
  4. Author: Raphael Mannadiar
  5. Date: 2014/08/21
  6. """
  7. from sccd.runtime.libs.utils import utils
  8. class drawing:
  9. class canvas_wrapper:
  10. def __init__(self, element):
  11. self.element = element
  12. self.width = int(element.cget("width"))
  13. self.height = int(element.cget("height"))
  14. def add_circle(self, x, y, r, style):
  15. new_element_id = self.element.create_oval(x-r, y-r, x+r, y+r, **style)
  16. return drawing.ui_element_wrapper(self, new_element_id, x, y)
  17. def add_rectangle(self, x, y, w, h, style):
  18. new_element_id = self.element.create_rectangle(x-w/2.0, y-h/2.0, x+w/2.0, y+h/2.0, **style)
  19. return drawing.ui_element_wrapper(self, new_element_id, x, y)
  20. def remove_element(self, element):
  21. self.element.delete(element.element_id)
  22. def get_width(self):
  23. return self.element.winfo_width()
  24. def get_height(self):
  25. return self.element.winfo_height()
  26. class ui_element_wrapper:
  27. def __init__(self, canvas_wrapper, element_id, x, y):
  28. self.canvas_wrapper = canvas_wrapper
  29. self.element_id = element_id
  30. self.a = 0
  31. self.x = x
  32. self.y = y
  33. def set_position(self, x, y):
  34. self.move(x-self.x, y-self.y)
  35. def get_position(self):
  36. return utils._bunch(x=self.x, y=self.y)
  37. def move(self, dx, dy):
  38. self.x += dx
  39. self.y += dy
  40. self.canvas_wrapper.element.move(self.element_id, dx, dy)
  41. def set_rotation(self, a):
  42. raise Exception("Not implemented yet")
  43. def rotate(self, a):
  44. raise Exception("Not implemented yet")
  45. def set_color(self, color):
  46. self.canvas_wrapper.element.itemconfig(self.element_id, fill=color)