Anders and Briegel in Python
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

visiblegraphstate.py 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. """
  2. Allows us to visualize the state in a browser
  3. """
  4. import atexit
  5. import threading
  6. import time
  7. from websocket import create_connection
  8. from graphstate import GraphState
  9. import json
  10. class VisibleGraphState(GraphState):
  11. def __init__(self, *args, **kwargs):
  12. GraphState.__init__(self, *args, **kwargs)
  13. self.ws = create_connection("ws://localhost:5001")
  14. self.diff = []
  15. atexit.register(self.shutdown)
  16. self.ws.send(json.dumps({"method":"clear"}))
  17. def shutdown(self):
  18. if len(self.diff)>0:
  19. self.update()
  20. self.ws.close()
  21. def send(self, method, *args, **kwargs):
  22. kwargs.update({"method": method})
  23. self.diff.append(kwargs)
  24. def add_node(self, node, meta = {}):
  25. GraphState.add_node(self, node, meta)
  26. self.send("add_node", node=node, meta=meta)
  27. def add_edge(self, start, end):
  28. GraphState.add_edge(self, start, end)
  29. self.send("add_edge", start=start, end=end)
  30. def del_edge(self, start, end):
  31. GraphState.del_edge(self, start, end)
  32. self.send("del_edge", start=start, end=end)
  33. def act_local_rotation(self, node, operation):
  34. GraphState.act_local_rotation(self, node, operation)
  35. self.send("update_vop", node = node, vop = self.vops[node])
  36. def update(self):
  37. #data = json.dumps({"diff": self.diff, "state":self.to_json()})
  38. data = json.dumps({"diff": self.diff})
  39. self.ws.send(data)
  40. self.diff = []