We Recommend

Learning Python Learning Python
The authors of Learning Python show you enough essentials of the Python scripting language to enable you to begin solving problems right away, then reveal more powerful aspects of the language one at a time. This approach is sure to appeal to programmers and system administrators who have urgent problems and a preference for learning by semi-guided experimentation.


Posted By

whitetiger on 11/09/06


Tagged

python random game text preview circle thumbnail PIL gallery series60 pys60 canvas sparkline draw animation square camera


Versions (?)


Who likes this?

2 people have marked this snippet as a favorite

anayhk
taboularasa


PyS60 - Gallery Thumbnail Ver. 2


Published in: Python 


  1. import appuifw
  2. import e32
  3. import graphics
  4. import key_codes
  5. import os
  6.  
  7. class FlickrS60Error(Exception): pass
  8.  
  9. class FlickrS60Thumb:
  10.  
  11. def __init__(self, path):
  12.  
  13. self.path = unicode(path)
  14. self.listFile = []
  15. self.ldivx = 0
  16. self.ldivy = 0
  17. self.lock = e32.Ao_lock()
  18. self.canvas = None
  19. self.img = graphics.Image.new((176, 144))
  20. self.img_tmp = graphics.Image.new((42, 36))
  21. self.x, self.y = 0, 0
  22. self.p = 0
  23. self.pages = 0
  24. self.currpages = 0
  25. self.mpath = 0
  26.  
  27. def OnRun(self):
  28.  
  29. appuifw.app.exit_key_handler = self.lock.signal
  30.  
  31. self._createList()
  32.  
  33. self.canvas = appuifw.Canvas(redraw_callback=self.OnUpdate)
  34. appuifw.app.body = self.canvas
  35.  
  36. self.canvas.bind(key_codes.EKeyRightArrow, lambda: self.move(1, 0))
  37. self.canvas.bind(key_codes.EKeyLeftArrow, lambda: self.move(-1, 0))
  38. self.canvas.bind(key_codes.EKeyUpArrow, lambda: self.move(0, -1))
  39. self.canvas.bind(key_codes.EKeyDownArrow, lambda: self.move(0, 1))
  40. self.canvas.bind(key_codes.EKeySelect, self.IMG)
  41.  
  42. self._drawIMG()
  43.  
  44. self.lock.wait()
  45.  
  46. def OnUpdate(self, rect):
  47.  
  48. self.canvas.blit(self.img)
  49. self.canvas.rectangle([(self.p+(42*self.x), 36*self.y), (self.p+(42*self.x)+42, (36*self.y)+36)], width=2, outline=0x123456)
  50.  
  51. def move(self, x, y):
  52.  
  53. self.x = (self.x+x)%4
  54. self.y = (self.y+y)
  55.  
  56. if x == 1: self.p = (self.p+2)%8
  57. if x == -1: self.p = (self.p-2)%8
  58.  
  59. if self.y == 4:
  60. if self.currpages < self.pages-1:
  61. self.y = 0
  62. self.currpages += 1
  63. self._drawIMG(start=self.currpages)
  64. else:
  65. self.y = 3
  66.  
  67. if self.y == -1:
  68. if self.currpages > 0:
  69. self.y = 3
  70. self.currpages -= 1
  71. self._drawIMG(start=self.currpages)
  72. else:
  73. self.y = 0
  74.  
  75. self.mpath = (4*self.y + self.x)+(16*self.currpages)
  76.  
  77. self.OnUpdate(None)
  78.  
  79. def IMG(self):
  80.  
  81. try:
  82. m = self.listFile[self.mpath].replace('_PalbTN\\', '')
  83. appuifw.Content_handler().open(m)
  84. except:
  85. pass
  86.  
  87. def _drawIMG(self, start=0):
  88.  
  89. self.img.clear(0xffffff)
  90. z = 0
  91.  
  92. for id in range(start*16, (start+1)*16):
  93. j, i = divmod(id-(start*16), 4)
  94. try:
  95. self.img_tmp.load(self.listFile[id])
  96. self.img.blit(self.img_tmp, target=(z+(42*i)+(z+1), 36*j))
  97. z = (z+1)%4
  98. except:
  99. break
  100.  
  101. self.OnUpdate(None)
  102.  
  103. def _createList(self):
  104.  
  105. try:
  106. for id in os.listdir(self.path):
  107. self.listFile.append(self.path + id)
  108.  
  109. self.ldivx, self.ldivy = divmod(len(self.listFile), 16)
  110.  
  111. self.pages = self.ldivx
  112. if self.ldivy <> 0: self.pages += 1
  113. except:
  114. raise FlickrS60Error('Errore nella creazione della lista.')
  115.  
  116. if __name__ == '__main__':
  117.  
  118. FlickrS60Thumb('E:\\Images\\_PalbTN\\').OnRun()

Report this snippet 

You need to login to post a comment.