Index: /trunk/src/lib/gui/gtk_gui/gui_keys.cc
===================================================================
--- /trunk/src/lib/gui/gtk_gui/gui_keys.cc	(revision 5944)
+++ /trunk/src/lib/gui/gtk_gui/gui_keys.cc	(revision 5945)
@@ -119,5 +119,5 @@
         pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_LEFT, "LEFT"));
         pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_RIGHT, "RIGHT"));
-        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_FIRE, "MOUSE_LEFT"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_FIRE, "BUTTON_LEFT"));
         pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_NEXT_WEAPON, "m"));
         pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_PREV_WEAPON, "n"));
Index: /trunk/src/lib/parser/ini_parser/ini_parser.cc
===================================================================
--- /trunk/src/lib/parser/ini_parser/ini_parser.cc	(revision 5944)
+++ /trunk/src/lib/parser/ini_parser/ini_parser.cc	(revision 5945)
@@ -43,5 +43,5 @@
 {
   this->fileName = NULL;
-
+  this->comment = NULL;
 
   if (fileName != NULL)
@@ -117,4 +117,6 @@
 {
   FILE*    stream;           //< The stream we use to read the file.
+  int      lineCount = 0;    //< The Count of lines.
+
 
   if (this->fileName != NULL)
@@ -142,4 +144,6 @@
     while( fgets (lineBuffer, PARSELINELENGHT, stream))
     {
+//      if (lineCount == 0)
+
       lineBegin = lineBuffer;
       // remove newline char, and \0-terminate
@@ -183,4 +187,6 @@
 
         this->addVar(lineBegin, valueBegin);
+
+        lineCount++;
       }
     }
@@ -203,5 +209,5 @@
 {
   FILE*    stream;           //!< The stream we use to read the file.
-  if( fileName == NULL)
+  if( fileName == NULL && (fileName = this->fileName) == NULL )
     return false;
 
@@ -224,4 +230,9 @@
   }
   fclose(stream);
+}
+
+void IniParser::setFileComment(const char* fileComment)
+{
+
 }
 
@@ -267,4 +278,16 @@
 
 
+void IniParser::setSectionComment(const char* comment, const char* sectionName)
+{
+
+}
+
+
+const char* IniParser::getSectionComment(const char* sectionName) const
+{
+
+}
+
+
 /**
  * @brief moves to the first section
@@ -296,35 +319,4 @@
   else
     return NULL;
-}
-
-
-/**
- * @brief moves to the first Variable of the current Section
- */
-void IniParser::firstVar()
-{
-  if (!this->sections.empty() &&
-      this->currentSection != this->sections.end())
-    this->currentEntry = (*this->currentSection).entries.begin();
-}
-
-
-/**
- * @brief gets the next VarName = VarValue pair from the parsing stream
- * @return true on success, false otherwise (in the latter case name and value will be NULL)
- */
-bool IniParser::nextVar()
-{
-  if ( this->sections.empty()
-       || this->currentSection == this->sections.end()
-       || this->currentEntry == (*this->currentSection).entries.end())
-    return false;
-
-  this->currentEntry++;
-
-  if (this->currentEntry == (*this->currentSection).entries.end())
-    return false;
-  else
-    return true;
 }
 
@@ -351,4 +343,5 @@
   else
     section = this->currentSection;
+
   if (section == this->sections.end())
     return false;
@@ -367,7 +360,7 @@
     strcpy((*section).entries.back().value, value);
     PRINTF(5)("Added Entry %s with Value '%s' to Section %s\n",
-	      (*section).entries.back().name,
-	      (*section).entries.back().value,
-	      (*section).name);
+              (*section).entries.back().name,
+              (*section).entries.back().value,
+              (*section).name);
     return true;
   }
