You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UIController.py 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import UIModellVisuell as modelVisuell
  2. import UIModellTaktil as modelsTaktil
  3. import UIViewTKinter as viewTkinter
  4. from shutil import copyfile
  5. class Controller():
  6. def __init__(self):
  7. self.view = viewTkinter.View(self)
  8. self.modi = "visuellesBCI"
  9. self.pathOVFile = "Projekte/OpenViBE_visual_BCI-master/openvibe_visual_bci/signals/p300-xdawn-train2.ov"
  10. self.infotext = ""
  11. self.commands = {
  12. "copySpelling": self.commandoCopySpelling,
  13. "stop": self.commandStop,
  14. "freeSpelling": self.commandFreeSpelling,
  15. "test": self.test,
  16. "wechsel": self.wechsel,
  17. "speicherort": self.setDataset
  18. }
  19. self.nexts = {
  20. "filterXdawn" : self.filterXdawn,
  21. "filterClassic": self.filterClassic,
  22. "save": self.speichern
  23. }
  24. self.pagesTaktil = {
  25. "stop": "StartPage",
  26. "copySpelling": "WorkingPageTaktil",
  27. "freeSpelling": "WorkingPageTaktil",
  28. "test": "WorkingPageTaktil"
  29. }
  30. self.pagesVisuell = {
  31. "stop": "StartPage",
  32. "copySpelling": "WorkingPageVisuell",
  33. "freeSpelling": "WorkingPageVisuell",
  34. "test": "WorkingPageVisuell"
  35. }
  36. self.model = None
  37. self.view.mainloop()
  38. def actionPerformed(self, action):
  39. self.changePage(action)
  40. func = self.commands.get(action)
  41. if(func is not None):
  42. func()
  43. else:
  44. print("Kommado existiert nicht")
  45. def changePage(self,action):
  46. if(self.modi == "taktilesBCI"):
  47. page = self.pagesTaktil.get(action)
  48. elif(self.modi == "visuellesBCI"):
  49. page = self.pagesVisuell.get(action)
  50. if(page is not None):
  51. self.view.changeFrame(page)
  52. def wechsel(self):
  53. if(self.modi == "taktilesBCI"):
  54. self.view.setChangeBtnText("Wechsel zu taktilen BCI")
  55. self.view.setTitleText("visuelles BCI")
  56. self.modi = "visuellesBCI"
  57. elif(self.modi == "visuellesBCI"):
  58. self.setTitle("taktiles BCI")
  59. self.view.setChangeBtnText("Wechsel zu visuellen BCI")
  60. self.modi = "taktilesBCI"
  61. def speichern(self):
  62. print("saveFile")
  63. copyfile(self.pathOVFile, self.file)
  64. def setDataset(self):
  65. file = self.view.openfiledialog()
  66. copyfile(file, self.pathOVFile)
  67. def test(self):
  68. self.file = self.view.savefiledialog()
  69. if(self.modi == "taktilesBCI"):
  70. self.model = modelsTaktil.Modell(self)
  71. elif(self.modi == "visuellesBCI"):
  72. self.model = modelVisuell.Modell(self)
  73. self.model.setFunktion(self.model.trainXDawn)
  74. self.model.start()
  75. #wird durch Btn gestartet -> startet copyspelling als thread
  76. def commandoCopySpelling(self):
  77. self.file = self.view.savefiledialog()
  78. if(self.modi == "taktilesBCI"):
  79. self.model = modelsTaktil.Modell(self)
  80. elif(self.modi == "visuellesBCI"):
  81. self.model = modelVisuell.Modell(self)
  82. self.model.setFunktion(self.model.startCopySpelling)
  83. self.model.start()
  84. #wird durch Copy-Speller Thread copystelling gestartet -> startete filtern als thread
  85. def filterXdawn(self):
  86. if(self.modi == "taktilesBCI"):
  87. self.model = modelsTaktil.Modell(self)
  88. elif(self.modi == "visuellesBCI"):
  89. self.model = modelVisuell.Modell(self)
  90. self.model.setFunktion(self.model.trainXDawn)
  91. self.model.start()
  92. #wird durch XDawn-Thread copystelling gestartet -> startete filtern als thread
  93. def filterClassic(self):
  94. if(self.modi == "taktilesBCI"):
  95. self.model = modelsTaktil.Modell(self)
  96. elif(self.modi == "visuellesBCI"):
  97. self.model = modelVisuell.Modell(self)
  98. self.model.setFunktion(self.model.trainClassifier)
  99. self.model.start()
  100. def commandFreeSpelling(self):
  101. print("freespelling")
  102. if(self.modi == "taktilesBCI"):
  103. self.model = modelsTaktil.Modell(self)
  104. elif(self.modi == "visuellesBCI"):
  105. self.model = modelVisuell.Modell(self)
  106. self.model.setFunktion(self.model.freeSpelling)
  107. self.model.start()
  108. def commandStop(self):
  109. if(self.model is not None):
  110. self.addInfoText("Action: STOP-Command")
  111. self.model.stop()
  112. self.model.join()
  113. self.model.killProzess()
  114. self.mode = None
  115. def stop(self, next=None):
  116. print("Stop aus Modell")
  117. self.model.stop()
  118. self.model.join()
  119. self.model.killProzess()
  120. self.mode = None
  121. if(next is not None):
  122. func = self.nexts.get(next)
  123. func()
  124. def addInfoText(self,text):
  125. self.infotext = self.infotext + text
  126. self.view.setInfoText(self.infotext)
  127. def resetInfo(self):
  128. self.infotext = ""
  129. def setTitle(self,text):
  130. self.view.setTitleText(text)
  131. def changeScreen(self, pageName):
  132. self.view.changeFrame(pageName=pageName)
  133. def getModi(self):
  134. return self.modi