示例#1
0
    def _load(self, treeview):
        (model, it) = treeview.get_selection().get_selected()
        db_id = model.get_value(it, 0) if it else None

        if db_id != None:
            db = BLLDatabase()
            check = Check.db_select(db, [db_id])[0]
            db.close()

            self.window.destroy()
            TestWindow(check)

        else:
            UIUtils.show_no_sel_dialog()
示例#2
0
    def _get_sel_row_clip_info(self, col_headers, treeview):
        start = None
        end = None
        
        model, it = treeview.get_selection().get_selected()
        if it:
            #find start and end column indices (if not already found)
            if self.sound_col_fcns == None:
                start_index, end_index, dur_index, el_time_index = self._get_sound_col_indices(col_headers)

                if start_index > -1 and end_index > -1:
                    self.sound_col_fcns = (
                        lambda model, it: self._get_abs_time(model.get_value(it, start_index)),
                        lambda model, it: self._get_abs_time(model.get_value(it, end_index)),
                        )
                    
                elif dur_index > -1 and el_time_index > -1:
                    self.sound_col_fcns = (
                        lambda model, it: self._get_abs_time(float(model.get_value(it, el_time_index))),
                        lambda model, it: self._get_abs_time(float(model.get_value(it, el_time_index)) + float(model.get_value(it, dur_index))),
                        )

                else:
                    error_msg = 'The program was unable to derive the sound clip start and end times from the columns.\n'
                    error_msg += '\nColumn headers must include:\n'
                    error_msg += '-One start name: %s\n' % (' or '.join(['"%s"' % (name) for name in MainWindow.START_COL_NAMES]))
                    error_msg += '-One end name: %s\n' % (' or '.join(['"%s"' % (name) for name in MainWindow.END_COL_NAMES]))
                    error_msg += '\nOr alternatively:\n'
                    error_msg += '-One duration name: %s\n' % (' or '.join(['"%s"' % (name) for name in MainWindow.DUR_COL_NAMES]))
                    error_msg += '-One elapsed time name: %s\n' % (' or '.join(['"%s"' % (name) for name in MainWindow.EL_TIME_COL_NAMES]))

                    error_msg += '\nPlease make sure your input spreadsheet contains one of these pairs.'

                    UIUtils.show_message_dialog(error_msg)

            if self.sound_col_fcns != None and self.wav_filename:
                try:
                    start = float( self.sound_col_fcns[0](treeview.get_model(), it) )
                    end = float( self.sound_col_fcns[1](treeview.get_model(), it) )
                except ValueError as err:
                    UIUtils.show_message_dialog('The program was unable to determine start and end times for this row.')
                    start = None
                    end = None
                    print err

        else:
            UIUtils.show_no_sel_dialog()

        return start, end
示例#3
0
    def _delete_config(self, treeview):
        model, it = treeview.get_selection().get_selected()
        if it:
            if UIUtils.show_confirm_dialog(
                    'Are you sure you want to delete this configuration?'):
                config = model.get(it, 4)[0]

                model.remove(it)

                if config.db_id != None:
                    db = BLLDatabase()
                    config.db_delete(db)
                    db.close()
        else:
            UIUtils.show_no_sel_dialog()
示例#4
0
    def load_check(self, treeview):
        model, sel_paths = treeview.get_selection().get_selected_rows()
        if sel_paths:
            it = model.get_iter(sel_paths[0])
            check2_id = model.get_value(it, 0)

            db = BLLDatabase()
            check2 = Check2.db_select(db, ids=[check2_id])[0]
            db.close()

            TestWindow(check2)
            self.window.destroy()

        else:
            UIUtils.show_no_sel_dialog()
