From: <fr...@us...> - 2008-02-12 20:38:25
|
Revision: 1364 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=1364&view=rev Author: framug Date: 2008-02-12 12:38:22 -0800 (Tue, 12 Feb 2008) Log Message: ----------- new plugin, please read readme.txt Added Paths: ----------- trunk/plugins/WebEPGfr/ trunk/plugins/WebEPGfr/InfosSuivantSites.cs trunk/plugins/WebEPGfr/Properties/ trunk/plugins/WebEPGfr/Properties/AssemblyInfo.cs trunk/plugins/WebEPGfr/Properties/Resources.Designer.cs trunk/plugins/WebEPGfr/Properties/Resources.resx trunk/plugins/WebEPGfr/ReadMe.txt trunk/plugins/WebEPGfr/Resources/ trunk/plugins/WebEPGfr/Resources/calendrier.png trunk/plugins/WebEPGfr/Resources/exclamation.gif trunk/plugins/WebEPGfr/Resources/horloge.png trunk/plugins/WebEPGfr/WebEPGfr.cs trunk/plugins/WebEPGfr/WebEPGfr.csproj trunk/plugins/WebEPGfr/WebEPGfr.ico trunk/plugins/WebEPGfr/WebEPGfr.sln trunk/plugins/WebEPGfr/WebEPGfr.suo trunk/plugins/WebEPGfr/WebEPGfrSetup.Designer.cs trunk/plugins/WebEPGfr/WebEPGfrSetup.cs trunk/plugins/WebEPGfr/WebEPGfrSetup.resx trunk/plugins/WebEPGfr/WebEPGfr_planification/ trunk/plugins/WebEPGfr/WebEPGfr_planification/Properties/ trunk/plugins/WebEPGfr/WebEPGfr_planification/Properties/AssemblyInfo.cs trunk/plugins/WebEPGfr/WebEPGfr_planification/WebEPGfr_planification.cs trunk/plugins/WebEPGfr/WebEPGfr_planification/WebEPGfr_planification.csproj trunk/plugins/WebEPGfr/XmlToolBox.cs trunk/plugins/WebEPGfr/skin/ trunk/plugins/WebEPGfr/skin/BlueTwo/ trunk/plugins/WebEPGfr/skin/BlueTwo/Media/ trunk/plugins/WebEPGfr/skin/BlueTwo/Media/hover_kazer.png trunk/plugins/WebEPGfr/skin/BlueTwo/Media/kazer_logo.png trunk/plugins/WebEPGfr/skin/BlueTwo/ZguideTV.xml trunk/plugins/WebEPGfr/skin/BlueTwo/kazer.xml trunk/plugins/WebEPGfr/skin/BlueTwo wide/ trunk/plugins/WebEPGfr/skin/BlueTwo wide/Media/ trunk/plugins/WebEPGfr/skin/BlueTwo wide/Media/hover_kazer.png trunk/plugins/WebEPGfr/skin/BlueTwo wide/Media/kazer_logo.png trunk/plugins/WebEPGfr/skin/BlueTwo wide/ZguideTV.xml trunk/plugins/WebEPGfr/skin/BlueTwo wide/kazer.xml trunk/plugins/WebEPGfr/skin/Xface/ trunk/plugins/WebEPGfr/skin/Xface/Media/ trunk/plugins/WebEPGfr/skin/Xface/Media/hover_WebEPGfr.png trunk/plugins/WebEPGfr/skin/Xface/Media/hover_kazer.png trunk/plugins/WebEPGfr/skin/Xface/Media/kazer_logo.png trunk/plugins/WebEPGfr/skin/Xface/ZguideTV.xml trunk/plugins/WebEPGfr/skin/Xface/common.window.ZguideTV.xml trunk/plugins/WebEPGfr/skin/Xface/common.window.kazer.xml trunk/plugins/WebEPGfr/skin/Xface/kazer.xml Added: trunk/plugins/WebEPGfr/InfosSuivantSites.cs =================================================================== --- trunk/plugins/WebEPGfr/InfosSuivantSites.cs (rev 0) +++ trunk/plugins/WebEPGfr/InfosSuivantSites.cs 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,124 @@ +#region Banni\xE8re +/* + * Copyright (C) 2008 framug + * + * 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 + +#region using +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using MediaPortal.Profile; // n\xE9cessaire pour Settings +using MediaPortal.Configuration; // pour lire le xml de config +#endregion + +namespace WebEPGfr +{ + public class InfosSuivantSites + { +#region <declarations> + // D\xE9finition des d\xE9claratives + bool _Kazer = false; + bool _ZguideTV = false; + bool _ZguideTV_TNT = false; + bool _ZguideTV_complet = false; + String _userhash = ""; +#endregion + +#region <<CONSTRUCTOR>> + public InfosSuivantSites() + { +// On va lire le XML de configuration + Lire_xml(); + } +#endregion + + // Initialisation des variables globales a la classe InfosSuivantSites + public void Lire_xml() + { + using (Settings lirexml = new Settings(Config.GetFile(Config.Dir.Config, "WebEPGfr.xml"))) + { + _Kazer = lirexml.GetValueAsBool("WebEPGfr", "Kazer", false); + _ZguideTV = lirexml.GetValueAsBool("WebEPGfr", "ZguideTV", false); + _ZguideTV_TNT = lirexml.GetValueAsBool("ZguideTV", "TNT", false); + _ZguideTV_complet = lirexml.GetValueAsBool("ZguideTV", "complet", false); + _userhash = lirexml.GetValueAsString("Kazer", "userhash", ""); + } + } + + // Retourne le nom du skin a afficher + public String skin_a_afficher() + { + String xml_du_skin = ""; + if (_Kazer) + { + xml_du_skin = "kazer"; + } + if (_ZguideTV) + { + xml_du_skin = "ZguideTV"; + } + + xml_du_skin = xml_du_skin + ".xml"; + + return xml_du_skin; + } + + // Retourne l'URL de verification + public String URL_de_verification() + { + String URL_de_verification = @"http://www.google.fr"; + if (_Kazer) + { + URL_de_verification = @"http://www.kazer.org"; + } + if (_ZguideTV) + { + URL_de_verification = @"http://xmltv.myftp.org/download/"; + } + + return URL_de_verification; + } + + // Retourne l'URL de download + public String URL_de_download() + { + String URL_de_download = ""; + if (_Kazer) + { + URL_de_download = @"http://www.kazer.org/gen_xml.php?u=" + _userhash; + } + if (_ZguideTV) + { + if (_ZguideTV_TNT) + { + URL_de_download = @"http://xmltv.myftp.org/download/tnt.zip"; + } + if (_ZguideTV_complet) + { + URL_de_download = @"http://xmltv.myftp.org/download/complet.zip"; + } + } + + return URL_de_download; + } + + } // fin de la classe InfosSuivantSites +} // fin du namespace Added: trunk/plugins/WebEPGfr/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/WebEPGfr/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/WebEPGfr/Properties/AssemblyInfo.cs 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Resources; + +// Les informations générales relatives à un assembly dépendent de +// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations +// associées à un assembly. +[assembly: AssemblyTitle("WebEPGfr")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WebEPGfr")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly +// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de +// COM, affectez la valeur true à l'attribut ComVisible sur ce type. +[assembly: ComVisible(false)] + +// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM +[assembly: Guid("b7c11044-8a0c-4235-a346-44787491d5d0")] + +// Les informations de version pour un assembly se composent des quatre valeurs suivantes : +// +// Version principale +// Version secondaire +// Numéro de build +// Révision +// +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguageAttribute("fr-FR")] Added: trunk/plugins/WebEPGfr/Properties/Resources.Designer.cs =================================================================== --- trunk/plugins/WebEPGfr/Properties/Resources.Designer.cs (rev 0) +++ trunk/plugins/WebEPGfr/Properties/Resources.Designer.cs 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// Ce code a été généré par un outil. +// Version du runtime :2.0.50727.1433 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace WebEPGfr.Properties { + using System; + + + /// <summary> + /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées. + /// </summary> + // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder + // à l'aide d'un outil, tel que ResGen ou Visual Studio. + // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen + // avec l'option /str ou régénérez votre projet VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// <summary> + /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WebEPGfr.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Remplace la propriété CurrentUICulture du thread actuel pour toutes + /// les recherches de ressources à l'aide de cette classe de ressource fortement typée. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + internal static System.Drawing.Bitmap calendrier { + get { + object obj = ResourceManager.GetObject("calendrier", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap exclamation { + get { + object obj = ResourceManager.GetObject("exclamation", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap horloge { + get { + object obj = ResourceManager.GetObject("horloge", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap hover_kazer { + get { + object obj = ResourceManager.GetObject("hover_kazer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap hover_WebEPGfr { + get { + object obj = ResourceManager.GetObject("hover_WebEPGfr", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} Added: trunk/plugins/WebEPGfr/Properties/Resources.resx =================================================================== --- trunk/plugins/WebEPGfr/Properties/Resources.resx (rev 0) +++ trunk/plugins/WebEPGfr/Properties/Resources.resx 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,136 @@ +<?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> + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="horloge" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\horloge.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="exclamation" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\exclamation.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="hover_kazer" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\skin\Xface\Media\hover_kazer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="calendrier" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\calendrier.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> + <data name="hover_WebEPGfr" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\skin\Xface\Media\hover_WebEPGfr.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> +</root> \ No newline at end of file Added: trunk/plugins/WebEPGfr/ReadMe.txt =================================================================== --- trunk/plugins/WebEPGfr/ReadMe.txt (rev 0) +++ trunk/plugins/WebEPGfr/ReadMe.txt 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,38 @@ +English version. + +WebEPGfr V1.0 +WebEPGfr is an EPG/TV plugin for french users +It can eventually replace MediaPortal webepg plugin by downloading TVGuide on Websites instead of grabbing it. +Process is executed in a few seconds instead of some minutes or some hours, depending on number of channels to grab. + +Since it appears that kazer website can't assure correct EPG all the time, we decide to create another project. + +WebEPGfr will leave the choice between kazer (as same as Kazer plugin) and ZguideTV download, both with schedule. +With this new plugin, it will be easy to add others websites in the future, if never.... + +At this stage : + +Working : +- WebEPGfr plugin is properly executing kazer website download. +- WebEPGfr plugin is able to display other skins (i.e. ZguideTV) +- The setup is OK for ZguideTV (except missing ZguideTV picture). +- WebEPGfr.cs is OK for ZguideTV and other Websites. +- The schedule WebEPGfr_planification.cs is OK. +- xml skins for ZguideTV are OK (except hover and logo). + +Informations : +- InfosSuivantSites.cs give names for http requests, skins to display, download URL depending on Websites choosen in Setup. + +To do : +- Re-working XmlToolBox.cs for others sites than kazer. (lopeztuparles) +- TVGuide only with MediaPortal mapped channels to avoid not needed records in MP TVDatabase, if possible. (lopeztuparles) +- Delete temp files (lopeztemp.txt, lopeztemp.zip, tnt.xml, complet.xml). (lopeztuparles) +- schedule : Replace download sleep by thread because of bigger download size. (lopeztuparles) +- Missing picture for ZguideTV in Setup. (-ltb-) +- Missing hover_WebEPGfr for B2 and B2 Wide. (-ltb-) +- Missing ZguideTV_logo for B2, B2 Wide and Xface. (-ltb-) + + +When WebEPGfr development will be finished, we will remove Kazer plugin folder on sourceforge. +But, for the moment, it will be great, if possible, to leave older Kazer folder. +If we had to improve older Kazer plugin, depending on users requests, it will be more convenient to keep them separate. \ No newline at end of file Added: trunk/plugins/WebEPGfr/Resources/calendrier.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/WebEPGfr/Resources/calendrier.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/plugins/WebEPGfr/Resources/exclamation.gif =================================================================== (Binary files differ) Property changes on: trunk/plugins/WebEPGfr/Resources/exclamation.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/plugins/WebEPGfr/Resources/horloge.png =================================================================== (Binary files differ) Property changes on: trunk/plugins/WebEPGfr/Resources/horloge.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/plugins/WebEPGfr/WebEPGfr.cs =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfr.cs (rev 0) +++ trunk/plugins/WebEPGfr/WebEPGfr.cs 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,669 @@ +#region Banni\xE8re +/* + * Copyright (C) 2008 framug, Lopez.Tuparles + * + * 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 + +#region using +using System; +using System.IO; // pour les entr\xE9es/sorties fichier +using System.Net; // pour requ\xEAte http +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using System.Runtime.InteropServices; // n\xE9cessaire pour DllImport +using MediaPortal.Profile; // n\xE9cessaire pour Settings +using MediaPortal.Configuration; // pour lire le xml de config +using MediaPortal.GUI.Library; // pour g\xE9rer les \xE9crans MediaPortal +using MediaPortal.Dialogs; +using System.Threading; // pour g\xE9rer les dialogues MediaPortal +#endregion + +namespace WebEPGfr +{ + public class WebEPGfr : GUIWindow, ISetupForm + { + +#region <<imports>> + [DllImport("wininet.dll")] + private extern static bool InternetGetConnectedState(out int Description, int ReservedValue); +#endregion + +#region <<declarations>> + InfosSuivantSites InfosSuivantSites = new InfosSuivantSites(); + XMLGrabber oIntegration; + /// <summary> + /// sInfoEtatEnCours et sInfoEtatBackup forme une minipile MRU. + /// permettant de ne mettre \xE0 jour (process()) la partie graphique que si + /// sInfoEtatEnCours a \xE9t\xE9 mis \xE0 jour. + /// </summary> + private string _sInfoEtatEnCours = ""; + private string _sInfoEtatBackup = ""; + + /// <summary> + /// tTransport assure le telechargement via oIntegration. + /// le d\xE9legu\xE9 mCtransport permet de savoir quand le processus est termin\xE9 + /// Ce qui permet entre autre de detruire le thread. + /// </summary> + private Thread tTransport; + private delegate void CloseTransportDelegate(); + private CloseTransportDelegate mCTransport; + +// D\xE9finition des d\xE9claratives + String _Blanc = " "; + String _Chemin_guide_MP = ""; + String _Chemin_guide_MP_bak = ""; + String _Chemin_guide_WebEPGfr = ""; + bool _copie_tvguide = false; + bool _backup = false; + bool _backup_ok = false; + +#endregion + +#region enums + // correspondance entre ID du XML du skin et les variables programme + enum ctrl + { + date_MP = 6, + message_info = 8, + lib_date_WebEPGfr = 5, + var_date_WebEPGfr = 7, + lib_date_save = 10, + lib_guide_save = 11, + var_date_save = 12, + var_guide_save = 13 + } +#endregion + +#region skin +// D\xE9finition des boutons du skin + [SkinControlAttribute(2)] protected GUIButtonControl BoutonDownload = null; + [SkinControlAttribute(3)] protected GUIButtonControl BoutonMaj = null; + [SkinControlAttribute(9)] protected GUIButtonControl BoutonRestore = null; + // D\xE9finition des labels du skin + [SkinControlAttribute((int)ctrl.date_MP)] protected GUILabelControl date_mp = null; + [SkinControlAttribute((int)ctrl.lib_date_WebEPGfr)] protected GUILabelControl lib_date_WebEPGfr = null; + [SkinControlAttribute((int)ctrl.var_date_WebEPGfr)] protected GUILabelControl var_date_WebEPGfr = null; + [SkinControlAttribute((int)ctrl.message_info)] protected GUILabelControl message_info = null; + [SkinControlAttribute((int)ctrl.lib_date_save)] protected GUILabelControl lib_date_save = null; + [SkinControlAttribute((int)ctrl.lib_guide_save)] protected GUILabelControl lib_guide_save = null; + [SkinControlAttribute((int)ctrl.var_date_save)] protected GUILabelControl var_date_save = null; + [SkinControlAttribute((int)ctrl.var_guide_save)] protected GUILabelControl var_guide_save = null; +#endregion + +#region public + +#region n\xE9cessaire pour MediaPortal + // Retourne le nom du plugin visible dans le menu de configuration + public string PluginName() + { + return "WebEPGfr"; + } + +// Retourne la description du plugin visible dans le menu de configuration + public string Description() + { + return "Permet de r\xE9cup\xE9rer un guide t\xE9l\xE9 \xE0 partir d'un site d'EPG fran\xE7ais"; + } + +// Retourne le nom de l'auteur du plugin + public string Author() + { + return "framug, lopeztuparles"; + } + +// affichage de la configuration du plugin + public void ShowPlugin() + { +// V\xE9rifier si on a une connexion \xE0 Internet active (\xE9vite le plantage du setup) + if (!Connexion_Internet_active()) + { + return; + } +// on appelle la fen\xEAtre de config situ\xE9e dans WebEPGfrSetup.cs + Form setup = new WebEPGfrSetup(); +// Vas-y, affiche la ! + setup.ShowDialog(); + } + +// Indique si le plugin peut \xEAtre activ\xE9/d\xE9sactiv\xE9 + public bool CanEnable() + { + return true; // oui, dans ce cas-l\xE0 + } + +// Donne l'ID du plugin appartenant \xE0 la config + public int GetWindowId() + { + return 10124; // au hasard mais, pour les plugins, cela doit \xEAtre > 10000 + } + +// Indique si le plugin est activ\xE9 par defaut; + public bool DefaultEnabled() + { + return false; // non + } + +// Indique si le plugin poss\xE8de son propre \xE9cran de configuration + public bool HasSetup() + { + return true; // bien s\xFBr + } + +/// <summary> +/// Si le plugin doit avoir son propre bouton dans le menu principal de Media Portal alors, la +/// methode doit retourner true sinon, on ne le verra que dans le menu plugins +/// </summary> +/// <param name="strButtonText">Le texte du bouton dans MediaPortal</param> +/// <param name="strButtonImage">L'image du bouton ou, vide par d\xE9faut</param> +/// <param name="strButtonImageFocus">L'image du bouton ou, vide par d\xE9faut</param> + /// <param name="strPictureImage">La sous-image du bouton ou, vide par d\xE9faut</param> +/// <returns>true : Le plugin aura son propre bouton sur le menu principal +/// false : Le plugin n'aura pas son propre bouton sur le menu principal</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.Format("hover_{0}.png", "WebEPGfr"); + // Je pr\xE9f\xE8re true, comme \xE7a, les utilisateurs peuvent choisir s'ils veulent +// le plugin sur l'\xE9cran principal ou, dans le menu plugins + return true; + } + +#endregion + + // Initialisation des zones n\xE9cessaires \xE0 la classe WebEPGfr + public void Initialise_zones_WebEPGfr() + { + oIntegration = new XMLGrabber(); + String Nom_Fichier_Guide_MP = "TVguide.xml"; + + using (Settings lirexml = new Settings(Config.GetFile(Config.Dir.Config, "WebEPGfr.xml"))) + { + oIntegration.Configuration.UserHash = lirexml.GetValueAsString("Kazer", "userhash", ""); + oIntegration.Configuration.DownloadUri = new Uri(InfosSuivantSites.URL_de_download()); + oIntegration.Configuration.Fichier_Guide_Mediaportal = Nom_Fichier_Guide_MP; + oIntegration.Configuration.Fichier_Guide_WebEPGfr = lirexml.GetValueAsString("WebEPGfr", "Nom du fichier guide de WebEPGfr", oIntegration.Configuration.Fichier_Guide_WebEPGfr); + oIntegration.Configuration.Repertoire_XMLTV_Mediaportal = lirexml.GetValueAsString("WebEPGfr", "Repertoire XMLTV de MP", oIntegration.Configuration.Repertoire_XMLTV_Mediaportal); + oIntegration.Configuration.Repertoire_XMLTV_WebEPGfr = lirexml.GetValueAsString("WebEPGfr", "Repertoire XMLTV de WebEPGfr", ""); + + _backup = lirexml.GetValueAsBool("WebEPGfr", "backup", false); + } + _Chemin_guide_MP = oIntegration.Configuration.Repertoire_XMLTV_Mediaportal + oIntegration.Configuration.Fichier_Guide_Mediaportal; + _Chemin_guide_MP_bak = _Chemin_guide_MP + ".bak"; + _Chemin_guide_WebEPGfr = oIntegration.Configuration.Repertoire_XMLTV_WebEPGfr + oIntegration.Configuration.Fichier_Guide_WebEPGfr; + _copie_tvguide = _Chemin_guide_WebEPGfr != _Chemin_guide_MP; + } + + // On a cliqu\xE9 sur le bouton T\xE9l\xE9charger + public void Download() + { + //Creation d'un Delegate ce qui fourni un callback du Thread vers la classe + //Cela permet de savoir quand se finit le telechargement + if (tTransport == null) + { //Pas d'autre action en cours + mCTransport = new CloseTransportDelegate(CloseThreadedTransport); + tTransport = new Thread(new ThreadStart(TransportCacheFolder)); + tTransport.IsBackground = true; + tTransport.Start(); + } + else + { + _sInfoEtatEnCours = "T\xE9l\xE9chargement impossible: Une action est deja en cours"; + Log.Info("T\xE9l\xE9chargement impossible: Une action est deja en cours"); + } + } + + // On a cliqu\xE9 sur le bouton Mise \xE0 jour + public void MiseAjour() + { + if (tTransport == null) + { //Si pas de telechargement en cours + _sInfoEtatEnCours = "Mise \xE0 jour en cours"; + Log.Info("Mise \xE0 jour en cours"); + mCTransport = new CloseTransportDelegate(CloseThreadedTransport); + tTransport = new Thread(new ThreadStart(Execute_MiseAJour)); + tTransport.IsBackground = true; + tTransport.Start(); + } + else + { + _sInfoEtatEnCours = "Mise \xE0 jour impossible: Une action est deja en cours"; + Log.Info("Mise \xE0 jour impossible: Une action est deja en cours"); + } + } + +#endregion + +#region override +// N\xE9cessaire pour un plugin windows sinon, c'est consid\xE9r\xE9 comme un plugin process + public override int GetID + { + get + { + return 10124; + } + set + { + } + } + +// Appel\xE9 au d\xE9marrage de MediaPortal + public override bool Init() + { + return Load(GUIGraphicsContext.Skin + @"\" + InfosSuivantSites.skin_a_afficher()); + } + +// Appel\xE9 \xE0 chaque affichage de page, quand l'utilisateur clique sur le nom du plugin + protected override void OnPageLoad() + { + Initialise_zones_WebEPGfr(); + Initialise_zones_ecran(); + } + +// Appel\xE9 \xE0 chaque action utilisateur + protected override void OnClicked(int controlId, GUIControl control, MediaPortal.GUI.Library.Action.ActionType actionType) + { + if (control == BoutonDownload) + Download(); + if (control == BoutonMaj) + MiseAjour(); + if (control == BoutonRestore) + Restaure_TVGuide(); + base.OnClicked(controlId, control, actionType); + } + + /// <summary> + /// On passe ici de facon cyclique + /// </summary> + public override void Process() + { + //mise \xE0 jour de la partie graphique. + if (_sInfoEtatEnCours != _sInfoEtatBackup) + { + GUIControl.SetControlLabel(GetID, (int)ctrl.message_info, _sInfoEtatEnCours.ToString() ); + _sInfoEtatBackup = _sInfoEtatEnCours; + } + + } + +#endregion + +#region private + +//V\xE9rifier si on a une connexion \xE0 Internet active + private bool Connexion_Internet_active() + { + // Verifier s'il y a une connexion \xE0 Internet + int desc; + if (InternetGetConnectedState(out desc,0)) + { + // Cr\xE9er une requ\xEAte sur un site + try + { + HttpWebRequest requete = (HttpWebRequest)WebRequest.Create(InfosSuivantSites.URL_de_verification()); + } + catch (Exception ex) + { + MessageBox.Show("Probl\xE8me d'acc\xE8s aux sites Web : " + ex.ToString()); + return false; + } + return true; + } + else + { + MessageBox.Show("Probl\xE8me de connexion \xE0 Internet"); + return false; + } + } + +// Initialisation des zones de l'\xE9cran + private void Initialise_zones_ecran() + { + Initialise_date_MP(); + + // La visibilit\xE9 des boutons, variables et libell\xE9s de restore d\xE9pend du setup (chemin de sortie diff\xE9rent ou non) + BoutonMaj.IsVisible = _copie_tvguide; + lib_date_WebEPGfr.IsVisible = _copie_tvguide; + var_date_WebEPGfr.IsVisible = _copie_tvguide; + + if (_copie_tvguide) + { + Initialise_date_WebEPGfr(); + } + + // La visibilit\xE9 des boutons, variables et libell\xE9s de restore d\xE9pend du setup (sauvegarde ou non) + BoutonRestore.IsVisible = _backup; + lib_date_save.IsVisible = _backup; + lib_guide_save.IsVisible = _backup; + var_date_save.IsVisible = _backup; + var_guide_save.IsVisible = _backup; + + if (_backup) + { + Initialise_var_date_save(); + Initialise_var_guide_save(); + } + + // D\xE9placement des boutons, variables et libell\xE9s pour \xE9viter les trous \xE0 l'affichage + if (_backup && !_copie_tvguide) + { + BoutonRestore.YPosition = BoutonMaj.YPosition; + lib_guide_save.YPosition = lib_date_save.YPosition; + var_guide_save.YPosition = var_date_save.YPosition; + lib_date_save.YPosition = lib_date_WebEPGfr.YPosition; + var_date_save.YPosition = var_date_WebEPGfr.YPosition; + } + + + Initialise_message_info(); + } + +// Initialisation de la date du fichier guide de MediaPortal + + private void Initialise_date_MP() + { + String date_MP = ""; + if (File.Exists(_Chemin_guide_MP)) + { + DateTime date = File.GetLastWriteTime(_Chemin_guide_MP); + date_MP = date.ToString("dd MMMM yyyy \xE0 HH:mm:ss"); + } + else + { + date_MP = "Guide t\xE9l\xE9 inexistant"; + } + GUIControl.SetControlLabel(GetID, (int)ctrl.date_MP, date_MP); + } + +// Initialisation de la date du fichier guide de WebEPGfr + private void Initialise_date_WebEPGfr() + { + String date_WebEPGfr = ""; + if (File.Exists(_Chemin_guide_WebEPGfr)) + { + DateTime date = File.GetLastWriteTime(_Chemin_guide_WebEPGfr); + date_WebEPGfr = date.ToString("dd MMMM yyyy \xE0 HH:mm:ss"); + } + else + { + date_WebEPGfr = "Guide t\xE9l\xE9 inexistant"; + } + GUIControl.SetControlLabel(GetID, (int)ctrl.var_date_WebEPGfr, date_WebEPGfr); + } + +// Initialisation de la date de sauvegarde + private void Initialise_var_date_save() + { + String var_date_save = ""; + if (File.Exists(_Chemin_guide_MP_bak)) + { + DateTime date = File.GetCreationTime(_Chemin_guide_MP_bak); + var_date_save = date.ToString("dd MMMM yyyy \xE0 HH:mm:ss"); + } + else + { + var_date_save = "Sauvegarde inexistante"; + } + GUIControl.SetControlLabel(GetID, (int)ctrl.var_date_save, var_date_save); + } + +// Initialisation de la date du guide T\xE9l\xE9 correspondant \xE0 la sauvegarde + private void Initialise_var_guide_save() + { + String var_guide_save = ""; + if (File.Exists(_Chemin_guide_MP_bak)) + { + DateTime date = File.GetLastWriteTime(_Chemin_guide_MP_bak); + var_guide_save = date.ToString("dd MMMM yyyy \xE0 HH:mm:ss"); + } + else + { + var_guide_save = "Sauvegarde inexistante"; + } + GUIControl.SetControlLabel(GetID, (int)ctrl.var_guide_save, var_guide_save); + } + +// Initialisation du message d'information + private void Initialise_message_info() + { + GUIControl.SetControlLabel(GetID, (int)ctrl.message_info, _Blanc); + } + +#region <<THREADED TRANSPORT & DELEGATE>> + /// <summary> + /// Execute le transport du site de WebEPGfr vers le repertoire de destination + /// </summary> + private void TransportCacheFolder() + { + // Traitement du t\xE9l\xE9chargement de l'XML de WebEPGfr + _sInfoEtatEnCours = "T\xE9l\xE9chargement en cours"; + Log.Info("T\xE9l\xE9chargement en cours"); + long lDownloded = -1; + //Debut du telechargement + if ((oIntegration.Configuration.DownloadUri.ToString().Length > 3)) + { // Verification de base + lDownloded = oIntegration.DownloadXmlTvFile(); + if (lDownloded == 0) //telechargement r\xE9ussi + { + try + { + if (oIntegration.ValidateXmlTvFile() == true) + { // Le fichier semble correct + // si on est en backup sur le meme fichier guide ==> backup + if (_backup && !_copie_tvguide) + { + Backup_TVGuide(out _backup_ok); + if (!_backup_ok) + { + return; + } + } + oIntegration.GetMappings(); //etablit la liste des mappings + if (oIntegration.DoMapping() == 0) // R\xE9alise le mapping + { + Initialise_date_WebEPGfr(); + if (!_copie_tvguide) + { + Initialise_date_MP(); + } + _sInfoEtatEnCours = "T\xE9l\xE9chargement termin\xE9"; + Log.Info("T\xE9l\xE9chargement termin\xE9"); + } + else + { + // si on est en backup sur le meme fichier guide ==> restore + if (_backup && !_copie_tvguide) + { + Restaure_TVGuide(); + } + _sInfoEtatEnCours = "le Mapping a \xE9chou\xE9"; + Log.Info("le Mapping a \xE9chou\xE9"); + } + } + else + { + _sInfoEtatEnCours = "Fichier non Conforme"; + Log.Info("Fichier non Conforme"); + } + } + catch + { + _sInfoEtatEnCours = "Probleme durant le telechargement"; + Log.Info("Probleme durant le telechargement"); + } + + } + else + { + _sInfoEtatEnCours = "le T\xE9l\xE9chargement a \xE9chou\xE9"; + Log.Info("le T\xE9l\xE9chargement a \xE9chou\xE9"); + } + } + //Fin du thread + mCTransport(); + } + + /// <summary> + /// R\xE9alise une Copie du fichier issu de WebEPGfr vers TvGuide.xml + /// </summary> + private void Execute_MiseAJour() + { + bool copie_ok = false; + Copie_TVGuide(out copie_ok); + if (copie_ok) + { + _sInfoEtatEnCours = "Mise \xE0 jour termin\xE9e"; + Log.Info("Mise \xE0 jour termin\xE9e"); + } + //Fin du thread + mCTransport(); + } + + private void CloseThreadedTransport() + {//On Passe ici a la fin du thread + try { tTransport.Abort(); } + finally { tTransport = null; } + } +#endregion + +// Copie du fichier TVGuide + private void Copie_TVGuide(out bool copie_ok) + { + if (!File.Exists(_Chemin_guide_WebEPGfr)) + { + _sInfoEtatEnCours = "Le guide t\xE9l\xE9 de WebEPGfr n'existe pas"; + copie_ok = false; + Log.Info("Le guide t\xE9l\xE9 de WebEPGfr n'existe pas"); + return; + } + if (File.GetLastWriteTime(_Chemin_guide_WebEPGfr) > File.GetLastWriteTime(_Chemin_guide_MP)) + { + // Sauvegarde du guide t\xE9l\xE9 de MediaPortal en .bak + if (_backup) + { + Backup_TVGuide(out _backup_ok); + if (!_backup_ok) + { + copie_ok = _backup_ok; + return; + } + } + _sInfoEtatEnCours = "Copie du Guide T\xE9l\xE9 en cours"; + Log.Info("Copie du Guide T\xE9l\xE9 en cours"); + + try + { + File.Copy(_Chemin_guide_WebEPGfr, _Chemin_guide_MP, File.Exists(_Chemin_guide_MP)); + Initialise_date_MP(); + _sInfoEtatEnCours = "Copie du Guide T\xE9l\xE9 termin\xE9e"; + Log.Info("Copie du Guide T\xE9l\xE9 termin\xE9e"); + // Pour traiter le cas du backup premi\xE8re fois + if (_backup && !File.Exists(_Chemin_guide_MP_bak)) + { + Backup_TVGuide(out _backup_ok); + } + copie_ok = true; + return; + } + catch + { + _sInfoEtatEnCours = "Erreur de copie du Guide T\xE9l\xE9"; + copie_ok = false; + Log.Info("Erreur de copie du Guide T\xE9l\xE9"); + return; + } + } + else + { + _sInfoEtatEnCours = "Guide T\xE9l\xE9 de MediaPortal d\xE9j\xE0 \xE0 jour"; + copie_ok = false; + Log.Info("Guide T\xE9l\xE9 de MediaPortal d\xE9j\xE0 \xE0 jour"); + return; + } + } + +// Sauvegarde du guide t\xE9l\xE9 de MediaPortal en .bak + private void Backup_TVGuide(out bool backup_ok) + { + // Pour traiter le cas du backup premi\xE8re fois + if (File.Exists(_Chemin_guide_MP)) + { + try + { + _sInfoEtatEnCours = "Sauvegarde du Guide T\xE9l\xE9 en cours"; + File.Copy(_Chemin_guide_MP, _Chemin_guide_MP_bak, File.Exists(_Chemin_guide_MP_bak)); + Initialise_var_date_save(); + Initialise_var_guide_save(); + _sInfoEtatEnCours = "Sauvegarde du Guide T\xE9l\xE9 termin\xE9e"; + backup_ok = true; + Log.Info("Sauvegarde du Guide T\xE9l\xE9 termin\xE9e"); + return; + } + catch + { + _sInfoEtatEnCours = "Erreur de sauvegarde du Guide T\xE9l\xE9"; + backup_ok = false; + Log.Info("Erreur de sauvegarde du Guide T\xE9l\xE9"); + return; + } + } + else + { + _sInfoEtatEnCours = "Le guide t\xE9l\xE9 de MediaPortal n'existe pas"; + // backup_ok ne veut pas dire que le backup a forc\xE9ment \xE9t\xE9 fait mais, qu'on est + // pass\xE9 dans le processus normal de backup. + Log.Info("Le guide t\xE9l\xE9 de MediaPortal n'existe pas"); + backup_ok = true; + } + } + +// Restauration du .bak + private void Restaure_TVGuide() + { + if (File.Exists(_Chemin_guide_MP_bak)) + { + try + { + _sInfoEtatEnCours = "Restauration du Guide T\xE9l\xE9 en cours"; + Log.Info("Restauration du Guide T\xE9l\xE9 en cours"); + File.Copy(_Chemin_guide_MP_bak, _Chemin_guide_MP, File.Exists(_Chemin_guide_MP)); + Initialise_date_MP(); + _sInfoEtatEnCours = "Restauration du Guide T\xE9l\xE9 termin\xE9e"; + Log.Info("Restauration du Guide T\xE9l\xE9 termin\xE9e"); + } + catch + { + _sInfoEtatEnCours = "Erreur de restauration du Guide T\xE9l\xE9"; + Log.Info("Erreur de restauration du Guide T\xE9l\xE9"); + } + } + else + { + _sInfoEtatEnCours = "La sauvegarde du Guide T\xE9l\xE9 n'existe pas"; + Log.Info("La sauvegarde du Guide T\xE9l\xE9 n'existe pas"); + } + } + +#endregion + + } // fin de la classe WebEPGfr + +} // fin du namespace Added: trunk/plugins/WebEPGfr/WebEPGfr.csproj =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfr.csproj (rev 0) +++ trunk/plugins/WebEPGfr/WebEPGfr.csproj 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,123 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{1F927022-1A44-432D-B98B-82ECBF9765A7}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>WebEPGfr</RootNamespace> + <AssemblyName>WebEPGfr</AssemblyName> + <ApplicationIcon> + </ApplicationIcon> + </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=0.2.3.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\MediaPortal\Core\bin\Release\Core.dll</HintPath> + </Reference> + <Reference Include="Databases, Version=0.2.3.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\MediaPortal\Databases\bin\Release\Databases.dll</HintPath> + </Reference> + <Reference Include="Dialogs, Version=0.2.3.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\MediaPortal\Dialogs\bin\Release\Dialogs.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.DirectoryServices" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="TVCapture, Version=0.2.3.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\MediaPortal\TVCapture\bin\Release\TVCapture.dll</HintPath> + </Reference> + <Reference Include="Utils, Version=2.2.4.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\MediaPortal\Utils\bin\Release\Utils.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="InfosSuivantSites.cs" /> + <Compile Include="WebEPGfrSetup.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="WebEPGfrSetup.Designer.cs"> + <DependentUpon>WebEPGfrSetup.cs</DependentUpon> + </Compile> + <Compile Include="WebEPGfr.cs"> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="XmlToolBox.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="WebEPGfrSetup.resx"> + <SubType>Designer</SubType> + <DependentUpon>WebEPGfrSetup.cs</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <SubType>Designer</SubType> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <Content Include="ReadMe.txt" /> + <Content Include="skin\BlueTwo wide\ZguideTV.xml" /> + <Content Include="skin\BlueTwo\kazer.xml" /> + <Content Include="skin\BlueTwo\Media\hover_kazer.png" /> + <Content Include="skin\BlueTwo\Media\kazer_logo.png" /> + <Content Include="skin\BlueTwo wide\kazer.xml" /> + <Content Include="skin\BlueTwo wide\Media\hover_kazer.png" /> + <Content Include="skin\BlueTwo wide\Media\kazer_logo.png" /> + <Content Include="skin\BlueTwo\ZguideTV.xml" /> + <Content Include="skin\Xface\common.window.kazer.xml" /> + <Content Include="skin\Xface\common.window.ZguideTV.xml" /> + <Content Include="skin\Xface\kazer.xml" /> + <Content Include="skin\Xface\Media\hover_kazer.png" /> + <None Include="skin\Xface\Media\hover_WebEPGfr.png" /> + <Content Include="skin\Xface\Media\kazer_logo.png" /> + <Content Include="skin\Xface\ZguideTV.xml" /> + <Content Include="WebEPGfr.ico" /> + </ItemGroup> + <ItemGroup> + <Folder Include="Resources\" /> + </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/WebEPGfr/WebEPGfr.ico =================================================================== (Binary files differ) Property changes on: trunk/plugins/WebEPGfr/WebEPGfr.ico ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/plugins/WebEPGfr/WebEPGfr.sln =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfr.sln (rev 0) +++ trunk/plugins/WebEPGfr/WebEPGfr.sln 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebEPGfr", "WebEPGfr.csproj", "{1F927022-1A44-432D-B98B-82ECBF9765A7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebEPGfr_planification", "WebEPGfr_planification\WebEPGfr_planification.csproj", "{91C8D605-35D6-4CFF-B36D-95C6E7AD6E99}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1F927022-1A44-432D-B98B-82ECBF9765A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F927022-1A44-432D-B98B-82ECBF9765A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F927022-1A44-432D-B98B-82ECBF9765A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F927022-1A44-432D-B98B-82ECBF9765A7}.Release|Any CPU.Build.0 = Release|Any CPU + {91C8D605-35D6-4CFF-B36D-95C6E7AD6E99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91C8D605-35D6-4CFF-B36D-95C6E7AD6E99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91C8D605-35D6-4CFF-B36D-95C6E7AD6E99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91C8D605-35D6-4CFF-B36D-95C6E7AD6E99}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Added: trunk/plugins/WebEPGfr/WebEPGfr.suo =================================================================== (Binary files differ) Property changes on: trunk/plugins/WebEPGfr/WebEPGfr.suo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/plugins/WebEPGfr/WebEPGfrSetup.Designer.cs =================================================================== --- trunk/plugins/WebEPGfr/WebEPGfrSetup.Designer.cs (rev 0) +++ trunk/plugins/WebEPGfr/WebEPGfrSetup.Designer.cs 2008-02-12 20:38:22 UTC (rev 1364) @@ -0,0 +1,843 @@ +namespace WebEPGfr +{ + partial class WebEPGfrSetup + { + /// <summary> + /// Variable nécessaire au concepteur. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Nettoyage des ressources utilisées. + /// </summary> + /// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param> + ... [truncated message content] |