cui/inc/bitmaps.hlst            |    1 +
 cui/source/options/optgdlg.cxx  |   19 +++++++++++++++++++
 cui/source/options/optgdlg.hxx  |    2 ++
 cui/uiconfig/ui/optviewpage.ui  |   14 +++++++++++++-
 include/vcl/skia/SkiaHelper.hxx |    2 ++
 vcl/skia/SkiaHelper.cxx         |   12 ++++++++++++
 6 files changed, 49 insertions(+), 1 deletion(-)

New commits:
commit 4356790bdf493c68ab609468603ec57e98dd2dae
Author:     Heiko Tietze <tietze.he...@gmail.com>
AuthorDate: Fri May 12 11:34:02 2023 +0200
Commit:     Heiko Tietze <heiko.tie...@documentfoundation.org>
CommitDate: Mon May 15 08:45:11 2023 +0200

    Resolves tdf#155070 - Easy access to skia.log
    
    Change-Id: I2aac7a060bbb1d31510da67120728c8a24f0de88
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151699
    Tested-by: Jenkins
    Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org>

diff --git a/cui/inc/bitmaps.hlst b/cui/inc/bitmaps.hlst
index 5e10e014b446..db0a6ae98d11 100644
--- a/cui/inc/bitmaps.hlst
+++ b/cui/inc/bitmaps.hlst
@@ -71,6 +71,7 @@ inline constexpr OUStringLiteral RID_SVXBMP_LEGTYP3 = 
u"svx/res/legtyp3.png";
 
 inline constexpr OUStringLiteral RID_SVXBMP_COMPONENT = 
u"res/component_16.png";
 inline constexpr OUStringLiteral RID_SVXBMP_MACRO = u"svx/res/id018.png";
+inline constexpr OUStringLiteral RID_SVXBMP_COPY = u"cmd/sc_copy.png";
 
 inline constexpr OUStringLiteral RID_SVXBMP_STARS_FULL = 
u"cmd/sc_stars-full.png";
 
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index 04de401c4121..369e48ae265a 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -81,11 +81,15 @@
 #include <vcl/window.hxx>
 #include <vcl/IconThemeInfo.hxx>
 #include <vcl/skia/SkiaHelper.hxx>
+#include <bitmaps.hlst>
+
 #include "optgdlg.hxx"
 #include <svtools/apearcfg.hxx>
 #include <svtools/optionsdrawinglayer.hxx>
 #include <svtools/restartdialog.hxx>
 #include <svtools/imgdef.hxx>
+#include <com/sun/star/datatransfer/clipboard/SystemClipboard.hpp>
+#include <vcl/unohelp2.hxx>
 
 #if defined(_WIN32)
 #include <systools/win32/winstoreutil.hxx>
@@ -537,6 +541,7 @@ OfaViewTabPage::OfaViewTabPage(weld::Container* pPage, 
weld::DialogController* p
     , m_xForceSkiaRaster(m_xBuilder->weld_check_button("forceskiaraster"))
     , m_xSkiaStatusEnabled(m_xBuilder->weld_label("skiaenabled"))
     , m_xSkiaStatusDisabled(m_xBuilder->weld_label("skiadisabled"))
+    , m_xSkiaLog(m_xBuilder->weld_button("btnSkialog"))
     , m_xMouseMiddleLB(m_xBuilder->weld_combo_box("mousemiddle"))
     , m_xMoreIcons(m_xBuilder->weld_button("btnMoreIcons"))
     , m_xRunGPTests(m_xBuilder->weld_button("btn_rungptest"))
@@ -550,6 +555,7 @@ OfaViewTabPage::OfaViewTabPage(weld::Container* pPage, 
weld::DialogController* p
     m_xFontAntiAliasing->connect_toggled( LINK( this, OfaViewTabPage, 
OnAntialiasingToggled ) );
 
     m_xUseSkia->connect_toggled(LINK(this, OfaViewTabPage, OnUseSkiaToggled));
+    m_xSkiaLog->connect_clicked(LINK(this, OfaViewTabPage, OnCopySkiaLog));
 
     UpdateIconThemes();
 
@@ -611,12 +617,25 @@ IMPL_LINK_NOARG(OfaViewTabPage, OnUseSkiaToggled, 
weld::Toggleable&, void)
     UpdateSkiaStatus();
 }
 
+IMPL_LINK_NOARG(OfaViewTabPage, OnCopySkiaLog, weld::Button&, void)
+{
+#if HAVE_FEATURE_SKIA
+    css::uno::Reference<css::datatransfer::clipboard::XClipboard> xClipboard =
+        css::datatransfer::clipboard::SystemClipboard::create(
+            comphelper::getProcessComponentContext());
+    OUString sInfo = SkiaHelper::readLog();
+    vcl::unohelper::TextDataObject::CopyStringTo(sInfo, xClipboard);
+    m_xSkiaLog->set_from_icon_name(RID_SVXBMP_COPY);
+#endif
+}
+
 void OfaViewTabPage::HideSkiaWidgets()
 {
     m_xUseSkia->hide();
     m_xForceSkiaRaster->hide();
     m_xSkiaStatusEnabled->hide();
     m_xSkiaStatusDisabled->hide();
+    m_xSkiaLog->hide();
 }
 
 void OfaViewTabPage::UpdateSkiaStatus()
diff --git a/cui/source/options/optgdlg.hxx b/cui/source/options/optgdlg.hxx
index 9b22c0b9bb9d..c0d2439593ce 100644
--- a/cui/source/options/optgdlg.hxx
+++ b/cui/source/options/optgdlg.hxx
@@ -104,6 +104,7 @@ private:
 
     std::unique_ptr<weld::Label> m_xSkiaStatusEnabled;
     std::unique_ptr<weld::Label> m_xSkiaStatusDisabled;
+    std::unique_ptr<weld::Button> m_xSkiaLog;
 
     std::unique_ptr<weld::ComboBox> m_xMouseMiddleLB;
     std::unique_ptr<weld::Button> m_xMoreIcons;
@@ -113,6 +114,7 @@ private:
 
     DECL_LINK(OnAntialiasingToggled, weld::Toggleable&, void);
     DECL_LINK(OnUseSkiaToggled, weld::Toggleable&, void);
+    DECL_LINK(OnCopySkiaLog, weld::Button&, void);
     DECL_STATIC_LINK(OfaViewTabPage, OnMoreIconsClick, weld::Button&, void);
     DECL_LINK(OnRunGPTestClick, weld::Button&, void);
     void UpdateSkiaStatus();
diff --git a/cui/uiconfig/ui/optviewpage.ui b/cui/uiconfig/ui/optviewpage.ui
index a063a4f6d36d..d24f7ef7285a 100644
--- a/cui/uiconfig/ui/optviewpage.ui
+++ b/cui/uiconfig/ui/optviewpage.ui
@@ -412,7 +412,7 @@
             <property name="label-xalign">0</property>
             <property name="shadow-type">none</property>
             <child>
-              <!-- n-columns=1 n-rows=6 -->
+              <!-- n-columns=1 n-rows=7 -->
               <object class="GtkGrid" id="grid3">
                 <property name="visible">True</property>
                 <property name="can-focus">False</property>
@@ -520,6 +520,18 @@
                     <property name="top-attach">5</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkButton" id="btnSkialog">
+                    <property name="label" translatable="yes" 
context="optviewpage|btnSkialog">Copy skia.log</property>
+                    <property name="visible">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">True</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">6</property>
+                  </packing>
+                </child>
               </object>
             </child>
             <child type="label">
diff --git a/include/vcl/skia/SkiaHelper.hxx b/include/vcl/skia/SkiaHelper.hxx
index 128c758fa46f..37fed7ff4de9 100644
--- a/include/vcl/skia/SkiaHelper.hxx
+++ b/include/vcl/skia/SkiaHelper.hxx
@@ -11,12 +11,14 @@
 #define INCLUDED_VCL_SKIA_SKIAHELPER_HXX
 
 #include <vcl/dllapi.h>
+#include <rtl/ustring.hxx>
 
 #include <config_features.h>
 
 namespace SkiaHelper
 {
 VCL_DLLPUBLIC bool isVCLSkiaEnabled();
+VCL_DLLPUBLIC OUString readLog();
 
 #if HAVE_FEATURE_SKIA
 
diff --git a/vcl/skia/SkiaHelper.cxx b/vcl/skia/SkiaHelper.cxx
index a6189a36dc1b..16cbdd306fd1 100644
--- a/vcl/skia/SkiaHelper.cxx
+++ b/vcl/skia/SkiaHelper.cxx
@@ -72,6 +72,18 @@ static void writeToLog(SvStream& stream, const char* key, 
const char* value)
     stream.WriteChar('\n');
 }
 
+OUString readLog()
+{
+    SvFileStream logFile(getCacheFolder() + "/skia.log", StreamMode::READ);
+
+    OUString sResult;
+    OString sLine;
+    while (logFile.ReadLine(sLine))
+        sResult += OStringToOUString(sLine, RTL_TEXTENCODING_UTF8) + "\n";
+
+    return sResult;
+}
+
 uint32_t vendorId = 0;
 
 #ifdef SK_VULKAN

Reply via email to