[gnome-screenshot/wip/exalm/cleanups] application: Make final



commit 883a012c64dbada487b44022a94892c967ae0d35
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Fri Apr 3 10:04:07 2020 +0500

    application: Make final
    
    Also use modern GObject macros and return concrete type from _new().

 src/gnome-screenshot.c       |   4 +-
 src/screenshot-application.c | 107 +++++++++++++++++++++----------------------
 src/screenshot-application.h |  26 ++---------
 3 files changed, 58 insertions(+), 79 deletions(-)
---
diff --git a/src/gnome-screenshot.c b/src/gnome-screenshot.c
index a18ac21..bd1b233 100644
--- a/src/gnome-screenshot.c
+++ b/src/gnome-screenshot.c
@@ -36,7 +36,7 @@
 int
 main (int argc, char *argv[])
 {
-  g_autoptr(GApplication) app;
+  g_autoptr(ScreenshotApplication) app;
 
   setlocale (LC_ALL, "");
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -44,5 +44,5 @@ main (int argc, char *argv[])
   textdomain (GETTEXT_PACKAGE);
 
   app = screenshot_application_new ();
-  return g_application_run (app, argc, argv);
+  return g_application_run (G_APPLICATION (app), argc, argv);
 }
diff --git a/src/screenshot-application.c b/src/screenshot-application.c
index 96829a5..815b618 100644
--- a/src/screenshot-application.c
+++ b/src/screenshot-application.c
@@ -41,12 +41,13 @@
 
 #define LAST_SAVE_DIRECTORY_KEY "last-save-directory"
 
-G_DEFINE_TYPE (ScreenshotApplication, screenshot_application, GTK_TYPE_APPLICATION);
-
 static void screenshot_save_to_file (ScreenshotApplication *self);
 static void screenshot_show_interactive_dialog (ScreenshotApplication *self);
 
