Index: code/branches/presentationHS15/data/gui/scripts/SheetManager.lua
===================================================================
--- code/branches/presentationHS15/data/gui/scripts/SheetManager.lua	(revision 11045)
+++ code/branches/presentationHS15/data/gui/scripts/SheetManager.lua	(revision 11046)
@@ -24,4 +24,13 @@
         cursor:show()
     end
+end
+
+function getLoadedSheets()
+    local names = ""
+    for name, sheet in pairs(loadedSheets) do
+        names = names .. name
+        names = names .. ","
+    end
+    return names
 end
 
Index: code/branches/presentationHS15/src/libraries/core/GUIManager.cc
===================================================================
--- code/branches/presentationHS15/src/libraries/core/GUIManager.cc	(revision 11045)
+++ code/branches/presentationHS15/src/libraries/core/GUIManager.cc	(revision 11046)
@@ -36,4 +36,8 @@
 #include <OgreRenderWindow.h>
 
+extern "C" {
+#include <lua.h>
+}
+
 #if CEGUI_VERSION >= 0x000800
 #   include <CEGUI/DefaultLogger.h>
@@ -251,7 +255,26 @@
     /*static*/ const std::string GUIManager::defaultScheme_ = "TaharezGreen"; //Alternative: Orxonox (not fully complete yet, see the graphics menu)
 
-    SetConsoleCommand("showGUI", &GUIManager::showGUI).defaultValue(1, false).defaultValue(2, false);
-    SetConsoleCommand("hideGUI", &GUIManager::hideGUI);
-    SetConsoleCommand("toggleGUI", &GUIManager::toggleGUI).defaultValue(1, false).defaultValue(2, false);
+    namespace autocompletion
+    {
+        /**
+            @brief Returns the names of all currently existing OverlayGroups.
+        */
+        ARGUMENT_COMPLETION_FUNCTION_DECLARATION(guinames)();
+        ARGUMENT_COMPLETION_FUNCTION_IMPLEMENTATION(guinames)()
+        {
+            ArgumentCompletionList names;
+            const std::vector<std::string> guis = GUIManager::getInstance().getLoadedGUIs();
+            for (size_t i = 0; i < guis.size(); ++i)
+                names.push_back(ArgumentCompletionListElement(guis[i], getLowercase(guis[i])));
+            return names;
+        }
+    }
+
+    SetConsoleCommand("showGUI", &GUIManager::showGUI).defaultValue(1, false).defaultValue(2, false)
+            .argumentCompleter(0, autocompletion::guinames());
+    SetConsoleCommand("hideGUI", &GUIManager::hideGUI)
+            .argumentCompleter(0, autocompletion::guinames());
+    SetConsoleCommand("toggleGUI", &GUIManager::toggleGUI).defaultValue(1, false).defaultValue(2, false)
+            .argumentCompleter(0, autocompletion::guinames());
 
     RegisterAbstractClass(GUIManager).inheritsFrom<WindowEventListener>();
@@ -489,4 +512,26 @@
     {
         this->luaState_->doString(str, rootFileInfo_);
+    }
+
+    std::vector<std::string> GUIManager::getLoadedGUIs()
+    {
+        // TODO: is there a better way to read back a return value from lua? i.e. by using LuaState?
+        lua_State* L = this->luaState_->getInternalLuaState();
+
+        // push function
+        lua_getglobal(L, "getLoadedSheets");
+
+        // do the call (0 arguments, 1 result)
+        if (lua_pcall(L, 0, 1, 0) != 0)
+          orxout(internal_error) << "error running function: " << lua_tostring(L, -1) << endl;
+
+        // retrieve result
+        if (!lua_isstring(L, -1))
+          orxout(internal_error) << "function must return a string" << endl;
+        std::string value = lua_tostring(L, -1);
+        lua_pop(L, 1);
+
+        SubString tokens(value, ",");
+        return tokens.getAllStrings();
     }
 
Index: code/branches/presentationHS15/src/libraries/core/GUIManager.h
===================================================================
--- code/branches/presentationHS15/src/libraries/core/GUIManager.h	(revision 11045)
+++ code/branches/presentationHS15/src/libraries/core/GUIManager.h	(revision 11046)
@@ -107,4 +107,6 @@
         void preUpdate(const Clock& time);
 
+        std::vector<std::string> getLoadedGUIs();
+
         void loadGUI(const std::string& name);
         static void showGUI(const std::string& name, bool bHidePrevious = false, bool bNoInput = false);
