cui/source/dialogs/cuigaldlg.cxx | 65 ++++++++-------------------- cui/source/inc/cuigaldlg.hxx | 22 +++------ cui/uiconfig/ui/gallerygeneralpage.ui | 37 ++-------------- include/vcl/weld.hxx | 7 +++ vcl/source/app/salvtables.cxx | 25 +++++++++++ vcl/unx/gtk3/gtk3gtkinst.cxx | 77 +++++++++++++++++++++++----------- 6 files changed, 119 insertions(+), 114 deletions(-)
New commits: commit af60b15af12bbb0cda2b48b99fde632f1532e1aa Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Sep 18 17:13:33 2018 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Sep 19 22:00:27 2018 +0200 weld TPGalleryThemeGeneral Change-Id: Id5ec1b1282c039f30c40fc781be0f6d72a8bfb47 Reviewed-on: https://gerrit.libreoffice.org/60718 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/cui/source/dialogs/cuigaldlg.cxx b/cui/source/dialogs/cuigaldlg.cxx index 18e39c8ae267..a04340bbc80e 100644 --- a/cui/source/dialogs/cuigaldlg.cxx +++ b/cui/source/dialogs/cuigaldlg.cxx @@ -574,7 +574,6 @@ GalleryThemeProperties::GalleryThemeProperties(vcl::Window* pParent, SetText( aText ); } - void GalleryThemeProperties::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) { if (nId == m_nGeneralPageId) @@ -583,39 +582,18 @@ void GalleryThemeProperties::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) static_cast<TPGalleryThemeProperties&>( rPage ).SetXChgData( pData ); } - -TPGalleryThemeGeneral::TPGalleryThemeGeneral(vcl::Window* pParent, const SfxItemSet& rSet) - : SfxTabPage(pParent, "GalleryGeneralPage", - "cui/ui/gallerygeneralpage.ui", &rSet) +TPGalleryThemeGeneral::TPGalleryThemeGeneral(TabPageParent pParent, const SfxItemSet& rSet) + : SfxTabPage(pParent, "cui/ui/gallerygeneralpage.ui", "GalleryGeneralPage", &rSet) , pData(nullptr) + , m_xFiMSImage(m_xBuilder->weld_image("image")) + , m_xEdtMSName(m_xBuilder->weld_entry("name")) + , m_xFtMSShowType(m_xBuilder->weld_label("type")) + , m_xFtMSShowPath(m_xBuilder->weld_label("location")) + , m_xFtMSShowContent(m_xBuilder->weld_label("contents")) + , m_xFtMSShowChangeDate(m_xBuilder->weld_label("modified")) { - get(m_pFiMSImage, "image"); - get(m_pEdtMSName, "name"); - get(m_pFtMSShowType, "type"); - get(m_pFtMSShowPath, "location"); - get(m_pFtMSShowContent, "contents"); - get(m_pFtMSShowChangeDate, "modified"); -} - - -TPGalleryThemeGeneral::~TPGalleryThemeGeneral() -{ - disposeOnce(); -} - - -void TPGalleryThemeGeneral::dispose() -{ - m_pFiMSImage.clear(); - m_pEdtMSName.clear(); - m_pFtMSShowType.clear(); - m_pFtMSShowPath.clear(); - m_pFtMSShowContent.clear(); - m_pFtMSShowChangeDate.clear(); - SfxTabPage::dispose(); } - void TPGalleryThemeGeneral::SetXChgData( ExchangeData* _pData ) { pData = _pData; @@ -627,19 +605,15 @@ void TPGalleryThemeGeneral::SetXChgData( ExchangeData* _pData ) OUString aType( SvxResId( RID_SVXSTR_GALLERYPROPS_GALTHEME ) ); bool bReadOnly = pThm->IsReadOnly(); - m_pEdtMSName->SetText( pThm->GetName() ); - m_pEdtMSName->SetReadOnly( bReadOnly ); - - if( bReadOnly ) - m_pEdtMSName->Disable(); - else - m_pEdtMSName->Enable(); + m_xEdtMSName->set_text(pThm->GetName()); + m_xEdtMSName->set_editable(!bReadOnly); + m_xEdtMSName->set_sensitive(!bReadOnly); if( pThm->IsReadOnly() ) aType += CuiResId( RID_SVXSTR_GALLERY_READONLY ); - m_pFtMSShowType->SetText( aType ); - m_pFtMSShowPath->SetText( pThm->GetSdgURL().GetMainURL( INetURLObject::DecodeMechanism::Unambiguous ) ); + m_xFtMSShowType->set_label(aType); + m_xFtMSShowPath->set_label(pThm->GetSdgURL().GetMainURL(INetURLObject::DecodeMechanism::Unambiguous)); // singular or plural? if ( 1 == pThm->GetObjectCount() ) @@ -649,7 +623,7 @@ void TPGalleryThemeGeneral::SetXChgData( ExchangeData* _pData ) aOutStr += " " + aObjStr; - m_pFtMSShowContent->SetText( aOutStr ); + m_xFtMSShowContent->set_label(aOutStr); // get locale wrapper (singleton) const SvtSysLocale aSysLocale; @@ -657,7 +631,7 @@ void TPGalleryThemeGeneral::SetXChgData( ExchangeData* _pData ) // ChangeDate/Time aAccess = aLocaleData.getDate( pData->aThemeChangeDate ) + ", " + aLocaleData.getTime( pData->aThemeChangeTime ); - m_pFtMSShowChangeDate->SetText( aAccess ); + m_xFtMSShowChangeDate->set_label(aAccess); // set image OUString sId; @@ -669,21 +643,20 @@ void TPGalleryThemeGeneral::SetXChgData( ExchangeData* _pData ) else sId = RID_SVXBMP_THEME_NORMAL_BIG; - m_pFiMSImage->SetImage(Image(BitmapEx(sId))); + m_xFiMSImage->set_from_icon_name(sId); } bool TPGalleryThemeGeneral::FillItemSet( SfxItemSet* /*rSet*/ ) { - pData->aEditedTitle = m_pEdtMSName->GetText(); + pData->aEditedTitle = m_xEdtMSName->get_text(); return true; } -VclPtr<SfxTabPage> TPGalleryThemeGeneral::Create( TabPageParent pParent, const SfxItemSet* rSet ) +VclPtr<SfxTabPage> TPGalleryThemeGeneral::Create(TabPageParent pParent, const SfxItemSet* rSet) { - return VclPtr<TPGalleryThemeGeneral>::Create( pParent.pParent, *rSet ); + return VclPtr<TPGalleryThemeGeneral>::Create(pParent, *rSet); } - TPGalleryThemeProperties::TPGalleryThemeProperties( vcl::Window* pWindow, const SfxItemSet& rSet ) : SfxTabPage(pWindow, "GalleryFilesPage", "cui/ui/galleryfilespage.ui", &rSet) , pData(nullptr) diff --git a/cui/source/inc/cuigaldlg.hxx b/cui/source/inc/cuigaldlg.hxx index 4487a9bd23c7..fd36e8b314a3 100644 --- a/cui/source/inc/cuigaldlg.hxx +++ b/cui/source/inc/cuigaldlg.hxx @@ -206,27 +206,21 @@ public: class TPGalleryThemeGeneral : public SfxTabPage { private: - - VclPtr<FixedImage> m_pFiMSImage; - VclPtr<Edit> m_pEdtMSName; - VclPtr<FixedText> m_pFtMSShowType; - VclPtr<FixedText> m_pFtMSShowPath; - VclPtr<FixedText> m_pFtMSShowContent; - VclPtr<FixedText> m_pFtMSShowChangeDate; ExchangeData* pData; + std::unique_ptr<weld::Image> m_xFiMSImage; + std::unique_ptr<weld::Entry> m_xEdtMSName; + std::unique_ptr<weld::Label> m_xFtMSShowType; + std::unique_ptr<weld::Label> m_xFtMSShowPath; + std::unique_ptr<weld::Label> m_xFtMSShowContent; + std::unique_ptr<weld::Label> m_xFtMSShowChangeDate; + virtual void Reset( const SfxItemSet* ) override {} virtual bool FillItemSet( SfxItemSet* rSet ) override; - public: - - TPGalleryThemeGeneral( vcl::Window* pParent, const SfxItemSet& rSet ); - virtual ~TPGalleryThemeGeneral() override; - virtual void dispose() override; - + TPGalleryThemeGeneral(TabPageParent pParent, const SfxItemSet& rSet); void SetXChgData( ExchangeData* pData ); - static VclPtr<SfxTabPage> Create( TabPageParent pParent, const SfxItemSet* rSet ); }; diff --git a/cui/uiconfig/ui/gallerygeneralpage.ui b/cui/uiconfig/ui/gallerygeneralpage.ui index e8ba15e3b625..6749c4d3fd8c 100644 --- a/cui/uiconfig/ui/gallerygeneralpage.ui +++ b/cui/uiconfig/ui/gallerygeneralpage.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.16.1 --> +<!-- Generated with glade 3.22.1 --> <interface domain="cui"> <requires lib="gtk+" version="3.18"/> <object class="GtkGrid" id="GalleryGeneralPage"> @@ -18,14 +18,12 @@ <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="gallerygeneralpage|label1">Modified:</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -37,16 +35,12 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -59,14 +53,12 @@ <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="gallerygeneralpage|label2">Type:</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -78,36 +70,30 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="gallerygeneralpage|label3">Location:</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="gallerygeneralpage|label4">Contents:</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -119,8 +105,6 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -132,16 +116,12 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">2</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -166,8 +146,6 @@ <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -175,6 +153,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> + <property name="activates_default">True</property> <accessibility> <relation type="labelled-by" target="image"/> </accessibility> @@ -182,16 +161,12 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 1857033f5929..35a9658325e9 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -593,6 +593,12 @@ public: static unsigned int Power10(unsigned int n); }; +class VCL_DLLPUBLIC Image : virtual public Widget +{ +public: + virtual void set_from_icon_name(const OUString& rIconName) = 0; +}; + // an entry + treeview pair, where the entry autocompletes from the // treeview list, and selecting something in the list sets the // entry to that text, i.e. a visually exploded ComboBox @@ -1078,6 +1084,7 @@ public: virtual std::unique_ptr<ProgressBar> weld_progress_bar(const OString& id, bool bTakeOwnership = false) = 0; + virtual std::unique_ptr<Image> weld_image(const OString& id, bool bTakeOwnership = false) = 0; virtual std::unique_ptr<DrawingArea> weld_drawing_area(const OString& id, const a11yref& rA11yImpl = nullptr, FactoryFunction pUITestFactoryFunction = nullptr, void* pUserData = nullptr, diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index cbaf74bb807c..85d6740790d2 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -37,6 +37,7 @@ #include <vcl/combobox.hxx> #include <vcl/lstbox.hxx> #include <vcl/dialog.hxx> +#include <vcl/fixed.hxx> #include <vcl/layout.hxx> #include <vcl/menubtn.hxx> #include <vcl/prgsbar.hxx> @@ -1393,6 +1394,24 @@ public: } }; +class SalInstanceImage : public SalInstanceWidget, public virtual weld::Image +{ +private: + VclPtr<FixedImage> m_xImage; + +public: + SalInstanceImage(FixedImage* pImage, bool bTakeOwnership) + : SalInstanceWidget(pImage, bTakeOwnership) + , m_xImage(pImage) + { + } + + virtual void set_from_icon_name(const OUString& rIconName) override + { + m_xImage->SetImage(::Image(BitmapEx(rIconName))); + } +}; + class SalInstanceEntry : public SalInstanceWidget, public virtual weld::Entry { private: @@ -2628,6 +2647,12 @@ public: return pProgress ? o3tl::make_unique<SalInstanceProgressBar>(pProgress, bTakeOwnership) : nullptr; } + virtual std::unique_ptr<weld::Image> weld_image(const OString &id, bool bTakeOwnership) override + { + FixedImage* pImage = m_xBuilder->get<FixedImage>(id); + return pImage ? o3tl::make_unique<SalInstanceImage>(pImage, bTakeOwnership) : nullptr; + } + virtual std::unique_ptr<weld::Entry> weld_entry(const OString &id, bool bTakeOwnership) override { Edit* pEntry = m_xBuilder->get<Edit>(id); diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 4924abb21e58..4a564e894e37 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3306,6 +3306,51 @@ public: } }; +namespace +{ + GdkPixbuf* load_icon_by_name(const OUString& rIconName, const OUString& rIconTheme, const OUString& rUILang) + { + GdkPixbuf* pixbuf = nullptr; + auto xMemStm = ImageTree::get().getImageStream(rIconName, rIconTheme, rUILang); + if (xMemStm) + { + GdkPixbufLoader *pixbuf_loader = gdk_pixbuf_loader_new(); + gdk_pixbuf_loader_write(pixbuf_loader, static_cast<const guchar*>(xMemStm->GetData()), + xMemStm->Seek(STREAM_SEEK_TO_END), nullptr); + gdk_pixbuf_loader_close(pixbuf_loader, nullptr); + pixbuf = gdk_pixbuf_loader_get_pixbuf(pixbuf_loader); + if (pixbuf) + g_object_ref(pixbuf); + g_object_unref(pixbuf_loader); + } + return pixbuf; + } +} + +class GtkInstanceImage : public GtkInstanceWidget, public virtual weld::Image +{ +private: + GtkImage* m_pImage; + +public: + GtkInstanceImage(GtkImage* pImage, bool bTakeOwnership) + : GtkInstanceWidget(GTK_WIDGET(pImage), bTakeOwnership) + , m_pImage(pImage) + { + } + + virtual void set_from_icon_name(const OUString& rIconName) override + { + OUString sIconTheme = Application::GetSettings().GetStyleSettings().DetermineIconTheme(); + OUString sUILang = Application::GetSettings().GetUILanguageTag().getBcp47(); + GdkPixbuf* pixbuf = load_icon_by_name(rIconName, sIconTheme, sUILang); + if (!pixbuf) + return; + gtk_image_set_from_pixbuf(m_pImage, pixbuf); + g_object_unref(pixbuf); + } +}; + class GtkInstanceEntry : public GtkInstanceWidget, public virtual weld::Entry { private: @@ -3560,27 +3605,6 @@ namespace return found; } - GdkPixbuf* load_icon_by_name(const OUString& rIconName, const OUString& rIconTheme, const OUString& rUILang) - { - GdkPixbuf* pixbuf = nullptr; - auto xMemStm = ImageTree::get().getImageStream(rIconName, rIconTheme, rUILang); - if (xMemStm) - { - GdkPixbufLoader *pixbuf_loader = gdk_pixbuf_loader_new(); - gdk_pixbuf_loader_write(pixbuf_loader, static_cast<const guchar*>(xMemStm->GetData()), - xMemStm->Seek(STREAM_SEEK_TO_END), nullptr); - gdk_pixbuf_loader_close(pixbuf_loader, nullptr); - pixbuf = gdk_pixbuf_loader_get_pixbuf(pixbuf_loader); - if (pixbuf) - g_object_ref(pixbuf); - g_object_unref(pixbuf_loader); - } - return pixbuf; - } -} - -namespace -{ void insert_row(GtkListStore* pListStore, int pos, const OUString& rId, const OUString& rText, const OUString* pImage) { GtkTreeIter iter; @@ -5191,8 +5215,6 @@ private: GtkImage* pImage = GTK_IMAGE(pWidget); const gchar* icon_name; gtk_image_get_icon_name(pImage, &icon_name, nullptr); - GtkIconSize size; - g_object_get(pImage, "icon-size", &size, nullptr); if (icon_name) { OUString aIconName(icon_name, strlen(icon_name), RTL_TEXTENCODING_UTF8); @@ -5497,6 +5519,15 @@ public: return o3tl::make_unique<GtkInstanceProgressBar>(pProgressBar, bTakeOwnership); } + virtual std::unique_ptr<weld::Image> weld_image(const OString &id, bool bTakeOwnership) override + { + GtkImage* pImage = GTK_IMAGE(gtk_builder_get_object(m_pBuilder, id.getStr())); + if (!pImage) + return nullptr; + auto_add_parentless_widgets_to_container(GTK_WIDGET(pImage)); + return o3tl::make_unique<GtkInstanceImage>(pImage, bTakeOwnership); + } + virtual std::unique_ptr<weld::Entry> weld_entry(const OString &id, bool bTakeOwnership) override { GtkEntry* pEntry = GTK_ENTRY(gtk_builder_get_object(m_pBuilder, id.getStr())); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits