You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/kxsldbg/kxsldbgpart/libxsldbg/help_unix.cpp

116 lines
4.3 KiB

/***************************************************************************
help.c - help system for *nix platform
-------------------
begin : Tue Jan 29 2002
copyright : (C) 2001 by Keith Isdale
email : k_isdale@tpg.com.au
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
/*
* Uses docs/xsldoc.xsl docs/xsldoc.xml and xslproc to generate text
*/
#include "xsldbg.h"
#include "options.h"
#include "utils.h"
#include "debugXSL.h"
#include "help.h"
#include "files.h"
#include <stdlib.h>
#include <kglobal.h>
#include <kstandarddirs.h>
/**
* helpTop:
* @args : Is valid command or empty string
*
* Display help about the command in @args
*
* This is a platform specific interface
*
* Returns 1 on success,
* 0 otherwise
*/
int
helpTop(const xmlChar * args)
{
//Extra phrases to support translation of help display see tdewebdev/doc/xsldbg/xsldbghelp.xml and tdewebdev/kxsldbg/xsldbghelp.xsl
static const char* xsldbghelp_translations[] =
{
I18N_NOOP("xsldbg version"),
I18N_NOOP("Help document version"),
I18N_NOOP("Help not found for command")
};
TQString xsldbgVerTxt(i18n("xsldbg version"));
TQString helpDocVerTxt(i18n("Help document version"));
TQString helpErrorTxt(i18n("Help not found for command"));
char buff[500], helpParam[100];
const char *docsDirPath =
(const char *) optionsGetStringOption(OPTIONS_DOCS_PATH);
int result = 0;
if (xmlStrLen(args) > 0) {
snprintf(helpParam, 100, "--param help:%c'%s'%c", TQUOTECHAR, args,
TQUOTECHAR);
} else
xmlStrCpy(helpParam, "");
if (docsDirPath && filesTempFileName(0)) {
snprintf((char *) buff, sizeof(buff), "%s %s"
" --param xsldbg_version:%c'%s'%c "
" --param xsldbgVerTxt:%c'%s'%c "
" --param helpDocVerTxt:%c'%s'%c "
" --param helpErrorTxt:%c'%s'%c "
" --output %s "
" --cd %s "
"xsldbghelp.xsl xsldbghelp.xml",
XSLDBG_BIN, helpParam,
TQUOTECHAR, VERSION, TQUOTECHAR,
TQUOTECHAR, xsldbgVerTxt.utf8().data(), TQUOTECHAR,
TQUOTECHAR, helpDocVerTxt.utf8().data(), TQUOTECHAR,
TQUOTECHAR, helpErrorTxt.utf8().data(), TQUOTECHAR,
filesTempFileName(0),
docsDirPath);
if (xslDbgShellExecute((xmlChar *) buff, optionsGetIntOption(OPTIONS_VERBOSE)) == 0) {
if (docsDirPath)
xsldbgGenericErrorFunc(i18n("Error: Unable to display help. Help files not found in %1 or xsldbg not found in path.\n").arg(docsDirPath)); /* FIXME: Comments not correct - the command is that invoked */
else
xsldbgGenericErrorFunc(i18n("Error: Unable to find xsldbg or help files.\n"));
} else {
if (filesMoreFile((xmlChar*)filesTempFileName(0), NULL) == 1) {
result = 1;
} else {
xsldbgGenericErrorFunc(i18n("Error: Unable to print help file.\n"));
}
}
} else {
xsldbgGenericErrorFunc(i18n("Error: No path to documentation; aborting help.\n"));
#ifdef WITH_XSLDBG_DEBUG_PROCESS
#ifdef USE_DOCS_MACRO
xsltGenericError(xsltGenericErrorContext,"MACRO has been defined look at Makefile.am\n");
#else
xsltGenericError(xsltGenericErrorContext,
"Error: Environment variable %s is not set to the directory of xsldbg documentation.\n",
XSLDBG_DOCS_DIR_VARIABLE);
#endif
#endif
}
return result;
}