def try_delete_image(image): """ Delete the specified image. If the image does not exist, do not raise any exception. """ if pdb.gimp_image_is_valid(image): pdb.gimp_image_delete(image)
def export_layers(self): progress_updater = pg.gui.GtkProgressUpdater(self._progress_bar) item_progress_indicator = progress_.ItemProgressIndicator( self._progress_bar, progress_updater) item_progress_indicator.install_progress_for_status() self._layer_exporter = exportlayers.LayerExporter( gimpenums.RUN_WITH_LAST_VALS, self._image, self._settings["main"], pg.overwrite.NoninteractiveOverwriteChooser( self._settings["main/overwrite_mode"].value), progress_updater, export_context_manager=handle_gui_in_export, export_context_manager_args=[self._dialog]) try: self._layer_exporter.export(layer_tree=self._layer_tree) except exportlayers.ExportLayersCancelError: pass except exportlayers.ExportLayersError as e: display_export_failure_message(e, parent=self._dialog) except Exception as e: if pdb.gimp_image_is_valid(self._image): raise else: display_export_failure_invalid_image_message( traceback.format_exc(), parent=self._dialog) else: if not self._layer_exporter.exported_layers: messages_.display_message( _("No layers were exported."), gtk.MESSAGE_INFO, parent=self._dialog) finally: item_progress_indicator.uninstall_progress_for_status()
def export_layers(self): progress_updater = pg.gui.GtkProgressUpdater(self._progress_bar) item_progress_indicator = progress_.ItemProgressIndicator( self._progress_bar, progress_updater) item_progress_indicator.install_progress_for_status() self._layer_exporter = exportlayers.LayerExporter( gimpenums.RUN_WITH_LAST_VALS, self._image, self._settings["main"], pg.overwrite.NoninteractiveOverwriteChooser( self._settings["main/overwrite_mode"].value), progress_updater, export_context_manager=handle_gui_in_export, export_context_manager_args=[self._dialog]) try: self._layer_exporter.export(layer_tree=self._layer_tree) except exportlayers.ExportLayersCancelError: pass except exportlayers.ExportLayersError as e: display_export_failure_message(e, parent=self._dialog) except Exception as e: if pdb.gimp_image_is_valid(self._image): raise else: display_export_failure_invalid_image_message( traceback.format_exc(), parent=self._dialog) else: if not self._layer_exporter.exported_layers: messages_.display_message(_("No layers were exported."), gtk.MESSAGE_INFO, parent=self._dialog) finally: item_progress_indicator.uninstall_progress_for_status()
def _get_in_memory_preview(self, layer): self._preview_width, self._preview_height = self._get_preview_size( layer.width, layer.height) self._preview_scaling_factor = self._preview_width / layer.width image_preview = self._get_image_preview() if image_preview is None or not pdb.gimp_image_is_valid(image_preview): return None if not image_preview.layers: pg.pdbutils.try_delete_image(image_preview) return None if image_preview.base_type != gimpenums.RGB: pdb.gimp_image_convert_rgb(image_preview) layer_preview = image_preview.layers[0] if layer_preview.mask is not None: layer_preview.remove_mask(gimpenums.MASK_APPLY) # Recompute the size as the layer may have been resized during the export. self._preview_width, self._preview_height = self._get_preview_size( layer_preview.width, layer_preview.height) self._preview_width, self._preview_height, preview_data = self._get_preview_data( layer_preview, self._preview_width, self._preview_height) layer_preview_pixbuf = self._get_preview_pixbuf( layer_preview, self._preview_width, self._preview_height, preview_data) pdb.gimp_image_delete(image_preview) return layer_preview_pixbuf
def _on_dialog_notify_is_active(self, dialog, property_spec): if not pdb.gimp_image_is_valid(self._image): gtk.main_quit() return if self._initial_layer_tree is not None: self._initial_layer_tree = None return
def _on_button_export_clicked(self, button, lock_update_key): self._setup_gui_before_export() overwrite_chooser, progress_updater = self._setup_layer_exporter() item_progress_indicator = progress_.ItemProgressIndicator( self._progress_bar, progress_updater) item_progress_indicator.install_progress_for_status( self._progress_set_value_and_show_dialog) should_quit = True self._name_preview.lock_update(True, lock_update_key) self._image_preview.lock_update(True, lock_update_key) try: self._layer_exporter.export() except exportlayers.ExportLayersCancelError as e: should_quit = False except exportlayers.ExportLayersError as e: display_export_failure_message(e, parent=self._dialog) should_quit = False except Exception as e: if pdb.gimp_image_is_valid(self._image): raise else: display_export_failure_invalid_image_message( traceback.format_exc(), parent=self._dialog) else: self._settings["special/first_plugin_run"].set_value(False) self._settings["special/first_plugin_run"].save() if not self._layer_exporter.exported_layers: messages_.display_message(_("No layers were exported."), gtk.MESSAGE_INFO, parent=self._dialog) should_quit = False finally: item_progress_indicator.uninstall_progress_for_status() self._layer_exporter = None self._name_preview.lock_update(False, lock_update_key) self._image_preview.lock_update(False, lock_update_key) if (overwrite_chooser.overwrite_mode in self._settings["main/overwrite_mode"].items.values()): self._settings["main/overwrite_mode"].set_value( overwrite_chooser.overwrite_mode) self._settings["main"].save([pg.config.SESSION_SOURCE]) self._settings["gui"].save([pg.config.SESSION_SOURCE]) self._settings["gui_session"].save([pg.config.SESSION_SOURCE]) if should_quit: gtk.main_quit() else: self._restore_gui_after_export() progress_updater.reset()
def _on_button_export_clicked(self, button, lock_update_key): self._setup_gui_before_export() overwrite_chooser, progress_updater = self._setup_layer_exporter() item_progress_indicator = progress_.ItemProgressIndicator( self._progress_bar, progress_updater) item_progress_indicator.install_progress_for_status( self._progress_set_value_and_show_dialog) should_quit = True self._name_preview.lock_update(True, lock_update_key) self._image_preview.lock_update(True, lock_update_key) try: self._layer_exporter.export() except exportlayers.ExportLayersCancelError as e: should_quit = False except exportlayers.ExportLayersError as e: display_export_failure_message(e, parent=self._dialog) should_quit = False except Exception as e: if pdb.gimp_image_is_valid(self._image): raise else: display_export_failure_invalid_image_message( traceback.format_exc(), parent=self._dialog) else: self._settings["special/first_plugin_run"].set_value(False) self._settings["special/first_plugin_run"].save() if not self._layer_exporter.exported_layers: messages_.display_message( _("No layers were exported."), gtk.MESSAGE_INFO, parent=self._dialog) should_quit = False finally: item_progress_indicator.uninstall_progress_for_status() self._layer_exporter = None self._name_preview.lock_update(False, lock_update_key) self._image_preview.lock_update(False, lock_update_key) if (overwrite_chooser.overwrite_mode in self._settings["main/overwrite_mode"].items.values()): self._settings["main/overwrite_mode"].set_value(overwrite_chooser.overwrite_mode) self._settings["main"].save([pg.config.SESSION_SOURCE]) self._settings["gui"].save([pg.config.SESSION_SOURCE]) self._settings["gui_session"].save([pg.config.SESSION_SOURCE]) if should_quit: gtk.main_quit() else: self._restore_gui_after_export() progress_updater.reset()
def _validate(self, image): if not pdb.gimp_image_is_valid(image): raise SettingValueError( pgsettingutils.value_to_str_prefix(image) + self.error_messages["invalid_value"])