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.
kvirc/src/modules/help/libkvihelp.cpp

237 lines
6.5 KiB

//
// File : libkvihelp.cpp
// Creation date : Sun Aug 13 2000 03:00:00 by Szymon Stefanek
//
// This file is part of the KVirc irc client distribution
// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
//
// 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 opinion) any later version.
//
// This program is distributed in the HOPE that it will be USEFUL,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, write to the Free Software Foundation,
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
//#include "libkvihelp.h"
#include "kvi_module.h"
#include "kvi_sourcesdate.h"
#include "helpwidget.h"
#include "helpwindow.h"
#include "index.h"
#include "kvi_app.h"
#include "kvi_frame.h"
#ifdef COMPILE_USE_QT4
#include <tq3mimefactory.h>
#endif
#include <tqsplitter.h>
Index * g_pDocIndex = 0;
KviPointerList<KviHelpWidget> * g_pHelpWidgetList = 0;
KviPointerList<KviHelpWindow> * g_pHelpWindowList = 0;
/*
@doc: help.search
@type:
command
@title:
help.search
@short:
Searches the documentation
@syntax:
help.search [-n] [-m] <key terms>
@description:
Finds the first available help browser in the current frame
then searches the documentation for the specified <key terms>.
If no help browser is available it creates one first:
if the -m switch is present, the created browser is a MDI window,
otherwise it is a static window.
If the -n switch is present, the window creation is forced even
if there are other help browsers already open.[br]
The <key terms> are [b]space separated words[/b]
to be matched inside the document body (logical AND).[br]
This command is exported by the "help" module.
*/
/*tatic bool help_module_cmd_search(KviModule *m,KviCommand *c)
{
ENTER_STACK_FRAME(c,"help_module_cmd_search");
KviStr keys;
if(!g_pZZZZZZUserParser->parseCmdFinalPart(c,keys))return false;
if(keys.isEmpty())keys = "kvirc";
if(!c->hasSwitch('n'))
{
// look for an already open help widget in this frame
KviHelpWidget * w = (KviHelpWidget *)c->window()->frame()->child(
"help_widget","KviHelpWidget");
if(w)
{
w->doExactSearchFor(keys.ptr());
return c->leaveStackFrame();
}
}
if(c->hasSwitch('m'))
{
KviHelpWindow *w = new KviHelpWindow(c->window()->frame(),"Help browser");
w->helpWidget()->doExactSearchFor(keys.ptr());
c->window()->frame()->addWindow(w);
} else {
KviHelpWidget *w = new KviHelpWidget(c->window()->frame()->splitter(),
c->window()->frame(),true);
w->doExactSearchFor(keys.ptr());
w->show();
}
return c->leaveStackFrame();
}*/
/*
#ifdef COMPILE_NEW_KVS
static bool help_kvs_cmd_search(KviKvsModuleCommandCall * c)
{
}
#endif
*/
/*
@doc: help.open
@type:
command
@title:
help.open
@short:
Shows a help document
@syntax:
help.open [-n] [-m] [document: string]
@description:
Finds the first available help browser in the current frame
then opens the specified [document].
If no [document] is specified it the documentation index is shown.
If no help browser is available , a new one is created.
[document] can be an absolute path or a relative one: in this case
the document is searched in the KVIrc documentation directory.[br]
The help browser has limited html browsing capabilities: you can
use it to view simple html files on your filesystem.[br]
This command is exported by the "help" module.
@switches:
!sw: -m | --mdi
The created browser is a MDI window,
otherwise it is a static window.
!sw: -n | --new
The window creation is forced even
if there are other help browsers already open.[br]
*/
static bool help_kvs_cmd_open(KviKvsModuleCommandCall * c)
{
TQString doc;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("document",KVS_PT_STRING,KVS_PF_OPTIONAL,doc)
KVSM_PARAMETERS_END(c)
if(doc.isEmpty())doc = "index.html";
#ifdef COMPILE_USE_QT4
Q3MimeSourceFactory * f = Q3MimeSourceFactory::defaultFactory();
#else
TQMimeSourceFactory * f = TQMimeSourceFactory::defaultFactory();
#endif
if(f)
{
if(!f->data(doc))
doc = "nohelpavailable.html";
}
if(!c->switches()->find('n',"new"))
{
KviHelpWidget * w = (KviHelpWidget *)c->window()->frame()->child("help_widget","KviHelpWidget");
if(w)
{
w->textBrowser()->setSource(doc);
return true;
}
}
if(c->switches()->find('m',"mdi"))
{
KviHelpWindow *w = new KviHelpWindow(c->window()->frame(),"Help browser");
w->textBrowser()->setSource(doc);
c->window()->frame()->addWindow(w);
} else {
KviHelpWidget *w = new KviHelpWidget(c->window()->frame()->splitter(),
c->window()->frame(),true);
w->textBrowser()->setSource(doc);
w->show();
//tqDebug ("mostro");
}
return true;
}
static bool help_module_init(KviModule * m)
{
TQString szHelpDir,szDocList;
g_pApp->getLocalKvircDirectory(szDocList,KviApp::Help,"help.doclist." KVI_SOURCES_DATE);
g_pApp->getGlobalKvircDirectory(szHelpDir,KviApp::Help);
g_pDocIndex = new Index(szHelpDir,szDocList);
g_pDocIndex->setDocListFile(szDocList);
g_pApp->getLocalKvircDirectory(szHelpDir,KviApp::Help,"help.dict." KVI_SOURCES_DATE);
g_pDocIndex->setDictionaryFile(szHelpDir);
g_pHelpWidgetList = new KviPointerList<KviHelpWidget>;
g_pHelpWidgetList->setAutoDelete(false);
g_pHelpWindowList = new KviPointerList<KviHelpWindow>;
g_pHelpWindowList->setAutoDelete(false);
KVSM_REGISTER_SIMPLE_COMMAND(m,"open",help_kvs_cmd_open);
return true;
}
static bool help_module_cleanup(KviModule *m)
{
if(g_pDocIndex) delete g_pDocIndex;
while(g_pHelpWidgetList->first())delete g_pHelpWidgetList->first();
delete g_pHelpWidgetList;
g_pHelpWidgetList = 0;
while(g_pHelpWindowList->first())g_pHelpWindowList->first()->close();
delete g_pHelpWindowList;
g_pHelpWindowList = 0;
return true;
}
static bool help_module_can_unload(KviModule *m)
{
return (g_pHelpWidgetList->isEmpty() && g_pHelpWindowList->isEmpty());
}
KVIRC_MODULE(
"Help", // module name
"1.0.0", // module version
"Copyright (C) 2000 Szymon Stefanek (pragma at kvirc dot net)", // author & (C)
"Help browser extension",
help_module_init,
help_module_can_unload,
0,
help_module_cleanup
)