示例#1
0
 def get_profile_file(self):
     # save the profile
     (path, _) = QFileDialog.getSaveFileName(
         self, "New profile file",
         nm.settings().current_dialog_path,
         "node manager profile files (*.nmprofile);;All files (*)"
     )  # _:=filter
     if path:
         if not path.endswith('.nmprofile'):
             path = "%s.nmprofile" % path
         nm.settings().current_dialog_path = os.path.dirname(path)
         try:
             (pkg, _) = package_name(os.path.dirname(path))  # _:=pkg_path
             if pkg is None:
                 ret = WarningMessageBox(
                     QMessageBox.Warning,
                     "New File Error",
                     'The new file is not in a ROS package',
                     buttons=QMessageBox.Ok | QMessageBox.Cancel).exec_()
                 if ret == QMessageBox.Cancel:
                     return None
             return path
         except EnvironmentError as e:
             WarningMessageBox(QMessageBox.Warning, "New File Error",
                               'Error while create a new file',
                               str(e)).exec_()
     return None
示例#2
0
    def get_profile_file(self):
        '''
        Opens file manager dialog to save to select a new file for node manager profile.

        :return: path to profile file
        :rtype: str
        '''
        # save the profile
        (path, _) = QFileDialog.getSaveFileName(
            self, "New profile file",
            nm.settings().current_dialog_path,
            "node manager profile files (*.nmprofile);;All files (*)"
        )  # _:=filter
        if path:
            if not path.endswith('.nmprofile'):
                path = "%s.nmprofile" % path
            nm.settings().current_dialog_path = os.path.dirname(path)
            try:
                # we need a grpc url for local node manager daemon
                nmd_url = nmdurl.nmduri()
                (pkg, _) = package_name(
                    nmdurl.join(nmd_url, os.path.dirname(path)))  # _:=pkg_path
                if pkg is None:
                    ret = MessageBox.warning(
                        self,
                        "New File Error",
                        'The new file is not in a ROS package',
                        buttons=MessageBox.Ok | MessageBox.Cancel)
                    if ret == MessageBox.Cancel:
                        return None
                return path
            except EnvironmentError as e:
                MessageBox.warning(self, "New File Error",
                                   'Error while create a new file', utf8(e))
        return None
 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 save_trajectory_callback(self):
        self.blockSignals(True)
        print "Save gains"
        # Save data to file that we can read in
        # TODO - invalid file names

        fileName = QFileDialog.getSaveFileName()

        #if fileName[0] checks to ensure that the file dialog has not been canceled
        if fileName[0]:
            if self.calculate_trajectory():
                print self.robot_command;
                newFileptr = open(fileName[0], 'w')
                # Suggested format for files to make it easy to combine different outputs
                newFileptr.write('# Trajectory \n')
                newFileptr.write(self.robot_command)
                newFileptr.write('\n')
                newFileptr.close()
            else:
                print "Trajectory calculation failure - do not save!"
        else:
            print "Save cancelled."

        newFilePtr.close()

        self.blockSignals(False)
    def newLocation(self):
        location = QFileDialog.getSaveFileName(filter="*.bag;;*", directory=os.path.dirname(self.demoLocation.text()))[0]
        if len(location) == 0:
            return
        self.demoLocation.setText(location)
        self.playDemoButton.setEnabled(False)
        self.zeroMarker.clear()
        self.zeroMarker.setEnabled(False)
        self.startTrajectoryButton.setEnabled(True)
        self.startButton.setEnabled(True)
        self.addButton.setEnabled(True)
        self.openHandButton.setEnabled(True)
        self.closeHandButton.setEnabled(True)
        self.endButton.setEnabled(True)

        try:
            os.remove(location)
            self._showStatus("Deleted existing save file.")
        except OSError:
            pass

        if not self.kinesthetic_interaction:
            self._showWarning("Record keyframe demo server unreachable", "Record keyframe demo server isn't loaded. Run `roslaunch hlpr_record_demonstration start_record_services.launch` and restart the GUI.")
            return

        saveFile = self.kinesthetic_interaction.init_demo(location=location, timestamp=self.shouldTimestamp.isChecked())
        self.demoLocation.setText(saveFile)
        self.demoName.setText(os.path.basename(saveFile))
        self.keyframeCount.setText("")
        self.playbackTree.clear()
