Example #1
0
    def play(self):
        if not self.parsed:
            command = " ! ".join(self.command)
            debug("launching: '%s'" % command)
            try:
                self.pipeline = gst.parse_launch(command)
                bus = self.pipeline.get_bus()
                assert not self.connected_signals
                self.connected_signals = []
                for name, signal, callback in self.signals:
                    if name:
                        element = self.pipeline.get_by_name(name)
                    else:
                        element = bus
                    sid = element.connect(signal, callback)
                    self.connected_signals.append((element, sid))

                self.parsed = True

            except gobject.GError, e:
                show_error("GStreamer error when creating pipeline", str(e))
                self.error = str(e)
                self.eos = True
                self.done()
                return

            bus.add_signal_watch()
            watch_id = bus.connect("message", self.on_message)
            self.watch_id = watch_id
Example #2
0
 def edit_record(self):
     try:
         record_id = self.records[self.listbox.index(self.listbox.curselection())].id
     except:
         show_error("please choose a record")
         return
     self.controller.show_frame("EditRecordPage", record_id)
Example #3
0
    def play(self):
        if not self.parsed:
            command = ' ! '.join(self.command)
            debug('launching: \'%s\'' % command)
            try:
                self.pipeline = gst.parse_launch(command)
                bus = self.pipeline.get_bus()
                assert not self.connected_signals
                self.connected_signals = []
                for name, signal, callback in self.signals:
                    if name:
                        element = self.pipeline.get_by_name(name)
                    else:
                        element = bus
                    sid = element.connect(signal, callback)
                    self.connected_signals.append((
                        element,
                        sid,
                    ))

                self.parsed = True

            except gobject.GError, e:
                show_error('GStreamer error when creating pipeline', str(e))
                self.error = str(e)
                self.eos = True
                self.done()
                return

            bus.add_signal_watch()
            watch_id = bus.connect('message', self.on_message)
            self.watch_id = watch_id
 def connect(self):
     try:
         self.mydb = mysql.connector.connect(host="localhost",
                                             user="******",
                                             passwd="",
                                             database="android_records")
     except:
         show_error("Connection to Database failed")
     self.mycursor = self.mydb.cursor()
Example #5
0
 def delete_input(self):
     try:
         listbox_index = self.listbox.index(self.listbox.curselection())
     except:
         show_error("please choose an element")
         return
     EditRecordPage.dao.connect()
     EditRecordPage.dao.delete_input(self.inputs[listbox_index].id)
     EditRecordPage.dao.close_connection()
     self.update_frame(self.target_record_id)
Example #6
0
 def delete_record(self):
     msg_box = messagebox.askyesno("", "Are you sure you want to delete the chosen record?")
     print(msg_box)
     if not msg_box :
         return
     RecordPage.dao.connect()
     try:
         RecordPage.dao.delete_record(self.records[self.listbox.index(self.listbox.curselection())].id)
     except:
         show_error("please choose a record")
     RecordPage.dao.close_connection()
     self.update_frame()
Example #7
0
 def install_plugin_cb(self, result):
     if result in (gst.pbutils.INSTALL_PLUGINS_SUCCESS, gst.pbutils.INSTALL_PLUGINS_PARTIAL_SUCCESS):
         gst.update_registry()
         self.restart()
         return
     if result == gst.pbutils.INSTALL_PLUGINS_USER_ABORT:
         self.error = _("Plugin installation aborted.")
         global user_canceled_codec_installation
         user_canceled_codec_installation = True
         self.done()
         return
     self.done()
     show_error("Error", "failed to install plugins: %s" % gobject.markup_escape_text(str(result)))
