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.
kpilot/conduits/docconduit/DOC-converter.h

192 lines
5.2 KiB

#ifndef _DOC_CONVERTER_H
#define _DOC_CONVERTER_H
/* DOC-converter.h KPilot
**
** Copyright (C) 2002-2003 by Reinhold Kainhofer
**
*/
/*
** 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.
**
** 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 in a file called COPYING; if not, write to
** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
** MA 02110-1301, USA.
*/
/*
** Bug reports and questions can be sent to kde-pim@kde.org
*/
#define DOC_UNCOMPRESSED 1
#define DOC_COMPRESSED 2
#define BMK_SUFFIX ".bmk"
#define PDBBMK_SUFFIX ".bm"
#include <list>
#include <tqobject.h>
class PilotDatabase;
/****************************************************************************************************
* various bookmark classes. Most important is the bmkList findMatches(TQString, bmkList &) function,
* which needs to return a list of all bookmarks found for the given bookmark expression.
* A bookmark usually consists of a bookmark text and an offset into the text document.
****************************************************************************************************/
class docBookmark;
#define bmkList std::list<docBookmark*>
class docBookmark {
public:
static bool compare_pos;
docBookmark():bmkName(), position(0) { };
docBookmark(TQString name, long int pos):bmkName(name), position(pos) { };
docBookmark(const docBookmark &bmk):bmkName(bmk.bmkName),position(bmk.position){};
virtual ~ docBookmark() { };
virtual int findMatches(TQString, bmkList &fBookmarks) {
FUNCTIONSETUP;
fBookmarks.push_back(new docBookmark(*this));
return 1;
};
TQString bmkName;
long int position;
};
class docMatchBookmark:public docBookmark {
public:
docMatchBookmark():docBookmark() { from=0; to=100;};
docMatchBookmark(TQString pattrn, int options=0):docBookmark(),
pattern(pattrn), opts(options) { from=0; to=100; };
docMatchBookmark(TQString pattrn, TQString bmkname,
int options=0):docBookmark(bmkname, 0), pattern(pattrn),
opts(options) { from=0; to=100; };
virtual ~ docMatchBookmark() { };
virtual int findMatches(TQString, bmkList &fBookmarks);
TQString pattern;
int opts;
int from, to;
};
class docRegExpBookmark:public docMatchBookmark {
public:
docRegExpBookmark():docMatchBookmark() { capSubexpression=-1;};
docRegExpBookmark(TQString regexp, int cap=0,
int options=0):docMatchBookmark(regexp, options) {capSubexpression=cap; };
docRegExpBookmark(TQString pattrn, TQString bmkname,
int options=0):docMatchBookmark(pattrn, bmkname, options) { capSubexpression=-1; };
virtual ~ docRegExpBookmark() { };
virtual int findMatches(TQString, bmkList &fBookmarks);
int capSubexpression;
};
/*************************************************************************************************************
* The converter class that does the real work for us.
*************************************************************************************************************/
class DOCConverter:public TQObject {
TQ_OBJECT
private:
PilotDatabase * docdb;
TQString txtfilename;
TQString bmkfilename;
bool compress;
bmkList fBookmarks;
public:
enum eSortBookmarksEnum
{
eSortNone,
eSortPos,
eSortName
} eSortBookmarks;
public:
DOCConverter(TQObject *parent=0L, const char *name=0L);
virtual ~ DOCConverter();
TQString readText();
void setTXTpath(TQString path, TQString file);
void setTXTpath(TQString filename);
void setPDB(PilotDatabase * dbi);
TQString txtFilename() const {return txtfilename;}
TQString bmkFilename() const {return bmkfilename;}
void setBmkFilename(TQString bmkf) { bmkfilename=bmkf;}
bool getCompress() const { return compress; };
void setCompress(bool newcomp) {compress=newcomp;};
bool convertTXTtoPDB();
bool convertPDBtoTXT();
int setBookmarks(bmkList bookmarks) {
for (docBookmark *bmk : fBookmarks)
{
delete bmk;
}
fBookmarks = bookmarks;
return fBookmarks.size();
};
int clearBookmarks() {
for (docBookmark *bmk : fBookmarks)
{
delete bmk;
}
fBookmarks.clear();
return fBookmarks.size();
};
int addBookmark(docBookmark *bookmark) {
fBookmarks.push_back(bookmark);
return fBookmarks.size();
};
int findBmkEndtags(TQString &, bmkList&);
int findBmkInline(TQString &, bmkList&);
int findBmkFile(TQString &, bmkList&);
void setSort(enum eSortBookmarksEnum sort) {eSortBookmarks=sort;}
enum eSortBookmarksEnum getSort() {return eSortBookmarks;}
enum eBmkTypesEnum {
eBmkNone = 0,
eBmkFile = 1,
eBmkInline = 2,
eBmkEndtags = 4,
eBmkDefaultBmkFile = 8
} fBmkTypes;
void setBookmarkTypes(int types) {
fBmkTypes = (eBmkTypesEnum) types;
};
protected:
int findBookmarks();
private:
void readConfig();
signals:
void logMessage(const TQString &);
void logError(const TQString &);
};
#endif