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_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()
import sys from python_qt_binding.QtWidgets import QApplication, QWidget, QVBoxLayout from python_qt_binding.QtCore import QFile, QIODevice, QObject from rqt_graph.ros_graph import RosGraph class FakePluginContext(QObject): def __init__(self): super(FakePluginContext, self).__init__() self.setObjectName('FakePluginContext') def serial_number(self): return 0 def add_widget(self, widget): pass if __name__ == "__main__": app = QApplication(sys.argv) fpc = FakePluginContext() r = RosGraph(fpc) handle = QFile(sys.argv[1]) if not handle.open(QIODevice.WriteOnly | QIODevice.Text): exit(1) handle.write(r._generate_dotcode()) handle.close()
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()