コード例 #1
0
 def __init__(self):
     "Parameter is an instance of VisController to use for sending signals."
     super(VisQtMainWindow, self).__init__()  # required for signals
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self._tool_import()
     self.show()
     # Hold a lists of checkboxes, "Edit" buttons, and layouts that represent
     # the parts in a piece for the "assemble" panel
     self.part_checkboxes = None
     self.edit_buttons = None
     self.part_layouts = None
     # Setup GUI-only Signals
     mapper = [
         # Workflow management
         (self.ui.btn_step1.clicked, self._check_for_pieces),
         (self.ui.btn_step2.clicked, self._start_the_analysis),
         # To operate the GUI
         (self.ui.btn_choose_files.clicked, self._tool_import),
         (self.ui.btn_about.clicked, self._tool_about),
         (self.ui.btn_analyze.clicked, self._tool_analyze),
         (self.ui.btn_experiment.clicked, self._tool_experiment),
         (self.ui.btn_file_add.clicked, self._add_files),
         (self.ui.btn_file_remove.clicked, self._remove_files),
         (self.ui.btn_show_results.clicked,
          self._prepare_experiment_submission),
         (self.ui.line_piece_title.editingFinished,
          self._update_piece_title),
         (self.ui.line_offset_interval.editingFinished,
          self._update_offset_interval),
         (self.ui.btn_choose_note.clicked, self._launch_offset_selection),
         (self.ui.chk_repeat_identical.stateChanged,
          self._update_repeat_identical),
         (self.ui.btn_cancel_operation.clicked, self._cancel_operation),
         # About part combinations
         (self.ui.line_compare_these_parts.editingFinished,
          self._add_parts_combo_by_line_edit),
         (self.ui.btn_add_check_combo.clicked, self._add_parts_combination),
         (self.ui.gui_pieces_list.selection_changed,
          self._update_pieces_selection),
         (self.ui.chk_all_voices.clicked, self._all_voices),
         (self.ui.chk_all_voice_combos.clicked, self._all_voice_pairs),
         # Things causing GUI adjustment
         (self.ui.rdo_consider_interval_ngrams.clicked,
          self._update_experiment_from_object),
         (self.ui.rdo_consider_intervals.clicked,
          self._update_experiment_from_object),
         (self.ui.rdo_consider_score.clicked,
          self._update_experiment_from_object),
         # Clicked an output format radio button (on the GUI: "How to Show Results")
         (self.ui.rdo_table.clicked, self._output_format_changed),
         (self.ui.rdo_chart.clicked, self._output_format_changed),
         (self.ui.rdo_score.clicked, self._output_format_changed),
         # "Shared Settings" from the "Analyzer" panel
         (self.ui.rdo_heedQuality.clicked, self._update_quality),
         (self.ui.rdo_noHeedQuality.clicked, self._update_quality),
         (self.ui.rdo_simple.clicked, self._update_octaves),
         (self.ui.rdo_compound.clicked, self._update_octaves),
     ]
     for signal, slot in mapper:
         signal.connect(slot)
     # Setup the progress bar
     self.ui.progress_bar.setMinimum(0)
     self.ui.progress_bar.setMaximum(100)
     self.ui.progress_bar.setValue(42)
     # set "Ctrl + q" to close the window
     QtGui.QShortcut(QtGui.QKeySequence(Qt.CTRL + Qt.Key_Q),
                     self,
                     self.close,
                     context=Qt.WindowShortcut)
     # visX setup
     self._list_of_ips = None  # holds the IndexedPiece instances
     self._list_of_files = ListOfFiles()
     self.ui.gui_file_list.setModel(self._list_of_files)
     self._work_wrap = WorkflowWrapper()
     self.ui.gui_pieces_list.setModel(self._work_wrap)
     self._prev_setts = None  # hold settings of previous experiment