def _handle_record_clicked(self): if self._recording: self._timeline.toggle_recording() return # TODO verify master is still running filename = QFileDialog.getSaveFileName( self, self.tr('Select prefix for new Bag File'), '.', self.tr('Bag files {.bag} (*.bag)')) if filename[0] != '': prefix = filename[0].strip() # Get filename to record to record_filename = time.strftime('%Y-%m-%d-%H-%M-%S.bag', time.localtime(time.time())) if prefix.endswith('.bag'): prefix = prefix[:-len('.bag')] if prefix: record_filename = '%s_%s' % (prefix, record_filename) rospy.loginfo('Recording to %s.' % record_filename) #TODO Implement recording of topic subsets, regex limiting and by number of messages per topic self.load_button.setEnabled(False) self._recording = True self._timeline.record_bag(record_filename)
def saveDatabaseAs(self, unused=None): self.databaseFilename = QFileDialog.getSaveFileName(self.widget, caption="Save track database", filter="*.tracks", directory=self.defaultDatabaseDirectory)[0] if self.databaseFilename: if not self.databaseFilename.endswith(".tracks"): self.databaseFilename += ".tracks" self._onDatabaseFilenameChanged() self.saveDatabase()
def _on_record_settings_selected(self, all_topics, selected_topics, selected_scenario): # TODO verify master is still running import inspect filepath = os.path.dirname( os.path.abspath(inspect.getfile( inspect.currentframe()))) + "/log/save_record.log" current_directory = self.get_current_opened_directory(filepath) filename = QFileDialog.getSaveFileName( self, self.tr('Select prefix for new Bag File'), current_directory, self.tr('Bag files {.bag} (*.bag)')) if filename[0] != '': with open(filepath, "w") as f: f.write(filename[0]) record_filename = filename[0].strip() if not record_filename.endswith('.bag'): record_filename = record_filename + ".bag" # # Get filename to record to # record_filename = time.strftime('%Y-%m-%d-%H-%M-%S.bag', time.localtime(time.time())) # if prefix.endswith('.bag'): # prefix = prefix[:-len('.bag')] # if prefix: # record_filename = prefix rospy.loginfo('Recording to %s.' % record_filename) self.start_recording(record_filename, selected_scenario, selected_topics)
def _handle_save_clicked(self, checked): filename = QFileDialog.getSaveFileName( self, 'Save to File', '.', self.tr('rqt_console msg file {.csv} (*.csv)')) if filename[0] != '': filename = filename[0] if filename[-4:] != '.csv': filename += '.csv' try: handle = open(filename, 'w') except IOError as e: qWarning(str(e)) return try: handle.write(';'.join(MessageDataModel.columns) + '\n') for index in range(self._proxy_model.rowCount()): row = self._proxy_model.mapToSource(self._proxy_model.index(index, 0)).row() msg = self._model._messages[row] data = {} data['message'] = msg.message.replace('"', '\\"') data['severity'] = str(msg.severity) data['node'] = msg.node data['stamp'] = str(msg.stamp[0]) + '.' + str(msg.stamp[1]).zfill(9) data['topics'] = ','.join(msg.topics) data['location'] = msg.location line = [] for column in MessageDataModel.columns: line.append('"%s"' % data[column]) handle.write(';'.join(line) + '\n') except Exception as e: qWarning('File save failed: %s' % str(e)) return False finally: handle.close() return True
def _handle_save(self): """Callback for when the save button is pressed.""" result = QFileDialog.getSaveFileName(self, "Save File", ".", "Minute files (*.txt)") file_name = result[0] if file_name: self._save(file_name)
def _handle_save_clicked(self, checked): filename = QFileDialog.getSaveFileName(self, 'Save to File', '.', self.tr('rqt_console msg file {.csv} (*.csv)')) if filename[0] != '': filename = filename[0] if filename[-4:] != '.csv': filename += '.csv' try: handle = open(filename, 'w') except IOError as e: qWarning(str(e)) return try: handle.write(';'.join(MessageDataModel.columns) + '\n') for index in range(self._proxy_model.rowCount()): row = self._proxy_model.mapToSource(self._proxy_model.index(index, 0)).row() msg = self._model._messages[row] data = {} data['message'] = msg.message.replace('"', '\\"') data['severity'] = str(msg.severity) data['node'] = msg.node data['stamp'] = str(msg.stamp[0]) + '.' + str(msg.stamp[1]).zfill(9) data['topics'] = ','.join(msg.topics) data['location'] = msg.location line = [] for column in MessageDataModel.columns: line.append('"%s"' % data[column]) handle.write(';'.join(line) + '\n') except Exception as e: qWarning('File save failed: %s' % str(e)) return False finally: handle.close() return True
def button_save_as_pressed(self): (name,filt) = QFileDialog.getSaveFileName(caption='Save Movement',filter="YAML (*.yaml)") self.loaded_movement.filename = name if self.loaded_movement.filename: self.button_save_pressed() else: rospy.logerr("No filename specified")
def _save_image(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr('Save as image'), 'rospackgraph.png', self.tr('Image (*.bmp *.jpg *.png *.tiff)')) if file_name is None or file_name == '': return img = QImage((self._scene.sceneRect().size() * 2.0).toSize(), QImage.Format_ARGB32_Premultiplied) painter = QPainter(img) painter.setRenderHint(QPainter.Antialiasing) self._scene.render(painter) painter.end() img.save(file_name)
def _save_dot(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr('Save as DOT'), 'rosgraph.dot', self.tr('DOT graph (*.dot)')) if file_name is None or file_name == '': return handle = QFile(file_name) if not handle.open(QIODevice.WriteOnly | QIODevice.Text): return handle.write(self._current_dotcode) handle.close()
def _save_image(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr('Save as image'), 'rosgraph.png', self.tr('Image (*.bmp *.jpg *.png *.tiff)')) if file_name is None or file_name == '': return img = QImage((self._scene.sceneRect().size() * 2.0).toSize(), QImage.Format_ARGB32_Premultiplied) painter = QPainter(img) painter.setRenderHint(QPainter.Antialiasing) self._scene.render(painter) painter.end() img.save(file_name)
def _save_dot(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr('Save as DOT'), 'rospackgraph.dot', self.tr('DOT graph (*.dot)')) if file_name is None or file_name == '': return handle = QFile(file_name) if not handle.open(QIODevice.WriteOnly | QIODevice.Text): return handle.write(self._current_dotcode) handle.close()
def _handle_save_clicked(self): # Get the bag name to record to, prepopulating with a file name based on the current date/time proposed_filename = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())) filename = QFileDialog.getSaveFileName( self, self.tr('Save selected region...'), proposed_filename, self.tr('Bag files {.bag} (*.bag)'))[0] if filename != '': filename = filename.strip() if not filename.endswith('.bag'): filename += '.bag' # Copy the highlighted region self._timeline.copy_region_to_bag(filename)
def save_svg_to_file(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr("Save as SVG"), "stackmachine.svg", self.tr("Scalable Vector Graphic (*.svg)")) if file_name is not None and file_name != "": generator = QSvgGenerator() generator.setFileName(file_name) generator.setSize((self._scene.sceneRect().size() * 2.0).toSize()) painter = QPainter(generator) painter.setRenderHint(QPainter.Antialiasing) self._scene.render(painter) painter.end()
def _on_export_perspective(self): file_name, _ = QFileDialog.getSaveFileName( self._menu_manager.menu, self.tr('Export perspective to file'), self._current_perspective + '.perspective', self.tr('Perspectives (*.perspective)')) if file_name is None or file_name == '': return # trigger save of perspective before export self._callback = self._on_export_perspective_continued self._callback_args = [file_name] self.save_settings_signal.emit(self._global_settings, self._perspective_settings)
def _save_svg(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr('Save as SVG'), 'rosgraph.svg', self.tr('Scalable Vector Graphic (*.svg)')) if file_name is None or file_name == '': return generator = QSvgGenerator() generator.setFileName(file_name) generator.setSize((self._scene.sceneRect().size() * 2.0).toSize()) painter = QPainter(generator) painter.setRenderHint(QPainter.Antialiasing) self._scene.render(painter) painter.end()
def _save_svg(self): file_name, _ = QFileDialog.getSaveFileName(self._widget, self.tr('Save as SVG'), 'rospackgraph.svg', self.tr('Scalable Vector Graphic (*.svg)')) if file_name is None or file_name == '': return generator = QSvgGenerator() generator.setFileName(file_name) generator.setSize((self._scene.sceneRect().size() * 2.0).toSize()) painter = QPainter(generator) painter.setRenderHint(QPainter.Antialiasing) self._scene.render(painter) painter.end()
def _handle_save(self): result = QFileDialog.getSaveFileName(self, 'Save File', '.', 'Minute files (*.txt)') file_name = result[0] if file_name: if file_name[-4:] != '.txt': file_name += '.txt' try: with open(file_name, 'w') as f: f.write(str(self._model)) except IOError as e: rospy.logwarn('Failed to open file: {0}'.format(e)) return else: rospy.loginfo('Successfully written to file {0}'.format(file_name))
def press_select_yaml(self): options = QFileDialog.Options() options |= QFileDialog.DontConfirmOverwrite select_yaml_caption = "Select YAML configuration file" select_yaml_directory = "" select_yaml_file_filter = "YAML Files (*.yaml);;All Files (*)" yaml_file, file_filter = QFileDialog.getSaveFileName( self._widget, caption=select_yaml_caption, directory=select_yaml_directory, filter=select_yaml_file_filter, options=options) # yaml_file, file_filter = QFileDialog.getOpenFileName(self._widget, caption=select_yaml_caption, directory=select_yaml_directory, filter=select_yaml_file_filter, options=options) rospy.loginfo('%s::%s: selected file %s' % (self._name, self.get_function_name(), yaml_file)) self.set_yaml(yaml_file)
def handle_select(self): # TODO(lucasw) have a parameter define which kind of dialog to use file_dir = self.current_line_edit.text() new_file_dir = None if self.mode == "file_save": new_file_dir, tmp = QFileDialog.getSaveFileName(caption="Select a save file", directory=os.path.dirname(file_dir)) elif self.mode == "file_open": new_file_dir, tmp = QFileDialog.getOpenFileName(caption="Select a file", directory=os.path.dirname(file_dir)) else: # elif mode == "dir": new_file_dir = QFileDialog.getExistingDirectory(caption="Select a directory", directory=os.path.dirname(file_dir)) if new_file_dir is not None and new_file_dir != "": self.current_line_edit.setText(new_file_dir) self.publish()
def _on_record_settings_selected(self, all_topics, selected_topics): # TODO verify master is still running # Get the bag name to record to, prepopulating with a file name based on the current date/time proposed_filename = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())) filename = QFileDialog.getSaveFileName( self, self.tr('Select name for new bag'), proposed_filename, self.tr('Bag files {.bag} (*.bag)'))[0] if filename != '': filename = filename.strip() if not filename.endswith('.bag'): filename += ".bag" # Begin recording self.load_button.setEnabled(False) self._recording = True self._timeline.record_bag(filename, all_topics, selected_topics)
def _on_record_settings_selected(self, all_topics, selected_topics): # TODO verify master is still running filename = QFileDialog.getSaveFileName(self, self.tr('Select prefix for new Bag File'), '.', self.tr('Bag files {.bag} (*.bag)')) if filename[0] != '': prefix = filename[0].strip() # Get filename to record to record_filename = time.strftime('%Y-%m-%d-%H-%M-%S.bag', time.localtime(time.time())) if prefix.endswith('.bag'): prefix = prefix[:-len('.bag')] if prefix: record_filename = '%s_%s' % (prefix, record_filename) rospy.loginfo('Recording to %s.' % record_filename) self.load_button.setEnabled(False) self._recording = True self._timeline.record_bag(record_filename, all_topics, selected_topics)
def save_graph(self): """Save the current dot graph as an image.""" if self.graph is None: return ret = QFileDialog.getSaveFileName(self._widget, "Save graph as", "untitled.png", self.image_filter, "*.png") if ret[0]: _, extension = os.path.splitext(ret[0]) if extension == ".svg": gen = QSvgGenerator() gen.setFileName(ret[0]) gen.setSize(self._widget.xdot_widget.size()) gen.setViewBox(self._widget.xdot_widget.rect()) self._widget.xdot_widget.grab().save(ret[0]) self._widget.xdot_widget.render(gen) else: self._widget.xdot_widget.grab().save(ret[0])
def _on_export_perspective(self): save_file_name = os.path.join( self._file_path, self._current_perspective.lstrip(self.HIDDEN_PREFIX)) suffix = '.perspective' if not save_file_name.endswith(suffix): save_file_name += suffix file_name, _ = QFileDialog.getSaveFileName( self._menu_manager.menu, self.tr('Export perspective to file'), save_file_name, self.tr('Perspectives (*.perspective)')) if file_name is None or file_name == '': return self._file_path = os.path.dirname(file_name) # trigger save of perspective before export self._callback = self._on_export_perspective_continued self._callback_args = [file_name] self.save_settings_signal.emit(self._global_settings, self._perspective_settings)
def _on_record_settings_selected(self, all_topics, selected_topics): # TODO verify master is still running filename = QFileDialog.getSaveFileName( self, self.tr('Select prefix for new Bag File'), '.', self.tr('Bag files {.bag} (*.bag)')) if filename[0] != '': prefix = filename[0].strip() # Get filename to record to record_filename = time.strftime('%Y-%m-%d-%H-%M-%S.bag', time.localtime(time.time())) if prefix.endswith('.bag'): prefix = prefix[:-len('.bag')] if prefix: record_filename = '%s_%s' % (prefix, record_filename) rospy.loginfo('Recording to %s.' % record_filename) self.load_button.setEnabled(False) self._recording = True self._timeline.record_bag(record_filename, all_topics, selected_topics)
def _handle_save_clicked(self): filename = QFileDialog.getSaveFileName( self, self.tr('Save selected region to file...'), '.', self.tr('Bag files {.bag} (*.bag)')) if filename[0] != '': self._timeline.copy_region_to_bag(filename[0])
def _save_dataset(self): formats = ['CSV', 'PKL', 'H5', 'DLS', 'FANN'] supported_formats = '' for f in formats: supported_formats += f + ';;' self._data_filename, self._data_format = QFileDialog.getSaveFileName( self._widget, self.tr('Save dataset'), 'dataset_name', self.tr(supported_formats[:-2])) if self._data_filename is None or self._data_filename == '': return self._data_filename += '.' + self._data_format.lower() if self._data_format == 'CSV': # fill up the list of selected data leaves self._fill_selected_leaves_list() # create new stream file data_file = QFile(self._data_filename) if not data_file.open(QIODevice.WriteOnly | QIODevice.Text): return self._file_stream = QTextStream(data_file) # fill up single line record dictionary with topic keys self._line_record['timestamp'] = 0 for leaf in self._selected_leaves: #self._get_selected_items_list(): self._line_record[leaf] = 0 # write out header for key in self._line_record: self._file_stream << key << ',' self._file_stream << '\n' # open bag file bag = rosbag.Bag(self._bag_filename) # cycle through selected base topics for topic, message, time in bag.read_messages( self._get_selected_topics()): # traverse down the message slots # print('Traversing: ' + topic) self._line_record['timestamp'] = str(time) self._export_leaf_instance(message, '', '', topic, []) data_file.close() print('File saved: ' + self._data_filename) elif self._data_format == 'PKL': df = rosbag_pandas.bag_to_dataframe(self._bag_filename, self._get_selected_topics()) df.to_pickle(self._data_filename) print('File saved: ' + self._data_filename) elif self._data_format == 'H5': df = rosbag_pandas.bag_to_dataframe(self._bag_filename, self._get_selected_topics()) hdf_store = HDFStore(self._data_filename) hdf_store['df'] = df hdf_store.close() print('File saved: ' + self._data_filename) elif self._data_format == 'DLS': self._no_support_warning() elif self._data_format == 'FANN': self._no_support_warning() else: self._no_support_warning()
def _handle_save_clicked(self): filename = QFileDialog.getSaveFileName( self, self.tr('Save parameters to file...'), '.', self.tr('YAML files {.yaml} (*.yaml)')) if filename[0] != '': self.save_param(filename[0])
def _handle_save(self): result = QFileDialog.getSaveFileName(self, 'Save File', '.', 'Minute files (*.txt)') file_name = result[0] if file_name: self._save(file_name)
class JointStatePublisherGui(QWidget): def __init__(self, title, jsp, num_rows=0): super(JointStatePublisherGui, self).__init__() font = QFont("Helvetica", 9, QFont.Bold) self.hlayout = QHBoxLayout(self) vlayout = QVBoxLayout() glayout = QGridLayout() right_l_lauout = QVBoxLayout() self.listVeiw = QListWidget() self.checkbox = [] self.value_line_edit = [] self.sliders = [] self.positions = [] self.progressbars = [] self.value_last = [] speed_max = enviromnt_conf['joint_speed'] slider_max = speed_max * 1000 position_max = enviromnt_conf['joint_max_position'] progress_max = position_max * 1000 #create joints widget for i in range(0, num_rows): if config[i][0]: g_in_g = QGridLayout() checkbox = QCheckBox(config[i][1]) checkbox.setFont(font) self.checkbox.append(checkbox) value_line_edit = QLineEdit() value_line_edit.setFont(font) value_line_edit.setText("0.0") self.value_line_edit.append(value_line_edit) display_lable = QLabel() display_lable.setFont(font) display_lable.setText("Position:") position_label = QLabel() position_label.setFont(font) position_label.setText("0.0") self.positions.append(position_label) position_progress_bar = QProgressBar() position_progress_bar.setMaximum(progress_max) position_progress_bar.setMinimum(-progress_max) position_progress_bar.setValue(0) self.progressbars.append(position_progress_bar) slider = QSlider() slider.setMaximum(slider_max) slider.setMinimum(-slider_max) slider.setOrientation(Qt.Horizontal) slider.valueChanged.connect(self.slider_value_changed) self.sliders.append(slider) g_in_g.addWidget(checkbox, 0, 0) g_in_g.addWidget(value_line_edit, 0, 1) g_in_g.addWidget(display_lable, 0, 2) g_in_g.addWidget(position_label, 0, 3) g_in_g.addWidget(slider, 1, 0, 1, 2) g_in_g.addWidget(position_progress_bar, 1, 2, 1, 2) glayout.addLayout(g_in_g, i, 0) #create v layout self.import_Btn = QPushButton('Import') self.import_Btn.setFont(font) self.import_Btn.clicked.connect(self.import_Btn_clecked) self.export_Btn = QPushButton('Export') self.export_Btn.setFont(font) self.export_Btn.clicked.connect(self.export_Btn_clicked) self.start_Btn = QPushButton("Start") self.start_Btn.setFont(font) self.start_Btn.clicked.connect(self.start_Btn_clicked) self.reset_Btn = QPushButton('Reset') self.reset_Btn.setFont(font) self.reset_Btn.clicked.connect(self.reset_Btn_clicked) self.record_Btn = QPushButton('Record') self.record_Btn.setFont(font) self.record_Btn.clicked.connect(self.record_Btn_clicked) self.replay_Btn = QPushButton('Repaly') self.replay_Btn.setFont(font) self.replay_Btn.clicked.connect(self.replay_Btn_clicked) self.delete_Btn = QPushButton("Delete") self.delete_Btn.setFont(font) self.delete_Btn.clicked.connect(self.delete_Btn_clicked) self.debug_Btn = QPushButton("Debug") self.debug_Btn.setFont(font) self.debug_Btn.clicked.connect(self.debug_Btn_clicked) vlayout.addWidget(self.import_Btn) vlayout.addWidget(self.export_Btn) vlayout.addWidget(self.start_Btn) vlayout.addWidget(self.reset_Btn) vlayout.addWidget(self.record_Btn) vlayout.addWidget(self.delete_Btn) vlayout.addWidget(self.replay_Btn) vlayout.addWidget(self.debug_Btn) self.master_url = QLineEdit("http://192.168.0.91:11311") self.master_url.setFont(font) self.master_ip = QLineEdit("192.168.0.91") self.master_ip.setFont(font) self.listVeiw.clicked.connect(self.listVeiw_clicked) self.listVeiw.currentRowChanged.connect( self.listVeiw_itemSelectionChanged) self.description = QTextEdit("") self.description.setFont(font) #self.description.setGeometry(0,100,100,500) right_l_lauout.addWidget(self.master_url) right_l_lauout.addWidget(self.master_ip) right_l_lauout.addWidget(self.listVeiw) right_l_lauout.addWidget(self.description) right_l_lauout.setStretch(0, 1) right_l_lauout.setStretch(1, 1) right_l_lauout.setStretch(2, 3) right_l_lauout.setStretch(3, 1) self.num_rows = len(self.checkbox) self.hlayout.addLayout(glayout) self.hlayout.addLayout(vlayout) self.hlayout.addLayout(right_l_lauout) self.setLayout(self.hlayout) self.callback_start = None self.callback_pause = None self.callback_record = None self.callback_reset = None self.callback_replay = None self.callback_replay_stop = None self.callback_delete = None self.callback_debug = None self.callback_import = None self.callback_export = None self.callback_list_clicked = None self.listVeiw_isClicked = False self.listVeiw_current_item = 0 self.listVeiw_len = 0 self.f = QFileDialog() def who_data_changed(self): for i in range(0, self.num_rows): value_last = self.value_line_edit[i].text() value_last = float(value_last) * 1000 value = self.sliders[i].value() if value != value_last: return i def change_line_edit(self, change_index): value = self.sliders[change_index].value() value = float(value) / 1000 value = str(value) self.value_line_edit[change_index].setText(value) def change_position_edit(self, change_index): value = self.progressbars[change_index].value() value += self.sliders[change_index].value() self.progressbars[change_index].setValue(value) self.positions[change_index].setText(str(float(value) / 1000)) def reset_speed(self, change_index): self.sliders[change_index].setValue(0) def reset_speed_all(self): for i in range(0, self.num_rows): self.reset_speed(i) def set_speed(self, index, data): self.sliders[index].setValue(data) def import_Btn_clecked(self): self.file_path = self.f.getOpenFileName(caption='Import excel data', directory='', filter='*.xlsx', initialFilter='') self.file_path = self.file_path[0] if self.callback_import: self.callback_import() pass def export_Btn_clicked(self): self.file_path = self.f.getSaveFileName(caption='Save as excel data', directory='', filter='*.xlsx', initialFilter='') self.file_path = self.file_path[0] if self.callback_export: self.callback_export() pass def set_callback_start(self, func): self.callback_start = func def start_Btn_clicked(self): if self.start_Btn.text() == "Start": if self.callback_start: self.callback_start() self.start_Btn.setText("Pause") else: if self.callback_pause: self.callback_pause() self.start_Btn.setText("Start") def reset_Btn_clicked(self): self.reset_speed_all() self.reset_postion_all() if self.callback_reset: self.callback_reset() def replay_Btn_clicked(self): if self.replay_Btn.text() == "Replay": self.replay_Btn.setText("Stop") if self.callback_replay: self.callback_replay() else: self.replay_Btn.setText("Replay") if self.callback_replay_stop: self.callback_replay_stop() def debug_Btn_clicked(self): if self.callback_debug: self.callback_debug() def record_Btn_clicked(self): self.set_postion() self.listVeiw_len += 1 if self.callback_record: self.callback_record() self.reset_speed_all() def listVeiw_itemSelectionChanged(self, index): self.listVeiw_isClicked = True self.listVeiw_current_item = index if self.callback_list_clicked: self.callback_list_clicked() def listVeiw_clicked(self, index): #print "index", index.row() if self.listVeiw_current_item != index.row(): description_text = self.description.toPlainText() #self.listVeiw.item(self.listVeiw_current_item).setData(1,"123") #print self.listVeiw.item(self.listVeiw_current_item).data self.listVeiw_isClicked = True self.listVeiw_current_item = index.row() if self.callback_list_clicked: self.callback_list_clicked() def update_listView(self): print "update", self.listVeiw_len for i in range(0, self.listVeiw_len): view = self.listVeiw.item(i) view.setText(str(i)) def get_listVeiw_current_item(self): return self.listVeiw_current_item def delete_Btn_clicked(self): if self.listVeiw_isClicked: print self.listVeiw_current_item self.listVeiw.removeItemWidget( self.listVeiw.takeItem(self.listVeiw_current_item)) self.listVeiw_len -= 1 if self.listVeiw_current_item != self.listVeiw_len: self.update_listView() if self.callback_delete: self.callback_delete() if self.listVeiw_current_item == 0: self.listVeiw_current_item = 0 else: self.listVeiw_current_item -= 1 self.listVeiw.setCurrentRow(self.listVeiw_current_item) if self.listVeiw_len == 0: self.listVeiw_isClicked = False def listView_add_item(self, index): self.listVeiw.addItem(str(index)) def listView_inset_item(self, index, label): self.listVeiw.insertItem(index, str(label)) def slider_value_changed(self, data): change_index = self.who_data_changed() self.change_line_edit(change_index) def get_speed(self): speed = [] for i in range(0, self.num_rows): value = self.sliders[i].value() value = float(value) / 1000 speed.append(value) return speed def get_position(self): position = [] for i in range(0, self.num_rows): value = self.progressbars[i].value() value += self.sliders[i].value() value = float(value) / 1000 position.append(value) return position def set_postion(self): for i in range(0, self.num_rows): self.change_position_edit(i) def set_positions(self, data): print len(data) for i in range(0, len(data)): self.progressbars[i].setValue(data[i] * 1000) self.positions[i].setText(str(data[i])) def reset_position(self, change_index): value = 0 self.progressbars[change_index].setValue(value) self.positions[change_index].setText(str(float(value) / 1000)) def reset_postion_all(self): for i in range(0, self.num_rows): self.reset_position(i)
def _handle_save_clicked(self): filename = QFileDialog.getSaveFileName(self, self.tr('Save selected region to file...'), '.', self.tr('Bag files {.bag} (*.bag)')) if filename[0] != '': self._timeline.copy_region_to_bag(filename[0])
def _handle_save_clicked(self): filename = QFileDialog.getSaveFileName( self, self.tr('Save parameters to file...'), '.', self.tr('YAML files {.yaml} (*.yaml)')) if filename[0] != '': self.save_param(filename[0])