import pgu.gui.area as area
from pgu.gui.const import *
from pgu.gui.dialog import Dialog
+from pgu.gui.app import Desktop
+import types
import os
import tempfile
INDEX_TXT = 'index.txt'
PICTURE_ITEM_SIZE = 64
+def appEventFactory(app, dlg) :
+ # monkey patch de la méthode gestionnaire d'événements :
+ # l'ensemble du Desktop écoute les événements de la roulette de la souris
+ # et les redirige sur la liste déroulante.
+ def _appEvent(self, e) :
+
+ if dlg.list.vscrollbar:
+ if not hasattr(dlg.list.vscrollbar,'value'):
+ return False
+
+ if e.type == pygame.locals.MOUSEBUTTONDOWN:
+ if e.button == 4: #wheel up
+ dlg.list.vscrollbar._click(-1)
+ return True
+ elif e.button == 5: #wheel down
+ dlg.list.vscrollbar._click(1)
+ return True
+ return Desktop.event(self, e)
+
+ return types.MethodType(_appEvent, app)
+
class FileOpenDialog(FileDialog):
'padding_right': 4,
'padding_top': 2,
'padding_bottom': 2}
- self.title = basic.Label("Ouvrir un chanson", cls="dialog.title.label")
+ self.title = basic.Label("Ouvrir une chanson", cls="dialog.title.label")
self.body = table.Table()
- self.list = area.List(width=700, height=250)
+ self.list = area.List(width=880, height=375)
self.input_dir = input.Input()
self.input_file = input.Input()
self._current_sort = 'alpha'
self.value = None
Dialog.__init__(self, self.title, self.body)
+ # monkey patch
+ app = pguglobals.app
+ self.__regularEventMethod = app.event
+ app.event = appEventFactory(app, self)
+
+ def close(self, w=None) :
+ FileDialog.close(self, w)
+ # retrait du monkey patch
+ app = pguglobals.app
+ app.event = self.__regularEventMethod
+
def _list_dir_(self):
self.input_dir.value = self.curdir
style = {}
if iw > ih :
style['width'] = PICTURE_ITEM_SIZE
- style['height'] = PICTURE_ITEM_SIZE * float(ih) / iw
+ style['height'] = int(round(PICTURE_ITEM_SIZE * float(ih) / iw))
else :
style['heigth'] = PICTURE_ITEM_SIZE
- style['width'] = PICTURE_ITEM_SIZE * float(iw) / ih
+ style['width'] = int(round(PICTURE_ITEM_SIZE * float(iw) / ih))
img = basic.Image(img, style=style)
else :