summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/tinykate/libkate/document/katedocument.cpp23
-rw-r--r--noncore/apps/tinykate/libkate/document/katedocument.h4
-rw-r--r--noncore/apps/tinykate/libkate/document/katehighlight.cpp36
-rw-r--r--noncore/apps/tinykate/libkate/document/katehighlight.h8
-rw-r--r--noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp12
-rw-r--r--noncore/apps/tinykate/libkate/interfaces/document.h6
-rw-r--r--noncore/apps/tinykate/libkate/interfaces/view.h6
-rw-r--r--noncore/apps/tinykate/libkate/kateconfig.cpp634
-rw-r--r--noncore/apps/tinykate/libkate/kateconfig.h117
-rw-r--r--noncore/apps/tinykate/libkate/libkate.pro9
-rw-r--r--noncore/apps/tinykate/libkate/microkde/kconfig.cpp181
-rw-r--r--noncore/apps/tinykate/libkate/microkde/kconfig.h51
-rw-r--r--noncore/apps/tinykate/libkate/microkde/kglobal.cpp6
-rw-r--r--noncore/apps/tinykate/libkate/microkde/kglobal.h6
-rw-r--r--noncore/apps/tinykate/libkate/view/kateview.cpp18
-rw-r--r--noncore/apps/tinykate/libkate/view/kateview.h9
-rw-r--r--noncore/apps/tinykate/tinykate.cpp10
-rw-r--r--noncore/apps/tinykate/tinykate.h3
-rw-r--r--noncore/apps/tinykate/tinykate.pro4
19 files changed, 835 insertions, 308 deletions
diff --git a/noncore/apps/tinykate/libkate/document/katedocument.cpp b/noncore/apps/tinykate/libkate/document/katedocument.cpp
index df1de8d..6807544 100644
--- a/noncore/apps/tinykate/libkate/document/katedocument.cpp
+++ b/noncore/apps/tinykate/libkate/document/katedocument.cpp
@@ -271,24 +271,25 @@ void KateDocument::doPreHighlight()
till = max;
}
PreHighlightedTill = till;
updateLines(from,till);
emit preHighlightChanged(PreHighlightedTill);
if (PreHighlightedTill<RequestPreHighlightTill)
QTimer::singleShot(10,this,SLOT(doPreHighlight()));
}
KateDocument::~KateDocument()
{
m_highlight->release();
+ writeConfig();
if ( !m_bSingleViewMode )
{
m_views.setAutoDelete( true );
m_views.clear();
m_views.setAutoDelete( false );
}
delete_d(this);
}
void KateDocument::openURL(const QString &filename)
{
@@ -587,77 +588,75 @@ void KateDocument::setModified(bool m) {
emit static_cast<KateView *>( view )->newStatus();
}
emit modifiedChanged ();
}
}
bool KateDocument::isModified() const {
return modified;
}
void KateDocument::readConfig()
{
- KConfig *config = KGlobal::config();
+ KateConfig *config = KGlobal::config();
config->setGroup("Kate Document");
myWordWrap = config->readBoolEntry("Word Wrap On", false);
myWordWrapAt = config->readNumEntry("Word Wrap At", 80);
if (myWordWrap)
wrapText (myWordWrapAt);
setTabWidth(config->readNumEntry("TabWidth", 8));
setUndoSteps(config->readNumEntry("UndoSteps", 50));
m_singleSelection = config->readBoolEntry("SingleSelection", false);
myEncoding = config->readEntry("Encoding", QString::fromLatin1(QTextCodec::codecForLocale()->name()));
- setFont (config->readFontEntry("Font", &myFont));
+ setFont (config->readFontEntry("Font", myFont));
- colors[0] = config->readColorEntry("Color Background", &colors[0]);
- colors[1] = config->readColorEntry("Color Selected", &colors[1]);
+ colors[0] = config->readColorEntry("Color Background", colors[0]);
+ colors[1] = config->readColorEntry("Color Selected", colors[1]);
- config->sync();
+// config->sync();
}
void KateDocument::writeConfig()
{
- KConfig *config = KGlobal::config();
+ KateConfig *config = KGlobal::config();
config->setGroup("Kate Document");
-#if 0
- cofig->writeEntry("Word Wrap On", myWordWrap);
+ config->writeEntry("Word Wrap On", myWordWrap);
config->writeEntry("Word Wrap At", myWordWrapAt);
config->writeEntry("TabWidth", tabChars);
config->writeEntry("UndoSteps", undoSteps);
config->writeEntry("SingleSelection", m_singleSelection);
config->writeEntry("Encoding", myEncoding);
config->writeEntry("Font", myFont);
config->writeEntry("Color Background", colors[0]);
config->writeEntry("Color Selected", colors[1]);
-#endif
- config->sync();
+// config->sync();
}
-void KateDocument::readSessionConfig(KConfig *config)
+void KateDocument::readSessionConfig(KateConfig *config)
{
m_url = config->readEntry("URL"); // ### doesn't this break the encoding? (Simon)
setHighlight(hlManager->nameFind(config->readEntry("Highlight")));
// anders: restore bookmarks if possible
QValueList<int> l = config->readIntListEntry("Bookmarks");
if ( l.count() ) {
for (uint i=0; i < l.count(); i++) {
if ( numLines() < l[i] ) break;
getTextLine( l[i] )->addMark( Bookmark );
}
}
}
-void KateDocument::writeSessionConfig(KConfig *config)
+void KateDocument::writeSessionConfig(KateConfig *config)
{
#if 0
config->writeEntry("URL", m_url); // ### encoding?? (Simon)
config->writeEntry("Highlight", m_highlight->name());
// anders: save bookmarks
QList<Kate::Mark> l = marks();
QValueList<int> ml;
for (uint i=0; i < l.count(); i++) {
if ( l.at(i)->type == 1) // only save bookmarks
ml << l.at(i)->line;
}
if ( ml.count() )
diff --git a/noncore/apps/tinykate/libkate/document/katedocument.h b/noncore/apps/tinykate/libkate/document/katedocument.h
index 356541f..9d8ec6a 100644
--- a/noncore/apps/tinykate/libkate/document/katedocument.h
+++ b/noncore/apps/tinykate/libkate/document/katedocument.h
@@ -220,26 +220,26 @@ class KateDocument: public Kate::Document
bool isReadOnly() const;
void setNewDoc( bool );
bool isNewDoc() const;
virtual void setReadWrite( bool ){};
virtual bool isReadWrite() const {return true;}
virtual void setModified(bool);
virtual bool isModified() const;
void setSingleSelection(bool ss) {m_singleSelection = ss;}
bool singleSelection() {return m_singleSelection;}
void readConfig();
void writeConfig();
- void readSessionConfig(KConfig *);
- void writeSessionConfig(KConfig *);
+ void readSessionConfig(KateConfig *);
+ void writeSessionConfig(KateConfig *);
bool hasBrowserExtension() const { return m_bBrowserView; }
protected:
bool m_bBrowserView;
signals:
void selectionChanged();
void highlightChanged();
void modifiedChanged ();
void preHighlightChanged(long);
diff --git a/noncore/apps/tinykate/libkate/document/katehighlight.cpp b/noncore/apps/tinykate/libkate/document/katehighlight.cpp
index 797968b..0d2c283 100644
--- a/noncore/apps/tinykate/libkate/document/katehighlight.cpp
+++ b/noncore/apps/tinykate/libkate/document/katehighlight.cpp
@@ -640,89 +640,89 @@ int Highlight::doHighlight(int ctxNum, TextLine *textLine)
lastChar = *s1;
s1++;
z++;
}
//set "end of line"-properties
textLine->setAttr(context->attr);
//return new context
return context->ctx;
}
-KConfig *Highlight::getKConfig() {
- KConfig *config;
+KateConfig *Highlight::getKateConfig() {
+ KateConfig *config;
config=KGlobal::config();
config->setGroup(iName + QString(" Highlight"));
return config;
}
QString Highlight::getWildcards() {
- KConfig *config;
+ KateConfig *config;
- config = getKConfig();
+ config = getKateConfig();
//if wildcards not yet in config, then use iWildCards as default
return config->readEntry("Wildcards", iWildcards);
}
QString Highlight::getMimetypes() {
- KConfig *config;
+ KateConfig *config;
- config = getKConfig();
+ config = getKateConfig();
return config->readEntry("Mimetypes", iMimetypes);
}
HlData *Highlight::getData() {
- KConfig *config;
+ KateConfig *config;
HlData *hlData;
- config = getKConfig();
+ config = getKateConfig();
// iWildcards = config->readEntry("Wildcards");
// iMimetypes = config->readEntry("Mimetypes");
// hlData = new HlData(iWildcards,iMimetypes);
hlData = new HlData(
config->readEntry("Wildcards", iWildcards),
config->readEntry("Mimetypes", iMimetypes),
config->readEntry("Identifier", identifier));
getItemDataList(hlData->itemDataList, config);
return hlData;
}
void Highlight::setData(HlData *hlData) {
- KConfig *config;
+ KateConfig *config;
- config = getKConfig();
+ config = getKateConfig();
// iWildcards = hlData->wildcards;
// iMimetypes = hlData->mimetypes;
config->writeEntry("Wildcards",hlData->wildcards);
config->writeEntry("Mimetypes",hlData->mimetypes);
setItemDataList(hlData->itemDataList,config);
}
void Highlight::getItemDataList(ItemDataList &list) {
- KConfig *config;
+ KateConfig *config;
- config = getKConfig();
+ config = getKateConfig();
getItemDataList(list, config);
}
-void Highlight::getItemDataList(ItemDataList &list, KConfig *config) {
+void Highlight::getItemDataList(ItemDataList &list, KateConfig *config) {
ItemData *p;
QString s;
QRgb col, selCol;
list.clear();
//JW list.setAutoDelete(true);
createItemData(list);
for (p = list.first(); p != 0L; p = list.next()) {
s = config->readEntry(p->name);
if (!s.isEmpty()) {
sscanf(s.latin1(),"%d,%X,%X,%d,%d", &p->defStyle,&col,&selCol,&p->bold,&p->italic);
@@ -730,34 +730,34 @@ void Highlight::getItemDataList(ItemDataList &list, KConfig *config) {
p->selCol.setRgb(selCol);
}
}
}
/*******************************************************************************************
Highlight - setItemDataList
saves the ItemData / attribute / style definitions to the apps configfile.
Especially needed for user overridden values.
* input: ItemDataList &list :reference to the list, whose
* items should be saved
- * KConfig *config :Pointer KDE configuration
+ * KateConfig *config :Pointer KDE configuration
* class, which should be used
* as storage
*************
* output: none
*************
* return value: none
*******************************************************************************************/
-void Highlight::setItemDataList(ItemDataList &list, KConfig *config) {
+void Highlight::setItemDataList(ItemDataList &list, KateConfig *config) {
ItemData *p;
QString s;
for (p = list.first(); p != 0L; p = list.next()) {
s.sprintf("%d,%X,%X,%d,%d",
p->defStyle,p->col.rgb(),p->selCol.rgb(),p->bold,p->italic);
config->writeEntry(p->name,s);
}
}
/*******************************************************************************************
@@ -1257,25 +1257,25 @@ HlManager *HlManager::self()
{
if ( !s_pSelf )
s_pSelf = new HlManager;
return s_pSelf;
}
Highlight *HlManager::getHl(int n) {
if (n < 0 || n >= (int) hlList.count()) n = 0;
return hlList.at(n);
}
int HlManager::defaultHl() {
- KConfig *config;
+ KateConfig *config;
config = KGlobal::config();
config->setGroup("General Options");
#warning fixme return nameFind(config->readEntry("Highlight"));
}
int HlManager::nameFind(const QString &name) {
int z;
for (z = hlList.count() - 1; z > 0; z--) {
@@ -1365,25 +1365,25 @@ QString HlManager::defaultStyleName(int n)
names << i18n("Base-N Integer");
names << i18n("Floating Point");
names << i18n("Character");
names << i18n("String");
names << i18n("Comment");
names << i18n("Others");
}
return names[n];
}
void HlManager::getDefaults(ItemStyleList &list) {
- KConfig *config;
+ KateConfig *config;
int z;
ItemStyle *i;
QString s;
QRgb col, selCol;
list.setAutoDelete(true);
//ItemStyle(color, selected color, bold, italic)
list.append(new ItemStyle(black,white,false,false)); //normal
list.append(new ItemStyle(black,white,true,false)); //keyword
list.append(new ItemStyle(darkRed,white,false,false)); //datatype
list.append(new ItemStyle(blue,cyan,false,false)); //decimal/value
list.append(new ItemStyle(darkCyan,cyan,false,false)); //base n
@@ -1401,25 +1401,25 @@ void HlManager::getDefaults(ItemStyleList &list) {
i = list.at(z);
s = config->readEntry(defaultStyleName(z));
if (!s.isEmpty()) {
sscanf(s.latin1(),"%X,%X,%d,%d",&col,&selCol,&i->bold,&i->italic);
i->col.setRgb(col);
i->selCol.setRgb(selCol);
}
}
*/
}
void HlManager::setDefaults(ItemStyleList &list) {
- KConfig *config;
+ KateConfig *config;
int z;
ItemStyle *i;
char s[64];
#warning fixme
/*
config = KateFactory::instance()->config();
config->setGroup("Default Item Styles");
for (z = 0; z < defaultStyles(); z++) {
i = list.at(z);
sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic);
config->writeEntry(defaultStyleName(z),s);
}
diff --git a/noncore/apps/tinykate/libkate/document/katehighlight.h b/noncore/apps/tinykate/libkate/document/katehighlight.h
index 1baddcc..fddf585 100644
--- a/noncore/apps/tinykate/libkate/document/katehighlight.h
+++ b/noncore/apps/tinykate/libkate/document/katehighlight.h
@@ -227,54 +227,54 @@ typedef QList<ItemData> ItemDataList;
class HlData {
public:
HlData(const QString &wildcards, const QString &mimetypes,const QString &identifier);
ItemDataList itemDataList;
QString wildcards;
QString mimetypes;
QString identifier;
};
typedef QList<HlData> HlDataList;
class HlManager;
-class KConfig;
+class KateConfig;
//context
class HlContext {
public:
HlContext(int attribute, int lineEndContext,int _lineBeginContext);
QList<HlItem> items;
int attr;
int ctx;
int lineBeginContext;
};
class Highlight
{
friend class HlManager;
public:
Highlight(syntaxModeListItem *def);
~Highlight();
int doHighlight(int ctxNum, TextLine *);
- KConfig *getKConfig();
+ KateConfig *getKateConfig();
QString getWildcards();
QString getMimetypes();
HlData *getData();
void setData(HlData *);
void getItemDataList(ItemDataList &);
- void getItemDataList(ItemDataList &, KConfig *);
- void setItemDataList(ItemDataList &, KConfig *);
+ void getItemDataList(ItemDataList &, KateConfig *);
+ void setItemDataList(ItemDataList &, KateConfig *);
QString name() {return iName;}
QString section() {return iSection;}
void use();
void release();
bool isInWord(QChar c);
QString getCommentStart() {return cmlStart;};
QString getCommentEnd() {return cmlEnd;};
QString getCommentSingleLineStart() { return cslStart;};
protected:
void init();
diff --git a/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp b/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp
index e45daa4..844f27d 100644
--- a/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp
+++ b/noncore/apps/tinykate/libkate/document/katesyntaxdocument.cpp
@@ -7,31 +7,31 @@
***************************************************************************/
/***************************************************************************
* *
* 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 "katesyntaxdocument.h"
+#include <kateconfig.h>
#include <qfile.h>
#include <kdebug.h>
#include <kstddirs.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <qstringlist.h>
-#include <kconfig.h>
#include <kglobal.h>
#include <qpe/qpeapplication.h>
#include <qdir.h>
SyntaxDocument::SyntaxDocument()
{
m_root=0;
currentFile="";
setupModeList();
}
void SyntaxDocument::setIdentifier(const QString& identifier)
@@ -42,37 +42,36 @@ void SyntaxDocument::setIdentifier(const QString& identifier)
}
SyntaxDocument::~SyntaxDocument()
{
}
void SyntaxDocument::setupModeList(bool force)
{
if (myModeList.count() > 0) return;
- KConfig *config=KGlobal::config();
+ KateConfig *config=KGlobal::config();
KStandardDirs *dirs = KGlobal::dirs();
// QStringList list=dirs->findAllResources("data","kate/syntax/*.xml",false,true);
QString path=QPEApplication::qpeDir() +"share/tinykate/syntax/";
QDir dir(path);
QStringList list=dir.entryList("*.xml");
for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
{
QString Group="Highlighting_Cache"+path+*it;
-
if ((config->hasGroup(Group)) && (!force))
{
config->setGroup(Group);
syntaxModeListItem *mli=new syntaxModeListItem;
mli->name = config->readEntry("name","");
mli->section = config->readEntry("section","");
mli->mimetype = config->readEntry("mimetype","");
mli->extension = config->readEntry("extension","");
mli->identifier = *it;
myModeList.append(mli);
}
else
@@ -87,39 +86,34 @@ void SyntaxDocument::setupModeList(bool force)
if (e->tagName()=="language")
{
syntaxModeListItem *mli=new syntaxModeListItem;
mli->name = e->attribute("name");
mli->section = e->attribute("section");
mli->mimetype = e->attribute("mimetype");
mli->extension = e->attribute("extensions");
qDebug(QString("valid description for: %1/%2").arg(mli->section).arg(mli->name));
if (mli->section.isEmpty())
mli->section=i18n("Other");
mli->identifier = path+(*it);
-#warning fixme
-/*
config->setGroup(Group);
config->writeEntry("name",mli->name);
config->writeEntry("section",mli->section);
config->writeEntry("mimetype",mli->mimetype);
config->writeEntry("extension",mli->extension);
-*/
myModeList.append(mli);
}
}
- }
}
-// }
-
+ }
// config->sync();
}
SyntaxModeList SyntaxDocument::modeList()
{
return myModeList;
}
bool SyntaxDocument::nextGroup( syntaxContextData* data)
{
if(!data) return false;
diff --git a/noncore/apps/tinykate/libkate/interfaces/document.h b/noncore/apps/tinykate/libkate/interfaces/document.h
index cbfd1b3..af885f1 100644
--- a/noncore/apps/tinykate/libkate/interfaces/document.h
+++ b/noncore/apps/tinykate/libkate/interfaces/document.h
@@ -21,25 +21,25 @@
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
***************************************************************************/
#ifndef _KATE_DOCUMENT_INCLUDE_
#define _KATE_DOCUMENT_INCLUDE_
#include <ktexteditor.h>
-class KConfig;
+class KateConfig;
namespace Kate
{
/** internal class for document bookmarks. */
class Mark
{
public:
uint line;
uint type;
};
@@ -54,28 +54,28 @@ class Document : public KTextEditor::Document
virtual ~Document ();
public:
/** Read document config.
*/
virtual void readConfig () { ; };
/** Save document config.
*/
virtual void writeConfig () { ; };
/** Read document session config.
*/
- virtual void readSessionConfig (KConfig *) { ; };
+ virtual void readSessionConfig (KateConfig *) { ; };
/** Save document session config.
*/
- virtual void writeSessionConfig (KConfig *) { ; };
+ virtual void writeSessionConfig (KateConfig *) { ; };
/** Returns the document ID.
*/
virtual uint docID () { return 0L; };
/** Defines possible mark types. A line can have marks of different types.
*/
enum marks
{
Bookmark = 1,
Breakpoint = 2,
markType0 = 4,
diff --git a/noncore/apps/tinykate/libkate/interfaces/view.h b/noncore/apps/tinykate/libkate/interfaces/view.h
index 5b24bb5..5846395 100644
--- a/noncore/apps/tinykate/libkate/interfaces/view.h
+++ b/noncore/apps/tinykate/libkate/interfaces/view.h
@@ -21,25 +21,25 @@
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
***************************************************************************/
#ifndef _KATE_VIEW_INCLUDE_
#define _KATE_VIEW_INCLUDE_
#include <ktexteditor.h>
-class KConfig;
+class KateConfig;
namespace Kate
{
class Document;
class Mark;
/** This interface provides access to the view.
*/
class View : public KTextEditor::View
{
Q_OBJECT
@@ -70,26 +70,26 @@ class View : public KTextEditor::View
// undo/redo stuff
virtual void undo () { ; };
virtual void redo () { ; };
virtual void undoHistory() { ; };
public:
// read/save config of the view
virtual void readConfig () { ; };
virtual void writeConfig () { ; };
// read/save sessionconfig of the view
- virtual void readSessionConfig (KConfig *) { ; };
- virtual void writeSessionConfig (KConfig *) { ; };
+ virtual void readSessionConfig (KateConfig *) { ; };
+ virtual void writeSessionConfig (KateConfig *) { ; };
public slots:
// some simply key commands
virtual void keyReturn () { ; };
virtual void keyDelete () { ; };
virtual void backspace () { ; };
virtual void killLine () { ; };
// move cursor in the view
virtual void cursorLeft () { ; };
virtual void shiftCursorLeft () { ; };
virtual void cursorRight () { ; };
diff --git a/noncore/apps/tinykate/libkate/kateconfig.cpp b/noncore/apps/tinykate/libkate/kateconfig.cpp
new file mode 100644
index 0000000..06ac49f
--- a/dev/null
+++ b/noncore/apps/tinykate/libkate/kateconfig.cpp
@@ -0,0 +1,634 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include <qdir.h>
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qmessagebox.h>
+#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
+#include <qtextcodec.h>
+#endif
+#include <qtextstream.h>
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define QTOPIA_INTERNAL_LANGLIST
+#include "kateconfig.h"
+#include <qpe/global.h>
+
+
+/*!
+ \internal
+*/
+QString KateConfig::configFilename(const QString& name, Domain d)
+{
+ switch (d) {
+ case File:
+ return name;
+ case User: {
+ QDir dir = (QString(getenv("HOME")) + "/Settings");
+ if ( !dir.exists() )
+ mkdir(dir.path().local8Bit(),0700);
+ return dir.path() + "/" + name + ".conf";
+ }
+ }
+ return name;
+}
+
+/*!
+ \class KateConfig config.h
+ \brief The KateConfig class provides for saving application cofniguration state.
+
+ You should keep a KateConfig in existence only while you do not want others
+ to be able to change the state. There is no locking currently, but there
+ may be in the future.
+*/
+
+/*!
+ \enum KateConfig::KateConfigGroup
+ \internal
+*/
+
+/*!
+ \enum KateConfig::Domain
+
+ \value File
+ \value User
+
+ See KateConfig for details.
+*/
+
+/*!
+ Constructs a config that will load or create a configuration with the
+ given \a name in the given \a domain.
+
+ You must call setGroup() before doing much else with the KateConfig.
+
+ In the default Domain, \e User,
+ the configuration is user-specific. \a name should not contain "/" in
+ this case, and in general should be the name of the C++ class that is
+ primarily responsible for maintaining the configuration.
+
+ In the File Domain, \a name is an absolute filename.
+*/
+KateConfig::KateConfig( const QString &name, Domain domain )
+ : filename( configFilename(name,domain) )
+{
+ qWarning("KateConfig constructor\n");
+ git = groups.end();
+ read();
+ QStringList l = Global::languageList();
+ lang = l[0];
+ glang = l[1];
+}
+
+
+// Sharp ROM compatibility
+KateConfig::KateConfig ( const QString &name, bool what )
+ : filename( configFilename(name,what ? User : File) )
+{
+ git = groups.end();
+ read();
+ QStringList l = Global::languageList();
+ lang = l[0];
+ glang = l[1];
+}
+
+/*!
+ Writes any changes to disk and destroys the in-memory object.
+*/
+KateConfig::~KateConfig()
+{
+ qWarning("KateConfig destructor\n");
+ if ( changed )
+ write();
+}
+
+/*!
+ Returns whether the current group has an entry called \a key.
+*/
+bool KateConfig::hasKey( const QString &key ) const
+{
+ if ( groups.end() == git )
+ return FALSE;
+ KateConfigGroup::ConstIterator it = ( *git ).find( key );
+ return it != ( *git ).end();
+}
+
+/*!
+ Sets the current group for subsequent reading and writing of
+ entries to \a gname. Grouping allows the application to partition the namespace.
+
+ This function must be called prior to any reading or writing
+ of entries.
+
+ The \a gname must not be empty.
+*/
+void KateConfig::setGroup( const QString &gname )
+{
+ QMap< QString, KateConfigGroup>::Iterator it = groups.find( gname );
+ if ( it == groups.end() ) {
+ git = groups.insert( gname, KateConfigGroup() );
+ changed = TRUE;
+ return;
+ }
+ git = it;
+}
+
+/*!
+ Writes a (\a key, \a value) entry to the current group.
+
+ \sa readEntry()
+*/
+void KateConfig::writeEntry( const QString &key, const char* value )
+{
+ writeEntry(key,QString(value));
+}
+
+/*!
+ Writes a (\a key, \a value) entry to the current group.
+
+ \sa readEntry()
+*/
+void KateConfig::writeEntry( const QString &key, const QString &value )
+{
+ if ( git == groups.end() ) {
+ qWarning( "no group set" );
+ return;
+ }
+ if ( (*git)[key] != value ) {
+ ( *git ).insert( key, value );
+ changed = TRUE;
+ }
+}
+
+/*
+ Note that the degree of protection offered by the encryption here is
+ only sufficient to avoid the most casual observation of the configuration
+ files. People with access to the files can write down the contents and
+ decrypt it using this source code.
+
+ Conceivably, and at some burden to the user, this encryption could
+ be improved.
+*/
+static QString encipher(const QString& plain)
+{
+ // mainly, we make it long
+ QString cipher;
+ int mix=28730492;
+ for (int i=0; i<(int)plain.length(); i++) {
+ int u = plain[i].unicode();
+ int c = u ^ mix;
+ QString x = QString::number(c,36);
+ cipher.append(QChar('a'+x.length()));
+ cipher.append(x);
+ mix *= u;
+ }
+ return cipher;
+}
+
+static QString decipher(const QString& cipher)
+{
+ QString plain;
+ int mix=28730492;
+ for (int i=0; i<(int)cipher.length();) {
+ int l = cipher[i].unicode()-'a';
+ QString x = cipher.mid(i+1,l); i+=l+1;
+ int u = x.toInt(0,36) ^ mix;
+ plain.append(QChar(u));
+ mix *= u;
+ }
+ return plain;
+}
+
+/*!
+ Writes an encrypted (\a key, \a value) entry to the current group.
+
+ Note that the degree of protection offered by the encryption is
+ only sufficient to avoid the most casual observation of the configuration
+ files.
+
+ \sa readEntry()
+*/
+void KateConfig::writeEntryCrypt( const QString &key, const QString &value )
+{
+ if ( git == groups.end() ) {
+ qWarning( "no group set" );
+ return;
+ }
+ QString evalue = encipher(value);
+ if ( (*git)[key] != evalue ) {
+ ( *git ).insert( key, evalue );
+ changed = TRUE;
+ }
+}
+
+/*!
+ Writes a (\a key, \a num) entry to the current group.
+
+ \sa readNumEntry()
+*/
+void KateConfig::writeEntry( const QString &key, int num )
+{
+ QString s;
+ s.setNum( num );
+ writeEntry( key, s );
+}
+
+void KateConfig::writeEntry( const QString &key, unsigned int num )
+{
+ QString s;
+ s.setNum( num );
+ writeEntry( key, s );
+}
+
+#ifdef Q_HAS_BOOL_TYPE
+/*!
+ Writes a (\a key, \a b) entry to the current group. This is equivalent
+ to writing a 0 or 1 as an integer entry.
+
+ \sa readBoolEntry()
+*/
+void KateConfig::writeEntry( const QString &key, bool b )
+{
+ QString s;
+ s.setNum( ( int )b );
+ writeEntry( key, s );
+}
+#endif
+
+/*!
+ Writes a (\a key, \a lst) entry to the current group. The list
+ is separated by \a sep, so the strings must not contain that character.
+
+ \sa readListEntry()
+*/
+void KateConfig::writeEntry( const QString &key, const QStringList &lst, const QChar &sep )
+{
+ QString s;
+ QStringList::ConstIterator it = lst.begin();
+ for ( ; it != lst.end(); ++it )
+ s += *it + sep;
+ writeEntry( key, s );
+}
+
+void KateConfig::writeEntry( const QString &key, const QColor &val )
+{
+ QStringList l;
+ l.append( QString().setNum(val.red()) );
+ l.append( QString().setNum(val.green()) );
+ l.append( QString().setNum(val.blue()) );
+
+ writeEntry( key, l, QChar(',') );
+}
+
+void KateConfig::writeEntry( const QString &key, const QFont &val )
+{
+ QStringList l;
+ l.append( val.family() );
+ l.append( QString().setNum(val.pointSize()) );
+ l.append( QString().setNum(val.weight()) );
+ l.append( QString().setNum((int)val.italic()) );
+ l.append( QString().setNum((int)val.charSet()) );
+
+ writeEntry( key, l, QChar(',') );
+}
+
+/*!
+ Removes the \a key entry from the current group. Does nothing if
+ there is no such entry.
+*/
+
+void KateConfig::removeEntry( const QString &key )
+{
+ if ( git == groups.end() ) {
+ qWarning( "no group set" );
+ return;
+ }
+ ( *git ).remove( key );
+ changed = TRUE;
+}
+
+/*!
+ \fn bool KateConfig::operator == ( const KateConfig & other ) const
+
+ Tests for equality with \a other. KateConfig objects are equal if they refer to the same filename.
+*/
+
+/*!
+ \fn bool KateConfig::operator != ( const KateConfig & other ) const
+
+ Tests for inequality with \a other. KateConfig objects are equal if they refer to the same filename.
+*/
+
+/*!
+ \fn QString KateConfig::readEntry( const QString &key, const QString &deflt ) const
+
+ Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry.
+*/
+
+/*!
+ \internal
+ For compatibility, non-const version.
+*/
+QString KateConfig::readEntry( const QString &key, const QString &deflt )
+{
+ QString res = readEntryDirect( key+"["+lang+"]" );
+ if ( !res.isNull() )
+ return res;
+ if ( !glang.isEmpty() ) {
+ res = readEntryDirect( key+"["+glang+"]" );
+ if ( !res.isNull() )
+ return res;
+ }
+ return readEntryDirect( key, deflt );
+}
+
+/*!
+ \fn QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt ) const
+
+ Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry.
+*/
+
+/*!
+ \internal
+ For compatibility, non-const version.
+*/
+QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt )
+{
+ QString res = readEntryDirect( key+"["+lang+"]" );
+ if ( res.isNull() && glang.isEmpty() )
+ res = readEntryDirect( key+"["+glang+"]" );
+ if ( res.isNull() )
+ res = readEntryDirect( key, QString::null );
+ if ( res.isNull() )
+ return deflt;
+ return decipher(res);
+}
+
+/*!
+ \fn QString KateConfig::readEntryDirect( const QString &key, const QString &deflt ) const
+ \internal
+*/
+
+/*!
+ \internal
+ For compatibility, non-const version.
+*/
+QString KateConfig::readEntryDirect( const QString &key, const QString &deflt )
+{
+ if ( git == groups.end() ) {
+ //qWarning( "no group set" );
+ return deflt;
+ }
+ KateConfigGroup::ConstIterator it = ( *git ).find( key );
+ if ( it != ( *git ).end() )
+ return *it;
+ else
+ return deflt;
+}
+
+/*!
+ \fn int KateConfig::readNumEntry( const QString &key, int deflt ) const
+ Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry.
+*/
+
+/*!
+ \internal
+ For compatibility, non-const version.
+*/
+int KateConfig::readNumEntry( const QString &key, int deflt )
+{
+ QString s = readEntry( key );
+ if ( s.isEmpty() )
+ return deflt;
+ else
+ return s.toInt();
+}
+
+/*!
+ \fn bool KateConfig::readBoolEntry( const QString &key, bool deflt ) const
+ Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry.
+*/
+
+/*!
+ \internal
+ For compatibility, non-const version.
+*/
+bool KateConfig::readBoolEntry( const QString &key, bool deflt )
+{
+ QString s = readEntry( key );
+ if ( s.isEmpty() )
+ return deflt;
+ else
+ return (bool)s.toInt();
+}
+
+/*!
+ \fn QStringList KateConfig::readListEntry( const QString &key, const QChar &sep ) const
+ Reads a string list entry stored with \a key, and with \a sep as the separator.
+*/
+
+/*!
+ \internal
+ For compatibility, non-const version.
+*/
+QStringList KateConfig::readListEntry( const QString &key, const QChar &sep )
+{
+ QString s = readEntry( key );
+ if ( s.isEmpty() )
+ return QStringList();
+ else
+ return QStringList::split( sep, s );
+}
+
+QColor KateConfig::readColorEntry( const QString &key, const QColor &def ) const
+{
+ QStringList list = readListEntry(key, QChar(','));
+ if( list.count() != 3 )
+ return def;
+
+ return QColor(list[0].toInt(), list[1].toInt(), list[2].toInt());
+}
+
+QFont KateConfig::readFontEntry( const QString &key, const QFont &def ) const
+{
+ QStringList list = readListEntry(key, QChar(','));
+ if( list.count() != 5 )
+ return def;
+
+ return QFont(list[0], list[1].toInt(), list[2].toInt(), (bool)list[3].toInt(), (QFont::CharSet)list[4].toInt());
+}
+
+QValueList<int> KateConfig::readIntListEntry( const QString &key ) const
+{
+ QString s = readEntry( key );
+ QValueList<int> il;
+ if ( s.isEmpty() )
+ return il;
+
+ QStringList l = QStringList::split( QChar(','), s );
+
+ QStringList::Iterator l_it;
+ for( l_it = l.begin(); l_it != l.end(); ++l_it )
+ il.append( (*l_it).toInt() );
+ return il;
+}
+
+/*!
+ Removes all entries from the current group.
+*/
+void KateConfig::clearGroup()
+{
+ if ( git == groups.end() ) {
+ qWarning( "no group set" );
+ return;
+ }
+ if ( !(*git).isEmpty() ) {
+ ( *git ).clear();
+ changed = TRUE;
+ }
+}
+
+/*!
+ \internal
+*/
+void KateConfig::write( const QString &fn )
+{
+ QString strNewFile;
+ if ( !fn.isEmpty() )
+ filename = fn;
+ strNewFile = filename + ".new";
+
+ QFile f( strNewFile );
+ if ( !f.open( IO_WriteOnly|IO_Raw ) ) {
+ qWarning( "could not open for writing `%s'", strNewFile.latin1() );
+ git = groups.end();
+ return;
+ }
+
+ QString str;
+ QCString cstr;
+ QMap< QString, KateConfigGroup >::Iterator g_it = groups.begin();
+
+ for ( ; g_it != groups.end(); ++g_it ) {
+ str += "[" + g_it.key() + "]\n";
+ KateConfigGroup::Iterator e_it = ( *g_it ).begin();
+ for ( ; e_it != ( *g_it ).end(); ++e_it )
+ str += e_it.key() + " = " + *e_it + "\n";
+ }
+ cstr = str.utf8();
+
+ int total_length;
+ total_length = f.writeBlock( cstr.data(), cstr.length() );
+ if ( total_length != int(cstr.length()) ) {
+ QMessageBox::critical( 0, QObject::tr("Out of Space"),
+ QObject::tr("There was a problem creating\nKateConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") );
+ f.close();
+ QFile::remove( strNewFile );
+ return;
+ }
+
+ f.close();
+ // now rename the file...
+ if ( rename( strNewFile, filename ) < 0 ) {
+ qWarning( "problem renaming the file %s to %s", strNewFile.latin1(),
+ filename.latin1() );
+ QFile::remove( strNewFile );
+ }
+}
+
+/*!
+ Returns whether the KateConfig is in a valid state.
+*/
+bool KateConfig::isValid() const
+{
+ return groups.end() != git;
+}
+
+/*!
+ \internal
+*/
+void KateConfig::read()
+{
+ changed = FALSE;
+
+ if ( !QFileInfo( filename ).exists() ) {
+ git = groups.end();
+ return;
+ }
+
+ QFile f( filename );
+ if ( !f.open( IO_ReadOnly ) ) {
+ git = groups.end();
+ return;
+ }
+
+ QTextStream s( &f );
+#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
+ // The below should work, but doesn't in Qt 2.3.0
+ s.setCodec( QTextCodec::codecForMib( 106 ) );
+#else
+ s.setEncoding( QTextStream::UnicodeUTF8 );
+#endif
+
+ QStringList list = QStringList::split('\n', s.read() );
+ f.close();
+
+ for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
+ if ( !parse( *it ) ) {
+ git = groups.end();
+ return;
+ }
+ }
+}
+
+/*!
+ \internal
+*/
+bool KateConfig::parse( const QString &l )
+{
+ QString line = l.stripWhiteSpace();
+
+ if ( line [0] == QChar ( '#' ))
+ return true; // ignore comments
+
+ if ( line[ 0 ] == QChar( '[' ) ) {
+ QString gname = line;
+ gname = gname.remove( 0, 1 );
+ if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) )
+ gname = gname.remove( gname.length() - 1, 1 );
+ git = groups.insert( gname, KateConfigGroup() );
+ } else if ( !line.isEmpty() ) {
+ if ( git == groups.end() )
+ return FALSE;
+ int eq = line.find( '=' );
+ if ( eq == -1 )
+ return FALSE;
+ QString key = line.left(eq).stripWhiteSpace();
+ QString value = line.mid(eq+1).stripWhiteSpace();
+ ( *git ).insert( key, value );
+ }
+ return TRUE;
+}
diff --git a/noncore/apps/tinykate/libkate/kateconfig.h b/noncore/apps/tinykate/libkate/kateconfig.h
new file mode 100644
index 0000000..80a4e67
--- a/dev/null
+++ b/noncore/apps/tinykate/libkate/kateconfig.h
@@ -0,0 +1,117 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef KATECONFIG_H
+#define KATECONFIG_H
+
+// ##### could use QSettings with Qt 3.0
+
+#include <qmap.h>
+#include <qstringlist.h>
+#include <qfont.h>
+#include <qcolor.h>
+
+class KateConfigPrivate;
+class KateConfig
+{
+public:
+ typedef QMap< QString, QString > KateConfigGroup;
+
+ enum Domain { File, User };
+ KateConfig( const QString &name, Domain domain=User );
+ ~KateConfig();
+
+ bool operator == ( const KateConfig & other ) const { return (filename == other.filename); }
+ bool operator != ( const KateConfig & other ) const { return (filename != other.filename); }
+
+ bool isValid() const;
+ bool hasKey( const QString &key ) const;
+
+ // inline for better SharpROM BC
+ inline bool hasGroup ( const QString &gname ) const { return ( groups. find ( gname ) != groups. end ( )); };
+ inline QStringList groupList ( ) const { QStringList sl; for ( QMap< QString, KateConfigGroup >::ConstIterator it = groups. begin ( ); it != groups. end ( ); ++it ) { sl << it.key(); } return sl; };
+
+ void setGroup( const QString &gname );
+ void writeEntry( const QString &key, const char* value );
+ void writeEntry( const QString &key, const QString &value );
+ void writeEntryCrypt( const QString &key, const QString &value );
+ void writeEntry( const QString &key, int num );
+ void writeEntry( const QString &key, unsigned int num );
+#ifdef Q_HAS_BOOL_TYPE
+ void writeEntry( const QString &key, bool b );
+#endif
+ void writeEntry( const QString &key, const QStringList &lst, const QChar &sep );
+ void writeEntry( const QString &key, const QColor & );
+ void writeEntry( const QString &key, const QFont & );
+ void removeEntry( const QString &key );
+
+ QString readEntry( const QString &key, const QString &deflt = QString::null ) const;
+ QString readEntryCrypt( const QString &key, const QString &deflt = QString::null ) const;
+ QString readEntryDirect( const QString &key, const QString &deflt = QString::null ) const;
+ int readNumEntry( const QString &key, int deflt = -1 ) const;
+ bool readBoolEntry( const QString &key, bool deflt = FALSE ) const;
+ QStringList readListEntry( const QString &key, const QChar &sep ) const;
+ QColor readColorEntry( const QString &, const QColor & ) const;
+ QFont readFontEntry( const QString &, const QFont & ) const;
+ QValueList<int> readIntListEntry( const QString &key ) const;
+
+ // For compatibility, non-const versions.
+ QString readEntry( const QString &key, const QString &deflt );
+ QString readEntryCrypt( const QString &key, const QString &deflt );
+ QString readEntryDirect( const QString &key, const QString &deflt );
+ int readNumEntry( const QString &key, int deflt );
+ bool readBoolEntry( const QString &key, bool deflt );
+ QStringList readListEntry( const QString &key, const QChar &sep );
+
+ void clearGroup();
+
+ void write( const QString &fn = QString::null );
+
+protected:
+ void read();
+ bool parse( const QString &line );
+
+ QMap< QString, KateConfigGroup > groups;
+ QMap< QString, KateConfigGroup >::Iterator git;
+ QString filename;
+ QString lang;
+ QString glang;
+ bool changed;
+ KateConfigPrivate *d;
+ static QString configFilename(const QString& name, Domain);
+
+private: // Sharp ROM compatibility
+ KateConfig( const QString &name, bool what );
+};
+
+inline QString KateConfig::readEntry( const QString &key, const QString &deflt ) const
+{ return ((KateConfig*)this)->readEntry(key,deflt); }
+inline QString KateConfig::readEntryCrypt( const QString &key, const QString &deflt ) const
+{ return ((KateConfig*)this)->readEntryCrypt(key,deflt); }
+inline QString KateConfig::readEntryDirect( const QString &key, const QString &deflt ) const
+{ return ((KateConfig*)this)->readEntryDirect(key,deflt); }
+inline int KateConfig::readNumEntry( const QString &key, int deflt ) const
+{ return ((KateConfig*)this)->readNumEntry(key,deflt); }
+inline bool KateConfig::readBoolEntry( const QString &key, bool deflt ) const
+{ return ((KateConfig*)this)->readBoolEntry(key,deflt); }
+inline QStringList KateConfig::readListEntry( const QString &key, const QChar &sep ) const
+{ return ((KateConfig*)this)->readListEntry(key,sep); }
+
+#endif
diff --git a/noncore/apps/tinykate/libkate/libkate.pro b/noncore/apps/tinykate/libkate/libkate.pro
index b0354e6..0082106 100644
--- a/noncore/apps/tinykate/libkate/libkate.pro
+++ b/noncore/apps/tinykate/libkate/libkate.pro
@@ -1,29 +1,28 @@
TEMPLATE = lib
CONFIG = qt warn_on release
HEADERS = microkde/kapplication.h \
- microkde/kconfig.h \
+ kateconfig.h \
microkde/kdebug.h \
microkde/kdialog.h \
microkde/kdialogbase.h \
microkde/kfiledialog.h \
microkde/kglobal.h \
microkde/kiconloader.h \
microkde/klineedit.h \
microkde/klocale.h \
microkde/kmessagebox.h \
microkde/kprinter.h \
microkde/krestrictedline.h \
microkde/kseparator.h \
- microkde/ksimpleconfig.h \
microkde/kstandarddirs.h \
microkde/ktempfile.h \
microkde/kunload.h \
microkde/kurlrequester.h \
microkde/kfontdialog.h \
microkde/krun.h \
microkde/knumvalidator.h \
microkde/kstaticdeleter.h \
microkde/klistview.h \
microkde/kglobalsettings.h \
microkde/kcolorbtn.h \
\
@@ -36,25 +35,25 @@ HEADERS = microkde/kapplication.h \
document/katehighlight.h \
document/katecmds.h document/katedocument.h \
document/katesyntaxdocument.h \
view/kateundohistory.h \
view/kateview.h \
view/kateviewdialog.h \
interfaces/view.h \
interfaces/document.h \
ktexteditor/ktexteditor.h
SOURCES = microkde/kapplication.cpp \
microkde/kdialogbase.cpp \
- microkde/kconfig.cpp \
+ kateconfig.cpp \
microkde/klocale.cpp \
microkde/kmessagebox.cpp \
microkde/kprocess.cpp \
microkde/kstandarddirs.cpp \
microkde/ktempfile.cpp \
microkde/kurlrequester.cpp \
microkde/kcolordialog.cpp \
microkde/kfontdialog.cpp \
microkde/krun.cpp \
microkde/knumvalidator.cpp \
microkde/kglobal.cpp \
microkde/kglobalsettings.cpp \
@@ -65,25 +64,27 @@ SOURCES = microkde/kapplication.cpp \
ktexteditor/ktexteditor.cpp \
document/katebuffer.cpp document/katedialogs.cpp \
document/katehighlight.cpp \
document/katecmd.cpp \
document/katesyntaxdocument.cpp document/katecmds.cpp \
document/katedocument.cpp document/katetextline.cpp \
view/kateundohistory.cpp \
view/kateview.cpp \
view/kateviewdialog.cpp \
interfaces/interfaces.cpp
INTERFACES =
-INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/apps/tinykate/libkate/microkde \
+INCLUDEPATH += $(OPIEDIR)/include \
+ $(OPIEDIR)/noncore/apps/tinykate/libkate \
+ $(OPIEDIR)/noncore/apps/tinykate/libkate/microkde \
$(OPIEDIR)/noncore/apps/tinykate/libkate/document \
$(OPIEDIR)/noncore/apps/tinykate/libkate/view \
$(OPIEDIR)/noncore/apps/tinykate/libkate/interfaces \
$(OPIEDIR)/noncore/apps/tinykate/libkate/ktexteditor \
$(OPIEDIR)/noncore/apps/tinykate/libkate/qt3back
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -lopie
TARGET = tinykate
INCLUDEPATH += $(OPIEDIR)/include
DESTDIR = $(OPIEDIR)/lib$(PROJMAK)
diff --git a/noncore/apps/tinykate/libkate/microkde/kconfig.cpp b/noncore/apps/tinykate/libkate/microkde/kconfig.cpp
deleted file mode 100644
index d88bda0..0000000
--- a/noncore/apps/tinykate/libkate/microkde/kconfig.cpp
+++ b/dev/null
@@ -1,181 +0,0 @@
-#include <qfile.h>
-#include <qtextstream.h>
-
-#include "kdebug.h"
-
-#include "kconfig.h"
-
-QString KConfig::mGroup = "";
-//QString KConfig::mGroup = "General";
-
-KConfig::KConfig( const QString &fileName )
- : mFileName( fileName ), mDirty( false )
-{
- kdDebug() << "KConfig::KConfig(): '" << fileName << "'" << endl;
-
- load();
-}
-
-
-KConfig::~KConfig()
-{
- sync();
-}
-
-void KConfig::setGroup( const QString &group )
-{
- return;
-
-// kdDebug() << "KConfig::setGroup(): '" << group << "'" << endl;
-
- mGroup = group;
-
- if ( mGroup.right( 1 ) != "/" ) mGroup += "/";
-}
-
-
-QValueList<int> KConfig::readIntListEntry( const QString & )
-{
- QValueList<int> l;
- return l;
-}
-
-int KConfig::readNumEntry( const QString &, int def )
-{
- return def;
-}
-
-QString KConfig::readEntry( const QString &key, const QString &def )
-{
- QMap<QString,QString>::ConstIterator it = mStringMap.find( mGroup + key );
-
- if ( it == mStringMap.end() ) {
- return def;
- }
-
- return *it;
-}
-
-QStringList KConfig::readListEntry( const QString & )
-{
- return QStringList();
-}
-
-bool KConfig::readBoolEntry( const QString &key, bool def )
-{
- QMap<QString,bool>::ConstIterator it = mBoolMap.find( mGroup + key );
-
- if ( it == mBoolMap.end() ) {
- return def;
- }
-
- return *it;
-}
-
-QColor KConfig::readColorEntry( const QString &, QColor *def )
-{
- if ( def ) return *def;
- return QColor();
-}
-
-QFont KConfig::readFontEntry( const QString &, QFont *def )
-{
- if ( def ) return *def;
- return QFont();
-}
-
-
-void KConfig::writeEntry( const QString &, QValueList<int> )
-{
-}
-
-void KConfig::writeEntry( const QString &, int )
-{
-}
-
-void KConfig::writeEntry( const QString &key, const QString &value )
-{
- mStringMap.insert( mGroup + key, value );
-
- mDirty = true;
-}
-
-void KConfig::writeEntry( const QString &, const QStringList & )
-{
-}
-
-void KConfig::writeEntry( const QString &key, bool value)
-{
- mBoolMap.insert( mGroup + key, value );
-
- mDirty = true;
-}
-
-void KConfig::writeEntry( const QString &, const QColor & )
-{
-}
-
-void KConfig::writeEntry( const QString &, const QFont & )
-{
-}
-
-void KConfig::load()
-{
- mBoolMap.clear();
- mStringMap.clear();
-
- QFile f( mFileName );
- if ( !f.open( IO_ReadOnly ) ) {
- kdDebug() << "KConfig::load(): Can't open file '" << mFileName << "'"
- << endl;
- return;
- }
-
-
- QTextStream t( &f );
-
- QString line = t.readLine();
-
- while ( !line.isNull() ) {
- QStringList tokens = QStringList::split( ",", line );
- if ( tokens[0] == "bool" ) {
- bool value = false;
- if ( tokens[2] == "1" ) value = true;
-
- mBoolMap.insert( tokens[1], value );
- } else if ( tokens[0] == "QString" ) {
- QString value = tokens[2];
- mStringMap.insert( tokens[1], value );
- }
-
- line = t.readLine();
- }
-}
-
-void KConfig::sync()
-{
- if ( !mDirty ) return;
-
- QFile f( mFileName );
- if ( !f.open( IO_WriteOnly ) ) {
- kdDebug() << "KConfig::sync(): Can't open file '" << mFileName << "'"
- << endl;
- return;
- }
-
- QTextStream t( &f );
-
- QMap<QString,bool>::ConstIterator itBool;
- for( itBool = mBoolMap.begin(); itBool != mBoolMap.end(); ++itBool ) {
- t << "bool," << itBool.key() << "," << (*itBool ) << endl;
- }
-
- QMap<QString,QString>::ConstIterator itString;
- for( itString = mStringMap.begin(); itString != mStringMap.end(); ++itString ) {
- t << "QString," << itString.key() << "," << (*itString ) << endl;
- }
-
- f.close();
-
- mDirty = false;
-}
diff --git a/noncore/apps/tinykate/libkate/microkde/kconfig.h b/noncore/apps/tinykate/libkate/microkde/kconfig.h
deleted file mode 100644
index 8bd768a..0000000
--- a/noncore/apps/tinykate/libkate/microkde/kconfig.h
+++ b/dev/null
@@ -1,51 +0,0 @@
-#ifndef MINIKDE_KCONFIG_H
-#define MINIKDE_KCONFIG_H
-
-#include <qstring.h>
-#include <qstringlist.h>
-#include <qvaluelist.h>
-#include <qcolor.h>
-#include <qfont.h>
-#include <qmap.h>
-
-class KConfig
-{
- public:
- KConfig( const QString & );
- ~KConfig();
-
- void setGroup( const QString & );
-
- bool hasGroup( const QString &) {return false;}
-
- QValueList<int> readIntListEntry( const QString & );
- int readNumEntry( const QString &, int def=0 );
- QString readEntry( const QString &, const QString &def=QString::null );
- QStringList readListEntry( const QString & );
- bool readBoolEntry( const QString &, bool def=false );
- QColor readColorEntry( const QString &, QColor * );
- QFont readFontEntry( const QString &, QFont * );
-
- void writeEntry( const QString &, QValueList<int> );
- void writeEntry( const QString &, int );
- void writeEntry( const QString &, const QString & );
- void writeEntry( const QString &, const QStringList & );
- void writeEntry( const QString &, bool );
- void writeEntry( const QString &, const QColor & );
- void writeEntry( const QString &, const QFont & );
-
- void load();
- void sync();
-
- private:
- static QString mGroup;
-
- QString mFileName;
-
- QMap<QString,bool> mBoolMap;
- QMap<QString,QString> mStringMap;
-
- bool mDirty;
-};
-
-#endif
diff --git a/noncore/apps/tinykate/libkate/microkde/kglobal.cpp b/noncore/apps/tinykate/libkate/microkde/kglobal.cpp
index 572768d..9b5c4d3 100644
--- a/noncore/apps/tinykate/libkate/microkde/kglobal.cpp
+++ b/noncore/apps/tinykate/libkate/microkde/kglobal.cpp
@@ -1,34 +1,34 @@
#include "kglobal.h"
KLocale *KGlobal::mLocale = 0;
-KConfig *KGlobal::mConfig = 0;
+KateConfig *KGlobal::mConfig = 0;
KIconLoader *KGlobal::mIconLoader = 0;
KStandardDirs *KGlobal::mDirs = 0;
QString KGlobal::mAppName = "godot";
KLocale *KGlobal::locale()
{
if ( !mLocale ) {
mLocale = new KLocale();
}
return mLocale;
}
-KConfig *KGlobal::config()
+KateConfig *KGlobal::config()
{
if ( !mConfig ) {
- mConfig = new KConfig( KStandardDirs::appDir() + mAppName + "rc" );
+ mConfig = new KateConfig( mAppName );
}
return mConfig;
}
KIconLoader *KGlobal::iconLoader()
{
if ( !mIconLoader ) {
mIconLoader = new KIconLoader();
}
return mIconLoader;
diff --git a/noncore/apps/tinykate/libkate/microkde/kglobal.h b/noncore/apps/tinykate/libkate/microkde/kglobal.h
index 8985bd4..e4e2c79 100644
--- a/noncore/apps/tinykate/libkate/microkde/kglobal.h
+++ b/noncore/apps/tinykate/libkate/microkde/kglobal.h
@@ -1,27 +1,27 @@
#ifndef MINIKDE_KGLOBAL_H
#define MINIKDE_KGLOBAL_H
#include "klocale.h"
#include "kiconloader.h"
#include "kstandarddirs.h"
-#include "kconfig.h"
+#include <kateconfig.h>
class KGlobal {
public:
static KLocale *locale();
- static KConfig *config();
+ static KateConfig *config();
static KIconLoader *iconLoader();
static KStandardDirs *dirs();
static void setAppName( const QString & );
private:
static KLocale *mLocale;
- static KConfig *mConfig;
+ static KateConfig *mConfig;
static KIconLoader *mIconLoader;
static KStandardDirs *mDirs;
static QString mAppName;
};
#endif
diff --git a/noncore/apps/tinykate/libkate/view/kateview.cpp b/noncore/apps/tinykate/libkate/view/kateview.cpp
index 63e941f..af3b30d 100644
--- a/noncore/apps/tinykate/libkate/view/kateview.cpp
+++ b/noncore/apps/tinykate/libkate/view/kateview.cpp
@@ -37,35 +37,35 @@
Boston, MA 02111-1307, USA.
*/
#include "kateview.h"
#include "../document/katedocument.h"
#include "../document/katecmd.h"
#include "../document/katehighlight.h"
#include "kateviewdialog.h"
#include "../document/katedialogs.h"
+#include <kateconfig.h>
#include <qfocusdata.h>
#include <kdebug.h>
#include <kapplication.h>
#include <qscrollbar.h>
#include <qiodevice.h>
#include <qpopupmenu.h>
#include <kpopupmenu.h>
#include <qkeycode.h>
#include <qintdict.h>
-#include <kconfig.h>
#include <qfont.h>
#include <qpainter.h>
#include <qpixmap.h>
#include <qfileinfo.h>
#include <qfile.h>
#include <qevent.h>
#include <qdir.h>
#include <qvbox.h>
#include <qprintdialog.h>
#include <qpaintdevicemetrics.h>
#include <qiodevice.h>
#include <qbuffer.h>
@@ -1232,30 +1232,30 @@ KateView::KateView(KateDocument *doc, QWidget *parent, const char * name) : Kate
connect( this, SIGNAL( newStatus() ), this, SLOT( slotUpdate() ) );
connect( this, SIGNAL( newUndo() ), this, SLOT( slotNewUndo() ) );
connect( doc, SIGNAL( fileNameChanged() ), this, SLOT( slotFileStatusChanged() ) );
connect( doc, SIGNAL( highlightChanged() ), this, SLOT( slotHighlightChanged() ) );
readConfig();
// setHighlight->setCurrentItem(getHl());
slotUpdate();
}
KateView::~KateView()
{
+ writeConfig();
if (myDoc && !myDoc->m_bSingleViewMode)
myDoc->removeView( this );
delete myViewInternal;
-
}
#if 0
void KateView::setupActions()
{
#if 0
KStdAction::close( this, SLOT(flush()), actionCollection(), "file_close" );
KStdAction::save(this, SLOT(save()), actionCollection());
// setup edit menu
editUndo = KStdAction::undo(this, SLOT(undo()), actionCollection());
@@ -2213,58 +2213,58 @@ bool KateView::askReplaceEnd() {
void KateView::replaceSlot() {
doReplaceAction(replacePrompt->result(),true);
}
void KateView::installPopup(QPopupMenu *rmb_Menu)
{
rmbMenu = rmb_Menu;
}
void KateView::readConfig()
{
- KConfig *config = KGlobal::config();
+ KateConfig *config = KGlobal::config();
config->setGroup("Kate View");
searchFlags = config->readNumEntry("SearchFlags", KateView::sfPrompt);
configFlags = config->readNumEntry("ConfigFlags", configFlags) & ~KateView::cfMark;
- config->sync();
+// config->sync();
}
void KateView::writeConfig()
{
- KConfig *config = KGlobal::config();
+ KateConfig *config = KGlobal::config();
config->setGroup("Kate View");
config->writeEntry("SearchFlags",searchFlags);
config->writeEntry("ConfigFlags",configFlags);
- config->sync();
+// config->sync();
}
-void KateView::readSessionConfig(KConfig *config)
+void KateView::readSessionConfig(KateConfig *config)
{
PointStruc cursor;
myViewInternal->xPos = config->readNumEntry("XPos");
myViewInternal->yPos = config->readNumEntry("YPos");
cursor.x = config->readNumEntry("CursorX");
cursor.y = config->readNumEntry("CursorY");
myViewInternal->updateCursor(cursor);
myIconBorder = config->readBoolEntry("IconBorder on");
setIconBorder(myIconBorder);
}
-void KateView::writeSessionConfig(KConfig *config)
+void KateView::writeSessionConfig(KateConfig *config)
{
config->writeEntry("XPos",myViewInternal->xPos);
config->writeEntry("YPos",myViewInternal->yPos);
config->writeEntry("CursorX",myViewInternal->cursor.x);
config->writeEntry("CursorY",myViewInternal->cursor.y);
config->writeEntry("IconBorder on", myIconBorder);
}
void KateView::configDialog()
{
#warning fixme
@@ -2311,25 +2311,25 @@ void KateView::configDialog()
HighlightDialogPage *hlPage;
HlManager *hlManager;
HlDataList hlDataList;
ItemStyleList defaultStyleList;
hlManager = HlManager::self();
defaultStyleList.setAutoDelete(true);
hlManager->getDefaults(defaultStyleList);
hlDataList.setAutoDelete(true);
- //this gets the data from the KConfig object
+ //this gets the data from the KateConfig object
hlManager->getHlDataList(hlDataList);
page=kd->addPage(i18n("Highlighting"));
(new QVBoxLayout(page))->setAutoAdd(true);
hlPage = new HighlightDialogPage(hlManager, &defaultStyleList, &hlDataList, 0, page);
kd->showMaximized();
if (kd->exec()) {
// color options
colorConfig->getColors(colors);
myDoc->setFont (fontConfig->getFont());
diff --git a/noncore/apps/tinykate/libkate/view/kateview.h b/noncore/apps/tinykate/libkate/view/kateview.h
index 2e78a3a..858e8a1 100644
--- a/noncore/apps/tinykate/libkate/view/kateview.h
+++ b/noncore/apps/tinykate/libkate/view/kateview.h
@@ -40,24 +40,25 @@
#ifndef kate_view_h
#define kate_view_h
#include "../interfaces/view.h"
#include "../interfaces/document.h"
#include <qlist.h>
#include <qstring.h>
#include <qdialog.h>
class KateDocument;
+class KateConfig;
class Highlight;
/*
//dialog results
const int srYes = QDialog::Accepted;
const int srNo = 10;
const int srAll = 11;
const int srCancel = QDialog::Rejected;
*/
// --- config flags ---
// indent
@@ -652,32 +653,32 @@ class KateView : public Kate::View
//config file / session management functions
public:
/**
Reads config entries
*/
void readConfig();
/**
Writes config entries i
*/
void writeConfig();
/**
- Reads session config out of the KConfig object. This also includes
+ Reads session config out of the KateConfig object. This also includes
the actual cursor position and the bookmarks.
*/
- void readSessionConfig(KConfig *);
+ void readSessionConfig(KateConfig *);
/**
- Writes session config into the KConfig object
+ Writes session config into the KateConfig object
*/
- void writeSessionConfig(KConfig *);
+ void writeSessionConfig(KateConfig *);
public:
void setDontChangeHlOnSave();
// syntax highlight
public slots:
/**
Presents the setup dialog to the user
*/
void configDialog ();
diff --git a/noncore/apps/tinykate/tinykate.cpp b/noncore/apps/tinykate/tinykate.cpp
index 6164fa5..aecc1bd 100644
--- a/noncore/apps/tinykate/tinykate.cpp
+++ b/noncore/apps/tinykate/tinykate.cpp
@@ -26,32 +26,34 @@
#include <opie/ofiledialog.h>
#include "tinykate.h"
#include "pics/file-new.xpm"
#include "pics/file-open.xpm"
#include "pics/file-save.xpm"
#include "pics/edit-undo.xpm"
#include "pics/edit-redo.xpm"
#include <katedocument.h>
#include <katehighlight.h>
#include <kateview.h>
+#include <kglobal.h>
TinyKate::TinyKate( QWidget *parent, const char *name, WFlags f) :
QMainWindow( parent, name, f )
{
nextUnnamed=0;
currentView=0;
viewCount=0;
setCaption(tr("TinyKATE"));
+ KGlobal::setAppName("TinyKATE");
setToolBarsMovable(FALSE);
QPEToolBar *bar = new QPEToolBar( this );
bar->setHorizontalStretchable( TRUE );
QPEMenuBar *mb = new QPEMenuBar( bar );
mb->setMargin( 0 );
tabwidget=new OTabWidget(this);
setCentralWidget(tabwidget);
connect(tabwidget,SIGNAL(currentChanged( QWidget *)),this,SLOT(slotCurrentChanged(QWidget *)));
@@ -139,24 +141,32 @@ TinyKate::TinyKate( QWidget *parent, const char *name, WFlags f) :
}
popup->insertItem(tr("Highlighting"),hlmenu);
utilSettings = new QAction( tr( "Settings" ), QString::null, 0, this, 0 );
utilSettings->addTo( popup);
if( qApp->argc() > 1) open(qApp->argv()[1]);
else slotNew();
}
+TinyKate::~TinyKate( )
+{
+ qWarning("TinyKate destructor\n");
+ if( KGlobal::config() != 0 ) {
+ qWarning("deleting KateConfig object..\n");
+ delete KGlobal::config();
+ }
+}
void TinyKate::slotOpen( )
{
QString filename = OFileDialog::getOpenFileName( OFileSelector::EXTENDED_ALL,
QPEApplication::documentDir());
if (!filename.isEmpty()) {
open(filename);
}
}
void TinyKate::open(const QString & filename)
{
diff --git a/noncore/apps/tinykate/tinykate.h b/noncore/apps/tinykate/tinykate.h
index 7b61bae..bb32f98 100644
--- a/noncore/apps/tinykate/tinykate.h
+++ b/noncore/apps/tinykate/tinykate.h
@@ -22,38 +22,39 @@
#include <qmainwindow.h>
#include <opie/otabwidget.h>
#include <ktexteditor.h>
class QAction;
class QPopupMenu;
class TinyKate : public QMainWindow
{
Q_OBJECT
public:
TinyKate( QWidget *parent=0, const char *name=0, WFlags f = 0);
+ ~TinyKate( );
public slots:
- QString currentFileName;
void slotNew();
protected slots:
void slotOpen();
void slotClose();
void slotCurrentChanged(QWidget *);
void slotSave();
void slotSaveAs();
protected:
void open(const QString&);
private:
+ QString currentFileName;
OTabWidget *tabwidget;
KTextEditor::View *currentView;
QAction *editCopy;
QAction *editCut;
QAction *editPaste;
QAction *editUndo;
QAction *editRedo;
QAction *editFindReplace;
QAction *viewIncFontSizes;
QAction *viewDecFontSizes;
QAction *utilSettings;
diff --git a/noncore/apps/tinykate/tinykate.pro b/noncore/apps/tinykate/tinykate.pro
index 61b60a6..632bd49 100644
--- a/noncore/apps/tinykate/tinykate.pro
+++ b/noncore/apps/tinykate/tinykate.pro
@@ -1,19 +1,21 @@
TEMPLATE = app
CONFIG = qt warn_on release
DESTDIR = $(OPIEDIR)/bin
HEADERS = tinykate.h
SOURCES = tinykate.cpp main.cpp
INTERFACES =
-INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/apps/tinykate/libkate/microkde \
+INCLUDEPATH += $(OPIEDIR)/include \
+ $(OPIEDIR)/noncore/apps/tinykate/libkate \
+ $(OPIEDIR)/noncore/apps/tinykate/libkate/microkde \
$(OPIEDIR)/noncore/apps/tinykate/libkate/document \
$(OPIEDIR)/noncore/apps/tinykate/libkate/view \
$(OPIEDIR)/noncore/apps/tinykate/libkate/interfaces \
$(OPIEDIR)/noncore/apps/tinykate/libkate/ktexteditor \
$(OPIEDIR)/noncore/apps/tinykate/libkate/qt3back
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -ltinykate -lopie
TARGET = tinykate