File FIXME.diff of Package kconfigeditor

--- kconfigeditor/src/subsystems/kde/kdesubsystem.cpp
+++ kconfigeditor/src/subsystems/kde/kdesubsystem.cpp	2004/09/13 19:12:21
@@ -160,7 +160,7 @@
     --m_pendingJobs;
     //we need to get all kcfg files before starting parser or
     //we'll end up with conflicts between kconfig and kcfg files
-    if ( !m_pendingJobs ) {
+    if ( m_pendingJobs<=0 ) {
         progressItem()->setTotalItems( m_allItems );
         progressItem()->setLabel( i18n( "Parsing KDE files..." ) );
         progressItem()->setStatus( i18n( "Parsing..." ) );
Index: kconfigeditor/src/subsystems/kde/kdesubsystem.cpp
===================================================================
--- kconfigeditor/src/subsystems/kde/kdesubsystem.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/subsystems/kde/kdesubsystem.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -31,12 +31,14 @@
 #include <kio/scheduler.h>
 #include <kfileitem.h>
 
+#include <kapplication.h>
 #include <kglobal.h>
 #include <kstandarddirs.h>
 #include <kconfig.h>
 #include <klocale.h>
 #include <kdebug.h>
 
+#include <qeventloop.h>
 #include <qdom.h>
 #include <qfile.h>
 #include <qcstring.h>
@@ -125,7 +127,7 @@
 
 void KDESubsystem::createListJob( const QString &url, bool kcfg )
 {
-    //kdDebug()<<"List job with url = "<<url<<endl;
+    kdDebug()<<"List job with url = "<<url<<endl;
     KIO::SimpleJob* job = KIO::listDir( url, false );
 
     if ( kcfg )
@@ -136,8 +138,16 @@
              SLOT(slotEntries(KIO::Job*, const KIO::UDSEntryList&)) );
     connect( job, SIGNAL(result(KIO::Job *)),
              SLOT(slotListResult(KIO::Job *)) );
+    connect( job, SIGNAL(canceled(KIO::Job*)),
+             SLOT(slotListCanceled(KIO::Job *)) );
 }
 
+void KDESubsystem::slotListCanceled( KIO::Job *job )
+{
+    m_pendingKCFG.remove( job ); //we get this if an error occurred
+    --m_pendingJobs;
+}
+
 void KDESubsystem::slotEntries( KIO::Job *job, const KIO::UDSEntryList &lst )
 {
     KIO::SimpleJob *sjob = static_cast<KIO::SimpleJob*>( job );
@@ -170,7 +180,7 @@
 
 void KDESubsystem::slotListResult( KIO::Job* job )
 {
-    m_pendingKCFG.remove( job ); //we get this if an error occured
+    m_pendingKCFG.remove( job ); //we get this if an error occurred
     --m_pendingJobs;
 }
 
@@ -187,7 +197,8 @@
         pair = m_kconfigURLS.front();
         m_kconfigURLS.pop_front();
     } else {
-        if ( m_kcfgURLS.isEmpty() && m_kconfigURLS.isEmpty() && m_pendingJobs && !m_finishedParsing ) {
+        if ( m_kcfgURLS.isEmpty() && m_kconfigURLS.isEmpty() && m_pendingJobs &&
+             !m_finishedParsing ) {
             //finished parsing
             m_finishedParsing = true;
             kdDebug()<<"X Finished parsing"<<endl;
@@ -209,7 +220,8 @@
 
     ++m_parsedItems;
 
-    if ( m_kcfgURLS.isEmpty() && m_kconfigURLS.isEmpty() && m_pendingJobs && !m_finishedParsing) {
+    if ( m_kcfgURLS.isEmpty() && m_kconfigURLS.isEmpty() && m_pendingJobs &&
+         !m_finishedParsing) {
         //finished parsing
         m_finishedParsing = true;
         kdDebug()<<"Finished parsing"<<endl;
@@ -418,6 +430,8 @@
                                      type,
                                      hidden );
         Q_ASSERT( token );
+        if (!token)
+		return;
         //token->attach( m_view );
     } else {
         //FIXME: might need to switch types here
@@ -475,7 +489,6 @@
 
 void KDESubsystem::startAttaching()
 {
-
     m_view->triggerUpdate();
 
     GroupToken *group = 0;
@@ -497,9 +510,10 @@
         ++i;
         ++m_attachIterator;
         if ( i == MAXITERS ) {
+            i = 0;
             ++m_parsedItems;
             progressItem()->setProgress( m_parsedItems*100 / m_allItems );
-            break;
+            kapp->eventLoop()->processEvents( QEventLoop::ExcludeUserInput );
         }
     }
 
@@ -507,6 +521,7 @@
     if ( !group ) {
         progressItem()->setStatus( i18n( "Done" ) );
         progressItem()->setComplete();
+        emit parsingFinished( this );
         m_attaching = false;
     } else {
         QTimer::singleShot( 0, this, SLOT(startAttaching()) );
Index: kconfigeditor/src/subsystems/kde/kdesubsystem.h
===================================================================
--- kconfigeditor/src/subsystems/kde/kdesubsystem.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/subsystems/kde/kdesubsystem.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -65,6 +65,7 @@
         void parseNextFile();
         void slotEntries( KIO::Job *job, const KIO::UDSEntryList &lst );
         void slotListResult( KIO::Job* job );
+        void slotListCanceled( KIO::Job *job );
         void startAttaching();
 
     protected:
Index: kconfigeditor/src/subsystems/gnome/gnomesubsystem.cpp
===================================================================
--- kconfigeditor/src/subsystems/gnome/gnomesubsystem.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/subsystems/gnome/gnomesubsystem.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -109,6 +109,7 @@
         ++itr;
     }
     progressItem()->setComplete();
+    emit parsingFinished( this );
 }
 
 void GNOMESubsystem::attachGroup( GroupToken *token )
Index: kconfigeditor/src/subsystems/gnome/gnomeapp.cpp
===================================================================
--- kconfigeditor/src/subsystems/gnome/gnomeapp.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/subsystems/gnome/gnomeapp.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -47,7 +47,7 @@
 static void printDirs( gpointer data, gpointer user_data )
 {
     GNOMEApp *app = static_cast<GNOMEApp*>( user_data );
-    const char *dir = static_cast<const char*>( data );
+    const char *dir = ( const char * )( data );
     app->newTopLevelItem( dir );
 }
 
@@ -144,7 +144,7 @@
     GSList *dirs = gconf_client_all_dirs( KC( m_client ), path, 0 );
 
     for ( GSList *it = dirs; it; it = g_slist_next( it ) ) {
-        GroupToken *nGroup = token->createGroup( static_cast<const char*>( it->data ) );
+        GroupToken *nGroup = token->createGroup( ( const char * ) ( it->data ) );
         nGroup->propagateChanges( false );
         addDir( nGroup );
     }
Index: kconfigeditor/src/subsystems/gnome/Makefile.am
===================================================================
--- kconfigeditor/src/subsystems/gnome/Makefile.am	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/subsystems/gnome/Makefile.am	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -8,6 +8,6 @@
 
 libgnomesubsystem_la_SOURCES = gnomesubsystem.cpp gnomeapp.cpp gnomescriptgenerator.cpp
 
-libgnomesubsystem_la_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+libgnomesubsystem_la_LDFLAGS = $(GTK_LDFLAGS) $(all_libraries) $(KDE_RPATH)
 
 libgnomesubsystem_la_LIBADD = $(LIB_KFILE) $(GTK_LIBS)
Index: kconfigeditor/src/subsystems/gnome/configure.in.in
===================================================================
--- kconfigeditor/src/subsystems/gnome/configure.in.in	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/subsystems/gnome/configure.in.in	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -5,8 +5,6 @@
 
 AC_DEFUN([AC_FIND_GTK],
 [
-AC_CACHE_VAL(ac_cv_libgtk,
-[
   if test -z "$PKG_CONFIG"; then
     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
   fi
@@ -40,10 +38,12 @@
 			HAVE_GCONF=1
 			AC_DEFINE(HAVE_GCONF,1, [Define if you have GConf2 installed])
 			AC_MSG_RESULT(yes)
-			GTK_LIBS="`$PKG_CONFIG --libs gtk+-2.0 gconf-2.0`"
+			GTK_LDFLAGS="`$PKG_CONFIG --libs-only-L gtk+-2.0 gconf-2.0`"
+			GTK_LIBS="`$PKG_CONFIG --libs-only-l gtk+-2.0 gconf-2.0`"
 			GTK_CFLAGS="`$PKG_CONFIG --cflags gtk+-2.0 gconf-2.0`"
 			AC_SUBST(GTK_LIBS)
 			AC_SUBST(GTK_CFLAGS)
+			AC_SUBST(GTK_LDFLAGS)
 			dnl this would be a fine place to put a compile check, to make
 			dnl sure GTK+ 2.0 really works.
 		fi
@@ -51,6 +51,5 @@
      fi
   fi
 ])
-])
 AC_FIND_GTK
 AM_CONDITIONAL(compile_GNOME, test "$HAVE_GCONF" = 1)
Index: kconfigeditor/src/entries.cpp
===================================================================
--- kconfigeditor/src/entries.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/entries.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -651,3 +651,42 @@
 {
     return QVariant( m_initialValue.url() );
 }
+
+PathListEntry::PathListEntry( GroupToken* parent, const QString& name, bool hidden )
+    : EntriesBase<KURL::List>( parent, name, hidden )
+{
+}
+
+QVariant PathListEntry::variant() const
+{
+    return QVariant( m_value.toStringList() );
+}
+
+void PathListEntry::setVariant( const QVariant& var )
+{
+    m_value = var.toStringList();
+    finishSetting();
+}
+
+QString  PathListEntry::valueAsString() const
+{
+    return m_value.toStringList().join( ", " );
+}
+
+QString  PathListEntry::initialValueAsString() const
+{
+    return m_initialValue.toStringList().join( ", " );
+}
+
+void PathListEntry::setValueFromString( const QString& val )
+{
+    QStringList tmplist = QStringList::split( val,  ", " );
+    m_value =  KURL::List( tmplist );
+    finishSetting();
+}
+
+QVariant PathListEntry::initialValue() const
+{
+    return QVariant( m_initialValue.toStringList() );
+}
+
Index: kconfigeditor/src/entries.h
===================================================================
--- kconfigeditor/src/entries.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/entries.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -386,6 +386,25 @@
         virtual QVariant initialValue() const;
     };
 
+    class PathListEntry : public EntriesBase<KURL::List>
+    {
+    public:
+        PathListEntry( GroupToken* parent, const QString& name, bool hidden=false );
+
+        QVariant variant() const;
+        void setVariant( const QVariant& var );
+
+        QString initialValueAsString() const;
+
+        QString  valueAsString() const;
+        void setValueFromString( const QString& val );
+
+        QString typeName() const { return "PathList"; }
+        Type    type() const { return PathList; }
+
+        virtual QVariant initialValue() const;
+    };
+
 }
 
 #endif
Index: kconfigeditor/src/grouptoken.cpp
===================================================================
--- kconfigeditor/src/grouptoken.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/grouptoken.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -171,6 +171,9 @@
     case EntryToken::Path:
         token = new PathEntry( this, name, hidden );
         break;
+    case EntryToken::PathList:
+        token = new PathListEntry( this, name, hidden );
+        break;
     case EntryToken::Invalid:
     default:
         kdDebug()<<"Wrong type with "<< typeName <<endl;
Index: kconfigeditor/src/treeitems.cpp
===================================================================
--- kconfigeditor/src/treeitems.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/treeitems.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -111,46 +111,32 @@
 void
 GroupItem::updateIcon()
 {
+    KIconLoader *loader = KGlobal::instance()->iconLoader();
     QString name = m_token->name();
 
-    QPixmap pm = KGlobal::iconLoader()->loadIcon( name, KIcon::User, 0,
-                                                  KIcon::DefaultState, 0,
-                                                  true );
-    if ( pm.isNull() )
-        pm = KGlobal::iconLoader()->loadIcon( name, KIcon::Small, 0,
-                                              KIcon::DefaultState, 0,
-                                              true );
+    QPixmap pm = loader->loadIcon( name, KIcon::Small, 0, KIcon::DefaultState, 0,
+                                   true );
+
     //kdDebug()<<"Name "<<name<<" " << pm.isNull() <<endl;
 
     if ( pm.isNull() && name.endsWith( ".rc" ) ) {
         name = name.left( name.length() - 3 );
-        pm = KGlobal::iconLoader()->loadIcon( name, KIcon::User, 0,
-                                              KIcon::DefaultState, 0,
-                                              true );
-        if ( pm.isNull() )
-            pm = KGlobal::iconLoader()->loadIcon( name, KIcon::Small, 0,
-                                                  KIcon::DefaultState, 0,
-                                                  true );
+        pm = loader->loadIcon( name, KIcon::Small, 0, KIcon::DefaultState, 0,
+                               true );
         //kdDebug()<<"Name "<<name<<" " << pm.isNull() <<endl;
     }
 
     if ( pm.isNull() && name.endsWith( "rc" ) ) {
         name = name.left( name.length() - 2 );
-        pm = KGlobal::iconLoader()->loadIcon( name, KIcon::User, 0,
-                                              KIcon::DefaultState, 0,
-                                              true );
-        if ( pm.isNull() )
-            pm = KGlobal::iconLoader()->loadIcon( name, KIcon::Small, 0,
-                                                  KIcon::DefaultState, 0,
-                                                  true );
+        pm = loader->loadIcon( name, KIcon::Small, 0, KIcon::DefaultState, 0,
+                               true );
         //kdDebug()<<"Name "<<name<<" " << pm.isNull() <<endl;
     }
 
 
     if ( pm.isNull() ) {
-        pm = KGlobal::iconLoader()->loadIcon( "configure", KIcon::Small, 0,
-                                              KIcon::DefaultState, 0,
-                                              true );
+        pm = loader->loadIcon( "configure", KIcon::Small, 0, KIcon::DefaultState, 0,
+                               true );
     }
     if ( !pm.isNull() )
         setPixmap( 0, pm );
Index: kconfigeditor/src/interfaces/subsystem.h
===================================================================
--- kconfigeditor/src/interfaces/subsystem.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/interfaces/subsystem.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -83,6 +83,11 @@
          * Discard modification in the subsystem.
          */
         void discard();
+    signals:
+        /**
+         * Emitted when the subsystem has finished parsing
+         */
+        void parsingFinished( Subsystem *sub );
 
     protected:
         /**
Index: kconfigeditor/src/configmanager.h
===================================================================
--- kconfigeditor/src/configmanager.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/configmanager.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -44,12 +44,18 @@
         void save();
         void saveToken( EntryToken *token );
         void showChangesView();
+    signals:
+        void parsingFinished();
+
+    protected slots:
+        void slotParsingFinished( Subsystem *sub );
     private:
         void initSubsystems();
         void initGenerators();
     private:
         QDict<Subsystem> m_subsystems;
         QDict<ScriptGenerator> m_generators;
+        int m_waitingParsers;
     };
 
 
Index: kconfigeditor/src/confwindow.cpp
===================================================================
--- kconfigeditor/src/confwindow.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/confwindow.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -71,6 +71,8 @@
 void
 ConfWindow::delayedInit()
 {
+    m_mainWidget->setDisabled( true );
+    kernel->emitStatusMsg( i18n( "Parsing configuration files..." ) );
     kernel->manager()->parse( m_view );
 }
 
@@ -116,6 +118,7 @@
     m_descrWidget = new DescriptionWidget( s2 );
 
     setCentralWidget( s1 );
+    m_mainWidget = s1;
     m_manager = new ViewManager( m_view, m_editor, m_descrWidget );
 }
 
@@ -124,9 +127,18 @@
 {
     connect( kernel, SIGNAL(statusMsg(const QString&)),
              SLOT(slotStatusMsg(const QString&)) );
+    connect( kernel->manager(), SIGNAL(parsingFinished()),
+             SLOT(slotDoneParsing()) );
 }
 
 void
+ConfWindow::slotDoneParsing()
+{
+    kernel->emitStatusMsg( i18n( "Application ready" ) );
+    m_mainWidget->setEnabled( true );
+}
+
+void
 ConfWindow::slotUndo()
 {
     //later
Index: kconfigeditor/src/token.cpp
===================================================================
--- kconfigeditor/src/token.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/token.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -108,6 +108,7 @@
             s_typeMap.insert( "IntList",    Token::IntList );
             s_typeMap.insert( "Enum",       Token::Enum );
             s_typeMap.insert( "Path",       Token::Path );
+            s_typeMap.insert( "PathList",   Token::PathList );
             s_typeMap.insert( "Invalid",    Token::Invalid );
         }
     }
Index: kconfigeditor/src/main.cpp
===================================================================
--- kconfigeditor/src/main.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/main.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -22,7 +22,7 @@
 #include "confwindow.h"
 #include "kernel.h"
 
-#include <kapp.h>
+#include <kapplication.h>
 #include <kcmdlineargs.h>
 #include <klocale.h>
 #include <kaboutdata.h>
Index: kconfigeditor/src/progressdialog.cpp
===================================================================
--- kconfigeditor/src/progressdialog.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/progressdialog.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -119,7 +119,7 @@
 void TransactionItemView::slotLayoutFirstItem()
 {
   /*
-     The below relies on some details in Qt's behaviour regarding deleting
+     The below relies on some details in Qt's behavior regarding deleting
      objects. This slot is called from the destroyed signal of an item just
      going away. That item is at that point still in the  list of chilren, but
      since the vtable is already gone, it will have type QObject. The first
Index: kconfigeditor/src/configmanager.cpp
===================================================================
--- kconfigeditor/src/configmanager.cpp	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/configmanager.cpp	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -44,7 +44,7 @@
 using namespace KConfigEditor;
 
 ConfigManager::ConfigManager( QObject *parent )
-    : QObject( parent )
+    : QObject( parent ), m_waitingParsers( 0 )
 {
     initSubsystems();
     initGenerators();
@@ -52,9 +52,15 @@
 
 void ConfigManager::initSubsystems()
 {
-    m_subsystems.insert( "kde", new KDESubsystem( this ) );
+    Subsystem *sub = new KDESubsystem( this );
+    m_subsystems.insert( "kde", sub );
+    connect( sub, SIGNAL(parsingFinished(Subsystem*)),
+             SLOT(slotParsingFinished(Subsystem*)) );
 #if HAVE_GCONF
-    m_subsystems.insert( "gnome", new GNOMESubsystem( this ) );
+    sub = new GNOMESubsystem( this );
+    m_subsystems.insert( "gnome", sub );
+    connect( sub, SIGNAL(parsingFinished(Subsystem*)),
+             SLOT(slotParsingFinished(Subsystem*)) );
 #endif
 }
 
@@ -68,13 +74,22 @@
 
 void ConfigManager::parse( ConfigurationView *view )
 {
+    m_waitingParsers = 0;
     QDictIterator<Subsystem> itr( m_subsystems );
     while ( itr.current() ) {
+        ++m_waitingParsers;
         itr.current()->parse( view );
         ++itr;
     }
 }
 
+void ConfigManager::slotParsingFinished( Subsystem * )
+{
+    --m_waitingParsers;
+    if ( !m_waitingParsers )
+        emit parsingFinished();
+}
+
 void ConfigManager::save()
 {
     QDictIterator<Subsystem> itr( m_subsystems );
@@ -140,7 +155,7 @@
     QString str(
         "#!/usr/bin/env kjscmd\n"
         "# The script has been generated by KConfigEditor\n"
-        "# You need KDE 3.3 to run this script!\n" );
+        "# You need KJSEmbed from KDE 3.3 to run this script!\n" );
     return str;
 }
 
@@ -191,7 +206,7 @@
         if ( !contents.isEmpty() ) {
             if ( !initialized ) {
                 scriptText = createScriptHeader();
-                scriptText += "# The script restores configuration to its previous state\n";
+                scriptText += "# The script changes configuration to its current state\n";
                 initialized = true;
             }
             scriptText += contents;
Index: kconfigeditor/src/progressmanager.h
===================================================================
--- kconfigeditor/src/progressmanager.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/progressmanager.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -45,7 +45,7 @@
 
 class ProgressItem : public QObject
 {
-  Q_OBJECT;
+  Q_OBJECT
   friend class ProgressManager;
   friend class QDict< ProgressItem >; // so it can be deleted from dicts
 
@@ -83,7 +83,7 @@
     void setStatus( const QString& v );
 
     /**
-     * @return Whether this item can be cancelled.
+     * @return Whether this item can be canceled.
      */
     bool canBeCanceled() const { return mCanBeCanceled; }
 
@@ -115,7 +115,7 @@
      * Tell the item it has finished. This will emit progressItemCompleted()
      * result in the destruction of the item after all slots connected to this
      * signal have executed. This is the only way to get rid of an item and
-     * needs to be called even if the item is cancelled. Don't use the item
+     * needs to be called even if the item is canceled. Don't use the item
      * after this has been called on it.
      */
     void setComplete();
@@ -165,11 +165,11 @@
      */
     void progressItemCompleted( ProgressItem* );
     /**
-     * Emitted when an item was cancelled. It will _not_ go away immediately,
+     * Emitted when an item was canceled. It will _not_ go away immediately,
      * only when the owner sets it complete, which will usually happen. Can be
-     * used to visually indicate the cancelled status of an item. Should be used
+     * used to visually indicate the canceled status of an item. Should be used
      * by the owner of the item to make sure it is set completed even if it is
-     * cancelled. There is a ProgressManager::slotStandardCancelHandler which
+     * canceled. There is a ProgressManager::slotStandardCancelHandler which
      * simply sets the item completed and can be used if no other work needs to
      * be done on cancel.
      * @param The canceled item;
@@ -230,7 +230,7 @@
  * changes, when they are completed (by their owner), and when they are canceled.
  * Each ProgressItem emits those signals individually and the singleton
  * broadcasts them. Use the ::createProgressItem() statics to acquire an item
- * and then call ->setProgress( int percent ) on it everytime you want to update
+ * and then call ->setProgress( int percent ) on it every time you want to update
  * the item and ->setComplete() when the operation is done. This will delete the
  * item. Connect to the item's progressItemCanceled() signal to be notified when
  * the user cancels the transaction using one of the observing progress dialogs
@@ -249,7 +249,7 @@
 class ProgressManager : public QObject
 {
 
-  Q_OBJECT;
+  Q_OBJECT
 
   public:
 
@@ -264,7 +264,7 @@
     }
 
     /**
-     * Use this to aquire a unique id number which can be used to discern
+     * Use this to acquire a unique id number which can be used to discern
      * an operation from all others going on at the same time. Use that
      * number as the id string for your progressItem to ensure it is unique.
      * @return
@@ -273,7 +273,7 @@
 
      /**
       * Creates a ProgressItem with a unique id and the given label.
-      * This is the simplest way to aquire a progress item. It will not
+      * This is the simplest way to acquire a progress item. It will not
       * have a parent and will be set to be cancellable and not using crypto.
       */
      static ProgressItem * createProgressItem( const QString &label ) {
@@ -292,7 +292,7 @@
      * @param canBeCanceled can the user cancel this operation?
      * @param usesCrypto does the operation use secure transports (SSL)
      * Cancelling the parent will cancel the children as well (if they can be
-     * cancelled) and ongoing children prevent parents from finishing.
+     * canceled) and ongoing children prevent parents from finishing.
      * @return The ProgressItem representing the operation.
      */
      static ProgressItem * createProgressItem( ProgressItem* parent,
Index: kconfigeditor/src/entrytoken.h
===================================================================
--- kconfigeditor/src/entrytoken.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/entrytoken.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -42,7 +42,7 @@
     /**
      * EntryToken is the class representing the base config entries.
      * In incapsulates all features of KConfig and KCfg entries.
-     * EntryToken's are formed by merging informations from KConfig
+     * EntryToken's are formed by merging information from KConfig
      * and KCFG files.
      */
     class EntryToken : public Token
@@ -162,7 +162,7 @@
         }
 
         /**
-         * Is the token taken from an enviroment variable or script.
+         * Is the token taken from an environment variable or script.
          */
         void setFromEnvironment( bool fromEnv ) {
             m_fromEnv = fromEnv;
Index: kconfigeditor/src/propertyeditor/pyesnobutton.h
===================================================================
--- kconfigeditor/src/propertyeditor/pyesnobutton.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/propertyeditor/pyesnobutton.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -20,7 +20,7 @@
 #ifndef PYESNOBUTTON_H
 #define PYESNOBUTTON_H
 
-#include <propertywidget.h>
+#include "propertywidget.h"
 
 class QPushButton;
 
Index: kconfigeditor/src/propertyeditor/pdummywidget.h
===================================================================
--- kconfigeditor/src/propertyeditor/pdummywidget.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/propertyeditor/pdummywidget.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -34,7 +34,7 @@
 /**
 @short %Property editor with empty widget.
 
-This is usefull for properties which can't be edited in a generic way
+This is useful for properties which can't be edited in a generic way
 like QValueList's or QMap's stored in a variant.
 */
 class PDummyWidget: public PropertyWidget
Index: kconfigeditor/src/confwindow.h
===================================================================
--- kconfigeditor/src/confwindow.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/confwindow.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -53,6 +53,7 @@
         void delayedInit();
         void slotSave();
         void slotShowChanges();
+        void slotDoneParsing();
 
     private:
         void initActions();
@@ -61,6 +62,7 @@
         void initConnections();
 
     private:
+        QWidget *m_mainWidget;
         DescriptionWidget *m_descrWidget;
         ConfigurationView *m_view;
         PropertyLib::PropertyEditor *m_editor;
Index: kconfigeditor/src/token.h
===================================================================
--- kconfigeditor/src/token.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/token.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -57,6 +57,7 @@
             IntList,
             Enum,
             Path,
+            PathList,
             Invalid
         };
 
Index: kconfigeditor/src/progressdialog.h
===================================================================
--- kconfigeditor/src/progressdialog.h	(.../kdeextragear-3/kconfigeditor)	(Revision 328779)
+++ kconfigeditor/src/progressdialog.h	(.../extragear/utils/kconfigeditor)	(Arbeitskopie)
@@ -74,7 +74,7 @@
 
 class TransactionItem : public QVBox {
 
-  Q_OBJECT;
+  Q_OBJECT
 
 public:
   TransactionItem( QWidget * parent,