@@ -387,30 +380,18 @@
 const char* IniParser::getVar(const char* entryName, const char* sectionName, const char* defaultValue) const
 {
-  if (fileName != NULL)
-  {
-    std::list<IniSection>::const_iterator section;
-    if (sectionName != NULL)
-      {
-	for (section = this->sections.begin(); section != this->sections.end(); section++)
-	  {
-	    if (!strcmp((*section).name, sectionName))
-	      {
-		break;
-	      }
-	  }
-      }
-    else
-      section = this->currentSection;
-
-   if (section == this->sections.end())
-     {
-       PRINTF(2)("Section %s that should be containing %s not found.\n", sectionName, entryName);
-       return (defaultValue);
-     }
+  if (this->fileName != NULL)
+  {
+    std::list<IniSection>::const_iterator section = this->getSectionIT(sectionName);
+
+  if (section == this->sections.end())
+    {
+      PRINTF(2)("Section %s that should be containing %s not found.\n", sectionName, entryName);
+      return (defaultValue);
+    }
 
     std::list<IniEntry>::const_iterator entry;
     for (entry = (*section).entries.begin(); entry != (*section).entries.end(); entry++)
       if (!strcmp((*entry).name, entryName))
-	return (*entry).value;
+        return (*entry).value;
     PRINTF(2)("Entry '%s' in section '%s' not found.\n", entryName, sectionName);
 
@@ -422,4 +403,50 @@
 
 }
+
+
+const char* IniParser::setEntryComment(const char* comment, const char* entryName, const char* sectionName)
+{
+
+
+}
+
+
+const char* IniParser::getEntryComment(const char* entryName, const char* sectionName) const
+{
+
+
+}
+
+
+/**
+ * @brief moves to the first Variable of the current Section
+ */
+void IniParser::firstVar()
+{
+  if (!this->sections.empty() &&
+       this->currentSection != this->sections.end())
+    this->currentEntry = (*this->currentSection).entries.begin();
+}
+
+
+/**
+ * @brief gets the next VarName = VarValue pair from the parsing stream
+ * @return true on success, false otherwise (in the latter case name and value will be NULL)
+ */
+bool IniParser::nextVar()
+{
+  if ( this->sections.empty()
+       || this->currentSection == this->sections.end()
+       || this->currentEntry == (*this->currentSection).entries.end())
+    return false;
+
+  this->currentEntry++;
+
+  if (this->currentEntry == (*this->currentSection).entries.end())
+    return false;
+  else
+    return true;
+}
+
 
 
@@ -464,4 +491,33 @@
 
 
+std::list<IniParser::IniSection>::const_iterator IniParser::getSectionIT(const char* sectionName) const
+{
+  std::list<IniSection>::const_iterator section;
+  if (sectionName != NULL)
+  {
+    for (section = this->sections.begin(); section != this->sections.end(); section++)
+    {
+      if (!strcmp((*section).name, sectionName))
+      {
+        break;
+      }
+    }
+  }
+  else
+    section = this->currentSection;
+
+  return section;
+}
+
+
+std::list<IniParser::IniEntry>::const_iterator IniParser::getEntryIT(const char* entryName, const char* sectionName) const
+{
+  if (entryName == NULL)
+    return this->currentEntry;
+
+}
+
+
+
 /**
  * @brief output the whole tree in a nice and easy way.
Index: /trunk/src/lib/parser/ini_parser/ini_parser.h
===================================================================
--- /trunk/src/lib/parser/ini_parser/ini_parser.h	(revision 5944)
+++ /trunk/src/lib/parser/ini_parser/ini_parser.h	(revision 5945)
@@ -27,12 +27,15 @@
     struct IniEntry
     {
-      char*              name;     //!< name of a given Entry
-      char*              value;    //!< value of a given Entry
+      char*               comment;  //!< A Comment that is appendet to the Top of this Entry.
+      char*               name;     //!< name of a given Entry
+      char*               value;    //!< value of a given Entry
     };
+
     //! a struct for Sections in the Parser's file
     struct IniSection
     {
-      char*               name;    //!< name of a given section
-      std::list<IniEntry> entries; //!< a list of entries for this section
+      char*               comment;  //!< A Comment that is appendet to the Top of this Section.
+      char*               name;     //!< name of a given section
+      std::list<IniEntry> entries;  //!< a list of entries for this section
     };
     ////////////////////////////////////
@@ -42,29 +45,42 @@
     ~IniParser ();
 
+    /** @returns true if the file is opened, false otherwise*/
+    bool isOpen() const { return (this->fileName != NULL)? true : false; };
+    /** @returns the fileName we have opened. */
+    const char* getFileName() const { return this->fileName; };
+
     bool readFile(const char* fileName);
     bool writeFile(const char* fileName) const;
 
+    void setFileComment(const char* fileComment);
+    const char* getFileComment() const { return this->comment; };
+
     bool addSection(const char* sectionName);
     bool getSection(const char* sectionName);
+    void setSectionComment(const char* comment, const char* sectionName);
+    const char* getSectionComment(const char* sectionNane) const;
 
-    /** @returns true if the file is opened, false otherwise*/
-    bool isOpen() const { return (this->fileName != NULL)? true : false; };
-
+    // iterate through sections with these Functions
     void firstSection();
     const char* nextSection();
 
-    /** @returns the fileName we have opened. */
-    const char* getFileName() const { return this->fileName; };
 
     bool addVar(const char* entryName, const char* value, const char* sectionName = NULL);
     const char* getVar(const char* entryName, const char* sectionName, const char* defaultValue = "") const;
+    const char* setEntryComment(const char* comment, const char* entryName, const char* sectionName);
+    const char* getEntryComment(const char* entryName, const char* sectionName) const;
 
+    // iterate Through Variables with these Functions.
     void firstVar();
     bool nextVar();
 
+
+    // retrieving functions when iterating.
     const char* getCurrentSection() const;
     const char* getCurrentName() const;
     const char* getCurrentValue() const;
 
+
+    // maintenance.
     void debug() const;
 
@@ -74,9 +90,15 @@
     void setFileName(const char* fileName);
 
+    std::list<IniSection>::const_iterator getSectionIT(const char* sectionName) const;
+    std::list<IniEntry>::const_iterator getEntryIT(const char* entryName, const char* sectionName = NULL) const;
+
   private:
     char*                            fileName;        //!< The name of the File that was parsed.
+    char*                            comment;         //!< A Comment for the header of this File.
     std::list<IniSection>            sections;        //!< a list of all stored Sections of the Parser
     std::list<IniSection>::iterator  currentSection;  //!< the current selected Section
     std::list<IniEntry>::iterator    currentEntry;    //!< the current selected entry (in currentSection)
+
+    std::list<char*>                 commentList;     //!< A list of Comments. (this is for temporary saving of Comments, that are inserted in front of Sections/Entries.)
 };
 
