summaryrefslogtreecommitdiffstats
path: root/libtdeedu/tdeeduui/tdeeduglossary.h
diff options
context:
space:
mode:
Diffstat (limited to 'libtdeedu/tdeeduui/tdeeduglossary.h')
-rw-r--r--libtdeedu/tdeeduui/tdeeduglossary.h293
1 files changed, 293 insertions, 0 deletions
diff --git a/libtdeedu/tdeeduui/tdeeduglossary.h b/libtdeedu/tdeeduui/tdeeduglossary.h
new file mode 100644
index 00000000..e5d29ba0
--- /dev/null
+++ b/libtdeedu/tdeeduui/tdeeduglossary.h
@@ -0,0 +1,293 @@
+#ifndef KDEEDUGLOSSARY_H
+#define KDEEDUGLOSSARY_H
+/***************************************************************************
+
+ copyright : (C) 2005 by Carsten Niehaus
+ email : cniehaus@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+
+#include <khtml_part.h>
+#include <kdialogbase.h>
+
+class TQChar;
+class TQDomDocument;
+class TQListViewItem;
+class KListView;
+class KListViewSearchLine;
+class KActionCollection;
+class GlossaryItem;
+
+/**
+ * @class Glossary
+ * @author Carsten Niehaus
+ *
+ * This class stores all items to be displayed. It also
+ * has access-methods to the items
+ */
+class Glossary
+{
+ public:
+ Glossary();
+ virtual ~Glossary();
+
+ /**
+ * add the item @p item to the glossary
+ */
+ void addItem( GlossaryItem* item ){
+ m_itemlist.append( item );
+ }
+
+ TQValueList<GlossaryItem*> itemlist()const{
+ return m_itemlist;
+ }
+
+ /**
+ * clear the Glossary
+ */
+ void clear(){
+ m_itemlist.clear();
+ }
+
+ /**
+ * does this glossary have items?
+ */
+ bool isEmpty() const;
+
+ /**
+ * Every glossary can have a name. It will be
+ * set to @p name
+ */
+ void setName( const TQString& name ){
+ m_name = name;
+ }
+
+ /**
+ * @returns the name of the glossary
+ */
+ TQString name()const{
+ return m_name;
+ }
+
+ /**
+ * sets the internal list of items to @p list
+ */
+ void setItemlist( TQValueList<GlossaryItem*> list ){
+ m_itemlist = list;
+ }
+
+ /**
+ * Read a glossary from an XML file.
+ *
+ * @param url The path of the file to load
+ * @param path The path of the pictures. Will be used as m_picturepath
+ *
+ * @return a pointer to the loaded glossary. Even in case of
+ * error, this won't return 0 but an empty Glossary.
+ */
+ static Glossary* readFromXML( const KURL& url, const TQString& path = 0 );
+
+ /**
+ * Every glossaryitem can show pictures. [img src="foo.png]
+ * will look for the file foo.png in the path defined be
+ * @p path
+ */
+ void setPicturePath( const TQString& path ){
+ m_picturepath = path;
+ }
+
+ TQString picturePath()const{
+ return m_picturepath;
+ }
+
+ /**
+ * defines which picture to use as the background
+ * of the htmlview. The dialog
+ * will use the file specifiec by the @p filename
+ */
+ void setBackgroundPicture( const TQString& filename ){
+ m_backgroundpicture = filename;
+ }
+
+ /**
+ * @return the picuture used as the background in
+ * this background
+ */
+ TQString backgroundPicture()const{
+ return m_backgroundpicture;
+ }
+
+ private:
+ /**
+ * This methods parses the given xml-code. It will extract
+ * the information of the items and return them as a
+ * TQValueList<GlossaryItem*>
+ */
+ virtual TQValueList<GlossaryItem*> readItems( TQDomDocument &itemDocument );
+
+ TQString m_backgroundpicture;
+
+ /**
+ * replaces the [img]-pseudocode with valid html. The path where
+ * the pictures are stored will be used for pictures
+ */
+ void fixImagePath();
+
+ /**
+ * the path in which pictures of the glossary will be searched
+ */
+ TQString m_picturepath;
+
+ /**
+ * Load the tqlayout from an XML file.
+ *
+ * @param doc The TQDomDocument which will contain the read XML
+ * contents.
+ * @param url The path of the file to load
+ *
+ * @return a bool indicating whether the loading of the XML was
+ * successfull or not
+ */
+ bool loadLayout( TQDomDocument& doc, const KURL& url );
+
+ TQValueList<GlossaryItem*> m_itemlist;
+
+ /**
+ * the name of the glossary
+ */
+ TQString m_name;
+};
+
+/**
+ * @class GlossaryItem
+ * @author Carsten Niehaus
+ *
+ * A GlossaryItem stores the information of the content of
+ * the item and its name. Furthermore, every item can have
+ * a number of pictures or references associated to it.
+ * These are stored as TQStringLists.
+ */
+class GlossaryItem
+{
+ public:
+ GlossaryItem(){}
+ ~GlossaryItem(){}
+
+ void setName( const TQString& s ){
+ m_name = s;
+ }
+
+ void setDesc( const TQString& s){
+ m_desc = s;
+ }
+
+ void setRef( const TQStringList& s){
+ m_ref = s;
+ }
+
+ void setPictures( const TQString& s ){
+ m_pic = s;
+ }
+
+ TQString name() const {
+ return m_name;
+ }
+
+ TQString desc() const {
+ return m_desc;
+ }
+
+ TQStringList ref() const {
+ return m_ref;
+ }
+
+ TQStringList pictures() const {
+ return m_pic;
+ }
+
+ /**
+ * @return the formated HTML code for current item.
+ **/
+ TQString toHtml() const;
+
+ /**
+ * This method parses the references.
+ * @return the HTML code with the references as HTML links
+ */
+ TQString parseReferences() const;
+
+ private:
+ TQString m_name;
+ TQString m_desc;
+ TQStringList m_ref;
+ TQStringList m_pic;
+};
+
+/**
+ * @class GlossaryDialog
+ * @author Pino Toscano
+ * @author Carsten Niehaus
+ */
+class GlossaryDialog : public KDialogBase
+{
+ Q_OBJECT
+ TQ_OBJECT
+
+ public:
+ GlossaryDialog( bool folded = true, TQWidget *parent=0, const char *name=0);
+ ~GlossaryDialog();
+
+ void keyPressEvent(TQKeyEvent*);
+
+ /**
+ * add a new glossary
+ *
+ * @param newgloss the new glossary to add
+ */
+ void addGlossary( Glossary* newgloss );
+
+ private:
+ TQValueList<Glossary*> m_glossaries;
+
+ /**
+ * if true the items will be displayed folded
+ */
+ bool m_folded;
+
+ void updateTree();
+
+ KHTMLPart *m_htmlpart;
+ KListView *m_glosstree;
+ TQString m_htmlbasestring;
+
+ KActionCollection* m_actionCollection;
+
+ TQListViewItem* findTreeWithLetter( const TQChar&, TQListViewItem* );
+
+ KListViewSearchLine *m_search;
+
+ private slots:
+ void slotClicked( TQListViewItem * );
+ /**
+ * The user clicked on a href. Emit the corresponding item
+ */
+ void displayItem( const KURL& url, const KParts::URLArgs& args );
+
+ protected slots:
+ virtual void slotClose();
+
+ signals:
+ void closed();
+};
+
+#endif // KDEEDUGLOSSARY_H
+