Exemplo n.º 1
0
 def _handle_load_clicked(self):
     # path = QFileDialog.getOpenFileName(self, self.tr('Load from File'), '.', self.tr('Bag files {.bag} (*.bag)'))
     # path = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
     import inspect
     filepath = os.path.dirname(
         os.path.abspath(inspect.getfile(
             inspect.currentframe()))) + "/log/select_bag.log"
     current_directory = self.get_current_opened_directory(filepath)
     fd = QFileDialog(self)
     wc = "Bag files {.bag} (*.bag)"
     path, filter = fd.getOpenFileNamesAndFilter(
         filter=wc, initialFilter=('*.bag'), directory=current_directory)
     # print path
     if len(path) != 0:
         with open(filepath, "w") as f:
             f.write(path[0])
     # if path[0][-4:] == ".bag":   # file
     #     print "True"
     #     self.load_bag(path[0])
     #     files = [path[0]]
     # else: #dir
     #     print "Else " + path
     #     path = path + "/"
     #     files = self.get_bag_files(path)
     #     print files
     #
     # # files = self.get_bag_files("/home/lab/bagfiles/")
     if path:
         self.get_features_from_bags(path)
Exemplo n.º 2
0
    def onButtonClicked(self):
        import inspect, os
        filepath = os.path.dirname(
            os.path.abspath(inspect.getfile(
                inspect.currentframe()))) + "/log/select_history.log"
        fd = QFileDialog(self)
        wc = "Csv files {.csv} (*.csv)"
        self.files = []
        current_directory = self.get_current_opened_directory(filepath)
        tmp_pathes, filter = fd.getOpenFileNamesAndFilter(
            filter=wc, initialFilter=('*.csv'), directory=current_directory)
        for path in tmp_pathes:
            self.files.append(path.encode("utf-8"))
        # print self.files
        if len(self.files) != 0:
            self.get_min_rows_csv(tmp_pathes)
            self.select_path.setText(self.files[0])
            with open(filepath, "w") as f:
                f.write(self.files[0])

                # handler = logging.FileHandler(filepath, mode='w')
                # logger_topic.addHandler(handler)
                # logger_topic.info(self.files[0])
        else:
            self.select_path.setText("")
Exemplo n.º 3
0
    def load_FTS(self):
        # Start file dialog
        directory = os.path.join(rospkg.RosPack().get_path('rqt_simulation'),
                                 'config', 'FTS')
        File_dialog = QFileDialog(directory=directory, filter='.yaml')
        FTS_file = File_dialog.getOpenFileName()
        stream = file(FTS_file[0], 'r')
        data = yaml.load(stream)
        stream.close()

        # Load FTS
        self.region_of_interest = {}
        self.region_of_interest = data['FTS']
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
    def _load_bag(self, file_name=None):
        self._topic_list = []
        if file_name is None:
            file_name, _ = QFileDialog.getOpenFileName(
                self._widget, self.tr('Open bag file'), None,
                self.tr('ROSbag file (*.bag)'))
            if file_name is None or file_name == '':
                return
        try:
            self._bag_filename = file_name
            bag = rosbag.Bag(file_name)
            topics = bag.get_type_and_topic_info()[1].keys()
            types = []
            for i in range(0, len(bag.get_type_and_topic_info()[1].values())):
                types.append(
                    list(bag.get_type_and_topic_info()[1].values())[i][0])

            for topic_name, topic_type in zip(topics, types):
                topic_item = self._recursive_create_widget_items(
                    self._widget.topics_tree_widget, topic_name, topic_type,
                    roslib.message.get_message_class(topic_type), False)

            self._widget.topics_tree_widget.header().setSectionResizeMode(
                QHeaderView.ResizeToContents)
            self._widget.topics_tree_widget.header().setStretchLastSection(
                True)

        except IOError:
            return