Example #8
0
 def start_record(self):
     try:
         self.smartphone = self.smartphones[self.listbox.index(self.listbox.curselection())]
     except:
         show_error("please choose a smartphone")
         return
     if self.smartphone.get_status() == "unauthorized":
         show_error("device unauthorized\nplease accept the RSA-key on the smartphone")
         return
     self.start_button.config(state=tk.DISABLED)
     self.stop_button.config(state=tk.NORMAL)
     self.listbox.config(state=tk.DISABLED)
     self.replay_button.config(state=tk.DISABLED)
     self.smartphone.start_record(self)
Example #9
0
 def install_plugin_cb(self, result):
     if result in (gst.pbutils.INSTALL_PLUGINS_SUCCESS,
                   gst.pbutils.INSTALL_PLUGINS_PARTIAL_SUCCESS):
         gst.update_registry()
         self.restart()
         return
     if result == gst.pbutils.INSTALL_PLUGINS_USER_ABORT:
         self.error = _('Plugin installation aborted.')
         global user_canceled_codec_installation
         user_canceled_codec_installation = True
         self.done()
         return
     self.done()
     show_error('Error', 'failed to install plugin!')
Example #10
0
 def install_plugin_cb(self, result):
     if result in (gst.pbutils.INSTALL_PLUGINS_SUCCESS,
                   gst.pbutils.INSTALL_PLUGINS_PARTIAL_SUCCESS):
         gst.update_registry()
         self.restart()
         return
     if result == gst.pbutils.INSTALL_PLUGINS_USER_ABORT:
         self.error = _('Plugin installation aborted.')
         global user_canceled_codec_installation
         user_canceled_codec_installation = True
         self.done()
         return
     self.done()
     show_error('Error', 'failed to install plugin!')
Example #11
0
    def init(self):
        self.encoders = {
            'audio/x-vorbis': self.add_oggvorbis_encoder,
            'audio/x-flac': self.add_flac_encoder,
            'audio/x-wav': self.add_wav_encoder,
            'audio/mpeg': self.add_mp3_encoder,
            'audio/x-m4a': self.add_aac_encoder,
            'audio/ogg; codecs=opus': self.add_opus_encoder,
            'gst-profile': self.add_audio_profile,
        }
        self.add_command('audiorate')
        self.add_command('audioconvert')
        self.add_command('audioresample')

        # audio resampling support
        if self.output_resample:
            self.add_command('audio/x-raw-int,rate=%d' % self.resample_rate)
            self.add_command('audioconvert')
            self.add_command('audioresample')

        if self.force_mono:
            self.add_command('audio/x-raw-int,channels=1')
            self.add_command('audioconvert')

        encoder = self.encoders[self.output_type]()
        if not encoder:
            # TODO: is this used ?
            # TODO: add proper error management when an encoder cannot be created
            show_error(_('Error', "Cannot create a decoder for \'%s\' format.") % 
                        self.output_type)
            return

        self.add_command(encoder)

        uri = gnomevfs.URI(self.output_filename)
        dirname = uri.parent
        if dirname and not gnomevfs.exists(dirname):
            log('Creating folder: \'%s\'' % dirname)
            if not vfs_makedirs(str(dirname)):
                show_error('Error', _("Cannot create \'%s\' folder.") % dirname)
                return

        self.add_command('%s location="%s"' % (
            gstreamer_sink, encode_filename(self.output_filename)))
        if self.overwrite and vfs_exists(self.output_filename):
            log('overwriting \'%s\'' % beautify_uri(self.output_filename))
            vfs_unlink(self.output_filename)
