[Xfce4-commits] [xfce/xfce4-settings] 49/57: color: Add info button to show profile details

noreply at xfce.org noreply at xfce.org
Thu Mar 21 22:14:37 CET 2019


This is an automated email from the git hooks/post-receive script.

o   c   h   o   s   i       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/xfce4-settings.

commit 2eaf6b24cafd57f628761d089bcf1d201f5643ed
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Mon Feb 25 22:58:04 2019 +0100

    color: Add info button to show profile details
    
    This is based on gnome-color-manager's gcm-viewer.
---
 dialogs/color-settings/color-dialog.glade | 46 +++++++++++++++++++--------
 dialogs/color-settings/color-profile.c    |  7 ----
 dialogs/color-settings/main.c             | 53 +++++++++++++++++++++++++++++++
 3 files changed, 85 insertions(+), 21 deletions(-)

diff --git a/dialogs/color-settings/color-dialog.glade b/dialogs/color-settings/color-dialog.glade
index be94821..4535d3b 100644
--- a/dialogs/color-settings/color-dialog.glade
+++ b/dialogs/color-settings/color-dialog.glade
@@ -16,13 +16,23 @@
     <property name="icon_name">list-remove-symbolic</property>
     <property name="use_fallback">True</property>
   </object>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="icon_name">folder-open-symbolic</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="icon_name">dialog-information-symbolic</property>
+  </object>
   <object class="XfceTitledDialog" id="dialog">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">Color Profiles</property>
     <property name="window_position">center-on-parent</property>
     <property name="default_width">700</property>
     <property name="default_height">400</property>
-    <property name="icon_name">preferences-color-symbolic</property>
+    <property name="icon_name">preferences-color</property>
     <property name="type_hint">dialog</property>
     <property name="subtitle" translatable="yes">Configure color profiles for your devices</property>
     <child internal-child="vbox">
@@ -37,8 +47,8 @@
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
             <child>
-              <object class="GtkButton" id="button2">
-                <property name="label">gtk-close</property>
+              <object class="GtkButton" id="button1">
+                <property name="label">gtk-help</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -48,11 +58,12 @@
                 <property name="expand">False</property>
                 <property name="fill">False</property>
                 <property name="position">0</property>
+                <property name="secondary">True</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="button1">
-                <property name="label">gtk-help</property>
+              <object class="GtkButton" id="button2">
+                <property name="label">gtk-close</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -62,7 +73,6 @@
                 <property name="expand">False</property>
                 <property name="fill">False</property>
                 <property name="position">0</property>
-                <property name="secondary">True</property>
               </packing>
             </child>
           </object>
@@ -154,7 +164,7 @@
                     <property name="can_focus">False</property>
                     <property name="margin_left">24</property>
                     <property name="margin_right">24</property>
-                    <property name="margin_top">24</property>
+                    <property name="margin_top">18</property>
                     <property name="margin_bottom">24</property>
                     <property name="orientation">vertical</property>
                     <child>
@@ -350,6 +360,19 @@
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
+                                <child>
+                                  <object class="GtkButton" id="profiles-info">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">True</property>
+                                    <property name="image">image4</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
                               </object>
                               <packing>
                                 <property name="expand">False</property>
@@ -425,15 +448,10 @@
       </object>
     </child>
     <action-widgets>
-      <action-widget response="0">button2</action-widget>
       <action-widget response="-11">button1</action-widget>
+      <action-widget response="0">button2</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkImage" id="image3">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">folder-open-symbolic</property>
-  </object>
   <object class="GtkListStore" id="liststore-assign">
     <columns>
       <!-- column-name title -->
@@ -452,7 +470,7 @@
     <property name="modal">True</property>
     <property name="default_width">350</property>
     <property name="default_height">500</property>
-    <property name="icon_name">preferences-color-symbolic</property>
+    <property name="icon_name">preferences-color</property>
     <property name="type_hint">dialog</property>
     <property name="transient_for">dialog</property>
     <child>
diff --git a/dialogs/color-settings/color-profile.c b/dialogs/color-settings/color-profile.c
index 83a3fd5..b66418b 100644
--- a/dialogs/color-settings/color-profile.c
+++ b/dialogs/color-settings/color-profile.c
@@ -36,7 +36,6 @@ struct _ColorProfile
   gboolean     is_default;
   GtkWidget   *widget_description;
   GtkWidget   *widget_image;
-  GtkWidget   *widget_info;
   guint        device_changed_id;
   guint        profile_changed_id;
 };
@@ -361,12 +360,6 @@ color_profile_init (ColorProfile *color_profile)
   gtk_box_pack_start (GTK_BOX (box), color_profile->widget_description, TRUE, TRUE, 0);
   gtk_widget_show (color_profile->widget_description);
 
