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()
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
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()
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()
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()
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()
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()
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()