Example #12
0
    def init(self):
        self.encoders = {
            'audio/x-vorbis': self.add_oggvorbis_encoder,
            'audio/x-flac': self.add_flac_encoder,
            'audio/x-wav': self.add_wav_encoder,
            'audio/mpeg': self.add_mp3_encoder,
            'audio/x-m4a': self.add_aac_encoder,
            'audio/ogg; codecs=opus': self.add_opus_encoder,
            'gst-profile': self.add_audio_profile,
        }
        self.add_command('audiorate tolerance=10000000')
        self.add_command('audioconvert')
        self.add_command('audioresample')

        # audio resampling support
        if self.output_resample:
            self.add_command('audio/x-raw-int,rate=%d' % self.resample_rate)
            self.add_command('audioconvert')
            self.add_command('audioresample')

        if self.force_mono:
            self.add_command('audio/x-raw-int,channels=1')
            self.add_command('audioconvert')

        encoder = self.encoders[self.output_type]()
        if not encoder:
            # TODO: is this used ?
            # TODO: add proper error management when an encoder cannot be created
            show_error(
                _('Error', "Cannot create a decoder for \'%s\' format.") %
                self.output_type)
            return

        self.add_command(encoder)

        uri = gnomevfs.URI(self.output_filename)
        dirname = uri.parent
        if dirname and not gnomevfs.exists(dirname):
            log('Creating folder: \'%s\'' % dirname)
            if not vfs_makedirs(str(dirname)):
                show_error('Error',
                           _("Cannot create \'%s\' folder.") % dirname)
                return

        self.add_command(
            '%s location="%s"' %
            (gstreamer_sink, encode_filename(self.output_filename)))
Example #13
0
 def choose_record(self):
     try:
         target_input = self.inputs[self.listbox.index(self.listbox.curselection())]
     except:
         show_error("please choose an element")
         return
     self.window = tk.Toplevel(self)
     listbox = tk.Listbox(self.window)
     listbox.pack()
     RecordPage.dao.connect()
     records = RecordPage.dao.get_records()
     RecordPage.dao.close_connection()
     i = 1
     for record in records:
         listbox.insert(tk.END, str(i) + ". " + record.title)
         i += 1
     btn = tk.Button(self.window, text="Integrate", command=lambda: self.integrate_record(records[listbox.index(listbox.curselection())],target_input))
     btn.pack()
Example #14
0
    def update_frame(self, optional):
        self.target_record_id = optional
        self.listbox.delete(0, tk.END)
        EditRecordPage.dao.connect()
        self.inputs = EditRecordPage.dao.get_inputs(self.target_record_id)
        EditRecordPage.dao.close_connection()

        if len(self.inputs) == 0:
            show_error("no elements left, record was deleted")
            EditRecordPage.dao.connect()
            EditRecordPage.dao.delete_record(self.target_record_id)
            EditRecordPage.dao.close_connection()
            self.controller.show_frame("RecordPage")
            return
        i = 1
        for input in self.inputs:
            self.listbox.insert(tk.END, str(i) + ".  Delay: " + str(input.delay))
            i += 1
Example #15
0
    def install_plugin_cb(self, result):
        if result in (gst.pbutils.INSTALL_PLUGINS_SUCCESS,
                      gst.pbutils.INSTALL_PLUGINS_PARTIAL_SUCCESS):
            gst.update_registry()
            self.parsed = False
            self.duration = None
            self.finished()
            vfs_unlink(self.output_filename)
            self.play()
            return
        self.done()
        if result == gst.pbutils.INSTALL_PLUGINS_USER_ABORT:
            dialog = gtk.MessageDialog(parent=None, flags=gtk.DIALOG_MODAL,
                type=gtk.MESSAGE_INFO,
                buttons=gtk.BUTTONS_OK,
                message_format='Plugin installation aborted.')
            dialog.run()
            dialog.hide()
            return

        show_error('Error', 'failed to install plugins: %s' % gobject.markup_escape_text(str(result)))
