1a5c1f9ed5
attribute/resource method in locale kit catalogs * Only load the embedded catalog if nothing else was found, so it can easily be overridden * Change the resource type to 'CADA' (CAtalog DAta) for embedded catalogs, and use a hash of the language code as the resource ID. This allows multiple languages to be stored in the same file and does not interfere with the user storing his own BMessages as resources. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43057 a95241bf-73f2-0310-859d-f6bbb57e9c96
76 lines
2.1 KiB
C++
76 lines
2.1 KiB
C++
/*
|
|
* Copyright 2009, Adrien Destugues, pulkomandy@gmail.com.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _DEFAULT_CATALOG_H_
|
|
#define _DEFAULT_CATALOG_H_
|
|
|
|
|
|
#include <DataIO.h>
|
|
#include <HashMapCatalog.h>
|
|
#include <String.h>
|
|
|
|
|
|
class BFile;
|
|
|
|
namespace BPrivate {
|
|
|
|
|
|
/*
|
|
* The implementation of the Locale Kit's standard catalog-type.
|
|
* Currently it only maps CatKey to a BString (the translated string),
|
|
* but the value-type might change to add support for shortcuts and/or
|
|
* graphical data (button-images and the like).
|
|
*/
|
|
class DefaultCatalog : public BHashMapCatalog {
|
|
public:
|
|
DefaultCatalog(const entry_ref &catalogOwner, const char *language,
|
|
uint32 fingerprint);
|
|
// constructor for normal use
|
|
DefaultCatalog(entry_ref *appOrAddOnRef);
|
|
// constructor for embedded catalog
|
|
DefaultCatalog(const char *path, const char *signature,
|
|
const char *language);
|
|
// constructor for editor-app
|
|
|
|
~DefaultCatalog();
|
|
|
|
|
|
// implementation for editor-interface:
|
|
status_t ReadFromFile(const char *path = NULL);
|
|
status_t ReadFromAttribute(const entry_ref &appOrAddOnRef);
|
|
status_t ReadFromResource(const entry_ref &appOrAddOnRef);
|
|
status_t WriteToFile(const char *path = NULL);
|
|
status_t WriteToAttribute(const entry_ref &appOrAddOnRef);
|
|
status_t WriteToResource(const entry_ref &appOrAddOnRef);
|
|
|
|
status_t SetRawString(const CatKey& key, const char *translated);
|
|
void SetSignature(const entry_ref &catalogOwner);
|
|
|
|
static BCatalogAddOn *Instantiate(const entry_ref& catalogOwner,
|
|
const char *language, uint32 fingerprint);
|
|
static BCatalogAddOn *Create(const char *signature,
|
|
const char *language);
|
|
|
|
static const uint8 kDefaultCatalogAddOnPriority;
|
|
static const char *kCatMimeType;
|
|
|
|
private:
|
|
status_t Flatten(BDataIO *dataIO);
|
|
status_t Unflatten(BDataIO *dataIO);
|
|
void UpdateAttributes(BFile& catalogFile);
|
|
|
|
mutable BString fPath;
|
|
};
|
|
|
|
extern "C" status_t
|
|
default_catalog_get_available_languages(BMessage* availableLanguages,
|
|
const char* sigPattern, const char* langPattern = NULL,
|
|
int32 fingerprint = 0);
|
|
|
|
} // namespace BPrivate
|
|
|
|
using namespace BPrivate;
|
|
|
|
#endif /* _DEFAULT_CATALOG_H_ */
|