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 b619470f9904da23f3f752e8f2c4c338dd66c638 Author: Simon Steinbeiss <simon.steinbe...@elfenbeinturm.at> Date: Sun Nov 11 23:36:43 2018 +0100 Add interactive information about primary setting Currently we check if the Xfce panel, xfdesktop or xfce4-notifyd are configured to honour the "primary" setting. --- dialogs/display-settings/display-dialog.glade | 250 ++++++++++++++++++++++---- dialogs/display-settings/main.c | 92 ++++++++++ 2 files changed, 305 insertions(+), 37 deletions(-) diff --git a/dialogs/display-settings/display-dialog.glade b/dialogs/display-settings/display-dialog.glade index dfedf4e..0869390 100644 --- a/dialogs/display-settings/display-dialog.glade +++ b/dialogs/display-settings/display-dialog.glade @@ -18,6 +18,154 @@ <property name="can_focus">False</property> <property name="icon_name">document-new-symbolic</property> </object> + <object class="GtkPopover" id="primary-info"> + <property name="can_focus">False</property> + <property name="position">bottom</property> + <child> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="margin_right">12</property> + <property name="margin_top">12</property> + <property name="margin_bottom">12</property> + <child> + <object class="GtkImage" id="panel-ok"> + <property name="can_focus">False</property> + <property name="margin_left">18</property> + <property name="icon_name">emblem-ok-symbolic</property> + <style> + <class name="success"/> + </style> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkImage" id="desktop-ok"> + <property name="can_focus">False</property> + <property name="margin_left">18</property> + <property name="icon_name">emblem-ok-symbolic</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkImage" id="notifications-ok"> + <property name="can_focus">False</property> + <property name="margin_left">18</property> + <property name="icon_name">emblem-ok-symbolic</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_bottom">12</property> + <property name="label" translatable="yes">The primary display is currently configured to show:</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">3</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="panel-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">Xfce Panel</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="desktop-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">Desktop icons</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="notifications-label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="label" translatable="yes">Notifications</property> + <property name="xalign">0</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="panel-configure"> + <property name="label" translatable="yes">Configure...</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <style> + <class name="flat"/> + </style> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="desktop-configure"> + <property name="label" translatable="yes">Configure...</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <style> + <class name="flat"/> + </style> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="notifications-configure"> + <property name="label" translatable="yes">Configure...</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <style> + <class name="flat"/> + </style> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">3</property> + </packing> + </child> + </object> + </child> + </object> <object class="XfceTitledDialog" id="display-dialog"> <property name="can_focus">False</property> <property name="title" translatable="yes">Display</property> @@ -134,43 +282,6 @@ <property name="row_spacing">6</property> <property name="column_spacing">12</property> <child> - <object class="GtkBox"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">12</property> - <child> - <object class="GtkComboBox" id="randr-outputs"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkSwitch" id="output-on"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="halign">end</property> - <property name="valign">center</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">0</property> - <property name="width">2</property> - </packing> - </child> - <child> <object class="GtkLabel" id="label-resolution"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -277,6 +388,59 @@ </packing> </child> <child> + <object class="GtkMenuButton" id="primary-info-button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="relief">none</property> + <property name="popover">primary-info</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">12</property> + <child> + <object class="GtkComboBox" id="randr-outputs"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSwitch" id="output-on"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="halign">end</property> + <property name="valign">center</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">3</property> + </packing> + </child> + <child> <object class="GtkLabel" id="label-primary"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -290,6 +454,18 @@ <property name="top_attach">1</property> </packing> </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> </object> <packing> <property name="expand">False</property> diff --git a/dialogs/display-settings/main.c b/dialogs/display-settings/main.c index fb1712b..f42f09c 100644 --- a/dialogs/display-settings/main.c +++ b/dialogs/display-settings/main.c @@ -1778,6 +1778,95 @@ display_setting_minimal_autoshow_toggled (GtkSwitch *widget, return TRUE; } +static void +display_settings_launch_settings_dialogs (GtkButton *button, + gpointer user_data) +{ + gchar *command = user_data; + GAppInfo *app_info = NULL; + GError *error = NULL; + + g_warning ("trying to launch %s", command); + + app_info = g_app_info_create_from_commandline (command, "Xfce Settings", + G_APP_INFO_CREATE_NONE, NULL); + app_info = g_app_info_create_from_commandline (command, "Xfce Settings", G_APP_INFO_CREATE_NONE, &error); + if (G_UNLIKELY (app_info == NULL)) { + g_warning ("Could not find application %s", error->message); + return; + } + if (error != NULL) + g_error_free (error); + + if (!g_app_info_launch (app_info, NULL, NULL, &error)) + g_warning ("Could not launch the application %s", error->message); + if (error != NULL) + g_error_free (error); +} + +static void +display_settings_primary_status_info_populate (GtkBuilder *builder) +{ + GObject *widget; + GtkWidget *image; + XfconfChannel *channel; + gchar *primary_status_panel; + gint primary_status; + gint panels = 0; + gint panels_with_primary = 0; + gchar *property; + + widget = gtk_builder_get_object (builder, "primary-info-button"); + image = gtk_image_new_from_icon_name ("dialog-information", GTK_ICON_SIZE_BUTTON); + gtk_container_add (GTK_CONTAINER (widget), image); + gtk_widget_show (image); + + channel = xfconf_channel_new ("xfce4-panel"); + widget = gtk_builder_get_object (builder, "panel-ok"); + property = g_strdup_printf ("/panels/panel-%u/output-name", panels); + /* Check all panels and show the ok icon on the first occurence of a panel set to "Primary" */ + for (panels = 0; xfconf_channel_has_property (channel, property); panels++) + { + primary_status_panel = xfconf_channel_get_string (channel, property, "Automatic"); + if (g_strcmp0 (primary_status_panel, "Primary") == 0) + { + gtk_widget_show (GTK_WIDGET (widget)); + panels_with_primary++; + } + else + gtk_widget_hide (GTK_WIDGET (widget)); + property = g_strdup_printf ("/panels/panel-%u/output-name", panels + 1); + } + if (panels_with_primary > 1) + { + gchar *label; + widget = gtk_builder_get_object (builder, "panel-label"); + label = g_strdup_printf (_("%d Xfce Panels"), panels_with_primary); + gtk_label_set_text (GTK_LABEL (widget), label); + g_free (label); + } + g_free (property); + g_object_unref (G_OBJECT (channel)); + widget = gtk_builder_get_object (builder, "panel-configure"); + g_signal_connect (widget, "clicked", G_CALLBACK (display_settings_launch_settings_dialogs), "xfce4-panel --preferences"); + + channel = xfconf_channel_new ("xfce4-desktop"); + primary_status = xfconf_channel_get_bool (channel, "/desktop-icons/primary", FALSE); + widget = gtk_builder_get_object (builder, "desktop-ok"); + gtk_widget_set_visible (GTK_WIDGET (widget), primary_status); + g_object_unref (G_OBJECT (channel)); + widget = gtk_builder_get_object (builder, "desktop-configure"); + g_signal_connect (widget, "clicked", G_CALLBACK (display_settings_launch_settings_dialogs), "xfdesktop-settings"); + + channel = xfconf_channel_new ("xfce4-notifyd"); + primary_status = xfconf_channel_get_uint (channel, "/primary-monitor", 0); + widget = gtk_builder_get_object (builder, "notifications-ok"); + gtk_widget_set_visible (GTK_WIDGET (widget), primary_status); + g_object_unref (G_OBJECT (channel)); + widget = gtk_builder_get_object (builder, "notifications-configure"); + g_signal_connect (widget, "clicked", G_CALLBACK (display_settings_launch_settings_dialogs), "xfce4-notifyd-config"); +} + static GtkWidget * display_settings_dialog_new (GtkBuilder *builder) { @@ -1830,6 +1919,9 @@ display_settings_dialog_new (GtkBuilder *builder) gtk_widget_hide (GTK_WIDGET (mirror)); } + /* Set up primary status info button */ + display_settings_primary_status_info_populate (builder); + label = gtk_builder_get_object (builder, "label-reflection"); gtk_widget_show (GTK_WIDGET (label)); -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits