From: <mc...@us...> - 2009-03-20 03:21:35
|
Revision: 2731 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2731&view=rev Author: mcraenz Date: 2009-03-20 03:21:24 +0000 (Fri, 20 Mar 2009) Log Message: ----------- MyPowerControl plugin source. First time SVN commit sorry if I screw it up! Added Paths: ----------- trunk/plugins/MyPowerControl/ trunk/plugins/MyPowerControl/MyPowerControl.sln trunk/plugins/MyPowerControl/MyPowerControl.suo trunk/plugins/MyPowerControl/MyPowerControlSetup/ trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/ trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/MyPowerControlSetup.msi trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/setup.exe trunk/plugins/MyPowerControl/MyPowerControlSetup/MyPowerControlSetup.vdproj trunk/plugins/MyPowerControl/MyPowerControlSetup/Release/ trunk/plugins/MyPowerControl/MyPowerControlSetup/Release/MyPowerControlSetup.msi trunk/plugins/MyPowerControl/PowerControl/ trunk/plugins/MyPowerControl/PowerControl/AddDevice.Designer.cs trunk/plugins/MyPowerControl/PowerControl/AddDevice.cs trunk/plugins/MyPowerControl/PowerControl/AddDevice.resx trunk/plugins/MyPowerControl/PowerControl/AddMPDevice.Designer.cs trunk/plugins/MyPowerControl/PowerControl/AddMPDevice.cs trunk/plugins/MyPowerControl/PowerControl/AddMPDevice.resx trunk/plugins/MyPowerControl/PowerControl/MyPowerControl.csproj trunk/plugins/MyPowerControl/PowerControl/MyPowerControlSetup.cs trunk/plugins/MyPowerControl/PowerControl/MyPowerControlSetup.designer.cs trunk/plugins/MyPowerControl/PowerControl/MyPowerControlSetup.resx trunk/plugins/MyPowerControl/PowerControl/PowerControl.cs trunk/plugins/MyPowerControl/PowerControl/PowerControl.xml trunk/plugins/MyPowerControl/PowerControl/PowerDeviceListItem.cs trunk/plugins/MyPowerControl/PowerControl/Properties/ trunk/plugins/MyPowerControl/PowerControl/Properties/AssemblyInfo.cs trunk/plugins/MyPowerControl/PowerControl/bin/ trunk/plugins/MyPowerControl/PowerControl/bin/Debug/ trunk/plugins/MyPowerControl/PowerControl/bin/Debug/AxInterop.WMPLib.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/Bass.Net.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/BassRegistration.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/Core.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/DirectShowLib.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/ICSharpCode.SharpZipLib.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/Interop.SHDocVw.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/Interop.WMPLib.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/MediaPortal.Support.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/MediaPortal.Support.pdb trunk/plugins/MyPowerControl/PowerControl/bin/Debug/MyPowerControl.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/MyPowerControl.pdb trunk/plugins/MyPowerControl/PowerControl/bin/Debug/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControl/bin/Debug/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerControl/bin/Debug/Utils.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/edtftpnet-1.2.2.dll trunk/plugins/MyPowerControl/PowerControl/bin/Debug/taglib-sharp.dll trunk/plugins/MyPowerControl/PowerControl/bin/Release/ trunk/plugins/MyPowerControl/PowerControl/bin/Release/Core.dll trunk/plugins/MyPowerControl/PowerControl/bin/Release/Microsoft.DirectX.Direct3D.dll trunk/plugins/MyPowerControl/PowerControl/bin/Release/Microsoft.DirectX.Direct3DX.dll trunk/plugins/MyPowerControl/PowerControl/bin/Release/Microsoft.DirectX.dll trunk/plugins/MyPowerControl/PowerControl/bin/Release/MyPowerControl.dll trunk/plugins/MyPowerControl/PowerControl/bin/Release/MyPowerControl.pdb trunk/plugins/MyPowerControl/PowerControl/bin/Release/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControl/bin/Release/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerControl/bin/Release/Utils.dll trunk/plugins/MyPowerControl/PowerControl/help.resx trunk/plugins/MyPowerControl/PowerControl/helpAbout.Designer.cs trunk/plugins/MyPowerControl/PowerControl/helpAbout.cs trunk/plugins/MyPowerControl/PowerControl/helpAbout.resx trunk/plugins/MyPowerControl/PowerControl/obj/ trunk/plugins/MyPowerControl/PowerControl/obj/Debug/ trunk/plugins/MyPowerControl/PowerControl/obj/Debug/MyPowerControl.dll trunk/plugins/MyPowerControl/PowerControl/obj/Debug/MyPowerControl.pdb trunk/plugins/MyPowerControl/PowerControl/obj/Debug/PowerControl.AddDevice.resources trunk/plugins/MyPowerControl/PowerControl/obj/Debug/PowerControl.AddMPDevice.resources trunk/plugins/MyPowerControl/PowerControl/obj/Debug/PowerControl.PowerControlSetup.resources trunk/plugins/MyPowerControl/PowerControl/obj/Debug/PowerControl.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerControl/obj/Debug/PowerControl.helpAbout.resources trunk/plugins/MyPowerControl/PowerControl/obj/Debug/Refactor/ trunk/plugins/MyPowerControl/PowerControl/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/MyPowerControl/PowerControl/obj/Debug/TempPE/ trunk/plugins/MyPowerControl/PowerControl/obj/MyPowerControl.csproj.FileListAbsolute.txt trunk/plugins/MyPowerControl/PowerControl/obj/PowerControl.csproj.FileList.txt trunk/plugins/MyPowerControl/PowerControl/obj/PowerControl.csproj.FileListAbsolute.txt trunk/plugins/MyPowerControl/PowerControl/obj/Release/ trunk/plugins/MyPowerControl/PowerControl/obj/Release/MyPowerControl.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerControl/obj/Release/MyPowerControl.dll trunk/plugins/MyPowerControl/PowerControl/obj/Release/MyPowerControl.pdb trunk/plugins/MyPowerControl/PowerControl/obj/Release/PowerControl.AddDevice.resources trunk/plugins/MyPowerControl/PowerControl/obj/Release/PowerControl.AddMPDevice.resources trunk/plugins/MyPowerControl/PowerControl/obj/Release/PowerControl.PowerControlSetup.resources trunk/plugins/MyPowerControl/PowerControl/obj/Release/PowerControl.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerControl/obj/Release/PowerControl.helpAbout.resources trunk/plugins/MyPowerControl/PowerControl/obj/Release/Refactor/ trunk/plugins/MyPowerControl/PowerControl/obj/Release/ResolveAssemblyReference.cache trunk/plugins/MyPowerControl/PowerControl/obj/Release/TempPE/ trunk/plugins/MyPowerControl/PowerControl/scm.cs trunk/plugins/MyPowerControl/PowerControlService/ trunk/plugins/MyPowerControl/PowerControlService/IpPortAccess.cs trunk/plugins/MyPowerControl/PowerControlService/MyPowerControlService.csproj trunk/plugins/MyPowerControl/PowerControlService/ParallelPortControl.cs trunk/plugins/MyPowerControl/PowerControlService/PortAccess.cs trunk/plugins/MyPowerControl/PowerControlService/PowerControlSVC.Designer.cs trunk/plugins/MyPowerControl/PowerControlService/PowerControlSVC.cs trunk/plugins/MyPowerControl/PowerControlService/PowerControlSVC.resx trunk/plugins/MyPowerControl/PowerControlService/PowerDevice.cs trunk/plugins/MyPowerControl/PowerControlService/PowerDevices.cs trunk/plugins/MyPowerControl/PowerControlService/Program.cs trunk/plugins/MyPowerControl/PowerControlService/ProjectInstaller.Designer.cs trunk/plugins/MyPowerControl/PowerControlService/ProjectInstaller.cs trunk/plugins/MyPowerControl/PowerControlService/ProjectInstaller.resx trunk/plugins/MyPowerControl/PowerControlService/Properties/ trunk/plugins/MyPowerControl/PowerControlService/Properties/AssemblyInfo.cs trunk/plugins/MyPowerControl/PowerControlService/bin/ trunk/plugins/MyPowerControl/PowerControlService/bin/Debug/ trunk/plugins/MyPowerControl/PowerControlService/bin/Debug/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControlService/bin/Debug/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerControlService/bin/Release/ trunk/plugins/MyPowerControl/PowerControlService/bin/Release/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControlService/bin/Release/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerControlService/obj/ trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/ trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/MyPowerControlService.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/PowerControlService.PowerControlSVC.resources trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/PowerControlService.ProjectInstaller.resources trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/Refactor/ trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/Refactor/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControlService/obj/Debug/TempPE/ trunk/plugins/MyPowerControl/PowerControlService/obj/MyPowerControlService.csproj.FileList.txt trunk/plugins/MyPowerControl/PowerControlService/obj/MyPowerControlService.csproj.FileListAbsolute.txt trunk/plugins/MyPowerControl/PowerControlService/obj/PowerControlService.csproj.FileList.txt trunk/plugins/MyPowerControl/PowerControlService/obj/Release/ trunk/plugins/MyPowerControl/PowerControlService/obj/Release/MyPowerControlService.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerControlService/obj/Release/PowerControlService.PowerControlSVC.resources trunk/plugins/MyPowerControl/PowerControlService/obj/Release/PowerControlService.ProjectInstaller.resources trunk/plugins/MyPowerControl/PowerControlService/obj/Release/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControlService/obj/Release/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerControlService/obj/Release/Refactor/ trunk/plugins/MyPowerControl/PowerControlService/obj/Release/Refactor/PowerControlService.exe trunk/plugins/MyPowerControl/PowerControlService/obj/Release/TempPE/ trunk/plugins/MyPowerControl/PowerTray/ trunk/plugins/MyPowerControl/PowerTray/AddDevice.Designer.cs trunk/plugins/MyPowerControl/PowerTray/AddDevice.cs trunk/plugins/MyPowerControl/PowerTray/AddDevice.resx trunk/plugins/MyPowerControl/PowerTray/AddMPDevice.Designer.cs trunk/plugins/MyPowerControl/PowerTray/AddMPDevice.cs trunk/plugins/MyPowerControl/PowerTray/AddMPDevice.resx trunk/plugins/MyPowerControl/PowerTray/App.config trunk/plugins/MyPowerControl/PowerTray/PluggedIn.ico trunk/plugins/MyPowerControl/PowerTray/Power-plug.ico trunk/plugins/MyPowerControl/PowerTray/PowerTray.csproj trunk/plugins/MyPowerControl/PowerTray/PowerTrayMenuItem.cs trunk/plugins/MyPowerControl/PowerTray/PowerTraySetup.cs trunk/plugins/MyPowerControl/PowerTray/PowerTraySetup.designer.cs trunk/plugins/MyPowerControl/PowerTray/PowerTraySetup.resx trunk/plugins/MyPowerControl/PowerTray/Program.cs trunk/plugins/MyPowerControl/PowerTray/Properties/ trunk/plugins/MyPowerControl/PowerTray/Properties/AssemblyInfo.cs trunk/plugins/MyPowerControl/PowerTray/Properties/Resources.Designer.cs trunk/plugins/MyPowerControl/PowerTray/Properties/Resources.resx trunk/plugins/MyPowerControl/PowerTray/Properties/Settings.Designer.cs trunk/plugins/MyPowerControl/PowerTray/Properties/Settings.settings trunk/plugins/MyPowerControl/PowerTray/Resources/ trunk/plugins/MyPowerControl/PowerTray/Resources/On.png trunk/plugins/MyPowerControl/PowerTray/Resources/Thumbs.db trunk/plugins/MyPowerControl/PowerTray/Screenshot.jpg trunk/plugins/MyPowerControl/PowerTray/Thumbs.db trunk/plugins/MyPowerControl/PowerTray/bin/ trunk/plugins/MyPowerControl/PowerTray/bin/Debug/ trunk/plugins/MyPowerControl/PowerTray/bin/Release/ trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerControlDevices.xml trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerControlService.exe trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerControlService.pdb trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerTray.exe trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerTray.exe.config trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerTray.pdb trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerTray.vshost.exe trunk/plugins/MyPowerControl/PowerTray/bin/Release/PowerTray.vshost.exe.config trunk/plugins/MyPowerControl/PowerTray/helpAbout.Designer.cs trunk/plugins/MyPowerControl/PowerTray/helpAbout.cs trunk/plugins/MyPowerControl/PowerTray/helpAbout.resx trunk/plugins/MyPowerControl/PowerTray/obj/ trunk/plugins/MyPowerControl/PowerTray/obj/Debug/ trunk/plugins/MyPowerControl/PowerTray/obj/Debug/TempPE/ trunk/plugins/MyPowerControl/PowerTray/obj/MyPowerTray.csproj.FileListAbsolute.txt trunk/plugins/MyPowerControl/PowerTray/obj/PowerTray.csproj.FileList.txt trunk/plugins/MyPowerControl/PowerTray/obj/PowerTray.csproj.FileListAbsolute.txt trunk/plugins/MyPowerControl/PowerTray/obj/Release/ trunk/plugins/MyPowerControl/PowerTray/obj/Release/MyPowerTray.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerControl.AddDevice.resources trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerControl.AddMPDevice.resources trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerControl.PowerControlSetup.resources trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerControl.Properties.Resources.resources trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerControl.helpAbout.resources trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerTray.csproj.GenerateResource.Cache trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerTray.exe trunk/plugins/MyPowerControl/PowerTray/obj/Release/PowerTray.pdb trunk/plugins/MyPowerControl/PowerTray/obj/Release/Refactor/ trunk/plugins/MyPowerControl/PowerTray/obj/Release/ResolveAssemblyReference.cache trunk/plugins/MyPowerControl/PowerTray/obj/Release/TempPE/ trunk/plugins/MyPowerControl/PowerTray/obj/Release/TempPE/Properties.Resources.Designer.cs.dll trunk/plugins/MyPowerControl/PowerTray/scm.cs trunk/plugins/MyPowerControl/PowerTray/screenshot.png trunk/plugins/MyPowerControl/PowerTray/switch.ico trunk/plugins/MyPowerControl/PowerTraySetup/ trunk/plugins/MyPowerControl/PowerTraySetup/Debug/ trunk/plugins/MyPowerControl/PowerTraySetup/PowerTraySetup.vdproj trunk/plugins/MyPowerControl/PowerTraySetup/Release/ trunk/plugins/MyPowerControl/PowerTraySetup/Release/PowerTraySetup.msi trunk/plugins/MyPowerControl/PowerTraySetup/Release/setup.exe trunk/plugins/MyPowerControl/Skin/ trunk/plugins/MyPowerControl/Skin/Blue3/ trunk/plugins/MyPowerControl/Skin/Blue3/mypowercontrol.xml trunk/plugins/MyPowerControl/Skin/Blue3wide/ trunk/plugins/MyPowerControl/Skin/Blue3wide/mypowercontrol.xml trunk/plugins/MyPowerControl/Skin/BlueTwo/ trunk/plugins/MyPowerControl/Skin/BlueTwo/mypowercontrol.xml trunk/plugins/MyPowerControl/Skin/BlueTwo Wide/ trunk/plugins/MyPowerControl/Skin/BlueTwo Wide/mypowercontrol.xml Added: trunk/plugins/MyPowerControl/MyPowerControl.sln =================================================================== --- trunk/plugins/MyPowerControl/MyPowerControl.sln (rev 0) +++ trunk/plugins/MyPowerControl/MyPowerControl.sln 2009-03-20 03:21:24 UTC (rev 2731) @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyPowerControl", "PowerControl\MyPowerControl.csproj", "{983ADA13-05F9-4395-B6CE-99707D6707A1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyPowerControlService", "PowerControlService\MyPowerControlService.csproj", "{F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "MyPowerControlSetup", "MyPowerControlSetup\MyPowerControlSetup.vdproj", "{92023C99-BB70-4CD4-975F-9D9EAB156E03}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerTray", "PowerTray\PowerTray.csproj", "{5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "PowerTraySetup", "PowerTraySetup\PowerTraySetup.vdproj", "{8A8EA838-EDA0-4C8D-A297-D9166CCF07A1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + MPWindowPlugin|Any CPU = MPWindowPlugin|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {983ADA13-05F9-4395-B6CE-99707D6707A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {983ADA13-05F9-4395-B6CE-99707D6707A1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {983ADA13-05F9-4395-B6CE-99707D6707A1}.MPWindowPlugin|Any CPU.ActiveCfg = MPWindowPlugin|Any CPU + {983ADA13-05F9-4395-B6CE-99707D6707A1}.MPWindowPlugin|Any CPU.Build.0 = MPWindowPlugin|Any CPU + {983ADA13-05F9-4395-B6CE-99707D6707A1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {983ADA13-05F9-4395-B6CE-99707D6707A1}.Release|Any CPU.Build.0 = Release|Any CPU + {F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}.MPWindowPlugin|Any CPU.ActiveCfg = MPWindowPlugin|Any CPU + {F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}.MPWindowPlugin|Any CPU.Build.0 = MPWindowPlugin|Any CPU + {F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1E571C1-B5F4-48D7-BEB1-E9A44CE6D353}.Release|Any CPU.Build.0 = Release|Any CPU + {92023C99-BB70-4CD4-975F-9D9EAB156E03}.Debug|Any CPU.ActiveCfg = Debug + {92023C99-BB70-4CD4-975F-9D9EAB156E03}.MPWindowPlugin|Any CPU.ActiveCfg = Release + {92023C99-BB70-4CD4-975F-9D9EAB156E03}.Release|Any CPU.ActiveCfg = Release + {5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}.MPWindowPlugin|Any CPU.ActiveCfg = Release|Any CPU + {5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}.MPWindowPlugin|Any CPU.Build.0 = Release|Any CPU + {5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5833539F-F3AB-4BA3-A6AA-E6E3F3C59497}.Release|Any CPU.Build.0 = Release|Any CPU + {8A8EA838-EDA0-4C8D-A297-D9166CCF07A1}.Debug|Any CPU.ActiveCfg = Debug + {8A8EA838-EDA0-4C8D-A297-D9166CCF07A1}.MPWindowPlugin|Any CPU.ActiveCfg = Release + {8A8EA838-EDA0-4C8D-A297-D9166CCF07A1}.Release|Any CPU.ActiveCfg = Release + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/MyPowerControl/MyPowerControl.suo =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyPowerControl/MyPowerControl.suo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/MyPowerControlSetup.msi =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/MyPowerControlSetup.msi ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/setup.exe =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyPowerControl/MyPowerControlSetup/Debug/setup.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyPowerControl/MyPowerControlSetup/MyPowerControlSetup.vdproj =================================================================== --- trunk/plugins/MyPowerControl/MyPowerControlSetup/MyPowerControlSetup.vdproj (rev 0) +++ trunk/plugins/MyPowerControl/MyPowerControlSetup/MyPowerControlSetup.vdproj 2009-03-20 03:21:24 UTC (rev 2731) @@ -0,0 +1,1348 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:MyPowerControlSetup" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_2676CA39291EBAABC2D2448AF23941DD" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_31193E922955E29F6A85F1A405DBE4BB" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5007CB2D7D60E1B328BD4CB51B12E376" + "OwnerKey" = "8:_AEBB54B2815ACD572CABD3061A983B40" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5BDB5C87CC73E499FA2C52A3C74C2290" + "OwnerKey" = "8:_31193E922955E29F6A85F1A405DBE4BB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5BDB5C87CC73E499FA2C52A3C74C2290" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8DD940ECB6F0F229EC085A3D43CB822D" + "OwnerKey" = "8:_9FB74AF5771128A607AB62C87512A2B8" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8DD940ECB6F0F229EC085A3D43CB822D" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8DD940ECB6F0F229EC085A3D43CB822D" + "OwnerKey" = "8:_31193E922955E29F6A85F1A405DBE4BB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8DD940ECB6F0F229EC085A3D43CB822D" + "OwnerKey" = "8:_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9FB74AF5771128A607AB62C87512A2B8" + "OwnerKey" = "8:_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9FB74AF5771128A607AB62C87512A2B8" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9FB74AF5771128A607AB62C87512A2B8" + "OwnerKey" = "8:_31193E922955E29F6A85F1A405DBE4BB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_AEBB54B2815ACD572CABD3061A983B40" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BB32A8BDA65744F0A18CE742565DCE90" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C4983FF2134E41C88FE73527C9023CEC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E1A489E288A14CA7B3F331BFC45F9909" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + "OwnerKey" = "8:_31193E922955E29F6A85F1A405DBE4BB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F2B5024550A44908B6E85B3320E07A5B" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F707BD5B221F4F3C83569974F7B629BC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_2D821EE18E054B758C6FA22CC85799CF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_AEBB54B2815ACD572CABD3061A983B40" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_5BDB5C87CC73E499FA2C52A3C74C2290" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_F2B5024550A44908B6E85B3320E07A5B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_31193E922955E29F6A85F1A405DBE4BB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_5BDB5C87CC73E499FA2C52A3C74C2290" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_9FB74AF5771128A607AB62C87512A2B8" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_8DD940ECB6F0F229EC085A3D43CB822D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_2676CA39291EBAABC2D2448AF23941DD" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\MyPowerControlSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\MyPowerControlSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:FALSE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + } + } + } + } + "Deployable" + { + "CustomAction" + { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_C5B19282AB9F4F15AA1F4CDB027D855A" + { + "Name" = "8:Primary output from MyPowerControlService (Active)" + "Condition" = "8:" + "Object" = "8:_F2B5024550A44908B6E85B3320E07A5B" + "FileType" = "3:2" + "InstallAction" = "3:2" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_07F834DA_9E7C_43E6_A2F6_109C77F83BAE" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_DE7A19CD54BF44D6B6B51A0F27E903BE" + { + "Name" = "8:Primary output from MyPowerControlService (Active)" + "Condition" = "8:" + "Object" = "8:_F2B5024550A44908B6E85B3320E07A5B" + "FileType" = "3:2" + "InstallAction" = "3:4" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_AF5BACF9_A308_40FA_A2CA_C09F91086138" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_DEB06567D6C344A683ED0078A1504C79" + { + "Name" = "8:Primary output from MyPowerControlService (Active)" + "Condition" = "8:" + "Object" = "8:_F2B5024550A44908B6E85B3320E07A5B" + "FileType" = "3:2" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_CAC5853C_C478_48A9_B03F_B9B740879CAD" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_E05F6E41CFCB4014AA8AB7D4E2C655EB" + { + "Name" = "8:Primary output from MyPowerControlService (Active)" + "Condition" = "8:" + "Object" = "8:_F2B5024550A44908B6E85B3320E07A5B" + "FileType" = "3:2" + "InstallAction" = "3:3" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_00D19390_D991_4B4A_B704_CB519EC92C50" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_F932FA66C2AA4AF78D5F245D6909EDBA" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "Version" = "8:2.0.50727" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=9832" + } + } + } + "File" + { + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2676CA39291EBAABC2D2448AF23941DD" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:PowerControlService, Version=0.2.5.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_2676CA39291EBAABC2D2448AF23941DD" + { + "Name" = "8:PowerControlService.exe" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:PowerControlService.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_31193E922955E29F6A85F1A405DBE4BB" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Core, Version=0.9.4.1852, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_31193E922955E29F6A85F1A405DBE4BB" + { + "Name" = "8:Core.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Core.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5007CB2D7D60E1B328BD4CB51B12E376" + { + "SourcePath" = "8:ieframe.dll" + "TargetName" = "8:ieframe.dll" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:4" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5BDB5C87CC73E499FA2C52A3C74C2290" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Utils, Version=2.2.6.1851, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_5BDB5C87CC73E499FA2C52A3C74C2290" + { + "Name" = "8:Utils.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Utils.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_8DD940ECB6F0F229EC085A3D43CB822D" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" + "ScatterAssemblies" + { + "_8DD940ECB6F0F229EC085A3D43CB822D" + { + "Name" = "8:Microsoft.DirectX.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.DirectX.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9FB74AF5771128A607AB62C87512A2B8" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.DirectX.Direct3D, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" + "ScatterAssemblies" + { + "_9FB74AF5771128A607AB62C87512A2B8" + { + "Name" = "8:Microsoft.DirectX.Direct3D.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.DirectX.Direct3D.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_AEBB54B2815ACD572CABD3061A983B40" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:TRUE" + "AssemblyAsmDisplayName" = "8:Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=90ba9c70f846762e, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_AEBB54B2815ACD572CABD3061A983B40" + { + "Name" = "8:Interop.SHDocVw.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Interop.SHDocVw.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BB32A8BDA65744F0A18CE742565DCE90" + { + "SourcePath" = "8:..\\Skin\\Blue3wide\\mypowercontrol.xml" + "TargetName" = "8:mypowercontrol.xml" + "Tag" = "8:" + "Folder" = "8:_C53D7CEB5D3F410596EF4C97075311FA" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C4983FF2134E41C88FE73527C9023CEC" + { + "SourcePath" = "8:..\\Skin\\BlueTwo Wide\\mypowercontrol.xml" + "TargetName" = "8:mypowercontrol.xml" + "Tag" = "8:" + "Folder" = "8:_864322AEA8C44611BF059B9BEC4BFB2D" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E1A489E288A14CA7B3F331BFC45F9909" + { + "SourcePath" = "8:..\\Skin\\BlueTwo\\mypowercontrol.xml" + "TargetName" = "8:mypowercontrol.xml" + "Tag" = "8:" + "Folder" = "8:_D5AF588E627E4465A43BAD5E35FE2607" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.DirectX.Direct3DX, Version=1.0.2911.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" + "ScatterAssemblies" + { + "_EA236A09A2AC3ABBD6E5A5FAB5CEA463" + { + "Name" = "8:Microsoft.DirectX.Direct3DX.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.DirectX.Direct3DX.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_40D991DE40D5407E9AC04388E0A50C73" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F707BD5B221F4F3C83569974F7B629BC" + { + "SourcePath" = "8:..\\Skin\\Blue3\\mypowercontrol.xml" + "TargetName" = "8:mypowercontrol.xml" + "Tag" = "8:" + "Folder" = "8:_8677DC36950F4332AC5F069DDC6B60CD" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_0EFDFAA27F0149ADAC81539A35AE20F7" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_647C061D790744FF866D321EF67ED372" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_C377B6BFCF8D451DA6B6B756D4C54152" + { + "Name" = "8:#1912" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramFilesFolder" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_7411411F3493407DBC80503EAD9E8EDA" + { + "Name" = "8:Team MediaPortal" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_D6D47CEFF6D84F2E9BE27802798FC858" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_F88DFD7C09564740B477D9ADC22FBC55" + { + "Name" = "8:MediaPortal" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_21BF7795E42F48088D1B33463E4156B4" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_214A6E6A5E83488BBD6FE67DD8CFBCDC" + { + "Name" = "8:plugins" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_893290B1BC7C4790B981CB3D94E54749" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_40D991DE40D5407E9AC04388E0A50C73" + { + "Name" = "8:Windows" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_0293A80A51204FF291FFE23474534EFF" + "Folders" + { + } + } + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_246331E6EB31466BA2B0EB89CEB9EE45" + { + "Name" = "8:Skin" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_AE1B052FD3D7468D9699FCFF3B29AB78" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_864322AEA8C44611BF059B9BEC4BFB2D" + { + "Name" = "8:BlueTwo Wide" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_0E5EA22450A54210B8155F6DCA09BBA2" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_8677DC36950F4332AC5F069DDC6B60CD" + { + "Name" = "8:Blue3" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_3EFFBA81A3434142A9D5F2F8C5A5A263" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_C53D7CEB5D3F410596EF4C97075311FA" + { + "Name" = "8:Blue3Wide" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_051CD805292C4B7F93C166B4CB128AE0" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_D5AF588E627E4465A43BAD5E35FE2607" + { + "Name" = "8:BlueTwo" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_26EA976837694A75BB2C7BCB9C49ACD4" + "Folders" + { + } + } + } + } + } + } + } + } + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_D31CDB0540BB4241AC54F6D8E3427E3E" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:MyPowerControl for MediaPortal" + "ProductCode" = "8:{DEA3E8B3-D6AF-4939-B4D6-B92F315CCCCA}" + "PackageCode" = "8:{53E99F8E-BAB9-4237-88D9-9CBD6DE948A3}" + "UpgradeCode" = "8:{1BFB6941-75A7-4B60-A068-37F715730282}" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:FALSE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:TRUE" + "ProductVersion" = "8:2.5.0" + "Manufacturer" = "8:RhysGoodwin" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:http://rhysgoodwin.wordpress.com" + "Title" = "8:MyPowerControl" + "Subject" = "8:" + "ARPCONTACT" = "8:Rhys Goodwin" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_29099194EE634872A74226E10C9F7AFF" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_CF9345766D694305877AA59EA343464B" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D77D192CE79140E99D23E8C8C346D2BC" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_45973DF194694284AE2D68EEFBD2DC81" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_08D5B777CFEE4667B49909041EEC439A" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_441D878D05E94B1B9502F5BED50F31AB" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_131A30DCAA424F688D35C9441515B7C7" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C99BFB5648404A688E2FD0492A495A28" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EA2C3C744BC24D8A8E7A32A6CAC37F72" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlu... [truncated message content] |
From: <dou...@us...> - 2009-05-05 08:00:09
|
Revision: 2836 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2836&view=rev Author: dougollivier Date: 2009-05-05 07:59:51 +0000 (Tue, 05 May 2009) Log Message: ----------- Added Paths: ----------- trunk/plugins/XMLSchema-EditingTools/ trunk/plugins/XMLSchema-EditingTools/images/ trunk/plugins/XMLSchema-EditingTools/images/Thumbs.db trunk/plugins/XMLSchema-EditingTools/images/control.png trunk/plugins/XMLSchema-EditingTools/images/control.psd trunk/plugins/XMLSchema-EditingTools/images/controls.png trunk/plugins/XMLSchema-EditingTools/images/controls.psd trunk/plugins/XMLSchema-EditingTools/images/media-portal.png trunk/plugins/XMLSchema-EditingTools/images/skin.png trunk/plugins/XMLSchema-EditingTools/images/window.png trunk/plugins/XMLSchema-EditingTools/team-mediaportal-bak-choice-090504.rng trunk/plugins/XMLSchema-EditingTools/team-mediaportal-bak090504.rng trunk/plugins/XMLSchema-EditingTools/team-mediaportal-fonts.css trunk/plugins/XMLSchema-EditingTools/team-mediaportal-fonts.rng trunk/plugins/XMLSchema-EditingTools/team-mediaportal-language.css trunk/plugins/XMLSchema-EditingTools/team-mediaportal-language.rng trunk/plugins/XMLSchema-EditingTools/team-mediaportal-window.css trunk/plugins/XMLSchema-EditingTools/team-mediaportal.rng trunk/plugins/XMLSchema-EditingTools/team-mediaportal.xsd Added: trunk/plugins/XMLSchema-EditingTools/images/Thumbs.db =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/Thumbs.db ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/control.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/control.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/control.psd =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/control.psd ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/controls.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/controls.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/controls.psd =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/controls.psd ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/media-portal.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/media-portal.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/skin.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/skin.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/images/window.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/XMLSchema-EditingTools/images/window.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/XMLSchema-EditingTools/team-mediaportal-bak-choice-090504.rng =================================================================== --- trunk/plugins/XMLSchema-EditingTools/team-mediaportal-bak-choice-090504.rng (rev 0) +++ trunk/plugins/XMLSchema-EditingTools/team-mediaportal-bak-choice-090504.rng 2009-05-05 07:59:51 UTC (rev 2836) @@ -0,0 +1,4630 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + + <start> + <!-- This allows a file to be any one of the team-mediaportal supported file types --> + <choice> + + <!-- ##################################################################### --> + <!-- Window Group --> + <!-- ##################################################################### --> + <element name="window"> + <!-- required elements --> + <interleave> + <optional> + <ref name="element-id"/> + </optional> + <optional> + <element name="defaultcontrol"> + <data type="integer"/> + </element> + </optional> + <optional> + <!-- elements that can be zero or one --> + <element name="allowoverlay"> + <ref name="pattern-booleanYN"/> + </element> + </optional> + <optional> + <element name="disabletopbar"> + <ref name="pattern-booleanYN"/> + </element> + </optional> + <optional> + <!-- case sensitivity ??? --> + <choice> + <element name="autohidetopbar"> + <ref name="pattern-booleanYN"/> + </element> + <element name="autoHideTopBar"> + <ref name="pattern-booleanYN"/> + </element> + </choice> + </optional> + </interleave> + <zeroOrMore> + <!-- elements that are unbounded --> + <element name="define"> + <data type="string"/> + </element> + </zeroOrMore> + <optional> + <element name="controls"> + <ref name="controls-ref"/> + </element> + </optional> + </element> + + + <!-- ##################################################################### --> + <!-- Controls File Definition (These are referenced in a Window File) --> + <!-- ##################################################################### --> + + <element name="controls"> + <ref name="controls-ref"/> + </element> + + <!-- ##################################################################### --> + <!-- Fonts File Definition --> + <!-- ##################################################################### --> + <element name="fonts"> + <oneOrMore> + <element name="font"> + <element name="name"> + <data type="string"/> + </element> + <element name="filename"> + <data type="string"/> + </element> + <element name="height"> + <data type="integer"/> + </element> + <element name="bold"> + <ref name="pattern-booleanYN"/> + </element> + <element name="italic"> + <ref name="pattern-booleanYN"/> + </element> + <element name="start"> + <data type="integer"/> + </element> + <element name="end"> + <data type="integer"/> + </element> + </element> + </oneOrMore> + </element> + + <!-- ##################################################################### --> + <!-- Language File Definition --> + <!-- ##################################################################### --> + <element name="language"> + <element name="Section"> + <oneOrMore> + <element name="string"> + <data type="string"/> + <attribute name="id"> + <data type="string"/> + </attribute> + <optional> + <attribute name="prefix"> + <data type="string"/> + </attribute> + </optional> + </element> + </oneOrMore> + <attribute name="name"> + <data type="string"/> + </attribute> + </element> + <attribute name="name"> + <data type="string"/> + </attribute> + <attribute name="characters"> + <data type="string"/> + </attribute> + </element> + </choice> + + </start> + <!-- ################################################################################################################################### --> + <!-- #################################################### END OF MAIN STRUCTURE ######################################################## --> + <!-- ################################################################################################################################### --> + <!-- ################################################################################################################################### --> + <!-- ################################################################################################################################### --> + <!-- ################################################################################################################################### --> + <!-- ################################################################################################################################### --> + <!-- ################################################################################################################################### --> + <!-- ################################################################################################################################### --> + <!-- ############################################ Begining of Definitions for references ############################################### --> + <!-- ########## This is the definition of the Controls element for the window xml file, as well as referenced controls files ########### --> + + <define name="controls-ref"> + <interleave> + <zeroOrMore> + <ref name="element-import"/> + </zeroOrMore> + <optional> + <element name="skin"> + <element name="width"> + <data type="integer"/> + </element> + <element name="height"> + <data type="integer"/> + </element> + <element name="version"> + <data type="string"/> + </element> + </element> + </optional> + <oneOrMore> + <ref name="control"/> + </oneOrMore> + <ref name="element-animation"/> + </interleave> + <!-- this links to a control which in turn links to itself --> + </define> + + <!-- ##################################################################### --> + <!-- Organised by Control Type --> + <!-- ##################################################################### --> + + <define name="control"> + <element name="control"> + <choice> + <!--actiongroup--> + <ref name="control-actiongroup"/> + <!--animation--> + <ref name="control-animation"/> + <!--button--> + <ref name="control-button"/> + <!--button3part--> + <ref name="control-button3part"/> + <!--cell--> + <ref name="control-cell"/> + <!--checklistcontrol--> + <ref name="control-checklistcontrol"/> + <!--checkmark--> + <ref name="control-checkmark"/> + <!--facadeview--> + <ref name="control-facadeview"/> + <!--fadelabel--> + <ref name="control-fadelabel"/> + <!--filmstrip--> + <ref name="control-filmstrip"/> + <!--gridcontrol--> + <ref name="control-gridcontrol"/> + <!--group--> + <ref name="control-group"/> + <!--hscrollbar--> + <ref name="control-hscrollbar"/> + <!--image--> + <ref name="control-image"/> + <!--imagelist--> + <ref name="control-imagelist"/> + <!--label--> + <ref name="control-label"/> + <!--listcontrol--> + <ref name="control-listcontrol"/> + <!--menu--> + <ref name="control-menu"/> + <!--multiimage--> + <ref name="control-multiimage"/> + <!--playlistcontrol--> + <ref name="control-playlistcontrol"/> + <!--playlistbutton--> + <ref name="control-playlistbutton"/> + <!--progress--> + <ref name="control-progress"/> + <!--selectbutton--> + <ref name="control-selectbutton"/> + <!--slider--> + <ref name="control-slider"/> + <!--smsinput--> + <ref name="control-SMSinput"/> + <!--sortbutton--> + <ref name="control-sortbutton"/> + <!--spincontrol--> + <ref name="control-spincontrol"/> + <!--statusbar--> + <ref name="control-statusbar"/> + <!--textbox--> + <ref name="control-textbox"/> + <!--textboxscrollup--> + <ref name="control-textboxscrollup"/> + <!--thumbnailpanel--> + <ref name="control-thumbnailpanel"/> + <!--togglebutton--> + <ref name="control-togglebutton"/> + <!--tvprogress--> + <ref name="control-tvprogress"/> + <!--updownbutton--> + <ref name="control-updownbutton"/> + <!--updownlistcontrol--> + <ref name="control-updownlistcontrol"/> + <!--videowindow--> + <ref name="control-videowindow"/> + <!--volumebar--> + <ref name="control-volumebar"/> + <!--vscrollbar--> + <ref name="control-vscrollbar"/> + <!--tetris--> + <ref name="control-tetris"/> + <!--nowplayingoverlay--> + <ref name="control-nowplayingoverlay"/> + </choice> + </element> + </define> + + + <!-- ##################################################################### --> + <!-- Organised by Control Type --> + <!-- ##################################################################### --> + + <!-- ### Type = actiongroup ###--> + <define name="control-actiongroup"> + <interleave> + <element name="type"> + <value>actiongroup</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <ref name="element-defaultcontrol"/> + <ref name="element-onexit"/> + + <!-- Buttons --> + <ref name="element-buttonX"/> + <ref name="element-buttonY"/> + <ref name="element-buttonwidth"/> + <ref name="element-buttonheight"/> + + <!-- Textures --> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + + <!-- Group --> + <zeroOrMore> + <ref name="control"/> + </zeroOrMore> + + </define> + + <!-- ### Type = animation ###--> + <define name="control-animation"> + <interleave> + <element name="type"> + <value>animation</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- animation specifics --> + <ref name="element-textures"/> + <ref name="element-Duration"/> + <ref name="element-RepeatBehavior"/> + <ref name="element-FillBehavior"/> + + </interleave> + </define> + + <!-- ### Type = button ###--> + <define name="control-button"> + <interleave> + <element name="type"> + <value>button</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <ref name="element-keepaspectratio"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <ref name="element-textcolorNoFocus"/> + <!-- text offsets --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- actions and hyperlinks --> + <ref name="element-action"/> + <ref name="element-hyperlink"/> + + <!-- textures --> + <ref name="element-texture"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- hover --> + <ref name="element-hover"/> + <ref name="element-hoverX"/> + <ref name="element-hoverY"/> + <ref name="element-hoverWidth"/> + <ref name="element-hoverHeight"/> + + <!-- colors --> + <ref name="element-disabledcolor"/> + + </interleave> + </define> + + <!-- ### Type = button3part ###--> + <define name="control-button3part"> + <interleave> + <element name="type"> + <value>button3part</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + </interleave> + </define> + + <!-- ### Type = cell ###--> + <define name="control-cell"> + <interleave> + <element name="type"> + <value>cell</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <ref name="element-textcolorNoFocus"/> + <!-- text offsets --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- textures --> + <ref name="element-texture"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + <ref name="element-textureDisabled"/> + + </interleave> + </define> + + <!-- ### Type = Checklist Control ###--> + <define name="control-checklistcontrol"> + <interleave> + <element name="type"> + <value>checklistcontrol</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- Checkmark specific options --> + <ref name="element-textureCheckmark"/> + <ref name="element-textureCheckmarkNoFocus"/> + <ref name="element-MarkHeight"/> + <ref name="element-MarkWidth"/> + <ref name="element-MarkOffsetX"/> + <ref name="element-MarkOffsetY"/> + <ref name="element-shadow"/> + + <!-- common --> + <ref name="element-keepaspectratio"/> + + <!-- overlay --> + <!--<ref name="element-overlay"/> + <ref name="element-allowoverlay"/> --> + + <!-- colors --> + <ref name="element-shadedColor"/> + <ref name="element-selectedColor"/> + <ref name="element-playedColor"/> + <ref name="element-remoteColor"/> + <ref name="element-downloadColor"/> + + <!-- Pin Icon Positions and sizes --> + <!--<ref name="element-PinIconXOff"/> + <ref name="element-PinIconYOff"/> + <ref name="element-PinIconWidth"/> + <ref name="element-PinIconHeight"/>--> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- text 2 --> + <ref name="element-font2"/> + <ref name="element-textcolor2"/> + <!-- text 2 positions --> + <ref name="element-textXOff2"/> + <ref name="element-textYOff2"/> + + <!-- text 3 --> + <ref name="element-font3"/> + <ref name="element-textcolor3"/> + <!-- text 3 positions --> + <ref name="element-textXOff3"/> + <ref name="element-textYOff3"/> + + <!-- listcontrol specific options --> + <ref name="element-spaceBetweenItems"/> + <ref name="element-IconXOff"/> + <ref name="element-IconYOff"/> + <ref name="element-subtype"/> + <ref name="element-selectedColor2"/> + <ref name="element-unfocusedAlpha"/> + <ref name="element-suffix"/> + + <!-- spin options --> + <ref name="element-spinCanFocus"/> + <ref name="element-spinColor"/> + <ref name="element-spinAlign"/> + <!-- Spin sizes and positions --> + <ref name="element-spinWidth"/> + <ref name="element-spinHeight"/> + <ref name="element-spinPosX"/> + <ref name="element-spinPosY"/> + + <!-- Icons and images --> + <ref name="element-textureHeight"/> + <ref name="element-itemHeight"/> + <ref name="element-itemWidth"/> + <!-- textures --> + <ref name="element-image"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + <ref name="element-textureUp"/> + <ref name="element-textureUpFocus"/> + <ref name="element-textureDown"/> + <ref name="element-textureDownFocus"/> + + <!-- animation --> + <!--<ref name="element-visible"/> + <ref name="element-animation"/> --> + + </interleave> + </define> + + <!-- ### Type = checkmark ###--> + <define name="control-checkmark"> + <interleave> + <element name="type"> + <value>checkmark</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- textures --> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- Checkmark specific options --> + <ref name="element-textureCheckmark"/> + <ref name="element-textureCheckmarkNoFocus"/> + <ref name="element-MarkHeight"/> + <ref name="element-MarkWidth"/> + <ref name="element-MarkOffsetX"/> + <ref name="element-MarkOffsetY"/> + <ref name="element-shadow"/> + + <!-- colors --> + <ref name="element-disabledcolor"/> + + </interleave> + </define> + <!-- ### Type = facadeview ###--> + <define name="control-facadeview"> + <interleave> + <element name="type"> + <value>facadeview</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <ref name="element-keepaspectratio"/> + + <!-- actions and hyperlinks --> + <ref name="element-action"/> + <ref name="element-hyperlink"/> + + </interleave> + + <!-- Group --> + <zeroOrMore> + <ref name="control"/> + </zeroOrMore> + + </define> + + + + + + <!-- ### Type = fadelabel ###--> + <define name="control-fadelabel"> + <interleave> + <element name="type"> + <value>fadelabel</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- colors --> + <ref name="element-disabledcolor"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- misc --> + <ref name="element-scrollStartDelaySec"/> + <ref name="element-spaceBetweenItems"/> + + </interleave> + </define> + + <!-- ### Type = filmstrip ###--> + <define name="control-filmstrip"> + <interleave> + <element name="type"> + <value>filmstrip</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- suffix --> + <ref name="element-suffix"/> + + <!-- colors --> + <ref name="element-shadedColor"/> + <ref name="element-selectedColor"/> + <ref name="element-playedColor"/> + <ref name="element-remoteColor"/> + <ref name="element-downloadColor"/> + + <!-- spin options --> + <ref name="element-spinCanFocus"/> + <ref name="element-spinPosX"/> + <ref name="element-spinPosY"/> + <ref name="element-spinColor"/> + <ref name="element-spinWidth"/> + <ref name="element-spinHeight"/> + <ref name="element-spinAlign"/> + + <!-- textures --> + <ref name="element-image"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + <ref name="element-textureUp"/> + <ref name="element-textureUpFocus"/> + <ref name="element-textureDown"/> + <ref name="element-textureDownFocus"/> + <!-- texture Sizes and positions --> + <ref name="element-textureWidth"/> + <ref name="element-textureHeight"/> + <ref name="element-textureWidthBig"/> + <ref name="element-textureHeightBig"/> + + <!-- Background Image --> + <ref name="element-background"/> + <!-- Background Sizes and positions --> + <ref name="element-backgroundx"/> + <ref name="element-backgroundy"/> + <ref name="element-backgroundwidth"/> + <ref name="element-backgroundheight"/> + <!-- Background colors --> + <ref name="element-backgrounddiffuse"/> + + <!-- InfoImage --> + <ref name="element-InfoImage"/> + <!-- InfoImage Sizes and positions --> + <ref name="element-InfoImagex"/> + <ref name="element-InfoImagey"/> + <ref name="element-InfoImagewidth"/> + <ref name="element-InfoImageheight"/> + <!-- InfoImage colors --> + <ref name="element-InfoImagediffuse"/> + + <!-- Images --> + <ref name="element-imageFolder"/> + <ref name="element-imageFolderFocus"/> + + <!-- Frame Options --> + <ref name="element-frame"/> + <ref name="element-frameFocus"/> + <ref name="element-showFrame"/> + + <!-- boolean options --> + <ref name="element-showFolder"/> + <ref name="element-showBackground"/> + <ref name="element-showInfoImage"/> + <ref name="element-enableFocusZoom"/> + + <!-- item options --> + <ref name="element-itemHeight"/> + <ref name="element-itemWidth"/> + <!-- Big --> + <ref name="element-itemWidthBig"/> + <ref name="element-itemHeightBig"/> + + <!-- thumb --> + <ref name="element-thumbs"/> + <ref name="element-thumbAnimation"/> + <!-- Thumb sizes and Positions --> + <ref name="element-thumbPosX"/> + <ref name="element-thumbPosY"/> + <ref name="element-thumbWidth"/> + <ref name="element-thumbHeight"/> + <!-- Big --> + <ref name="element-thumbPosXBig"/> + <ref name="element-thumbPosYBig"/> + <ref name="element-thumbWidthBig"/> + <ref name="element-thumbHeightBig"/> + + <!-- Scroll options --> + <ref name="element-scrollStartDelaySec"/> + <ref name="element-scrollOffset"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + + </interleave> + </define> + + <!-- ### Type = gridcontrol ###--> + <define name="control-gridcontrol"> + <element name="type"> + <value>gridcontrol</value> + </element> + </define> + + <!-- ### Type = group ###--> + <define name="control-group"> + <interleave> + <element name="type"> + <value>group</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- group specific --> + <ref name="element-layout"/> + + <!-- Group --> + <optional> + <element name="mpe"> + <ref name="element-layout"/> + <ref name="element-spring"/> + <ref name="element-spacing"/> + <ref name="element-padding"/> + </element> + </optional> + + <zeroOrMore> + <ref name="control"/> + </zeroOrMore> + </interleave> + + </define> + + <!-- ### Type = hscrollbar ###--> + <define name="control-hscrollbar"> + <interleave> + <element name="type"> + <value>hscrollbar</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- prgoress bar images --> + <ref name="element-lefttexture"/> + <ref name="element-midtexture"/> + <ref name="element-righttexture"/> + <ref name="element-texturebg"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = image ###--> + <define name="control-image"> + <interleave> + <element name="type"> + <value>image</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <ref name="element-keepaspectratio"/> + <ref name="element-overlay"/> + + <!-- Images --> + <ref name="element-texture"/> + <ref name="element-centered"/> + + <!-- unknown --> + <ref name="element-colorkey"/> + <ref name="element-filtered"/> + + <!-- visibility --> + <ref name="element-visible"/> + <ref name="element-zoom"/> + <ref name="element-animation"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + </interleave> + + </define> + <!-- ### Type = imagelist ###--> + <define name="control-imagelist"> + <interleave> + <element name="type"> + <value>imagelist</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- subitems --> + <ref name="element-subitems"/> + + <!-- texture info --> + <ref name="element-textureWidth"/> + <ref name="element-textureHeight"/> + + <!-- imagelist specifics --> + <ref name="element-imagesToDraw"/> + <ref name="element-percentage"/> + <ref name="element-align"/> + <ref name="element-orientation"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = label ###--> + <define name="control-label"> + <interleave> + <element name="type"> + <value>label</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- overlay --> + <ref name="element-overlay"/> + <ref name="element-allowoverlay"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <ref name="element-textsize"/> + + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- colors --> + <ref name="element-disabledcolor"/> + + </interleave> + </define> + + <!-- ### Type = listcontrol ###--> + <define name="control-listcontrol"> + <interleave> + <element name="type"> + <value>listcontrol</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- common --> + <ref name="element-keepaspectratio"/> + + <!-- overlay --> + <ref name="element-overlay"/> + <ref name="element-allowoverlay"/> + + <!-- Pin Icon Positions and sizes --> + <ref name="element-PinIconXOff"/> + <ref name="element-PinIconYOff"/> + <ref name="element-PinIconWidth"/> + <ref name="element-PinIconHeight"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- text 2 --> + <ref name="element-font2"/> + <ref name="element-textcolor2"/> + <!-- text 2 positions --> + <ref name="element-textXOff2"/> + <ref name="element-textYOff2"/> + + <!-- text 3 --> + <ref name="element-font3"/> + <ref name="element-textcolor3"/> + <!-- text 3 positions --> + <ref name="element-textXOff3"/> + <ref name="element-textYOff3"/> + + <!-- listcontrol specific options --> + <ref name="element-spaceBetweenItems"/> + <ref name="element-IconXOff"/> + <ref name="element-IconYOff"/> + <ref name="element-subtype"/> + <ref name="element-selectedColor2"/> + <ref name="element-unfocusedAlpha"/> + <ref name="element-suffix"/> + + <!-- spin options --> + <ref name="element-spinCanFocus"/> + <ref name="element-spinPosX"/> + <ref name="element-spinPosY"/> + <ref name="element-spinColor"/> + <ref name="element-spinWidth"/> + <ref name="element-spinHeight"/> + <ref name="element-spinAlign"/> + + <!-- scroll options --> + <ref name="element-scrollStartDelaySec"/> + <ref name="element-scrollOffset"/> + + <!-- textures --> + <ref name="element-image"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + <ref name="element-textureUp"/> + <ref name="element-textureUpFocus"/> + <ref name="element-textureDown"/> + <ref name="element-textureDownFocus"/> + + <!-- item options --> + <ref name="element-textureHeight"/> + <ref name="element-itemHeight"/> + <ref name="element-itemWidth"/> + + <!-- colors --> + <ref name="element-shadedColor"/> + <ref name="element-selectedColor"/> + <ref name="element-playedColor"/> + <ref name="element-remoteColor"/> + <ref name="element-downloadColor"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = menu ###--> + <define name="control-menu"> + <interleave> + <element name="type"> + <value>menu</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- control specifics --> + <ref name="element-buttonTextXOff"/> + <ref name="element-buttonTextYOff"/> + <ref name="element-buttonOffset"/> + <ref name="element-buttonFont"/> + <ref name="element-buttonheight"/> + + <ref name="element-spaceBetweenButtons"/> + <ref name="element-numberOfButtons"/> + + <!-- Scroll options --> + <ref name="element-scrollTime"/> + <ref name="element-scrollTimeMin"/> + + <!-- textures --> + <ref name="element-textureButtonFocus"/> + <ref name="element-textureButtonNoFocus"/> + <ref name="element-textureBackground"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <ref name="element-textcolorNoFocus"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- hover --> + <ref name="element-hover"/> + <ref name="element-hoverX"/> + <ref name="element-hoverY"/> + <ref name="element-hoverWidth"/> + <ref name="element-hoverHeight"/> + <ref name="element-hoverKeepAspectratio"/> + + </interleave> + </define> + + <!-- ### Type = multiimage ### --> + <define name="control-multiimage"> + <interleave> + <element name="type"> + <value>multiimage</value> + </element> + + <!-- multiimage specifics --> + <ref name="element-imagepath"/> + <ref name="element-timeperimage"/> + <ref name="element-fadetime"/> + <ref name="element-loop"/> + <ref name="element-randomize"/> + + </interleave> + </define> + + <!-- ### Type = nowplayingoverlay ###--> + <define name="control-nowplayingoverlay"> + <interleave> + <element name="type"> + <value>nowplayingoverlay</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- Images --> + <ref name="element-texture"/> + + <ref name="element-alpha"/> + + </interleave> + </define> + + <!-- ### Type = playlistcontrol ###--> + <define name="control-playlistcontrol"> + <interleave> + <element name="type"> + <value>playlistcontrol</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- common --> + <ref name="element-keepaspectratio"/> + + <!-- overlay --> + <ref name="element-overlay"/> + <ref name="element-allowoverlay"/> + + <!-- Pin Icon Positions and sizes --> + <ref name="element-PinIconXOff"/> + <ref name="element-PinIconYOff"/> + <ref name="element-PinIconWidth"/> + <ref name="element-PinIconHeight"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- text 2 --> + <ref name="element-font2"/> + <ref name="element-textcolor2"/> + <!-- text 2 positions --> + <ref name="element-textXOff2"/> + <ref name="element-textYOff2"/> + + <!-- text 3 --> + <ref name="element-font3"/> + <ref name="element-textcolor3"/> + <!-- text 3 positions --> + <ref name="element-textXOff3"/> + <ref name="element-textYOff3"/> + + <!-- listcontrol specific options --> + <ref name="element-spaceBetweenItems"/> + <ref name="element-IconXOff"/> + <ref name="element-IconYOff"/> + <ref name="element-subtype"/> + <ref name="element-selectedColor2"/> + <ref name="element-unfocusedAlpha"/> + <ref name="element-suffix"/> + + <!-- spin options --> + <ref name="element-spinCanFocus"/> + <ref name="element-spinPosX"/> + <ref name="element-spinPosY"/> + <ref name="element-spinColor"/> + <ref name="element-spinWidth"/> + <ref name="element-spinHeight"/> + <ref name="element-spinAlign"/> + + <!-- textures --> + <ref name="element-image"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + <ref name="element-textureUp"/> + <ref name="element-textureUpFocus"/> + <ref name="element-textureDown"/> + <ref name="element-textureDownFocus"/> + + <!-- item options --> + <ref name="element-textureHeight"/> + <ref name="element-itemHeight"/> + <ref name="element-itemWidth"/> + + <!-- colors --> + <ref name="element-shadedColor"/> + <ref name="element-selectedColor"/> + <ref name="element-playedColor"/> + <ref name="element-remoteColor"/> + <ref name="element-downloadColor"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + <!-- Up Button --> + <ref name="element-upBtnWidth"/> + <ref name="element-upBtnHeight"/> + <ref name="element-upBtnXOffset"/> + <ref name="element-upBtnYOffset"/> + <ref name="element-textureMoveUp"/> + <ref name="element-textureMoveUpFocused"/> + + <!-- Down Button --> + <ref name="element-downBtnWidth"/> + <ref name="element-downBtnHeight"/> + <ref name="element-downBtnXOffset"/> + <ref name="element-downBtnYOffset"/> + <ref name="element-textureMoveDown"/> + <ref name="element-textureMoveDownFocused"/> + + <!-- Delete Button --> + <ref name="element-deleteBtnWidth"/> + <ref name="element-deleteBtnHeight"/> + <ref name="element-deleteBtnXOffset"/> + <ref name="element-deleteBtnYOffset"/> + <ref name="element-textureDelete"/> + <ref name="element-textureDeleteFocused"/> + + <!-- Scroll options --> + <ref name="element-scrollStartDelaySec"/> + <ref name="element-scrollOffset"/> + + </interleave> + </define> + + <!-- ### Type = playlistbutton ###--> + <define name="control-playbutton"> + <interleave> + <element name="type"> + <value>playlistbutton</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- Up Button --> + <ref name="element-upBtnWidth"/> + <ref name="element-upBtnHeight"/> + <ref name="element-upBtnXOffset"/> + <ref name="element-upBtnYOffset"/> + <ref name="element-textureMoveUp"/> + <ref name="element-textureMoveUpFocused"/> + + <!-- Down Button --> + <ref name="element-downBtnWidth"/> + <ref name="element-downBtnHeight"/> + <ref name="element-downBtnXOffset"/> + <ref name="element-downBtnYOffset"/> + <ref name="element-textureMoveDown"/> + <ref name="element-textureMoveDownFocused"/> + + <!-- Delete Button --> + <ref name="element-deleteBtnWidth"/> + <ref name="element-deleteBtnHeight"/> + <ref name="element-deleteBtnXOffset"/> + <ref name="element-deleteBtnYOffset"/> + <ref name="element-textureDelete"/> + <ref name="element-textureDeleteFocused"/> + + </interleave> + </define> + + <!-- ### Type = progress< ###--> + <define name="control-progress"> + <interleave> + <element name="type"> + <value>progress</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- prgoress bar images --> + <ref name="element-lefttexture"/> + <ref name="element-midtexture"/> + <ref name="element-righttexture"/> + <ref name="element-texturebg"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = selectbutton ###--> + <define name="control-selectbutton"> + <interleave> + <element name="type"> + <value>selectbutton</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- textures --> + <ref name="element-texturebg"/> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + <ref name="element-textureLeft"/> + <ref name="element-textureLeftFocus"/> + <ref name="element-textureRight"/> + <ref name="element-textureRightFocus"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- text2 positions --> + <ref name="element-textXOff2"/> + <ref name="element-textYOff2"/> + + <!-- subitems --> + <ref name="element-subitems"/> + + <!-- colors --> + <ref name="element-disabledcolor"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = slider ###--> + <define name="control-slider"> + <interleave> + <element name="type"> + <value>slider</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- slider textures --> + <ref name="element-textureSliderBar"/> + <ref name="element-textureSliderNib"/> + <ref name="element-textureSliderNibFocus"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- spingtype --> + <ref name="element-spintype"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = smsinput ###--> + <define name="control-SMSinput"> + <interleave> + <element name="type"> + <value>smsinput</value> + </element> + + <!-- Standard --> + <ref name="elements-common"/> + + <!-- text --> + <ref name="element-font"/> + <ref name="element-textcolor"/> + <ref name="element-textcolor2"/> + + <!-- textbox options --> + <ref name="element-text"/> + <ref name="element-textboxFont"/> + <ref name="element-textboxXpos"/> + <ref name="element-textboxYpos"/> + <ref name="element-textboxWidth"/> + <ref name="element-textboxHeight"/> + <ref name="element-textboxColor"/> + <ref name="element-textboxBgColor"/> + + </interleave> + + </define> + + <!-- ### Type = sortbutton ###--> + <define name="control-sortbutton"> + <interleave> + <element name="type"> + <value>sortbutton</value> + </element> + <!-- Standard --> + <ref name="elements-common"/> + + <!-- text --> + <ref name="element-label"/> + <ref name="element-font"/> + <ref name="element-bold"/> + <ref name="element-align"/> + <ref name="element-textcolor"/> + <!-- text positions --> + <ref name="element-textXOff"/> + <ref name="element-textYOff"/> + + <!-- offset sort button --> + <ref name="element-offsetSortButtonX"/> + <ref name="element-offsetSortButtonY"/> + + <!-- textures --> + <ref name="element-textureFocus"/> + <ref name="element-textureNoFocus"/> + + <!-- colors --> + <ref name="element-disabledcolor"/> + + <!-- Ascending --> + <ref name="element-textureAscending"/> + <ref name="element-textureAscendingFocused"/> + + <!-- Descending --> + <ref name="element-textureDescending"/> + <ref name="element-textureDescendingFocused"/> + + <!-- animation --> + <ref name="element-visible"/> + <ref name="element-animation"/> + + </interleave> + </define> + + <!-- ### Type = spincontrol ###--> + <define name="control-spincontrol"> + <interleave> + <element name="type"> + <value>spincontrol</value>... [truncated message content] |
From: <hwa...@us...> - 2009-05-05 16:38:36
|
Revision: 2838 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2838&view=rev Author: hwahrmann Date: 2009-05-05 16:37:52 +0000 (Tue, 05 May 2009) Log Message: ----------- Initial Import Added Paths: ----------- trunk/plugins/MPTray4IrTrans/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/CachesImage.bin trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/ReflectionCache.xml trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/.version trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/7/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/7/6241a2e1.dat trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/.version trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/0/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/0/283aac88.dat trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/7/ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/7/6241a2e1.dat trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/b4fd36e6-2b9b-4b29-af32-92e538c1124f.Metadata trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/b4fd36e6-2b9b-4b29-af32-92e538c1124f.XmlDocIndex trunk/plugins/MPTray4IrTrans/mptray4irtrans/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Force.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Log.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.Designer.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.resx trunk/plugins/MPTray4IrTrans/mptray4irtrans/NativeMethods.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Program.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Properties/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Properties/AssemblyInfo.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Properties/Resources.Designer.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Properties/Resources.resx trunk/plugins/MPTray4IrTrans/mptray4irtrans/Properties/Settings.Designer.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/Properties/Settings.settings trunk/plugins/MPTray4IrTrans/mptray4irtrans/Xml.cs trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/Debug/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/Release/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/Release/mptray4irtrans.exe trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/Release/mptray4irtrans.pdb trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/Release/mptray4irtrans.vshost.exe trunk/plugins/MPTray4IrTrans/mptray4irtrans/bin/Release/mptray4irtrans.vshost.exe.manifest trunk/plugins/MPTray4IrTrans/mptray4irtrans/mptray4irtrans.csproj trunk/plugins/MPTray4IrTrans/mptray4irtrans/mptray4irtrans.ico trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/MediaPortal.Mptray4Irtrans.resources trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/TempPE/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/mptray4irtrans.Properties.Resources.resources trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/mptray4irtrans.csproj.FileListAbsolute.txt trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/mptray4irtrans.csproj.GenerateResource.Cache trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/mptray4irtrans.exe trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Debug/mptray4irtrans.pdb trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/TempPE/ trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/TempPE/Properties.Resources.Designer.cs.dll trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/mptray4irtrans.Mptray4Irtrans.resources trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/mptray4irtrans.Properties.Resources.resources trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/mptray4irtrans.csproj.FileListAbsolute.txt trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/mptray4irtrans.csproj.GenerateResource.Cache trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/mptray4irtrans.exe trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/Release/mptray4irtrans.pdb trunk/plugins/MPTray4IrTrans/mptray4irtrans/obj/mptray4irtrans.csproj.FileListAbsolute.txt trunk/plugins/MPTray4IrTrans/mptray4irtrans.4.1.resharper.user trunk/plugins/MPTray4IrTrans/mptray4irtrans.sln trunk/plugins/MPTray4IrTrans/mptray4irtrans.suo Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/CachesImage.bin =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/CachesImage.bin ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/ReflectionCache.xml =================================================================== --- trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/ReflectionCache.xml (rev 0) +++ trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/ReflectionCache.xml 2009-05-05 16:37:52 UTC (rev 2838) @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<Assemblies Version="1073741836"> + <Assembly Name="JetBrains.Annotations, Version=4.1.933.3, Culture=neutral, PublicKeyToken=1010a0d8d6380325" Image="b4fd36e6-2b9b-4b29-af32-92e538c1124f" Timestamp="633559670920000000" XmlDocIndexTimestamp="633559670920000000" /> +</Assemblies> \ No newline at end of file Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/.version =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/.version ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/7/6241a2e1.dat =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/TodoCache/7/6241a2e1.dat ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/.version =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/.version ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/0/283aac88.dat =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/0/283aac88.dat ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/7/6241a2e1.dat =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/WordIndex.New/7/6241a2e1.dat ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/b4fd36e6-2b9b-4b29-af32-92e538c1124f.Metadata =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/b4fd36e6-2b9b-4b29-af32-92e538c1124f.Metadata ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/b4fd36e6-2b9b-4b29-af32-92e538c1124f.XmlDocIndex =================================================================== (Binary files differ) Property changes on: trunk/plugins/MPTray4IrTrans/_ReSharper.mptray4irtrans/b4fd36e6-2b9b-4b29-af32-92e538c1124f.XmlDocIndex ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MPTray4IrTrans/mptray4irtrans/Force.cs =================================================================== --- trunk/plugins/MPTray4IrTrans/mptray4irtrans/Force.cs (rev 0) +++ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Force.cs 2009-05-05 16:37:52 UTC (rev 2838) @@ -0,0 +1,89 @@ +#region Copyright (C) 2009 Helmut Wahrmann (hwahrmann) + +/* + * Copyright (C) 2009 Helmut Wahrmann (hwahrmann) + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ +#endregion + +using System; +using System.Runtime.InteropServices; + +namespace mptray4irtrans +{ + public class Force + { + #region Native methods + + [DllImport("user32")] + private static extern bool SetFocus(IntPtr hWnd); + + [DllImport("user32")] + private static extern bool SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32")] + private static extern IntPtr GetForegroundWindow(); + + [DllImport("user32")] + private static extern bool BringWindowToTop(IntPtr hWnd); + + [DllImport("user32")] + private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); + + [DllImport("user32")] + private static extern bool AttachThreadInput(int nThreadId, int nThreadIdTo, bool bAttach); + + [DllImport("user32")] + private static extern int GetWindowThreadProcessId(IntPtr hWnd, int unused); + + [DllImport("user32")] + static extern bool IsWindowVisible(IntPtr hWnd); + + [DllImport("user32")] + static extern bool IsIconic(IntPtr hWnd); + + #endregion Native methods + + public static bool SetForegroundWindow(IntPtr window, bool force) + { + IntPtr windowForeground = GetForegroundWindow(); + + if(window == windowForeground || SetForegroundWindow(window)) + return true; + + if(force == false) + return false; + + if(windowForeground == IntPtr.Zero) + return false; + + // if we don't attach successfully to the windows thread then we're out of options + if(!AttachThreadInput(AppDomain.GetCurrentThreadId(), GetWindowThreadProcessId(windowForeground, 0), true)) + return false; + + SetForegroundWindow(window); + BringWindowToTop(window); + SetFocus(window); + + AttachThreadInput(AppDomain.GetCurrentThreadId(), GetWindowThreadProcessId(windowForeground, 0), false); + + // we've done all that we can so base our return value on whether we have succeeded or not + return (GetForegroundWindow() == window); + } + } +} \ No newline at end of file Added: trunk/plugins/MPTray4IrTrans/mptray4irtrans/Log.cs =================================================================== --- trunk/plugins/MPTray4IrTrans/mptray4irtrans/Log.cs (rev 0) +++ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Log.cs 2009-05-05 16:37:52 UTC (rev 2838) @@ -0,0 +1,104 @@ +#region Copyright (C) 2009 Helmut Wahrmann (hwahrmann) + +/* + * Copyright (C) 2009 Helmut Wahrmann (hwahrmann) + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ +#endregion + +using System; +using System.IO; + +namespace mptray4irtrans +{ + public class Log + { + #region Constructors + + private Log() + { + } + + static Log() + { + _logFilename = "log\\mptray4irtrans.log"; + if (File.Exists(_logFilename)) + File.Copy(_logFilename, _logFilename + ".bak", true); + } + + #endregion Constructors + + #region Methods + + public static void Delete() + { + lock(typeof(Log)) + { + if (File.Exists(_logFilename)) + File.Delete(_logFilename); + } + } + + public static void Write(string strFormat, params object[] arg) + { + if(_logEnabled == false) + return; + + lock(typeof(Log)) + { + try + { + using(StreamWriter writer = new StreamWriter(_logFilename, true)) + { + writer.BaseStream.Seek(0, SeekOrigin.End); // set the file pointer to the end of + writer.Write(DateTime.Now.ToShortDateString()+ " "+DateTime.Now.ToLongTimeString()+ " "); + writer.WriteLine(strFormat,arg); + writer.Close(); + } + } + catch(Exception) + { + } + } + } + + #endregion Methods + + #region Properties + + static public string Filename + { + get { return _logFilename; } + } + + static public bool IsEnabled + { + get { return _logEnabled; } + set { _logEnabled = value; } + } + + #endregion Properties + + #region Fields + + static string _logFilename; + static bool _logEnabled = false; + + #endregion Fields + } +} \ No newline at end of file Added: trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.Designer.cs =================================================================== --- trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.Designer.cs (rev 0) +++ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.Designer.cs 2009-05-05 16:37:52 UTC (rev 2838) @@ -0,0 +1,93 @@ +namespace mptray4irtrans +{ + partial class Mptray4Irtrans + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Mptray4Irtrans)); + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.menuReconnect = new System.Windows.Forms.ToolStripMenuItem(); + this.menuExit = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // notifyIcon1 + // + this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1; + this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); + this.notifyIcon1.Text = "MediaPortal IRTrans Shell"; + this.notifyIcon1.Visible = true; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuReconnect, + this.menuExit}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(226, 70); + // + // menuReconnect + // + this.menuReconnect.Enabled = false; + this.menuReconnect.Name = "menuReconnect"; + this.menuReconnect.Size = new System.Drawing.Size(225, 22); + this.menuReconnect.Text = "Reconnect to IRTrans Server"; + this.menuReconnect.Click += new System.EventHandler(this.menuReconnect_Click); + // + // menuExit + // + this.menuExit.Name = "menuExit"; + this.menuExit.Size = new System.Drawing.Size(225, 22); + this.menuExit.Text = "Exit"; + this.menuExit.ToolTipText = "Exit Application"; + this.menuExit.Click += new System.EventHandler(this.menuExit_Click); + // + // Mptray4Irtrans + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(137, 79); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Mptray4Irtrans"; + this.Text = "MediaPortal IRTrans Shell"; + this.WindowState = System.Windows.Forms.FormWindowState.Minimized; + this.Resize += new System.EventHandler(this.Form_Resize); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.NotifyIcon notifyIcon1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem menuExit; + private System.Windows.Forms.ToolStripMenuItem menuReconnect; + } +} \ No newline at end of file Added: trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.cs =================================================================== --- trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.cs (rev 0) +++ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.cs 2009-05-05 16:37:52 UTC (rev 2838) @@ -0,0 +1,339 @@ +#region Copyright (C) 2009 Helmut Wahrmann (hwahrmann) + +/* + * Copyright (C) 2009 Helmut Wahrmann (hwahrmann) + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ +#endregion + +using System; +using System.IO; +using System.Reflection; +using System.Threading; +using System.Windows.Forms; +using System.Diagnostics; +using System.Net.Sockets; +using System.Runtime.InteropServices; + + +namespace mptray4irtrans +{ + /// <summary> + /// This Application sits in the system tray and waits for the "Green Button" on the MCE Remote pressed. + /// It starts Mediaportal, if not active. + /// </summary> + public partial class Mptray4Irtrans : Form + { + public Mptray4Irtrans() + { + InitializeComponent(); + this.ShowInTaskbar = false; + // Get Information on how to connect to IRTrans Server + Xml xmldoc = new Xml("Mediaportal.xml"); + remoteModel = xmldoc.GetValueAsString("remote", "IRTransRemoteModel", "mediacenter"); + irTransServerPort = xmldoc.GetValueAsInt("remote", "IRTransServerPort", 21000); + logging = xmldoc.GetValueAsBool("remote", "IRTransVerboseLog", false); + + host = "localhost"; + Log.IsEnabled = logging; + + // Now Connect to the IRTransServer + if (Connect_IrTrans(irTransServerPort)) + { + Log.Write("Connection established."); + // Now Wait for data to be sent + WaitForData(); + } + else + { + // Enable the context menu + this.menuReconnect.Enabled = true; + // Now start a timer that tries to connect to the server + m_connectTimer = new System.Threading.Timer(new TimerCallback(ConnectServer), null, 10000, 10000); + } + } + + #region Methods + /// <summary> + /// Establishes a connection to the IRTransServer on "localhost" at the given Port. + /// Default Port is 21000, but could have been changed in Configuration. + /// </summary> + /// <param name="connectionPort"></param> + /// <returns></returns> + bool Connect_IrTrans(int connectionPort) + { + try + { + m_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + m_Socket.Connect(host, connectionPort); + // Send Client id to Server + int clientID = 0; + byte[] sendData = BitConverter.GetBytes(clientID); + m_Socket.Send(sendData, sendData.Length, SocketFlags.None); + this.menuReconnect.Enabled = false; + return true; + } + catch (SocketException) + { + Log.Write("Could not connect to server - server not started?"); + return false; + } + } + + /// <summary> + /// Close Connection to the server + /// </summary> + void Close_Connection() + { + try + { + m_Socket.Close(); + } + catch (SocketException se) + { + Log.Write("Exception on closing socket. {0}", se.Message); + } + } + + /// <summary> + /// Thread that checks periodically for a IRTRans Server to be started + /// </summary> + void ConnectServer(Object obj) + { + if (Connect_IrTrans(irTransServerPort)) + { + // Stops the Timer + m_connectTimer.Dispose(); + Log.Write("Connection established."); + // Now Wait for data to be sent + WaitForData(); + } + } + + /// <summary> + /// Establishes an Async Callback Procedure that receives data being sent via the IRTrans Server. + /// </summary> + void WaitForData() + { + try + { + if (pfnCallBack == null) + { + pfnCallBack = new AsyncCallback(OnDataReceived); + } + CSocketPacket socketPkt = new CSocketPacket(); + socketPkt.thisSocket = m_Socket; + // Now start to listen for any data. + m_asynResult = m_Socket.BeginReceive(socketPkt.receiveBuffer, 0, socketPkt.receiveBuffer.Length, SocketFlags.None, pfnCallBack, socketPkt); + } + catch (SocketException se) + { + this.menuReconnect.Enabled = true; + Log.Write("Error on receive from socket: {0}", se.Message); + } + } + + /// <summary> + /// Class that receives the Socketid and databuffer on receive + /// </summary> + public class CSocketPacket + { + public Socket thisSocket; + public byte[] receiveBuffer = new byte[350]; + } + + /// <summary> + /// Method is called, whenever a IR Comand is received via the IRTrans Server connection. + /// </summary> + /// <param name="asyn"></param> + void OnDataReceived(IAsyncResult asyn) + { + try + { + CSocketPacket theSockId = (CSocketPacket)asyn.AsyncState; + //Do an end receive first + int bytesReceived = 0; + bytesReceived = theSockId.thisSocket.EndReceive(asyn); + // Map the received data to the structure + IntPtr ptrReceive = Marshal.AllocHGlobal(bytesReceived); + Marshal.Copy(theSockId.receiveBuffer, 0, ptrReceive, bytesReceived); + NETWORKRECV netrecv = (NETWORKRECV)Marshal.PtrToStructure(ptrReceive, typeof(NETWORKRECV)); + + // Do an action only on Receive and if the command came from the selected Remote + if ((IrTransStatus)netrecv.statustype == IrTransStatus.STATUS_RECEIVE) + { + if (netrecv.remote.Trim() == remoteModel) + { + Log.Write("Received Command: " + netrecv.command.Trim()); + if (netrecv.command.Trim() == "ehome") + { + Process[] processes = Process.GetProcessesByName("mediaportal"); + + if (processes.Length != 0) + { + Log.Write("MediaPortal is already running"); + } + else + { + try + { + Log.Write("Starting MediaPortal"); + Uri uri = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase); + + Process process = new Process(); + + process.StartInfo.FileName = "mediaportal.exe"; + process.StartInfo.WorkingDirectory = Path.GetDirectoryName(uri.LocalPath); + process.StartInfo.UseShellExecute = true; + process.Start(); + + // We have some troubles to receive further requests, so let's close the connection and re-establish it + Close_Connection(); + m_connectTimer = new System.Threading.Timer(new TimerCallback(ConnectServer), null, 10000, 10000); + + AutoResetEvent evnt = new AutoResetEvent(false); + evnt.Close(); + + GC.ReRegisterForFinalize(evnt); + + evnt.Handle = NativeMethods.CreateEvent(IntPtr.Zero, false, false, "MediaPortalHandleCreated"); + + if (evnt.WaitOne(20000, false) == false) + return; + + processes = Process.GetProcessesByName("mediaportal"); + + if (processes.Length > 0) + Force.SetForegroundWindow(processes[0].MainWindowHandle, true); + } + catch (Exception ex) + { + Log.Write("Error Starting Mediaportal: {0}", ex.Message); + } + } + } + } + } + + Marshal.FreeHGlobal(ptrReceive); + WaitForData(); + } + catch (ObjectDisposedException oe) + { + Log.Write("Object Disposed Exception: {0}", oe.Message); + } + catch (SocketException se) + { + this.menuReconnect.Enabled = true; + Log.Write("Error on receive from socket: {0}", se.Message); + } + } + #endregion Methods + + #region Eventhandlers + // Always hide the Form + private void Form_Resize(object sender, EventArgs e) + { + Hide(); + } + + // Exit the Application + private void menuExit_Click(object sender, EventArgs e) + { + Log.Write("Exit requested by user."); + Close_Connection(); + this.Close(); + } + + // React on Windows System Shutdown + private const int WM_QUERYENDSESSION = 0x11; + protected override void WndProc(ref Message msg) + { + if (msg.Msg == WM_QUERYENDSESSION) + { + Log.Write("MediaPortal IRTRans Shell terminated because of System/Session shutdown."); + Close_Connection(); + //If system is shutting down, allow exit. + Application.Exit(); + } + base.WndProc(ref msg); + } + + // Reconnect to the Server + private void menuReconnect_Click(object sender, EventArgs e) + { + // Disable the context menu + this.menuReconnect.Enabled = false; + // Now start a timer that tries to connect to the server + m_connectTimer = new System.Threading.Timer(new TimerCallback(ConnectServer), null, 10000, 10000); + } + #endregion Eventhandlers + + #region Enums and Structure + public enum IrTransStatus + { + STATUS_MESSAGE = 1, + STATUS_TIMING = 2, + STATUS_DEVICEMODE = 3, + STATUS_RECEIVE = 4, + STATUS_LEARN = 5, + STATUS_REMOTELIST = 6, + STATUS_COMMANDLIST = 7, + STATUS_TRANSLATE = 8, + STATUS_FUNCTION = 9, + STATUS_DEVICEMODEEX = 10, + STATUS_DEVICEDATA = 11, + STATUS_LCDDATA = 12, + STATUS_FUNCTIONEX = 13, + STATUS_DEVICEMODEEXN = 14, + STATUS_IRDB = 15, + STATUS_TRANSLATIONFILE = 16, + STATUS_IRDBFILE = 17, + STATUS_BUSLIST = 18, + STATUS_LEARNDIRECT = 19 + } + + [StructLayout(LayoutKind.Sequential)] + public struct NETWORKRECV + { + public UInt32 clientid; + public Int16 statuslen; + public Int16 statustype; + public Int16 adress; + public UInt16 command_num; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] + public string remote; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] + public string command; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)] + public string data; + } + #endregion + + #region Variables and Constants + Socket m_Socket; + IAsyncResult m_asynResult; + AsyncCallback pfnCallBack; + string remoteModel = ""; + string host = ""; + int irTransServerPort = 21000; + bool logging = false; + System.Threading.Timer m_connectTimer = null; + #endregion + } +} \ No newline at end of file Added: trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.resx =================================================================== --- trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.resx (rev 0) +++ trunk/plugins/MPTray4IrTrans/mptray4irtrans/Mptray4Irtrans.resx 2009-05-05 16:37:52 UTC (rev 2838) @@ -0,0 +1,2893 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>124, 17</value> + </metadata> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + AAABAAQAgIAAAAEAIAAoCAEARgAAADAwAAABACAAqCUAAG4IAQAgIAAAAQAgAKgQAAAWLgEAEBAAAAEA + IABoBAAAvj4BACgAAACAAAAAAAEAAAEAIAAAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAChUxn/oVMZ/6BT + GP+gUhj/oFIY/6BSGP+fUhj/n1IY/59RF/+fURf/nlEX/55RF/+eUBf/nVAW/51QFv+dUBb/nVAW/5xP + Fv+cTxb/nE8V/5xPFf+bTxX/m04V/5tOFf+bThX/m04V/5pOFP+aThT/mk0U/5pNFP+ZTRT/mU0U/5lN + FP+ZTRP/mUwT/5lME/+YTBP/mEwT/5hME/+YTBP/mEwT/5hMEv+YSxL/mEsS/5dLEv+XSxL/l0sS/5dL + Ev+XSxL/l0sS/5dLEv+XSxL/l0sS/5dKEv+XShH/l0oR/5dKEf+WShH/lkoR/5ZKEf+WShH/lkoR/5ZK + Ef+WShH/lkoR/5ZKEf+WShH/lkoR/5ZKEf+WShH/lkoR/5ZKEf+WSRH/lkkR/5ZJEf+WSRH/lkkR/5ZJ + Ef+WSRH/lkkR/5ZJEf+WSRH/lkkR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJ + Ef+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJ + Ef+YSRH/mEkR/5hJEf+YSRH/mUkR/5lJEf+ZSRH/mUkR/5lJEf+ZSRH/mUkR/5lJEf+ZShH/mUoR/5lK + Ef+ZShH/mUoR/5lKEf+aShH/mkoR/6JTGf+hUxj+oVMY/qFTGP+gUhj+oFIX/qBSGP+fURf+n1EX/p9R + F/+eURb+nlAW/p5RF/+dUBb+nVAW/p1PFv6dUBb/nE8V/pxPFf6cTxb/nE4V/ptOFP6cTxX/m04U/ptO + FP6bThX/mk0U/ppNFP6aThT/mk0T/plNE/6ZTBP+mU0U/5lME/6YTBP+mU0T/5hMEv6YTBL+mUwT/5hL + Ev6YSxL+mEwT/5dLEv6XSxL+mEsS/5dLEf6XShH+l0oR/pdLEv+WShH+lkoR/pdLEv+WShH+lkoR/pdL + Ev+WShH+lkoR/pdKEf+WSRD+lkkQ/pZKEf+WSRD+lkkQ/pVJEP6WShH/lUkQ/pVJEP6WShH/lUkQ/pVJ + EP6WShH/lUkQ/pVJEP6WShH/lUkQ/pVJEP6WSRH/lUgQ/pVIEP6VSBD+lkkR/5VIEP6WSBD+l0kR/5ZI + EP6WSBD+l0kR/5ZIEP6WSBD+l0kR/5ZIEP6WSBD+l0kR/5ZIEP6WSBD+lkgQ/pdJEf+WSBD+lkgQ/pdJ + Ef+XSBD+l0gQ/phJEf+XSBD+l0gQ/phJEf+XSBD+l0gQ/phJEf+XSBD+l0gQ/pdIEP6YSRH/mEgQ/phI + EP6ZSRH/mEgQ/phIEP6ZSRH/mEkQ/phJEP6ZShH/mEkQ/phJEP6ZShH/mUkQ/plJEP6ZSRD+olQZ/6JT + GP6hUxj+oVMZ/6FTGP6gUhj+oFIY/6BSF/6gUhf+n1IX/59RF/6fURb+nlEX/55QFv6eUBb+nVAW/p1Q + Fv+dTxX+nU8V/p1PFv+cTxX+nE8V/pxPFf+bThT+m04U/ptOFf+bThT+mk0U/ptOFP+aTRT+mk0T/ppN + E/6aTRT/mUwT/plME/6ZTRP/mUwT/phMEv6ZTBP/mEwS/phLEv6YTBP/mEsS/pdLEv6YTBL/l0sS/pdL + Ef6XSxH+l0sS/5dKEf6WShH+l0sS/5ZKEf6WShH+l0sS/5ZKEf6WShH+l0oR/5ZKEf6WShD+l0oR/5ZJ + EP6WSRD+lkkQ/pZKEf+WSRD+lkkQ/pZKEf+VSRD+lUkQ/pZKEf+VSRD+lUkQ/pZKEf+VSRD+lUkQ/pZJ + Ef+VSRD+lUkQ/pVJEP6WSRH/lUgQ/pZIEP6XSRH/lkgQ/pZIEP6XSRH/lkgQ/pZIEP6XSRH/lkgQ/pZI + EP6XSRH/lkgQ/pZIEP6WSBD+l0kR/5ZIEP6WSBD+l0kR/5dIEP6XSBD+mEkR/5dIEP6XSBD+mEkR/5dI + EP6XSBD+mEkR/5dIEP6XSBD+l0gQ/phJEf+YSBD+mEgQ/plJEf+YSBD+mEgQ/plJEf+YSRD+mEkQ/plK + Ef+YSRD+mEkQ/plKEf+YSRD+mEkQ/plJEP6jVBn/olQZ/6JUGf+iVBn/olMZ/6FTGP+hUxj/oVMY/6BS + GP+gUhj/oFIY/59SF/+fURf/n1EX/59RF/+eURf/nlEW/55QFv+dUBb/nVAW/51QFv+dTxb/nU8V/5xP + Ff+cTxX/nE8V/5tPFf+bThX/m04V/5tOFP+bThT/mk4U/5pOFP+aTRT/mk0U/5pNFP+ZTRP/mU0T/5lN + E/+ZTBP/mUwT/5lME/+YTBP/mEwT/5hME/+YTBL/mEwS/5hMEv+YSxL/mEsS/5dLEv+XSxL/l0sS/5dL + Ev+XSxL/l0sS/5dLEv+XSxL/l0sR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+WShH/lkoR/5ZK + Ef+WShH/lkoR/5ZKEf+WShH/lkoR/5ZKEf+WShH/lkoR/5ZKEf+WShH/lkkR/5ZJEf+WSRH/lkkR/5dJ + Ef+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJ + Ef+XSRH/l0kR/5dJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJ + Ef+YSRH/mEkR/5lJEf+ZSRH/mUkR/5lJEf+ZShH/mUoR/5lKEf+ZShH/mUoR/5lKEf+ZShH/mUoR/6NV + Gv+jVBn+olQZ/qJUGf+iUxj+oVMY/qFTGP+hUhj+oFIY/qFSGP+gUhf+oFEX/qBSF/+fURf+n1EW/p5R + Fv6fURf/nlAW/p5QFv6eUBb/nU8V/p1PFf6dUBb/nE8V/pxPFf6cTxX/m04U/ptOFP6cTxX/m04U/ppN + FP6aTRT+m04U/5pNE/6aTRP+mk0U/5lME/6ZTBP+mU0T/5lMEv6YTBL+mUwT/5hMEv6YTBL+mEwT/5hL + Ev6XSxL+l0sS/phMEv+XSxH+l0sR/phLEv+XShH+l0oR/pdLEv+WShH+lkoR/pdLEv+WShH+lkoR/pdL + Ef+WShH+lkoQ/pZKEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6WShH/lkkQ/pZJ + EP6WShH/lkkQ/pZJEP6WSRD+lkoR/5ZJEP6WSRD+l0kR/5ZJEP6WSBD+l0kR/5ZIEP6WSBD+l0kR/5ZI + EP6WSBD+l0kR/5ZIEP6WSBD+lkgQ/pdJEf+WSBD+lkgQ/pdJEf+WSBD+lkgQ/pdJEf+XSBD+l0gQ/phJ + Ef+XSBD+l0gQ/phJEf+XSBD+l0gQ/pdIEP6YSRH/l0gQ/pdIEP6YSRH/mEgQ/phIEP6ZSRH/mEkQ/phJ + EP6ZShH/mEkQ/phJEP6ZShH/mEkQ/phJEP6YSRD+pFUa/6NUGf6jVBn+o1QZ/6JUGP6iUxj+olQZ/6FT + GP6hUxj+oVMY/6BSF/6gUhf+oFIY/6BRF/6fURb+n1EW/p9RF/+eUBb+nlAW/p5QFv+dUBX+nU8V/p1Q + Fv+dTxX+nE8V/p1PFf+cTxT+nE4U/pxPFf+bThT+m04U/ptOFP6bThT/mk0T/ppNE/6aThT/mk0T/plN + E/6aTRT/mUwT/plMEv6ZTRP/mEwS/phMEv6ZTBP/mEsS/phLEv6YSxL+mEwS/5dLEf6XSxH+mEwS/5dL + Ef6XSxH+mEsS/5dKEf6XShH+l0sS/5ZKEf6WShH+l0sS/5ZKEf6WShH+lkoQ/pdKEf+WShD+lkkQ/pdK + Ef+WSRD+lkkQ/pdKEf+WSRD+lkkQ/pdKEf+WSRD+lkkQ/pdKEf+WSRD+lkkQ/pZJEP6XShH/lkkQ/pZJ + EP6XShH/lkkQ/pZJEP6XSRH/lkkQ/pZIEP6XSRH/lkgQ/pZIEP6XSRH/lkgQ/pZIEP6WSBD+l0kR/5ZI + EP6WSBD+l0kR/5ZIEP6WSBD+l0kR/5dIEP6XSBD+mEkR/5dIEP6XSBD+mEkR/5dIEP6XSBD+l0gQ/phJ + Ef+XSBD+l0gQ/phJEf+YSBD+mEgQ/plJEf+YSRD+mEkQ/plKEf+YSRD+mEkQ/plKEf+YSRD+mEkQ/phJ + EP6lVhr/pFUa/6RVGv+kVRn/o1QZ/6NUGf+jVBn/olQZ/6JTGP+iUxj/oVMY/6FTGP+hUxj/oFIX/6BS + F/+gUhf/oFIX/59RF/+fURf/n1EW/55RFv+eUBb/nlAW/55QFv+dUBb/nVAV/51PFf+dTxX/nE8V/5xP + Ff+cTxX/nE4V/5xOFP+bThT/m04U/5tOFP+bThT/mk0U/5pNFP+aTRP/mk0T/5pNE/+ZTRP/mU0T/5lN + E/+ZTBP/mUwT/5lME/+ZTBP/mEwS/5hMEv+YTBL/mEwS/5hMEv+YSxL/mEsS/5hLEv+XSxL/l0sS/5dL + Ev+XSxL/l0sS/5dLEf+XSxH/l0sR/5dLEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dK + Ef+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0kR/5dJ + Ef+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5dJEf+XSRH/l0kR/5hJ + Ef+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJEf+YSRH/mEkR/5hJEf+YSRH/mUkR/5lK + Ef+ZShH/mUoR/5lKEf+ZShH/mUoR/5lKEf+ZShD/mUoQ/6VWGv+lVRn+pFUZ/qRVGv+kVBn+o1QZ/qNU + Gf+jVBj+olMY/qJTGP+iUxj+oVMX/qFTGP+hUhf+oFIX/qBSF/6gUhf/n1EW/p9RFv6fURf/nlAW/p5Q + Fv6eUBb/nlAV/p1QFf6dUBb/nU8V/p1PFf6dTxX/nE8U/pxOFP6cThT+nE8V/5tOFP6bThT+m04U/5pN + E/6aTRP+mk4U/5pNE/6aTRP+mk0T/5lMEv6ZTBL+mU0T/5lMEv6YTBL+mEwS/plME/+YSxL+mEsS/phM + Ev+YSxH+l0sR/phMEv+XSxH+l0sR/phLEv+XSxH+l0oR/pdLEv+XShH+l0oR/pZKEf6XSxH/lkoQ/pZK + EP6XSxH/lkoQ/pZKEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6WSRD+l0oR/5ZJ + EP6WSRD+l0oR/5ZJEP6WSRD+l0oR/5ZJEP6WSRD+l0oR/5ZJEP6WSRD+l0kR/5ZJEP6WSRD+lkkQ/pdJ + Ef+WSBD+lkgQ/pdJEf+WSBD+lkgQ/pdJEf+XSBD+l0gQ/phJEf+XSBD+l0gQ/phJEf+XSBD+l0gQ/pdI + EP6YSRH/l0gQ/pdIEP6YSRH/l0kQ/phJEP6ZShH/mEkQ/phJEP6ZShH/mEkQ/phJEP6ZShD/mEkQ/phJ + EP6YSQ/+plYa/6VWGv6lVRn+pVUa/6RVGf6kVRn+pFUZ/6NUGP6jVBj+o1QZ/6JTGP6iUxj+olMY/6FT + F/6hUhf+oVIX/qBSF/+gURf+oFEW/qBRF/+fURb+n1EW/p9RFv+eUBX+nlAV/p5QFv+dUBX+nU8V/p1Q + Ff+cTxX+nE8U/pxPFP6cTxX/nE4U/ptOFP6bThT/m04T/ptNE/6bThT/mk0T/ppNE/6aTRP/mk0T/plN + E/6aTRP/mUwS/plMEv6ZTBL+mUwT/5hMEv6YTBL+mUwS/5hLEv6YSxH+mEwS/5dLEf6XSxH+mEwS/5dL + Ef6XSxH+mEsS/5dKEf6XShH+l0oR/pdLEf+XShH+lkoQ/pdLEf+WShD+lkoQ/pdKEf+WShD+lkoQ/pdK + Ef+WSRD+lkkQ/pdKEf+WSRD+lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJ + EP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6WSRD+l0kR/5ZJEP6WSRD+l0kR/5ZJEP6WSRD+l0kR/5dJ + EP6XSRD+mEkR/5dJEP6XSRD+mEkR/5dJEP6XSRD+l0kQ/phJEf+XSRD+l0kQ/phJEf+XSRD+mEkQ/phK + Ef+YSRD+mEkQ/plKEf+YSRD+mEkQ/plKEP+YSQ/+mEkP/phJD/6nVxv/plYa/6ZWGv+lVhr/pVYa/6VV + Gv+lVRn/pFUZ/6RVGf+jVBn/o1QZ/6NUGf+iVBj/olMY/6JTGP+hUxj/oVMY/6FSF/+gUhf/oFIX/6BS + F/+gURf/n1EW/59RFv+fURb/n1EW/55QFv+eUBb/nlAW/51QFf+dUBX/nU8V/51PFf+cTxX/nE8V/5xP + FP+cThT/nE4U/5tOFP+bThT/m04U/5tOFP+bThT/mk0T/5pNE/+aTRP/mk0T/5pNE/+ZTRP/mU0T/5lN + E/+ZTBP/mUwS/5lMEv+ZTBL/mEwS/5hMEv+YTBL/mEwS/5hMEv+YSxL/mEsS/5hLEv+YSxL/mEsS/5hL + Ef+XSxH/l0sR/5dLEf+XSxH/l0sR/5dLEf+XSxH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dK + Ef+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dK + Ef+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mEoR/5hK + Ef+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mUoR/5lKEf+ZShH/mUoR/5lKEP+ZShD/mUoQ/5lK + EP+ZShD/mUoQ/6dXG/+mVhr+plYa/qZWGv+lVhn+pVUZ/qVVGv+kVRn+pFUZ/qRVGf+jVBj+o1QY/qNU + GP+iUxj+olMX/qJTF/6iUxj/oVIX/qFSF/6hUhf/oFEW/qBRFv6gURf/n1EW/p9QFv6fURb/nlAV/p5Q + Ff6eUBb/nU8V/p1PFf6dTxT+nU8V/5xPFP6cThT+nE8V/5xOFP6bThT+nE4U/5tOE/6bTRP+m04U/5pN + E/6aTRP+mk0T/5pNE/6ZTRL+mUwS/ppNE/+ZTBL+mUwS/plNE/+YTBL+mEwS/plMEv+YSxH+mEsR/phM + Ev+YSxH+mEsR/phMEv+XSxH+l0sR/pdLEf6YSxL/l0oR/pdKEf6YSxH/l0oQ/pdKEP6XSxH/l0oQ/pZK + EP6XSxH/lkoQ/pZKEP6XShH/lkoQ/pZKEP6WSRD+l0oR/5ZJEP6WSRD+l0oR/5ZJEP6WSRD+l0oR/5ZJ + EP6WSRD+l0oR/5ZJEP6WSRD+l0oR/5ZJEP6WSRD+lkkQ/pdKEf+WSRD+lkkQ/pdKEf+XSRD+l0kQ/phK + Ef+XSRD+l0kQ/phKEf+XSRD+l0kQ/phKEf+XSRD+l0kQ/pdJEP6YShH/l0kQ/pdJEP6YShH/l0kQ/phJ + EP6ZShH/mEkQ/phJEP6ZShD/mEkP/phJD/6ZShD/mEkP/phJD/6YSQ/+qFgb/6dXGv6nVxr+p1cb/6ZW + Gv6lVhn+plYa/6VVGf6lVRn+pVUZ/6RUGP6jVBj+pFQZ/6NUGP6iUxj+olMX/qJTGP+hUhf+oVIX/qFT + F/+gUhb+oFEW/qBSF/+gURb+n1EW/p9RFv+fUBX+nlAV/p9RFv+eUBX+nk8V/p1PFf6eUBX/nU8U/pxP + FP6dTxX/nE4U/pxOFP6cTxT/m04T/ptOE/6bThT/m00T/ppNE/6bThT/mk0T/ppNEv6aTRL+mk0T/5lM + Ev6ZTBL+mk0T/5lMEv6ZTBL+mUwS/5hMEv6YSxH+mUwS/5hLEf6YSxH+mEwS/5hLEf6XSxH+l0sR/phL + Ev+XSxH+l0oR/phLEv+XShH+l0oQ/phLEf+XShD+l0oQ/pdLEf+XShD+l0oQ/pdLEf+WShD+lkoQ/pZK + EP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJEP6XShH/lkkQ/pZJ + EP6WSRD+l0oR/5ZJEP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJ + EP6XSRD+l0kQ/phKEf+XSRD+l0kQ/phKEf+YSRD+mEkQ/plKEf+YSRD+mEkQ/plKEP+YSQ/+mEkP/plK + EP+YSQ/+mEkP/phJD/6pWBv/qFgb/6dXG/+nVxv/p1ca/6ZWGv+mVhr/plYa/6VWGv+lVhn/pVUZ/6RV + Gf+kVRn/pFQZ/6NUGP+jVBj/o1QY/6JTGP+iUxj/olMY/6FTF/+hUhf/oVIX/6BSF/+gUhb/oFEW/6BR + Fv+fURb/n1EW/59RFv+eUBb/nlAV/55QFf+eUBX/nU8V/51PFf+dTxX/nU8U/51PFP+cTxT/nE4U/5xO + FP+bThT/m04U/5tOFP+bThP/m04T/5pNE/+bTRP/mk0T/5pNE/+aTRP/mk0T/5pNE/+aTRP/mUwS/5lM + Ev+ZTBL/mUwS/5lMEv+ZTBL/mUwS/5hMEv+YTBL/mEwS/5hMEv+YSxL/mEsS/5hLEf+YSxH/mEsR/5hL + Ef+YSxH/mEsR/5hLEf+XSxH/mEsR/5dLEf+XSxH/l0sR/5dLEf+XShH/l0oR/5dKEf+XShH/l0oR/5dK + Ef+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+XShH/l0oR/5dKEf+YShH/l0oR/5hKEf+YShH/mEoR/5hK + Ef+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mEoR/5lK + Ef+ZShH/mUoR/5lKEP+ZShD/mUoQ/5lKEP+ZShD/mUoQ/5lKEP+ZShD/mUoQ/6lYHP+pWBv+qFgb/qhY + G/+nVxr+p1ca/qdXGv+mVhn+plYZ/qZWGv+lVRn+pVUZ/qVVGf+kVBj+pFQY/qNUGP6jVBj/o1MX/qJT + F/6iUxj/olIX/qFSF/6hUhf/oVIW/qBSFv6gUhf/oFEW/qBRFv6fURb/n1AV/p9QFf6eUBX+nlAV/55Q + Ff6dTxT+nlAV/51PFP6dTxT+nU8V/5xOFP6cThT+nE8U/5xOE/6bThP+m04U/5tNE/6bTRP+m00T/ptO + E/+aTRL+mk0S/ppNE/+aTRL+mUwS/ppNE/+ZTBL+mUwS/plNEv+ZTBH+mEwR/plMEv+YSxH+mEsR/phL + Ef6ZTBL/mEsR/phLEf6YTBL/mEsR/pdLEf6YSxH/l0oQ/pdKEP6YSxH/l0oQ/pdKEP6YSxH/l0oQ/pdK + EP6XShD+mEsR/5dKEP6XShD+mEoR/5dKEP6XShD+mEoR/5dKEP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJ + EP6XSRD+l0kQ/phKEf+XSRD+l0kQ/phKEf+XSRD+l0kQ/phKEf+XSRD+l0kQ/phKEf+XSRD+l0kQ/phK + Ef+XSRD+l0kQ/pdJEP6YShH/mEkQ/phJEP6YShH/mEkQ/phJEP6ZShH/mEkQ/phJD/6ZShD/mEkP/phJ + D/6ZShD/mEkP/phJD/6YSQ/+qlkc/6lYG/6pWBv+qVgb/6hXGv6oVxr+p1ca/6dWGv6nVhn+plYa/6ZW + Gf6lVRn+pVUZ/6VVGP6kVBj+pFQY/qRUGP+jVBj+o1MX/qNTGP+iUxf+olIX/qJTF/+hUhb+oVIW/qFS + F/+gURb+oFEW/qBRFv+fURX+n1AV/p9QFf6fURb/nlAV/p5QFf6eUBX/nU8U/p1PFP6dTxX/nU8U/pxO + FP6dTxT/nE4T/pxOE/6cThT/m04T/ptOE/6bTRP+m04T/5pNEv6aTRL+m04T/5pNEv6aTRL+mk0T/5lM + Ev6ZTBL+mk0S/5lMEv6ZTBH+mUwS/5lMEf6YSxH+mEsR/plMEv+YSxH+mEsR/plMEv+YSxH+mEsR/phL + Ef+YSxH+l0sQ/phLEf+XShD+l0oQ/phLEf+XShD+l0oQ/pdKEP6YSxH/l0oQ/pdKEP6YSxH/l0oQ/pdK + EP6YSxH/l0oQ/pdKEP6YShH/l0oQ/pdKEP6YShH/l0kQ/pdJEP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJ + EP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJEP6XSRD+mEoR/5dJEP6XSRD+l0kQ/phKEf+YSRD+mEkQ/plK + Ef+YSRD+mEkQ/plKEP+YSRD+mEkP/plKEP+YSQ/+mEkP/plKEP+YSQ/+mEkP/phJD/6qWRz/qlkb/qlY + G/6pWBv/qVgb/qhYGv6oVxv/qFca/qdXGv6nVxr/plYZ/qZWGf6mVhn/pVUZ/qVVGP6kVRj+pFUZ/6RU + GP6kVBj+o1QY/6NTF/6iUxf+olMX/6JSF/6hUhb+oVIX/6FSFv6hURb+oFIW/6BRFv6gURX+n1EV/p9R + Fv+fUBX+nlAV/p5QFf+eUBT+nk8U/p5QFf+dTxT+nU8U/p1PFP+cThT+nE4T/pxPFP+cThP+m04T/ptO + E/6bThP/m00T/ptNEv6bThP/mk0S/ppNEv6aTRP/mk0S/ppMEv6aTRP/mUwS/plMEv6aTRL/mUwR/plM + Ef6ZTBH+mUwS/5hLEf6YSxH+mUwS/5hLEf6YSxH+mUwS/5hLEf6YSxH+mEsR/5hLEP6YSxD+mEsR/5dK + EP6XShD+l0oQ/phLEf+XShD+l0oQ/phLEf+XShD+l0oQ/phLEf+XShD+l0oQ/phLEf+XShD+l0oQ/phK + Ef+XShD+l0oQ/pdKEP6YShH/l0kQ/pdJEP6YShH/l0kQ/pdJEP6YShH/l0kQ/pdJEP6YShH/l0kQ/pdJ + EP6YShH/l0kQ/phJEP6YSRD+mEoR/5hJEP6YSRD+mUoR/5hJEP6YSRD+mUoQ/5hJD/6YSQ/+mUoQ/5hJ + D/6YSQ/+mUoQ/5hJD/6ZSQ/+mUoP/qtaHP+rWRz/qlkc/6pZHP+qWRv/qVgb/6lYG/+oWBv/qFca/6hX + Gv+nVxr/p1ca/6ZWGv+mVhn/plYZ/6VVGf+lVRn/pVUZ/6RVGP+kVBj/o1QY/6NUGP+jUxj/o1MX/6JT + F/+iUxf/olIX/6FSF/+hUhf/oVIW/6BSFv+gURb/oFEW/6BRFv+fURb/n1EV/59QFf+fUBX/nlAV/55Q + Ff+eUBX/nk8V/51PFP+dTxT/nU8U/51PFP+cTxT/nE8U/5xOFP+cThT/nE4T/5tOE/+bThP/m04T/5tO + E/+bTRP/mk0T/5pNE/+aTRP/mk0S/5pNEv+aTRL/mk0S/5pNEv+aTBL/mUwS/5lMEv+ZTBL/mUwS/5lM + Ev+ZTBL/mUwS/5lMEf+ZTBH/mUwR/5lLEf+ZSxH/mEsR/5hLEf+YSxH/mEsR/5hLEf+YSxH/mEsR/5hL + Ef+YSxH/mEsR/5hLEf+YSxH/mEsR/5hLEf+YSxH/mEsR/5hLEf+YSxH/mEsR/5hKEf+YShH/mEoR/5hK + Ef+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mEoR/5hKEf+YShH/mUoR/5lKEf+ZShH/mUoR/5lK + Ef+ZShH/mUoR/5lKEf+ZShD/mUoQ/5lKEP+ZShD/mUoQ/5lKEP+ZShD/mUoQ/5pKEP+bSxD/rFoc/6ta + HP6rWRv+q1kc/6pZG/6qWBv+qVgb/6lYGv6oVxr+qFga/6hXGv6nVhn+p1ca/6ZWGf6mVhn+plUY/qZW + Gf+lVRj+pVQY/qVVGP+kVBf+o1MX/qRUGP+jUxf+olMX/qNTF/+iUhb+oVIW/qJSF/+hUhb+oVEW/qBR + Ff6hURb/oFEV/p9QFf6gURX/n1AV/p5QFP6fUBX/nk8U/p5PFP6eUBX/nU8U/p1PFP6dTxT/nE4T/pxO + E/6cThP+nE8U/5xOE/6bThP+nE4T/5tNEv6bTRL+m04T/5pNEv6aTRL+m00T/5pNEv6aTBL+mk0S/5lM + Ev6ZTBH+mUwR/ppNEv+ZTBH+mUwR/ppMEv+ZTBH+mUsR/plMEv+YSxH+mEsR/plMEf+YSxH+mEsQ/plM + Ef+YSxD+mEsQ/phLEP6ZSxH/mEoQ/phKEP6ZSxH/mEoQ/phKEP6YSxH/mEoQ/pdKEP6YSxH/l0oQ/pdK + EP6YSxH/l0oQ/pdKEP6XShD+mEsR/5dKEP6XShD+mEoR/5dKEP6XShD+mEoR/5hKEP6YShD+mEoR/5hK + EP6YShD+mUoR/5hKEP6YShD+mEoQ/plKEf+YSRD+mEkQ/plKEf+YSRD+mEkQ/plKEP+YSQ/+mEkP/plK + EP+YSQ/+mUoP/plKEP+aSg/+m0sP/ptLD/6sWx3/rFoc/qtaHP6rWhz/q1kb/qpZG/6qWRv/qVga/qlY + Gv6pWBv/qFca/qhXGv6oVxr/p1YZ/qdWGf6mVhn+plYZ/6VVGP6lVRj+pVUY/6RUGP6kVBf+pFQY/6NT + F/6jUxf+o1MX/6JTF/6iUhb+olMX/6JSFv6hUhb+oVEW/qFSFv+gURX+oFEV/qBRFv+fUBX+n1AV/p9Q + Ff+eUBT+nlAU/p5QFf+eTxT+nU8U/p1PFP+dTxP+nU8T/p1OE/6dTxT/nE4T/pxOE/6cThP/m04T/ptN + Ev6bThP/m00S/ptNEv6bThP/mk0S/ppNEv6aTRP/mkwS/ppMEv6aTBH+mk0S/5lMEf6ZTBH+mk0S/5lM + Ef6ZTBH+mUwS/5lLEf6ZSxH+mUwS/5hLEf6YSxD+mUwR/5hLEP6YSxD+mEsQ/plLEf+YSxD+mEsQ/plL + Ef+YShD+mEoQ/plLEf+YShD+mEoQ/phLEf+YShD+mEoQ/phLEf+YShD+mEoQ/phKEP6YSxH/mEoQ/phK + EP6YSxH/mEoQ/phKEP6YSxH/mEoQ/phKEP6ZSxH/mEoQ/phKEP6ZSxH/mEoQ/phKEP6YShD+mUoR/5hK + EP6YShD+mUoR/5hKEP6YShD+mUoQ/5lKD/6ZSg/+mUoQ/5lKD/6ZSg/+mksQ/5pLD/6bSw/+m0sP/q1b + Hf+tWx3/rFoc/6xaHP+sWhz/q1oc/6tZG/+qWRv/qlkb/6pYG/+pWBv/qVga/6hXGv+oVxr/p1ca/6dW + Gf+nVhn/plYZ/6ZWGf+mVRn/pVUY/6VVGP+lVBj/pFQY/6RUGP+kVBj/o1MX/6NTF/+jUxf/olMX/6JS + F/+iUhb/oVIW/6FSFv+hUhb/oFEW/6BRFv+gURX/oFEV/59RFf+fUBX/n1AV/59QFf+eUBX/nlAU/55Q + FP+eTxT/nU8U/51PFP+dTxT/nU8U/51PFP+cThP/nE4T/5xOE/+cThP/nE4T/5tOE/+bThP/m04T/5tO + E/+bTRP/m00S/5pNEv+aTRL/mk0S/5pNEv+aTRL/mk0S/5pNEv+aTBL/mkwS/5pMEv+aTBL/mUwR/5lM + Ef+ZTBH/mUwR/5lMEf+ZTBH/mUwR/5lMEf+ZTBH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lL + Ef+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lL + Ef+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEP+ZSxD/mUsQ/5pL + EP+aSxD/mksQ/5pLEP+aSxD/m0sQ/5xMEP+cTBD/rlsd/61bHP6tWxz+rVsc/6xaHP6sWhv+q1oc/6tZ + G/6qWRv+qlkb/6pYGv6pWBr+qVga/6hXGv6oVxn+p1YZ/qdXGf+nVhn+plUY/qZWGf+lVRj+pVUY/qVV + GP+kVBf+pFQX/qRUGP+jUxf+o1MX/qNTF/+iUhb+olIW/qJSFv6iUhb/oVIV/qFRFf6hUhb/oFEV/qBR + Ff6gURX/n1AV/p9QFP6fUBX/n1AU/p5QFP6eUBX/nk8U/p1PFP6dTxP+nU8U/51PE/6dThP+nU8U/5xO + E/6cThP+nE4T/5xOEv6bTRL+nE4T/5tNEv6bTRL+m04T/5tNEv6aTRL+mk0S/ptNEv+aTBH+mkwR/ppN + Ev+aTBH+mUwR/ppNEv+ZTBH+mUwR/ppMEv+ZTBH+mUsR/ppMEf+ZSxD+mUsQ/plLEP6ZTBH/mUsQ/plL + EP6ZTBH/mEsQ/phLEP6ZSxH/mEsQ/phLEP6ZSxH/mEsQ/phLEP6ZSxH/mEoQ/phKEP6YShD+mUsR/5hK + EP6YShD+mUsR/5hKEP6YShD+mUsR/5hKEP6YShD+mUsR/5hKEP6YShD+mUsR/5hKEP6YShD+mEoQ/plL + Ef+ZShD+mUoQ/plLEf+ZShD+mUoQ/ppLEP+ZSg/+mUoP/ppLEP+ZSg/+mUoP/ppLEP+bSw/+m0sP/ptL + D/6vXB3/rlsc/q1bHP6tWx3/rVoc/qxaHP6sWhz/q1kb/qtZG/6rWRv/qlga/qlYGv6qWBv/qVca/qhX + Gv6oVxn+qFca/6dWGf6nVhn+p1YZ/6ZVGP6lVRj+plUY/6VUGP6kVBf+pVQY/6RTF/6jUxf+pFQX/6NT + Fv6iUhb+olIW/qJTFv+hUhb+oVIV/qFSFv+gURX+oFEV/qBRFv+gUBX+n1AV/qBRFf+fUBT+n1AU/p9Q + Ff+eTxT+nk8U/p5PFP6eUBT/nU8T/p1PE/6dTxT/nE4T/pxOE/6dTxP/nE4T/pxOEv6cThP/m04S/ptN + Ev6cThP/m00S/ptNEv6aTRL+m00S/5pNEv6aTRH+m00S/5pMEf6aTBH+mk0S/5lMEf6ZTBH+mk0S/5lM + Ef6ZTBH+mkwR/5lMEf6ZTBD+mUsQ/ppMEf+ZSxD+mUsQ/plMEf+ZSxD+mEsQ/plMEf+YSxD+mEsQ/plM + Ef+YSxD+mEsQ/plLEf+YSxD+mEsQ/phLEP6ZSxH/mEoQ/phKEP6ZSxH/mEoQ/phKEP6ZSxH/mEoQ/phK + EP6ZSxH/mEoQ/phKEP6ZSxH/mEoQ/plKEP6ZShD+mUsR/5lKEP6ZShD+mksR/5lKEP6ZShD+mksQ/5lK + D/6ZSg/+mksQ/5lKD/6ZSg/+mksQ/5pLD/6bSw/+m0sP/q9dHv+vXB3/rlwd/65cHf+uWx3/rVsc/61b + HP+sWhz/rFoc/6xaG/+rWRv/q1kb/6pZG/+qWBv/qVga/6lYGv+pVxr/qFca/6hXGf+oVhn/p1YZ/6dW + Gf+mVhn/plUY/6VVGP+lVRj/pVQY/6RUGP+kVBf/pFQX/6NTF/+jUxf/o1MX/6NTF/+iUxb/olIW/6FS + Fv+hUhb/oVIW/6FRFv+gURX/oFEV/6BRFf+gURX/n1EV/59QFf+fUBX/n1AU/55QFP+eUBT/nlAU/55P + FP+dTxT/nU8U/51PFP+dTxP/nU8T/51PE/+cThP/nE4T/5xOE/+cThP/nE4T/5xOE/+bThP/m04S/5tO + Ev+bTRL/m00S/5tNEv+bTRL/m00S/5tNEv+aTRL/mk0S/5pNEv+aTRL/mk0S/5pMEf+aTBH/mkwR/5pM + Ef+aTBH/mkwR/5pMEf+aTBH/mkwR/5pMEf+aTBH/mkwR/5pMEf+aTBH/mkwR/5lMEf+ZTBH/mUwR/5lL + Ef+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5lLEf+ZSxH/mUsR/5pLEf+aSxH/mksR/5pLEf+aSxH/mksR/5pL + Ef+aSxH/mksR/5pLEf+aSxH/mksR/5pLEP+aSxD/mksQ/5pLEP+aSxD/mksQ/5pLEP+aSxD/m0sQ/5xM + EP+cTBD/sF0e/69cHf6vXB3+r1wd/65bHP6uWxz+rVsc/61aG/6tWhv+rFoc/6xZG/6rWRr+q1kb/6pY + Gv6qWBr+qVga/qlYGv+oVxn+qFcZ/qhXGf+nVhj+p1YY/qdWGf+mVRj+plUY/qZVGP+lVBf+pVQX/qVU + GP+kUxf+pFMW/qNTFv6jUxf/olIW/qJSFv6iUhb/olIV/qFRFf6hUhb/oVEV/qBRFf6gURX/oFAU/qBQ + FP6gURX/n1AU/p9QFP6fUBT+n1AU/55PE/6eTxP+nlAU/51PE/6dTxP+nU8U/51OE/6cThP+nU8T/5xO + Ev6cThL+nE4T/5xOEv6bTRL+m00S/pxOE/+bTRL+m00S/ptOEv+bTRH+m00R/ptNEv+aTBH+mkwR/ptN + Ev+aTBH+mkwR/ppNEv+aTBH+mkwR/ppMEf6aTBH/mUwQ/plMEP6aTBH/mUsQ/plLEP6aTBH/mUsQ/plL + EP6aTBH/mUsQ/plLEP6aTBH/mUsQ/plLEP6ZSxD+mkwR/5lLEP6ZSxD+mksR/5lLEP6ZSxD+mksR/5lL + EP6ZSxD+mksR/5lLEP6ZShD+mksR/5lKEP6ZShD+mUoQ/ppLEf+ZShD+mUoQ/ppLEf+ZShD+mUoQ/ppL + EP+ZSg/+mUoP/ppLEP+aSg/+mkoP/ppLEP+bSw/+m0sP/ptLD/6xXR7/sF0d/rBcHf6vXB3/r1wc/q5b + HP6uWxz/rVsc/q1aG/6tWhz/rFob/qxZG/6rWRv/q1ka/qpYGv6qWBr+qlga/6lXGf6pVxn+qFcZ/6hW + Gf6nVhj+p1YZ/6ZVGP6mVRj+plUY/6VUF/6lVBf+pVQY/6RUF/6kUxf+pFMW/qRTF/+jUxb+o1IW/qNT + Fv+iUhX+olIV/qJSFv+hURX+oVEV/qFRFf+gURT+oFAU/qBRFf+fUBT+n1AU/p9QFP6fUBT/nk8U/p5P + E/6eUBT/nk8T/p1PE/6eTxT/nU4T/p1OE/6dTxP/nE4S/pxOEv6dTxP/nE4S/pxOEv6cTRL+nE4T/5tN + Ev6bTRL+nE4S/5tNEf6bTRH+m00S/5tNEf6aTBH+m00S/5pMEf6aTBH+m00S/5pMEf6aTBH+mkwR/ptN + Ef+aTBD+mkwQ/ppMEf+aTBD+mkwQ/ppMEf+ZSxD+mUsQ/ppMEf+ZSxD+mUsQ/ppMEf+ZSxD+mUsQ/plL + EP6aTBH/mUsQ/plLEP6aTBH/mUsQ/plLEP6aTBH/mUsQ/plLEP6aTBH/mUsQ/plLEP6aSxH/mUsQ/plL + EP6ZSxD+mksR/5lKEP6ZShD+mksR/5lKEP6aShD+mksQ/5pKD/6aSg/+mksQ/5pKD/6aSg/+m0sQ/5tL + D/6bSw/+m0sP/rFeHv+xXR7/sV0d/7BdHf+wXB3/r1wd/69cHf+uWxz/rlsc/61bHP+tWhz/rFob/6xa + G/+sWRv/q1kb/6tZGv+qWBr/qlga/6lYGv+pVxr/qVcZ/6hXGf+oVhn/p1YZ/6dWGf+nVhj/plUY/6ZV + GP+mVRj/pVQY/6VUF/+kVBf/pFQX/6RTF/+jUxf/o1MW/6NTFv+jUxb/olIW/6JSFv+hUhb/oVIV/6FR + Ff+hURX/oVEV/6BRFf+gURX/oFEV/59QFf+fUBT/n1AU/59QFP+eUBT/nlAU/55QFP+eTxT/nk8U/55P + E/+dTxP/nU8T/51PE/+dTxP/nU4T/5xOE/+cThP/nE4T/5xOE/+cThL/nE4S/5xOEv+cThL/nE4S/5tN + Ev+bTRL/m00S/5tNEv+bTRL/m00S/5tNEv+bTRL/m00R/5tNEf+bTRH/m00R/5tNEf+aTRH/mkwR/5pM + Ef+aTBH/mkwR/5pMEf+aTBH/mkwR/5pMEf+aTBH/mkwR/5pMEf+aTBH/mkwR/5pMEf+aTBH/mkwR/5pM + Ef+aTBH/mkwR/5pMEf+aTBH/mkwR/5pMEf+aTBH/mkwR/5pLEf+aSxH/mksR/5pLEf+aSxH/mksR/5pL + EP+bSxD/m0sQ/5tLEP+bSxD/m0sQ/5tLEP+bSxD/m0sQ/5xMEP+cTBD/sl4e/7JeHv6xXR3+sV0e/7Bd + Hf6wXB3+r1wd/69bHP6uWxz+rlsc/61bG/6tWhv+rVob/6xZG/6sWRr+q1ka/qtZG/+qWBr+qlgZ/qlY + Gv+pVxn+qVcZ/qhXGf+oVhj+p1YY/qdWGf+mVRj+plUX/qZVGP+lVBf+pVQX/qVUF/6lVBf/pFMW/qRT + Fv6kUxf/o1MW/qNSFv6jUxb/olIV/qJSFf6iUhb/oVEV/qFRFf6hURX/oFEU/qBQFP6gUBT+oFEV/59Q + FP6fUBT+n1AU/59QE/6eTxP+n1AU/55PE/6eTxP+nk8U/51PE/6dThP+nU8T/51OEv6dThL+nE4S/p1P + E/+cThL+nE4S/pxOE/+cTRL+nE0S/pxOEv+bTRH+m00R/pxOEv+bTRH+m00R/ptNEv+bTRH+m00R/ptM + Ef6bTRL/m0wR/ptMEf6bTRH/mkwQ/ppMEP6bTRH/mkwQ/ppMEP6bTRH/mkwQ/ppMEP6bTBH/mkwQ/ppM + EP6aTBD+m0wR/5pLEP6aSxD+m0wR/5pLEP6aSxD+m0wR/5pLEP6aSxD+m0wR/5pLEP6aSxD+m0wR/5pL + EP6aSxD+mksQ/ptMEf+aSxD+mksQ/ptMEf+aSxD+mksQ/ptMEP+aSw/+mksP/ptLEP+aSw/+mksP/ptL + EP+bSw/+m0sP/ptLD/6zXx//sl4e/rJeHf6yXh7/sV0d/rBdHf6wXR3/r1wc/q9cHP6vXBz/rlsb/q1a + G/6tWxz/rVob/qxZGv6sWRr+rFkb/6tYGv6qWBr+qlga/6lXGf6pVxn+qVcZ/6hWGP6oVhj+qFYZ/6dV + GP6nVRj+p1UY/6ZVF/6mVBf+pVQX/qVUF/+kUxb+pFMW/qRUF/+jUxb+o1IW/qNTFv+iUhX+olIV/qJS + Fv+hURX+oVEV/qFSFf+hURT+oFEU/qBQFP6gURX/n1AU/p9QFP6gURT/n1AT/p9PE/6fUBT/nk8T/p5P + E/6eUBT/nk8T/p1PE/6eTxP/nU4S/p1OEv6dThL+nU8T/5xOEv6cThL+nU4T/5xOEv6cTRL+nE4S/5xN + Ef6bTRH+nE4S/5tNEf6bTRH+nE4S/5tNEf6bTRH+m00R/pxNEv+bTBH+m0wR/ptNEf+bTBD+mkwQ/ptN + Ef+aTBD+mkwQ/ptNEf+aTBD+mkwQ/ptNEf+aTBD+mkwQ/ppMEP6bTBH/mkwQ/ppMEP6bTBH/mksQ/ppL + EP6bTBH/mksQ/ppLEP6bTBH/mksQ/ppLEP6bTBH/mksQ/ppLEP6aSxD+m0wR/5pLEP6aSxD+m0wR/5pL + EP6aSxD+m0wQ/5pLD/6aSw/+m0wQ/5pLD/6aSw/+m0wQ/5tLD/6bSw/+m0sP/rRfH/+zXx7/s14e/7Je + Hv+yXh7/sV0e/7FdHf+wXR3/sFwd/69cHP+vXBz/r1sc/65bHP+tWhz/rVob/61aG/+sWhv/rFkb/6tZ + Gv+rWBr/qlga/6pYGv+pVxn/qVcZ/6lXGf+oVhn/qFYZ/6dWGP+nVhj/p1UY/6ZVGP+mVRj/plUX/6VU + F/+lVBf/pVQX/6RUF/+kUxb/pFMW/6NTFv+jUxb/o1IW/6JSFv+iUhb/olIV/6FSFf+hUhX/oVEV/6FR + Ff+gURX/oFEV/6BRFP+gURT/n1AU/59QFP+fUBT/n1AU/59QFP+eUBT/nk8T/55PE/+eTxP/nk8T/55P + E/+eTxP/nU8T/51PE/+dTxP/nU8T/51OEv+dThL/nU4S/51OEv+cThL/nE4S/5xOEv+cThL/nE4S/5xO + Ev+cThL/nE0S/5xNEv+cTRL/nE0R/5xNEf+cTRH/nE0R/5tNEf+bTRH/m00R/5tNEf+bTRH/m00R/5tN + Ef+bTRH/m00R/5tNEf+bTRH/m00R/5tNEf+bTRH/m0wR/5tMEf+bTBH/m0wR/5tMEf+bTBH/m0wR/5tM + Ef+bTBH/m0wR/5tMEf+bTBH/m0wR/5tMEf+bTBH/m0wR/5tMEP+bTBD/m0wQ/5tMEP+bTBD/m0wQ/5tM + EP+bTBD/m0wQ/5xMEP+cTBD/tGAf/7RfHv6zXx7+s18e/7JeHf6yXR3+sl0d/7FdHf6xXBz+sFwd/69c + HP6vWxv+r1sc/65aG/6tWhv+rVob/q1aG/+sWRr+rFka/qtZGv+rWBn+qlcZ/qpYGv+pVxn+qVcY/qlX + Gf+oVhj+qFYY/qhWGP+nVRf+p1UX/qZVF/6mVRf/pVQX/qVUFv6lVBf/pFMW/qRTFv6kUxb/o1IW/qNS + Ff6jUxb/olIV/qJSFf6iUhb/oVEV/qFRFP6hURT+oVEV/6BRFP6gUBT+oFEV/6BQFP6fUBP+oFAU/59Q + E/6fTxP+n1AU/55PE/6eTxP+n1AT/55PE/6eTxL+nU8S/p5PE/+dThL+nU4S/p5PE/+dThL+nU4S/p1O + Ev+cThH+nE4R/p1OEv+cTRH+nE0R/p1OEv+cTRH+nE0... [truncated message content] |
From: <gho...@us...> - 2009-05-05 21:00:37
|
Revision: 2844 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2844&view=rev Author: ghose_sf Date: 2009-05-05 21:00:11 +0000 (Tue, 05 May 2009) Log Message: ----------- Added Paths: ----------- trunk/plugins/BluRayPlayerLauncher/ Removed Paths: ------------- trunk/plugins/ArcsoftPlayer/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-06-20 01:17:08
|
Revision: 2946 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2946&view=rev Author: chef_koch Date: 2009-06-20 01:17:01 +0000 (Sat, 20 Jun 2009) Log Message: ----------- added my alarm plugin from mp trunk Added Paths: ----------- trunk/plugins/MyAlarm/ trunk/plugins/MyAlarm/MyAlarm/ trunk/plugins/MyAlarm/MyAlarm/Alarm.cs trunk/plugins/MyAlarm/MyAlarm/Alarm.gif trunk/plugins/MyAlarm/MyAlarm/AlarmCollection.cs trunk/plugins/MyAlarm/MyAlarm/AlarmSetupForm.cs trunk/plugins/MyAlarm/MyAlarm/AlarmSetupForm.resx trunk/plugins/MyAlarm/MyAlarm/Alarm_disabled.gif trunk/plugins/MyAlarm/MyAlarm/GUIAlarm.cs trunk/plugins/MyAlarm/MyAlarm/GUIAlarmDetails.cs trunk/plugins/MyAlarm/MyAlarm/GUISleepTimer.cs trunk/plugins/MyAlarm/MyAlarm/MyAlarm.csproj trunk/plugins/MyAlarm/MyAlarm/Skin/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/Media/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/Media/alarm.png trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/Media/alarm_logo.png trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/Media/hover_my alarm.png trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/myalarm.xml trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/myalarmdetails.xml trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/myalarmsleeptimer.xml trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/Media/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/Media/alarm.png trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/Media/alarm_logo.png trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/Media/hover_my alarm.png trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/myalarm.xml trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/myalarmdetails.xml trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/myalarmsleeptimer.xml trunk/plugins/MyAlarm/MyAlarm.sln Added: trunk/plugins/MyAlarm/MyAlarm/Alarm.cs =================================================================== --- trunk/plugins/MyAlarm/MyAlarm/Alarm.cs (rev 0) +++ trunk/plugins/MyAlarm/MyAlarm/Alarm.cs 2009-06-20 01:17:01 UTC (rev 2946) @@ -0,0 +1,1286 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +/* + * Copyright (C) 2005-2009 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.ComponentModel; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; +using MediaPortal.Configuration; +using MediaPortal.Dialogs; +using MediaPortal.GUI.Library; +using MediaPortal.Player; +using MediaPortal.Playlists; + +namespace MediaPortal.GUI.Alarm +{ + /// <summary> + /// Alarm Class + /// </summary> + public class Alarm : IDisposable + { + #region Private Variables + + private static AlarmCollection _Alarms; + private Timer _AlarmTimer = new Timer(); + private Timer _VolumeFadeTimer = new Timer(); + private static Timer _StopAlarmTimer = new Timer(); + private int _Id; + private bool _Enabled; + private string _Name; + private DateTime _Time; + private DateTime _SnoozeAlarmTime = new DateTime(1901, 1, 1); //special date indicating snooze is off + private DateTime _LastTriggeredTime = new DateTime(1901, 1, 1); + private static DateTime _StopAlarmTime = new DateTime(1901, 1, 1); //ensure that its before the current time + private bool _Mon; + private bool _Tue; + private bool _Wed; + private bool _Thu; + private bool _Fri; + private bool _Sat; + private bool _Sun; + private string _Sound; + private MediaType _MediaType; + private bool _VolumeFade; + private GUIListItem _SelectedItem; + private bool _Wakeup; + private AlarmType _AlarmType; + private string _Message; + private int _RepeatCount; + private PlayListPlayer playlistPlayer; + private bool _disallowShutdown; + private static bool _initializedStopAlarmTimer; + private BackgroundWorker _backgroundWorker; + private static int _wakeupInterval = 0; + + //constants + private const int _MaxAlarms = 20; + + #endregion + + #region Public Enumerations + + public enum AlarmType + { + Once = 0, + Recurring = 1 + } + + public enum MediaType + { + PlayList = 0, + File = 1, + Message = 2 + } + + #endregion + + #region Constructor + + public Alarm(int id, string name, int mediaType, bool enabled, DateTime time, bool mon, bool tue, bool wed, bool thu, + bool fri, bool sat, bool sun, string sound, bool volumeFade, bool wakeup, int alarmType, string message) + : this() + { + _Id = id; + _Name = name; + _MediaType = (MediaType) mediaType; + _Enabled = enabled; + _Time = time; + _Mon = mon; + _Tue = tue; + _Wed = wed; + _Thu = thu; + _Fri = fri; + _Sat = sat; + _Sun = sun; + _Sound = sound; + _VolumeFade = volumeFade; + _Wakeup = wakeup; + _AlarmType = (AlarmType) alarmType; + _Message = message; + _SnoozeAlarmTime = new DateTime(1901, 1, 1); //ensure that its before the actual alarm trigger time + _disallowShutdown = false; + + InitializeTimer(); + } + + private Alarm() + { + playlistPlayer = PlayListPlayer.SingletonPlayer; + } + + public Alarm(int id) + : this() + { + _Id = id; + _Name = GUILocalizeStrings.Get(869) + _Id.ToString(); + _Time = DateTime.Now; + } + + #endregion + + #region Public Properties + + public AlarmType AlarmOccurrenceType + { + get { return _AlarmType; } + set { _AlarmType = value; } + } + + public bool Wakeup + { + get { return _Wakeup; } + set { _Wakeup = value; } + } + + public string Name + { + get { return _Name; } + set { _Name = value; } + } + + /// <summary> + /// Returns a string to display the days the alarm is enabled + /// </summary> + public string DaysEnabled + { + get + { + StringBuilder sb = new StringBuilder("-------"); + + if (_Sun) + { + sb.Replace("-", "S", 0, 1); + } + if (_Mon) + { + sb.Replace("-", "M", 1, 1); + } + if (_Tue) + { + sb.Replace("-", "T", 2, 1); + } + if (_Wed) + { + sb.Replace("-", "W", 3, 1); + } + if (_Thu) + { + sb.Replace("-", "T", 4, 1); + } + if (_Fri) + { + sb.Replace("-", "F", 5, 1); + } + if (_Sat) + { + sb.Replace("-", "S", 6, 1); + } + + return sb.ToString(); + } + } + + public MediaType AlarmMediaType + { + get { return _MediaType; } + set { _MediaType = value; } + } + + public bool Enabled + { + get { return _Enabled; } + set + { + _Enabled = value; + _AlarmTimer.Enabled = value; + } + } + + public DateTime Time + { + get { return _Time; } + set { _Time = value; } + } + + public DateTime LastTriggeredTime + { + get { return _LastTriggeredTime; } + set { _LastTriggeredTime = value; } + } + + public DateTime NextAlarmTriggerTime + { + get + { + DateTime tmpNextAlarmTriggerTime = new DateTime(); + + //determine the next alarm trigger time (not including snoozes) + switch (this.AlarmOccurrenceType) + { + case AlarmType.Once: + tmpNextAlarmTriggerTime = this.Time; + break; + + case AlarmType.Recurring: + //resolve recurring alarm to next trigger date + //loop through the next 7 days to + //find the next enabled day for the alarm + for (int i = 0; i < 8; i++) + { + DateTime DateToCheck = DateTime.Now.AddDays(i); + + //check to see if day is enabled for this alarm + if (this.IsDayEnabled(DateToCheck.DayOfWeek)) + { + //find next enabled day - build new date from the new date found, combined with the alarm trigger time + tmpNextAlarmTriggerTime = new DateTime(DateToCheck.Year, DateToCheck.Month, DateToCheck.Day, + this.Time.Hour, this.Time.Minute, this.Time.Second); + + //check to see if the alarm for this day has passed or not + //extra 15 seconds leeway for OnTimer to act before the next alarm trigger time is reported + //ensure the leeway time is MORE THAN the alarm timer interval, otherwise intermittent alarm + //not triggering issues will arise + if (DateTime.Compare(tmpNextAlarmTriggerTime.AddSeconds(15), DateTime.Now) >= 0) + { + //trigger time has not passed yet, therefore this is the next trigger time for this alarm + break; + } + } + } + break; + } + + //determine if the result is the snooze time or the next alarm trigger time (excluding snooze time) + //if snooze is disabled (DateTime(1901,1,1)) then return next alarm trigger time + if (_SnoozeAlarmTime == new DateTime(1901, 1, 1)) + { + return tmpNextAlarmTriggerTime; + } + else + { + //check to see if snooze time is still valid, if not, reset it and return the next alarm trigger time + //1 minute is added to the _SnoozeAlarmTime for comparison to give leeway for the snooze alarm to trigger + if (DateTime.Compare(_SnoozeAlarmTime.AddMinutes(1), DateTime.Now) < 0) + { + _SnoozeAlarmTime = new DateTime(1901, 1, 1); + return tmpNextAlarmTriggerTime; + } + + return _SnoozeAlarmTime; + } + } + } + + public string Sound + { + get { return _Sound; } + set { _Sound = value; } + } + + public int Id + { + get { return _Id; } + } + + public bool Mon + { + get { return _Mon; } + set { _Mon = value; } + } + + public bool Tue + { + get { return _Tue; } + set { _Tue = value; } + } + + public bool Wed + { + get { return _Wed; } + set { _Wed = value; } + } + + public bool Thu + { + get { return _Thu; } + set { _Thu = value; } + } + + public bool Fri + { + get { return _Fri; } + set { _Fri = value; } + } + + public bool Sat + { + get { return _Sat; } + set { _Sat = value; } + } + + public bool Sun + { + get { return _Sun; } + set { _Sun = value; } + } + + public bool VolumeFade + { + get { return _VolumeFade; } + set { _VolumeFade = value; } + } + + public GUIListItem SelectedItem + { + get { return _SelectedItem; } + set { _SelectedItem = value; } + } + + public string Message + { + get { return _Message; } + set { _Message = value; } + } + + public bool DisallowShutdown + { + get { return _disallowShutdown; } + + set { _disallowShutdown = value; } + } + + public bool AlarmTriggerDialogOpen + { + get + { + if (_backgroundWorker == null) + { + return false; + } + else + { + return _backgroundWorker.IsBusy; + } + } + } + + #endregion + + #region Private Methods + + /// <summary> + /// Initializes the timer objects + /// </summary> + private void InitializeTimer() + { + _AlarmTimer.Tick += new EventHandler(OnTimer); + _AlarmTimer.Interval = 10000; //10 seconds + _VolumeFadeTimer.Tick += new EventHandler(OnTimer); + _VolumeFadeTimer.Interval = 3000; //3 seconds + + if (_Enabled) + { + _AlarmTimer.Enabled = true; + } + } + + /// <summary> + /// Executes on the interval of the timer objects. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void OnTimer(Object sender, EventArgs e) + { + if (sender == _AlarmTimer) + { + //check to see if this instance of the alarm has triggered for this minute + if (DateTime.Now.Subtract(LastTriggeredTime).TotalMinutes > 1) + { + //check to see if alarm is within the current minute + if ((DateTime.Compare(this.NextAlarmTriggerTime, DateTime.Now) <= 0) && + (DateTime.Compare(this.NextAlarmTriggerTime, DateTime.Now.AddMinutes(-1)) >= 0)) + { + if (_AlarmType == AlarmType.Recurring && IsDayEnabled() || _AlarmType == AlarmType.Once) + { + Log.Info("Alarm: {0} fired at {1}", _Name, DateTime.Now); + + LastTriggeredTime = DateTime.Now; + + //disallowShutdown as alarm is on + _disallowShutdown = true; + + //reset snooze timer, if set + _SnoozeAlarmTime = new DateTime(1901, 1, 1); + + //load alarm alert (sound, playlist, radio, or message) + if (!GUIGraphicsContext.IsFullScreenVideo) + { + Play(); + //enable fade timer if selected + if (_VolumeFade) + { + g_Player.Volume = 0; + _VolumeFadeTimer.Enabled = true; + } + } + + //set StopAlarmTime (alarm timeout) + StopAlarmTime = DateTime.Now.AddMinutes(AlarmTimeout); + + //load alarm dialog in different thread - allows PowerScheduler to continue working properly (as it requires the UI thread, and dialogs steal the UI thread when modal) + _backgroundWorker = new BackgroundWorker(); + _backgroundWorker.DoWork += new DoWorkEventHandler(ShowAlarmTriggeredDialog_DoWork); + _backgroundWorker.RunWorkerCompleted += + new RunWorkerCompletedEventHandler(ShowAlarmTriggeredDialog_RunWorkerCompleted); + + //build dialog title + string dialogTitle; + if (this.Message == string.Empty) + { + dialogTitle = GUILocalizeStrings.Get(850) + " - " + this.Name; + } + else + { + dialogTitle = this.Message; + } + + //run thread + _backgroundWorker.RunWorkerAsync(dialogTitle); + } + } + //else if the NextAlarmTriggerTime is before the current time, once-off alarm was missed - disable alarm + else if (DateTime.Compare(this.NextAlarmTriggerTime, DateTime.Now) < 0) + { + if ((_backgroundWorker != null) && (_backgroundWorker.IsBusy)) + { + return; + } + + _AlarmTimer.Enabled = false; + this.Enabled = false; + SaveAlarm(this); + + Log.Info("Alarm '{0}' could not fire at {1}. Computer not on and wake up not allowed?", this.Name, + this.NextAlarmTriggerTime.ToString()); + } + } + } + else if (sender == _VolumeFadeTimer) + { + if (g_Player.Volume < 99) + { + g_Player.Volume += 1; + } + else + { + _VolumeFadeTimer.Enabled = false; + } + } + } + + /// <summary> + /// Method that shows the alarm triggered dialog - to dismiss or snooze alarm + /// </summary> + public void ShowAlarmTriggeredDialog_DoWork(object sender, DoWorkEventArgs e) + { + if (GUIWindowManager.IsRouted) // Don't show two dialogs at the same time + { + e.Result = 1; // try it once again in 1 minute + return; + } + + GUIDialogMenu dlgAlarmOpts = (GUIDialogMenu) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_MENU); + dlgAlarmOpts.Reset(); + + dlgAlarmOpts.SetHeading((string) e.Argument); + + dlgAlarmOpts.Add(GUILocalizeStrings.Get(857) + " 5 " + GUILocalizeStrings.Get(3004)); + dlgAlarmOpts.Add(GUILocalizeStrings.Get(857) + " 10 " + GUILocalizeStrings.Get(3004)); + dlgAlarmOpts.Add(GUILocalizeStrings.Get(857) + " 15 " + GUILocalizeStrings.Get(3004)); + dlgAlarmOpts.Add(GUILocalizeStrings.Get(857) + " 30 " + GUILocalizeStrings.Get(3004)); + dlgAlarmOpts.Add(GUILocalizeStrings.Get(857) + " 1 " + GUILocalizeStrings.Get(3001)); + dlgAlarmOpts.Add(GUILocalizeStrings.Get(858)); + + dlgAlarmOpts.DoModal(GUIWindowManager.ActiveWindow); + + //process dialog result + switch (dlgAlarmOpts.SelectedLabel) + { + case 0: + e.Result = 5; + break; + + case 1: + e.Result = 10; + break; + + case 2: + e.Result = 15; + break; + + case 3: + e.Result = 30; + break; + + case 4: + e.Result = 60; + break; + + default: + e.Result = 0; + break; + } + } + + /// <summary> + /// Event handler for when the AlarmTriggeredDialog thread is finished + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void ShowAlarmTriggeredDialog_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + //dialog dismissed, assume alarm acknowledged, allow shutdown if criteria met + _disallowShutdown = false; + + SetSnoozePeriod((int) e.Result); + _backgroundWorker.Dispose(); + + //disable alarm if it is a once-only alarm and no snooze was required + if ((((int) e.Result) == 0) && (this.AlarmOccurrenceType == AlarmType.Once)) + { + //disable the timer. + _AlarmTimer.Enabled = false; + + this.Enabled = false; + SaveAlarm(this); + } + } + + /// <summary> + /// Sets the snooze period and reenables the alarm timer + /// </summary> + /// <param name="minutes"></param> + private void SetSnoozePeriod(int minutes) + { + if (minutes > 0) + { + if (_MediaType != MediaType.Message) + { + g_Player.Stop(); + } + _SnoozeAlarmTime = DateTime.Now.AddMinutes(minutes); + + //do not return to the home screen if snooze was set and and alarm is not allowed to wake up computer (otherwise, snooze alarm may not run) + if (this.Wakeup == false) + { + _disallowShutdown = true; + } + } + } + + /// <summary> + /// Checks if the current dayofweek for the alarm is enabled + /// </summary> + /// <returns>true if current dayofweek is enabled</returns> + private bool IsDayEnabled() + { + switch (DateTime.Now.DayOfWeek) + { + case DayOfWeek.Monday: + return _Mon; + case DayOfWeek.Tuesday: + return _Tue; + case DayOfWeek.Wednesday: + return _Wed; + case DayOfWeek.Thursday: + return _Thu; + case DayOfWeek.Friday: + return _Fri; + case DayOfWeek.Saturday: + return _Sat; + case DayOfWeek.Sunday: + return _Sun; + } + return false; + } + + /// <summary> + /// Returns if the day parameter is enabled for this alarm + /// </summary> + /// <param name="day">day to check</param> + /// <returns>True if day passed in is enabled</returns> + private bool IsDayEnabled(DayOfWeek day) + { + switch (day) + { + case DayOfWeek.Monday: + return _Mon; + case DayOfWeek.Tuesday: + return _Tue; + case DayOfWeek.Wednesday: + return _Wed; + case DayOfWeek.Thursday: + return _Thu; + case DayOfWeek.Friday: + return _Fri; + case DayOfWeek.Saturday: + return _Sat; + case DayOfWeek.Sunday: + return _Sun; + } + return false; + } + + /// <summary> + /// Plays the selected media type + /// </summary> + private void Play() + { + switch (_MediaType) + { + case MediaType.PlayList: + if (PlayListFactory.IsPlayList(_Sound)) + { + string soundName = PlayListPath + "\\" + _Sound; + IPlayListIO loader = PlayListFactory.CreateIO(soundName); + PlayList playlist = new PlayList(); + + if (!loader.Load(playlist, soundName)) + { + ShowErrorDialog(); + return; + } + if (playlist.Count == 1) + { + SetVolume(); + g_Player.Play(playlist[0].FileName); + g_Player.Volume = 99; + return; + } + for (int i = 0; i < playlist.Count; ++i) + { + PlayListItem playListItem = playlist[i]; + playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_MUSIC).Add(playListItem); + } + if (playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_MUSIC).Count > 0) + { + playlistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_MUSIC; + playlistPlayer.Reset(); + SetVolume(); + playlistPlayer.Play(0); + g_Player.Volume = 99; + } + } + else + { + ShowErrorDialog(); + } + break; + case MediaType.File: + if (AlarmSoundPath.Length != 0 && _Sound.Length != 0) + { + try + { + _RepeatCount = 0; + SetVolume(); + g_Player.Play(AlarmSoundPath + "\\" + _Sound); + g_Player.Volume = 99; + + //add playback end handler if file <= repeat seconds in configuration + if (g_Player.Duration <= RepeatSeconds) + { + g_Player.PlayBackEnded += new g_Player.EndedHandler(g_Player_PlayBackEnded); + } + } + catch (COMException) + { + ShowErrorDialog(); + } + } + else + { + ShowErrorDialog(); + } + + + break; + case MediaType.Message: + //do not play any media, message only + break; + } + } + + /// <summary> + /// Sets the alarm volume if set, and unmutes the computer + /// </summary> + private void SetVolume() + { + VolumeHandler volumeHandler = new VolumeHandler(); + + //check to see if setting has been enabled + if (AlarmVolEnable) + { + //apply volume if it has been set (greater than 0) + if (AlarmVol > 0) + { + volumeHandler.Volume = AlarmVol; + Log.Info("Alarm: volume changed to alarm volume setting - {0}", AlarmVol); + } + } + + volumeHandler.IsMuted = false; + } + + /// <summary> + /// Shows the Error Dialog + /// </summary> + private void ShowErrorDialog() + { + GUIDialogOK dlgOK = (GUIDialogOK) GUIWindowManager.GetWindow((int) GUIWindow.Window.WINDOW_DIALOG_OK); + if (dlgOK != null) + { + dlgOK.SetHeading(6); + dlgOK.SetLine(1, 477); + dlgOK.SetLine(2, ""); + dlgOK.DoModal(GUIAlarm.WindowAlarm); + } + return; + } + + /// <summary> + /// Handles the playback ended event to loop the sound file if necessary + /// </summary> + /// <param name="type"></param> + /// <param name="filename"></param> + private void g_Player_PlayBackEnded(g_Player.MediaType type, string filename) + { + //play file again, increment loop counter + if (_RepeatCount <= RepeatCount) + { + g_Player.Play(AlarmSoundPath + "\\" + _Sound); + _RepeatCount += 1; + } + } + + #endregion + + #region IDisposable Members + + public void Dispose() + { + _AlarmTimer.Enabled = false; + _AlarmTimer.Dispose(); + _VolumeFadeTimer.Dispose(); + } + + #endregion + + #region Static Methods + + /// <summary> + /// Loads all of the alarms from the profile xml + /// </summary> + /// <returns>ArrayList of Alarm Objects</returns> + public static void LoadAll() + { + AlarmCollection Alarms = new AlarmCollection(); + + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + for (int i = 0; i < _MaxAlarms; i++) + { + string NameTag = String.Format("alarmName{0}", i); + string MediaTypeTag = String.Format("alarmMediaType{0}", i); + string TimeTag = String.Format("alarmTime{0}", i); + string EnabledTag = String.Format("alarmEnabled{0}", i); + string MonTag = String.Format("alarmMon{0}", i); + string TueTag = String.Format("alarmTue{0}", i); + string WedTag = String.Format("alarmWed{0}", i); + string ThuTag = String.Format("alarmThu{0}", i); + string FriTag = String.Format("alarmFri{0}", i); + string SatTag = String.Format("alarmSat{0}", i); + string SunTag = String.Format("alarmSun{0}", i); + string SoundTag = String.Format("alarmSound{0}", i); + string VolumeFadeTag = String.Format("alarmVolumeFade{0}", i); + string WakeUpPCTag = String.Format("alarmWakeUpPC{0}", i); + string AlarmTypeTag = String.Format("alarmType{0}", i); + string MessageTag = String.Format("alarmMessage{0}", i); + + string AlarmName = xmlreader.GetValueAsString("alarm", NameTag, ""); + + if (AlarmName.Length > 0) + { + bool AlarmEnabled = xmlreader.GetValueAsBool("alarm", EnabledTag, false); + int AlarmMediaType = xmlreader.GetValueAsInt("alarm", MediaTypeTag, 1); + DateTime AlarmTime = DateTime.Parse(xmlreader.GetValueAsString("alarm", TimeTag, string.Empty)); + bool AlarmMon = xmlreader.GetValueAsBool("alarm", MonTag, false); + bool AlarmTue = xmlreader.GetValueAsBool("alarm", TueTag, false); + bool AlarmWed = xmlreader.GetValueAsBool("alarm", WedTag, false); + bool AlarmThu = xmlreader.GetValueAsBool("alarm", ThuTag, false); + bool AlarmFri = xmlreader.GetValueAsBool("alarm", FriTag, false); + bool AlarmSat = xmlreader.GetValueAsBool("alarm", SatTag, false); + bool AlarmSun = xmlreader.GetValueAsBool("alarm", SunTag, false); + string AlarmSound = xmlreader.GetValueAsString("alarm", SoundTag, string.Empty); + bool AlarmVolumeFade = xmlreader.GetValueAsBool("alarm", VolumeFadeTag, false); + bool WakeUpPC = xmlreader.GetValueAsBool("alarm", WakeUpPCTag, false); + int AlarmType = xmlreader.GetValueAsInt("alarm", AlarmTypeTag, 1); + string Message = xmlreader.GetValueAsString("alarm", MessageTag, string.Empty); + + + Alarm objAlarm = new Alarm(i, AlarmName, AlarmMediaType, AlarmEnabled, AlarmTime, + AlarmMon, AlarmTue, AlarmWed, AlarmThu, + AlarmFri, AlarmSat, AlarmSun, AlarmSound, AlarmVolumeFade, WakeUpPC, AlarmType, + Message); + + Alarms.Add(objAlarm); + } + } + } + _Alarms = Alarms; + } + + /// <summary> + /// Saves an alarm to the configuration file + /// </summary> + /// <param name="alarmToSave">Alarm object to save</param> + /// <returns></returns> + public static bool SaveAlarm(Alarm alarmToSave) + { + int id = alarmToSave.Id; + + using (Profile.Settings xmlwriter = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + xmlwriter.SetValue("alarm", "alarmName" + id, alarmToSave.Name); + xmlwriter.SetValue("alarm", "alarmMediaType" + id, (int) alarmToSave.AlarmMediaType); + xmlwriter.SetValueAsBool("alarm", "alarmEnabled" + id, alarmToSave.Enabled); + xmlwriter.SetValue("alarm", "alarmTime" + id, alarmToSave.Time); + xmlwriter.SetValueAsBool("alarm", "alarmMon" + id, alarmToSave.Mon); + xmlwriter.SetValueAsBool("alarm", "alarmTue" + id, alarmToSave.Tue); + xmlwriter.SetValueAsBool("alarm", "alarmWed" + id, alarmToSave.Wed); + xmlwriter.SetValueAsBool("alarm", "alarmThu" + id, alarmToSave.Thu); + xmlwriter.SetValueAsBool("alarm", "alarmFri" + id, alarmToSave.Fri); + xmlwriter.SetValueAsBool("alarm", "alarmSat" + id, alarmToSave.Sat); + xmlwriter.SetValueAsBool("alarm", "alarmSun" + id, alarmToSave.Sun); + xmlwriter.SetValue("alarm", "alarmSound" + id, alarmToSave.Sound); + xmlwriter.SetValueAsBool("alarm", "alarmVolumeFade" + id, alarmToSave.VolumeFade); + xmlwriter.SetValueAsBool("alarm", "alarmWakeUpPC" + id, alarmToSave.Wakeup); + xmlwriter.SetValue("alarm", "alarmType" + id, (int) alarmToSave.AlarmOccurrenceType); + xmlwriter.SetValue("alarm", "alarmMessage" + id, alarmToSave.Message); + } + return true; + } + + /// <summary> + /// Deletes an alarm from the configuration file + /// </summary> + /// <param name="id">Id of alarm to be deleted</param> + /// <returns>true if suceeded</returns> + public static bool DeleteAlarm(int id) + { + using (Profile.Settings xmlwriter = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + xmlwriter.RemoveEntry("alarm", "alarmName" + id); + xmlwriter.RemoveEntry("alarm", "alarmEnabled" + id); + xmlwriter.RemoveEntry("alarm", "alarmTime" + id); + xmlwriter.RemoveEntry("alarm", "alarmMon" + id); + xmlwriter.RemoveEntry("alarm", "alarmTue" + id); + xmlwriter.RemoveEntry("alarm", "alarmWed" + id); + xmlwriter.RemoveEntry("alarm", "alarmThu" + id); + xmlwriter.RemoveEntry("alarm", "alarmFri" + id); + xmlwriter.RemoveEntry("alarm", "alarmSat" + id); + xmlwriter.RemoveEntry("alarm", "alarmSun" + id); + xmlwriter.RemoveEntry("alarm", "alarmSound" + id); + xmlwriter.RemoveEntry("alarm", "alarmMediaType" + id); + xmlwriter.RemoveEntry("alarm", "alarmVolumeFade" + id); + xmlwriter.RemoveEntry("alarm", "alarmWakeUpPC" + id); + xmlwriter.RemoveEntry("alarm", "alarmType" + id); + xmlwriter.RemoveEntry("alarm", "alarmMessage" + id); + } + return true; + } + + /// <summary> + /// Gets the next blank Id for a new alarm + /// </summary> + /// <returns>Integer Id</returns> + public static int GetNextId + { + get + { + string tempText; + for (int i = 0; i < _MaxAlarms; i++) + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml")) + ) + { + tempText = xmlreader.GetValueAsString("alarm", "alarmName" + i, ""); + if (tempText.Length == 0) + { + return i; + } + } + } + return -1; + } + } + + /// <summary> + /// Gets the icon based on the current alarm media type + /// </summary> + public string GetIcon + { + get + { + switch (_MediaType) + { + case MediaType.File: + return "defaultAudio.png"; + case MediaType.PlayList: + return "DefaultPlaylist.png"; + case MediaType.Message: + { + return "dialog_information.png"; + } + } + return string.Empty; + } + } + + /// <summary> + /// Refreshes the loaded alarms from the config file + /// </summary> + public static void RefreshAlarms() + { + if (_Alarms != null) + { + foreach (Alarm a in _Alarms) + { + a.Dispose(); + } + _Alarms.Clear(); + + //Load all the alarms + LoadAll(); + } + } + + /// <summary> + /// Checks to see if the stopalarmtimer has been initialized; if not, initialize it + /// </summary> + private static void InitializeStopAlarmTimer() + { + if (_initializedStopAlarmTimer == false) + { + _StopAlarmTimer.Interval = 10000; //10 seconds + _StopAlarmTimer.Tick += new EventHandler(OnStopAlarmTimer); + + _initializedStopAlarmTimer = true; + } + } + + /// <summary> + /// Reacts to the StopAlarmTimer - if the time has passed, stop the alarm. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private static void OnStopAlarmTimer(Object sender, EventArgs e) + { + if (DateTime.Compare(_StopAlarmTime, DateTime.Now) <= 0) + { + int alarmTriggerDialogsOpen = 0; + + foreach (Alarm a in _Alarms) + { + if (a.AlarmTriggerDialogOpen == true) + { + alarmTriggerDialogsOpen += 1; + } + } + + //only stop player if dialog is open + if (alarmTriggerDialogsOpen > 0) + { + //dismiss all alarm trigger dialogs + for (int i = 0; i < alarmTriggerDialogsOpen; i++) + { + Action act = new Action(); + act.wID = Action.ActionType.REMOTE_6; //number for the dismiss option + + GUIGraphicsContext.OnAction(act); + } + + //stop player + g_Player.Stop(); + } + + _StopAlarmTimer.Enabled = false; + + //NOTE: to disable the StopAlarmTimer, set Alarm.StopAlarmTime = new DateTime(1901,1,1); + } + } + + #endregion + + #region Static Properties + + /// <summary> + /// Gets / Sets the loaded alarms + /// </summary> + public static AlarmCollection LoadedAlarms + { + get { return _Alarms; } + } + + /// <summary> + /// Gets the alarms sound path from the configuration file + /// </summary> + public static string AlarmSoundPath + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return Util.Utils.RemoveTrailingSlash(xmlreader.GetValueAsString("alarm", "alarmSoundsFolder", "")); + } + } + } + + /// <summary> + /// Gets the playlist path from the configuration file + /// </summary> + public static string PlayListPath + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return Util.Utils.RemoveTrailingSlash(xmlreader.GetValueAsString("music", "playlists", "")); + } + } + } + + /// <summary> + /// Gets the configured timeout period in minutes + /// </summary> + public static int AlarmTimeout + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return xmlreader.GetValueAsInt("alarm", "alarmTimeout", 60); + } + } + } + + /// <summary> + /// Gets the configured duration to qualify to repeat the playing file + /// </summary> + public static int RepeatSeconds + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return xmlreader.GetValueAsInt("alarm", "alarmRepeatSeconds", 120); + } + } + } + + /// <summary> + /// Gets the configured count to repeat the file + /// </summary> + public static int RepeatCount + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return xmlreader.GetValueAsInt("alarm", "alarmRepeatCount", 5); + } + } + } + + /// <summary> + /// Gets the configured setting - whether the alarm volume setting should be applied + /// </summary> + public static bool AlarmVolEnable + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return xmlreader.GetValueAsBool("alarm", "alarmAlarmVolEnable", false); + } + } + } + + /// <summary> + /// Gets the configured alarm volume setting + /// </summary> + public static int AlarmVol + { + get + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + return xmlreader.GetValueAsInt("alarm", "alarmAlarmVol", 0); + } + } + } + + /// <summary> + /// Checks all alarms for disallowShutdown flag + /// </summary> + public static bool DisallowShutdownCheckAllAlarms + { + get + { + bool disallowShutdown = false; + string alarmResponsible = null; + + if (_Alarms != null) + { + foreach (Alarm a in _Alarms) + { + if (a.DisallowShutdown == true) + { + alarmResponsible += a.Name + " "; + disallowShutdown = true; + } + } + } + + return disallowShutdown; + } + } + + /// <summary> + /// Gets/sets the stopalarmtime + /// </summary> + public static DateTime StopAlarmTime + { + get { return _StopAlarmTime; } + set + { + //only take the later datetime value + if (DateTime.Compare(value, _StopAlarmTime) > 0) + { + _StopAlarmTime = value; + InitializeStopAlarmTimer(); + _StopAlarmTimer.Enabled = true; + } + //if value is before current time, assume StopAlarmTimer is to be disabled + else if (DateTime.Compare(value, DateTime.Now) < 0) + { + _StopAlarmTime = value; + _StopAlarmTimer.Enabled = false; + } + } + } + + #endregion + + #region PowerScheduler Interface Implementation + + /// <summary> + /// Powersheduler implimentation, returns true if the plugin can allow hibernation + /// </summary> + public bool CanHibernate + { + get + { + if (!GUIGraphicsContext.IsFullScreenVideo || !GUIGraphicsContext.IsPlaying) + { + return true; + } + else + { + return false; + } + } + } + + /// <summary> + /// Gets the DateTime for the next active alarm to wake up the pc. + /// </summary> + /// <param name="earliestStartTime">Interface parameter for PowerScheduler - defines when the next wake up can start</param> + /// <returns>DateTime</returns> + public static DateTime GetNextAlarmDateTime(DateTime earliestStartTime) + { + if (_Alarms == null) + { + return DateTime.MaxValue; + } + + //load wakeupInterval value if not there (different to powerscheduler's) + if (_wakeupInterval == 0) + { + using (Profile.Settings xmlreader = new Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + _wakeupInterval = xmlreader.GetValueAsInt("alarm", "wakeupInterval", 2); + } + } + + DateTime NextStartTime = new DateTime(); + + //make the starting off nextdatetime a year away so earlier (real alarm trigger) times can be compared + NextStartTime = DateTime.MaxValue; + + foreach (Alarm a in _Alarms) + { + //alarm must be enabled and set to wake up the pc. + if (a.Enabled && a.Wakeup) + { + DateTime tmpNextAlarmTriggerTime = a.NextAlarmTriggerTime; + + if (DateTime.Compare(tmpNextAlarmTriggerTime, earliestStartTime) >= 0) + { + if (DateTime.Compare(tmpNextAlarmTriggerTime, NextStartTime) < 0) + { + NextStartTime = new DateTime(tmpNextAlarmTriggerTime.Ticks); + } + + //reset disallowshutdown flag + //a.DisallowShutdown = false; //needed? + } + else if (DateTime.Compare(tmpNextAlarmTriggerTime, DateTime.Now) >= 0) + { + //next alarm is before the earliestStartTime, so disallowshutdown + a.DisallowShutdown = true; + } + } + } + + //MediaPortal.GUI.Library.Log.Info("Alarm: next alarm trigger time: {0}", NextStartTime.ToString()); + + //account for the wakeup interval + return NextStartTime.AddMinutes(-_wakeupInterval); + } + + #endregion + } +} \ No newline at end of file Added: trunk/plugins/MyAlarm/MyAlarm/Alarm.gif =================================================================== (Binary files differ) Property changes on: trunk/plugins/MyAlarm/MyAlarm/Alarm.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MyAlarm/MyAlarm/AlarmCollection.cs =================================================================== --- trunk/plugins/MyAlarm/MyAlarm/AlarmCollection.cs (rev 0) +++ trunk/plugins/MyAlarm/MyAlarm/AlarmCollection.cs 2009-06-20 01:17:01 UTC (rev 2946) @@ -0,0 +1,165 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +/* + * Copyright (C) 2005-2009 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections; + +namespace MediaPortal.GUI.Alarm +{ + /// <summary> + /// Summary description for AlarmCollection. + /// </summary> + public class AlarmCollection : CollectionBase + { + public enum AlarmField + { + Id, + Name, + Enabled, + Time + } + + public void Sort(AlarmField sortField, bool isAscending) + { + switch (sortField) + { + case AlarmField.Id: + InnerList.Sort(new IdComparer()); + break; + case AlarmField.Name: + InnerList.Sort(new NameComparer()); + break; + case AlarmField.Time: + InnerList.Sort(new AlarmTimeComparer()); + break; + } + if (!isAscending) + { + InnerList.Reverse(); + } + } + + + private sealed class IdComparer : IComparer + { + public int Compare(object x, object y) + { + Alarm first = (Alarm) x; + Alarm second = (Alarm) y; + return first.Id - second.Id; + } + } + + private sealed class AlarmTimeComparer : IComparer + { + public int Compare(object x, object y) + { + Alarm first = (Alarm) x; + Alarm second = (Alarm) y; + return first.Time.TimeOfDay.CompareTo(second.Time.TimeOfDay); + } + } + + private sealed class NameComparer : IComparer + { + public int Compare(object x, object y) + { + Alarm first = (Alarm) x; + Alarm second = (Alarm) y; + return first.Name.CompareTo(second.Name); + } + } + + // Provide the strongly typed member for ICollection. + public void CopyTo(Alarm[] array, int index) + { + ((ICollection) this).CopyTo(array, index); + } + + public Alarm this[int index] + { + get { return ((Alarm) List[index]); } + set { List[index] = value; } + } + + public int Add(Alarm value) + { + return (List.Add(value)); + } + + public int IndexOf(Alarm value) + { + return (List.IndexOf(value)); + } + + public void Insert(int index, Alarm value) + { + List.Insert(index, value); + } + + public void Remove(Alarm value) + { + List.Remove(value); + } + + public bool Contains(Alarm value) + { + // If value is not of type Alarm, this will return false. + return (List.Contains(value)); + } + + protected override void OnInsert(int index, Object value) + { + if (value.GetType() != Type.GetType("MediaPortal.GUI.Alarm.Alarm")) + { + throw new ArgumentException("value must be of type Alarm.", "value"); + } + } + + protected override void OnRemove(int index, Object value) + { + if (value.GetType() != Type.GetType("MediaPortal.GUI.Alarm.Alarm")) + { + throw new ArgumentException("value must be of type Alarm.", "value"); + } + } + + protected override void OnSet(int index, Object oldValue, Object newValue) + { + if (newValue.GetType() != Type.GetType("MediaPortal.GUI.Alarm.Alarm")) + { + throw new ArgumentException("newValue must be of type Alarm.", "newValue"); + } + } + + protected override void OnValidate(Object value) + { + if (value.GetType() != Type.GetType("MediaPortal.GUI.Alarm.Alarm")) + { + throw new ArgumentException("value must be of type Alarm."); + } + } + } +} \ No newline at end of file Added: trunk/plugins/MyAlarm/MyAlarm/AlarmSetupForm.cs =================================================================== --- trunk/plugins/MyAlarm/MyAlarm/AlarmSetupForm.cs (rev 0) +++ trunk/plugins/MyAlarm/MyAlarm/AlarmSetupForm.cs 2009-06-20 01:17:01 UTC (rev 2946) @@ -0,0 +1,744 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +/* + * Copyright (C) 2005-2009 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.ComponentModel; +using System.IO; +using System.Windows.Forms; +using MediaPortal.Configuration; +using MediaPortal.GUI.Library; +using MediaPortal.Player; +using MediaPortal.UserInterface.Controls; + +namespace MediaPortal.GUI.Alarm +{ + /// <summary> + /// Summary description for SetupForm. + /// </summary> + [PluginIcons("WindowPlugins.GUIAlarm.Alarm.gif", "WindowPlugins.GUIAlarm.Alarm_disabled.gif")] + public class AlarmSetupForm : MPConfigForm, ISetupForm, IShowPlugin + { + private MPButton btnCancel; + private FolderBrowserDialog folderBrowserDialog; + private MPButton btnOk; + private MPGroupBox grpSounds; + private MPLabel label6; + private NumericUpDown RepeatCount; + private MPLabel label3; + private MPLabel label4; + private NumericUpDown RepeatSeconds; + private MPLabel label2; + private MPButton btnAlarmSoundsFolder; + private MPTextBox txtAlarmSoundsFolder; + private MPLabel label1; + private GroupBox grpAlarmTimeout; + private NumericUpDown NUDAlarmTimeout; + private Label lblAlarmTimeout; + private Label LblRadioOnlyMsg; + private GroupBox grpAlarmVol; + private NumericUpDown NUDAlarmVol; + private CheckBox chkEnableDefaultVol; + private Label lblAlarmVol2; + private Label lblAlarmVol1; + private Label lblAlarmVol3; + private Label lblAlarmVol4; + private Button cmdAlarmVolTest; + + /// <summary> + /// Required designer variable. + /// </summary> + private Container components = null; + + public AlarmSetupForm() + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + } + + /// <summary> + /// Clean up any resources being used. + /// </summary> + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) + { + components.Dispose(); + } + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.btnOk = new MediaPortal.UserInterface.Controls.MPButton(); + this.btnCancel = new MediaPortal.UserInterface.Controls.MPButton(); + this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); + this.grpSounds = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.label6 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.RepeatCount = new System.Windows.Forms.NumericUpDown(); + this.label3 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.label4 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.RepeatSeconds = new System.Windows.Forms.NumericUpDown(); + this.label2 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.btnAlarmSoundsFolder = new MediaPortal.UserInterface.Controls.MPButton(); + this.txtAlarmSoundsFolder = new MediaPortal.UserInterface.Controls.MPTextBox(); + this.label1 = new MediaPortal.UserInterface.Controls.MPLabel(); + this.grpAlarmTimeout = new System.Windows.Forms.GroupBox(); + this.LblRadioOnlyMsg = new System.Windows.Forms.Label(); + this.NUDAlarmTimeout = new System.Windows.Forms.NumericUpDown(); + this.lblAlarmTimeout = new System.Windows.Forms.Label(); + this.grpAlarmVol = new System.Windows.Forms.GroupBox(); + this.cmdAlarmVolTest = new System.Windows.Forms.Button(); + this.lblAlarmVol4 = new System.Windows.Forms.Label(); + this.lblAlarmVol3 = new System.Windows.Forms.Label(); + this.lblAlarmVol2 = new System.Windows.Forms.Label(); + this.lblAlarmVol1 = new System.Windows.Forms.Label(); + this.NUDAlarmVol = new System.Windows.Forms.NumericUpDown(); + this.chkEnableDefaultVol = new System.Windows.Forms.CheckBox(); + this.grpSounds.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize) (this.RepeatCount)).BeginInit(); + ((System.ComponentModel.ISupportInitialize) (this.RepeatSeconds)).BeginInit(); + this.grpAlarmTimeout.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize) (this.NUDAlarmTimeout)).BeginInit(); + this.grpAlarmVol.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize) (this.NUDAlarmVol)).BeginInit(); + this.SuspendLayout(); + // + // btnOk + // + this.btnOk.Anchor = + ((System.Windows.Forms.AnchorStyles) + ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOk.Location = new System.Drawing.Point(245, 286); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(75, 23); + this.btnOk.TabIndex = 3; + this.btnOk.Text = "&Ok"; + this.btnOk.UseVisualStyleBackColor = true; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // btnCancel + // + this.btnCancel.Anchor = + ((System.Windows.Forms.AnchorStyles) + ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(325, 286); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 4; + this.btnCancel.Text = "&Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // grpSounds + // + this.grpSounds.Anchor = + ((System.Windows.Forms.AnchorStyles) + (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.grpSounds.Controls.Add(this.label6); + this.grpSounds.Controls.Add(this.RepeatCount); + this.grpSounds.Controls.Add(this.label3); + this.grpSounds.Controls.Add(this.label4); + this.grpSounds.Controls.Add(this.RepeatSeconds); + this.grpSounds.Controls.Add(this.label2); + this.grpSounds.Controls.Add(this.btnAlarmSoundsFolder); + this.grpSounds.Controls.Add(this.txtAlarmSoundsFolder); + this.grpSounds.Controls.Add(this.label1); + this.grpSounds.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.grpSounds.Location = new System.Drawing.Point(8, 12); + this.grpSounds.Name = "grpSounds"; + this.grpSounds.Size = new System.Drawing.Size(392, 103); + this.grpSounds.TabIndex = 0; + this.grpSounds.TabStop = false; + this.grpSounds.Text = "Sounds"; + // + // label6 + // + this.label6.Location = new System.Drawing.Point(96, 71); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(56, 16); + this.label6.TabIndex = 51; + this.label6.Text = "times."; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // RepeatCount + // + this.RepeatCount.Location = new System.Drawing.Point(48, 71); + this.RepeatCount.Maximum = new decimal(new int[] + { + 59, + 0, + 0, + 0 + }); + this.RepeatCount.Minimum = new decimal(new int[] + { + 1, + 0, + 0, + 0 + }); + this.RepeatCount.Name = "RepeatCount"; + this.RepeatCount.Size = new System.Drawing.Size(40, 20); + this.RepeatCount.TabIndex = 3; + this.RepeatCount.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.RepeatCount.Value = new decimal(new int[] + { + 5, + 0, + 0, + 0 + }); + // + // label3 + // + this.label3.Location = new System.Drawing.Point(8, 71); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(32, 16); + this.label3.TabIndex = 49; + this.label3.Text = "Loop"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label4 + // + this.label4.Location = new System.Drawing.Point(192, 47); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(56, 16); + this.label4.TabIndex = 48; + this.label4.Text = "(seconds)"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // RepeatSeconds + // + this.RepeatSeconds.Location = new System.Drawing.Point(136, 47); + this.RepeatSeconds.Maximum = new decimal(new int[] + { + 120, + 0, + 0, + 0 + }); + this.RepeatSeconds.Minimum = new decimal(new int[] + { + 1, + 0, + 0, + 0 + }); + this.RepeatSeconds.Name = "RepeatSeconds"; + this.RepeatSeconds.Size = new System.Drawing.Size(48, 20); + this.RepeatSeconds.TabIndex = 2; + this.RepeatSeconds.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.RepeatSeconds.Value = new decimal(new int[] + { + 120, + 0, + 0, + 0 + }); + // + // label2 + // + this.label2.Location = new System.Drawing.Point(8, 47); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(136, 16); + this.label2.TabIndex = 46; + this.label2.Text = "Loop sounds less than "; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // btnAlarmSoundsFolder + // + this.btnAlarmSoundsFolder.Anchor = + ((System.Windows.Forms.AnchorStyles) + ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnAlarmSoundsFolder.Location = new System.Drawing.Point(312, 19); + this.btnAlarmSoundsFolder.Name = "btnAlarmSoundsFolder"; + this.btnAlarmSoundsFolder.Size = new System.Drawing.Size(64, 23); + this.btnAlarmSoundsFolder.TabIndex = 1; + this.btnAlarmSoundsFolder.Text = "&Browse"; + this.btnAlarmSoundsFolder.UseVisualStyleBackColor = true; + this.btnAlarmSoundsFolder.Click += new System.EventHandler(this.btnAlarmSoundsFolder_Click); + // + // txtAlarmSoundsFolder + // + this.txtAlarmSoundsFolder.Anchor = + ((System.Windows.Forms.AnchorStyles) + (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtAlarmSoundsFolder.BorderColor = System.Drawing.Color.Empty; + this.txtAlarmSoundsFolder.Location = new System.Drawing.Point(88, 19); + this.txtAlarmSoundsFolder.Name = "txtAlarmSoundsFolder"; + this.txtAlarmSoundsFolder.Size = new System.Drawing.Size(216, 20); + this.txtAlarmSoundsFolder.TabIndex = 0; + // + // label1 + // + this.label1.Location = new System.Drawing.Point(8, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(80, 24); + this.label1.TabIndex = 43; + this.label1.Text = "Sounds folder:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // grpAlarmTimeout + // + thi... [truncated message content] |
From: <che...@us...> - 2009-07-06 23:35:05
|
Revision: 2990 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2990&view=rev Author: chef_koch Date: 2009-07-06 23:34:48 +0000 (Mon, 06 Jul 2009) Log Message: ----------- using a shared file for code style instead of keeping all of them sync Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox.4.5.resharper trunk/plugins/MySleepTimer/MySleepTimer.4.5.resharper Added Paths: ----------- trunk/plugins/MyAlarm/MyAlarm.4.5.resharper Modified: trunk/plugins/FritzBox/FritzBox.4.5.resharper =================================================================== --- trunk/plugins/FritzBox/FritzBox.4.5.resharper 2009-07-06 19:18:33 UTC (rev 2989) +++ trunk/plugins/FritzBox/FritzBox.4.5.resharper 2009-07-06 23:34:48 UTC (rev 2990) @@ -1,89 +1,6 @@ <Configuration> <CodeStyleSettings> - <ExternalPath IsNull="False"> - </ExternalPath> - <Sharing>SOLUTION</Sharing> - <CSharp> - <FormatSettings> - <MODIFIERS_ORDER IsNull="False"> - <Item>public</Item> - <Item>protected</Item> - <Item>internal</Item> - <Item>private</Item> - <Item>new</Item> - <Item>abstract</Item> - <Item>virtual</Item> - <Item>override</Item> - <Item>sealed</Item> - <Item>static</Item> - <Item>readonly</Item> - <Item>extern</Item> - <Item>unsafe</Item> - <Item>volatile</Item> - </MODIFIERS_ORDER> - </FormatSettings> - <UsingsSettings /> - <Naming2> - <ExceptionName IsNull="False"> - </ExceptionName> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" /> - <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" /> - <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicStaticFields" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicInstanceFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" /> - </Naming2> - </CSharp> - <VB> - <FormatSettings /> - <ImportsSettings /> - <Naming2 /> - </VB> - <FileHeader Region="Copyright (C) 2005-2009 Team MediaPortal"><![CDATA[Copyright (C) 2005-2009 Team MediaPortal -http://www.team-mediaportal.com - -This Program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This Program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Make; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -http://www.gnu.org/copyleft/gpl.html]]></FileHeader> - <GenerateMemberBody /> - <Naming2> - <ExceptionName IsNull="False"> - </ExceptionName> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicInstanceFields" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicStaticFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" /> - <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" /> - <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AA_BB" ElementKind="Constants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" /> - <Abbreviation Text="MSN" /> - <Abbreviation Text="ID" /> - </Naming2> + <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> </CodeStyleSettings> </Configuration> \ No newline at end of file Added: trunk/plugins/MyAlarm/MyAlarm.4.5.resharper =================================================================== --- trunk/plugins/MyAlarm/MyAlarm.4.5.resharper (rev 0) +++ trunk/plugins/MyAlarm/MyAlarm.4.5.resharper 2009-07-06 23:34:48 UTC (rev 2990) @@ -0,0 +1,6 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> + </CodeStyleSettings> +</Configuration> \ No newline at end of file Modified: trunk/plugins/MySleepTimer/MySleepTimer.4.5.resharper =================================================================== --- trunk/plugins/MySleepTimer/MySleepTimer.4.5.resharper 2009-07-06 19:18:33 UTC (rev 2989) +++ trunk/plugins/MySleepTimer/MySleepTimer.4.5.resharper 2009-07-06 23:34:48 UTC (rev 2990) @@ -1,93 +1,6 @@ <Configuration> <CodeStyleSettings> - <ExternalPath IsNull="False"> - </ExternalPath> - <Sharing>SOLUTION</Sharing> - <CSharp> - <FormatSettings> - <MODIFIERS_ORDER IsNull="False"> - <Item>public</Item> - <Item>protected</Item> - <Item>internal</Item> - <Item>private</Item> - <Item>new</Item> - <Item>abstract</Item> - <Item>virtual</Item> - <Item>override</Item> - <Item>sealed</Item> - <Item>static</Item> - <Item>readonly</Item> - <Item>extern</Item> - <Item>unsafe</Item> - <Item>volatile</Item> - </MODIFIERS_ORDER> - <SPACE_AROUND_MULTIPLICATIVE_OP>True</SPACE_AROUND_MULTIPLICATIVE_OP> - </FormatSettings> - <UsingsSettings /> - <Naming2> - <ExceptionName IsNull="False"> - </ExceptionName> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" /> - <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" /> - <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicStaticFields" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicInstanceFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" /> - </Naming2> - </CSharp> - <VB> - <FormatSettings /> - <ImportsSettings /> - <Naming2 /> - </VB> - <FileHeader Region="Copyright (C) 2005-2009 Team MediaPortal"><![CDATA[Copyright (C) 2005-2009 Team MediaPortal -http://www.team-mediaportal.com - -This Program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This Program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Make; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -http://www.gnu.org/copyleft/gpl.html]]></FileHeader> - <GenerateMemberBody /> - <Naming2> - <ExceptionName IsNull="False"> - </ExceptionName> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicInstanceFields" /> - <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="NotPublicStaticFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" /> - <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" /> - <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AA_BB" ElementKind="Constants" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" /> - <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" /> - <Abbreviation Text="MP" /> - <Abbreviation Text="XP" /> - <Abbreviation Text="MCE" /> - <Abbreviation Text="SVN" /> - <Abbreviation Text="ID" /> - </Naming2> + <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> </CodeStyleSettings> </Configuration> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2009-07-15 02:54:44
|
Revision: 3014 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3014&view=rev Author: chef_koch Date: 2009-07-15 02:54:41 +0000 (Wed, 15 Jul 2009) Log Message: ----------- using LoadSettings and SaveSettings using buttons for dialog result for ok and cancel button Modified Paths: -------------- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx trunk/plugins/MyAlarm/MyAlarm/SetupForm.Designer.cs trunk/plugins/MyAlarm/MyAlarm/SetupForm.cs trunk/plugins/MyAlarm/MyAlarm/SetupForm.resx trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.Designer.cs trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.cs Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.Designer.cs 2009-07-15 02:54:41 UTC (rev 3014) @@ -31,6 +31,7 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FritzBoxConfig)); this.tabControlFritzBoxSettings = new MediaPortal.UserInterface.Controls.MPTabControl(); this.tabGeneral = new System.Windows.Forms.TabPage(); + this.labelHelp = new System.Windows.Forms.TextBox(); this.checkBoxExtensiveLogging = new MediaPortal.UserInterface.Controls.MPCheckBox(); this.mpGroupBox1 = new MediaPortal.UserInterface.Controls.MPGroupBox(); this.mpButton1 = new MediaPortal.UserInterface.Controls.MPButton(); @@ -81,10 +82,8 @@ this.labelCallerId = new MediaPortal.UserInterface.Controls.MPLabel(); this.labelCallerName = new MediaPortal.UserInterface.Controls.MPLabel(); this.labelVersion = new MediaPortal.UserInterface.Controls.MPLabel(); - this.buttonSave = new MediaPortal.UserInterface.Controls.MPButton(); - this.buttonCancel = new MediaPortal.UserInterface.Controls.MPButton(); - this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); - this.labelHelp = new System.Windows.Forms.TextBox(); + this.okButton = new MediaPortal.UserInterface.Controls.MPButton(); + this.cancelButton = new MediaPortal.UserInterface.Controls.MPButton(); this.tabControlFritzBoxSettings.SuspendLayout(); this.tabGeneral.SuspendLayout(); this.mpGroupBox1.SuspendLayout(); @@ -129,6 +128,18 @@ this.tabGeneral.Text = "General"; this.tabGeneral.UseVisualStyleBackColor = true; // + // labelHelp + // + this.labelHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.labelHelp.Location = new System.Drawing.Point(6, 161); + this.labelHelp.Multiline = true; + this.labelHelp.Name = "labelHelp"; + this.labelHelp.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.labelHelp.Size = new System.Drawing.Size(561, 190); + this.labelHelp.TabIndex = 7; + // // checkBoxExtensiveLogging // this.checkBoxExtensiveLogging.AutoSize = true; @@ -733,54 +744,46 @@ this.labelVersion.TabIndex = 17; this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // buttonSave + // okButton // - this.buttonSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonSave.Location = new System.Drawing.Point(436, 402); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 25); - this.buttonSave.TabIndex = 15; - this.buttonSave.Text = "Save"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click); + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.Location = new System.Drawing.Point(436, 402); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 25); + this.okButton.TabIndex = 15; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); // - // buttonCancel + // cancelButton // - this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCancel.Location = new System.Drawing.Point(517, 402); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 25); - this.buttonCancel.TabIndex = 16; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(517, 402); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(75, 25); + this.cancelButton.TabIndex = 16; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); // - // labelHelp - // - this.labelHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.labelHelp.Location = new System.Drawing.Point(6, 161); - this.labelHelp.Multiline = true; - this.labelHelp.Name = "labelHelp"; - this.labelHelp.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.labelHelp.Size = new System.Drawing.Size(561, 190); - this.labelHelp.TabIndex = 7; - // // FritzBoxConfig // + this.AcceptButton = this.okButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelButton; this.ClientSize = new System.Drawing.Size(602, 439); this.Controls.Add(this.tabControlFritzBoxSettings); this.Controls.Add(this.labelVersion); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.okButton); + this.Controls.Add(this.cancelButton); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "FritzBoxConfig"; + this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "FRITZ!Box configuration"; this.tabControlFritzBoxSettings.ResumeLayout(false); @@ -849,9 +852,8 @@ private MediaPortal.UserInterface.Controls.MPLabel labelCallerId; private MediaPortal.UserInterface.Controls.MPLabel labelCallerName; private MediaPortal.UserInterface.Controls.MPLabel labelVersion; - private MediaPortal.UserInterface.Controls.MPButton buttonSave; - private MediaPortal.UserInterface.Controls.MPButton buttonCancel; - private System.Windows.Forms.OpenFileDialog openFileDialog; + private MediaPortal.UserInterface.Controls.MPButton okButton; + private MediaPortal.UserInterface.Controls.MPButton cancelButton; private MediaPortal.UserInterface.Controls.MPNumericUpDown numericUpDownMaxNotifies; private MediaPortal.UserInterface.Controls.MPLabel lblMaxNotifies; private System.Windows.Forms.NumericUpDown numericUpDownPort; Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.cs 2009-07-15 02:54:41 UTC (rev 3014) @@ -34,10 +34,11 @@ public FritzBoxConfig() { InitializeComponent(); - LoadSettings(); } + #region Settings + private void LoadSettings() { labelVersion.Text = "v" + FritzBox.VERSION; @@ -125,8 +126,11 @@ Settings.Save(); } + #endregion - private void buttonSave_Click(object sender, EventArgs e) + #region Windows Forms events + + private void okButton_Click(object sender, EventArgs e) { SaveSettings(); FritzBoxClient.StopClient(); @@ -134,13 +138,14 @@ Close(); } - private void buttonCancel_Click(object sender, EventArgs e) + private void cancelButton_Click(object sender, EventArgs e) { FritzBoxClient.StopClient(); FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); Close(); } + private void checkBoxCloseOnTimout_CheckedChanged(object sender, EventArgs e) { numericUpDownTimeout.Enabled = checkBoxCloseOnTimout.Checked; @@ -164,7 +169,7 @@ checkBoxSaveUnknownCaller.Enabled = checkBoxUsePhonebook.Checked; } - + private void buttonMSNsAdd_Click(object sender, EventArgs e) { if (isMSNvalid(comboBoxMSNs.Text) == true) @@ -182,25 +187,6 @@ } - private bool isMSNvalid(string msn) - { - string msg = ""; - - if (msn.Length == 0) - msg += "No MSN specified. Some numbers/characters are needed.\n"; - if (msn.Contains(";")) - msg += "A ';' ist not allowed.\n"; - - if (msg == "") - return true; - else - { - MessageBox.Show(msg); - return false; - } - } - - private void buttonCallerChange_Click(object sender, EventArgs e) { if (!CheckCallerId()) return; @@ -239,39 +225,6 @@ } } - private bool CheckCallerId() - { - if (textBoxCallerId.Text.Length == 0) - { - textBoxCallerId.Focus(); - MessageBox.Show("CallerID is empty. Please type in the correct CallerID."); - return false; - } - - if (dataGridView.Rows[dataGridView.NewRowIndex].Selected) - for (int i = 0; i < dataGridView.Rows.Count - 1; i++) - if (textBoxCallerId.Text == dataGridView.Rows[i].Cells[0].Value.ToString()) - { - textBoxCallerId.Focus(); - MessageBox.Show("CallerID already exists in phonebook. Please check and change the id."); - return false; - } - - return true; - } - - private bool CheckCallerName() - { - if (textBoxCallerName.Text.Length == 0) - { - textBoxCallerName.Focus(); - MessageBox.Show("Name is empty. Please type the name to display for this CallerID."); - return false; - } - - return true; - } - private void buttonCallerRemove_Click(object sender, EventArgs e) { if ((!dataGridView.Rows[dataGridView.NewRowIndex].Selected) && (dataGridView.SelectedRows.Count > 0)) @@ -305,6 +258,7 @@ private void mpImportFBMonitor_Click(object sender, EventArgs e) { + OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == DialogResult.OK) { int count = PhoneBook.ImportFritzBoxMonitor(openFileDialog.FileName); @@ -314,32 +268,6 @@ } } - private void RefreshDataGridView() - { - dataGridView.Rows.Clear(); - - for (int i = 0; i < PhoneBook.Contacts.Count; i++) - { - dataGridView.Rows.Add(PhoneBook.Contacts[i].ID, PhoneBook.Contacts[i].Name, PhoneBook.Contacts[i].Show); - } - } - - private void SaveDataGridView() - { - PhoneBook.Contacts.Clear(); - - for (int i = 0; i < dataGridView.RowCount - 1; i++) - { - Caller caller = new Caller(); - - caller.ID = dataGridView.Rows[i].Cells[0].Value.ToString(); - caller.Name = dataGridView.Rows[i].Cells[1].Value.ToString(); - caller.Show = bool.Parse(dataGridView.Rows[i].Cells[2].Value.ToString()); - - PhoneBook.Contacts.Add(caller); - } - } - private void dataGridView_Sorted(object sender, EventArgs e) { SaveDataGridView(); @@ -361,20 +289,7 @@ } } - private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) - { - if (labelHelp.InvokeRequired) - { - SetTextCallback d = new SetTextCallback(OnLogAction); - Invoke(d, new object[] {logLevel, logMessage}); - } - else - { - labelHelp.Text += logMessage + Environment.NewLine; - } - } - private void mpButton1_Click(object sender, EventArgs e) { FritzBoxClient.LogEvent -= new FritzBoxClient.LogEventHandler(OnLogAction); @@ -388,7 +303,7 @@ // set current used text FritzBoxClient.Address = textBoxAddress.Text; - FritzBoxClient.Port = (int) numericUpDownPort.Value; + FritzBoxClient.Port = (int)numericUpDownPort.Value; // port test if (!FritzBoxClient.TestConnection()) @@ -397,5 +312,97 @@ // start client FritzBoxClient.StartClient(); } + + #endregion + + private bool isMSNvalid(string msn) + { + string msg = ""; + + if (msn.Length == 0) + msg += "No MSN specified. Some numbers/characters are needed.\n"; + if (msn.Contains(";")) + msg += "A ';' ist not allowed.\n"; + + if (msg == "") + return true; + else + { + MessageBox.Show(msg); + return false; + } + } + + private bool CheckCallerId() + { + if (textBoxCallerId.Text.Length == 0) + { + textBoxCallerId.Focus(); + MessageBox.Show("CallerID is empty. Please type in the correct CallerID."); + return false; + } + + if (dataGridView.Rows[dataGridView.NewRowIndex].Selected) + for (int i = 0; i < dataGridView.Rows.Count - 1; i++) + if (textBoxCallerId.Text == dataGridView.Rows[i].Cells[0].Value.ToString()) + { + textBoxCallerId.Focus(); + MessageBox.Show("CallerID already exists in phonebook. Please check and change the id."); + return false; + } + + return true; + } + + private bool CheckCallerName() + { + if (textBoxCallerName.Text.Length == 0) + { + textBoxCallerName.Focus(); + MessageBox.Show("Name is empty. Please type the name to display for this CallerID."); + return false; + } + + return true; + } + + private void RefreshDataGridView() + { + dataGridView.Rows.Clear(); + + for (int i = 0; i < PhoneBook.Contacts.Count; i++) + { + dataGridView.Rows.Add(PhoneBook.Contacts[i].ID, PhoneBook.Contacts[i].Name, PhoneBook.Contacts[i].Show); + } + } + + private void SaveDataGridView() + { + PhoneBook.Contacts.Clear(); + + for (int i = 0; i < dataGridView.RowCount - 1; i++) + { + Caller caller = new Caller(); + + caller.ID = dataGridView.Rows[i].Cells[0].Value.ToString(); + caller.Name = dataGridView.Rows[i].Cells[1].Value.ToString(); + caller.Show = bool.Parse(dataGridView.Rows[i].Cells[2].Value.ToString()); + + PhoneBook.Contacts.Add(caller); + } + } + + private void OnLogAction(FritzBoxClient.LogLevel logLevel, string logMessage) + { + if (labelHelp.InvokeRequired) + { + SetTextCallback d = new SetTextCallback(OnLogAction); + Invoke(d, new object[] {logLevel, logMessage}); + } + else + { + labelHelp.Text += logMessage + Environment.NewLine; + } + } } } \ No newline at end of file Modified: trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx =================================================================== --- trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/FritzBox/FritzBox/FritzBoxConfig.resx 2009-07-15 02:54:41 UTC (rev 3014) @@ -126,9 +126,6 @@ <metadata name="colShow.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>17, 17</value> - </metadata> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> Modified: trunk/plugins/MyAlarm/MyAlarm/SetupForm.Designer.cs =================================================================== --- trunk/plugins/MyAlarm/MyAlarm/SetupForm.Designer.cs 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/MyAlarm/MyAlarm/SetupForm.Designer.cs 2009-07-15 02:54:41 UTC (rev 3014) @@ -404,7 +404,7 @@ this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(432, 271); + this.tabPage2.Size = new System.Drawing.Size(432, 268); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "tabPage2"; this.tabPage2.UseVisualStyleBackColor = true; @@ -698,6 +698,7 @@ this.Controls.Add(this.okButton); this.Controls.Add(this.tabControl1); this.Name = "SetupForm"; + this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Alarm - Setup"; ((System.ComponentModel.ISupportInitialize)(this.RepeatCount)).EndInit(); Modified: trunk/plugins/MyAlarm/MyAlarm/SetupForm.cs =================================================================== --- trunk/plugins/MyAlarm/MyAlarm/SetupForm.cs 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/MyAlarm/MyAlarm/SetupForm.cs 2009-07-15 02:54:41 UTC (rev 3014) @@ -36,6 +36,8 @@ LoadSettings(); } + #region Settings + /// <summary> /// Loads my alarm settings from the profile xml. /// </summary> @@ -59,8 +61,6 @@ //alarmBindingSource.DataSource = Settings.Alarms; } - public Alarm CurrentAlarm { get; set; } - /// <summary> /// Saves my alarm settings to the profile xml. /// </summary> @@ -68,9 +68,9 @@ { Settings.AlarmSoundPath = soundsFolderTextBox.Text; - Settings.AlarmTimeout = (int) NUDAlarmTimeout.Value; - Settings.RepeatSeconds = (int) RepeatSeconds.Value; - Settings.RepeatCount = (int) RepeatCount.Value; + Settings.AlarmTimeout = (int)NUDAlarmTimeout.Value; + Settings.RepeatSeconds = (int)RepeatSeconds.Value; + Settings.RepeatCount = (int)RepeatCount.Value; Settings.SetVolume = chkEnableDefaultVol.Checked; Settings.VolumeLevel = ConvertPercentageToRealVolume(NUDAlarmVol.Value); @@ -78,41 +78,10 @@ Settings.Save(); } - /// <summary> - /// Converts the real volume value into a volume percentage - /// </summary> - /// <param name="realVolume">real volume value</param> - /// <returns></returns> - private static int ConvertRealVolumeToPercentage(decimal realVolume) - { - decimal tmpVolume; - VolumeHandler volumeHandler = new VolumeHandler(); - tmpVolume = realVolume; - tmpVolume = tmpVolume / (volumeHandler.Maximum - volumeHandler.Minimum); - tmpVolume = tmpVolume * 100; - return (int) Math.Round(tmpVolume, 0); - } + #endregion - /// <summary> - /// Converts the volume percentage into a real volume value - /// </summary> - /// <param name="percentVolume">volume percentage value, e.g. 50</param> - /// <returns></returns> - private static int ConvertPercentageToRealVolume(decimal percentVolume) - { - VolumeHandler volumeHandler = new VolumeHandler(); + #region Windows Forms events - decimal tmpVolume; - tmpVolume = percentVolume; - tmpVolume = tmpVolume / 100; - tmpVolume = tmpVolume * (volumeHandler.Maximum - volumeHandler.Minimum); - tmpVolume = tmpVolume + volumeHandler.Minimum; - - return (int) Math.Round(tmpVolume, 0); - } - - #region WindowsForms events - private void okButton_Click(object sender, EventArgs e) { SaveSettings(); @@ -124,6 +93,7 @@ Close(); } + private void browseSoundFolderButton_Click(object sender, EventArgs e) { FolderBrowserDialog fd = new FolderBrowserDialog(); @@ -173,5 +143,40 @@ } #endregion + + public Alarm CurrentAlarm { get; set; } + + /// <summary> + /// Converts the real volume value into a volume percentage + /// </summary> + /// <param name="realVolume">real volume value</param> + /// <returns></returns> + private static int ConvertRealVolumeToPercentage(decimal realVolume) + { + decimal tmpVolume; + VolumeHandler volumeHandler = new VolumeHandler(); + tmpVolume = realVolume; + tmpVolume = tmpVolume / (volumeHandler.Maximum - volumeHandler.Minimum); + tmpVolume = tmpVolume * 100; + return (int) Math.Round(tmpVolume, 0); + } + + /// <summary> + /// Converts the volume percentage into a real volume value + /// </summary> + /// <param name="percentVolume">volume percentage value, e.g. 50</param> + /// <returns></returns> + private static int ConvertPercentageToRealVolume(decimal percentVolume) + { + VolumeHandler volumeHandler = new VolumeHandler(); + + decimal tmpVolume; + tmpVolume = percentVolume; + tmpVolume = tmpVolume / 100; + tmpVolume = tmpVolume * (volumeHandler.Maximum - volumeHandler.Minimum); + tmpVolume = tmpVolume + volumeHandler.Minimum; + + return (int) Math.Round(tmpVolume, 0); + } } } \ No newline at end of file Modified: trunk/plugins/MyAlarm/MyAlarm/SetupForm.resx =================================================================== --- trunk/plugins/MyAlarm/MyAlarm/SetupForm.resx 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/MyAlarm/MyAlarm/SetupForm.resx 2009-07-15 02:54:41 UTC (rev 3014) @@ -120,9 +120,6 @@ <metadata name="alarmBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>17, 17</value> </metadata> - <metadata name="alarmBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>17, 17</value> - </metadata> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>43</value> </metadata> Modified: trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.Designer.cs =================================================================== --- trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.Designer.cs 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.Designer.cs 2009-07-15 02:54:41 UTC (rev 3014) @@ -50,8 +50,8 @@ this.groupBox1 = new System.Windows.Forms.GroupBox(); this.checkBoxUsePSSettings = new System.Windows.Forms.CheckBox(); this.groupBoxTimer = new System.Windows.Forms.GroupBox(); - this.buttonClose = new System.Windows.Forms.Button(); - this.buttonSave = new System.Windows.Forms.Button(); + this.cancelButton = new System.Windows.Forms.Button(); + this.okButton = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSleepTimeMax)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSleepTimeStep)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownNotifyInterval)).BeginInit(); @@ -349,38 +349,38 @@ this.groupBoxTimer.TabStop = false; this.groupBoxTimer.Text = "Timer && notify settings"; // - // buttonClose + // cancelButton // - this.buttonClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonClose.Location = new System.Drawing.Point(263, 341); - this.buttonClose.Name = "buttonClose"; - this.buttonClose.Size = new System.Drawing.Size(75, 23); - this.buttonClose.TabIndex = 58; - this.buttonClose.Text = "Close"; - this.buttonClose.UseVisualStyleBackColor = true; - this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click); + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(263, 341); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(75, 23); + this.cancelButton.TabIndex = 58; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); // - // buttonSave + // okButton // - this.buttonSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonSave.Location = new System.Drawing.Point(182, 341); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 59; - this.buttonSave.Text = "Save"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click); + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.Location = new System.Drawing.Point(182, 341); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 23); + this.okButton.TabIndex = 59; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); // // MySleepTimerConfig // - this.AcceptButton = this.buttonSave; + this.AcceptButton = this.okButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonClose; + this.CancelButton = this.cancelButton; this.ClientSize = new System.Drawing.Size(350, 372); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.buttonClose); + this.Controls.Add(this.okButton); + this.Controls.Add(this.cancelButton); this.Controls.Add(this.groupBoxTimer); this.Controls.Add(this.groupBox1); this.Controls.Add(this.comboBoxSleepBehavior); @@ -390,6 +390,7 @@ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.Name = "MySleepTimerConfig"; this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "MySleepTimer - Configuration"; ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSleepTimeMax)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSleepTimeStep)).EndInit(); @@ -430,7 +431,7 @@ private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.CheckBox checkBoxUsePSSettings; private System.Windows.Forms.GroupBox groupBoxTimer; - private System.Windows.Forms.Button buttonClose; - private System.Windows.Forms.Button buttonSave; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.Button okButton; } } \ No newline at end of file Modified: trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.cs =================================================================== --- trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.cs 2009-07-15 01:31:10 UTC (rev 3013) +++ trunk/plugins/MySleepTimer/MySleepTimer/MySleepTimerConfig.cs 2009-07-15 02:54:41 UTC (rev 3014) @@ -22,28 +22,23 @@ using System; using System.Collections.Generic; +using System.Windows.Forms; using MediaPortal.GUI.Library; -using MediaPortal.UserInterface.Controls; using MediaPortal.Util; namespace MySleepTimer { - public partial class MySleepTimerConfig : MPConfigForm + public partial class MySleepTimerConfig : Form { public MySleepTimerConfig() { - try - { - InitializeComponent(); - Load += new EventHandler(MySleepTimerConfig_Load); - } - catch (Exception ex) - { - Log.Error(ex); - } + InitializeComponent(); + LoadSettings(); } - private void MySleepTimerConfig_Load(object sender, EventArgs e) + #region Settings + + private void LoadSettings() { try { @@ -78,6 +73,40 @@ } } + private void SaveSettings() + { + Settings.ActionType = (Action.ActionType)comboBoxActionType.SelectedValue; + Settings.SleepBehavior = comboBoxSleepBehavior.Text; + + Settings.UsePowerSchedulerSettings = checkBoxUsePSSettings.Checked; + Settings.ShutdownType = (RestartOptions)comboBoxShutDownType.SelectedValue; + Settings.ShutdownForce = checkBoxShutDownForce.Checked; + + Settings.SleepTimeMaxium = (int)numericUpDownSleepTimeMax.Value; + Settings.SleepTimeStep = (int)numericUpDownSleepTimeStep.Value; + Settings.ActionTimeOutMs = (int)numericUpDownTimeOutB.Value; + Settings.NotifyBeforeSleep = (int)numericUpDownNotifyBeforeSleep.Value; + Settings.NotifyInterval = (int)numericUpDownNotifyInterval.Value; + Settings.NotifyTimeOutMs = (int)numericUpDownTimeOutN.Value; + Settings.Save(); + } + + #endregion + + #region Windows Forms events + + private void okButton_Click(object sender, EventArgs e) + { + SaveSettings(); + Close(); + } + + private void cancelButton_Click(object sender, EventArgs e) + { + Close(); + } + + private void comboBoxSleepBehavior_SelectedIndexChanged(object sender, EventArgs e) { SetUpShutDownTypeControls(); @@ -98,31 +127,8 @@ SetUpNotifyControls(); } - private void buttonSave_Click(object sender, EventArgs e) - { - Settings.ActionType = (Action.ActionType) comboBoxActionType.SelectedValue; - Settings.SleepBehavior = comboBoxSleepBehavior.Text; + #endregion - Settings.UsePowerSchedulerSettings = checkBoxUsePSSettings.Checked; - Settings.ShutdownType = (RestartOptions) comboBoxShutDownType.SelectedValue; - Settings.ShutdownForce = checkBoxShutDownForce.Checked; - - Settings.SleepTimeMaxium = (int) numericUpDownSleepTimeMax.Value; - Settings.SleepTimeStep = (int) numericUpDownSleepTimeStep.Value; - Settings.ActionTimeOutMs = (int) numericUpDownTimeOutB.Value; - Settings.NotifyBeforeSleep = (int) numericUpDownNotifyBeforeSleep.Value; - Settings.NotifyInterval = (int) numericUpDownNotifyInterval.Value; - Settings.NotifyTimeOutMs = (int) numericUpDownTimeOutN.Value; - Settings.Save(); - - Close(); - } - - private void buttonClose_Click(object sender, EventArgs e) - { - Close(); - } - private static List<ActionEntry> GenerateActionList() { var ret = new List<ActionEntry>(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2009-07-26 10:50:18
|
Revision: 3030 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3030&view=rev Author: framug Date: 2009-07-26 10:50:11 +0000 (Sun, 26 Jul 2009) Log Message: ----------- Change for no overlap when Xface in 4/3 resolution. Modified Paths: -------------- trunk/plugins/WebEPGfr/skin/Xface/ZguideTV.xml trunk/plugins/WebEPGfr/skin/Xface/kazer.xml trunk/plugins/kazer/Properties/AssemblyInfo.cs trunk/plugins/kazer/skin/Xface/kazer.xml Modified: trunk/plugins/WebEPGfr/skin/Xface/ZguideTV.xml =================================================================== --- trunk/plugins/WebEPGfr/skin/Xface/ZguideTV.xml 2009-07-26 09:45:53 UTC (rev 3029) +++ trunk/plugins/WebEPGfr/skin/Xface/ZguideTV.xml 2009-07-26 10:50:11 UTC (rev 3030) @@ -78,7 +78,7 @@ <description>Libellé date tvguide MP</description> <type>label</type> <id>4</id> - <posX>450</posX> + <posX>430</posX> <posY>220</posY> <label>Date du guide télé de MediaPortal : </label> <align>left</align> @@ -89,7 +89,7 @@ <description>Libellé date tvguide ZguideTV</description> <type>label</type> <id>5</id> - <posX>450</posX> + <posX>430</posX> <posY>245</posY> <label>Date du guide télé de ZguideTV : </label> <align>left</align> @@ -101,7 +101,7 @@ <description>Libellé date de la sauvegarde</description> <type>label</type> <id>10</id> - <posX>450</posX> + <posX>430</posX> <posY>270</posY> <label>Date de la dernière sauvegarde : </label> <align>left</align> @@ -114,7 +114,7 @@ <description>Libellé date du guide télé dans la sauvegarde</description> <type>label</type> <id>11</id> - <posX>450</posX> + <posX>430</posX> <posY>295</posY> <label>Date du guide Télé dans la sauvegarde : </label> <align>left</align> Modified: trunk/plugins/WebEPGfr/skin/Xface/kazer.xml =================================================================== --- trunk/plugins/WebEPGfr/skin/Xface/kazer.xml 2009-07-26 09:45:53 UTC (rev 3029) +++ trunk/plugins/WebEPGfr/skin/Xface/kazer.xml 2009-07-26 10:50:11 UTC (rev 3030) @@ -78,7 +78,7 @@ <description>Libellé date tvguide MP</description> <type>label</type> <id>4</id> - <posX>450</posX> + <posX>430</posX> <posY>220</posY> <label>Date du guide télé de MediaPortal : </label> <align>left</align> @@ -89,7 +89,7 @@ <description>Libellé date tvguide kazer</description> <type>label</type> <id>5</id> - <posX>450</posX> + <posX>430</posX> <posY>245</posY> <label>Date du guide télé de kazer : </label> <align>left</align> @@ -101,7 +101,7 @@ <description>Libellé date de la sauvegarde</description> <type>label</type> <id>10</id> - <posX>450</posX> + <posX>430</posX> <posY>270</posY> <label>Date de la dernière sauvegarde : </label> <align>left</align> @@ -114,7 +114,7 @@ <description>Libellé date du guide télé dans la sauvegarde</description> <type>label</type> <id>11</id> - <posX>450</posX> + <posX>430</posX> <posY>295</posY> <label>Date du guide Télé dans la sauvegarde : </label> <align>left</align> Modified: trunk/plugins/kazer/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/kazer/Properties/AssemblyInfo.cs 2009-07-26 09:45:53 UTC (rev 3029) +++ trunk/plugins/kazer/Properties/AssemblyInfo.cs 2009-07-26 10:50:11 UTC (rev 3030) @@ -32,6 +32,6 @@ // // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de révision et de build par défaut // en utilisant '*', comme indiqué ci-dessous : -[assembly: AssemblyVersion("2.6.0.0")] -[assembly: AssemblyFileVersion("2.6.0.0")] +[assembly: AssemblyVersion("2.7.0.0")] +[assembly: AssemblyFileVersion("2.7.0.0")] [assembly: NeutralResourcesLanguageAttribute("fr-FR")] Modified: trunk/plugins/kazer/skin/Xface/kazer.xml =================================================================== --- trunk/plugins/kazer/skin/Xface/kazer.xml 2009-07-26 09:45:53 UTC (rev 3029) +++ trunk/plugins/kazer/skin/Xface/kazer.xml 2009-07-26 10:50:11 UTC (rev 3030) @@ -78,7 +78,7 @@ <description>Libellé date tvguide MP</description> <type>label</type> <id>4</id> - <posX>450</posX> + <posX>430</posX> <posY>220</posY> <label>Date du guide télé de MediaPortal : </label> <align>left</align> @@ -89,7 +89,7 @@ <description>Libellé date tvguide kazer</description> <type>label</type> <id>5</id> - <posX>450</posX> + <posX>430</posX> <posY>245</posY> <label>Date du guide télé de kazer : </label> <align>left</align> @@ -101,7 +101,7 @@ <description>Libellé date de la sauvegarde</description> <type>label</type> <id>10</id> - <posX>450</posX> + <posX>430</posX> <posY>270</posY> <label>Date de la dernière sauvegarde : </label> <align>left</align> @@ -114,7 +114,7 @@ <description>Libellé date du guide télé dans la sauvegarde</description> <type>label</type> <id>11</id> - <posX>450</posX> + <posX>430</posX> <posY>295</posY> <label>Date du guide Télé dans la sauvegarde : </label> <align>left</align> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ge...@us...> - 2009-08-25 14:40:15
|
Revision: 3066 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3066&view=rev Author: gemx Date: 2009-08-25 14:40:00 +0000 (Tue, 25 Aug 2009) Log Message: ----------- MyPicturesExtended Plugin Added Paths: ----------- trunk/plugins/MyPicturesExtended/ trunk/plugins/MyPicturesExtended/ExifExtractor.cs trunk/plugins/MyPicturesExtended/GUIPicturesExtended.cs trunk/plugins/MyPicturesExtended/GUISlidePicture.cs trunk/plugins/MyPicturesExtended/GUISlideShowExtended.cs trunk/plugins/MyPicturesExtended/MyPictures.sln trunk/plugins/MyPicturesExtended/MyPicturesExtended.csproj trunk/plugins/MyPicturesExtended/Properties/ trunk/plugins/MyPicturesExtended/Properties/AssemblyInfo.cs trunk/plugins/MyPicturesExtended/SlideCache.cs trunk/plugins/MyPicturesExtended/bin/ trunk/plugins/MyPicturesExtended/bin/Debug/ trunk/plugins/MyPicturesExtended/bin/Release/ Added: trunk/plugins/MyPicturesExtended/ExifExtractor.cs =================================================================== --- trunk/plugins/MyPicturesExtended/ExifExtractor.cs (rev 0) +++ trunk/plugins/MyPicturesExtended/ExifExtractor.cs 2009-08-25 14:40:00 UTC (rev 3066) @@ -0,0 +1,312 @@ +#region Copyright (C) 2005-2007 Team MediaPortal + +/* + * Copyright (C) 2005-2007 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections; +using System.Drawing; +using System.Drawing.Imaging; +using System.Globalization; +using System.Diagnostics; + +namespace MediaPortal.GUI.Pictures +{ + /// Thanks to Doug Hanhart http://www.dotnet247.com/247reference/msgs/28/144569.aspx for the following code: + /// + #region Exif Read Routines + + public class ExifMetadata : IDisposable + { + DateTimeFormatInfo m_dateTimeFormat = new DateTimeFormatInfo(); + + public ExifMetadata() + { + m_dateTimeFormat.ShortDatePattern = "yyyy:MM:dd HH:mm:ss"; + } + + public void Dispose() + { + } + + public struct MetadataItem + { + public string Hex; + public string RawValueAsString; + public string DisplayValue; + public string Caption; + } + + public struct Metadata + { + public MetadataItem ViewerComments; + public MetadataItem EquipmentMake; + public MetadataItem CameraModel; + public MetadataItem ExposureTime; + public MetadataItem Fstop; + public MetadataItem DatePictureTaken; + public MetadataItem ShutterSpeed; + public MetadataItem ExposureCompensation; + public MetadataItem MeteringMode; + public MetadataItem Flash; + public MetadataItem Resolution; + public MetadataItem ImageDimensions; + } + + public int Count() + { + return 13;// TODO fix hard code later + } + + public string LookupExifValue(string Description, string Value) + { + string DescriptionValue = null; + + if (Description == "MeteringMode") + { + switch (Value) + { + case "0": DescriptionValue = "Unknown"; + break; + case "1": + DescriptionValue = "Average"; + break; + case "2": + DescriptionValue = "Center Weighted Average"; + break; + case "3": + DescriptionValue = "Spot"; + break; + case "4": + DescriptionValue = "Multi-spot"; + break; + case "5": + DescriptionValue = "Multi-segment"; + break; + case "6": + DescriptionValue = "Partial"; + break; + case "255": + DescriptionValue = "Other"; + break; + } + } + + if (Description == "ResolutionUnit") + { + switch(Value) + { + case "1": + DescriptionValue = "No Units"; + break; + case "2": + DescriptionValue = "Inch"; + break; + case "3": + DescriptionValue = "Centimeter"; + break; + } + } + + if (Description == "Flash") + { + switch(Value) + { + case "0": + DescriptionValue = "Flash did not fire"; + break; + case "1": + DescriptionValue = "Flash fired"; + break; + case "5": + DescriptionValue = "Flash fired but strobe return light not detected"; + break; + case "7": + DescriptionValue = "Flash fired and strobe return light detected"; + break; + } + } + return DescriptionValue; + } + + private void setStuff(ref MetadataItem item, PropertyItem propItem, string tag, string caption) + { + try + { + item.Caption = caption; + item.Hex = tag; + string proptext = propItem.Id.ToString("x"); + if (proptext == tag) + { + System.Text.ASCIIEncoding Value = new System.Text.ASCIIEncoding(); + item.DisplayValue = Value.GetString(propItem.Value); + } + } + catch(Exception) + {} + } + + + public Metadata GetExifMetadata(string photoName) + { + // Create an instance of Metadata + Metadata MyMetadata = new Metadata(); + // Create an instance of the image to gather metadata from + using (Image MyImage = Image.FromFile(photoName)) + { + // Create an integer array to hold the property id list, + // and populate it with the list from my image. + // Note: this only generates a list of integers, one for for each PropertyID. + // We will populate the PropertyItem values later. + int[] MyPropertyIdList = MyImage.PropertyIdList; + + // Create an array of PropertyItems, but don't populate it yet. + /* + * Note: there is a bug in .net framework v1.0 SP2 and also in 1.1 beta: + * If any particular PropertyItem has a length of 0, you will get an unhandled error + * when you populate the array directly from the image. + * So, rather than create an array of PropertyItems and then populate it directly + * from the image, we will create an empty one of the appropriate length, and then + * test each of the PropertyItems ourselves, one at a time, and not add any that + * would cause an error. + */ + + //MyMetadata.ExposureTime.Hex = "829a"; + //MyMetadata.Fstop.Hex = "829d"; + //MyMetadata.ShutterSpeed.Hex = "9201"; + //MyMetadata.ExposureCompensation.Hex = "9204"; + //MyMetadata.MeteringMode.Hex = "9207"; + //MyMetadata.Flash.Hex = "9209"; + + // Declare an ASCIIEncoding to use for returning string values from bytes + System.Text.ASCIIEncoding Value = new System.Text.ASCIIEncoding(); + + // Populate MyPropertyItemList. + int index = 0; + foreach (int MyPropertyId in MyPropertyIdList) + { + // ... try to call GetPropertyItem (it crashes if PropertyItem has length 0,so use Try/Catch) + try + { + PropertyItem propItem = MyImage.GetPropertyItem(MyPropertyId); + string proptext = propItem.Id.ToString("x"); + Trace.WriteLine("proptext:"+ proptext); + + setStuff(ref MyMetadata.ViewerComments, propItem, "10e", "Viewer Comments"); + setStuff(ref MyMetadata.EquipmentMake, propItem, "10f", "Equipment Make"); + setStuff(ref MyMetadata.CameraModel, propItem, "110", "Camera Model"); + setStuff(ref MyMetadata.DatePictureTaken, propItem, "9003", "Date Picture Taken"); + string dtstr = MyMetadata.DatePictureTaken.DisplayValue; + if ( dtstr != null ) + { + try + { + dtstr = dtstr.Substring(0, dtstr.Length-1); + DateTime dat = DateTime.ParseExact(dtstr, "d", m_dateTimeFormat); + MyMetadata.DatePictureTaken.DisplayValue = Convert.ToString(dat, System.Threading.Thread.CurrentThread.CurrentCulture); + } + catch(Exception){} + } + + + MyMetadata.MeteringMode.Caption = "Metering Mode"; + if (proptext == "9207") + { + MyMetadata.MeteringMode.DisplayValue = LookupExifValue("MeteringMode",BitConverter.ToInt16(propItem.Value,0).ToString()); + } + + + MyMetadata.Flash.Caption = "Flash"; + if ( proptext == "9209") + { + MyMetadata.Flash.DisplayValue = LookupExifValue("Flash",BitConverter.ToInt16(propItem.Value,0).ToString()); + } + + + MyMetadata.ExposureTime.Caption = "Exposure Time"; + if (proptext == "829a") + { + string StringValue = ""; + for (int Offset = 0; Offset < propItem.Len; Offset = Offset + 4) + { + StringValue += BitConverter.ToInt32(propItem.Value,Offset).ToString() + "/"; + } + MyMetadata.ExposureTime.DisplayValue = StringValue.Substring(0,StringValue.Length-1); + } + + + MyMetadata.Fstop.Caption = "Fstop"; + if (proptext == "829d") + { + int int1; + int int2; + int1 = BitConverter.ToInt32(propItem.Value,0); + int2 = BitConverter.ToInt32(propItem.Value,4); + MyMetadata.Fstop.DisplayValue = "F/" + ((float)int1/(float)int2); + } + + + MyMetadata.ShutterSpeed.Caption = "Shutter Speed:"; + if (proptext == "9201") + { + string StringValue = BitConverter.ToString(propItem.Value).Substring(0,2); + MyMetadata.ShutterSpeed.DisplayValue = "1/" + StringValue; + } + + MyMetadata.ExposureCompensation.Caption = "ExposureCompensation"; + if (proptext == "9204") + { + string StringValue = BitConverter.ToString(propItem.Value).Substring(0,1); + MyMetadata.ExposureCompensation.DisplayValue = StringValue;// + " (Needs work to confirm accuracy)"; + } + } + + catch (Exception exc) + { + // if it is the expected error, do nothing + if (exc.GetType().ToString() != "System.ArgumentNullException") + { + } + } + finally + { + index++; + } + } + + MyMetadata.Resolution.DisplayValue = + MyImage.HorizontalResolution.ToString() + + "x" + MyImage.VerticalResolution.ToString(); + MyMetadata.Resolution.Caption = "Resolution "; + + MyMetadata.ImageDimensions.DisplayValue = + MyImage.Width.ToString() + + "x" + MyImage.Height.ToString(); + MyMetadata.ImageDimensions.Caption = "Dimensions"; + } + return MyMetadata; + } + } + + #endregion +} \ No newline at end of file Added: trunk/plugins/MyPicturesExtended/GUIPicturesExtended.cs =================================================================== --- trunk/plugins/MyPicturesExtended/GUIPicturesExtended.cs (rev 0) +++ trunk/plugins/MyPicturesExtended/GUIPicturesExtended.cs 2009-08-25 14:40:00 UTC (rev 3066) @@ -0,0 +1,2112 @@ +#region Copyright (C) 2005-2009 Team MediaPortal + +/* + * Copyright (C) 2005-2009 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Windows.Forms; +using System.Xml.Serialization; +using MediaPortal.Configuration; +using MediaPortal.Database; +using MediaPortal.Dialogs; +using MediaPortal.GUI.Library; +using MediaPortal.Picture.Database; +using MediaPortal.Services; +using MediaPortal.Threading; +using MediaPortal.Util; + +namespace MediaPortal.GUI.Pictures +{ + /// <summary> + /// Displays pictures and offers methods for exif and rotation + /// </summary> + [PluginIcons("WindowPlugins.GUIPictures.Pictures.gif", "WindowPlugins.GUIPictures.PicturesDisabled.gif")] + public class GUIPicturesExtended : GUIInternalWindow, IComparer<GUIListItem>, ISetupForm, IShowPlugin + { + #region ThumbCacher class + + public class MissingThumbCacher + { + private VirtualDirectory vDir = new VirtualDirectory(); + + private string _filepath = string.Empty; + private bool _createLarge = true; + private bool _recreateWithoutCheck = false; + private Work work; + + public MissingThumbCacher(string Filepath, bool CreateLargeThumbs, bool ReCreateThumbs) + { + _filepath = Filepath; + _createLarge = CreateLargeThumbs; + _recreateWithoutCheck = ReCreateThumbs; + //_hideFileExtensions = HideExtensions; + + work = new Work(new DoWorkHandler(this.PerformRequest)); + work.ThreadPriority = ThreadPriority.BelowNormal; + GlobalServiceProvider.Get<IThreadPool>().Add(work, QueuePriority.Low); + } + + /// <summary> + /// creates cached thumbs in MP's thumbs dir + /// </summary> + private void PerformRequest() + { + Stopwatch benchclock = new Stopwatch(); + benchclock.Start(); + string path = _filepath; + bool autocreateLargeThumbs = _createLarge; + bool recreateThumbs = _recreateWithoutCheck; + + vDir.SetExtensions(Util.Utils.PictureExtensions); + + if (!vDir.IsRemote(path)) + { + List<GUIListItem> itemlist = vDir.GetDirectoryUnProtectedExt(path, true); + + foreach (GUIListItem item in itemlist) + { + if (GUIGraphicsContext.CurrentState == GUIGraphicsContext.State.STOPPING) + { + return; + } + if (String.IsNullOrEmpty(item.Path)) + { + return; + } + if (path.Length >= item.Path.Length) + { + Log.Warn("GUIPictures: Omitting outside path {0} from check share {1}", item.Path, path); + continue; + } + Thread.Sleep(100); + + if (CheckPathForHistory(item.Path, false)) + { + if (!item.IsFolder) + { + int iRotate = PictureDatabase.GetRotation(item.Path); + Thread.Sleep(30); + + if (!item.IsRemote && Util.Utils.IsPicture(item.Path)) + { + string thumbnailImage = String.Format(@"{0}\{1}.jpg", Thumbs.Pictures, + Util.Utils.EncryptLine(item.Path)); + if (recreateThumbs || !File.Exists(thumbnailImage)) + { + Thread.Sleep(10); + if (Util.Picture.CreateThumbnail(item.Path, thumbnailImage, (int)Thumbs.ThumbResolution, + (int)Thumbs.ThumbResolution, iRotate, Thumbs.SpeedThumbsSmall)) + { + Thread.Sleep(30); + Log.Debug("GUIPictures: Creation of missing thumb successful for {0}", item.Path); + } + } + + if (autocreateLargeThumbs) + { + thumbnailImage = String.Format(@"{0}\{1}L.jpg", Thumbs.Pictures, Util.Utils.EncryptLine(item.Path)); + if (recreateThumbs || !File.Exists(thumbnailImage)) + { + Thread.Sleep(10); + if (Util.Picture.CreateThumbnail(item.Path, thumbnailImage, (int)Thumbs.ThumbLargeResolution, + (int)Thumbs.ThumbLargeResolution, iRotate, + Thumbs.SpeedThumbsLarge)) + { + Thread.Sleep(30); + //Log.Debug("GUIPictures: Creation of missing large thumb successful for {0}", item.Path); + } + } + } + } + } + else + { + int pin; + if ((item.Label != "..") && (!vDir.IsProtectedShare(item.Path, out pin))) + { + string thumbnailImage = item.Path + @"\folder.jpg"; + if (recreateThumbs || (!item.IsRemote && !File.Exists(thumbnailImage))) + { + Thread.Sleep(10); + if (CreateFolderThumb(item.Path, recreateThumbs)) + { + Thread.Sleep(30); + Log.Debug("GUIPictures: Creation of missing folder preview thumb for {0}", item.Path); + } + } + } + } + } //foreach (GUIListItem item in itemlist) + } + } + benchclock.Stop(); + Log.Debug("GUIPictures: Creation of all thumbs for dir '{0}' took {1} seconds", _filepath, + benchclock.Elapsed.TotalSeconds); + } + + private bool CreateFolderThumb(string path, bool recreateAll) + { + // find first 4 jpegs in this subfolder + List<GUIListItem> itemlist = vDir.GetDirectoryUnProtectedExt(path, true); + if (!recreateAll) + { + Filter(ref itemlist); + } + List<string> pictureList = new List<string>(); + foreach (GUIListItem subitem in itemlist) + { + if (!subitem.IsFolder) + { + if (!subitem.IsRemote && Util.Utils.IsPicture(subitem.Path)) + { + pictureList.Add(subitem.Path); + if (pictureList.Count >= 4) + { + break; + } + } + } + } + // combine those 4 image files into one folder.jpg + if (Util.Utils.CreateFolderPreviewThumb(pictureList, Path.Combine(path, @"Folder.jpg"))) + { + return true; + } + else + { + return false; + } + } + } + + #endregion + + #region MapSettings class + + [Serializable] + public class MapSettings + { + protected int _SortBy; + protected int _ViewAs; + protected bool _SortAscending; + + public MapSettings() + { + // Set default view + _SortBy = (int)SortMethod.Name; + _ViewAs = (int)View.Icons; + _SortAscending = true; + } + + [XmlElement("SortBy")] + public int SortBy + { + get { return _SortBy; } + set { _SortBy = value; } + } + + [XmlElement("ViewAs")] + public int ViewAs + { + get { return _ViewAs; } + set { _ViewAs = value; } + } + + [XmlElement("SortAscending")] + public bool SortAscending + { + get { return _SortAscending; } + set { _SortAscending = value; } + } + } + + #endregion + + #region Base variables + + private enum SortMethod + { + Name = 0, + Date = 1, + Size = 2 + } + + private enum View + { + List = 0, + Icons = 1, + BigIcons = 2, + Albums = 3, + Filmstrip = 4, + } + + private enum Display + { + Files = 0, + Date = 1 + } + + [SkinControl(2)] protected GUIButtonControl btnViewAs = null; + [SkinControl(3)] protected GUISortButtonControl btnSortBy = null; + [SkinControl(4)] protected GUIButtonControl btnSwitchView = null; + [SkinControl(6)] protected GUIButtonControl btnSlideShow = null; + [SkinControl(7)] protected GUIButtonControl btnSlideShowRecursive = null; + [SkinControl(50)] protected GUIFacadeControl facadeView = null; + + private const int MAX_PICS_PER_DATE = 1000; + + public static List<string> thumbCreationPaths = new List<string>(); + private int selectedItemIndex = -1; + private GUIListItem selectedListItem = null; + private DirectoryHistory folderHistory = new DirectoryHistory(); + private string currentFolder = string.Empty; + private string m_strDirectoryStart = string.Empty; + private string destinationFolder = string.Empty; + private VirtualDirectory virtualDirectory = new VirtualDirectory(); + private MapSettings mapSettings = new MapSettings(); + private bool isFileMenuEnabled = false; + private string fileMenuPinCode = string.Empty; + private bool _autocreateLargeThumbs = true; + private bool _useDayGrouping = false; + //bool _hideExtensions = true; + private Display disp = Display.Files; + private bool _switchRemovableDrives; + private int CountOfNonImageItems = 0; // stores the count of items in a folder that are no images (folders etc...) + + public static int resumeOperation = 0; + public static bool useResume = false; + public static int lastSlideShown = 0; + private static int _lastSlideBase = 0; + #endregion + + #region ctor/dtor + + public GUIPicturesExtended() + { + GetID = (int)Window.WINDOW_PICTURES; + + virtualDirectory.AddDrives(); + virtualDirectory.SetExtensions(Util.Utils.PictureExtensions); + } + + ~GUIPicturesExtended() + { + SaveSettings(); + } + + #endregion + + #region Serialisation + + private void LoadSettings() + { + using (Profile.Settings xmlreader = new Profile.MPSettings()) + { + _autocreateLargeThumbs = !xmlreader.GetValueAsBool("thumbnails", "picturenolargethumbondemand", false); + _useDayGrouping = xmlreader.GetValueAsBool("pictures", "useDayGrouping", false); + isFileMenuEnabled = xmlreader.GetValueAsBool("filemenu", "enabled", true); + fileMenuPinCode = Util.Utils.DecryptPin(xmlreader.GetValueAsString("filemenu", "pincode", string.Empty)); + string strDefault = xmlreader.GetValueAsString("pictures", "default", string.Empty); + virtualDirectory.Clear(); + for (int i = 0; i < VirtualDirectory.MaxSharesCount; i++) + { + string shareName = String.Format("sharename{0}", i); + string sharePath = String.Format("sharepath{0}", i); + string strPincode = String.Format("pincode{0}", i); + + string shareType = String.Format("sharetype{0}", i); + string shareServer = String.Format("shareserver{0}", i); + string shareLogin = String.Format("sharelogin{0}", i); + string sharePwd = String.Format("sharepassword{0}", i); + string sharePort = String.Format("shareport{0}", i); + string remoteFolder = String.Format("shareremotepath{0}", i); + string shareViewPath = String.Format("shareview{0}", i); + + Share share = new Share(); + share.Name = xmlreader.GetValueAsString("pictures", shareName, string.Empty); + share.Path = xmlreader.GetValueAsString("pictures", sharePath, string.Empty); + string pinCode = Util.Utils.DecryptPin(xmlreader.GetValueAsString("pictures", strPincode, string.Empty)); + if (pinCode != string.Empty) + { + share.Pincode = Convert.ToInt32(pinCode); + } + else + { + share.Pincode = -1; + } + + share.IsFtpShare = xmlreader.GetValueAsBool("pictures", shareType, false); + share.FtpServer = xmlreader.GetValueAsString("pictures", shareServer, string.Empty); + share.FtpLoginName = xmlreader.GetValueAsString("pictures", shareLogin, string.Empty); + share.FtpPassword = xmlreader.GetValueAsString("pictures", sharePwd, string.Empty); + share.FtpPort = xmlreader.GetValueAsInt("pictures", sharePort, 21); + share.FtpFolder = xmlreader.GetValueAsString("pictures", remoteFolder, "/"); + share.DefaultView = (Share.Views)xmlreader.GetValueAsInt("pictures", shareViewPath, (int)Share.Views.List); + + if (share.Name.Length > 0) + { + if (strDefault == share.Name) + { + share.Default = true; + if (currentFolder.Length == 0) + { + if (share.IsFtpShare) + { + //remote:hostname?port?login?password?folder + currentFolder = virtualDirectory.GetShareRemoteURL(share); + m_strDirectoryStart = currentFolder; + } + else + { + currentFolder = share.Path; + m_strDirectoryStart = share.Path; + } + } + } + virtualDirectory.Add(share); + } + else + { + break; + } + } + if (xmlreader.GetValueAsBool("pictures", "rememberlastfolder", false)) + { + string lastFolder = xmlreader.GetValueAsString("pictures", "lastfolder", currentFolder); + if (lastFolder != "root") + { + currentFolder = lastFolder; + } + } + _switchRemovableDrives = xmlreader.GetValueAsBool("pictures", "SwitchRemovableDrives", true); + //_hideExtensions = xmlreader.GetValueAsBool("general", "hideextensions", true); + } + + if (currentFolder.Length > 0 && currentFolder == m_strDirectoryStart) + { + VirtualDirectory vDir = new VirtualDirectory(); + vDir.LoadSettings("pictures"); + int pincode = 0; + bool FolderPinProtected = vDir.IsProtectedShare(currentFolder, out pincode); + if (FolderPinProtected) + { + currentFolder = string.Empty; + } + } + } + + private void SaveSettings() + { + } + + #endregion + + #region overrides + + public override bool Init() + { + currentFolder = string.Empty; + destinationFolder = string.Empty; + thumbCreationPaths.Clear(); + LoadSettings(); + Log.Debug("GEMX: MyPicturesExtended INIT"); + return Load(GUIGraphicsContext.Skin + @"\mypics.xml"); + } + + public override void OnAdded() + { + GUIWindowManager.Replace((int)GUIWindow.Window.WINDOW_PICTURES, this); + Restore(); + PreInit(); + ResetAllControls(); + } + + public override void OnAction(Action action) + { + if (action.wID == Action.ActionType.ACTION_PREVIOUS_MENU) + { + if (facadeView.Focus) + { + GUIListItem item = facadeView[0]; + if (item != null) + { + if (item.IsFolder && item.Label == "..") + { + if (currentFolder != m_strDirectoryStart) + { + LoadDirectory(item.Path); + return; + } + } + } + } + } + if (action.wID == Action.ActionType.ACTION_PARENT_DIR) + { + GUIListItem item = GetItem(0); + if (item != null) + { + if (item.IsFolder && item.Label == "..") + { + LoadDirectory(item.Path); + } + } + return; + } + if (action.wID == Action.ActionType.ACTION_DELETE_ITEM) + { + // delete current picture + GUIListItem item = GetSelectedItem(); + if (item != null) + { + if (item.IsFolder == false) + { + OnDeleteItem(item); + } + } + } + + base.OnAction(action); + } + + protected override void OnPageLoad() + { + if (!KeepVirtualDirectory(PreviousWindowId)) + { + virtualDirectory.Reset(); + } + base.OnPageLoad(); + GUITextureManager.CleanupThumbs(); + // LoadSettings(); + LoadFolderSettings(currentFolder); + ShowThumbPanel(); + LoadDirectory(currentFolder); + Log.Debug("GEMX: selectedItemIndex={0},useResume={1},resumeOperation={2},lastSlideShown={3},base={4}", selectedItemIndex, useResume, resumeOperation,lastSlideShown,_lastSlideBase); + if (selectedItemIndex >= 0) + { + if (useResume) + { + switch (resumeOperation) + { + case -1: + selectedItemIndex--; + GUIControl.SelectItemControl(GetID, facadeView.GetID, selectedItemIndex); + OnClick(selectedItemIndex); + break; + case 1: + selectedItemIndex++; + GUIControl.SelectItemControl(GetID, facadeView.GetID, selectedItemIndex); + OnClick(selectedItemIndex); + break; + case 2: + OnSlideShow(_lastSlideBase+lastSlideShown+1); + break; + } + GUIControl.SelectItemControl(GetID, facadeView.GetID, selectedItemIndex); + resumeOperation = 0; + useResume = false; + } + } + + btnSortBy.SortChanged += new SortEventHandler(SortChanged); + } + + protected override void OnPageDestroy(int newWindowId) + { + selectedItemIndex = GetSelectedItemNo(); + SaveSettings(); + SaveFolderSettings(currentFolder); + base.OnPageDestroy(newWindowId); + } + + protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) + { + base.OnClicked(controlId, control, actionType); + if (control == btnViewAs) + { + switch ((View)mapSettings.ViewAs) + { + case View.List: + mapSettings.ViewAs = (int)View.Icons; + break; + case View.Icons: + mapSettings.ViewAs = (int)View.BigIcons; + break; + case View.BigIcons: + mapSettings.ViewAs = (int)View.Filmstrip; + break; + case View.Albums: + mapSettings.ViewAs = (int)View.Filmstrip; + break; + + case View.Filmstrip: + mapSettings.ViewAs = (int)View.List; + break; + } + ShowThumbPanel(); + GUIControl.FocusControl(GetID, control.GetID); + } + if (control == btnSortBy) // sort by + { + OnShowSortMenu(); + } + + if (control == facadeView) + { + GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_ITEM_SELECTED, GetID, 0, facadeView.GetID, 0, 0, + null); + OnMessage(msg); + int itemIndex = (int)msg.Param1; + if (actionType == Action.ActionType.ACTION_SHOW_INFO) + { + if (virtualDirectory.IsRemote(currentFolder)) + { + return; + } + OnInfo(itemIndex); + } + if (actionType == Action.ActionType.ACTION_SELECT_ITEM) + { + OnClick(itemIndex); + } + if (actionType == Action.ActionType.ACTION_QUEUE_ITEM) + { + if (virtualDirectory.IsRemote(currentFolder)) + { + return; + } + OnQueueItem(itemIndex); + } + } + else if (control == btnSlideShow) // Slide Show + { + OnSlideShow(); + } + else if (control == btnSlideShowRecursive) // Recursive Slide Show + { + OnSlideShowRecursive(); + } + else if (control == btnSwitchView) // Switch View + { + OnSwitchView(); + } + } + + public override bool OnMessage(GUIMessage message) + { + switch (message.Message) + { + case GUIMessage.MessageType.GUI_MSG_START_SLIDESHOW: + string strUrl = message.Label; + LoadDirectory(strUrl); + OnSlideShow(); + break; + + case GUIMessage.MessageType.GUI_MSG_AUTOPLAY_VOLUME: + currentFolder = message.Label; + OnSlideShowRecursive(); + break; + + case GUIMessage.MessageType.GUI_MSG_SHOW_DIRECTORY: + currentFolder = message.Label; + LoadDirectory(currentFolder); + break; + + case GUIMessage.MessageType.GUI_MSG_ADD_REMOVABLE_DRIVE: + if (_switchRemovableDrives) + { + currentFolder = message.Label; + if (!Util.Utils.IsRemovable(message.Label)) + { + virtualDirectory.AddRemovableDrive(message.Label, message.Label2); + } + } + LoadDirectory(currentFolder); + break; + + case GUIMessage.MessageType.GUI_MSG_REMOVE_REMOVABLE_DRIVE: + if (!Util.Utils.IsRemovable(message.Label)) + { + virtualDirectory.Remove(message.Label); + } + if (currentFolder.Contains(message.Label)) + { + currentFolder = string.Empty; + } + LoadDirectory(currentFolder); + break; + + case GUIMessage.MessageType.GUI_MSG_FILE_DOWNLOADING: + GUIFacadeControl pControl = (GUIFacadeControl)GetControl(facadeView.GetID); + pControl.OnMessage(message); + break; + + case GUIMessage.MessageType.GUI_MSG_FILE_DOWNLOADED: + GUIFacadeControl pControl2 = (GUIFacadeControl)GetControl(facadeView.GetID); + pControl2.OnMessage(message); + break; + + case GUIMessage.MessageType.GUI_MSG_VOLUME_INSERTED: + case GUIMessage.MessageType.GUI_MSG_VOLUME_REMOVED: + if (currentFolder == string.Empty || currentFolder.Substring(0, 2) == message.Label) + { + currentFolder = string.Empty; + LoadDirectory(currentFolder); + } + break; + } + return base.OnMessage(message); + } + + protected override void OnShowContextMenu() + { + GUIListItem item = GetSelectedItem(); + selectedListItem = item; + int itemNo = GetSelectedItemNo(); + selectedItemIndex = itemNo; + + if (item == null) + { + return; + } + if (item.IsFolder && item.Label == "..") + { + return; + } + + GUIControl cntl = GetControl(facadeView.GetID); + if (cntl == null) + { + return; // Control not found + } + + GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); + if (dlg == null) + { + return; + } + dlg.Reset(); + dlg.SetHeading(498); // menu + if (!item.IsFolder) + { + dlg.AddLocalizedString(735); //rotate + dlg.AddLocalizedString(783); //rotate 180 + dlg.AddLocalizedString(784); //rotate 270 + dlg.AddLocalizedString(923); //show + dlg.AddLocalizedString(108); //start slideshow + dlg.AddLocalizedString(940); //properties + } + else + { + //dlg.AddLocalizedString(200046); //Generate Thumbnails + //dlg.AddLocalizedString(200047); //Recursive Generate Thumbnails + dlg.AddLocalizedString(200048); //Regenerate Thumbnails + } + dlg.AddLocalizedString(457); //Switch View + int iPincodeCorrect; + if (!virtualDirectory.IsProtectedShare(item.Path, out iPincodeCorrect) && !item.IsRemote && isFileMenuEnabled) + { + dlg.AddLocalizedString(500); // FileMenu + } + if (Util.Utils.IsRemovable(item.Path)) + { + dlg.AddLocalizedString(831); + } + + + dlg.DoModal(GetID); + if (dlg.SelectedId == -1) + { + return; + } + switch (dlg.SelectedId) + { + case 735: // rotate + OnRotatePicture(90); + break; + + case 783: // rotate 180 + OnRotatePicture(180); + break; + + case 784: // rotate 270 + OnRotatePicture(270); + break; + + case 923: // show + OnClick(itemNo); + break; + + case 108: // start slideshow + OnSlideShow(itemNo); + break; + + case 940: // properties + OnInfo(itemNo); + break; + + case 500: // File menu + // get pincode + if (fileMenuPinCode != string.Empty) + { + string strUserCode = string.Empty; + if (GetUserInputString(ref strUserCode) && strUserCode == fileMenuPinCode) + { + OnShowFileMenu(); + } + } + else + { + OnShowFileMenu(); + } + break; + case 200046: // Generate Thumbnails + if (item.IsFolder) + { + OnCreateAllThumbs(item.Path, false, false); + } + break; + case 200047: // Revursive Generate Thumbnails + if (item.IsFolder) + { + OnCreateAllThumbs(item.Path, false, true); + } + break; + case 200048: // Regenerate Thumbnails + if (item.IsFolder) + { + OnCreateAllThumbs(item.Path, true, true); + } + break; + case 457: // Test change view + OnSwitchView(); + break; + case 831: + string message; + if (!RemovableDriveHelper.EjectDrive(item.Path, out message)) + { + GUIDialogOK pDlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); + pDlgOK.SetHeading(831); + pDlgOK.SetLine(1, GUILocalizeStrings.Get(832)); + pDlgOK.SetLine(2, string.Empty); + pDlgOK.SetLine(3, message); + pDlgOK.DoModal(GUIWindowManager.ActiveWindow); + } + else + { + GUIDialogOK pDlgOK = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); + pDlgOK.SetHeading(831); + pDlgOK.SetLine(1, GUILocalizeStrings.Get(833)); + pDlgOK.DoModal(GUIWindowManager.ActiveWindow); + } + break; + } + } + + #endregion + + #region listview management + + private bool ViewByIcon + { + get + { + if (mapSettings.ViewAs != (int)View.List) + { + return true; + } + return false; + } + } + + private bool ViewByLargeIcon + { + get + { + if (mapSettings.ViewAs == (int)View.BigIcons) + { + return true; + } + return false; + } + } + + private GUIListItem GetSelectedItem() + { + return facadeView.SelectedListItem; + } + + private GUIListItem GetItem(int itemIndex) + { + if (itemIndex >= facadeView.Count || itemIndex < 0) + { + return null; + } + return facadeView[itemIndex]; + } + + private int GetSelectedItemNo() + { + return facadeView.SelectedListItemIndex; + } + + private int GetItemCount() + { + return facadeView.Count; + } + + private void UpdateButtonStates() + { + GUIControl.HideControl(GetID, facadeView.GetID); + int iControl = facadeView.GetID; + GUIControl.ShowControl(GetID, iControl); + GUIControl.FocusControl(GetID, iControl); + + string textLine = string.Empty; + View view = (View)mapSettings.ViewAs; + SortMethod method = (SortMethod)mapSettings.SortBy; + bool sortAsc = mapSettings.SortAscending; + switch (view) + { + case View.List: + textLine = GUILocalizeStrings.Get(101); + break; + case View.Icons: + textLine = GUILocalizeStrings.Get(100); + break; + case View.BigIcons: + textLine = GUILocalizeStrings.Get(417); + break; + case View.Albums: + textLine = GUILocalizeStrings.Get(417); + break; + case View.Filmstrip: + textLine = GUILocalizeStrings.Get(733); + break; + } + GUIControl.SetControlLabel(GetID, btnViewAs.GetID, textLine); + + switch (method) + { + case SortMethod.Name: + textLine = GUILocalizeStrings.Get(103); + break; + case SortMethod.Date: + textLine = GUILocalizeStrings.Get(104); + break; + case SortMethod.Size: + textLine = GUILocalizeStrings.Get(105); + break; + } + GUIControl.SetControlLabel(GetID, btnSortBy.GetID, textLine); + btnSortBy.IsAscending = sortAsc; + } + + private void ShowThumbPanel() + { + int itemIndex = GetSelectedItemNo(); + if (mapSettings.ViewAs == (int)View.BigIcons) + { + facadeView.View = GUIFacadeControl.ViewMode.LargeIcons; + } + else if (mapSettings.ViewAs == (int)View.Albums) + { + facadeView.View = GUIFacadeControl.ViewMode.LargeIcons; + } + else if (mapSettings.ViewAs == (int)View.Icons) + { + facadeView.View = GUIFacadeControl.ViewMode.SmallIcons; + } + else if (mapSettings.ViewAs == (int)View.List) + { + facadeView.View = GUIFacadeControl.ViewMode.List; + } + else if (mapSettings.ViewAs == (int)View.Filmstrip) + { + facadeView.View = GUIFacadeControl.ViewMode.Filmstrip; + } + if (itemIndex > -1) + { + GUIControl.SelectItemControl(GetID, facadeView.GetID, itemIndex); + } + UpdateButtonStates(); + } + + /// <summary> + /// Set the selected item of the facadeview + /// </summary> + public void SetSelectedItemIndex(int index) + { + selectedItemIndex = CountOfNonImageItems + index; + } + + #endregion + + #region folder settings + + /// <summary> + /// Checks whether thumb creation had already happenend for the given path + /// </summary> + /// <param name="aPath">A folder with images</param> + /// <returns>Whether the thumbnailcacher needs to proceed on this path</returns> + [MethodImpl(MethodImplOptions.Synchronized)] + private static bool CheckPathForHistory(string aPath, bool aRemoveIt) + { + if (!thumbCreationPaths.Contains(aPath)) + { + if (!aRemoveIt) + { + thumbCreationPaths.Add(aPath); + } + return true; + } + else + { + if (aRemoveIt) + { + try + { + thumbCreationPaths.Remove(aPath); + } + catch (Exception) + { + } + } + //Log.Debug("GUIPictures: MissingThumbCacher already working on path {0}", aPath); + return false; + } + } + + private void LoadFolderSettings(string folderName) + { + if (folderName == string.Empty) + { + folderName = "root"; + } + object o; + FolderSettings.GetFolderSetting(folderName, "Pictures", typeof(MapSettings), out o); + if (o != null) + { + mapSettings = o as MapSettings; + if (mapSettings == null) + { + mapSettings = new MapSettings(); + } + } + else + { + Share share = virtualDirectory.GetShare(folderName); + if (share != null) + { + if (mapSettings == null) + { + mapSettings = new MapSettings(); + } + mapSettings.ViewAs = (int)share.DefaultView; + } + } + using (Profile.Settings xmlreader = new Profile.MPSettings()) + { + if (xmlreader.GetValueAsBool("pictures", "rememberlastfolder", false)) + { + xmlreader.SetValue("pictures", "lastfolder", folderName); + } + } + } + + private void SaveFolderSettings(string folder) + { + if (folder == string.Empty) + { + folder = "root"; + } + FolderSettings.AddFolderSetting(folder, "Pictures", typeof(MapSettings), mapSettings); + } + + #endregion + + #region Sort Members + + private void OnSort() + { + facadeView.Sort(this); + UpdateButtonStates(); + } + + public int Compare(GUIListItem item1, GUIListItem item2) + { + if (item1 == item2) + { + return 0; + } + if (item1 == null) + { + return -1; + } + if (item2 == null) + { + return -1; + } + if (item1.IsFolder && item1.Label == "..") + { + return -1; + } + if (item2.IsFolder && item2.Label == "..") + { + return -1; + } + if (item1.IsFolder && !item2.IsFolder) + { + return -1; + } + else if (!item1.IsFolder && item2.IsFolder) + { + return 1; + } + + string sizeItem1 = string.Empty; + string sizeItem2 = string.Empty; + if (item1.FileInfo != null && !item1.IsFolder) + { + sizeItem1 = Util.Utils.GetSize(item1.FileInfo.Length); + } + if (item2.FileInfo != null && !item1.IsFolder) + { + sizeItem2 = Util.Utils.GetSize(item2.FileInfo.Length); + } + + SortMethod method = (SortMethod)mapSettings.SortBy; + bool sortAsc = mapSettings.SortAscending; + + switch (method) + { + case SortMethod.Name: + item1.Label2 = sizeItem1; + item2.Label2 = sizeItem2; + + if (sortAsc) + { + return String.Compare(item1.Label, item2.Label, true); + } + else + { + return String.Compare(item2.Label, item1.Label, true); + } + + + case SortMethod.Date: + if (item1.FileInfo == null) + { + return -1; + } + if (item2.FileInfo == null) + { + return -1; + } + + item1.Label2 = item1.FileInfo.ModificationTime.ToShortDateString() + " " + + item1.FileInfo.ModificationTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat); + item2.Label2 = item2.FileInfo.ModificationTime.ToShortDateString() + " " + + item2.FileInfo.ModificationTime.ToString("t", CultureInfo.CurrentCulture.DateTimeFormat); + if (sortAsc) + { + return DateTime.Compare(item1.FileInfo.ModificationTime, item2.FileInfo.ModificationTime); + } + else + { + return DateTime.Compare(item2.FileInfo.ModificationTime, item1.FileInfo.ModificationTime); + } + + case SortMethod.Size: + if (item1.FileInfo == null) + { + return -1; + } + if (item2.FileInfo == null) + { + return -1; + } + item1.Label2 = sizeItem1; + item2.Label2 = sizeItem2; + if (sortAsc) + { + return (int)(item1.FileInfo.Length - item2.FileInfo.Length); + } + else + { + return (int)(item2.FileInfo.Length - item1.FileInfo.Length); + } + } + return 0; + } + + #endregion + + #region onXXX methods + + private void OnRetrieveCoverArt(GUIListItem item) + { + if (item.IsRemote) + { + return; + } + Util.Utils.SetDefaultIcons(item); + if (!item.IsFolder) + { + Util.Utils.SetThumbnails(ref item); + string thumbnailImage = GetThumbnail(item.Path); + item.IconImage = thumbnailImage; + if (_autocreateLargeThumbs) + { + string thumbnailLargeImage = GetLargeThumbnail(item.Path); + item.ThumbnailImage = thumbnailLargeImage; + } + else + { + item.ThumbnailImage = thumbnailImage; + } + } + else + { + if (item.Label != "..") + { + int pin; + if (!virtualDirectory.IsProtectedShare(item.Path, out pin)) + { + Util.Utils.SetThumbnails(ref item); + } + } + } + } + + private void OnDeleteItem(GUIListItem item) + { + if (item.IsRemote) + { + return; + } + + GUIDialogYesNo dlgYesNo = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_YES_NO); + if (null == dlgYesNo) + { + return; + } + string strFileName = Path.GetFileName(item.Path); + if (!item.IsFolder) + { + dlgYesNo.SetHeading(664); + } + else + { + dlgYesNo.SetHeading(503); + } + dlgYesNo.SetLine(1, strFileName); + dlgYesNo.SetLine(2, string.Empty); + dlgYesNo.SetLine(3, string.Empty); + dlgYesNo.DoModal(GetID); + + if (!dlgYesNo.IsConfirmed) + { + return; + } + DoDeleteItem(item); + + selectedItemIndex = GetSelectedItemNo(); + if (selectedItemIndex > 0) + { + selectedItemIndex--; + } + LoadDirectory(currentFolder); + if (selectedItemIndex >= 0) + { + GUIControl.SelectItemControl(GetID, facadeView.GetID, selectedItemIndex); + } + } + + private void DoDeleteItem(GUIListItem item) + { + if (item.IsFolder) + { + if (item.Label != "..") + { + List<GUIListItem> items = new List<GUIListItem>(); + items = virtualDirectory.GetDirectoryUnProtectedExt(item.Path, false); + foreach (GUIListItem subItem in items) + { + DoDeleteItem(subItem); + } + Util.Utils.DirectoryDelete(item.Path); + } + } + else if (!item.IsRemote) + { + Util.Utils.FileDelete(item.Path); + } + } + + private void OnInfo(int itemNumber) + { + GUIListItem item = GetItem(itemNumber); + if (item == null) + { + return; + } + if (item.IsFolder || item.IsRemote) + { + return; + } + GUIDialogExif exifDialog = (GUIDialogExif)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_EXIF); + exifDialog.FileName = item.Path; + exifDialog.DoModal(GetID); + // Fix for Mantis issue: 0001709: Background not correct after viewing pictures properties twice + exifDialog.Restore(); + } + + private void OnRotatePicture(int degrees) + { + GUIListItem item = GetSelectedItem(); + if (item == null) + { + return; + } + if (item.IsFolder) + { + return; + } + if (item.IsRemote) + { + return; + } + DoRotatePicture(item.Path, degrees); + GUIControl.RefreshControl(GetID, facadeView.GetID); + } + + public static void DoRotatePicture(string aPicturePath) + { + DoRotatePicture(aPicturePath, 90); + } + + public static void DoRotatePicture(string aPicturePath, int degrees) + { + int rotate = 0; + rotate = PictureDatabase.GetRotation(aPicturePath); + + if (degrees == 90) + { + rotate++; + } + else if (degrees == 180) + { + rotate = rotate + 2; + } + else if (degrees == 270) + { + rotate = rotate + 3; + } + + if (rotate >= 4) + { + rotate = rotate - 4; + } + PictureDatabase.SetRotation(aPicturePath, rotate); + + try + { + // Delete thumbs with "old" rotation so they'll be recreated later + string thumbnailImage = GetThumbnail(aPicturePath); + string thumbnailImageLarge = GetLargeThumbnail(aPicturePath); + File.Delete(thumbnailImage); + File.Delete(thumbnailImageLarge); + // make sure there's no conflicting access + CheckPathForHistory(aPicturePath, true); + + if (Util.Picture.CreateThumbnail(aPicturePath, thumbnailImage, (int)Thumbs.ThumbResolution, (int)Thumbs.ThumbResolution, rotate, Thumbs.SpeedThumbsSmall)) + { + Thread.Sleep(10); + if (Util.Picture.CreateThumbnail(aPicturePath, thumbnailImageLarge, (int)Thumbs.ThumbLargeResolution, + (int)Thumbs.ThumbLargeResolution, rotate, + Thumbs.SpeedThumbsLarge)) + Log.Debug("GUIPictures: Recreation of thumbnails after rotation successful for {0}", aPicturePath); + } + } + catch (Exception ex) + { + Log.Error("GUIPictures: Error recreating thumbnails after rotation of {0} - {1}", aPicturePath, ex.ToString()); + } + } + + private void OnClick(int itemIndex) + { + GUIListItem item = GetSelectedItem(); + if (item == null) + { + return; + } + if (item.IsFolder) + { + selectedItemIndex = -1; + LoadDirectory(item.Path); + } + else + { + if (virtualDirectory.IsRemote(item.Path)) + { + if (!virtualDirectory.IsRemoteFileDownloaded(item.Path, item.FileInfo.Length)) + { + if (!virtualDirectory.ShouldWeDownloadFile(item.Path)) + { + return; + } + if (!virtualDirectory.DownloadRemoteFile(item.Path, item.FileInfo.Length)) + { + //show message that we are unable to download the file + GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_SHOW_WARNING, 0, 0, 0, 0, 0, 0); + msg.Param1 = 916; + msg.Param2 = 920; + msg.Param3 = 0; + msg.Param4 = 0; + GUIWindowManager.SendMessage(msg); + + return; + } + } + return; + } + if (selectedItemIndex < GetSelectedItemNo()) + resumeOperation = 1; + else if (selectedItemIndex > GetSelectedItemNo()) + resumeOperation = -1; + selectedItemIndex = GetSelectedItemNo(); + OnShowPicture(item.Path); + } + } + + private void OnQueueItem(int itemIndex) + { + } + + private void OnShowPicture(string strFile) + { + GUISlideShowExtended SlideShow = (GUISlideShowExtended)GUIWindowManager.GetWindow((int)Window.WINDOW_SLIDESHOW); + if (SlideShow == null) + { + return; + } + + SlideShow.Reset(); + for (int i = 0; i < GetItemCount(); ++i) + { + GUIListItem item = GetItem(i); + if (!item.IsFolder) + { + if (item.IsRemote) + { + continue; + } + SlideShow.Add(item.Path); + } + } + if (SlideShow.Count > 0) + { + GUIWindowManager.ActivateWindow((int)Window.WINDOW_SLIDESHOW); + SlideShow.Select(strFile); + } + } + + private void AddDir(GUISlideShowExtended SlideShow, string strDir) + { + List<GUIListItem> itemlist = virtualDirectory.GetDirectoryExt(strDir); + Filter(ref itemlist); + foreach (GUIListItem item in itemlist) + { + if (item.IsFolder) + { + if (item.Label != "..") + { + AddDir(SlideShow, item.Path); + } + } + else if (!item.IsRemote) + { + SlideShow.Add(item.Path); + } + } + } + + private void OnSlideShowRecursive() + { + GUISlideShowExtended SlideShow = (GUISlideShowExtended)GUIWindowManager.GetWindow((int)Window.WINDOW_SLIDESHOW); + if (SlideShow == null) + { + return; + } + + SlideShow.Reset(); + if (disp == Display.Files) + { + AddDir(SlideShow, currentFolder); + } + else + { + List<string> pics = new List<string>(); + int totalCount = PictureDatabase.ListPicsByDate(currentFolder.Replace("\\", "-"), ref pics); + foreach (string pic in pics) + { + SlideShow.Add(pic); + } + } + if (SlideShow.Count > 0) + { + SlideShow.StartSlideShow(currentFolder); + GUIWindowManager.ActivateWindow((int)Window.WINDOW_SLIDESHOW); + } + } + + private void OnSlideShow() + { + _lastSlideBase = 0; + OnSlideShow(0); + } + + private void OnSlideShow(int iStartItem) + { + GUISlideShowExtended SlideShow = (GUISlideShowExtended)GUIWindowManager.GetWindow((int)Window.WINDOW_SLIDESHOW); + if (SlideShow == null) + { + return; + } + _lastSlideBase = iStartItem; + SlideShow.Reset(); + resumeOperation = 2; + if ((iStartItem < 0) || (iStartItem > GetItemCount())) + { + iStartItem = 0; + } + int i = iStartItem; + do + { + GUIListItem item = GetItem(i); + if (!item.IsFolder && !item.IsRemote) + { + SlideShow.Add(item.Path); + } + + i++; + if (i >= GetItemCount()) + { + i = 0; + } + } while (i != iStartItem); + + if (SlideShow.Count > 0) + { + SlideShow.StartSlideShow(currentFolder); + GUIWindowManager.ActivateWindow((int)Window.WINDOW_SLIDESHOW); + } + } + + private void CreateAllThumbs(string strDir, bool Regenerate, bool Recursive) + { + // int Count = 0; + if (disp == Display.Files) + { + MissingThumbCacher ManualThumbBuilder = new MissingThumbCacher(strDir, _autocreateLargeThumbs, Regenerate); + } + else if (disp == Display.Date) + { + // TODO: Thumbworker alternative on file base instead of directory + } + } + + private void OnCreateAllThumbs(string strDir, bool Regenerate, bool Recursive) + { + CreateAllThumbs(strDir, Regenerate, Recursive); + + GUITextureManager.CleanupThumbs(); + GUIWaitCursor.Hide(); + + LoadDirectory(currentFolder); + } + + private void OnShowSortMenu() + { + GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU); + if (dlg == null) + { + return; + } + dlg.Reset(); + dlg.SetHeading(495); // Sort options + + dlg.AddLocalizedString(103); // name + dlg.AddLocalizedString(104); // date + dlg.AddLocalizedString(105); // size + + // set the focus to currently used sort method + dlg.SelectedLabel = mapSettings.SortBy; + + // show dialog and wait for result + dlg.DoModal(GetID); + if (dlg.SelectedId == -1) + { + return; + } + + switch (dlg.SelectedId) + { + case 103: + mapSettings.SortBy = (int)SortMethod.Name; + break; + case 104: + mapSettings.SortBy = (int)SortMethod.Date; + break; + case 105: + mapSettings.SortBy = (int)SortMethod.Size; + break; + default: + mapSettings.SortBy = (int)SortMethod.Name; + break; + } + + OnSort(); + GUIControl.FocusControl(GetID, btnSortBy.GetID); + } + + private void OnShowFileMenu() + { + GUIListItem item = selectedListItem; + if (item == null) + { + return; + } + if (item.IsFolder && item.Label == "..") + { + return; + } + + // init + GUIDialogFile dlgFile = (GUIDialogFile)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_FILE); + if (dlgFile == null) + { + return; + } + + // File operation settings + dlgFile.SetSourceItem(item); + dlgFile.SetSourceDir(currentFolder); + dlgFile.SetDestinationDir(destinationFolder); + dlgFile.SetDirectoryStructure(virtualDirectory); + dlgFile.DoModal(GetID); + destinationFolder = dlgFile.GetDestinationDir(); + + //final + if (dlgFile.Reload()) + { + Lo... [truncated message content] |
From: <ge...@us...> - 2009-10-02 16:57:48
|
Revision: 3101 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3101&view=rev Author: gemx Date: 2009-10-02 16:57:37 +0000 (Fri, 02 Oct 2009) Log Message: ----------- Initial commit Added Paths: ----------- trunk/plugins/MediaPortal WebServices/ trunk/plugins/MediaPortal WebServices/MediaPortalWebServices.sln trunk/plugins/MediaPortal WebServices/MiniWebServer/ trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteParser.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteString.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/Connection.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/Host.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/Messages.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/MiniWebServer.csproj trunk/plugins/MediaPortal WebServices/MiniWebServer/Properties/ trunk/plugins/MediaPortal WebServices/MiniWebServer/Properties/AssemblyInfo.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/Request.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/Server.cs trunk/plugins/MediaPortal WebServices/MiniWebServer/bin/ trunk/plugins/MediaPortal WebServices/MiniWebServer/bin/Debug/ trunk/plugins/MediaPortal WebServices/WebApp/ trunk/plugins/MediaPortal WebServices/WebApp/App_Code/ trunk/plugins/MediaPortal WebServices/WebApp/App_Code/BasicStream.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/CRCTool.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/Classes.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/EncoderConfig.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/EncoderWrapper.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/NamedPipe.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/State.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/TransportMethod.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/TransportStream.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/TsBuffer.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/TvServiceWebServices.asmx.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Code/Utils.cs trunk/plugins/MediaPortal WebServices/WebApp/App_Data/ trunk/plugins/MediaPortal WebServices/WebApp/Bin/ trunk/plugins/MediaPortal WebServices/WebApp/Bin/DirectShowLib.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/DirectShowLib.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/DirectShowLib.pdb trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Common.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Common.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Framework.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Framework.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Provider.MySQL.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Provider.MySQL.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Provider.SQLServer.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/Gentle.Provider.SQLServer.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/MySql.Data.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/MySql.Data.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/System.Data.SQLite.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/System.Data.SQLite.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/System.Data.SQLite.xml trunk/plugins/MediaPortal WebServices/WebApp/Bin/TVDatabase.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/TVDatabase.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/TVDatabase.pdb trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvBusinessLayer.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvBusinessLayer.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvBusinessLayer.pdb trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvControl.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvControl.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvControl.pdb trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvControl.xml trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvLibrary.Interfaces.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvLibrary.Interfaces.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvLibrary.Interfaces.pdb trunk/plugins/MediaPortal WebServices/WebApp/Bin/TvLibrary.Interfaces.xml trunk/plugins/MediaPortal WebServices/WebApp/Bin/log4net.dll trunk/plugins/MediaPortal WebServices/WebApp/Bin/log4net.dll.refresh trunk/plugins/MediaPortal WebServices/WebApp/ChannelEPG.aspx trunk/plugins/MediaPortal WebServices/WebApp/ChannelEPG.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/Gentle.config trunk/plugins/MediaPortal WebServices/WebApp/PictureStreamer.aspx trunk/plugins/MediaPortal WebServices/WebApp/PictureStreamer.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/PictureViewer.aspx trunk/plugins/MediaPortal WebServices/WebApp/PictureViewer.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/ScheduleEditor.aspx trunk/plugins/MediaPortal WebServices/WebApp/ScheduleEditor.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/Streamer.aspx trunk/plugins/MediaPortal WebServices/WebApp/Streamer.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/TvServiceWebServices.asmx trunk/plugins/MediaPortal WebServices/WebApp/Web.config trunk/plugins/MediaPortal WebServices/WebApp/Web.config.org trunk/plugins/MediaPortal WebServices/WebApp/config.xml trunk/plugins/MediaPortal WebServices/WebApp/pics/ trunk/plugins/MediaPortal WebServices/WebApp/pics/btnDelete.gif trunk/plugins/MediaPortal WebServices/WebApp/pics/btnEdit.gif trunk/plugins/MediaPortal WebServices/WebApp/pics/play_enabled.gif trunk/plugins/MediaPortal WebServices/WebApp/pics/rec.gif trunk/plugins/MediaPortal WebServices/WebServerHost/ trunk/plugins/MediaPortal WebServices/WebServerHost/EncoderConfig.cs trunk/plugins/MediaPortal WebServices/WebServerHost/Program.cs trunk/plugins/MediaPortal WebServices/WebServerHost/Properties/ trunk/plugins/MediaPortal WebServices/WebServerHost/Properties/AssemblyInfo.cs trunk/plugins/MediaPortal WebServices/WebServerHost/Properties/Resources.Designer.cs trunk/plugins/MediaPortal WebServices/WebServerHost/Properties/Resources.resx trunk/plugins/MediaPortal WebServices/WebServerHost/Properties/Settings.Designer.cs trunk/plugins/MediaPortal WebServices/WebServerHost/Properties/Settings.settings trunk/plugins/MediaPortal WebServices/WebServerHost/TransportMethod.cs trunk/plugins/MediaPortal WebServices/WebServerHost/WebServerHost.csproj trunk/plugins/MediaPortal WebServices/WebServerHost/bin/ trunk/plugins/MediaPortal WebServices/WebServerHost/bin/Debug/ trunk/plugins/MediaPortal WebServices/WebServerHost/frmMain.Designer.cs trunk/plugins/MediaPortal WebServices/WebServerHost/frmMain.cs trunk/plugins/MediaPortal WebServices/WebServerHost/frmMain.resx Added: trunk/plugins/MediaPortal WebServices/MediaPortalWebServices.sln =================================================================== --- trunk/plugins/MediaPortal WebServices/MediaPortalWebServices.sln (rev 0) +++ trunk/plugins/MediaPortal WebServices/MediaPortalWebServices.sln 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,73 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebApp", "WebApp\", "{959D3D07-D4EA-4E74-AF77-2E15A1D760E5}" + ProjectSection(WebsiteProperties) = preProject + TargetFramework = "3.5" + Debug.AspNetCompiler.VirtualPath = "/WebApp" + Debug.AspNetCompiler.PhysicalPath = "WebApp" + Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\WebApp\" + Debug.AspNetCompiler.Updateable = "true" + Debug.AspNetCompiler.ForceOverwrite = "true" + Debug.AspNetCompiler.FixedNames = "false" + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.VirtualPath = "/WebApp" + Release.AspNetCompiler.PhysicalPath = "WebApp" + Release.AspNetCompiler.TargetPath = "PrecompiledWeb\WebApp\" + Release.AspNetCompiler.Updateable = "true" + Release.AspNetCompiler.ForceOverwrite = "true" + Release.AspNetCompiler.FixedNames = "false" + Release.AspNetCompiler.Debug = "False" + VWDPort = "1902" + DefaultWebSiteLanguage = "Visual C#" + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniWebServer", "MiniWebServer\MiniWebServer.csproj", "{AC169225-21E5-4375-A21D-A3779512A26C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebServerHost", "WebServerHost\WebServerHost.csproj", "{CB4CBCC4-8A35-42BB-88F9-C15036805EB9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|.NET = Debug|.NET + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Release|.NET = Release|.NET + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Debug|.NET.ActiveCfg = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Debug|.NET.Build.0 = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Debug|Any CPU.ActiveCfg = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Debug|Mixed Platforms.ActiveCfg = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Debug|Mixed Platforms.Build.0 = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Release|.NET.ActiveCfg = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Release|.NET.Build.0 = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Release|Any CPU.ActiveCfg = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Release|Mixed Platforms.ActiveCfg = Debug|.NET + {959D3D07-D4EA-4E74-AF77-2E15A1D760E5}.Release|Mixed Platforms.Build.0 = Debug|.NET + {AC169225-21E5-4375-A21D-A3779512A26C}.Debug|.NET.ActiveCfg = Debug|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Release|.NET.ActiveCfg = Release|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Release|Any CPU.Build.0 = Release|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC169225-21E5-4375-A21D-A3779512A26C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Debug|.NET.ActiveCfg = Debug|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Release|.NET.ActiveCfg = Release|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Release|Any CPU.Build.0 = Release|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB4CBCC4-8A35-42BB-88F9-C15036805EB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteParser.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteParser.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteParser.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,56 @@ +/*======================================================================= +\xA0 Copyright (C) Microsoft Corporation.\xA0 All rights reserved. +\xA0 + THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. +=======================================================================*/ + +namespace Cassini { + using System; + using System.Collections; + using System.Text; + + // + // Helper class to parse a byte array into lines without converting to strings + // + internal class ByteParser { + private byte[] _bytes; + private int _pos; + + public ByteParser(byte[] bytes) { + _bytes = bytes; + _pos = 0; + } + + public int CurrentOffset { + get { + return _pos; + } + } + + public ByteString ReadLine() { + ByteString line = null; + + for (int i = _pos; i < _bytes.Length; i++) { + if (_bytes[i] == (byte)'\n') { + int len = i-_pos; + if (len > 0 && _bytes[i-1] == (byte)'\r') + len--; + + line = new ByteString(_bytes, _pos, len); + _pos = i+1; + return line; + } + } + + if (_pos < _bytes.Length) + line = new ByteString(_bytes, _pos, _bytes.Length-_pos); + + _pos = _bytes.Length; + return line; + } + + } +} Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteString.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteString.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/ByteString.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,128 @@ +/*======================================================================= +\xA0 Copyright (C) Microsoft Corporation.\xA0 All rights reserved. +\xA0 + THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. +=======================================================================*/ + +namespace Cassini { + using System; + using System.Collections; + using System.Text; + + // + // Helper class to expose string-like functionality on top + // of a byte array. Used in parsing of HTTP requests. + // + internal class ByteString { + private byte[] _bytes; + private int _offset; + private int _length; + + public ByteString(byte[] bytes, int offset, int length) { + _bytes = bytes; + _offset = offset; + _length = length; + } + + public byte[] Bytes { + get { + return _bytes; + } + } + + public bool IsEmpty { + get { + return (_bytes == null || _length == 0); + } + } + + public int Length { + get { + return _length; + } + } + + public int Offset { + get { + return _offset; + } + } + + public byte this[int index] { + get { + return _bytes[_offset+index]; + } + } + + public String GetString() { + return GetString(Encoding.UTF8); + } + + public String GetString(Encoding enc) { + if (IsEmpty) + return String.Empty; + return enc.GetString(_bytes, _offset, _length); + } + + public byte[] GetBytes() { + byte[] bytes = new byte[_length]; + if (_length > 0) + Buffer.BlockCopy(_bytes, _offset, bytes, 0, _length); + return bytes; + } + + public int IndexOf(char ch) { + return IndexOf(ch, 0); + } + + public int IndexOf(char ch, int offset) { + for (int i = offset; i < _length; i++) { + if (this[i] == (byte)ch) + return i; + } + + return -1; + } + + public ByteString Substring(int offset) { + return Substring(offset, _length-offset); + } + + public ByteString Substring(int offset, int len) { + return new ByteString(_bytes, _offset+offset, len); + } + + public ByteString[] Split(char sep) { + ArrayList list = new ArrayList(); + + int pos = 0; + + while (pos < _length) { + int i = IndexOf(sep, pos); + + if (i < 0) + break; + + list.Add(Substring(pos, i-pos)); + pos = i+1; + + while (this[pos] == (byte)sep && pos < _length) + pos++; + } + + if (pos < _length) + list.Add(Substring(pos)); + + int n = list.Count; + ByteString[] result = new ByteString[n]; + + for (int i = 0; i < n; i++) + result[i] = (ByteString)list[i]; + + return result; + } + } +} Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/Connection.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/Connection.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/Connection.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,240 @@ +/*======================================================================= +\xA0 Copyright (C) Microsoft Corporation.\xA0 All rights reserved. +\xA0 + THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. +=======================================================================*/ + +namespace Cassini { + using System; + using System.Collections; + using System.Globalization; + using System.IO; + using System.Net; + using System.Net.Sockets; + using System.Text; + using System.Threading; + using System.Web; + using System.Web.Hosting; + + // + // Internal class to handle HTTP connections using System.Net + // + internal class Connection { + private Host _host; + private Socket _socket; + + public Connection(Host host, Socket socket) { + _host = host; + _socket = socket; + } + + public bool Connected { + get { return _socket.Connected; } + } + + public String LocalIP { + get { + IPEndPoint endPoint = (IPEndPoint)_socket.LocalEndPoint; + if (endPoint != null && endPoint.Address != null) + return endPoint.Address.ToString(); + else + return "127.0.0.1"; + } + } + + public String RemoteIP { + get { + IPEndPoint endPoint = (IPEndPoint)_socket.RemoteEndPoint; + if (endPoint != null && endPoint.Address != null) + return endPoint.Address.ToString(); + else + return "127.0.0.1"; + } + } + + public bool IsLocal { + get { + return (LocalIP == RemoteIP); + } + } + + public void Close() { + try { + _socket.Shutdown(SocketShutdown.Both); + _socket.Close(); + } + catch { + } + finally { + _socket = null; + } + } + + private static String MakeResponseHeaders(int statusCode, String moreHeaders, int contentLength, bool keepAlive) { + StringBuilder sb = new StringBuilder(); + sb.Append("HTTP/1.1 " + statusCode + " " + HttpWorkerRequest.GetStatusDescription(statusCode) + "\r\n"); + sb.Append("Server: Microsoft-Cassini/"+Messages.VersionString+"\r\n"); + sb.Append("Date: " + DateTime.Now.ToUniversalTime().ToString("R", DateTimeFormatInfo.InvariantInfo) + "\r\n"); + if (contentLength >= 0) + sb.Append("Content-Length: " + contentLength + "\r\n"); + if (moreHeaders != null) + sb.Append(moreHeaders); + if (!keepAlive) + sb.Append("Connection: Close\r\n"); + sb.Append("\r\n"); + return sb.ToString(); + } + + private static String MakeContentTypeHeader(String fileName) { + String contentType = null; + + int lastDot = fileName.LastIndexOf('.'); + + if (lastDot >= 0) { + switch (fileName.Substring(lastDot)) { + case ".js": contentType = "application/x-javascript"; break; + case ".gif": contentType = "image/gif"; break; + case ".jpg": contentType = "image/jpeg"; break; + } + } + + if (contentType == null) + return null; + + return "Content-Type: " + contentType + "\r\n"; + } + + public void ProcessOneRequest() { + // wait for at least some input + if (WaitForRequestBytes() == 0) { + WriteErrorAndClose(400); + return; + } + + Request request = new Request(_host, this); + request.Process(); + } + + public byte[] ReadRequestBytes(int maxBytes) { + try { + if (WaitForRequestBytes() == 0) + return null; + + int numBytes = _socket.Available; + if (numBytes > maxBytes) + numBytes = maxBytes; + + int numReceived = 0; + byte[] buffer = new byte[numBytes]; + + if (numBytes > 0) { + numReceived = _socket.Receive(buffer, 0, numBytes, SocketFlags.None); + } + + if (numReceived < numBytes) { + byte[] tempBuffer = new byte[numReceived]; + + if (numReceived > 0) { + Buffer.BlockCopy(buffer, 0, tempBuffer, 0, numReceived); + } + + buffer = tempBuffer; + } + + return buffer; + } + catch { + return null; + } + } + + public void Write100Continue() { + WriteEntireResponseFromString(100, null, null, true); + } + + public void WriteBody(byte[] data, int offset, int length) { + _socket.Send(data, offset, length, SocketFlags.None); + } + + public void WriteEntireResponseFromString(int statusCode, String extraHeaders, String body, bool keepAlive) { + try { + int bodyLength = (body != null) ? Encoding.UTF8.GetByteCount(body) : 0; + String headers = MakeResponseHeaders(statusCode, extraHeaders, bodyLength, keepAlive); + _socket.Send(Encoding.UTF8.GetBytes(headers + body)); + } + finally { + if (!keepAlive) + Close(); + } + } + + public void WriteEntireResponseFromFile(String fileName, bool keepAlive) { + if (!File.Exists(fileName)) { + WriteErrorAndClose(404); + return; + } + + bool completed = false; + FileStream fs = null; + + try { + fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); + int len = (int)fs.Length; + byte[] fileBytes = new byte[len]; + int bytesRead = fs.Read(fileBytes, 0, len); + + String headers = MakeResponseHeaders(200, MakeContentTypeHeader(fileName), bytesRead, keepAlive); + _socket.Send(Encoding.UTF8.GetBytes(headers)); + + _socket.Send(fileBytes, 0, bytesRead, SocketFlags.None); + + completed = true; + } + finally { + if (!keepAlive || !completed) + Close(); + + if (fs != null) + fs.Close(); + } + } + + public void WriteErrorAndClose(int statusCode, string message) { + String body = Messages.FormatErrorMessageBody(statusCode, _host.VirtualPath); + if (message != null && message.Length > 0) + body += "\r\n<!--\r\n" + message + "\r\n-->"; + WriteEntireResponseFromString(statusCode, null, body, false); + } + + public void WriteErrorAndClose(int statusCode) { + WriteErrorAndClose(statusCode, null); + } + + private int WaitForRequestBytes() { + int availBytes = 0; + + try { + if (_socket.Available == 0) { + // poll until there is data + _socket.Poll(100000 /* 100ms */, SelectMode.SelectRead); + if (_socket.Available == 0 && _socket.Connected) + _socket.Poll(10000000 /* 10sec */, SelectMode.SelectRead); + } + + availBytes = _socket.Available; + } + catch { + } + + return availBytes; + } + + public void WriteHeaders(int statusCode, String extraHeaders) { + String headers = MakeResponseHeaders(statusCode, extraHeaders, -1, false); + _socket.Send(Encoding.UTF8.GetBytes(headers)); + } + } +} Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/Host.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/Host.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/Host.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,227 @@ +/*======================================================================= +\xA0 Copyright (C) Microsoft Corporation.\xA0 All rights reserved. +\xA0 + THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. +=======================================================================*/ + +namespace Cassini { + using System; + using System.Collections; + using System.Diagnostics; + using System.Globalization; + using System.IO; + using System.Net; + using System.Net.Sockets; + using System.Text; + using System.Threading; + using System.Web; + using System.Web.Hosting; + + // + // Instances of an internal Host class are created in the App Domain + // processing HTTP request. Typeof(Host) is passed to CreateApplicationHost() + // + // Host uses System.Net to listen to the configured port and accept + // incoming HTTP connections. + // + internal class Host : MarshalByRefObject { + private bool _started; + private bool _stopped; + + private Server _server; + + private int _port; + private String _virtualPath; + private String _lowerCasedVirtualPath; + private String _lowerCasedVirtualPathWithTrailingSlash; + private String _physicalPath; + private String _installPath; + private String _physicalClientScriptPath; + private String _lowerCasedClientScriptPathWithTrailingSlashV10; + private String _lowerCasedClientScriptPathWithTrailingSlashV11; + + private Socket _socket; + + private WaitCallback _onStart; + private WaitCallback _onSocketAccept; + private EventHandler _onAppDomainUnload; + + public override Object InitializeLifetimeService() { + return null; // never expire lease + } + + public void Configure(Server server, int port, String virtualPath, String physicalPath, String installPath) { + _server = server; + + _port = port; + _virtualPath = virtualPath; + _lowerCasedVirtualPath = CultureInfo.InvariantCulture.TextInfo.ToLower(_virtualPath); + _lowerCasedVirtualPathWithTrailingSlash = virtualPath.EndsWith("/") ? virtualPath : virtualPath + "/"; + _lowerCasedVirtualPathWithTrailingSlash = CultureInfo.InvariantCulture.TextInfo.ToLower(_lowerCasedVirtualPathWithTrailingSlash); + _physicalPath = physicalPath; + _installPath = installPath; + _physicalClientScriptPath = installPath + "\\asp.netclientfiles\\"; + + String version4 = FileVersionInfo.GetVersionInfo(typeof(HttpRuntime).Module.FullyQualifiedName).FileVersion; + String version3 = version4.Substring(0, version4.LastIndexOf('.')); + _lowerCasedClientScriptPathWithTrailingSlashV10 = "/aspnet_client/system_web/" + version4.Replace('.', '_') + "/"; + _lowerCasedClientScriptPathWithTrailingSlashV11 = "/aspnet_client/system_web/" + version3.Replace('.', '_') + "/"; + + _onSocketAccept = new WaitCallback(OnSocketAccept); + _onStart = new WaitCallback(OnStart); + + // start watching for app domain unloading + _onAppDomainUnload = new EventHandler(OnAppDomainUnload); + Thread.GetDomain().DomainUnload += _onAppDomainUnload; + } + + public String NormalizedVirtualPath { + get { return _lowerCasedVirtualPathWithTrailingSlash; } + } + + public String PhysicalPath { + get { return _physicalPath; } + } + + public String InstallPath { + get { return _installPath; } + } + + public String PhysicalClientScriptPath { + get { return _physicalClientScriptPath; } + } + + public int Port { + get { return _port; } + } + + public String VirtualPath { + get { return _virtualPath; } + } + + public bool IsVirtualPathInApp(String path) { + bool isClientScriptPath; + String clientScript; + return IsVirtualPathInApp(path, out isClientScriptPath, out clientScript); + } + + public bool IsVirtualPathInApp(String path, out bool isClientScriptPath, out String clientScript) { + isClientScriptPath = false; + clientScript = null; + + if (path == null) + return false; + + if (_virtualPath == "/" && path.StartsWith("/")) { + if (path.StartsWith(_lowerCasedClientScriptPathWithTrailingSlashV10)) { + isClientScriptPath = true; + clientScript = path.Substring(_lowerCasedClientScriptPathWithTrailingSlashV10.Length); + } + + if (path.StartsWith(_lowerCasedClientScriptPathWithTrailingSlashV11)) { + isClientScriptPath = true; + clientScript = path.Substring(_lowerCasedClientScriptPathWithTrailingSlashV11.Length); + } + + return true; + } + + path = CultureInfo.InvariantCulture.TextInfo.ToLower(path); + + if (path.StartsWith(_lowerCasedVirtualPathWithTrailingSlash)) + return true; + + if (path == _lowerCasedVirtualPath) + return true; + + if (path.StartsWith(_lowerCasedClientScriptPathWithTrailingSlashV10)) { + isClientScriptPath = true; + clientScript = path.Substring(_lowerCasedClientScriptPathWithTrailingSlashV10.Length); + return true; + } + + if (path.StartsWith(_lowerCasedClientScriptPathWithTrailingSlashV11)) { + isClientScriptPath = true; + clientScript = path.Substring(_lowerCasedClientScriptPathWithTrailingSlashV11.Length); + return true; + } + + return false; + } + + public bool IsVirtualPathAppPath(String path) { + if (path == null) + return false; + + path = CultureInfo.InvariantCulture.TextInfo.ToLower(path); + return (path == _lowerCasedVirtualPath || path == _lowerCasedVirtualPathWithTrailingSlash); + } + + private void OnAppDomainUnload(Object unusedObject, EventArgs unusedEventArgs) { + Thread.GetDomain().DomainUnload -= _onAppDomainUnload; + + if (_stopped) + return; + + Stop(); + + _server.Restart(); + _server = null; + } + + private void OnSocketAccept(Object acceptedSocket) { + Connection conn = new Connection(this, (Socket)acceptedSocket); + conn.ProcessOneRequest(); + } + + private void OnStart(Object unused) { + while (_started) { + try { + Socket socket = _socket.Accept(); + ThreadPool.QueueUserWorkItem(_onSocketAccept, socket); + } + catch { + Thread.Sleep(100); + } + } + + _stopped = true; + } + + public void Start() { + if (_started) + throw new InvalidOperationException(); + + _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + _socket.Bind(new IPEndPoint(IPAddress.Any, _port)); + _socket.Listen((int)SocketOptionName.MaxConnections); + + _started = true; + ThreadPool.QueueUserWorkItem(_onStart); + } + + public void Stop() { + if (!_started) + return; + + _started = false; + + try { + // _socket.Shutdown(SocketShutdown.Both); /* blocks! */ + _socket.Close(); + } + catch { + } + finally { + _socket = null; + } + + while (!_stopped) + Thread.Sleep(100); + } + + } +} Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/Messages.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/Messages.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/Messages.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,149 @@ +/*======================================================================= +\xA0 Copyright (C) Microsoft Corporation.\xA0 All rights reserved. +\xA0 + THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. +=======================================================================*/ + +namespace Cassini { + using System; + using System.Collections; + using System.Globalization; + using System.IO; + using System.Text; + using System.Web; + using System.Web.Hosting; + + // + // Internal class provides helpers for string formatting of HTTP responses + // + internal class Messages { + + private const String _httpErrorFormat1 = +@"<html> + <head> + <title>{0}</title> +"; + + public static String VersionString = typeof(Server).Assembly.GetName().Version.ToString(); + + private const String _httpStyle = +@" <style> + body {font-family:""Verdana"";font-weight:normal;font-size: 8pt;color:black;} + p {font-family:""Verdana"";font-weight:normal;color:black;margin-top: -5px} + b {font-family:""Verdana"";font-weight:bold;color:black;margin-top: -5px} + H1 { font-family:""Verdana"";font-weight:normal;font-size:18pt;color:red } + H2 { font-family:""Verdana"";font-weight:normal;font-size:14pt;color:maroon } + pre {font-family:""Lucida Console"";font-size: 8pt} + .marker {font-weight: bold; color: black;text-decoration: none;} + .version {color: gray;} + .error {margin-bottom: 10px;} + .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; } + </style> +"; + + private static String _httpErrorFormat2 = +@" </head> + <body bgcolor=""white""> + + <span><H1>Server Error in '{0}' Application.<hr width=100% size=1 color=silver></H1> + + <h2> <i>HTTP Error {1} - {2}.</i> </h2></span> + + <hr width=100% size=1 color=silver> + + <b>Version Information:</b> Cassini Web Server " + VersionString + @" + + </font> + + </body> +</html> +"; + + private const String _dirListingFormat1 = +@"<html> + <head> + <title>Directory Listing -- {0}</title> +"; + + private const String _dirListingFormat2 = +@" </head> + <body bgcolor=""white""> + + <h2> <i>Directory Listing -- {0}</i> </h2></span> + + <hr width=100% size=1 color=silver> + +<PRE> +"; + + private static String _dirListingTail = +@"</PRE> + <hr width=100% size=1 color=silver> + + <b>Version Information:</b> Cassini Web Server " + VersionString + @" + + </font> + + </body> +</html> +"; + + private const String _dirListingParentFormat = +@"<A href=""{0}"">[To Parent Directory]</A> + +"; + + private const String _dirListingFileFormat = +@"{0,38:dddd, MMMM dd, yyyy hh:mm tt} {1,12:n0} <A href=""{2}"">{3}</A> +"; + + private const String _dirListingDirFormat = +@"{0,38:dddd, MMMM dd, yyyy hh:mm tt} <dir> <A href=""{1}/"">{2}</A> +"; + + + public static String FormatErrorMessageBody(int statusCode, String appName) { + String desc = HttpWorkerRequest.GetStatusDescription(statusCode); + + return String.Format(_httpErrorFormat1, desc) + + _httpStyle + + String.Format(_httpErrorFormat2, appName, statusCode, desc); + } + + public static String FormatDirectoryListing(String dirPath, String parentPath, FileSystemInfo[] elements) { + StringBuilder sb = new StringBuilder(); + + sb.Append(String.Format(_dirListingFormat1, dirPath)); + sb.Append(_httpStyle); + sb.Append(String.Format(_dirListingFormat2, dirPath)); + + if (parentPath != null) { + if (!parentPath.EndsWith("/")) + parentPath += "/"; + sb.Append(String.Format(_dirListingParentFormat, parentPath)); + } + + if (elements != null) { + for (int i = 0; i < elements.Length; i++) { + if (elements[i] is FileInfo) { + FileInfo fi = (FileInfo)elements[i]; + sb.Append(String.Format(_dirListingFileFormat, + fi.LastWriteTime, fi.Length, fi.Name, fi.Name)); + } + else if (elements[i] is DirectoryInfo) { + DirectoryInfo di = (DirectoryInfo)elements[i]; + sb.Append(String.Format(_dirListingDirFormat, + di.LastWriteTime, di.Name, di.Name)); + } + } + } + + sb.Append(_dirListingTail); + return sb.ToString(); + } + + } +} Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/MiniWebServer.csproj =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/MiniWebServer.csproj (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/MiniWebServer.csproj 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{AC169225-21E5-4375-A21D-A3779512A26C}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>MiniWebServer</RootNamespace> + <AssemblyName>MiniWebServer</AssemblyName> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Web" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="ByteParser.cs" /> + <Compile Include="ByteString.cs" /> + <Compile Include="Connection.cs" /> + <Compile Include="Host.cs" /> + <Compile Include="Messages.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Request.cs" /> + <Compile Include="Server.cs" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/Properties/AssemblyInfo.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MiniWebServer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Avaya")] +[assembly: AssemblyProduct("MiniWebServer")] +[assembly: AssemblyCopyright("Copyright © Avaya 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("d7f17007-5dac-4377-af91-bfbddfa2392c")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Added: trunk/plugins/MediaPortal WebServices/MiniWebServer/Request.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/MiniWebServer/Request.cs (rev 0) +++ trunk/plugins/MediaPortal WebServices/MiniWebServer/Request.cs 2009-10-02 16:57:37 UTC (rev 3101) @@ -0,0 +1,735 @@ +/*======================================================================= +\xA0 Copyright (C) Microsoft Corporation.\xA0 All rights reserved. +\xA0 + THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. +=======================================================================*/ + +namespace Cassini { + using System; + using System.Collections; + using System.Globalization; + using System.IO; + using System.Net; + using System.Net.Sockets; + using System.Text; + using System.Threading; + using System.Web; + using System.Web.Hosting; + + // + // Internal Request class provides the implementation of + // HttpWorkerRequest (by deriving from SimpleWorkerRequest). + // + // Request object are create one per client request as passed to + // ASP.NET using HttpRuntime.ProcessRequest + // + internal class Request : SimpleWorkerRequest { + private Host _host; + private Connection _conn; + + // raw request data + private const int maxHeaderBytes = 32*1024; + private byte[] _headerBytes; + private int _startHeadersOffset; + private int _endHeadersOffset; + private ArrayList _headerByteStrings; + + // parsed request data + private String _verb; + private String _url; + private String _prot; + + private String _path; + private String _filePath; + private String _pathInfo; + private String _pathTranslated; + private String _queryString; + private byte[] _queryStringBytes; + + private int _contentLength; + private int _preloadedContentLength; + private byte[] _preloadedContent; + + private String _allRawHeaders; + private String[][] _unknownRequestHeaders; + private String[] _knownRequestHeaders; + + // cached response + private bool _headersSent; + private int _responseStatus; + private StringBuilder _responseHeadersBuilder; + private ArrayList _responseBodyBytes; + + private bool _specialCaseStaticFileHeaders; + + + public Request(Host host, Connection conn) : base(String.Empty, String.Empty, null) { + _host = host; + _conn = conn; + } + + public void Process() { + + ReadAllHeaders(); + + if (_headerBytes == null || _endHeadersOffset < 0 || + _headerByteStrings == null || _headerByteStrings.Count == 0) { + _conn.WriteErrorAndClose(400); + return; + } + + ParseRequestLine(); + + // Check for bad path + if (IsBadPath()) { + _conn.WriteErrorAndClose(400); + return; + } + + // Limit to local requests only + /*if (!_conn.IsLocal) { + _conn.WriteErrorAndClose(403); + return; + }*/ + + // Check if the path is not well formed or is not for the current app + bool isClientScriptPath = false; + String clientScript = null; + + if (!_host.IsVirtualPathInApp(_path, out isClientScriptPath, out clientScript)) { + _conn.WriteErrorAndClose(404); + return; + } + + ParseHeaders(); + + ParsePostedContent(); + + if (_verb == "POST" && _contentLength > 0 && _preloadedContentLength < _contentLength) { + _conn.Write100Continue(); + } + + // special case for client script + if (isClientScriptPath) { + _conn.WriteEntireResponseFromFile(_host.PhysicalClientScriptPath + clientScript, false); + return; + } + + // special case for directory listing + if (ProcessDirectoryListingRequest()) { + return; + } + + PrepareResponse(); + + // Hand the processing over to HttpRuntime + + HttpRuntime.ProcessRequest(this); + } + + private bool TryReadAllHeaders() { + // read the first packet (up to 32K) + byte[] headerBytes = _conn.ReadRequestBytes(maxHeaderBytes); + + if (headerBytes == null || headerBytes.Length == 0) + return false; + + if (_headerBytes != null) { + // previous partial read + int len = headerBytes.Length + _headerBytes.Length; + if (len > maxHeaderBytes) + return false; + + byte[] bytes = new byte[len]; + Buffer.BlockCopy(_headerBytes, 0, bytes, 0, _headerBytes.Length); + Buffer.BlockCopy(headerBytes, 0, bytes, _headerBytes.Length, headerBytes.Length); + _headerBytes = bytes; + } + else { + _headerBytes = headerBytes; + } + + // start parsing + _startHeadersOffset = -1; + _endHeadersOffset = -1; + _headerByteStrings = new ArrayList(); + + // find the end of headers + ByteParser parser = new ByteParser(_headerBytes); + + for (;;) { + ByteString line = parser.ReadLine(); + + if (line == null) + break; + + if (_startHeadersOffset < 0) { + _startHeadersOffset = parser.CurrentOffset; + } + + if (line.IsEmpty) { + _endHeadersOffset = parser.CurrentOffset; + break; + } + + _headerByteStrings.Add(line); + } + + return true; + } + + private void ReadAllHeaders() { + _headerBytes = null; + + do { + if (!TryReadAllHeaders()) + break; // something bad happened + } + while (_endHeadersOffset < 0); // found \r\n\r\n + } + + private void ParseRequestLine() { + ByteString requestLine = (ByteString)_headerByteStrings[0]; + ByteString[] elems = requestLine.Split(' '); + + if (elems == null || elems.Length < 2 || elems.Length > 3) { + return; + } + + _verb = elems[0].GetString(); + + ByteString urlBytes = elems[1]; + _url = urlBytes.GetString(); + + if (elems.Length == 3) + _prot = elems[2].GetString(); + else + _prot = "HTTP/1.0"; + + // query string + + int iqs = urlBytes.IndexOf('?'); + if (iqs > 0) + _queryStringBytes = urlBytes.Substring(iqs+1).GetBytes(); + else + _queryStringBytes = new byte[0]; + + iqs = _url.IndexOf('?'); + if (iqs > 0) { + _path = _url.Substring(0, iqs); + _queryString = _url.Substring(iqs+1); + } + else { + _path = _url; + _queryStringBytes = new byte[0]; + } + + // url-decode path + + if (_path.IndexOf('%') >= 0) { + _path = HttpUtility.UrlDecode(_path); + } + + // path info + + int lastDot = _path.LastIndexOf('.'); + int lastSlh = _path.LastIndexOf('/'); + + if (lastDot >= 0 && lastSlh >= 0 && lastDot < lastSlh) { + int ipi = _path.IndexOf('/', lastDot); + _filePath = _path.Substring(0, ipi); + _pathInfo = _path.Substring(ipi); + } + else { + _filePath = _path; + _pathInfo = String.Empty; + } + + _pathTranslated = MapPath(_filePath); + } + + private static char[] s_badPathChars = new char[] { '%', '>', '<', '$', ':' }; + private bool IsBadPath() { + if (_path == null) + return true; + + if (_path.IndexOfAny(s_badPathChars) >= 0) + return true; + + if (_path.IndexOf("..") >= 0) + return true; + + return false; + } + + private void ParseHeaders() { + _knownRequestHeaders = new String[RequestHeaderMaximum]; + + // construct unknown headers as array list of name1,value1,... + ArrayList headers = new ArrayList(); + + for (int i = 1; i < _headerByteStrings.Count; i++) { + String s = ((ByteString)_headerByteStrings[i]).GetString(); + + int c = s.IndexOf(':'); + + if (c >= 0) { + String name = s.Substring(0, c).Trim(); + String value = s.Substring(c+1).Trim(); + + // remember + int knownIndex = GetKnownRequestHeaderIndex(name); + if (knownIndex >= 0) { + _knownRequestHeaders[knownIndex] = value; + } + else { + headers.Add(name); + headers.Add(value); + } + } + } + + // copy to array unknown headers + + int n = headers.Count / 2; + _unknownRequestHeaders = new String[n][]; + int j = 0; + + for (int i = 0; i < n; i++) { + _unknownRequestHeaders[i] = new String[2]; + _unknownRequestHeaders[i][0] = (String)headers[j++]; + _unknownRequestHeaders[i][1] = (String)headers[j++]; + } + + // remember all raw headers as one string + + if (_headerByteStrings.Count > 1) + _allRawHeaders = Encoding.UTF8.GetString(_headerBytes, _startHeadersOffset, _endHeadersOffset-_startHeadersOffset); + else + _allRawHeaders = String.Empty; + } + + private void ParsePostedContent() { + _contentLength = 0; + _preloadedContentLength = 0; + + String contentLengthValue = _knownRequestHeaders[HttpWorkerRequest.HeaderContentLength]; + if (contentLengthValue != null) { + try { + _contentLength = Int32.Parse(contentLengthValue); + } + catch { + } + } + + if (_headerBytes.Length > _endHeadersOffset) { + _preloadedContentLength = _headerBytes.Length - _endHeadersOffset; + + if (_preloadedContentLength > _contentLength && _contentLength > 0) + _preloadedContentLength = _contentLength; // don't read more than the content-length + + _preloadedContent = new byte[_preloadedContentLength]; + Buffer.BlockCopy(_headerBytes, _endHeadersOffset, _preloadedContent, 0, _preloadedContentLength); + } + } + + private static String[] s_defaultFilenames = new String[] { "default.aspx", "default.htm", "default.html" }; + + private bool ProcessDirectoryListingRequest() { + if (_verb != "GET") + return false; + + // last element extension-less? + int i1 = _pathTranslated.LastIndexOf('\\'); + int i2 = _pathTranslated.IndexOf('.', i1); + if (i2 >= i1) + return false; + + // now check if directory + if (!Directory.Exists(_pathTranslated)) + return false; + + // have to redirect /foo to /foo/ to allow relative links to work + if (!_path.EndsWith("/")) { + String newPath = _path + "/"; + String location = "Location: " + newPath + "\r\n"; + String body = "<html><head><title>Object moved</title></head><body>\r\n" + + "<h2>Object moved to <a href='" + newPath + "'>here</a>.</h2>\r\n" + + "</body></html>\r\n"; + + _conn.WriteEntireResponseFromString(302, location, body, false); + return true; + } + + // check for the default file + foreach (String filename in s_defaultFilenames) { + String defaultFilePath = _pathTranslated + "\\" + filename; + + if (File.Exists(defaultFilePath)) { + // pretend the request is for the default file path + _path += filename; + _filePath = _path; + _url = (_queryString != null) ? (_path + "?" + _queryString) : _path; + _pathTranslated = defaultFilePath; + return false; // go through normal processing + } + } + + // get all files and subdirs + FileSystemInfo[] infos = null; + try { + infos = (new DirectoryInfo(_pathTranslated)).GetFileSystemInfos(); + } + catch { + } + + // determine if parent is appropriate + String parentPath = null; + + if (_path.Length > 1) { + int i = _path.LastIndexOf('/', _path.Length-2); + parentPath = (i > 0) ?_path.Substring(0, i) : "/"; + if (!_host.IsVirtualPathInApp(parentPath)) + parentPath = null; + } + + _conn.WriteEntireResponseFromString(200, "Content-type: text/html; charset=utf-8\r\n", + Messages.FormatDirectoryListing(_path, parentPath, infos), false); + return true; + } + + private void PrepareResponse() { + _headersSent = false; + _responseStatus = 200; + _responseHeadersBuilder = new StringBuilder(); + _responseBodyBytes = new ArrayList(); + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // + // Implementation of HttpWorkerRequest + // + /////////////////////////////////////////////////////////////////////////////////////////////// + + public override String GetUriPath() { + return _path; + } + + public override String GetQueryString() { + return _queryString; + } + + public override byte[] GetQueryStringRawBytes() { + return _queryStringBytes; + } + + public override String GetRawUrl() { + return _url; + } + + public override String GetHttpVerbName() { + return _verb; + } + + public override String GetHttpVersion() { + return _prot; + }... [truncated message content] |
From: <ste...@us...> - 2009-11-18 19:32:20
|
Revision: 3160 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3160&view=rev Author: steve44src Date: 2009-11-18 19:32:06 +0000 (Wed, 18 Nov 2009) Log Message: ----------- - new plugin Added Paths: ----------- trunk/plugins/MP4IPSymcon/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/ClickHandler.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/GCollections.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/IPSObject.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/ImageObserver.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Instance.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/JumpClickHandler.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/LabelObserver.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/MP4IPSymcon.csproj trunk/plugins/MP4IPSymcon/MP4IPSymcon/MP4IPSymcon.csproj.user trunk/plugins/MP4IPSymcon/MP4IPSymcon/Main.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/MsgListener.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Observer.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Properties/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Properties/AssemblyInfo.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Properties/Settings.Designer.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Properties/Settings.settings trunk/plugins/MP4IPSymcon/MP4IPSymcon/Script.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Services.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Switch.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Variable.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSFS20/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSFS20/IIPSFS20service.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSFS20/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSFS20/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSFS20/TFS20Device.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSInstanceMgr/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSInstanceMgr/IIPSInstanceManagerservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSInstanceMgr/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSInstanceMgr/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSInstanceMgr/TIPSInstance.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSModuleMgr/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSModuleMgr/IIPSModuleservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSModuleMgr/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSModuleMgr/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSModuleMgr/TIPSStatusVariable.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSObjectMgr/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSObjectMgr/IIPSObjectManagerservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSObjectMgr/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSObjectMgr/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSObjectMgr/TIPSObject.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSSOAPServer/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSSOAPServer/IIPSSOAPServerservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSSOAPServer/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSSOAPServer/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSSOAPServer/TIPSMessage.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSSOAPServer/TIPSMessageFilter.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/IIPSScriptEngineservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/TIPSExecuteInfo.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/TIPSPHPFunction.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSScriptMgr/TIPSScriptThreadInfo.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSVariableMgr/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSVariableMgr/IIPSVariableManagerservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSVariableMgr/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSVariableMgr/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSVariableMgr/TIPSVarProfile.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSVariableMgr/TIPSVariable.datasource trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfDimmer/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfDimmer/IIPSxComfortDimmerservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfDimmer/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfDimmer/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfortSwitch/ trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfortSwitch/IIPSxComfortSwitchservice.wsdl trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfortSwitch/Reference.cs trunk/plugins/MP4IPSymcon/MP4IPSymcon/Web References/IPSXComfortSwitch/Reference.map trunk/plugins/MP4IPSymcon/MP4IPSymcon/app.config trunk/plugins/MP4IPSymcon/MP4IPSymcon/ipSymconLogo.png trunk/plugins/MP4IPSymcon/MP4IPSymcon/todo.txt trunk/plugins/MP4IPSymcon/MP4IPSymcon.sln trunk/plugins/MP4IPSymcon/MP4IPSymcon.suo Added: trunk/plugins/MP4IPSymcon/MP4IPSymcon/ClickHandler.cs =================================================================== --- trunk/plugins/MP4IPSymcon/MP4IPSymcon/ClickHandler.cs (rev 0) +++ trunk/plugins/MP4IPSymcon/MP4IPSymcon/ClickHandler.cs 2009-11-18 19:32:06 UTC (rev 3160) @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MediaPortal.GUI.Library; + +namespace MP4IPSymcon +{ + public interface ClickHandler + { + void onClick(Action.ActionType actionType); + } +} Added: trunk/plugins/MP4IPSymcon/MP4IPSymcon/GCollections.cs =================================================================== --- trunk/plugins/MP4IPSymcon/MP4IPSymcon/GCollections.cs (rev 0) +++ trunk/plugins/MP4IPSymcon/MP4IPSymcon/GCollections.cs 2009-11-18 19:32:06 UTC (rev 3160) @@ -0,0 +1,1875 @@ + // Generic typesafe collections in Generic C# + // This program requires .Net version 2.0. + // Peter Sestoft (se...@it...) 2001-12-02, 2003-11-23, 2004-07-26 + + // NOTE: FOR SERIOUS WORK, USE THE C5 GENERIC COLLECTION LIBRARY! + // SEE: http://www.itu.dk/research/c5/ + + // For this code, see documentation in file collections.txt + + // To create a module for use from other files, compile with + // csc /t:module GCollections.cs + + // To do: + // * Test systematically (no time, unfortunately) + // * Make GetHashCode constant time everywhere + // * Make the collections themselves implement IComparable<T> ? + // * Add interval operators to ISortedSet and ISortedMap operations + // * Implement HashSets from the ground up, using linked list for + // buckets, and retaining the hashcode to avoid recomputing it. + // * There's a fair amount of code duplication (generic/non-generic) + // in TreeMap, but I fear the performance consequences of removing it. + + using System; // For exceptions + + namespace GCollections + { + + // INTERFACES =================================================== + + // Enumerators -------------------------------------------------- + + public interface IEnumerator<T> + { + T Current { get; } + bool MoveNext(); + void Reset(); + } + + // Enumerables -------------------------------------------------- + + public interface IEnumerable<T> + { + IEnumerator<T> GetEnumerator(); + } + + // Collections -------------------------------------------------- + + public interface ICollection<T> : IEnumerable<T> + { + int Count { get; } + } + + // Comparing two things ----------------------------------------- + + public interface IComparer<T> + { + int Compare(T v1, T v2); + } + + // Comparing to type T ------------------------------------------ + + public interface IComparable<T> + { + int CompareTo(T that); + } + + // Maps --------------------------------------------------------- + + public interface IMap<K, V> : ICollection<MapEntry<K, V>> + { + bool Add(K key, V val); // Cannot return old value ... + MapEntry<K, V> Remove(K key); + V this[K key] { get; set; } + bool Contains(K key); + // ICollection<K> Keys { get; } + // ICollection<V> Values { get; } + } + + // Sorted maps -------------------------------------------------- + + public interface ISortedMap<K, V> : IMap<K, V> { } + + // Map entries -------------------------------------------------- + + public struct MapEntry<K, V> + { + K key; V val; + + public MapEntry(K key, V val) + { + this.key = key; this.val = val; + } + + public K Key { get { return key; } } + + public V Value { get { return val; } } + } + + // Sets --------------------------------------------------------- + + public interface ISet<T> : ICollection<T> + { + bool Add(T item); // return true if item was added + T Remove(T item); // return removed item + bool Contains(T item); + } + + // Sorted sets -------------------------------------------------- + + public interface ISortedSet<T> : ISet<T> { } + + // Lists, stacks and queues ------------------------------------- + + public interface IList<T> : ICollection<T> + { + bool Add(T item); + bool Add(int i, T item); + T Remove(); + T RemoveAt(int i); + T Remove(T item); + bool Contains(T item); // using Equals + T this[int index] { get; set; } + } + + // IMPLEMENTATIONS ============================================== + + // HashMaps ----------------------------------------------------- + + public class HashMap<K, V> : IMap<K, V> + { + private System.Collections.Hashtable table; + + public HashMap() + { + table = new System.Collections.Hashtable(); + } + + public ICollection<K> Keys + { + get { return new Collection<K>(table.Keys); } + } + + public ICollection<V> Values + { + get { return new Collection<V>(table.Values); } + } + + public int Count + { + get { return table.Count; } + } + + public bool Add(K key, V val) + { + if (table.Contains(key)) + return false; + else + { + table.Add(key, val); + return true; + } + } + + public MapEntry<K, V> Remove(K key) + { + if (table.Contains(key)) + { + V val = (V)table[key]; + table.Remove(key); + return new MapEntry<K, V>(key, val); // Issue: not quite as spec'ed + } + else + throw new ElementNotFoundException(); + } + + public V this[K key] + { + get { return (V)table[key]; } + set { table[key] = value; } + } + + public bool Contains(K key) + { + return table.Contains(key); + } + + // Two classes to help convert the underlying Hashtable's Keys and + // Values object ICollections into generic collections + + class Collection<T> : ICollection<T> + { + private System.Collections.ICollection coll; + + public Collection(System.Collections.ICollection coll) + { + this.coll = coll; + } + + public IEnumerator<T> GetEnumerator() + { + return new Enumerator<T>(coll.GetEnumerator()); + } + + public int Count + { + get { return coll.Count; } + } + } + + // Issue: this function could be optimized to not use the enumerators + + public override int GetHashCode() + { + int sum = 0; + foreach (MapEntry<K, V> entry in this) + sum += entry.Key.GetHashCode() ^ entry.Value.GetHashCode(); + return sum; + } + + class Enumerator<T> : IEnumerator<T> + { + System.Collections.IEnumerator enm; + + public Enumerator(System.Collections.IEnumerator enm) + { + this.enm = enm; + } + + public T Current + { + get { return (T)enm.Current; } + } + + public bool MoveNext() + { + return enm.MoveNext(); + } + + public void Reset() + { + enm.Reset(); + } + } + + public IEnumerator<MapEntry<K, V>> GetEnumerator() + { + return new HashMapEnumerator(this, table.GetEnumerator()); + } + + class HashMapEnumerator : IEnumerator<MapEntry<K, V>> + { + HashMap<K, V> map; + System.Collections.IEnumerator enm; + + public HashMapEnumerator(HashMap<K, V> map, + System.Collections.IEnumerator enm) + { + this.map = map; this.enm = enm; + } + + // Issue: should probably not create a new struct on every invocation + public virtual MapEntry<K, V> Current + { + get + { + System.Collections.DictionaryEntry entry + = (System.Collections.DictionaryEntry)enm.Current; + return new MapEntry<K, V>((K)entry.Key, (V)entry.Value); + } + } + + public bool MoveNext() + { + return enm.MoveNext(); + } + + public void Reset() + { + enm.Reset(); + } + } + } + + // HashSet, sets of unordered items ----------------------------- + + public class HashSet<T> : ISet<T> + { + private System.Collections.Hashtable /* from T to null */ table; + private int hashCode = 0; // to save recomputing it + + public HashSet() + { + table = new System.Collections.Hashtable(); + } + + public HashSet(T v) + : this() + { + Add(v); + } + + public HashSet(HashSet<T> s) + : this() + { + IEnumerator<T> sIter = s.GetEnumerator(); + while (sIter.MoveNext()) + Add(sIter.Current); + } + + public int Count + { + get { return table.Count; } + } + + public bool Add(T v) + { + if (!table.Contains(v)) + { + table.Add(v, null); + hashCode += v.GetHashCode(); + return true; + } + else + return false; + } + + public T Remove(T v) + { + if (table.Contains(v)) + { + table.Remove(v); + hashCode -= v.GetHashCode(); + return v; // Issue: not quite according to spec + } + else + throw new ElementNotFoundException(); + } + + public bool Contains(T v) + { + return table.Contains(v); + } + + public IEnumerator<T> GetEnumerator() + { + return new HashSetEnumerator(table); + } + + class HashSetEnumerator : IEnumerator<T> + { + System.Collections.IEnumerator enm; + + public HashSetEnumerator(System.Collections.Hashtable table) + { + this.enm = table.Keys.GetEnumerator(); + } + + public virtual T Current + { + get { return (T)enm.Current; } + } + + public bool MoveNext() + { + return enm.MoveNext(); + } + + public void Reset() + { + enm.Reset(); + } + } + + public override int GetHashCode() + { + return hashCode; + } + + public override bool Equals(object that) + { + // Issue: could compare hashcodes, if GetHashCode were constant time + if (that is ISet<T> && Count == ((ISet<T>)that).Count) + { + ISet<T> thatSet = (ISet<T>)that; + IEnumerator<T> thisenm = this.GetEnumerator(); + while (thisenm.MoveNext()) + { + if (!thatSet.Contains(thisenm.Current)) + return false; + } + return true; + } + else + return false; + } + } + + // Doubly-linked lists ------------------------------------------ + // Add(T) at end, Remove() from front; behaves like a queue (FIFO) + + public class LinkedList<T> : IList<T> + { + int size; // Number of elements in the list + int stamp; // To detect modification during enumeration + Node first, last; // Invariant: first==null iff last==null + + private class Node + { + public Node prev, next; + public T item; + + public Node(T item) + { + this.item = item; + } + + public Node(T item, Node prev, Node next) + { + this.item = item; this.prev = prev; this.next = next; + } + } + + public LinkedList() + { + first = last = null; + size = stamp = 0; + } + + public int Count + { + get { return size; } + } + + public T this[int index] + { + get { return get(index).item; } + set { get(index).item = value; } + } + + private Node get(int n) + { + if (n < 0 || n >= size) + throw new IndexOutOfRangeException(); + else if (n < size / 2) + { // Closer to front + Node node = first; + for (int i = 0; i < n; i++) + node = node.next; + return node; + } + else + { // Closer to end + Node node = last; + for (int i = size - 1; i > n; i--) + node = node.prev; + return node; + } + } + + public bool Add(T item) + { + return AddLast(item); + } + + public bool AddFirst(T item) + { + if (first == null) // and thus last == null + first = last = new Node(item); + else + { + Node tmp = new Node(item, null, first); + first.prev = tmp; + first = tmp; + } + size++; + stamp++; + return true; + } + + public bool Add(int i, T item) + { + if (i == 0) + return AddFirst(item); + else if (i == size) + return AddLast(item); + else + { + Node node = get(i); + // assert node.prev != null; + Node newnode = new Node(item, node.prev, node); + node.prev.next = newnode; + node.prev = newnode; + size++; + stamp++; + return true; + } + } + + public bool AddLast(T item) + { + if (last == null) // and thus first = null + first = last = new Node(item); + else + { + Node tmp = new Node(item, last, null); + last.next = tmp; + last = tmp; + } + size++; + stamp++; + return true; + } + + public T Remove() + { + return RemoveFirst(); + } + + public T RemoveFirst() + { + if (first == null) // and thus last == null + throw new IndexOutOfRangeException(); + else + { + size--; + stamp++; + T item = first.item; + first = first.next; + if (first == null) + last = null; + else + first.prev = null; + return item; + } + } + + public T RemoveAt(int i) + { + Node node = get(i); + if (node.prev == null) + first = node.next; + else + node.prev.next = node.next; + if (node.next == null) + last = node.prev; + else + node.next.prev = node.prev; + size--; + stamp++; + return node.item; + } + + public T RemoveLast() + { + if (last == null) // and thus first == null + throw new IndexOutOfRangeException(); + else + { + size--; + stamp++; + T item = last.item; + last = last.prev; + if (last == null) + first = null; + else + last.next = null; + return item; + } + } + + public T Remove(T item) + { + Node node = first; + while (node != null) + { + if (item.Equals(node.item)) + { + if (node.prev == null) + first = node.next; + else + node.prev.next = node.next; + if (node.next == null) + last = node.prev; + else + node.next.prev = node.prev; + size--; + stamp++; + return node.item; + } + node = node.next; + } + throw new ElementNotFoundException(); + } + + public bool Contains(T item) + { + Node node = first; + while (node != null) + { + if (item.Equals(node.item)) + return true; + node = node.next; + } + return false; + } + + public override int GetHashCode() + { + int sum = 0; + Node node = first; + while (node != null) + { + sum = 31 * sum + node.item.GetHashCode(); + node = node.next; + } + return sum; + } + + public override bool Equals(object that) + { + if (that is IList<T> && this.size == ((IList<T>)that).Count) + { + Node thisnode = this.first; + IEnumerator<T> thatenm = ((IList<T>)that).GetEnumerator(); + while (thisnode != null) + { + if (!thatenm.MoveNext()) + throw new Exception("Impossible: LinkedList<T>.Equals"); + // assert MoveNext() was true; // because of the above size test + if (!thisnode.item.Equals(thatenm.Current)) + return false; + thisnode = thisnode.next; + } + // assert !MoveNext(); // because of the size test + return true; + } + else + return false; + } + + public IEnumerator<T> GetEnumerator() + { + return new LinkedListEnumerator(this); + } + + class LinkedListEnumerator : IEnumerator<T> + { + LinkedList<T> lst; + Node curr; + int stamp; + bool valid; + T item; + + public LinkedListEnumerator(LinkedList<T> lst) + { + this.lst = lst; this.stamp = lst.stamp; Reset(); + } + + public T Current + { + get + { + if (valid) + return item; + else + throw new InvalidOperationException(); + } + } + + public bool MoveNext() + { + if (stamp != lst.stamp) + throw new InvalidOperationException(); // List modified + else if (curr != null) + { + item = curr.item; + curr = curr.next; + return valid = true; + } + else + return valid = false; + } + + public void Reset() + { + curr = lst.first; + valid = false; + } + } + } + + // Array lists -------------------------------------------------- + // Add(T) at end, Remove() from end; behaves like a stack, LIFO + + public class ArrayList<T> : IList<T> + { + int size; // Number of elements in list + int stamp; // To detect modification during enumeration + T[] elems; + + public ArrayList() + { + size = stamp = 0; + elems = new T[10]; // Initial capacity + } + + private void reallocate(int newsize) + { + T[] newelems = new T[newsize]; + for (int i = 0; i < size; i++) + newelems[i] = elems[i]; + elems = newelems; + } + + public int Count + { + get { return size; } + } + + public T this[int index] + { + get { return elems[index]; } + set { elems[index] = value; } + } + + public bool Add(T item) + { + return AddLast(item); + } + + public bool AddLast(T item) + { // Add at end + return Add(size, item); + } + + public bool Add(int i, T item) + { // Add at position i + if (i < 0 || i > size) + throw new IndexOutOfRangeException(); + else + { + if (size == elems.Length) + reallocate(2 * size); + // assert elems.Length > size; + for (int j = size; j > i; j--) + elems[j] = elems[j - 1]; + elems[i] = item; + size++; + stamp++; + return true; + } + } + + public T Remove() + { // Remove last + return RemoveAt(size - 1); + } + + public T RemoveAt(int i) + { // Remove at index i + if (i < 0 || i >= size) + throw new IndexOutOfRangeException(); + else + { + T item = elems[i]; + for (int j = i + 1; j < size; j++) + elems[j - 1] = elems[j]; + elems[--size] = default(T); // To prevent space leaks + stamp++; + return item; + } + } + + public T Remove(T item) + { // Search + for (int i = 0; i < size; i++) + if (item.Equals(elems[i])) + return RemoveAt(i); + throw new ElementNotFoundException(); + } + + public bool Contains(T item) + { + for (int i = 0; i < size; i++) + if (item.Equals(elems[i])) + return true; + return false; + } + + public override int GetHashCode() + { + int sum = 0; + for (int i = 0; i < size; i++) + sum = 31 * sum + elems[i].GetHashCode(); + return sum; + } + + public override bool Equals(object that) + { + if (that is IList<T> && this.size == ((IList<T>)that).Count) + { + IEnumerator<T> thatenm = ((IList<T>)that).GetEnumerator(); + for (int i = 0; i < size; i++) + { + if (!thatenm.MoveNext()) + throw new Exception("Impossible: LinkedList<T>.Equals"); + // assert MoveNext() returned true; /// because of the size test + if (!elems[i].Equals(thatenm.Current)) + return false; + } + // assert !MoveNext(); /// because of the size test + return true; + } + else + return false; + } + + public IEnumerator<T> GetEnumerator() + { + return new ArrayListEnumerator(this); + } + + class ArrayListEnumerator : IEnumerator<T> + { + ArrayList<T> lst; + bool valid; + int stamp; + T item; + int curr; + + public ArrayListEnumerator(ArrayList<T> lst) + { + this.lst = lst; stamp = lst.stamp; Reset(); + } + + public T Current + { + get + { + if (valid) + return item; + else + throw new InvalidOperationException(); + } + } + + public bool MoveNext() + { + if (stamp != lst.stamp) + throw new InvalidOperationException(); + else if (curr < lst.size) + { + item = lst[curr]; + curr++; + return valid = true; + } + else + return valid = false; + } + + public void Reset() + { + curr = 0; + valid = false; + } + } + } + + // ORDERED BINARY TREES (RED-BLACK TREES) ----------------------- + + // The root node is black + // Leaf nodes (null pointers) are black + // A red node must have a black parent + // All paths from a node to a leaf must have the same number of black nodes + + // Much based on Ken Larsen's implementation for Moscow ML, whose + // deletion algorithm is inspired by Stefan Kahrs + + // Nodes in binary trees + + internal class Node<K, V> + { + public Node<K, V> left, rght; + public K key; + public V val; + public bool red; // Color is red or black + + public Node(K key, V val) + { + this.key = key; this.val = val; red = true; + } + + public Node(K key, V val, Node<K, V> left, Node<K, V> rght) + { + this.key = key; this.val = val; red = false; + } + + // Colored rebalancing operations + + public static void lbal(ref Node<K, V> t) + { + // assert t != null; + t.red = false; + Node<K, V> d = t.left; + if (d != null && d.red) + { + if (d.left != null && d.left.red) + { + d.left.red = false; + t.left = d.rght; + d.rght = t; + t = d; + } + else if (d.rght != null && d.rght.red) + { + Node<K, V> bc = d.rght; + d.red = false; + t.left = bc.rght; + bc.rght = t; + d.rght = bc.left; + bc.left = d; + t = bc; + } + } + } + + public static void rbal(ref Node<K, V> t) + { + // assert t != null; + t.red = false; + Node<K, V> e = t.rght; + if (e != null && e.red) + { + if (e.rght != null && e.rght.red) + { + e.rght.red = false; + t.rght = e.left; + e.left = t; + t = e; + } + else if (e.left != null && e.left.red) + { + Node<K, V> bc = e.left; + e.red = false; + t.rght = bc.left; + bc.left = t; + e.left = bc.rght; + bc.rght = e; + t = bc; + } + } + } + + public static void balleft(ref Node<K, V> t) + { + // assert t != null; + if (t.left != null && t.left.red) + { // (red, ---) + t.red = true; + t.left.red = false; + } + else if (t.rght != null) + if (!t.rght.red) + { // (black, black) + t.rght.red = true; + rbal(ref t); + } + else if (t.rght.left != null && !t.rght.left.red) + { + t.red = false; + Node<K, V> trl = t.rght.left; + t.rght.left = trl.rght; + if (t.rght.rght != null) + t.rght.rght.red = true; + rbal(ref t.rght); + trl.rght = t.rght; + t.rght = trl.left; + trl.left = t; + t = trl; + t.red = true; + } + else throw new Exception("balleft"); + } + + public static void balrght(ref Node<K, V> t) + { + // assert t != null; + if (t.rght != null && t.rght.red) + { // (---, red) + t.red = true; + t.rght.red = false; + } + else if (t.left != null) + if (!t.left.red) + { // (black, black) + t.left.red = true; + lbal(ref t); + } + else if (t.left.rght != null && !t.left.rght.red) + { + t.red = false; + Node<K, V> tlr = t.left.rght; + t.left.rght = tlr.left; + if (t.left.left != null) + t.left.left.red = true; + lbal(ref t.left); + tlr.left = t.left; + t.left = tlr.rght; + tlr.rght = t; + t = tlr; + t.red = true; + } + else throw new Exception("balrght"); + } + + public static Node<K, V> append(Node<K, V> left, Node<K, V> rght) + { + if (left == null) + return rght; + else if (rght == null) + return left; + else if (left.red != rght.red) + { // different colours + if (left.red) + { // (red, black) + left.rght = append(left.rght, rght); + return left; + } + else + { // (black, red) + rght.left = append(left, rght.left); + return rght; + } + } + else + { // same colours + Node<K, V> bc = append(left.rght, rght.left); + if (bc != null && bc.red) + { + left.rght = bc.left; + bc.left = left; + rght.left = bc.rght; + bc.rght = rght; + return bc; + } + else + { + rght.left = bc; + left.rght = rght; + if (!left.red) // (black, black) + balleft(ref left); + return left; + } + } + } + } + + // Operations on tree maps + + internal interface ITreeOps<K, V> + { + bool contains(Node<K, V> t, K key); + Node<K, V> get(Node<K, V> t, K key); + bool add(ref Node<K, V> t, K key, V val); + Node<K, V> del(ref Node<K, V> t, K key); + } + + // Object-based IComparable tree operations --------------------- + + // Object-based dynamically typed comparisons using CompareTo(object) + + internal class OTreeOps<K, V> : ITreeOps<K, V> + where K : System.IComparable + { + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // Generic IComparable<K> tree operations --------------------- + + // Generic statically typed implicit comparer CompareTo(K). + + // The code is textually identical to the above, but will avoid + // all the boxings implied by the above code when K is + // instantiated to a value type. + + internal class GTreeOps<K, V> : ITreeOps<K, V> + where K : IComparable<K> + { + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // Separate statically typed comparer: Compare(K,K) + + internal class FGTreeOps<K, V> : ITreeOps<K, V> + { + IComparer<K> comparer; + + public FGTreeOps(IComparer<K> comparer) + { + this.comparer = comparer; + } + + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // Separate dynamically typed comparer: Compare(object, object) + + internal class FOTreeOps<K, V> : ITreeOps<K, V> + { + System.Collections.IComparer comparer; + + public FOTreeOps(System.Collections.IComparer comparer) + { + this.comparer = comparer; + } + + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // The TreeMap class itself, and two subclasses + + public class TreeMap<K, V> : ISortedMap<K, V> + { + private int size; // Number of entries in the tree map + private int stamp; // To detect modification during enumeration + private Node<K, V> root; + private ITreeOps<K, V> treeops; + + internal TreeMap(ITreeOps<K, V> treeops) + { + size = stamp = 0; + root = null; + this.treeops = treeops; + } + + // Object-based dynamically typed explicit comparer + + public TreeMap(System.Collections.IComparer comparer) + : this(new FOTreeOps<K, V>(comparer)) { } + + // Generic statically typed explicit comparer + + public TreeMap(IComparer<K> comparer) + : this(new FGTreeOps<K, V>(comparer)) { } + + public int Count + { + get { return size; } + } + + public bool Add(K key, V val) + { + bool added = treeops.add(ref root, key, val); + root.red = false; + if (added) + { + size++; + stamp++; + } + return added; + } + + public V this[K key] + { + get { return treeops.get(root, key).val; } + set + { + if (treeops.contains(root, key)) + treeops.get(root, key).val = value; + else + treeops.add(ref root, key, value); + } + } + + public bool Contains(K key) + { + return treeops.contains(root, key); + } + + // Remove item from set and return it; or throw ElementNotFoundException + + public MapEntry<K, V> Remove(K key) + { + Node<K, V> res = treeops.del(ref root, key); + if (root != null) + root.red = false; + size--; + stamp++; + return new MapEntry<K, V>(res.key, res.val); + } + + // Computing the tree depth (for debugging only) + + public int Depth() + { + return depth(root); + } + + private static int depth(Node<K, V> node) + { + if (node == null) + return 0; + else + return 1 + System.Math.Max(depth(node.left), depth(node.rght)); + } + + // Issue: these functions could be optimized to not use the enumerators + + public override int GetHashCode() + { + int sum = 0; + foreach (MapEntry<K, V> entry in this) + sum += entry.Key.GetHashCode() ^ entry.Value.GetHashCode(); + return sum; + } + + public override bool Equals(object that) + { + if (that is IMap<K, V> && Count == ((IMap<K, V>)that).Count) + { + IMap<K, V> thatMap = (IMap<K, V>)that; + if (thatMap is ISortedMap<K, V>) + return equalsSortedMap((ISortedMap<K, V>)thatMap); + else + { + IEnumerator<MapEntry<K, V>> thisenm = this.GetEnumerator(); + while (thisenm.MoveNext()) + { + MapEntry<K, V> entry = thisenm.Current; + if (!thatMap.Contains(entry.Key) + || !thatMap[entry.Key].Equals(entry.Value)) + return false; + } + return true; + } + } + else + return false; + } + + // More efficient comparison possible when both maps are sorted + + private bool equalsSortedMap(ISortedMap<K, V> thatMap) + { + // assert this.Count == thatMap.Count; + IEnumerator<MapEntry<K, V>> thisenm = this.GetEnumerator(); + IEnumerator<MapEntry<K, V>> thatenm = thatMap.GetEnumerator(); + while (thisenm.MoveNext() && thatenm.MoveNext()) + { + MapEntry<K, V> tit = thisenm.Current; + MapEntry<K, V> tat = thatenm.Current; + if (!ti... [truncated message content] |
From: <ste...@us...> - 2009-12-10 07:11:53
|
Revision: 3216 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3216&view=rev Author: steve44src Date: 2009-12-10 07:11:40 +0000 (Thu, 10 Dec 2009) Log Message: ----------- Added Paths: ----------- trunk/plugins/FritzManager/ trunk/plugins/FritzManager/FritzManager/ trunk/plugins/FritzManager/FritzManager/ABReader.cs trunk/plugins/FritzManager/FritzManager/CallItem.cs trunk/plugins/FritzManager/FritzManager/FritzManager.csproj trunk/plugins/FritzManager/FritzManager/GCollections.cs trunk/plugins/FritzManager/FritzManager/Main.cs trunk/plugins/FritzManager/FritzManager/MyBinaryReader.cs trunk/plugins/FritzManager/FritzManager/Properties/ trunk/plugins/FritzManager/FritzManager/Properties/AssemblyInfo.cs trunk/plugins/FritzManager/FritzManager/Setup.Designer.cs trunk/plugins/FritzManager/FritzManager/Setup.cs trunk/plugins/FritzManager/FritzManager/Setup.resx trunk/plugins/FritzManager/FritzManager/VoiceboxItem.cs trunk/plugins/FritzManager/FritzManager.sln trunk/plugins/FritzManager/Skin/ trunk/plugins/FritzManager/Skin/FritzManager.xml trunk/plugins/FritzManager/Skin/Media/ trunk/plugins/FritzManager/Skin/Media/Thumbs.db trunk/plugins/FritzManager/Skin/Media/callin.png trunk/plugins/FritzManager/Skin/Media/callout.png trunk/plugins/FritzManager/Skin/Media/rejected.png trunk/plugins/FritzManager/fritzdial.sh trunk/plugins/FritzManager/speexdec.exe Added: trunk/plugins/FritzManager/FritzManager/ABReader.cs =================================================================== --- trunk/plugins/FritzManager/FritzManager/ABReader.cs (rev 0) +++ trunk/plugins/FritzManager/FritzManager/ABReader.cs 2009-12-10 07:11:40 UTC (rev 3216) @@ -0,0 +1,79 @@ +/* + * Erstellt mit SharpDevelop. + * Benutzer: sr + * Datum: 27.11.2009 + * Zeit: 11:28 + * + * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern. + */ +using System; +using System.IO; +using System.Collections.Generic; +using System.Globalization; +using MediaPortal.GUI.Library; + +namespace FritzManager +{ + class ABReader + { + public static List<VoiceboxItem> loadVoiceboxDir(string basepath) + { + //string basepath = @"C:\Dokumente und Einstellungen\sr\Eigene Dateien\sharpproj\FritzABBrowser\voicebox\"; + List<VoiceboxItem> result = new List<VoiceboxItem>(); + try { + Log.Debug("Reading voicebox items from {0}", basepath ); + for(int i = 0; i < 5; i++ ) { + string meta = String.Format("{0}\\meta{1}",basepath,i); + FileStream stream = File.OpenRead(meta ); + MyBinaryReader r = new MyBinaryReader(stream); + while( stream.Position < stream.Length) { + int len = r.ReadInt32(); + if( len == 348 ) { + VoiceboxItem item = new VoiceboxItem(); + item.voicebox = i; // what voicebox + item.seq = r.ReadInt32(); + item.type = r.ReadInt32(); + r.ReadInt32(); + item.filelen = r.ReadInt32(); + item.lenInSec = r.ReadInt32(); + item.isNew = r.ReadInt32(); + // 24 Bytes + stream.Position += 24; + long pos = stream.Position + 18*4; + item.callerId = r.ReadCString(); + stream.Position = pos; + pos += 32; + item.filename = r.ReadCString(); + stream.Position = pos; + pos += 32*4; + item.pathname = r.ReadCString(); + stream.Position = pos; + pos += 9*4; + // read date + int Day = r.ReadByte(); + int Month = r.ReadByte(); + int Year = r.ReadByte() +2000; + int Hour = r.ReadByte(); + int Minute = r.ReadByte(); + int Second = r.ReadByte(); + item.time = new DateTime(Year,Month,Day,Hour,Minute,Second); + + stream.Position = pos; + pos += 32; + item.mynumber = r.ReadCString(); + stream.Position = pos; + result.Add(item); + //Console.WriteLine(item); + } + } // while + stream.Close(); + //Console.ReadLine(); + } // for + } catch( Exception e ) + { + Log.Debug("Exception {0}", e.Message ); + } + return result; + } + } +} \ No newline at end of file Added: trunk/plugins/FritzManager/FritzManager/CallItem.cs =================================================================== --- trunk/plugins/FritzManager/FritzManager/CallItem.cs (rev 0) +++ trunk/plugins/FritzManager/FritzManager/CallItem.cs 2009-12-10 07:11:40 UTC (rev 3216) @@ -0,0 +1,79 @@ +/* + * Erstellt mit SharpDevelop. + * Benutzer: srinke + * Datum: 09.12.2009 + * Zeit: 13:54 + * + * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern. + */ +using System; +using System.IO; +using System.Collections.Generic; +using System.Globalization; +using MediaPortal.GUI.Library; + +namespace FritzManager +{ + /// <summary> + /// Description of CallItem. + /// </summary> + public class CallItem + { + public int type; + public DateTime timestamp; + public string name; + public string number; + public string extension; // nebenstelle + public string mynumber; + public DateTime duration; + + public CallItem() + { + } + + public static List<CallItem> loadFromFile( string filename ) { + Stream s = new FileStream(filename, FileMode.Open ); + List<CallItem> r = load(s); + s.Close(); + return r; + } + + public static List<CallItem> load(Stream s) { + List<CallItem> result = new List<CallItem>(); + + try { + StreamReader reader = new StreamReader( s, System.Text.Encoding.GetEncoding(1252) ); + CultureInfo provider = CultureInfo.InvariantCulture; + string formatTimeStamp = "dd.MM.yy HH:mm"; + string formatDuration = "H:mm"; + string cutOffPrefix = "49"; + string line; + for(int i = 0; i<3;i++) reader.ReadLine(); // skip first three lines + + while( reader.Peek() >= 0 ) { + line = reader.ReadLine(); + string[] f = line.Split(';'); + CallItem item = new CallItem(); + item.type = Convert.ToInt16(f[0]); + item.timestamp = DateTime.ParseExact(f[1], formatTimeStamp, provider); + item.name = f[2]; + if( f[3].StartsWith(cutOffPrefix) ) { + item.number = "0" + f[3].Substring(cutOffPrefix.Length); + } else { + item.number = f[3]; + } + item.extension = f[4]; + item.mynumber = f[5]; + item.duration = DateTime.ParseExact(f[6], formatDuration, provider); + result.Add(item); + } + + reader.Close(); + s.Close(); + } catch( Exception e ) { + Log.Debug("Error loading Callitems {0}",e.Message); + } + return result; + } + } +} Added: trunk/plugins/FritzManager/FritzManager/FritzManager.csproj =================================================================== --- trunk/plugins/FritzManager/FritzManager/FritzManager.csproj (rev 0) +++ trunk/plugins/FritzManager/FritzManager/FritzManager.csproj 2009-12-10 07:11:40 UTC (rev 3216) @@ -0,0 +1,76 @@ +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectGuid>{876FEE48-5578-48D7-9E02-F75800F8CD66}</ProjectGuid> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">x86</Platform> + <OutputType>Library</OutputType> + <RootNamespace>FritzManager</RootNamespace> + <AssemblyName>FritzManager</AssemblyName> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + <AppDesignerFolder>Properties</AppDesignerFolder> + <SourceAnalysisOverrideSettingsFile>C:\Dokumente und Einstellungen\srinke\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile> + <AllowUnsafeBlocks>False</AllowUnsafeBlocks> + <NoStdLib>False</NoStdLib> + <WarningLevel>4</WarningLevel> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + </PropertyGroup> + <PropertyGroup Condition=" '$(Platform)' == 'x86' "> + <PlatformTarget>x86</PlatformTarget> + <RegisterForComInterop>False</RegisterForComInterop> + <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies> + <BaseAddress>4194304</BaseAddress> + <FileAlignment>4096</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <OutputPath>..\..\..\..\..\..\Programme\Team MediaPortal\MediaPortal\plugins\Windows\</OutputPath> + <DebugSymbols>true</DebugSymbols> + <DebugType>Full</DebugType> + <Optimize>False</Optimize> + <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <IntermediateOutputPath>..\..\..\..\Programme\Team MediaPortal\MediaPortal\plugins\Windows\</IntermediateOutputPath> + <StartAction>Program</StartAction> + <StartProgram>..\..\..\..\..\..\Programme\Team MediaPortal\MediaPortal\MediaPortal.exe</StartProgram> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <OutputPath>bin\Release\</OutputPath> + <DebugSymbols>False</DebugSymbols> + <DebugType>None</DebugType> + <Optimize>True</Optimize> + <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> + <DefineConstants>TRACE</DefineConstants> + </PropertyGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" /> + <ItemGroup> + <Reference Include="Core"> + <HintPath>..\..\..\..\Programme\Team MediaPortal\MediaPortal\Core.dll</HintPath> + </Reference> + <Reference Include="Dialogs"> + <HintPath>..\..\..\..\Programme\Team MediaPortal\MediaPortal\plugins\Windows\Dialogs.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils"> + <HintPath>..\..\..\..\..\..\Programme\Team MediaPortal\MediaPortal\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="CallItem.cs" /> + <Compile Include="GCollections.cs" /> + <Compile Include="MyBinaryReader.cs" /> + <Compile Include="ABReader.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Main.cs" /> + <Compile Include="Setup.cs" /> + <Compile Include="Setup.Designer.cs"> + <DependentUpon>Setup.cs</DependentUpon> + </Compile> + <Compile Include="VoiceboxItem.cs" /> + <EmbeddedResource Include="Setup.resx"> + <DependentUpon>Setup.Designer.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> +</Project> \ No newline at end of file Added: trunk/plugins/FritzManager/FritzManager/GCollections.cs =================================================================== --- trunk/plugins/FritzManager/FritzManager/GCollections.cs (rev 0) +++ trunk/plugins/FritzManager/FritzManager/GCollections.cs 2009-12-10 07:11:40 UTC (rev 3216) @@ -0,0 +1,1875 @@ + // Generic typesafe collections in Generic C# + // This program requires .Net version 2.0. + // Peter Sestoft (se...@it...) 2001-12-02, 2003-11-23, 2004-07-26 + + // NOTE: FOR SERIOUS WORK, USE THE C5 GENERIC COLLECTION LIBRARY! + // SEE: http://www.itu.dk/research/c5/ + + // For this code, see documentation in file collections.txt + + // To create a module for use from other files, compile with + // csc /t:module GCollections.cs + + // To do: + // * Test systematically (no time, unfortunately) + // * Make GetHashCode constant time everywhere + // * Make the collections themselves implement IComparable<T> ? + // * Add interval operators to ISortedSet and ISortedMap operations + // * Implement HashSets from the ground up, using linked list for + // buckets, and retaining the hashcode to avoid recomputing it. + // * There's a fair amount of code duplication (generic/non-generic) + // in TreeMap, but I fear the performance consequences of removing it. + + using System; // For exceptions + + namespace GCollections + { + + // INTERFACES =================================================== + + // Enumerators -------------------------------------------------- + + public interface IEnumerator<T> + { + T Current { get; } + bool MoveNext(); + void Reset(); + } + + // Enumerables -------------------------------------------------- + + public interface IEnumerable<T> + { + IEnumerator<T> GetEnumerator(); + } + + // Collections -------------------------------------------------- + + public interface ICollection<T> : IEnumerable<T> + { + int Count { get; } + } + + // Comparing two things ----------------------------------------- + + public interface IComparer<T> + { + int Compare(T v1, T v2); + } + + // Comparing to type T ------------------------------------------ + + public interface IComparable<T> + { + int CompareTo(T that); + } + + // Maps --------------------------------------------------------- + + public interface IMap<K, V> : ICollection<MapEntry<K, V>> + { + bool Add(K key, V val); // Cannot return old value ... + MapEntry<K, V> Remove(K key); + V this[K key] { get; set; } + bool Contains(K key); + // ICollection<K> Keys { get; } + // ICollection<V> Values { get; } + } + + // Sorted maps -------------------------------------------------- + + public interface ISortedMap<K, V> : IMap<K, V> { } + + // Map entries -------------------------------------------------- + + public struct MapEntry<K, V> + { + K key; V val; + + public MapEntry(K key, V val) + { + this.key = key; this.val = val; + } + + public K Key { get { return key; } } + + public V Value { get { return val; } } + } + + // Sets --------------------------------------------------------- + + public interface ISet<T> : ICollection<T> + { + bool Add(T item); // return true if item was added + T Remove(T item); // return removed item + bool Contains(T item); + } + + // Sorted sets -------------------------------------------------- + + public interface ISortedSet<T> : ISet<T> { } + + // Lists, stacks and queues ------------------------------------- + + public interface IList<T> : ICollection<T> + { + bool Add(T item); + bool Add(int i, T item); + T Remove(); + T RemoveAt(int i); + T Remove(T item); + bool Contains(T item); // using Equals + T this[int index] { get; set; } + } + + // IMPLEMENTATIONS ============================================== + + // HashMaps ----------------------------------------------------- + + public class HashMap<K, V> : IMap<K, V> + { + private System.Collections.Hashtable table; + + public HashMap() + { + table = new System.Collections.Hashtable(); + } + + public ICollection<K> Keys + { + get { return new Collection<K>(table.Keys); } + } + + public ICollection<V> Values + { + get { return new Collection<V>(table.Values); } + } + + public int Count + { + get { return table.Count; } + } + + public bool Add(K key, V val) + { + if (table.Contains(key)) + return false; + else + { + table.Add(key, val); + return true; + } + } + + public MapEntry<K, V> Remove(K key) + { + if (table.Contains(key)) + { + V val = (V)table[key]; + table.Remove(key); + return new MapEntry<K, V>(key, val); // Issue: not quite as spec'ed + } + else + throw new ElementNotFoundException(); + } + + public V this[K key] + { + get { return (V)table[key]; } + set { table[key] = value; } + } + + public bool Contains(K key) + { + return table.Contains(key); + } + + // Two classes to help convert the underlying Hashtable's Keys and + // Values object ICollections into generic collections + + class Collection<T> : ICollection<T> + { + private System.Collections.ICollection coll; + + public Collection(System.Collections.ICollection coll) + { + this.coll = coll; + } + + public IEnumerator<T> GetEnumerator() + { + return new Enumerator<T>(coll.GetEnumerator()); + } + + public int Count + { + get { return coll.Count; } + } + } + + // Issue: this function could be optimized to not use the enumerators + + public override int GetHashCode() + { + int sum = 0; + foreach (MapEntry<K, V> entry in this) + sum += entry.Key.GetHashCode() ^ entry.Value.GetHashCode(); + return sum; + } + + class Enumerator<T> : IEnumerator<T> + { + System.Collections.IEnumerator enm; + + public Enumerator(System.Collections.IEnumerator enm) + { + this.enm = enm; + } + + public T Current + { + get { return (T)enm.Current; } + } + + public bool MoveNext() + { + return enm.MoveNext(); + } + + public void Reset() + { + enm.Reset(); + } + } + + public IEnumerator<MapEntry<K, V>> GetEnumerator() + { + return new HashMapEnumerator(this, table.GetEnumerator()); + } + + class HashMapEnumerator : IEnumerator<MapEntry<K, V>> + { + HashMap<K, V> map; + System.Collections.IEnumerator enm; + + public HashMapEnumerator(HashMap<K, V> map, + System.Collections.IEnumerator enm) + { + this.map = map; this.enm = enm; + } + + // Issue: should probably not create a new struct on every invocation + public virtual MapEntry<K, V> Current + { + get + { + System.Collections.DictionaryEntry entry + = (System.Collections.DictionaryEntry)enm.Current; + return new MapEntry<K, V>((K)entry.Key, (V)entry.Value); + } + } + + public bool MoveNext() + { + return enm.MoveNext(); + } + + public void Reset() + { + enm.Reset(); + } + } + } + + // HashSet, sets of unordered items ----------------------------- + + public class HashSet<T> : ISet<T> + { + private System.Collections.Hashtable /* from T to null */ table; + private int hashCode = 0; // to save recomputing it + + public HashSet() + { + table = new System.Collections.Hashtable(); + } + + public HashSet(T v) + : this() + { + Add(v); + } + + public HashSet(HashSet<T> s) + : this() + { + IEnumerator<T> sIter = s.GetEnumerator(); + while (sIter.MoveNext()) + Add(sIter.Current); + } + + public int Count + { + get { return table.Count; } + } + + public bool Add(T v) + { + if (!table.Contains(v)) + { + table.Add(v, null); + hashCode += v.GetHashCode(); + return true; + } + else + return false; + } + + public T Remove(T v) + { + if (table.Contains(v)) + { + table.Remove(v); + hashCode -= v.GetHashCode(); + return v; // Issue: not quite according to spec + } + else + throw new ElementNotFoundException(); + } + + public bool Contains(T v) + { + return table.Contains(v); + } + + public IEnumerator<T> GetEnumerator() + { + return new HashSetEnumerator(table); + } + + class HashSetEnumerator : IEnumerator<T> + { + System.Collections.IEnumerator enm; + + public HashSetEnumerator(System.Collections.Hashtable table) + { + this.enm = table.Keys.GetEnumerator(); + } + + public virtual T Current + { + get { return (T)enm.Current; } + } + + public bool MoveNext() + { + return enm.MoveNext(); + } + + public void Reset() + { + enm.Reset(); + } + } + + public override int GetHashCode() + { + return hashCode; + } + + public override bool Equals(object that) + { + // Issue: could compare hashcodes, if GetHashCode were constant time + if (that is ISet<T> && Count == ((ISet<T>)that).Count) + { + ISet<T> thatSet = (ISet<T>)that; + IEnumerator<T> thisenm = this.GetEnumerator(); + while (thisenm.MoveNext()) + { + if (!thatSet.Contains(thisenm.Current)) + return false; + } + return true; + } + else + return false; + } + } + + // Doubly-linked lists ------------------------------------------ + // Add(T) at end, Remove() from front; behaves like a queue (FIFO) + + public class LinkedList<T> : IList<T> + { + int size; // Number of elements in the list + int stamp; // To detect modification during enumeration + Node first, last; // Invariant: first==null iff last==null + + private class Node + { + public Node prev, next; + public T item; + + public Node(T item) + { + this.item = item; + } + + public Node(T item, Node prev, Node next) + { + this.item = item; this.prev = prev; this.next = next; + } + } + + public LinkedList() + { + first = last = null; + size = stamp = 0; + } + + public int Count + { + get { return size; } + } + + public T this[int index] + { + get { return get(index).item; } + set { get(index).item = value; } + } + + private Node get(int n) + { + if (n < 0 || n >= size) + throw new IndexOutOfRangeException(); + else if (n < size / 2) + { // Closer to front + Node node = first; + for (int i = 0; i < n; i++) + node = node.next; + return node; + } + else + { // Closer to end + Node node = last; + for (int i = size - 1; i > n; i--) + node = node.prev; + return node; + } + } + + public bool Add(T item) + { + return AddLast(item); + } + + public bool AddFirst(T item) + { + if (first == null) // and thus last == null + first = last = new Node(item); + else + { + Node tmp = new Node(item, null, first); + first.prev = tmp; + first = tmp; + } + size++; + stamp++; + return true; + } + + public bool Add(int i, T item) + { + if (i == 0) + return AddFirst(item); + else if (i == size) + return AddLast(item); + else + { + Node node = get(i); + // assert node.prev != null; + Node newnode = new Node(item, node.prev, node); + node.prev.next = newnode; + node.prev = newnode; + size++; + stamp++; + return true; + } + } + + public bool AddLast(T item) + { + if (last == null) // and thus first = null + first = last = new Node(item); + else + { + Node tmp = new Node(item, last, null); + last.next = tmp; + last = tmp; + } + size++; + stamp++; + return true; + } + + public T Remove() + { + return RemoveFirst(); + } + + public T RemoveFirst() + { + if (first == null) // and thus last == null + throw new IndexOutOfRangeException(); + else + { + size--; + stamp++; + T item = first.item; + first = first.next; + if (first == null) + last = null; + else + first.prev = null; + return item; + } + } + + public T RemoveAt(int i) + { + Node node = get(i); + if (node.prev == null) + first = node.next; + else + node.prev.next = node.next; + if (node.next == null) + last = node.prev; + else + node.next.prev = node.prev; + size--; + stamp++; + return node.item; + } + + public T RemoveLast() + { + if (last == null) // and thus first == null + throw new IndexOutOfRangeException(); + else + { + size--; + stamp++; + T item = last.item; + last = last.prev; + if (last == null) + first = null; + else + last.next = null; + return item; + } + } + + public T Remove(T item) + { + Node node = first; + while (node != null) + { + if (item.Equals(node.item)) + { + if (node.prev == null) + first = node.next; + else + node.prev.next = node.next; + if (node.next == null) + last = node.prev; + else + node.next.prev = node.prev; + size--; + stamp++; + return node.item; + } + node = node.next; + } + throw new ElementNotFoundException(); + } + + public bool Contains(T item) + { + Node node = first; + while (node != null) + { + if (item.Equals(node.item)) + return true; + node = node.next; + } + return false; + } + + public override int GetHashCode() + { + int sum = 0; + Node node = first; + while (node != null) + { + sum = 31 * sum + node.item.GetHashCode(); + node = node.next; + } + return sum; + } + + public override bool Equals(object that) + { + if (that is IList<T> && this.size == ((IList<T>)that).Count) + { + Node thisnode = this.first; + IEnumerator<T> thatenm = ((IList<T>)that).GetEnumerator(); + while (thisnode != null) + { + if (!thatenm.MoveNext()) + throw new Exception("Impossible: LinkedList<T>.Equals"); + // assert MoveNext() was true; // because of the above size test + if (!thisnode.item.Equals(thatenm.Current)) + return false; + thisnode = thisnode.next; + } + // assert !MoveNext(); // because of the size test + return true; + } + else + return false; + } + + public IEnumerator<T> GetEnumerator() + { + return new LinkedListEnumerator(this); + } + + class LinkedListEnumerator : IEnumerator<T> + { + LinkedList<T> lst; + Node curr; + int stamp; + bool valid; + T item; + + public LinkedListEnumerator(LinkedList<T> lst) + { + this.lst = lst; this.stamp = lst.stamp; Reset(); + } + + public T Current + { + get + { + if (valid) + return item; + else + throw new InvalidOperationException(); + } + } + + public bool MoveNext() + { + if (stamp != lst.stamp) + throw new InvalidOperationException(); // List modified + else if (curr != null) + { + item = curr.item; + curr = curr.next; + return valid = true; + } + else + return valid = false; + } + + public void Reset() + { + curr = lst.first; + valid = false; + } + } + } + + // Array lists -------------------------------------------------- + // Add(T) at end, Remove() from end; behaves like a stack, LIFO + + public class ArrayList<T> : IList<T> + { + int size; // Number of elements in list + int stamp; // To detect modification during enumeration + T[] elems; + + public ArrayList() + { + size = stamp = 0; + elems = new T[10]; // Initial capacity + } + + private void reallocate(int newsize) + { + T[] newelems = new T[newsize]; + for (int i = 0; i < size; i++) + newelems[i] = elems[i]; + elems = newelems; + } + + public int Count + { + get { return size; } + } + + public T this[int index] + { + get { return elems[index]; } + set { elems[index] = value; } + } + + public bool Add(T item) + { + return AddLast(item); + } + + public bool AddLast(T item) + { // Add at end + return Add(size, item); + } + + public bool Add(int i, T item) + { // Add at position i + if (i < 0 || i > size) + throw new IndexOutOfRangeException(); + else + { + if (size == elems.Length) + reallocate(2 * size); + // assert elems.Length > size; + for (int j = size; j > i; j--) + elems[j] = elems[j - 1]; + elems[i] = item; + size++; + stamp++; + return true; + } + } + + public T Remove() + { // Remove last + return RemoveAt(size - 1); + } + + public T RemoveAt(int i) + { // Remove at index i + if (i < 0 || i >= size) + throw new IndexOutOfRangeException(); + else + { + T item = elems[i]; + for (int j = i + 1; j < size; j++) + elems[j - 1] = elems[j]; + elems[--size] = default(T); // To prevent space leaks + stamp++; + return item; + } + } + + public T Remove(T item) + { // Search + for (int i = 0; i < size; i++) + if (item.Equals(elems[i])) + return RemoveAt(i); + throw new ElementNotFoundException(); + } + + public bool Contains(T item) + { + for (int i = 0; i < size; i++) + if (item.Equals(elems[i])) + return true; + return false; + } + + public override int GetHashCode() + { + int sum = 0; + for (int i = 0; i < size; i++) + sum = 31 * sum + elems[i].GetHashCode(); + return sum; + } + + public override bool Equals(object that) + { + if (that is IList<T> && this.size == ((IList<T>)that).Count) + { + IEnumerator<T> thatenm = ((IList<T>)that).GetEnumerator(); + for (int i = 0; i < size; i++) + { + if (!thatenm.MoveNext()) + throw new Exception("Impossible: LinkedList<T>.Equals"); + // assert MoveNext() returned true; /// because of the size test + if (!elems[i].Equals(thatenm.Current)) + return false; + } + // assert !MoveNext(); /// because of the size test + return true; + } + else + return false; + } + + public IEnumerator<T> GetEnumerator() + { + return new ArrayListEnumerator(this); + } + + class ArrayListEnumerator : IEnumerator<T> + { + ArrayList<T> lst; + bool valid; + int stamp; + T item; + int curr; + + public ArrayListEnumerator(ArrayList<T> lst) + { + this.lst = lst; stamp = lst.stamp; Reset(); + } + + public T Current + { + get + { + if (valid) + return item; + else + throw new InvalidOperationException(); + } + } + + public bool MoveNext() + { + if (stamp != lst.stamp) + throw new InvalidOperationException(); + else if (curr < lst.size) + { + item = lst[curr]; + curr++; + return valid = true; + } + else + return valid = false; + } + + public void Reset() + { + curr = 0; + valid = false; + } + } + } + + // ORDERED BINARY TREES (RED-BLACK TREES) ----------------------- + + // The root node is black + // Leaf nodes (null pointers) are black + // A red node must have a black parent + // All paths from a node to a leaf must have the same number of black nodes + + // Much based on Ken Larsen's implementation for Moscow ML, whose + // deletion algorithm is inspired by Stefan Kahrs + + // Nodes in binary trees + + internal class Node<K, V> + { + public Node<K, V> left, rght; + public K key; + public V val; + public bool red; // Color is red or black + + public Node(K key, V val) + { + this.key = key; this.val = val; red = true; + } + + public Node(K key, V val, Node<K, V> left, Node<K, V> rght) + { + this.key = key; this.val = val; red = false; + } + + // Colored rebalancing operations + + public static void lbal(ref Node<K, V> t) + { + // assert t != null; + t.red = false; + Node<K, V> d = t.left; + if (d != null && d.red) + { + if (d.left != null && d.left.red) + { + d.left.red = false; + t.left = d.rght; + d.rght = t; + t = d; + } + else if (d.rght != null && d.rght.red) + { + Node<K, V> bc = d.rght; + d.red = false; + t.left = bc.rght; + bc.rght = t; + d.rght = bc.left; + bc.left = d; + t = bc; + } + } + } + + public static void rbal(ref Node<K, V> t) + { + // assert t != null; + t.red = false; + Node<K, V> e = t.rght; + if (e != null && e.red) + { + if (e.rght != null && e.rght.red) + { + e.rght.red = false; + t.rght = e.left; + e.left = t; + t = e; + } + else if (e.left != null && e.left.red) + { + Node<K, V> bc = e.left; + e.red = false; + t.rght = bc.left; + bc.left = t; + e.left = bc.rght; + bc.rght = e; + t = bc; + } + } + } + + public static void balleft(ref Node<K, V> t) + { + // assert t != null; + if (t.left != null && t.left.red) + { // (red, ---) + t.red = true; + t.left.red = false; + } + else if (t.rght != null) + if (!t.rght.red) + { // (black, black) + t.rght.red = true; + rbal(ref t); + } + else if (t.rght.left != null && !t.rght.left.red) + { + t.red = false; + Node<K, V> trl = t.rght.left; + t.rght.left = trl.rght; + if (t.rght.rght != null) + t.rght.rght.red = true; + rbal(ref t.rght); + trl.rght = t.rght; + t.rght = trl.left; + trl.left = t; + t = trl; + t.red = true; + } + else throw new Exception("balleft"); + } + + public static void balrght(ref Node<K, V> t) + { + // assert t != null; + if (t.rght != null && t.rght.red) + { // (---, red) + t.red = true; + t.rght.red = false; + } + else if (t.left != null) + if (!t.left.red) + { // (black, black) + t.left.red = true; + lbal(ref t); + } + else if (t.left.rght != null && !t.left.rght.red) + { + t.red = false; + Node<K, V> tlr = t.left.rght; + t.left.rght = tlr.left; + if (t.left.left != null) + t.left.left.red = true; + lbal(ref t.left); + tlr.left = t.left; + t.left = tlr.rght; + tlr.rght = t; + t = tlr; + t.red = true; + } + else throw new Exception("balrght"); + } + + public static Node<K, V> append(Node<K, V> left, Node<K, V> rght) + { + if (left == null) + return rght; + else if (rght == null) + return left; + else if (left.red != rght.red) + { // different colours + if (left.red) + { // (red, black) + left.rght = append(left.rght, rght); + return left; + } + else + { // (black, red) + rght.left = append(left, rght.left); + return rght; + } + } + else + { // same colours + Node<K, V> bc = append(left.rght, rght.left); + if (bc != null && bc.red) + { + left.rght = bc.left; + bc.left = left; + rght.left = bc.rght; + bc.rght = rght; + return bc; + } + else + { + rght.left = bc; + left.rght = rght; + if (!left.red) // (black, black) + balleft(ref left); + return left; + } + } + } + } + + // Operations on tree maps + + internal interface ITreeOps<K, V> + { + bool contains(Node<K, V> t, K key); + Node<K, V> get(Node<K, V> t, K key); + bool add(ref Node<K, V> t, K key, V val); + Node<K, V> del(ref Node<K, V> t, K key); + } + + // Object-based IComparable tree operations --------------------- + + // Object-based dynamically typed comparisons using CompareTo(object) + + internal class OTreeOps<K, V> : ITreeOps<K, V> + where K : System.IComparable + { + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // Generic IComparable<K> tree operations --------------------- + + // Generic statically typed implicit comparer CompareTo(K). + + // The code is textually identical to the above, but will avoid + // all the boxings implied by the above code when K is + // instantiated to a value type. + + internal class GTreeOps<K, V> : ITreeOps<K, V> + where K : IComparable<K> + { + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = key.CompareTo(t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // Separate statically typed comparer: Compare(K,K) + + internal class FGTreeOps<K, V> : ITreeOps<K, V> + { + IComparer<K> comparer; + + public FGTreeOps(IComparer<K> comparer) + { + this.comparer = comparer; + } + + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // Separate dynamically typed comparer: Compare(object, object) + + internal class FOTreeOps<K, V> : ITreeOps<K, V> + { + System.Collections.IComparer comparer; + + public FOTreeOps(System.Collections.IComparer comparer) + { + this.comparer = comparer; + } + + public bool contains(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return true; + } + return false; + } + + public Node<K, V> get(Node<K, V> t, K key) + { + while (t != null) + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + t = t.left; + else if (cmp > 0) + t = t.rght; + else + return t; + } + throw new ElementNotFoundException(); + } + + public bool add(ref Node<K, V> t, K key, V val) + { + if (t == null) + { + t = new Node<K, V>(key, val); + return true; + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool added = add(ref t.left, key, val); + if (!t.red) + Node<K, V>.lbal(ref t); + return added; + } + else if (cmp > 0) + { + bool added = add(ref t.rght, key, val); + if (!t.red) + Node<K, V>.rbal(ref t); + return added; + } + else + return false; + } + } + + public Node<K, V> del(ref Node<K, V> t, K key) + { + if (t == null) + { + throw new ElementNotFoundException("TreeMap.Remove: " + key); + } + else + { + int cmp = comparer.Compare(key, t.key); + if (cmp < 0) + { + bool tleftblack = !t.left.red; + Node<K, V> removed = del(ref t.left, key); + if (tleftblack) + Node<K, V>.balleft(ref t); + else + t.red = true; + return removed; + } + else if (cmp > 0) + { + bool trghtblack = !t.rght.red; + Node<K, V> removed = del(ref t.rght, key); + if (trghtblack) + Node<K, V>.balrght(ref t); + else + t.red = true; + return removed; + } + else + { + Node<K, V> removed = t; + t = Node<K, V>.append(t.left, t.rght); + return removed; + } + } + } + } + + // The TreeMap class itself, and two subclasses + + public class TreeMap<K, V> : ISortedMap<K, V> + { + private int size; // Number of entries in the tree map + private int stamp; // To detect modification during enumeration + private Node<K, V> root; + private ITreeOps<K, V> treeops; + + internal TreeMap(ITreeOps<K, V> treeops) + { + size = stamp = 0; + ... [truncated message content] |
From: <che...@us...> - 2009-12-12 16:32:16
|
Revision: 3229 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3229&view=rev Author: chef_koch Date: 2009-12-12 16:32:05 +0000 (Sat, 12 Dec 2009) Log Message: ----------- updated svn ignore Properties Property Changed: ---------------- trunk/plugins/IR Server Suite/ trunk/plugins/IR Server Suite/Build/ trunk/plugins/IR Server Suite/IR Server Suite/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Abstractor/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Abstractor/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Dbox Tuner/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Dbox Tuner/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Debug Client/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Debug Client/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/HCW PVR Tuner/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/HCW PVR Tuner/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast (No Window)/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast (No Window)/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR File Tool/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR File Tool/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Keyboard Input Relay/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Keyboard Input Relay/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/LogTimeCodeExtractor/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/LogTimeCodeExtractor/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/MacroScope/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/MacroScope/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/Forms/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/References/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/SageSetup/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/SageSetup/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/Default Settings/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/Forms/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Tray Launcher/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Tray Launcher/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote/Skins/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote Skin Editor/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote Skin Editor/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Web Remote/ trunk/plugins/IR Server Suite/IR Server Suite/Applications/Web Remote/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/Command/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/Command/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Control Statements/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Exceptions/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Forms/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Graphics/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Maths Operations/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Special Commands/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Stack Commands/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/String Operations/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Variable Commands/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/GeneralCommands/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/GeneralCommands/Forms/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/GeneralCommands/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/TestApp/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/TestApp/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/VariableList/ trunk/plugins/IR Server Suite/IR Server Suite/Commands/VariableList/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Common/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssComms/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssComms/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssScheduler/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssScheduler/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Exceptions/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Forms/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Graphics/ trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Common/ShellLink/ trunk/plugins/IR Server Suite/IR Server Suite/Documentation/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Direct Input/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/FireFly/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/FusionREMOTE/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Hauppauge/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/IR507/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/IgorPlug/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Medion/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Microsoft MCE/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Pinnacle Serial/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Technotrend/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/USB-UIRT/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Wii Remote/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Windows Messages/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/X10/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/XBCDRC/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/iMon USB/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Resources/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Configuration/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Configuration/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Configuration/Resources/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Configuration/SourceGrid/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Tray/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Tray/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server Tray/Resources/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IRServer.Shared/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IRServer.Shared/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server/SourceGrid/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Ads Tech PTV-335 Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Ads Tech PTV-335 Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/CoolCommand Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/CoolCommand Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Custom HID Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Custom HID Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Direct Input Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Direct Input Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Direct Input Receiver/References/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/FireDTV Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/FireDTV Receiver/FireDTV interfaces/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/FireDTV Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/FusionRemote Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/FusionRemote Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Girder Plugin/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Girder Plugin/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/HCW Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/HCW Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IR Server Plugin Interface/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IR Server Plugin Interface/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IR501 Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IR501 Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IR507 Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IR507 Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IRMan Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IRMan Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IRTrans Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IRTrans Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IgorPlug Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/IgorPlug Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Imon USB Receivers/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Imon USB Receivers/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Ira Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Ira Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Keyboard Input/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Keyboard Input/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/LiveDrive Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/LiveDrive Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/MacMini Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/MacMini Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Microsoft MCE Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Microsoft MCE Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Pinnacle Serial Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Pinnacle Serial Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/RC102 Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/RC102 Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/RedEye Blaster/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/RedEye Blaster/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Serial IR Blaster/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Serial IR Blaster/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Speech Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Speech Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Technotrend Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Technotrend Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Tira Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Tira Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/USB-UIRT Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/USB-UIRT Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Wii Remote Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Wii Remote Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WiimoteLib/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WiimoteLib/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WiimoteLib/docs/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WiimoteLib/docs/APIHelp/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WiimoteLib/docs/APIHelp/AdditionalContent/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WiimoteLib/docs/APIHelp/Help/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WinLirc Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/WinLirc Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Windows Message Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Windows Message Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/X10 Transceiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/X10 Transceiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/XBCDRC Receiver/ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/XBCDRC Receiver/Properties/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/ADB 3100/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/ADB ABQ-1H4G/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/ADB SCV-3800C/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Amstrad DRX-300/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Coolsat/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/D-Box/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/DSS DishPlayer 7200/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Dilog DT-355/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/DirecTV D10/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/DirecTV HR10-250/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/DirecTV R15/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Dish 301/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Dish 811/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/DreamBox 7000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 1000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 2500/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 3000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 370/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 3800/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 4000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 4700/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 4720/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 4722/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 6000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Echostar 7700/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Force 536/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Foxtel Digital DC420NF/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Foxtel STU100/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/General Instruments DCT2000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/General Instruments DCT2224/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Israel HOT/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/JVC TU-4700/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Kreatel 1710/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Motorola DCT-2000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Motorola DCT-2244/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Motorola DCT-6200/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/MultiChoice DSD660/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Nokia 221T/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Nokia 9800s/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/OnDigital/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/OnDigital DTR730/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Pace 4100/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Panasat IRD624DSTV/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Pioneer BA-V2000C/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Pioneer BCT-1540/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Pioneer BD-V1100/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Pioneer DBR-TF100GB/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/SCV Digital/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sagem D-Box II/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sagem ICD-503/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Samsung SMT 2100C/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta 8602/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta Explorer 2000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta Explorer 2100/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta Explorer 3100/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta Explorer 3250/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta Explorer 4000DVB/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Scientific Atlanta Explorer 8300/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky DigiBox 2500N/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky DigiBox Amstrad/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky DigiBox TU-DSB20/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky DigiBox TU-DSB30/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky DigiBox TU-DSB31/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky DigiBox TU-DSB40/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky Zenith/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sky+ BSKYB 2200/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/SkyNZ Pace DSR6000/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sony DHG-M55CV/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sony SAS-A3/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sony SAS-A4/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sony SAT-A2/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sony SAT-A3/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Sony SAT-A50/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Strong 8700/ trunk/plugins/IR Server Suite/IR Server Suite/Set Top Boxes/Xsat CDTV-410/ trunk/plugins/IR Server Suite/MediaPortal Plugins/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/MPUtils/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/MPUtils/Forms/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/MPUtils/Properties/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/MediaPortalCommands/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/MediaPortalCommands/Forms/ trunk/plugins/IR Server Suite/MediaPortal Plugins/Common/MediaPortalCommands/Properties/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/AppData/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/Forms/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/Graphics/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/Properties/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/Skin/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Blast Zone Plugin/Skin/Media/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/AppData/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/AppData/Remote Presets/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/Forms/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/InputMapper/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/InputMapping/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/MP Control Plugin/Properties/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/TV2 Blaster Plugin/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/TV2 Blaster Plugin/Forms/ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal Plugins/TV2 Blaster Plugin/Properties/ trunk/plugins/IR Server Suite/MediaPortal Plugins/TVServer plugins/ trunk/plugins/IR Server Suite/MediaPortal Plugins/TVServer plugins/TV3 Blaster Plugin/ trunk/plugins/IR Server Suite/MediaPortal Plugins/TVServer plugins/TV3 Blaster Plugin/Forms/ trunk/plugins/IR Server Suite/MediaPortal Plugins/TVServer plugins/TV3 Blaster Plugin/Properties/ trunk/plugins/IR Server Suite/Virtual Remote/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (PocketPC2003)/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (PocketPC2003)/Graphics/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (PocketPC2003)/Properties/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (PocketPC2003) Installer/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (PocketPC2003) Installer/Debug/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (PocketPC2003) Installer/Release/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (Smartphone2003)/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (Smartphone2003)/Graphics/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (Smartphone2003)/Properties/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (Smartphone2003) Installer/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (Smartphone2003) Installer/Debug/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (Smartphone2003) Installer/Release/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (WinCE5)/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (WinCE5)/Properties/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (WinCE5) Installer/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (WinCE5) Installer/Debug/ trunk/plugins/IR Server Suite/Virtual Remote/Applications/Virtual Remote (WinCE5) Installer/Release/ trunk/plugins/IR Server Suite/setup/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Contrib/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Contrib/GetVersion/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Docs/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Docs/GetVersion/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Examples/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Examples/GetVersion/ trunk/plugins/IR Server Suite/setup/GetVersion-plugin/Plugins/ trunk/plugins/IR Server Suite/setup/Icons/ trunk/plugins/IR Server Suite/setup/Images/ trunk/plugins/IR Server Suite/setup/Resources/ trunk/plugins/IR Server Suite/setup/XML-plugin/ trunk/plugins/IR Server Suite/setup/XML-plugin/Example/ trunk/plugins/IR Server Suite/setup/XML-plugin/Include/ trunk/plugins/IR Server Suite/setup/XML-plugin/Plugin/ trunk/plugins/IR Server Suite/setup/XML-plugin/Source/ trunk/plugins/IR Server Suite/setup/XML-plugin/Source/Install/ trunk/plugins/IR Server Suite/setup/XML-plugin/Source/Install/Res/ trunk/plugins/IR Server Suite/setup/include/ trunk/plugins/IR Server Suite/setup/languages/ trunk/plugins/IR Server Suite/setup/pages/ trunk/plugins/MyAlarm/ trunk/plugins/MyAlarm/MyAlarm/ trunk/plugins/MyAlarm/MyAlarm/Properties/ trunk/plugins/MyAlarm/MyAlarm/Properties/DataSources/ trunk/plugins/MyAlarm/MyAlarm/Skin/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3/Media/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/ trunk/plugins/MyAlarm/MyAlarm/Skin/Blue3wide/Media/ trunk/plugins/MySleepTimer/ trunk/plugins/MySleepTimer/MpiRelease/ trunk/plugins/MySleepTimer/MySleepTimer/ trunk/plugins/MySleepTimer/MySleepTimer/Properties/ trunk/plugins/MySleepTimer/MySleepTimer/img/ trunk/plugins/TVServerMonitor/ trunk/plugins/TVServerMonitor/Graphics/ trunk/plugins/TVServerMonitor/Icons/ trunk/plugins/TVServerMonitor/Properties/ trunk/plugins/TVServerMonitor/SourceGrid/ trunk/plugins/TVServerMonitor/Utils/ Property changes on: trunk/plugins/IR Server Suite ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/Build ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Abstractor ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Abstractor/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Dbox Tuner ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Dbox Tuner/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Debug Client ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Debug Client/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/HCW PVR Tuner ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/HCW PVR Tuner/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast (No Window) ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR Blast (No Window)/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR File Tool ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/IR File Tool/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Keyboard Input Relay ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Keyboard Input Relay/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/LogTimeCodeExtractor ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/LogTimeCodeExtractor/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/MacroScope ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/MacroScope/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/Forms ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Media Center Blaster/References ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/SageSetup ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/SageSetup/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/Default Settings ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/Forms ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Translator/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Tray Launcher ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Tray Launcher/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote/Skins ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote Skin Editor ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Virtual Remote Skin Editor/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Web Remote ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Applications/Web Remote/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/Command ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/Command/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Control Statements ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Exceptions ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Forms ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Graphics ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Maths Operations ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Special Commands ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Stack Commands ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/String Operations ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/CommandProcessor/Variable Commands ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/GeneralCommands ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/GeneralCommands/Forms ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/GeneralCommands/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/TestApp ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/TestApp/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/VariableList ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Commands/VariableList/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssComms ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssComms/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssScheduler ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssScheduler/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Exceptions ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Forms ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Graphics ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/IrssUtils/Properties ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Common/ShellLink ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/Documentation ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/IR Server ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *.cache *.eto *.exe *.log *.mpe1 *.patch *.suo *.user Property changes on: trunk/plugins/IR Server Suite/IR Server Suite/IR Server/IR Server/Abstract Remote Maps/Direct Input ___________________________________________________________________ Modified: svn:ignore - *.bak *.cache *.exe *.log *.suo *.user _ReSharper.* thumbs.db bin obj + [Bb]in [Oo]bj [Dd]ebug [Rr]elease _ReSharper.* thumbs.db *.aps *.bak *... [truncated message content] |
From: <gib...@us...> - 2009-12-25 13:45:40
|
Revision: 3301 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3301&view=rev Author: gibman_dk Date: 2009-12-25 13:44:55 +0000 (Fri, 25 Dec 2009) Log Message: ----------- subtitlesretriever plugin helper initial commit. Added Paths: ----------- trunk/plugins/SubtitlesRetriever/ trunk/plugins/SubtitlesRetriever/External/ trunk/plugins/SubtitlesRetriever/External/7z.dll trunk/plugins/SubtitlesRetriever/External/SubtitleDownloader.dll trunk/plugins/SubtitlesRetriever/LocalizeStrings.cs trunk/plugins/SubtitlesRetriever/Properties/ trunk/plugins/SubtitlesRetriever/Properties/AssemblyInfo.cs trunk/plugins/SubtitlesRetriever/SubtitlesComparer.cs trunk/plugins/SubtitlesRetriever/SubtitlesDownloader.4.5.resharper.user trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.4.5.resharper.user trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.cs trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj.user trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.sln trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.suo trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/CachesImage.bin trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/ProjectModel/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/ProjectModel/ProjectModel.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/.version trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/0/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/1/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/1/5daef8ae.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WebsiteFileReferences/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WebsiteFileReferences/.version trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/.version trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/0/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/4/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/4/3461a10a.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/Xaml/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/Xaml/CacheProvider.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/CachesImage.bin trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/ProjectModel/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/ProjectModel/ProjectModel.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/TodoCache/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/TodoCache/.version trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/TodoCache/0/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/TodoCache/0/6ac899c5.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/WebsiteFileReferences/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/WebsiteFileReferences/.version trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/WordIndex.New/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/WordIndex.New/.version trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/WordIndex.New/7/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/WordIndex.New/7/1bec845e.dat trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/Xaml/ trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesRetriever/Xaml/CacheProvider.dat trunk/plugins/SubtitlesRetriever/bin/ trunk/plugins/SubtitlesRetriever/bin/Debug/ trunk/plugins/SubtitlesRetriever/bin/Debug/AxInterop.WMPLib.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Bass.Net.dll trunk/plugins/SubtitlesRetriever/bin/Debug/BassRegistration.dll trunk/plugins/SubtitlesRetriever/bin/Debug/CSScriptLibrary.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Core.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Databases.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Dialogs.dll trunk/plugins/SubtitlesRetriever/bin/Debug/DirectShowLib.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Interop.SHDocVw.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Interop.WMPLib.dll trunk/plugins/SubtitlesRetriever/bin/Debug/Ionic.Zip.dll trunk/plugins/SubtitlesRetriever/bin/Debug/MediaPortal.Support.dll trunk/plugins/SubtitlesRetriever/bin/Debug/SubtitleDownloader.dll trunk/plugins/SubtitlesRetriever/bin/Debug/SubtitlesDownloader.dll trunk/plugins/SubtitlesRetriever/bin/Debug/SubtitlesDownloader.pdb trunk/plugins/SubtitlesRetriever/bin/Debug/SubtitlesRetriever.dll trunk/plugins/SubtitlesRetriever/bin/Debug/SubtitlesRetriever.pdb trunk/plugins/SubtitlesRetriever/bin/Debug/Utils.dll trunk/plugins/SubtitlesRetriever/bin/Debug/edtftpnet-1.2.2.dll trunk/plugins/SubtitlesRetriever/bin/Debug/language/ trunk/plugins/SubtitlesRetriever/bin/Debug/language/SubtitlesRetriever/ trunk/plugins/SubtitlesRetriever/bin/Debug/language/SubtitlesRetriever/strings_da.xml trunk/plugins/SubtitlesRetriever/bin/Debug/language/SubtitlesRetriever/strings_en.xml trunk/plugins/SubtitlesRetriever/bin/Debug/taglib-sharp.dll trunk/plugins/SubtitlesRetriever/bin/Release/ trunk/plugins/SubtitlesRetriever/bin/Release/AxInterop.WMPLib.dll trunk/plugins/SubtitlesRetriever/bin/Release/Bass.Net.dll trunk/plugins/SubtitlesRetriever/bin/Release/BassRegistration.dll trunk/plugins/SubtitlesRetriever/bin/Release/CSScriptLibrary.dll trunk/plugins/SubtitlesRetriever/bin/Release/Core.dll trunk/plugins/SubtitlesRetriever/bin/Release/Databases.dll trunk/plugins/SubtitlesRetriever/bin/Release/Dialogs.dll trunk/plugins/SubtitlesRetriever/bin/Release/DirectShowLib.dll trunk/plugins/SubtitlesRetriever/bin/Release/Interop.SHDocVw.dll trunk/plugins/SubtitlesRetriever/bin/Release/Interop.WMPLib.dll trunk/plugins/SubtitlesRetriever/bin/Release/Ionic.Zip.dll trunk/plugins/SubtitlesRetriever/bin/Release/MediaPortal.Support.dll trunk/plugins/SubtitlesRetriever/bin/Release/SubtitleDownloader.dll trunk/plugins/SubtitlesRetriever/bin/Release/SubtitlesRetriever.dll trunk/plugins/SubtitlesRetriever/bin/Release/SubtitlesRetriever.pdb trunk/plugins/SubtitlesRetriever/bin/Release/Utils.dll trunk/plugins/SubtitlesRetriever/bin/Release/edtftpnet-1.2.2.dll trunk/plugins/SubtitlesRetriever/bin/Release/language/ trunk/plugins/SubtitlesRetriever/bin/Release/language/SubtitlesRetriever/ trunk/plugins/SubtitlesRetriever/bin/Release/language/SubtitlesRetriever/strings_da.xml trunk/plugins/SubtitlesRetriever/bin/Release/language/SubtitlesRetriever/strings_en.xml trunk/plugins/SubtitlesRetriever/bin/Release/taglib-sharp.dll trunk/plugins/SubtitlesRetriever/language/ trunk/plugins/SubtitlesRetriever/language/SubtitlesRetriever/ trunk/plugins/SubtitlesRetriever/language/SubtitlesRetriever/strings_da.xml trunk/plugins/SubtitlesRetriever/language/SubtitlesRetriever/strings_en.xml trunk/plugins/SubtitlesRetriever/obj/ trunk/plugins/SubtitlesRetriever/obj/Debug/ trunk/plugins/SubtitlesRetriever/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/SubtitlesRetriever/obj/Debug/SubtitlesDownloader.csproj.FileListAbsolute.txt trunk/plugins/SubtitlesRetriever/obj/Debug/SubtitlesDownloader.dll trunk/plugins/SubtitlesRetriever/obj/Debug/SubtitlesDownloader.pdb trunk/plugins/SubtitlesRetriever/obj/Debug/SubtitlesRetriever.csproj.FileListAbsolute.txt trunk/plugins/SubtitlesRetriever/obj/Debug/SubtitlesRetriever.dll trunk/plugins/SubtitlesRetriever/obj/Debug/SubtitlesRetriever.pdb trunk/plugins/SubtitlesRetriever/obj/Debug/TempPE/ trunk/plugins/SubtitlesRetriever/obj/Release/ trunk/plugins/SubtitlesRetriever/obj/Release/ResolveAssemblyReference.cache trunk/plugins/SubtitlesRetriever/obj/Release/SubtitlesRetriever.csproj.FileListAbsolute.txt trunk/plugins/SubtitlesRetriever/obj/Release/SubtitlesRetriever.dll trunk/plugins/SubtitlesRetriever/obj/Release/SubtitlesRetriever.pdb trunk/plugins/SubtitlesRetriever/obj/Release/TempPE/ Added: trunk/plugins/SubtitlesRetriever/External/7z.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/External/7z.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/External/SubtitleDownloader.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/External/SubtitleDownloader.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/LocalizeStrings.cs =================================================================== --- trunk/plugins/SubtitlesRetriever/LocalizeStrings.cs (rev 0) +++ trunk/plugins/SubtitlesRetriever/LocalizeStrings.cs 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,260 @@ +#region Copyright (C) 2005-2007 Team MediaPortal + +/* + * Copyright (C) 2005-2007 Team MediaPortal + * http://www.team-mediaportal.com + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.IO; +using System.Globalization; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using System.Xml; +using MediaPortal.Util; +using MediaPortal.GUI.Library; +using MediaPortal.Configuration; +using MediaPortal.Localisation; + +namespace MediaPortal.Plugins.SubtitlesRetriever +{ + /// <summary> + /// This class will hold all text used in the application + /// The text is loaded for the current language from + /// the file language/[language]/strings.xml + /// </summary> + public class GUILocalizeStrings + { + #region Variables + static LocalisationProvider _stringProvider; + static Dictionary<string, string> _cultures; + static string[] _languages; + #endregion + + #region Constructors/Destructors + // singleton. Dont allow any instance of this class + private GUILocalizeStrings() + { + } + + static public void Dispose() + { + if (_stringProvider != null) + _stringProvider.Dispose(); + } + #endregion + + #region Public Methods + /// <summary> + /// Public method to load the text from a strings/xml file into memory + /// </summary> + /// <param name="strFileName">Contains the filename+path for the string.xml file</param> + /// <returns> + /// true when text is loaded + /// false when it was unable to load the text + /// </returns> + //[Obsolete("This method has changed", true)] + static public bool Load(string language) + { + bool isPrefixEnabled = true; + + using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + isPrefixEnabled = reader.GetValueAsBool("general", "myprefix", true); + + string directory = Config.GetSubFolder(Config.Dir.Language, "SubtitlesRetriever"); + string cultureName = null; + if (language != null) + cultureName = GetCultureName(language); + + Log.Info(" Loading localised Strings - Path: {0} Culture: {1} Language: {2} Prefix: {3}", directory, cultureName, language, isPrefixEnabled); + + _stringProvider = new LocalisationProvider(directory, cultureName, isPrefixEnabled); + + GUIGraphicsContext.CharsInCharacterSet = _stringProvider.Characters; + + return true; + } + + static public string CurrentLanguage() + { + if (_stringProvider == null) + Load(null); + + return _stringProvider.CurrentLanguage.EnglishName; + } + + static public void ChangeLanguage(string language) + { + if (_stringProvider == null) + Load(language); + else + _stringProvider.ChangeLanguage(GetCultureName(language)); + } + + /// <summary> + /// Get the translation for a given id and format the sting with + /// the given parameters + /// </summary> + /// <param name="dwCode">id of text</param> + /// <param name="parameters">parameters used in the formating</param> + /// <returns> + /// string containing the translated text + /// </returns> + static public string Get(int dwCode, object[] parameters) + { + if (_stringProvider == null) + Load(null); + + string translation = _stringProvider.GetString("unmapped", dwCode); + // if parameters or the translation is null, return the translation. + if ((translation == null) || (parameters == null)) + { + return translation; + } + // return the formatted string. If formatting fails, log the error + // and return the unformatted string. + try + { + return String.Format(translation, parameters); + } + catch (System.FormatException e) + { + Log.Error("Error formatting translation with id {0}", dwCode); + Log.Error("Unformatted translation: {0}", translation); + Log.Error(e); + return translation; + } + } + + /// <summary> + /// Get the translation for a given id + /// </summary> + /// <param name="dwCode">id of text</param> + /// <returns> + /// string containing the translated text + /// </returns> + static public string Get(int dwCode) + { + if (_stringProvider == null) + Load(null); + + string translation = _stringProvider.GetString("unmapped", dwCode); + + if (translation == null) + { + Log.Error("No translation found for id {0}", dwCode); + return String.Empty; + } + + return translation; + } + + static public void LocalizeLabel(ref string strLabel) + { + if (_stringProvider == null) + Load(null); + + if (strLabel == null) strLabel = String.Empty; + if (strLabel == "-") strLabel = ""; + if (strLabel == "") return; + // This can't be a valid string code if the first character isn't a number. + // This check will save us from catching unnecessary exceptions. + if (!char.IsNumber(strLabel, 0)) + return; + + int dwLabelID; + + try + { + dwLabelID = System.Int32.Parse(strLabel); + } + catch (FormatException e) + { + Log.Error(e); + strLabel = String.Empty; + return; + } + + strLabel = _stringProvider.GetString("unmapped", dwLabelID); + if (strLabel == null) + { + Log.Error("No translation found for id {0}", dwLabelID); + strLabel = String.Empty; + } + } + + public static string LocalSupported() + { + if (_stringProvider == null) + Load(null); + + CultureInfo culture = _stringProvider.GetBestLanguage(); + + return culture.EnglishName; + } + + public static string[] SupportedLanguages() + { + if (_languages == null) + { + if (_stringProvider == null) + Load(null); + + CultureInfo[] cultures = _stringProvider.AvailableLanguages(); + + SortedList sortedLanguages = new SortedList(); + foreach (CultureInfo culture in cultures) + sortedLanguages.Add(culture.EnglishName, culture.EnglishName); + + _languages = new string[sortedLanguages.Count]; + + for (int i = 0; i < sortedLanguages.Count; i++) + { + _languages[i] = (string)sortedLanguages.GetByIndex(i); + } + } + + return _languages; + } + + static public string GetCultureName(string language) + { + if (_cultures == null) + { + _cultures = new Dictionary<string, string>(); + + CultureInfo[] cultureList = CultureInfo.GetCultures(CultureTypes.AllCultures); + + for (int i = 0; i < cultureList.Length; i++) + { + _cultures.Add(cultureList[i].EnglishName, cultureList[i].Name); + } + } + + if (_cultures.ContainsKey(language)) + return _cultures[language]; + + return null; + } + #endregion + } +} \ No newline at end of file Added: trunk/plugins/SubtitlesRetriever/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/SubtitlesRetriever/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/SubtitlesRetriever/Properties/AssemblyInfo.cs 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SubtitlesDownloader")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("SubtitlesDownloader")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("4fc474da-4e1a-4960-bb2b-8e568227e684")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Added: trunk/plugins/SubtitlesRetriever/SubtitlesComparer.cs =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesComparer.cs (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesComparer.cs 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,93 @@ +//extern alias subtitles; +//using SubtitlesDL = subtitles::SubtitleDownloader; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MediaPortal.Plugins.SubtitlesRetriever +{ + public class SubtitleComparer : IComparer<SubtitleItem> + { + + private readonly string[] _langs; + + #region IComparer<SubtitleItem> Members + public SubtitleComparer (string[] langs) + { + _langs = langs; + } + + public int Compare(SubtitleItem subTitleItem1, SubtitleItem subTitleItem2) + { + int returnValue = 1; + int retVal = 0; + + SubtitleDownloader.Core.Subtitle sub1 = subTitleItem1.Subtitle; + SubtitleDownloader.Core.Subtitle sub2 = subTitleItem2.Subtitle; + + string sub1HasLang = ""; + string sub2HasLang = ""; + int sub1FoundSubtitlePriority = -1; // the higher nr, the lower prio. + int sub2FoundSubtitlePriority = -1; + + int i = 0; + if (sub1 != null && sub2 != null) + { + foreach (string lang in _langs) + { + if (string.IsNullOrEmpty(lang)) + { + continue; + } + + if (string.IsNullOrEmpty(sub1HasLang)) + { + if (subTitleItem1.Subtitle.LanguageCode.Contains(lang)) + { + sub1HasLang = subTitleItem1.Subtitle.LanguageCode; + sub1FoundSubtitlePriority = i; + } + } + + if (string.IsNullOrEmpty(sub2HasLang)) + { + if (subTitleItem2.Subtitle.LanguageCode.Contains(lang)) + { + sub2HasLang = subTitleItem2.Subtitle.LanguageCode; + sub2FoundSubtitlePriority = i; + } + } + i++; + } + + if (sub1FoundSubtitlePriority > -1 && sub2FoundSubtitlePriority > -1) //prio. subs found + { + if (sub1FoundSubtitlePriority > sub2FoundSubtitlePriority) + { + return 1; + } + else if (sub1FoundSubtitlePriority < sub2FoundSubtitlePriority) + { + return -1; + } + else + { + return 0; + } + + } + else + { + returnValue = sub1.LanguageCode.CompareTo(sub2.LanguageCode); + } + } + + return returnValue; + } + + #endregion + } + +} Added: trunk/plugins/SubtitlesRetriever/SubtitlesDownloader.4.5.resharper.user =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesDownloader.4.5.resharper.user (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesDownloader.4.5.resharper.user 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,58 @@ +<Configuration> + <SettingsComponent> + <string /> + <integer /> + <boolean> + <setting name="SolutionAnalysisEnabled">False</setting> + </boolean> + </SettingsComponent> + <NAntValidationSettings> + <NAntPath value="" /> + </NAntValidationSettings> + <RecentFiles> + <RecentFiles> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesComparer.cs" caret="224" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:LocalizeStrings.cs" caret="1509" fromTop="44" /> + </RecentFiles> + <RecentEdits> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:LocalizeStrings.cs" caret="2782" fromTop="17" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesComparer.cs" caret="223" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:LocalizeStrings.cs" caret="1271" fromTop="37" /> + </RecentEdits> + </RecentFiles> + <UnitTestRunner> + <Providers /> + </UnitTestRunner> + <CompletionStatisticsManager> + <ItemStatistics item="Default"> + <Item value="using" priority="0" /> + <Item value="SubtitleDownloader" priority="1" /> + <Item value="bool" priority="2" /> + <Item value="string" priority="2" /> + <Item value="if" priority="0" /> + <Item value="foreach" priority="0" /> + <Item value="StringWriter" priority="2" /> + <Item value="null" priority="0" /> + <Item value="Length" priority="0" /> + <Item value="in" priority="0" /> + <Item value="providers" priority="0" /> + <Item value="switch" priority="0" /> + <Item value="case" priority="0" /> + <Item value="break" priority="0" /> + <Item value="true" priority="0" /> + <Item value="enum" priority="0" /> + <Item value="GUILocalizeStrings" priority="0" /> + </ItemStatistics> + <ItemStatistics item="Qualified:@System.String"> + <Item value="Empty" priority="0" /> + <Item value="IsNullOrEmpty" priority="0" /> + </ItemStatistics> + <ItemStatistics item="Qualified:@MediaPortal.Plugins.SubtitlesRetriever.Translation"> + <Item value="NoSubtitlesFound" priority="0" /> + <Item value="SubtitlesAlreadyExist" priority="0" /> + </ItemStatistics> + <ItemStatistics item="Qualified:@MediaPortal.Plugins.SubtitlesRetriever.GUILocalizeStrings"> + <Item value="Get" priority="0" /> + </ItemStatistics> + </CompletionStatisticsManager> +</Configuration> \ No newline at end of file Added: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.4.5.resharper.user =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.4.5.resharper.user (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.4.5.resharper.user 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,77 @@ +<Configuration> + <SettingsComponent> + <string /> + <integer /> + <boolean> + <setting name="SolutionAnalysisEnabled">False</setting> + </boolean> + </SettingsComponent> + <NAntValidationSettings> + <NAntPath value="" /> + </NAntValidationSettings> + <RecentFiles> + <RecentFiles> + <File id="d:Miscellaneous Files/f:TVOverlay.cs/l:C!?Development?TvEngine3?TVLibrary?TvPlugin?TvPlugin?TVOverlay.cs" caret="2241" fromTop="17" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:LocalizeStrings.cs" caret="5171" fromTop="21" /> + <File id="6DA0E4DF-6230-4642-98B5-E690BB6942BB/d:Localisation/f:LocalisationProvider.cs" caret="9600" fromTop="23" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/d:language/d:SubtitlesRetriever/f:da.xml" caret="349" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/d:language/d:SubtitlesRetriever/f:en.xml" caret="326" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16353" fromTop="566" /> + </RecentFiles> + <RecentEdits> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/d:language/d:SubtitlesRetriever/f:da.xml" caret="0" fromTop="0" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/d:language/d:SubtitlesRetriever/f:en.xml" caret="335" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="4022" fromTop="44" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="3670" fromTop="36" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/d:language/d:SubtitlesRetriever/f:da.xml" caret="349" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/d:language/d:SubtitlesRetriever/f:en.xml" caret="326" fromTop="8" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="11575" fromTop="11" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="5684" fromTop="9" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="4186" fromTop="9" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="4835" fromTop="24" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16115" fromTop="20" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16115" fromTop="17" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16086" fromTop="20" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16086" fromTop="20" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="17677" fromTop="34" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="1901" fromTop="15" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="1947" fromTop="19" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="1993" fromTop="23" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="795" fromTop="15" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="15579" fromTop="15" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="15820" fromTop="19" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16075" fromTop="26" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16445" fromTop="9" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="15399" fromTop="11" /> + <File id="851E199C-0E56-4AF0-9577-DA47FD234A41/f:SubtitlesRetriever.cs" caret="16663" fromTop="17" /> + </RecentEdits> + </RecentFiles> + <UnitTestRunner> + <Providers /> + </UnitTestRunner> + <CompletionStatisticsManager> + <ItemStatistics item="Default"> + <Item value="string" priority="0" /> + <Item value="query" priority="0" /> + <Item value="EpisodeSearchQuery" priority="1" /> + <Item value="if" priority="4" /> + <Item value="mediaDetail" priority="2" /> + <Item value="else" priority="1" /> + <Item value="new" priority="0" /> + <Item value="false" priority="0" /> + <Item value="useMoviequery" priority="1" /> + <Item value="useSeriesquery" priority="1" /> + <Item value="useIMDBquery" priority="0" /> + </ItemStatistics> + <ItemStatistics item="Qualified:System.String"> + <Item value="Split" priority="0" /> + </ItemStatistics> + <ItemStatistics item="Qualified:@System.String"> + <Item value="IsNullOrEmpty" priority="0" /> + </ItemStatistics> + <ItemStatistics item="Qualified:MediaPortal.Plugins.SubtitlesRetriever.BasicMediaDetail"> + <Item value="Episode" priority="1" /> + <Item value="Title" priority="0" /> + </ItemStatistics> + </CompletionStatisticsManager> +</Configuration> \ No newline at end of file Added: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.cs =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.cs (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.cs 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,664 @@ +// the subtitlesdownloader assembly has a conflict on the CookComputing reference +// using an alias to overcome this. +//extern alias subtitles; +//using SubtitlesDL = subtitles::SubtitleDownloader; +using MediaPortal.Dialogs; +using MediaPortal.GUI.Library; +using MediaPortal.Player; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using SubtitleDownloader; +using SubtitleDownloader.Core; + +namespace MediaPortal.Plugins.SubtitlesRetriever +{ + #region public structs + + public struct BasicMediaDetail + { + private string _fullPath; + private string _fileName; + private string _title; + private string _imdbID; + private int _nr; + private int _year; + private int _episode; + private int _season; + private int? _mediaId; + + + public int? MediaId + { + get + { + return _mediaId; + } + set + { + _mediaId = value; + } + } + + + public string ImdbID + { + get + { + return _imdbID; + } + set + { + _imdbID = value; + } + } + + public string FullPath + { + get + { + return _fullPath; + } + set + { + _fullPath = value; + } + } + + public string FileName + { + get + { + return _fileName; + } + set + { + _fileName = value; + } + } + + public string Title + { + get + { + return _title; + } + set + { + _title = value; + } + } + + public int Number + { + get + { + return _nr; + } + set + { + _nr = value; + } + } + + public int Year + { + get + { + return _year; + } + set + { + _year = value; + } + } + + + public int Season + { + get + { + return _season; + } + set + { + _season = value; + } + } + + public int Episode + { + get + { + return _episode; + } + set + { + _episode = value; + } + } + } + + public struct SubtitleItem + { + private SubtitleDownloader.Core.Subtitle _subtitle; + private SubtitleDownloader.Core.ISubtitleDownloader _downloader; + + public SubtitleDownloader.Core.Subtitle Subtitle + { + get + { + return _subtitle; + } + set + { + _subtitle = value; + } + } + + public SubtitleDownloader.Core.ISubtitleDownloader Downloader + { + get + { + return _downloader; + } + set + { + _downloader = value; + } + } + } + + #endregion + + #region internal structs + + + #endregion + + #region private enums + + enum Translation + { + SubtitlesAlreadyExist = 0, + NoSubtitlesFound = 1, + SubtitlesDownloaded = 2 + } + + #endregion + + public class SubtitlesRetriever + { + #region private vars + + private bool _enabled = false; + private string[] _languages; + private bool _useOpensubtitles = false; + private bool _useBierdopje = false; + private bool _usePodnapisi = false; + private bool _useSublight = false; + private bool _useSubscene = false; + private bool _useSubtitleSource = false; + private bool _useTVSubtitles = false; + + #endregion + + #region public events + + public delegate void OnSubtitleDownloadedDelegate (BasicMediaDetail mediaDetail); + + public event OnSubtitleDownloadedDelegate OnSubtitleDownloadedEvent; + + #endregion + + #region public constants + + public const string OPENSUBTITLES = "opensubtitles"; + public const string BIERDOPJE = "bierdopje"; + public const string PODNAPISI = "podnapisi"; + public const string SUBLIGHT = "sublight"; + public const string SUBSCENE = "subscene"; + public const string SUBTITLESOURCE = "subtitleSource"; + public const string TVSUBTITLES = "tvsubtitles"; + + #endregion + + #region constructors + + public SubtitlesRetriever(bool enabled, string prefLanguages, string providers) + { + GUILocalizeStrings.Load(GUI.Library.GUILocalizeStrings.CurrentLanguage()); + + _enabled = enabled; // MovingPicturesCore.Settings.SubtitleDownloaderEnabled; + // MovingPicturesCore.Settings.SubtitlesDownloaderLanguages; + + if (string.IsNullOrEmpty(prefLanguages)) + { + _languages = new string[1]; + _languages[0] = "eng"; //default + } + else + { + _languages = prefLanguages.Split(';'); + } + + + if (!string.IsNullOrEmpty(providers)) + { + string[] providersArr = providers.Split(';'); + foreach (string provider in providersArr) + { + switch (provider) + { + case OPENSUBTITLES: + _useOpensubtitles = true; + break; + case BIERDOPJE: + _useBierdopje = true; + break; + case PODNAPISI: + _usePodnapisi = true; + break; + case SUBLIGHT: + _useSublight = true; + break; + case SUBSCENE: + _useSubscene = true; + break; + case SUBTITLESOURCE: + _useSubtitleSource = true; + break; + case TVSUBTITLES: + _useTVSubtitles = true; + break; + + //add more providers if needed + } + } + } + } + + #endregion + + #region public methods + + public void DownloadSubtitles(List<BasicMediaDetail> mediaDetails) + { + if (!_enabled) + { + return; + } + + List<SubtitleDownloader.Core.ISubtitleDownloader> downloaders = HarvestDownloaders(); + List<SubtitleDownloader.Core.Subtitle> resultsOpenSubtitles = new List<SubtitleDownloader.Core.Subtitle>(); + + //bool isMultipleDiscs = (mediaDetails.Count > 1); + + /*if (isMultipleDiscs && mediaDetail.Number == 1) + { + GUIDialogOK dialog = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); + if (dialog != null) + { + dialog.SetHeading(Translation.SubtitlesMultipleDiscs); + dialog.SetLine(1, Translation.SubtitlesSearchingDisc + " 1-" + Convert.ToString(mediaDetails.Count)); + dialog.SetLine(2, ""); + dialog.DoModal(GUIWindowManager.ActiveWindow); + } + } */ + + List<SubtitleItem> allResults = null; + foreach (BasicMediaDetail mediaDetail in mediaDetails) + { + allResults = QueryDownloaders(mediaDetail, downloaders); + } + + // all results gathered, now report back to the user the list of subs avail, + // keep showing the menu as long as there is subtitles avail. and if the user decides to stay on the menu + if (allResults != null && allResults.Count > 0) + { + while (true) + { + //GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)MediaPortal.GUI.Library.GUIWindow.Window.WINDOW_DIALOG_MENU); + int selectedIndex = PresentUserWithResults(mediaDetails[0], allResults); + if (selectedIndex < 0) + { + break; //nothing selected + } + DownloadSubtitle(mediaDetails, allResults, selectedIndex); + } + } + else + { + ShowMessage("Moving Pictures", GUILocalizeStrings.Get((int)Translation.NoSubtitlesFound), "", "", ""); + } + + } + + #endregion + + #region private methods + + /// <summary> + /// Displays a yes/no dialog with custom labels for the buttons + /// This method may become obsolete in the future if media portal adds more dialogs + /// </summary> + /// <returns>True if yes was clicked, False if no was clicked</returns> + public bool ShowCustomYesNo(string heading, string lines, string yesLabel, string noLabel, bool defaultYes) + { + GUIDialogYesNo dialog = (GUIDialogYesNo)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_YES_NO); + try + { + dialog.Reset(); + dialog.SetHeading(heading); + string[] linesArray = lines.Split(new string[] { "\\n" }, StringSplitOptions.None); + if (linesArray.Length > 0) dialog.SetLine(1, linesArray[0]); + if (linesArray.Length > 1) dialog.SetLine(2, linesArray[1]); + if (linesArray.Length > 2) dialog.SetLine(3, linesArray[2]); + if (linesArray.Length > 3) dialog.SetLine(4, linesArray[3]); + dialog.SetDefaultToYes(defaultYes); + + foreach (System.Windows.UIElement item in dialog.Children) + { + if (item is GUIButtonControl) + { + GUIButtonControl btn = (GUIButtonControl)item; + if (btn.GetID == 11 && !String.IsNullOrEmpty(yesLabel)) // Yes button + btn.Label = yesLabel; + else if (btn.GetID == 10 && !String.IsNullOrEmpty(noLabel)) // No button + btn.Label = noLabel; + } + } + dialog.DoModal(GUIWindowManager.ActiveWindow); + return dialog.IsConfirmed; + } + finally + { + // set the standard yes/no dialog back to it's original state (yes/no buttons) + if (dialog != null) + { + dialog.ClearAll(); + } + } + } + + public void ShowMessage(string heading, string line1, string line2, string line3, string line4) + { + GUIDialogOK dialog = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); + dialog.Reset(); + dialog.SetHeading(heading); + if (line1 != null) dialog.SetLine(1, line1); + if (line2 != null) dialog.SetLine(2, line2); + if (line3 != null) dialog.SetLine(3, line3); + if (line4 != null) dialog.SetLine(4, line4); + dialog.DoModal(GUIWindowManager.ActiveWindow); + } + + private void DownloadSubtitle(List<BasicMediaDetail> mediaDetails, List<SubtitleItem> allResults, int selectedIndex) + { + SubtitleDownloader.Core.ISubtitleDownloader subDownloader = allResults[selectedIndex].Downloader; + SubtitleDownloader.Core.Subtitle subtitle = allResults[selectedIndex].Subtitle;//FindSelectedSubtitle(allResults, selectedIndex, out subDownloader); + bool subtitleSaved = false; + bool? bOverwriteFile = null; + + List <FileInfo> subtitleFiles = subDownloader.SaveSubtitle(subtitle); + + int subtitleNr = 0; + foreach (FileInfo subtitleFile in subtitleFiles) + { + if (mediaDetails.Count <= subtitleNr) + { + break; // we found multiple subtitles, but we only have 1 disc. + } + BasicMediaDetail mediaDetail = mediaDetails[subtitleNr]; + string videoFileName = mediaDetail.FullPath.ToLower(); //mediaDetail.LocalMedia[0].FullPath.ToLower(); + + string targetSubtitleFile = + SubtitleDownloader.Util.FileUtils.GetFileNameForSubtitle(subtitleFile.Name, + subtitle.LanguageCode, + videoFileName); + + bool targetFileExists = File.Exists(targetSubtitleFile); + if (targetFileExists) + { + if (!bOverwriteFile.HasValue) + { + bOverwriteFile = (bool) ShowCustomYesNo("Moving Pictures", GUILocalizeStrings.Get((int)Translation.SubtitlesAlreadyExist), null, + null, false); + } + if ((bool)bOverwriteFile) + { + try + { + File.Delete(targetSubtitleFile); + } + catch (Exception) + { + //ignore + } + } + } + + targetFileExists = File.Exists(targetSubtitleFile); + if (!targetFileExists) + { + File.Move(subtitleFile.FullName, targetSubtitleFile); + allResults.RemoveAt(selectedIndex); + subtitleSaved = true; + } + subtitleNr++; + } + if (subtitleSaved) + { + NotifyUserSubtitleDownloaded(mediaDetails[0]); + } + } + + private GUIDialogSelect SetupGUIDialogue(BasicMediaDetail mediaDetail) + { + GUIDialogSelect dlg = + (GUIDialogSelect)GUIWindowManager.GetWindow((int)MediaPortal.GUI.Library.GUIWindow.Window.WINDOW_DIALOG_SELECT); + if (dlg == null) + { + return null; + } + + GUIPropertyManager.SetProperty("#selecteditem", mediaDetail.FileName);//mediaDetail.LocalMedia[0].File.Name); + dlg.SetHeading(""); + dlg.EnableButton(true); + dlg.SetButtonLabel(2087); // backwards + return dlg; + } + + private void NotifyUserSubtitleDownloaded(BasicMediaDetail mediaDetail) + { + GUIDialogNotify pDlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)MediaPortal.GUI.Library.GUIWindow.Window.WINDOW_DIALOG_NOTIFY); + if (pDlgNotify == null) + { + return; + } + string caption = mediaDetail.Title; + + string subtitlesThumbPath = GUIGraphicsContext.Skin; + subtitlesThumbPath += "\\Media\\Logos\\subtitles.png"; + + pDlgNotify.SetHeading(caption); + pDlgNotify.SetImage(subtitlesThumbPath); + pDlgNotify.SetText(GUILocalizeStrings.Get((int)Translation.SubtitlesDownloaded)); + pDlgNotify.DoModal(GUIWindowManager.ActiveWindow); + + if (OnSubtitleDownloadedEvent!= null) + { + //maybe the subscriber wants to update the mediaInfo stuff :) + OnSubtitleDownloadedEvent(mediaDetail); + } + } + + private int PresentUserWithResults(BasicMediaDetail mediaDetail, List<SubtitleItem> allResults) + { + int selectedIndex = -1; + GUIDialogSelect dlg = SetupGUIDialogue(mediaDetail); + if (dlg == null) + { + return selectedIndex; + } + + bool subsFound = false; + + foreach (SubtitleItem subItem in allResults) + { + dlg.Add(subItem.Subtitle.LanguageCode + " " + subItem.Subtitle.FileName); + subsFound = true; + } + + if (!subsFound) + { + return selectedIndex; + } + + dlg.DoModal(GUIWindowManager.ActiveWindow); + + if (dlg.SelectedLabel < 0) + { + return selectedIndex; + } + + return dlg.SelectedLabel; + } + + private List<SubtitleItem> QueryDownloaders(BasicMediaDetail mediaDetail, List<SubtitleDownloader.Core.ISubtitleDownloader> downloaders) + { + List<SubtitleItem> allResults = new List<SubtitleItem>(); + SubtitleDownloader.Core.EpisodeSearchQuery episodeQuery = null; + SubtitleDownloader.Core.SearchQuery movieQuery = null; + SubtitleDownloader.Core.ImdbSearchQuery queryIMDB = null; + + bool useImdbQuery = false; + bool useMovieQuery = false; + bool useEpisodeQuery = false; + + if (mediaDetail.Episode > 0 && mediaDetail.Season > 0) + { + episodeQuery = new EpisodeSearchQuery(mediaDetail.Title, mediaDetail.Season, mediaDetail.Episode); + } + else + { + movieQuery = new SubtitleDownloader.Core.SearchQuery(mediaDetail.Title); + movieQuery.Year = mediaDetail.Year; + movieQuery.LanguageCodes = _languages; + + bool useIMDBquery = !(string.IsNullOrEmpty((mediaDetail.ImdbID))); + + if (useIMDBquery) + { + queryIMDB = new SubtitleDownloader.Core.ImdbSearchQuery(mediaDetail.ImdbID); + queryIMDB.LanguageCodes = _languages; + } + } + + + int subsTotal = 0; + foreach (SubtitleDownloader.Core.ISubtitleDownloader subsDownloader in downloaders) + { + List<SubtitleDownloader.Core.Subtitle> resultsFromDownloader = null; + + if (useEpisodeQuery) + { + resultsFromDownloader = subsDownloader.SearchSubtitles(episodeQuery); + } + else if (useMovieQuery) + { + resultsFromDownloader = subsDownloader.SearchSubtitles(movieQuery); + } + else if (useImdbQuery) + { + try + { + resultsFromDownloader = subsDownloader.SearchSubtitles(queryIMDB); + } + catch (NotSupportedException) + { + try + { + resultsFromDownloader = subsDownloader.SearchSubtitles(movieQuery); //lets do basic subs lookup instead + } + catch (Exception) + { + //ignore + } + } + catch (Exception) + { + //ignore + } + } + if (resultsFromDownloader != null && resultsFromDownloader.Count > 0) + { + foreach (SubtitleDownloader.Core.Subtitle subtitle in resultsFromDownloader) + { + SubtitleItem subItem = new SubtitleItem(); + subItem.Downloader = subsDownloader; + subItem.Subtitle = subtitle; + allResults.Add(subItem); + } + subsTotal += resultsFromDownloader.Count; + } + } + + //lets sort the results by lang. prefs. + allResults.Sort(new SubtitleComparer(_languages)); + + return allResults; + } + + private List<SubtitleDownloader.Core.ISubtitleDownloader> HarvestDownloaders() + { + List<SubtitleDownloader.Core.ISubtitleDownloader> downloaders = new List<SubtitleDownloader.Core.ISubtitleDownloader>(); + if (_useOpensubtitles) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.OpenSubtitles.OpenSubtitlesDownloader(); + downloaders.Add(downloader); + } + + if (_useBierdopje) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.Bierdopje.BierdopjeDownloader(); + downloaders.Add(downloader); + } + + if (_usePodnapisi) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.Podnapisi.PodnapisiDownloader(); + downloaders.Add(downloader); + } + + if (_useSublight) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.Sublight.SublightDownloader(); + downloaders.Add(downloader); + } + + if (_useSubscene) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.Subscene.SubsceneDownloader(); + downloaders.Add(downloader); + } + + if (_useSubtitleSource) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.SubtitleSource.SubtitleSourceDownloaderV2(); + downloaders.Add(downloader); + } + + if (_useTVSubtitles) + { + SubtitleDownloader.Core.ISubtitleDownloader downloader = new SubtitleDownloader.Implementations.TVSubtitles.TvSubtitlesDownloader(); + downloaders.Add(downloader); + } + return downloaders; + } + #endregion + } +} Added: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{851E199C-0E56-4AF0-9577-DA47FD234A41}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>SubtitlesDownloader</RootNamespace> + <AssemblyName>SubtitlesRetriever</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=1.0.4.23422, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\mediaportal\Core\bin\Release\Core.dll</HintPath> + </Reference> + <Reference Include="Dialogs, Version=1.0.4.23425, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\mediaportal\Dialogs\bin\Release\Dialogs.dll</HintPath> + </Reference> + <Reference Include="SubtitleDownloader, Version=0.9.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>External\SubtitleDownloader.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils, Version=2.2.7.23419, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\mediaportal\Utils\bin\Release\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="LocalizeStrings.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SubtitlesRetriever.cs" /> + <Compile Include="SubtitlesComparer.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="language\SubtitlesRetriever\strings_da.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="language\SubtitlesRetriever\strings_en.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj.user =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj.user (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.csproj.user 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,5 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectView>ProjectFiles</ProjectView> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.sln =================================================================== --- trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.sln (rev 0) +++ trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.sln 2009-12-25 13:44:55 UTC (rev 3301) @@ -0,0 +1,34 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubtitlesRetriever", "SubtitlesRetriever.csproj", "{851E199C-0E56-4AF0-9577-DA47FD234A41}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utils", "..\..\mediaportal\Utils\Utils.csproj", "{6DA0E4DF-6230-4642-98B5-E690BB6942BB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {851E199C-0E56-4AF0-9577-DA47FD234A41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {851E199C-0E56-4AF0-9577-DA47FD234A41}.Debug|Any CPU.Build.0 = Debug|Any CPU + {851E199C-0E56-4AF0-9577-DA47FD234A41}.Debug|x86.ActiveCfg = Debug|Any CPU + {851E199C-0E56-4AF0-9577-DA47FD234A41}.Release|Any CPU.ActiveCfg = Release|Any CPU + {851E199C-0E56-4AF0-9577-DA47FD234A41}.Release|Any CPU.Build.0 = Release|Any CPU + {851E199C-0E56-4AF0-9577-DA47FD234A41}.Release|x86.ActiveCfg = Release|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|x86.ActiveCfg = Debug|x86 + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|x86.Build.0 = Debug|x86 + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Any CPU.Build.0 = Release|Any CPU + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|x86.ActiveCfg = Release|x86 + {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.suo =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/SubtitlesRetriever.suo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/CachesImage.bin =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/CachesImage.bin ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/ProjectModel/ProjectModel.dat =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/ProjectModel/ProjectModel.dat ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/.version =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/.version ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/1/5daef8ae.dat =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/TodoCache/1/5daef8ae.dat ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WebsiteFileReferences/.version =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WebsiteFileReferences/.version ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/.version =================================================================== (Binary files differ) Property changes on: trunk/plugins/SubtitlesRetriever/_ReSharper.SubtitlesDownloader/WordIndex.New/.version ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugin... [truncated message content] |
From: <ge...@us...> - 2010-01-07 17:00:32
|
Revision: 3332 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3332&view=rev Author: gemx Date: 2010-01-07 17:00:22 +0000 (Thu, 07 Jan 2010) Log Message: ----------- Atmolight Plugin: Initial check in Modified Paths: -------------- trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs trunk/plugins/MediaPortal WebServices/WebApp/config.xml Added Paths: ----------- trunk/plugins/Atmolight/ trunk/plugins/Atmolight/Atmolight.csproj trunk/plugins/Atmolight/Atmolight.sln trunk/plugins/Atmolight/AtmolightPlugin.cs trunk/plugins/Atmolight/AtmolightSettings.cs trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs trunk/plugins/Atmolight/AtmolightSetupForm.cs trunk/plugins/Atmolight/AtmolightSetupForm.resx trunk/plugins/Atmolight/Properties/ trunk/plugins/Atmolight/Properties/AssemblyInfo.cs trunk/plugins/Atmolight/bin/ trunk/plugins/Atmolight/bin/x86/ trunk/plugins/Atmolight/bin/x86/Debug/ Added: trunk/plugins/Atmolight/Atmolight.csproj =================================================================== --- trunk/plugins/Atmolight/Atmolight.csproj (rev 0) +++ trunk/plugins/Atmolight/Atmolight.csproj 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{1A2ADEB0-CEB7-40F2-A146-91724EA884E0}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Atmolight</RootNamespace> + <AssemblyName>Atmolight</AssemblyName> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x86\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\x86\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=1.0.4.16709, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\Team MediaPortal\mediaportal\Core\bin\Release\Core.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils, Version=2.2.7.15508, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\Team MediaPortal\mediaportal\Core\bin\Release\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="AtmolightPlugin.cs" /> + <Compile Include="AtmolightSettings.cs" /> + <Compile Include="AtmolightSetupForm.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="AtmolightSetupForm.Designer.cs"> + <DependentUpon>AtmolightSetupForm.cs</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <COMReference Include="AtmoWinRemoteControl"> + <Guid>{E01E2041-5AFC-11D3-8E80-00805F91CDD9}</Guid> + <VersionMajor>1</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + </COMReference> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="AtmolightSetupForm.resx"> + <DependentUpon>AtmolightSetupForm.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/Atmolight/Atmolight.sln =================================================================== --- trunk/plugins/Atmolight/Atmolight.sln (rev 0) +++ trunk/plugins/Atmolight/Atmolight.sln 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atmolight", "Atmolight.csproj", "{1A2ADEB0-CEB7-40F2-A146-91724EA884E0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|x86.ActiveCfg = Debug|x86 + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Debug|x86.Build.0 = Debug|x86 + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|Any CPU.Build.0 = Release|Any CPU + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|x86.ActiveCfg = Release|x86 + {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/Atmolight/AtmolightPlugin.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightPlugin.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightPlugin.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,241 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MediaPortal.GUI.Library; +using MediaPortal.Profile; +using MediaPortal.Player; +using System.Diagnostics; +using System.Runtime.InteropServices; +using AtmoWinRemoteControl; + +namespace MediaPortal.ProcessPlugins.Atmolight +{ + public class AtmolightPlugin: ISetupForm, IPlugin + { + #region Variables + private IAtmoRemoteControl atmoCtrl=null; + #endregion + + #region Utilities + private bool ConnectToAtmoWinA() + { + try + { + atmoCtrl = (IAtmoRemoteControl)Marshal.GetActiveObject("AtmoRemoteControl.1"); + } + catch (Exception ex) + { + Log.Error("atmolight: exception= {0}",ex.Message); + atmoCtrl = null; + return false; + } + try + { + ComEffectMode effect = ComEffectMode.cemDisabled; + atmoCtrl.getEffect(ref effect); + Log.Debug("atmolight: successfully connected to AtmoWinA :)"); + } + catch (Exception ex) + { + Log.Error("atmolight= exception: {0}", ex.Message); + atmoCtrl = null; + return false; + } + return true; + } + private bool StartAtmoWinA() + { + if (!System.IO.File.Exists(AtmolightSettings.atmowinExe)) + { + Log.Error("atmolight: atmowina.exe not found."); + return false; + } + Process app = new Process(); + app.StartInfo.FileName = AtmolightSettings.atmowinExe; + app.StartInfo.UseShellExecute = true; + bool ret = true; + try + { + ret = app.Start(); + } + catch (Exception) + { + return false; + } + return ret; + } + private void SetAtmoEffect(ComEffectMode effect) + { + if (atmoCtrl == null) + return; + try + { + ComEffectMode oldEffect; + atmoCtrl.setEffect(effect, out oldEffect); + Log.Info("atmolight: Set effect from " + oldEffect.ToString() + " to " + ComEffectMode.cemLivePicture.ToString()); + } + catch (Exception ex) + { + Log.Error("atmolight: Failed to switch effect to "+effect.ToString()+Environment.NewLine+ex.Message+Environment.StackTrace); + } + } + private void SetAtmoColor(byte red, byte green, byte blue) + { + if (atmoCtrl == null) + return; + try + { + atmoCtrl.setStaticColor(red, green, blue); + Log.Info("atmolight: Set static color to RED={0} GREEN={1} BLUE={2}",red,green,blue); + } + catch (Exception ex) + { + Log.Error("atmolight: Failed to set static color to RED={0} GREEN={1} BLUE={2}"+Environment.NewLine+ex.Message+Environment.NewLine+ex.StackTrace, red, green, blue); + } + } + private void EnableLivePictureMode() + { + SetAtmoEffect(ComEffectMode.cemLivePicture); + } + private void DisableLEDs() + { + SetAtmoEffect(ComEffectMode.cemDisabled); + SetAtmoColor(0,0,0); + } + #endregion + + public AtmolightPlugin() + { + AtmolightSettings.LoadSettings(); + Log.Info("atmolight: Trying to connect to atmowina.exe..."); + if (!ConnectToAtmoWinA()) + { + Log.Warn("atmolight: AtmoWinA.exe not started. Trying to launch..."); + if (!StartAtmoWinA()) + { + Log.Error("atmolight: Can't start atmowin.exe. Atmolight control won't work :("); + return; + } + if (!ConnectToAtmoWinA()) + { + Log.Error("atmolight: AtmoWinA started but still can't connect. Atmolight control won't work :("); + return; + } + } + } + + #region Events + void g_Player_PlayBackEnded(g_Player.MediaType type, string filename) + { + if (!AtmolightSettings.enableAlways) + DisableLEDs(); + } + void g_Player_PlayBackStopped(g_Player.MediaType type, int stoptime, string filename) + { + if (!AtmolightSettings.enableAlways) + DisableLEDs(); + } + void g_Player_PlayBackStarted(g_Player.MediaType type, string filename) + { + switch (type) + { + case g_Player.MediaType.Music: + if (AtmolightSettings.enableMusic && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Radio: + if (AtmolightSettings.enableRadio && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Recording: + if (AtmolightSettings.enableRecording && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.TV: + if (AtmolightSettings.enableTv && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Unknown: + if (AtmolightSettings.enableUnknown && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + case g_Player.MediaType.Video: + if (AtmolightSettings.enableVideo && !AtmolightSettings.enableAlways) + EnableLivePictureMode(); + break; + } + } + #endregion + + #region ISetupForm impementation + public string Author() + { + return "gemx"; + } + public bool CanEnable() + { + return true; + } + public bool DefaultEnabled() + { + return true; + } + public string Description() + { + return "Interfaces AtmowinA.exe via COM to control the lights"; + } + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = null; + strButtonImage = null; + strButtonImageFocus = null; + strPictureImage = null; + return false; + } + public int GetWindowId() + { + return -1; + } + public bool HasSetup() + { + return true; + } + public string PluginName() + { + return "Atmolight"; + } + public void ShowPlugin() + { + new AtmolightSetupForm().ShowDialog(); + } + #endregion + + #region IPlugin implementation + public void Start() + { + if (atmoCtrl != null) + { + g_Player.PlayBackStarted += new g_Player.StartedHandler(g_Player_PlayBackStarted); + g_Player.PlayBackStopped += new g_Player.StoppedHandler(g_Player_PlayBackStopped); + g_Player.PlayBackEnded += new g_Player.EndedHandler(g_Player_PlayBackEnded); + Log.Info("atmolight: Start() waiting for g_player events..."); + if (AtmolightSettings.enableAlways) + EnableLivePictureMode(); + } + } + public void Stop() + { + Log.Info("g_playerTrigger: Stop()"); + if (atmoCtrl != null) + { + g_Player.PlayBackStarted -= new g_Player.StartedHandler(g_Player_PlayBackStarted); + g_Player.PlayBackStopped -= new g_Player.StoppedHandler(g_Player_PlayBackStopped); + g_Player.PlayBackEnded -= new g_Player.EndedHandler(g_Player_PlayBackEnded); + if (AtmolightSettings.disableOnShutdown) + DisableLEDs(); + atmoCtrl = null; + } + } + #endregion + } +} Added: trunk/plugins/Atmolight/AtmolightSettings.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightSettings.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightSettings.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MediaPortal.Profile; + +namespace MediaPortal.ProcessPlugins.Atmolight +{ + public class AtmolightSettings + { + #region Config variables + public static string atmowinExe = ""; + public static bool enableAlways = false; + public static bool enableVideo = true; + public static bool enableTv = true; + public static bool enableRecording = true; + public static bool enableUnknown = true; + public static bool enableRadio=false; + public static bool enableMusic = false; + public static bool disableOnShutdown = true; + #endregion + + public static void LoadSettings() + { + using (Settings reader = new MPSettings()) + { + atmowinExe = reader.GetValueAsString("atmolight", "atmowinexe", ""); + enableAlways = reader.GetValueAsBool("atmolight", "enableAlways", false); + enableVideo = reader.GetValueAsBool("atmolight", "enableVideo", true); + enableTv = reader.GetValueAsBool("atmolight", "enableTv", true); + enableRecording = reader.GetValueAsBool("atmolight", "enableRecording", true); + enableUnknown = reader.GetValueAsBool("atmolight", "enableUnknown", true); + enableRadio = reader.GetValueAsBool("atmolight", "enableRadio", false); + enableMusic = reader.GetValueAsBool("atmolight", "enableMusic", false); + disableOnShutdown = reader.GetValueAsBool("atmolight", "disableOnShutdown", true); + } + } + public static void SaveSettings() + { + using (Settings reader = new MPSettings()) + { + reader.SetValue("atmolight", "atmowinexe", atmowinExe); + reader.SetValueAsBool("atmolight", "enableAlways", enableAlways); + reader.SetValueAsBool("atmolight", "enableVideo", enableVideo); + reader.SetValueAsBool("atmolight", "enableTv", enableTv); + reader.SetValueAsBool("atmolight", "enableRecording", enableRecording); + reader.SetValueAsBool("atmolight", "enableUnknown", enableUnknown); + reader.GetValueAsBool("atmolight", "enableRadio", enableRadio); + reader.SetValueAsBool("atmolight", "enableMusic", enableMusic); + reader.GetValueAsBool("atmolight", "disableOnShutdown", disableOnShutdown); + } + } + + } +} Added: trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightSetupForm.Designer.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,242 @@ +namespace MediaPortal.ProcessPlugins.Atmolight +{ + partial class AtmolightSetupForm + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.edFile = new System.Windows.Forms.TextBox(); + this.btnSelectFile = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.cbAlways = new System.Windows.Forms.CheckBox(); + this.cbTv = new System.Windows.Forms.CheckBox(); + this.cbRadio = new System.Windows.Forms.CheckBox(); + this.cbMusic = new System.Windows.Forms.CheckBox(); + this.cbVideo = new System.Windows.Forms.CheckBox(); + this.cbRecording = new System.Windows.Forms.CheckBox(); + this.cbUnknown = new System.Windows.Forms.CheckBox(); + this.cbDisableOnShutdown = new System.Windows.Forms.CheckBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(162, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Path+Filename of AtmoWinA.exe"; + // + // edFile + // + this.edFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.edFile.Location = new System.Drawing.Point(9, 30); + this.edFile.Name = "edFile"; + this.edFile.Size = new System.Drawing.Size(248, 20); + this.edFile.TabIndex = 1; + // + // btnSelectFile + // + this.btnSelectFile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnSelectFile.Location = new System.Drawing.Point(264, 29); + this.btnSelectFile.Name = "btnSelectFile"; + this.btnSelectFile.Size = new System.Drawing.Size(36, 23); + this.btnSelectFile.TabIndex = 2; + this.btnSelectFile.Text = "..."; + this.btnSelectFile.UseVisualStyleBackColor = true; + this.btnSelectFile.Click += new System.EventHandler(this.btnSelectFile_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.cbDisableOnShutdown); + this.groupBox1.Controls.Add(this.cbUnknown); + this.groupBox1.Controls.Add(this.cbRecording); + this.groupBox1.Controls.Add(this.cbVideo); + this.groupBox1.Controls.Add(this.cbMusic); + this.groupBox1.Controls.Add(this.cbRadio); + this.groupBox1.Controls.Add(this.cbTv); + this.groupBox1.Controls.Add(this.cbAlways); + this.groupBox1.Location = new System.Drawing.Point(9, 57); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(287, 138); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Enable live picture mode when... starts"; + // + // cbAlways + // + this.cbAlways.AutoSize = true; + this.cbAlways.Location = new System.Drawing.Point(7, 20); + this.cbAlways.Name = "cbAlways"; + this.cbAlways.Size = new System.Drawing.Size(59, 17); + this.cbAlways.TabIndex = 0; + this.cbAlways.Text = "Always"; + this.cbAlways.UseVisualStyleBackColor = true; + // + // cbTv + // + this.cbTv.AutoSize = true; + this.cbTv.Location = new System.Drawing.Point(72, 19); + this.cbTv.Name = "cbTv"; + this.cbTv.Size = new System.Drawing.Size(39, 17); + this.cbTv.TabIndex = 1; + this.cbTv.Text = "Tv"; + this.cbTv.UseVisualStyleBackColor = true; + // + // cbRadio + // + this.cbRadio.AutoSize = true; + this.cbRadio.Location = new System.Drawing.Point(162, 20); + this.cbRadio.Name = "cbRadio"; + this.cbRadio.Size = new System.Drawing.Size(54, 17); + this.cbRadio.TabIndex = 5; + this.cbRadio.Text = "Radio"; + this.cbRadio.UseVisualStyleBackColor = true; + // + // cbMusic + // + this.cbMusic.AutoSize = true; + this.cbMusic.Location = new System.Drawing.Point(162, 43); + this.cbMusic.Name = "cbMusic"; + this.cbMusic.Size = new System.Drawing.Size(54, 17); + this.cbMusic.TabIndex = 6; + this.cbMusic.Text = "Music"; + this.cbMusic.UseVisualStyleBackColor = true; + // + // cbVideo + // + this.cbVideo.AutoSize = true; + this.cbVideo.Location = new System.Drawing.Point(72, 42); + this.cbVideo.Name = "cbVideo"; + this.cbVideo.Size = new System.Drawing.Size(53, 17); + this.cbVideo.TabIndex = 2; + this.cbVideo.Text = "Video"; + this.cbVideo.UseVisualStyleBackColor = true; + // + // cbRecording + // + this.cbRecording.AutoSize = true; + this.cbRecording.Location = new System.Drawing.Point(72, 65); + this.cbRecording.Name = "cbRecording"; + this.cbRecording.Size = new System.Drawing.Size(75, 17); + this.cbRecording.TabIndex = 3; + this.cbRecording.Text = "Recording"; + this.cbRecording.UseVisualStyleBackColor = true; + // + // cbUnknown + // + this.cbUnknown.AutoSize = true; + this.cbUnknown.Location = new System.Drawing.Point(72, 88); + this.cbUnknown.Name = "cbUnknown"; + this.cbUnknown.Size = new System.Drawing.Size(72, 17); + this.cbUnknown.TabIndex = 4; + this.cbUnknown.Text = "Unknown"; + this.cbUnknown.UseVisualStyleBackColor = true; + // + // cbDisableOnShutdown + // + this.cbDisableOnShutdown.AutoSize = true; + this.cbDisableOnShutdown.Location = new System.Drawing.Point(7, 111); + this.cbDisableOnShutdown.Name = "cbDisableOnShutdown"; + this.cbDisableOnShutdown.Size = new System.Drawing.Size(173, 17); + this.cbDisableOnShutdown.TabIndex = 7; + this.cbDisableOnShutdown.Text = "Disable LEDs on MP shutdown"; + this.cbDisableOnShutdown.UseVisualStyleBackColor = true; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(9, 213); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(75, 23); + this.btnSave.TabIndex = 4; + this.btnSave.Text = "Save"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.Location = new System.Drawing.Point(220, 213); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + this.openFileDialog1.Filter = "AtmoWinA.exe|*.exe"; + this.openFileDialog1.RestoreDirectory = true; + // + // AtmolightSetupForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(307, 249); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.btnSelectFile); + this.Controls.Add(this.edFile); + this.Controls.Add(this.label1); + this.Name = "AtmolightSetupForm"; + this.Text = "Atmolight Setup"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox edFile; + private System.Windows.Forms.Button btnSelectFile; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.CheckBox cbRecording; + private System.Windows.Forms.CheckBox cbVideo; + private System.Windows.Forms.CheckBox cbMusic; + private System.Windows.Forms.CheckBox cbRadio; + private System.Windows.Forms.CheckBox cbTv; + private System.Windows.Forms.CheckBox cbAlways; + private System.Windows.Forms.CheckBox cbDisableOnShutdown; + private System.Windows.Forms.CheckBox cbUnknown; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} \ No newline at end of file Added: trunk/plugins/Atmolight/AtmolightSetupForm.cs =================================================================== --- trunk/plugins/Atmolight/AtmolightSetupForm.cs (rev 0) +++ trunk/plugins/Atmolight/AtmolightSetupForm.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace MediaPortal.ProcessPlugins.Atmolight +{ + public partial class AtmolightSetupForm : Form + { + public AtmolightSetupForm() + { + InitializeComponent(); + edFile.Text = AtmolightSettings.atmowinExe; + cbAlways.Checked = AtmolightSettings.enableAlways; + cbTv.Checked = AtmolightSettings.enableTv; + cbVideo.Checked = AtmolightSettings.enableVideo; + cbRecording.Checked = AtmolightSettings.enableRecording; + cbUnknown.Checked = AtmolightSettings.enableUnknown; + cbRadio.Checked = AtmolightSettings.enableRadio; + cbMusic.Checked = AtmolightSettings.enableMusic; + cbDisableOnShutdown.Checked = AtmolightSettings.disableOnShutdown; + } + private void btnSelectFile_Click(object sender, EventArgs e) + { + if (openFileDialog1.ShowDialog() == DialogResult.OK) + edFile.Text = openFileDialog1.FileName; + } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void btnSave_Click(object sender, EventArgs e) + { + AtmolightSettings.atmowinExe = edFile.Text; + AtmolightSettings.enableAlways = cbAlways.Checked; + AtmolightSettings.enableTv = cbTv.Checked; + AtmolightSettings.enableVideo = cbVideo.Checked; + AtmolightSettings.enableRecording = cbRecording.Checked; + AtmolightSettings.enableUnknown = cbUnknown.Checked; + AtmolightSettings.enableRadio = cbRadio.Checked; + AtmolightSettings.enableMusic = cbMusic.Checked; + AtmolightSettings.disableOnShutdown = cbDisableOnShutdown.Checked; + AtmolightSettings.SaveSettings(); + this.DialogResult = DialogResult.OK; + } + } +} Added: trunk/plugins/Atmolight/AtmolightSetupForm.resx =================================================================== --- trunk/plugins/Atmolight/AtmolightSetupForm.resx (rev 0) +++ trunk/plugins/Atmolight/AtmolightSetupForm.resx 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file Added: trunk/plugins/Atmolight/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/Atmolight/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/Atmolight/Properties/AssemblyInfo.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MediaPortal Atmolight Plugin")] +[assembly: AssemblyDescription("Utilizes the AtmoWinA.exe to toggle live picture mode")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Andreas Kwasnik")] +[assembly: AssemblyProduct("MediaPortal Atmolight Plugin")] +[assembly: AssemblyCopyright("Copyright © Andreas Kwasnik 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("e80d7999-780c-4576-af9f-d959d5f5148a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] Modified: trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs 2010-01-07 16:31:13 UTC (rev 3331) +++ trunk/plugins/MediaPortal WebServices/WebApp/Default.aspx.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -187,6 +187,7 @@ dt.Columns.Add("logo", typeof(string)); foreach (WebMiniEPG epg in epgs) { + if (epg.idChannel == 0) continue; DataRow row = dt.NewRow(); row["channel"] = epg.name; row["now_next"] = epg.epgNow.startTime.ToShortTimeString() + " - " + epg.epgNow.endTime.ToShortTimeString() + ": " + GetScraperLink(epg.epgNow.title) + " <a href=EPGSearch.aspx?title=" + Server.UrlEncode(epg.epgNow.title) + " target=_blank><img border=0 src=\"pics/btnrecurrences.gif\" alt=\"Find recurrences\" title=\"Find recurrences\" /></a><br/>" + epg.epgNext.startTime.ToShortTimeString() + " - " + epg.epgNext.endTime.ToShortTimeString() + ": " + GetScraperLink(epg.epgNext.title) + " <a href=EPGSearch.aspx?title=" + Server.UrlEncode(epg.epgNext.title) + " target=_blank><img border=0 src=\"pics/btnrecurrences.gif\" alt=\"Find recurrences\" title=\"Find recurrences\" /></a>"; @@ -254,6 +255,7 @@ dt.Columns.Add("logo", typeof(string)); foreach (WebMiniEPG epg in epgs) { + if (epg.idChannel == 0) continue; DataRow row = dt.NewRow(); row["channel"] = epg.name; row["now_next"] = epg.epgNow.startTime.ToShortTimeString() + " - " + epg.epgNow.endTime.ToShortTimeString() + ": " + epg.epgNow.title + "<br/>" + epg.epgNext.startTime.ToShortTimeString() + " - " + epg.epgNext.endTime.ToShortTimeString() + ": " + epg.epgNext.title; Modified: trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs =================================================================== --- trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs 2010-01-07 16:31:13 UTC (rev 3331) +++ trunk/plugins/MediaPortal WebServices/WebApp/TvServerStatus.aspx.cs 2010-01-07 17:00:22 UTC (rev 3332) @@ -70,7 +70,7 @@ string manufacturer = ""; string model = ""; string computername = ""; - int totalPhysicalMem = 0; + UInt64 totalPhysicalMem = 0; ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT model,manufacturer,name,totalPhysicalMemory FROM Win32_ComputerSystem"); ManagementObjectCollection queryCollection = query.Get(); @@ -79,7 +79,7 @@ model = mo["model"].ToString(); manufacturer = mo["manufacturer"].ToString(); computername = mo["name"].ToString(); - totalPhysicalMem = Convert.ToInt32(mo["totalphysicalmemory"]); + totalPhysicalMem = Convert.ToUInt64(mo["totalphysicalmemory"]); totalPhysicalMem = (totalPhysicalMem / 1024) / 1024; } @@ -100,7 +100,10 @@ string usages=""; foreach (string drive in recPaths) - usages+=GetDriveUsageStr(drive.Substring(0,2))+"<br/>"; + { + if (drive.Length > 0) + usages += GetDriveUsageStr(drive.Substring(0, 2)) + "<br/>"; + } lSpace.Text=usages; } protected string GetOSVersionStr() Modified: trunk/plugins/MediaPortal WebServices/WebApp/config.xml =================================================================== --- trunk/plugins/MediaPortal WebServices/WebApp/config.xml 2010-01-07 16:31:13 UTC (rev 3331) +++ trunk/plugins/MediaPortal WebServices/WebApp/config.xml 2010-01-07 17:00:22 UTC (rev 3332) @@ -4,14 +4,14 @@ <transcoder name="direct" usetranscoding="0" filename=" " args="" inputmethod="1" outputmethod="1" /> <transcoder name="divx (320x200)" usetranscoding="1" filename="c:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -vf scale=320:200,harddup -ffourcc DX50 -oac mp3lame -o {1}" inputmethod="0" outputmethod="1" /> <transcoder name="mpeg2 (240x160)" usetranscoding="1" filename="c:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -vf scale=240:160 -oac lavc -of lavf -lavfopts format=dvd -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=512:threads=2:acodec=ac3:abitrate=128 -ofps 24000/1001 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="vlc" usetranscoding="1" filename="c:\program files\videolan\vlc\vlc.exe" args=""{0}" --sout=#transcode{vcodec=mp4v,vb=1024,acodec=mp3,ab=64,channels=1,deinterlace,scale=0.50}:std{access=f ile,mux=ts,dst={1}}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (DSL1000)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (DSL2000)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (DSL6000)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (LAN10)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (WLAN11)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 -oac mp3lame -lameopts preset=standard -vf scale=640:408 -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (WLAN54)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> - <transcoder name="MPEG4 (IPAQ)" usetranscoding="1" filename="C:\Program Files\MPlayer\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="vlc" usetranscoding="1" filename="c:\program files\videolan\vlc\vlc.exe" args=""{0}" --sout=#transcode{vcodec=mp4v,vb=1024,acodec=mp3,ab=64,channels=1,deinterlace,scale=0.50}:std{access=file,mux=ts,dst={1}}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (DSL1000)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (DSL2000)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (DSL6000)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (LAN10)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (WLAN11)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 -oac mp3lame -lameopts preset=standard -vf scale=640:408 -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (WLAN54)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 -oac mp3lame -lameopts preset=standard -o {1}" inputmethod="0" outputmethod="1" /> + <transcoder name="MPEG4 (IPAQ)" usetranscoding="1" filename="C:\mencoder\mencoder.exe" args=""{0}" -quiet -cache 8192 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 -o {1}" inputmethod="0" outputmethod="1" /> </transcoders> <mpdatabases> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2010-01-21 00:56:03
|
Revision: 3371 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3371&view=rev Author: chef_koch Date: 2010-01-21 00:55:43 +0000 (Thu, 21 Jan 2010) Log Message: ----------- using new commandline parameter /UpdateXML for creating mpe package Modified Paths: -------------- trunk/plugins/MyAlarm/Build/BUILD_MyAlarm.bat trunk/plugins/MySleepTimer/Build/BUILD_MySleepTimer.bat Modified: trunk/plugins/MyAlarm/Build/BUILD_MyAlarm.bat =================================================================== --- trunk/plugins/MyAlarm/Build/BUILD_MyAlarm.bat 2010-01-20 22:27:48 UTC (rev 3370) +++ trunk/plugins/MyAlarm/Build/BUILD_MyAlarm.bat 2010-01-21 00:55:43 UTC (rev 3371) @@ -49,5 +49,5 @@ echo. echo Building MpeExtension package... -"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\MpeRelease\MyAlarm.xmp2" /V=%version% /B >> %LOG% +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\MpeRelease\MyAlarm.xmp2" /V=%version% /B /UpdateXML >> %LOG% Modified: trunk/plugins/MySleepTimer/Build/BUILD_MySleepTimer.bat =================================================================== --- trunk/plugins/MySleepTimer/Build/BUILD_MySleepTimer.bat 2010-01-20 22:27:48 UTC (rev 3370) +++ trunk/plugins/MySleepTimer/Build/BUILD_MySleepTimer.bat 2010-01-21 00:55:43 UTC (rev 3371) @@ -49,5 +49,5 @@ echo. echo Building MpeExtension package... -"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\MpeRelease\MySleepTimer.xmp2" /V=%version% /B >> %LOG% +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\MpeRelease\MySleepTimer.xmp2" /V=%version% /B /UpdateXML >> %LOG% This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2010-02-04 02:43:06
|
Revision: 3432 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3432&view=rev Author: chef_koch Date: 2010-02-04 01:37:18 +0000 (Thu, 04 Feb 2010) Log Message: ----------- added MusicBrainzRating plugin Added Paths: ----------- trunk/plugins/MusicBrainzRating/ trunk/plugins/MusicBrainzRating/Build/ trunk/plugins/MusicBrainzRating/Build/build.bat trunk/plugins/MusicBrainzRating/Build/filever.exe trunk/plugins/MusicBrainzRating/MpeRelease/ trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.mpe1 trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.xmp2 trunk/plugins/MusicBrainzRating/MpeRelease/update.xml trunk/plugins/MusicBrainzRating/MusicBrainzRating/ trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/ trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/MusicBrainzService.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/Rating.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/Language/ trunk/plugins/MusicBrainzRating/MusicBrainzRating/Language/de.xml trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj.user trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.Designer.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.resx trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/ trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/AssemblyInfo.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/Resources.Designer.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/Resources.resx trunk/plugins/MusicBrainzRating/MusicBrainzRating/Settings.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/Translation.cs trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/ trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/MusicBrainzLogo.png trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/MusicBrainzRating_disabled.png trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/MusicBrainzRating_enabled.png trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/powered_by_musicbrainz.png trunk/plugins/MusicBrainzRating/MusicBrainzRating.5.0.resharper trunk/plugins/MusicBrainzRating/MusicBrainzRating.sln Added: trunk/plugins/MusicBrainzRating/Build/build.bat =================================================================== --- trunk/plugins/MusicBrainzRating/Build/build.bat (rev 0) +++ trunk/plugins/MusicBrainzRating/Build/build.bat 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,28 @@ +@ECHO OFF + + +REM Select program path based on current machine environment +set ProgramDir=%ProgramFiles% +if not "%ProgramFiles(x86)%".=="". set ProgramDir=%ProgramFiles(x86)% + + +REM set logfile where the infos are written to, and clear that file +set LOG=build.log +echo. > %LOG% + + +echo. +echo -= MusicBrainzRating =- +echo -=====================- +echo. + + +echo. +echo Building MusicBrainzRating... +"%WINDIR%\Microsoft.NET\Framework\v3.5\MSBUILD.exe" /target:Rebuild /property:Configuration=Release;AllowUnsafeBlocks=true "..\MusicBrainzRating.sln" >> %LOG% + + +echo. +echo Building MpeExtension package... +"%ProgramDir%\Team MediaPortal\MediaPortal\MpeMaker.exe" "..\MpeRelease\MySleepTimer.xmp2" /B /UpdateXML >> %LOG% + Added: trunk/plugins/MusicBrainzRating/Build/filever.exe =================================================================== (Binary files differ) Property changes on: trunk/plugins/MusicBrainzRating/Build/filever.exe ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.mpe1 =================================================================== (Binary files differ) Property changes on: trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.mpe1 ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.xmp2 =================================================================== --- trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.xmp2 (rev 0) +++ trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.xmp2 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,198 @@ +<?xml version="1.0" encoding="utf-8"?> +<PackageClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Version>2.0</Version> + <Groups> + <Items> + <GroupItem Name="PluginDLL"> + <ParentGroup /> + <DisplayName>PluginDLL</DisplayName> + <DefaulChecked>true</DefaulChecked> + <Description>PluginDLL</Description> + <Files> + <Items> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\MusicBrainzRating\bin\Release\MusicBrainzRating.dll</LocalFileName> + <ZipFileName>Installer{CopyFile}\{bffaac66-8490-4025-a237-15ba59acda9a}-MusicBrainzRating.dll</ZipFileName> + <DestinationFilename>%Plugins%\process\MusicBrainzRating.dll</DestinationFilename> + </FileItem> + </Items> + </Files> + </GroupItem> + </Items> + </Groups> + <Sections> + <Items> + <SectionItem Guid="30c97031-2dc6-46ff-bfba-2976b8017ba3" Name="Welcome Screen" ConditionGroup=""> + <Params> + <Items> + <SectionParam Name="Header text"> + <Value>Welcome to the Extension Installer for [Name]</Value> + <ValueType>String</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Description"> + <Value>This will install [Name] version [Version] on your computer. +It is recommended that you close all other applications before continuing. +Click Next to continue or Cancel to exit Setup.</Value> + <ValueType>String</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Left part image"> + <Value /> + <ValueType>File</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Header image"> + <Value /> + <ValueType>File</ValueType> + <Description>Image in upper right part</Description> + </SectionParam> + </Items> + </Params> + <Actions> + <Items /> + </Actions> + <IncludedGroups /> + <PanelName>Welcome Screen</PanelName> + <WizardButtonsEnum>NextCancel</WizardButtonsEnum> + </SectionItem> + <SectionItem Guid="6099679d-937f-4dc6-b767-f6d6e065aa0d" Name="Install Section" ConditionGroup=""> + <Params> + <Items> + <SectionParam Name="Header Title"> + <Value /> + <ValueType>String</ValueType> + <Description>Header title</Description> + </SectionParam> + <SectionParam Name="Header description"> + <Value /> + <ValueType>String</ValueType> + <Description>Description of section, shown in under section title</Description> + </SectionParam> + <SectionParam Name="Header image"> + <Value /> + <ValueType>File</ValueType> + <Description>Image in upper right part</Description> + </SectionParam> + </Items> + </Params> + <Actions> + <Items> + <ActionItem Name="InstallFiles" ActionType="InstallFiles" ConditionGroup=""> + <Params> + <Items /> + </Params> + <ExecuteLocation>AfterPanelShow</ExecuteLocation> + </ActionItem> + </Items> + </Actions> + <IncludedGroups /> + <PanelName>Install Section</PanelName> + <WizardButtonsEnum>Next</WizardButtonsEnum> + </SectionItem> + <SectionItem Guid="6f06eb11-6575-4bcb-8075-c2d22f2be908" Name="Setup Complete" ConditionGroup=""> + <Params> + <Items> + <SectionParam Name="Header text"> + <Value>The Extension Installer Wizard has successfully installed [Name].</Value> + <ValueType>String</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Left part image"> + <Value /> + <ValueType>File</ValueType> + <Description /> + </SectionParam> + <SectionParam Name="Header image"> + <Value /> + <ValueType>File</ValueType> + <Description>Image in upper right part</Description> + </SectionParam> + </Items> + </Params> + <Actions> + <Items /> + </Actions> + <IncludedGroups /> + <PanelName>Setup Complete</PanelName> + <WizardButtonsEnum>Finish</WizardButtonsEnum> + </SectionItem> + </Items> + </Sections> + <Dependencies> + <Items /> + </Dependencies> + <GeneralInfo> + <Name>MusicBrainzRating</Name> + <Id>ea2aee37-34d8-41d9-a006-8a47930b5f55</Id> + <Author>chefkoch @ Team MediaPortal</Author> + <HomePage>http://forum.team-mediaportal.com/MusicBrainzRating-t77284.html</HomePage> + <ForumPage>http://forum.team-mediaportal.com/MusicBrainzRating-t77284.html</ForumPage> + <UpdateUrl>http://mp-plugins.svn.sourceforge.net/viewvc/mp-plugins/trunk/plugins/MusicBrainzRating/MpeRelease/update.xml</UpdateUrl> + <Version> + <Major>1</Major> + <Minor>0</Minor> + <Build>0</Build> + <Revision>0</Revision> + </Version> + <ExtensionDescription>Using this plugin you are able to submit you ratings for music tracks to musicbrainz.org + +Enter you username and password in the plugin's config, start MediaPortal, play any music file and rate it by pressing 0-5 on your keyboard or remote. + +The plugin requires to find the MusicBrainz track id withing the file's id3v2 or APE tag.</ExtensionDescription> + <VersionDescription> * initial release of the plugin</VersionDescription> + <DevelopmentStatus>Stable</DevelopmentStatus> + <OnlineLocation>http://mp-plugins.svn.sourceforge.net/viewvc/mp-plugins/trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.mpe1</OnlineLocation> + <ReleaseDate>2010-02-04T02:05:55.7643322+01:00</ReleaseDate> + <Tags>music, ratings, now playing, musicbrainz</Tags> + <Location>D:\MediaPortal\mp-plugins\trunk\plugins\MusicBrainzRating\MpeRelease\MusicBrainzRating.mpe1</Location> + <Params> + <Items> + <SectionParam Name="Icon"> + <Value>..\MusicBrainzRating\img\MusicBrainzRating_enabled.png</Value> + <ValueType>File</ValueType> + <Description>The icon file of the package (jpg,png,bmp)</Description> + </SectionParam> + <SectionParam Name="Online Icon"> + <Value>http://mp-plugins.svn.sourceforge.net/viewvc/mp-plugins/trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/MusicBrainzRating_enabled.png</Value> + <ValueType>String</ValueType> + <Description>The icon file of the package stored online (jpg,png,bmp)</Description> + </SectionParam> + <SectionParam Name="Configuration file"> + <Value>%Plugins%\process\MusicBrainzRating.dll</Value> + <ValueType>Template</ValueType> + <Description>The file used to configure the extension. + If have .exe extension the will be executed + If have .dll extension used like MP plugin configuration</Description> + </SectionParam> + </Items> + </Params> + </GeneralInfo> + <UniqueFileList> + <Items> + <FileItem InstallType="CopyFile" SystemFile="false" Modified="true"> + <Param1 /> + <UpdateOption>AlwaysOverwrite</UpdateOption> + <LocalFileName>..\MusicBrainzRating\bin\Release\MusicBrainzRating.dll</LocalFileName> + <ZipFileName>Installer{CopyFile}\{bffaac66-8490-4025-a237-15ba59acda9a}-MusicBrainzRating.dll</ZipFileName> + <DestinationFilename>%Plugins%\process\MusicBrainzRating.dll</DestinationFilename> + </FileItem> + <FileItem InstallType="CopyFile" SystemFile="true" Modified="true"> + <Param1 /> + <UpdateOption>OverwriteIfOlder</UpdateOption> + <LocalFileName>..\MusicBrainzRating\img\MusicBrainzRating_enabled.png</LocalFileName> + <ZipFileName>Installer{CopyFile}\{8d50cf58-614f-4fc4-8ba6-e9e4a60afad6}-MusicBrainzRating_enabled.png</ZipFileName> + <DestinationFilename /> + </FileItem> + </Items> + </UniqueFileList> + <ProjectSettings> + <FolderGroups /> + <ProjectFilename>D:\MediaPortal\mp-plugins\trunk\plugins\MusicBrainzRating\MpeRelease\MusicBrainzRating.xmp2</ProjectFilename> + <UpdatePath1>D:\MediaPortal\mp-plugins\trunk\plugins\MusicBrainzRating\MpeRelease\update.xml</UpdatePath1> + <UpdatePath2 /> + <UpdatePath3 /> + </ProjectSettings> +</PackageClass> \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MpeRelease/update.xml =================================================================== --- trunk/plugins/MusicBrainzRating/MpeRelease/update.xml (rev 0) +++ trunk/plugins/MusicBrainzRating/MpeRelease/update.xml 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="utf-8"?> +<ExtensionCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Items> + <PackageClass> + <Version>2.0</Version> + <Groups> + <Items> + <GroupItem Name="PluginDLL"> + <DisplayName>PluginDLL</DisplayName> + <DefaulChecked>true</DefaulChecked> + <Description>PluginDLL</Description> + <Files> + <Items /> + </Files> + </GroupItem> + </Items> + </Groups> + <Sections> + <Items /> + </Sections> + <Dependencies> + <Items /> + </Dependencies> + <GeneralInfo> + <Name>MusicBrainzRating</Name> + <Id>ea2aee37-34d8-41d9-a006-8a47930b5f55</Id> + <Author>chefkoch @ Team MediaPortal</Author> + <HomePage>http://forum.team-mediaportal.com/MusicBrainzRating-t77284.html</HomePage> + <ForumPage>http://forum.team-mediaportal.com/MusicBrainzRating-t77284.html</ForumPage> + <UpdateUrl>http://mp-plugins.svn.sourceforge.net/viewvc/mp-plugins/trunk/plugins/MusicBrainzRating/MpeRelease/update.xml</UpdateUrl> + <Version> + <Major>1</Major> + <Minor>0</Minor> + <Build>0</Build> + <Revision>0</Revision> + </Version> + <ExtensionDescription>Using this plugin you are able to submit you ratings for music tracks to musicbrainz.org + +Enter you username and password in the plugin's config, start MediaPortal, play any music file and rate it by pressing 0-5 on your keyboard or remote. + +The plugin requires to find the MusicBrainz track id withing the file's id3v2 or APE tag.</ExtensionDescription> + <VersionDescription> * initial release of the plugin</VersionDescription> + <DevelopmentStatus>Stable</DevelopmentStatus> + <OnlineLocation>http://mp-plugins.svn.sourceforge.net/viewvc/mp-plugins/trunk/plugins/MusicBrainzRating/MpeRelease/MusicBrainzRating.mpe1</OnlineLocation> + <ReleaseDate>2010-02-04T02:05:55.7643322+01:00</ReleaseDate> + <Tags>music, ratings, now playing, musicbrainz</Tags> + <Location>D:\MediaPortal\mp-plugins\trunk\plugins\MusicBrainzRating\MpeRelease\MusicBrainzRating.mpe1</Location> + <Params> + <Items> + <SectionParam Name="Icon"> + <Value>D:\MediaPortal\mp-plugins\trunk\plugins\MusicBrainzRating\MusicBrainzRating\img\MusicBrainzRating_enabled.png</Value> + <ValueType>File</ValueType> + <Description>The icon file of the package (jpg,png,bmp)</Description> + </SectionParam> + <SectionParam Name="Online Icon"> + <Value>http://mp-plugins.svn.sourceforge.net/viewvc/mp-plugins/trunk/plugins/MusicBrainzRating/MusicBrainzRating/img/MusicBrainzRating_enabled.png</Value> + <ValueType>String</ValueType> + <Description>The icon file of the package stored online (jpg,png,bmp)</Description> + </SectionParam> + <SectionParam Name="Configuration file"> + <Value>%Plugins%\process\MusicBrainzRating.dll</Value> + <ValueType>Template</ValueType> + <Description>The file used to configure the extension. + If have .exe extension the will be executed + If have .dll extension used like MP plugin configuration</Description> + </SectionParam> + </Items> + </Params> + </GeneralInfo> + <UniqueFileList> + <Items /> + </UniqueFileList> + <ProjectSettings> + <FolderGroups /> + </ProjectSettings> + </PackageClass> + </Items> +</ExtensionCollection> \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/MusicBrainzService.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/MusicBrainzService.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/MusicBrainzService.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,92 @@ +// MusicBrainzService.cs +// +// Copyright (c) 2008 Scott Peterson <lun...@gm...> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.Net; +using System.Net.Cache; +using System.Web; +using System; +using System.IO; +using System.Text; + +namespace MusicBrainz +{ + public class MusicBrainzService + { + string host = "musicbrainz.org"; + int port = 80; + string pathPrefix = "/ws"; + string realm = "musicbrainz.org"; + + NetworkCredential _networkCredential; + + public MusicBrainzService(string user, string password) + { + _networkCredential = new NetworkCredential(user, password); + } + + public void Post(Rating rating) + { + Uri address = new Uri("http://musicbrainz.org/ws/1/rating/"); + + // Create the web request + HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; + + // Add authentication to request + request.Credentials = _networkCredential; + + // Set type to POST + request.Method = "POST"; + request.ContentType = "application/x-www-form-urlencoded"; + + StringBuilder data = new StringBuilder(); + data.Append("entity="); + data.Append(rating._entity); + data.Append("&id="); + data.Append(rating._id); + data.Append("&rating="); + data.Append(rating._rating); + + // Create a byte array of the data we want to send + byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); + + // Set the content length in the request headers + request.ContentLength = byteData.Length; + + // Write data + using (Stream postStream = request.GetRequestStream()) + { + postStream.Write(byteData, 0, byteData.Length); + } + + // Get response + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + // Get the response stream + StreamReader reader = new StreamReader(response.GetResponseStream()); + + // Console application output + Console.WriteLine(reader.ReadToEnd()); + } + } + } +} Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/Rating.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/Rating.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/HelperClasses/Rating.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,19 @@ +using System; +using System.Text; + +namespace MusicBrainz +{ + public class Rating + { + public string _entity = "track"; + public string _id = "26f1ffc7-491b-46e4-b682-21e7bcafebfe"; + public string _rating = "4"; + + public Rating(string entity, string id, string rating) + { + _entity = entity; + _id = id; + _rating = rating; + } + } +} Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/Language/de.xml =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/Language/de.xml (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/Language/de.xml 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- MyAlarm translation file --> +<!-- German (de) --> +<!-- Note: English is the fallback for any strings not found in other languages --> +<strings> + <!-- P --> + <string Field="PluginDescription">Schl\xE4fst auch du beim Fernsehen st\xE4ndig ein? Dann brauchst du dieses Plugin, welches MediaPortal automatisch nach einer bestimmten Zeit ausschaltet.</string> + <!-- S --> + <string Field="SleepingInXMin">Autom. Ausschalten in {0} min.</string> + <string Field="SleepingInXMinPlaytime">Autom. Ausschalten in {0} min. (restl. Wiedergabezeit)</string> + <string Field="SleepTimer">Automatisches Ausschalten</string> + <!-- T --> + <string Field="TimeIsUp">Es ist Schlafenszeit! Gute Nacht.</string> + <string Field="TimerStopped">Sleeptimer ausgeschaltet!</string> +</strings> \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,326 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +using System; +using System.ComponentModel; +using System.Threading; +using System.Timers; +using System.Windows.Forms; +using MediaPortal.Configuration; +using MediaPortal.Dialogs; +using MediaPortal.GUI.Library; +using MediaPortal.Music.Database; +using MediaPortal.Player; +using MediaPortal.Util; +using MusicBrainz; +using Roger.ID3; +using TagLib; +using Timer = System.Timers.Timer; + +namespace MusicBrainzRating +{ + [PluginIcons("MusicBrainzRating.img.MusicBrainzRating_enabled.png", "MusicBrainzRating.img.MusicBrainzRating_disabled.png")] + public class MusicBrainzRating : IPlugin, ISetupForm + { + #region Nested struct: RatingStruct + + private struct RatingStruct + { + public string trackID; + public int rating; + } + + #endregion + + private void GUIWindowManager_OnNewAction(Action action) + { + if (!g_Player.Playing) return; + if (!g_Player.IsMusic) return; + if (GUIWindowManager.ActiveWindow != (int)GUIWindow.Window.WINDOW_MUSIC_PLAYING_NOW) return; + + try + { + switch (action.wID) + { + case Action.ActionType.REMOTE_0: + Log.Debug("REMOTE_0"); + SubmitRating(0); + break; + case Action.ActionType.REMOTE_1: + SubmitRating(1); + break; + case Action.ActionType.REMOTE_2: + SubmitRating(2); + break; + case Action.ActionType.REMOTE_3: + SubmitRating(3); + break; + case Action.ActionType.REMOTE_4: + SubmitRating(4); + break; + case Action.ActionType.REMOTE_5: + SubmitRating(5); + break; + + case Action.ActionType.ACTION_KEY_PRESSED: + switch (action.m_key.KeyChar) + { + case (int)Keys.D0: + Log.Debug("KeyChar0"); + SubmitRating(0); + break; + case (int)Keys.D1: + SubmitRating(1); + break; + case (int)Keys.D2: + SubmitRating(2); + break; + case (int)Keys.D3: + SubmitRating(3); + break; + case (int)Keys.D4: + SubmitRating(4); + break; + case (int)Keys.D5: + SubmitRating(5); + break; + } + break; + } + } + catch (Exception ex) + { + Log.Error(ex); + } + } + + private void SubmitRating(int rating) + { + string file = g_Player.CurrentFile; + if (String.IsNullOrEmpty(file)) return; + + string trackID = GetMusicBrainzTrackID(file); + if (String.IsNullOrEmpty(trackID)) return; + + + RatingStruct rs = new RatingStruct(); + rs.trackID = trackID; + rs.rating = rating; + + ParameterizedThreadStart pts = new ParameterizedThreadStart(SubmitRating); + Thread thread = new Thread(pts); + thread.Start(rs); + } + + private void SubmitRating(object arg) + { + if (!(arg is RatingStruct)) return; + RatingStruct rs = (RatingStruct)arg; + + MusicBrainzService service = new MusicBrainzService(Settings.Username, Settings.Password); + Rating _rating = new Rating("track", rs.trackID, rs.rating.ToString()); + try + { + service.Post(_rating); + } + catch (Exception ex) + { + Log.Error(ex); + } + } + + private static string GetMusicBrainzTrackID(string file) + { + if (String.IsNullOrEmpty(file)) return null; + Settings.VerboseLog("GetMusicBrainzTrackID for {0}", file); + + try + { + // Set the flag to use the standard System Encoding set by the user + // Otherwise Latin1 is used as default, which causes characters in various languages being displayed wrong + TagLib.ByteVector.UseBrokenLatin1Behavior = true; + TagLib.File tag = TagLib.File.Create(file); + if (tag == null) + { + Log.Warn("GetMusicBrainzTrackID: No tag in file - {0}", file); + return null; + } + + string trackID = null; + switch (tag.MimeType) + { + case "taglib/mp3": + { + TagLib.Id3v2.Tag id32_tag = tag.GetTag(TagTypes.Id3v2) as TagLib.Id3v2.Tag; + if (id32_tag != null) + trackID = id32_tag.MusicBrainzTrackId; + } + break; + + case "taglib/ape": + { + TagLib.Ape.Tag apetag = tag.GetTag(TagTypes.Ape, false) as TagLib.Ape.Tag; + if (apetag != null) + trackID = apetag.MusicBrainzTrackId; + } + break; + } + + if (String.IsNullOrEmpty(trackID)) + { + Log.Warn("GetMusicBrainzTrackID: No MusicBrainzTrackId found in file - {0}", file); + return null; + } + + Settings.VerboseLog("GetMusicBrainzTrackID: TrackID {0} found", trackID); + return trackID; + } + catch (Exception ex) + { + Log.Error(ex); + return null; + } + } + + #region ISetupForm Members + + /// <summary> + /// Gets the plugin name. + /// </summary> + /// <returns>The plugin name.</returns> + public string PluginName() + { + return "MusicBrainzRating"; + } + + /// <summary> + /// Gets the description of the plugin. + /// </summary> + /// <returns>The plugin description.</returns> + public string Description() + { + return "Rate a track on MusicPlayingNow screen and submit rating to MusicBrainz.org."; + } + + /// <summary> + /// Gets the plugin author. + /// </summary> + /// <returns>The plugin author.</returns> + public string Author() + { + return "chefkoch"; + } + + /// <summary> + /// Shows the plugin configuration. + /// </summary> + public void ShowPlugin() + { + new MusicBrainzRatingConfig().ShowDialog(); + } + + /// <summary> + /// Determines whether this plugin can be enabled. + /// </summary> + /// <returns> + /// <c>true</c> if this plugin can be enabled; otherwise, <c>false</c>. + /// </returns> + public bool CanEnable() + { + return true; + } + + /// <summary> + /// Gets the window id. + /// </summary> + /// <returns>The window id.</returns> + public int GetWindowId() + { + // WindowID of windowplugin belonging to this setup + // enter your own unique code + return -1; + } + + /// <summary> + /// Defaults enabled. + /// </summary> + /// <returns>true if this plugin is enabled by default, otherwise false.</returns> + public bool DefaultEnabled() + { + return true; + } + + /// <summary> + /// Determines whether this plugin has setup. + /// </summary> + /// <returns> + /// <c>true</c> if this plugin has setup; otherwise, <c>false</c>. + /// </returns> + public bool HasSetup() + { + return true; + } + + /// <summary> + /// If the plugin should have it's own button on the main menu of Mediaportal then it + /// should return true to this method, otherwise if it should not be on home + /// it should return false + /// </summary> + /// <param name="strButtonText">text the button should have</param> + /// <param name="strButtonImage">image for the button, or empty for default</param> + /// <param name="strButtonImageFocus">image for the button, or empty for default</param> + /// <param name="strPictureImage">subpicture for the button or empty for none</param> + /// <returns>true : plugin needs it's own button on home + /// false : plugin does not need it's own button on home</returns> + public bool GetHome(out string strButtonText, out string strButtonImage, + out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = PluginName(); + strButtonImage = String.Empty; + strButtonImageFocus = String.Empty; + strPictureImage = String.Empty; + return false; + } + + #endregion + + #region IPlugin Member + + /// <summary> + /// This method will be called by mediaportal to start your process plugin + /// </summary> + public void Start() + { + Settings.Load(); + + GUIWindowManager.OnNewAction += new OnActionHandler(GUIWindowManager_OnNewAction); + } + + /// <summary> + /// This method will be called by mediaportal to stop your process plugin + /// </summary> + public void Stop() + { + GUIWindowManager.OnNewAction -= new OnActionHandler(GUIWindowManager_OnNewAction); + } + + #endregion + } +} \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,148 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{03856C9E-0926-41DB-A13A-AE3D08285428}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>MusicBrainzRating</RootNamespace> + <AssemblyName>MusicBrainzRating</AssemblyName> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <IsWebBootstrapper>false</IsWebBootstrapper> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>false</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <UseVSHostingProcess>false</UseVSHostingProcess> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <UseVSHostingProcess>false</UseVSHostingProcess> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=1.0.2.0, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Core\bin\Release\Core.dll</HintPath> + </Reference> + <Reference Include="Databases, Version=1.0.4.166, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Databases\bin\Release\Databases.dll</HintPath> + </Reference> + <Reference Include="Dialogs, Version=1.0.2.0, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Dialogs\bin\Release\Dialogs.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="taglib-sharp, Version=2.0.2.17, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.Base\taglib-sharp.dll</HintPath> + </Reference> + <Reference Include="Utils, Version=2.2.7.0, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\Utils\bin\Release\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="HelperClasses\MusicBrainzService.cs" /> + <Compile Include="HelperClasses\Rating.cs" /> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="Translation.cs" /> + <Compile Include="Settings.cs" /> + <Compile Include="MusicBrainzRating.cs"> + </Compile> + <Compile Include="MusicBrainzRatingConfig.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="MusicBrainzRatingConfig.Designer.cs"> + <DependentUpon>MusicBrainzRatingConfig.cs</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="MusicBrainzRatingConfig.resx"> + <SubType>Designer</SubType> + <DependentUpon>MusicBrainzRatingConfig.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="img\MusicBrainzRating_disabled.png" /> + <EmbeddedResource Include="img\MusicBrainzRating_enabled.png" /> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 2.0 %28x86%29</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.0 %28x86%29</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5</ProductName> + <Install>false</Install> + </BootstrapperPackage> + </ItemGroup> + <ItemGroup> + <Content Include="img\MusicBrainzLogo.png" /> + <Content Include="img\powered_by_musicbrainz.png" /> + <Content Include="Language\de.xml" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <PropertyGroup> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj.user =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj.user (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRating.csproj.user 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,16 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <PublishUrlHistory> + </PublishUrlHistory> + <InstallUrlHistory> + </InstallUrlHistory> + <SupportUrlHistory> + </SupportUrlHistory> + <UpdateUrlHistory> + </UpdateUrlHistory> + <BootstrapperUrlHistory> + </BootstrapperUrlHistory> + <FallbackCulture>de-DE</FallbackCulture> + <VerifyUploadedFiles>false</VerifyUploadedFiles> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.Designer.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.Designer.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.Designer.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,150 @@ +namespace MusicBrainzRating +{ + partial class MusicBrainzRatingConfig + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.cancelButton = new System.Windows.Forms.Button(); + this.okButton = new System.Windows.Forms.Button(); + this.passwordTextBox = new System.Windows.Forms.TextBox(); + this.usernameTextBox = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.pictureBox = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + this.SuspendLayout(); + // + // cancelButton + // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(261, 94); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(75, 23); + this.cancelButton.TabIndex = 58; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.Location = new System.Drawing.Point(180, 94); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 23); + this.okButton.TabIndex = 59; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); + // + // passwordTextBox + // + this.passwordTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.passwordTextBox.Location = new System.Drawing.Point(76, 38); + this.passwordTextBox.Name = "passwordTextBox"; + this.passwordTextBox.PasswordChar = '*'; + this.passwordTextBox.Size = new System.Drawing.Size(260, 20); + this.passwordTextBox.TabIndex = 60; + // + // usernameTextBox + // + this.usernameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.usernameTextBox.Location = new System.Drawing.Point(76, 12); + this.usernameTextBox.Name = "usernameTextBox"; + this.usernameTextBox.Size = new System.Drawing.Size(260, 20); + this.usernameTextBox.TabIndex = 61; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(58, 13); + this.label1.TabIndex = 62; + this.label1.Text = "Username:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(56, 13); + this.label2.TabIndex = 63; + this.label2.Text = "Password:"; + // + // pictureBox + // + this.pictureBox.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox.Image = global::MusicBrainzRating.Properties.Resources.powered_by_musicbrainz; + this.pictureBox.Location = new System.Drawing.Point(12, 86); + this.pictureBox.Name = "pictureBox"; + this.pictureBox.Size = new System.Drawing.Size(88, 31); + this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox.TabIndex = 64; + this.pictureBox.TabStop = false; + this.pictureBox.Click += new System.EventHandler(this.pictureBox_Click); + // + // MusicBrainzRatingConfig + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelButton; + this.ClientSize = new System.Drawing.Size(348, 125); + this.Controls.Add(this.pictureBox); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.usernameTextBox); + this.Controls.Add(this.passwordTextBox); + this.Controls.Add(this.okButton); + this.Controls.Add(this.cancelButton); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "MusicBrainzRatingConfig"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "MusicBrainz configuration"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.TextBox passwordTextBox; + private System.Windows.Forms.TextBox usernameTextBox; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.PictureBox pictureBox; + } +} \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,88 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Windows.Forms; +using MediaPortal.GUI.Library; +using MediaPortal.Util; + +namespace MusicBrainzRating +{ + public partial class MusicBrainzRatingConfig : Form + { + public MusicBrainzRatingConfig() + { + InitializeComponent(); + LoadSettings(); + } + + #region Settings + + private void LoadSettings() + { + try + { + Settings.Load(); + + usernameTextBox.Text = Settings.Username; + passwordTextBox.Text = Settings.Password; + } + catch (Exception ex) + { + Log.Error(ex); + } + } + + private void SaveSettings() + { + Settings.Username = usernameTextBox.Text; + Settings.Password = passwordTextBox.Text; + Settings.Save(); + } + + #endregion + + #region Windows Forms events + + private void okButton_Click(object sender, EventArgs e) + { + SaveSettings(); + Close(); + } + + private void cancelButton_Click(object sender, EventArgs e) + { + Close(); + } + + #endregion + + private void pictureBox_Click(object sender, EventArgs e) + { + try + { + Process.Start("http://musicbrainz.org/"); + } + catch { } + } + } +} \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.resx =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.resx (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/MusicBrainzRatingConfig.resx 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/AssemblyInfo.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,58 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("MusicBrainzRating")] +[assembly: AssemblyDescription("Submit track ratings to MusicBrainz.org")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("chefkoch")] +[assembly: AssemblyProduct("MusicBrainzRating")] +[assembly: AssemblyCopyright("Copyright \xA9 2010 chefkoch @ Team MediaPortal")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("216cf21b-9128-47a1-bd0f-33baa87b887f")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file Added: trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/Resources.Designer.cs =================================================================== --- trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/Resources.Designer.cs (rev 0) +++ trunk/plugins/MusicBrainzRating/MusicBrainzRating/Properties/Resources.Designer.cs 2010-02-04 01:37:18 UTC (rev 3432) @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:2.0.50727.4927 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace MusicBrainzRating.Properties { + using System; + + + /// <summary> + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// </summary> + // Die... [truncated message content] |
From: <che...@us...> - 2010-06-15 15:38:30
|
Revision: 3626 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3626&view=rev Author: chemelli_sf Date: 2010-06-15 15:38:15 +0000 (Tue, 15 Jun 2010) Log Message: ----------- TvEngine2(deprecated TV engine embedded in old MP) Added Paths: ----------- trunk/plugins/TvEngine2/ trunk/plugins/TvEngine2/Build Deploy Debug.bat trunk/plugins/TvEngine2/Build Deploy Release.bat trunk/plugins/TvEngine2/Core/ trunk/plugins/TvEngine2/Core/Databases/ trunk/plugins/TvEngine2/Core/Databases/AssemblyInfo.cs trunk/plugins/TvEngine2/Core/Databases/DatabaseFactory.cs trunk/plugins/TvEngine2/Core/Databases/DatabaseUtility.cs trunk/plugins/TvEngine2/Core/Databases/Radio/ trunk/plugins/TvEngine2/Core/Databases/Radio/ADO/ trunk/plugins/TvEngine2/Core/Databases/Radio/ADO/RadioDatabaseADO.cs trunk/plugins/TvEngine2/Core/Databases/Radio/IRadioDatabase.cs trunk/plugins/TvEngine2/Core/Databases/Radio/RadioDatabase.cs trunk/plugins/TvEngine2/Core/Databases/Radio/RadioStation.cs trunk/plugins/TvEngine2/Core/Databases/Radio/SqlLite/ trunk/plugins/TvEngine2/Core/Databases/Radio/SqlLite/RadioDatabaseSqlLite.cs trunk/plugins/TvEngine2/Core/Databases/SQLSelectBuilder.cs trunk/plugins/TvEngine2/Core/Databases/SQLiteClient.cs trunk/plugins/TvEngine2/Core/Databases/SQLiteException.cs trunk/plugins/TvEngine2/Core/Databases/SQLiteResultSet.cs trunk/plugins/TvEngine2/Core/Databases/SqlServerUtility.cs trunk/plugins/TvEngine2/Core/Databases/TV/ trunk/plugins/TvEngine2/Core/Databases/TV/DVBChannel.cs trunk/plugins/TvEngine2/Core/Databases/TV/TVChannel.cs trunk/plugins/TvEngine2/Core/Databases/TV/TVDatabase.cs trunk/plugins/TvEngine2/Core/Databases/TV/TVProgram.cs trunk/plugins/TvEngine2/Core/Databases/TV/TVRecorded.cs trunk/plugins/TvEngine2/Core/Databases/TV/TVRecording.cs trunk/plugins/TvEngine2/Core/Databases/TV/TVUtil.cs trunk/plugins/TvEngine2/Core/Databases/TV/XMLTVImport.cs trunk/plugins/TvEngine2/Core/Databases/TVCapture-Databases.csproj trunk/plugins/TvEngine2/Core/TVCapture/ trunk/plugins/TvEngine2/Core/TVCapture/ATSCSections.cs trunk/plugins/TvEngine2/Core/TVCapture/AssemblyInfo.cs trunk/plugins/TvEngine2/Core/TVCapture/BDA/ trunk/plugins/TvEngine2/Core/TVCapture/BDA/BdaFilterCategories.cs trunk/plugins/TvEngine2/Core/TVCapture/BDA/BdaNetworkProviders.cs trunk/plugins/TvEngine2/Core/TVCapture/BDA/BdaTuningSpaces.cs trunk/plugins/TvEngine2/Core/TVCapture/CaPmt.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/ trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/CommandProcessor.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/ trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/AutoTuneCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/CancelRecordingCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/CardCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/CheckRecordingsCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/PauseCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/SetAudioLanguageCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/StartRadioCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/StopRadioCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/StopRecording.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/StopTimeShiftingCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/StopTvCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/TimeShiftTvCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/Commands/ViewTvCommand.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/EPGProcessor.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/MultiCardBase.cs trunk/plugins/TvEngine2/Core/TVCapture/CommandProcessor/TvCardCollection.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/ trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/AudioSource.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/BitMapInfoHeader.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/Capture/ trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/Capture/MPEG2Demux.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/Capture/VideoCaptureDeviceEx.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/CrossBar.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/CrossbarSource.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/FilterPersist.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/IksPropertyUtils.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/IksPropertyUtils2.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MPSA/ trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MPSA/IATSCGrabber.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MPSA/IEPGGrabber.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MPSA/IMHWGrabber.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MPSA/IStreamAnalyzer.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MetaData/ trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MetaData/AsfMetadataEditor.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MetaData/DvrmsMetadataEditor.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/MetaData/MetadataEditor.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/Mpeg2VideoInfo.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/PropertyPageCollection.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/Source.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/SourceCollection.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/VfwCompressorPropertyPage.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/VideoProcAmp.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/cards/ trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/cards/DigitalEveryWhere.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/cards/TechnoTrend.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/cards/Twinhan.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/cards/VideoCaptureProperties.cs trunk/plugins/TvEngine2/Core/TVCapture/DShowNet/cards/hauppauge.cs trunk/plugins/TvEngine2/Core/TVCapture/DVBDemuxer.cs trunk/plugins/TvEngine2/Core/TVCapture/DVBSections.cs trunk/plugins/TvEngine2/Core/TVCapture/DiskManagement/ trunk/plugins/TvEngine2/Core/TVCapture/DiskManagement/RecordingImporterWorker.cs trunk/plugins/TvEngine2/Core/TVCapture/DvbTextConverter.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/ trunk/plugins/TvEngine2/Core/TVCapture/EPG/AtscEvent.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/DVBEPG.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/EpgChannel.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/EpgChannelUpdate.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/EpgEvent.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/EpgGrabber.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/EpgLanguage.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/Iso6937ToUnicode.cs trunk/plugins/TvEngine2/Core/TVCapture/EPG/MhwEvent.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/ trunk/plugins/TvEngine2/Core/TVCapture/Graphs/Analog/ trunk/plugins/TvEngine2/Core/TVCapture/Graphs/Analog/SinkGraph.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/Analog/SinkGraphEx.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/CaptureCardDefinitions.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/DVB/ trunk/plugins/TvEngine2/Core/TVCapture/Graphs/DVB/DVBGraphBDA.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/DVB/DVBGraphBase.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/DVB/DVBGraphSkyStar2.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/DVB/DVBGraphTTPremium.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/DVB/DVBSkyStar2Helper.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/Dummy/ trunk/plugins/TvEngine2/Core/TVCapture/Graphs/Dummy/DummyGraph.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/GraphFactory.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/GraphHelper.cs trunk/plugins/TvEngine2/Core/TVCapture/Graphs/IGraph.cs trunk/plugins/TvEngine2/Core/TVCapture/Recorder.cs trunk/plugins/TvEngine2/Core/TVCapture/RecorderProperties.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/ trunk/plugins/TvEngine2/Core/TVCapture/Scanning/ATSCTuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/AnalogRadioTuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/AnalogTVTuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/DVBCTuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/DVBSTuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/DVBTTuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scanning/ITuning.cs trunk/plugins/TvEngine2/Core/TVCapture/Scheduler/ trunk/plugins/TvEngine2/Core/TVCapture/Scheduler/Conflictmanager.cs trunk/plugins/TvEngine2/Core/TVCapture/Scheduler/Scheduler.cs trunk/plugins/TvEngine2/Core/TVCapture/TSHelperTools.cs trunk/plugins/TvEngine2/Core/TVCapture/TVCapture.csproj trunk/plugins/TvEngine2/Core/TVCapture/TVCaptureDeviceEx.cs trunk/plugins/TvEngine2/Core/TVCapture/Transcoding/ trunk/plugins/TvEngine2/Core/TVCapture/Transcoding/Transcoder.cs trunk/plugins/TvEngine2/Core/TVCapture/VMR9OSD.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/ trunk/plugins/TvEngine2/Core/TVCapture/teletext/DVBTeletext.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/FastTextDecoder.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/Hamming.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/LogoPage trunk/plugins/TvEngine2/Core/TVCapture/teletext/TeletextDecoder.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/TeletextGrabber.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/TeletextPageCache.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/TeletextPageRenderer.cs trunk/plugins/TvEngine2/Core/TVCapture/teletext/ToptextDecoder.cs trunk/plugins/TvEngine2/Filters/ trunk/plugins/TvEngine2/Filters/MPSA/ trunk/plugins/TvEngine2/Filters/MPSA/MPSA.sln trunk/plugins/TvEngine2/Filters/MPSA/MPSA.vcproj trunk/plugins/TvEngine2/Filters/MPSA/bin/ trunk/plugins/TvEngine2/Filters/MPSA/bin/Debug/ trunk/plugins/TvEngine2/Filters/MPSA/bin/Debug/MPSA.ax trunk/plugins/TvEngine2/Filters/MPSA/bin/Debug/MPSA.pdb trunk/plugins/TvEngine2/Filters/MPSA/bin/Debug/vc90.pdb trunk/plugins/TvEngine2/Filters/MPSA/bin/Release/ trunk/plugins/TvEngine2/Filters/MPSA/bin/Release/MPSA.ax trunk/plugins/TvEngine2/Filters/MPSA/proppage.res trunk/plugins/TvEngine2/Filters/MPSA/source/ trunk/plugins/TvEngine2/Filters/MPSA/source/ATSCParser.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/ATSCParser.h trunk/plugins/TvEngine2/Filters/MPSA/source/CriticalSection.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/CriticalSection.h trunk/plugins/TvEngine2/Filters/MPSA/source/EPGInputPin.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/EPGInputPin.h trunk/plugins/TvEngine2/Filters/MPSA/source/EnterCriticalSection.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/EnterCriticalSection.h trunk/plugins/TvEngine2/Filters/MPSA/source/MHWInputPin1.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/MHWInputPin1.h trunk/plugins/TvEngine2/Filters/MPSA/source/MHWInputPin2.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/MHWInputPin2.h trunk/plugins/TvEngine2/Filters/MPSA/source/MHWParser.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/MHWParser.h trunk/plugins/TvEngine2/Filters/MPSA/source/MPSA.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/MPSA.def trunk/plugins/TvEngine2/Filters/MPSA/source/MPSA.h trunk/plugins/TvEngine2/Filters/MPSA/source/Section.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/Section.h trunk/plugins/TvEngine2/Filters/MPSA/source/SplitterSetup.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/SplitterSetup.h trunk/plugins/TvEngine2/Filters/MPSA/source/TableGrabber.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/TableGrabber.h trunk/plugins/TvEngine2/Filters/MPSA/source/autoString.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/autoString.h trunk/plugins/TvEngine2/Filters/MPSA/source/crc.h trunk/plugins/TvEngine2/Filters/MPSA/source/epgParser.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/epgParser.h trunk/plugins/TvEngine2/Filters/MPSA/source/propertyres.aps trunk/plugins/TvEngine2/Filters/MPSA/source/propertyres.rc trunk/plugins/TvEngine2/Filters/MPSA/source/proppage.cpp trunk/plugins/TvEngine2/Filters/MPSA/source/proppage.h trunk/plugins/TvEngine2/Filters/MPSA/source/resource.h trunk/plugins/TvEngine2/Filters/dvblib/ trunk/plugins/TvEngine2/Filters/dvblib/Source/ trunk/plugins/TvEngine2/Filters/dvblib/Source/B2C2MPEG2AdapterWin.cpp trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/ trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/B2C2_Guids.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/IB2C2MPEG2DataPin.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/b2c2_defs.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/b2c2mpeg2adapter.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/ib2c2mpeg2avctrl.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/ib2c2mpeg2datactrl.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Include/ib2c2mpeg2tunerctrl.h trunk/plugins/TvEngine2/Filters/dvblib/Source/Resource.h trunk/plugins/TvEngine2/Filters/dvblib/Source/dvblib.aps trunk/plugins/TvEngine2/Filters/dvblib/Source/dvblib.cpp trunk/plugins/TvEngine2/Filters/dvblib/Source/dvblib.def trunk/plugins/TvEngine2/Filters/dvblib/Source/dvblib.h trunk/plugins/TvEngine2/Filters/dvblib/Source/dvblib.rc trunk/plugins/TvEngine2/Filters/dvblib/Source/res/ trunk/plugins/TvEngine2/Filters/dvblib/Source/res/dvblib.rc2 trunk/plugins/TvEngine2/Filters/dvblib/Source/stdafx.cpp trunk/plugins/TvEngine2/Filters/dvblib/Source/stdafx.h trunk/plugins/TvEngine2/Filters/dvblib/bin/ trunk/plugins/TvEngine2/Filters/dvblib/bin/Debug/ trunk/plugins/TvEngine2/Filters/dvblib/bin/Debug/dvblib.dll trunk/plugins/TvEngine2/Filters/dvblib/bin/Debug/dvblib.pdb trunk/plugins/TvEngine2/Filters/dvblib/bin/Debug/vc90.pdb trunk/plugins/TvEngine2/Filters/dvblib/bin/Release/ trunk/plugins/TvEngine2/Filters/dvblib/bin/Release/dvblib.dll trunk/plugins/TvEngine2/Filters/dvblib/dvblib.vcproj trunk/plugins/TvEngine2/MP-TvEngine2.xmp trunk/plugins/TvEngine2/Plugins/ trunk/plugins/TvEngine2/Plugins/ExternalPlayers/ trunk/plugins/TvEngine2/Plugins/ExternalPlayers/ExternalPlayers.csproj trunk/plugins/TvEngine2/Plugins/ExternalPlayers/Properties/ trunk/plugins/TvEngine2/Plugins/ExternalPlayers/Properties/AssemblyInfo.cs trunk/plugins/TvEngine2/Plugins/ExternalPlayers/RadioGraph.cs trunk/plugins/TvEngine2/Plugins/ExternalPlayers/RadioTuner.cs trunk/plugins/TvEngine2/Plugins/ExternalPlayers/app.config trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/AssemblyInfo.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ComSkipLauncher/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ComSkipLauncher/ComSkipLauncher.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ComSkipLauncher/Configuration.Designer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ComSkipLauncher/Configuration.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ComSkipLauncher/Configuration.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/Command.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/CommandSet.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/DirecTVSettings.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/KeyMap.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/SerialInterface/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/SerialInterface.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/SetupForm.Designer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/SetupForm.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/SetupForm.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DirecTV Serial Control/TunerPlugin.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DiskManagement/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DiskManagement/DiskManagement.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DiskManagement/EpisodeManagement.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/DiskManagement/RecordingManagement.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/HCWBlaster/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/HCWBlaster/HCWBlaster.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/HCWBlaster/HCWBlasterSetupForm.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/HCWBlaster/HCWBlasterSetupForm.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/HCWBlaster/HCWIRBlaster.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/MPExTuneCmd/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/MPExTuneCmd/MPExTuneCmd.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/MPExTuneCmd/MPExTuneCmdForm.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/MPExTuneCmd/MPExTuneCmdForm.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerException.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerManager.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerScheduler.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerScheduler.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerSchedulerSetupForm.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerSchedulerSetupForm.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/PowerScheduler_disabled.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/TimerException.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/PowerScheduler/WaitableTimer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/ProcessPlugins.csproj trunk/plugins/TvEngine2/Plugins/ProcessPlugins/Properties/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/Properties/Resources.Designer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/Properties/Resources.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TVE2-Recorder/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TVE2-Recorder/TVE2-Recorder.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/TvMovie.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/TvMovieDatabase.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/TvMovieSchedules.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/TvMovieSettings.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/TvMovieSettings.designer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/TvMovieSettings.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/tvmovie.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/tvmovie.ico trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/tvmovie4_topgrafik-nw.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/tvmovie4_topgrafikrepeat-nw.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvMovie/tvmovie_inactive.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/NotifyManager.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/NotifySetupForm.Designer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/NotifySetupForm.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/NotifySetupForm.resx trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/Notifybutton.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/TvNotifies/Notifybutton_disabled.gif trunk/plugins/TvEngine2/Plugins/ProcessPlugins/WebEPG/ trunk/plugins/TvEngine2/Plugins/ProcessPlugins/WebEPG/WebEPGGrabber.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/WebEPG/WebEPGGrabberSettings.Designer.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/WebEPG/WebEPGGrabberSettings.cs trunk/plugins/TvEngine2/Plugins/ProcessPlugins/WebEPG/WebEPGGrabberSettings.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/AssemblyInfo.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUIRadio/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUIRadio/GUIRadio.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUIRadio/GUIRadioGuide.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUIRadio/GUIRadioGuideBase.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUIRadio/Radio.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUIRadio/Radio_disabled.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/GUIEpgSelectBase.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/GUISettings.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Settings.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/SettingsDisabled.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/TV/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/TV/GUISettingsEpg.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/TV/GUISettingsEpgMapping.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/TV/GUISettingsRecordings.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/TV/GUISettingsSortChannels.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/TV/GUISettingsTv.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/ATSC/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/ATSC/GUIWizardATSCScan.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogCity.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogImported.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogRename.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogRenameRadio.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogTune.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogTuneRadio.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogcountry.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Analog/GUIWizardAnalogcountry2.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBC/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBC/GUIWizardDVBCCountry.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBC/GUIWizardDVBCScan.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBS/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBS/GUIWizardDVBSLNBDetails.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBS/GUIWizardDVBSScan.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBS/GUIWizardDVBSSelectLNBs.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBS/GUIWizardDVBSSelectSat.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBT/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBT/GUIWizardDVBTCountry.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/DVBT/GUIWizardDVBTScan.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Epg/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/Epg/GUIWizardEpgSelect.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/GUIWizardCardsDetected.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/GUIWizardFinished.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/GUIWizardScanBase.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUISettings/Wizard/GUIWizardWelcome.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/ConfigRadioStation.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/LaunchGuideScheduler.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Radio.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Radio.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/RadioStations.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/RadioStations.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditCaptureCardForm.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditCaptureCardForm.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditGroupForm.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditGroupForm.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditRadioStationForm.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditRadioStationForm.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditTVChannelForm.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/EditTVChannelForm.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/SearchSHOUTcast.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/TvChannelLookupService.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/TvChannelLookupService.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/editName.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Subdialogs/editName.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVCaptureCards.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVCaptureCards.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVChannels.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVChannels.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVE2_SettingsForm.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVE2_SettingsForm.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVGroups.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVGroups.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVPostProcessing.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVProgramGuide.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVProgramGuide.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVRecording.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVRecording.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVTeletext.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TVTeletext.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/TaskScheduler.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Television.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Television.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_ATSCTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_ATSCTV.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_AnalogRadio.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_AnalogRadio.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_AnalogTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_AnalogTV.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_DVBCTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_DVBCTV.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_DVBSTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_DVBSTV.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_DVBTTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_DVBTTV.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_ScanBase.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Configuration/Wizard_ScanBase.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUIFullScreenTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUIFullscreenTeletext.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUIMiniGuide.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUIRecordedTV.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUIRecordedTVChannel.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUIRecordedTVGenre.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCompress.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCompressAuto.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCompressMain.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCompressSettings.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCompressStatus.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVConflicts.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCropManager.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVCropSettings.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVGuide.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVGuideDialog.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVHome.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVNoSignal.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVOSD.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVOverlay.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVPriorities.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVProgramInfo.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVRecordedInfo.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVScheduler.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVSearch.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVTeletext.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVTeletextBase.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITVZapOSD.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/GUITvGuideBase.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/Television.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/GUITV/TelevisionDisabled.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/Properties/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/Properties/Resources.Designer.cs trunk/plugins/TvEngine2/Plugins/WindowPlugins/Properties/Resources.resx trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/ trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/config.ico trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/icon_folder.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/icon_help.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/icon_refresh.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/mepo_donation.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/mplogo.gif trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/remote.Centarea.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/remote.HidKeys.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/remote.Mce2004.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/remote.Mce2005TT.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/remote.MceVista.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/remote.firedtv.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/splashscreen_configuration.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/wizard_background.png trunk/plugins/TvEngine2/Plugins/WindowPlugins/Resources/wizard_header.jpg trunk/plugins/TvEngine2/Plugins/WindowPlugins/WindowPlugins.csproj trunk/plugins/TvEngine2/Tools/ trunk/plugins/TvEngine2/Tools/TVGuideScheduler/ trunk/plugins/TvEngine2/Tools/TVGuideScheduler/Grabber.cs trunk/plugins/TvEngine2/Tools/TVGuideScheduler/GuideScheduler.cs trunk/plugins/TvEngine2/Tools/TVGuideScheduler/Properties/ trunk/plugins/TvEngine2/Tools/TVGuideScheduler/Properties/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/TVGuideScheduler/TVGuideScheduler.csproj trunk/plugins/TvEngine2/Tools/TVGuideScheduler/XMLTVgrab.cs trunk/plugins/TvEngine2/Tools/WebEPG/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/ListingTimeControl.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/MPCode/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/MPCode/TVProgram.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/MPCode/Xml.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/DataParser.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/DataRowParser.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/DataRows.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/IParser.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/ProgramData.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/WebParser.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Parser/XmlParser.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/RequestBuilder.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Utils/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/Utils/XMLTVExport.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/WebEPG.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/WebEPG.csproj trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/WebEPG.sln trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/WebListingGrabber.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/ChannelGrabberInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/ChannelsList.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/EPGConfig.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/EPGConfigData.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/ChannelInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/DataParserTemplate.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/DataPreference.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/GrabberConfigFile.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/GrabberInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/ListingInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/ModifyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/RequestData.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/SublinkInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/WebParserTemplate.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/WebSearchData.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/XmlField.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/Grabber/XmlParserTemplate.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/WebEPG/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/WebEPG/ChannelMap.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/WebEPG/MergedChannel.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/WebEPG/SiteAuth.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/WebEPG/WebepgConfigFile.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG/config/WebEPG/WebepgInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Main.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Main.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Main.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Program.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Properties/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Properties/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Properties/Resources.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Properties/Resources.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Properties/Settings.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/Properties/Settings.settings trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Designer/WebEPG-Designer.csproj trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/ChannelConfigInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/GrabberConfigInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Properties/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Properties/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Properties/Resources.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Properties/Resources.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Properties/Settings.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Properties/Settings.settings trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Service/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Service/Log.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Service/LogFile.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Service/LogFileWriter.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Service/LogSharedFileWriter.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/TestLog.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Tester.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Tester.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/Tester.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/WebEPG-Tester.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-Tester/WebEPG-Tester.csproj trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/App.ico trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/ChannelInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/Config.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/Config.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/GrabberInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-channels/WebEPG-channels.csproj trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/App.ico trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/ChannelConfigInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/Config.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/Config.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/GrabberConfigInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/ListViewColumnSorter.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/MergedChannelDetails.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/MergedChannelDetails.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/MergedChannelDetails.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/References/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/References/Gentle.Common.dll trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/References/Gentle.Framework.dll trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/References/TVDatabase.dll trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/Selection.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/Selection.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/WebEPG-conf.csproj trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/WebEPGConfigControl.Designer.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/WebEPGConfigControl.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-conf/WebEPGConfigControl.resx trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-xmltv/ trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-xmltv/App.ico trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-xmltv/AssemblyInfo.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-xmltv/CommandLineOptions.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-xmltv/WebEPG-xmltv.cs trunk/plugins/TvEngine2/Tools/WebEPG/WebEPG-xmltv/WebEPG-xmltv.csproj trunk/plugins/TvEngine2/TvEngine2.Base/ trunk/plugins/TvEngine2/TvEngine2.Base/CaptureCardDefinitions.xml trunk/plugins/TvEngine2/TvEngine2.Base/Interop.TunerLib.dll trunk/plugins/TvEngine2/TvEngine2.Base/TaskScheduler.dll trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/ trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/0.8degressWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/1.0degressWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/10degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/11.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/110degreeswest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/119degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/12.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/13degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/15.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/152degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/156degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/160degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/16degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/18.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/19degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/22.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/23.5degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/24.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/26degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/27.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/28degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/30.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/31.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/34.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/36degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/37.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/4.0degressWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/4.8degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/42degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/43.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/45.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/5.0degressWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/53.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/58.0degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/5degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/61.5degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/7.0degressWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/7degreesEast.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/8.0degressWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/82degreeswest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/8degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/91degreesWest.tpl trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Austria-Lampert Vlbg.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Austria-SalzburgAG.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Austria-Telesystem Tirol.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Denmark-TDC.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-HTV.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-J?\195?\164rvenp?\195?\164?\195?\164-Elisa.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Kuopio-DNA.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Lappeenranta.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Oulu-DNA.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Pietarsaari-JNT.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Pori-DNA.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Tampere.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-VLP.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland-Welho.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Finland_Tampere_TTV_DVB-C.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/France-Numericable-Paris.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Germany-Full.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Germany-Iesy.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Germany-KabelBW.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Germany-Primacom.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Germany-Unitymedia NRW.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Ireland-Belfast-Virgin.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/KDG.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Norway-GET-Oslo.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Spain-Euskaltel.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Sweden Comhem G?\195?\182teborg.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Sweden Comhem Stockholm.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Sweden-Tele2-Joenkoeping.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/Swiss-cablecom.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Borculo.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Casema.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Cogas.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Emmen.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Gorredijk.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Groningen.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Hoogeveen.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Multikabel.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Sneek.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Twente.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Winschoten.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-Ziggo.Zwolle.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-caiway.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-harderwijk.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-rekam.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/The Netherlands-ziggo.limburg.brabant.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/United Kingdom-NTL 6887.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/United Kingdom-Telewest.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbc Symbolrate 4583.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbc Symbolrate 5156.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbc Symbolrate 6111.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbc Symbolrate 6667.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbc Symbolrate 6875.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbc Symbolrate 6952.dvbc trunk/plugins/TvEngine2/TvEngine2.Base/Tuningparameters/dvbt.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/channels/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/channels/channels.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AT/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AT/atvplus_at.xml.dev trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AT/programm_kurier_at.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AU/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AU/1-www_sbs_com_au.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AU/4-www_abc_net_au.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AU/5-au_tv_yahoo_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AU/6-minnie_tuhs_org.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/AU/www_ebroadcast_com_au.xml.offline trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/BE/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/BE/www_telemoustique_be.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/BE/www_teveblad_be.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/BR/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/BR/tudonoar_uol_com_br.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CH/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CH/1-www_fernsehen_ch.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CH/2-www_sfdrs_ch.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CH/20min_ch.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CL/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CL/www_vtr_cl.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CZ/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CZ/prepni_atlas_cz.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CZ/tv_sms_cz.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CZ/www_ceskenoviny_cz.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/CZ/www_parabola_cz.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DE/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DE/www_tvinfo_de.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DE/www_tvtoday_de.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DK/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DK/ontv_dk.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DK/tv_tv2_dk.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DK/www_ahot_dk.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/DK/www_dr_dk.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ES/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ES/www_elpais_es.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ES/www_estdt_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ES/www_inout_tv.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ES/www_miguiatv_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/ES/www_programacion-tdt_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FI/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FI/www_nyt_fi.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FI/www_telvis_fi.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FI/www_yle_fi.xml.dev trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/fr_tv_yahoo_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/linternaute_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/programme-television_org.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/telecineobs_nouvelobs_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/telepoche_guidetele_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/FR/www_canalsat_fr.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GB/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GB/1-xmltv_radiotimes_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GB/2-www_mydigiguide_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GB/3-www_bleb_org.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GR/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GR/www_ert_gr.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/GR/www_in_gr.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/HU/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/HU/port_hu.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IE/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IE/www_rte_ie.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IL/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IL/mouse_tv2day_co_il.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IL/tv_walla_co_il.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IT/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IT/alice_it.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IT/wfactory_net.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/IT/www_adnkronos_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/LT/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/LT/www_5kanalas_lt.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/LT/www_tv_lt.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/MY/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/MY/astro_com_my.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/MY/tv9_com_my.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NL/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NL/1-www_tvgids_nl.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NL/2-sbs6_sbs_nl.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NO/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NO/0-www_sol_no_detailed.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NO/1-www_sol_no.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NO/2-fredag_dagbladet_no.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NO/3-fredag_dagbladet2_no.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NO/www_dagenstv_com.xml.Offline trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NZ/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NZ/primetv_co_nz.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/NZ/tvnz_co_nz.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/PL/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/PL/telemagazyn_com_pl.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/PT/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/PT/programas_rtp_pt.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/PT/www_tvcabo_pt.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/RO/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/RO/port_ro.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/SE/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/SE/tvguide_boxer_se.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/SE/www_comhem_se.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/SE/www_dagenstv_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/SE/www_omtv_se.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/SE/www_tv-tabla_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/TW/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/TW/www_chinapost_com_tw.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/US/ trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/US/tv_yahoo_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/US/www_imdb_com.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/commented-grabber.xml trunk/plugins/TvEngine2/TvEngine2.Base/WebEPG/grabbers/grabber-edit-notes.txt trunk/plugins/TvEngine2/TvEngine2.Base/hauppauge.dll trunk/plugins/TvEngine2/TvEngine2.Base/skin/ trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/ trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/TVCropSettings_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/TVMiniGuide_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/TVOSD_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/dialogTvGuide_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/myfsteletext_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/myradio_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/myradioguide_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/myteletext_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvFullScreen_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvNoSignal_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvRecordedInfo_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvcompress_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvcompressauto_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvcompressmain_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Base/skin/Blue3/mytvcompresssettings_TVE2.xml trunk/plugins/TvEngine2/TvEngine2.Ba... [truncated message content] |
From: <fr...@us...> - 2010-06-23 04:45:07
|
Revision: 3645 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3645&view=rev Author: framug Date: 2010-06-23 04:45:00 +0000 (Wed, 23 Jun 2010) Log Message: ----------- Move MesFilms Language files in correct folder. Added Paths: ----------- trunk/plugins/MyFilms/trunk/language/ trunk/plugins/MyFilms/trunk/language/MyFilms/ trunk/plugins/MyFilms/trunk/language/MyFilms/strings_de.xml trunk/plugins/MyFilms/trunk/language/MyFilms/strings_en.xml trunk/plugins/MyFilms/trunk/language/MyFilms/strings_fr.xml Removed Paths: ------------- trunk/plugins/MultiShortcut/MultiShortcut/Language/MyFilms/ Added: trunk/plugins/MyFilms/trunk/language/MyFilms/strings_de.xml =================================================================== --- trunk/plugins/MyFilms/trunk/language/MyFilms/strings_de.xml (rev 0) +++ trunk/plugins/MyFilms/trunk/language/MyFilms/strings_de.xml 2010-06-23 04:45:00 UTC (rev 3645) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="German" characters="255"> + <Section name="unmapped"> + <String id="100">Ansicht: Symbole klein</String> + <String id="101">Ansicht: Liste</String> + <String id="103">Sortiere: Name</String> + <String id="104">Sortiere: Datum</String> + <String id="127">Objekte</String> + <String id="135">Genre</String> + <String id="137">Suche</String> + <String id="154">Speicher:</String> + <String id="174">Kategorie:</String> + <String id="184">Aktualisieren</String> + <String id="199">Regisseur:</String> + <String id="201">Jahr:</String> + <String id="203">Handlung:</String> + <String id="204">Bewertung:</String> + <String id="205">Abstimmung:</String> + <String id="208">Wiedergeben</String> + <String id="209">Nächster Titel</String> + <String id="210">Vorheriger Titel</String> + <String id="299">Laufzeit:</String> + <String id="330">Etwas Geduld bitte...</String> + <String id="342">Filme</String> + <String id="344">Schauspieler</String> + <String id="345">Jahre</String> + <String id="366">Sortiere: Jahr</String> + <String id="367">Sortiere: Bewertung</String> + <String id="369">Alle Filme</String> + <String id="417">Ansicht: Symbole groß</String> + <String id="432">Lösche Film aus der Datenbank</String> + <String id="457">Anordnung ändern</String> + <String id="712">Zurück</String> + <String id="733">Ansicht: Cover</String> + <String id="863">Datei</String> + <String id="875">Aktuelles Programm</String> + <String id="900">Film fortsetzen?</String> + <String id="905">Das Plugin muss noch konfiguriert werden</String> + <String id="921">Datei wird gerade geladen</String> + <String id="931">Wertung</String> + <String id="936">Fortsetzen bei:</String> + <String id="985">Lade Filmdetails</String> + <String id="1951">Festplatte</String> + <String id="2084">Startpunkt</String> + <String id="2085">Endpunkt</String> + <String id="2086">vor</String> + <String id="2087">zurück</String> + <String id="2998">Min</String> + <String id="4514">Cover-Suche</String> + <String id="4515">Cover-Such-Ergebnisse</String> + <String id="5910">Film-Informationen werden geladen</String> + <String id="6022">Video-Konfiguration</String> + <String id="6029">Ändern</String> + <String id="200026">Land</String> + <String id="200036">Manueller Suchlauf</String> + <String id="1079861">Update DB (AMCUpdater)</String> + <String id="1079862">Download Fanart Backdrops Movie</String> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/MyFilms/trunk/language/MyFilms/strings_en.xml =================================================================== --- trunk/plugins/MyFilms/trunk/language/MyFilms/strings_en.xml (rev 0) +++ trunk/plugins/MyFilms/trunk/language/MyFilms/strings_en.xml 2010-06-23 04:45:00 UTC (rev 3645) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="English" characters="255"> + <Section name="unmapped"> + <String id="100">Layout: Icons</String> + <String id="101">Layout: List</String> + <String id="103">Sort by: Name</String> + <String id="104">Sort by: Date</String> + <String id="127">Objects</String> + <String id="135">Genres</String> + <String id="137">Search</String> + <String id="154">Storage</String> + <String id="174">Genre:</String> + <String id="184">Refresh</String> + <String id="199">Director:</String> + <String id="201">Year:</String> + <String id="203">Plot outline:</String> + <String id="204">Rating:</String> + <String id="205">Votes:</String> + <String id="208">Play</String> + <String id="209">Next</String> + <String id="210">Previous</String> + <String id="299">Runtime:</String> + <String id="330">This may take some time...</String> + <String id="342">Movies</String> + <String id="344">Actors</String> + <String id="345">Year</String> + <String id="366">Sort by: Year</String> + <String id="367">Sort by: Rating</String> + <String id="369">Title</String> + <String id="417">Layout: Big Icons</String> + <String id="432">Delete movie from database</String> + <String id="457">Switch View</String> + <String id="712">Back</String> + <String id="733">Layout: Filmstrip</String> + <String id="863">File</String> + <String id="875">Current programme</String> + <String id="900">Resume movie from last time?</String> + <String id="905">You need to configure this plug-in first</String> + <String id="921">File is being downloaded</String> + <String id="931">Rating</String> + <String id="936">Resume from:</String> + <String id="985">Downloading movies details</String> + <String id="1951">Harddisk</String> + <String id="2084">start</String> + <String id="2085">end</String> + <String id="2086">forward</String> + <String id="2087">backward</String> + <String id="2998"> min</String> + <String id="4514">Cover Art Grabber</String> + <String id="4515">Cover art grab search results</String> + <String id="5910">Getting movie info</String> + <String id="6022">Movie set-up</String> + <String id="6029">Change</String> + <String id="200026">Country</String> + <String id="200036">Manual Tuning</String> + <String id="1079861">Update DB (AMCUpdater)</String> + <String id="1079862">Download Fanart Backdrops Movie</String> + </Section> +</Language> \ No newline at end of file Added: trunk/plugins/MyFilms/trunk/language/MyFilms/strings_fr.xml =================================================================== --- trunk/plugins/MyFilms/trunk/language/MyFilms/strings_fr.xml (rev 0) +++ trunk/plugins/MyFilms/trunk/language/MyFilms/strings_fr.xml 2010-06-23 04:45:00 UTC (rev 3645) @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Language name="French" characters="255"> + <Section name="unmapped"> + <String id="100">Vue : Icônes</String> + <String id="101">Vue : Liste</String> + <String id="103">Trier par Nom</String> + <String id="104">Trier par Date d'Ajout</String> + <String id="127">Objets</String> + <String id="135">Genres</String> + <String id="137">Rechercher</String> + <String id="154">Stockage</String> + <String id="174">Genre :</String> + <String id="184">Mise à jour</String> + <String id="199">Réalisateur :</String> + <String id="201">Année :</String> + <String id="203">Synopsis :</String> + <String id="204">Note :</String> + <String id="205">Votes :</String> + <String id="208">Lire</String> + <String id="209">Suivant</String> + <String id="210">Précédent</String> + <String id="299">Durée :</String> + <String id="330">Veuillez patienter...</String> + <String id="342">Films</String> + <String id="344">Acteurs</String> + <String id="345">Année</String> + <String id="366">Trier par Année</String> + <String id="367">Trier par Classement</String> + <String id="369">Titre</String> + <String id="417">Vue : Grandes icônes</String> + <String id="432">Supprimer le film de la BD</String> + <String id="457">Changer de vue</String> + <String id="712">Retour</String> + <String id="733">Vue : Pellicule</String> + <String id="863">Fichier</String> + <String id="875">Programme en cours</String> + <String id="900">Reprendre le film à l'endroit laissé ?</String> + <String id="905">Vous devez d'abord configurer ce plugin</String> + <String id="921">Fichier en cours de téléchargement</String> + <String id="931">Note</String> + <String id="936">Reprendre depuis :</String> + <String id="985">Récupération des informations sur les films</String> + <String id="1951">Disque dur</String> + <String id="2084">début</String> + <String id="2085">fin</String> + <String id="2086">vers l'avant</String> + <String id="2087">vers l'arrière</String> + <String id="2998"> min</String> + <String id="4514">Télécharger les Images des Films</String> + <String id="5910">Télécharger les informations sur le film</String> + <String id="6022">Configuration film</String> + <String id="6029">Change</String> + <String id="200026">Pays</String> + <String id="200036">Recherche manuelle</String> + <String id="1079861">Mise à jour database (AMCUpdater)</String> + <String id="1079862">Télécharger les Images du Film</String> + </Section> +</Language> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2010-06-25 18:04:34
|
Revision: 3646 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3646&view=rev Author: chemelli_sf Date: 2010-06-25 18:04:22 +0000 (Fri, 25 Jun 2010) Log Message: ----------- Italy logos package for Tv and Radio Added Paths: ----------- trunk/plugins/ItalyLogos/ trunk/plugins/ItalyLogos/ItalyLogos v.1.0.0.1.mpe1 trunk/plugins/ItalyLogos/logos/ trunk/plugins/ItalyLogos/logos/Radio/ trunk/plugins/ItalyLogos/logos/Radio/3abn radio.png trunk/plugins/ItalyLogos/logos/Radio/aden radio.png trunk/plugins/ItalyLogos/logos/Radio/bahai radio.png trunk/plugins/ItalyLogos/logos/Radio/bbc arabic.png trunk/plugins/ItalyLogos/logos/Radio/bbc english (europe).png trunk/plugins/ItalyLogos/logos/Radio/bbc persian.png trunk/plugins/ItalyLogos/logos/Radio/capital.png trunk/plugins/ItalyLogos/logos/Radio/capodistria.png trunk/plugins/ItalyLogos/logos/Radio/deejay.png trunk/plugins/ItalyLogos/logos/Radio/emirates fm.png trunk/plugins/ItalyLogos/logos/Radio/fd leggera.png trunk/plugins/ItalyLogos/logos/Radio/france maghreb.png trunk/plugins/ItalyLogos/logos/Radio/hrt-hr1.png trunk/plugins/ItalyLogos/logos/Radio/hrt-hr2.png trunk/plugins/ItalyLogos/logos/Radio/hrt-hr3.png trunk/plugins/ItalyLogos/logos/Radio/ibc tamil radio.png trunk/plugins/ItalyLogos/logos/Radio/isoradio.png trunk/plugins/ItalyLogos/logos/Radio/love radio.png trunk/plugins/ItalyLogos/logos/Radio/m2o.png trunk/plugins/ItalyLogos/logos/Radio/mad radio.png trunk/plugins/ItalyLogos/logos/Radio/medi1radio.png trunk/plugins/ItalyLogos/logos/Radio/megaradio.png trunk/plugins/ItalyLogos/logos/Radio/narodni radio.png trunk/plugins/ItalyLogos/logos/Radio/neo zwei.png trunk/plugins/ItalyLogos/logos/Radio/onda latina.png trunk/plugins/ItalyLogos/logos/Radio/pars tv.png trunk/plugins/ItalyLogos/logos/Radio/peiraiki ekklisia.png trunk/plugins/ItalyLogos/logos/Radio/r1.png trunk/plugins/ItalyLogos/logos/Radio/radio 105.png trunk/plugins/ItalyLogos/logos/Radio/radio azadegan.png trunk/plugins/ItalyLogos/logos/Radio/radio banovina.png trunk/plugins/ItalyLogos/logos/Radio/radio beograd.png trunk/plugins/ItalyLogos/logos/Radio/radio billa.png trunk/plugins/ItalyLogos/logos/Radio/radio capital.png trunk/plugins/ItalyLogos/logos/Radio/radio capri.png trunk/plugins/ItalyLogos/logos/Radio/radio cuore.png trunk/plugins/ItalyLogos/logos/Radio/radio deejay.png trunk/plugins/ItalyLogos/logos/Radio/radio dijla.png trunk/plugins/ItalyLogos/logos/Radio/radio eviva.png trunk/plugins/ItalyLogos/logos/Radio/radio fes.png trunk/plugins/ItalyLogos/logos/Radio/radio iglesias.png trunk/plugins/ItalyLogos/logos/Radio/radio italia.png trunk/plugins/ItalyLogos/logos/Radio/radio kolbe.png trunk/plugins/ItalyLogos/logos/Radio/radio m2o.png trunk/plugins/ItalyLogos/logos/Radio/radio maria.png trunk/plugins/ItalyLogos/logos/Radio/radio marija.png trunk/plugins/ItalyLogos/logos/Radio/radio mater.png trunk/plugins/ItalyLogos/logos/Radio/radio new hope.png trunk/plugins/ItalyLogos/logos/Radio/radio padania.png trunk/plugins/ItalyLogos/logos/Radio/radio posavina.png trunk/plugins/ItalyLogos/logos/Radio/radio quran.png trunk/plugins/ItalyLogos/logos/Radio/radio radicale.png trunk/plugins/ItalyLogos/logos/Radio/radio vaticana.png trunk/plugins/ItalyLogos/logos/Radio/radio zainet.png trunk/plugins/ItalyLogos/logos/Radio/radio zamaneh.png trunk/plugins/ItalyLogos/logos/Radio/radio2 mono.png trunk/plugins/ItalyLogos/logos/Radio/radio3 mono.png trunk/plugins/ItalyLogos/logos/Radio/radio_romania_international.png trunk/plugins/ItalyLogos/logos/Radio/radiodue.png trunk/plugins/ItalyLogos/logos/Radio/radiokolbe schio.png trunk/plugins/ItalyLogos/logos/Radio/radiotre.png trunk/plugins/ItalyLogos/logos/Radio/radiouno.png trunk/plugins/ItalyLogos/logos/Radio/rai radio1.png trunk/plugins/ItalyLogos/logos/Radio/rai radio2.png trunk/plugins/ItalyLogos/logos/Radio/rai radio3.png trunk/plugins/ItalyLogos/logos/Radio/rang a rang.png trunk/plugins/ItalyLogos/logos/Radio/rmf classic.png trunk/plugins/ItalyLogos/logos/Radio/rmf fm (1).png trunk/plugins/ItalyLogos/logos/Radio/rmf maxxx.png trunk/plugins/ItalyLogos/logos/Radio/rnw-1.png trunk/plugins/ItalyLogos/logos/Radio/rnw-2.png trunk/plugins/ItalyLogos/logos/Radio/rnw-4.png trunk/plugins/ItalyLogos/logos/Radio/rock nation.png trunk/plugins/ItalyLogos/logos/Radio/rouge fm.png trunk/plugins/ItalyLogos/logos/Radio/sedaye ashna1.png trunk/plugins/ItalyLogos/logos/Radio/sentra fm.png trunk/plugins/ItalyLogos/logos/Radio/skai radio.png trunk/plugins/ItalyLogos/logos/Radio/the overcomer.png trunk/plugins/ItalyLogos/logos/Radio/tref radio.png trunk/plugins/ItalyLogos/logos/Radio/virgin radio.png trunk/plugins/ItalyLogos/logos/TV/ trunk/plugins/ItalyLogos/logos/TV/logos/ trunk/plugins/ItalyLogos/logos/TV/logos/ canal+ sport.png trunk/plugins/ItalyLogos/logos/TV/logos/ canal+.png trunk/plugins/ItalyLogos/logos/TV/logos/4fun.tv.png trunk/plugins/ItalyLogos/logos/TV/logos/50 canale.png trunk/plugins/ItalyLogos/logos/TV/logos/7 gold 1.png trunk/plugins/ItalyLogos/logos/TV/logos/ab channel.png trunk/plugins/ItalyLogos/logos/TV/logos/ab moteurs.png trunk/plugins/ItalyLogos/logos/TV/logos/ab1.png trunk/plugins/ItalyLogos/logos/TV/logos/acm channel.png trunk/plugins/ItalyLogos/logos/TV/logos/afn atlantic.png trunk/plugins/ItalyLogos/logos/TV/logos/afn freedom radio.png trunk/plugins/ItalyLogos/logos/TV/logos/afn pacific.png trunk/plugins/ItalyLogos/logos/TV/logos/afn spectrum.png trunk/plugins/ItalyLogos/logos/TV/logos/afn sports.png trunk/plugins/ItalyLogos/logos/TV/logos/al fayhaa.png trunk/plugins/ItalyLogos/logos/TV/logos/al forat.png trunk/plugins/ItalyLogos/logos/TV/logos/al jazeera children.png trunk/plugins/ItalyLogos/logos/TV/logos/al jazeera.png trunk/plugins/ItalyLogos/logos/TV/logos/al rasheed tv.png trunk/plugins/ItalyLogos/logos/TV/logos/alice.png trunk/plugins/ItalyLogos/logos/TV/logos/aljazeera documentary.png trunk/plugins/ItalyLogos/logos/TV/logos/alkawthar.png trunk/plugins/ItalyLogos/logos/TV/logos/all tv.png trunk/plugins/ItalyLogos/logos/TV/logos/alpha tv.png trunk/plugins/ItalyLogos/logos/TV/logos/anb.png trunk/plugins/ItalyLogos/logos/TV/logos/animal planet.png trunk/plugins/ItalyLogos/logos/TV/logos/animaux.png trunk/plugins/ItalyLogos/logos/TV/logos/antenna 3 nord est.png trunk/plugins/ItalyLogos/logos/TV/logos/art cinema - arabesque.png trunk/plugins/ItalyLogos/logos/TV/logos/art hekayat - arabesque.png trunk/plugins/ItalyLogos/logos/TV/logos/art hekayat kaman - arabesque.png trunk/plugins/ItalyLogos/logos/TV/logos/art prime sport - arabesque.png trunk/plugins/ItalyLogos/logos/TV/logos/arte (1).png trunk/plugins/ItalyLogos/logos/TV/logos/arte.png trunk/plugins/ItalyLogos/logos/TV/logos/asianet.png trunk/plugins/ItalyLogos/logos/TV/logos/aso sat.png trunk/plugins/ItalyLogos/logos/TV/logos/axn crime.png trunk/plugins/ItalyLogos/logos/TV/logos/axn.png trunk/plugins/ItalyLogos/logos/TV/logos/baby tv.png trunk/plugins/ItalyLogos/logos/TV/logos/baraem.png trunk/plugins/ItalyLogos/logos/TV/logos/bbc arabic (1).png trunk/plugins/ItalyLogos/logos/TV/logos/bbc entertainment.png trunk/plugins/ItalyLogos/logos/TV/logos/bbc persian.png trunk/plugins/ItalyLogos/logos/TV/logos/bbc world news.png trunk/plugins/ItalyLogos/logos/TV/logos/bbc world.png trunk/plugins/ItalyLogos/logos/TV/logos/betting channel.png trunk/plugins/ItalyLogos/logos/TV/logos/beur tv.png trunk/plugins/ItalyLogos/logos/TV/logos/bfm tv (1).png trunk/plugins/ItalyLogos/logos/TV/logos/bfm tv.png trunk/plugins/ItalyLogos/logos/TV/logos/blue hustler.png trunk/plugins/ItalyLogos/logos/TV/logos/boing.png trunk/plugins/ItalyLogos/logos/TV/logos/boomerang +1.png trunk/plugins/ItalyLogos/logos/TV/logos/boomerang.png trunk/plugins/ItalyLogos/logos/TV/logos/bvn.png trunk/plugins/ItalyLogos/logos/TV/logos/caccia e pesca.png trunk/plugins/ItalyLogos/logos/TV/logos/calabria channel.png trunk/plugins/ItalyLogos/logos/TV/logos/camera deputati.png trunk/plugins/ItalyLogos/logos/TV/logos/canal+ sport.png trunk/plugins/ItalyLogos/logos/TV/logos/canal+.png trunk/plugins/ItalyLogos/logos/TV/logos/canale 5.png trunk/plugins/ItalyLogos/logos/TV/logos/canale 55.png trunk/plugins/ItalyLogos/logos/TV/logos/canale italia.png trunk/plugins/ItalyLogos/logos/TV/logos/carisma_tv.png trunk/plugins/ItalyLogos/logos/TV/logos/cartomanzia lotto.png trunk/plugins/ItalyLogos/logos/TV/logos/cartoon +1.png trunk/plugins/ItalyLogos/logos/TV/logos/cartoon network - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/cartoon network.png trunk/plugins/ItalyLogos/logos/TV/logos/casa italia.png trunk/plugins/ItalyLogos/logos/TV/logos/casting channel.png trunk/plugins/ItalyLogos/logos/TV/logos/church channel.png trunk/plugins/ItalyLogos/logos/TV/logos/cielo.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema classics.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema family.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema hits hd.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema italia.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema mania.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema max +1.png trunk/plugins/ItalyLogos/logos/TV/logos/cinema max hd.png trunk/plugins/ItalyLogos/logos/TV/logos/cinemax.png trunk/plugins/ItalyLogos/logos/TV/logos/cinemax2.png trunk/plugins/ItalyLogos/logos/TV/logos/cinquestelle.png trunk/plugins/ItalyLogos/logos/TV/logos/class cnbc.png trunk/plugins/ItalyLogos/logos/TV/logos/class news.png trunk/plugins/ItalyLogos/logos/TV/logos/classica.png trunk/plugins/ItalyLogos/logos/TV/logos/cnbc.png trunk/plugins/ItalyLogos/logos/TV/logos/cnn intl..png trunk/plugins/ItalyLogos/logos/TV/logos/comedy +1.png trunk/plugins/ItalyLogos/logos/TV/logos/coming soon.png trunk/plugins/ItalyLogos/logos/TV/logos/conto tv 1.png trunk/plugins/ItalyLogos/logos/TV/logos/conto tv 2.png trunk/plugins/ItalyLogos/logos/TV/logos/conto tv.png trunk/plugins/ItalyLogos/logos/TV/logos/cooltoon.png trunk/plugins/ItalyLogos/logos/TV/logos/cult.png trunk/plugins/ItalyLogos/logos/TV/logos/current.png trunk/plugins/ItalyLogos/logos/TV/logos/cvbs#1 on 5.png trunk/plugins/ItalyLogos/logos/TV/logos/cvbs#2 on 5.png trunk/plugins/ItalyLogos/logos/TV/logos/d. science.png trunk/plugins/ItalyLogos/logos/TV/logos/d. world.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 1 calcio.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 2 adult.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 2 calcio.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 2 sport.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 3 adult.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 3 calcio.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 4 calcio.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia 5 calcio.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia adult.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia attivazione.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia eros.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia explorer.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia promo.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia sport.png trunk/plugins/ItalyLogos/logos/TV/logos/dahlia xtreme.png trunk/plugins/ItalyLogos/logos/TV/logos/dan lanka.png trunk/plugins/ItalyLogos/logos/TV/logos/deakids +1.png trunk/plugins/ItalyLogos/logos/TV/logos/deakids.png trunk/plugins/ItalyLogos/logos/TV/logos/deejay tv.png trunk/plugins/ItalyLogos/logos/TV/logos/didar global tv.png trunk/plugins/ItalyLogos/logos/TV/logos/discovery +1.png trunk/plugins/ItalyLogos/logos/TV/logos/discovery hd.png trunk/plugins/ItalyLogos/logos/TV/logos/discovery real time.png trunk/plugins/ItalyLogos/logos/TV/logos/discovery sci.png trunk/plugins/ItalyLogos/logos/TV/logos/discovery travel.png trunk/plugins/ItalyLogos/logos/TV/logos/discovery.png trunk/plugins/ItalyLogos/logos/TV/logos/disney ch. +1.png trunk/plugins/ItalyLogos/logos/TV/logos/disney channel - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/disney channel+1 - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/disney channel.png trunk/plugins/ItalyLogos/logos/TV/logos/disney xd +1.png trunk/plugins/ItalyLogos/logos/TV/logos/disney xd.png trunk/plugins/ItalyLogos/logos/TV/logos/disneyinenglish.png trunk/plugins/ItalyLogos/logos/TV/logos/diva futura channel.png trunk/plugins/ItalyLogos/logos/TV/logos/dm digital.png trunk/plugins/ItalyLogos/logos/TV/logos/domo.png trunk/plugins/ItalyLogos/logos/TV/logos/dorcel tv.png trunk/plugins/ItalyLogos/logos/TV/logos/dubai tv.png trunk/plugins/ItalyLogos/logos/TV/logos/e!.png trunk/plugins/ItalyLogos/logos/TV/logos/edusat.png trunk/plugins/ItalyLogos/logos/TV/logos/encyclopedia.png trunk/plugins/ItalyLogos/logos/TV/logos/equidia pro.png trunk/plugins/ItalyLogos/logos/TV/logos/equidia.png trunk/plugins/ItalyLogos/logos/TV/logos/escales.png trunk/plugins/ItalyLogos/logos/TV/logos/esp.png trunk/plugins/ItalyLogos/logos/TV/logos/espn america.png trunk/plugins/ItalyLogos/logos/TV/logos/espn classic.png trunk/plugins/ItalyLogos/logos/TV/logos/ethnic tv.png trunk/plugins/ItalyLogos/logos/TV/logos/euronews.png trunk/plugins/ItalyLogos/logos/TV/logos/eurosport 2.png trunk/plugins/ItalyLogos/logos/TV/logos/eurosport hd.png trunk/plugins/ItalyLogos/logos/TV/logos/eurosport.png trunk/plugins/ItalyLogos/logos/TV/logos/eurosportnews.png trunk/plugins/ItalyLogos/logos/TV/logos/eurotic tv.png trunk/plugins/ItalyLogos/logos/TV/logos/extreme sports.png trunk/plugins/ItalyLogos/logos/TV/logos/fantasy.png trunk/plugins/ItalyLogos/logos/TV/logos/farsi1.png trunk/plugins/ItalyLogos/logos/TV/logos/fashion tv.png trunk/plugins/ItalyLogos/logos/TV/logos/filmbox extra.png trunk/plugins/ItalyLogos/logos/TV/logos/filmbox family.png trunk/plugins/ItalyLogos/logos/TV/logos/filmbox hd.png trunk/plugins/ItalyLogos/logos/TV/logos/filmbox.png trunk/plugins/ItalyLogos/logos/TV/logos/finest tv.png trunk/plugins/ItalyLogos/logos/TV/logos/fox +1.png trunk/plugins/ItalyLogos/logos/TV/logos/fox crime +1.png trunk/plugins/ItalyLogos/logos/TV/logos/fox crime hd.png trunk/plugins/ItalyLogos/logos/TV/logos/fox crime.png trunk/plugins/ItalyLogos/logos/TV/logos/fox hd.png trunk/plugins/ItalyLogos/logos/TV/logos/fox life +1.png trunk/plugins/ItalyLogos/logos/TV/logos/fox life.png trunk/plugins/ItalyLogos/logos/TV/logos/fox news.png trunk/plugins/ItalyLogos/logos/TV/logos/fox retro.png trunk/plugins/ItalyLogos/logos/TV/logos/fox.png trunk/plugins/ItalyLogos/logos/TV/logos/fr 24.png trunk/plugins/ItalyLogos/logos/TV/logos/france 24 (en francais).png trunk/plugins/ItalyLogos/logos/TV/logos/france 24 (in english).png trunk/plugins/ItalyLogos/logos/TV/logos/france 5.png trunk/plugins/ItalyLogos/logos/TV/logos/france ?\195?\180.png trunk/plugins/ItalyLogos/logos/TV/logos/fx.png trunk/plugins/ItalyLogos/logos/TV/logos/gambero rosso.png trunk/plugins/ItalyLogos/logos/TV/logos/game one.png trunk/plugins/ItalyLogos/logos/TV/logos/gbr.png trunk/plugins/ItalyLogos/logos/TV/logos/glamour plus vm18.png trunk/plugins/ItalyLogos/logos/TV/logos/gxt +1.png trunk/plugins/ItalyLogos/logos/TV/logos/gxt.png trunk/plugins/ItalyLogos/logos/TV/logos/hallmark.png trunk/plugins/ItalyLogos/logos/TV/logos/hbo comedy.png trunk/plugins/ItalyLogos/logos/TV/logos/hbo.png trunk/plugins/ItalyLogos/logos/TV/logos/hbo2.png trunk/plugins/ItalyLogos/logos/TV/logos/hd suisse.png trunk/plugins/ItalyLogos/logos/TV/logos/high life tv.png trunk/plugins/ItalyLogos/logos/TV/logos/hip hop tv.png trunk/plugins/ItalyLogos/logos/TV/logos/hiro - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/history +1.png trunk/plugins/ItalyLogos/logos/TV/logos/history.png trunk/plugins/ItalyLogos/logos/TV/logos/holy god.png trunk/plugins/ItalyLogos/logos/TV/logos/hope channel.png trunk/plugins/ItalyLogos/logos/TV/logos/hot club.png trunk/plugins/ItalyLogos/logos/TV/logos/hrt plus.png trunk/plugins/ItalyLogos/logos/TV/logos/hrt-tv1.png trunk/plugins/ItalyLogos/logos/TV/logos/hrt-tv2.png trunk/plugins/ItalyLogos/logos/TV/logos/ictimai tv.png trunk/plugins/ItalyLogos/logos/TV/logos/imam hussein tv.png trunk/plugins/ItalyLogos/logos/TV/logos/inter channel.png trunk/plugins/ItalyLogos/logos/TV/logos/iqraa - arabesque.png trunk/plugins/ItalyLogos/logos/TV/logos/iran beauty.png trunk/plugins/ItalyLogos/logos/TV/logos/iran music.png trunk/plugins/ItalyLogos/logos/TV/logos/irib quran.png trunk/plugins/ItalyLogos/logos/TV/logos/iris.png trunk/plugins/ItalyLogos/logos/TV/logos/ishtar tv.png trunk/plugins/ItalyLogos/logos/TV/logos/islam channel.png trunk/plugins/ItalyLogos/logos/TV/logos/italia 1.png trunk/plugins/ItalyLogos/logos/TV/logos/italia_channel.png trunk/plugins/ItalyLogos/logos/TV/logos/italy sat.png trunk/plugins/ItalyLogos/logos/TV/logos/jetix play.png trunk/plugins/ItalyLogos/logos/TV/logos/jimjam.png trunk/plugins/ItalyLogos/logos/TV/logos/jimmy.png trunk/plugins/ItalyLogos/logos/TV/logos/joi - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/joi+1 - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/juventus channel.png trunk/plugins/ItalyLogos/logos/TV/logos/k+.png trunk/plugins/ItalyLogos/logos/TV/logos/k2.png trunk/plugins/ItalyLogos/logos/TV/logos/kbs_world.png trunk/plugins/ItalyLogos/logos/TV/logos/kicc tv.png trunk/plugins/ItalyLogos/logos/TV/logos/kino polska.png trunk/plugins/ItalyLogos/logos/TV/logos/komala tv.png trunk/plugins/ItalyLogos/logos/TV/logos/korek tv.png trunk/plugins/ItalyLogos/logos/TV/logos/kurd 1.png trunk/plugins/ItalyLogos/logos/TV/logos/kurdistan tv.png trunk/plugins/ItalyLogos/logos/TV/logos/kurdsat.png trunk/plugins/ItalyLogos/logos/TV/logos/la nuova tv.png trunk/plugins/ItalyLogos/logos/TV/logos/la7.png trunk/plugins/ItalyLogos/logos/TV/logos/la7d (1).png trunk/plugins/ItalyLogos/logos/TV/logos/la7d.png trunk/plugins/ItalyLogos/logos/TV/logos/la8.png trunk/plugins/ItalyLogos/logos/TV/logos/lady channel.png trunk/plugins/ItalyLogos/logos/TV/logos/lbc europe - arabesque.png trunk/plugins/ItalyLogos/logos/TV/logos/lei.png trunk/plugins/ItalyLogos/logos/TV/logos/leonardo.png trunk/plugins/ItalyLogos/logos/TV/logos/live!.png trunk/plugins/ItalyLogos/logos/TV/logos/mad greekz.png trunk/plugins/ItalyLogos/logos/TV/logos/mainstream country.png trunk/plugins/ItalyLogos/logos/TV/logos/mangas.png trunk/plugins/ItalyLogos/logos/TV/logos/marcopolo.png trunk/plugins/ItalyLogos/logos/TV/logos/mare tv.png trunk/plugins/ItalyLogos/logos/TV/logos/matchmusic.png trunk/plugins/ItalyLogos/logos/TV/logos/medi1sat.png trunk/plugins/ItalyLogos/logos/TV/logos/mediaset plus.png trunk/plugins/ItalyLogos/logos/TV/logos/mediashopping.png trunk/plugins/ItalyLogos/logos/TV/logos/mediatel.png trunk/plugins/ItalyLogos/logos/TV/logos/mezzo.png trunk/plugins/ItalyLogos/logos/TV/logos/mgm.png trunk/plugins/ItalyLogos/logos/TV/logos/minimini.png trunk/plugins/ItalyLogos/logos/TV/logos/mohabat tv.png trunk/plugins/ItalyLogos/logos/TV/logos/mondo arte.png trunk/plugins/ItalyLogos/logos/TV/logos/moto gp - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/motori tv.png trunk/plugins/ItalyLogos/logos/TV/logos/motors tv.png trunk/plugins/ItalyLogos/logos/TV/logos/mototv.png trunk/plugins/ItalyLogos/logos/TV/logos/movies24.png trunk/plugins/ItalyLogos/logos/TV/logos/mta international.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv brand new.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv gold.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv hits.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv pulse.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv two.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv.png trunk/plugins/ItalyLogos/logos/TV/logos/mtv2 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/mtv2.png trunk/plugins/ItalyLogos/logos/TV/logos/mtvnhd (1).png trunk/plugins/ItalyLogos/logos/TV/logos/mtvnhd.png trunk/plugins/ItalyLogos/logos/TV/logos/music box.png trunk/plugins/ItalyLogos/logos/TV/logos/mya - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/mya+1 - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/napoli mia.png trunk/plugins/ItalyLogos/logos/TV/logos/napoli nova.png trunk/plugins/ItalyLogos/logos/TV/logos/natgeo music.png trunk/plugins/ItalyLogos/logos/TV/logos/natgeo wild.png trunk/plugins/ItalyLogos/logos/TV/logos/natgeoadventur.png trunk/plugins/ItalyLogos/logos/TV/logos/national geo.png trunk/plugins/ItalyLogos/logos/TV/logos/nationalgeo +1.png trunk/plugins/ItalyLogos/logos/TV/logos/nationalgeo hd.png trunk/plugins/ItalyLogos/logos/TV/logos/nationalgeo.png trunk/plugins/ItalyLogos/logos/TV/logos/nessuno tv.png trunk/plugins/ItalyLogos/logos/TV/logos/newroz tv.png trunk/plugins/ItalyLogos/logos/TV/logos/nhk world.png trunk/plugins/ItalyLogos/logos/TV/logos/nick jr.png trunk/plugins/ItalyLogos/logos/TV/logos/noello sat.png trunk/plugins/ItalyLogos/logos/TV/logos/noursat.png trunk/plugins/ItalyLogos/logos/TV/logos/nova promo.png trunk/plugins/ItalyLogos/logos/TV/logos/nt1.png trunk/plugins/ItalyLogos/logos/TV/logos/ntd tv.png trunk/plugins/ItalyLogos/logos/TV/logos/nuvolari.png trunk/plugins/ItalyLogos/logos/TV/logos/oasi tv.png trunk/plugins/ItalyLogos/logos/TV/logos/odeon sat.png trunk/plugins/ItalyLogos/logos/TV/logos/onda latina.png trunk/plugins/ItalyLogos/logos/TV/logos/one minute.png trunk/plugins/ItalyLogos/logos/TV/logos/orange sport.png trunk/plugins/ItalyLogos/logos/TV/logos/pars tv.png trunk/plugins/ItalyLogos/logos/TV/logos/passione pesca.png trunk/plugins/ItalyLogos/logos/TV/logos/patio tv.png trunk/plugins/ItalyLogos/logos/TV/logos/pentagon channel.png trunk/plugins/ItalyLogos/logos/TV/logos/physique tv.png trunk/plugins/ItalyLogos/logos/TV/logos/planete.png trunk/plugins/ItalyLogos/logos/TV/logos/play tv italia.png trunk/plugins/ItalyLogos/logos/TV/logos/playhouse disney +.png trunk/plugins/ItalyLogos/logos/TV/logos/playhouse disney - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/playhouse disney.png trunk/plugins/ItalyLogos/logos/TV/logos/playjam.png trunk/plugins/ItalyLogos/logos/TV/logos/pokeritalia24.png trunk/plugins/ItalyLogos/logos/TV/logos/polonia1.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat cafe.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat film.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat futbol (1).png trunk/plugins/ItalyLogos/logos/TV/logos/polsat futbol.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat news.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat play.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat sport extra.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat sport hd.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat sport.png trunk/plugins/ItalyLogos/logos/TV/logos/polsat.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio 1.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio 2.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio 3.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio 4.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio 5.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio 6.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio hd.png trunk/plugins/ItalyLogos/logos/TV/logos/premium calcio.png trunk/plugins/ItalyLogos/logos/TV/logos/premium cinema.png trunk/plugins/ItalyLogos/logos/TV/logos/premium emotion.png trunk/plugins/ItalyLogos/logos/TV/logos/premium energy.png trunk/plugins/ItalyLogos/logos/TV/logos/premium extra 1.png trunk/plugins/ItalyLogos/logos/TV/logos/premium extra 2.png trunk/plugins/ItalyLogos/logos/TV/logos/premium menu.png trunk/plugins/ItalyLogos/logos/TV/logos/press tv.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 1.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 10.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 11.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 12.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 13.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 14.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 15.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 16.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 17.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 18.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 19.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 2.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 20.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 21.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 22.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 23.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 24.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 25.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 26.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 27.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 28.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 29.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 3.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 30.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 31.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 32.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 33.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 34 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 34.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 35 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 35.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 36 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 36.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 37 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 37.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 38 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 38.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 39.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 4.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 40.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 5.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 6.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 7.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 8.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila 9.png trunk/plugins/ItalyLogos/logos/TV/logos/prima fila.png trunk/plugins/ItalyLogos/logos/TV/logos/pro tv international.png trunk/plugins/ItalyLogos/logos/TV/logos/puglia channel.png trunk/plugins/ItalyLogos/logos/TV/logos/puntosat.png trunk/plugins/ItalyLogos/logos/TV/logos/qoob (1).png trunk/plugins/ItalyLogos/logos/TV/logos/qoob.png trunk/plugins/ItalyLogos/logos/TV/logos/r1.png trunk/plugins/ItalyLogos/logos/TV/logos/radio radio tv.png trunk/plugins/ItalyLogos/logos/TV/logos/rai 4.png trunk/plugins/ItalyLogos/logos/TV/logos/rai gulp.png trunk/plugins/ItalyLogos/logos/TV/logos/rai scuola.png trunk/plugins/ItalyLogos/logos/TV/logos/rai sport pi?\195?\185.png trunk/plugins/ItalyLogos/logos/TV/logos/rai storia.png trunk/plugins/ItalyLogos/logos/TV/logos/rai test hd.png trunk/plugins/ItalyLogos/logos/TV/logos/rai1.png trunk/plugins/ItalyLogos/logos/TV/logos/rai2.png trunk/plugins/ItalyLogos/logos/TV/logos/rai3.png trunk/plugins/ItalyLogos/logos/TV/logos/raidue.png trunk/plugins/ItalyLogos/logos/TV/logos/raimed.png trunk/plugins/ItalyLogos/logos/TV/logos/rainettunosat1.png trunk/plugins/ItalyLogos/logos/TV/logos/rainotizie24.png trunk/plugins/ItalyLogos/logos/TV/logos/raisat cinema.png trunk/plugins/ItalyLogos/logos/TV/logos/raisat extra.png trunk/plugins/ItalyLogos/logos/TV/logos/raisat premium.png trunk/plugins/ItalyLogos/logos/TV/logos/raisat yoyo.png trunk/plugins/ItalyLogos/logos/TV/logos/raitre.png trunk/plugins/ItalyLogos/logos/TV/logos/raiuno.png trunk/plugins/ItalyLogos/logos/TV/logos/rbc-tv.png trunk/plugins/ItalyLogos/logos/TV/logos/redlight premium.png trunk/plugins/ItalyLogos/logos/TV/logos/repubblica tv.png trunk/plugins/ItalyLogos/logos/TV/logos/rete 4.png trunk/plugins/ItalyLogos/logos/TV/logos/rete capri.png trunk/plugins/ItalyLogos/logos/TV/logos/rete oro.png trunk/plugins/ItalyLogos/logos/TV/logos/reteazzurra.png trunk/plugins/ItalyLogos/logos/TV/logos/retequattro.png trunk/plugins/ItalyLogos/logos/TV/logos/rmf classic (1).png trunk/plugins/ItalyLogos/logos/TV/logos/rmf fm.png trunk/plugins/ItalyLogos/logos/TV/logos/rmf maxxx (1).png trunk/plugins/ItalyLogos/logos/TV/logos/rock tv.png trunk/plugins/ItalyLogos/logos/TV/logos/rojhelat.png trunk/plugins/ItalyLogos/logos/TV/logos/rolsat.png trunk/plugins/ItalyLogos/logos/TV/logos/roma channel.png trunk/plugins/ItalyLogos/logos/TV/logos/roma sat.png trunk/plugins/ItalyLogos/logos/TV/logos/rtb virgilio.png trunk/plugins/ItalyLogos/logos/TV/logos/rtbf sat.png trunk/plugins/ItalyLogos/logos/TV/logos/rtl 102.5 tv.png trunk/plugins/ItalyLogos/logos/TV/logos/rtl-tvi.png trunk/plugins/ItalyLogos/logos/TV/logos/rtl9.png trunk/plugins/ItalyLogos/logos/TV/logos/rts sat.png trunk/plugins/ItalyLogos/logos/TV/logos/rtvi info.png trunk/plugins/ItalyLogos/logos/TV/logos/rtvi nashe kino.png trunk/plugins/ItalyLogos/logos/TV/logos/ru tv.png trunk/plugins/ItalyLogos/logos/TV/logos/s-video#1 on 5.png trunk/plugins/ItalyLogos/logos/TV/logos/s-video#2 on 5.png trunk/plugins/ItalyLogos/logos/TV/logos/s24.png trunk/plugins/ItalyLogos/logos/TV/logos/sahar.png trunk/plugins/ItalyLogos/logos/TV/logos/salaam tv.png trunk/plugins/ItalyLogos/logos/TV/logos/salento channel.png trunk/plugins/ItalyLogos/logos/TV/logos/sama dubai.png trunk/plugins/ItalyLogos/logos/TV/logos/sat8.png trunk/plugins/ItalyLogos/logos/TV/logos/sci fi.png trunk/plugins/ItalyLogos/logos/TV/logos/second tv.png trunk/plugins/ItalyLogos/logos/TV/logos/senato.png trunk/plugins/ItalyLogos/logos/TV/logos/sf 1.png trunk/plugins/ItalyLogos/logos/TV/logos/sf info.png trunk/plugins/ItalyLogos/logos/TV/logos/shant tv.png trunk/plugins/ItalyLogos/logos/TV/logos/sicilia channel.png trunk/plugins/ItalyLogos/logos/TV/logos/skai tv.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 1 hd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 1.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 10.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 11.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 12.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 13.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 14.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 2 hd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 2.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 3.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 4.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 5.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 6.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 7.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 8.png trunk/plugins/ItalyLogos/logos/TV/logos/sky calcio 9.png trunk/plugins/ItalyLogos/logos/TV/logos/sky cinema +1.png trunk/plugins/ItalyLogos/logos/TV/logos/sky cinema +24.png trunk/plugins/ItalyLogos/logos/TV/logos/sky cinema 1.png trunk/plugins/ItalyLogos/logos/TV/logos/sky cinema 1hd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky meteo24.png trunk/plugins/ItalyLogos/logos/TV/logos/sky news.png trunk/plugins/ItalyLogos/logos/TV/logos/sky olimpia 1.png trunk/plugins/ItalyLogos/logos/TV/logos/sky play it (1).png trunk/plugins/ItalyLogos/logos/TV/logos/sky play it.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport 1 hd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport 1.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport 2 hd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport 2.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport 3 hd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport 3.png trunk/plugins/ItalyLogos/logos/TV/logos/sky sport extra.png trunk/plugins/ItalyLogos/logos/TV/logos/sky supcalciohd.png trunk/plugins/ItalyLogos/logos/TV/logos/sky supercalcio.png trunk/plugins/ItalyLogos/logos/TV/logos/sky tg24 (1).png trunk/plugins/ItalyLogos/logos/TV/logos/sky tg24.png trunk/plugins/ItalyLogos/logos/TV/logos/sky uno +1.png trunk/plugins/ItalyLogos/logos/TV/logos/sky uno.png trunk/plugins/ItalyLogos/logos/TV/logos/smile of a child.png trunk/plugins/ItalyLogos/logos/TV/logos/snai sat.png trunk/plugins/ItalyLogos/logos/TV/logos/sport active 1.png trunk/plugins/ItalyLogos/logos/TV/logos/sportitalia.png trunk/plugins/ItalyLogos/logos/TV/logos/sportitalia24.png trunk/plugins/ItalyLogos/logos/TV/logos/sports active 2.png trunk/plugins/ItalyLogos/logos/TV/logos/sports active 3.png trunk/plugins/ItalyLogos/logos/TV/logos/sri tv.png trunk/plugins/ItalyLogos/logos/TV/logos/starsat.png trunk/plugins/ItalyLogos/logos/TV/logos/steel - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/steel+1 - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/strana tv.png trunk/plugins/ItalyLogos/logos/TV/logos/studio europa.png trunk/plugins/ItalyLogos/logos/TV/logos/studio universal - premium.png trunk/plugins/ItalyLogos/logos/TV/logos/studio1.png trunk/plugins/ItalyLogos/logos/TV/logos/super tennis.png trunk/plugins/ItalyLogos/logos/TV/logos/supreme master tv.png trunk/plugins/ItalyLogos/logos/TV/logos/suroyo tv.png trunk/plugins/ItalyLogos/logos/TV/logos/suryoyo sat.png trunk/plugins/ItalyLogos/logos/TV/logos/syria satellite channel.png trunk/plugins/ItalyLogos/logos/TV/logos/tak tv.png trunk/plugins/ItalyLogos/logos/TV/logos/tapesh tv2.png trunk/plugins/ItalyLogos/logos/TV/logos/taxi channel.png trunk/plugins/ItalyLogos/logos/TV/logos/tbn europe.png trunk/plugins/ItalyLogos/logos/TV/logos/tbn russia.png trunk/plugins/ItalyLogos/logos/TV/logos/tcm.png trunk/plugins/ItalyLogos/logos/TV/logos/ted.png trunk/plugins/ItalyLogos/logos/TV/logos/tef channel.png trunk/plugins/ItalyLogos/logos/TV/logos/tele a.png trunk/plugins/ItalyLogos/logos/TV/logos/tele5.png trunk/plugins/ItalyLogos/logos/TV/logos/telecolore.png trunk/plugins/ItalyLogos/logos/TV/logos/telefoggia.png trunk/plugins/ItalyLogos/logos/TV/logos/telelombardia.png trunk/plugins/ItalyLogos/logos/TV/logos/telenord.png trunk/plugins/ItalyLogos/logos/TV/logos/telenordest.png trunk/plugins/ItalyLogos/logos/TV/logos/telenova.png trunk/plugins/ItalyLogos/logos/TV/logos/telepace.png trunk/plugins/ItalyLogos/logos/TV/logos/telesud.png trunk/plugins/ItalyLogos/logos/TV/logos/teletirreno.png trunk/plugins/ItalyLogos/logos/TV/logos/televeneto.png trunk/plugins/ItalyLogos/logos/TV/logos/tf1.png trunk/plugins/ItalyLogos/logos/TV/logos/the word network.png trunk/plugins/ItalyLogos/logos/TV/logos/thou tv.png trunk/plugins/ItalyLogos/logos/TV/logos/tishk tv.png trunk/plugins/ItalyLogos/logos/TV/logos/tiziana sat.png trunk/plugins/ItalyLogos/logos/TV/logos/toon disney +1.png trunk/plugins/ItalyLogos/logos/TV/logos/toon disney.png trunk/plugins/ItalyLogos/logos/TV/logos/toscana channel.png trunk/plugins/ItalyLogos/logos/TV/logos/tr2 sat.png trunk/plugins/ItalyLogos/logos/TV/logos/travel channel.png trunk/plugins/ItalyLogos/logos/TV/logos/trentino tv.png trunk/plugins/ItalyLogos/logos/TV/logos/triveneta net.png trunk/plugins/ItalyLogos/logos/TV/logos/trsp.png trunk/plugins/ItalyLogos/logos/TV/logos/tsi1.png trunk/plugins/ItalyLogos/logos/TV/logos/tsi2.png trunk/plugins/ItalyLogos/logos/TV/logos/tsr1.png trunk/plugins/ItalyLogos/logos/TV/logos/tsr2.png trunk/plugins/ItalyLogos/logos/TV/logos/tv biznes.png trunk/plugins/ItalyLogos/logos/TV/logos/tv globo .png trunk/plugins/ItalyLogos/logos/TV/logos/tv moda.png trunk/plugins/ItalyLogos/logos/TV/logos/tv2000.png trunk/plugins/ItalyLogos/logos/TV/logos/tv5monde europe.png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 azzurra (1).png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 azzurra (2).png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 azzurra.png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 lady (1).png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 lady (2).png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 lady.png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 triveneta network (1).png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 triveneta network (2).png trunk/plugins/ItalyLogos/logos/TV/logos/tv7 triveneta network.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn 24.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn cnbc biznes.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn meteo.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn siedem.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn style.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn turbo.png trunk/plugins/ItalyLogos/logos/TV/logos/tvn warszawa.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp 1.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp 2.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp info.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp kultura.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp sport.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp1.png trunk/plugins/ItalyLogos/logos/TV/logos/tvp2.png trunk/plugins/ItalyLogos/logos/TV/logos/ulisse.png trunk/plugins/ItalyLogos/logos/TV/logos/universal.png trunk/plugins/ItalyLogos/logos/TV/logos/vetrina primafila (1).png trunk/plugins/ItalyLogos/logos/TV/logos/vetrina primafila.png trunk/plugins/ItalyLogos/logos/TV/logos/vh1.png trunk/plugins/ItalyLogos/logos/TV/logos/voce.png trunk/plugins/ItalyLogos/logos/TV/logos/world fashion channel.png trunk/plugins/ItalyLogos/logos/TV/logos/x dream tv.png trunk/plugins/ItalyLogos/logos/TV/logos/xxx xtreme.png trunk/plugins/ItalyLogos/logos/TV/logos/yacht & sail.png trunk/plugins/ItalyLogos/logos/TV/logos/zagros tv.png trunk/plugins/ItalyLogos/logos/TV/logos/zone club.png trunk/plugins/ItalyLogos/logos/TV/logos/zone europa.png trunk/plugins/ItalyLogos/logos/TV/logos/zone reality.png trunk/plugins/ItalyLogos/logos/TV/logos/zone romantica.png trunk/plugins/ItalyLogos/package/ trunk/plugins/ItalyLogos/package/ItalyFlag.png trunk/plugins/ItalyLogos/package/ItalyLogos.xmp2 trunk/plugins/ItalyLogos/update.xml Added: trunk/plugins/ItalyLogos/ItalyLogos v.1.0.0.1.mpe1 =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/ItalyLogos v.1.0.0.1.mpe1 ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/3abn radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/3abn radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/aden radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/aden radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/bahai radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/bahai radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/bbc arabic.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/bbc arabic.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/bbc english (europe).png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/bbc english (europe).png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/bbc persian.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/bbc persian.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/capital.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/capital.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/capodistria.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/capodistria.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/deejay.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/deejay.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/emirates fm.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/emirates fm.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/fd leggera.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/fd leggera.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/france maghreb.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/france maghreb.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/hrt-hr1.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/hrt-hr1.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/hrt-hr2.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/hrt-hr2.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/hrt-hr3.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/hrt-hr3.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/ibc tamil radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/ibc tamil radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/isoradio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/isoradio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/love radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/love radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/m2o.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/m2o.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/mad radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/mad radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/medi1radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/medi1radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/megaradio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/megaradio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/narodni radio.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/narodni radio.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/neo zwei.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/neo zwei.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/onda latina.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/onda latina.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/pars tv.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/pars tv.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/peiraiki ekklisia.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/peiraiki ekklisia.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/r1.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/r1.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio 105.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio 105.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio azadegan.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio azadegan.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio banovina.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio banovina.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio beograd.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio beograd.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio billa.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio billa.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio capital.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio capital.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio capri.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio capri.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio cuore.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio cuore.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio deejay.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio deejay.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio dijla.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio dijla.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio eviva.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio eviva.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio fes.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio fes.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio iglesias.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio iglesias.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio italia.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio italia.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio kolbe.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio kolbe.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio m2o.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio m2o.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio maria.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio maria.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio marija.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio marija.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio mater.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio mater.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio new hope.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio new hope.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio padania.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio padania.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio posavina.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio posavina.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio quran.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio quran.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio radicale.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio radicale.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio vaticana.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio vaticana.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio zainet.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio zainet.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio zamaneh.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio zamaneh.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio2 mono.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio2 mono.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio3 mono.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio3 mono.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radio_romania_international.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/ItalyLogos/logos/Radio/radio_romania_international.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ItalyLogos/logos/Radio/radiodue.png... [truncated message content] |
From: <che...@us...> - 2010-06-26 18:21:19
|
Revision: 3649 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3649&view=rev Author: chemelli_sf Date: 2010-06-26 18:21:12 +0000 (Sat, 26 Jun 2010) Log Message: ----------- Satellite Channel Selector based on KingOfSat site Added Paths: ----------- trunk/plugins/SatChannelSelector/ trunk/plugins/SatChannelSelector/AssemblyInfo.cs trunk/plugins/SatChannelSelector/SatChannelSelector.csproj trunk/plugins/SatChannelSelector/SatChannelSelector.sln trunk/plugins/SatChannelSelector/SatChannelSelector.suo trunk/plugins/SatChannelSelector/SatChannelSelectorLauncher.cs trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.cs trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.designer.cs trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.resx trunk/plugins/SatChannelSelector/app.config Added: trunk/plugins/SatChannelSelector/AssemblyInfo.cs =================================================================== --- trunk/plugins/SatChannelSelector/AssemblyInfo.cs (rev 0) +++ trunk/plugins/SatChannelSelector/AssemblyInfo.cs 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,60 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// + +[assembly: AssemblyTitle("SatChannelSelector")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Team MediaPortal")] +[assembly: AssemblyProduct("SatChannelSelector")] +[assembly: AssemblyCopyright("Copyright \xA9 2005-2010 Team MediaPortal")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("0.0.0.1")] +[assembly: AssemblyFileVersion("0.0.0.1")] +[assembly: CLSCompliant(true)] \ No newline at end of file Added: trunk/plugins/SatChannelSelector/SatChannelSelector.csproj =================================================================== --- trunk/plugins/SatChannelSelector/SatChannelSelector.csproj (rev 0) +++ trunk/plugins/SatChannelSelector/SatChannelSelector.csproj 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,143 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{AD20D519-D1AF-484E-ADDE-251F7CA912D9}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>TvEngine</RootNamespace> + <AssemblyName>SatChannelSelector</AssemblyName> + <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <PlatformTarget>AnyCPU</PlatformTarget> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <DebugSymbols>true</DebugSymbols> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>none</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <ItemGroup> + <Reference Include="Gentle.Common, Version=1.5.0.29111, Culture=neutral, PublicKeyToken=80b5de62e27be49b, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TVDatabase\references\Gentle.Common.dll</HintPath> + </Reference> + <Reference Include="Gentle.Framework, Version=1.5.0.29111, Culture=neutral, PublicKeyToken=80b5de62e27be49b, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TVDatabase\references\Gentle.Framework.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Runtime.Serialization"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.ServiceModel"> + <RequiredTargetFramework>3.0</RequiredTargetFramework> + </Reference> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="KingOfSatList.cs" /> + <Compile Include="kingofsatXML.cs" /> + <Compile Include="SatChannelSelectorLauncher.cs" /> + <Compile Include="AssemblyInfo.cs" /> + <Compile Include="SatChannelSelectorSetup.cs"> + </Compile> + <Compile Include="SatChannelSelectorSetup.designer.cs"> + <DependentUpon>SatChannelSelectorSetup.cs</DependentUpon> + </Compile> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\SetupControls\SetupControls.csproj"> + <Project>{A2792D3C-04C1-4A92-9383-A33D59C54D8D}</Project> + <Name>SetupControls</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TvControl\TvControl.csproj"> + <Project>{0DB878C6-1B68-4DC5-B6EF-564B7C08486F}</Project> + <Name>TvControl</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TVDatabase\TvBusinessLayer\TvBusinessLayer.csproj"> + <Project>{58C35C9D-F18D-40F2-8024-24E50D01E9C5}</Project> + <Name>TvBusinessLayer</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TVDatabase\TVDatabase.csproj"> + <Project>{0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD}</Project> + <Name>TVDatabase</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TvLibrary.Interfaces\TvLibrary.Interfaces.csproj"> + <Project>{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}</Project> + <Name>TvLibrary.Interfaces</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\Plugins\PluginBase\PluginBase.csproj"> + <Project>{5EE20DC0-B22B-4BDB-828B-8DC5723A1873}</Project> + <Name>PluginBase</Name> + <Private>False</Private> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="SatChannelSelectorSetup.resx"> + <DependentUpon>SatChannelSelectorSetup.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <None Include="app.config" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <PropertyGroup> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/SatChannelSelector/SatChannelSelector.sln =================================================================== --- trunk/plugins/SatChannelSelector/SatChannelSelector.sln (rev 0) +++ trunk/plugins/SatChannelSelector/SatChannelSelector.sln 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,66 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SatChannelSelector", "SatChannelSelector.csproj", "{AD20D519-D1AF-484E-ADDE-251F7CA912D9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Externals", "Externals", "{B85405E4-6578-4483-8AFC-80ED15C63109}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginBase", "..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\Plugins\PluginBase\PluginBase.csproj", "{5EE20DC0-B22B-4BDB-828B-8DC5723A1873}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetupControls", "..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\SetupControls\SetupControls.csproj", "{A2792D3C-04C1-4A92-9383-A33D59C54D8D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TvBusinessLayer", "..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TVDatabase\TvBusinessLayer\TvBusinessLayer.csproj", "{58C35C9D-F18D-40F2-8024-24E50D01E9C5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TvControl", "..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TvControl\TvControl.csproj", "{0DB878C6-1B68-4DC5-B6EF-564B7C08486F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TVDatabase", "..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TVDatabase\TVDatabase.csproj", "{0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TvLibrary.Interfaces", "..\..\..\..\mediaportal\trunk\TvEngine3\TVLibrary\TvLibrary.Interfaces\TvLibrary.Interfaces.csproj", "{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AD20D519-D1AF-484E-ADDE-251F7CA912D9}.Debug|x86.ActiveCfg = Debug|x86 + {AD20D519-D1AF-484E-ADDE-251F7CA912D9}.Debug|x86.Build.0 = Debug|x86 + {AD20D519-D1AF-484E-ADDE-251F7CA912D9}.Release|x86.ActiveCfg = Release|x86 + {AD20D519-D1AF-484E-ADDE-251F7CA912D9}.Release|x86.Build.0 = Release|x86 + {5EE20DC0-B22B-4BDB-828B-8DC5723A1873}.Debug|x86.ActiveCfg = Debug|x86 + {5EE20DC0-B22B-4BDB-828B-8DC5723A1873}.Debug|x86.Build.0 = Debug|x86 + {5EE20DC0-B22B-4BDB-828B-8DC5723A1873}.Release|x86.ActiveCfg = Release|x86 + {5EE20DC0-B22B-4BDB-828B-8DC5723A1873}.Release|x86.Build.0 = Release|x86 + {A2792D3C-04C1-4A92-9383-A33D59C54D8D}.Debug|x86.ActiveCfg = Debug|x86 + {A2792D3C-04C1-4A92-9383-A33D59C54D8D}.Debug|x86.Build.0 = Debug|x86 + {A2792D3C-04C1-4A92-9383-A33D59C54D8D}.Release|x86.ActiveCfg = Release|x86 + {A2792D3C-04C1-4A92-9383-A33D59C54D8D}.Release|x86.Build.0 = Release|x86 + {58C35C9D-F18D-40F2-8024-24E50D01E9C5}.Debug|x86.ActiveCfg = Debug|x86 + {58C35C9D-F18D-40F2-8024-24E50D01E9C5}.Debug|x86.Build.0 = Debug|x86 + {58C35C9D-F18D-40F2-8024-24E50D01E9C5}.Release|x86.ActiveCfg = Release|x86 + {58C35C9D-F18D-40F2-8024-24E50D01E9C5}.Release|x86.Build.0 = Release|x86 + {0DB878C6-1B68-4DC5-B6EF-564B7C08486F}.Debug|x86.ActiveCfg = Debug|x86 + {0DB878C6-1B68-4DC5-B6EF-564B7C08486F}.Debug|x86.Build.0 = Debug|x86 + {0DB878C6-1B68-4DC5-B6EF-564B7C08486F}.Release|x86.ActiveCfg = Release|x86 + {0DB878C6-1B68-4DC5-B6EF-564B7C08486F}.Release|x86.Build.0 = Release|x86 + {0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD}.Debug|x86.ActiveCfg = Debug|x86 + {0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD}.Debug|x86.Build.0 = Debug|x86 + {0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD}.Release|x86.ActiveCfg = Release|x86 + {0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD}.Release|x86.Build.0 = Release|x86 + {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|x86.ActiveCfg = Debug|x86 + {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|x86.Build.0 = Debug|x86 + {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|x86.ActiveCfg = Release|x86 + {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {5EE20DC0-B22B-4BDB-828B-8DC5723A1873} = {B85405E4-6578-4483-8AFC-80ED15C63109} + {A2792D3C-04C1-4A92-9383-A33D59C54D8D} = {B85405E4-6578-4483-8AFC-80ED15C63109} + {58C35C9D-F18D-40F2-8024-24E50D01E9C5} = {B85405E4-6578-4483-8AFC-80ED15C63109} + {0DB878C6-1B68-4DC5-B6EF-564B7C08486F} = {B85405E4-6578-4483-8AFC-80ED15C63109} + {0FD8DEAE-37A4-49CC-A7BE-E86E0E0D85BD} = {B85405E4-6578-4483-8AFC-80ED15C63109} + {AE752FB4-7450-4150-9BAD-19EFA9D2AC37} = {B85405E4-6578-4483-8AFC-80ED15C63109} + EndGlobalSection +EndGlobal Added: trunk/plugins/SatChannelSelector/SatChannelSelector.suo =================================================================== (Binary files differ) Property changes on: trunk/plugins/SatChannelSelector/SatChannelSelector.suo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SatChannelSelector/SatChannelSelectorLauncher.cs =================================================================== --- trunk/plugins/SatChannelSelector/SatChannelSelectorLauncher.cs (rev 0) +++ trunk/plugins/SatChannelSelector/SatChannelSelectorLauncher.cs 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,104 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +using System; +using TvLibrary.Log; +using TvControl; +using SetupTv; + +namespace TvEngine +{ + public class SatChannelSelectorLauncher : ITvServerPlugin + { + #region Properties + + /// <summary> + /// returns the name of the plugin + /// </summary> + public string Name + { + get { return "Satellite Channels Selector"; } + } + + /// <summary> + /// returns the version of the plugin + /// </summary> + public string Version + { + get { return "0.0.0.2"; } + } + + /// <summary> + /// returns the author of the plugin + /// </summary> + public string Author + { + get { return "chemelli & cecet23"; } + } + + /// <summary> + /// returns if the plugin should only run on the master server + /// or also on slave servers + /// </summary> + public bool MasterOnly + { + get { return false; } + } + + #endregion Properties + + #region IPlugin Members + + [CLSCompliant(false)] + public void Start(IController controller) + { + Log.Info("plugin: SatChannelSelector start"); + + LoadSettings(); + } + + public void Stop() + { + Log.Info("plugin: SatChannelSelector stop"); + } + + [CLSCompliant(false)] + public SectionSettings Setup + { + get { return new SetupTv.Sections.SatChannelSelectorSetup(); } + } + + #endregion + + #region Implementation + + internal static void LoadSettings() + { + + } + + internal static void SaveSettings() + { + + } + + #endregion Implementation + } +} \ No newline at end of file Added: trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.cs =================================================================== --- trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.cs (rev 0) +++ trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.cs 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,235 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +using System; +using System.IO; +using System.Windows.Forms; +using System.Xml; +using ChannelsXML; +using TvEngine; +using TvLibrary.Log; +using Channel = ChannelsXML.Channel; + +namespace SetupTv.Sections +{ + [CLSCompliant(false)] + public partial class SatChannelSelectorSetup : SectionSettings + { + public const string BouquetFta = "...Only \"Free To Air\"..."; + public const string BouquetEncrypted = "...Only \"Encrypted\"..."; + + #region Constructor + + public SatChannelSelectorSetup() + { + InitializeComponent(); + } + + #endregion Constructor + + #region SetupTv.SectionSettings + + private kingofsatXML _kingofsatXml; + + public override void OnSectionDeActivated() + { + Log.Info("SatChannelSelector: Configuration deactivated"); + + SatChannelSelectorLauncher.SaveSettings(); + + foreach (Channel ch in _kingofsatXml.Channels) + { + const string val = "ITALY"; + + if (ch.Language.ToUpper() == val) + { + Log.Info("Channel <{0}><{1}> has ({2}) language. Why ?", ch.Name, ch.Provider, val); + } + } + + base.OnSectionDeActivated(); + } + + public override void OnSectionActivated() + { + Log.Info("SatChannelSelector: Configuration activated"); + + SatChannelSelectorLauncher.LoadSettings(); + + ClearSatelliteLists(); + LoadSatellitesData(); + + base.OnSectionActivated(); + } + + #endregion SetupTv.SectionSettings + + private void ClearSatelliteLists() + { + // + comboBoxSatellite1.Items.Clear(); + comboBoxSatellite2.Items.Clear(); + comboBoxSatellite3.Items.Clear(); + comboBoxSatellite4.Items.Clear(); + } + + private void CleanChannelLists() + { + // + listBoxTypeBouquet.Items.Clear(); + listBoxTypeBouquet.Items.Add(BouquetFta); + listBoxTypeBouquet.Items.Add(BouquetEncrypted); + // + checkedListBoxLanguage.Items.Clear(); + // + } + + private void LoadSatellitesData() + { + var kingofsatList = new KingOfSatList(); + kingofsatList.GrabPage(); + kingofsatList.ParsePage(); + + + foreach (KingOfSatList.Satellite sat in kingofsatList.SatelliteList) + { + comboBoxSatellite1.Items.Add(sat.Name); + comboBoxSatellite2.Items.Add(sat.Name); + comboBoxSatellite3.Items.Add(sat.Name); + comboBoxSatellite4.Items.Add(sat.Name); + } + } + + private void LoadChannelsData(string url) + { + _kingofsatXml = new kingofsatXML + { + SiteURL = url + }; + _kingofsatXml.GrabPage(); + _kingofsatXml.ParsePage(); + + foreach (var ch in _kingofsatXml.Channels) + { + if (!String.IsNullOrEmpty(ch.Provider) && !listBoxTypeBouquet.Items.Contains(ch.Provider.ToLower())) + { + listBoxTypeBouquet.Items.Add(ch.Provider.ToLower()); + } + if (!String.IsNullOrEmpty(ch.Language) && !checkedListBoxLanguage.Items.Contains(ch.Language.ToUpper())) + { + checkedListBoxLanguage.Items.Add(ch.Language.ToUpper()); + } + } + } + + private void buttonGrab_Click(object sender, EventArgs e) + { + CleanChannelLists(); + + if (!String.IsNullOrEmpty(comboBoxSatellite1.Text)) + { + LoadChannelsData(comboBoxSatellite1.Text); + } + if (!String.IsNullOrEmpty(comboBoxSatellite2.Text)) + { + LoadChannelsData(comboBoxSatellite2.Text); + } + if (!String.IsNullOrEmpty(comboBoxSatellite3.Text)) + { + LoadChannelsData(comboBoxSatellite3.Text); + } + if (!String.IsNullOrEmpty(comboBoxSatellite4.Text)) + { + LoadChannelsData(comboBoxSatellite4.Text); + } + } + + private void buttonExportXml_Click(object sender, EventArgs e) + { + XmlDocument xmlDoc = new XmlDocument(); + + string filename = Path.Combine(Log.GetPathName(), listBoxGroupBy.Text.Split('|')[0].Trim() + ".xml"); + if (File.Exists(filename)) + { + File.Delete(filename); + } + + //Declaration + XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null); + xmlDoc.AppendChild(xmlDeclaration); + + // + XmlNode rootElement = xmlDoc.CreateElement("tvserver"); + XmlNode nodechannels = xmlDoc.CreateElement("channels"); + + foreach (Channel channel in _kingofsatXml.Channels) + { + bool testBouquet; + switch (listBoxTypeBouquet.Text) + { + case BouquetFta: + testBouquet = channel.FreeToAir; + break; + case BouquetEncrypted: + testBouquet = !channel.FreeToAir; + break; + default: + testBouquet = channel.Provider.ToLower() == listBoxTypeBouquet.Text; + break; + } + + bool testLanguage = checkedListBoxLanguage.CheckedItems.Contains(channel.Language.ToUpper()); + + //Log.Debug("ExportXml: channel -<{0}>-<{1}>-<{2}>-: TestBouquet:{3}, TestLanguage:{4}", channel.Name, channel.FreeToAir, channel.Language.ToUpper(), testBouquet, testLanguage); + + if (testLanguage && testBouquet) + { + Log.Debug("ExportXml: channel <{0}> exported in {3}", channel.Name, filename); + + XmlNode nodechannel = xmlDoc.CreateElement("channel"); + + AddAttribute(nodechannel, "Name", channel.Name); + AddAttribute(nodechannel, "Provider", channel.Provider); + AddAttribute(nodechannel, "Language", channel.Language); + AddAttribute(nodechannel, "FreeToAir", channel.FreeToAir.ToString()); + AddAttribute(nodechannel, "IsTv", channel.IsTv.ToString()); + + nodechannels.AppendChild(nodechannel); + } + else + { + //Log.Debug("ExportXml: channel <{0}> skipped", channel.Name); + } + } + rootElement.AppendChild(nodechannels); + xmlDoc.AppendChild(rootElement); + xmlDoc.Save(filename); + MessageBox.Show("Export completed !"); + } + + + private static void AddAttribute(XmlNode node, string tagName, string tagValue) + { + XmlAttribute attr = node.OwnerDocument.CreateAttribute(tagName); + attr.InnerText = tagValue; + node.Attributes.Append(attr); + } + } +} Added: trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.designer.cs =================================================================== --- trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.designer.cs (rev 0) +++ trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.designer.cs 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,333 @@ +#region Copyright (C) 2005-2010 Team MediaPortal + +// Copyright (C) 2005-2010 Team MediaPortal +// http://www.team-mediaportal.com +// +// MediaPortal is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// MediaPortal is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>. + +#endregion + +namespace SetupTv.Sections +{ + + partial class SatChannelSelectorSetup + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.groupBoxSat = new System.Windows.Forms.GroupBox(); + this.comboBoxSatellite4 = new System.Windows.Forms.ComboBox(); + this.comboBoxSatellite3 = new System.Windows.Forms.ComboBox(); + this.comboBoxSatellite2 = new System.Windows.Forms.ComboBox(); + this.comboBoxSatellite1 = new System.Windows.Forms.ComboBox(); + this.comboBoxDiseQc4 = new System.Windows.Forms.ComboBox(); + this.comboBoxDiseQc3 = new System.Windows.Forms.ComboBox(); + this.comboBoxDiseQc2 = new System.Windows.Forms.ComboBox(); + this.comboBoxDiseQc1 = new System.Windows.Forms.ComboBox(); + this.groupBoxLang = new System.Windows.Forms.GroupBox(); + this.checkedListBoxLanguage = new System.Windows.Forms.CheckedListBox(); + this.groupBoxTypeBouquet = new System.Windows.Forms.GroupBox(); + this.listBoxTypeBouquet = new System.Windows.Forms.ListBox(); + this.groupBoxGroupBy = new System.Windows.Forms.GroupBox(); + this.listBoxGroupBy = new System.Windows.Forms.ListBox(); + this.buttonExportXml = new System.Windows.Forms.Button(); + this.buttonSaveDb = new System.Windows.Forms.Button(); + this.buttonGrab = new System.Windows.Forms.Button(); + this.groupBoxSat.SuspendLayout(); + this.groupBoxLang.SuspendLayout(); + this.groupBoxTypeBouquet.SuspendLayout(); + this.groupBoxGroupBy.SuspendLayout(); + this.SuspendLayout(); + // + // groupBoxSat + // + this.groupBoxSat.Controls.Add(this.comboBoxSatellite4); + this.groupBoxSat.Controls.Add(this.comboBoxSatellite3); + this.groupBoxSat.Controls.Add(this.comboBoxSatellite2); + this.groupBoxSat.Controls.Add(this.comboBoxSatellite1); + this.groupBoxSat.Controls.Add(this.comboBoxDiseQc4); + this.groupBoxSat.Controls.Add(this.comboBoxDiseQc3); + this.groupBoxSat.Controls.Add(this.comboBoxDiseQc2); + this.groupBoxSat.Controls.Add(this.comboBoxDiseQc1); + this.groupBoxSat.Location = new System.Drawing.Point(11, 8); + this.groupBoxSat.Name = "groupBoxSat"; + this.groupBoxSat.Size = new System.Drawing.Size(419, 146); + this.groupBoxSat.TabIndex = 0; + this.groupBoxSat.TabStop = false; + this.groupBoxSat.Text = "Satellite(s)"; + // + // comboBoxSatellite4 + // + this.comboBoxSatellite4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxSatellite4.FormattingEnabled = true; + this.comboBoxSatellite4.Location = new System.Drawing.Point(152, 110); + this.comboBoxSatellite4.Name = "comboBoxSatellite4"; + this.comboBoxSatellite4.Size = new System.Drawing.Size(229, 21); + this.comboBoxSatellite4.Sorted = true; + this.comboBoxSatellite4.TabIndex = 7; + // + // comboBoxSatellite3 + // + this.comboBoxSatellite3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxSatellite3.FormattingEnabled = true; + this.comboBoxSatellite3.Location = new System.Drawing.Point(152, 82); + this.comboBoxSatellite3.Name = "comboBoxSatellite3"; + this.comboBoxSatellite3.Size = new System.Drawing.Size(229, 21); + this.comboBoxSatellite3.Sorted = true; + this.comboBoxSatellite3.TabIndex = 6; + // + // comboBoxSatellite2 + // + this.comboBoxSatellite2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxSatellite2.FormattingEnabled = true; + this.comboBoxSatellite2.Location = new System.Drawing.Point(152, 54); + this.comboBoxSatellite2.Name = "comboBoxSatellite2"; + this.comboBoxSatellite2.Size = new System.Drawing.Size(229, 21); + this.comboBoxSatellite2.Sorted = true; + this.comboBoxSatellite2.TabIndex = 5; + // + // comboBoxSatellite1 + // + this.comboBoxSatellite1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxSatellite1.FormattingEnabled = true; + this.comboBoxSatellite1.Location = new System.Drawing.Point(152, 25); + this.comboBoxSatellite1.Name = "comboBoxSatellite1"; + this.comboBoxSatellite1.Size = new System.Drawing.Size(229, 21); + this.comboBoxSatellite1.Sorted = true; + this.comboBoxSatellite1.TabIndex = 4; + // + // comboBoxDiseQc4 + // + this.comboBoxDiseQc4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxDiseQc4.FormattingEnabled = true; + this.comboBoxDiseQc4.Items.AddRange(new object[] { + "None", + "SimpleA", + "SimpleB", + "Level1AA", + "Level1AB", + "Level1BA", + "Level1BB"}); + this.comboBoxDiseQc4.Location = new System.Drawing.Point(68, 110); + this.comboBoxDiseQc4.Name = "comboBoxDiseQc4"; + this.comboBoxDiseQc4.Size = new System.Drawing.Size(57, 21); + this.comboBoxDiseQc4.TabIndex = 3; + // + // comboBoxDiseQc3 + // + this.comboBoxDiseQc3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxDiseQc3.FormattingEnabled = true; + this.comboBoxDiseQc3.Items.AddRange(new object[] { + "None", + "SimpleA", + "SimpleB", + "Level1AA", + "Level1AB", + "Level1BA", + "Level1BB"}); + this.comboBoxDiseQc3.Location = new System.Drawing.Point(68, 82); + this.comboBoxDiseQc3.Name = "comboBoxDiseQc3"; + this.comboBoxDiseQc3.Size = new System.Drawing.Size(57, 21); + this.comboBoxDiseQc3.TabIndex = 2; + // + // comboBoxDiseQc2 + // + this.comboBoxDiseQc2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxDiseQc2.FormattingEnabled = true; + this.comboBoxDiseQc2.Items.AddRange(new object[] { + "None", + "SimpleA", + "SimpleB", + "Level1AA", + "Level1AB", + "Level1BA", + "Level1BB"}); + this.comboBoxDiseQc2.Location = new System.Drawing.Point(68, 54); + this.comboBoxDiseQc2.Name = "comboBoxDiseQc2"; + this.comboBoxDiseQc2.Size = new System.Drawing.Size(57, 21); + this.comboBoxDiseQc2.TabIndex = 1; + // + // comboBoxDiseQc1 + // + this.comboBoxDiseQc1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxDiseQc1.FormattingEnabled = true; + this.comboBoxDiseQc1.Items.AddRange(new object[] { + "None", + "SimpleA", + "SimpleB", + "Level1AA", + "Level1AB", + "Level1BA", + "Level1BB"}); + this.comboBoxDiseQc1.Location = new System.Drawing.Point(68, 25); + this.comboBoxDiseQc1.Name = "comboBoxDiseQc1"; + this.comboBoxDiseQc1.Size = new System.Drawing.Size(57, 21); + this.comboBoxDiseQc1.TabIndex = 0; + // + // groupBoxLang + // + this.groupBoxLang.Controls.Add(this.checkedListBoxLanguage); + this.groupBoxLang.Location = new System.Drawing.Point(222, 160); + this.groupBoxLang.Name = "groupBoxLang"; + this.groupBoxLang.Size = new System.Drawing.Size(208, 167); + this.groupBoxLang.TabIndex = 1; + this.groupBoxLang.TabStop = false; + this.groupBoxLang.Text = "Language"; + // + // checkedListBoxLanguage + // + this.checkedListBoxLanguage.FormattingEnabled = true; + this.checkedListBoxLanguage.Location = new System.Drawing.Point(13, 23); + this.checkedListBoxLanguage.Name = "checkedListBoxLanguage"; + this.checkedListBoxLanguage.Size = new System.Drawing.Size(182, 124); + this.checkedListBoxLanguage.Sorted = true; + this.checkedListBoxLanguage.TabIndex = 0; + // + // groupBoxTypeBouquet + // + this.groupBoxTypeBouquet.Controls.Add(this.listBoxTypeBouquet); + this.groupBoxTypeBouquet.Location = new System.Drawing.Point(11, 160); + this.groupBoxTypeBouquet.Name = "groupBoxTypeBouquet"; + this.groupBoxTypeBouquet.Size = new System.Drawing.Size(205, 167); + this.groupBoxTypeBouquet.TabIndex = 2; + this.groupBoxTypeBouquet.TabStop = false; + this.groupBoxTypeBouquet.Text = "Type / Bouquet"; + // + // listBoxTypeBouquet + // + this.listBoxTypeBouquet.FormattingEnabled = true; + this.listBoxTypeBouquet.Location = new System.Drawing.Point(12, 24); + this.listBoxTypeBouquet.Name = "listBoxTypeBouquet"; + this.listBoxTypeBouquet.Size = new System.Drawing.Size(179, 121); + this.listBoxTypeBouquet.Sorted = true; + this.listBoxTypeBouquet.TabIndex = 0; + // + // groupBoxGroupBy + // + this.groupBoxGroupBy.Controls.Add(this.listBoxGroupBy); + this.groupBoxGroupBy.Location = new System.Drawing.Point(11, 332); + this.groupBoxGroupBy.Name = "groupBoxGroupBy"; + this.groupBoxGroupBy.Size = new System.Drawing.Size(419, 61); + this.groupBoxGroupBy.TabIndex = 3; + this.groupBoxGroupBy.TabStop = false; + this.groupBoxGroupBy.Text = "Group by"; + // + // listBoxGroupBy + // + this.listBoxGroupBy.FormattingEnabled = true; + this.listBoxGroupBy.Items.AddRange(new object[] { + "Satelite - Type | (es. \"HotBird Free To Air\")", + "Satellite - Lang | (es. \"Astra - ITA\")", + "Bouquet | (es. \"Sky Italia\")"}); + this.listBoxGroupBy.Location = new System.Drawing.Point(12, 24); + this.listBoxGroupBy.Name = "listBoxGroupBy"; + this.listBoxGroupBy.Size = new System.Drawing.Size(394, 17); + this.listBoxGroupBy.TabIndex = 0; + // + // buttonExportXml + // + this.buttonExportXml.Location = new System.Drawing.Point(340, 402); + this.buttonExportXml.Name = "buttonExportXml"; + this.buttonExportXml.Size = new System.Drawing.Size(90, 23); + this.buttonExportXml.TabIndex = 4; + this.buttonExportXml.Text = "Export to XML"; + this.buttonExportXml.UseVisualStyleBackColor = true; + this.buttonExportXml.Click += new System.EventHandler(this.buttonExportXml_Click); + // + // buttonSaveDb + // + this.buttonSaveDb.Location = new System.Drawing.Point(245, 402); + this.buttonSaveDb.Name = "buttonSaveDb"; + this.buttonSaveDb.Size = new System.Drawing.Size(75, 23); + this.buttonSaveDb.TabIndex = 5; + this.buttonSaveDb.Text = "Save to DB"; + this.buttonSaveDb.UseVisualStyleBackColor = true; + // + // buttonGrab + // + this.buttonGrab.Location = new System.Drawing.Point(107, 402); + this.buttonGrab.Name = "buttonGrab"; + this.buttonGrab.Size = new System.Drawing.Size(118, 23); + this.buttonGrab.TabIndex = 6; + this.buttonGrab.Text = "Grab data from Web"; + this.buttonGrab.UseVisualStyleBackColor = true; + this.buttonGrab.Click += new System.EventHandler(this.buttonGrab_Click); + // + // SatChannelSelectorSetup + // + this.Controls.Add(this.buttonGrab); + this.Controls.Add(this.buttonSaveDb); + this.Controls.Add(this.buttonExportXml); + this.Controls.Add(this.groupBoxGroupBy); + this.Controls.Add(this.groupBoxTypeBouquet); + this.Controls.Add(this.groupBoxLang); + this.Controls.Add(this.groupBoxSat); + this.Name = "SatChannelSelectorSetup"; + this.Size = new System.Drawing.Size(443, 438); + this.groupBoxSat.ResumeLayout(false); + this.groupBoxLang.ResumeLayout(false); + this.groupBoxTypeBouquet.ResumeLayout(false); + this.groupBoxGroupBy.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBoxSat; + private System.Windows.Forms.GroupBox groupBoxLang; + private System.Windows.Forms.GroupBox groupBoxTypeBouquet; + private System.Windows.Forms.CheckedListBox checkedListBoxLanguage; + private System.Windows.Forms.ListBox listBoxTypeBouquet; + private System.Windows.Forms.GroupBox groupBoxGroupBy; + private System.Windows.Forms.ListBox listBoxGroupBy; + private System.Windows.Forms.ComboBox comboBoxSatellite4; + private System.Windows.Forms.ComboBox comboBoxSatellite3; + private System.Windows.Forms.ComboBox comboBoxSatellite2; + private System.Windows.Forms.ComboBox comboBoxSatellite1; + private System.Windows.Forms.ComboBox comboBoxDiseQc4; + private System.Windows.Forms.ComboBox comboBoxDiseQc3; + private System.Windows.Forms.ComboBox comboBoxDiseQc2; + private System.Windows.Forms.ComboBox comboBoxDiseQc1; + private System.Windows.Forms.Button buttonExportXml; + private System.Windows.Forms.Button buttonSaveDb; + private System.Windows.Forms.Button buttonGrab; + + + + } +} Added: trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.resx =================================================================== --- trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.resx (rev 0) +++ trunk/plugins/SatChannelSelector/SatChannelSelectorSetup.resx 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file Added: trunk/plugins/SatChannelSelector/app.config =================================================================== --- trunk/plugins/SatChannelSelector/app.config (rev 0) +++ trunk/plugins/SatChannelSelector/app.config 2010-06-26 18:21:12 UTC (rev 3649) @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <system.serviceModel> + <bindings /> + <client /> + </system.serviceModel> +</configuration> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <che...@us...> - 2010-06-30 10:04:37
|
Revision: 3662 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3662&view=rev Author: chef_koch Date: 2010-06-30 10:04:30 +0000 (Wed, 30 Jun 2010) Log Message: ----------- updated ReSharper project files Added Paths: ----------- trunk/plugins/FritzBox/FritzBox.5.0.resharper trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.5.0.resharper trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.5.0.resharper trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.5.0.resharper trunk/plugins/TVServerMonitor/TVServerMonitor.5.0.resharper Removed Paths: ------------- trunk/plugins/FritzBox/FritzBox.4.5.resharper trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.4.5.resharper trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.4.5.resharper trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.4.5.resharper trunk/plugins/TVServerMonitor/TVServerMonitor.4.5.resharper Deleted: trunk/plugins/FritzBox/FritzBox.4.5.resharper =================================================================== --- trunk/plugins/FritzBox/FritzBox.4.5.resharper 2010-06-30 05:49:04 UTC (rev 3661) +++ trunk/plugins/FritzBox/FritzBox.4.5.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -1,6 +0,0 @@ -<Configuration> - <CodeStyleSettings> - <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> - <Sharing>EXTERNAL</Sharing> - </CodeStyleSettings> -</Configuration> \ No newline at end of file Copied: trunk/plugins/FritzBox/FritzBox.5.0.resharper (from rev 3656, trunk/plugins/FritzBox/FritzBox.4.5.resharper) =================================================================== --- trunk/plugins/FritzBox/FritzBox.5.0.resharper (rev 0) +++ trunk/plugins/FritzBox/FritzBox.5.0.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -0,0 +1,6 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> + </CodeStyleSettings> +</Configuration> \ No newline at end of file Deleted: trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.4.5.resharper =================================================================== --- trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.4.5.resharper 2010-06-30 05:49:04 UTC (rev 3661) +++ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.4.5.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -1,6 +0,0 @@ -<Configuration> - <CodeStyleSettings> - <ExternalPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> - <Sharing>EXTERNAL</Sharing> - </CodeStyleSettings> -</Configuration> \ No newline at end of file Copied: trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.5.0.resharper (from rev 3656, trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.4.5.resharper) =================================================================== --- trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.5.0.resharper (rev 0) +++ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Suite.5.0.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -0,0 +1,6 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> + </CodeStyleSettings> +</Configuration> \ No newline at end of file Deleted: trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.4.5.resharper =================================================================== --- trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.4.5.resharper 2010-06-30 05:49:04 UTC (rev 3661) +++ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.4.5.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -1,6 +0,0 @@ -<Configuration> - <CodeStyleSettings> - <ExternalPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> - <Sharing>EXTERNAL</Sharing> - </CodeStyleSettings> -</Configuration> \ No newline at end of file Copied: trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.5.0.resharper (from rev 3656, trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.4.5.resharper) =================================================================== --- trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.5.0.resharper (rev 0) +++ trunk/plugins/IR Server Suite/MediaPortal Plugins/MediaPortal plugins.5.0.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -0,0 +1,6 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> + </CodeStyleSettings> +</Configuration> \ No newline at end of file Deleted: trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.4.5.resharper =================================================================== --- trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.4.5.resharper 2010-06-30 05:49:04 UTC (rev 3661) +++ trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.4.5.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -1,6 +0,0 @@ -<Configuration> - <CodeStyleSettings> - <ExternalPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> - <Sharing>EXTERNAL</Sharing> - </CodeStyleSettings> -</Configuration> \ No newline at end of file Copied: trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.5.0.resharper (from rev 3656, trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.4.5.resharper) =================================================================== --- trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.5.0.resharper (rev 0) +++ trunk/plugins/IR Server Suite/Virtual Remote/Virtual Remote.5.0.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -0,0 +1,6 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath>..\..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> + </CodeStyleSettings> +</Configuration> \ No newline at end of file Deleted: trunk/plugins/TVServerMonitor/TVServerMonitor.4.5.resharper =================================================================== --- trunk/plugins/TVServerMonitor/TVServerMonitor.4.5.resharper 2010-06-30 05:49:04 UTC (rev 3661) +++ trunk/plugins/TVServerMonitor/TVServerMonitor.4.5.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -1,6 +0,0 @@ -<Configuration> - <CodeStyleSettings> - <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> - <Sharing>EXTERNAL</Sharing> - </CodeStyleSettings> -</Configuration> \ No newline at end of file Copied: trunk/plugins/TVServerMonitor/TVServerMonitor.5.0.resharper (from rev 3656, trunk/plugins/TVServerMonitor/TVServerMonitor.4.5.resharper) =================================================================== --- trunk/plugins/TVServerMonitor/TVServerMonitor.5.0.resharper (rev 0) +++ trunk/plugins/TVServerMonitor/TVServerMonitor.5.0.resharper 2010-06-30 10:04:30 UTC (rev 3662) @@ -0,0 +1,6 @@ +<Configuration> + <CodeStyleSettings> + <ExternalPath>..\..\..\..\MediaPortal\trunk\mediaportal\MediaPortal.ReSharper.xml</ExternalPath> + <Sharing>EXTERNAL</Sharing> + </CodeStyleSettings> +</Configuration> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Sil...@us...> - 2010-07-29 19:43:25
|
Revision: 3679 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3679&view=rev Author: SilentException Date: 2010-07-29 19:43:17 +0000 (Thu, 29 Jul 2010) Log Message: ----------- KeyboardInputPlugin v2.3 Added Paths: ----------- trunk/plugins/KeyboardInputPlugin/ trunk/plugins/KeyboardInputPlugin/COPYING trunk/plugins/KeyboardInputPlugin/HISTORY.HTML trunk/plugins/KeyboardInputPlugin/HISTORY_files/ trunk/plugins/KeyboardInputPlugin/HISTORY_files/colorschememapping.xml trunk/plugins/KeyboardInputPlugin/HISTORY_files/filelist.xml trunk/plugins/KeyboardInputPlugin/HISTORY_files/themedata.thmx trunk/plugins/KeyboardInputPlugin/README.HTML trunk/plugins/KeyboardInputPlugin/README_files/ trunk/plugins/KeyboardInputPlugin/README_files/colorschememapping.xml trunk/plugins/KeyboardInputPlugin/README_files/filelist.xml trunk/plugins/KeyboardInputPlugin/README_files/image001.png trunk/plugins/KeyboardInputPlugin/README_files/image003.jpg trunk/plugins/KeyboardInputPlugin/README_files/themedata.thmx trunk/plugins/KeyboardInputPlugin/Release/ trunk/plugins/KeyboardInputPlugin/Release/InputDeviceMappings/ trunk/plugins/KeyboardInputPlugin/Release/InputDeviceMappings/examples/ trunk/plugins/KeyboardInputPlugin/Release/InputDeviceMappings/examples/Asus S-Presso Remote/ trunk/plugins/KeyboardInputPlugin/Release/InputDeviceMappings/examples/Asus S-Presso Remote/Keyboard.xml trunk/plugins/KeyboardInputPlugin/Release/InputDeviceMappings/examples/MCE-Remote based mappings/ trunk/plugins/KeyboardInputPlugin/Release/InputDeviceMappings/examples/MCE-Remote based mappings/Keyboard.xml trunk/plugins/KeyboardInputPlugin/Release/Keyboard Input Handler Test/ trunk/plugins/KeyboardInputPlugin/Release/plugins/ trunk/plugins/KeyboardInputPlugin/Release/plugins/process/ trunk/plugins/KeyboardInputPlugin/Source/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/KeyboardHandlerTest.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/KeyboardHandlerTest.csproj trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/Properties/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/Properties/AssemblyInfo.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/AxInterop.WMPLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/Bass.Net.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/BassRegistration.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/Core.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/DirectShowLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/Interop.WMPLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/Interop.X10.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/Ionic.Zip.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/KeyboardHandlerTest.exe trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/KeyboardHandlerTest.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/MediaPortal.Support.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/RemotePlugins.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/Utils.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/edtftpnet-1.2.2.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/bin/Debug/taglib-sharp.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Debug/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Debug/KeyboardHandlerTest.csproj.FileListAbsolute.txt trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Debug/KeyboardHandlerTest.exe trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Debug/KeyboardHandlerTest.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Debug/TempPE/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Release/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Release/KeyboardHandlerTest.csproj.FileListAbsolute.txt trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Release/KeyboardHandlerTest.exe trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Release/KeyboardHandlerTest.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Release/ResolveAssemblyReference.cache trunk/plugins/KeyboardInputPlugin/Source/KeyboardHandlerTest/obj/Release/TempPE/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/InputHandler.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/InputMappingForm.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/InputMappingForm.resx trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/Keyboard.jpg trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/KeyboardDisabled.jpg trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/KeyboardHandler.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/KeyboardInputPlugin.csproj trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/KeyboardInputPluginMain.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/Properties/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/Properties/AssemblyInfo.cs trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/References/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/References/MouseKeyboardLibrary.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/AxInterop.WMPLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/Bass.Net.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/BassRegistration.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/Core.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/DirectShowLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/Interop.WMPLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/Interop.X10.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/Ionic.Zip.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/KeyboardInputPlugin.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/KeyboardInputPlugin.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/MediaPortal.Support.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/RemotePlugins.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/Utils.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/edtftpnet-1.2.2.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Debug/taglib-sharp.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/AxInterop.WMPLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/Bass.Net.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/BassRegistration.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/Core.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/DirectShowLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/Interop.WMPLib.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/Interop.X10.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/Ionic.Zip.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/KeyboardInputPlugin.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/KeyboardInputPlugin.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/KeyboardInputPlugin.zip trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/MediaPortal.Support.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/MouseKeyboardLibrary.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/RemotePlugins.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/Utils.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/edtftpnet-1.2.2.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/bin/Release/taglib-sharp.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/KeyboardInputPlugin.InputMappingForm.resources trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/KeyboardInputPlugin.csproj.FileListAbsolute.txt trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/KeyboardInputPlugin.csproj.GenerateResource.Cache trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/KeyboardInputPlugin.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/KeyboardInputPlugin.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/Refactor/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Debug/TempPE/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/KeyboardInputPlugin.InputMappingForm.resources trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/KeyboardInputPlugin.csproj.FileListAbsolute.txt trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/KeyboardInputPlugin.csproj.GenerateResource.Cache trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/KeyboardInputPlugin.dll trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/KeyboardInputPlugin.pdb trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/Refactor/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/ResGen.read.1.tlog trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/ResGen.write.1.tlog trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/ResolveAssemblyReference.cache trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin/obj/Release/TempPE/ trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin.sln trunk/plugins/KeyboardInputPlugin/Source/KeyboardInputPlugin.suo Added: trunk/plugins/KeyboardInputPlugin/COPYING =================================================================== --- trunk/plugins/KeyboardInputPlugin/COPYING (rev 0) +++ trunk/plugins/KeyboardInputPlugin/COPYING 2010-07-29 19:43:17 UTC (rev 3679) @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. Added: trunk/plugins/KeyboardInputPlugin/HISTORY.HTML =================================================================== --- trunk/plugins/KeyboardInputPlugin/HISTORY.HTML (rev 0) +++ trunk/plugins/KeyboardInputPlugin/HISTORY.HTML 2010-07-29 19:43:17 UTC (rev 3679) @@ -0,0 +1,664 @@ +<html xmlns:v="urn:schemas-microsoft-com:vml" +xmlns:o="urn:schemas-microsoft-com:office:office" +xmlns:w="urn:schemas-microsoft-com:office:word" +xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" +xmlns="http://www.w3.org/TR/REC-html40"> + +<head> +<meta http-equiv=Content-Type content="text/html; charset=windows-1252"> +<meta name=ProgId content=Word.Document> +<meta name=Generator content="Microsoft Word 12"> +<meta name=Originator content="Microsoft Word 12"> +<link rel=File-List href="HISTORY_files/filelist.xml"> +<title>History</title> +<!--[if gte mso 9]><xml> + <o:DocumentProperties> + <o:Author>Ruud Senden</o:Author> + <o:LastAuthor>mitjas</o:LastAuthor> + <o:Revision>12</o:Revision> + <o:TotalTime>60</o:TotalTime> + <o:Created>2006-08-27T08:55:00Z</o:Created> + <o:LastSaved>2010-07-29T19:31:00Z</o:LastSaved> + <o:Pages>1</o:Pages> + <o:Words>249</o:Words> + <o:Characters>1421</o:Characters> + <o:Lines>11</o:Lines> + <o:Paragraphs>3</o:Paragraphs> + <o:CharactersWithSpaces>1667</o:CharactersWithSpaces> + <o:Version>12.00</o:Version> + </o:DocumentProperties> +</xml><![endif]--> +<link rel=themeData href="HISTORY_files/themedata.thmx"> +<link rel=colorSchemeMapping href="HISTORY_files/colorschememapping.xml"> +<!--[if gte mso 9]><xml> + <w:WordDocument> + <w:Zoom>110</w:Zoom> + <w:SpellingState>Clean</w:SpellingState> + <w:GrammarState>Clean</w:GrammarState> + <w:TrackMoves>false</w:TrackMoves> + <w:TrackFormatting/> + <w:HyphenationZone>21</w:HyphenationZone> + <w:ValidateAgainstSchemas/> + <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> + <w:IgnoreMixedContent>false</w:IgnoreMixedContent> + <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> + <w:DoNotPromoteQF/> + <w:LidThemeOther>SL</w:LidThemeOther> + <w:LidThemeAsian>X-NONE</w:LidThemeAsian> + <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> + <w:Compatibility> + <w:BreakWrappedTables/> + <w:SnapToGridInCell/> + <w:WrapTextWithPunct/> + <w:UseAsianBreakRules/> + <w:DontGrowAutofit/> + <w:SplitPgBreakAndParaMark/> + <w:DontVertAlignCellWithSp/> + <w:DontBreakConstrainedForcedTables/> + <w:DontVertAlignInTxbx/> + <w:Word11KerningPairs/> + <w:CachedColBalance/> + </w:Compatibility> + <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> + <m:mathPr> + <m:mathFont m:val="Cambria Math"/> + <m:brkBin m:val="before"/> + <m:brkBinSub m:val="--"/> + <m:smallFrac m:val="off"/> + <m:dispDef/> + <m:lMargin m:val="0"/> + <m:rMargin m:val="0"/> + <m:defJc m:val="centerGroup"/> + <m:wrapIndent m:val="1440"/> + <m:intLim m:val="subSup"/> + <m:naryLim m:val="undOvr"/> + </m:mathPr></w:WordDocument> +</xml><![endif]--><!--[if gte mso 9]><xml> + <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" + DefSemiHidden="false" DefQFormat="false" LatentStyleCount="267"> + <w:LsdException Locked="false" QFormat="true" Name="Normal"/> + <w:LsdException Locked="false" QFormat="true" Name="heading 1"/> + <w:LsdException Locked="false" QFormat="true" Name="heading 2"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 3"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 4"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 5"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 6"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 7"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 8"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="heading 9"/> + <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" + QFormat="true" Name="caption"/> + <w:LsdException Locked="false" QFormat="true" Name="Title"/> + <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> + <w:LsdException Locked="false" QFormat="true" Name="Subtitle"/> + <w:LsdException Locked="false" QFormat="true" Name="Strong"/> + <w:LsdException Locked="false" QFormat="true" Name="Emphasis"/> + <w:LsdException Locked="false" Priority="99" Name="No List"/> + <w:LsdException Locked="false" Priority="99" SemiHidden="true" + Name="Placeholder Text"/> + <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> + <w:LsdException Locked="false" Priority="61" Name="Light List"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> + <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> + <w:LsdException Locked="false" Priority="99" SemiHidden="true" Name="Revision"/> + <w:LsdException Locked="false" Priority="34" QFormat="true" + Name="List Paragraph"/> + <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> + <w:LsdException Locked="false" Priority="30" QFormat="true" + Name="Intense Quote"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> + <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> + <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> + <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> + <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> + <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> + <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> + <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> + <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> + <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> + <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> + <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> + <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> + <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> + <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> + <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> + <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> + <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> + <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> + <w:LsdException Locked="false" Priority="19" QFormat="true" + Name="Subtle Emphasis"/> + <w:LsdException Locked="false" Priority="21" QFormat="true" + Name="Intense Emphasis"/> + <w:LsdException Locked="false" Priority="31" QFormat="true" + Name="Subtle Reference"/> + <w:LsdException Locked="false" Priority="32" QFormat="true" + Name="Intense Reference"/> + <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> + <w:LsdException Locked="false" Priority="37" SemiHidden="true" + UnhideWhenUsed="true" Name="Bibliography"/> + <w:LsdException Locked="false" Priority="39" SemiHidden="true" + UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> + </w:LatentStyles> +</xml><![endif]--> +<style> +<!-- + /* Font Definitions */ + @font-face + {font-family:"Cambria Math"; + panose-1:2 4 5 3 5 4 6 3 2 4; + mso-font-charset:1; + mso-generic-font-family:roman; + mso-font-format:other; + mso-font-pitch:variable; + mso-font-signature:0 0 0 0 0 0;} +@font-face + {font-family:Consolas; + panose-1:2 11 6 9 2 2 4 3 2 4; + mso-font-charset:0; + mso-generic-font-family:roman; + mso-font-format:other; + mso-font-pitch:auto; + mso-font-signature:0 0 0 0 0 0;} + /* Style Definitions */ + p.MsoNormal, li.MsoNormal, div.MsoNormal + {mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-parent:""; + margin:0cm; + margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman","serif"; + mso-fareast-font-family:"Times New Roman";} +h1 + {mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-link:"Heading 1 Char"; + mso-style-next:Normal; + margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + mso-pagination:widow-orphan; + page-break-after:avoid; + mso-outline-level:1; + font-size:16.0pt; + font-family:"Arial","sans-serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + mso-font-kerning:16.0pt;} +h2 + {mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-link:"Heading 2 Char"; + mso-style-next:Normal; + margin-top:12.0pt; + margin-right:0cm; + margin-bottom:3.0pt; + margin-left:0cm; + mso-pagination:widow-orphan; + page-break-after:avoid; + mso-outline-level:2; + font-size:14.0pt; + font-family:"Arial","sans-serif"; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:minor-fareast; + font-style:italic;} +p.MsoPlainText, li.MsoPlainText, div.MsoPlainText + {mso-style-unhide:no; + mso-style-link:"Plain Text Char"; + margin:0cm; + margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:10.0pt; + font-family:"Courier New"; + mso-fareast-font-family:"Times New Roman";} +span.Heading1Char + {mso-style-name:"Heading 1 Char"; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Heading 1"; + mso-ansi-font-size:14.0pt; + mso-bidi-font-size:14.0pt; + font-family:"Cambria","serif"; + mso-ascii-font-family:Cambria; + mso-ascii-theme-font:major-latin; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:major-fareast; + mso-hansi-font-family:Cambria; + mso-hansi-theme-font:major-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:major-bidi; + color:#365F91; + mso-themecolor:accent1; + mso-themeshade:191; + font-weight:bold;} +span.Heading2Char + {mso-style-name:"Heading 2 Char"; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Heading 2"; + mso-ansi-font-size:13.0pt; + mso-bidi-font-size:13.0pt; + font-family:"Cambria","serif"; + mso-ascii-font-family:Cambria; + mso-ascii-theme-font:major-latin; + mso-fareast-font-family:"Times New Roman"; + mso-fareast-theme-font:major-fareast; + mso-hansi-font-family:Cambria; + mso-hansi-theme-font:major-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:major-bidi; + color:#4F81BD; + mso-themecolor:accent1; + font-weight:bold;} +span.PlainTextChar + {mso-style-name:"Plain Text Char"; + mso-style-unhide:no; + mso-style-locked:yes; + mso-style-link:"Plain Text"; + mso-ansi-font-size:10.5pt; + mso-bidi-font-size:10.5pt; + font-family:"Consolas","serif"; + mso-ascii-font-family:Consolas; + mso-hansi-font-family:Consolas;} +.MsoChpDefault + {mso-style-type:export-only; + mso-default-props:yes; + font-size:10.0pt; + mso-ansi-font-size:10.0pt; + mso-bidi-font-size:10.0pt;} +@page WordSection1 + {size:595.3pt 841.9pt; + margin:70.85pt 57.6pt 70.85pt 57.6pt; + mso-header-margin:35.4pt; + mso-footer-margin:35.4pt; + mso-paper-source:0;} +div.WordSection1 + {page:WordSection1;} + /* List Definitions */ + @list l0 + {mso-list-id:579601086; + mso-list-type:hybrid; + mso-list-template-ids:-1038875492 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} +@list l0:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + font-family:Symbol;} +@list l0:level2 + {mso-level-number-format:bullet; + mso-level-text:o; + mso-level-tab-stop:72.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + font-family:"Courier New";} +@list l0:level3 + {mso-level-tab-stop:108.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l0:level4 + {mso-level-tab-stop:144.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l0:level5 + {mso-level-tab-stop:180.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l0:level6 + {mso-level-tab-stop:216.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l0:level7 + {mso-level-tab-stop:252.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l0:level8 + {mso-level-tab-stop:288.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l0:level9 + {mso-level-tab-stop:324.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1 + {mso-list-id:1663317467; + mso-list-type:hybrid; + mso-list-template-ids:-2096217854 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} +@list l1:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + font-family:Symbol;} +@list l1:level2 + {mso-level-number-format:bullet; + mso-level-text:o; + mso-level-tab-stop:72.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + font-family:"Courier New"; + mso-bidi-font-family:"Times New Roman";} +@list l1:level3 + {mso-level-tab-stop:108.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1:level4 + {mso-level-tab-stop:144.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1:level5 + {mso-level-tab-stop:180.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1:level6 + {mso-level-tab-stop:216.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1:level7 + {mso-level-tab-stop:252.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1:level8 + {mso-level-tab-stop:288.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l1:level9 + {mso-level-tab-stop:324.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2 + {mso-list-id:1928490829; + mso-list-type:hybrid; + mso-list-template-ids:1324089774 68354049 68354051 68354053 68354049 68354051 68354053 68354049 68354051 68354053;} +@list l2:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:36.0pt; + mso-level-number-position:left; + text-indent:-18.0pt; + font-family:Symbol;} +@list l2:level2 + {mso-level-tab-stop:72.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level3 + {mso-level-tab-stop:108.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level4 + {mso-level-tab-stop:144.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level5 + {mso-level-tab-stop:180.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level6 + {mso-level-tab-stop:216.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level7 + {mso-level-tab-stop:252.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level8 + {mso-level-tab-stop:288.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +@list l2:level9 + {mso-level-tab-stop:324.0pt; + mso-level-number-position:left; + text-indent:-18.0pt;} +ol + {margin-bottom:0cm;} +ul + {margin-bottom:0cm;} +--> +</style> +<!--[if gte mso 10]> +<style> + /* Style Definitions */ + table.MsoNormalTable + {mso-style-name:"Table Normal"; + mso-tstyle-rowband-size:0; + mso-tstyle-colband-size:0; + mso-style-noshow:yes; + mso-style-priority:99; + mso-style-qformat:yes; + mso-style-parent:""; + mso-padding-alt:0cm 5.4pt 0cm 5.4pt; + mso-para-margin:0cm; + mso-para-margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:10.0pt; + font-family:"Times New Roman","serif";} +</style> +<![endif]--><!--[if gte mso 9]><xml> + <o:shapedefaults v:ext="edit" spidmax="2050"/> +</xml><![endif]--><!--[if gte mso 9]><xml> + <o:shapelayout v:ext="edit"> + <o:idmap v:ext="edit" data="1"/> + </o:shapelayout></xml><![endif]--> +</head> + +<body lang=SL style='tab-interval:35.4pt'> + +<div class=WordSection1> + +<h1><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>History<o:p></o:p></span></h1> + +<h2><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>Version 2.3.0.0<o:p></o:p></span></h2> + +<ul style='margin-top:0cm' type=disc> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Not using + MouseKeyboardLibrary.dll anymore :)<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Some bug-fixes<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Massive code clean-up<o:p></o:p></span></li> +</ul> + +<h2><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>Version 2.2.0.0<o:p></o:p></span></h2> + +<ul style='margin-top:0cm' type=disc> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Using MouseKeyboardLibrary.dll + instead of proprietary hook<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Code clean-up<o:p></o:p></span></li> +</ul> + +<h2><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>Version 2.1.0.0<o:p></o:p></span></h2> + +<ul style='margin-top:0cm' type=disc> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Unified log entries<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>KEY action is fixed + (SendKeys.SendWait)<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>No sounds played if player is + playing (standard MP behavior)<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Win keys are not modifiers + anymore <o:p></o:p></span></li> + <ul style='margin-top:0cm' type=circle> + <li class=MsoNormal style='mso-list:l1 level2 lfo1;tab-stops:list 72.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>they have standard key + behavior, you can't use win+something in key map<o:p></o:p></span></li> + </ul> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Resetting modifier keys is now + done on keyup <o:p></o:p></span></li> + <ul style='margin-top:0cm' type=circle> + <li class=MsoNormal style='mso-list:l1 level2 lfo1;tab-stops:list 72.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>you can now hold ctrl and + press keys, they would all have ctrl modifier<o:p></o:p></span></li> + </ul> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Better handling of keys not mapped + through the plugin<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l1 level1 lfo1;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Better hook behavior <o:p></o:p></span></li> + <ul style='margin-top:0cm' type=circle> + <li class=MsoNormal style='mso-list:l1 level2 lfo1;tab-stops:list 72.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>other hooks can now + "see" pressed keys too<o:p></o:p></span></li> + </ul> +</ul> + +<h2><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>Version 2.0.0.0<o:p></o:p></span></h2> + +<ul style='margin-top:0cm' type=disc> + <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Changed key interception + mechanism:<o:p></o:p></span></li> + <ul style='margin-top:0cm' type=circle> + <li class=MsoNormal style='mso-list:l0 level2 lfo2;tab-stops:list 72.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Captures virtually all key + combinations, including Win-keys.<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l0 level2 lfo2;tab-stops:list 72.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Keystrokes that are mapped by + this plug-in will be \x91eaten\x92; they will not be passed on to MediaPortal, + so no more \x91double\x92 key presses or the need to remove MediaPortal\x92s + keymap.xml.<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l0 level2 lfo2;tab-stops:list 72.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>(Limited) support for passing + through keystrokes that are not mapped by this plug-in.<o:p></o:p></span></li> + </ul> + <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Integrated \x91Add/Remove Buttons\x92 + and \x91Button Mapping\x92 configuration screens into single configuration + screen.<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Added support for mapping + keystrokes to plug-in windows (as opposed to only standard MediaPortal + windows).<o:p></o:p></span></li> + <li class=MsoNormal style='mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Respects MediaPortal + configuration paths; no more need to copy Keyboard.xml around and should + work correctly with Windows Vista.<o:p></o:p></span></li> +</ul> + +<h2><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>Version 1.1.0.0<o:p></o:p></span></h2> + +<ul style='margin-top:0cm' type=disc> + <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Added configuration screens for + adding/changing/removing buttons. This includes a learning mode (press the + key you want and see the code), and automatic creation of the Keyboard.xml + file if it does not yet exist.<o:p></o:p></span></li> +</ul> + +<h2><span lang=EN-US style='mso-fareast-font-family:"Times New Roman"; +mso-ansi-language:EN-US'>Version 1.0.0.0<o:p></o:p></span></h2> + +<ul style='margin-top:0cm' type=disc> + <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list 36.0pt'><span + lang=EN-US style='mso-ansi-language:EN-US'>Initial Release<o:p></o:p></span></li> +</ul> + +<p class=MsoNormal><span lang=EN-US style='mso-ansi-language:EN-US'> <o:p></o:p></span></p> + +<p class=MsoNormal style='margin-left:18.0pt'><span lang=EN-US +style='mso-ansi-language:EN-US'> <o:p></o:p></span></p> + +</div> + +</body> + +</html> Added: trunk/plugins/KeyboardInputPlugin/HISTORY_files/colorschememapping.xml =================================================================== --- trunk/plugins/KeyboardInputPlugin/HISTORY_files/colorschememapping.xml (rev 0) +++ trunk/plugins/KeyboardInputPlugin/HISTORY_files/colorschememapping.xml 2010-07-29 19:43:17 UTC (rev 3679) @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<a:clrMap xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/> \ No newline at end of file Added: trunk/plugins/KeyboardInputPlugin/HISTORY_files/filelist.xml =================================================================== --- trunk/plugins/KeyboardInputPlugin/HISTORY_files/filelist.xml (rev 0) +++ trunk/plugins/KeyboardInputPlugin/HISTORY_fil... [truncated message content] |
From: <Sil...@us...> - 2010-08-09 10:48:57
|
Revision: 3704 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3704&view=rev Author: SilentException Date: 2010-08-09 10:48:49 +0000 (Mon, 09 Aug 2010) Log Message: ----------- DriveFreeSpace plugin Added Paths: ----------- trunk/plugins/DriveFreeSpace/ trunk/plugins/DriveFreeSpace/ReadMe.txt trunk/plugins/DriveFreeSpace/Release/ trunk/plugins/DriveFreeSpace/Release/plugins/ trunk/plugins/DriveFreeSpace/Release/plugins/process/ trunk/plugins/DriveFreeSpace/Release/plugins/process/DriveFreeSpace.dll trunk/plugins/DriveFreeSpace/Release/plugins/process/Raccoom.TreeViewFolderBrowser.DataProviders.dll trunk/plugins/DriveFreeSpace/Release/plugins/process/Raccoom.TreeViewFolderBrowser.dll trunk/plugins/DriveFreeSpace/SkinControlExample.txt trunk/plugins/DriveFreeSpace/Source/ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpace.cs trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.csproj trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.sln trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.suo trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.user trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.Designer.cs trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.cs trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.resx trunk/plugins/DriveFreeSpace/Source/Properties/ trunk/plugins/DriveFreeSpace/Source/Properties/AssemblyInfo.cs trunk/plugins/DriveFreeSpace/Source/References/ trunk/plugins/DriveFreeSpace/Source/References/Raccoom.TreeViewFolderBrowser.DataProviders.dll trunk/plugins/DriveFreeSpace/Source/References/Raccoom.TreeViewFolderBrowser.dll Added: trunk/plugins/DriveFreeSpace/ReadMe.txt =================================================================== --- trunk/plugins/DriveFreeSpace/ReadMe.txt (rev 0) +++ trunk/plugins/DriveFreeSpace/ReadMe.txt 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,70 @@ +Drive Free Space 0.5 for Mediaportal + + +What it does? + +This plugin sets and refreshes different GUI properties (depending on configuration) for displaying free HDD space on your drives. It's highly configurable and flexible. Configure the plugin by selecting drives you want to "monitor" and format the output text depending on your wishes. GUI settings you can use afterwards are: +#DriveFreeSpace.AvailableSpace.Data.Drives - for formated text output +#DriveFreeSpace.AvailableSpace.Data.Total - for formated text output - total +#DriveFreeSpace.AvailableSpace.Percentage - for percentage of free space +#DriveFreeSpace.AvailableSpace.UsedPercentage - for percentage of occupied space +#DriveFreeSpace.X.AvailableSpace.Data - for formated text output for one drive you have selected in configuration; replace X with drive letter +#DriveFreeSpace.X.AvailableSpace.Percentage - for percentage of free space for one drive you have selected in configuration; replace X with drive letter +#DriveFreeSpace.X.AvailableSpace.UsedPercentage - for percentage of occupied space for one drive you have selected in configuration; replace X with drive letter +#DriveFreeSpace.Enabled - is any drive selected for monitoring +#DriveFreeSpace.X.Enabled - is drive X selected for monitoring; replace X with drive letter + +Replace string #DriveFreeSpace with the plugin file name (as there is a possibility for running multiple plugin instances now). Default plugin file name is DriveFreeSpace.dll. + +Format variables are explained in plugin configuration. + +Look for more skin examples or mods in SkinControlExample.txt in the archive or read this thread on MP forum: http://forum.team-mediaportal.com/plugins-47/drive-free-space-plugin-54798/ + + +What do i need to use it? + +Mediaportal > 1.0 + + +How do i install it? + +Open the archive and extract everything under the Release folder to you MediaPortal installation directory. Now open MP's Configuration and Enable the plugin (it's listed under Process plugins). If the plugin is not listed there, you did something wrong. + + +Changelog: + +v0.51 +increased character limit on bitrate textbox to 5 +small changes in configuration + +v0.5 +due to change in MediaPortal properties, brackets cannot be part of the property names - all properties with (X) renamed to .X. +added bitrate calculation (recording time left) - requested by daniel_1980 +property #Drives.AvailableSpace.Data split in two (#DriveFreeSpace.AvailableSpace.Data.Drives and #DriveFreeSpace.AvailableSpace.Data.Total) - .Drives works exactly as old one and .Total returns the formatted data for all selected drives - requested by cruse +added #DriveFreeSpace.Enabled and #DriveFreeSpace.X.Enabled properties - first will contain true/false strings depending on weather any drive has been selected, second will contain true/false strings depending on weather drive X is selected - requested by Bleazle +added possibility for multiple plugins: copy DriveFreeSpace.dll and rename it as you wish +due to that possibility, all gui properties are prefixed with plugin file name now: instead of #Drives* properties, they are now named #DriveFreeSpace* or whatever the plugin file name is +also, this now requires you to reconfigure the plugin +fixed for MediaPortal v1.1 + +v0.4 +added new gui properties #Drives.AvailableSpace.UsedPercentage and #Drives(X).AvailableSpace.UsedPercentage; returns percentage of used space for all or one drive; replace X with the drive letter +added new text property %uspercent% - returns a number (percent of occupied space) +added new text property %usedspace% - returns used space in GB/MB/KB +added new text property %driveletteronly% - returns drive letter only with no colon character + +v0.31 +all new lines are now processed only from configuration! +fixed a small glitch in last build (30 seconds blackout on plugin start) + +v0.3 +added new gui properties #Drives(X).AvailableSpace.Data and #Drives(X).AvailableSpace.Percentage for each drive selected in configuration; replace X with the drive letter (doh!) + +v0.2 +fixed decimals +added new text property %fspercent% - returns a number (percent) of free space +added #Drives.AvailableSpace.Percentage - note that this returns percentage of free space of ALL drives you have selected in configuration.. i'm working on a version that will create a new property #Drives(X).AvailableSpace which will return .Data or .Percentage depending on what drives you have selected +Renamed #Drives.AvailableSpace to #Drives.AvailableSpace.Data (i had problems with progress bar so i had to) + +v0.1 +initial release Added: trunk/plugins/DriveFreeSpace/Release/plugins/process/DriveFreeSpace.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/DriveFreeSpace/Release/plugins/process/DriveFreeSpace.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/DriveFreeSpace/Release/plugins/process/Raccoom.TreeViewFolderBrowser.DataProviders.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/DriveFreeSpace/Release/plugins/process/Raccoom.TreeViewFolderBrowser.DataProviders.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/DriveFreeSpace/Release/plugins/process/Raccoom.TreeViewFolderBrowser.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/DriveFreeSpace/Release/plugins/process/Raccoom.TreeViewFolderBrowser.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/DriveFreeSpace/SkinControlExample.txt =================================================================== --- trunk/plugins/DriveFreeSpace/SkinControlExample.txt (rev 0) +++ trunk/plugins/DriveFreeSpace/SkinControlExample.txt 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,30 @@ +<control> + <description>Drive space</description> + <type>textboxscrollup</type> + <id>37483</id> + <posX>1600</posX> + <posY>100</posY> + <width>300</width> + <height>300</height> + <font>font11</font> + <label>#DriveFreeSpace.AvailableSpace.Data</label> + <visible>yes</visible> +</control> + +<control> + <description>Progress Bar</description> + <type>progress</type> + <id>20</id> + <posX>560</posX> + <posY>885</posY> + <width>500</width> + <height>30</height> + <label>#DriveFreeSpace.AvailableSpace.Percentage</label> + <texturebg>progress_background_tvhome.png</texturebg> + <lefttexture>progress_blank30.png</lefttexture> + <midtexture>progress_mid_white30.png</midtexture> + <righttexture>progress_blank30.png</righttexture> + <visible>yes</visible> +</control> + +For more properties, check ReadMe.txt. \ No newline at end of file Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpace.cs =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpace.cs (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpace.cs 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,448 @@ +#region Information + +/* + * DriveFreeSpace for Mediaportal. + * + * Version 0.12 for MP 1.0.0.0 RC4 + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Reflection; +using System.Collections.Generic; +using System.Data; +using System.Text; +using System.IO; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using MediaPortal.GUI.Library; +using MediaPortal.Util; +using MediaPortal.Configuration; + +namespace DriveFreeSpacePlugin +{ + public class DriveFreeSpacePlugin : ISetupForm, IPlugin + { + private Timer _timer; + private enum UnitsCode + { + GB = 0, + MB = 1, + KB = 2 + } + private int _unit = 0; + private int _bitrate = 4086; + private int _brunit = 0; + private int _timerInterval = 30; + private string _GUIText = String.Empty; + private string _GUITextTotal = String.Empty; + private List<String> _driveList = new List<String>(); + private string _configSection = String.Empty; + private const string _configSectionDefault = "DriveFreeSpace"; + + public DriveFreeSpacePlugin() + { + _timer = new Timer(); + _timer.Interval = _timerInterval * 1000; + _timer.Enabled = false; + _timer.Tick += new EventHandler(_timer_Tick); + + ClearVariables(); + } + + private void ClearVariables() + { + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.Data", " "); + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.Percentage", "0"); + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.UsedPercentage", "0"); + + for (var i = 65; i < 65 + 26; i++) + { + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.Data", Convert.ToChar(i)), " "); + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.Percentage", Convert.ToChar(i)), "0"); + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.UsedPercentage", Convert.ToChar(i)), "0"); + } + } + + private void _timer_Tick(object sender, EventArgs e) + { + string GUIString = String.Empty; + long totalSizeAll = 0; + long totalFreeAll = 0; + long totalUsedAll = 0; + + bool[] drivesEnabled = new bool[26]; + for (int i = 0; i < drivesEnabled.Length - 1; i++) { + drivesEnabled[i] = false; + } + bool hasEnabledDrives = false; + + long recTimeLeftSec = 0; + long brDivide = 1; + String sBrUnit = String.Empty; + String sBitrate = _bitrate.ToString(); + String sRecTimeLeft = String.Empty; + + long divide = 1; + string sUnit = String.Empty; + + if (_unit == 0) { + divide = 1024 * 1024 * 1024; + sUnit = "GB"; + } + else if (_unit == 1) { + divide = 1024 * 1024; + sUnit = "MB"; + } + if (_unit == 2) { + divide = 1024; + sUnit = "KB"; + } + + foreach (string drive in _driveList) + { + char driveLetter = drive.ToUpper()[0]; + System.IO.DriveInfo di = new System.IO.DriveInfo(driveLetter.ToString()); + if (di.IsReady) + try + { + drivesEnabled[Convert.ToInt16(driveLetter) - 65] = true; + hasEnabledDrives = true; + + string sLabel = String.Empty; + if (!String.IsNullOrEmpty(di.VolumeLabel)) + sLabel = di.VolumeLabel; + + string sName = driveLetter + ":"; + if (di.Name.Length >= 2) + sName = di.Name.Substring(0, 2); + + + double totalSize = (double)di.TotalSize / divide; + long totalSizeL = di.TotalSize / divide; + double available = (double)di.AvailableFreeSpace / divide; + long availableL = di.AvailableFreeSpace / divide; + double used = ((double)di.TotalSize - (double)di.AvailableFreeSpace) / divide; + long usedL = (di.TotalSize - di.AvailableFreeSpace) / divide; + + totalSizeAll += di.TotalSize; + totalFreeAll += di.AvailableFreeSpace; + totalUsedAll += (di.TotalSize - di.AvailableFreeSpace); + + // bitrate + recTimeLeftSec = 0; + brDivide = 1; + sBrUnit = String.Empty; + sBitrate = _bitrate.ToString(); + + if (_brunit == 0) + { + brDivide = 1; + sBrUnit = "kbit/s"; + } + else if (_brunit == 1) + { + brDivide = 1000; + sBrUnit = "Mbit/s"; + } + + sRecTimeLeft = String.Empty; + if (_GUIText.IndexOf("%rectimeleft%") != -1) + { + recTimeLeftSec = di.AvailableFreeSpace / (125 * _bitrate * brDivide); + TimeSpan ts = new TimeSpan(0, 0, 0, (int)recTimeLeftSec, 0); + sRecTimeLeft = String.Format("{0:00}:{1:00}", (int)ts.TotalHours, ts.Minutes); + } + + double percentage = 0; + try + { + percentage = ((double)di.AvailableFreeSpace / (double)di.TotalSize) * 100; + if (percentage > 100) + percentage = 100; + else if (percentage < 0) + percentage = 0; + } + catch + { + percentage = 0; + } + + double percentageUsed = 0; + try + { + percentageUsed = (((double)di.TotalSize - (double)di.AvailableFreeSpace) / (double)di.TotalSize) * 100; + if (percentageUsed > 100) + percentageUsed = 100; + else if (percentageUsed < 0) + percentageUsed = 0; + } + catch + { + percentageUsed = 0; + } + + string strAvailableSpace = _GUIText; + strAvailableSpace = strAvailableSpace.Replace("%drive%", sName); + strAvailableSpace = strAvailableSpace.Replace("%driveletteronly%", sName.Substring(0, 1)); + strAvailableSpace = strAvailableSpace.Replace("%label%", sLabel); + strAvailableSpace = strAvailableSpace.Replace("%labelbrackets%", String.IsNullOrEmpty(sLabel) ? "" : ("(" + sLabel + ")")); + strAvailableSpace = strAvailableSpace.Replace("%freespace%", String.Format("{0:F}", available)); + strAvailableSpace = strAvailableSpace.Replace("%usedspace%", String.Format("{0:F}", used)); + strAvailableSpace = strAvailableSpace.Replace("%totalspace%", String.Format("{0:F}", totalSize)); + strAvailableSpace = strAvailableSpace.Replace("%unit%", sUnit); + strAvailableSpace = strAvailableSpace.Replace("%fspercent%", String.Format("{0:#}", percentage)); + strAvailableSpace = strAvailableSpace.Replace("%uspercent%", String.Format("{0:#}", percentageUsed)); + strAvailableSpace = strAvailableSpace.Replace("%bitrate%", sBitrate); + strAvailableSpace = strAvailableSpace.Replace("%bitrateunit%", sBrUnit); + strAvailableSpace = strAvailableSpace.Replace("%rectimeleft%", sRecTimeLeft); + + GUIString += strAvailableSpace; + + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.Data", driveLetter), strAvailableSpace.Trim()); + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.Percentage", driveLetter), String.Format("{0:#}", percentage)); + //Log.Info("DFS USED " + percentageUsed + " " + String.Format("{0:#}", percentageUsed)); + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.UsedPercentage", driveLetter), String.Format("{0:#}", percentageUsed)); + } + catch + { + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.Data", driveLetter), String.Format("Error on {0}: !", driveLetter)); + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.Percentage", driveLetter), "0"); + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.AvailableSpace.UsedPercentage", driveLetter), "0"); + } + } + + for (int i = 0; i < drivesEnabled.Length - 1; i++) { + GUIPropertyManager.SetProperty(String.Format("#" + _configSection + ".{0}.Enabled", Convert.ToChar(i + 65)), drivesEnabled[i].ToString().ToLower()); + } + + GUIPropertyManager.SetProperty("#" + _configSection + ".Enabled", hasEnabledDrives.ToString().ToLower()); + + //if (!String.IsNullOrEmpty(GUIString) && GUIString.EndsWith("\n")) + // GUIString = GUIString.Remove(GUIString.Length - 1); + + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.Data.Drives", GUIString.Trim()); + + double totalPercentageAll = 0; + try + { + totalPercentageAll = ((double)totalFreeAll / (double)totalSizeAll) * 100; + if (totalPercentageAll > 100) + totalPercentageAll = 100; + else if (totalPercentageAll < 0) + totalPercentageAll = 0; + } + catch + { + totalPercentageAll = 0; + } + + //Log.Info("DFS " + totalPercentageAll + " " + String.Format("{0:#}", totalPercentageAll)); + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.Percentage", String.Format("{0:#}", totalPercentageAll)); + + double totalPercentageUsedAll = 0; + try + { + totalPercentageUsedAll = ((double)totalUsedAll / (double)totalSizeAll) * 100; + if (totalPercentageUsedAll > 100) + totalPercentageUsedAll = 100; + else if (totalPercentageUsedAll < 0) + totalPercentageUsedAll = 0; + } + catch + { + totalPercentageUsedAll = 0; + } + //Log.Info("DFS " + totalPercentageUsedAll + " " + String.Format("{0:#}", totalPercentageUsedAll)); + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.UsedPercentage", String.Format("{0:#}", totalPercentageUsedAll)); + + // bitrate + recTimeLeftSec = 0; + brDivide = 1; + sBrUnit = String.Empty; + sBitrate = _bitrate.ToString(); + + if (_brunit == 0) { + brDivide = 1; + sBrUnit = "kbit/s"; + } + else if (_brunit == 1) { + brDivide = 1000; + sBrUnit = "Mbit/s"; + } + + double totalSizeAllProper = (double)totalSizeAll / divide; + double totalFreeAllProper = (double)totalFreeAll / divide; + double totalUsedAllProper = (double)totalUsedAll / divide; + + sRecTimeLeft = String.Empty; + if (_GUITextTotal.IndexOf("%rectimeleft%") != -1) { + recTimeLeftSec = totalFreeAll / (125 * _bitrate * brDivide); + TimeSpan ts = new TimeSpan(0, 0, 0, (int)recTimeLeftSec, 0); + sRecTimeLeft = String.Format("{0:00}:{1:00}", (int)ts.TotalHours, ts.Minutes); + } + string strGUITextTotal = _GUITextTotal; + strGUITextTotal = strGUITextTotal.Replace("%freespace%", String.Format("{0:F}", totalFreeAllProper)); + strGUITextTotal = strGUITextTotal.Replace("%usedspace%", String.Format("{0:F}", totalUsedAllProper)); + strGUITextTotal = strGUITextTotal.Replace("%totalspace%", String.Format("{0:F}", totalSizeAllProper)); + strGUITextTotal = strGUITextTotal.Replace("%unit%", sUnit); + strGUITextTotal = strGUITextTotal.Replace("%fspercent%", String.Format("{0:#}", totalPercentageAll)); + strGUITextTotal = strGUITextTotal.Replace("%uspercent%", String.Format("{0:#}", totalPercentageUsedAll)); + strGUITextTotal = strGUITextTotal.Replace("%bitrate%", sBitrate); + strGUITextTotal = strGUITextTotal.Replace("%bitrateunit%", sBrUnit); + strGUITextTotal = strGUITextTotal.Replace("%rectimeleft%", sRecTimeLeft); + + GUIPropertyManager.SetProperty("#" + _configSection + ".AvailableSpace.Data.Total", strGUITextTotal.Trim()); + + } + + private void LoadSettings() + { + using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + int cbUnit = xmlreader.GetValueAsInt(_configSection, "unit", 0); + if (cbUnit > 2) cbUnit = 2; + else if (cbUnit < 0) cbUnit = 0; + _unit = cbUnit; + + int cbBRUnit = xmlreader.GetValueAsInt(_configSection, "bitrateunit", 0); + if (cbBRUnit > 1) cbBRUnit = 1; + else if (cbBRUnit < 0) cbBRUnit = 0; + _brunit = cbBRUnit; + + _GUIText = xmlreader.GetValueAsString(_configSection, "drivestext", "%drive% (%label%)\n%freespace%/%totalspace% %unit%\n\n").Replace(Environment.NewLine, "\n"); + + _GUITextTotal = xmlreader.GetValueAsString(_configSection, "drivestexttotal", "%freespace%/%totalspace% %unit%").Replace(Environment.NewLine, "\n"); + + _timerInterval = xmlreader.GetValueAsInt(_configSection, "refresh", 30); + _timer.Interval = _timerInterval * 1000; + + _bitrate = xmlreader.GetValueAsInt(_configSection, "bitrate", 4086); + + string drives = xmlreader.GetValueAsString(_configSection, "SelectedDirectories", ""); + string[] selectedDrivesArray = drives.Split(','); + Array.Sort(selectedDrivesArray); + foreach (string s in selectedDrivesArray) + if (!String.IsNullOrEmpty(s)) + _driveList.Add(s); + } + } + + private void LoadSettingsSectionName() + { + _configSection = GetSettingsSectionName(); + } + + private string GetSettingsSectionName() { + string configSection = string.Empty; + try { + configSection = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().Location); + configSection = Regex.Replace(configSection, @"\W*", ""); + } + catch { + configSection = _configSectionDefault; + } + if (String.IsNullOrEmpty(configSection)) + configSection = _configSectionDefault; + + return configSection; + } + + #region IPluginReceiver Members + + #endregion + + #region IPlugin Members + + public void Start() + { + LoadSettingsSectionName(); + LoadSettings(); + ClearVariables(); + _timer.Enabled = true; + _timer_Tick(null, null); + } + + public void Stop() + { + ClearVariables(); + _timer.Enabled = false; + } + + #endregion + + #region ISetupForm Members + + public bool CanEnable() + { + return true; + } + + public string Description() + { + return "Drive free space information"; + } + + public bool DefaultEnabled() + { + return false; + } + + public int GetWindowId() + { + return -1; + } + + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) + { + strButtonText = null; + strButtonImage = null; + strButtonImageFocus = null; + strPictureImage = null; + return false; + } + + public string Author() + { + return "SilentException"; + } + + public string PluginName() + { + //return "Drive Free Space"; + return GetSettingsSectionName(); + } + + public bool HasSetup() + { + return true; + } + + public void ShowPlugin() + { + DriveFreeSpaceSettings setup = new DriveFreeSpaceSettings(); + setup.ShowDialog(); + } + + #endregion + + } +} Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.csproj =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.csproj (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.csproj 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,122 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{B365DF81-7C0D-4A30-9912-85BF424809E8}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>DriveFreeSpacePlugin</RootNamespace> + <AssemblyName>DriveFreeSpace</AssemblyName> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <PublishUrl>publish\</PublishUrl> + <Install>true</Install> + <InstallFrom>Disk</InstallFrom> + <UpdateEnabled>false</UpdateEnabled> + <UpdateMode>Foreground</UpdateMode> + <UpdateInterval>7</UpdateInterval> + <UpdateIntervalUnits>Days</UpdateIntervalUnits> + <UpdatePeriodically>false</UpdatePeriodically> + <UpdateRequired>false</UpdateRequired> + <MapFileExtensions>true</MapFileExtensions> + <ApplicationRevision>0</ApplicationRevision> + <ApplicationVersion>1.0.0.%2a</ApplicationVersion> + <IsWebBootstrapper>false</IsWebBootstrapper> + <UseApplicationTrust>false</UseApplicationTrust> + <BootstrapperEnabled>true</BootstrapperEnabled> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=1.0.8.28791, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Core.dll</HintPath> + <Private>False</Private> + </Reference> + <Reference Include="Raccoom.TreeViewFolderBrowser, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>References\Raccoom.TreeViewFolderBrowser.dll</HintPath> + </Reference> + <Reference Include="Raccoom.TreeViewFolderBrowser.DataProviders, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>References\Raccoom.TreeViewFolderBrowser.DataProviders.dll</HintPath> + </Reference> + <Reference Include="System"> + <Private>False</Private> + </Reference> + <Reference Include="System.Data"> + <Private>False</Private> + </Reference> + <Reference Include="System.Drawing"> + <Private>False</Private> + </Reference> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils, Version=2.2.7.28786, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Utils.dll</HintPath> + <Private>False</Private> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="DriveFreeSpace.cs" /> + <Compile Include="DriveFreeSpaceSettings.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="DriveFreeSpaceSettings.Designer.cs"> + <DependentUpon>DriveFreeSpaceSettings.cs</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="DriveFreeSpaceSettings.resx"> + <SubType>Designer</SubType> + <DependentUpon>DriveFreeSpaceSettings.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 2.0 %28x86%29</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.0 %28x86%29</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5</ProductName> + <Install>false</Install> + </BootstrapperPackage> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.sln =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.sln (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.sln 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DriveFreeSpacePlugin", "DriveFreeSpacePlugin.csproj", "{B365DF81-7C0D-4A30-9912-85BF424809E8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B365DF81-7C0D-4A30-9912-85BF424809E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B365DF81-7C0D-4A30-9912-85BF424809E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B365DF81-7C0D-4A30-9912-85BF424809E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B365DF81-7C0D-4A30-9912-85BF424809E8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.suo =================================================================== (Binary files differ) Property changes on: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.suo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.user =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.user (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpacePlugin.user 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,16 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <PublishUrlHistory> + </PublishUrlHistory> + <InstallUrlHistory> + </InstallUrlHistory> + <SupportUrlHistory> + </SupportUrlHistory> + <UpdateUrlHistory> + </UpdateUrlHistory> + <BootstrapperUrlHistory> + </BootstrapperUrlHistory> + <FallbackCulture>de-DE</FallbackCulture> + <VerifyUploadedFiles>false</VerifyUploadedFiles> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.Designer.cs =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.Designer.cs (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.Designer.cs 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,313 @@ +namespace DriveFreeSpacePlugin +{ + partial class DriveFreeSpaceSettings + { + /// <summary> + /// Erforderliche Designervariable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Verwendete Ressourcen bereinigen. + /// </summary> + /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// <summary> + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DriveFreeSpaceSettings)); + this.gbDrives = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.treeViewRecursiveChecked = new Raccoom.Windows.Forms.TreeViewFolderBrowser(); + this.mpButton1 = new MediaPortal.UserInterface.Controls.MPButton(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.tbGUIText = new System.Windows.Forms.TextBox(); + this.tbGUITextTotal = new System.Windows.Forms.TextBox(); + this.gbGUIText = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.mpButton2 = new MediaPortal.UserInterface.Controls.MPButton(); + this.label3 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.gbGUITextTotal = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.gbOtherSettings = new MediaPortal.UserInterface.Controls.MPGroupBox(); + this.gbDrives.SuspendLayout(); + this.gbGUIText.SuspendLayout(); + this.gbGUITextTotal.SuspendLayout(); + this.gbOtherSettings.SuspendLayout(); + this.SuspendLayout(); + // + // gbDrives + // + this.gbDrives.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.gbDrives.Controls.Add(this.treeViewRecursiveChecked); + this.gbDrives.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.gbDrives.Location = new System.Drawing.Point(3, 1); + this.gbDrives.Name = "gbDrives"; + this.gbDrives.Size = new System.Drawing.Size(738, 242); + this.gbDrives.TabIndex = 1; + this.gbDrives.TabStop = false; + this.gbDrives.Text = "Select drives"; + // + // treeViewRecursiveChecked + // + this.treeViewRecursiveChecked.DataSource = null; + this.treeViewRecursiveChecked.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeViewRecursiveChecked.HideSelection = false; + this.treeViewRecursiveChecked.Location = new System.Drawing.Point(3, 16); + this.treeViewRecursiveChecked.Name = "treeViewRecursiveChecked"; + this.treeViewRecursiveChecked.SelectedDirectories = ((System.Collections.Specialized.StringCollection)(resources.GetObject("treeViewRecursiveChecked.SelectedDirectories"))); + this.treeViewRecursiveChecked.ShowLines = false; + this.treeViewRecursiveChecked.ShowPlusMinus = false; + this.treeViewRecursiveChecked.Size = new System.Drawing.Size(732, 223); + this.treeViewRecursiveChecked.TabIndex = 1; + // + // mpButton1 + // + this.mpButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.mpButton1.Location = new System.Drawing.Point(662, 503); + this.mpButton1.Name = "mpButton1"; + this.mpButton1.Size = new System.Drawing.Size(75, 23); + this.mpButton1.TabIndex = 2; + this.mpButton1.Text = "&OK"; + this.mpButton1.UseVisualStyleBackColor = true; + this.mpButton1.Click += new System.EventHandler(this.mpButton1_Click); + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "GB", + "MB", + "KB"}); + this.comboBox1.Location = new System.Drawing.Point(140, 18); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(76, 21); + this.comboBox1.TabIndex = 4; + this.comboBox1.Tag = ""; + // + // toolTip1 + // + this.toolTip1.AutoPopDelay = 0; + this.toolTip1.InitialDelay = 500; + this.toolTip1.IsBalloon = true; + this.toolTip1.ReshowDelay = 100; + this.toolTip1.ToolTipTitle = "Variables"; + // + // tbGUIText + // + this.tbGUIText.AcceptsReturn = true; + this.tbGUIText.Location = new System.Drawing.Point(6, 16); + this.tbGUIText.Multiline = true; + this.tbGUIText.Name = "tbGUIText"; + this.tbGUIText.Size = new System.Drawing.Size(239, 68); + this.tbGUIText.TabIndex = 4; + this.tbGUIText.Text = "%drive% (%label%)\r\n%freespace%/%totalspace% %unit%\r\n"; + this.toolTip1.SetToolTip(this.tbGUIText, resources.GetString("tbGUIText.ToolTip")); + this.tbGUIText.WordWrap = false; + // + // tbGUITextTotal + // + this.tbGUITextTotal.AcceptsReturn = true; + this.tbGUITextTotal.Location = new System.Drawing.Point(6, 16); + this.tbGUITextTotal.Multiline = true; + this.tbGUITextTotal.Name = "tbGUITextTotal"; + this.tbGUITextTotal.Size = new System.Drawing.Size(239, 68); + this.tbGUITextTotal.TabIndex = 4; + this.tbGUITextTotal.Text = "%freespace%/%totalspace% %unit%"; + this.toolTip1.SetToolTip(this.tbGUITextTotal, resources.GetString("tbGUITextTotal.ToolTip")); + this.tbGUITextTotal.WordWrap = false; + // + // gbGUIText + // + this.gbGUIText.Controls.Add(this.tbGUIText); + this.gbGUIText.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.gbGUIText.Location = new System.Drawing.Point(3, 249); + this.gbGUIText.Name = "gbGUIText"; + this.gbGUIText.Size = new System.Drawing.Size(252, 91); + this.gbGUIText.TabIndex = 5; + this.gbGUIText.TabStop = false; + this.gbGUIText.Text = "GUI Text"; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(140, 41); + this.textBox2.MaxLength = 3; + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(76, 20); + this.textBox2.TabIndex = 6; + this.textBox2.WordWrap = false; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 21); + this.label1.Margin = new System.Windows.Forms.Padding(5); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 13); + this.label1.TabIndex = 7; + this.label1.Text = "Unit:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(8, 44); + this.label2.Margin = new System.Windows.Forms.Padding(5); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(126, 13); + this.label2.TabIndex = 8; + this.label2.Text = "GUI refresh interval (min):"; + // + // mpButton2 + // + this.mpButton2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.mpButton2.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.mpButton2.Location = new System.Drawing.Point(581, 503); + this.mpButton2.Name = "mpButton2"; + this.mpButton2.Size = new System.Drawing.Size(75, 23); + this.mpButton2.TabIndex = 9; + this.mpButton2.Text = "&Cancel"; + this.mpButton2.UseVisualStyleBackColor = true; + this.mpButton2.Click += new System.EventHandler(this.mpButton2_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 343); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(391, 182); + this.label3.TabIndex = 10; + this.label3.Text = resources.GetString("label3.Text"); + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(58, 64); + this.textBox3.MaxLength = 5; + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(76, 20); + this.textBox3.TabIndex = 11; + this.textBox3.WordWrap = false; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(8, 67); + this.label4.Margin = new System.Windows.Forms.Padding(5); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(40, 13); + this.label4.TabIndex = 12; + this.label4.Text = "Bitrate:"; + // + // comboBox2 + // + this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Items.AddRange(new object[] { + "kbit/s", + "Mbit/s"}); + this.comboBox2.Location = new System.Drawing.Point(140, 64); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(76, 21); + this.comboBox2.TabIndex = 13; + this.comboBox2.Tag = ""; + // + // gbGUITextTotal + // + this.gbGUITextTotal.Controls.Add(this.tbGUITextTotal); + this.gbGUITextTotal.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.gbGUITextTotal.Location = new System.Drawing.Point(261, 249); + this.gbGUITextTotal.Name = "gbGUITextTotal"; + this.gbGUITextTotal.Size = new System.Drawing.Size(252, 91); + this.gbGUITextTotal.TabIndex = 14; + this.gbGUITextTotal.TabStop = false; + this.gbGUITextTotal.Text = "GUI Text (total for all enabled drives)"; + // + // gbOtherSettings + // + this.gbOtherSettings.Controls.Add(this.comboBox1); + this.gbOtherSettings.Controls.Add(this.textBox2); + this.gbOtherSettings.Controls.Add(this.comboBox2); + this.gbOtherSettings.Controls.Add(this.label1); + this.gbOtherSettings.Controls.Add(this.label4); + this.gbOtherSettings.Controls.Add(this.label2); + this.gbOtherSettings.Controls.Add(this.textBox3); + this.gbOtherSettings.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.gbOtherSettings.Location = new System.Drawing.Point(519, 249); + this.gbOtherSettings.Name = "gbOtherSettings"; + this.gbOtherSettings.Size = new System.Drawing.Size(222, 91); + this.gbOtherSettings.TabIndex = 15; + this.gbOtherSettings.TabStop = false; + this.gbOtherSettings.Text = "Other settings"; + // + // DriveFreeSpaceSettings + // + this.AcceptButton = this.mpButton1; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.mpButton2; + this.ClientSize = new System.Drawing.Size(744, 538); + this.Controls.Add(this.gbOtherSettings); + this.Controls.Add(this.gbGUITextTotal); + this.Controls.Add(this.label3); + this.Controls.Add(this.mpButton2); + this.Controls.Add(this.gbGUIText); + this.Controls.Add(this.mpButton1); + this.Controls.Add(this.gbDrives); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "DriveFreeSpaceSettings"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Drive Free Space - Settings"; + this.gbDrives.ResumeLayout(false); + this.gbGUIText.ResumeLayout(false); + this.gbGUIText.PerformLayout(); + this.gbGUITextTotal.ResumeLayout(false); + this.gbGUITextTotal.PerformLayout(); + this.gbOtherSettings.ResumeLayout(false); + this.gbOtherSettings.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private MediaPortal.UserInterface.Controls.MPGroupBox gbDrives; + private MediaPortal.UserInterface.Controls.MPButton mpButton1; + private Raccoom.Windows.Forms.TreeViewFolderBrowser treeViewRecursiveChecked; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.ToolTip toolTip1; + private MediaPortal.UserInterface.Controls.MPGroupBox gbGUIText; + private System.Windows.Forms.TextBox tbGUIText; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private MediaPortal.UserInterface.Controls.MPButton mpButton2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox comboBox2; + private MediaPortal.UserInterface.Controls.MPGroupBox gbGUITextTotal; + private System.Windows.Forms.TextBox tbGUITextTotal; + private MediaPortal.UserInterface.Controls.MPGroupBox gbOtherSettings; + + } +} \ No newline at end of file Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.cs =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.cs (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.cs 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,135 @@ +using System; +using System.Reflection; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using MediaPortal.Configuration; +using MediaPortal.GUI.Library; +using Raccoom.Windows.Forms; + +namespace DriveFreeSpacePlugin +{ + public partial class DriveFreeSpaceSettings : Form + { + private string _configSection = String.Empty; + private const string _configSectionDefault = "DriveFreeSpace"; + + public DriveFreeSpaceSettings() + { + InitializeComponent(); + + try + { + _configSection = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().Location); + _configSection = Regex.Replace(_configSection, @"\W*", ""); + } + catch + { + _configSection = _configSectionDefault; + } + if (String.IsNullOrEmpty(_configSection)) + _configSection = _configSectionDefault; + + using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + int cbUnit = xmlreader.GetValueAsInt(_configSection, "unit", 0); + if (cbUnit > 2) cbUnit = 2; + else if (cbUnit < 0) cbUnit = 0; + comboBox1.SelectedIndex = cbUnit; + + int cbBRUnit = xmlreader.GetValueAsInt(_configSection, "bitrateunit", 0); + if (cbBRUnit > 1) cbBRUnit = 1; + else if (cbBRUnit < 0) cbBRUnit = 0; + comboBox2.SelectedIndex = cbBRUnit; + + tbGUIText.Text = xmlreader.GetValueAsString(_configSection, "drivestext", "%drive% (%label%)\n%freespace%/%totalspace% %unit%\n\n").Replace(Environment.NewLine, "\n").Replace("\n", Environment.NewLine); + + tbGUITextTotal.Text = xmlreader.GetValueAsString(_configSection, "drivestexttotal", "%freespace%/%totalspace% %unit%").Replace(Environment.NewLine, "\n").Replace("\n", Environment.NewLine); + + textBox2.Text = xmlreader.GetValueAsString(_configSection, "refresh", "30"); + + textBox3.Text = xmlreader.GetValueAsString(_configSection, "bitrate", "4086"); + + string drives = xmlreader.GetValueAsString(_configSection, "SelectedDirectories", ""); + string[] selectedDrivesArray = drives.Split(','); + Array.Sort(selectedDrivesArray); + foreach (string s in selectedDrivesArray) + if (!String.IsNullOrEmpty(s)) + this.treeViewRecursiveChecked.SelectedDirectories.Add(s); + } + + this.treeViewRecursiveChecked.DataSource = new Raccoom.Windows.Forms.TreeViewFolderBrowserDataProvider(); + this.treeViewRecursiveChecked.RootFolder = System.Environment.SpecialFolder.MyComputer; + this.treeViewRecursiveChecked.Populate(System.Environment.SpecialFolder.MyComputer); + } + + private void mpButton1_Click(object sender, EventArgs e) + { + SaveSettings(); + this.Close(); + } + + private void SaveSettings() + { + using (MediaPortal.Profile.Settings xmlwriter = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) + { + string drives = String.Empty; + + foreach (string s in this.treeViewRecursiveChecked.SelectedDirectories) + if (!String.IsNullOrEmpty(s)) + drives += s + ","; + + if (!String.IsNullOrEmpty(drives)) + drives = drives.Remove(drives.Length - 1); + + string[] selectedDrivesArray = drives.Split(','); + Array.Sort(selectedDrivesArray); + + drives = String.Empty; + foreach (string s in selectedDrivesArray) + if (!String.IsNullOrEmpty(s)) + drives += s + ","; + + if (!String.IsNullOrEmpty(drives)) + drives = drives.Remove(drives.Length - 1); + + xmlwriter.SetValue(_configSection, "SelectedDirectories", drives); + + xmlwriter.SetValue(_configSection, "unit", comboBox1.SelectedIndex); + + xmlwriter.SetValue(_configSection, "bitrateunit", comboBox2.SelectedIndex); + + xmlwriter.SetValue(_configSection, "drivestext", tbGUIText.Text); + + xmlwriter.SetValue(_configSection, "drivestexttotal", tbGUITextTotal.Text); + + try + { + xmlwriter.SetValue(_configSection, "refresh", Convert.ToInt32(textBox2.Text).ToString()); + } + catch + { + xmlwriter.SetValue(_configSection, "refresh", "30"); + } + + try + { + xmlwriter.SetValue(_configSection, "bitrate", Convert.ToInt32(textBox3.Text).ToString()); + } + catch + { + xmlwriter.SetValue(_configSection, "bitrate", "4086"); + } + } + } + + private void mpButton2_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} \ No newline at end of file Added: trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.resx =================================================================== --- trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.resx (rev 0) +++ trunk/plugins/DriveFreeSpace/Source/DriveFreeSpaceSettings.resx 2010-08-09 10:48:49 UTC (rev 3704) @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a +... [truncated message content] |
From: <Sil...@us...> - 2010-08-09 11:13:28
|
Revision: 3706 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3706&view=rev Author: SilentException Date: 2010-08-09 11:13:21 +0000 (Mon, 09 Aug 2010) Log Message: ----------- SkinTranslations plugin Added Paths: ----------- trunk/plugins/SkinTranslations/ trunk/plugins/SkinTranslations/SkinTranslations/ trunk/plugins/SkinTranslations/SkinTranslations/Localization/ trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations/ trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations/en-US.xml trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations.cs trunk/plugins/SkinTranslations/SkinTranslations/Properties/ trunk/plugins/SkinTranslations/SkinTranslations/Properties/AssemblyInfo.cs trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslations.csproj trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslationsPlugin.cs trunk/plugins/SkinTranslations/SkinTranslations/Utils/ trunk/plugins/SkinTranslations/SkinTranslations/Utils/GUIUtils.cs trunk/plugins/SkinTranslations/SkinTranslations/Utils/Log.cs trunk/plugins/SkinTranslations/SkinTranslations/Utils/TranslationsProvider.cs trunk/plugins/SkinTranslations/SkinTranslations/bin/ trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/ trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/SkinTranslations.dll trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/SkinTranslations.pdb trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/ trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/SkinTranslations.dll trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/SkinTranslations.pdb trunk/plugins/SkinTranslations/SkinTranslations/obj/ trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/ trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/Refactor/ trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/ResolveAssemblyReference.cache trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.csproj.FileListAbsolute.txt trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.dll trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.pdb trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/TempPE/ trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/ trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/ResolveAssemblyReference.cache trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.csproj.FileListAbsolute.txt trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.dll trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.pdb trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/TempPE/ trunk/plugins/SkinTranslations/SkinTranslations.sln trunk/plugins/SkinTranslations/SkinTranslations.suo Added: trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations/en-US.xml =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations/en-US.xml (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations/en-US.xml 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Skin translation file --> +<!-- English (US) --> + +<strings> + <!--<string Field="ExampleTranslation">Example of translated string</string>--> + <!--<string Field="ExampleTranslationFromMediaPortal">874</string>--> + + <!-- # --> + + <!-- A --> + + <!-- B --> + + <!-- C --> + + <!-- D --> + + <!-- E --> + + <!-- F --> + + <!-- G --> + + <!-- H --> + + <!-- I --> + + <!-- J --> + + <!-- K --> + + <!-- L --> + + <!-- M --> + + <!-- N --> + + <!-- O --> + + <!-- P --> + + <!-- Q --> + + <!-- R --> + + <!-- S --> + + <!-- T --> + + <!-- U --> + + <!-- V --> + + <!-- W --> + + <!-- X --> + + <!-- Y --> + + <!-- Z --> + +</strings> Added: trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations.cs =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations.cs (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/Localization/Translations.cs 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,199 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Reflection; +using System.Xml; +using System.Text.RegularExpressions; +using MediaPortal.Configuration; +using MediaPortal.GUI.Library; +using SkinTranslations.Utils; + +namespace SkinTranslations.Localization { + public static class Translations { + #region Private variables + private static Dictionary<string, string> _translations = new Dictionary<string,string>(); + private static string _path = string.Empty; + private static DateTimeFormatInfo _info; + #endregion + + #region Constructor + static Translations() { + } + #endregion + + #region Public Properties + // Gets the language actually used (after checking for localization file and fallback). + public static string Lang { get; private set; } + + /// <summary> + /// Gets the translated strings collection in the active language + /// </summary> + public static Dictionary<string, string> Strings { + get { + return _translations; + } + } + #endregion + + #region Private methods + private static int LoadTranslations() { + Utils.Log.Info("Using language: " + Lang); + + XmlDocument doc = new XmlDocument(); + Dictionary<string, string> TranslatedStrings = new Dictionary<string, string>(); + string langPath = ""; + + try { + langPath = Path.Combine(_path, Lang + ".xml"); + doc.Load(langPath); + } + catch (Exception e) { + if (e.GetType() == typeof(FileNotFoundException) || e.GetType() == typeof(DirectoryNotFoundException)) + Utils.Log.Warn(string.Format("Cannot find skin translation file {0}", langPath)); + else { + Utils.Log.Error(string.Format("Error in translation XML file: {0}:", Lang)); + Utils.Log.Error(e.Message); + } + + if (Lang == "en-US") { + Utils.Log.Info(string.Format("Nothing to translate for skin {0}", TranslationsProvider.CurrentSkin)); + return 0; // otherwise we are in an endless loop! + } + + Lang = "en-US"; + return LoadTranslations(); + } + + foreach (XmlNode stringEntry in doc.DocumentElement.ChildNodes) { + if (stringEntry.NodeType == XmlNodeType.Element) + try { + int mepoTranslation; + if (int.TryParse(stringEntry.InnerText, out mepoTranslation)) + TranslatedStrings.Add(stringEntry.Attributes.GetNamedItem("Field").Value, GUILocalizeStrings.Get(mepoTranslation)); + else + TranslatedStrings.Add(stringEntry.Attributes.GetNamedItem("Field").Value, stringEntry.InnerText); + } + catch (Exception e) { + Utils.Log.Error("Error in translation engine:"); + Utils.Log.Error(e.Message); + } + } + + if (TranslatedStrings != null && TranslatedStrings.Count > 0) { + foreach (KeyValuePair<string, string> kvp in TranslatedStrings) { + Strings[kvp.Key] = kvp.Value; + } + } + + return TranslatedStrings.Count; + } + #endregion + + #region Public Methods + public static void Init() { + Strings.Clear(); + + try { + Lang = GUILocalizeStrings.GetCultureName(GUILocalizeStrings.CurrentLanguage()); + _info = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentUICulture); + } + catch (Exception) { + Lang = CultureInfo.CurrentUICulture.Name; + _info = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentUICulture); + } + + _path = Path.Combine(GUIGraphicsContext.Skin, "Translations"); + + LoadTranslations(); + } + + public static string GetByName(string name) { + if (!Strings.ContainsKey(name)) + return name; + + return Strings[name]; + } + + public static string GetByName(string name, params object[] args) { + return String.Format(GetByName(name), args); + } + + /// <summary> + /// Takes an input string and replaces all ${named} variables with the proper translation if available + /// </summary> + /// <param name="input">a string containing ${named} variables that represent the translation keys</param> + /// <returns>translated input string</returns> + public static string ParseString(string input) { + Regex replacements = new Regex(@"\$\{([^\}]+)\}"); + MatchCollection matches = replacements.Matches(input); + foreach (Match match in matches) { + input = input.Replace(match.Value, GetByName(match.Groups[1].Value)); + } + return input; + } + + public static string GetDayName(DayOfWeek dayOfWeek) { + return _info.GetDayName(dayOfWeek); + } + + public static string GetShortestDayName(DayOfWeek dayOfWeek) { + return _info.GetShortestDayName(dayOfWeek); + } + #endregion + + #region Translations / Strings + /// <summary> + /// These will be loaded with the language files content + /// if the selected lang file is not found, it will first try to load en(us).xml as a backup + /// if that also fails it will use the hardcoded strings as a last resort. + /// </summary> + + // # + + // A + + // B + + // C + + // D + + // E + + // F + + // G + + // H + + // I + + // L + + // M + + // N + + // O + + // P + + // Q + + // R + + // S + + // T + + // U + + // V + + // W + + // Y + #endregion + } +} \ No newline at end of file Added: trunk/plugins/SkinTranslations/SkinTranslations/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/Properties/AssemblyInfo.cs 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SkinTranslations")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SkinTranslations")] +[assembly: AssemblyCopyright("Copyright © 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f69a3291-4de5-4d54-985f-dfaefc640734")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.6.0.0")] +[assembly: AssemblyFileVersion("0.6.0.0")] Added: trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslations.csproj =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslations.csproj (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslations.csproj 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{469D3EB1-F725-4533-A3B3-D7BF70035839}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>SkinTranslations</RootNamespace> + <AssemblyName>SkinTranslations</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Core, Version=1.0.6.28732, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Core.dll</HintPath> + <Private>False</Private> + </Reference> + <Reference Include="Dialogs, Version=1.0.6.28738, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\plugins\Windows\Dialogs.dll</HintPath> + <Private>False</Private> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + <Reference Include="Utils, Version=2.2.7.28725, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>C:\Program Files\Team MediaPortal\MediaPortal\Utils.dll</HintPath> + <Private>False</Private> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="SkinTranslationsPlugin.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Localization\Translations.cs" /> + <Compile Include="Utils\TranslationsProvider.cs" /> + <Compile Include="Utils\GUIUtils.cs" /> + <Compile Include="Utils\Log.cs" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslationsPlugin.cs =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslationsPlugin.cs (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/SkinTranslationsPlugin.cs 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MediaPortal.GUI.Library; +using MediaPortal.Util; +using SkinTranslations.Localization; +using SkinTranslations.Utils; + +namespace SkinTranslations { + public class SkinTranslationsPlugin : ISetupForm, IPlugin { + #region Variables + private TranslationsProvider _translationsProvider = new TranslationsProvider(); + #endregion + + #region Constructors + public SkinTranslationsPlugin() { + } + #endregion + + #region Private methods + #endregion + + #region IPlugin Members + public void Start() { + Utils.Log.Info("Starting plugin"); + _translationsProvider.SetCurrentSkinAndLanguage(); + _translationsProvider.SetupUpdater(); + } + + public void Stop() { + } + #endregion + + #region ISetupForm Members + public bool CanEnable() { + return true; + } + + public string Description() { + return "Translations for skins, finally ;)"; + } + + public bool DefaultEnabled() { + return true; + } + + public int GetWindowId() { + return -1; + } + + public bool GetHome(out string strButtonText, out string strButtonImage, out string strButtonImageFocus, out string strPictureImage) { + strButtonText = null; + strButtonImage = null; + strButtonImageFocus = null; + strPictureImage = null; + return false; + } + + public string Author() { + return "SilentException"; + } + + public string PluginName() { + return "SkinTranslations"; + } + + public bool HasSetup() { + return false; + } + + public void ShowPlugin() { + } + #endregion + } +} Added: trunk/plugins/SkinTranslations/SkinTranslations/Utils/GUIUtils.cs =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/Utils/GUIUtils.cs (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/Utils/GUIUtils.cs 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MediaPortal.GUI.Library; + +namespace SkinTranslations.Utils +{ + public class GUIUtils + { + public static void SetProperty(string property, string value) { + SetProperty(property, value, false); + } + + public static void SetProperty(string property, string value, bool log) { + if (string.IsNullOrEmpty(value)) + value = " "; + + GUIPropertyManager.SetProperty(property, value); + + if (log) { + if (GUIPropertyManager.Changed) + Log.Debug("Set property \"" + property + "\" to \"" + value + "\" successful"); + else + Log.Warn("Set property \"" + property + "\" to \"" + value + "\" failed"); + } + } + } +} Added: trunk/plugins/SkinTranslations/SkinTranslations/Utils/Log.cs =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/Utils/Log.cs (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/Utils/Log.cs 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SkinTranslations.Utils { + public class Log { + private static readonly string PREFIX = "SkinTranslationsPlugin: "; + + public static void Debug(string msg) { + MediaPortal.GUI.Library.Log.Debug(PREFIX + msg); + } + public static void Info(string msg) { + MediaPortal.GUI.Library.Log.Info(PREFIX + msg); + } + public static void Error(string msg) { + MediaPortal.GUI.Library.Log.Error(PREFIX + msg); + } + public static void Warn(string msg) { + MediaPortal.GUI.Library.Log.Warn(PREFIX + msg); + } + } +} Added: trunk/plugins/SkinTranslations/SkinTranslations/Utils/TranslationsProvider.cs =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/Utils/TranslationsProvider.cs (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/Utils/TranslationsProvider.cs 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using MediaPortal.GUI.Library; +using SkinTranslations.Localization; +using Action = MediaPortal.GUI.Library.Action; +using Window = MediaPortal.GUI.Library.GUIWindow.Window; + +namespace SkinTranslations.Utils { + public class TranslationsProvider { + private Dictionary<string, string> _currentTranslations = new Dictionary<string, string>(); + + public string CurrentSkinAndLanguage { + get { + return _currentSkinAndLanguage; + } + set { + if (value != _currentSkinAndLanguage) { + if (!string.IsNullOrEmpty(_currentSkinAndLanguage)) { + Log.Info("Skin / language has been changed. Publishing new skin translations..."); + UndoTranslateSkin(); + } + _currentSkinAndLanguage = value; + ExtractSkinAndLanguage(); + ProcessSkinTranslations(); + } + } + } + private string _currentSkinAndLanguage = string.Empty; + + public static string CurrentSkin { get; set; } + public static string CurrentLanguage { get; set; } + + public void SetupUpdater() { + GUIWindowManager.OnDeActivateWindow += new GUIWindowManager.WindowActivationHandler(GUIWindowManager_OnDeActivateWindow); + } + + private void GUIWindowManager_OnDeActivateWindow(int windowId) { + // Settings/General window + if (windowId == (int)Window.WINDOW_SETTINGS_SKIN) { + Log.Debug("Settings/General window has been closed. Will publish new skin translations if skin or language has been changed..."); + //SaveSettings(); + SetCurrentSkinAndLanguage(); + } + } + + private void SaveSettings(Object stateInfo) { + Log.Debug("Saving mediaportal.xml. Will publish new skin translations if skin or language has been changed..."); + MediaPortal.Profile.Settings.SaveCache(); + } + + public void SetCurrentSkinAndLanguage() { + using (MediaPortal.Profile.Settings xmlReader = new MediaPortal.Profile.MPSettings()) { + string currentSkin = xmlReader.GetValueAsString("skin", "name", "Blue3wide"); + string currentLanguage = xmlReader.GetValueAsString("skin", "language", "English"); + if (!string.IsNullOrEmpty(currentSkin) && !string.IsNullOrEmpty(currentLanguage) && GUIGraphicsContext.Skin.Contains(currentSkin)) { + SetCurrentSkinAndLanguage(currentSkin, currentLanguage); + //SetCurrentSkin(curentSkin); + //SetCurrentLanguage(currentLanguage); + } + } + } + + public void SetCurrentSkinAndLanguage(string skin, string language) { + CurrentSkinAndLanguage = string.Format("{0}/{1}", skin, language); + } + + private void ExtractSkinAndLanguage() { + string[] newSkinAndLanguage = CurrentSkinAndLanguage.Split(new char[] { '/' }, 2); + + if (newSkinAndLanguage != null && newSkinAndLanguage.Length == 2) { + CurrentSkin = newSkinAndLanguage[0]; + CurrentLanguage = newSkinAndLanguage[1]; + } + } + + private void ProcessSkinTranslations() { + Translations.Init(); + TranslateSkin(); + } + + private void TranslateSkin() { + if (Translations.Strings == null || Translations.Strings.Count == 0) return; + + Log.Info("Translating skin..."); + foreach (string name in Translations.Strings.Keys) { + string propertyName = string.Format("#SkinTranslation.Translations.{0}.Label", name); + string propertyValue = Translations.Strings[name]; + GUIUtils.SetProperty(propertyName, propertyValue, true); + _currentTranslations[propertyName] = propertyValue; + } + } + + private void UndoTranslateSkin() { + Log.Info("Clearing skin translations..."); + foreach (string name in Translations.Strings.Keys) { + string propertyName = string.Format("#SkinTranslation.Translations.{0}.Label", name); + string propertyValue = string.Empty; + GUIUtils.SetProperty(propertyName, propertyValue); + } + _currentTranslations.Clear(); + } + } +} Added: trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/SkinTranslations.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/SkinTranslations.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/SkinTranslations.pdb =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/bin/Debug/SkinTranslations.pdb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/SkinTranslations.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/SkinTranslations.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/SkinTranslations.pdb =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/bin/Release/SkinTranslations.pdb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/ResolveAssemblyReference.cache =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/ResolveAssemblyReference.cache ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.csproj.FileListAbsolute.txt =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.csproj.FileListAbsolute.txt (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.csproj.FileListAbsolute.txt 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,10 @@ +d:\app\tests\SkinTranslations\SkinTranslations\obj\Debug\ResolveAssemblyReference.cache +d:\app\tests\SkinTranslations\SkinTranslations\bin\Debug\SkinTranslations.dll +d:\app\tests\SkinTranslations\SkinTranslations\bin\Debug\SkinTranslations.pdb +d:\app\tests\SkinTranslations\SkinTranslations\obj\Debug\SkinTranslations.dll +d:\app\tests\SkinTranslations\SkinTranslations\obj\Debug\SkinTranslations.pdb +D:\developing\#maintained\SkinTranslations\SkinTranslations\bin\Debug\SkinTranslations.dll +D:\developing\#maintained\SkinTranslations\SkinTranslations\bin\Debug\SkinTranslations.pdb +D:\developing\#maintained\SkinTranslations\SkinTranslations\obj\Debug\ResolveAssemblyReference.cache +D:\developing\#maintained\SkinTranslations\SkinTranslations\obj\Debug\SkinTranslations.dll +D:\developing\#maintained\SkinTranslations\SkinTranslations\obj\Debug\SkinTranslations.pdb Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.pdb =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/obj/Debug/SkinTranslations.pdb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/ResolveAssemblyReference.cache =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/ResolveAssemblyReference.cache ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.csproj.FileListAbsolute.txt =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.csproj.FileListAbsolute.txt (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.csproj.FileListAbsolute.txt 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,5 @@ +D:\developing\#maintained\SkinTranslations\SkinTranslations\bin\Release\SkinTranslations.dll +D:\developing\#maintained\SkinTranslations\SkinTranslations\bin\Release\SkinTranslations.pdb +D:\developing\#maintained\SkinTranslations\SkinTranslations\obj\Release\ResolveAssemblyReference.cache +D:\developing\#maintained\SkinTranslations\SkinTranslations\obj\Release\SkinTranslations.dll +D:\developing\#maintained\SkinTranslations\SkinTranslations\obj\Release\SkinTranslations.pdb Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.dll =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.pdb =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations/obj/Release/SkinTranslations.pdb ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/SkinTranslations/SkinTranslations.sln =================================================================== --- trunk/plugins/SkinTranslations/SkinTranslations.sln (rev 0) +++ trunk/plugins/SkinTranslations/SkinTranslations.sln 2010-08-09 11:13:21 UTC (rev 3706) @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkinTranslations", "SkinTranslations\SkinTranslations.csproj", "{469D3EB1-F725-4533-A3B3-D7BF70035839}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {469D3EB1-F725-4533-A3B3-D7BF70035839}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {469D3EB1-F725-4533-A3B3-D7BF70035839}.Debug|Any CPU.Build.0 = Debug|Any CPU + {469D3EB1-F725-4533-A3B3-D7BF70035839}.Release|Any CPU.ActiveCfg = Release|Any CPU + {469D3EB1-F725-4533-A3B3-D7BF70035839}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/SkinTranslations/SkinTranslations.suo =================================================================== (Binary files differ) Property changes on: trunk/plugins/SkinTranslations/SkinTranslations.suo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |