From: <fr...@us...> - 2008-10-11 18:31:11
|
Revision: 2199 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2199&view=rev Author: framug Date: 2008-10-11 18:31:09 +0000 (Sat, 11 Oct 2008) Log Message: ----------- MultiShortcut rev 1.1 (Part 2/2) - Use VirtualKeyboard. Not sure if useful for users. ?!? - Add German language. - Updated Doc. Revision Links: -------------- http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=1&view=rev Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut readme how to.doc trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Added Paths: ----------- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2008-10-11 11:44:30 UTC (rev 2198) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2008-10-11 18:31:09 UTC (rev 2199) @@ -29,9 +29,9 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=1.0.2587.38185, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=0.9.3.29272, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Core\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> Added: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml (rev 0) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml 2008-10-11 18:31:09 UTC (rev 2199) @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<Language name="German" characters="255"> + <Section name="unmapped"> + <String id="0">Anwendung</String> + <String id="1">Ausführungsdatei</String> + <String id="2">Argumente</String> + <String id="3">Verstecke MP während der Ausführung</String> + <String id="4">Anzeige im Home-Menü</String> + <String id="5">Bilddatei für Vorschau</String> + <String id="6">ButtonBilddatei</String> + <String id="7">ButtonBilddateiFokus</String> + <String id="8">ButtonBeschriftung</String> + <String id="9">Plugin ID</String> + <String id="10">PluginID</String> + <String id="11">MultiShortcut Konfiguration</String> + <String id="12">Button in Home-Menü einfügen (dynamische oder statische id !)</String> + <String id="13">Speichern</String> + <String id="14">Abbrechen</String> + <String id="15">-kein Name-</String> + <String id="16">Bilddatei muss mit "hover_" beginnen</String> + <String id="17">PNG-Datei nicht gefunden : </String> + <String id="18">Kann Anwendung nicht starten!</String> + <String id="19">Konfigurationsbereich : </String> + <String id="20">Verzeichnis</String> + <String id="21">Verzeichnis existiert nicht : </String> + <String id="22">Verwende virtuelles Keyboard</String> + </Section> +</Language> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml 2008-10-11 11:44:30 UTC (rev 2198) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml 2008-10-11 18:31:09 UTC (rev 2199) @@ -23,5 +23,6 @@ <String id="19">Config Section : </String> <String id="20">Directory</String> <String id="21">Directory doesn't exist : </String> + <String id="22">Use Virtual Keyboard</String> </Section> </Language> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml 2008-10-11 11:44:30 UTC (rev 2198) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml 2008-10-11 18:31:09 UTC (rev 2199) @@ -23,5 +23,6 @@ <String id="19">Section Config : </String> <String id="20">Répertoire</String> <String id="21">Le répertoire n'existe pas : </String> + <String id="22">Utiliser le clavier virtuel</String> </Section> </Language> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2008-10-11 11:44:30 UTC (rev 2198) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2008-10-11 18:31:09 UTC (rev 2199) @@ -57,6 +57,7 @@ protected internal string m_Caption = String.Empty; protected internal bool m_HandleMPWindow = false; protected internal string m_Directory = String.Empty; + protected internal bool m_UseVirtualKeyboard = false; int m_MP_WindowHWND = 0; XmlConfig XmlConfig = new XmlConfig(); @@ -87,6 +88,7 @@ m_ID = xmlreader.GetValueAsInt(m_Name, "pluginid", -1); m_HandleMPWindow = xmlreader.GetValueAsInt(m_Name, "handlempwindow", 1) == 0; m_Directory = xmlreader.GetValueAsString(m_Name, "directory", string.Empty); + m_UseVirtualKeyboard = xmlreader.GetValueAsBool(m_Name, "UseVirtualKeyboard", false); if (m_ExeFile.Length > 0) { @@ -247,6 +249,7 @@ XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "pluginid", m_ID); XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "handlempwindow", m_HandleMPWindow ? 0 : 1); XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "directory", m_Directory); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "UseVirtualKeyboard", m_UseVirtualKeyboard); //fmu case when hit Save on MultiShortcut plugin and hit Save on MP main config. // In this case, pluginid is stored before (for static ID) with MP xmlwrite. @@ -264,6 +267,7 @@ xmlwrite.SetValue(m_Name, "pluginid", m_ID); xmlwrite.SetValue(m_Name, "handlempwindow", m_HandleMPWindow ? 0 : 1); xmlwrite.SetValue(m_Name, "directory", m_Directory); + xmlwrite.SetValueAsBool(m_Name, "UseVirtualKeyboard", m_UseVirtualKeyboard); } } else @@ -366,6 +370,23 @@ { Directory.SetCurrentDirectory(m_Directory); } + //fmu use virtual keyboard before Run if configured + if (m_UseVirtualKeyboard) + { + VirtualKeyboard keyboard = (VirtualKeyboard)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIRTUAL_KEYBOARD); + if (keyboard != null) + { + keyboard.Reset(); + keyboard.Text = ""; + keyboard.DoModal(GetID); + // do it only if necessary + if (keyboard.IsConfirmed && keyboard.Text.Length > 0) + { + m_Arguments = keyboard.Text; + } + } + } + RunProgram(m_ExeFile, m_Arguments); } @@ -465,6 +486,14 @@ set { m_MS.m_Directory = value; } } + // [Category("Program")] + [LocalizedCategory("0"), LocalizedDisplayName("22")] + public bool UseVirtualKeyboard + { + get { return m_MS.m_UseVirtualKeyboard; } + set { m_MS.m_UseVirtualKeyboard = value; } + } + // [Category("Homescreen")] [LocalizedCategory("4"), LocalizedDisplayName("5")] public string Picture Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2008-10-11 11:44:30 UTC (rev 2198) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2008-10-11 18:31:09 UTC (rev 2199) @@ -28,17 +28,17 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=0.9.2.15869, Culture=neutral, processorArchitecture=x86"> + <Reference Include="Core, Version=0.9.3.29272, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Core\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Databases, Version=1.0.2587.38186, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Databases, Version=0.9.3.29273, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Databases\bin\Release\Databases.dll</HintPath> + <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Databases.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Dialogs, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Dialogs, Version=0.9.3.29274, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Dialogs.dll</HintPath> <Private>False</Private> @@ -48,9 +48,9 @@ <Reference Include="System.Drawing" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> - <Reference Include="Utils, Version=0.9.2.15860, Culture=neutral, processorArchitecture=x86"> + <Reference Include="Utils, Version=2.2.6.29271, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Utils\bin\Release\Utils.dll</HintPath> + <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Utils.dll</HintPath> <Private>False</Private> </Reference> </ItemGroup> @@ -76,6 +76,7 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> + <Content Include="Language\strings_de.xml" /> <Content Include="Language\strings_en.xml" /> <Content Include="Language\strings_fr.xml" /> </ItemGroup> Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2008-10-11 11:44:30 UTC (rev 2198) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2008-10-11 18:31:09 UTC (rev 2199) @@ -28,9 +28,9 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=1.0.2587.38185, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=0.9.3.29272, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Core\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2009-01-24 13:22:44
|
Revision: 2566 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2566&view=rev Author: framug Date: 2009-01-24 12:16:06 +0000 (Sat, 24 Jan 2009) Log Message: ----------- MultiShortcut V 1.2. - Ability to launch up to 3 programs in the same shortcut. - New Config Form design. - More Controls in Config. - Rewrite code for more readability. - Updated doc. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiButton.sln trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut readme how to.doc trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,8 +1,8 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<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>8.0.50727</ProductVersion> + <ProductVersion>9.0.21022</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}</ProjectGuid> <OutputType>Exe</OutputType> @@ -10,6 +10,11 @@ <RootNamespace>DLLFix</RootNamespace> <AssemblyName>DLLFix</AssemblyName> <ApplicationIcon>DLLFix.ico</ApplicationIcon> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -29,7 +34,7 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=0.9.3.29272, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=1.0.0.17220, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> Modified: trunk/plugins/MultiShortcut/MultiButton.sln =================================================================== --- trunk/plugins/MultiShortcut/MultiButton.sln 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiButton.sln 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,6 +1,6 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "TestServer\TestServer.csproj", "{D2159E0B-44FA-41D8-B701-081D2C931CC0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiShortcut", "MultiShortcut\MultiShortcut.csproj", "{7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}" Modified: trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs 2009-01-24 12:16:06 UTC (rev 2566) @@ -32,6 +32,8 @@ this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); + this.LibVersion = new System.Windows.Forms.Label(); + this.VarVersion = new System.Windows.Forms.Label(); this.SuspendLayout(); // // propertyGrid1 @@ -39,7 +41,8 @@ this.propertyGrid1.HelpVisible = false; this.propertyGrid1.Location = new System.Drawing.Point(12, 12); this.propertyGrid1.Name = "propertyGrid1"; - this.propertyGrid1.Size = new System.Drawing.Size(270, 383); + this.propertyGrid1.PropertySort = System.Windows.Forms.PropertySort.Categorized; + this.propertyGrid1.Size = new System.Drawing.Size(290, 371); this.propertyGrid1.TabIndex = 0; this.propertyGrid1.ToolbarVisible = false; // @@ -63,23 +66,48 @@ this.button2.Text = "Cancel"; this.button2.UseVisualStyleBackColor = true; // + // LibVersion + // + this.LibVersion.AutoSize = true; + this.LibVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.LibVersion.Location = new System.Drawing.Point(12, 406); + this.LibVersion.Name = "LibVersion"; + this.LibVersion.Size = new System.Drawing.Size(57, 13); + this.LibVersion.TabIndex = 11; + this.LibVersion.Text = "Version :"; + // + // VarVersion + // + this.VarVersion.AutoSize = true; + this.VarVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.VarVersion.Location = new System.Drawing.Point(66, 406); + this.VarVersion.Name = "VarVersion"; + this.VarVersion.Size = new System.Drawing.Size(25, 13); + this.VarVersion.TabIndex = 16; + this.VarVersion.Text = "ver"; + // // Config // this.AcceptButton = this.button1; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSize = true; this.CancelButton = this.button2; - this.ClientSize = new System.Drawing.Size(295, 434); + this.ClientSize = new System.Drawing.Size(315, 434); this.ControlBox = false; + this.Controls.Add(this.VarVersion); + this.Controls.Add(this.LibVersion); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Controls.Add(this.propertyGrid1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; this.Name = "Config"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "MultiShortcut Configuration"; this.ResumeLayout(false); + this.PerformLayout(); } @@ -88,5 +116,7 @@ private System.Windows.Forms.PropertyGrid propertyGrid1; public System.Windows.Forms.Button button1; public System.Windows.Forms.Button button2; + private System.Windows.Forms.Label LibVersion; + public System.Windows.Forms.Label VarVersion; } } \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <Language name="German" characters="255"> <Section name="unmapped"> - <String id="0">Anwendung</String> + <String id="0">Anwendung 2</String> <String id="1">Ausführungsdatei</String> <String id="2">Argumente</String> <String id="3">Verstecke MP während der Ausführung</String> @@ -10,8 +10,8 @@ <String id="6">ButtonBilddatei</String> <String id="7">ButtonBilddateiFokus</String> <String id="8">ButtonBeschriftung</String> - <String id="9">Plugin ID</String> - <String id="10">PluginID</String> + <String id="9">General</String> + <String id="10">Plugin ID</String> <String id="11">MultiShortcut Konfiguration</String> <String id="12">Button in Home-Menü einfügen (dynamische oder statische id !)</String> <String id="13">Speichern</String> @@ -24,5 +24,10 @@ <String id="20">Verzeichnis</String> <String id="21">Verzeichnis existiert nicht : </String> <String id="22">Verwende virtuelles Keyboard</String> + <String id="23">Anwendung 1</String> + <String id="24">Anwendung 3</String> + <String id="25">Ausführungsdatei existiert nicht : </String> + <String id="26">You have to fill at least one ExeFile !</String> + <String id="27">Virtual Directory should not be true if no exefile filled !</String> </Section> </Language> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <Language name="English" characters="255"> <Section name="unmapped"> - <String id="0">Program</String> + <String id="0">Program 2</String> <String id="1">Exefile</String> <String id="2">Arguments</String> <String id="3">HideMPWhileExecuting</String> @@ -10,8 +10,8 @@ <String id="6">ButtonImage</String> <String id="7">ButtonImageFocus</String> <String id="8">ButtonCaption</String> - <String id="9">Plugin ID</String> - <String id="10">PluginID</String> + <String id="9">General</String> + <String id="10">Plugin ID</String> <String id="11">MultiShortcut Configuration</String> <String id="12">Adds button to homepage (dynamic id or static id !)</String> <String id="13">Save</String> @@ -24,5 +24,10 @@ <String id="20">Directory</String> <String id="21">Directory doesn't exist : </String> <String id="22">Use Virtual Keyboard</String> + <String id="23">Program 1</String> + <String id="24">Program 3</String> + <String id="25">ExeFile doesn't exist : </String> + <String id="26">You have to fill at least one ExeFile !</String> + <String id="27">Virtual Directory should not be true if no exefile filled !</String> </Section> </Language> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <Language name="French" characters="255"> <Section name="unmapped"> - <String id="0">Programme</String> + <String id="0">Programme 2</String> <String id="1">Fichier executable</String> <String id="2">Arguments</String> <String id="3">MediaPortal dans barre de tache</String> @@ -10,8 +10,8 @@ <String id="6">Bouton de l'image</String> <String id="7">Focus du bouton de l'image</String> <String id="8">Légende du bouton</String> - <String id="9">Identifiant du plugin</String> - <String id="10">Numéro du plugin</String> + <String id="9">Général</String> + <String id="10">Identifiant du plugin</String> <String id="11">Configuration de MultiShortcut</String> <String id="12">Ajoute des boutons sur l'écran d'accueil (id dynamiques ou id statiques !)</String> <String id="13">Sauver</String> @@ -24,5 +24,10 @@ <String id="20">Répertoire</String> <String id="21">Le répertoire n'existe pas : </String> <String id="22">Utiliser le clavier virtuel</String> + <String id="23">Programme 1</String> + <String id="24">Programme 3</String> + <String id="25">Le Fichier executable n'existe pas : </String> + <String id="26">Vous devez renseigner au mons un Fichier executable !</String> + <String id="27">Le clavier virtuel ne devrait pas être positionné sans fichier executable renseigné !</String> </Section> </Language> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2009-01-24 12:16:06 UTC (rev 2566) @@ -130,6 +130,18 @@ /// Directory doesn't exist /// </summary> msgbox3 = 21, + /// <summary> + /// ExeFile doesn't exist + /// </summary> + msgbox4 = 25, + /// <summary> + /// You have to fill at least one ExeFile + /// </summary> + msgbox5 = 26, + /// <summary> + /// Virtual Directory should not be true if no exefile filled + /// </summary> + msgbox6 = 27 } Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut readme how to.doc =================================================================== (Binary files differ) Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,7 +1,7 @@ -#region Copyright (C) 2005-2007 Team MediaPortal +#region Copyright (C) 2005-today Team MediaPortal /* - * Copyright (C) 2005-2007 Team MediaPortal + * Copyright (C) 2005-today Team MediaPortal * http://www.team-mediaportal.com * * This Program is free software; you can redistribute it and/or modify @@ -22,6 +22,8 @@ */ #endregion + +#region using using System; using System.Collections.Generic; using System.Text; @@ -30,40 +32,61 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading; -using System.Windows.Forms; //fmu +using System.Windows.Forms; using System.ComponentModel; using MediaPortal.GUI.Library; using MediaPortal.Dialogs; -//using MediaPortal.Util; +#endregion namespace MediaPortal.MultiShortcut { - public class MultiShortcut: GUIWindow, ISetupForm, IShowPlugin + public class MultiShortcut : GUIWindow, ISetupForm, IShowPlugin { - #region ISetupForm Members + #region Declarations + // General protected internal int m_ID = -1; - protected internal string m_Name = String.Empty; + protected internal bool m_HandleMPWindow = false; + // Homescreen + protected internal string m_Caption = String.Empty; + protected internal string m_ButtonImg = String.Empty; + protected internal string m_ButtonImgF = String.Empty; + protected internal string m_Picture = String.Empty; + + // Pre-Processing + protected internal string m_PreDirectory = String.Empty; + protected internal string m_PreExeFile = String.Empty; + protected internal string m_PreArguments = String.Empty; + protected internal bool m_PreUseVirtualKeyboard = false; + + // Program + protected internal string m_Directory; protected internal string m_ExeFile = String.Empty; - protected internal string m_ProgFile = String.Empty; protected internal string m_Arguments = String.Empty; - - protected internal string m_Picture = String.Empty; - protected internal string m_ButtonImg = String.Empty; - protected internal string m_ButtonImgF = String.Empty; - protected internal string m_Caption = String.Empty; - protected internal bool m_HandleMPWindow = false; - protected internal string m_Directory = String.Empty; protected internal bool m_UseVirtualKeyboard = false; + // Post-Processing + protected internal string m_PostDirectory = String.Empty; + protected internal string m_PostExeFile = String.Empty; + protected internal string m_PostArguments = String.Empty; + protected internal bool m_PostUseVirtualKeyboard = false; + + // Common + protected internal string m_Name = String.Empty; + protected internal string m_ProgFile = String.Empty; + int m_MP_WindowHWND = 0; XmlConfig XmlConfig = new XmlConfig(); string _PluginLangFile = string.Empty; bool _PluginLangFileExist = false; + bool _MPWindowHidden = false; + #endregion + + #region ISetupForm Members public MultiShortcut() { m_Name = System.Reflection.Assembly.GetExecutingAssembly().Location; @@ -76,19 +99,26 @@ m_ID = FindID(ref m_Name); } - //fmu using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings("MultiShortcut.xml")) using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MultiShortcut.xml"))) { - m_ExeFile = xmlreader.GetValueAsString(m_Name, "exefile", string.Empty); - m_Arguments = xmlreader.GetValueAsString(m_Name, "arguments", string.Empty); - m_Picture = xmlreader.GetValueAsString(m_Name, "picture", string.Empty); + m_ID = xmlreader.GetValueAsInt(m_Name, "pluginid", -1); + m_HandleMPWindow = xmlreader.GetValueAsInt(m_Name, "handlempwindow", 1) == 0; + m_Caption = xmlreader.GetValueAsString(m_Name, "caption", string.Empty); m_ButtonImg = xmlreader.GetValueAsString(m_Name, "buttonimage", string.Empty); m_ButtonImgF = xmlreader.GetValueAsString(m_Name, "buttonimagefocus", string.Empty); - m_Caption = xmlreader.GetValueAsString(m_Name, "caption", string.Empty); - m_ID = xmlreader.GetValueAsInt(m_Name, "pluginid", -1); - m_HandleMPWindow = xmlreader.GetValueAsInt(m_Name, "handlempwindow", 1) == 0; + m_Picture = xmlreader.GetValueAsString(m_Name, "picture", string.Empty); + m_PreDirectory = xmlreader.GetValueAsString(m_Name, "PreDirectory", string.Empty); + m_PreExeFile = xmlreader.GetValueAsString(m_Name, "PreExefile", string.Empty); + m_PreArguments = xmlreader.GetValueAsString(m_Name, "PreArguments", string.Empty); + m_PreUseVirtualKeyboard = xmlreader.GetValueAsBool(m_Name, "PreUseVirtualKeyboard", false); m_Directory = xmlreader.GetValueAsString(m_Name, "directory", string.Empty); + m_ExeFile = xmlreader.GetValueAsString(m_Name, "exefile", string.Empty); + m_Arguments = xmlreader.GetValueAsString(m_Name, "arguments", string.Empty); m_UseVirtualKeyboard = xmlreader.GetValueAsBool(m_Name, "UseVirtualKeyboard", false); + m_PostDirectory = xmlreader.GetValueAsString(m_Name, "PostDirectory", string.Empty); + m_PostExeFile = xmlreader.GetValueAsString(m_Name, "PostExefile", string.Empty); + m_PostArguments = xmlreader.GetValueAsString(m_Name, "PostArguments", string.Empty); + m_PostUseVirtualKeyboard = xmlreader.GetValueAsBool(m_Name, "PostUseVirtualKeyboard", false); if (m_ExeFile.Length > 0) { @@ -112,11 +142,11 @@ Random rd = new Random((int)DateTime.Now.Ticks); int id = rd.Next(1000, 9000); - while (IsInList(lst, id)) id = rd.Next(1000,9000); + while (IsInList(lst, id)) id = rd.Next(1000, 9000); m_ID = id; -//fmu need to store pluginid here to avoid a new random and grant static ID (saved only when hit OK on MP main Config) + // need to store pluginid here to avoid a new random and grant static ID (saved only when hit OK on MP main Config) using (MediaPortal.Profile.Settings xmlwrite = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MultiShortcut.xml"))) { xmlwrite.SetValue(m_Name, "pluginid", m_ID); @@ -129,14 +159,14 @@ if (_PluginLangFileExist) { MediaPortal.Profile.Settings s = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MediaPortal.xml")); - string strLanguage = s.GetValueAsString("skin", "language", "English"); + string strLanguage = s.GetValueAsString("skin", "language", "English"); LocalizeStrings.Load(strLanguage); } } private bool IsInList(List<int> lst, int id) { - foreach(int i in lst) + foreach (int i in lst) if (i == id) return true; return false; @@ -157,7 +187,6 @@ } catch (Exception e) { -//fmu Log.Write(e); Log.Error(e); return -1; } @@ -228,48 +257,67 @@ Config cf = new Config(); cf.SetPropertyGrid(new ConfigWrapper(this)); - //fmu Initialize labels with translated xml values + // Initialize labels with translated xml values cf.Text = LocalizeStrings.Get((int)LocalizedMessages.SetupFormName); cf.button1.Text = LocalizeStrings.Get((int)LocalizedMessages.btn1); cf.button2.Text = LocalizeStrings.Get((int)LocalizedMessages.btn2); + // Display Plugin Version + cf.VarVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + cf.VarVersion.Text = cf.VarVersion.Text.Substring(0, 3); if (cf.ShowDialog() == System.Windows.Forms.DialogResult.OK) { - //fmu add control for Picture Name and Directory - if (ControlPictureName() && ControlDirectory()) + // add control for Picture Name and Directory + if (ControlPictureName() && ControlDirectory() && ControlExefile() && ControlVirtualDirectory()) { -//fmu case when hit Save on MultiShortcut plugin and hit Cancel on MP main config -// Then, I'm sure Config is saved. - XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "exefile", m_ExeFile); - XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "arguments", m_Arguments); - XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "picture", m_Picture); + // case when hit Save on MultiShortcut plugin and hit Cancel on MP main config + // Then, I'm sure Config is saved. + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "pluginid", m_ID); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "handlempwindow", m_HandleMPWindow ? 0 : 1); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "caption", m_Caption); XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "buttonimage", m_ButtonImg); XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "buttonimagefocus", m_ButtonImgF); - XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "caption", m_Caption); - XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "pluginid", m_ID); - XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "handlempwindow", m_HandleMPWindow ? 0 : 1); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "picture", m_Picture); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PreDirectory", m_PreDirectory); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PreExefile", m_PreExeFile); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PreArguments", m_PreArguments); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PreUseVirtualKeyboard", m_PreUseVirtualKeyboard); XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "directory", m_Directory); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "exefile", m_ExeFile); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "arguments", m_Arguments); XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "UseVirtualKeyboard", m_UseVirtualKeyboard); - -//fmu case when hit Save on MultiShortcut plugin and hit Save on MP main config. -// In this case, pluginid is stored before (for static ID) with MP xmlwrite. -// MultiShortcut.xml created with XmlConfig is erased by pluginid when hit Save on MP main config -// (at least, the first time Config is saved). -// That's why store with MP xmlwrite is needed for all variables. + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PostDirectory", m_PostDirectory); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PostExefile", m_PostExeFile); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PostArguments", m_PostArguments); + XmlConfig.WriteXmlConfig("MultiShortcut", m_Name, "PostUseVirtualKeyboard", m_PostUseVirtualKeyboard); + + // case when hit Save on MultiShortcut plugin and hit Save on MP main config. + // In this case, pluginid is stored before (for static ID) with MP xmlwrite. + // MultiShortcut.xml created with XmlConfig is erased by pluginid when hit Save on MP main config + // (at least, the first time Config is saved). + // That's why store with MP xmlwrite is needed for all variables. using (MediaPortal.Profile.Settings xmlwrite = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MultiShortcut.xml"))) { - xmlwrite.SetValue(m_Name, "exefile", m_ExeFile); - xmlwrite.SetValue(m_Name, "arguments", m_Arguments); - xmlwrite.SetValue(m_Name, "picture", m_Picture); - xmlwrite.SetValue(m_Name, "buttonimage", m_ButtonImg); - xmlwrite.SetValue(m_Name, "buttonimagefocus", m_ButtonImgF); - xmlwrite.SetValue(m_Name, "caption", m_Caption); - xmlwrite.SetValue(m_Name, "pluginid", m_ID); - xmlwrite.SetValue(m_Name, "handlempwindow", m_HandleMPWindow ? 0 : 1); - xmlwrite.SetValue(m_Name, "directory", m_Directory); - xmlwrite.SetValueAsBool(m_Name, "UseVirtualKeyboard", m_UseVirtualKeyboard); - } - } + xmlwrite.SetValue(m_Name, "pluginid", m_ID); + xmlwrite.SetValue(m_Name, "handlempwindow", m_HandleMPWindow ? 0 : 1); + xmlwrite.SetValue(m_Name, "caption", m_Caption); + xmlwrite.SetValue(m_Name, "buttonimage", m_ButtonImg); + xmlwrite.SetValue(m_Name, "buttonimagefocus", m_ButtonImgF); + xmlwrite.SetValue(m_Name, "picture", m_Picture); + xmlwrite.SetValue(m_Name, "PreDirectory", m_PreDirectory); + xmlwrite.SetValue(m_Name, "PreExefile", m_PreExeFile); + xmlwrite.SetValue(m_Name, "PreArguments", m_PreArguments); + xmlwrite.SetValueAsBool(m_Name, "PreUseVirtualKeyboard", m_PreUseVirtualKeyboard); + xmlwrite.SetValue(m_Name, "directory", m_Directory); + xmlwrite.SetValue(m_Name, "exefile", m_ExeFile); + xmlwrite.SetValue(m_Name, "arguments", m_Arguments); + xmlwrite.SetValueAsBool(m_Name, "UseVirtualKeyboard", m_UseVirtualKeyboard); + xmlwrite.SetValue(m_Name, "PostDirectory", m_PostDirectory); + xmlwrite.SetValue(m_Name, "PostExefile", m_PostExeFile); + xmlwrite.SetValue(m_Name, "PostArguments", m_PostArguments); + xmlwrite.SetValueAsBool(m_Name, "PostUseVirtualKeyboard", m_PostUseVirtualKeyboard); + } + } else { ShowPlugin(); @@ -277,7 +325,7 @@ } } - //fmu Controls for Picture Name + // Controls for Picture Name public bool ControlPictureName() { // If user wrote Picture Name then must begin with "hover_" @@ -286,15 +334,14 @@ int length_picture = m_Picture.Length; if (length_picture < 6 || m_Picture.Substring(0, 6) != "hover_") { -// MessageBox.Show("Picture name must begin with \"hover_\""); + // MessageBox.Show("Picture name must begin with \"hover_\""); MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox1)); return false; } // Need to know what is the used skin -//fmu MediaPortal.Profile.Settings s = new MediaPortal.Profile.Settings("MediaPortal.xml"); MediaPortal.Profile.Settings s = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MediaPortal.xml")); - string skin_name = s.GetValueAsString("skin", "name", string.Empty); - /* Need to know where is MP installed (running) because we don't have it in MediaPortal.xml */ + string skin_name = s.GetValueAsString("skin", "name", string.Empty); + /* Need to know where is MP installed (running) because we don't have it in MediaPortal.xml */ string picture_path = AppDomain.CurrentDomain.BaseDirectory + @"skin\" + skin_name + @"\Media\" + m_Picture; // if user didn't write .png extension, we add it automatically @@ -306,33 +353,84 @@ // PNG file exist ? if (!System.IO.File.Exists(picture_path)) { -// MessageBox.Show("PNG File not found : " + picture_path); + // MessageBox.Show("PNG File not found : " + picture_path); MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox2) + picture_path); return false; } } - return true; + return true; } - //fmu Controls for Change Directory + // Controls for Directory public bool ControlDirectory() { // If user wrote a Directory then, I control Directory exist - if (m_Directory != String.Empty) + if (m_PreDirectory != String.Empty && !Directory.Exists(m_PreDirectory)) { - if (System.IO.Directory.Exists(m_Directory)) - { - return true; - } - else - { - MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox3) + m_Directory); - return false; - } + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox3) + m_PreDirectory); + return false; } + + if (m_Directory != String.Empty && !Directory.Exists(m_Directory)) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox3) + m_Directory); + return false; + } + + if (m_PostDirectory != String.Empty && !Directory.Exists(m_PostDirectory)) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox3) + m_PostDirectory); + return false; + } + return true; } + // Controls for Exefile + public bool ControlExefile() + { + // user must choose at least one Exefile + if (m_PreExeFile.Length == 0 && m_ExeFile.Length == 0 && m_PostExeFile.Length == 0) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox5)); + return false; + } + + // If user wrote an Exefile then, I control Exefile exist + if (m_PreExeFile != String.Empty && !File.Exists(m_PreExeFile)) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox4) + m_PreExeFile); + return false; + } + + if (m_ExeFile != String.Empty && !File.Exists(m_ExeFile)) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox4) + m_ExeFile); + return false; + } + + if (m_PostExeFile != String.Empty && !File.Exists(m_PostExeFile)) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox4) + m_PostExeFile); + return false; + } + + return true; + } + + // Controls for Virtual Directory + public bool ControlVirtualDirectory() + { + // Virtual Directory should not be true if no exefile + if ((m_PreExeFile.Length == 0 && m_PreUseVirtualKeyboard) || (m_ExeFile.Length == 0 && m_UseVirtualKeyboard) || (m_PostExeFile.Length == 0 && m_PostUseVirtualKeyboard)) + { + MessageBox.Show(LocalizeStrings.Get((int)LocalizedMessages.msgbox6)); + return false; + } + + return true; + } + #endregion #region GUIWindow @@ -340,7 +438,7 @@ public override int GetID { get { return m_ID; } - set {} + set { } } public override bool Init() @@ -348,79 +446,95 @@ return false; } + // MP start Windows Plugin protected override void OnPageLoad() { - if (m_ExeFile == string.Empty || !File.Exists(m_ExeFile)) - { - GUIDialogOK dlg = (GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK); - dlg.SetHeading("Could not start program !"); - dlg.SetLine(1, String.Format("ConfigSection : [{0}]", m_Name)); - if (_PluginLangFileExist) - { - dlg.SetHeading(LocalizeStrings.Get((int)LocalizedMessages.dlg1)); - dlg.SetLine(1, LocalizeStrings.Get((int)LocalizedMessages.dlg2) + String.Format("{0}", m_Name)); - } + // Virtual Keyboard + m_PreArguments = UseVirtualKeyboard(m_PreUseVirtualKeyboard, m_PreArguments); + m_Arguments = UseVirtualKeyboard(m_UseVirtualKeyboard, m_Arguments); + m_PostArguments = UseVirtualKeyboard(m_PostUseVirtualKeyboard, m_PostArguments); - dlg.DoModal(GUIWindowManager.ActiveWindow); - } - else + // Launch process for programs + RunPrograms(); + + // Go to previous Window + GUIWindowManager.ShowPreviousWindow(); + } + + // use virtual keyboard before Run, if configured + private string UseVirtualKeyboard(bool bUseVirtualKeyboard, string sArguments) + { + if (bUseVirtualKeyboard) { - //fmu set directory before Run if configured - if (m_Directory.Length > 0) + VirtualKeyboard keyboard = (VirtualKeyboard)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIRTUAL_KEYBOARD); + if (keyboard != null) { - Directory.SetCurrentDirectory(m_Directory); - } - //fmu use virtual keyboard before Run if configured - if (m_UseVirtualKeyboard) - { - VirtualKeyboard keyboard = (VirtualKeyboard)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIRTUAL_KEYBOARD); - if (keyboard != null) + keyboard.Reset(); + keyboard.Text = ""; + keyboard.DoModal(GetID); + // do it only if necessary + if (keyboard.IsConfirmed && keyboard.Text.Length > 0) { - keyboard.Reset(); - keyboard.Text = ""; - keyboard.DoModal(GetID); - // do it only if necessary - if (keyboard.IsConfirmed && keyboard.Text.Length > 0) - { - m_Arguments = keyboard.Text; - } + sArguments = keyboard.Text; } } - - RunProgram(m_ExeFile, m_Arguments); } - GUIWindowManager.ShowPreviousWindow(); + return sArguments; } - private void RunProgram(string exeName, string argsLine) + // Method for running programs + private void RunPrograms() { - ProcessStartInfo psI = new ProcessStartInfo(exeName, argsLine); + // Define Process Infos + ProcessStartInfo psI = new ProcessStartInfo(PluginName()); Process newProcess = new Process(); + newProcess.StartInfo.UseShellExecute = true; + newProcess.EnableRaisingEvents = true; + // Pre-Processing + RunProgram(m_PreDirectory, m_PreExeFile, m_PreArguments, newProcess); + + // Execute + RunProgram(m_Directory, m_ExeFile, m_Arguments, newProcess); + + // Post-Processing + RunProgram(m_PostDirectory, m_PostExeFile, m_PostArguments, newProcess); + + // Restore MP Window if needed + newProcess.Exited += new EventHandler(newProcess_Exited); + } + + // Run a program + private void RunProgram(String sDirectory, String sExeFile, String sArguments, Process newProcess) + { + if (sExeFile != String.Empty) + { + SetDirectory(sDirectory); + newProcess.StartInfo.FileName = sExeFile; + newProcess.StartInfo.Arguments = sArguments; + StartProcess(newProcess); + } + } + + // set directory before Start + private void SetDirectory(string sDirectory) + { + if (sDirectory.Length > 0) + { + Directory.SetCurrentDirectory(sDirectory); + } + } + + // Start the Process + private void StartProcess(Process newProcess) + { try { - newProcess.StartInfo.FileName = exeName; - newProcess.StartInfo.Arguments = argsLine; - newProcess.StartInfo.UseShellExecute = true; - newProcess.EnableRaisingEvents = true; if (newProcess.Start()) { - if (m_HandleMPWindow) - { - m_MP_WindowHWND = Win32Wrapper.FindWindow(null, "MediaPortal - "); - if (m_MP_WindowHWND > 0) - { - Win32Wrapper.ShowWindow(m_MP_WindowHWND, Win32Wrapper.SW_HIDE); - /* next two lines not yet need. - Thread.Sleep(2000); - Win32Wrapper.SetWindowPos(newProcess.MainWindowHandle, Win32Wrapper.HWND_TOPMOST, 0, 0, 0, 0, Win32Wrapper.SWP_NOSIZE | Win32Wrapper.SWP_NOMOVE); - */ - newProcess.Exited += new EventHandler(newProcess_Exited); - } - } + HideMPWidow(); } - } catch (Exception e) { @@ -428,9 +542,31 @@ } } + // Hide MP Window + private void HideMPWidow() + { + if (m_HandleMPWindow && !_MPWindowHidden) + { + m_MP_WindowHWND = Win32Wrapper.FindWindow(null, "MediaPortal - "); + if (m_MP_WindowHWND > 0) + { + Win32Wrapper.ShowWindow(m_MP_WindowHWND, Win32Wrapper.SW_HIDE); + _MPWindowHidden = true; + /* next two lines not yet need. + Thread.Sleep(2000); + Win32Wrapper.SetWindowPos(newProcess.MainWindowHandle, Win32Wrapper.HWND_TOPMOST, 0, 0, 0, 0, Win32Wrapper.SWP_NOSIZE | Win32Wrapper.SWP_NOMOVE); + */ + } + } + } + + // Restore MP Window void newProcess_Exited(object sender, EventArgs e) { - Win32Wrapper.ShowWindow(m_MP_WindowHWND, Win32Wrapper.SW_SHOWDEFAULT); + if (_MPWindowHidden) + { + Win32Wrapper.ShowWindow(m_MP_WindowHWND, Win32Wrapper.SW_SHOWDEFAULT); + } } #endregion @@ -445,6 +581,8 @@ #endregion } +#region ConfigWrapper + internal class ConfigWrapper { MultiShortcut m_MS = null; @@ -454,31 +592,83 @@ m_MS = ms; } -// [Category("Program")] - [LocalizedCategory("0"), LocalizedDisplayName("1")] - public string Exefile + #region [Category("General")] + [LocalizedCategory("9"), LocalizedDisplayName("10")] + public int PluginID { - get { return m_MS.m_ExeFile; } - set { m_MS.m_ExeFile = value; } + get { return m_MS.m_ID; } + set { m_MS.m_ID = value; } } -// [Category("Program")] - [LocalizedCategory("0"), LocalizedDisplayName("2")] - public string Arguments - { - get { return m_MS.m_Arguments; } - set { m_MS.m_Arguments = value; } - } - -// [Category("Program")] - [LocalizedCategory("0"), LocalizedDisplayName("3")] + [LocalizedCategory("9"), LocalizedDisplayName("3")] public bool HideMPWhileExecuting { get { return m_MS.m_HandleMPWindow; } set { m_MS.m_HandleMPWindow = value; } } + #endregion -// [Category("Program")] + #region [Category("Homescreen")] + [LocalizedCategory("4"), LocalizedDisplayName("8")] + public string ButtonCaption + { + get { return m_MS.m_Caption; } + set { m_MS.m_Caption = value; } + } + + [LocalizedCategory("4"), LocalizedDisplayName("6")] + public string ButtonImage + { + get { return m_MS.m_ButtonImg; } + set { m_MS.m_ButtonImg = value; } + } + + [LocalizedCategory("4"), LocalizedDisplayName("7")] + public string ButtonImageFocus + { + get { return m_MS.m_ButtonImgF; } + set { m_MS.m_ButtonImgF = value; } + } + + [LocalizedCategory("4"), LocalizedDisplayName("5")] + public string Picture + { + get { return m_MS.m_Picture; } + set { m_MS.m_Picture = value; } + } + #endregion + + #region [Category("Pre-Processing")] + [LocalizedCategory("23"), LocalizedDisplayName("20")] + public string PreDirectory + { + get { return m_MS.m_PreDirectory; } + set { m_MS.m_PreDirectory = value; } + } + + [LocalizedCategory("23"), LocalizedDisplayName("1")] + public string PreExefile + { + get { return m_MS.m_PreExeFile; } + set { m_MS.m_PreExeFile = value; } + } + + [LocalizedCategory("23"), LocalizedDisplayName("2")] + public string PreArguments + { + get { return m_MS.m_PreArguments; } + set { m_MS.m_PreArguments = value; } + } + + [LocalizedCategory("23"), LocalizedDisplayName("22")] + public bool PreUseVirtualKeyboard + { + get { return m_MS.m_PreUseVirtualKeyboard; } + set { m_MS.m_PreUseVirtualKeyboard = value; } + } + #endregion + + #region [Category("Program")] [LocalizedCategory("0"), LocalizedDisplayName("20")] public string Directory { @@ -486,55 +676,61 @@ set { m_MS.m_Directory = value; } } - // [Category("Program")] + [LocalizedCategory("0"), LocalizedDisplayName("1")] + public string Exefile + { + get { return m_MS.m_ExeFile; } + set { m_MS.m_ExeFile = value; } + } + + [LocalizedCategory("0"), LocalizedDisplayName("2")] + public string Arguments + { + get { return m_MS.m_Arguments; } + set { m_MS.m_Arguments = value; } + } + [LocalizedCategory("0"), LocalizedDisplayName("22")] public bool UseVirtualKeyboard { get { return m_MS.m_UseVirtualKeyboard; } set { m_MS.m_UseVirtualKeyboard = value; } } + #endregion -// [Category("Homescreen")] - [LocalizedCategory("4"), LocalizedDisplayName("5")] - public string Picture + #region [Category("Post-Processing")] + [LocalizedCategory("24"), LocalizedDisplayName("20")] + public string PostDirectory { - get { return m_MS.m_Picture; } - set { m_MS.m_Picture = value; } + get { return m_MS.m_PostDirectory; } + set { m_MS.m_PostDirectory = value; } } -// [Category("Homescreen")] - [LocalizedCategory("4"), LocalizedDisplayName("6")] - public string ButtonImage + [LocalizedCategory("24"), LocalizedDisplayName("1")] + public string PostExefile { - get { return m_MS.m_ButtonImg; } - set { m_MS.m_ButtonImg = value; } + get { return m_MS.m_PostExeFile; } + set { m_MS.m_PostExeFile = value; } } -// [Category("Homescreen")] - [LocalizedCategory("4"), LocalizedDisplayName("7")] - public string ButtonImageFocus + [LocalizedCategory("24"), LocalizedDisplayName("2")] + public string PostArguments { - get { return m_MS.m_ButtonImgF; } - set { m_MS.m_ButtonImgF = value; } + get { return m_MS.m_PostArguments; } + set { m_MS.m_PostArguments = value; } } -// [Category("Homescreen")] - [LocalizedCategory("4"), LocalizedDisplayName("8")] - public string ButtonCaption + [LocalizedCategory("24"), LocalizedDisplayName("22")] + public bool PostUseVirtualKeyboard { - get { return m_MS.m_Caption; } - set { m_MS.m_Caption = value; } + get { return m_MS.m_PostUseVirtualKeyboard; } + set { m_MS.m_PostUseVirtualKeyboard = value; } } - -// [Category("Plugin ID")] //fmu - [LocalizedCategory("9"), LocalizedDisplayName("10")] - public int PluginID //fmu - { - get { return m_MS.m_ID; } //fmu - set { m_MS.m_ID = value; } //fmu - } + #endregion } +#endregion +#region Win32Wrapper internal class Win32Wrapper { public const int GWL_STYLE = -16; @@ -578,4 +774,6 @@ public static extern bool ShowWindow(int hWnd, int nCmdShow); } +#endregion + } Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,14 +1,19 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<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>8.0.50727</ProductVersion> + <ProductVersion>9.0.21022</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>MultiShortcut</RootNamespace> <AssemblyName>MultiShortcut00</AssemblyName> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -28,17 +33,17 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=0.9.3.29272, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=1.0.0.17220, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Databases, Version=0.9.3.29273, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Databases, Version=1.0.0.17222, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Databases.dll</HintPath> + <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Databases.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Dialogs, Version=0.9.3.29274, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Dialogs, Version=1.0.0.17223, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Dialogs.dll</HintPath> <Private>False</Private> @@ -48,9 +53,9 @@ <Reference Include="System.Drawing" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> - <Reference Include="Utils, Version=2.2.6.29271, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Utils, Version=2.2.6.17217, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Utils.dll</HintPath> + <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Utils.dll</HintPath> <Private>False</Private> </Reference> </ItemGroup> @@ -88,4 +93,7 @@ <Target Name="AfterBuild"> </Target> --> + <PropertyGroup> + <PostBuildEvent>copy $(TargetName).dll "D:\SVN\MediaPortal\xbmc\bin\Release\plugins\Windows"</PostBuildEvent> + </PropertyGroup> </Project> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2009-01-24 12:16:06 UTC (rev 2566) @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.1.0.0")] -[assembly: AssemblyFileVersion("1.1.0.0")] +[assembly: AssemblyVersion("1.2.0.0")] +[assembly: AssemblyFileVersion("1.2.0.0")] Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2009-01-24 09:46:33 UTC (rev 2565) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2009-01-24 12:16:06 UTC (rev 2566) @@ -1,14 +1,19 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<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>8.0.50727</ProductVersion> + <ProductVersion>9.0.21022</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{D2159E0B-44FA-41D8-B701-081D2C931CC0}</ProjectGuid> <OutputType>Exe</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>TestServer</RootNamespace> <AssemblyName>TestServer</AssemblyName> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -28,7 +33,7 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=0.9.3.29272, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=1.0.0.17220, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2009-02-10 19:04:13
|
Revision: 2629 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2629&view=rev Author: framug Date: 2009-02-10 19:04:07 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Rename solution. Added Paths: ----------- trunk/plugins/MultiShortcut/MultiShortcut.sln Removed Paths: ------------- trunk/plugins/MultiShortcut/MultiButton.sln Deleted: trunk/plugins/MultiShortcut/MultiButton.sln =================================================================== --- trunk/plugins/MultiShortcut/MultiButton.sln 2009-02-10 16:35:35 UTC (rev 2628) +++ trunk/plugins/MultiShortcut/MultiButton.sln 2009-02-10 19:04:07 UTC (rev 2629) @@ -1,32 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "TestServer\TestServer.csproj", "{D2159E0B-44FA-41D8-B701-081D2C931CC0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiShortcut", "MultiShortcut\MultiShortcut.csproj", "{7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DLLFix", "DLLFix\DLLFix.csproj", "{8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|Any CPU.Build.0 = Release|Any CPU - {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|Any CPU.Build.0 = Release|Any CPU - {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal Copied: trunk/plugins/MultiShortcut/MultiShortcut.sln (from rev 2628, trunk/plugins/MultiShortcut/MultiButton.sln) =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut.sln (rev 0) +++ trunk/plugins/MultiShortcut/MultiShortcut.sln 2009-02-10 19:04:07 UTC (rev 2629) @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "TestServer\TestServer.csproj", "{D2159E0B-44FA-41D8-B701-081D2C931CC0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiShortcut", "MultiShortcut\MultiShortcut.csproj", "{7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DLLFix", "DLLFix\DLLFix.csproj", "{8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|Any CPU.Build.0 = Release|Any CPU + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|Any CPU.Build.0 = Release|Any CPU + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2009-09-23 20:54:55
|
Revision: 3097 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3097&view=rev Author: framug Date: 2009-09-23 20:54:48 +0000 (Wed, 23 Sep 2009) Log Message: ----------- MultiShortcut version 1.6. - Fix the picture problem. - Updated doc, quite complete now. - Typo in french strings. - Compiled with MP SVN 23672 references. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut readme how to.doc trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2009-09-23 16:04:40 UTC (rev 3096) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2009-09-23 20:54:48 UTC (rev 3097) @@ -34,9 +34,9 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=1.0.0.17220, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> Modified: trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml 2009-09-23 16:04:40 UTC (rev 3096) +++ trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml 2009-09-23 20:54:48 UTC (rev 3097) @@ -27,7 +27,7 @@ <String id="23">Programme 1</String> <String id="24">Programme 3</String> <String id="25">Le Fichier executable n'existe pas : </String> - <String id="26">Vous devez renseigner au mons un Fichier executable !</String> + <String id="26">Vous devez renseigner au moins un Fichier executable !</String> <String id="27">Le clavier virtuel ne devrait pas être positionné sans fichier executable renseigné !</String> <String id="28">Redémarrer MediaPortal</String> <String id="29">Arrêter le lecteur de MediaPortal</String> Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut readme how to.doc =================================================================== (Binary files differ) Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2009-09-23 16:04:40 UTC (rev 3096) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2009-09-23 20:54:48 UTC (rev 3097) @@ -362,9 +362,7 @@ // Need to know what is the used skin MediaPortal.Profile.Settings s = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MediaPortal.xml")); string skin_name = s.GetValueAsString("skin", "name", string.Empty); - /* Need to know where is MP installed (running) because we don't have it in MediaPortal.xml */ - string picture_path = AppDomain.CurrentDomain.BaseDirectory - + @"skin\" + skin_name + @"\Media\" + m_Picture; + string picture_path = MediaPortal.Configuration.Config.GetFolder(MediaPortal.Configuration.Config.Dir.Skin) + @"\" + skin_name + @"\Media\" + m_Picture; // if user didn't write .png extension, we add it automatically bool png = m_Picture.EndsWith(".png"); if (!png) Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2009-09-23 16:04:40 UTC (rev 3096) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2009-09-23 20:54:48 UTC (rev 3097) @@ -33,19 +33,19 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=1.0.0.17220, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Databases, Version=1.0.0.17222, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Databases, Version=1.0.4.32079, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Databases.dll</HintPath> + <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Databases.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Dialogs, Version=1.0.0.17223, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Dialogs, Version=1.0.4.32079, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Dialogs.dll</HintPath> + <HintPath>..\..\..\mediaportal\xbmc\bin\Release\plugins\Windows\Dialogs.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> @@ -53,9 +53,9 @@ <Reference Include="System.Drawing" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> - <Reference Include="Utils, Version=2.2.6.17217, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Utils, Version=2.2.7.32077, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\Dialogs\bin\Release\Utils.dll</HintPath> + <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Utils.dll</HintPath> <Private>False</Private> </Reference> </ItemGroup> Modified: trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2009-09-23 16:04:40 UTC (rev 3096) +++ trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2009-09-23 20:54:48 UTC (rev 3097) @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.5.0.0")] -[assembly: AssemblyFileVersion("1.5.0.0")] +[assembly: AssemblyVersion("1.6.0.0")] +[assembly: AssemblyFileVersion("1.6.0.0")] Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2009-09-23 16:04:40 UTC (rev 3096) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2009-09-23 20:54:48 UTC (rev 3097) @@ -33,9 +33,9 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=1.0.0.17220, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\MediaPortal\xbmc\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2010-04-13 20:00:56
|
Revision: 3525 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3525&view=rev Author: framug Date: 2010-04-13 20:00:45 +0000 (Tue, 13 Apr 2010) Log Message: ----------- Simple indentation 2 chars. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/Program.cs trunk/plugins/MultiShortcut/MultiShortcut/Config.cs trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs trunk/plugins/MultiShortcut/MultiShortcut/LocalizedCategory.cs trunk/plugins/MultiShortcut/MultiShortcut/LocalizedDisplayName.cs trunk/plugins/MultiShortcut/MultiShortcut/XmlConfig.cs trunk/plugins/MultiShortcut/TestServer/Program.cs Modified: trunk/plugins/MultiShortcut/DLLFix/Program.cs =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/Program.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/DLLFix/Program.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -8,14 +8,14 @@ namespace DLLFix { - class Program + class Program + { + const int fixStart = 11290; + + static void Main(string[] args) { - const int fixStart = 11290; - static void Main(string[] args) - { - - byte[] search_bytes = new byte[] + byte[] search_bytes = new byte[] { // R u n t i m e C 0x52, 0x75, 0x6E, 0x74, 0x69, 0x6D, 0x65, 0x43, @@ -31,80 +31,80 @@ 0x63, 0x75, 0x74 }; - byte fileCounter = 0; + byte fileCounter = 0; - string myPath = System.Reflection.Assembly.GetExecutingAssembly().Location; - myPath = myPath.Substring(0, myPath.LastIndexOf('\\')); + string myPath = System.Reflection.Assembly.GetExecutingAssembly().Location; + myPath = myPath.Substring(0, myPath.LastIndexOf('\\')); - string[] files = Directory.GetFiles(myPath, "*.dll"); + string[] files = Directory.GetFiles(myPath, "*.dll"); - Console.WriteLine("*******************************************************"); - Console.WriteLine("** **"); - Console.WriteLine("** MultiShortcut DLL fix (.net metadata changer) **"); - Console.WriteLine("** **"); - Console.WriteLine("*******************************************************"); - Console.WriteLine(""); - Console.WriteLine("1.) Patching files...\n"); - // Parse all MP plugins DLL - foreach (string s in files) + Console.WriteLine("*******************************************************"); + Console.WriteLine("** **"); + Console.WriteLine("** MultiShortcut DLL fix (.net metadata changer) **"); + Console.WriteLine("** **"); + Console.WriteLine("*******************************************************"); + Console.WriteLine(""); + Console.WriteLine("1.) Patching files...\n"); + // Parse all MP plugins DLL + foreach (string s in files) + { + using (Stream st = new FileStream(s, FileMode.Open, FileAccess.ReadWrite)) + { + int offset = 0; + long file_pos = 0; + int bytes_read = 0; + byte[] buffer = new byte[65536]; + + bool match = false; + + // Loop for each 64 KB buffer length until EOF or, found what searched + while ((bytes_read = st.Read(buffer, offset, buffer.Length - offset)) > 0 && !match) + { + // Loop for each searched bytes : 43 bytes length step, in this case. + for (int i = 0; i < bytes_read + offset - search_bytes.Length; i++) { - using (Stream st = new FileStream(s, FileMode.Open, FileAccess.ReadWrite)) + match = true; + + // Loop inside 43 bytes until differ. + for (int j = 0; j < search_bytes.Length; j++) + { + if (search_bytes[j] != buffer[i + j]) { - int offset = 0; - long file_pos = 0; - int bytes_read = 0; - byte[] buffer = new byte[65536]; + match = false; + break; + } + } - bool match = false; + // We found "RuntimeCompatibilityAttributeMultiShortcut" inside the DLL code. + // Then, it's most likely a MultiShortcut DLL. + if (match) + { + // Replace value number in the dll code then, ability to have duplicate plugins. + st.Seek(file_pos + i - offset + search_bytes.Length, SeekOrigin.Begin); + byte[] replaceBuffer = new byte[] { (Byte)(48 + (fileCounter > 9 ? ((int)fileCounter / 10) : 0)), (Byte)(48 + ((int)fileCounter % 10)) }; + string Sreplaced = Encoding.ASCII.GetString(replaceBuffer); + st.Write(replaceBuffer, 0, replaceBuffer.Length); + Console.WriteLine(" - PATCHED: {0} with {1} value.", s.Substring(s.LastIndexOf('\\') + 1), Sreplaced); + fileCounter++; + break; + } + } - // Loop for each 64 KB buffer length until EOF or, found what searched - while ((bytes_read = st.Read(buffer, offset, buffer.Length - offset)) > 0 && !match) - { - // Loop for each searched bytes : 43 bytes length step, in this case. - for (int i = 0; i < bytes_read + offset - search_bytes.Length; i++) - { - match = true; + file_pos = st.Position; - // Loop inside 43 bytes until differ. - for (int j = 0; j < search_bytes.Length; j++) - { - if (search_bytes[j] != buffer[i + j]) - { - match = false; - break; - } - } - - // We found "RuntimeCompatibilityAttributeMultiShortcut" inside the DLL code. - // Then, it's most likely a MultiShortcut DLL. - if (match) - { - // Replace value number in the dll code then, ability to have duplicate plugins. - st.Seek(file_pos + i - offset + search_bytes.Length, SeekOrigin.Begin); - byte[] replaceBuffer = new byte[] { (Byte)(48 + (fileCounter > 9 ? ((int)fileCounter / 10) : 0)), (Byte)(48 + ((int)fileCounter % 10)) }; - string Sreplaced = Encoding.ASCII.GetString(replaceBuffer); - st.Write(replaceBuffer, 0, replaceBuffer.Length); - Console.WriteLine(" - PATCHED: {0} with {1} value.", s.Substring(s.LastIndexOf('\\') + 1), Sreplaced); - fileCounter++; - break; - } - } - - file_pos = st.Position; - - offset = search_bytes.Length; - // recopy the end of the buffer - for (int i = 0; i < offset; i++) - { - buffer[i] = buffer[buffer.Length - offset + i]; - } - } - } + offset = search_bytes.Length; + // recopy the end of the buffer + for (int i = 0; i < offset; i++) + { + buffer[i] = buffer[buffer.Length - offset + i]; } + } + } + } - Console.WriteLine("\n2.) Done."); - Console.WriteLine("\n3.) Press Enter to close..."); - Console.ReadKey(); - } + Console.WriteLine("\n2.) Done."); + Console.WriteLine("\n3.) Press Enter to close..."); + Console.ReadKey(); } + } } Modified: trunk/plugins/MultiShortcut/MultiShortcut/Config.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Config.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/MultiShortcut/Config.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -8,16 +8,16 @@ namespace MediaPortal.MultiShortcut { - public partial class Config : Form + public partial class Config : Form + { + public Config() { - public Config() - { - InitializeComponent(); - } + InitializeComponent(); + } - public void SetPropertyGrid(object o) - { - propertyGrid1.SelectedObject = o; - } + public void SetPropertyGrid(object o) + { + propertyGrid1.SelectedObject = o; } + } } \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -41,7 +41,8 @@ /// <summary> /// Enumerations of all Configuration Messages /// </summary> - public enum LocalizedMessages { + public enum LocalizedMessages + { /// <summary> /// Program /// </summary> @@ -146,7 +147,7 @@ /// </summary> msgbox7 = 31 -} + } /// <summary> /// This class will hold all text used in the application @@ -174,7 +175,7 @@ /// </summary> static public void Dispose() { - if(_stringProvider != null) + if (_stringProvider != null) _stringProvider.Dispose(); } #endregion @@ -194,14 +195,14 @@ bool isPrefixEnabled = true; using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MediaPortal.xml"))) - isPrefixEnabled = reader.GetValueAsBool("general", "myprefix", true); + isPrefixEnabled = reader.GetValueAsBool("general", "myprefix", true); string directory = MediaPortal.Configuration.Config.GetSubFolder(MediaPortal.Configuration.Config.Dir.Language, "MultiShortcut"); string cultureName = null; if (language != null) cultureName = GetCultureName(language); - Log.Info("MultiShortcut: Loading localised Strings - Path: {0} Culture: {1} Language: {2} Prefix: {3}", directory, cultureName, language, isPrefixEnabled); + Log.Info("MultiShortcut: Loading localised Strings - Path: {0} Culture: {1} Language: {2} Prefix: {3}", directory, cultureName, language, isPrefixEnabled); _stringProvider = new LocalisationProvider(directory, cultureName, isPrefixEnabled); @@ -360,10 +361,10 @@ 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); + _languages[i] = (string)sortedLanguages.GetByIndex(i); } } Modified: trunk/plugins/MultiShortcut/MultiShortcut/LocalizedCategory.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/LocalizedCategory.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/MultiShortcut/LocalizedCategory.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -26,17 +26,17 @@ namespace MediaPortal.MultiShortcut { - class LocalizedCategory : CategoryAttribute + class LocalizedCategory : CategoryAttribute + { + public LocalizedCategory(string Category) + : + base(Category) { } + + protected override string GetLocalizedString(string Category) { - public LocalizedCategory(string Category) - : - base(Category) { } - - protected override string GetLocalizedString(string Category) - { - string categoryname = base.Category; - LocalizeStrings.LocalizeLabel(ref categoryname); - return categoryname; - } + string categoryname = base.Category; + LocalizeStrings.LocalizeLabel(ref categoryname); + return categoryname; } + } } Modified: trunk/plugins/MultiShortcut/MultiShortcut/LocalizedDisplayName.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/LocalizedDisplayName.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/MultiShortcut/LocalizedDisplayName.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -26,20 +26,20 @@ namespace MediaPortal.MultiShortcut { - class LocalizedDisplayName : DisplayNameAttribute + class LocalizedDisplayName : DisplayNameAttribute + { + public LocalizedDisplayName(string DisplayName) + : + base(DisplayName) { } + + public override string DisplayName { - public LocalizedDisplayName(string DisplayName) - : - base(DisplayName) { } - - public override string DisplayName - { - get - { - string displayname = base.DisplayName; - LocalizeStrings.LocalizeLabel(ref displayname); - return displayname; - } - } + get + { + string displayname = base.DisplayName; + LocalizeStrings.LocalizeLabel(ref displayname); + return displayname; + } } + } } Modified: trunk/plugins/MultiShortcut/MultiShortcut/XmlConfig.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/XmlConfig.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/MultiShortcut/XmlConfig.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -63,258 +63,258 @@ namespace MediaPortal.MultiShortcut { - class XmlConfig - { + class XmlConfig + { -#region <<DECLARATION>> - XmlDocument configxml = new XmlDocument(); -#endregion + #region <<DECLARATION>> + XmlDocument configxml = new XmlDocument(); + #endregion -#region <<public>> + #region <<public>> - // Recover install MediaPortal path - public string PathInstalMP() - { - string path = MediaPortal.Configuration.Config.GetFolder(MediaPortal.Configuration.Config.Dir.Config); - return path; - } + // Recover install MediaPortal path + public string PathInstalMP() + { + string path = MediaPortal.Configuration.Config.GetFolder(MediaPortal.Configuration.Config.Dir.Config); + return path; + } - // Build entire filename of config file - public string EntireFilenameConfig(string FileName) - { - string entirefilename = PathInstalMP() + @"\" + FileName + ".xml"; - return entirefilename; - } + // Build entire filename of config file + public string EntireFilenameConfig(string FileName) + { + string entirefilename = PathInstalMP() + @"\" + FileName + ".xml"; + return entirefilename; + } - // Called with bool type - public void WriteXmlConfig(string FileName, string Section, string Entry, bool Value) - { - string value = ""; - // Change true by "yes" and false by "no" for xml MediaPortal compatibility - if (Value) - { - value = "yes"; - } - else - { - value = "no"; - } + // Called with bool type + public void WriteXmlConfig(string FileName, string Section, string Entry, bool Value) + { + string value = ""; + // Change true by "yes" and false by "no" for xml MediaPortal compatibility + if (Value) + { + value = "yes"; + } + else + { + value = "no"; + } - WriteXmlConfig(FileName, Section, Entry, value); - } + WriteXmlConfig(FileName, Section, Entry, value); + } - // Called with decimal type - public void WriteXmlConfig(string FileName, string Section, string Entry, decimal Value) - { - string value = Value.ToString(); + // Called with decimal type + public void WriteXmlConfig(string FileName, string Section, string Entry, decimal Value) + { + string value = Value.ToString(); - WriteXmlConfig(FileName, Section, Entry, value); - } + WriteXmlConfig(FileName, Section, Entry, value); + } - // Write a config file with XmlDocument - public void WriteXmlConfig(string FileName, string Section, string Entry, string Value) - { - // Create file if doesn't exist - if (!File.Exists(EntireFilenameConfig(FileName))) - { - CreateXmlConfig(FileName); - } + // Write a config file with XmlDocument + public void WriteXmlConfig(string FileName, string Section, string Entry, string Value) + { + // Create file if doesn't exist + if (!File.Exists(EntireFilenameConfig(FileName))) + { + CreateXmlConfig(FileName); + } - //Open xml document - configxml.Load(EntireFilenameConfig(FileName)); - //Recover profile node - XmlElement profile = configxml.DocumentElement; - //Create section if doesn't exist - String XPath = @"/profile/section[@name='" + Section + "']"; - XmlNodeList ListSection = configxml.SelectNodes(XPath); - if (ListSection.Count < 1) - { - CreateSection(Section); - } - //Posit on section node - XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); + //Open xml document + configxml.Load(EntireFilenameConfig(FileName)); + //Recover profile node + XmlElement profile = configxml.DocumentElement; + //Create section if doesn't exist + String XPath = @"/profile/section[@name='" + Section + "']"; + XmlNodeList ListSection = configxml.SelectNodes(XPath); + if (ListSection.Count < 1) + { + CreateSection(Section); + } + //Posit on section node + XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); - //Create Entry if doesn't exist - XPath = @"/profile/section[@name='" + Section + "']/entry[@name='" + Entry + "']"; - XmlNodeList ListEntry = configxml.SelectNodes(XPath); - if (ListEntry.Count < 1) - { - CreateEntry(Section, Entry); - } - //Posit on entry node - XmlNode entry = section.SelectSingleNode("entry[@name='" + Entry + "']"); + //Create Entry if doesn't exist + XPath = @"/profile/section[@name='" + Section + "']/entry[@name='" + Entry + "']"; + XmlNodeList ListEntry = configxml.SelectNodes(XPath); + if (ListEntry.Count < 1) + { + CreateEntry(Section, Entry); + } + //Posit on entry node + XmlNode entry = section.SelectSingleNode("entry[@name='" + Entry + "']"); - //Store entry value - entry.InnerText = Value; + //Store entry value + entry.InnerText = Value; - //Save xml config file - configxml.Save(EntireFilenameConfig(FileName)); - } + //Save xml config file + configxml.Save(EntireFilenameConfig(FileName)); + } - // Remove an Entry - public void RemoveEntry(string FileName, string Section, string Entry) - { - // Return if xml file doesn't exist - if (!File.Exists(EntireFilenameConfig(FileName))) - { - return; - } + // Remove an Entry + public void RemoveEntry(string FileName, string Section, string Entry) + { + // Return if xml file doesn't exist + if (!File.Exists(EntireFilenameConfig(FileName))) + { + return; + } - //Open xml document - configxml.Load(EntireFilenameConfig(FileName)); - //Recover profile node - XmlElement profile = configxml.DocumentElement; + //Open xml document + configxml.Load(EntireFilenameConfig(FileName)); + //Recover profile node + XmlElement profile = configxml.DocumentElement; - //Posit on value - String XPath = @"/profile/section[@name='" + Section + "']/entry[@name='" + Entry + "']"; - XmlNodeList ListEntry = configxml.SelectNodes(XPath); + //Posit on value + String XPath = @"/profile/section[@name='" + Section + "']/entry[@name='" + Entry + "']"; + XmlNodeList ListEntry = configxml.SelectNodes(XPath); - // If value exist, remove it otherwise, return - if (ListEntry.Count > 0) - { - //Posit on section node - XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); - //Posit on entry node - XmlNode entry = section.SelectSingleNode("entry[@name='" + Entry + "']"); - //Remove the entry node for section - section.RemoveChild(entry); - //Save xml config file - configxml.Save(EntireFilenameConfig(FileName)); - } - return; - } + // If value exist, remove it otherwise, return + if (ListEntry.Count > 0) + { + //Posit on section node + XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); + //Posit on entry node + XmlNode entry = section.SelectSingleNode("entry[@name='" + Entry + "']"); + //Remove the entry node for section + section.RemoveChild(entry); + //Save xml config file + configxml.Save(EntireFilenameConfig(FileName)); + } + return; + } - // Called with bool type - public bool ReadXmlConfig(string FileName, string Section, string Entry, bool Value) - { - // Change true by "yes" and false by "no" for xml MediaPortal compatibility - string value = Value.ToString(); - if (Value) - { - value = "yes"; - } - else - { - value = "no"; - } + // Called with bool type + public bool ReadXmlConfig(string FileName, string Section, string Entry, bool Value) + { + // Change true by "yes" and false by "no" for xml MediaPortal compatibility + string value = Value.ToString(); + if (Value) + { + value = "yes"; + } + else + { + value = "no"; + } - string result = ReadXmlConfig(FileName, Section, Entry, value); + string result = ReadXmlConfig(FileName, Section, Entry, value); - // Change "yes" by true and "no" by false for xml MediaPortal compatibility - if (result == "yes") - { - Value = true; - } - else - { - Value = false; - } + // Change "yes" by true and "no" by false for xml MediaPortal compatibility + if (result == "yes") + { + Value = true; + } + else + { + Value = false; + } - return Value; - } + return Value; + } - // Called with int type - public int ReadXmlConfig(string FileName, string Section, string Entry, int Value) - { - string value = Value.ToString(); + // Called with int type + public int ReadXmlConfig(string FileName, string Section, string Entry, int Value) + { + string value = Value.ToString(); - string result = ReadXmlConfig(FileName, Section, Entry, value); + string result = ReadXmlConfig(FileName, Section, Entry, value); - Value = Convert.ToInt32(result); + Value = Convert.ToInt32(result); - return Value; - } + return Value; + } - // Read xml config file with XmlDocument - public string ReadXmlConfig(string FileName, string Section, string Entry, string Value) - { - // Default value if xml file doesn't exist - if (!File.Exists(EntireFilenameConfig(FileName))) - { - return Value; - } + // Read xml config file with XmlDocument + public string ReadXmlConfig(string FileName, string Section, string Entry, string Value) + { + // Default value if xml file doesn't exist + if (!File.Exists(EntireFilenameConfig(FileName))) + { + return Value; + } - //Open xml document - configxml.Load(EntireFilenameConfig(FileName)); - //Recover profile node - XmlElement profile = configxml.DocumentElement; + //Open xml document + configxml.Load(EntireFilenameConfig(FileName)); + //Recover profile node + XmlElement profile = configxml.DocumentElement; - //Posit on value - String XPath = @"/profile/section[@name='" + Section + "']/entry[@name='" + Entry + "']"; - XmlNodeList ListEntry = configxml.SelectNodes(XPath); + //Posit on value + String XPath = @"/profile/section[@name='" + Section + "']/entry[@name='" + Entry + "']"; + XmlNodeList ListEntry = configxml.SelectNodes(XPath); - // If value exist, return it otherwise, return default value - if (ListEntry.Count > 0) - { - //Posit on section node - XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); - //Posit on entry node - XmlNode entry = section.SelectSingleNode("entry[@name='" + Entry + "']"); - //Recover value with entry data - Value = entry.InnerText; - } + // If value exist, return it otherwise, return default value + if (ListEntry.Count > 0) + { + //Posit on section node + XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); + //Posit on entry node + XmlNode entry = section.SelectSingleNode("entry[@name='" + Entry + "']"); + //Recover value with entry data + Value = entry.InnerText; + } - return Value; - } + return Value; + } -#endregion + #endregion -#region <<private>> + #region <<private>> - // Create xml config file with profile node - private void CreateXmlConfig(string FileName) - { - XmlDocument configxml = new XmlDocument(); - //Declaration of XML document type (utf-8, same as MediaPortal) - XmlDeclaration declaration = configxml.CreateXmlDeclaration("1.0", "utf-8", ""); - //Add declaration to document - configxml.AppendChild(declaration); - //Create profile node - XmlNode profile = configxml.CreateNode(System.Xml.XmlNodeType.Element, "profile", ""); - //Add node to document - configxml.AppendChild(profile); + // Create xml config file with profile node + private void CreateXmlConfig(string FileName) + { + XmlDocument configxml = new XmlDocument(); + //Declaration of XML document type (utf-8, same as MediaPortal) + XmlDeclaration declaration = configxml.CreateXmlDeclaration("1.0", "utf-8", ""); + //Add declaration to document + configxml.AppendChild(declaration); + //Create profile node + XmlNode profile = configxml.CreateNode(System.Xml.XmlNodeType.Element, "profile", ""); + //Add node to document + configxml.AppendChild(profile); - //Save xml config file - configxml.Save(EntireFilenameConfig(FileName)); - } + //Save xml config file + configxml.Save(EntireFilenameConfig(FileName)); + } - // create section node - private void CreateSection(string Section) - { - //Recover profile node - XmlElement profile = configxml.DocumentElement; - //Create new section node - XmlNode section = configxml.CreateElement("section"); - //Add "name" attribute to section node - XmlAttribute name = configxml.CreateAttribute("name"); - //value is section name - name.Value = Section; - //Add value to section - section.Attributes.Append(name); - //Add section to document - profile.AppendChild(section); - } + // create section node + private void CreateSection(string Section) + { + //Recover profile node + XmlElement profile = configxml.DocumentElement; + //Create new section node + XmlNode section = configxml.CreateElement("section"); + //Add "name" attribute to section node + XmlAttribute name = configxml.CreateAttribute("name"); + //value is section name + name.Value = Section; + //Add value to section + section.Attributes.Append(name); + //Add section to document + profile.AppendChild(section); + } - // create entry node - private void CreateEntry(string Section, string Entry) - { - //Recover profile node - XmlElement profile = configxml.DocumentElement; - //Posit on section node - XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); - //Create new node for entry - XmlNode entry = configxml.CreateElement("entry"); - //Add "name" attribute to entry node - XmlAttribute name = configxml.CreateAttribute("name"); - //value is entry name - name.Value = Entry; - //Add value to entry - entry.Attributes.Append(name); - //Add entry to document - section.AppendChild(entry); - } + // create entry node + private void CreateEntry(string Section, string Entry) + { + //Recover profile node + XmlElement profile = configxml.DocumentElement; + //Posit on section node + XmlNode section = profile.SelectSingleNode("section[@name='" + Section + "']"); + //Create new node for entry + XmlNode entry = configxml.CreateElement("entry"); + //Add "name" attribute to entry node + XmlAttribute name = configxml.CreateAttribute("name"); + //value is entry name + name.Value = Entry; + //Add value to entry + entry.Attributes.Append(name); + //Add entry to document + section.AppendChild(entry); + } -#endregion + #endregion - } // end of class + } // end of class } // end of namespace Modified: trunk/plugins/MultiShortcut/TestServer/Program.cs =================================================================== --- trunk/plugins/MultiShortcut/TestServer/Program.cs 2010-04-12 21:24:03 UTC (rev 3524) +++ trunk/plugins/MultiShortcut/TestServer/Program.cs 2010-04-13 20:00:45 UTC (rev 3525) @@ -10,15 +10,15 @@ namespace TestServer { - class Program + class Program + { + static void Main(string[] args) { - static void Main(string[] args) - { - MultiShortcut ms = new MultiShortcut(); - MultiShortcut ms2 = new MultiShortcut(); - //ms.RunProgram(@"c:\windows\notepad.exe", String.Empty); + MultiShortcut ms = new MultiShortcut(); + MultiShortcut ms2 = new MultiShortcut(); + //ms.RunProgram(@"c:\windows\notepad.exe", String.Empty); - Console.ReadKey(); - } + Console.ReadKey(); } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2010-10-19 06:13:27
|
Revision: 3838 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3838&view=rev Author: framug Date: 2010-10-19 06:13:19 +0000 (Tue, 19 Oct 2010) Log Message: ----------- MultiShortcut version 2.2 : - Add differed treatment ability. - Change icons. - Fix for our MP version. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.ico trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs trunk/plugins/MultiShortcut/MultiShortcut/Config.resx trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_de.xml trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_en.xml trunk/plugins/MultiShortcut/MultiShortcut/Language/strings_fr.xml trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.ico trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.ico =================================================================== (Binary files differ) Modified: trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs 2010-10-18 11:13:55 UTC (rev 3837) +++ trunk/plugins/MultiShortcut/MultiShortcut/Config.Designer.cs 2010-10-19 06:13:19 UTC (rev 3838) @@ -42,14 +42,14 @@ this.propertyGrid1.Location = new System.Drawing.Point(12, 12); this.propertyGrid1.Name = "propertyGrid1"; this.propertyGrid1.PropertySort = System.Windows.Forms.PropertySort.Categorized; - this.propertyGrid1.Size = new System.Drawing.Size(457, 581); + this.propertyGrid1.Size = new System.Drawing.Size(505, 617); this.propertyGrid1.TabIndex = 0; this.propertyGrid1.ToolbarVisible = false; // // button1 // this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; - this.button1.Location = new System.Drawing.Point(302, 614); + this.button1.Location = new System.Drawing.Point(350, 635); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 1; @@ -59,7 +59,7 @@ // button2 // this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.button2.Location = new System.Drawing.Point(394, 614); + this.button2.Location = new System.Drawing.Point(442, 635); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 23); this.button2.TabIndex = 2; @@ -70,7 +70,7 @@ // this.LibVersion.AutoSize = true; this.LibVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.LibVersion.Location = new System.Drawing.Point(32, 619); + this.LibVersion.Location = new System.Drawing.Point(12, 640); this.LibVersion.Name = "LibVersion"; this.LibVersion.Size = new System.Drawing.Size(57, 13); this.LibVersion.TabIndex = 11; @@ -80,7 +80,7 @@ // this.VarVersion.AutoSize = true; this.VarVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.VarVersion.Location = new System.Drawing.Point(95, 619); + this.VarVersion.Location = new System.Drawing.Point(75, 640); this.VarVersion.Name = "VarVersion"; this.VarVersion.Size = new System.Drawing.Size(25, 13); this.VarVersion.TabIndex = 16; @@ -92,7 +92,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSize = true; this.CancelButton = this.button2; - this.ClientSize = new System.Drawing.Size(481, 650); + this.ClientSize = new System.Drawing.Size(529, 666); this.Controls.Add(this.VarVersion); this.Controls.Add(this.LibVersion); this.Controls.Add(this.button2); Modified: trunk/plugins/MultiShortcut/MultiShortcut/Config.resx =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Config.resx 2010-10-18 11:13:55 UTC (rev 3837) +++ trunk/plugins/MultiShortcut/MultiShortcut/Config.resx 2010-10-19 06:13:19 UTC (rev 3838) @@ -120,69 +120,2843 @@ <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> - 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 + ZHAHACUmUkAhYGBlBlYGRyVgBwAGQ0YQQEBSQGB2dDRncAcAAEYQRndnZwYWB2dnRnAHAEAWYAdgdGdA + ZHR2VnZwBwAAYUJHRHYHZWFmdndlcAcABgZQB2B2R3aGR0dnZnAHBGFlJCdGdChkZ0dnbHZwBwJWRgQI + YIZIR2hmdnZWcAcEJSdhRnZ3dnZ2VnVnZ3AHAABAdCR2RnRnx2dnZWZwBwBAJGcARHRkdnR2fHZ8cAcA + BAFkdCBCUkRnZ2fnZ3AHBCBGUmdHBGR2dnx2VnZwBwAENGdHZnYWdHZWZWfHYAcEAGNABlZWdnZ2dHZn + Z3AHACQEJCQHZ0ZHZWZHR0ZwBwQABAUGBlZDRnZ2dmdnYAcAQGAkBDZlJGVlZEdGVnAAACAFBgZFZGUk + ZGdkdnZwAHQEBgBBBgYGQlZWVmVlAAAAd3d3d3d3d3d3d3d3AAAAAAAAAAAAAAAAAAAAAAAA/////+AA + AAfAAAADwAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA + AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAHAAAAD8AAAD/// + //8oAAAAGAAAADAAAAABAAQAAAAAACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA + AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAEAEBgAAcAAAAAQGUgYCUGUAAAAAZSAGRgFCQkIAAAAARkJSUkJHBWUAAAQAJSVkdlZWYGAAYA + AkUkIEJWNlJWcAEGVhYEFCAEZ0YGQAAAYGBCBhRhZWVlcAQAB0NHdHYGBnZ2YAIAQ0B0ZkdDR2dnQAFA + JCRgdDdnZHZ2cAAlZSB2dkdnZ2VlYAQGVkB0d2dHZWdnYAIABnBHZ2dnR3Z0cAUEAHYEBEZWdnx2cAAg + QkdhZhZGfHZ2YAQAB0dGVkd2dmdnwAJARyQnZ2Z2dHbHcAEAJABEZWRHZkdmYAQkAEJDZDRnR2VnUAcA + QkFAZSQkdGZWYABwcFJlJHR0Z1Z3AAAAAAAAAAAAAAAAAP///wDAAAMAgAABAIAAAQCAAAEAgAABAIAA + AQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAA + AQDAAAMA////ACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA + AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAA + AAAAAAAAQAQGAAAABgB2BhRgAAAHR2UkclAAQkYABlZkIAAHQUJAZwdAAAYGdnBHZ2AABwYHZ2VncARk + B0dHZ2RgAAdCdnZ0d2AAAHRER0dncABkY2NGdnZgAANAR2dkZWAAQEJlZHZ2cAQCQEYGRWRwAAAAAAAA + AAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AAD//wAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAgAElEQVR4nOy9SawkyZkm9tni + 5uYe8ZZcipVV7CpWsRc2e1rd05jz3HXQ3HUUIOiiowDpOPe5SQNhpIMooFuHHo0ggsKI6mlo0Gj1jAbQ + hm5o6W04JJtLVbGqsjLzvRe+mNuig/lvbubh8fK9rCJ5YP7Ag7lHREZ6RPj//9///YuxP/7jP8ZreS2v + 5RdT+M/7Al7La3ktPz95bQBey2v5BZbXBuC1vJZfYHltAF7La/kFltcG4LW8ll9geW0AXstr+QWW1wbg + tbyWX2B5bQBey2v5BZbXBuC1vJZfYHltAF7La/kFltcG4LW8ll9gkT/vCwCAb37r2+HZiytcdxOcs0fP + C/HTv8yJizu9rpYVAMCbAVzpn+YlHQlbfQ9svpbG3aAX+81/M3mH6o6fLRcpJay1xXpfcbc8x8TxNQmp + 4Ky58/uvX0/nW4+n47qFG7v0OgAQXMD52642/jsAcGOX3iNf8+fuKlWweHje4u/93b/N7vyPvmBhP49m + oP/0v/i98P/+xV/jRx89hbcjIOrN13EG+LD9HlXdYBr7zRUAprGHai8QnDk6p2PTvYBqL+bnb1DV+6Pj + UyJrDTsOm+d0nK9roZsnPwfufxMJpeHMkI5JnBnAhQATVfl6weBc+aUyqRCsAZMKPEwAK/8NAPhbblGp + NKwZijX+owngFeAnMHWJYJ6nFbyCkBzOeiitYYaheE96TO/3GG5uoLSGswaVbjEN8XvzaFDJUnG5lPDW + gm8YLGslpLRpFUpj6m4g53um+E42DFR2dQBMWutGY+yHefWoG360Hr0/K6+vriWamuMrlzX+/X/77/zM + DMLPDAF881vfDv/kj/5PPP/oIwCZYp9Q/i0hpb2PkLIDfXqMjMSrKj+AI2W/j/IDSMqfG4LcIGx5mLWQ + 8udGgM7FCXSSKz8pPsnRbRomeFZtxolSZZ9zpfzWDHhwrnHdIRoBICr9vApVA96CwB55ayE5Kt1iuLmB + swZKaww3N8kI6P0e09Alxa8kwzREozAOAbVmJ5UfAKRc0CV9P/dVflL2xQhgVvJtI6Bb... [truncated message content] |
From: <fr...@us...> - 2011-08-12 17:45:41
|
Revision: 4266 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4266&view=rev Author: framug Date: 2011-08-12 17:45:35 +0000 (Fri, 12 Aug 2011) Log Message: ----------- Fix language problem. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/MultiShortcut.sln trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2011-08-12 17:44:13 UTC (rev 4265) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2011-08-12 17:45:35 UTC (rev 4266) @@ -1,4 +1,5 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -12,9 +13,26 @@ <ApplicationIcon>DLLFix.ico</ApplicationIcon> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>2.0</OldToolsVersion> + <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <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> + <TargetFrameworkProfile /> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -24,6 +42,7 @@ <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -32,11 +51,12 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> @@ -57,6 +77,26 @@ <ItemGroup> <Content Include="DLLFix.ico" /> </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </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. Modified: trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2011-08-12 17:44:13 UTC (rev 4265) +++ trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2011-08-12 17:45:35 UTC (rev 4266) @@ -197,7 +197,7 @@ bool isPrefixEnabled = true; using (MediaPortal.Profile.Settings reader = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MediaPortal.xml"))) - isPrefixEnabled = reader.GetValueAsBool("general", "myprefix", true); + isPrefixEnabled = reader.GetValueAsBool("gui", "myprefix", true); string directory = MediaPortal.Configuration.Config.GetSubFolder(MediaPortal.Configuration.Config.Dir.Language, "MultiShortcut"); string cultureName = null; Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2011-08-12 17:44:13 UTC (rev 4265) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2011-08-12 17:45:35 UTC (rev 4266) @@ -199,7 +199,7 @@ if (_PluginLangFileExist) { MediaPortal.Profile.Settings s = new MediaPortal.Profile.Settings(MediaPortal.Configuration.Config.GetFile(MediaPortal.Configuration.Config.Dir.Config, "MediaPortal.xml")); - string strLanguage = s.GetValueAsString("skin", "language", "English"); + string strLanguage = s.GetValueAsString("gui", "language", "English"); LocalizeStrings.Load(strLanguage); } Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2011-08-12 17:44:13 UTC (rev 4265) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2011-08-12 17:45:35 UTC (rev 4266) @@ -1,4 +1,5 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -11,9 +12,26 @@ <AssemblyName>MultiShortcut00</AssemblyName> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>2.0</OldToolsVersion> + <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <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> + <TargetFrameworkProfile /> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -23,6 +41,7 @@ <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -31,37 +50,28 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> - <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Core.dll</HintPath> - <Private>False</Private> + <Reference Include="Core"> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Core.dll</HintPath> </Reference> - <Reference Include="Databases, Version=1.0.4.32079, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Databases.dll</HintPath> - <Private>False</Private> + <Reference Include="Databases"> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Databases.dll</HintPath> </Reference> - <Reference Include="Dialogs, Version=1.0.4.32079, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\plugins\Windows\Dialogs.dll</HintPath> - <Private>False</Private> + <Reference Include="Dialogs"> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\plugins\Windows\Dialogs.dll</HintPath> </Reference> - <Reference Include="RemotePlugins, Version=1.0.5.34910, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\RemotePlugins.dll</HintPath> - <Private>False</Private> + <Reference Include="RemotePlugins"> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\RemotePlugins.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.32077, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Utils.dll</HintPath> - <Private>False</Private> + <Reference Include="Utils"> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Utils.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> @@ -90,6 +100,23 @@ <Content Include="Language\strings_en.xml" /> <Content Include="Language\strings_fr.xml" /> </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</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. @@ -99,6 +126,6 @@ </Target> --> <PropertyGroup> - <PostBuildEvent>copy $(TargetName).dll "D:\SVN\MediaPortal\xbmc\bin\Release\plugins\Windows"</PostBuildEvent> + <PostBuildEvent>rem copy $(TargetName).dll "D:\SVN\MediaPortal\xbmc\bin\Release\plugins\Windows"</PostBuildEvent> </PropertyGroup> </Project> \ No newline at end of file Modified: trunk/plugins/MultiShortcut/MultiShortcut.sln =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut.sln 2011-08-12 17:44:13 UTC (rev 4265) +++ trunk/plugins/MultiShortcut/MultiShortcut.sln 2011-08-12 17:45:35 UTC (rev 4266) @@ -1,6 +1,6 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "TestServer\TestServer.csproj", "{D2159E0B-44FA-41D8-B701-081D2C931CC0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiShortcut", "MultiShortcut\MultiShortcut.csproj", "{7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}" Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2011-08-12 17:44:13 UTC (rev 4265) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2011-08-12 17:45:35 UTC (rev 4266) @@ -1,4 +1,5 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> @@ -11,9 +12,26 @@ <AssemblyName>TestServer</AssemblyName> <FileUpgradeFlags> </FileUpgradeFlags> - <OldToolsVersion>2.0</OldToolsVersion> + <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <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> + <TargetFrameworkProfile /> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> @@ -23,6 +41,7 @@ <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -31,11 +50,12 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\xbmc\bin\Release\Core.dll</HintPath> + <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> @@ -53,6 +73,26 @@ <Private>False</Private> </ProjectReference> </ItemGroup> + <ItemGroup> + <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> + <Install>false</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> + <Visible>False</Visible> + <ProductName>.NET Framework 3.5 SP1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> + <Visible>False</Visible> + <ProductName>Windows Installer 3.1</ProductName> + <Install>true</Install> + </BootstrapperPackage> + </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. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2012-08-12 17:51:46
|
Revision: 4509 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4509&view=rev Author: framug Date: 2012-08-12 17:51:38 +0000 (Sun, 12 Aug 2012) Log Message: ----------- - Add "official" MP 1.3 compatibility version plugin. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2012-08-03 19:47:20 UTC (rev 4508) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2012-08-12 17:51:38 UTC (rev 4509) @@ -56,7 +56,7 @@ <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Core.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> @@ -94,9 +94,6 @@ <Install>true</Install> </BootstrapperPackage> </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. Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2012-08-03 19:47:20 UTC (rev 4508) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2012-08-12 17:51:38 UTC (rev 4509) @@ -53,17 +53,25 @@ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> + <Reference Include="Common.Utils"> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Common.Utils.dll</HintPath> + <Private>False</Private> + </Reference> <Reference Include="Core"> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Core.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Core.dll</HintPath> + <Private>False</Private> </Reference> <Reference Include="Databases"> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Databases.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Databases.dll</HintPath> + <Private>False</Private> </Reference> <Reference Include="Dialogs"> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\plugins\Windows\Dialogs.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\plugins\Windows\Dialogs.dll</HintPath> + <Private>False</Private> </Reference> <Reference Include="RemotePlugins"> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\RemotePlugins.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\RemotePlugins.dll</HintPath> + <Private>False</Private> </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> @@ -71,7 +79,8 @@ <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> <Reference Include="Utils"> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Utils.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Utils.dll</HintPath> + <Private>False</Private> </Reference> </ItemGroup> <ItemGroup> Modified: trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2012-08-03 19:47:20 UTC (rev 4508) +++ trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2012-08-12 17:51:38 UTC (rev 4509) @@ -1,7 +1,9 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using MediaPortal.Common.Utils; + // 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. @@ -31,5 +33,11 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("2.3.0.0")] -[assembly: AssemblyFileVersion("2.3.0.0")] +[assembly: AssemblyVersion("2.4.0.0")] +[assembly: AssemblyFileVersion("2.4.0.0")] + +// MediaPortal plugin version compatibility +[assembly: CompatibleVersion("1.2.100.0")] +[assembly: UsesSubsystem("MP.SkinEngine")] +[assembly: UsesSubsystem("MP.Config")] + Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2012-08-03 19:47:20 UTC (rev 4508) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2012-08-12 17:51:38 UTC (rev 4509) @@ -55,7 +55,7 @@ <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\mediaportal\MediaPortal.Application\bin\Release\Core.dll</HintPath> + <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Core.dll</HintPath> <Private>False</Private> </Reference> <Reference Include="System" /> @@ -90,9 +90,6 @@ <Install>true</Install> </BootstrapperPackage> </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. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2013-12-01 22:57:42
|
Revision: 4693 http://sourceforge.net/p/mp-plugins/code/4693 Author: framug Date: 2013-12-01 22:57:37 +0000 (Sun, 01 Dec 2013) Log Message: ----------- - MP 1.6 compliant. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2013-11-30 19:37:18 UTC (rev 4692) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2013-12-01 22:57:37 UTC (rev 4693) @@ -16,7 +16,7 @@ <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> - <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <PublishUrl>publish\</PublishUrl> <Install>true</Install> <InstallFrom>Disk</InstallFrom> @@ -52,6 +52,7 @@ <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> @@ -94,6 +95,9 @@ <Install>true</Install> </BootstrapperPackage> </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. Modified: trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2013-11-30 19:37:18 UTC (rev 4692) +++ trunk/plugins/MultiShortcut/MultiShortcut/LocalizeStrings.cs 2013-12-01 22:57:37 UTC (rev 4693) @@ -396,7 +396,7 @@ /// </summary> /// <param name="language">Language</param> /// <returns>Culture</returns> - static public string GetCultureName(string language) + public static string GetCultureName(string language) { if (_cultures == null) { @@ -406,15 +406,18 @@ for (int i = 0; i < cultureList.Length; i++) { - _cultures.Add(cultureList[i].EnglishName, cultureList[i].Name); + _cultures[cultureList[i].EnglishName] = cultureList[i].Name; } } + string cultures = null; + if (_cultures.TryGetValue(language, out cultures)) + { + return cultures; + } - if (_cultures.ContainsKey(language)) - return _cultures[language]; - return null; } + #endregion } } Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2013-11-30 19:37:18 UTC (rev 4692) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.cs 2013-12-01 22:57:37 UTC (rev 4693) @@ -855,10 +855,10 @@ MediaPortal.InputDevices.InputDevices.Init(); // Restore MP Window Win32Wrapper.ShowWindow(m_MP_WindowHWND, Win32Wrapper.SW_SHOWDEFAULT); - /* next two lines not yet need. - Thread.Sleep(2000); - Win32Wrapper.SetWindowPos(newProcess.MainWindowHandle, Win32Wrapper.HWND_TOPMOST, 0, 0, 0, 0, Win32Wrapper.SWP_NOSIZE | Win32Wrapper.SWP_NOMOVE); - */ + // next two lines not yet need. + // Thread.Sleep(2000); + // Win32Wrapper.SetWindowPos(newProcess.MainWindowHandle, Win32Wrapper.HWND_TOPMOST, 0, 0, 0, 0, Win32Wrapper.SWP_NOSIZE | Win32Wrapper.SWP_NOMOVE); + _MPWindowHidden = false; } @@ -965,8 +965,8 @@ [LocalizedCategory("4"), LocalizedDisplayName("34")] public bool MenuHidden { - get { return m_MS.m_MenuHidden; } - set { m_MS.m_MenuHidden = value; } + get { return m_MS.m_MenuHidden; } + set { m_MS.m_MenuHidden = value; } } #endregion @@ -1016,8 +1016,8 @@ [LocalizedCategory("23"), LocalizedDisplayName("35")] public bool PreClearProperties { - get { return m_MS.m_PreClearProperties; } - set { m_MS.m_PreClearProperties = value; } + get { return m_MS.m_PreClearProperties; } + set { m_MS.m_PreClearProperties = value; } } #endregion @@ -1067,15 +1067,15 @@ [LocalizedCategory("0"), LocalizedDisplayName("35")] public bool ClearProperties { - get { return m_MS.m_ClearProperties; } - set { m_MS.m_ClearProperties = value; } + get { return m_MS.m_ClearProperties; } + set { m_MS.m_ClearProperties = value; } } [LocalizedCategory("0"), LocalizedDisplayName("37")] public bool RunAfterPreviousExited { - get { return m_MS.m_RunAfterPreviousExited; } - set { m_MS.m_RunAfterPreviousExited = value; } + get { return m_MS.m_RunAfterPreviousExited; } + set { m_MS.m_RunAfterPreviousExited = value; } } #endregion @@ -1125,8 +1125,8 @@ [LocalizedCategory("24"), LocalizedDisplayName("35")] public bool PostClearProperties { - get { return m_MS.m_PostClearProperties; } - set { m_MS.m_PostClearProperties = value; } + get { return m_MS.m_PostClearProperties; } + set { m_MS.m_PostClearProperties = value; } } [LocalizedCategory("24"), LocalizedDisplayName("37")] Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2013-11-30 19:37:18 UTC (rev 4692) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2013-12-01 22:57:37 UTC (rev 4693) @@ -15,7 +15,7 @@ <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> - <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <PublishUrl>publish\</PublishUrl> <Install>true</Install> <InstallFrom>Disk</InstallFrom> @@ -51,6 +51,7 @@ <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <ItemGroup> <Reference Include="Common.Utils"> Modified: trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2013-11-30 19:37:18 UTC (rev 4692) +++ trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2013-12-01 22:57:37 UTC (rev 4693) @@ -37,7 +37,7 @@ [assembly: AssemblyFileVersion("2.4.0.0")] // MediaPortal plugin version compatibility -[assembly: CompatibleVersion("1.4.0.0")] +[assembly: CompatibleVersion("1.5.100.0")] [assembly: UsesSubsystem("MP.SkinEngine")] [assembly: UsesSubsystem("MP.Config")] Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2013-11-30 19:37:18 UTC (rev 4692) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2013-12-01 22:57:37 UTC (rev 4693) @@ -15,7 +15,7 @@ <OldToolsVersion>3.5</OldToolsVersion> <UpgradeBackupLocation> </UpgradeBackupLocation> - <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> <PublishUrl>publish\</PublishUrl> <Install>true</Install> <InstallFrom>Disk</InstallFrom> @@ -51,6 +51,7 @@ <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> @@ -90,6 +91,9 @@ <Install>true</Install> </BootstrapperPackage> </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. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2019-06-13 16:17:43
|
Revision: 4957 http://sourceforge.net/p/mp-plugins/code/4957 Author: framug Date: 2019-06-13 16:17:41 +0000 (Thu, 13 Jun 2019) Log Message: ----------- MultiShorcut V2.6 : Compiled with VS2015 and tested with MP 1.22. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2015-05-25 21:21:32 UTC (rev 4956) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2019-06-13 16:17:41 UTC (rev 4957) @@ -95,9 +95,6 @@ <Install>true</Install> </BootstrapperPackage> </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. Modified: trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2015-05-25 21:21:32 UTC (rev 4956) +++ trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2019-06-13 16:17:41 UTC (rev 4957) @@ -33,8 +33,8 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("2.5.0.0")] -[assembly: AssemblyFileVersion("2.5.0.0")] +[assembly: AssemblyVersion("2.6.0.0")] +[assembly: AssemblyFileVersion("2.6.0.0")] // MediaPortal plugin version compatibility [assembly: CompatibleVersion("1.5.100.0")] Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2015-05-25 21:21:32 UTC (rev 4956) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2019-06-13 16:17:41 UTC (rev 4957) @@ -91,9 +91,6 @@ <Install>true</Install> </BootstrapperPackage> </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. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2019-07-09 05:23:35
|
Revision: 4958 http://sourceforge.net/p/mp-plugins/code/4958 Author: framug Date: 2019-07-09 05:23:33 +0000 (Tue, 09 Jul 2019) Log Message: ----------- Remove some compil warning Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj trunk/plugins/MultiShortcut/MultiShortcut.sln trunk/plugins/MultiShortcut/TestServer/TestServer.csproj Modified: trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2019-06-13 16:17:41 UTC (rev 4957) +++ trunk/plugins/MultiShortcut/DLLFix/DLLFix.csproj 2019-07-09 05:23:33 UTC (rev 4958) @@ -54,6 +54,24 @@ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> <PlatformTarget>AnyCPU</PlatformTarget> </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> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </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> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> Modified: trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2019-06-13 16:17:41 UTC (rev 4957) +++ trunk/plugins/MultiShortcut/MultiShortcut/MultiShortcut.csproj 2019-07-09 05:23:33 UTC (rev 4958) @@ -53,6 +53,24 @@ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> <PlatformTarget>AnyCPU</PlatformTarget> </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> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </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> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> <ItemGroup> <Reference Include="Common.Utils"> <HintPath>C:\Program Files (x86)\Team MediaPortal\MediaPortal\Common.Utils.dll</HintPath> Modified: trunk/plugins/MultiShortcut/MultiShortcut.sln =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut.sln 2019-06-13 16:17:41 UTC (rev 4957) +++ trunk/plugins/MultiShortcut/MultiShortcut.sln 2019-07-09 05:23:33 UTC (rev 4958) @@ -1,6 +1,8 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "TestServer\TestServer.csproj", "{D2159E0B-44FA-41D8-B701-081D2C931CC0}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiShortcut", "MultiShortcut\MultiShortcut.csproj", "{7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}" @@ -10,21 +12,35 @@ 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 {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|x86.ActiveCfg = Debug|x86 + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Debug|x86.Build.0 = Debug|x86 {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|Any CPU.Build.0 = Release|Any CPU + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|x86.ActiveCfg = Release|x86 + {D2159E0B-44FA-41D8-B701-081D2C931CC0}.Release|x86.Build.0 = Release|x86 {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|x86.ActiveCfg = Debug|x86 + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Debug|x86.Build.0 = Debug|x86 {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|Any CPU.Build.0 = Release|Any CPU + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|x86.ActiveCfg = Release|x86 + {7CBDA33F-E11F-400B-8B3F-ABB0B54462AC}.Release|x86.Build.0 = Release|x86 {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|x86.ActiveCfg = Debug|x86 + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Debug|x86.Build.0 = Debug|x86 {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|Any CPU.ActiveCfg = Release|Any CPU {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|Any CPU.Build.0 = Release|Any CPU + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|x86.ActiveCfg = Release|x86 + {8EDA7E5D-E56B-486E-BFB3-DB3A47733E39}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/plugins/MultiShortcut/TestServer/TestServer.csproj =================================================================== --- trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2019-06-13 16:17:41 UTC (rev 4957) +++ trunk/plugins/MultiShortcut/TestServer/TestServer.csproj 2019-07-09 05:23:33 UTC (rev 4958) @@ -53,6 +53,24 @@ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> <PlatformTarget>AnyCPU</PlatformTarget> </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> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </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> + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> + </PropertyGroup> <ItemGroup> <Reference Include="Core, Version=1.0.4.32078, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2019-07-10 07:30:21
|
Revision: 4959 http://sourceforge.net/p/mp-plugins/code/4959 Author: framug Date: 2019-07-10 07:30:19 +0000 (Wed, 10 Jul 2019) Log Message: ----------- MultiShortcut V2.7 : change the way to hack the dll since changes in DOTNET result in compil modifications. Modified Paths: -------------- trunk/plugins/MultiShortcut/DLLFix/Program.cs trunk/plugins/MultiShortcut/DLLFix/Properties/AssemblyInfo.cs trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs Modified: trunk/plugins/MultiShortcut/DLLFix/Program.cs =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/Program.cs 2019-07-09 05:23:33 UTC (rev 4958) +++ trunk/plugins/MultiShortcut/DLLFix/Program.cs 2019-07-10 07:30:19 UTC (rev 4959) @@ -31,6 +31,12 @@ 0x63, 0x75, 0x74 }; + byte[] search_bytes2 = new byte[] + { + // M u l t i S h o r t c u t + 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x63, 0x75, 0x74 + }; + byte fileCounter = 0; string myPath = System.Reflection.Assembly.GetExecutingAssembly().Location; @@ -44,8 +50,8 @@ Console.WriteLine("** **"); Console.WriteLine("*******************************************************"); Console.WriteLine(""); - Console.WriteLine("1.) Patching files...\n"); - // Parse all MP plugins DLL + Console.WriteLine("1.) Patching files... first method\n"); + // Parse all MP plugins DLL first time foreach (string s in files) { using (Stream st = new FileStream(s, FileMode.Open, FileAccess.ReadWrite)) @@ -64,7 +70,6 @@ for (int i = 0; i < bytes_read + offset - search_bytes.Length; i++) { match = true; - // Loop inside 43 bytes until differ. for (int j = 0; j < search_bytes.Length; j++) { @@ -102,6 +107,71 @@ } } + Console.WriteLine(""); + Console.WriteLine("1.) First method ended\n"); + Console.WriteLine(""); + Console.WriteLine("\n3.) Press a key to continue..."); + Console.ReadKey(); + + Console.WriteLine(""); + Console.WriteLine("1.) Patching files... second method\n"); + // Parse all MP plugins DLL second time + foreach (string s in files) + { + using (Stream st = new FileStream(s, FileMode.Open, FileAccess.ReadWrite)) + { + int offset = 0; + long file_pos = 0; + int bytes_read = 0; + byte[] buffer = new byte[65536]; + + bool match = false; + + // Loop for each 64 KB buffer length until EOF or, found what searched + while ((bytes_read = st.Read(buffer, offset, buffer.Length - offset)) > 0 && !match) + { + // Loop for each searched bytes : 13 bytes length step, in this case. + for (int i = 0; i < bytes_read + offset - search_bytes2.Length; i++) + { + match = true; + + // Loop inside 13 bytes until differ. + for (int j = 0; j < search_bytes2.Length; j++) + { + if (search_bytes2[j] != buffer[i + j]) + { + match = false; + break; + } + } + + // We found "MultiShortcut" inside the DLL code. + // Then, it's most likely a MultiShortcut DLL. + if (match) + { + // Replace value number in the dll code then, ability to have duplicate plugins. + st.Seek(file_pos + i - offset + search_bytes2.Length, SeekOrigin.Begin); + byte[] replaceBuffer = new byte[] { (Byte)(48 + (fileCounter > 9 ? ((int)fileCounter / 10) : 0)), (Byte)(48 + ((int)fileCounter % 10)) }; + string Sreplaced = Encoding.ASCII.GetString(replaceBuffer); + st.Write(replaceBuffer, 0, replaceBuffer.Length); + Console.WriteLine(" - PATCHED: {0} with {1} value.", s.Substring(s.LastIndexOf('\\') + 1), Sreplaced); + fileCounter++; + break; + } + } + + file_pos = st.Position; + + offset = search_bytes2.Length; + // recopy the end of the buffer + for (int i = 0; i < offset; i++) + { + buffer[i] = buffer[buffer.Length - offset + i]; + } + } + } + } + Console.WriteLine("\n2.) Done."); Console.WriteLine("\n3.) Press Enter to close..."); Console.ReadKey(); Modified: trunk/plugins/MultiShortcut/DLLFix/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/DLLFix/Properties/AssemblyInfo.cs 2019-07-09 05:23:33 UTC (rev 4958) +++ trunk/plugins/MultiShortcut/DLLFix/Properties/AssemblyInfo.cs 2019-07-10 07:30:19 UTC (rev 4959) @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("2.0.0.0")] +[assembly: AssemblyFileVersion("2.0.0.0")] Modified: trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2019-07-09 05:23:33 UTC (rev 4958) +++ trunk/plugins/MultiShortcut/MultiShortcut/Properties/AssemblyInfo.cs 2019-07-10 07:30:19 UTC (rev 4959) @@ -33,8 +33,8 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("2.6.0.0")] -[assembly: AssemblyFileVersion("2.6.0.0")] +[assembly: AssemblyVersion("2.7.0.0")] +[assembly: AssemblyFileVersion("2.7.0.0")] // MediaPortal plugin version compatibility [assembly: CompatibleVersion("1.5.100.0")] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |