fix.py 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. import math
  2. import random
  3. import time
  4. import os
  5. import sys
  6. START = time.time()
  7. _START = time.time()
  8. from optparse import OptionParser
  9. ...
  10. parser = OptionParser()
  11. parser.add_option("-m", "--mode", dest="mode",
  12. help="pixel mode") #, metavar="FILE")
  13. parser.add_option("-X", "--XX", dest="XX", #default=1,
  14. help="x-split") #, metavar="FILE")
  15. parser.add_option("-x", "--xx", dest="xsplit", #default=1,
  16. help="x-split") #, metavar="FILE")
  17. parser.add_option("-y", "--yy", dest="ysplit",#default=1,
  18. help="y-split") #, metavar="FILE")
  19. parser.add_option("-s", "--start-univ", dest="start_univ",#default=1,
  20. help="set start-univers default=2") #, metavar="FILE")
  21. parser.add_option("-g", "--gobo-ch", dest="gobo_ch",#default=1,
  22. help="gobo ch univ on 1") #, metavar="FILE")
  23. #parser.add_option("-f", "--file", dest="filename",
  24. # help="write report to FILE", metavar="FILE")
  25. #parser.add_option("-q", "--quiet",
  26. # action="store_false", dest="verbose", default=True,
  27. # help="don't print status messages to stdout")
  28. (options, args) = parser.parse_args()
  29. # ===== GUI =========
  30. import pygame
  31. import pygame.gfxdraw
  32. import pygame.font
  33. os.environ['SDL_VIDEO_WINDOW_POS'] = '%i,%i' % (200,164)
  34. os.environ['SDL_VIDEO_CENTERED'] = '0'
  35. pg = pygame
  36. pygame.init()
  37. pygame.mixer.quit()
  38. f = pygame.font.get_fonts()
  39. for i in f:
  40. if "mono" in i.lower():
  41. print(i)
  42. font0 = pygame.font.SysFont("FreeSans",10)
  43. font = pygame.font.SysFont("freemonobold",22)
  44. font10 = pygame.font.SysFont("freemonobold",10)
  45. font12 = pygame.font.SysFont("freemonobold",12)
  46. font15 = pygame.font.SysFont("freemonobold",15)
  47. #font = pygame.font.SysFont(None,30)
  48. fr = font.render("hallo" ,1, (200,0,255))
  49. class Layout():
  50. def __init__(self,master):
  51. self.master = master
  52. def pack(self,**args):
  53. pass
  54. def grid(self,**args):
  55. pass
  56. def bind(self,**args):
  57. pass
  58. class Button():
  59. def __init__(self,window,pos):
  60. self.window = window
  61. self.event_pos = [0,0]
  62. self.w = 20
  63. self.h = 10
  64. self.pos = pos
  65. self.on = 0
  66. self.bd = [0,255,0]
  67. self.rgb = (0xaa,0xaa,0xaa,127)
  68. self.__layout = Layout(self)
  69. self.pack = self.__layout.pack
  70. self.grid = self.__layout.grid
  71. self.bind = self.__layout.bind
  72. self.text = "GOBO1\ndot"
  73. self.motion = 0
  74. def draw(self,text="GOBO1"):
  75. #pos = [160,100,70,60]
  76. #rgb = (0xdd,0xdd,0xdd,0)
  77. #rgb = (0xaa,0xaa,0xaa,0)
  78. pos = self.pos
  79. rgb = self.rgb
  80. window.set_alpha(128)
  81. if self.on:
  82. rgb = [255,255,0]
  83. pygame.draw.rect(self.window,rgb,pos)
  84. r = pos[1]+6
  85. for i in self.text.split("\n"):
  86. fr = font0.render(i ,1, (0,0,0))
  87. #fr = font.render("You win!", True, BLACK)
  88. #text_rect = fr.get_rect(center=(SCREEN_WIDTH/2, SCREEN_HEIGHT/2))
  89. self.window.blit(fr,(pos[0]+4,r))
  90. r += 10
  91. self._check_event()
  92. self._draw_bd(color=(0xaa,0xaa,0xaa))
  93. self._draw_bd(delta=-1)
  94. self._draw_bd(delta=-2,highlight=1,color=self.bd)
  95. def _check_event(self):
  96. self.bd = [0,255,0]
  97. self.motion = 0
  98. if self.event_pos[0] < self.pos[0]+1:
  99. return #continue
  100. if self.event_pos[0] > self.pos[0]+self.pos[2]-1:
  101. return #continue
  102. if self.event_pos[1] < self.pos[1]+1:
  103. return #continue
  104. if self.event_pos[1] > self.pos[1]+self.pos[3]-1:
  105. return #continue
  106. #print(">>",self.event_pos)
  107. self.bd = [255,0,0]
  108. self.motion = 1
  109. def _draw_bd(self,delta=0,highlight=0,color=[0,0,0]):
  110. pos = self.pos
  111. d = delta
  112. xpos = (
  113. (pos[0]-d ,pos[1]-d),
  114. (pos[0]+pos[2]+d-1 ,pos[1]-d),
  115. (pos[0]+pos[2]+d-1 ,pos[1]+pos[3]+d-1),
  116. (pos[0]-d ,pos[1]+pos[3]+d-1)
  117. )
  118. i_old = None
  119. ypos = []
  120. for i in xpos:
  121. if i_old:
  122. ypos.append( (i_old,i) )
  123. i_old = i
  124. ypos.append( (i_old,xpos[0]) )
  125. for i in ypos:
  126. #print("ypos",i)
  127. pygame.draw.aaline(window,color,i[0],i[1],1)
  128. def event(self,event=None):
  129. #print(self.pos)
  130. if "pos" in event.dict:
  131. self.event_pos = event.pos
  132. self._check_event()
  133. if self.motion:
  134. #print(self,"Motion.event",event)
  135. if "button" in event.dict:
  136. print("-",self,"Button.event",event.dict)
  137. print(type(event))
  138. if event.type == 5:
  139. if event.button == 1:
  140. if self.on:
  141. self.on = 0
  142. else:
  143. self.on = 1
  144. main_size=(600,500)
  145. window = pygame.display.set_mode(main_size,pg.RESIZABLE,32)#,32)#,pygame.FULLSCREEN) #x left->right ,y top-> bottom
  146. pg.display.set_caption('NEXTGEN GUI')
  147. class Gevent():
  148. def __init__(self):
  149. self.drag = 0
  150. self.pos1 = [0,0]
  151. self.pos2 = [0,0]
  152. self.event_pos = [0,0]
  153. self.gain = 0
  154. def check_in(self,elem):
  155. print(self.event_pos)
  156. print(self.pos1)
  157. print(self.pos2)
  158. print(elem.pos)
  159. def draw(self,delta=0,highlight=0,color=[0,255,0]):
  160. if self.pos1 == [0,0]:
  161. return
  162. if self.pos2 == [0,0]:
  163. return
  164. #if not self.drag:
  165. # return
  166. pos1 = [self.pos1[0],self.pos1[1]]
  167. pos2 = [self.pos2[0],self.pos2[1]]
  168. #pygame.draw.aaline(window,color,pos1,pos2,1)
  169. color = [200,0,0,127]
  170. fr = font15.render("A" ,1, (200,200,200))
  171. window.blit(fr,self.pos1)
  172. fr = font15.render("B" ,1, (200,200,200))
  173. window.blit(fr,[self.pos2[0]-10,self.pos2[1]-10])
  174. # h unten
  175. pos1 = [self.pos1[0],self.pos2[1]]
  176. pos2 = [self.pos2[0],self.pos2[1]]
  177. pygame.draw.aaline(window,color,pos1,pos2,1)
  178. color = [255,255,0,127]
  179. # h rechts
  180. pos1 = [self.pos2[0],self.pos1[1]]
  181. pos2 = [self.pos2[0],self.pos2[1]]
  182. pygame.draw.aaline(window,color,pos1,pos2,1)
  183. color = [0,200,0,127]
  184. # h links
  185. pos1 = [self.pos1[0],self.pos1[1]]
  186. pos2 = [self.pos1[0],self.pos2[1]]
  187. pygame.draw.aaline(window,color,pos1,pos2,1)
  188. color = [0,0,200,127]
  189. # h oben
  190. pos1 = [self.pos1[0],self.pos1[1]]
  191. pos2 = [self.pos2[0],self.pos1[1]]
  192. pygame.draw.aaline(window,color,pos1,pos2,1)
  193. def event(self,event):
  194. print("GLOBAL",self,self.event_pos,event,event.type)
  195. if event.type == pygame.QUIT:
  196. pygame.quit()
  197. sys.exit(0)
  198. elif event.type == pygame.VIDEORESIZE:
  199. scrsize = event.size
  200. width = event.w
  201. hight = event.h
  202. screen = pygame.display.set_mode(scrsize,pg.RESIZABLE)
  203. changed = True
  204. if "pos" in event.dict:
  205. self.event_pos = event.pos
  206. #self._check_event()
  207. if "button" in event.dict:
  208. if event.button == 1 and event.type == 5: # and self.drag:
  209. self.pos1 = self.event_pos
  210. self.drag = 0
  211. if "buttons" in event.dict:
  212. if event.buttons[0] == 1:
  213. self.pos2 = self.event_pos
  214. self.drag = 1
  215. else:
  216. self.drag = 0
  217. if "gain" in event.dict:
  218. self.gain = event.gain
  219. global_event = Gevent()
  220. def main():
  221. START = time.time()
  222. running = 1
  223. frame = 0
  224. fps = 0
  225. b0 = Button(window,pos=[80,80,50,40])
  226. b1 = Button(window,pos=[100,100,60,40])
  227. b2 = Button(window,pos=[200,200,60,40])
  228. b2a = Button(window,pos=[260,200,60,40])
  229. b3 = Button(window,pos=[1500,800,60,40])
  230. table = []
  231. r = 0
  232. for i in range(20):
  233. bx = Button(window,pos=[20,200+r,60,20])
  234. bx.text = "FIX:{}".format(i+1)
  235. table.append(bx)
  236. r+=20
  237. while running:
  238. pygame.display.flip()
  239. #event()
  240. pos = [160,10,70,60]
  241. rgb = (0xdd,0xdd,0xdd,0)
  242. rgb = (0xaa,0xaa,0xaa,0)
  243. window.fill((0,0,0))
  244. fr = font15.render("{}".format(pos[1]) ,1, (200,200,200))
  245. window.blit(fr,(10,pos[1] ))
  246. fr = font15.render("{}".format(fps) ,1, (200,200,200))
  247. window.blit(fr,(30,pos[1] ))
  248. fr = font15.render("{}".format(frame) ,1, (200,200,200))
  249. window.blit(fr,(60,pos[1] ))
  250. fr = font15.render("{:03}".format(int((START+1-time.time())*100)) ,1, (200,200,200))
  251. window.blit(fr,(80,pos[1] ))
  252. #print(window,rgb,pos)
  253. #pygame.draw.rect(window,rgb,pos)
  254. #pygame.draw.rect(window,(255,0,0),(15,15,20,10))
  255. for event in pygame.event.get():
  256. global_event.event(event)
  257. b0.event(event)
  258. b1.event(event)
  259. b2.event(event)
  260. b2a.event(event)
  261. b3.event(event)
  262. for t in table:
  263. t.event(event)
  264. c = (200,200,200)
  265. if global_event.gain:
  266. c = (0,255,0)
  267. fr = font15.render("{:03}/{:03}".format(global_event.event_pos[0],global_event.event_pos[1]) ,1, c)
  268. window.blit(fr,(120,pos[1] ))
  269. b0.draw()
  270. b1.draw()
  271. b2.draw()
  272. b2a.draw()
  273. b3.draw()
  274. #for t in table:
  275. # global_event.check_in(t)
  276. for t in table:
  277. t.draw()
  278. global_event.check_in(t)
  279. global_event.draw()
  280. pygame.display.flip()
  281. pg.time.wait(30)
  282. pg.time.wait(30)
  283. #pg.time.wait(30)
  284. frame += 1
  285. if START+1 < time.time():
  286. fps = frame
  287. frame = 0
  288. START = time.time()
  289. if __name__ == "__main__":
  290. main()