home.connect(QUIT, app.quit)
app.run(home)
app.close(home)
+ returnValue = home.returnValue
+ if not returnValue :
+ break
selector = InstrumentSelector()
selector.run()
selector.stop()
pygame.event.clear()
EventDispatcher.reset()
+ instrumentDescription = selector.selectedInstrument
song = musicXml2Song(home.songFile, printNotes=True)
- synth.program_select(0, 0, 0)
+ bank, preset = instrumentDescription['bank'], instrumentDescription['preset']
+ synth.program_select(0, bank, preset)
playingScreen = SongPlayingScreen(synth, song)
playingScreen.run()
pygame.event.clear()
def _initLocalListeners(self) :
self.browseButton.connect(CLICK, self.open_file_browser)
- self.quitButton.connect(CLICK, self._exitHome)
+ self.quitButton.connect(CLICK, self._exitApp)
+ self.playButton.connect(CLICK, self._exitHome)
+
+ def _exitApp(self, data=None) :
+ self.returnValue = False
+ self.send(QUIT)
def _exitHome(self, data=None) :
+ self.returnValue = True
self.send(QUIT)
def createLabel(self,text,font = None):
from eventutils import event_handler, EventDispatcher, EventHandlerMixin
from cursors import WarpingCursor
from config import FRAMERATE
+from config import INSTRUMENTS
from globals import BACKGROUND_LAYER
from globals import FOREGROUND_LAYER
from globals import CURSOR_LAYER
rows = 3
cols = 3
- instruments = ['accordeon', 'celesta', 'flute', 'guitare', 'orgue', 'piano', 'tuba', 'violon', 'violoncelle']
+ instruments = INSTRUMENTS
def __init__(self) :
super(InstrumentSelector, self).__init__()
tileHeight = int(round(float(screen.get_height()) / self.rows))
self.tiles = []
- instrus = self.instruments[:]
+ instrus = list(self.instruments[:])
for y in range(self.cols) :
for x in range(self.rows) :
upperLeftCorner = (x * tileWidth, y * tileHeight)
rect = pygame.Rect(upperLeftCorner, (tileWidth, tileHeight))
+ # !!! s'il y avait plus de 3x3 tuiles !!!, il faudrait alors
+ # changer le tuple (x,y) qui concerne le point d'application de l'homotétie.
+ # Cf. InstrumentTile.inflate
tile = InstrumentTile(instrus.pop(0), self, rect, (x,y))
self.add(tile, layer=BACKGROUND_LAYER)
self.tiles.append(tile)
self.stop()
@event_handler(pygame.MOUSEMOTION)
- #@event_handler(pygame.MOUSEBUTTONDOWN)
def onMouseMove(self, event) :
for tile in reversed(self.sprites()[:-1]) :
if tile.rect.collidepoint(*event.pos) :
def selectInstrument(self, event) :
for tile in reversed(self.sprites()[:-1]) :
if tile.rect.collidepoint(*event.pos) :
- self.selectedInstrument = tile
+ self.selectedInstrument = tile.instrumentDescription
self.stop()
break
BORDER = 10
INFLATE_ZOOM = 0.4
- def __init__(self, name, group, rect, coords) :
+ def __init__(self, instrumentDescription, group, rect, coords) :
pygame.sprite.DirtySprite.__init__(self, group)
self.inflated = False
- self.name = name
+ self.instrumentDescription = instrumentDescription
self.rect = rect
self._baseRect = rect.copy()
self.coords = coords
- imagePath = InstrumentTile._get_instrument_image(name)
+ imagePath = InstrumentTile._get_instrument_image(instrumentDescription['name'])
self._img = pygame.image.load(imagePath)
self.update()