-  /* profile warnings/info */
-  color_profile->widget_info = gtk_image_new_from_icon_name ("dialog-information-symbolic", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_margin_start (color_profile->widget_info, IMAGE_WIDGET_PADDING);
-  gtk_widget_set_margin_end (color_profile->widget_info, IMAGE_WIDGET_PADDING);
-  gtk_box_pack_start (GTK_BOX (box), color_profile->widget_info, FALSE, FALSE, 0);
-
   /* refresh */
   gtk_container_add (GTK_CONTAINER (color_profile), box);
   gtk_widget_set_visible (box, TRUE);
diff --git a/dialogs/color-settings/main.c b/dialogs/color-settings/main.c
index cec310a..c5a3339 100644
--- a/dialogs/color-settings/main.c
+++ b/dialogs/color-settings/main.c
@@ -77,6 +77,7 @@ struct _ColorSettings
     GObject       *profiles_enable;
     GObject       *profiles_add;
     GObject       *profiles_remove;
+    GObject       *profiles_info;
     GtkListBox    *profiles_list_box;
     gchar         *profiles_list_box_filter;
     guint          profiles_list_box_selected_id;
@@ -574,6 +575,45 @@ color_settings_profile_remove_cb (GtkWidget *widget, ColorSettings *settings)
 
 
 static void
+color_settings_profile_info_view (CdProfile *profile)
+{
+    gboolean ret;
+    GError **error = NULL;
+    gchar *cli;
+
+    /* open up gcm-viewer */
+    argv = g_ptr_array_new_with_free_func (g_free);
+    cli = g_strdup_printf ("gcm-viewer --profile %s", cd_profile_get_id (profile));
+    ret = g_spawn_command_line_async (cli, error);
+    if (!ret)
+        g_warning ("failed to run gcm-viewer: %s", error->message);
+
+    g_free (cli);
+}
+
+
+
+static void
+color_settings_profile_info_cb (GtkWidget *widget, ColorSettings *settings)
+{
+    CdProfile *profile;
+    GtkListBoxRow *row;
+
+    /* get the selected profile */
+    row = gtk_list_box_get_selected_row (settings->profiles_list_box);
+    if (row == NULL)
+        return;
+    profile = color_profile_get_profile (SETTINGS_COLOR_PROFILE (row));
+    if (profile == NULL) {
+          g_warning ("failed to get the active profile");
+          return;
+    }
+    color_settings_profile_info_view (profile);
+}
+
+
+
+static void
 color_settings_make_profile_default_cb (GObject *object,
                                         GAsyncResult *res,
                                         ColorSettings *settings)
@@ -621,6 +661,8 @@ color_settings_device_profile_enable_cb (GtkWidget *widget, ColorSettings *setti
                                     settings);
 }
 
+
+
 static void
 color_settings_add_device_profile (ColorSettings *settings,
                                    CdDevice      *device,
@@ -717,6 +759,7 @@ color_settings_list_box_row_activated_cb (GtkListBox *list_box,
         color_settings_device_changed_cb (settings->current_device, settings);
         gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_add), TRUE);
         gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_remove), FALSE);
+        gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_info), FALSE);
         gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_enable), FALSE);
     }
     else
@@ -724,6 +767,7 @@ color_settings_list_box_row_activated_cb (GtkListBox *list_box,
         gtk_widget_show (GTK_WIDGET (settings->label_no_profiles));
         gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_add), FALSE);
         gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_remove), FALSE);
+        gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_info), FALSE);
         gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_enable), FALSE);
         gtk_widget_hide (GTK_WIDGET (settings->scrolled_profiles));
     }
@@ -742,6 +786,7 @@ color_settings_device_enabled_changed_cb (ColorDevice *widget,
     gtk_widget_set_visible (GTK_WIDGET (settings->scrolled_profiles), is_enabled);
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_add), is_enabled);
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_remove), is_enabled);
+    gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_info), is_enabled);
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_enable), is_enabled);
 }
 
@@ -753,6 +798,7 @@ color_settings_profiles_list_box_row_selected_cb (GtkListBox *list_box,
                                                   ColorSettings *settings)
 {
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_remove), TRUE);
+    gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_info), TRUE);
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_enable), TRUE);
 }
 
@@ -1148,6 +1194,13 @@ color_settings_dialog_init (GtkBuilder *builder)
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_remove), FALSE);
     g_signal_connect (settings->profiles_remove, "clicked", G_CALLBACK (color_settings_profile_remove_cb), settings);
 
+    settings->profiles_info = gtk_builder_get_object (builder, "profiles-info");
+    /* Conditionally show/hide the info button, based on the availability of gnome-color-manager */
+    if (g_find_program_in_path ("gcm-viewer") == NULL)
+        gtk_widget_hide (GTK_WIDGET (settings->profiles_info));
+    gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_info), FALSE);
+    g_signal_connect (settings->profiles_info, "clicked", G_CALLBACK (color_settings_profile_info_cb), settings);
+
     settings->profiles_enable = gtk_builder_get_object (builder, "profiles-enable");
     gtk_widget_set_sensitive (GTK_WIDGET (settings->profiles_enable), FALSE);
     g_signal_connect (settings->profiles_enable, "clicked", G_CALLBACK (color_settings_device_profile_enable_cb), settings);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list