From 543e69c6236a1f6cd03a0a6824b8b88a79d03975 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Tue, 17 Feb 2009 05:04:59 +0000 Subject: Minor record related fixes Use timestamp based title for new record instead of staring filechooser. Push play button after record button was clicked --- diff --git a/TamTamEdit.activity/Edit/EditToolbars.py b/TamTamEdit.activity/Edit/EditToolbars.py index 9d4552e..e966c5d 100644 --- a/TamTamEdit.activity/Edit/EditToolbars.py +++ b/TamTamEdit.activity/Edit/EditToolbars.py @@ -76,7 +76,7 @@ class mainToolbar(gtk.Toolbar): if Config.FEATURES_OGG: #RecordOgg button self.recordOggButton = ToggleToolButton('recordO') - self.recordOggButton.connect('clicked', self.edit.handleAudioRecord) + self.recordOggButton.connect('clicked', self.handleRecord) self.insert(self.recordOggButton, -1) self.recordOggButton.show() self.recordOggButton.set_tooltip(_('Record to ogg')) @@ -126,6 +126,17 @@ class mainToolbar(gtk.Toolbar): self.insert(self.volumeTempoButton, -1) self.volumeTempoButton.show() + def handleRecord(self, widget, data = None): + if widget.get_active(): + self.playButton.set_active(False) + self.edit.handleAudioRecord(widget, data) + if widget.get_active(): + gobject.timeout_add( 500, self._startAudioRecord ) + + def _startAudioRecord( self ): + self.playButton.set_active(True) + return False + def handlePlayPause(self, widget, data = None): if widget.get_active(): self.edit.handlePlay(widget) @@ -143,8 +154,8 @@ class mainToolbar(gtk.Toolbar): self.edit._generateToolbar.playButton.set_icon_widget(self.edit._generateToolbar.playButtonImg) def handleStop(self, widget, data = None): - self.edit.handleStop(widget, True) self.playButton.set_active(False) + self.edit.handleStop(widget, True) if self.recordButton.get_active(): self.recordButton.set_active(False) diff --git a/TamTamEdit.activity/Edit/MainWindow.py b/TamTamEdit.activity/Edit/MainWindow.py index e613351..01e6670 100644 --- a/TamTamEdit.activity/Edit/MainWindow.py +++ b/TamTamEdit.activity/Edit/MainWindow.py @@ -396,7 +396,7 @@ class MainWindow( gtk.EventBox ): self.setContext( CONTEXT.PAGE ) - self.audioRecordState = False + self.audioRecordWidget = None def createNewTune( self, widget, data=None ): self.createNewTune3() @@ -592,47 +592,16 @@ class MainWindow( gtk.EventBox ): def handleAudioRecord( self, widget, data=None ): if widget.get_active() == True: - chooser = gtk.FileChooserDialog( - title='Save tune as Audio file', - action=gtk.FILE_CHOOSER_ACTION_SAVE, - buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK)) - filter = gtk.FileFilter() - filter.add_pattern('*.ogg') - chooser.set_filter(filter) - chooser.set_current_folder(Config.INSTANCE_DIR) - - for f in chooser.list_shortcut_folder_uris(): - chooser.remove_shortcut_folder_uri(f) - - if chooser.run() == gtk.RESPONSE_OK: - if self.playing: - self.handleStop() - else: - self.handleRewind() - - self.audioRecordState = True - head, tail = os.path.split(chooser.get_filename()) - tailfilt = '_'.join(tail.split()) - self.audioFileName = os.path.join(head, tailfilt) - if self.audioFileName[-4:] != '.ogg': - self.audioFileName += '.ogg' - - self.audioRecordTimeout = gobject.timeout_add( 500, self._startAudioRecord ) - self.audioRecordTick = -1 - chooser.destroy() + self.audioRecordWidget = widget + self.audioRecordTick = -1 else: - self.audioRecordState = False - - def _startAudioRecord( self ): - if not self.playing: - self.handlePlay() - return False + self.audioRecordWidget = None def handlePlay( self, widget = None ): if widget: widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event - if self.audioRecordState: + if self.audioRecordWidget: filename = Config.TMP_DIR + "/perf.wav" self.csnd.inputMessage( Config.CSOUND_RECORD_PERF % filename) time.sleep( 0.01 ) @@ -695,7 +664,7 @@ class MainWindow( gtk.EventBox ): if widget: widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event - if self.audioRecordState: + if self.audioRecordWidget: filename = Config.TMP_DIR + "/perf.wav" self.csnd.inputMessage( Config.CSOUND_STOP_RECORD_PERF % filename) time.sleep( 0.01 ) @@ -707,24 +676,31 @@ class MainWindow( gtk.EventBox ): self.csnd.loopPause() self.csnd.loopDeactivate() - if self.audioRecordState: + if self.audioRecordWidget: time.sleep(4) self.csnd.__del__() time.sleep(0.5) - self.audioRecordState = False - command = "gst-launch-0.10 filesrc location=" + Config.TMP_DIR + "/perf.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=" + self.audioFileName + tmp_ogg = os.path.join(Config.TMP_DIR, "perf.ogg") + + command = "gst-launch-0.10 filesrc location=" + Config.TMP_DIR + "/perf.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=" + tmp_ogg command2 = "rm " + Config.TMP_DIR + "/perf.wav" OS.system(command) OS.system(command2) + from datetime import datetime + title = '%s %s.ogg' % (self.activity.get_title(), + datetime.now().isoformat(' ')) + jobject = datastore.create() - jobject.metadata['title'] = os.path.split(self.audioFileName)[1] + jobject.metadata['title'] = title jobject.metadata['keep'] = '1' jobject.metadata['mime_type'] = 'audio/ogg' - jobject.file_path = self.audioFileName + jobject.file_path = tmp_ogg datastore.write(jobject) - os.remove(self.audioFileName) + os.remove(tmp_ogg) + self.audioRecordWidget.set_active(False) + self.audioRecordWidget = None self.csnd.__init__() time.sleep(0.1) @@ -776,7 +752,7 @@ class MainWindow( gtk.EventBox ): else: self.trackInterface.predrawPage() - if self.audioRecordState: + if self.audioRecordWidget: if self.audioRecordTick > curTick: # we've looped around self.handleStop() else: -- cgit v0.9.1