示例#6
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)
示例#7
0
 def _handle_save_clicked(self):
     filename = QFileDialog.getSaveFileName(
         self, self.tr('Save to file...'), '.',
         self.tr('YAML files {.yaml} (*.yaml)'))
     if filename[0] != '':
         with open(filename[0], 'w') as outfile:
             outfile.write(
                 yaml.dump(self.places_dict, default_flow_style=False))
示例#8
0
    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_FileDialog(self):
     filename = QFileDialog.getSaveFileName(self.parent, 'Save file',
                                            os.path.expanduser('~'))
     self.parent.filename = filename[0]
     if self.parent.jpeg_data is None:
         print 'no image data'
     else:
         f = open(self.parent.filename.encode(), 'wb')
         f.write(self.parent.jpeg_data)
         f.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()
示例#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()
    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)
示例#13
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()
示例#14
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)
示例#15
0
    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'), '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()
示例#17
0
    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()
示例#18
0
    def _export(self):
        file_name, _ = QFileDialog.getSaveFileName(
            self, self.tr("Save as image"), "graph.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 _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
         self._proxymodel.save_to_file(handle)
         handle.close()
         self.update_status()
示例#20
0
    def accept(self):
        if self.textedit.isVisible():
            try:
                tmp_file = os.path.join(nm.screen().LOG_PATH,
                                        'tmp_sync_interface.sync')
                with open(tmp_file, 'w+') as f:
                    f.write(self.textedit.toPlainText())
                from master_discovery_fkie.common import read_interface
                read_interface(tmp_file)
                if not self._new_iface and self.interface_field.currentText(
                ) in self._interfaces_files:
                    fileName = self._interfaces_files[
                        self.interface_field.currentText()]
                else:
                    fileName, _ = QFileDialog.getSaveFileName(
                        self, 'Save sync interface', '/home',
                        "Sync Files (*.sync)")
                if fileName:
                    with open(fileName, 'w+') as f:
                        self._interface_filename = fileName
                        f.write(self.textedit.toPlainText())
                        if self._new_iface:
                            self.interface_field.clear()
                            self._interfaces_files = None
                        self._on_select_interface_clicked()


#        QDialog.accept(self)
#        self.resetView()
            except Exception as e:
                WarningMessageBox(QMessageBox.Warning, "Create sync interface",
                                  "Error while create interface",
                                  str(e)).exec_()
        elif self.interface_field.isVisible():
            interface = self.interface_field.currentText()
            if self._interfaces_files and interface in self._interfaces_files:
                self._interface_filename = self._interfaces_files[interface]
                self._sync_args = []
                self._sync_args.append(''.join(['_interface_url:=',
                                                interface]))
                QDialog.accept(self)
                self.resetView()
        else:
            QDialog.accept(self)
            self.resetView()
示例#21
0
    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)
示例#22
0
    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 _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)
