raspberry pi zero based drum machine
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.

sFile.py 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import FSM
  2. import utils as u
  3. import menus as m
  4. #====================================
  5. State = type("State", (object,), {})
  6. #====================================
  7. class State(object):
  8. def __init__(self, FSM):
  9. self.FSM = FSM
  10. def Enter(self):
  11. pass
  12. def Execute(self):
  13. pass
  14. def Exit(self):
  15. pass
  16. #====================================
  17. class File(State):
  18. def __init__(self,FSM):
  19. super(File, self).__init__(FSM)
  20. def Enter(self):
  21. self.FSM.stateLife = 1
  22. o = self.FSM.owner
  23. o.header_text = "File"
  24. o.pub.register("beat", self)
  25. self.cur_el = 0
  26. if o.keyState[16] > 0 or o.keyState[17] > 0:
  27. pass
  28. else:
  29. u.draw_header(o)
  30. self.draw_footer(o)
  31. self.draw_main(o)
  32. o.update_display(0)
  33. self.menu = ["Save", "Save As", "Open", "New"]
  34. super(File, self).Enter()
  35. def Execute(self):
  36. o = self.FSM.owner
  37. m.menu1_actions(self, o)
  38. if o.keyState[16] == 1:
  39. m.draw_menu1(o)
  40. #self.draw_footer(o)
  41. o.update_display(0)
  42. elif o.keyState[16] == 4:
  43. u.draw_header(o)
  44. self.draw_footer(o)
  45. self.draw_main(o)
  46. o.update_display(0)
  47. if o.keyState[0] == 1 or o.keyState[0] == 3 or o.keyState[1] == 1 or o.keyState[1] == 3 or o.keyState[2] == 1 or o.keyState[2] == 3 or o.keyState[3] == 1 or o.keyState[3] == 3:
  48. u.draw_header(o)
  49. self.draw_footer(o)
  50. self.draw_main(o)
  51. o.update_display(0)
  52. print('draw butt')
  53. if o.keyState[16] > 0 or o.keyState[17] > 0:
  54. pass
  55. else:
  56. if o.keyState[0] == 1:
  57. if self.cur_el > 0:
  58. self.cur_el -= 1
  59. print('cur el down is ', self.cur_el)
  60. if o.keyState[1] == 1:
  61. if self.cur_el < (len(self.menu) - 1):
  62. self.cur_el += 1
  63. print('cur el up is ', self.cur_el)
  64. if o.keyState[3] == 1:
  65. m.file_command(self, o, self.menu[self.cur_el])
  66. pass
  67. def draw_footer(self, o):
  68. _iter = 0
  69. width = o.width / 4
  70. xpos = 0
  71. yposa = 135 - 25
  72. yposb = 135
  73. opts = ["Up", "Down", "Esc", "OK"]
  74. while _iter < 4:
  75. o.draw.rectangle((xpos, yposa, xpos + width, yposb), outline=0, fill=o.blue)
  76. if o.keyState[_iter] == 1:
  77. o.draw.rectangle((xpos, yposa, xpos + width, yposb), outline=0, fill=o.light_grey)
  78. o.center_block(opts[_iter], o.h2, [xpos,yposa,xpos + width,yposb], o.blue)
  79. else:
  80. o.center_block(opts[_iter], o.h2, [xpos,yposa,xpos + width,yposb], o.light_grey)
  81. xpos += width
  82. _iter += 1
  83. def draw_main(self, o):
  84. al = []
  85. ypos = 30
  86. if self.cur_el == 0:
  87. _iter = 0
  88. while len(al) < 4:
  89. al.append(self.menu[_iter])
  90. _iter += 1
  91. elif self.cur_el == 1:
  92. al.append(self.menu[self.cur_el - 1])
  93. al.append(self.menu[self.cur_el])
  94. al.append(self.menu[self.cur_el + 1])
  95. al.append(self.menu[self.cur_el + 2])
  96. elif self.cur_el == (len(self.menu) - 2):
  97. al.append(self.menu[self.cur_el - 2])
  98. al.append(self.menu[self.cur_el - 1])
  99. al.append(self.menu[self.cur_el])
  100. al.append(self.menu[self.cur_el + 1])
  101. elif self.cur_el == (len(self.menu) - 1):
  102. al.append(self.menu[self.cur_el - 3])
  103. al.append(self.menu[self.cur_el - 2])
  104. al.append(self.menu[self.cur_el - 1])
  105. al.append(self.menu[self.cur_el])
  106. else:
  107. al.append(self.menu[self.cur_el - 1])
  108. al.append(self.menu[self.cur_el])
  109. al.append(self.menu[self.cur_el + 1])
  110. al.append(self.menu[self.cur_el + 2])
  111. _iter = 0
  112. for i in al:
  113. if i == self.menu[self.cur_el]:
  114. #if _iter == self.cur_el:
  115. o.draw.rectangle((0, ypos, o.width, ypos + 20), outline=0, fill=o.light_grey)
  116. o.center_block(i, o.h2, [0, ypos, o.width,ypos + 20], o.blue)
  117. else:
  118. o.draw.rectangle((0, ypos, o.width, ypos + 20), outline=0, fill=o.blue)
  119. o.center_block(i, o.h2, [0, ypos, o.width,ypos + 20], o.light_grey)
  120. ypos += 20
  121. _iter += 1
  122. def ReceiveMessage(self, message):
  123. o = self.FSM.owner
  124. u.play_seq(o, message)
  125. def Exit(self):
  126. self.FSM.owner.pub.unregister("beat", self)