-struct _ScreenshotApplicationPriv {
+struct _ScreenshotApplication
+{
+  GtkApplication parent_instance;
+
   gchar *icc_profile_base64;
   GdkPixbuf *screenshot;
 
@@ -58,10 +59,12 @@ struct _ScreenshotApplicationPriv {
   ScreenshotDialog *dialog;
 };
 
+G_DEFINE_TYPE (ScreenshotApplication, screenshot_application, GTK_TYPE_APPLICATION)
+
 static void
 save_folder_to_settings (ScreenshotApplication *self)
 {
-  g_autofree gchar *folder = screenshot_dialog_get_folder (self->priv->dialog);
+  g_autofree gchar *folder = screenshot_dialog_get_folder (self->dialog);
   g_settings_set_string (screenshot_config->settings,
                          LAST_SAVE_DIRECTORY_KEY, folder);
 }
@@ -96,13 +99,13 @@ set_recent_entry (ScreenshotApplication *self)
   recent_data.groups = groups;
   recent_data.is_private = FALSE;
 
-  gtk_recent_manager_add_full (recent, self->priv->save_uri, &recent_data);
+  gtk_recent_manager_add_full (recent, self->save_uri, &recent_data);
 }
 
 static void
 screenshot_close_interactive_dialog (ScreenshotApplication *self)
 {
-  ScreenshotDialog *dialog = self->priv->dialog;
+  ScreenshotDialog *dialog = self->dialog;
   save_folder_to_settings (self);
   gtk_widget_destroy (GTK_WIDGET (dialog));
 }
@@ -128,12 +131,12 @@ save_pixbuf_handle_error (ScreenshotApplication *self,
 {
   if (screenshot_config->interactive)
     {
-      ScreenshotDialog *dialog = self->priv->dialog;
+      ScreenshotDialog *dialog = self->dialog;
 
       screenshot_dialog_set_busy (dialog, FALSE);
 
       if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS) &&
-          !self->priv->should_overwrite)
+          !self->should_overwrite)
         {
           g_autofree gchar *folder = screenshot_dialog_get_folder (dialog);
           g_autofree gchar *folder_uri = g_path_get_basename (folder);
@@ -150,7 +153,7 @@ save_pixbuf_handle_error (ScreenshotApplication *self,
 
           if (response == GTK_RESPONSE_YES)
             {
-              self->priv->should_overwrite = TRUE;
+              self->should_overwrite = TRUE;
               screenshot_save_to_file (self);
 
               return;
@@ -230,10 +233,7 @@ is_png (gchar *format)
 static gboolean
 has_profile (ScreenshotApplication *self)
 {
-  if (self->priv->icc_profile_base64 != NULL)
-    return TRUE;
-  else
-    return FALSE;
+  return (self->icc_profile_base64 != NULL);
 }
 
 static void
@@ -241,11 +241,11 @@ save_with_description_and_profile (ScreenshotApplication *self,
                                    GFileOutputStream     *os,
                                    gchar                 *format)
 {
-  gdk_pixbuf_save_to_stream_async (self->priv->screenshot,
+  gdk_pixbuf_save_to_stream_async (self->screenshot,
                                    G_OUTPUT_STREAM (os),
                                    format, NULL,
                                    save_pixbuf_ready_cb, self,
-                                   "icc-profile", self->priv->icc_profile_base64,
+                                   "icc-profile", self->icc_profile_base64,
                                    "tEXt::Software", "gnome-screenshot",
                                    NULL);
 }
@@ -254,7 +254,7 @@ save_with_description (ScreenshotApplication *self,
                        GFileOutputStream     *os,
                        gchar                 *format)
 {
-  gdk_pixbuf_save_to_stream_async (self->priv->screenshot,
+  gdk_pixbuf_save_to_stream_async (self->screenshot,
                                    G_OUTPUT_STREAM (os),
                                    format, NULL,
                                    save_pixbuf_ready_cb, self,
@@ -267,7 +267,7 @@ save_with_no_profile_or_description (ScreenshotApplication *self,
                                      GFileOutputStream     *os,
                                      gchar                 *format)
 {
-  gdk_pixbuf_save_to_stream_async (self->priv->screenshot,
+  gdk_pixbuf_save_to_stream_async (self->screenshot,
                                    G_OUTPUT_STREAM (os),
                                    format, NULL,
                                    save_pixbuf_ready_cb, self,
@@ -300,7 +300,7 @@ save_file_create_ready_cb (GObject *source,
                    (gpointer) &format);
   g_slist_free (formats);
 
-  if (self->priv->should_overwrite)
+  if (self->should_overwrite)
     os = g_file_replace_finish (G_FILE (source), res, &error);
   else
     os = g_file_create_finish (G_FILE (source), res, &error);
@@ -329,12 +329,12 @@ screenshot_save_to_file (ScreenshotApplication *self)
 {
   g_autoptr(GFile) target_file = NULL;
 
-  if (self->priv->dialog != NULL)
-    screenshot_dialog_set_busy (self->priv->dialog, TRUE);
+  if (self->dialog != NULL)
+    screenshot_dialog_set_busy (self->dialog, TRUE);
 
-  target_file = g_file_new_for_uri (self->priv->save_uri);
+  target_file = g_file_new_for_uri (self->save_uri);
 
-  if (self->priv->should_overwrite)
+  if (self->should_overwrite)
     {
       g_file_replace_async (target_file,
                             NULL, FALSE,
@@ -367,7 +367,7 @@ screenshot_save_to_clipboard (ScreenshotApplication *self)
 
   clipboard = gtk_clipboard_get_for_display (gdk_display_get_default (),
                                              GDK_SELECTION_CLIPBOARD);
-  gtk_clipboard_set_image (clipboard, self->priv->screenshot);
+  gtk_clipboard_set_image (clipboard, self->screenshot);
 }
 
 static void
@@ -375,8 +375,8 @@ save_clicked_cb (ScreenshotDialog      *dialog,
                  ScreenshotApplication *self)
 {
   /* update to the new URI */
-  g_free (self->priv->save_uri);
-  self->priv->save_uri = screenshot_dialog_get_uri (self->priv->dialog);
+  g_free (self->save_uri);
+  self->save_uri = screenshot_dialog_get_uri (self->dialog);
   screenshot_save_to_file (self);
 }
 
@@ -406,10 +406,10 @@ build_filename_ready_cb (GObject *source,
   if (save_path != NULL)
     {
       g_autoptr(GFile) file = g_file_new_for_path (save_path);
-      self->priv->save_uri = g_file_get_uri (file);
+      self->save_uri = g_file_get_uri (file);
     }
   else
-    self->priv->save_uri = NULL;
+    self->save_uri = NULL;
 
   /* now release the application */
   g_application_release (G_APPLICATION (self));
@@ -439,12 +439,12 @@ build_filename_ready_cb (GObject *source,
 
   if (screenshot_config->interactive)
     {
-      self->priv->dialog = screenshot_dialog_new (GTK_APPLICATION (self),
-                                                  self->priv->screenshot,
-                                                  self->priv->save_uri);
-      g_signal_connect_object (self->priv->dialog, "save", G_CALLBACK (save_clicked_cb), self, 0);
-      g_signal_connect_object (self->priv->dialog, "copy", G_CALLBACK (copy_clicked_cb), self, 0);
-      g_signal_connect_object (self->priv->dialog, "back", G_CALLBACK (back_clicked_cb), self, 0);
+      self->dialog = screenshot_dialog_new (GTK_APPLICATION (self),
+                                            self->screenshot,
+                                            self->save_uri);
+      g_signal_connect_object (self->dialog, "save", G_CALLBACK (save_clicked_cb), self, 0);
+      g_signal_connect_object (self->dialog, "copy", G_CALLBACK (copy_clicked_cb), self, 0);
+      g_signal_connect_object (self->dialog, "back", G_CALLBACK (back_clicked_cb), self, 0);
     }
   else
     {
@@ -458,8 +458,8 @@ finish_take_screenshot (ScreenshotApplication *self)
 {
   GdkPixbuf *screenshot;
 
-  screenshot = screenshot_get_pixbuf (self->priv->rectangle);
-  g_clear_pointer (&self->priv->rectangle, g_free);
+  screenshot = screenshot_get_pixbuf (self->rectangle);
+  g_clear_pointer (&self->rectangle, g_free);
 
   if (screenshot == NULL)
     {
@@ -481,7 +481,7 @@ finish_take_screenshot (ScreenshotApplication *self)
       return;
     }
 
-  self->priv->screenshot = screenshot;
+  self->screenshot = screenshot;
 
   if (screenshot_config->copy_to_clipboard)
     {
@@ -505,8 +505,8 @@ finish_take_screenshot (ScreenshotApplication *self)
    */
   if (screenshot_config->file != NULL)
     {
-      self->priv->save_uri = g_file_get_uri (screenshot_config->file);
-      self->priv->should_overwrite = TRUE;
+      self->save_uri = g_file_get_uri (screenshot_config->file);
+      self->should_overwrite = TRUE;
       screenshot_save_to_file (self);
     }
   else
@@ -554,7 +554,7 @@ rectangle_found_cb (GdkRectangle *rectangle,
 
   if (rectangle != NULL)
     {
-      self->priv->rectangle = g_memdup (rectangle, sizeof *rectangle);
+      self->rectangle = g_memdup (rectangle, sizeof *rectangle);
       start_screenshot_timeout (self);
     }
   else
@@ -843,10 +843,10 @@ screenshot_application_finalize (GObject *object)
 {
   ScreenshotApplication *self = SCREENSHOT_APPLICATION (object);
 
-  g_clear_object (&self->priv->screenshot);
-  g_free (self->priv->icc_profile_base64);
-  g_free (self->priv->save_uri);
-  g_clear_pointer (&self->priv->rectangle, g_free);
+  g_clear_object (&self->screenshot);
+  g_free (self->icc_profile_base64);
+  g_free (self->save_uri);
+  g_clear_pointer (&self->rectangle, g_free);
 
   G_OBJECT_CLASS (screenshot_application_parent_class)->finalize (object);
 }
@@ -854,29 +854,24 @@ screenshot_application_finalize (GObject *object)
 static void
 screenshot_application_class_init (ScreenshotApplicationClass *klass)
 {
-  GObjectClass *oclass = G_OBJECT_CLASS (klass);
-  GApplicationClass *aclass = G_APPLICATION_CLASS (klass);
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GApplicationClass *application_class = G_APPLICATION_CLASS (klass);
 
-  oclass->finalize = screenshot_application_finalize;
+  object_class->finalize = screenshot_application_finalize;
 
-  aclass->handle_local_options = screenshot_application_handle_local_options;
-  aclass->command_line = screenshot_application_command_line;
-  aclass->startup = screenshot_application_startup;
-  aclass->activate = screenshot_application_activate;
-
-  g_type_class_add_private (klass, sizeof (ScreenshotApplicationPriv));
+  application_class->handle_local_options = screenshot_application_handle_local_options;
+  application_class->command_line = screenshot_application_command_line;
+  application_class->startup = screenshot_application_startup;
+  application_class->activate = screenshot_application_activate;
 }
 
 static void
 screenshot_application_init (ScreenshotApplication *self)
 {
-  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, SCREENSHOT_TYPE_APPLICATION,
-                                            ScreenshotApplicationPriv);
-
   g_application_add_main_option_entries (G_APPLICATION (self), entries);
 }
 
-GApplication *
+ScreenshotApplication *
 screenshot_application_new (void)
 {
   return g_object_new (SCREENSHOT_TYPE_APPLICATION,
diff --git a/src/screenshot-application.h b/src/screenshot-application.h
index 664c8c8..fc880c2 100644
--- a/src/screenshot-application.h
+++ b/src/screenshot-application.h
@@ -24,28 +24,12 @@
 
 #include <gtk/gtk.h>
 
-#define SCREENSHOT_TYPE_APPLICATION screenshot_application_get_type()
-#define SCREENSHOT_APPLICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCREENSHOT_TYPE_APPLICATION, ScreenshotApplication))
-#define SCREENSHOT_APPLICATION_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), SCREENSHOT_TYPE_APPLICATION, ScreenshotApplicationClass))
-#define SCREENSHOT_IS_APPLICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCREENSHOT_TYPE_APPLICATION))
-#define SCREENSHOT_IS_APPLICATION_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), SCREENSHOT_TYPE_APPLICATION))
-#define SCREENSHOT_APPLICATION_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS ((obj), SCREENSHOT_TYPE_APPLICATION, ScreenshotApplicationClass))
+G_BEGIN_DECLS
 
-typedef struct _ScreenshotApplicationPriv ScreenshotApplicationPriv;
+#define SCREENSHOT_TYPE_APPLICATION (screenshot_application_get_type())
 
-typedef struct {
-  GtkApplication parent;
-  ScreenshotApplicationPriv *priv;
-} ScreenshotApplication;
+G_DECLARE_FINAL_TYPE (ScreenshotApplication, screenshot_application, SCREENSHOT, APPLICATION, GtkApplication)
 
-typedef struct {
-  GtkApplicationClass parent_class;
-} ScreenshotApplicationClass;
+ScreenshotApplication *screenshot_application_new (void);
 
-GType screenshot_application_get_type (void);
-GApplication * screenshot_application_new (void);
+G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]