weld ThemePanel
Change-Id: I5eca63762e5e243ae791e15655fac60cc9437aa5
Reviewed-on: https://gerrit.libreoffice.org/85591
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/solenv/sanitizers/ui/modules/swriter.suppr b/solenv/sanitizers/ui/modules/swriter.suppr
index c02c0c7..9fad88b 100644
--- a/solenv/sanitizers/ui/modules/swriter.suppr
+++ b/solenv/sanitizers/ui/modules/swriter.suppr
@@ -207,9 +207,6 @@ sw/uiconfig/swriter/ui/selectaddressdialog.ui://GtkLabel[@id='connecting'] orpha
sw/uiconfig/swriter/ui/selecttabledialog.ui://GtkLabel[@id='select'] orphan-label
sw/uiconfig/swriter/ui/sidebarwrap.ui://GtkLabel[@id='label1'] orphan-label
sw/uiconfig/swriter/ui/sidebarwrap.ui://GtkLabel[@id='customlabel'] orphan-label
sw/uiconfig/swriter/ui/sidebartheme.ui://GtkLabel[@id='label1'] orphan-label
sw/uiconfig/swriter/ui/sidebartheme.ui://GtkTreeView[@id='listbox_fonts'] no-labelled-by
sw/uiconfig/swriter/ui/sidebartheme.ui://GtkLabel[@id='label2'] orphan-label
sw/uiconfig/swriter/ui/spellmenu.ui://GtkMenuItem[@id='spelldialog'] button-no-label
sw/uiconfig/swriter/ui/spellmenu.ui://GtkMenuItem[@id='correctdialog'] button-no-label
sw/uiconfig/swriter/ui/statisticsinfopage.ui://GtkLabel[@id='nopages'] orphan-label
diff --git a/sw/source/uibase/sidebar/ThemePanel.cxx b/sw/source/uibase/sidebar/ThemePanel.cxx
index 4998638..d2f6e64 100644
--- a/sw/source/uibase/sidebar/ThemePanel.cxx
+++ b/sw/source/uibase/sidebar/ThemePanel.cxx
@@ -426,25 +426,24 @@ VclPtr<vcl::Window> ThemePanel::Create (vcl::Window* pParent,
ThemePanel::ThemePanel(vcl::Window* pParent,
const css::uno::Reference<css::frame::XFrame>& rxFrame)
: PanelLayout(pParent, "ThemePanel", "modules/swriter/ui/sidebartheme.ui", rxFrame)
: PanelLayout(pParent, "ThemePanel", "modules/swriter/ui/sidebartheme.ui", rxFrame, true)
, mxListBoxFonts(m_xBuilder->weld_tree_view("listbox_fonts"))
, mxValueSetColors(new SvtValueSet(nullptr))
, mxValueSetColorsWin(new weld::CustomWeld(*m_xBuilder, "valueset_colors", *mxValueSetColors))
, mxApplyButton(m_xBuilder->weld_button("apply"))
, maColorSets()
{
get(mpListBoxFonts, "listbox_fonts");
get(mpValueSetColors, "valueset_colors");
get(mpApplyButton, "apply");
mxValueSetColors->SetColCount(2);
mxValueSetColors->SetLineCount(3);
mpValueSetColors->SetColCount(2);
mpValueSetColors->SetLineCount(4);
mpApplyButton->SetClickHdl(LINK(this, ThemePanel, ClickHdl));
mpListBoxFonts->SetDoubleClickHdl(LINK(this, ThemePanel, DoubleClickHdl));
mpValueSetColors->SetDoubleClickHdl(LINK(this, ThemePanel, DoubleClickValueSetHdl));
mxApplyButton->connect_clicked(LINK(this, ThemePanel, ClickHdl));
mxListBoxFonts->connect_row_activated(LINK(this, ThemePanel, DoubleClickHdl));
mxValueSetColors->SetDoubleClickHdl(LINK(this, ThemePanel, DoubleClickValueSetHdl));
std::vector<FontSet> aFontSets = initFontSets();
for (const FontSet & rFontSet : aFontSets)
{
mpListBoxFonts->InsertEntry(rFontSet.maName);
}
mxListBoxFonts->append_text(rFontSet.maName);
mxListBoxFonts->set_size_request(-1, mxListBoxFonts->get_height_rows(aFontSets.size()));
maColorSets.init();
@@ -455,8 +454,12 @@ ThemePanel::ThemePanel(vcl::Window* pParent,
const OUString& aName = rColorSet.getName();
BitmapEx aPreview = GenerateColorPreview(rColorSet);
mpValueSetColors->InsertItem(i, Image(aPreview), aName);
sal_uInt16 nId = i + 1;
mxValueSetColors->InsertItem(nId, Image(aPreview), aName);
}
mxValueSetColors->SetOptimalSize();
}
ThemePanel::~ThemePanel()
@@ -466,33 +469,39 @@ ThemePanel::~ThemePanel()
void ThemePanel::dispose()
{
mpListBoxFonts.clear();
mpValueSetColors.clear();
mpApplyButton.clear();
mxListBoxFonts.reset();
mxValueSetColorsWin.reset();
mxValueSetColors.reset();
mxApplyButton.reset();
PanelLayout::dispose();
}
IMPL_LINK_NOARG(ThemePanel, ClickHdl, Button*, void)
IMPL_LINK_NOARG(ThemePanel, ClickHdl, weld::Button&, void)
{
DoubleClickHdl();
}
IMPL_LINK_NOARG(ThemePanel, DoubleClickValueSetHdl, ValueSet*, void)
IMPL_LINK_NOARG(ThemePanel, DoubleClickValueSetHdl, SvtValueSet*, void)
{
DoubleClickHdl();
}
IMPL_LINK_NOARG(ThemePanel, DoubleClickHdl, ListBox&, void)
IMPL_LINK_NOARG(ThemePanel, DoubleClickHdl, weld::TreeView&, bool)
{
DoubleClickHdl();
return true;
}
void ThemePanel::DoubleClickHdl()
{
SwDocShell* pDocSh = static_cast<SwDocShell*>(SfxObjectShell::Current());
if (pDocSh)
{
OUString sEntryFonts = mpListBoxFonts->GetSelectedEntry();
sal_uInt32 nItemId = mpValueSetColors->GetSelectedItemId();
OUString sEntryColors = maColorSets.getColorSet(nItemId).getName();
OUString sEntryFonts = mxListBoxFonts->get_selected_text();
sal_uInt32 nItemId = mxValueSetColors->GetSelectedItemId();
sal_uInt32 nIndex = nItemId - 1;
OUString sEntryColors = maColorSets.getColorSet(nIndex).getName();
StyleSet aStyleSet = setupThemes();
diff --git a/sw/source/uibase/sidebar/ThemePanel.hxx b/sw/source/uibase/sidebar/ThemePanel.hxx
index 898caae..1eafe68 100644
--- a/sw/source/uibase/sidebar/ThemePanel.hxx
+++ b/sw/source/uibase/sidebar/ThemePanel.hxx
@@ -12,16 +12,9 @@
#define INCLUDED_SW_SOURCE_UIBASE_SIDEBAR_THEMEPANEL_HXX
#include <com/sun/star/frame/XFrame.hpp>
#include <svx/sidebar/PanelLayout.hxx>
#include <sfx2/sidebar/ControllerItem.hxx>
#include <vcl/button.hxx>
#include <vcl/lstbox.hxx>
#include <svtools/valueset.hxx>
#include <svx/ColorSets.hxx>
namespace sw { namespace sidebar {
@@ -45,15 +38,16 @@ private:
virtual void dispose() override;
VclPtr<ListBox> mpListBoxFonts;
VclPtr<ValueSet> mpValueSetColors;
VclPtr<PushButton> mpApplyButton;
std::unique_ptr<weld::TreeView> mxListBoxFonts;
std::unique_ptr<SvtValueSet> mxValueSetColors;
std::unique_ptr<weld::CustomWeld> mxValueSetColorsWin;
std::unique_ptr<weld::Button> mxApplyButton;
svx::ColorSets maColorSets;
DECL_LINK(ClickHdl, Button*, void);
DECL_LINK(DoubleClickHdl, ListBox&, void);
DECL_LINK(DoubleClickValueSetHdl, ValueSet*, void);
DECL_LINK(ClickHdl, weld::Button&, void);
DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
DECL_LINK(DoubleClickValueSetHdl, SvtValueSet*, void);
void DoubleClickHdl();
};
diff --git a/sw/uiconfig/swriter/ui/sidebartheme.ui b/sw/uiconfig/swriter/ui/sidebartheme.ui
index b93c650..f4734aa 100644
--- a/sw/uiconfig/swriter/ui/sidebartheme.ui
+++ b/sw/uiconfig/swriter/ui/sidebartheme.ui
@@ -1,9 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="sw">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkTreeStore" id="liststore1">
<columns>
<!-- column-name text -->
<column type="gchararray"/>
<!-- column-name id -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkGrid" id="ThemePanel">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -13,18 +19,24 @@
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="sidebartheme|label1">Fonts</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">listbox_fonts</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -32,13 +44,37 @@
</packing>
</child>
<child>
<object class="GtkTreeView" id="listbox_fonts">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="show_expanders">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection1"/>
<property name="vexpand">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="listbox_fonts">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="model">liststore1</property>
<property name="headers_visible">False</property>
<property name="headers_clickable">False</property>
<property name="search_column">0</property>
<property name="show_expanders">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
@@ -50,8 +86,10 @@
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="sidebartheme|label2">Colors</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">valueset_colors</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -72,9 +110,29 @@
</packing>
</child>
<child>
<object class="svtlo-ValueSet" id="valueset_colors">
<object class="GtkScrolledWindow" id="valuesetwin">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkDrawingArea" id="valueset_colors">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>