$URL$
"""
+import pygame
+from pygame.locals import K_RETURN
from pgu.gui import FileDialog
import pgu.gui.basic as basic
import pgu.gui.input as input
from minwii.musicxml import musicXml2Song
INDEX_TXT = 'index.txt'
+PICTURE_ITEM_SIZE = 64
class FileOpenDialog(FileDialog):
else: self.curdir = path
self.dir_img = basic.Image(
pguglobals.app.theme.get(cls1+'.folder', '', 'image'))
+ self.soundfile_img = basic.Image(
+ pguglobals.app.theme.get(cls1+'.soundfile', '', 'image'))
td_style = {'padding_left': 4,
'padding_right': 4,
'padding_top': 2,
self.body.tr()
self.body.td(self.list, colspan=4, style=td_style)
self.list.connect(CHANGE, self._item_select_changed_, None)
+ #self.list.connect(CLICK, self._check_dbl_click_, None)
+ self._last_time_click = pygame.time.get_ticks()
self.button_ok.connect(CLICK, self._button_okay_clicked_, None)
self.body.tr()
self.body.td(basic.Label("Fichier"), style=td_style, align=-1)
self.value = None
Dialog.__init__(self, self.title, self.body)
-# FileDialog.__init__(self,
-# title_txt="Ouvrir une chanson",
-# button_txt="Ouvrir",
-# path=path,
-# )
-# self.list.style.width = 700
-# self.list.style.height = 250
-
+
def _list_dir_(self):
self.input_dir.value = self.curdir
self.input_dir.pos = len(self.curdir)
continue
filepath = os.path.join(self.curdir, i)
xmlFiles.append(filepath)
- # self.list.add(FileOpenDialog.getSongTitle(filepath), value=i)
if xmlFiles :
printableLines = self.getPrintableLines(xmlFiles)
for l in printableLines :
- self.list.add(l[0], value = l[1])
+ imgpath = os.path.splitext(os.path.join(self.curdir, l[1]))[0] + '.jpg'
+ if os.path.exists(imgpath) :
+ img = pygame.image.load(imgpath)
+ iw, ih = img.get_width(), img.get_height()
+ style = {}
+ if iw > ih :
+ style['width'] = PICTURE_ITEM_SIZE
+ style['height'] = PICTURE_ITEM_SIZE * float(ih) / iw
+ else :
+ style['heigth'] = PICTURE_ITEM_SIZE
+ style['width'] = PICTURE_ITEM_SIZE * float(iw) / ih
+
+ img = basic.Image(img, style=style)
+ else :
+ img = self.soundfile_img
+ self.list.add(l[0], value = l[1], image = img)
self.list.set_vertical_scroll(0)
self._current_sort = arg
self.list.clear()
self._list_dir_()
+
+ def _check_dbl_click_(self, arg) :
+ if pygame.time.get_ticks() - self._last_time_click < 300 :
+ self._button_okay_clicked_(None)
+ else :
+ self._last_time_click = pygame.time.get_ticks()
+
+ def event(self, e) :
+ FileDialog.event(self, e)
+
+ if e.type == CLICK and \
+ e.button == 1 and \
+ self.list.rect.collidepoint(e.pos) :
+ self._check_dbl_click_(e)
+
+ if e.type == KEYDOWN and e.key == K_RETURN :
+ self._button_okay_clicked_(None)
+
# utils
from unicodedata import decomposition
fullDeco = u''.join(filter(lambda c : isPrintable(c), fullDeco))
return fullDeco
-def desacc(s) :
- us = s.decode('utf-8', 'ignore')
+def desacc(s, encoding='iso-8859-1') :
+ us = s.decode(encoding, 'ignore')
ret = []
for uc in us :
ret.append(_recurseDecomposition(uc))