Browse Source

Port to new KDE 3.94.0 KConfig API:
* use KConfigGroup instead of KConfig::setGroup (because readEntry and writeEntry are only allowed on KConfigGroup now)
* change readBoolEntry, readUnsignedNumEntry, readNumEntry, readListEntry and readDateTimeEntry to readEntry
* KConfig::NoGlobals->KConfig::CascadeConfig, also reorder arguments for the KConfig constructor

Move pconfig->sync() out of the loop in MainForm::toolsConfigure.


git-svn-id: file:///var/svn/tigccpp/trunk@1227 9552661e-59e3-4036-b4f2-dbe53926924f

kevinkofler 16 years ago
parent
commit
f4ecf5e086
4 changed files with 194 additions and 222 deletions
  1. 23 22
      ktigcc/completion.cpp
  2. 27 27
      ktigcc/mainform.cpp
  3. 4 5
      ktigcc/newsdlg.cpp
  4. 140 168
      ktigcc/preferences.cpp

+ 23 - 22
ktigcc/completion.cpp

@@ -37,6 +37,7 @@
 #include <ktexteditor/codecompletionmodel.h>
 #include <ktexteditor/codecompletioninterface.h>
 #include <kconfig.h>
+#include <kconfiggroup.h>
 #include <cstring>
 #include "completion.h"
 #include "parsing.h"