示例#24
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)
示例#25
0
 def on_new_xml_clicked(self):
     '''
     Creates a new launch file.
     '''
     # get new file from open dialog, use last path if one exists
     open_path = self.__current_path
     if self.launchlist_model.currentPath is not None:
         open_path = self.launchlist_model.currentPath
     (fileName, _) = QFileDialog.getSaveFileName(self,
                                                 "New launch file",
                                                 open_path,
                                                 "Config files (*.launch *.yaml);;All files (*)")
     if fileName:
         try:
             (pkg, _) = package_name(os.path.dirname(fileName))  # _:=pkg_path
             if pkg is None:
                 WarningMessageBox(QMessageBox.Warning, "New File Error",
                                   'The new file is not in a ROS package').exec_()
                 return
             with open(fileName, 'w+') as f:
                 f.write("<launch>\n"
                         "  <arg name=\"robot_ns\" default=\"my_robot\"/>\n"
                         "  <group ns=\"$(arg robot_ns)\">\n"
                         "    <param name=\"tf_prefix\" value=\"$(arg robot_ns)\"/>\n"
                         "\n"
                         "    <node pkg=\"my_pkg\" type=\"my_node\" name=\"my_name\" >\n"
                         "      <param name=\"capability_group\" value=\"MY_GROUP\"/>\n"
                         "    </node>\n"
                         "  </group>\n"
                         "</launch>\n"
                         )
             self.__current_path = os.path.dirname(fileName)
             self.launchlist_model.setPath(self.__current_path)
             self.edit_signal.emit([fileName])
         except EnvironmentError as e:
             WarningMessageBox(QMessageBox.Warning, "New File Error",
                               'Error while create a new file',
                               '%s' % e).exec_()
 def get_profile_file(self):
     # save the profile
     (path, _) = QFileDialog.getSaveFileName(self,
                                             "New profile file",
                                             nm.settings().current_dialog_path,
                                             "node manager profile files (*.nmprofile);;All files (*)")  # _:=filter
     if path:
         if not path.endswith('.nmprofile'):
             path = "%s.nmprofile" % path
         nm.settings().current_dialog_path = os.path.dirname(path)
         try:
             (pkg, _) = package_name(os.path.dirname(path))  # _:=pkg_path
             if pkg is None:
                 ret = MessageBox.warning(self, "New File Error",
                                          'The new file is not in a ROS package', buttons=MessageBox.Ok | MessageBox.Cancel)
                 if ret == MessageBox.Cancel:
                     return None
             return path
         except EnvironmentError as e:
             MessageBox.warning(self, "New File Error",
                                'Error while create a new file',
                                utf8(e))
     return None
示例#27
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
    def accept(self):
        if self.textedit.isVisible():
            try:
                tmp_file = os.path.join(nm.screen().LOG_PATH, 'tmp_sync_interface.sync')
                with open(tmp_file, 'w+') as f:
                    f.write(self.textedit.toPlainText())
                from master_discovery_fkie.common import read_interface
                read_interface(tmp_file)
                if not self._new_iface and self.interface_field.currentText() in self._interfaces_files:
                    fileName = self._interfaces_files[self.interface_field.currentText()]
                else:
                    fileName, _ = QFileDialog.getSaveFileName(self, 'Save sync interface', '/home', "Sync Files (*.sync)")
                if fileName:
                    with open(fileName, 'w+') as f:
                        self._interface_filename = fileName
                        f.write(self.textedit.toPlainText())
                        if self._new_iface:
                            self.interface_field.clear()
                            self._interfaces_files = None
                        self._on_select_interface_clicked()
#        QDialog.accept(self)
#        self.resetView()
            except Exception as e:
                MessageBox.warning(self, "Create sync interface",
                                   "Error while create interface",
                                   utf8(e))
        elif self.interface_field.isVisible():
            interface = self.interface_field.currentText()
            if self._interfaces_files and interface in self._interfaces_files:
                self._interface_filename = self._interfaces_files[interface]
                self._sync_args = []
                self._sync_args.append(''.join(['_interface_url:=', interface]))
                QDialog.accept(self)
                self.resetView()
        else:
            QDialog.accept(self)
            self.resetView()
    def newLocation(self):
        location = QFileDialog.getSaveFileName(
            filter="*.bag;;*",
            directory=os.path.dirname(self.demoLocation.text()))[0]
        if len(location) == 0:
            return
        self.demoLocation.setText(location)
        self.playDemoButton.setEnabled(False)
        self.zeroMarker.clear()
        self.zeroMarker.setEnabled(False)
        self.startTrajectoryButton.setEnabled(True)
        self.startButton.setEnabled(True)
        self.addButton.setEnabled(True)
        self.openHandButton.setEnabled(True)
        self.closeHandButton.setEnabled(True)
        self.endButton.setEnabled(True)

        try:
            os.remove(location)
            self._showStatus("Deleted existing save file.")
        except OSError:
            pass

        if not self.kinesthetic_interaction:
            self._showWarning(
                "Record keyframe demo server unreachable",
                "Record keyframe demo server isn't loaded. Run `roslaunch hlpr_record_demonstration start_record_services.launch` and restart the GUI."
            )
            return

        saveFile = self.kinesthetic_interaction.init_demo(
            location=location, timestamp=self.shouldTimestamp.isChecked())
        self.demoLocation.setText(saveFile)
        self.demoName.setText(os.path.basename(saveFile))
        self.keyframeCount.setText("")
        self.playbackTree.clear()
 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])
示例#31
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])
示例#32
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])