Exemplo n.º 6
0
 def onPlpClicked(self):
     import inspect, os
     filepath = os.path.dirname(
         os.path.abspath(inspect.getfile(
             inspect.currentframe()))) + "/log/save_plp.log"
     current_directory = self.get_current_opened_directory(filepath)
     fd = QFileDialog(self)
     wc = "Csv files {.py} (*.py)"
     # print current_directory
     filename, filter = fd.getOpenFileNamesAndFilter(
         filter=wc, initialFilter=('*.py'), directory=current_directory)
     if len(filename):
         self.plp_filename = filename[0]
         with open(filepath, "w") as f:
             f.write(self.plp_filename)
         self.select_path.setText(self.plp_filename)
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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()
Exemplo n.º 9
0
    def _load_dot(self, file_name=None):
        if file_name is None:
            file_name, _ = QFileDialog.getOpenFileName(
                self._widget, self.tr('Open graph from file'), None,
                self.tr('DOT graph (*.dot)'))
            if file_name is None or file_name == '':
                return

        try:
            fh = open(file_name, 'rb')
            dotcode = fh.read()
            fh.close()
        except IOError:
            return

        # disable controls customizing fetched ROS graph
        self._widget.graph_type_combo_box.setEnabled(False)
        self._widget.filter_line_edit.setEnabled(False)
        self._widget.topic_filter_line_edit.setEnabled(False)
        self._widget.namespace_cluster_spin_box.setEnabled(False)
        self._widget.actionlib_check_box.setEnabled(False)
        self._widget.dead_sinks_check_box.setEnabled(False)
        self._widget.leaf_topics_check_box.setEnabled(False)
        self._widget.quiet_check_box.setEnabled(False)
        self._widget.unreachable_check_box.setEnabled(False)
        self._widget.group_tf_check_box.setEnabled(False)
        self._widget.hide_tf_nodes_check_box.setEnabled(False)
        self._widget.group_image_check_box.setEnabled(False)
        self._widget.hide_dynamic_reconfigure_check_box.setEnabled(False)

        self._update_graph_view(dotcode)
Exemplo n.º 10
0
 def save_as(self):
     '''
     Saves all currently recorded frames into a json file, which is saved at a user specified location
     '''
     self.treeModeChanged(self._previousTreeMode)
     self._saveDir = QFileDialog.getExistingDirectory()
     self._recorder.save_animation(self._saveDir, self._widget.lineAnimationName.text(), self._checkBoxesSave)
Exemplo n.º 11
0
 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()
Exemplo n.º 12
0
    def open(self):
        '''
        Deletes all current frames and instead loads an animation from a json file
        '''
        if len(self._widget.frameList) > 1:
            message = "This will discard your current Animation. Continue?"
            sure = QMessageBox.question(self._widget, 'Sure?', message, QMessageBox.Yes | QMessageBox.No)
            if sure == QMessageBox.No:
                return
        my_file = QFileDialog.getOpenFileName()[0]
        if my_file:
            status = self._recorder.load_animation(my_file)
            if status == "":
                status = "Load successful."
            self._widget.statusBar.showMessage(status)

        animstate = self._recorder.get_animation_state()
        for i in animstate:
            try:
                self._checkBoxesPower[i['name']] = i['torque']
            except KeyError:
                self._checkBoxesPower[i['name']] = {}
                for key in self.ids:
                    self._checkBoxesPower[i['name']][key] = 2



        self.update_frames()

        metadata = self._recorder.get_meta_data()

        self._widget.lineAnimationName.setText(metadata[0])
        self._widget.lineAuthor.setText(metadata[2])
        self._widget.lineVersion.setText(str(metadata[1]))
        self._widget.fieldDescription.setPlainText(metadata[3])
Exemplo n.º 13
0
    def _load_dot(self, file_name=None):
        if file_name is None:
            file_name, _ = QFileDialog.getOpenFileName(self._widget, self.tr('Open graph from file'), None, self.tr('DOT graph (*.dot)'))
            if file_name is None or file_name == '':
                return

        try:
            fh = open(file_name, 'rb')
            dotcode = fh.read()
            fh.close()
        except IOError:
            return

        # disable controls customizing fetched ROS graph
        self._widget.depth_combo_box.setEnabled(False)
        self._widget.directions_combo_box.setEnabled(False)
        self._widget.package_type_combo_box.setEnabled(False)
        self._widget.filter_line_edit.setEnabled(False)
        self._widget.with_stacks_check_box.setEnabled(False)
        self._widget.mark_check_box.setEnabled(False)
        self._widget.colorize_check_box.setEnabled(False)
        self._widget.hide_transitives_check_box.setEnabled(False)

        self._update_graph(dotcode)
        self._redraw_graph_scene()
Exemplo n.º 14
0
 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
