def add_export_filter(self, name, extension, function, pickertag=None, pickertype=None): full_name = "actionExportFlightTrack" + clean_string(name) if hasattr(self, full_name): raise ValueError("'{}' has already been set!".format(full_name)) action = QtWidgets.QAction(self) action.setObjectName(full_name) action.setText(QtCore.QCoreApplication.translate("MSSMainWindow", name, None)) self.menuExport_Active_Flight_Track.addAction(action) def save_function_wrapper(self): default_filename = os.path.join(self.last_save_directory, self.active_flight_track.name) + "." + extension filename = get_save_filename( self, "Export Flight Track", default_filename, name + " (*." + extension + ")", pickertype=pickertype) if filename is not None: try: function(filename, self.active_flight_track.name, self.active_flight_track.waypoints) # wildcard exception to be resilient against error introduced by user code except Exception as ex: logging.error("file io plugin error: %s %s", type(ex), ex) QtWidgets.QMessageBox.critical( self, self.tr("file io plugin error"), self.tr("ERROR: {} {}".format(type(ex), ex))) setattr(self, full_name, types.MethodType(save_function_wrapper, self)) action.triggered.connect(getattr(self, full_name))
def add_import_filter(self, name, extension, function, pickertag=None, pickertype=None): full_name = "actionImportFlightTrack" + clean_string(name) if hasattr(self, full_name): raise ValueError("'{}' has already been set!".format(full_name)) action = QtWidgets.QAction(self) action.setObjectName(full_name) action.setText(QtCore.QCoreApplication.translate("MSSMainWindow", name, None)) self.menuImport_Flight_Track.addAction(action) def load_function_wrapper(self): filename = get_open_filename( self, "Import Flight Track", self.last_save_directory, "All Files (*." + extension + ")", pickertype=pickertype) if filename is not None: try: ft_name, new_waypoints = function(filename) # wildcard exception to be resilient against error introduced by user code except Exception as ex: logging.error("file io plugin error: %s %s", type(ex), ex) QtWidgets.QMessageBox.critical( self, self.tr("file io plugin error"), self.tr("ERROR: {} {}".format(type(ex), ex))) else: if not ft_name: ft_name = filename waypoints_model = ft.WaypointsTableModel(name=ft_name, waypoints=new_waypoints) listitem = QFlightTrackListWidgetItem(waypoints_model, self.listFlightTracks) listitem.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) self.listFlightTracks.setCurrentItem(listitem) self.activate_flight_track(listitem) setattr(self, full_name, types.MethodType(load_function_wrapper, self)) action.triggered.connect(getattr(self, full_name))
def __init__(self, parent=None): super(EditorMainWindow, self).__init__(parent) self.path = None self.file_content = None self.layout = QtWidgets.QVBoxLayout() # Could also use a QTextEdit and set self.editor.setAcceptRichText(False) self.editor = QtWidgets.QPlainTextEdit() # Setup the QTextEdit editor configuration fixedfont = QtGui.QFontDatabase.systemFont( QtGui.QFontDatabase.FixedFont) fixedfont.setPointSize(12) self.editor.setFont(fixedfont) # self.path holds the path of the currently open file. # If none, we haven't got a file open yet (or creating new). self.path = constants.MSS_CONFIG_PATH self.layout.addWidget(self.editor) self.container = QtWidgets.QWidget() self.container.setLayout(self.layout) self.setCentralWidget(self.container) self.status = QtWidgets.QStatusBar() self.setStatusBar(self.status) self.file_toolbar = QtWidgets.QToolBar("File") self.file_toolbar.setIconSize(QtCore.QSize(14, 14)) self.addToolBar(self.file_toolbar) self.file_menu = self.menuBar().addMenu("&File") self.open_file_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Folder-new.svg')), "Open file...", self) self.open_file_action.setStatusTip("Open file") self.open_file_action.triggered.connect(self.file_open) self.file_menu.addAction(self.open_file_action) self.file_toolbar.addAction(self.open_file_action) self.save_file_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Document-save.svg')), "Save", self) self.save_file_action.setStatusTip("Save current page") self.save_file_action.triggered.connect(self.file_save) self.file_menu.addAction(self.save_file_action) self.file_toolbar.addAction(self.save_file_action) self.saveas_file_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Document-save-as.svg')), "Save As...", self) self.saveas_file_action.setStatusTip( "Save current page to specified file") self.saveas_file_action.triggered.connect(self.file_saveas) self.file_menu.addAction(self.saveas_file_action) self.file_toolbar.addAction(self.saveas_file_action) self.print_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Document-print.svg')), "Print...", self) self.print_action.setStatusTip("Print current page") self.print_action.triggered.connect(self.file_print) self.file_menu.addAction(self.print_action) self.file_toolbar.addAction(self.print_action) self.edit_toolbar = QtWidgets.QToolBar("Edit") self.edit_toolbar.setIconSize(QtCore.QSize(16, 16)) self.addToolBar(self.edit_toolbar) self.edit_menu = self.menuBar().addMenu("&Edit") self.undo_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Edit-undo.svg')), "Undo", self) self.undo_action.setStatusTip("Undo last change") self.undo_action.triggered.connect(self.editor.undo) self.edit_menu.addAction(self.undo_action) self.redo_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Edit-redo.svg')), "Redo", self) self.redo_action.setStatusTip("Redo last change") self.redo_action.triggered.connect(self.editor.redo) self.edit_toolbar.addAction(self.redo_action) self.edit_menu.addAction(self.redo_action) self.edit_menu.addSeparator() self.cut_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Edit-cut.svg')), "Cut", self) self.cut_action.setStatusTip("Cut selected text") self.cut_action.triggered.connect(self.editor.cut) self.edit_toolbar.addAction(self.cut_action) self.edit_menu.addAction(self.cut_action) self.copy_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Edit-copy.svg')), "Copy", self) self.copy_action.setStatusTip("Copy selected text") self.copy_action.triggered.connect(self.editor.copy) self.edit_toolbar.addAction(self.copy_action) self.edit_menu.addAction(self.copy_action) self.paste_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Edit-paste.svg')), "Paste", self) self.paste_action.setStatusTip("Paste from clipboard") self.paste_action.triggered.connect(self.editor.paste) self.edit_toolbar.addAction(self.paste_action) self.edit_menu.addAction(self.paste_action) self.select_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Edit-select-all.svg')), "Select all", self) self.select_action.setStatusTip("Select all text") self.select_action.triggered.connect(self.editor.selectAll) self.edit_menu.addAction(self.select_action) self.edit_menu.addSeparator() self.wrap_action = QtWidgets.QAction( QtGui.QIcon(icons('config_editor', 'Go-next.svg')), "Wrap text to window", self) self.wrap_action.setStatusTip("Toggle wrap text to window") self.wrap_action.setCheckable(True) self.wrap_action.setChecked(True) self.wrap_action.triggered.connect(self.edit_toggle_wrap) self.edit_menu.addAction(self.wrap_action) self.update_title() self.show()