|
|
|
/***************************************************************************
|
|
|
|
Vocabulary Document for KDE Edu
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
copyright : (C) 1999-2001 Ewald Arnold
|
|
|
|
(C) 2001 The KDE-EDU team
|
|
|
|
(C) 2005 Peter Hedlung
|
|
|
|
email : peter.hedlund@kdemail.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 option) any later version. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#ifndef KEDUVOCDOCUMENT_H
|
|
|
|
#define KEDUVOCDOCUMENT_H
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <tqobject.h>
|
|
|
|
|
|
|
|
#include <kurl.h>
|
|
|
|
|
|
|
|
#include "keduvocexpression.h"
|
|
|
|
|
|
|
|
#define KVD_ZERO_TIME 934329599 // 1999-08-10 23:59:59, never change
|
|
|
|
#define KVD_VERS_PREFIX " v" // kvoctrain v0.1.0
|
|
|
|
|
|
|
|
/** XML tags and attribute names */
|
|
|
|
|
|
|
|
#define KV_DOCTYPE "kvtml" // doctype
|
|
|
|
#define KV_TITLE "title" // doc title
|
|
|
|
#define KV_AUTHOR "author" // doc author
|
|
|
|
#define KV_LICENSE "license" // doc license
|
|
|
|
#define KV_DOC_REM "remark" // doc remark
|
|
|
|
#define KV_LINES "lines" // entries
|
|
|
|
#define KV_GENERATOR "generator" // who generated the doc
|
|
|
|
#define KV_COLS "cols" // columns
|
|
|
|
#define KV_ENCODING "encoding" // document encoding (obsolete!)
|
|
|
|
|
|
|
|
#define KV_EXPR "e" // entry for one expression
|
|
|
|
#define KV_ORG "o" // original expression in specified language
|
|
|
|
#define KV_TRANS "t" // translated expression in specified language
|
|
|
|
#define KV_LANG "l" // language: en, de, it, fr ...
|
|
|
|
#define KV_QUERY "q" // query: org or translation
|
|
|
|
#define KV_O "o" // org
|
|
|
|
#define KV_T "t" // translation
|
|
|
|
#define KV_GRADE "g" // grade of knowledge: 0=well known, x=not known for x times
|
|
|
|
#define KV_LESS_MEMBER "m" // member of lesson 1 .. x
|
|
|
|
#define KV_COUNT "c" // number of times queried
|
|
|
|
#define KV_SIZEHINT "width" // recommended column width
|
|
|
|
#define KV_CHARSET "charset" // recommended charset (obsolete!)
|
|
|
|
#define KV_BAD "b" // number of times failed
|
|
|
|
#define KV_DATE "d" // last query date
|
|
|
|
#define KV_DATE2 "w" // last query date, compressed format
|
|
|
|
#define KV_REMARK "r" // remark for this entry
|
|
|
|
#define KV_FAUX_AMI_F "ff" // false friend of this entry from org
|
|
|
|
#define KV_FAUX_AMI_T "tf" // false friend of this entry to org
|
|
|
|
#define KV_SYNONYM "y" // synonym (same meaning) of expr
|
|
|
|
#define KV_ANTONYM "a" // antonym (oppositite) of expr
|
|
|
|
#define KV_PRONUNCE "p" // how to pronunce this expression
|
|
|
|
#define KV_SELECTED "s" // entry selected for queries
|
|
|
|
#define KV_INACTIVE "i" // entry inactive (for queries)
|
|
|
|
#define KV_EXPRTYPE "t" // type of expression
|
|
|
|
#define KV_EXAMPLE "x" // example string with word
|
|
|
|
#define KV_USAGE "u" // usage label
|
|
|
|
#define KV_PARAPHRASE "h" // paraphrase for expression
|
|
|
|
|
|
|
|
/*
|
|
|
|
<type>
|
|
|
|
<desc no="1">My type 1</desc>
|
|
|
|
<desc no="2">My type 2</desc>
|
|
|
|
</type>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_TYPE_GRP "type" // type descriptor group
|
|
|
|
#define KV_TYPE_DESC "desc" // type descriptor
|
|
|
|
#define KV_TYPE_NO "no" // type descriptor number
|
|
|
|
|
|
|
|
/*
|
|
|
|
<usage>
|
|
|
|
<desc no="1">My usage 1</desc>
|
|
|
|
<desc no="2">My usage 2</desc>
|
|
|
|
</type>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_USAGE_GRP "usage" // usage descriptor group
|
|
|
|
#define KV_USAGE_DESC "desc" // usage descriptor
|
|
|
|
#define KV_USAGE_NO "no" // usage descriptor number
|
|
|
|
|
|
|
|
/*
|
|
|
|
<lesson width="138">
|
|
|
|
<desc no="1">Lesson #1</desc>
|
|
|
|
<desc no="2" query="1">Lesson #2</desc>
|
|
|
|
</lesson>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_LESS_GRP "lesson" // lesson descriptor group
|
|
|
|
#define KV_LESS_CURR "current" // is current lesson
|
|
|
|
#define KV_LESS_DESC "desc" // lesson descriptor
|
|
|
|
#define KV_LESS_QUERY "query" // lesson contained in query
|
|
|
|
#define KV_LESS_NO "no" // lesson descriptor number
|
|
|
|
|
|
|
|
/*
|
|
|
|
<tense>
|
|
|
|
<desc no="1">user tense #1</desc>
|
|
|
|
<desc no="2">user tense #2</desc>
|
|
|
|
</tense>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_TENSE_GRP "tense" // tense descriptor group
|
|
|
|
#define KV_TENSE_DESC "desc" // tense descriptor
|
|
|
|
#define KV_TENSE_NO "no" // tense descriptor number
|
|
|
|
|
|
|
|
/*
|
|
|
|
<options>
|
|
|
|
<sort on="1"/>
|
|
|
|
</options>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_OPTION_GRP "options" // internal options group
|
|
|
|
#define KV_OPT_SORT "sort" // allow sorting
|
|
|
|
#define KV_BOOL_FLAG "on" // general boolean flag
|
|
|
|
|
|
|
|
/*
|
|
|
|
<article>
|
|
|
|
<e l="de"> lang determines also lang order in entries !!
|
|
|
|
<fi>eine</fi> which must NOT differ
|
|
|
|
<fd>die</fd>
|
|
|
|
<mi>ein</mi>
|
|
|
|
<md>der</md>
|
|
|
|
<ni>ein</ni>
|
|
|
|
<nd>das</nd>
|
|
|
|
</e>
|
|
|
|
</article>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_ARTICLE_GRP "article" // article descriptor group
|
|
|
|
#define KV_ART_ENTRY "e" // article entry
|
|
|
|
#define KV_ART_FD "fd" // female definite
|
|
|
|
#define KV_ART_MD "md" // male definite
|
|
|
|
#define KV_ART_ND "nd" // natural definite
|
|
|
|
#define KV_ART_FI "fi" // female indefinite
|
|
|
|
#define KV_ART_MI "mi" // male indefinite
|
|
|
|
#define KV_ART_NI "ni" // natural indefinite
|
|
|
|
|
|
|
|
/*
|
|
|
|
<comparison>
|
|
|
|
<l1>good</l1>
|
|
|
|
<l2>better</l2>
|
|
|
|
<l3>best</l3>
|
|
|
|
</comparison>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_COMPARISON_GRP "comparison" // comparison descriptor group
|
|
|
|
#define KV_COMP_L1 "l1" // base form
|
|
|
|
#define KV_COMP_L2 "l2" // next form
|
|
|
|
#define KV_COMP_L3 "l3" // last form
|
|
|
|
|
|
|
|
/*
|
|
|
|
<multiplechoice>
|
|
|
|
<mc1>good</mc1>
|
|
|
|
<mc2>better</mc2>
|
|
|
|
<mc3>best</mc3>
|
|
|
|
<mc4>best 2</mc4>
|
|
|
|
<mc5>best 3</mc5>
|
|
|
|
</multiplechoice>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_MULTIPLECHOICE_GRP "multiplechoice" // multiple choice descriptor group
|
|
|
|
#define KV_MC_1 "mc1" // choice 1
|
|
|
|
#define KV_MC_2 "mc2" // choice 2
|
|
|
|
#define KV_MC_3 "mc3" // choice 3
|
|
|
|
#define KV_MC_4 "mc4" // choice 4
|
|
|
|
#define KV_MC_5 "mc5" // choice 5
|
|
|
|
|
|
|
|
/*
|
|
|
|
<conjugation> used in header for definiton of "prefix"
|
|
|
|
<e l="de"> lang determines also lang order in entries !!
|
|
|
|
<s1>I</s1> which must NOT differ in subsequent <e>-tags
|
|
|
|
<s2>you<2>
|
|
|
|
<s3f>he</s3f>
|
|
|
|
<s3m>she</s3m>
|
|
|
|
<s3n>it</s3n>
|
|
|
|
<p1>we</p1>
|
|
|
|
<p2>you</p2>
|
|
|
|
<p3f>they</p3f>
|
|
|
|
<p3m>they</p3m>
|
|
|
|
<p3n>they</p3n>
|
|
|
|
</e>
|
|
|
|
</conjugation>
|
|
|
|
|
|
|
|
<conjugation> and in entry for definition of tenses of (irreg.) verbs
|
|
|
|
<t n="sipa">
|
|
|
|
<s1>go</s1>
|
|
|
|
<s2>go</s2>
|
|
|
|
<s3f>goes</s3f>
|
|
|
|
<s3m>goes</s3m>
|
|
|
|
<s3n>goes</s3n>
|
|
|
|
<p1>go</p1>
|
|
|
|
<p2>go</p2>
|
|
|
|
<p3f>go</p3f>
|
|
|
|
<p3m>go</p3m>
|
|
|
|
<p3n>go</p3n>
|
|
|
|
</t>
|
|
|
|
</conjugation>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define KV_CONJUG_GRP "conjugation" // conjugation descriptor group
|
|
|
|
#define KV_CON_ENTRY "e" // conjugation entry (header)
|
|
|
|
#define KV_CON_TYPE "t" // conjugation type (voc entries)
|
|
|
|
#define KV_CON_NAME "n" // conjugation type name (voc entries)
|
|
|
|
#define KV_CON_P1S "s1" // 1. person singular
|
|
|
|
#define KV_CON_P2S "s2" // 2. person singular
|
|
|
|
#define KV_CON_P3SF "s3f" // 3. person singular female
|
|
|
|
#define KV_CON_P3SM "s3m" // 3. person singular male
|
|
|
|
#define KV_CON_P3SN "s3n" // 3. person singular natural
|
|
|
|
#define KV_CON_P1P "p1" // 1. person plural
|
|
|
|
#define KV_CON_P2P "p2" // 2. person plural
|
|
|
|
#define KV_CON_P3PF "p3f" // 3. person plural female
|
|
|
|
#define KV_CON_P3PM "p3m" // 3. person plural male
|
|
|
|
#define KV_CON_P3PN "p3n" // 3. person plural natural
|
|
|
|
#define KV_CONJ_COMMON "common" // female tqcontains common for all three
|
|
|
|
|
|
|
|
#define LEX_IDENT_50 "Vocabulary Trainer V5.0"
|
|
|
|
|
|
|
|
#define KVTML_EXT "kvtml"
|
|
|
|
#define VT5_LEX_EXT "lex"
|
|
|
|
#define QVOCAB_EXT "qvo"
|
|
|
|
#define VCB_EXT "vocab"
|
|
|
|
#define KVL_EXT "vl"
|
|
|
|
#define CSV_EXT "csv"
|
|
|
|
#define TXT_EXT "txt"
|
|
|
|
|
|
|
|
#define VCB_SEPARATOR "__"
|
|
|
|
|
|
|
|
class TQTextStream;
|
|
|
|
class TQStringList;
|
|
|
|
class MultipleChoice;
|
|
|
|
class LeitnerSystem;
|
|
|
|
|
|
|
|
/*************************************************************
|
|
|
|
* This class tqcontains the expressions of your vocabulary
|
|
|
|
************************************************************/
|
|
|
|
|
|
|
|
class KEduVocDocument : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
friend class KEduVocKvtmlWriter;
|
|
|
|
friend class KEduVocKvtmlReader;
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
enum FileType { kvd_none, automatic,
|
|
|
|
kvtml,
|
|
|
|
kvtbin,
|
|
|
|
vt_lex, vt_vcb, csv /*, kvoclearn, qvocab*/ };
|
|
|
|
|
|
|
|
/** Constructor for the fileclass of the application
|
|
|
|
*
|
|
|
|
* @param obj calling object
|
|
|
|
*/
|
|
|
|
KEduVocDocument(TQObject* obj);
|
|
|
|
|
|
|
|
/** Destructor for the fileclass of the application */
|
|
|
|
~KEduVocDocument();
|
|
|
|
|
|
|
|
/** indicates that doc is (not) modified
|
|
|
|
*
|
|
|
|
* @param dirty new state
|
|
|
|
*/
|
|
|
|
inline void setModified (bool _dirty = true) { emit docModified(dirty = _dirty); }
|
|
|
|
|
|
|
|
/** appends another entry at the end
|
|
|
|
*
|
|
|
|
* @param expr expression to append
|
|
|
|
*/
|
|
|
|
inline void appendEntry (KEduVocExpression *expr)
|
|
|
|
{ vocabulary.push_back (*expr); dirty = true; }
|
|
|
|
|
|
|
|
/** insert an entry
|
|
|
|
*
|
|
|
|
* @param expr expression to append
|
|
|
|
* @param index index of entry
|
|
|
|
*/
|
|
|
|
inline void insertEntry(KEduVocExpression *expr, int index)
|
|
|
|
{ vocabulary.insert(vocabulary.begin()+index, *expr); dirty = true; }
|
|
|
|
|
|
|
|
/** removes entry from doc
|
|
|
|
*
|
|
|
|
* @param index index of entry
|
|
|
|
*/
|
|
|
|
void removeEntry (int index);
|
|
|
|
|
|
|
|
/** sorts vocabulary alphabetically
|
|
|
|
*
|
|
|
|
* @param index index expression
|
|
|
|
* @result direction of sorting: true = ascending
|
|
|
|
*/
|
|
|
|
bool sort (int index);
|
|
|
|
|
|
|
|
/** removes equal entries (orig + all translations)
|
|
|
|
*
|
|
|
|
* @result number of removed entries
|
|
|
|
*/
|
|
|
|
int cleanUp();
|
|
|
|
|
|
|
|
/** sorts vocabulary by lesson indices
|
|
|
|
* @result direction of sorting: true = ascending
|
|
|
|
*/
|
|
|
|
bool sortByLesson_index ();
|
|
|
|
|
|
|
|
/** sorts vocabulary by lesson name
|
|
|
|
* @result direction of sorting: true = ascending
|
|
|
|
*/
|
|
|
|
bool sortByLesson_alpha ();
|
|
|
|
|
|
|
|
/** enables sorting
|
|
|
|
*/
|
|
|
|
inline void allowSorting(bool allow) { sort_allowed = allow; }
|
|
|
|
|
|
|
|
/** enables sorting
|
|
|
|
*/
|
|
|
|
inline bool isAllowedSorting() { return sort_allowed; }
|
|
|
|
|
|
|
|
/** returns the modification state of the doc */
|
|
|
|
inline bool isModified () const { return dirty; }
|
|
|
|
|
|
|
|
/** returns originals identifier
|
|
|
|
*/
|
|
|
|
TQString getOriginalIdent () const;
|
|
|
|
|
|
|
|
/** set originals identifier
|
|
|
|
*/
|
|
|
|
void setOriginalIdent (const TQString &id);
|
|
|
|
|
|
|
|
/** returns identifier of translation x
|
|
|
|
*
|
|
|
|
* @param index number of translation 1..x
|
|
|
|
* @result ident string: de=german, en=englisch, ..
|
|
|
|
*/
|
|
|
|
TQString getIdent (int index) const;
|
|
|
|
|
|
|
|
/** sets identifier of translation
|
|
|
|
*
|
|
|
|
* @param index number of translation 1..x
|
|
|
|
* @param lang ident string: de=german, en=englisch, ..
|
|
|
|
*/
|
|
|
|
void setIdent (int index, const TQString &lang);
|
|
|
|
|
|
|
|
/** removes identifier an the according translation in all entries
|
|
|
|
*
|
|
|
|
* @param index number of translation 1..x
|
|
|
|
*/
|
|
|
|
void removeIdent (int index);
|
|
|
|
|
|
|
|
/** determines if given translation is available and where
|
|
|
|
*
|
|
|
|
* @param lang identifier of language
|
|
|
|
* @result index of translation, 0=original, -1=none
|
|
|
|
*/
|
|
|
|
int findIdent (const TQString &lang) const;
|
|
|
|
|
|
|
|
/** returns attribute string
|
|
|
|
*
|
|
|
|
* @param index number of attribute
|
|
|
|
* @result string
|
|
|
|
*/
|
|
|
|
TQString getTypeName (int index) const;
|
|
|
|
|
|
|
|
/** sets attribute string
|
|
|
|
*
|
|
|
|
* @param index number of attribute
|
|
|
|
* @param str name of attribute
|
|
|
|
*/
|
|
|
|
void setTypeName (int index, TQString &str);
|
|
|
|
|
|
|
|
/** gets descr of types */
|
|
|
|
inline vector<TQString> getTypeDescr() const { return type_descr; }
|
|
|
|
|
|
|
|
/** sets descr of types */
|
|
|
|
inline void setTypeDescr(vector<TQString> names) { type_descr = names; }
|
|
|
|
|
|
|
|
/** returns tense string
|
|
|
|
*
|
|
|
|
* @param index number of tense
|
|
|
|
* @result string
|
|
|
|
*/
|
|
|
|
TQString getTenseName (int index) const;
|
|
|
|
|
|
|
|
/** sets tense string
|
|
|
|
*
|
|
|
|
* @param index number of tense
|
|
|
|
* @param str name of tense
|
|
|
|
*/
|
|
|
|
void setTenseName (int index, TQString &str);
|
|
|
|
|
|
|
|
/** gets descr of tenses */
|
|
|
|
inline vector<TQString> getTenseDescr() const { return tense_descr; }
|
|
|
|
|
|
|
|
/** sets descr of tenses */
|
|
|
|
inline void setTenseDescr(vector<TQString> names) { tense_descr = names; }
|
|
|
|
|
|
|
|
/** returns usage string
|
|
|
|
*
|
|
|
|
* @param index number of usage
|
|
|
|
* @result string
|
|
|
|
*/
|
|
|
|
TQString getUsageName (int index) const;
|
|
|
|
|
|
|
|
/** sets usage string
|
|
|
|
*
|
|
|
|
* @param index number of usage
|
|
|
|
* @param str name of usage
|
|
|
|
*/
|
|
|
|
void setUsageName (int index, TQString &str);
|
|
|
|
|
|
|
|
/** gets descr of usages */
|
|
|
|
inline vector<TQString> getUsageDescr() const { return usage_descr; }
|
|
|
|
|
|
|
|
/** sets descr of usages */
|
|
|
|
inline void setUsageDescr(vector<TQString> names) { usage_descr = names; }
|
|
|
|
|
|
|
|
/** open a document file
|
|
|
|
*
|
|
|
|
* @param url
|
|
|
|
* @result true if successful
|
|
|
|
*/
|
|
|
|
bool open(const KURL& url, bool append);
|
|
|
|
|
|
|
|
/** saves the data under the given name
|
|
|
|
*
|
|
|
|
* @param url if url is empty (or NULL) actual name is preserved
|
|
|
|
* @result true if successful
|
|
|
|
*/
|
|
|
|
bool saveAs(TQObject *parent, const KURL & url, FileType ft, const TQString & generator);
|
|
|
|
|
|
|
|
/** returns count of entries
|
|
|
|
*/
|
|
|
|
inline int numEntries() const { return vocabulary.size(); }
|
|
|
|
|
|
|
|
/** sets grades to KV_NORM_GRADE, counts to 0 ...
|
|
|
|
*
|
|
|
|
* @param index index of language 0..x, -1 = all
|
|
|
|
* @param lesson lesson id, if this is 0 all lesson are affected,
|
|
|
|
* otherwise only matching numbers
|
|
|
|
*/
|
|
|
|
void resetEntry (int index = -1, int lesson = 0);
|
|
|
|
|
|
|
|
/** returns count of different languages
|
|
|
|
*/
|
|
|
|
inline int numLangs() const { return langs.size(); } // org + translations
|
|
|
|
|
|
|
|
/** append new lang ident
|
|
|
|
*/
|
|
|
|
inline void appendLang(const TQString & id) { langs.push_back(id); }
|
|
|
|
|
|
|
|
/** returns pointer to expression object x
|
|
|
|
*
|
|
|
|
* @param index index of desired entry
|
|
|
|
* @result pointer to object or NULL if index out of range
|
|
|
|
*/
|
|
|
|
KEduVocExpression *getEntry(int index);
|
|
|
|
|
|
|
|
/** search substring in vocabulary (case insensitive always)
|
|
|
|
*
|
|
|
|
* @param substr partial string to search
|
|
|
|
* @param id which language to search: 0=org, 1..x=translation
|
|
|
|
* @param first index from where to start
|
|
|
|
* @param last index of last entry, -1 goes till end
|
|
|
|
* @param word_start false: search partial string,
|
|
|
|
* true:always from beginning of word
|
|
|
|
* @param tolerant
|
|
|
|
* @result index of found entry, -1 if none
|
|
|
|
*/
|
|
|
|
int search(TQString substr, int id,
|
|
|
|
int first=0, int last=-1, bool word_start = false, bool tolerant=false);
|
|
|
|
|
|
|
|
/** returns url of xml file */
|
|
|
|
inline KURL URL() const {return doc_url; }
|
|
|
|
|
|
|
|
/** sets url of xml file */
|
|
|
|
inline void setURL(const KURL& url) {doc_url = url;}
|
|
|
|
|
|
|
|
/** returns title of xml file */
|
|
|
|
TQString getTitle() const;
|
|
|
|
|
|
|
|
/** returns author of file */
|
|
|
|
TQString getAuthor() const;
|
|
|
|
|
|
|
|
/** returns license of file */
|
|
|
|
TQString getLicense() const;
|
|
|
|
|
|
|
|
/** returns remark of file */
|
|
|
|
TQString getDocRemark() const;
|
|
|
|
|
|
|
|
inline void getQueryLang(TQString &org, TQString &trans) const
|
|
|
|
{ org = queryorg; trans = querytrans; }
|
|
|
|
|
|
|
|
inline void setQueryLang(const TQString &org, const TQString &trans)
|
|
|
|
{ queryorg = org; querytrans = trans; }
|
|
|
|
|
|
|
|
/** sets title of xml file */
|
|
|
|
void setTitle(const TQString & title);
|
|
|
|
|
|
|
|
/** sets author of file */
|
|
|
|
void setAuthor(const TQString & author);
|
|
|
|
|
|
|
|
/** sets license of file */
|
|
|
|
void setLicense(const TQString & license);
|
|
|
|
|
|
|
|
/** sets remark of file */
|
|
|
|
void setDocRemark(const TQString & rem);
|
|
|
|
|
|
|
|
/** gets version of loaded file */
|
|
|
|
void getVersion(int &major, int &minor, int &patch);
|
|
|
|
|
|
|
|
/** returns current lesson index */
|
|
|
|
inline int getCurrentLesson() const { return current_lesson; }
|
|
|
|
|
|
|
|
/** sets current lesson index
|
|
|
|
* @param lesson index of lesson
|
|
|
|
*/
|
|
|
|
inline void setCurrentLesson(int lesson) { current_lesson = lesson; }
|
|
|
|
|
|
|
|
/** returns descr of lesson */
|
|
|
|
TQString getLessonDescr(int index) const;
|
|
|
|
|
|
|
|
/** returns lessons in current query */
|
|
|
|
vector<int> getLessonsInQuery() const;
|
|
|
|
|
|
|
|
/** sets lessons in current query */
|
|
|
|
void setLessonsInQuery(vector<int>);
|
|
|
|
|
|
|
|
inline vector<TQString> getLessonDescr() const { return lesson_descr; }
|
|
|
|
|
|
|
|
inline int numLessons () const {return (int) lesson_descr.size(); }
|
|
|
|
|
|
|
|
/** sets descr of lesson */
|
|
|
|
inline void setLessonDescr(vector<TQString> names) { lesson_descr = names; }
|
|
|
|
|
|
|
|
/** returns pointer to conjugations if available
|
|
|
|
*
|
|
|
|
* @param index index of translation
|
|
|
|
*/
|
|
|
|
Conjugation getConjugation(int index) const;
|
|
|
|
|
|
|
|
/** sets conjugations
|
|
|
|
*
|
|
|
|
* @param index index of translation
|
|
|
|
* @param con conjugation block
|
|
|
|
*/
|
|
|
|
void setConjugation(int index, const Conjugation &con);
|
|
|
|
|
|
|
|
/** returns pointer to articles if available
|
|
|
|
*
|
|
|
|
* @param index index of translation
|
|
|
|
*/
|
|
|
|
Article getArticle(int index) const;
|
|
|
|
|
|
|
|
/** sets articles
|
|
|
|
*
|
|
|
|
* @param index index of translation
|
|
|
|
* @param art article block
|
|
|
|
*/
|
|
|
|
void setArticle(int index, const Article &art);
|
|
|
|
|
|
|
|
/** compress date */
|
|
|
|
TQString compressDate(unsigned long) const;
|
|
|
|
|
|
|
|
/** decompress date */
|
|
|
|
unsigned long decompressDate(TQString) const;
|
|
|
|
|
|
|
|
/** returns recommended size
|
|
|
|
*
|
|
|
|
* @param index number of expr, -1 = lesson
|
|
|
|
* @result width of column
|
|
|
|
*/
|
|
|
|
int getSizeHint (int index) const;
|
|
|
|
|
|
|
|
/** sets recommended size
|
|
|
|
*
|
|
|
|
* @param index number of expr, -1 = lesson
|
|
|
|
* @param width width of column
|
|
|
|
*/
|
|
|
|
void setSizeHint (int index, const int width);
|
|
|
|
|
|
|
|
bool leitnerSystemActive();
|
|
|
|
void setLeitnerSystemActive(bool yes);
|
|
|
|
void createStandardLeitnerSystem();
|
|
|
|
void setLeitnerSystem( LeitnerSystem* system );
|
|
|
|
LeitnerSystem* getLeitnerSystem();
|
|
|
|
|
|
|
|
bool unknownAttribute (int line, const TQString &name, const TQString &attr);
|
|
|
|
void unknownElement (int line, const TQString &elem );
|
|
|
|
void errorKvtMl (int line, const TQString &text );
|
|
|
|
void warningKvtMl (int line, const TQString &text );
|
|
|
|
|
|
|
|
void errorLex (int line, const TQString &text );
|
|
|
|
|
|
|
|
void errorCsv (int line, const TQString &text );
|
|
|
|
|
|
|
|
FileType detectFT(const TQString &filename);
|
|
|
|
|
|
|
|
friend class QueryManager;
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void progressChanged (KEduVocDocument *, int curr_percent);
|
|
|
|
void docModified (bool mod);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
void Init();
|
|
|
|
|
|
|
|
/** sets version of loaded file */
|
|
|
|
void setVersion(const TQString & ver);
|
|
|
|
|
|
|
|
/* TODO
|
|
|
|
bool saveToLex (TQTextStream& os, TQString &title);
|
|
|
|
bool loadFromLex (TQTextStream& is);
|
|
|
|
bool loadLessonLex (TQTextStream& is);
|
|
|
|
bool saveLessonLex (TQTextStream& os);
|
|
|
|
bool saveTypeNameLex (TQTextStream& os);
|
|
|
|
bool loadTypeNameLex (TQTextStream& is);
|
|
|
|
|
|
|
|
bool saveToCsv (TQTextStream& os, TQString &title);
|
|
|
|
bool loadFromCsv (TQTextStream& is);
|
|
|
|
bool loadLessonCsv (TQTextStream& is);
|
|
|
|
bool saveLessonCsv (TQTextStream& os);
|
|
|
|
bool saveTypeNameCsv (TQTextStream& os);
|
|
|
|
bool loadTypeNameCsv (TQTextStream& is);
|
|
|
|
|
|
|
|
bool saveTypeNameVcb (TQTextStream &os);
|
|
|
|
bool loadTypeNameVcb (TQTextStream &is);
|
|
|
|
bool saveLessonVcb (TQTextStream &os);
|
|
|
|
bool loadLessonVcb (TQTextStream &is);
|
|
|
|
bool saveToVcb (TQTextStream& os, TQString &title);
|
|
|
|
bool loadFromVcb (TQTextStream& is);
|
|
|
|
void errorVcb (int line, const TQString &text );
|
|
|
|
*/
|
|
|
|
|
|
|
|
private:
|
|
|
|
bool dirty;
|
|
|
|
KURL doc_url;
|
|
|
|
vector<bool> sort_lang;
|
|
|
|
bool sort_lesson;
|
|
|
|
bool unknown_attr;
|
|
|
|
bool unknown_elem;
|
|
|
|
bool sort_allowed;
|
|
|
|
|
|
|
|
// save these to document
|
|
|
|
vector<TQString> langs; //0= origin, 1,.. translations
|
|
|
|
int cols,
|
|
|
|
lines;
|
|
|
|
int current_lesson;
|
|
|
|
vector<int> extraSizehints;
|
|
|
|
vector<int> sizehints;
|
|
|
|
TQString generator;
|
|
|
|
TQString queryorg,
|
|
|
|
querytrans;
|
|
|
|
vector<KEduVocExpression> vocabulary;
|
|
|
|
vector<bool> lessons_in_query;
|
|
|
|
vector<TQString> lesson_descr;
|
|
|
|
vector<TQString> type_descr;
|
|
|
|
vector<TQString> tense_descr;
|
|
|
|
vector<TQString> usage_descr;
|
|
|
|
TQString doctitle;
|
|
|
|
TQString author;
|
|
|
|
TQString license;
|
|
|
|
TQString doc_remark;
|
|
|
|
TQString doc_version;
|
|
|
|
|
|
|
|
vector<Article> articles;
|
|
|
|
vector<Conjugation> conjugations;
|
|
|
|
|
|
|
|
LeitnerSystem* leitnerSystem;
|
|
|
|
bool activeLeitnerSystem;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // KEDUVOCDOCUMENT_H
|