def close_application(self): choice = QMessageBox.question(self, 'exit', "Exit program?", QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No) if choice == QMessageBox.StandardButton.Yes: self.parent().deleteLater() self.parent().close() else: pass
def pop_exit_dialog(parent) -> bool: return (QMessageBox.question( parent, "Exiting...", "Are you sure?", QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No, ) == QMessageBox.StandardButton.Yes)
def on_click(self): buttonReply = QMessageBox.question( self, 'PyQt6', 'Do you like PyQt6?', QMessageBox.StandardButtons.Yes | QMessageBox.StandardButtons.No, QMessageBox.StandardButtons.Yes) if buttonReply == QMessageBox.StandardButtons.Yes: self.statusBar().showMessage('You clicked Yes. That' 's good.') else: self.statusBar().showMessage('You clicked No. Why are you here?')
def _actionTriggered(self, _, action_id): if action_id == "reset": result = QMessageBox.question( None, i18n_catalog.i18nc("@title:window", "Reset to factory"), i18n_catalog.i18nc( "@label", "Reset will remove all your current printers and profiles! Are you sure you want to reset?" )) if result == QMessageBox.StandardButton.Yes: Resources.factoryReset() self._application.closeApplication()
def closeEvent(self, event): reply = QMessageBox.question(self, 'Message', "Are you sure to quit?", QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No) if reply == QMessageBox.StandardButton.Yes: event.accept() else: event.ignore()
def load_config(self, config: dict, bypass_question: bool = False) -> None: for key in ['name', 'dirpath', 'platforms', 'warnings']: if key not in config.keys(): return if not bypass_question: # noinspection PyTypeChecker if QMessageBox.StandardButton.Yes != QMessageBox.question( self, "Load Configuration?", "Configuration File Detected. Load File?", QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No): return self.header_name_input.setText(config['name']) self.header_output_path_input.setText(config['dirpath']) self.platforms.clear() for p in config['platforms']: self.platforms.append(Platform(p['type'], p['name'])) self.warnings.clear() for i in range(len(config['warnings'])): item: Dict[str, str] = {'Name': config['warnings'][i]['Name']} for platform in self.platforms: if platform.platform_name in config['warnings'][i].keys(): item[platform.platform_name] = str( config['warnings'][i][platform.platform_name]) else: item[platform.platform_name] = '' self.warnings.append(item) # self.configuration_save_button.setEnabled(True) self.__loaded_configuration = config.copy() self.configuration_save_button.clicked.connect( lambda: self.save_to_file(self.get_current_configuration(), self. __loaded_configuration_path)) self.update_platform_headers(bypass_save_enable=True)
def deleteSelectedGroup(self): file_path = os.path.join(self.experiment_file_directory, self.experiment_file_name + '.hdf5') group_path = h5io.getPathFromTreeItem( self.groupTree.selectedItems()[0]) group_name = group_path.split('/')[-1] buttonReply = QMessageBox.question( self, 'Delete series', "Are you sure you want to delete group {}?".format(group_name), QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No) if buttonReply == QMessageBox.StandardButton.Yes: h5io.deleteGroup(file_path=file_path, group_path=group_path) print('Deleted group {}'.format(group_name)) self.updateExistingRoiSetList() self.populateGroups() else: print('Delete aborted')
def saveRois(self): file_path = os.path.join(self.experiment_file_directory, self.experiment_file_name + '.hdf5') roi_set_name = self.le_roiSetName.text() if roi_set_name in h5io.getAvailableRoiSetNames( file_path, self.series_number): buttonReply = QMessageBox.question( self, 'Overwrite roi set', "Are you sure you want to overwrite roi set: {}?".format( roi_set_name), QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No) if buttonReply == QMessageBox.StandardButton.Yes: self.plugin.saveRoiSet(file_path, series_number=self.series_number, roi_set_name=roi_set_name, roi_mask=self.roi_mask, roi_response=self.roi_response, roi_image=self.roi_image, roi_path=self.roi_path) print('Saved roi set {} to series {}'.format( roi_set_name, self.series_number)) self.populateGroups() self.updateExistingRoiSetList() else: print('Overwrite aborted - pick a unique roi set name') else: self.plugin.saveRoiSet(file_path, series_number=self.series_number, roi_set_name=roi_set_name, roi_mask=self.roi_mask, roi_response=self.roi_response, roi_image=self.roi_image, roi_path=self.roi_path) print('Saved roi set {} to series {}'.format( roi_set_name, self.series_number)) self.populateGroups() self.updateExistingRoiSetList()
def requestWrite(self, nodes, file_name = None, limit_mimetypes = None, file_handler = None, **kwargs): """Request the specified nodes to be written to a file. :param nodes: A collection of scene nodes that should be written to the file. :param file_name: A suggestion for the file name to write to. Can be freely ignored if providing a file name makes no sense. :param limit_mimetypes: Should we limit the available MIME types to the MIME types available to the currently active machine? :param kwargs: Keyword arguments. """ if self._writing: raise OutputDeviceError.DeviceBusyError() # Set up and display file dialog dialog = QFileDialog() dialog.setWindowTitle(catalog.i18nc("@title:window", "Save to Disk")) dialog.setFileMode(QFileDialog.FileMode.AnyFile) dialog.setAcceptMode(QFileDialog.AcceptMode.AcceptSave) # Ensure platform never ask for overwrite confirmation since we do this ourselves dialog.setOption(QFileDialog.Option.DontConfirmOverwrite) filters = [] mime_types = [] selected_filter = None if "preferred_mimetypes" in kwargs and kwargs["preferred_mimetypes"] is not None: preferred_mimetypes = kwargs["preferred_mimetypes"] else: preferred_mimetypes = Application.getInstance().getPreferences().getValue("local_file/last_used_type") preferred_mimetype_list = preferred_mimetypes.split(";") if not file_handler: file_handler = Application.getInstance().getMeshFileHandler() file_types = file_handler.getSupportedFileTypesWrite() file_types.sort(key = lambda k: k["description"]) if limit_mimetypes: file_types = list(filter(lambda i: i["mime_type"] in limit_mimetypes, file_types)) file_types = [ft for ft in file_types if not ft["hide_in_file_dialog"]] if len(file_types) == 0: Logger.log("e", "There are no file types available to write with!") raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:warning", "There are no file types available to write with!")) # Find the first available preferred mime type preferred_mimetype = None for mime_type in preferred_mimetype_list: if any(ft["mime_type"] == mime_type for ft in file_types): preferred_mimetype = mime_type break extension_added = False for item in file_types: type_filter = "{0} (*.{1})".format(item["description"], item["extension"]) filters.append(type_filter) mime_types.append(item["mime_type"]) if preferred_mimetype == item["mime_type"]: selected_filter = type_filter if file_name and not extension_added: extension_added = True file_name += "." + item["extension"] # CURA-6411: This code needs to be before dialog.selectFile and the filters, because otherwise in macOS (for some reason) the setDirectory call doesn't work. stored_directory = Application.getInstance().getPreferences().getValue("local_file/dialog_save_path") if stored_directory and stored_directory != "" and os.path.exists(stored_directory): dialog.setDirectory(stored_directory) # Add the file name before adding the extension to the dialog if file_name is not None: dialog.selectFile(file_name) dialog.setNameFilters(filters) if selected_filter is not None: dialog.selectNameFilter(selected_filter) if not dialog.exec(): raise OutputDeviceError.UserCanceledError() save_path = dialog.directory().absolutePath() Application.getInstance().getPreferences().setValue("local_file/dialog_save_path", save_path) selected_type = file_types[filters.index(dialog.selectedNameFilter())] Application.getInstance().getPreferences().setValue("local_file/last_used_type", selected_type["mime_type"]) # Get file name from file dialog file_name = dialog.selectedFiles()[0] Logger.log("d", "Writing to [%s]..." % file_name) if os.path.exists(file_name): result = QMessageBox.question(None, catalog.i18nc("@title:window", "File Already Exists"), catalog.i18nc("@label Don't translate the XML tag <filename>!", "The file <filename>{0}</filename> already exists. Are you sure you want to overwrite it?").format(file_name)) if result == QMessageBox.StandardButton.No: raise OutputDeviceError.UserCanceledError() # Actually writing file if file_handler: file_writer = file_handler.getWriter(selected_type["id"]) else: file_writer = Application.getInstance().getMeshFileHandler().getWriter(selected_type["id"]) if isinstance(file_writer, WorkspaceWriter): self.setLastOutputName(file_name) self.writeStarted.emit(self) try: mode = selected_type["mode"] if mode == MeshWriter.OutputMode.TextMode: Logger.log("d", "Writing to Local File %s in text mode", file_name) stream = open(file_name, "wt", encoding = "utf-8") elif mode == MeshWriter.OutputMode.BinaryMode: Logger.log("d", "Writing to Local File %s in binary mode", file_name) stream = open(file_name, "wb") else: Logger.log("e", "Unrecognised OutputMode.") return None job = WriteFileJob(file_writer, stream, nodes, mode) job.setFileName(file_name) job.setAddToRecentFiles(True) # The file will be added into the "recent files" list upon success job.progress.connect(self._onJobProgress) job.finished.connect(self._onWriteJobFinished) message = Message(catalog.i18nc("@info:progress Don't translate the XML tags <filename>!", "Saving to <filename>{0}</filename>").format(file_name), 0, False, -1 , catalog.i18nc("@info:title", "Saving")) message.show() job.setMessage(message) self._writing = True job.start() except PermissionError as e: Logger.log("e", "Permission denied when trying to write to %s: %s", file_name, str(e)) raise OutputDeviceError.PermissionDeniedError(catalog.i18nc("@info:status Don't translate the XML tags <filename>!", "Permission denied when trying to save <filename>{0}</filename>").format(file_name)) from e except OSError as e: Logger.log("e", "Operating system would not let us write to %s: %s", file_name, str(e)) raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:status Don't translate the XML tags <filename> or <message>!", "Could not save to <filename>{0}</filename>: <message>{1}</message>").format(file_name, str(e))) from e