Fix about dialog
This commit is contained in:
		| @ -270,203 +270,6 @@ static void | ||||
| about_dialog_add_update (PikaAboutDialog *dialog, | ||||
|                          PikaCoreConfig  *config) | ||||
| { | ||||
|   GtkWidget *container; | ||||
|   GList     *children; | ||||
|   GtkWidget *vbox; | ||||
|  | ||||
|   GtkWidget *frame; | ||||
|   GtkWidget *box; | ||||
|   GtkWidget *box2; | ||||
|   GtkWidget *label; | ||||
|   GtkWidget *button; | ||||
|   GtkWidget *button_image; | ||||
|   GtkWidget *button_label; | ||||
|   GDateTime *datetime; | ||||
|   gchar     *date; | ||||
|   gchar     *text; | ||||
|  | ||||
|   if (dialog->update_frame) | ||||
|     { | ||||
|       gtk_widget_destroy (dialog->update_frame); | ||||
|       dialog->update_frame = NULL; | ||||
|     } | ||||
|  | ||||
|   /* Get the dialog vbox. */ | ||||
|   container = gtk_dialog_get_content_area (GTK_DIALOG (dialog->dialog)); | ||||
|   children = gtk_container_get_children (GTK_CONTAINER (container)); | ||||
|   g_return_if_fail (GTK_IS_BOX (children->data)); | ||||
|   vbox = children->data; | ||||
|   g_list_free (children); | ||||
|  | ||||
|   /* The update frame. */ | ||||
|   frame = gtk_frame_new (NULL); | ||||
|   gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 2); | ||||
|  | ||||
|   box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); | ||||
|   gtk_container_add (GTK_CONTAINER (frame), box); | ||||
|  | ||||
|   /* Button in the frame. */ | ||||
|   button = gtk_button_new (); | ||||
|   gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0); | ||||
|   gtk_widget_show (button); | ||||
|  | ||||
|   box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); | ||||
|   gtk_container_add (GTK_CONTAINER (button), box2); | ||||
|   gtk_widget_show (box2); | ||||
|  | ||||
|   button_image = gtk_image_new_from_icon_name (NULL, GTK_ICON_SIZE_DIALOG); | ||||
|   gtk_box_pack_start (GTK_BOX (box2), button_image, FALSE, FALSE, 0); | ||||
|   gtk_widget_show (button_image); | ||||
|  | ||||
|   button_label = gtk_label_new (NULL); | ||||
|   gtk_box_pack_start (GTK_BOX (box2), button_label, FALSE, FALSE, 0); | ||||
|   gtk_container_child_set (GTK_CONTAINER (box2), button_label, "expand", TRUE, NULL); | ||||
|   gtk_widget_show (button_label); | ||||
|  | ||||
|   if (config->last_known_release != NULL) | ||||
|     { | ||||
|       /* There is a newer version. */ | ||||
|       const gchar *download_url = NULL; | ||||
|       gchar       *comment      = NULL; | ||||
|  | ||||
|       /* We want the frame to stand out. */ | ||||
|       label = gtk_label_new (NULL); | ||||
|       text = g_strdup_printf ("<tt><b><big>%s</big></b></tt>", | ||||
|                               _("Update available!")); | ||||
|       gtk_label_set_markup (GTK_LABEL (label), text); | ||||
|       g_free (text); | ||||
|       gtk_widget_show (label); | ||||
|       gtk_frame_set_label_widget (GTK_FRAME (frame), label); | ||||
|       gtk_frame_set_label_align (GTK_FRAME (frame), 0.5, 0.5); | ||||
|       gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT); | ||||
|       gtk_box_reorder_child (GTK_BOX (vbox), frame, 3); | ||||
|  | ||||
|       /* Button is an update link. */ | ||||
|       gtk_image_set_from_icon_name (GTK_IMAGE (button_image), | ||||
|                                     "software-update-available", | ||||
|                                     GTK_ICON_SIZE_DIALOG); | ||||
| #ifdef PIKA_UNSTABLE | ||||
|       download_url = "https://heckin.technology/AlderconeStudio/PIKApp/"; | ||||
| #else | ||||
|       download_url = "https://heckin.technology/AlderconeStudio/PIKApp/"; | ||||
| #endif | ||||
|       g_signal_connect (button, "clicked", | ||||
|                         (GCallback) about_dialog_download_clicked, | ||||
|                         (gpointer) download_url); | ||||
|  | ||||
|       /* The preferred localized date representation without the time. */ | ||||
|       datetime = g_date_time_new_from_unix_local (config->last_release_timestamp); | ||||
|       date = g_date_time_format (datetime, "%x"); | ||||
|       g_date_time_unref (datetime); | ||||
|  | ||||
|       if (config->last_revision > 0) | ||||
|         { | ||||
|           /* This is actually a new revision of current version. */ | ||||
|           text = g_strdup_printf (_("Download PIKA %s revision %d (released on %s)\n"), | ||||
|                                   config->last_known_release, | ||||
|                                   config->last_revision, | ||||
|                                   date); | ||||
|  | ||||
|           /* Finally an optional release comment. */ | ||||
|           if (config->last_release_comment) | ||||
|             { | ||||
|               /* Translators: <> tags are Pango markup. Please keep these | ||||
|                * markups in your translation. */ | ||||
|               comment = g_strdup_printf (_("<u>Release comment</u>: <i>%s</i>"), config->last_release_comment); | ||||
|             } | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           text = g_strdup_printf (_("Download PIKA %s (released on %s)\n"), | ||||
|                                   config->last_known_release, date); | ||||
|         } | ||||
|       gtk_label_set_text (GTK_LABEL (button_label), text); | ||||
|       g_free (text); | ||||
|       g_free (date); | ||||
|  | ||||
|       if (comment) | ||||
|         { | ||||
|           label = gtk_label_new (NULL); | ||||
|           gtk_label_set_max_width_chars (GTK_LABEL (label), 80); | ||||
|           gtk_label_set_markup (GTK_LABEL (label), comment); | ||||
|           gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); | ||||
|           g_free (comment); | ||||
|  | ||||
|           gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); | ||||
|           gtk_widget_show (label); | ||||
|         } | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       /* Button is a "Check for updates" action. */ | ||||
|       gtk_image_set_from_icon_name (GTK_IMAGE (button_image), | ||||
|                                     "view-refresh", | ||||
|                                     GTK_ICON_SIZE_MENU); | ||||
|       gtk_label_set_text (GTK_LABEL (button_label), _("Check for updates")); | ||||
|       g_signal_connect_swapped (button, "clicked", | ||||
|                                 (GCallback) pika_update_check, config); | ||||
|  | ||||
|     } | ||||
|  | ||||
|   gtk_box_reorder_child (GTK_BOX (vbox), frame, 4); | ||||
|  | ||||
|   /* Last check date box. */ | ||||
|   box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); | ||||
|   if (config->last_known_release != NULL) | ||||
|     gtk_widget_set_margin_top (box2, 20); | ||||
|   gtk_container_add (GTK_CONTAINER (box), box2); | ||||
|   gtk_widget_show (box2); | ||||
|  | ||||
|   /* Show a small "Check for updates" button only if the big one has | ||||
|    * been replaced by a download button. | ||||
|    */ | ||||
|   if (config->last_known_release != NULL) | ||||
|     { | ||||
|       button = gtk_button_new_from_icon_name ("view-refresh", GTK_ICON_SIZE_MENU); | ||||
|       gtk_widget_set_tooltip_text (button, _("Check for updates")); | ||||
|       gtk_box_pack_start (GTK_BOX (box2), button, FALSE, FALSE, 0); | ||||
|       g_signal_connect_swapped (button, "clicked", | ||||
|                                 (GCallback) pika_update_check, config); | ||||
|       gtk_widget_show (button); | ||||
|     } | ||||
|  | ||||
|   if (config->check_update_timestamp > 0) | ||||
|     { | ||||
|       gchar *subtext; | ||||
|       gchar *time; | ||||
|  | ||||
|       datetime = g_date_time_new_from_unix_local (config->check_update_timestamp); | ||||
|       date = g_date_time_format (datetime, "%x"); | ||||
|       time = g_date_time_format (datetime, "%X"); | ||||
|       /* Translators: first string is the date in the locale's date | ||||
|        * representation (e.g., 12/31/99), second is the time in the | ||||
|        * locale's time representation (e.g., 23:13:48). | ||||
|        */ | ||||
|       subtext = g_strdup_printf (_("Last checked on %s at %s"), date, time); | ||||
|       g_date_time_unref (datetime); | ||||
|       g_free (date); | ||||
|       g_free (time); | ||||
|  | ||||
|       text = g_strdup_printf ("<i>%s</i>", subtext); | ||||
|       label = gtk_label_new (NULL); | ||||
|       gtk_label_set_markup (GTK_LABEL (label), text); | ||||
|       gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); | ||||
|       gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0); | ||||
|       gtk_container_child_set (GTK_CONTAINER (box2), label, "expand", TRUE, NULL); | ||||
|       gtk_widget_show (label); | ||||
|       g_free (text); | ||||
|       g_free (subtext); | ||||
|     } | ||||
|  | ||||
|   gtk_widget_show (box); | ||||
|   gtk_widget_show (frame); | ||||
|  | ||||
|   g_set_weak_pointer (&dialog->update_frame, frame); | ||||
|  | ||||
|   /* Reconstruct the dialog when release info changes. */ | ||||
|   g_signal_connect (config, "notify::last-known-release", | ||||
|                     (GCallback) about_dialog_last_release_changed, | ||||
|                     dialog); | ||||
| } | ||||
|  | ||||
| static void | ||||
| @ -631,80 +434,6 @@ decorate_text (PikaAboutDialog *dialog, | ||||
| static gboolean | ||||
| about_dialog_timer (gpointer data) | ||||
| { | ||||
|   PikaAboutDialog *dialog  = data; | ||||
|   gint             timeout = 0; | ||||
|  | ||||
|   if (dialog->animstep == 0) | ||||
|     { | ||||
|       gchar *text = NULL; | ||||
|  | ||||
|       dialog->visible = TRUE; | ||||
|  | ||||
|       switch (dialog->state) | ||||
|         { | ||||
|         case 0: | ||||
|           dialog->timer = g_timeout_add (30, about_dialog_timer, dialog); | ||||
|           dialog->state += 1; | ||||
|           return FALSE; | ||||
|  | ||||
|         case 1: | ||||
|           text = insert_spacers (_("PIKA is brought to you by")); | ||||
|           dialog->state += 1; | ||||
|           break; | ||||
|  | ||||
|         default: | ||||
|           g_return_val_if_reached (TRUE); | ||||
|           break; | ||||
|         } | ||||
|  | ||||
|       g_return_val_if_fail (text != NULL, TRUE); | ||||
|  | ||||
|       pango_layout_set_text (dialog->layout, text, -1); | ||||
|       pango_layout_set_attributes (dialog->layout, NULL); | ||||
|  | ||||
|       g_free (text); | ||||
|     } | ||||
|  | ||||
|   if (dialog->animstep < 16) | ||||
|     { | ||||
|       decorate_text (dialog, 2, ((gfloat) dialog->animstep) / 15.0); | ||||
|     } | ||||
|   else if (dialog->animstep == 16) | ||||
|     { | ||||
|       timeout = 800; | ||||
|     } | ||||
|   else if (dialog->animstep == 17) | ||||
|     { | ||||
|       timeout = 30; | ||||
|     } | ||||
|   else if (dialog->animstep < 33) | ||||
|     { | ||||
|       decorate_text (dialog, 1, | ||||
|                      1.0 - ((gfloat) (dialog->animstep - 17)) / 15.0); | ||||
|     } | ||||
|   else if (dialog->animstep == 33) | ||||
|     { | ||||
|       dialog->visible = FALSE; | ||||
|       timeout = 300; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       dialog->visible  = FALSE; | ||||
|       dialog->animstep = -1; | ||||
|       timeout = 30; | ||||
|     } | ||||
|  | ||||
|   dialog->animstep++; | ||||
|  | ||||
|   gtk_widget_queue_draw (dialog->anim_area); | ||||
|  | ||||
|   if (timeout > 0) | ||||
|     { | ||||
|       dialog->timer = g_timeout_add (timeout, about_dialog_timer, dialog); | ||||
|       return FALSE; | ||||
|     } | ||||
|  | ||||
|   /* else keep the current timeout */ | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -5101,7 +5101,7 @@ register_image_procs (PikaPDB *pdb) | ||||
|                                "pika-image-get-imported-file"); | ||||
|   pika_procedure_set_static_help (procedure, | ||||
|                                   "Returns the imported file for the specified image.", | ||||
|                                   "This procedure returns the file associated with the specified image if the image was imported from a non-native Pika format. If the image was not imported, or has since been saved in the native Pika format, this procedure returns %NULL.", | ||||
|                                   "This procedure returns the file associated with the specified image if the image was imported from a non-native Pika format. If the image was not imported, or has since been saved in the native Gimp format, this procedure returns %NULL.", | ||||
|                                   NULL); | ||||
|   pika_procedure_set_static_attribution (procedure, | ||||
|                                          "Eric Grivel <pika@lumenssolutions.com>", | ||||
|  | ||||
| @ -47,7 +47,6 @@ | ||||
| #include <libpika/pikafont_pdb.h> | ||||
| #include <libpika/pikafonts_pdb.h> | ||||
| #include <libpika/pikafontselect_pdb.h> | ||||
| #include <libpika/pikapikarc_pdb.h> | ||||
| #include <libpika/pikagradient_pdb.h> | ||||
| #include <libpika/pikagradients_pdb.h> | ||||
| #include <libpika/pikagradientselect_pdb.h> | ||||
| @ -72,6 +71,7 @@ | ||||
| #include <libpika/pikapattern_pdb.h> | ||||
| #include <libpika/pikapatterns_pdb.h> | ||||
| #include <libpika/pikapatternselect_pdb.h> | ||||
| #include <libpika/pikapikarc_pdb.h> | ||||
| #include <libpika/pikaprogress_pdb.h> | ||||
| #include <libpika/pikaresource_pdb.h> | ||||
| #include <libpika/pikaselection_pdb.h> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user