summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llnotifications.cpp7
-rw-r--r--indra/llui/lltransutil.cpp9
-rw-r--r--indra/llui/lluicolortable.cpp5
-rw-r--r--indra/llvfs/lldir.cpp19
-rw-r--r--indra/llvfs/lldir.h22
-rw-r--r--indra/llvfs/tests/lldir_test.cpp14
-rw-r--r--indra/newview/llviewertexturelist.cpp7
7 files changed, 45 insertions, 38 deletions
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 4fbee8cd80..210a320f41 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1424,10 +1424,11 @@ void addPathIfExists(const std::string& new_path, std::vector<std::string>& path
bool LLNotifications::loadTemplates()
{
llinfos << "Reading notifications template" << llendl;
- // Passing findSkinnedFilenames(merge=true) makes it output all relevant
- // pathnames instead of just the ones from the most specific skin.
+ // Passing findSkinnedFilenames(constraint=LLDir::ALL_SKINS) makes it
+ // output all relevant pathnames instead of just the ones from the most
+ // specific skin.
std::vector<std::string> search_paths =
- gDirUtilp->findSkinnedFilenames(LLDir::XUI, "notifications.xml", true);
+ gDirUtilp->findSkinnedFilenames(LLDir::XUI, "notifications.xml", LLDir::ALL_SKINS);
std::string base_filename = search_paths.front();
LLXMLNodePtr root;
diff --git a/indra/llui/lltransutil.cpp b/indra/llui/lltransutil.cpp
index 97a72b55e1..3b7e737dea 100644
--- a/indra/llui/lltransutil.cpp
+++ b/indra/llui/lltransutil.cpp
@@ -36,11 +36,12 @@
bool LLTransUtil::parseStrings(const std::string& xml_filename, const std::set<std::string>& default_args)
{
// LLUICtrlFactory::getLayeredXMLNode() just calls
- // gDirUtilp->findSkinnedFilenames(merge=false) and then passes the
- // resulting paths to LLXMLNode::getLayeredXMLNode(). Bypass that and call
- // LLXMLNode::getLayeredXMLNode() directly: we want merge=true.
+ // gDirUtilp->findSkinnedFilenames(constraint=LLDir::CURRENT_SKIN) and
+ // then passes the resulting paths to LLXMLNode::getLayeredXMLNode().
+ // Bypass that and call LLXMLNode::getLayeredXMLNode() directly: we want
+ // constraint=LLDir::ALL_SKINS.
std::vector<std::string> paths =
- gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_filename, true);
+ gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_filename, LLDir::ALL_SKINS);
if (paths.empty())
{
// xml_filename not found at all in any skin -- check whether entire
diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp
index 2717445396..ffeff15968 100644
--- a/indra/llui/lluicolortable.cpp
+++ b/indra/llui/lluicolortable.cpp
@@ -207,9 +207,10 @@ bool LLUIColorTable::loadFromSettings()
{
bool result = false;
- // pass merge=true because we want colors.xml from every skin dir
+ // pass constraint=LLDir::ALL_SKINS because we want colors.xml from every
+ // skin dir
BOOST_FOREACH(std::string colors_path,
- gDirUtilp->findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", true))
+ gDirUtilp->findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", LLDir::ALL_SKINS))
{
result |= loadFromFilename(colors_path, mLoadedColors);
}
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
index a7d12476a4..2d0adf14e6 100644
--- a/indra/llvfs/lldir.cpp
+++ b/indra/llvfs/lldir.cpp
@@ -46,7 +46,6 @@
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <algorithm>
-#include <iomanip>
#if LL_WINDOWS
#include "lldir_win32.h"
@@ -544,10 +543,10 @@ std::string LLDir::getExtension(const std::string& filepath) const
std::string LLDir::findSkinnedFilenameBaseLang(const std::string &subdir,
const std::string &filename,
- bool merge) const
+ ESkinConstraint constraint) const
{
// This implementation is basically just as described in the declaration comments.
- std::vector<std::string> found(findSkinnedFilenames(subdir, filename, merge));
+ std::vector<std::string> found(findSkinnedFilenames(subdir, filename, constraint));
if (found.empty())
{
return "";
@@ -557,10 +556,10 @@ std::string LLDir::findSkinnedFilenameBaseLang(const std::string &subdir,
std::string LLDir::findSkinnedFilename(const std::string &subdir,
const std::string &filename,
- bool merge) const
+ ESkinConstraint constraint) const
{
// This implementation is basically just as described in the declaration comments.
- std::vector<std::string> found(findSkinnedFilenames(subdir, filename, merge));
+ std::vector<std::string> found(findSkinnedFilenames(subdir, filename, constraint));
if (found.empty())
{
return "";
@@ -570,7 +569,7 @@ std::string LLDir::findSkinnedFilename(const std::string &subdir,
std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
const std::string& filename,
- bool merge) const
+ ESkinConstraint constraint) const
{
// Recognize subdirs that have no localization.
static const char* sUnlocalizedData[] =
@@ -582,7 +581,9 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
boost::end(sUnlocalizedData));
LL_DEBUGS("LLDir") << "subdir '" << subdir << "', filename '" << filename
- << "', merge " << std::boolalpha << merge << LL_ENDL;
+ << "', constraint "
+ << ((constraint == CURRENT_SKIN)? "CURRENT_SKIN" : "ALL_SKINS")
+ << LL_ENDL;
// Cache the default language directory for each subdir we've encountered.
// A cache entry whose value is the empty string means "not localized,
@@ -672,8 +673,8 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
// Here the desired filename exists in the first subsubdir. That means
// this is a skindir we want to record in results. But if the caller
- // passed merge=false, we must discard all previous skindirs.
- if (! merge)
+ // passed constraint=CURRENT_SKIN, we must discard all previous skindirs.
+ if (constraint == CURRENT_SKIN)
{
results.clear();
}
diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h
index a242802979..ffa2676838 100644
--- a/indra/llvfs/lldir.h
+++ b/indra/llvfs/lldir.h
@@ -119,6 +119,8 @@ class LLDir
// these methods search the various skin paths for the specified file in the following order:
// getUserSkinDir(), getUserDefaultSkinDir(), getSkinDir(), getDefaultSkinDir()
+ /// param value for findSkinnedFilenames(), explained below
+ enum ESkinConstraint { CURRENT_SKIN, ALL_SKINS };
/**
* Given a filename within skin, return an ordered sequence of paths to
* search. Nonexistent files will be filtered out -- which means that the
@@ -130,25 +132,25 @@ class LLDir
* level of skin subdirectory).
* @param filename Desired filename within subdir within skin, e.g.
* "panel_login.xml". DO NOT prepend (e.g.) "xui" or the desired language.
- * @param merge Callers perform two different kinds of processing. When
- * fetching a XUI file, for instance, the existence of @a filename in the
- * specified skin completely supercedes any @a filename in the default
- * skin. For that case, leave the default @a merge=false. The returned
- * vector will contain only
+ * @param constraint Callers perform two different kinds of processing.
+ * When fetching a XUI file, for instance, the existence of @a filename in
+ * the specified skin completely supercedes any @a filename in the default
+ * skin. For that case, leave the default @a constraint=CURRENT_SKIN. The
+ * returned vector will contain only
* ".../<i>current_skin</i>/xui/en/<i>filename</i>",
* ".../<i>current_skin</i>/xui/<i>current_language</i>/<i>filename</i>".
* But for (e.g.) "strings.xml", we want a given skin to be able to
* override only specific entries from the default skin. Any string not
* defined in the specified skin will be sought in the default skin. For
- * that case, pass @a merge=true. The returned vector will contain at
- * least ".../default/xui/en/strings.xml",
+ * that case, pass @a constraint=ALL_SKINS. The returned vector will
+ * contain at least ".../default/xui/en/strings.xml",
* ".../default/xui/<i>current_language</i>/strings.xml",
* ".../<i>current_skin</i>/xui/en/strings.xml",
* ".../<i>current_skin</i>/xui/<i>current_language</i>/strings.xml".
*/
std::vector<std::string> findSkinnedFilenames(const std::string& subdir,
const std::string& filename,
- bool merge=false) const;
+ ESkinConstraint constraint=CURRENT_SKIN) const;
/// Values for findSkinnedFilenames(subdir) parameter
static const char *XUI, *TEXTURES, *SKINBASE;
/**
@@ -160,7 +162,7 @@ class LLDir
*/
std::string findSkinnedFilenameBaseLang(const std::string &subdir,
const std::string &filename,
- bool merge=false) const;
+ ESkinConstraint constraint=CURRENT_SKIN) const;
/**
* Return the "most localized" pathname from findSkinnedFilenames(), or
* the empty string if no such file exists. Parameters are identical to
@@ -170,7 +172,7 @@ class LLDir
*/
std::string findSkinnedFilename(const std::string &subdir,
const std::string &filename,
- bool merge=false) const;
+ ESkinConstraint constraint=CURRENT_SKIN) const;
// random filename in common temporary directory
std::string getTempFilename() const;
diff --git a/indra/llvfs/tests/lldir_test.cpp b/indra/llvfs/tests/lldir_test.cpp
index a00fc8684c..15a5b6d4f3 100644
--- a/indra/llvfs/tests/lldir_test.cpp
+++ b/indra/llvfs/tests/lldir_test.cpp
@@ -584,7 +584,7 @@ namespace tut
ensure_equals(lldir.getLanguage(), "en");
// top-level directory of a skin isn't localized
- ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", LLDir::ALL_SKINS),
vec(list_of("install/skins/default/colors.xml")
("user/skins/default/colors.xml")));
// We should not have needed to check for skins/default/en. We should
@@ -599,13 +599,13 @@ namespace tut
StringVec expected(vec(list_of("install/skins/default/xui/en/strings.xml")
("user/skins/default/xui/en/strings.xml")));
- ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),
expected);
// The first time, we had to probe to find out whether xui was localized.
lldir.ensure_checked("install/skins/default/xui/en");
lldir.clear_checked();
// Now make the same call again -- should return same result --
- ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),
expected);
// but this time it should remember that xui is localized.
lldir.ensure_not_checked("install/skins/default/xui/en");
@@ -648,7 +648,7 @@ namespace tut
ensure_equals(lldir.getLanguage(), "fr");
// pass merge=true to request this filename in all relevant skins
- ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),
vec(list_of
("install/skins/default/xui/en/strings.xml")
("install/skins/default/xui/fr/strings.xml")
@@ -691,7 +691,7 @@ namespace tut
/*------------------------- "steam", "en" --------------------------*/
lldir.setSkinFolder("steam", "en");
- ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::SKINBASE, "colors.xml", LLDir::ALL_SKINS),
vec(list_of
("install/skins/default/colors.xml")
("install/skins/steam/colors.xml")
@@ -715,7 +715,7 @@ namespace tut
vec(list_of("user/skins/steam/xui/en/strings.xml")));
// pass merge=true to request this filename in all relevant skins
- ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),
vec(list_of
("install/skins/default/xui/en/strings.xml")
("install/skins/steam/xui/en/strings.xml")
@@ -732,7 +732,7 @@ namespace tut
("user/skins/steam/xui/fr/strings.xml")));
// pass merge=true to request this filename in all relevant skins
- ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", true),
+ ensure_equals(lldir.findSkinnedFilenames(LLDir::XUI, "strings.xml", LLDir::ALL_SKINS),
vec(list_of
("install/skins/default/xui/en/strings.xml")
("install/skins/default/xui/fr/strings.xml")
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 7eb1a202a0..edc43534dd 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1583,10 +1583,11 @@ struct UIImageDeclarations : public LLInitParam::Block<UIImageDeclarations>
bool LLUIImageList::initFromFile()
{
- // Look for textures.xml in all the right places. Pass merge=true because
- // we want to overlay textures.xml from all the skins directories.
+ // Look for textures.xml in all the right places. Pass
+ // constraint=LLDir::ALL_SKINS because we want to overlay textures.xml
+ // from all the skins directories.
std::vector<std::string> textures_paths =
- gDirUtilp->findSkinnedFilenames(LLDir::TEXTURES, "textures.xml", true);
+ gDirUtilp->findSkinnedFilenames(LLDir::TEXTURES, "textures.xml", LLDir::ALL_SKINS);
std::vector<std::string>::const_iterator pi(textures_paths.begin()), pend(textures_paths.end());
if (pi == pend)
{