[gnome-software: 6/10] gs-details-page: Add an infobar to highlight missing translations
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software: 6/10] gs-details-page: Add an infobar to highlight missing translations
- Date: Fri, 13 Aug 2021 12:10:36 +0000 (UTC)
commit 53f896e100a1a375febcc9e0b6a6dc9bbfb2435f
Author: Philip Withnall <pwithnall endlessos org>
Date: Tue Aug 10 15:29:06 2021 +0100
gs-details-page: Add an infobar to highlight missing translations
If the app is <50% translated to the current locale, this infobar will
be shown. If the app is FOSS and has provided a link for adding
translations, a button will be shown to open the
`GsAppTranslationDialog` with more information about how to contribute
to translations.
Signed-off-by: Philip Withnall <pwithnall endlessos org>
Fixes: #1354
src/gs-details-page.c | 28 +
src/gs-details-page.ui | 1347 +++++++++++++++++++++++++-----------------------
2 files changed, 723 insertions(+), 652 deletions(-)
---
diff --git a/src/gs-details-page.c b/src/gs-details-page.c
index cdefe3c53..6eedf0a78 100644
--- a/src/gs-details-page.c
+++ b/src/gs-details-page.c
@@ -20,6 +20,7 @@
#include "gs-details-page.h"
#include "gs-app-addon-row.h"
#include "gs-app-context-bar.h"
+#include "gs-app-translation-dialog.h"
#include "gs-app-version-history-row.h"
#include "gs-app-version-history-dialog.h"
#include "gs-description-box.h"
@@ -141,6 +142,8 @@ struct _GsDetailsPage
GtkWidget *origin_box;
GtkWidget *origin_button_label;
GsLicenseTile *license_tile;
+ GtkInfoBar *translation_infobar;
+ GtkButton *translation_infobar_button;
};
G_DEFINE_TYPE (GsDetailsPage, gs_details_page, GS_TYPE_PAGE)
@@ -554,6 +557,18 @@ gs_details_page_license_tile_get_involved_activated_cb (GsLicenseTile *license_t
gs_shell_show_uri (self->shell, gs_app_get_url (self->app, AS_URL_KIND_HOMEPAGE));
}
+static void
+gs_details_page_translation_infobar_response_cb (GtkInfoBar *infobar,
+ int response,
+ gpointer user_data)
+{
+ GsDetailsPage *self = GS_DETAILS_PAGE (user_data);
+ GtkWindow *window;
+
+ window = GTK_WINDOW (gs_app_translation_dialog_new (self->app));
+ gs_shell_modal_dialog_present (self->shell, window);
+}
+
static void
gs_details_page_set_description (GsDetailsPage *self, const gchar *tmp)
{
@@ -1011,6 +1026,16 @@ gs_details_page_refresh_all (GsDetailsPage *self)
/* refresh buttons */
gs_details_page_refresh_buttons (self);
+ /* Set up the translation infobar. Assume that translations can be
+ * contributed to if an app is FOSS and it has provided a link for
+ * contributing translations. */
+ gtk_widget_set_visible (GTK_WIDGET (self->translation_infobar_button),
+ gs_app_translation_dialog_app_has_url (self->app) &&
+ gs_app_get_license_is_free (self->app));
+ gtk_info_bar_set_revealed (self->translation_infobar,
+ gs_app_get_has_translations (self->app) &&
+ !gs_app_has_kudo (self->app, GS_APP_KUDO_MY_LANGUAGE));
+
/* set the description */
tmp = gs_app_get_description (self->app);
gs_details_page_set_description (self, tmp);
@@ -2328,9 +2353,12 @@ gs_details_page_class_init (GsDetailsPageClass *klass)
gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, origin_box);
gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, origin_button_label);
gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, license_tile);
+ gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, translation_infobar);
+ gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, translation_infobar_button);
gtk_widget_class_bind_template_callback (widget_class, gs_details_page_link_row_activated_cb);
gtk_widget_class_bind_template_callback (widget_class,
gs_details_page_license_tile_get_involved_activated_cb);
+ gtk_widget_class_bind_template_callback (widget_class,
gs_details_page_translation_infobar_response_cb);
}
static void
diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui
index d087bc311..f733b8067 100644
--- a/src/gs-details-page.ui
+++ b/src/gs-details-page.ui
@@ -59,862 +59,905 @@
<object class="GtkViewport" id="viewport1">
<property name="visible">True</property>
<child>
- <object class="GtkBox" id="box_details">
+ <object class="GtkBox">
<property name="orientation">vertical</property>
<property name="visible">True</property>
- <property name="halign">fill</property>
- <property name="valign">start</property>
- <property name="spacing">18</property>
- <property name="hexpand">False</property>
- <style>
- <class name="details-page"/>
- </style>
<child>
- <object class="HdyClamp">
+ <object class="GtkInfoBar" id="translation_infobar">
+ <property name="revealed">False</property>
+ <property name="show-close-button">False</property>
+ <property name="spacing">12</property>
<property name="visible">True</property>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <child>
- <object class="GtkBox" id="box_details_header">
+ <signal name="response" handler="gs_details_page_translation_infobar_response_cb"/>
+ <child internal-child="content_area">
+ <object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="visible">True</property>
- <property name="spacing">32</property>
+ <child type="center">
+ <object class="GtkLabel" id="translation_infobar_label">
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">This app is not available in your
language and will appear in US English.</property>
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ </object>
+ </child>
<child>
- <object class="GtkImage" id="application_details_icon">
+ <object class="GtkButton" id="translation_infobar_button">
+ <property name="label" translatable="yes">Help _Translate</property>
+ <property name="use-underline">True</property>
<property name="visible">True</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="pixel_size">128</property>
- <style>
- <class name="icon-dropshadow"/>
- </style>
</object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
</child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget
response="GTK_RESPONSE_OK">translation_infobar_button</action-widget>
+ </action-widgets>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox" id="box_details">
+ <property name="orientation">vertical</property>
+ <property name="visible">True</property>
+ <property name="halign">fill</property>
+ <property name="valign">start</property>
+ <property name="spacing">18</property>
+ <property name="hexpand">False</property>
+ <style>
+ <class name="details-page"/>
+ </style>
+ <child>
+ <object class="HdyClamp">
+ <property name="visible">True</property>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<child>
- <object class="GtkBox">
+ <object class="GtkBox" id="box_details_header">
<property name="orientation">horizontal</property>
<property name="visible">True</property>
- <property name="spacing">10</property>
+ <property name="spacing">32</property>
<child>
- <object class="GtkBox" id="box_details_header2">
- <property name="orientation">vertical</property>
+ <object class="GtkImage" id="application_details_icon">
<property name="visible">True</property>
- <property name="halign">fill</property>
- <property name="valign">center</property>
- <property name="spacing">6</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="pixel_size">128</property>
+ <style>
+ <class name="icon-dropshadow"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="visible">True</property>
+ <property name="spacing">10</property>
<child>
- <object class="GtkLabel" id="application_details_title">
+ <object class="GtkBox" id="box_details_header2">
+ <property name="orientation">vertical</property>
<property name="visible">True</property>
<property name="halign">fill</property>
- <property name="valign">start</property>
- <property name="hexpand">True</property>
- <property name="xalign">0</property>
- <property name="selectable">True</property>
- <property name="wrap">True</property>
- <property name="max_width_chars">20</property>
- <style>
- <class name="title-1"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible" bind-source="developer_name_label"
bind-property="visible" bind-flags="sync-create"/>
- <property name="hexpand">True</property>
- <property name="spacing">3</property>
- <property name="orientation">horizontal</property>
+ <property name="valign">center</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkLabel" id="developer_name_label">
+ <object class="GtkLabel" id="application_details_title">
<property name="visible">True</property>
- <!-- This is a placeholder; the real value is set in code -->
- <property name="label">Yorba</property>
- <property name="wrap">False</property>
- <property name="selectable">True</property>
- <property name="max-width-chars">100</property>
+ <property name="halign">fill</property>
+ <property name="valign">start</property>
+ <property name="hexpand">True</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="hexpand">False</property>
+ <property name="selectable">True</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">20</property>
<style>
- <class name="dim-label"/>
+ <class name="title-1"/>
</style>
</object>
</child>
<child>
- <object class="GtkImage" id="developer_verified_image">
- <property name="visible">True</property>
- <property name="pixel-size">16</property>
- <property name="icon-name">emblem-ok-symbolic</property>
+ <object class="GtkBox">
+ <property name="visible" bind-source="developer_name_label"
bind-property="visible" bind-flags="sync-create"/>
+ <property name="hexpand">True</property>
+ <property name="spacing">3</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="developer_name_label">
+ <property name="visible">True</property>
+ <!-- This is a placeholder; the real value is set in code -->
+ <property name="label">Yorba</property>
+ <property name="wrap">False</property>
+ <property name="selectable">True</property>
+ <property name="max-width-chars">100</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="hexpand">False</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="developer_verified_image">
+ <property name="visible">True</property>
+ <property name="pixel-size">16</property>
+ <property name="icon-name">emblem-ok-symbolic</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="star_box">
- <property name="margin-top">6</property>
- <property name="visible">True</property>
- <property name="valign">start</property>
<child>
- <object class="GtkEventBox" id="star_eventbox">
+ <object class="GtkBox" id="star_box">
+ <property name="margin-top">6</property>
<property name="visible">True</property>
+ <property name="valign">start</property>
<child>
- <object class="GsStarWidget" id="star">
+ <object class="GtkEventBox" id="star_eventbox">
<property name="visible">True</property>
+ <child>
+ <object class="GsStarWidget" id="star">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-size">16</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_review_count">
+ <property name="visible">True</property>
+ <property name="margin_start">5</property>
<property name="halign">start</property>
<property name="valign">center</property>
- <property name="icon-size">16</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
</object>
</child>
</object>
</child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkBox" id="box_install_remove">
+ <property name="visible">True</property>
+ <property name="spacing">9</property>
<child>
- <object class="GtkLabel" id="label_review_count">
- <property name="visible">True</property>
- <property name="margin_start">5</property>
+ <object class="GtkButton" id="button_install">
+ <property name="visible">False</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes">_Install</property>
+ <property name="width_request">105</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
<property name="halign">start</property>
<property name="valign">center</property>
<style>
- <class name="dim-label"/>
+ <class name="suggested-action"/>
</style>
</object>
</child>
- </object>
- </child>
- </object>
- </child>
-
- <child>
- <object class="GtkBox" id="box_install_remove">
- <property name="visible">True</property>
- <property name="spacing">9</property>
- <child>
- <object class="GtkButton" id="button_install">
- <property name="visible">False</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes">_Install</property>
- <property name="width_request">105</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- <style>
- <class name="suggested-action"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_details_launch">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="use_underline">True</property>
- <property name="valign">center</property>
- <style>
- <class name="suggested-action"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_remove">
- <property name="visible">False</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes">_Uninstall</property>
- <property name="width_request">105</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- </object>
- </child>
- <child>
- <object class="GtkSpinner" id="spinner_remove">
- <property name="visible">False</property>
- <property name="valign">center</property>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="box_progress">
- <property name="visible">True</property>
- <property name="spacing">3</property>
- <property name="orientation">vertical</property>
- <property name="hexpand">True</property>
- <property name="valign">center</property>
<child>
- <object class="GtkBox" id="box_progress2">
+ <object class="GtkButton" id="button_details_launch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_underline">True</property>
+ <property name="valign">center</property>
+ <style>
+ <class name="suggested-action"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_remove">
+ <property name="visible">False</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes">_Uninstall</property>
+ <property name="width_request">105</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner_remove">
+ <property name="visible">False</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box_progress">
<property name="visible">True</property>
<property name="spacing">3</property>
- <property name="halign">center</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">True</property>
+ <property name="valign">center</property>
<child>
- <object class="GtkLabel" id="label_progress_status">
+ <object class="GtkBox" id="box_progress2">
<property name="visible">True</property>
- <property name="valign">start</property>
- <property name="label"
translatable="yes">Downloading</property>
+ <property name="spacing">3</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="label_progress_status">
+ <property name="visible">True</property>
+ <property name="valign">start</property>
+ <property name="label"
translatable="yes">Downloading</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_progress_percentage">
+ <property name="visible">True</property>
+ <property name="valign">start</property>
+ <property name="label">50%</property>
+ </object>
+ </child>
</object>
</child>
<child>
- <object class="GtkLabel" id="label_progress_percentage">
+ <object class="GtkProgressBar" id="progressbar_top">
<property name="visible">True</property>
- <property name="valign">start</property>
- <property name="label">50%</property>
+ <property name="fraction">0.5</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="width_request">624</property>
+ <style>
+ <class name="upgrade-progressbar"/>
+ </style>
</object>
</child>
</object>
</child>
<child>
- <object class="GtkProgressBar" id="progressbar_top">
- <property name="visible">True</property>
- <property name="fraction">0.5</property>
+ <object class="GtkButton" id="button_cancel">
+ <property name="visible">False</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="width_request">116</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_update">
+ <property name="visible">False</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes">_Update</property>
+ <property name="width_request">105</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_details_add_shortcut">
+ <property name="visible">False</property>
+ <property name="can_focus">True</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes" comments="Translators:
A label for a button to add a shortcut to the selected application.">_Add shortcut</property>
<property name="valign">center</property>
- <property name="vexpand">True</property>
- <property name="width_request">624</property>
<style>
- <class name="upgrade-progressbar"/>
+ <class name="suggested-action"/>
</style>
</object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_details_remove_shortcut">
+ <property name="visible">False</property>
+ <property name="can_focus">True</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes" comments="Translators:
A label for a button to remove a shortcut to the selected application.">Re_move shortcut</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
</child>
</object>
</child>
- <child>
- <object class="GtkButton" id="button_cancel">
- <property name="visible">False</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes">_Cancel</property>
- <property name="width_request">116</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="valign">center</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_update">
- <property name="visible">False</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes">_Update</property>
- <property name="width_request">105</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_details_add_shortcut">
- <property name="visible">False</property>
- <property name="can_focus">True</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes" comments="Translators: A
label for a button to add a shortcut to the selected application.">_Add shortcut</property>
- <property name="valign">center</property>
- <style>
- <class name="suggested-action"/>
- </style>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_details_remove_shortcut">
- <property name="visible">False</property>
- <property name="can_focus">True</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes" comments="Translators: A
label for a button to remove a shortcut to the selected application.">Re_move shortcut</property>
- <property name="valign">center</property>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
</object>
</child>
</object>
</child>
</object>
</child>
- </object>
- </child>
-
- <child>
- <object class="GsScreenshotCarousel" id="screenshot_carousel">
- <property name="visible">True</property>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible">True</property>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GtkBox" id="application_details">
+ <object class="GsScreenshotCarousel" id="screenshot_carousel">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <child>
- <object class="GtkLabel" id="application_details_summary">
- <property name="visible">True</property>
- <property name="halign">fill</property>
- <property name="valign">start</property>
- <property name="hexpand">True</property>
- <property name="xalign">0</property>
- <property name="selectable">True</property>
- <property name="wrap">True</property>
- <property name="max-width-chars">60</property>
- <style>
- <class name="title-2"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GsDescriptionBox" id="box_details_description">
- <property name="orientation">vertical</property>
- <property name="spacing">12</property>
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="valign">start</property>
- <property name="visible">FALSE</property>
- <property name="margin_bottom">14</property>
- </object>
- </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible">True</property>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GtkBox" id="box_addons">
+ <object class="HdyClamp">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
-
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<child>
- <object class="GtkBox" id="box_addons_title">
+ <object class="GtkBox" id="application_details">
<property name="visible">True</property>
<property name="orientation">vertical</property>
- <property name="margin_bottom">12</property>
+ <property name="spacing">12</property>
<child>
- <object class="GtkLabel" id="label_addons_title">
+ <object class="GtkLabel" id="application_details_summary">
<property name="visible">True</property>
- <property name="halign">start</property>
+ <property name="halign">fill</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Add-ons</property>
+ <property name="selectable">True</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">60</property>
<style>
<class name="title-2"/>
</style>
</object>
</child>
<child>
- <object class="GtkLabel" id="label_addons_uninstalled_app">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="wrap">True</property>
- <property name="max-width-chars">40</property>
- <property name="label" translatable="yes">Selected add-ons will be
installed with the application.</property>
+ <object class="GsDescriptionBox" id="box_details_description">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="valign">start</property>
+ <property name="visible">FALSE</property>
+ <property name="margin_bottom">14</property>
</object>
</child>
</object>
</child>
- <child>
- <object class="GtkListBox" id="list_box_addons">
- <property name="visible">True</property>
- <property name="selection_mode">none</property>
- <property name="halign">fill</property>
- <property name="valign">start</property>
- <style>
- <class name="content"/>
- </style>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
-
- <child>
- <object class="HdyClamp">
- <property name="visible">True</property>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <child>
- <object class="GsAppContextBar" id="context_bar">
- <property name="visible">True</property>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible">True</property>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GtkListBox" id="list_box_version_history">
+ <object class="HdyClamp">
<property name="visible">True</property>
- <property name="selection_mode">none</property>
- <property name="halign">fill</property>
- <property name="valign">start</property>
- <style>
- <class name="content"/>
- </style>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<child>
- <object class="GsAppVersionHistoryRow" id="row_latest_version">
- </object>
- </child>
- <child>
- <object class="GtkListBoxRow" id="version_history_button">
+ <object class="GtkBox" id="box_addons">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="orientation">vertical</property>
+
<child>
- <object class="GtkBox">
+ <object class="GtkBox" id="box_addons_title">
<property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="halign">center</property>
- <property name="margin_top">12</property>
+ <property name="orientation">vertical</property>
<property name="margin_bottom">12</property>
<child>
- <object class="GtkLabel">
+ <object class="GtkLabel" id="label_addons_title">
<property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="hexpand">True</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="label" translatable="yes">Version History</property>
+ <property name="label" translatable="yes">Add-ons</property>
+ <style>
+ <class name="title-2"/>
+ </style>
</object>
</child>
<child>
- <object class="GtkImage">
+ <object class="GtkLabel" id="label_addons_uninstalled_app">
<property name="visible">True</property>
- <property name="icon-name">go-next-symbolic</property>
- <property name="margin_start">6</property>
+ <property name="xalign">0</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">40</property>
+ <property name="label" translatable="yes">Selected add-ons will be
installed with the application.</property>
</object>
</child>
</object>
</child>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
-
- <child>
- <object class="HdyClamp">
- <property name="visible" bind-source="label_webapp_warning" bind-property="visible"
bind-flags="sync-create"/>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
- <child>
- <object class="GtkLabel" id="label_webapp_warning">
- <property name="visible">False</property>
- <property name="halign">center</property>
- <property name="hexpand">True</property>
- <property name="valign">start</property>
- <property name="xalign">0.0</property>
- <property name="label" translatable="yes">This application can only be used when
there is an active internet connection.</property>
- <style>
- <class name="application-details-webapp-warning"/>
- </style>
+ <child>
+ <object class="GtkListBox" id="list_box_addons">
+ <property name="visible">True</property>
+ <property name="selection_mode">none</property>
+ <property name="halign">fill</property>
+ <property name="valign">start</property>
+ <style>
+ <class name="content"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible" bind-source="infobar_details_app_repo"
bind-property="visible" bind-flags="sync-create"/>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GsInfoBar" id="infobar_details_app_repo">
+ <object class="HdyClamp">
<property name="visible">True</property>
- <property name="margin_top">20</property>
- <property name="title" translatable="yes">Software Repository Included</property>
- <property name="body" translatable="yes">This application includes a software
repository which provides updates, as well as access to other software.</property>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="GsAppContextBar" id="context_bar">
+ <property name="visible">True</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible" bind-source="infobar_details_app_norepo"
bind-property="visible" bind-flags="sync-create"/>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GsInfoBar" id="infobar_details_app_norepo">
+ <object class="HdyClamp">
<property name="visible">True</property>
- <property name="margin_top">20</property>
- <property name="title" translatable="yes">No Software Repository
Included</property>
- <property name="body" translatable="yes">This application does not include a
software repository. It will not be updated with new versions.</property>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="GtkListBox" id="list_box_version_history">
+ <property name="visible">True</property>
+ <property name="selection_mode">none</property>
+ <property name="halign">fill</property>
+ <property name="valign">start</property>
+ <style>
+ <class name="content"/>
+ </style>
+ <child>
+ <object class="GsAppVersionHistoryRow" id="row_latest_version">
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="version_history_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="halign">center</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="label" translatable="yes">Version
History</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">go-next-symbolic</property>
+ <property name="margin_start">6</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible" bind-source="infobar_details_package_baseos"
bind-property="visible" bind-flags="sync-create"/>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GsInfoBar" id="infobar_details_package_baseos">
- <property name="visible">True</property>
- <property name="message_type">warning</property>
- <property name="margin_top">20</property>
- <property name="title" translatable="yes">This software is already provided by
your distribution and should not be replaced.</property>
+ <object class="HdyClamp">
+ <property name="visible" bind-source="label_webapp_warning"
bind-property="visible" bind-flags="sync-create"/>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="GtkLabel" id="label_webapp_warning">
+ <property name="visible">False</property>
+ <property name="halign">center</property>
+ <property name="hexpand">True</property>
+ <property name="valign">start</property>
+ <property name="xalign">0.0</property>
+ <property name="label" translatable="yes">This application can only be used
when there is an active internet connection.</property>
+ <style>
+ <class name="application-details-webapp-warning"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible" bind-source="infobar_details_repo" bind-property="visible"
bind-flags="sync-create"/>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GsInfoBar" id="infobar_details_repo">
- <property name="visible">True</property>
- <property name="margin_top">20</property>
- <property name="title" translatable="yes" comments="Translators: a repository
file used for installing software has been discovered.">Software Repository Identified</property>
- <property name="body" translatable="yes">Adding this software repository will
give you access to additional software and upgrades.</property>
- <property name="warning" translatable="yes">Only use software repositories that
you trust.</property>
+ <object class="HdyClamp">
+ <property name="visible" bind-source="infobar_details_app_repo"
bind-property="visible" bind-flags="sync-create"/>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="GsInfoBar" id="infobar_details_app_repo">
+ <property name="visible">True</property>
+ <property name="margin_top">20</property>
+ <property name="title" translatable="yes">Software Repository
Included</property>
+ <property name="body" translatable="yes">This application includes a
software repository which provides updates, as well as access to other software.</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible">True</property>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GtkBox" id="box_license">
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <property name="orientation">horizontal</property>
- <property name="spacing">12</property>
+ <object class="HdyClamp">
+ <property name="visible" bind-source="infobar_details_app_norepo"
bind-property="visible" bind-flags="sync-create"/>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="GsInfoBar" id="infobar_details_app_norepo">
+ <property name="visible">True</property>
+ <property name="margin_top">20</property>
+ <property name="title" translatable="yes">No Software Repository
Included</property>
+ <property name="body" translatable="yes">This application does not include a
software repository. It will not be updated with new versions.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyClamp">
+ <property name="visible" bind-source="infobar_details_package_baseos"
bind-property="visible" bind-flags="sync-create"/>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<child>
- <object class="GsLicenseTile" id="license_tile">
+ <object class="GsInfoBar" id="infobar_details_package_baseos">
<property name="visible">True</property>
- <property name="halign">fill</property>
- <property name="valign">start</property>
- <signal name="get-involved-activated"
handler="gs_details_page_license_tile_get_involved_activated_cb"/>
+ <property name="message_type">warning</property>
+ <property name="margin_top">20</property>
+ <property name="title" translatable="yes">This software is already provided
by your distribution and should not be replaced.</property>
</object>
</child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyClamp">
+ <property name="visible" bind-source="infobar_details_repo"
bind-property="visible" bind-flags="sync-create"/>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<child>
- <object class="GtkStack" id="links_stack">
+ <object class="GsInfoBar" id="infobar_details_repo">
<property name="visible">True</property>
+ <property name="margin_top">20</property>
+ <property name="title" translatable="yes" comments="Translators: a
repository file used for installing software has been discovered.">Software Repository Identified</property>
+ <property name="body" translatable="yes">Adding this software repository
will give you access to additional software and upgrades.</property>
+ <property name="warning" translatable="yes">Only use software repositories
that you trust.</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object class="HdyClamp">
+ <property name="visible">True</property>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="GtkBox" id="box_license">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="spacing">12</property>
<child>
- <object class="GtkBox">
+ <object class="GsLicenseTile" id="license_tile">
+ <property name="visible">True</property>
+ <property name="halign">fill</property>
+ <property name="valign">start</property>
+ <signal name="get-involved-activated"
handler="gs_details_page_license_tile_get_involved_activated_cb"/>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkStack" id="links_stack">
<property name="visible">True</property>
- <property name="hexpand-set">True</property>
- <style>
- <class name="content-box"/>
- </style>
<child>
<object class="GtkBox">
<property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">8</property>
- <property name="margin">14</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
+ <property name="hexpand-set">True</property>
<style>
- <class name="dim-label"/>
+ <class name="content-box"/>
</style>
<child>
- <object class="GtkImage">
- <property name="icon-name">dialog-question-symbolic</property>
- <property name="pixel-size">96</property>
- <property name="visible">True</property>
- <property name="margin-bottom">8</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="label" translatable="yes">No Metadata</property>
+ <object class="GtkBox">
<property name="visible">True</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="justify">center</property>
- <property name="label" translatable="yes">This app doesn’t
provide any links to a website, code repository or issue tracker.</property>
- <property name="visible">True</property>
- <property name="wrap">True</property>
- <property name="xalign">0.5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">8</property>
+ <property name="margin">14</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+
+ <child>
+ <object class="GtkImage">
+ <property
name="icon-name">dialog-question-symbolic</property>
+ <property name="pixel-size">96</property>
+ <property name="visible">True</property>
+ <property name="margin-bottom">8</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">No
Metadata</property>
+ <property name="visible">True</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="justify">center</property>
+ <property name="label" translatable="yes">This app doesn’t
provide any links to a website, code repository or issue tracker.</property>
+ <property name="visible">True</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0.5</property>
+ </object>
+ </child>
</object>
</child>
</object>
+ <packing>
+ <property name="name">empty</property>
+ </packing>
</child>
- </object>
- <packing>
- <property name="name">empty</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkListBox">
- <property name="visible">True</property>
- <property name="selection_mode">none</property>
- <property name="halign">fill</property>
- <property name="valign">start</property>
- <style>
- <class name="content"/>
- </style>
<child>
- <object class="HdyActionRow" id="project_website_row">
- <property name="activatable">True</property>
+ <object class="GtkListBox">
<property name="visible">True</property>
- <property name="title" translatable="yes">Project _Website</property>
- <!-- This is a placeholder; the actual URI is set in code -->
- <property name="subtitle">gnome.org</property>
- <property name="use-underline">True</property>
- <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
- <child type="prefix">
- <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">web-browser-symbolic</property>
- <property name="icon-size">4</property>
- </object>
- </child>
+ <property name="selection_mode">none</property>
+ <property name="halign">fill</property>
+ <property name="valign">start</property>
+ <style>
+ <class name="content"/>
+ </style>
+
<child>
- <object class="GtkImage">
+ <object class="HdyActionRow" id="project_website_row">
+ <property name="activatable">True</property>
<property name="visible">True</property>
- <property name="icon-name">external-link-symbolic</property>
+ <property name="title" translatable="yes">Project
_Website</property>
+ <!-- This is a placeholder; the actual URI is set in code -->
+ <property name="subtitle">gnome.org</property>
+ <property name="use-underline">True</property>
+ <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
+ <child type="prefix">
+ <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">web-browser-symbolic</property>
+ <property name="icon-size">4</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">external-link-symbolic</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyActionRow" id="donate_row">
- <property name="activatable">True</property>
- <property name="visible">True</property>
- <property name="title" translatable="yes">_Donate</property>
- <!-- This is a placeholder; the actual URI is set in code -->
- <property name="subtitle">gnome.org</property>
- <property name="use-underline">True</property>
- <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
- <child type="prefix">
- <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">money-symbolic</property>
- <property name="icon-size">4</property>
- </object>
- </child>
<child>
- <object class="GtkImage">
+ <object class="HdyActionRow" id="donate_row">
+ <property name="activatable">True</property>
<property name="visible">True</property>
- <property name="icon-name">external-link-symbolic</property>
+ <property name="title" translatable="yes">_Donate</property>
+ <!-- This is a placeholder; the actual URI is set in code -->
+ <property name="subtitle">gnome.org</property>
+ <property name="use-underline">True</property>
+ <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
+ <child type="prefix">
+ <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">money-symbolic</property>
+ <property name="icon-size">4</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">external-link-symbolic</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyActionRow" id="translate_row">
- <property name="activatable">True</property>
- <property name="visible">True</property>
- <property name="title" translatable="yes">_Contribute
Translations</property>
- <!-- This is a placeholder; the actual URI is set in code -->
- <property name="subtitle">gnome.org</property>
- <property name="use-underline">True</property>
- <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
- <child type="prefix">
- <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">flag-outline-thin-symbolic</property>
- <property name="icon-size">4</property>
- </object>
- </child>
<child>
- <object class="GtkImage">
+ <object class="HdyActionRow" id="translate_row">
+ <property name="activatable">True</property>
<property name="visible">True</property>
- <property name="icon-name">external-link-symbolic</property>
+ <property name="title" translatable="yes">_Contribute
Translations</property>
+ <!-- This is a placeholder; the actual URI is set in code -->
+ <property name="subtitle">gnome.org</property>
+ <property name="use-underline">True</property>
+ <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
+ <child type="prefix">
+ <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property
name="icon-name">flag-outline-thin-symbolic</property>
+ <property name="icon-size">4</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">external-link-symbolic</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyActionRow" id="report_an_issue_row">
- <property name="activatable">True</property>
- <property name="visible">True</property>
- <property name="title" translatable="yes">_Report an Issue</property>
- <!-- This is a placeholder; the actual URI is set in code -->
- <property name="subtitle">gnome.org</property>
- <property name="use-underline">True</property>
- <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
- <child type="prefix">
- <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">computer-fail-symbolic</property>
- <property name="icon-size">4</property>
- </object>
- </child>
<child>
- <object class="GtkImage">
+ <object class="HdyActionRow" id="report_an_issue_row">
+ <property name="activatable">True</property>
<property name="visible">True</property>
- <property name="icon-name">external-link-symbolic</property>
+ <property name="title" translatable="yes">_Report an
Issue</property>
+ <!-- This is a placeholder; the actual URI is set in code -->
+ <property name="subtitle">gnome.org</property>
+ <property name="use-underline">True</property>
+ <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
+ <child type="prefix">
+ <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">computer-fail-symbolic</property>
+ <property name="icon-size">4</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">external-link-symbolic</property>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyActionRow" id="help_row">
- <property name="activatable">True</property>
- <property name="visible">True</property>
- <property name="title" translatable="yes">_Help</property>
- <!-- This is a placeholder; the actual URI is set in code -->
- <property name="subtitle">gnome.org</property>
- <property name="use-underline">True</property>
- <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
- <child type="prefix">
- <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">help-browser-symbolic</property>
- <property name="icon-size">4</property>
- </object>
- </child>
<child>
- <object class="GtkImage">
+ <object class="HdyActionRow" id="help_row">
+ <property name="activatable">True</property>
<property name="visible">True</property>
- <property name="icon-name">external-link-symbolic</property>
+ <property name="title" translatable="yes">_Help</property>
+ <!-- This is a placeholder; the actual URI is set in code -->
+ <property name="subtitle">gnome.org</property>
+ <property name="use-underline">True</property>
+ <signal name="activated"
handler="gs_details_page_link_row_activated_cb"/>
+ <child type="prefix">
+ <!-- Provide the prefix icon as a widget rather than using the
icon-name property so we can set the size -->
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">help-browser-symbolic</property>
+ <property name="icon-size">4</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon-name">external-link-symbolic</property>
+ </object>
+ </child>
</object>
</child>
</object>
+ <packing>
+ <property name="name">links</property>
+ </packing>
</child>
</object>
- <packing>
- <property name="name">links</property>
- </packing>
</child>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="HdyClamp">
- <property name="visible" bind-source="box_reviews" bind-property="visible"
bind-flags="sync-create"/>
- <property name="maximum-size">860</property>
- <!-- ~⅔ of the maximum size. -->
- <property name="tightening-threshold">576</property>
- <property name="margin-start">12</property>
- <property name="margin-end">12</property>
<child>
- <object class="GtkBox" id="box_reviews">
- <property name="visible">False</property>
- <property name="orientation">vertical</property>
+ <object class="HdyClamp">
+ <property name="visible" bind-source="box_reviews" bind-property="visible"
bind-flags="sync-create"/>
+ <property name="maximum-size">860</property>
+ <!-- ~⅔ of the maximum size. -->
+ <property name="tightening-threshold">576</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
<child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="margin_bottom">18</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="hexpand">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes" comments="Translators: Header of
the section with other users' opinions about the app.">Reviews</property>
- <style>
- <class name="title-2"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GsReviewHistogram" id="histogram">
+ <object class="GtkBox" id="box_reviews">
<property name="visible">False</property>
- <property name="halign">start</property>
- <property name="valign">center</property>
- <property name="margin_bottom">32</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_review">
- <property name="visible">False</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes" comments="Translators: Button
opening a dialog where the users can write and publish their opinions about the apps.">_Write a
Review</property>
- <property name="can_focus">True</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="margin_bottom">18</property>
- </object>
- </child>
- <child>
- <object class="GtkListBox" id="list_box_reviews">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="selection_mode">none</property>
- <style>
- <class name="review-listbox"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_more_reviews">
- <property name="visible">False</property>
- <property name="use_underline">True</property>
- <property name="label" translatable="yes" comments="Translators: Button to
return more application-submitted reviews.">_Show More</property>
- <property name="can_focus">True</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="margin_top">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="margin_bottom">18</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="hexpand">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes" comments="Translators: Header
of the section with other users' opinions about the app.">Reviews</property>
+ <style>
+ <class name="title-2"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GsReviewHistogram" id="histogram">
+ <property name="visible">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin_bottom">32</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_review">
+ <property name="visible">False</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes" comments="Translators: Button
opening a dialog where the users can write and publish their opinions about the apps.">_Write a
Review</property>
+ <property name="can_focus">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin_bottom">18</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBox" id="list_box_reviews">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="selection_mode">none</property>
+ <style>
+ <class name="review-listbox"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_more_reviews">
+ <property name="visible">False</property>
+ <property name="use_underline">True</property>
+ <property name="label" translatable="yes" comments="Translators: Button
to return more application-submitted reviews.">_Show More</property>
+ <property name="can_focus">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin_top">12</property>
+ </object>
+ </child>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]