Example #16
0
def vfs_rename(original, newname):
    """Rename a gnomevfs file"""
    
    uri = gnomevfs.URI(newname)
    dirname = uri.parent
    if dirname and not gnomevfs.exists(dirname):
        log('Creating folder: \'%s\'' % dirname)
        if not vfs_makedirs(str(dirname)):
            show_error(_('Cannot create folder!'), unquote_filename(dirname.path))
            return 'cannot-create-folder'

    try:
        gnomevfs.xfer_uri(gnomevfs.URI(original), uri,
                          gnomevfs.XFER_REMOVESOURCE,
                          gnomevfs.XFER_ERROR_MODE_ABORT,
                          gnomevfs.XFER_OVERWRITE_MODE_ABORT
                         )
    except Exception as error:
        # TODO: maybe we need a special case here. If dest folder is unwritable. Just stop.
        # or an option to stop all processing.
        show_error(_('Error while renaming file!'), '%s: %s' % (beautify_uri(newname), error))
        return 'cannot-rename-file'
Example #17
0
 def choose_record(self):
     try:
         smartphone = self.smartphones[self.listbox.index(self.listbox.curselection())]
     except:
         show_error("please choose a smartphone")
         return
     if smartphone.get_status() == "unauthorized":
         show_error("device unauthorized\nplease accept the RSA-key on the smartphone")
         return
     self.window = tk.Toplevel(self)
     listbox = tk.Listbox(self.window)
     listbox.pack()
     RecordPage.dao.connect()
     records = RecordPage.dao.get_records()
     RecordPage.dao.close_connection()
     i = 1
     for record in records:
         listbox.insert(tk.END, str(i) + ". " + record.title)
         i += 1
     btn = tk.Button(self.window, text="Replay",
                     command=lambda: self.replay_record(records[listbox.index(listbox.curselection())],
                                                           smartphone))
     btn.pack()
Example #18
0
def vfs_rename(original, newname):
    """Rename a gnomevfs file"""

    uri = gnomevfs.URI(newname)
    dirname = uri.parent
    if dirname and not gnomevfs.exists(dirname):
        log('Creating folder: \'%s\'' % dirname)
        if not vfs_makedirs(str(dirname)):
            show_error(_('Cannot create folder!'),
                       unquote_filename(dirname.path))
            return 'cannot-create-folder'

    try:
        gnomevfs.xfer_uri(gnomevfs.URI(original), uri,
                          gnomevfs.XFER_REMOVESOURCE,
                          gnomevfs.XFER_ERROR_MODE_ABORT,
                          gnomevfs.XFER_OVERWRITE_MODE_ABORT)
    except Exception as error:
        # TODO: maybe we need a special case here. If dest folder is unwritable. Just stop.
        # or an option to stop all processing.
        show_error(_('Error while renaming file!'),
                   '%s: %s' % (beautify_uri(newname), error))
        return 'cannot-rename-file'
Example #19
0
 def edit_delay(self):
     try:
         listbox_index = self.listbox.index(self.listbox.curselection())
     except:
         show_error("please choose an element")
         return
     try:
         new_delay = int(self.delay_input.get())
     except:
         show_error("please enter a numeric value")
         return
     if new_delay > 60000:
         show_error("new delay is to hight\nmust be <=60000")
         return
     else:
         EditRecordPage.dao.connect()
         EditRecordPage.dao.update_input_delay(self.inputs[listbox_index].id, new_delay)
         EditRecordPage.dao.close_connection()
         self.update_frame(self.target_record_id)
         self.delay_input.delete(0, tk.END)
Example #20
0
    def safe_record(self):
        record_title = self.record_title_input.get()
        if record_title == "":
            show_error("Record title to short")
            return
        elif len(record_title) > 100:
            show_error("Record title to long\nmax character: 100")
            return

        RecordPage.dao.connect()
        is_available = RecordPage.dao.is_record_title_available(record_title)
        RecordPage.dao.close_connection()

        if not is_available:
            show_error("title is already taken")
            return
        self.window.destroy()
        self.smartphone.stop_record(record_title)
        self.stop_button.config(state=tk.DISABLED)
        self.start_button.config(state=tk.NORMAL)
        self.listbox.config(state=tk.NORMAL)
        self.replay_button.config(state=tk.NORMAL)
Example #21
0
    def on_error(self, err):
        # pass

        show_error("<b>%s</b>" % _("GStreamer Error:"), "%s\n<i>(%s)</i>" % (err, self.sound_file.filename_for_display))
Example #22
0
    def add(self, sound_file):
        output_filename = self.window.prefs.generate_filename(sound_file)
        path = urlparse(output_filename) [2]
        path = unquote_filename(path)

        exists = True
        try:
            gnomevfs.get_file_info(gnomevfs.URI((output_filename)))
        except gnomevfs.NotFoundError:
            exists = False
        except gnomevfs.AccessDeniedError:
            self.error_count += 1
            msg = _('Access denied: \'%s\'' % output_filename)
            log(msg)
            show_error(msg, '')
            raise ConverterQueueError()
            return
        except:
            self.error_count += 1
            msg = 'Invalid URI: \'%s\'' % output_filename
            log(msg)
            show_error(msg, '')
            raise ConverterQueueError()
            return

        # do not overwrite source file !!
        if output_filename == sound_file.uri:
            self.error_count += 1
            show_error(_('Cannot overwrite source file(s)!'), '')
            raise ConverterQueueCanceled()

        if exists:
            if self.overwrite_action is not None:
                result = self.overwrite_action
            else:
                dialog = self.window.existsdialog

                dpath = os.path.basename(path)
                dpath = gobject.markup_escape_text(dpath)

                msg = \
                _('The output file <i>%s</i>\n exists already.\n '\
                    'Do you want to skip the file, overwrite it or'\
                    ' cancel the conversion?\n') % dpath

                dialog.message.set_markup(msg)
                dialog.set_transient_for(self.window.widget)

                if self.overwrite_action is not None:
                    dialog.apply_to_all.set_active(True)
                else:
                    dialog.apply_to_all.set_active(False)

                result = dialog.run()
                dialog.hide()

                if dialog.apply_to_all.get_active():
                    if result == 1 or result == 0:
                        self.overwrite_action = result

            if result == 1:
                # overwrite
                try:
                    vfs_unlink(output_filename)
                except gnomevfs.NotFoundError:
                    pass
            elif result == 0:
                # skip file
                return
            else:
                # cancel operation
                raise ConverterQueueCanceled()

        c = Converter(sound_file, output_filename,
                        self.window.prefs.get_string('output-mime-type'),
                        self.window.prefs.get_int('delete-original'),
                        self.window.prefs.get_int('output-resample'),
                        self.window.prefs.get_int('resample-rate'),
                        self.window.prefs.get_int('force-mono'),
                        )
        c.set_vorbis_quality(self.window.prefs.get_float('vorbis-quality'))
        c.set_aac_quality(self.window.prefs.get_int('aac-quality'))
        c.set_flac_compression(self.window.prefs.get_int('flac-compression'))
        c.set_wav_sample_width(self.window.prefs.get_int('wav-sample-width'))
        c.set_audio_profile(self.window.prefs.get_string('audio-profile'))

        quality = {
            'cbr': 'mp3-cbr-quality',
            'abr': 'mp3-abr-quality',
            'vbr': 'mp3-vbr-quality'
        }
        mode = self.window.prefs.get_string('mp3-mode')
        c.set_mp3_mode(mode)
        c.set_mp3_quality(self.window.prefs.get_int(quality[mode]))
        c.init()
        c.add_listener('finished', self.on_task_finished)
        self.add_task(c)
Example #23
0
 def on_error(self, err):
     #pass
     self.error = err
     show_error('<b>%s</b>' % _('GStreamer Error:'), '%s\n<i>(%s)</i>' % (err,
                 self.sound_file.filename_for_display))
Example #24
0
 def on_error(self, err):
     #pass
     self.error = err
     show_error(
         '<b>%s</b>' % _('GStreamer Error:'),
         '%s\n<i>(%s)</i>' % (err, self.sound_file.filename_for_display))