Exemplo n.º 1
0
    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()
Exemplo n.º 4
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()