@@ -458,7 +459,7 @@ bool parseSystemHeaders(QWidget *parent, const QString &directory,
 
 void loadSystemHeaderCompletion(void)
 {
-  KConfig config("data","ktigcc/completion",KConfig::NoGlobals);
+  KConfig config("ktigcc/completion",KConfig::CascadeConfig,"data");
   QStringList groupList=config.groupList();
   if (groupList.isEmpty()) {
     KMessageBox::queuedMessageBox(0,KMessageBox::Sorry,
@@ -477,17 +478,17 @@ void loadSystemHeaderCompletion(void)
   foreach (const QString &key, groupList) {
     if (key.endsWith(" Lines")) continue;
     CompletionInfo completionInfo;
-    config.setGroup(key);
-    completionInfo.includedSystem=config.readListEntry("Included");
-    unsigned numEntries=config.readUnsignedNumEntry("Num Entries");
+    KConfigGroup group=config.group(key);
+    completionInfo.includedSystem=group.readEntry("Included",QStringList());
+    unsigned numEntries=group.readEntry("Num Entries",0u);
     for (unsigned i=0; i<numEntries; i++) {
       CompletionEntry entry;
-      entry.type=config.readEntry(QString("Entry %1 Type").arg(i));
-      entry.text=config.readEntry(QString("Entry %1 Text").arg(i));
-      entry.prefix=config.readEntry(QString("Entry %1 Prefix").arg(i));
-      entry.postfix=config.readEntry(QString("Entry %1 Postfix").arg(i));
-      entry.comment=config.readEntry(QString("Entry %1 Comment").arg(i));
-      entry.userdata=config.readEntry(QString("Entry %1 User Data").arg(i));
+      entry.type=group.readEntry(QString("Entry %1 Type").arg(i));
+      entry.text=group.readEntry(QString("Entry %1 Text").arg(i));
+      entry.prefix=group.readEntry(QString("Entry %1 Prefix").arg(i));
+      entry.postfix=group.readEntry(QString("Entry %1 Postfix").arg(i));
+      entry.comment=group.readEntry(QString("Entry %1 Comment").arg(i));
+      entry.userdata=group.readEntry(QString("Entry %1 User Data").arg(i));
       completionInfo.entries.append(entry);
     }
     QMap<QString,QString> entryMap=config.entryMap(key+" Lines");
@@ -500,27 +501,27 @@ void loadSystemHeaderCompletion(void)
 
 void saveSystemHeaderCompletion(void)
 {
-  KConfig config("data","ktigcc/completion",KConfig::NoGlobals);
+  KConfig config("ktigcc/completion",KConfig::CascadeConfig,"data");
   for (QMap<QString,CompletionInfo>::ConstIterator it=systemHeaderCompletion.begin();
        it!=systemHeaderCompletion.end(); ++it) {
     const QString &key=it.key();
     const CompletionInfo &completionInfo=*it;
-    config.setGroup(key);
-    config.writeEntry("Included",completionInfo.includedSystem);
+    KConfigGroup group=config.group(key);
+    group.writeEntry("Included",completionInfo.includedSystem);
     unsigned i=0;
     foreach (const CompletionEntry &entry, completionInfo.entries) {
-      config.writeEntry(QString("Entry %1 Type").arg(i),entry.type);
-      config.writeEntry(QString("Entry %1 Text").arg(i),entry.text);
-      config.writeEntry(QString("Entry %1 Prefix").arg(i),entry.prefix);
-      config.writeEntry(QString("Entry %1 Postfix").arg(i),entry.postfix);
-      config.writeEntry(QString("Entry %1 Comment").arg(i),entry.comment);
-      config.writeEntry(QString("Entry %1 User Data").arg(i++),entry.userdata);
+      group.writeEntry(QString("Entry %1 Type").arg(i),entry.type);
+      group.writeEntry(QString("Entry %1 Text").arg(i),entry.text);
+      group.writeEntry(QString("Entry %1 Prefix").arg(i),entry.prefix);
+      group.writeEntry(QString("Entry %1 Postfix").arg(i),entry.postfix);
+      group.writeEntry(QString("Entry %1 Comment").arg(i),entry.comment);
+      group.writeEntry(QString("Entry %1 User Data").arg(i++),entry.userdata);
     }
-    config.writeEntry("Num Entries",i);
-    config.setGroup(key+" Lines");
+    group.writeEntry("Num Entries",i);
+    KConfigGroup linesGroup=config.group(key+" Lines");
     for (QMap<QString,unsigned>::ConstIterator it=completionInfo.lineNumbers.begin();
          it!=completionInfo.lineNumbers.end(); ++it)
-      config.writeEntry(it.key(),*it);
+      linesGroup.writeEntry(it.key(),*it);
   }
   config.sync();
 }

+ 27 - 27
ktigcc/mainform.cpp

@@ -1281,27 +1281,27 @@ MainForm::MainForm(QWidget* parent, const char* name, Qt::WindowFlags fl)
     debugRunAction->setVisible(FALSE);
     debugPauseAction->setVisible(FALSE);
   }
-  pconfig->setGroup("Recent files");
+  KConfigGroup recentFiles=pconfig->group("Recent files");
   if (parg) {
     QString fileName=QDir().absoluteFilePath(parg);
     if (!openProject(fileName)) goto openRecent;
   } else {
     openRecent:;
-    QString mostrecent=pconfig->readEntry("Current project");
+    QString mostrecent=recentFiles.readEntry("Current project");
     if (!mostrecent.isNull() && !mostrecent.isEmpty())
       openProject(mostrecent);
   }
   updateRecent();
-  pconfig->setGroup("Tools");
-  unsigned toolCount=pconfig->readUnsignedNumEntry("Count",0);
+  KConfigGroup toolsConfig=pconfig->group("Tools");
+  unsigned toolCount=toolsConfig.readEntry("Count",0u);
   tools.resize(toolCount);
   for (unsigned idx=0; idx<toolCount; idx++) {
     pconfig->setGroup(QString("Tool %1").arg(idx));
     Tool &tool=tools[idx];
-    tool.title=pconfig->readEntry("Title");
-    tool.commandLine=pconfig->readEntry("Command Line");
-    tool.workingDirectory=pconfig->readEntry("Working Directory");
-    tool.runInTerminal=pconfig->readBoolEntry("Terminal");
+    tool.title=toolsConfig.readEntry("Title");
+    tool.commandLine=toolsConfig.readEntry("Command Line");
+    tool.workingDirectory=toolsConfig.readEntry("Working Directory");
+    tool.runInTerminal=toolsConfig.readEntry("Terminal",false);
   }
   updateToolsMenu();
   connect(toolsMenu,SIGNAL(activated(int)),this,SLOT(toolsMenu_activated(int)));
@@ -1658,8 +1658,8 @@ void MainForm::fileNewProject()
   if (compiling || savePrompt())
     return;
   clearProject();
-  pconfig->setGroup("Recent files");
-  pconfig->writeEntry("Current project","");
+  KConfigGroup recentFiles=pconfig->group("Recent files");
+  recentFiles.writeEntry("Current project","");
   pconfig->sync();
 }
 
@@ -1735,8 +1735,8 @@ QStringList MainForm::SGetFileName_Multiple(const QString &fileFilter,const QStr
 
 void MainForm::updateRecent()
 {
-  pconfig->setGroup("Recent files");
-  QString recent=pconfig->readEntry("Recent file 1");
+  KConfigGroup recentFiles=pconfig->group("Recent files");
+  QString recent=recentFiles.readEntry("Recent file 1");
   if (recent.isNull())
     fileRecent1Action->setVisible(FALSE);
   else {
@@ -1746,7 +1746,7 @@ void MainForm::updateRecent()
     fileRecent1Action->setText(recentcut);
     fileRecent1Action->setStatusTip(recent);
   }
-  recent=pconfig->readEntry("Recent file 2");
+  recent=recentFiles.readEntry("Recent file 2");
   if (recent.isNull())
     fileRecent2Action->setVisible(FALSE);
   else {
@@ -1756,7 +1756,7 @@ void MainForm::updateRecent()
     fileRecent2Action->setText(recentcut);
     fileRecent2Action->setStatusTip(recent);
   }
-  recent=pconfig->readEntry("Recent file 3");
+  recent=recentFiles.readEntry("Recent file 3");
   if (recent.isNull())
     fileRecent3Action->setVisible(FALSE);
   else {
@@ -1766,7 +1766,7 @@ void MainForm::updateRecent()
     fileRecent3Action->setText(recentcut);
     fileRecent3Action->setStatusTip(recent);
   }
-  recent=pconfig->readEntry("Recent file 4");
+  recent=recentFiles.readEntry("Recent file 4");
   if (recent.isNull())
     fileRecent4Action->setVisible(FALSE);
   else {
@@ -1784,21 +1784,21 @@ void MainForm::addRecent(const QString &fileName)
   // Pick up any changes to the list of recent files from other instances
   pconfig->sync();
   pconfig->reparseConfiguration();
-  pconfig->setGroup("Recent files");
+  KConfigGroup recentFiles=pconfig->group("Recent files");
   // Find recent file to overwrite. If it isn't one of the first 3, by
   // elimination, it is the last, thus the test only goes up to <4, not <=4.
   for (i=1;i<4;i++) {
-    QString recenti=pconfig->readEntry(QString("Recent file %1").arg(i));
+    QString recenti=recentFiles.readEntry(QString("Recent file %1").arg(i));
     if (recenti.isNull() || !recenti.compare(fileName))
       break;
   }
   // Move entries up
   for (j=i;j>1;j--) {
-    pconfig->writeEntry(QString("Recent file %1").arg(j),pconfig->readEntry(QString("Recent file %1").arg(j-1)));
+    recentFiles.writeEntry(QString("Recent file %1").arg(j),recentFiles.readEntry(QString("Recent file %1").arg(j-1)));
   }
   // The first recent file is the current project.
-  pconfig->writeEntry("Recent file 1",fileName);
-  pconfig->writeEntry("Current project",fileName);
+  recentFiles.writeEntry("Recent file 1",fileName);
+  recentFiles.writeEntry("Current project",fileName);
   pconfig->sync();
   updateRecent();
 }
@@ -5072,18 +5072,18 @@ void MainForm::toolsConfigure()
   ToolsDialog toolsDialog(this);
   toolsDialog.exec();
   if (toolsDialog.result()==QDialog::Accepted) {
-    pconfig->setGroup("Tools");
+    KConfigGroup toolsConfig=pconfig->group("Tools");
     unsigned toolCount=tools.count();
-    pconfig->writeEntry("Count",toolCount);
+    toolsConfig.writeEntry("Count",toolCount);
     for (unsigned idx=0; idx<toolCount; idx++) {
       pconfig->setGroup(QString("Tool %1").arg(idx));
       Tool &tool=tools[idx];
-      pconfig->writeEntry("Title",tool.title);
-      pconfig->writeEntry("Command Line",tool.commandLine);
-      pconfig->writeEntry("Working Directory",tool.workingDirectory);
-      pconfig->writeEntry("Terminal",tool.runInTerminal);
-      pconfig->sync();
+      toolsConfig.writeEntry("Title",tool.title);
+      toolsConfig.writeEntry("Command Line",tool.commandLine);
+      toolsConfig.writeEntry("Working Directory",tool.workingDirectory);
+      toolsConfig.writeEntry("Terminal",tool.runInTerminal);
     }
+    pconfig->sync();
     updateToolsMenu();
   }
 }

+ 4 - 5
ktigcc/newsdlg.cpp

@@ -27,6 +27,7 @@
 #include <kio/netaccess.h>
 #include <kmessagebox.h>
 #include <ksharedconfig.h>
+#include <kconfiggroup.h>
 #include <kpushbutton.h> 
 #include <QVariant>
 #include <QImage>
@@ -75,10 +76,8 @@ bool NewsDialog::loadNews()
 {
   QString tmpFile;
   bool result=FALSE;
-  pconfig->setGroup("News Headlines");
-  QDateTime defaultDateTime;
-  QDate latestHeadline=pconfig->readDateTimeEntry("Latest Headline",
-                                                  &defaultDateTime).date();
+  KConfigGroup config=pconfig->group("News Headlines");
+  QDate latestHeadline=config.readEntry("Latest Headline",QDateTime()).date();
   if(KIO::NetAccess::download(
       KUrl("http://tigcc.ticalc.org/linux/newsheadlines.txt"),tmpFile,this)) {
     #define ERROR(s) do {KMessageBox::error(this,(s)); goto done;} while(0)
@@ -106,7 +105,7 @@ bool NewsDialog::loadNews()
       if (std::sscanf(line,"%4u%2u%2u",&y,&m,&d)<3) ERROR("Invalid news file.");
       if (latestHeadline.isNull() || QDate(y,m,d)>latestHeadline) {
         if (!result) {
-          pconfig->writeEntry("Latest Headline",QDateTime(QDate(y,m,d)));
+          config.writeEntry("Latest Headline",QDateTime(QDate(y,m,d)));
           pconfig->sync();
         }
         result=itemIsNew=TRUE;

+ 140 - 168
ktigcc/preferences.cpp

@@ -40,6 +40,7 @@
 #include <QPair>
 #include <QLinkedList>
 #include <kconfig.h>
+#include <kconfiggroup.h>
 #include "ktigcc.h"
 #include "preferences.h"
 #include "preferencesdlg.h"
@@ -438,44 +439,44 @@ static void checkSynHighlightVersions(void)
 
 static bool loadSyntaxPreference(Syn_SettingsForDoc &synprefs, const QString &group)
 {
-  pconfig->setGroup(group+" Syntax Highlighting");
-  synprefs.enabled=pconfig->readBoolEntry("Enabled",true);
-  synprefs.numberColor=pconfig->readEntry("Number Color",QColor());
+  KConfigGroup config=pconfig->group(group+" Syntax Highlighting");
+  synprefs.enabled=config.readEntry("Enabled",true);
+  synprefs.numberColor=config.readEntry("Number Color",QColor());
   if (!synprefs.numberColor.isValid()) return FALSE;
-  synprefs.symbolColor=pconfig->readEntry("Symbol Color",QColor());
+  synprefs.symbolColor=config.readEntry("Symbol Color",QColor());
   if (!synprefs.symbolColor.isValid()) return FALSE;
-  unsigned numParenthesisColors=pconfig->readUnsignedNumEntry("Num Parenthesis Colors");
+  unsigned numParenthesisColors=config.readEntry("Num Parenthesis Colors",0u);
   for (unsigned i=0; i<numParenthesisColors; i++) {
-    QColor parenthesisColor=pconfig->readEntry(QString("Parenthesis Color %1").arg(i),QColor());
+    QColor parenthesisColor=config.readEntry(QString("Parenthesis Color %1").arg(i),QColor());
     if (!parenthesisColor.isValid()) return FALSE;
     synprefs.parenthesisColors.append(parenthesisColor);
   }
-  synprefs.numberStyle=pconfig->readUnsignedNumEntry("Number Style");
-  synprefs.symbolStyle=pconfig->readUnsignedNumEntry("Symbol Style");
-  synprefs.parenthesisStyle=pconfig->readUnsignedNumEntry("Parenthesis Style");
-  unsigned numCustomStyles=pconfig->readUnsignedNumEntry("Num Custom Styles");
+  synprefs.numberStyle=config.readEntry("Number Style",0u);
+  synprefs.symbolStyle=config.readEntry("Symbol Style",0u);
+  synprefs.parenthesisStyle=config.readEntry("Parenthesis Style",0u);
+  unsigned numCustomStyles=config.readEntry("Num Custom Styles",0u);
   for (unsigned i=0; i<numCustomStyles; i++) {
     Syn_CustomStyle customStyle;
-    customStyle.name=pconfig->readEntry(QString("Custom Style %1 Name").arg(i),QString("Style %1").arg(i));
-    customStyle.beginning=pconfig->readEntry(QString("Custom Style %1 Beginning").arg(i));
-    customStyle.ending=pconfig->readEntry(QString("Custom Style %1 Ending").arg(i));
+    customStyle.name=config.readEntry(QString("Custom Style %1 Name").arg(i),QString("Style %1").arg(i));
+    customStyle.beginning=config.readEntry(QString("Custom Style %1 Beginning").arg(i));
+    customStyle.ending=config.readEntry(QString("Custom Style %1 Ending").arg(i));
     if (customStyle.ending=="\\s") customStyle.ending=" "; // work around KDE bug
-    QString ignoreEndingAfter=pconfig->readEntry(QString("Custom Style %1 Ignore Ending After").arg(i));
+    QString ignoreEndingAfter=config.readEntry(QString("Custom Style %1 Ignore Ending After").arg(i));
     customStyle.ignoreEndingAfter=ignoreEndingAfter.isEmpty()?QChar():ignoreEndingAfter[0];
-    customStyle.switchable=pconfig->readBoolEntry(QString("Custom Style %1 Switchable").arg(i));
-    customStyle.lineStartOnly=pconfig->readBoolEntry(QString("Custom Style %1 Line Start Only").arg(i));
-    customStyle.color=pconfig->readEntry(QString("Custom Style %1 Color").arg(i),QColor());
-    customStyle.style=pconfig->readUnsignedNumEntry(QString("Custom Style %1 Style").arg(i));
+    customStyle.switchable=config.readEntry(QString("Custom Style %1 Switchable").arg(i),false);
+    customStyle.lineStartOnly=config.readEntry(QString("Custom Style %1 Line Start Only").arg(i),false);
+    customStyle.color=config.readEntry(QString("Custom Style %1 Color").arg(i),QColor());
+    customStyle.style=config.readEntry(QString("Custom Style %1 Style").arg(i),0u);
     synprefs.customStyles.append(customStyle);
   }
-  unsigned numWordLists=pconfig->readUnsignedNumEntry("Num Word Lists");
+  unsigned numWordLists=config.readEntry("Num Word Lists",0u);
   for (unsigned i=0; i<numWordLists; i++) {
     Syn_WordList wordList;
-    wordList.name=pconfig->readEntry(QString("Word List %1 Name").arg(i),QString("Word List %1").arg(i));
-    wordList.list=pconfig->readListEntry(QString("Word List %1 List").arg(i));
-    wordList.color=pconfig->readEntry(QString("Word List %1 Color").arg(i),QColor());
-    wordList.style=pconfig->readUnsignedNumEntry(QString("Word List %1 Style").arg(i));
-    wordList.caseSensitive=pconfig->readBoolEntry(QString("Word List %1 Case Sensitive").arg(i));
+    wordList.name=config.readEntry(QString("Word List %1 Name").arg(i),QString("Word List %1").arg(i));
+    wordList.list=config.readEntry(QString("Word List %1 List").arg(i),QStringList());
+    wordList.color=config.readEntry(QString("Word List %1 Color").arg(i),QColor());
+    wordList.style=config.readEntry(QString("Word List %1 Style").arg(i),0u);
+    wordList.caseSensitive=config.readEntry(QString("Word List %1 Case Sensitive").arg(i),false);
     synprefs.wordLists.append(wordList);
   }
   return TRUE;
@@ -492,38 +493,38 @@ static bool loadSyntaxPreferences(void)
 static void saveSyntaxPreference(const Syn_SettingsForDoc &synprefs, const QString &group)
 {
   unsigned i;
-  pconfig->setGroup(group+" Syntax Highlighting");
-  pconfig->writeEntry("Enabled",synprefs.enabled);
-  pconfig->writeEntry("Number Color",synprefs.numberColor);
-  pconfig->writeEntry("Symbol Color",synprefs.symbolColor);
+  KConfigGroup config=pconfig->group(group+" Syntax Highlighting");
+  config.writeEntry("Enabled",synprefs.enabled);
+  config.writeEntry("Number Color",synprefs.numberColor);
+  config.writeEntry("Symbol Color",synprefs.symbolColor);
   i=0;
   foreach (const QColor &color, synprefs.parenthesisColors)
-    pconfig->writeEntry(QString("Parenthesis Color %1").arg(i++),color);
-  pconfig->writeEntry("Num Parenthesis Colors",i);
-  pconfig->writeEntry("Number Style",(unsigned)synprefs.numberStyle);
-  pconfig->writeEntry("Symbol Style",(unsigned)synprefs.symbolStyle);
-  pconfig->writeEntry("Parenthesis Style",(unsigned)synprefs.parenthesisStyle);
+    config.writeEntry(QString("Parenthesis Color %1").arg(i++),color);
+  config.writeEntry("Num Parenthesis Colors",i);
+  config.writeEntry("Number Style",(unsigned)synprefs.numberStyle);
+  config.writeEntry("Symbol Style",(unsigned)synprefs.symbolStyle);
+  config.writeEntry("Parenthesis Style",(unsigned)synprefs.parenthesisStyle);
   i=0;
   foreach (const Syn_CustomStyle &customStyle, synprefs.customStyles) {
-    pconfig->writeEntry(QString("Custom Style %1 Name").arg(i),customStyle.name);
-    pconfig->writeEntry(QString("Custom Style %1 Beginning").arg(i),customStyle.beginning);
-    pconfig->writeEntry(QString("Custom Style %1 Ending").arg(i),customStyle.ending);
-    pconfig->writeEntry(QString("Custom Style %1 Ignore Ending After").arg(i),QString(customStyle.ignoreEndingAfter));
-    pconfig->writeEntry(QString("Custom Style %1 Switchable").arg(i),customStyle.switchable);
-    pconfig->writeEntry(QString("Custom Style %1 Line Start Only").arg(i),customStyle.lineStartOnly);
-    pconfig->writeEntry(QString("Custom Style %1 Color").arg(i),customStyle.color);
-    pconfig->writeEntry(QString("Custom Style %1 Style").arg(i++),(unsigned)customStyle.style);
+    config.writeEntry(QString("Custom Style %1 Name").arg(i),customStyle.name);
+    config.writeEntry(QString("Custom Style %1 Beginning").arg(i),customStyle.beginning);
+    config.writeEntry(QString("Custom Style %1 Ending").arg(i),customStyle.ending);
+    config.writeEntry(QString("Custom Style %1 Ignore Ending After").arg(i),QString(customStyle.ignoreEndingAfter));
+    config.writeEntry(QString("Custom Style %1 Switchable").arg(i),customStyle.switchable);
+    config.writeEntry(QString("Custom Style %1 Line Start Only").arg(i),customStyle.lineStartOnly);
+    config.writeEntry(QString("Custom Style %1 Color").arg(i),customStyle.color);
+    config.writeEntry(QString("Custom Style %1 Style").arg(i++),(unsigned)customStyle.style);
   }
-  pconfig->writeEntry("Num Custom Styles",i);
+  config.writeEntry("Num Custom Styles",i);
   i=0;
   foreach (const Syn_WordList &wordList, synprefs.wordLists) {
-    pconfig->writeEntry(QString("Word List %1 Name").arg(i),wordList.name);
-    pconfig->writeEntry(QString("Word List %1 List").arg(i),wordList.list);
-    pconfig->writeEntry(QString("Word List %1 Color").arg(i),wordList.color);
-    pconfig->writeEntry(QString("Word List %1 Style").arg(i),(unsigned)wordList.style);
-    pconfig->writeEntry(QString("Word List %1 Case Sensitive").arg(i++),wordList.caseSensitive);
+    config.writeEntry(QString("Word List %1 Name").arg(i),wordList.name);
+    config.writeEntry(QString("Word List %1 List").arg(i),wordList.list);
+    config.writeEntry(QString("Word List %1 Color").arg(i),wordList.color);
+    config.writeEntry(QString("Word List %1 Style").arg(i),(unsigned)wordList.style);
+    config.writeEntry(QString("Word List %1 Case Sensitive").arg(i++),wordList.caseSensitive);
   }
-  pconfig->writeEntry("Num Word Lists",i);
+  config.writeEntry("Num Word Lists",i);
 }
 
 static void saveSyntaxPreferences(void)
@@ -1592,105 +1593,76 @@ static void defaultSynHighlight(void)
 static void updateEditorPreferences(void)
 {
   KConfig kateschema("kateschemarc");
+  KConfigGroup kateNormal=kateschema.group("kate - Normal");
+  KConfigGroup ktigccNormal=kateschema.group("ktigcc - Normal");
   QColor color;
   if (preferences.useBgColor) {
-    kateschema.setGroup("ktigcc - Normal");
-    kateschema.writeEntry("Color Background",preferences.bgColor);
-    kateschema.writeEntry("Color Highlighted Line",preferences.bgColor);
+    ktigccNormal.writeEntry("Color Background",preferences.bgColor);
+    ktigccNormal.writeEntry("Color Highlighted Line",preferences.bgColor);
   } else {
-    kateschema.setGroup("kate - Normal");
-    color=kateschema.readEntry("Color Background",QColor(255,255,255));
-    kateschema.setGroup("ktigcc - Normal");
-    kateschema.writeEntry("Color Background",color);
-    kateschema.setGroup("kate - Normal");
-    color=kateschema.readEntry("Color Highlighted Line",QColor(240,240,240));
-    kateschema.setGroup("ktigcc - Normal");
-    kateschema.writeEntry("Color Highlighted Line",color);
+    color=kateNormal.readEntry("Color Background",QColor(255,255,255));
+    ktigccNormal.writeEntry("Color Background",color);
+    color=kateNormal.readEntry("Color Highlighted Line",QColor(240,240,240));
+    ktigccNormal.writeEntry("Color Highlighted Line",color);
   }
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color Highlighted Bracket",QColor(255,255,153));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color Highlighted Bracket",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color Icon Bar",QColor(234,233,232));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color Icon Bar",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color Line Number",QColor(0,0,0));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color Line Number",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType1",QColor(0,0,255));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType1",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType2",QColor(255,0,0));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType2",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType3",QColor(255,255,0));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType3",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType4",QColor(255,0,255));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType4",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType5",QColor(160,160,164));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType5",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType6",QColor(0,255,0));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType6",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color MarkType7",QColor(255,0,0));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color MarkType7",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color Selection",QColor(76,89,166));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color Selection",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color Tab Marker",QColor(0,0,0));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color Tab Marker",color);
-  kateschema.setGroup("kate - Normal");
-  color=kateschema.readEntry("Color Word Wrap Marker",QColor(120,120,120));
-  kateschema.setGroup("ktigcc - Normal");
-  kateschema.writeEntry("Color Word Wrap Marker",color);
-  kateschema.writeEntry("Font",preferences.editorFont);
+  color=kateNormal.readEntry("Color Highlighted Bracket",QColor(255,255,153));
+  ktigccNormal.writeEntry("Color Highlighted Bracket",color);
+  color=kateNormal.readEntry("Color Icon Bar",QColor(234,233,232));
+  ktigccNormal.writeEntry("Color Icon Bar",color);
+  color=kateNormal.readEntry("Color Line Number",QColor(0,0,0));
+  ktigccNormal.writeEntry("Color Line Number",color);
+  color=kateNormal.readEntry("Color MarkType1",QColor(0,0,255));
+  ktigccNormal.writeEntry("Color MarkType1",color);
+  color=kateNormal.readEntry("Color MarkType2",QColor(255,0,0));
+  ktigccNormal.writeEntry("Color MarkType2",color);
+  color=kateNormal.readEntry("Color MarkType3",QColor(255,255,0));
+  ktigccNormal.writeEntry("Color MarkType3",color);
+  color=kateNormal.readEntry("Color MarkType4",QColor(255,0,255));
+  ktigccNormal.writeEntry("Color MarkType4",color);
+  color=kateNormal.readEntry("Color MarkType5",QColor(160,160,164));
+  ktigccNormal.writeEntry("Color MarkType5",color);
+  color=kateNormal.readEntry("Color MarkType6",QColor(0,255,0));
+  ktigccNormal.writeEntry("Color MarkType6",color);
+  color=kateNormal.readEntry("Color MarkType7",QColor(255,0,0));
+  ktigccNormal.writeEntry("Color MarkType7",color);
+  color=kateNormal.readEntry("Color Selection",QColor(76,89,166));
+  ktigccNormal.writeEntry("Color Selection",color);
+  color=kateNormal.readEntry("Color Tab Marker",QColor(0,0,0));
+  ktigccNormal.writeEntry("Color Tab Marker",color);
+  color=kateNormal.readEntry("Color Word Wrap Marker",QColor(120,120,120));
+  ktigccNormal.writeEntry("Color Word Wrap Marker",color);
+  ktigccNormal.writeEntry("Font",preferences.editorFont);
 }
 
 void loadPreferences(void)
 {
   // This doesn't really _load_ a preference...
   if (!pconfig->hasGroup("Kate Document Defaults")) {
-    pconfig->setGroup("Kate Document Defaults");
-    pconfig->writeEntry("Tab Handling",0);
-    pconfig->writeEntry("Basic Config Flags",0x1000020u);
+    KConfigGroup docDefaults=pconfig->group("Kate Document Defaults");
+    docDefaults.writeEntry("Tab Handling",0);
+    docDefaults.writeEntry("Basic Config Flags",0x1000020u);
     pconfig->sync();
   }
 
-  pconfig->setGroup("Preferences");
+  KConfigGroup config=pconfig->group("Preferences");
 
   // General
-  preferences.stopAtFirstError=pconfig->readBoolEntry("Stop at First Error",false);
-  preferences.jumpToError=pconfig->readBoolEntry("Jump to Error",true);
-  preferences.successMessage=pconfig->readBoolEntry("Success Message",true);
-  preferences.deleteAsmFiles=pconfig->readBoolEntry("Delete Asm Files",true);
-  preferences.deleteObjFiles=pconfig->readBoolEntry("Delete Object Files",false);
-  preferences.splitSourceFiles=pconfig->readBoolEntry("Split Source Files",true);
-  preferences.allowImplicitDeclaration=pconfig->readBoolEntry("Allow Implicit Declaration",true);
-  preferences.autoSave=pconfig->readBoolEntry("Auto Save",true);
-  preferences.downloadHeadlines=pconfig->readBoolEntry("Download Headlines",false);
-  preferences.deleteOverwrittenErrors=pconfig->readBoolEntry("Delete Overwritten Errors",true);
-  preferences.useSystemIcons=pconfig->readBoolEntry("Use System Icons",true);
+  preferences.stopAtFirstError=config.readEntry("Stop at First Error",false);
+  preferences.jumpToError=config.readEntry("Jump to Error",true);
+  preferences.successMessage=config.readEntry("Success Message",true);
+  preferences.deleteAsmFiles=config.readEntry("Delete Asm Files",true);
+  preferences.deleteObjFiles=config.readEntry("Delete Object Files",false);
+  preferences.splitSourceFiles=config.readEntry("Split Source Files",true);
+  preferences.allowImplicitDeclaration=config.readEntry("Allow Implicit Declaration",true);
+  preferences.autoSave=config.readEntry("Auto Save",true);
+  preferences.downloadHeadlines=config.readEntry("Download Headlines",false);
+  preferences.deleteOverwrittenErrors=config.readEntry("Delete Overwritten Errors",true);
+  preferences.useSystemIcons=config.readEntry("Use System Icons",true);
 
   // Transfer
-  preferences.linkTarget=(LinkTargets)pconfig->readNumEntry("Link Target",LT_NONE);
-  preferences.linkPort=(CablePort)pconfig->readNumEntry("Link Port",PORT_1);
-  preferences.linkCable=(CableModel)pconfig->readNumEntry("Link Cable",CABLE_GRY);
+  preferences.linkTarget=(LinkTargets)config.readEntry("Link Target",(int)LT_NONE);
+  preferences.linkPort=(CablePort)config.readEntry("Link Port",(int)PORT_1);
+  preferences.linkCable=(CableModel)config.readEntry("Link Cable",(int)CABLE_GRY);
   // Don't allow selecting a USB cable if libticables2 has been compiled without
   // USB support or if USB support can't be used.
   if (!have_usb) {
@@ -1701,25 +1673,25 @@ void loadPreferences(void)
   }
 
   // Editor
-  preferences.tabWidthC=pconfig->readUnsignedNumEntry("Tab Width C",2);
-  preferences.tabWidthAsm=pconfig->readUnsignedNumEntry("Tab Width Asm",8);
-  preferences.useBgColor=pconfig->readBoolEntry("Use Background Color",false);
-  preferences.bgColor=pconfig->readEntry("Background Color",QColor(255,255,255));
-  preferences.editorFont=pconfig->readEntry("Editor Font",QFont("Monospace",10));
-  preferences.useCalcCharset=pconfig->readBoolEntry("Use Calc Charset",true);
-  preferences.autoBlocks=pconfig->readBoolEntry("Auto Blocks",true);
-  preferences.removeTrailingSpaces=pconfig->readBoolEntry("Remove Trailing Spaces",false);
+  preferences.tabWidthC=config.readEntry("Tab Width C",2u);
+  preferences.tabWidthAsm=config.readEntry("Tab Width Asm",8u);
+  preferences.useBgColor=config.readEntry("Use Background Color",false);
+  preferences.bgColor=config.readEntry("Background Color",QColor(255,255,255));
+  preferences.editorFont=config.readEntry("Editor Font",QFont("Monospace",10));
+  preferences.useCalcCharset=config.readEntry("Use Calc Charset",true);
+  preferences.autoBlocks=config.readEntry("Auto Blocks",true);
+  preferences.removeTrailingSpaces=config.readEntry("Remove Trailing Spaces",false);
 
   updateEditorPreferences();
 
   // Coding
-  if (pconfig->hasKey("Num Coding Templates")) {
-    unsigned numTemplates=pconfig->readUnsignedNumEntry("Num Coding Templates");
+  if (config.hasKey("Num Coding Templates")) {
+    unsigned numTemplates=config.readEntry("Num Coding Templates",0u);
     preferences.templates.clear();
     for (unsigned i=0; i<numTemplates; i++) {
       preferences.templates.append(qMakePair(
-        pconfig->readEntry(QString("Coding Template %1 Name").arg(i)),
-        pconfig->readEntry(QString("Coding Template %1 Text").arg(i))));
+        config.readEntry(QString("Coding Template %1 Name").arg(i)),
+        config.readEntry(QString("Coding Template %1 Text").arg(i))));
     }
   } else {
     preferences.templates.clear();
@@ -1742,35 +1714,35 @@ void loadPreferences(void)
 
 void savePreferences(void)
 {
-  pconfig->setGroup("Preferences");
+  KConfigGroup config=pconfig->group("Preferences");
 
   // General
-  pconfig->writeEntry("Stop at First Error",(bool)preferences.stopAtFirstError);
-  pconfig->writeEntry("Jump to Error",(bool)preferences.jumpToError);
-  pconfig->writeEntry("Success Message",(bool)preferences.successMessage);
-  pconfig->writeEntry("Delete Asm Files",(bool)preferences.deleteAsmFiles);
-  pconfig->writeEntry("Delete Object Files",(bool)preferences.deleteObjFiles);
-  pconfig->writeEntry("Split Source Files",(bool)preferences.splitSourceFiles);
-  pconfig->writeEntry("Allow Implicit Declaration",(bool)preferences.allowImplicitDeclaration);
-  pconfig->writeEntry("Auto Save",(bool)preferences.autoSave);
-  pconfig->writeEntry("Download Headlines",(bool)preferences.downloadHeadlines);
-  pconfig->writeEntry("Delete Overwritten Errors",(bool)preferences.deleteOverwrittenErrors);
-  pconfig->writeEntry("Use System Icons",(bool)preferences.useSystemIcons);
+  config.writeEntry("Stop at First Error",(bool)preferences.stopAtFirstError);
+  config.writeEntry("Jump to Error",(bool)preferences.jumpToError);
+  config.writeEntry("Success Message",(bool)preferences.successMessage);
+  config.writeEntry("Delete Asm Files",(bool)preferences.deleteAsmFiles);
+  config.writeEntry("Delete Object Files",(bool)preferences.deleteObjFiles);
+  config.writeEntry("Split Source Files",(bool)preferences.splitSourceFiles);
+  config.writeEntry("Allow Implicit Declaration",(bool)preferences.allowImplicitDeclaration);
+  config.writeEntry("Auto Save",(bool)preferences.autoSave);
+  config.writeEntry("Download Headlines",(bool)preferences.downloadHeadlines);
+  config.writeEntry("Delete Overwritten Errors",(bool)preferences.deleteOverwrittenErrors);
+  config.writeEntry("Use System Icons",(bool)preferences.useSystemIcons);
 
   // Transfer
-  pconfig->writeEntry("Link Target",(int)preferences.linkTarget);
-  pconfig->writeEntry("Link Port",(int)preferences.linkPort);
-  pconfig->writeEntry("Link Cable",(int)preferences.linkCable);
+  config.writeEntry("Link Target",(int)preferences.linkTarget);
+  config.writeEntry("Link Port",(int)preferences.linkPort);
+  config.writeEntry("Link Cable",(int)preferences.linkCable);
 
   // Editor
-  pconfig->writeEntry("Tab Width C",(unsigned)preferences.tabWidthC);
-  pconfig->writeEntry("Tab Width Asm",(unsigned)preferences.tabWidthAsm);
-  pconfig->writeEntry("Use Background Color",(bool)preferences.useBgColor);
-  pconfig->writeEntry("Background Color",preferences.bgColor);
-  pconfig->writeEntry("Editor Font",preferences.editorFont);
-  pconfig->writeEntry("Use Calc Charset",(bool)preferences.useCalcCharset);
-  pconfig->writeEntry("Auto Blocks",(bool)preferences.autoBlocks);
-  pconfig->writeEntry("Remove Trailing Spaces",(bool)preferences.removeTrailingSpaces);
+  config.writeEntry("Tab Width C",(unsigned)preferences.tabWidthC);
+  config.writeEntry("Tab Width Asm",(unsigned)preferences.tabWidthAsm);
+  config.writeEntry("Use Background Color",(bool)preferences.useBgColor);
+  config.writeEntry("Background Color",preferences.bgColor);
+  config.writeEntry("Editor Font",preferences.editorFont);
+  config.writeEntry("Use Calc Charset",(bool)preferences.useCalcCharset);
+  config.writeEntry("Auto Blocks",(bool)preferences.autoBlocks);
+  config.writeEntry("Remove Trailing Spaces",(bool)preferences.removeTrailingSpaces);
 
   updateEditorPreferences();
 
@@ -1778,10 +1750,10 @@ void savePreferences(void)
   unsigned i=0;
   typedef const QPair<QString,QString> &StringPairConstRef;
   foreach (StringPairConstRef pair, preferences.templates) {
-    pconfig->writeEntry(QString("Coding Template %1 Name").arg(i),pair.first);
-    pconfig->writeEntry(QString("Coding Template %1 Text").arg(i++),pair.second);
+    config.writeEntry(QString("Coding Template %1 Name").arg(i),pair.first);
+    config.writeEntry(QString("Coding Template %1 Text").arg(i++),pair.second);
   }
-  pconfig->writeEntry("Num Coding Templates",i);
+  config.writeEntry("Num Coding Templates",i);
 
   // Syntax, save to disk
   saveSyntaxPreferences();