cui/Module_cui.mk | 2 cui/Package_uiconfig.mk | 32 ----- cui/UI_cui.mk | 16 ++ l10ntools/inc/export.hxx | 6 - l10ntools/source/merge.cxx | 6 - l10ntools/source/uimerge.cxx | 120 ++++++++++++++++----- solenv/gbuild/TargetLocations.mk | 6 + solenv/gbuild/UI.mk | 215 +++++++++++++++++++++++++++++++++++++++ solenv/gbuild/gbuild.mk | 1 sw/Module_sw.mk | 2 sw/Package_uiconfig.mk | 5 sw/UI_sw.mk | 18 +++ sw/UI_swriter.mk | 16 ++ 13 files changed, 374 insertions(+), 71 deletions(-)
New commits: commit 1404c6d3ed47779a40a9a6f60de9dd084b8df8db Author: Caolán McNamara <caol...@redhat.com> Date: Tue Aug 7 12:08:37 2012 +0100 merge tool not filtering on requested input file name isFileEmpty = !sFileNormalized.isEmpty doesn't make sense to me from commit 8b8162e0 I imagine it should be isFileEmpty = sFileNormalized.isEmpty which gives me the expected result of filtering out the files I don't care about Change-Id: Ic0967ac382a1fb912e7ad98d2fc5dcb626d4ff87 diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index 0dd7eb7..efe338b 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -151,7 +151,7 @@ MergeDataFile::MergeDataFile( std::ifstream aInputStream(rFileName.getStr()); const ::rtl::OString sHACK(RTL_CONSTASCII_STRINGPARAM("HACK")); const ::rtl::OString sFileNormalized(lcl_NormalizeFilename(rFile)); - const bool isFileEmpty = !sFileNormalized.isEmpty(); + const bool isFileEmpty = sFileNormalized.isEmpty(); if (!aInputStream.is_open()) { @@ -166,7 +166,7 @@ MergeDataFile::MergeDataFile( sal_Int32 n = 0; // Skip all wrong filenames const ::rtl::OString filename = lcl_NormalizeFilename(sLine.getToken(1, '\t', n)); // token 1 - if(isFileEmpty || sFileNormalized.equals("") || (!isFileEmpty && filename.equals(sFileNormalized)) ) + if (isFileEmpty || (!isFileEmpty && filename.equals(sFileNormalized)) ) { const rtl::OString sTYP = sLine.getToken( 1, '\t', n ); // token 3 const rtl::OString sGID = sLine.getToken( 0, '\t', n ); // token 4 commit 0fd26f6cc2a97aae802551b8928877791c2166ef Author: Caolán McNamara <caol...@redhat.com> Date: Tue Aug 7 12:08:08 2012 +0100 merge .ui translations back to runtime files Change-Id: Ia01ef21441220293343370df7d865c7eb889bc84 diff --git a/l10ntools/inc/export.hxx b/l10ntools/inc/export.hxx index bf1809b..94f0e6e 100644 --- a/l10ntools/inc/export.hxx +++ b/l10ntools/inc/export.hxx @@ -405,8 +405,7 @@ class MergeDataFile; class MergeData { -friend class MergeDataFile; -private: +public: rtl::OString sTyp; rtl::OString sGID; rtl::OString sLID; @@ -452,7 +451,8 @@ class MergeDataFile ~MergeDataFile(); - std::vector<rtl::OString> GetLanguages(); + std::vector<rtl::OString> GetLanguages() const; + const MergeDataHashMap& getMap() const { return aMap; } PFormEntrys *GetPFormEntrys( ResData *pResData ); PFormEntrys *GetPFormEntrysCaseSensitive( ResData *pResData ); diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index 1388460..0dd7eb7 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -195,7 +195,7 @@ MergeDataFile::~MergeDataFile() delete aI->second; } -std::vector<rtl::OString> MergeDataFile::GetLanguages() +std::vector<rtl::OString> MergeDataFile::GetLanguages() const { return std::vector<rtl::OString>(aLanguageSet.begin(),aLanguageSet.end()); } diff --git a/l10ntools/source/uimerge.cxx b/l10ntools/source/uimerge.cxx index d84eaa6..cd7443e 100644 --- a/l10ntools/source/uimerge.cxx +++ b/l10ntools/source/uimerge.cxx @@ -118,33 +118,8 @@ void GetOutputFile( int argc, char* argv[]) } } -SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) +int extractTranslations() { - int nRetValue = 0; - xsltStylesheetPtr stylesheet = 0; - - GetOutputFile( argc, argv ); - - if (sOutputFile.isEmpty()) - { - fprintf( stdout, "Syntax: UIEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-L l1,l2,...]\n" ); - fprintf( stdout, " Prj: Project\n" ); - fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" ); - fprintf( stdout, " FileIn: Source files (*.src)\n" ); - fprintf( stdout, " FileOut: Destination file (*.*)\n" ); - fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" ); - fprintf( stdout, " -e: Disable writing errorlog\n" ); - fprintf( stdout, " -b: Break when Token \"HelpText\" found in source\n" ); - fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US,es...)\n" ); - return 1; - } - - if (Export::sLanguages != "en-US") - { - fprintf(stderr, "can only extract en-US\n"); - return 1; - } - FILE *pOutFile = fopen(sOutputFile.getStr(), "w"); if (!pOutFile) { @@ -156,7 +131,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) rtl::OString sStyleSheet = rtl::OString(getenv("SRC_ROOT")) + rtl::OString("/solenv/bin/uilangfilter.xslt"); - stylesheet = xsltParseStylesheetFile ((const xmlChar *)sStyleSheet.getStr()); + xsltStylesheetPtr stylesheet = xsltParseStylesheetFile ((const xmlChar *)sStyleSheet.getStr()); xmlDocPtr doc = xmlParseFile(sInputFileName.getStr()); @@ -188,6 +163,97 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) fclose(pOutFile); + return 0; +} + + +bool Merge( + const rtl::OString &rSDFFile, + const rtl::OString &rSourceFile, + const rtl::OString &rDestinationFile) +{ + Export::InitLanguages( true ); + std::ofstream aDestination( + rDestinationFile.getStr(), std::ios_base::out | std::ios_base::trunc); + if (!aDestination.is_open()) { + return false; + } + + aDestination << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; + aDestination << "<t>\n"; + + MergeDataFile aMergeDataFile( rSDFFile, rSourceFile, sal_False ); + rtl::OString sTmp( Export::sLanguages ); + if( sTmp.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("ALL")) ) + Export::SetLanguages( aMergeDataFile.GetLanguages() ); + + std::vector<rtl::OString> aLanguages = Export::GetLanguages(); + + const MergeDataHashMap& rMap = aMergeDataFile.getMap(); + + for(size_t n = 0; n < aLanguages.size(); ++n) + { + rtl::OString sCur = aLanguages[ n ]; + if (sCur.isEmpty() || sCur.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("en-US"))) + continue; + for (MergeDataHashMap::const_iterator aI = rMap.begin(), aEnd = rMap.end(); aI != aEnd; ++aI) + { + if (aI->second->sGID.isEmpty()) + continue; + + PFormEntrys* pFoo = aI->second->GetPFormEntries(); + rtl::OString sOut; + pFoo->GetText( sOut, STRING_TYP_TEXT, sCur); + + if (sOut.isEmpty()) + continue; + + aDestination << " <e " + << "g=\"" << aI->second->sGID.getStr() << "\" " + << "i=\"" << aI->second->sLID.getStr() << "\">" + << sOut.getStr() << "</e>\n"; + } + } + + aDestination << "</t>"; + aDestination.close(); + return sal_True; +} + +SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) +{ + int nRetValue = 0; + + GetOutputFile( argc, argv ); + + if (sOutputFile.isEmpty()) + { + fprintf( stdout, "Syntax: UIEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-L l1,l2,...]\n" ); + fprintf( stdout, " Prj: Project\n" ); + fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" ); + fprintf( stdout, " FileIn: Source files (*.src)\n" ); + fprintf( stdout, " FileOut: Destination file (*.*)\n" ); + fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" ); + fprintf( stdout, " -e: Disable writing errorlog\n" ); + fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US,es...)\n" ); + return 1; + } + + if (!bMergeMode) + { + if (Export::sLanguages != "en-US") + { + fprintf(stderr, "only en-US can exist in source .ui files\n"); + nRetValue = 1; + } + else + nRetValue = extractTranslations(); + } + else + { + Merge(sMergeSrc, sInputFileName, sOutputFile); + } + return nRetValue; } commit ebe4c82a6551f91c4d3234da02f0f933c5c365d3 Author: David Tardon <dtar...@redhat.com> Date: Sat Aug 4 14:37:55 2012 +0200 use UI gbuild class to package .ui files in sw Change-Id: I3c6a8d3cbd9fad20506c1deb34d7a65c4fa76bc6 diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk index 59e2612..eded3d5 100644 --- a/sw/Module_sw.mk +++ b/sw/Module_sw.mk @@ -37,6 +37,8 @@ $(eval $(call gb_Module_add_targets,sw,\ Package_misc \ Package_uiconfig \ Package_xml \ + UI_sw \ + UI_swriter \ )) ifneq ($(DISABLE_SCRIPTING),TRUE) diff --git a/sw/Package_uiconfig.mk b/sw/Package_uiconfig.mk index 414630d..150b3ae 100644 --- a/sw/Package_uiconfig.mk +++ b/sw/Package_uiconfig.mk @@ -28,11 +28,6 @@ $(eval $(call gb_Package_Package,sw_uiconfig,$(SRCDIR)/sw/uiconfig)) -$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/swriter/ui/titlepage.ui,swriter/ui/titlepage.ui)) -$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/sw/ui/20705.ui,sw/ui/20705.ui)) -$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/sw/ui/20872.ui,sw/ui/20872.ui)) -$(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/sw/ui/20876.ui,sw/ui/20876.ui)) - $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/menubar/menubar.xml,sglobal/menubar/menubar.xml)) $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/statusbar/statusbar.xml,sglobal/statusbar/statusbar.xml)) $(eval $(call gb_Package_add_file,sw_uiconfig,xml/uiconfig/modules/sglobal/toolbar/alignmentbar.xml,sglobal/toolbar/alignmentbar.xml)) diff --git a/sw/UI_sw.mk b/sw/UI_sw.mk new file mode 100644 index 0000000..789da4f --- /dev/null +++ b/sw/UI_sw.mk @@ -0,0 +1,18 @@ +# -*- 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_UI_UI,sw)) + +$(eval $(call gb_UI_add_uifiles,sw,\ + sw/uiconfig/sw/ui/20705 \ + sw/uiconfig/sw/ui/20872 \ + sw/uiconfig/sw/ui/20876 \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/sw/UI_swriter.mk b/sw/UI_swriter.mk new file mode 100644 index 0000000..f1419eb --- /dev/null +++ b/sw/UI_swriter.mk @@ -0,0 +1,16 @@ +# -*- 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_UI_UI,modules/swriter)) + +$(eval $(call gb_UI_add_uifiles,modules/swriter,\ + sw/uiconfig/swriter/ui/titlepage \ +)) + +# vim: set noet sw=4 ts=4: commit 5bb3b5bf53777950a494082e8ef3cb7134846ee5 Author: David Tardon <dtar...@redhat.com> Date: Tue Aug 7 10:53:02 2012 +0100 use UI gbuild class to package .ui files in cui Change-Id: I4ddeacdbf2bbe86d0351a2d6027e2d608b378731 diff --git a/cui/Module_cui.mk b/cui/Module_cui.mk index 6ed6ba3..895013e 100644 --- a/cui/Module_cui.mk +++ b/cui/Module_cui.mk @@ -30,7 +30,7 @@ $(eval $(call gb_Module_Module,cui)) $(eval $(call gb_Module_add_targets,cui,\ AllLangResTarget_cui \ Library_cui \ - Package_uiconfig \ + UI_cui \ )) # vim: set noet sw=4 ts=4: diff --git a/cui/Package_uiconfig.mk b/cui/Package_uiconfig.mk deleted file mode 100644 index 524a542..0000000 --- a/cui/Package_uiconfig.mk +++ /dev/null @@ -1,32 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# Version: MPL 1.1 / GPLv3+ / LGPLv3+ -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License or as specified alternatively below. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# Major Contributor(s): -# Copyright (C) 2012 Red Hat, Inc., Caolán McNamara <caol...@redhat.com> -# (initial developer) -# -# All Rights Reserved. -# -# For minor contributions see the git repository. -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 3 or later (the "GPLv3+"), or -# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), -# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable -# instead of those above. - -$(eval $(call gb_Package_Package,cui_uiconfig,$(SRCDIR)/cui/uiconfig)) - -$(eval $(call gb_Package_add_file,cui_uiconfig,xml/uiconfig/cui/ui/10000.ui,ui/10000.ui)) - -# vim: set noet sw=4 ts=4: diff --git a/cui/UI_cui.mk b/cui/UI_cui.mk new file mode 100644 index 0000000..a98e905 --- /dev/null +++ b/cui/UI_cui.mk @@ -0,0 +1,16 @@ +# -*- 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_UI_UI,cui)) + +$(eval $(call gb_UI_add_uifiles,cui,\ + cui/uiconfig/ui/10000 \ +)) + +# vim: set noet sw=4 ts=4: commit c871a55dee877b839a81d3219b2ff6a3a71bb291 Author: David Tardon <dtar...@redhat.com> Date: Sat Aug 4 14:36:17 2012 +0200 add support for .ui files to gbuild Change-Id: I2817a6e354e13f5261825701bdbc836e2da347aa diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk index 60290af..24f8f17 100644 --- a/solenv/gbuild/TargetLocations.mk +++ b/solenv/gbuild/TargetLocations.mk @@ -143,6 +143,9 @@ gb_SrsTarget_get_target = $(WORKDIR)/SrsTarget/$(1).srs gb_SrsTemplatePartTarget_get_target = $(WORKDIR)/SrsTemplatePartTarget/$(firstword $(subst /, ,$(1)))/$(subst _tmpl,,$(notdir $(1))) gb_SrsTemplateTarget_get_include_dir = $(WORKDIR)/SrsTemplatePartTarget/$(firstword $(subst /, ,$(1))) gb_SrsTemplateTarget_get_target = $(WORKDIR)/SrsTemplateTarget/$(1) +gb_UI_get_target = $(WORKDIR)/UI/$(1).done +gb_UILocalizeTarget_get_target = $(WORKDIR)/UILocalizeTarget/$(1).ui +gb_UITarget_get_target = $(WORKDIR)/UITarget/$(1).done gb_UnoApiTarget_get_target = $(WORKDIR)/UnoApiTarget/$(1).rdb gb_UnoApiHeadersTarget_get_bootstrap_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/bootstrap$(2) gb_UnoApiHeadersTarget_get_comprehensive_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/comprehensive$(2) @@ -218,6 +221,9 @@ $(eval $(call gb_Helper_make_clean_targets,\ CppunitTest \ CustomTarget \ ExternalLib \ + UI \ + UILocalizeTarget \ + UITarget \ UnoApiHeadersTarget \ UnoApiTarget \ WinResTarget \ diff --git a/solenv/gbuild/UI.mk b/solenv/gbuild/UI.mk new file mode 100644 index 0000000..509a087 --- /dev/null +++ b/solenv/gbuild/UI.mk @@ -0,0 +1,215 @@ +# -*- 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/. +# + +# class UILocalizeTarget + +gb_UILocalizeTarget_WORKDIR := $(WORKDIR)/UILocalizeTarget + +gb_UILocalizeTarget_TARGET := $(call gb_Executable_get_target_for_build,uiex) +gb_UILocalizeTarget_COMMAND := $(gb_Helper_set_ldpath) $(gb_UILocalizeTarget_TARGET) + +define gb_UILocalizeTarget__command +$(call gb_Output_announce,$(2),$(true),UIX,1) +$(call gb_Helper_abbreviate_dirs,\ + $(gb_UILocalizeTarget_COMMAND) \ + -i $(UI_FILE) \ + -o $(1) \ + -l $(UI_LANG) \ + -m $(SDF) \ +) +endef + +$(dir $(call gb_UILocalizeTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_UILocalizeTarget_get_target,%) : $(gb_UILocalizeTarget_TARGET) + $(call gb_UILocalizeTarget__command,$@,$*) + +.PHONY : $(call gb_UILocalizeTarget_get_clean_target,%) +$(call gb_UILocalizeTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),UIX,1) + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(call gb_UILocalizeTarget_get_target,$*) \ + ) + +# Translates one .ui file +# +# gb_UILocalizeTarget_UILocalizeTarget target source lang +define gb_UILocalizeTarget_UILocalizeTarget +$(call gb_UILocalizeTarget_get_target,$(1)) : SDF := $(gb_SDFLOCATION)/$(dir $(2))localize.sdf +$(call gb_UILocalizeTarget_get_target,$(1)) : UI_FILE := $(SRCDIR)/$(2).ui +$(call gb_UILocalizeTarget_get_target,$(1)) : UI_LANG := $(3) + +$(call gb_UILocalizeTarget_get_target,$(1)) : $$(SDF) +$(call gb_UILocalizeTarget_get_target,$(1)) : $$(UI_FILE) +$(call gb_UILocalizeTarget_get_target,$(1)) :| $(dir $(call gb_UILocalizeTarget_get_target,$(1))).dir + +endef + +# class UITarget + +# en-US is a special case +gb_UITarget_LANGS := $(filter-out en-US,$(gb_WITH_LANG)) + +gb_UITarget_LOCALIZED_DIR := $(gb_UILocalizeTarget_WORKDIR) + +gb_UITarget_get_uifile_for_lang = $(subst $(gb_UITarget_LOCALIZED_DIR)/,,$(call gb_UILocalizeTarget_get_target,$(1)/$(2))) + +$(dir $(call gb_UITarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_UITarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_UITarget_get_target,%) : + $(call gb_Output_announce,$*,$(true),UI ,2) + $(call gb_Helper_abbreviate_dirs,\ + touch $@ \ + ) + +.PHONY : $(call gb_UITarget_get_clean_target,%) +$(call gb_UITarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),UI ,2) + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(call gb_UITarget_get_target,$*) \ + ) + +# Translates a set of .ui files +# +# gb_UITarget_UITarget modulename +define gb_UITarget_UITarget +$(call gb_UITarget_get_target,$(1)) :| $(dir $(call gb_UITarget_get_target,$(1))).dir + +endef + +define gb_UITarget__add_uifile_for_lang +$(call gb_UILocalizeTarget_UILocalizeTarget,$(2)/$(3),$(2),$(3)) +$(call gb_UITarget_get_target,$(1)) : $(call gb_UILocalizeTarget_get_target,$(2)/$(3)) +$(call gb_UITarget_get_clean_target,$(1)) : $(call gb_UILocalizeTarget_get_clean_target,$(2)/$(3)) + +endef + +# Adds an .ui file for translation +# +# gb_UITarget_add_uifile target uifile +define gb_UITarget_add_uifile +$(foreach lang,$(gb_UITarget_LANGS),$(call gb_UITarget__add_uifile_for_lang,$(1),$(2),$(lang))) + +endef + +# Adds multiple .ui files for translation +# +# gb_UITarget_add_uifiles target uifile(s) +define gb_UITarget_add_uifiles +$(foreach uifile,$(2),$(call gb_UITarget_add_uifile,$(1),$(uifile))) + +endef + +# class UI + +# Handles UI description files (suffix .ui) for the new layouting mechanism. + +gb_UI_LANGS := $(gb_UITarget_LANGS) + +$(dir $(call gb_UI_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_UI_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_UI_get_target,%) : + $(call gb_Helper_abbreviate_dirs,\ + touch $@ \ + ) + +.PHONY : $(call gb_UI_get_clean_target,%) +$(call gb_UI_get_clean_target,%) : + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(call gb_UI_get_target,$*) \ + ) + +# Translates and delivers a set of .ui files +# +# gb_UI_UI modulename +define gb_UI_UI +$(call gb_Package_Package_internal,$(1)_ui,$(SRCDIR)) +$(call gb_UI_get_target,$(1)) :| $(dir $(call gb_UI_get_target,$(1))).dir +$(call gb_UI_get_target,$(1)) :| $(call gb_Package_get_target,$(1)_ui) +$(call gb_UI_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(1)_ui) + +ifneq ($(gb_UI_LANGS),) +$(call gb_UITarget_UITarget,$(1)) +$(call gb_Package_Package_internal,$(1)_ui_localized,$(gb_UITarget_LOCALIZED_DIR)) +$(call gb_UI_get_target,$(1)) : $(call gb_UITarget_get_target,$(1)) +$(call gb_UI_get_target,$(1)) :| $(call gb_Package_get_target,$(1)_ui_localized) +$(call gb_UI_get_clean_target,$(1)) : $(call gb_UITarget_get_clean_target,$(1)) +$(call gb_UI_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(1)_ui_localized) +endif + +$$(eval $$(call gb_Module_register_target,$(call gb_UI_get_target,$(1)),$(call gb_UI_get_clean_target,$(1)))) +endef + +# gb_UI__get_outdir_filename target file lang? +gb_UI__get_outdir_filename = xml/uiconfig/$(1)/ui/$(if $(3),res/$(3)/)$(notdir $(2)).ui + +# gb_UI__add_uifile target package destfile srcfile lang? +define gb_UI__package_uifile +$(call gb_Package_add_file,$(2),$(call gb_UI__get_outdir_filename,$(1),$(3),$(5)),$(4)) + +endef + +# gb_UI__add_uifile_direct target file +define gb_UI__add_uifile_direct +$(call gb_UI__package_uifile,$(1),$(1)_ui,$(2),$(2).ui) + +endef + +# gb_UI__add_uifile_for_lang target file lang +define gb_UI__add_uifile_for_lang +$(call gb_UI__package_uifile,$(1),$(1)_ui_localized,$(2),$(call gb_UITarget_get_uifile_for_lang,$(2),$(3)),$(3)) + +endef + +define gb_UI__add_uifile +$(call gb_UI__add_uifile_direct,$(1),$(2)) + +ifneq ($(gb_UI_LANGS),) +$(call gb_UITarget_add_uifile,$(1),$(2)) +$(foreach lang,$(gb_UI_LANGS),$(call gb_UI__add_uifile_for_lang,$(1),$(2),$(lang))) +endif + +endef + +# Adds .ui file to the package +# +# The file is relative to $(SRCDIR) and without extension. +# +# gb_UI_add_uifile target uifile +define gb_UI_add_uifile +$(call gb_UI__add_uifile,$(1),$(2)) + +ifneq ($(gb_UI_LANGS),) +$(call gb_UITarget_add_uifile,$(1),$(2)) +endif + +endef + +# Adds multiple .ui files to the package +# +# gb_UI_add_uifiles target uifile(s) +define gb_UI_add_uifiles +$(foreach uifile,$(2),$(call gb_UI__add_uifile,$(1),$(uifile))) + +ifneq ($(gb_UI_LANGS),) +$(call gb_UITarget_add_uifiles,$(1),$(2)) +endif + +endef + +# vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index a787e14..ea9e1df 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -314,6 +314,7 @@ include $(foreach class, \ JavaClassSet \ JunitTest \ Module \ + UI \ UnoApiTarget \ UnoApi \ UnoApiMerge \
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits