Resolves tdf#135270 - Make the tight extensions dialog shiny
Information rearranged, empty icons instead of hidden,
background and scaling of thumbnail
Change-Id: Iae095134a717cb50670bf5d1786774c6424d283e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104079
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc
index e96e76e..19b7730 100644
--- a/cui/inc/strings.hrc
+++ b/cui/inc/strings.hrc
@@ -394,8 +394,6 @@
#define RID_SVXSTR_ADDITIONS_INSTALLBUTTON NC_("RID_SVXSTR_ADDITIONS_INSTALLBUTTON", "Install")
#define RID_SVXSTR_ADDITIONS_INSTALLEDBUTTON NC_("RID_SVXSTR_ADDITIONS_INSTALLEDBUTTON", "Installed")
#define RID_SVXSTR_ADDITIONS_INSTALLING NC_("RID_SVXSTR_ADDITIONS_INSTALLING", "Installing")
#define RID_SVXSTR_ADDITIONS_LICENCE NC_("RID_SVXSTR_ADDITIONS_LICENCE", "License:")
#define RID_SVXSTR_ADDITIONS_REQUIREDVERSION NC_("RID_SVXSTR_ADDITIONS_REQUIREDVERSION","Required version: >=")
#define RID_SVXSTR_ADDITIONS_SEARCHING NC_("RID_SVXSTR_ADDITIONS_SEARCHING", "Searching...")
#define RID_SVXSTR_ADDITIONS_LOADING NC_("RID_SVXSTR_ADDITIONS_LOADING", "Loading...")
#define RID_SVXSTR_ADDITIONS_DIALOG_TITLE_PREFIX NC_("RID_SVXSTR_ADDITIONS_DIALOG_TITLE_PREFIX", "Extensions")
diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx
index 7d5d953..ad8f5de 100644
--- a/cui/source/dialogs/AdditionsDialog.cxx
+++ b/cui/source/dialogs/AdditionsDialog.cxx
@@ -282,6 +282,8 @@ bool getPreviewFile(const AdditionInfo& aAdditionInfo, OUString& sPreviewFile)
void LoadImage(const OUString& rPreviewFile, std::shared_ptr<AdditionsItem> pCurrentItem)
{
const sal_Int8 Margin = 6;
SolarMutexGuard aGuard;
GraphicFilter aFilter;
@@ -292,11 +294,30 @@ void LoadImage(const OUString& rPreviewFile, std::shared_ptr<AdditionsItem> pCur
// for VCL to be able to create bitmaps / do visual changes in the thread
aFilter.ImportGraphic(aGraphic, aURLObj);
BitmapEx aBmp = aGraphic.GetBitmapEx();
Size aBmpSize = aBmp.GetSizePixel();
Size aThumbSize(pCurrentItem->m_xImageScreenshot->get_size_request());
if (!aBmp.IsEmpty())
{
double aScale;
if (aBmpSize.Width() > aThumbSize.Width() - 2 * Margin)
{
aScale = static_cast<double>(aBmpSize.Width()) / (aThumbSize.Width() - 2 * Margin);
aBmp.Scale(Size(aBmpSize.Width() / aScale, aBmpSize.Height() / aScale));
}
else if (aBmpSize.Height() > aThumbSize.Height() - 2 * Margin)
{
aScale = static_cast<double>(aBmpSize.Height()) / (aThumbSize.Height() - 2 * Margin);
aBmp.Scale(Size(aBmpSize.Width() / aScale, aBmpSize.Height() / aScale));
};
aBmpSize = aBmp.GetSizePixel();
}
ScopedVclPtr<VirtualDevice> xVirDev = pCurrentItem->m_xImageScreenshot->create_virtual_device();
xVirDev->SetOutputSizePixel(aBmp.GetSizePixel());
xVirDev->DrawBitmapEx(Point(0, 0), aBmp);
xVirDev->SetOutputSizePixel(aThumbSize);
//white background since images come with a white border
xVirDev->SetBackground(Wallpaper(COL_WHITE));
xVirDev->Erase();
xVirDev->DrawBitmapEx(Point(aThumbSize.Width() / 2 - aBmpSize.Width() / 2, Margin), aBmp);
pCurrentItem->m_xImageScreenshot->set_image(xVirDev.get());
xVirDev.disposeAndClear();
}
@@ -606,12 +627,13 @@ AdditionsItem::AdditionsItem(weld::Widget* pParent, AdditionsDialog* pParentDial
, m_xContainer(m_xBuilder->weld_widget("additionsEntry"))
, m_xImageScreenshot(m_xBuilder->weld_image("imageScreenshot"))
, m_xButtonInstall(m_xBuilder->weld_button("buttonInstall"))
, m_xLinkButtonName(m_xBuilder->weld_link_button("linkButtonName"))
, m_xLinkButtonWebsite(m_xBuilder->weld_link_button("btnWebsite"))
, m_xLabelName(m_xBuilder->weld_label("lbName"))
, m_xLabelAuthor(m_xBuilder->weld_label("labelAuthor"))
, m_xLabelDesc(m_xBuilder->weld_label("labelDesc")) // no change (print description)
, m_xLabelDescription(m_xBuilder->weld_label("labelDescription"))
, m_xLabelLicense(m_xBuilder->weld_label("labelLicense"))
, m_xLabelVersion(m_xBuilder->weld_label("labelVersion"))
, m_xLabelLicense(m_xBuilder->weld_label("lbLicenseText"))
, m_xLabelVersion(m_xBuilder->weld_label("lbVersionText"))
, m_xLabelComments(m_xBuilder->weld_label("labelComments")) // no change
, m_xLinkButtonComments(m_xBuilder->weld_link_button("linkButtonComments"))
, m_xImageVoting1(m_xBuilder->weld_image("imageVoting1"))
@@ -647,43 +669,37 @@ AdditionsItem::AdditionsItem(weld::Widget* pParent, AdditionsDialog* pParentDial
sExtensionName = additionInfo.sName;
}
m_xLinkButtonName->set_label(sExtensionName);
m_xLabelName->set_label(sExtensionName);
double aExtensionRating = additionInfo.sRating.toDouble();
switch (int(aExtensionRating))
{
case 5:
m_xImageVoting5->show();
m_xImageVoting5->set_from_icon_name("cmd/sc_stars-full.png");
[[fallthrough]];
case 4:
m_xImageVoting4->show();
m_xImageVoting4->set_from_icon_name("cmd/sc_stars-full.png");
[[fallthrough]];
case 3:
m_xImageVoting3->show();
m_xImageVoting3->set_from_icon_name("cmd/sc_stars-full.png");
[[fallthrough]];
case 2:
m_xImageVoting2->show();
m_xImageVoting2->set_from_icon_name("cmd/sc_stars-full.png");
[[fallthrough]];
case 1:
m_xImageVoting1->show();
break;
case 0:
m_xLabelNoVoting->show();
m_xImageVoting1->set_from_icon_name("cmd/sc_stars-full.png");
break;
}
m_xLinkButtonName->set_uri(additionInfo.sExtensionURL);
m_xLinkButtonWebsite->set_uri(additionInfo.sExtensionURL);
m_xLabelDescription->set_label(additionInfo.sIntroduction);
if (!additionInfo.sAuthorName.equalsIgnoreAsciiCase("null"))
m_xLabelAuthor->set_label(additionInfo.sAuthorName);
m_xButtonInstall->set_label(CuiResId(RID_SVXSTR_ADDITIONS_INSTALLBUTTON));
OUString sLicenseString = CuiResId(RID_SVXSTR_ADDITIONS_LICENCE) + additionInfo.sLicense;
m_xLabelLicense->set_label(sLicenseString);
OUString sVersionString
= CuiResId(RID_SVXSTR_ADDITIONS_REQUIREDVERSION) + additionInfo.sCompatibleVersion;
m_xLabelVersion->set_label(sVersionString);
m_xLabelLicense->set_label(additionInfo.sLicense);
m_xLabelVersion->set_label(">=" + additionInfo.sCompatibleVersion);
m_xLinkButtonComments->set_label(additionInfo.sCommentNumber);
m_xLinkButtonComments->set_uri(additionInfo.sCommentURL);
m_xLabelDownloadNumber->set_label(additionInfo.sDownloadNumber);
diff --git a/cui/source/inc/AdditionsDialog.hxx b/cui/source/inc/AdditionsDialog.hxx
index 9596ed1..9b7ced9 100644
--- a/cui/source/inc/AdditionsDialog.hxx
+++ b/cui/source/inc/AdditionsDialog.hxx
@@ -124,7 +124,8 @@ public:
std::unique_ptr<weld::Widget> m_xContainer;
std::unique_ptr<weld::Image> m_xImageScreenshot;
std::unique_ptr<weld::Button> m_xButtonInstall;
std::unique_ptr<weld::LinkButton> m_xLinkButtonName;
std::unique_ptr<weld::LinkButton> m_xLinkButtonWebsite;
std::unique_ptr<weld::Label> m_xLabelName;
std::unique_ptr<weld::Label> m_xLabelAuthor;
std::unique_ptr<weld::Label> m_xLabelDesc;
std::unique_ptr<weld::Label> m_xLabelDescription;
diff --git a/cui/uiconfig/ui/additionsdialog.ui b/cui/uiconfig/ui/additionsdialog.ui
index 5074104..d9a4a46 100644
--- a/cui/uiconfig/ui/additionsdialog.ui
+++ b/cui/uiconfig/ui/additionsdialog.ui
@@ -1,12 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- Generated with glade 3.36.0 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
<object class="GtkImage" id="imageGear">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">cmd/sc_menubar.png</property>
</object>
<object class="GtkMenu" id="additionsmenu">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -90,6 +85,11 @@
</object>
</child>
</object>
<object class="GtkImage" id="imageGear">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">cmd/sc_menubar.png</property>
</object>
<object class="GtkDialog" id="AdditionsDialog">
<property name="width_request">550</property>
<property name="height_request">600</property>
@@ -100,9 +100,6 @@
<property name="default_width">300</property>
<property name="default_height">400</property>
<property name="type_hint">dialog</property>
<child>
<placeholder/>
</child>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
@@ -111,8 +108,7 @@
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="layout_style">start</property>
<property name="layout_style">end</property>
<child>
<object class="GtkBox">
<property name="width_request">200</property>
@@ -163,8 +159,8 @@
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
@@ -243,11 +239,15 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
@@ -263,7 +263,7 @@
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">0</property>
</packing>
</child>
</object>
@@ -271,5 +271,8 @@
<action-widgets>
<action-widget response="-7">buttonClose</action-widget>
</action-widgets>
<child type="titlebar">
<placeholder/>
</child>
</object>
</interface>
diff --git a/cui/uiconfig/ui/additionsfragment.ui b/cui/uiconfig/ui/additionsfragment.ui
index b0a5d48..6282c2b 100644
--- a/cui/uiconfig/ui/additionsfragment.ui
+++ b/cui/uiconfig/ui/additionsfragment.ui
@@ -1,18 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- Generated with glade 3.38.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid" id="additionsEntry">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="row_spacing">24</property>
<property name="column_spacing">12</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="border-width">6</property>
<property name="row-spacing">24</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkButton" id="buttonShowMore">
<property name="label" translatable="yes" context="additionsDialog|buttonShowMore">Show More Extensions</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child internal-child="accessible">
<object class="AtkObject" id="buttonShowMore-atkobject">
<property name="AtkObject::accessible-name" translatable="yes" context="additionsDialog|buttonShowMore">ButtonShowMore</property>
@@ -21,43 +24,183 @@
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
<property name="width">2</property>
</packing>
</child>
<child>
<!-- n-columns=3 n-rows=8 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">3</property>
<property name="column_spacing">12</property>
<property name="column_homogeneous">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="hexpand">True</property>
<property name="column-spacing">12</property>
<child>
<object class="GtkLinkButton" id="linkButtonName">
<object class="GtkLabel" id="labelDescription">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="margin-bottom">3</property>
<property name="label">description</property>
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="width-chars">40</property>
<property name="max-width-chars">40</property>
<property name="xalign">0</property>
<accessibility>
<relation type="label-for" target="imageScreenshot"/>
</accessibility>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="votingLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="additionsEntry|votingLabel">Voting:</property>
<property name="xalign">0</property>
<accessibility>
<relation type="label-for" target="imageVoting1"/>
<relation type="label-for" target="imageVoting2"/>
<relation type="label-for" target="imageVoting3"/>
<relation type="label-for" target="imageVoting4"/>
<relation type="label-for" target="imageVoting5"/>
</accessibility>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelLicense">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="additionsEntry|labelLicense">License:</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="GtkLabel" id="labelVersion">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="additionsEntry|labelVersion">Required version:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelComments">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="additionsEntry|labelComments">Comments:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelComments1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="additionsEntry|labelComments">Downloads:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">6</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelDownloadNumber">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label">label</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">6</property>
</packing>
</child>
<child>
<object class="GtkLinkButton" id="linkButtonComments">
<property name="label">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="halign">start</property>
<property name="relief">none</property>
<property name="xalign">0</property>
<property name="uri">http://glade.gnome.org</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="left-attach">2</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="lbVersionText">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label">label</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">4</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="lbLicenseText">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label">label</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<child>
<object class="GtkImage" id="imageVoting1">
<property name="can_focus">False</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="icon_name">cmd/sc_starshapes.png</property>
<property name="valign">center</property>
<property name="icon-name">cmd/sc_stars-empty.png</property>
<accessibility>
<relation type="labelled-by" target="votingLabel"/>
</accessibility>
@@ -70,9 +213,11 @@
</child>
<child>
<object class="GtkImage" id="imageVoting2">
<property name="can_focus">False</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="icon_name">cmd/sc_starshapes.png</property>
<property name="valign">center</property>
<property name="icon-name">cmd/sc_stars-empty.png</property>
<accessibility>
<relation type="labelled-by" target="votingLabel"/>
</accessibility>
@@ -84,10 +229,12 @@
</packing>
</child>
<child>
<object class="GtkImage" id="imageVoting4">
<property name="can_focus">False</property>
<object class="GtkImage" id="imageVoting3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="icon_name">cmd/sc_starshapes.png</property>
<property name="valign">center</property>
<property name="icon-name">cmd/sc_stars-empty.png</property>
<accessibility>
<relation type="labelled-by" target="votingLabel"/>
</accessibility>
@@ -99,10 +246,12 @@
</packing>
</child>
<child>
<object class="GtkImage" id="imageVoting3">
<property name="can_focus">False</property>
<object class="GtkImage" id="imageVoting4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="icon_name">cmd/sc_starshapes.png</property>
<property name="valign">center</property>
<property name="icon-name">cmd/sc_stars-empty.png</property>
<accessibility>
<relation type="labelled-by" target="votingLabel"/>
</accessibility>
@@ -115,9 +264,11 @@
</child>
<child>
<object class="GtkImage" id="imageVoting5">
<property name="can_focus">False</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="icon_name">cmd/sc_starshapes.png</property>
<property name="valign">center</property>
<property name="icon-name">cmd/sc_stars-empty.png</property>
<accessibility>
<relation type="labelled-by" target="votingLabel"/>
</accessibility>
@@ -128,116 +279,50 @@
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="votingLabel">
<property name="can_focus">False</property>
<property name="label" translatable="yes" context="additionsEntry|votingLabel">Vote</property>
<accessibility>
<relation type="label-for" target="imageVoting1"/>
<relation type="label-for" target="imageVoting2"/>
<relation type="label-for" target="imageVoting4"/>
<relation type="label-for" target="imageVoting3"/>
<relation type="label-for" target="imageVoting5"/>
</accessibility>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="left-attach">2</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="imageScreenshot">
<property name="width-request">180</property>
<property name="height-request">120</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can-focus">False</property>
<property name="halign">center</property>
<property name="hexpand">True</property>
<accessibility>
<relation type="labelled-by" target="labelDescription"/>
</accessibility>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelDescription">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">start</property>
<property name="label">description</property>
<property name="wrap">True</property>
<property name="wrap_mode">word-char</property>
<property name="width_chars">1</property>
<property name="max_width_chars">50</property>
<accessibility>
<relation type="label-for" target="imageScreenshot"/>
</accessibility>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="xalign">0</property>
<accessibility>
<relation type="labelled-by" target="labelDescription"/>
</accessibility>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelLicense">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label">label </property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelVersion">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label">label </property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buttonInstall">
<property name="label" translatable="yes" context="additionsEntry|buttonInstall">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="valign">end</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
<property name="width">2</property>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
<property name="height">6</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="spacing">3</property>
<property name="can-focus">False</property>
<property name="margin-top">6</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkLabel" id="labelComments1">
<object class="GtkButton" id="buttonInstall">
<property name="label" translatable="yes" context="additionsEntry|buttonInstall">Install</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes" context="additionsEntry|labelComments">Downloads:</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="valign">end</property>
</object>
<packing>
<property name="expand">False</property>
@@ -246,47 +331,11 @@
</packing>
</child>
<child>
<object class="GtkLabel" id="labelDownloadNumber">
<object class="GtkLinkButton" id="btnWebsite">
<property name="label" translatable="yes" context="additionsEntry|buttonWebsite">Website</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label">label</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">1</property>
<property name="top_attach">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="labelComments">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes" context="additionsEntry|labelComments">Comments:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLinkButton" id="linkButtonComments">
<property name="label">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="relief">none</property>
<property name="uri">http://glade.gnome.org</property>
</object>
@@ -298,14 +347,39 @@
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="left-attach">1</property>
<property name="top-attach">7</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="lbName">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">6</property>
<property name="label">Name</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
<property name="width">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
<property name="width">2</property>
</packing>
</child>
</object>
diff --git a/icon-themes/breeze/links.txt b/icon-themes/breeze/links.txt
index da53963..956cb86 100644
--- a/icon-themes/breeze/links.txt
+++ b/icon-themes/breeze/links.txt
@@ -2891,3 +2891,6 @@ cmd/sc_librelogo-translate.png cmd/sc_editglossary.png
cmd/32/openxmlfiltersettings.png cmd/32/managexmlsource.png
cmd/lc_openxmlfiltersettings.png cmd/lc_managexmlsource.png
cmd/sc_openxmlfiltersettings.png cmd/sc_managexmlsource.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/breeze_dark/links.txt b/icon-themes/breeze_dark/links.txt
index da53963..956cb86 100644
--- a/icon-themes/breeze_dark/links.txt
+++ b/icon-themes/breeze_dark/links.txt
@@ -2891,3 +2891,6 @@ cmd/sc_librelogo-translate.png cmd/sc_editglossary.png
cmd/32/openxmlfiltersettings.png cmd/32/managexmlsource.png
cmd/lc_openxmlfiltersettings.png cmd/lc_managexmlsource.png
cmd/sc_openxmlfiltersettings.png cmd/sc_managexmlsource.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/colibre/links.txt b/icon-themes/colibre/links.txt
index ddfd302..c794046 100644
--- a/icon-themes/colibre/links.txt
+++ b/icon-themes/colibre/links.txt
@@ -2739,3 +2739,6 @@ cmd/sc_librelogo-goforward.png cmd/sc_arrowshapes.up-arrow.png
cmd/sc_librelogo-run.png cmd/sc_runbasic.png
cmd/sc_librelogo-stop.png cmd/sc_basicstop.png
cmd/sc_librelogo-translate.png cmd/sc_editglossary.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/elementary/links.txt b/icon-themes/elementary/links.txt
index cbf9285..2d719c4 100644
--- a/icon-themes/elementary/links.txt
+++ b/icon-themes/elementary/links.txt
@@ -2718,3 +2718,6 @@ cmd/sc_renametable.png cmd/sc_name.png
cmd/32/textattributes.png cmd/32/fontdialog.png
cmd/lc_textattributes.png cmd/lc_fontdialog.png
cmd/sc_textattributes.png cmd/sc_fontdialog.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/karasa_jaga/links.txt b/icon-themes/karasa_jaga/links.txt
index fd42bb9..5087473 100644
--- a/icon-themes/karasa_jaga/links.txt
+++ b/icon-themes/karasa_jaga/links.txt
@@ -2072,3 +2072,5 @@ vcl/res/radio5.png vcl/res/radio3.png
vcl/source/src/msgbox.png vcl/res/msgbox.png
xmlsecurity/res/notcertificate_16.png svx/res/notcertificate_16.png
xmlsecurity/res/signet_11x16.png svx/res/signet_11x16.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/sifr/links.txt b/icon-themes/sifr/links.txt
index 1c706c9..72c775d 100644
--- a/icon-themes/sifr/links.txt
+++ b/icon-themes/sifr/links.txt
@@ -2716,3 +2716,6 @@ cmd/sc_librelogo-home.png cmd/sc_firstpage.png
cmd/sc_librelogo-run.png cmd/sc_mediaplay.png
cmd/sc_librelogo-stop.png cmd/sc_basicstop.png
cmd/sc_librelogo-translate.png cmd/sc_editglossary.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/sifr_dark/links.txt b/icon-themes/sifr_dark/links.txt
index 1c706c9..72c775d 100644
--- a/icon-themes/sifr_dark/links.txt
+++ b/icon-themes/sifr_dark/links.txt
@@ -2716,3 +2716,6 @@ cmd/sc_librelogo-home.png cmd/sc_firstpage.png
cmd/sc_librelogo-run.png cmd/sc_mediaplay.png
cmd/sc_librelogo-stop.png cmd/sc_basicstop.png
cmd/sc_librelogo-translate.png cmd/sc_editglossary.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file
diff --git a/icon-themes/sukapura/links.txt b/icon-themes/sukapura/links.txt
index c525d36..9129950 100644
--- a/icon-themes/sukapura/links.txt
+++ b/icon-themes/sukapura/links.txt
@@ -2720,3 +2720,6 @@ cmd/lc_librelogo-translate.png cmd/lc_editglossary.png
cmd/sc_librelogo-run.png cmd/sc_runbasic.png
cmd/sc_librelogo-stop.png cmd/sc_basicstop.png
cmd/sc_librelogo-translate.png cmd/sc_editglossary.png
cmd/sc_stars-full.png sc/res/icon-set-stars-full.png
cmd/sc_stars-empty.png sc/res/icon-set-stars-empty.png
\ No newline at end of file