Exemplo n.º 15
0
    def _load_dot(self, file_name=None):
        if file_name is None:
            file_name, _ = QFileDialog.getOpenFileName(
                self._widget, self.tr('Open graph from file'), None,
                self.tr('DOT graph (*.dot)'))
            if file_name is None or file_name == '':
                return

        try:
            fh = open(file_name, 'rb')
            dotcode = fh.read()
            fh.close()
        except IOError:
            return

        # disable controls customizing fetched ROS graph
        self._widget.depth_combo_box.setEnabled(False)
        self._widget.directions_combo_box.setEnabled(False)
        self._widget.package_type_combo_box.setEnabled(False)
        self._widget.filter_line_edit.setEnabled(False)
        self._widget.with_stacks_check_box.setEnabled(False)
        self._widget.mark_check_box.setEnabled(False)
        self._widget.colorize_check_box.setEnabled(False)
        self._widget.hide_transitives_check_box.setEnabled(False)
        self._widget.show_system_check_box.setEnabled(False)

        self._update_graph(dotcode)
        self._redraw_graph_scene()
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
    def onSaveClicked(self):
        import inspect, os
        filepath = os.path.dirname(
            os.path.abspath(inspect.getfile(
                inspect.currentframe()))) + "/log/save_history.log"
        # print self.files
        # print self.window.text()
        # print self.group_selected_items.values()

        # print self.group_selected_items
        current_directory = self.get_current_opened_directory(filepath)
        # print current_directory
        # self._to_save_filename = QFileDialog.getSaveFileName(self, self.tr('csv File'), current_directory,
        #                                                      self.tr('csv (*.csv)'))
        self.saved_dir = str(
            QFileDialog.getExistingDirectory(self, "Select Directory",
                                             current_directory))
        # if self._to_save_filename[0] != "":
        #     with open(filepath, "w") as f:
        #         f.write(self._to_save_filename[0])
        if self.saved_dir != "":
            with open(filepath, "w") as f:
                f.write(self.saved_dir)

                # handler = logging.FileHandler(filepath, mode='w')
                # logger_topic.addHandler(handler)
                # print self._to_save_filename[0]
                # logger_topic.info()
        # self.save_path.setText(get_corrent_file_name(self._to_save_filename[0], ".csv"))
        self.save_path.setText(self.saved_dir)
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
	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")
Exemplo n.º 21
0
 def open_directory_dialogue(self):
     return QFileDialog.getExistingDirectory(
         None,
         "Select a directory to save gaits. Directory must be "
         "a subdirectory of march_gait_files or be named resources.",
         os.path.join(self.march_path, "ros2", "src", "gaits",
                      "march_gait_files"),
     )
Exemplo n.º 22
0
 def btnClicked(self):
     '''
         a slot which is called when the button is clicked
     '''
     cwd = os.getcwd()  # current working directory
     fileTupel = QFileDialog.getOpenFileName(self, 'Select file', cwd,
                                             "Bag files (*.bag)")
     self.fileName = fileTupel[0]
     self.bagEdit.setText(self.fileName)  # print filename to lineEdit
Exemplo n.º 23
0
    def _handle_load_clicked(self):
        filename = QFileDialog.getOpenFileName(
            self, self.tr('Load from File'), '.',
            self.tr('Bag files {.bag} (*.bag)'))

        if filename[0] != '':
            self.filename = filename[0]
            self.load_bag(filename[0])
            self._timeline.set_publishing_state(True)
Exemplo n.º 24
0
 def _handle_load_clicked(self):
     filenames = QFileDialog.getOpenFileNames(
         self, self.tr('Load from Files'), self.last_open_dir,
         self.tr('Bag files {.bag} (*.bag)'))
     if filenames and filenames[0]:
         self.last_open_dir = QFileInfo(
             filenames[0][0]).absoluteDir().absolutePath()
     for filename in filenames[0]:
         self.load_bag(filename)
 def btnClicked(self):
     tmp_path = os.path.join(os.path.expanduser('~'), "Documents",
                             "hg_rosbag", "test_files")
     filename = QFileDialog.getOpenFileName(self._annotator_widget,
                                            "Open File", tmp_path)
     bag = rosbag.Bag(filename[0])
     self._timeline.add_bag(bag)
     #self.OpenFile()
     print self._message_stamp
Exemplo n.º 26
0
 def change_gait_directory(self):
     self.gait_directory = str(
         QFileDialog.getExistingDirectory(
             None, 'Select a directory to save gaits'))
     if self.gait_directory == '':  # If directory dialogue is canceled
         self.gait_directory = None
         self.change_gait_directory_button.setText(
             'Select a gait directory...')
     else:
         self.change_gait_directory_button.setText(self.gait_directory)
