/* GIMP - The GNU Image Manipulation Program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * gimpvectorloadproceduredialog.c * Copyright (C) 2024 Jehan * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "config.h" #include #include #include "libgimpwidgets/gimpwidgets.h" #include "gimp.h" #include "gimpui.h" #include "gimpvectorloadproceduredialog.h" #include "gimpresolutionentry-private.h" #include "libgimp-intl.h" struct _GimpVectorLoadProcedureDialogPrivate { /* TODO: add thumbnail support from the file. */ GFile *file; gboolean filled_once; }; static void gimp_vector_load_procedure_dialog_fill_list (GimpProcedureDialog *dialog, GimpProcedure *procedure, GimpProcedureConfig *config, GList *properties); G_DEFINE_TYPE_WITH_PRIVATE (GimpVectorLoadProcedureDialog, gimp_vector_load_procedure_dialog, GIMP_TYPE_PROCEDURE_DIALOG) #define parent_class gimp_vector_load_procedure_dialog_parent_class static void gimp_vector_load_procedure_dialog_class_init (GimpVectorLoadProcedureDialogClass *klass) { GimpProcedureDialogClass *proc_dialog_class; proc_dialog_class = GIMP_PROCEDURE_DIALOG_CLASS (klass); proc_dialog_class->fill_list = gimp_vector_load_procedure_dialog_fill_list; } static void gimp_vector_load_procedure_dialog_init (GimpVectorLoadProcedureDialog *dialog) { dialog->priv = gimp_vector_load_procedure_dialog_get_instance_private (dialog); dialog->priv->file = NULL; dialog->priv->filled_once = FALSE; } static void gimp_vector_load_procedure_dialog_fill_list (GimpProcedureDialog *dialog, GimpProcedure *procedure, GimpProcedureConfig *config, GList *properties) { GimpVectorLoadProcedureDialog *load_dialog; load_dialog = GIMP_VECTOR_LOAD_PROCEDURE_DIALOG (dialog); if (! load_dialog->priv->filled_once) { GtkWidget *content_area; GtkWidget *res_entry; content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); /* Resolution */ res_entry = gimp_prop_resolution_entry_new (G_OBJECT (config), "width", "height", "pixel-density", "physical-unit"); gtk_box_pack_start (GTK_BOX (content_area), res_entry, FALSE, FALSE, 0); gtk_widget_show (res_entry); load_dialog->priv->filled_once = TRUE; } GIMP_PROCEDURE_DIALOG_CLASS (parent_class)->fill_list (dialog, procedure, config, properties); } /* Public Functions */ GtkWidget * gimp_vector_load_procedure_dialog_new (GimpVectorLoadProcedure *procedure, GimpProcedureConfig *config, GFile *file) { GtkWidget *dialog; gchar *title; const gchar *format_name; const gchar *help_id; gboolean use_header_bar; g_return_val_if_fail (GIMP_IS_VECTOR_LOAD_PROCEDURE (procedure), NULL); g_return_val_if_fail (GIMP_IS_PROCEDURE_CONFIG (config), NULL); g_return_val_if_fail (gimp_procedure_config_get_procedure (config) == GIMP_PROCEDURE (procedure), NULL); /*g_return_val_if_fail (G_IS_FILE (file), NULL);*/ format_name = gimp_file_procedure_get_format_name (GIMP_FILE_PROCEDURE (procedure)); if (! format_name) { g_critical ("%s: no format name set on file procedure '%s'. " "Set one with gimp_file_procedure_set_format_name()", G_STRFUNC, gimp_procedure_get_name (GIMP_PROCEDURE (procedure))); return NULL; } /* TRANSLATORS: %s will be a format name, e.g. "PNG" or "JPEG". */ title = g_strdup_printf (_("Load %s Image"), format_name); help_id = gimp_procedure_get_help_id (GIMP_PROCEDURE (procedure)); g_object_get (gtk_settings_get_default (), "gtk-dialogs-use-header", &use_header_bar, NULL); dialog = g_object_new (GIMP_TYPE_VECTOR_LOAD_PROCEDURE_DIALOG, "procedure", procedure, "config", config, "title", title, "help-func", gimp_standard_help_func, "help-id", help_id, "use-header-bar", use_header_bar, NULL); GIMP_VECTOR_LOAD_PROCEDURE_DIALOG (dialog)->priv->file = file; g_free (title); return dialog; }