5 from python_qt_binding
import QtWidgets, QtCore, QtGui
12 super(ProjectPlugin, self).
__init__(context)
20 context.add_widget(self.
widget)
26 self.
settings = QtCore.QSettings(
'rqt_frame_editor',
'frame_editor')
33 raise NotImplementedError
36 raise NotImplementedError
42 newAction = QtWidgets.QAction(
"&New", self)
43 newAction.setShortcuts(QtGui.QKeySequence.New)
44 newAction.setStatusTip(
"Create a new file")
45 newAction.setIcon(QtGui.QIcon.fromTheme(
"document-new"))
46 newAction.triggered.connect(self.
new_file)
48 openAction = QtWidgets.QAction(
"&Open", self)
49 openAction.setShortcuts(QtGui.QKeySequence.Open)
50 openAction.setStatusTip(
"Open a file")
51 openAction.setIcon(QtGui.QIcon.fromTheme(
"document-open"))
52 openAction.triggered.connect(self.
open)
54 saveAction = QtWidgets.QAction(
"&Save", self)
55 saveAction.setShortcuts(QtGui.QKeySequence.Save)
56 saveAction.setStatusTip(
"Save file")
57 saveAction.setIcon(QtGui.QIcon.fromTheme(
"document-save"))
58 saveAction.triggered.connect(self.
save)
60 saveAsAction = QtWidgets.QAction(
"Save_&As", self)
61 saveAsAction.setShortcuts(QtGui.QKeySequence.SaveAs)
62 saveAsAction.setStatusTip(
"Save file as...")
63 saveAsAction.setIcon(QtGui.QIcon.fromTheme(
"document-save-as"))
64 saveAsAction.triggered.connect(self.
save_as)
66 undoAction = self.
editor.undo_stack.createUndoAction(self, self.tr(
"&Undo"))
67 undoAction.setShortcuts(QtGui.QKeySequence.Undo)
68 undoAction.setIcon(QtGui.QIcon.fromTheme(
"edit-undo"))
69 redoAction = self.
editor.undo_stack.createRedoAction(self, self.tr(
"&Redo"))
70 redoAction.setShortcuts(QtGui.QKeySequence.Redo)
71 redoAction.setIcon(QtGui.QIcon.fromTheme(
"edit-redo"))
87 tool_bar = self.
widget.mainToolBar
89 undoButton = QtWidgets.QToolButton()
90 undoButton.setDefaultAction(undoAction)
91 redoButton = QtWidgets.QToolButton()
92 redoButton.setDefaultAction(redoAction)
94 tool_bar.addAction(newAction)
95 tool_bar.addAction(openAction)
96 tool_bar.addAction(saveAction)
97 tool_bar.addAction(saveAsAction)
98 tool_bar.addSeparator()
99 tool_bar.addWidget(undoButton)
100 tool_bar.addWidget(redoButton)
116 file_name, stuff = QtWidgets.QFileDialog.getOpenFileName(self.
widget,
117 "Select a file to open", self.
settings.value(
'last_folder',
''), self.file_type)
119 if not file_name ==
"":
120 if self.
editor.get_file_name() ==
"":
125 rospy.logwarn(
"current filename '{}'".format(self.
editor.get_file_name()))
126 choice = QtWidgets.QMessageBox.question(self.
widget,
127 "Keep current frames?",
128 "Do you want to keep frames in your list, which are not in the currently loaded file?",
129 QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes)
130 if choice == QtWidgets.QMessageBox.Yes:
141 rospy.logerr(
"ERROR LOADING FILE")
147 self.
settings.setValue(
'last_folder', os.path.dirname(file_name))
152 """If the file has been modified, the user is asked, whether he wants to save it first or not.
153 Returns True when the file has been saved or was unmodified.
154 Returns False when the user reconsiders in case of an unmodified file.
156 if self.
widget.isWindowModified():
157 reply = QtWidgets.QMessageBox.warning(self.
widget,
"frame editor",
158 "The file has been modified.\nDo you want to save your changes?",
159 QtWidgets.QMessageBox.Yes |
160 QtWidgets.QMessageBox.No |
161 QtWidgets.QMessageBox.Cancel |
162 QtWidgets.QMessageBox.Escape,
163 QtWidgets.QMessageBox.Yes)
165 if reply == QtWidgets.QMessageBox.Yes:
167 elif reply == QtWidgets.QMessageBox.Cancel:
173 """Calls save_as or save_file
175 if self.
editor.get_file_name() ==
"":
183 file_name, stuff = QtWidgets.QFileDialog.getSaveFileName(
None,
"Save File", self.
editor.get_full_file_path(), self.file_type)
187 if not file_name.endswith(
".yaml"):
193 rospy.logwarn(
"Saving canceled")
197 rospy.loginfo(
"File saved")
201 raise NotImplementedError
204 file_name = self.
editor.get_file_name()
207 shown_name =
"Untitled"
208 if not file_name ==
"":
209 shown_name = file_name
215 self.
editor.undo_stack.setClean()
216 self.
widget.setWindowModified(
False)
221 self.
widget.lab_file_name.setText(self.tr(
'{} - {}'.format(shown_name,
"frame editor")))
224 return QtCore.QFileInfo(full_name).fileName()
227 self.
widget.setWindowModified(
not is_clean)
230 modified_identifier =
"*" if self.
widget.isWindowModified
else ""
232 self.
widget.lab_file_name.setText(self.tr(
'{}{} - {}'.format(shown_name, modified_identifier,
"frame editor")))
242 if self.
widget.isWindowModified():
243 if self.
editor.get_file_name() !=
"":
244 autosave_path = self.
editor.get_full_file_path()+
".autosave"
247 reply = QtWidgets.QMessageBox.warning(self.
widget,
"frame editor",
248 "The file has been modified.\nDo you want to save your changes before exiting (Save As...)?",
249 QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.Default,
250 QtWidgets.QMessageBox.No)
252 if reply == QtWidgets.QMessageBox.Yes:
255 os.remove(autosave_path)