/* PIKA - Photo and Image Kooker Application * a rebranding of The GNU Image Manipulation Program (created with heckimp) * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio * * Original copyright, applying to most contents (license remains unchanged): * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * 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 . */ #ifndef __PIKA_STATUSBAR_H__ #define __PIKA_STATUSBAR_H__ G_BEGIN_DECLS /* maximal length of the format string for the cursor-coordinates */ #define CURSOR_FORMAT_LENGTH 32 #define PIKA_TYPE_STATUSBAR (pika_statusbar_get_type ()) #define PIKA_STATUSBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_STATUSBAR, PikaStatusbar)) #define PIKA_STATUSBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_STATUSBAR, PikaStatusbarClass)) #define PIKA_IS_STATUSBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_STATUSBAR)) #define PIKA_IS_STATUSBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_STATUSBAR)) #define PIKA_STATUSBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIKA_TYPE_STATUSBAR, PikaStatusbarClass)) typedef struct _PikaStatusbarClass PikaStatusbarClass; struct _PikaStatusbar { GtkFrame parent_instance; Pika *pika; PikaDisplayShell *shell; PikaImage *image; GSList *messages; GHashTable *context_ids; guint seq_context_id; guint statusbar_pos_redraw_idle_id; gchar *cursor_string_todraw; gchar *cursor_string_last; GdkPixbuf *icon; GHashTable *icon_hash; gint icon_space_width; guint temp_context_id; guint temp_timeout_id; PikaMessageSeverity temp_severity; gchar cursor_format_str[CURSOR_FORMAT_LENGTH]; gchar cursor_format_str_f[CURSOR_FORMAT_LENGTH]; gchar length_format_str[CURSOR_FORMAT_LENGTH]; PikaCursorPrecision cursor_precision; gint cursor_w_digits; gint cursor_h_digits; GtkWidget *cursor_label; GtkWidget *unit_combo; GtkWidget *scale_combo; GtkWidget *rotate_widget; GtkWidget *rotate_label; GtkWidget *horizontal_flip_icon; GtkWidget *vertical_flip_icon; GtkWidget *label; /* same as GtkStatusbar->label */ GtkWidget *progressbar; GtkWidget *cancel_button; gboolean progress_active; gboolean progress_shown; gdouble progress_value; guint64 progress_last_update_time; GtkWidget *soft_proof_button; GtkWidget *soft_proof_container; GtkWidget *soft_proof_popover; GtkWidget *proof_colors_toggle; GtkWidget *profile_label; GtkWidget *profile_combo; GtkWidget *rendering_intent_combo; GtkWidget *bpc_toggle; GtkWidget *optimize_combo; GtkWidget *out_of_gamut_toggle; GSList *size_widgets; }; struct _PikaStatusbarClass { GtkFrameClass parent_class; }; GType pika_statusbar_get_type (void) G_GNUC_CONST; GtkWidget * pika_statusbar_new (void); void pika_statusbar_set_shell (PikaStatusbar *statusbar, PikaDisplayShell *shell); gboolean pika_statusbar_get_visible (PikaStatusbar *statusbar); void pika_statusbar_set_visible (PikaStatusbar *statusbar, gboolean visible); void pika_statusbar_empty (PikaStatusbar *statusbar); void pika_statusbar_fill (PikaStatusbar *statusbar); void pika_statusbar_override_window_title (PikaStatusbar *statusbar); void pika_statusbar_restore_window_title (PikaStatusbar *statusbar); void pika_statusbar_push (PikaStatusbar *statusbar, const gchar *context, const gchar *icon_name, const gchar *format, ...) G_GNUC_PRINTF (4, 5); void pika_statusbar_push_valist (PikaStatusbar *statusbar, const gchar *context, const gchar *icon_name, const gchar *format, va_list args) G_GNUC_PRINTF (4, 0); void pika_statusbar_push_coords (PikaStatusbar *statusbar, const gchar *context, const gchar *icon_name, PikaCursorPrecision precision, const gchar *title, gdouble x, const gchar *separator, gdouble y, const gchar *help); void pika_statusbar_push_length (PikaStatusbar *statusbar, const gchar *context, const gchar *icon_name, const gchar *title, PikaOrientationType axis, gdouble value, const gchar *help); void pika_statusbar_replace (PikaStatusbar *statusbar, const gchar *context, const gchar *icon_name, const gchar *format, ...) G_GNUC_PRINTF (4, 5); void pika_statusbar_replace_valist (PikaStatusbar *statusbar, const gchar *context, const gchar *icon_name, const gchar *format, va_list args) G_GNUC_PRINTF (4, 0); const gchar * pika_statusbar_peek (PikaStatusbar *statusbar, const gchar *context); void pika_statusbar_pop (PikaStatusbar *statusbar, const gchar *context); void pika_statusbar_push_temp (PikaStatusbar *statusbar, PikaMessageSeverity severity, const gchar *icon_name, const gchar *format, ...) G_GNUC_PRINTF (4, 5); void pika_statusbar_push_temp_valist (PikaStatusbar *statusbar, PikaMessageSeverity severity, const gchar *icon_name, const gchar *format, va_list args) G_GNUC_PRINTF (4, 0); void pika_statusbar_pop_temp (PikaStatusbar *statusbar); void pika_statusbar_update_cursor (PikaStatusbar *statusbar, PikaCursorPrecision precision, gdouble x, gdouble y); void pika_statusbar_clear_cursor (PikaStatusbar *statusbar); G_END_DECLS #endif /* __PIKA_STATUSBAR_H__ */