summaryrefslogtreecommitdiffstats
path: root/libkdeedu/kdeeduui
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch)
treed3bb9f5d25a2dc09ca81adecf39621d871534297 /libkdeedu/kdeeduui
downloadtdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz
tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkdeedu/kdeeduui')
-rw-r--r--libkdeedu/kdeeduui/Makefile.am16
-rw-r--r--libkdeedu/kdeeduui/kdeeduglossary.cpp406
-rw-r--r--libkdeedu/kdeeduui/kdeeduglossary.h292
-rw-r--r--libkdeedu/kdeeduui/kdeeduui.kdevprj92
-rw-r--r--libkdeedu/kdeeduui/kedusimpleentrydlg.cpp3
-rw-r--r--libkdeedu/kdeeduui/kedusimpleentrydlg.h19
-rw-r--r--libkdeedu/kdeeduui/kedusimpleentrydlgForm.ui110
-rw-r--r--libkdeedu/kdeeduui/tests/Makefile.am11
-rw-r--r--libkdeedu/kdeeduui/tests/entrydialogs.cpp6
9 files changed, 955 insertions, 0 deletions
diff --git a/libkdeedu/kdeeduui/Makefile.am b/libkdeedu/kdeeduui/Makefile.am
new file mode 100644
index 00000000..52e27835
--- /dev/null
+++ b/libkdeedu/kdeeduui/Makefile.am
@@ -0,0 +1,16 @@
+INCLUDES= $(all_includes)
+SUBDIRS = . tests
+
+lib_LTLIBRARIES = libkdeeduui.la
+
+libkdeeduui_la_SOURCES = \
+ kedusimpleentrydlg.cpp kedusimpleentrydlgForm.ui kdeeduglossary.cpp
+
+libkdeeduuiincludedir = $(includedir)/libkdeedu
+libkdeeduuiinclude_HEADERS = kdeeduglossary.h
+
+libkdeeduui_la_LDFLAGS = $(all_libraries) -no-undefined -version-info 3:5:0
+libkdeeduui_la_LIBADD = $(LIB_KDECORE) $(LIB_KIO) $(LIB_KDEUI) $(LIB_KHTML)
+
+METASOURCES = AUTO
+
diff --git a/libkdeedu/kdeeduui/kdeeduglossary.cpp b/libkdeedu/kdeeduui/kdeeduglossary.cpp
new file mode 100644
index 00000000..5efb8a6d
--- /dev/null
+++ b/libkdeedu/kdeeduui/kdeeduglossary.cpp
@@ -0,0 +1,406 @@
+/***************************************************************************
+ * *
+ * 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 "kdeeduglossary.h"
+
+#include <kdebug.h>
+#include <klocale.h>
+#include <kiconloader.h>
+#include <khtml_part.h>
+#include <khtmlview.h>
+#include <kglobal.h>
+#include <klistview.h>
+#include <klistviewsearchline.h>
+#include <kstandarddirs.h>
+#include <kactioncollection.h>
+
+#include <qfile.h>
+#include <qlabel.h>
+#include <qheader.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qsplitter.h>
+#include <qstringlist.h>
+#include <qtoolbutton.h>
+
+Glossary::Glossary()
+{
+ // setting a generic name for a new glossary
+ m_name = i18n( "Glossary" );
+}
+
+Glossary::~Glossary()
+{
+}
+
+bool Glossary::loadLayout( QDomDocument &Document, const KURL& url )
+{
+ QFile layoutFile( url.path() );
+
+ if (!layoutFile.exists())
+ {
+ kdDebug() << "no such file: " << layoutFile.name() << endl;
+ return false;
+ }
+
+ if (!layoutFile.open(IO_ReadOnly))
+ return false;
+
+ ///Check if document is well-formed
+ if (!Document.setContent(&layoutFile))
+ {
+ kdDebug() << "wrong xml" << endl;
+ layoutFile.close();
+ return false;
+ }
+ layoutFile.close();
+
+ return true;
+}
+
+bool Glossary::isEmpty() const
+{
+ return m_itemlist.count() == 0;
+}
+
+
+Glossary* Glossary::readFromXML( const KURL& url, const QString& path )
+{
+ QDomDocument doc( "document" );
+
+ Glossary *glossary = new Glossary();
+
+ glossary->setPicturePath( path );
+
+ if ( glossary->loadLayout( doc, url ) )
+ {
+ QValueList<GlossaryItem*> itemList;
+ itemList = glossary->readItems( doc );
+ glossary->setItemlist( itemList );
+ glossary->fixImagePath();
+ }
+
+ return glossary;
+}
+
+void Glossary::fixImagePath()
+{
+ kdDebug() << "Glossary::fixImagePath()" << endl;
+ QValueList<GlossaryItem*>::iterator it = m_itemlist.begin();
+ const QValueList<GlossaryItem*>::iterator itEnd = m_itemlist.end();
+ QString path = m_picturepath;
+ QString firstpart = "<img src=\"";
+ firstpart += path;
+
+ for ( ; it != itEnd ; ++it )
+ {
+ ( *it )->setDesc( ( *it )->desc().replace("[img]", firstpart ) );
+ ( *it )->setDesc( ( *it )->desc().replace("[/img]", "\" />" ) );
+ }
+}
+
+QValueList<GlossaryItem*> Glossary::readItems( QDomDocument &itemDocument )
+{
+ QValueList<GlossaryItem*> list;
+
+ QDomNodeList itemList;
+ QDomNodeList refNodeList;
+ QDomElement itemElement;
+ QStringList reflist;
+
+ itemList = itemDocument.elementsByTagName( "item" );
+
+ const uint num = itemList.count();
+ for ( uint i = 0; i < num; ++i )
+ {
+ reflist.clear();
+ GlossaryItem *item = new GlossaryItem();
+
+ itemElement = ( const QDomElement& ) itemList.item( i ).toElement();
+
+ QDomNode nameNode = itemElement.namedItem( "name" );
+ QDomNode descNode = itemElement.namedItem( "desc" );
+
+ QString picName = itemElement.namedItem( "picture" ).toElement().text();
+ QDomElement refNode = ( const QDomElement& ) itemElement.namedItem( "references" ).toElement();
+
+ QString desc = i18n( descNode.toElement().text().utf8() );
+ if ( !picName.isEmpty() )
+ desc.prepend("[img]"+picName +"[/img]" );
+
+ item->setName( i18n( nameNode.toElement( ).text().utf8() ) );
+
+ item->setDesc( desc.replace("[b]", "<b>" ) );
+ item->setDesc( item->desc().replace("[/b]", "</b>" ) );
+ item->setDesc( item->desc().replace("[i]", "<i>" ) );
+ item->setDesc( item->desc().replace("[/i]", "</i>" ) );
+ item->setDesc( item->desc().replace("[sub]", "<sub>" ) );
+ item->setDesc( item->desc().replace("[/sub]", "</sub>" ) );
+ item->setDesc( item->desc().replace("[sup]", "<sup>" ) );
+ item->setDesc( item->desc().replace("[/sup]", "</sup>" ) );
+ item->setDesc( item->desc().replace("[br]", "<br />" ) );
+
+ refNodeList = refNode.elementsByTagName( "refitem" );
+ for ( uint it = 0; it < refNodeList.count(); it++ )
+ {
+ reflist << i18n( refNodeList.item( it ).toElement().text().utf8() );
+ }
+ reflist.sort();
+ item->setRef( reflist );
+
+ list.append( item );
+ }
+
+ return list;
+}
+
+
+
+GlossaryDialog::GlossaryDialog( bool folded, QWidget *parent, const char *name)
+ : KDialogBase( Plain, i18n( "Glossary" ), Close, NoDefault, parent, name, false )
+{
+ //this string will be used for all items. If a backgroundpicture should
+ //be used call Glossary::setBackgroundPicture().
+ m_htmlbasestring = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><body>" ;
+
+ m_folded = folded;
+
+ QVBoxLayout *vbox = new QVBoxLayout( plainPage(), 0, KDialog::spacingHint() );
+ vbox->activate();
+
+ QHBoxLayout *hbox = new QHBoxLayout( 0L, 0, KDialog::spacingHint() );
+ hbox->activate();
+
+ QToolButton *clear = new QToolButton( plainPage() );
+ clear->setIconSet( SmallIconSet( "locationbar_erase" ) );
+ hbox->addWidget( clear );
+
+ QLabel *lbl = new QLabel( plainPage() );
+ lbl->setText( i18n( "Search:" ) );
+ hbox->addWidget( lbl );
+
+ m_search = new KListViewSearchLine( plainPage(), 0, "search-line" );
+ hbox->addWidget( m_search );
+ vbox->addLayout( hbox );
+ setFocusProxy(m_search);
+
+ QSplitter *vs = new QSplitter( plainPage() );
+ vbox->addWidget( vs );
+
+ m_glosstree = new KListView( vs, "treeview" );
+ m_glosstree->addColumn( "entries" );
+ m_glosstree->header()->hide();
+ m_glosstree->setFullWidth( true );
+ m_glosstree->setRootIsDecorated( true );
+
+ m_search->setListView( m_glosstree );
+
+ m_htmlpart = new KHTMLPart( vs, "html-part" );
+
+ connect( m_htmlpart->browserExtension(), SIGNAL( openURLRequestDelayed( const KURL &, const KParts::URLArgs & ) ), this, SLOT( displayItem( const KURL &, const KParts::URLArgs & ) ) );
+ connect( m_glosstree, SIGNAL(clicked( QListViewItem * )), this, SLOT(slotClicked( QListViewItem * )));
+ connect( clear, SIGNAL(clicked()), m_search, SLOT(clear()));
+
+ resize( 600, 400 );
+}
+
+GlossaryDialog::~GlossaryDialog()
+{
+}
+
+void GlossaryDialog::keyPressEvent(QKeyEvent* e)
+{
+ if (e->key() == Qt::Key_Return) {
+ e->ignore();
+ }
+ KDialogBase::keyPressEvent(e);
+}
+
+void GlossaryDialog::displayItem( const KURL& url, const KParts::URLArgs& )
+{
+ // using the "host" part of a kurl as reference
+ QString myurl = url.host().lower();
+ m_search->setText( "" );
+ m_search->updateSearch( "" );
+ QListViewItem *found = 0;
+ QListViewItemIterator it( m_glosstree );
+ QListViewItem *item;
+ while ( it.current() )
+ {
+ item = it.current();
+ if ( item->text(0).lower() == myurl )
+ {
+ found = item;
+ break;
+ }
+ ++it;
+ }
+ if ( found )
+ {
+ m_glosstree->ensureItemVisible( found );
+ m_glosstree->setCurrentItem( found );
+ slotClicked( found );
+ }
+}
+
+void GlossaryDialog::updateTree()
+{
+ m_glosstree->clear();
+
+ QValueList<Glossary*>::const_iterator itGl = m_glossaries.begin();
+ const QValueList<Glossary*>::const_iterator itGlEnd = m_glossaries.end();
+
+ for ( ; itGl != itGlEnd ; ++itGl )
+ {
+ QValueList<GlossaryItem*> items = ( *itGl )->itemlist();
+ QValueList<GlossaryItem*>::iterator it = items.begin();
+ const QValueList<GlossaryItem*>::iterator itEnd = items.end();
+
+ QListViewItem *main = new QListViewItem( m_glosstree, ( *itGl )->name() );
+ main->setExpandable( true );
+ main->setSelectable( false );
+ //XXX TMP!!!
+ bool foldinsubtrees = m_folded;
+
+ for ( ; it != itEnd ; ++it )
+ {
+ if ( foldinsubtrees )
+ {
+ QChar thisletter = ( *it )->name().upper()[0];
+ QListViewItem *thisletteritem = findTreeWithLetter( thisletter, main );
+ if ( !thisletteritem )
+ {
+ thisletteritem = new QListViewItem( main, thisletter );
+ thisletteritem->setExpandable( true );
+ thisletteritem->setSelectable( false );
+ }
+ new QListViewItem( thisletteritem, ( *it )->name() );
+ }
+ else
+ new QListViewItem( main, ( *it )->name() );
+ }
+ main->sort();
+ }
+}
+
+void GlossaryDialog::addGlossary( Glossary* newgloss )
+{
+ if ( !newgloss ) return;
+ if ( newgloss->isEmpty() ) return;
+ m_glossaries.append( newgloss );
+
+ kdDebug() << "Count of the new glossary: " << newgloss->itemlist().count() << endl;
+ kdDebug() << "Number of glossaries: " << m_glossaries.count() << endl;
+
+ updateTree();
+}
+
+QListViewItem* GlossaryDialog::findTreeWithLetter( const QChar& l, QListViewItem* i )
+{
+ QListViewItem *it = i->firstChild();
+ while ( it )
+ {
+ if ( it->text(0)[0] == l )
+ return it;
+ it = it->nextSibling();
+ }
+ return 0;
+}
+
+void GlossaryDialog::slotClicked( QListViewItem *item )
+{
+ if ( !item )
+ return;
+
+ /**
+ * The next lines are searching for the correct KnowledgeItem
+ * in the m_itemList. When it is found the HTML will be
+ * generated
+ */
+ QValueList<Glossary*>::iterator itGl = m_glossaries.begin();
+ const QValueList<Glossary*>::iterator itGlEnd = m_glossaries.end();
+ bool found = false;
+ GlossaryItem *i = 0;
+
+ QString bg_picture;
+
+ while ( !found && itGl != itGlEnd )
+ {
+ QValueList<GlossaryItem*> items = ( *itGl )->itemlist();
+ QValueList<GlossaryItem*>::const_iterator it = items.begin();
+ const QValueList<GlossaryItem*>::const_iterator itEnd = items.end();
+ while ( !found && it != itEnd )
+ {
+ if ( ( *it )->name() == item->text( 0 ) )
+ {
+ i = *it;
+ bg_picture = ( *itGl )->backgroundPicture();
+ found = true;
+ }
+ ++it;
+ }
+ ++itGl;
+ }
+ if ( found && i )
+ {
+ QString html;
+ if ( !bg_picture.isEmpty() )
+ {
+ html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><body background=\"" ;
+ html.append( bg_picture );
+ html.append("\">");
+ }else
+ html = m_htmlbasestring;
+
+ html += i->toHtml() + "</body></html>";
+ m_htmlpart->begin();
+ m_htmlpart->write( html );
+
+ m_htmlpart->end();
+ return;
+ }
+}
+
+void GlossaryDialog::slotClose()
+{
+ emit closed();
+ accept();
+}
+
+QString GlossaryItem::toHtml() const
+{
+ QString code = "<h1>" + m_name + "</h1>" + m_desc;
+
+ if ( !m_ref.isEmpty() )
+ {
+ QString refcode = parseReferences();
+ code += refcode;
+ }
+ return code;
+}
+
+QString GlossaryItem::parseReferences() const
+{
+ QString htmlcode = "<h3>" + i18n( "References" ) + "</h3>";
+
+ bool first = true;
+ for ( uint i = 0; i < m_ref.size(); i++ )
+ {
+ if ( !first )
+ htmlcode += "<br>";
+ else
+ first = false;
+ htmlcode += QString( "<a href=\"item://%1\">%2</a>" ).arg( m_ref[i], m_ref[i] );
+ }
+
+ return htmlcode;
+}
+
+
+#include "kdeeduglossary.moc"
diff --git a/libkdeedu/kdeeduui/kdeeduglossary.h b/libkdeedu/kdeeduui/kdeeduglossary.h
new file mode 100644
index 00000000..418967f6
--- /dev/null
+++ b/libkdeedu/kdeeduui/kdeeduglossary.h
@@ -0,0 +1,292 @@
+#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 QChar;
+class QDomDocument;
+class QListViewItem;
+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 );
+ }
+
+ QValueList<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 QString& name ){
+ m_name = name;
+ }
+
+ /**
+ * @returns the name of the glossary
+ */
+ QString name()const{
+ return m_name;
+ }
+
+ /**
+ * sets the internal list of items to @p list
+ */
+ void setItemlist( QValueList<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 QString& 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 QString& path ){
+ m_picturepath = path;
+ }
+
+ QString 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 QString& filename ){
+ m_backgroundpicture = filename;
+ }
+
+ /**
+ * @return the picuture used as the background in
+ * this background
+ */
+ QString 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
+ * QValueList<GlossaryItem*>
+ */
+ virtual QValueList<GlossaryItem*> readItems( QDomDocument &itemDocument );
+
+ QString 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
+ */
+ QString m_picturepath;
+
+ /**
+ * Load the layout from an XML file.
+ *
+ * @param doc The QDomDocument 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( QDomDocument& doc, const KURL& url );
+
+ QValueList<GlossaryItem*> m_itemlist;
+
+ /**
+ * the name of the glossary
+ */
+ QString 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 QStringLists.
+ */
+class GlossaryItem
+{
+ public:
+ GlossaryItem(){}
+ ~GlossaryItem(){}
+
+ void setName( const QString& s ){
+ m_name = s;
+ }
+
+ void setDesc( const QString& s){
+ m_desc = s;
+ }
+
+ void setRef( const QStringList& s){
+ m_ref = s;
+ }
+
+ void setPictures( const QString& s ){
+ m_pic = s;
+ }
+
+ QString name() const {
+ return m_name;
+ }
+
+ QString desc() const {
+ return m_desc;
+ }
+
+ QStringList ref() const {
+ return m_ref;
+ }
+
+ QStringList pictures() const {
+ return m_pic;
+ }
+
+ /**
+ * @return the formated HTML code for current item.
+ **/
+ QString toHtml() const;
+
+ /**
+ * This method parses the references.
+ * @return the HTML code with the references as HTML links
+ */
+ QString parseReferences() const;
+
+ private:
+ QString m_name;
+ QString m_desc;
+ QStringList m_ref;
+ QStringList m_pic;
+};
+
+/**
+ * @class GlossaryDialog
+ * @author Pino Toscano
+ * @author Carsten Niehaus
+ */
+class GlossaryDialog : public KDialogBase
+{
+ Q_OBJECT
+
+ public:
+ GlossaryDialog( bool folded = true, QWidget *parent=0, const char *name=0);
+ ~GlossaryDialog();
+
+ void keyPressEvent(QKeyEvent*);
+
+ /**
+ * add a new glossary
+ *
+ * @param newgloss the new glossary to add
+ */
+ void addGlossary( Glossary* newgloss );
+
+ private:
+ QValueList<Glossary*> m_glossaries;
+
+ /**
+ * if true the items will be displayed folded
+ */
+ bool m_folded;
+
+ void updateTree();
+
+ KHTMLPart *m_htmlpart;
+ KListView *m_glosstree;
+ QString m_htmlbasestring;
+
+ KActionCollection* m_actionCollection;
+
+ QListViewItem* findTreeWithLetter( const QChar&, QListViewItem* );
+
+ KListViewSearchLine *m_search;
+
+ private slots:
+ void slotClicked( QListViewItem * );
+ /**
+ * 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
+
diff --git a/libkdeedu/kdeeduui/kdeeduui.kdevprj b/libkdeedu/kdeeduui/kdeeduui.kdevprj
new file mode 100644
index 00000000..4fac1672
--- /dev/null
+++ b/libkdeedu/kdeeduui/kdeeduui.kdevprj
@@ -0,0 +1,92 @@
+[./Makefile.am]
+files=./kdeeduui.kdevprj,
+sub_dirs=
+type=normal
+
+[./kdeeduui.kdevprj]
+dist=true
+install=false
+install_location=
+type=DATA
+
+[Config for BinMakefileAm]
+addcxxflags=
+bin_program=kdeeduui
+cflags=
+cppflags=
+cxxflags=\s-O0
+ldadd=
+ldflags=\s \s
+libtool_dir=
+path_to_bin_program=.
+
+[General]
+author=earnold
+configure_args=\s--build=i386-linux --host=i386-linux --target=i386-linux\s
+dir_where_make_will_be_called=\s
+email=earnold@venus
+kdevprj_version=1.3
+lfv_open_groups=Others
+make_options=\s-j1 all\s
+makefiles=./Makefile.am,Makefile.am,tests/Makefile.am
+modifyMakefiles=false
+project_name=kdeeduui
+project_type=normal_empty
+short_info=
+sub_dir=
+version=1.0
+version_control=CVS
+workspace=1
+
+[LFV Groups]
+GNU=AUTHORS,COPYING,ChangeLog,INSTALL,README,TODO,NEWS,
+Headers=*.h,*.hxx,*.hpp,*.H,
+Others=*,
+Sources=*.cpp,*.c,*.cc,*.C,*.cxx,*.ec,*.ecpp,*.lxx,*.l++,*.ll,*.l,
+Translations=*.ts,*.po,
+User Interface=*.ui,*.kdevdlg,*.rc,
+groups=Headers,Sources,GNU,Translations,User Interface,Others
+
+[Makefile.am]
+dist=true
+files=Makefile.am,kedusimpleentrydlg.h,kedusimpleentrydlgForm.ui,kedusimpleentrydlg.cpp
+install=false
+install_location=
+sharedlib_LDFLAGS=-version-info 0:0:0
+sharedlib_rootname=.
+sub_dirs=tests
+type=static_library
+
+[kedusimpleentrydlg.cpp]
+dist=true
+install=false
+install_location=
+type=SOURCE
+
+[kedusimpleentrydlg.h]
+dist=true
+install=false
+install_location=
+type=HEADER
+
+[kedusimpleentrydlgForm.ui]
+dist=true
+install=false
+install_location=
+type=SOURCE
+
+[tests/Makefile.am]
+dist=true
+files=tests/entrydialogs.cpp,tests/Makefile.am
+install=false
+install_location=
+sharedlib_LDFLAGS=-version-info 0:0:0
+sharedlib_rootname=tests
+sub_dirs=
+type=DATA
+
+[tests/entrydialogs.cpp]
+dist=true
+install=false
+install_location=
+type=SOURCE
diff --git a/libkdeedu/kdeeduui/kedusimpleentrydlg.cpp b/libkdeedu/kdeeduui/kedusimpleentrydlg.cpp
new file mode 100644
index 00000000..89f8412c
--- /dev/null
+++ b/libkdeedu/kdeeduui/kedusimpleentrydlg.cpp
@@ -0,0 +1,3 @@
+#include "kedusimpleentrydlg.h"
+
+#include "kedusimpleentrydlg.moc"
diff --git a/libkdeedu/kdeeduui/kedusimpleentrydlg.h b/libkdeedu/kdeeduui/kedusimpleentrydlg.h
new file mode 100644
index 00000000..f110fab6
--- /dev/null
+++ b/libkdeedu/kdeeduui/kedusimpleentrydlg.h
@@ -0,0 +1,19 @@
+#ifndef kedusimpleentrydlg_included
+#define kedusimpleentrydlg_included
+
+
+#include "kedusimpleentrydlgForm.h"
+
+class KEduSimpleEntryDlg : public KEduSimpleEntryDlgForm
+{
+ Q_OBJECT
+
+ public:
+
+
+
+
+
+};
+
+#endif // kedusimpleentrydlg_included
diff --git a/libkdeedu/kdeeduui/kedusimpleentrydlgForm.ui b/libkdeedu/kdeeduui/kedusimpleentrydlgForm.ui
new file mode 100644
index 00000000..32fa6b68
--- /dev/null
+++ b/libkdeedu/kdeeduui/kedusimpleentrydlgForm.ui
@@ -0,0 +1,110 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>KEduSimpleEntryDlgForm</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>Simple_entry_dialog</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>592</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Simple Entry Dialog</string>
+ </property>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>e_original</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>80</y>
+ <width>511</width>
+ <height>40</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>e_translation</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>180</y>
+ <width>511</width>
+ <height>40</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButton1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>50</x>
+ <y>360</y>
+ <width>91</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>&amp;OK</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>PushButton1_2</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>460</x>
+ <y>360</y>
+ <width>91</width>
+ <height>41</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>C&amp;ancel</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>50</y>
+ <width>171</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Original:</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>TextLabel1_2</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>40</x>
+ <y>150</y>
+ <width>171</width>
+ <height>21</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Translation:</string>
+ </property>
+ </widget>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/libkdeedu/kdeeduui/tests/Makefile.am b/libkdeedu/kdeeduui/tests/Makefile.am
new file mode 100644
index 00000000..daaafa3c
--- /dev/null
+++ b/libkdeedu/kdeeduui/tests/Makefile.am
@@ -0,0 +1,11 @@
+SUBDIRS = .
+INCLUDES = -I. -I$(top_srcdir)/kdeeduui $(all_includes)
+
+check_PROGRAMS = entrydialogs
+
+#all: check
+
+entrydialogs_SOURCES = entrydialogs.cpp
+entrydialogs_LDADD = ../libkdeeduui.la
+entrydialogs_LDFLAGS = $(all_libraries)
+
diff --git a/libkdeedu/kdeeduui/tests/entrydialogs.cpp b/libkdeedu/kdeeduui/tests/entrydialogs.cpp
new file mode 100644
index 00000000..781b32e1
--- /dev/null
+++ b/libkdeedu/kdeeduui/tests/entrydialogs.cpp
@@ -0,0 +1,6 @@
+
+int main()
+{
+
+ return 0;
+} \ No newline at end of file