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.
192 lines
5.2 KiB
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
|