示例#5
0
    def _run_config(self, treeview):
        model, it = treeview.get_selection().get_selected()
        if it:
            config = model.get(it, 4)[0]
            trs_folder = UIUtils.open_folder(title='Select TRS Folder...')

            if trs_folder:  #will be None if user clicked 'cancel' or closed the dialog window
                export_folder = UIUtils.open_folder(
                    title='Select Output Folder...')
                if export_folder:
                    #trs_filenames = glob.glob(trs_folder + '\\*.trs')
                    trs_filenames = self._get_trs_filenames(trs_folder)
                    export_filenames = map(
                        lambda name: '%s/%s-stats.csv' %
                        (export_folder, os.path.basename(name)[:-4]),
                        trs_filenames)

                    phases = [
                        'File %d of %d' % (i + 1, len(trs_filenames))
                        for i in range(len(trs_filenames))
                    ]
                    dialog = ProgressDialog('Working...', phases)
                    dialog.show()

                    for j in range(len(trs_filenames)):
                        exporter = StatsExporter(
                            config,
                            trs_filenames[j],
                            export_filenames[j],
                            summary_filename=export_folder + "/summary.csv")
                        exporter.export()
                        dialog.set_fraction(1.0)
                        if j < len(trs_filenames) - 1:
                            dialog.next_phase()

                    dialog.ensure_finish()

                    UIUtils.show_message_dialog('Export successful.')

        else:
            UIUtils.show_no_sel_dialog()
示例#6
0
    def delete_check(self, treeview):
        model, sel_paths = treeview.get_selection().get_selected_rows()
        if sel_paths:
            if UIUtils.show_confirm_dialog(
                    'Are you sure you want to delete this row?'):
                it = model.get_iter(sel_paths[0])
                check2_id = model.get_value(it, 0)

                db = BLLDatabase()
                #this is a little awkward, but it works for now...
                check2 = Check2.db_select(db, ids=[check2_id])[0]
                if check2.db_delete(db) > 0:
                    model.remove(it)
                else:
                    UIUtils.show_message_dialog(
                        'An error has prevented this row from being deleted. Please check the log files for details.',
                        gtk.MESSAGE_ERROR)
                db.close()

        else:
            UIUtils.show_no_sel_dialog()
示例#7
0
    def play_selected_seg(self):
        (model, it) = self.treeview.get_selection().get_selected()
        if it:
            #if they've selected an error row, find the top level parent (the segment) and use it instead
            parent = model.iter_parent(it)
            while parent:
                it = parent
                parent = model.iter_parent(it)

            seg_num = model.get_value(it, 0) if it else None
            seg = self.trs_parser.parse()[seg_num]

            if not self.wav_parser:
                dialog = gtk.FileChooserDialog(
                    title='Select WAV File',
                    action=gtk.FileChooserAction.OPEN,
                    buttons=(gtk.STOCK_CANCEL, gtk.ResponseType.CANCEL,
                             gtk.STOCK_OPEN, gtk.ResponseType.OK))
                dialog.set_default_response(gtk.ResponseType.OK)

                for filter_opt in (('wav Files', '*.wav'), ('All Files', '*')):
                    file_filter = gtk.FileFilter()
                    file_filter.set_name(filter_opt[0])
                    file_filter.add_pattern(filter_opt[1])
                    dialog.add_filter(file_filter)

                response = dialog.run()
                if response == gtk.ResponseType.OK:
                    filename = dialog.get_filename()
                    self.wav_parser = WavParser(filename)

                dialog.destroy()

            if self.wav_parser:
                self.wav_parser.play_seg(seg)

            else:
                UIUtils.show_no_sel_dialog()
        else:
            UIUtils.show_no_sel_dialog()
示例#8
0
    def _confirm_delete(self, treeview):
        (model, it) = treeview.get_selection().get_selected()
        db_id = model.get_value(it, 0) if it else None

        if db_id != None:
            response = UIUtils.show_confirm_dialog(
                'Are you sure you want to delete the selected check?')

            if response:
                db = BLLDatabase()
                rows_deleted = Check.db_select(db, [db_id])[0].db_delete(db)
                db.close()

                if rows_deleted > 0:
                    model.remove(it)

                else:
                    UIUtils.show_message_dialog(
                        'An error occurred and the check could not be deleted.'
                    )

        else:
            UIUtils.show_no_sel_dialog()