Index: xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp =================================================================== --- xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp (revision 30503) +++ xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp (working copy) @@ -658,7 +658,7 @@ if (!PyXBMCGetUnicodeString(strText, pObjectText, 1)) return NULL; CStdString strFilename; - strFilename = CUtil::MakeLegalPath(strText); + strFilename = CUtil::MakeLegalPath(strText, LEGAL_FATX); return Py_BuildValue((char*)"s", strFilename.c_str()); } Index: xbmc/Util.cpp =================================================================== --- xbmc/Util.cpp (revision 30503) +++ xbmc/Util.cpp (working copy) @@ -3269,8 +3269,22 @@ // check if the filename is a legal FATX one. if (LegalType == LEGAL_FATX) { + result.Replace(':', '_'); + result.Replace('*', '_'); + result.Replace('?', '_'); + result.Replace('\"', '_'); + result.Replace('<', '_'); + result.Replace('>', '_'); + result.Replace('|', '_'); + result.Replace(',', '_'); + result.Replace('=', '_'); + result.Replace('+', '_'); + result.Replace(';', '_'); + result.Replace('"', '_'); + result.Replace('\'', '_'); result.TrimRight("."); result.TrimRight(" "); + GetFatXQualifiedPath(result); } @@ -3419,7 +3433,8 @@ { "Control.Message", true, "Send a given message to a control within a given window" }, { "SendClick", true, "Send a click message from the given control to the given window" }, { "LoadProfile", true, "Load the specified profile (note; if locks are active it won't work)" }, - { "SetProperty", true, "Sets a window property for the current window (key,value)" }, + { "SetProperty", true, "Sets a window property for the current focused window/dialog (key,value)" }, + { "ClearProperty", true, "Clears a window property for the current focused window/dialog (key,value)" }, { "PlayWith", true, "Play the selected item with the specified core" }, { "WakeOnLan", true, "Sends the wake-up packet to the broadcast address for the specified MAC address" } }; @@ -4611,10 +4626,16 @@ } else if (execute.Equals("setproperty") && params.size() == 2) { - CGUIWindow *window = g_windowManager.GetWindow(g_windowManager.GetActiveWindow()); + CGUIWindow *window = g_windowManager.GetWindow(g_windowManager.GetFocusedWindow()); if (window) window->SetProperty(params[0],params[1]); } + else if (execute.Equals("clearproperty") && params.size() == 2) + { + CGUIWindow *window = g_windowManager.GetWindow(g_windowManager.GetFocusedWindow()); + if (window) + window->SetProperty(params[0],""); + } else if (execute.Equals("wakeonlan")) { g_network.WakeOnLan((char*)params[0].c_str());