Exemplo n.º 27
0
 def save(self):
     '''
     Saves all currently recorded frames into a json file
     '''
     self.treeModeChanged(self._previousTreeMode)
     self.set_metadata()
     if not self._saveDir:
         self._saveDir = QFileDialog.getExistingDirectory()
     status = self._recorder.save_animation(self._saveDir, self._widget.lineAnimationName.text(), self._checkBoxesSave)
     self._widget.statusBar.showMessage(status)
Exemplo n.º 28
0
 def open_file_dialogue(self, path_to_open: os.path = None):
     if path_to_open is None:
         path_to_open = os.path.join(self.march_path, "ros2", "src",
                                     "gaits", "march_gait_files")
     return QFileDialog.getOpenFileName(
         self,
         "Select a subgait to import.",
         path_to_open,
         "March Subgait (*.subgait)",
     )
Exemplo n.º 29
0
    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)
Exemplo n.º 30
0
    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()
Exemplo n.º 31
0
    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)
Exemplo n.º 32
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()
Exemplo n.º 33
0
 def onButtonClicked(self):
     import inspect, os
     filepath = os.path.dirname(
         os.path.abspath(inspect.getfile(
             inspect.currentframe()))) + "/log/save_csv.log"
     current_directory = self.get_current_opened_directory(filepath)
     window = self.window.text()
     try:
         val = float(window)
     except ValueError:
         QMessageBox.about(self, "Error in Window Time",
                           "That's not a number!")
         return
     if val >= self.duration:
         QMessageBox.about(
             self, "Error in Window Time",
             "time need to be smaller than: " + str(self.duration))
         return
     # filename = QFileDialog.getSaveFileName(self, self.tr('csv File'), current_directory, self.tr('csv (*.csv)'))
     saved_dir = str(
         QFileDialog.getExistingDirectory(self, "Select Directory",
                                          current_directory))
     # if filename[0] != '':
     #     with open(filepath, "w") as f:
     #         f.write(filename[0])
     if saved_dir != '':
         with open(filepath, "w") as f:
             f.write(saved_dir)
         topics = self.selected_bag_topics
         specific_features_selection = self.selected_specific_features
         general_features_selection = self.selected_general_features
         with open(get_path() + 'logger.log', "w") as f:
             for topic in topics:
                 f.write(topic + "\n")
             for topic1 in specific_features_selection:
                 f.write(topic1 + "\n")
             for topic2 in general_features_selection:
                 f.write(topic2 + "\n")
         ef = E.ExtractFeatures(topics, float(window),
                                specific_features_selection,
                                general_features_selection)
         counter = 0
         for bag_file in self.bag_files:
             df = ef.generate_features(bag_file)
             if len(self.bag_files) == 1:
                 counter = -1
             # temp = filename + "/" +
             # temp = get_corrent_file_name(filename[0], ".csv", counter)
             csv_path = generate_csv_from_bag(saved_dir, bag_file)
             # temp = "%s_%s%s" % (filename[0],counter,".csv")
             E.write_to_csv(csv_path, df)
             counter = counter + 1
         QMessageBox.about(self, "csv export",
                           "csv was exported successfuly")
Exemplo n.º 34
0
    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)
Exemplo n.º 35
0
    def _import(self):
        file_path, _ = QFileDialog.getOpenFileName(self, self.tr('Import custom graph'),
                                                   None, self.tr('DOT graph (*.dot)'))

        if file_path is None or file_path == '':
            return

        custom_graph = Graph(self._dot_processor, file_path, file_path)
        self.decision_graphs[custom_graph.source] = custom_graph
        self._current_graph = custom_graph

        self.decision_graphs_combo_box.addItem(custom_graph.source)
        self.decision_graphs_combo_box.setCurrentIndex(self.decision_graphs_combo_box.findText(custom_graph.source))
Exemplo n.º 36
0
    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()
Exemplo n.º 37
0
    def _load_dot(self, file_name=None):
        if file_name is None:
            file_name, _ = QFileDialog.getOpenFileName(
                self._widget,
                self.tr('Open graph from file'),
                None,
                self.tr('DOT graph (*.dot)'))
            if file_name is None or file_name == '':
                return

        try:
            fhandle = open(file_name, 'rb')
            dotcode = fhandle.read()
            fhandle.close()
        except IOError:
            return

        self._update_graph_view(dotcode)
    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)
Exemplo n.º 39
0
    def _load_dot(self, file_name=None):
        if file_name is None:
            file_name, _ = QFileDialog.getOpenFileName(self._widget, self.tr('Open graph from file'), None, self.tr('DOT graph (*.dot)'))
            if file_name is None or file_name == '':
                return

        try:
            fh = open(file_name, 'rb')
            dotcode = fh.read()
            fh.close()
        except IOError:
            return

        # disable controls customizing fetched ROS graph
        self._widget.graph_type_combo_box.setEnabled(False)
        self._widget.filter_line_edit.setEnabled(False)
        self._widget.topic_filter_line_edit.setEnabled(False)
        self._widget.namespace_cluster_check_box.setEnabled(False)
        self._widget.actionlib_check_box.setEnabled(False)
        self._widget.dead_sinks_check_box.setEnabled(False)
        self._widget.leaf_topics_check_box.setEnabled(False)
        self._widget.quiet_check_box.setEnabled(False)

        self._update_graph_view(dotcode)
Exemplo n.º 40
0
    def _handle_load_clicked(self, checked):
        filename = QFileDialog.getOpenFileName(self, self.tr('Load from File'), '.', self.tr('rqt_console message file {.csv} (*.csv)'))
        if filename[0] != '':
            try:
                with open(filename[0], 'r') as h:
                    lines = h.read().splitlines()
            except IOError as e:
                qWarning(str(e))
                return False

            # extract column header
            columns = lines[0].split(';')
            if len(lines) < 2:
                return True

            # join wrapped lines
            rows = []
            last_wrapped = False
            for line in lines[1:]:
                # ignore empty lines
                if not line:
                    continue
                # check for quotes and remove them
                if line == '"':
                    has_prefix = not last_wrapped
                    has_suffix = last_wrapped
                    line = ''
                else:
                    has_prefix = line[0] == '"'
                    if has_prefix:
                        line = line[1:]
                    has_suffix = line[-1] == '"'
                    if has_suffix:
                        line = line[:-1]

                # ignore line without prefix if previous line was not wrapped
                if not has_prefix and not last_wrapped:
                    continue
                # remove wrapped line which is not continued on the next line
                if last_wrapped and has_prefix:
                    rows.pop()

                # add/append lines
                if last_wrapped:
                    rows[-1] += line
                else:
                    # add line without quote prefix
                    rows.append(line)

                last_wrapped = not has_suffix

            # generate message for each row
            messages = []
            skipped = []
            for row in rows:
                data = row.split('";"')
                msg = Message()
                msg.set_stamp_format('hh:mm:ss.ZZZ (yyyy-MM-dd)')
                for i, column in enumerate(columns):
                    value = data[i]
                    if column == 'message':
                        msg.message = value.replace('\\"', '"')
                    elif column == 'severity':
                        msg.severity = int(value)
                        if msg.severity not in Message.SEVERITY_LABELS:
                            skipped.append('Unknown severity value: %s' % value)
                            msg = None
                            break
                    elif column == 'stamp':
                        parts = value.split('.')
                        if len(parts) != 2:
                            skipped.append('Unknown timestamp format: %s' % value)
                            msg = None
                            break
                        msg.stamp = (int(parts[0]), int(parts[1]))
                    elif column == 'topics':
                        msg.topics = value.split(',')
                    elif column == 'node':
                        msg.node = value
                    elif column == 'location':
                        msg.location = value
                    else:
                        skipped.append('Unknown column: %s' % column)
                        msg = None
                        break
                if msg:
                    messages.append(msg)
            if skipped:
                qWarning('Skipped %d rows since they do not appear to be in rqt_console message file format:\n- %s' % (len(skipped), '\n- '.join(skipped)))

            if messages:
                self._model.insert_rows(messages)

                self._handle_pause_clicked(True)

            return True

        else:
            qWarning('File does not appear to be a rqt_console message file: missing file header.')
            return False
Exemplo n.º 41
0
 def _handle_config_ref_button_clicked(self):
     rospack = rospkg.RosPack()
     fname = QFileDialog.getOpenFileName(self._widget, 'Open file', rospack.get_path('lgsvl_simulator_bridge')+'/config')
     self._widget.configpath_box.setText(fname[0])
 def _handle_load_clicked(self):
     filename = QFileDialog.getOpenFileName(
             self, self.tr('Load from File'), '.',
             self.tr('YAML file {.yaml} (*.yaml)'))
     if filename[0] != '':
         self.load_param(filename[0])
 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_load_clicked(self):
     filename = QFileDialog.getOpenFileName(self, self.tr('Load from File'), '.', self.tr('Bag files {.bag} (*.bag)'))
     if filename[0] != '':
         self.load_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])