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 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 _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_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()
Example #10
0
    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 _validate(self, image):
   if not pdb.gimp_image_is_valid(image):
     raise SettingValueError(
       pgsettingutils.value_to_str_prefix(image) + self.error_messages["invalid_value"])