gecko/dom/xul/templates/nsXULContentUtils.h

150 lines
5.8 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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/. */
/*
A package of routines shared by the XUL content code.
*/
#ifndef nsXULContentUtils_h__
#define nsXULContentUtils_h__
#include "nsISupports.h"
class nsIAtom;
class nsIContent;
class nsIDocument;
class nsIRDFNode;
class nsIRDFResource;
class nsIRDFLiteral;
class nsIRDFService;
class nsIDateTimeFormat;
class nsICollation;
// errors to pass to LogTemplateError
#define ERROR_TEMPLATE_INVALID_QUERYPROCESSOR \
"querytype attribute doesn't specify a valid query processor"
#define ERROR_TEMPLATE_INVALID_QUERYSET \
"unexpected <queryset> element"
#define ERROR_TEMPLATE_NO_MEMBERVAR \
"no member variable found. Action body should have an element with uri attribute"
#define ERROR_TEMPLATE_WHERE_NO_SUBJECT \
"<where> element is missing a subject attribute"
#define ERROR_TEMPLATE_WHERE_NO_RELATION \
"<where> element is missing a rel attribute"
#define ERROR_TEMPLATE_WHERE_NO_VALUE \
"<where> element is missing a value attribute"
#define ERROR_TEMPLATE_WHERE_NO_VAR \
"<where> element must have at least one variable as a subject or value"
#define ERROR_TEMPLATE_BINDING_BAD_SUBJECT \
"<binding> requires a variable for its subject attribute"
#define ERROR_TEMPLATE_BINDING_BAD_PREDICATE \
"<binding> element is missing a predicate attribute"
#define ERROR_TEMPLATE_BINDING_BAD_OBJECT \
"<binding> requires a variable for its object attribute"
#define ERROR_TEMPLATE_CONTENT_NOT_FIRST \
"expected <content> to be first"
#define ERROR_TEMPLATE_MEMBER_NOCONTAINERVAR \
"<member> requires a variable for its container attribute"
#define ERROR_TEMPLATE_MEMBER_NOCHILDVAR \
"<member> requires a variable for its child attribute"
#define ERROR_TEMPLATE_TRIPLE_NO_VAR \
"<triple> should have at least one variable as a subject or object"
#define ERROR_TEMPLATE_TRIPLE_BAD_SUBJECT \
"<triple> requires a variable for its subject attribute"
#define ERROR_TEMPLATE_TRIPLE_BAD_PREDICATE \
"<triple> should have a non-variable value as a predicate"
#define ERROR_TEMPLATE_TRIPLE_BAD_OBJECT \
"<triple> requires a variable for its object attribute"
#define ERROR_TEMPLATE_MEMBER_UNBOUND \
"neither container or child variables of <member> has a value"
#define ERROR_TEMPLATE_TRIPLE_UNBOUND \
"neither subject or object variables of <triple> has a value"
#define ERROR_TEMPLATE_BAD_XPATH \
"XPath expression in query could not be parsed"
#define ERROR_TEMPLATE_BAD_ASSIGN_XPATH \
"XPath expression in <assign> could not be parsed"
#define ERROR_TEMPLATE_BAD_BINDING_XPATH \
"XPath expression in <binding> could not be parsed"
#define ERROR_TEMPLATE_STORAGE_BAD_URI \
"only profile: or file URI are allowed"
#define ERROR_TEMPLATE_STORAGE_CANNOT_OPEN_DATABASE \
"cannot open given database"
#define ERROR_TEMPLATE_STORAGE_BAD_QUERY \
"syntax error in the SQL query"
#define ERROR_TEMPLATE_STORAGE_UNKNOWN_QUERY_PARAMETER \
"the given named parameter is unknown in the SQL query"
#define ERROR_TEMPLATE_STORAGE_WRONG_TYPE_QUERY_PARAMETER \
"the type of a query parameter is wrong"
#define ERROR_TEMPLATE_STORAGE_QUERY_PARAMETER_NOT_BOUND \
"a query parameter cannot be bound to the SQL query"
class nsXULContentUtils
{
protected:
static nsIRDFService* gRDF;
static nsIDateTimeFormat* gFormat;
static nsICollation *gCollation;
static bool gDisableXULCache;
static int
DisableXULCacheChangedCallback(const char* aPrefName, void* aClosure);
public:
static nsresult
Init();
static nsresult
Finish();
static nsresult
FindChildByTag(nsIContent *aElement,
int32_t aNameSpaceID,
nsIAtom* aTag,
nsIContent **aResult);
static nsresult
FindChildByResource(nsIContent* aElement,
nsIRDFResource* aResource,
nsIContent** aResult);
static nsresult
GetTextForNode(nsIRDFNode* aNode, nsAString& aResult);
static nsresult
GetResource(int32_t aNameSpaceID, nsIAtom* aAttribute, nsIRDFResource** aResult);
static nsresult
GetResource(int32_t aNameSpaceID, const nsAString& aAttribute, nsIRDFResource** aResult);
static nsresult
SetCommandUpdater(nsIDocument* aDocument, nsIContent* aElement);
/**
* Log a message to the error console
*/
static void
LogTemplateError(const char* aMsg);
static nsIRDFService*
RDFService()
{
return gRDF;
}
static nsICollation*
GetCollation();
#define XUL_RESOURCE(ident, uri) static nsIRDFResource* ident
#define XUL_LITERAL(ident, val) static nsIRDFLiteral* ident
#include "nsXULResourceList.h"
#undef XUL_RESOURCE
#undef XUL_LITERAL
};
#endif // nsXULContentUtils_h__