mirror of https://github.com/GNOME/gimp.git
menus: fix dialogs_dockable_actions being in 2 groups.
Depending on where it's used, this list of action can be either in the "dockable" or the "dialogs" action group. The meson rule is a bit more complicated than I wished it were because of the ever-so-blocking lack of simple dependency in meson. Cf. my latest comment: https://github.com/mesonbuild/meson/issues/8123#issuecomment-1496168759
This commit is contained in:
parent
3e6735872a
commit
634bb0836e
|
@ -3,10 +3,10 @@
|
||||||
menudatadir = $(gimpdatadir)/menus
|
menudatadir = $(gimpdatadir)/menus
|
||||||
|
|
||||||
menudata_in_files = \
|
menudata_in_files = \
|
||||||
dockable-menu.ui.in \
|
dockable-menu.ui.in.in \
|
||||||
image-menu.ui.in
|
image-menu.ui.in.in
|
||||||
|
|
||||||
menudata_built_files = $(menudata_in_files:.ui.in=.ui)
|
menudata_built_files = $(menudata_in_files:.ui.in.in=.ui)
|
||||||
|
|
||||||
menudata_DATA = \
|
menudata_DATA = \
|
||||||
$(menudata_built_files) \
|
$(menudata_built_files) \
|
||||||
|
@ -46,7 +46,7 @@ menudata_DATA = \
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
$(menudata_DATA) \
|
$(menudata_DATA) \
|
||||||
$(menudata_in_files) \
|
$(menudata_in_files) \
|
||||||
dialogs-menuitems.ui \
|
dialogs-menuitems.ui.in \
|
||||||
gtkuimanager.dtd \
|
gtkuimanager.dtd \
|
||||||
menus.xsl
|
menus.xsl
|
||||||
|
|
||||||
|
@ -57,20 +57,32 @@ if GIMP_UNSTABLE
|
||||||
UNSTABLE_MENU_PARAMS = --stringparam unstable-menus yes
|
UNSTABLE_MENU_PARAMS = --stringparam unstable-menus yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUFFIXES = .ui.in .ui
|
SUFFIXES = .ui.in.in .ui
|
||||||
|
|
||||||
|
%-dialogs-menuitems.ui: dialogs-menuitems.ui.in
|
||||||
|
sed 's/@GROUP@/$*/' $< > $@
|
||||||
|
|
||||||
|
dockable-menu.ui.in: dockable-menu.ui.in.in
|
||||||
|
sed 's/@GROUP@/dockable/' $< > $@
|
||||||
|
|
||||||
|
image-menu.ui.in: image-menu.ui.in.in
|
||||||
|
sed 's/@GROUP@/dialogs/' $< > $@
|
||||||
|
|
||||||
# Adding a `realpath` because xsltproc adds an xml:base attribute when the path
|
# Adding a `realpath` because xsltproc adds an xml:base attribute when the path
|
||||||
# is absolute. This breaks our parsing at runtime.
|
# is absolute. This breaks our parsing at runtime.
|
||||||
.ui.in.ui:
|
image-menu.ui: image-menu.ui.in dialogs-dialogs-menuitems.ui $(srcdir)/menus.xsl $(top_srcdir)/configure.ac
|
||||||
if HAVE_XSLTPROC
|
if HAVE_XSLTPROC
|
||||||
$(XSLTPROC) --xinclude $(UNSTABLE_MENU_PARAMS) $(srcdir)/menus.xsl "`realpath --relative-to=. $<`" > $(@) || rm -f $(@)
|
$(XSLTPROC) --xinclude $(UNSTABLE_MENU_PARAMS) $(srcdir)/menus.xsl "`realpath --relative-to=. $<`" > $(@) || rm -f $(@)
|
||||||
else
|
else
|
||||||
@echo "*** xsltproc is required to build the menus XML files ***"; exit 1;
|
@echo "*** xsltproc is required to build the menus XML files ***"; exit 1;
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Specifying dependencies in the implicit rule above does not work, so
|
dockable-menu.ui: dockable-menu.ui.in dockable-dialogs-menuitems.ui $(srcdir)/menus.xsl $(top_srcdir)/configure.ac
|
||||||
# specify them here instead
|
if HAVE_XSLTPROC
|
||||||
dockable-menu.ui image-menu.ui: $(top_srcdir)/configure.ac $(srcdir)/menus.xsl dialogs-menuitems.ui
|
$(XSLTPROC) --xinclude $(UNSTABLE_MENU_PARAMS) $(srcdir)/menus.xsl "`realpath --relative-to=. $<`" > $(@) || rm -f $(@)
|
||||||
|
else
|
||||||
|
@echo "*** xsltproc is required to build the menus XML files ***"; exit 1;
|
||||||
|
endif
|
||||||
|
|
||||||
validate: $(menudata_DATA)
|
validate: $(menudata_DATA)
|
||||||
if HAVE_XMLLINT
|
if HAVE_XMLLINT
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<item><attribute name="action">app.dialogs-tool-options</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-device-status</attribute></item>
|
|
||||||
<section>
|
|
||||||
<item><attribute name="action">app.dialogs-layers</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-channels</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-vectors</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-indexed-palette</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-histogram</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-selection-editor</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-navigation</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-undo-history</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-cursor</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-sample-points</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-symmetry</attribute></item>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<item><attribute name="action">app.dialogs-colors</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-brushes</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-dynamics</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-mypaint-brushes</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-patterns</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-gradients</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-palettes</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-fonts</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-tool-presets</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-buffers</attribute></item>
|
|
||||||
</section>
|
|
||||||
<item><attribute name="action">app.dialogs-images</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-document-history</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-templates</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-error-console</attribute></item>
|
|
||||||
<item><attribute name="action">app.dialogs-dashboard</attribute></item>
|
|
||||||
</section>
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-tool-options</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-device-status</attribute></item>
|
||||||
|
<section>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-layers</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-channels</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-vectors</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-indexed-palette</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-histogram</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-selection-editor</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-navigation</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-undo-history</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-cursor</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-sample-points</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-symmetry</attribute></item>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-colors</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-brushes</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-dynamics</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-mypaint-brushes</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-patterns</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-gradients</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-palettes</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-fonts</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-tool-presets</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-buffers</attribute></item>
|
||||||
|
</section>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-images</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-document-history</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-templates</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-error-console</attribute></item>
|
||||||
|
<item><attribute name="action">@GROUP@.dialogs-dashboard</attribute></item>
|
||||||
|
</section>
|
|
@ -4,7 +4,7 @@
|
||||||
<menu id="/dockable-popup">
|
<menu id="/dockable-popup">
|
||||||
<submenu>
|
<submenu>
|
||||||
<attribute name="label" translatable="yes" context="file-action">_Add Tab</attribute>
|
<attribute name="label" translatable="yes" context="file-action">_Add Tab</attribute>
|
||||||
<xi:include href="dialogs-menuitems.ui" />
|
<xi:include href="@GROUP@-dialogs-menuitems.ui" />
|
||||||
</submenu>
|
</submenu>
|
||||||
<item><attribute name="action">dockable.dockable-close-tab</attribute></item>
|
<item><attribute name="action">dockable.dockable-close-tab</attribute></item>
|
||||||
<item><attribute name="action">dockable.dockable-detach-tab</attribute></item>
|
<item><attribute name="action">dockable.dockable-detach-tab</attribute></item>
|
|
@ -795,7 +795,7 @@
|
||||||
</submenu>
|
</submenu>
|
||||||
<submenu>
|
<submenu>
|
||||||
<attribute name="label" translatable="yes" context="windows-action">_Dockable Dialogs</attribute>
|
<attribute name="label" translatable="yes" context="windows-action">_Dockable Dialogs</attribute>
|
||||||
<xi:include href="dialogs-menuitems.ui" />
|
<xi:include href="@GROUP@-dialogs-menuitems.ui" />
|
||||||
</submenu>
|
</submenu>
|
||||||
<item><attribute name="action">app.dialogs-toolbox</attribute></item>
|
<item><attribute name="action">app.dialogs-toolbox</attribute></item>
|
||||||
</section>
|
</section>
|
|
@ -43,13 +43,42 @@ unstable_menus_args = stable ? [] : [ '--stringparam', 'unstable-menus', 'yes' ]
|
||||||
|
|
||||||
menus_ui_built_files = []
|
menus_ui_built_files = []
|
||||||
foreach menu_filegen : [ 'dockable-menu.ui', 'image-menu.ui', ]
|
foreach menu_filegen : [ 'dockable-menu.ui', 'image-menu.ui', ]
|
||||||
|
# This does look a bit overly complicated, but I encountered 2 issues:
|
||||||
|
# 1. The simpler solution was to do first the custom_target() then a single
|
||||||
|
# configure_file() per file. It didn't work out because of meson complex
|
||||||
|
# dependency logic (see https://github.com/mesonbuild/meson/issues/8123).
|
||||||
|
# 2. So I inverted, but now xsltproc was the one acting up by adding the
|
||||||
|
# 'xml:base' attribute when the included and including XML files are in
|
||||||
|
# different folders. This is why I added a second configure_file() to have
|
||||||
|
# both XML files in the same folder.
|
||||||
|
conf = configuration_data()
|
||||||
|
if menu_filegen == 'dockable-menu.ui'
|
||||||
|
group = 'dockable'
|
||||||
|
else
|
||||||
|
group = 'dialogs'
|
||||||
|
endif
|
||||||
|
conf.set('GROUP', group)
|
||||||
|
included_file = configure_file(
|
||||||
|
input: 'dialogs-menuitems.ui.in',
|
||||||
|
output: group + '-dialogs-menuitems.ui',
|
||||||
|
configuration: conf,
|
||||||
|
)
|
||||||
|
|
||||||
|
pre_built_file = configure_file(
|
||||||
|
input: menu_filegen + '.in.in',
|
||||||
|
output: menu_filegen + '.in',
|
||||||
|
configuration: conf,
|
||||||
|
)
|
||||||
|
|
||||||
menus_ui_built_files += custom_target(menu_filegen,
|
menus_ui_built_files += custom_target(menu_filegen,
|
||||||
input : [ menu_filegen +'.in', 'menus.xsl', 'dialogs-menuitems.ui'],
|
input : [ pre_built_file, 'menus.xsl', included_file],
|
||||||
output: [ menu_filegen ],
|
output: [ menu_filegen ],
|
||||||
command: [
|
command: [
|
||||||
xsltproc,
|
xsltproc,
|
||||||
'--xinclude',
|
'--xinclude',
|
||||||
unstable_menus_args,
|
unstable_menus_args,
|
||||||
|
'--path',
|
||||||
|
meson.current_build_dir(),
|
||||||
'--output', '@OUTPUT@',
|
'--output', '@OUTPUT@',
|
||||||
'@INPUT1@',
|
'@INPUT1@',
|
||||||
'@INPUT0@',
|
'@INPUT0@',
|
||||||
|
|
Loading…
Reference in New Issue