[PATCH] Show LibreOffice controls in Glade's tool palette

Mathias Hasselmann (via Code Review) gerrit at gerrit.libreoffice.org
Thu Mar 14 04:59:20 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2724

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/24/2724/1

Show LibreOffice controls in Glade's tool palette

Glade didn't show any LibreOffice controls in its tool palette
because the catalog didn't have any glade-widget-group element.
This adds a XSLT script to automatically generate such element.

A better version of the script would create separate groups for
each module/namespace, but currently I have no idea how to do
this with libxslt, as it doesn't provide fn::distinct-values().

Change-Id: Iaa3e4b0471b58c48838e000e6d78a73b0c6a4bd3
---
A extras/CustomTarget_glade.mk
M extras/Module_extras.mk
M extras/Package_glade.mk
R extras/source/glade/libreoffice-catalog.xml.in
A extras/source/glade/makewidgetgroup.xslt
5 files changed, 78 insertions(+), 1 deletion(-)



diff --git a/extras/CustomTarget_glade.mk b/extras/CustomTarget_glade.mk
new file mode 100644
index 0000000..89d452e
--- /dev/null
+++ b/extras/CustomTarget_glade.mk
@@ -0,0 +1,26 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CustomTarget_CustomTarget,extras/glade))
+
+#
+# Rules
+#
+
+$(call gb_CustomTarget_get_workdir,extras/source/glade)/libreoffice-catalog.xml : \
+        $(SRCDIR)/extras/source/glade/libreoffice-catalog.xml.in \
+        $(SRCDIR)/extras/source/glade/makewidgetgroup.xslt \
+        | $(call gb_ExternalExecutable_get_dependencies,xsltproc)
+	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),XSLT,4)
+	$(call gb_Helper_abbreviate_dirs, \
+	$(call gb_ExternalExecutable_get_command,xsltproc) --nonet \
+		-o $@ $(SRCDIR)/extras/source/glade/makewidgetgroup.xslt $< \
+	)
+
+# vim: set noet sw=4 ts=4:
diff --git a/extras/Module_extras.mk b/extras/Module_extras.mk
index 7144265..c3cb14b 100644
--- a/extras/Module_extras.mk
+++ b/extras/Module_extras.mk
@@ -12,6 +12,7 @@
 $(eval $(call gb_Module_add_targets,extras,\
 	AllLangZip_autotextshare \
 	CustomTarget_autocorr \
+	CustomTarget_glade \
 	Package_fonts \
 	Package_glade \
 	Package_labels \
diff --git a/extras/Package_glade.mk b/extras/Package_glade.mk
index 9621aa9..1ac1f69 100644
--- a/extras/Package_glade.mk
+++ b/extras/Package_glade.mk
@@ -7,7 +7,7 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
 
-$(eval $(call gb_Package_Package,extras_glade,$(SRCDIR)/extras/source/glade))
+$(eval $(call gb_Package_Package,extras_glade,$(call gb_CustomTarget_get_workdir,extras/source/glade)))
 
 $(eval $(call gb_Package_add_file,extras_glade,pck/libreoffice-catalog.xml,libreoffice-catalog.xml))
 
diff --git a/extras/source/glade/libreoffice-catalog.xml b/extras/source/glade/libreoffice-catalog.xml.in
similarity index 100%
rename from extras/source/glade/libreoffice-catalog.xml
rename to extras/source/glade/libreoffice-catalog.xml.in
diff --git a/extras/source/glade/makewidgetgroup.xslt b/extras/source/glade/makewidgetgroup.xslt
new file mode 100644
index 0000000..c7d97d7
--- /dev/null
+++ b/extras/source/glade/makewidgetgroup.xslt
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="xml" version="1.0" encoding="UTF-8"/>
+
+  <!-- work arround apparently broken output indenting in libxslt -->
+  <xsl:param name="indent" select="'  '"/>
+
+  <xsl:template match="/glade-catalog">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+
+      <xsl:text>
</xsl:text>
+      <xsl:value-of select="$indent"/>
+      <glade-widget-group name="libreoffice" title="LibreOffice">
+      <xsl:text>
</xsl:text>
+
+        <xsl:for-each select="//glade-widget-class">
+          <xsl:value-of select="concat($indent,$indent)"/>
+          <glade-widget-class-ref name="{@name}"/>
+          <xsl:text>
</xsl:text>
+        </xsl:for-each>
+
+      <xsl:value-of select="$indent"/>
+      </glade-widget-group>
+      <xsl:text>
</xsl:text>
+    </xsl:copy>
+  </xsl:template>
+
+  <xsl:template match="@*|node()">
+    <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>

-- 
To view, visit https://gerrit.libreoffice.org/2724
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaa3e4b0471b58c48838e000e6d78a73b0c6a4bd3
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Mathias Hasselmann <mathias at openismus.com>



More information about the LibreOffice mailing list