EAC Plugin: autoupdating, saving window size

This commit is contained in:
chudov
2012-01-19 08:18:10 +00:00
parent bc3c8a1074
commit 2161457451
11 changed files with 586 additions and 338 deletions

View File

@@ -15,32 +15,38 @@
{ {
"Entry" "Entry"
{ {
"MsmKey" = "8:_404CDECAD44DEDE89F5968D20B9790D4" "MsmKey" = "8:_23A6BB18C5C16459B31F4387E1637805"
"OwnerKey" = "8:_5C38BA7F54E368532D5699479E787C04" "OwnerKey" = "8:_7A5E0041DC75098C30D459114A6DEE81"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_404CDECAD44DEDE89F5968D20B9790D4" "MsmKey" = "8:_23A6BB18C5C16459B31F4387E1637805"
"OwnerKey" = "8:_D773630141C71B97B8E286CAB5D6745D" "OwnerKey" = "8:_EDC6E0710402166D3365BDE71ABA595A"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_404CDECAD44DEDE89F5968D20B9790D4" "MsmKey" = "8:_23A6BB18C5C16459B31F4387E1637805"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C" "OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_5C38BA7F54E368532D5699479E787C04" "MsmKey" = "8:_504F307A54097796FB92030AEBB7329B"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C" "OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_5C38BA7F54E368532D5699479E787C04" "MsmKey" = "8:_7A5E0041DC75098C30D459114A6DEE81"
"OwnerKey" = "8:_D773630141C71B97B8E286CAB5D6745D" "OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_7A5E0041DC75098C30D459114A6DEE81"
"OwnerKey" = "8:_EDC6E0710402166D3365BDE71ABA595A"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@@ -51,32 +57,20 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_88C1C00C7C570D8CCF5DFB2742F06623" "MsmKey" = "8:_A387AADC261164D68ABC68DA3BD54FF7"
"OwnerKey" = "8:_5C38BA7F54E368532D5699479E787C04" "OwnerKey" = "8:_7A5E0041DC75098C30D459114A6DEE81"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_88C1C00C7C570D8CCF5DFB2742F06623" "MsmKey" = "8:_A387AADC261164D68ABC68DA3BD54FF7"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C" "OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_C8D6D24D8A62DE5D9BD6EBE19184F81B" "MsmKey" = "8:_A387AADC261164D68ABC68DA3BD54FF7"
"OwnerKey" = "8:_5C38BA7F54E368532D5699479E787C04" "OwnerKey" = "8:_EDC6E0710402166D3365BDE71ABA595A"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C8D6D24D8A62DE5D9BD6EBE19184F81B"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_D773630141C71B97B8E286CAB5D6745D"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@@ -87,7 +81,19 @@
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_FCE5A5A259EDA6827D332455737A9470" "MsmKey" = "8:_EA17591A9F261678B36DFC7E72DFC398"
"OwnerKey" = "8:_7A5E0041DC75098C30D459114A6DEE81"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EA17591A9F261678B36DFC7E72DFC398"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_EDC6E0710402166D3365BDE71ABA595A"
"OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C" "OwnerKey" = "8:_82CE165AE35A4FB48DF2F4F7C072C14C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
@@ -100,37 +106,37 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_FCE5A5A259EDA6827D332455737A9470" "OwnerKey" = "8:_EDC6E0710402166D3365BDE71ABA595A"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_D773630141C71B97B8E286CAB5D6745D" "OwnerKey" = "8:_7A5E0041DC75098C30D459114A6DEE81"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_5C38BA7F54E368532D5699479E787C04" "OwnerKey" = "8:_A387AADC261164D68ABC68DA3BD54FF7"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C8D6D24D8A62DE5D9BD6EBE19184F81B" "OwnerKey" = "8:_EA17591A9F261678B36DFC7E72DFC398"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_88C1C00C7C570D8CCF5DFB2742F06623" "OwnerKey" = "8:_23A6BB18C5C16459B31F4387E1637805"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_404CDECAD44DEDE89F5968D20B9790D4" "OwnerKey" = "8:_504F307A54097796FB92030AEBB7329B"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
} }
@@ -145,7 +151,7 @@
"PackageFilesAs" = "3:2" "PackageFilesAs" = "3:2"
"PackageFileSize" = "3:-2147483648" "PackageFileSize" = "3:-2147483648"
"CabType" = "3:1" "CabType" = "3:1"
"Compression" = "3:2" "Compression" = "3:3"
"SignOutput" = "11:FALSE" "SignOutput" = "11:FALSE"
"CertificateFile" = "8:" "CertificateFile" = "8:"
"PrivateKeyFile" = "8:" "PrivateKeyFile" = "8:"
@@ -153,11 +159,24 @@
"InstallerBootstrapper" = "3:2" "InstallerBootstrapper" = "3:2"
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
{ {
"Enabled" = "11:TRUE" "Enabled" = "11:FALSE"
"PromptEnabled" = "11:TRUE" "PromptEnabled" = "11:TRUE"
"PrerequisitesLocation" = "2:1" "PrerequisitesLocation" = "2:1"
"Url" = "8:" "Url" = "8:"
"ComponentsUrl" = "8:" "ComponentsUrl" = "8:"
"Items"
{
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.0,Profile=Client"
{
"Name" = "8:Microsoft .NET Framework 4 Client Profile (x86 and x64)"
"ProductCode" = "8:.NETFramework,Version=v4.0,Profile=Client"
}
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
{
"Name" = "8:Windows Installer 3.1"
"ProductCode" = "8:Microsoft.Windows.Installer.3.1"
}
}
} }
} }
"Release" "Release"
@@ -177,7 +196,7 @@
"InstallerBootstrapper" = "3:2" "InstallerBootstrapper" = "3:2"
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
{ {
"Enabled" = "11:TRUE" "Enabled" = "11:FALSE"
"PromptEnabled" = "11:TRUE" "PromptEnabled" = "11:TRUE"
"PrerequisitesLocation" = "2:1" "PrerequisitesLocation" = "2:1"
"Url" = "8:" "Url" = "8:"
@@ -217,7 +236,7 @@
{ {
"Name" = "8:.NET Framework" "Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]" "Message" = "8:[VSDNETMSG]"
"Version" = "8:3.5.30729" "FrameworkVersion" = "8:.NETFramework,Version=v2.0"
"AllowLaterVersions" = "11:FALSE" "AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617" "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617"
} }
@@ -225,14 +244,14 @@
} }
"File" "File"
{ {
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_404CDECAD44DEDE89F5968D20B9790D4" "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_23A6BB18C5C16459B31F4387E1637805"
{ {
"AssemblyRegister" = "3:1" "AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE" "AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:CUETools.CDImage, Version=2.1.4.0, Culture=neutral, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:CUETools.CDImage, Version=2.1.4.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_404CDECAD44DEDE89F5968D20B9790D4" "_23A6BB18C5C16459B31F4387E1637805"
{ {
"Name" = "8:CUETools.CDImage.dll" "Name" = "8:CUETools.CDImage.dll"
"Attributes" = "3:512" "Attributes" = "3:512"
@@ -256,14 +275,45 @@
"IsDependency" = "11:TRUE" "IsDependency" = "11:TRUE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5C38BA7F54E368532D5699479E787C04" "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_504F307A54097796FB92030AEBB7329B"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:Interop.HelperFunctionsLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_504F307A54097796FB92030AEBB7329B"
{
"Name" = "8:Interop.HelperFunctionsLib.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Interop.HelperFunctionsLib.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_B6AE380AE9784D55925E5A2F6CEC6447"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:TRUE"
"IsDependency" = "11:TRUE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7A5E0041DC75098C30D459114A6DEE81"
{ {
"AssemblyRegister" = "3:1" "AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE" "AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:CUETools.AccurateRip, Version=2.1.4.0, Culture=neutral, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:CUETools.AccurateRip, Version=2.1.4.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_5C38BA7F54E368532D5699479E787C04" "_7A5E0041DC75098C30D459114A6DEE81"
{ {
"Name" = "8:CUETools.AccurateRip.dll" "Name" = "8:CUETools.AccurateRip.dll"
"Attributes" = "3:512" "Attributes" = "3:512"
@@ -287,45 +337,14 @@
"IsDependency" = "11:TRUE" "IsDependency" = "11:TRUE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_88C1C00C7C570D8CCF5DFB2742F06623" "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_A387AADC261164D68ABC68DA3BD54FF7"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:CUETools.Codecs, Version=2.1.4.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_88C1C00C7C570D8CCF5DFB2742F06623"
{
"Name" = "8:CUETools.Codecs.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:CUETools.Codecs.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_B6AE380AE9784D55925E5A2F6CEC6447"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_C8D6D24D8A62DE5D9BD6EBE19184F81B"
{ {
"AssemblyRegister" = "3:1" "AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE" "AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:CUETools.Parity, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:CUETools.Parity, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_C8D6D24D8A62DE5D9BD6EBE19184F81B" "_A387AADC261164D68ABC68DA3BD54FF7"
{ {
"Name" = "8:CUETools.Parity.dll" "Name" = "8:CUETools.Parity.dll"
"Attributes" = "3:512" "Attributes" = "3:512"
@@ -349,37 +368,6 @@
"IsDependency" = "11:TRUE" "IsDependency" = "11:TRUE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_D773630141C71B97B8E286CAB5D6745D"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:CUETools.CTDB, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_D773630141C71B97B8E286CAB5D6745D"
{
"Name" = "8:CUETools.CTDB.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:CUETools.CTDB.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_B6AE380AE9784D55925E5A2F6CEC6447"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E985E1E2E343425AAC193B3EB3A5B7F0" "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E985E1E2E343425AAC193B3EB3A5B7F0"
{ {
"SourcePath" = "8:..\\CUETools\\Resources\\ctdbheader.bmp" "SourcePath" = "8:..\\CUETools\\Resources\\ctdbheader.bmp"
@@ -400,20 +388,20 @@
"IsDependency" = "11:FALSE" "IsDependency" = "11:FALSE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FCE5A5A259EDA6827D332455737A9470" "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EA17591A9F261678B36DFC7E72DFC398"
{ {
"AssemblyRegister" = "3:1" "AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE" "AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:Interop.HelperFunctionsLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:CUETools.Codecs, Version=2.1.4.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_FCE5A5A259EDA6827D332455737A9470" "_EA17591A9F261678B36DFC7E72DFC398"
{ {
"Name" = "8:Interop.HelperFunctionsLib.dll" "Name" = "8:CUETools.Codecs.dll"
"Attributes" = "3:512" "Attributes" = "3:512"
} }
} }
"SourcePath" = "8:Interop.HelperFunctionsLib.dll" "SourcePath" = "8:CUETools.Codecs.dll"
"TargetName" = "8:" "TargetName" = "8:"
"Tag" = "8:" "Tag" = "8:"
"Folder" = "8:_B6AE380AE9784D55925E5A2F6CEC6447" "Folder" = "8:_B6AE380AE9784D55925E5A2F6CEC6447"
@@ -427,7 +415,38 @@
"SharedLegacy" = "11:FALSE" "SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1" "PackageAs" = "3:1"
"Register" = "3:1" "Register" = "3:1"
"Exclude" = "11:TRUE" "Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE"
"IsolateTo" = "8:"
}
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EDC6E0710402166D3365BDE71ABA595A"
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:CUETools.CTDB, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_EDC6E0710402166D3365BDE71ABA595A"
{
"Name" = "8:CUETools.CTDB.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:CUETools.CTDB.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_B6AE380AE9784D55925E5A2F6CEC6447"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE" "IsDependency" = "11:TRUE"
"IsolateTo" = "8:" "IsolateTo" = "8:"
} }
@@ -488,14 +507,15 @@
{ {
"Name" = "8:Microsoft Visual Studio" "Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:EAC CTDB Plugin" "ProductName" = "8:EAC CTDB Plugin"
"ProductCode" = "8:{808BD9EB-533A-4405-8464-5AACC9B0C6DD}" "ProductCode" = "8:{E9DACE0D-CD24-469D-9B14-FCFD90866E10}"
"PackageCode" = "8:{6EE86F90-4EFF-43A1-B7FC-F25E1686A65F}" "PackageCode" = "8:{BDACE2AD-10B4-42EF-9F36-5A1FA7F964AD}"
"UpgradeCode" = "8:{E416086B-D9D3-424C-AAEB-397EC05ECF69}" "UpgradeCode" = "8:{E416086B-D9D3-424C-AAEB-397EC05ECF69}"
"AspNetVersion" = "8:4.0.30319.0"
"RestartWWWService" = "11:FALSE" "RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE" "RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE" "InstallAllUsers" = "11:TRUE"
"ProductVersion" = "8:2.1.3" "ProductVersion" = "8:2.1.4"
"Manufacturer" = "8:Grigory Chudov" "Manufacturer" = "8:Grigory Chudov"
"ARPHELPTELEPHONE" = "8:" "ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:http://www.cuetools.net" "ARPHELPLINK" = "8:http://www.cuetools.net"

View File

@@ -150,6 +150,7 @@
this.Padding = new System.Windows.Forms.Padding(10); this.Padding = new System.Windows.Forms.Padding(10);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "CTDB Metadata Lookup"; this.Text = "CTDB Metadata Lookup";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormMetadata_FormClosing);
this.Load += new System.EventHandler(this.FormMetadata_Load); this.Load += new System.EventHandler(this.FormMetadata_Load);
this.panel1.ResumeLayout(false); this.panel1.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);

View File

@@ -8,6 +8,7 @@ using System.Windows.Forms;
using CUETools.CTDB.EACPlugin.Properties; using CUETools.CTDB.EACPlugin.Properties;
using System.Net; using System.Net;
using System.IO; using System.IO;
using AudioDataPlugIn;
namespace CUETools.CTDB.EACPlugin namespace CUETools.CTDB.EACPlugin
{ {
@@ -25,6 +26,7 @@ namespace CUETools.CTDB.EACPlugin
this.cdinfo = cdinfo; this.cdinfo = cdinfo;
this.cover = cover; this.cover = cover;
this.InitializeComponent(); this.InitializeComponent();
this.Size = Options.MetadataWindowSize;
} }
public CTDBResponseMeta Meta public CTDBResponseMeta Meta
@@ -62,54 +64,37 @@ namespace CUETools.CTDB.EACPlugin
#endif #endif
this.ctdb.ContactDB(server, this.agent, null, false, false, this.ctdb.ContactDB(server, this.agent, null, false, false,
AudioDataPlugIn.Options.MetadataSearch); AudioDataPlugIn.Options.MetadataSearch);
foreach (var metadata in ctdb.Metadata) if (this.cdinfo)
{ {
backgroundWorker1.ReportProgress(0, metadata); foreach (var metadata in ctdb.Metadata)
{
backgroundWorker1.ReportProgress(0, metadata);
}
} }
var knownUrls = new List<string>(); var knownUrls = new List<string>();
foreach (var metadata in ctdb.Metadata) foreach (var metadata in ctdb.Metadata)
{ {
if (metadata.coverart == null || !this.cover) if (metadata.coverart == null || !this.cover)
continue; continue;
if (!this.cdinfo)
{
backgroundWorker1.ReportProgress(0, metadata);
}
foreach (var coverart in metadata.coverart) foreach (var coverart in metadata.coverart)
{ {
if (knownUrls.Contains(coverart.uri) || !coverart.primary) var uri = Options.CoversSearch == CTDBCoversSearch.Large ?
coverart.uri : coverart.uri150 ?? coverart.uri;
if (knownUrls.Contains(uri) || !coverart.primary)
continue; continue;
try var ms = new MemoryStream();
{ if (!this.ctdb.FetchFile(uri, ms))
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(coverart.uri); continue;
req.Method = "GET"; var img = new InternetImage();
//req.Proxy = proxy; img.URL = uri;
//req.UserAgent = this.userAgent; img.Data = ms.ToArray();
//req.Timeout = connectTimeout; img.Image = new Bitmap(ms);
//req.ReadWriteTimeout = socketTimeout; knownUrls.Add(uri);
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) backgroundWorker1.ReportProgress(0, img);
{
if (resp.StatusCode != HttpStatusCode.OK)
continue;
using (var responseStream = resp.GetResponseStream())
using (var reader = new BinaryReader(responseStream))
{
MemoryStream ms = new MemoryStream();
var buf = new byte[4096];
do
{
int len = responseStream.Read(buf, 0, buf.Length);
if (len <= 0) break;
ms.Write(buf, 0, len);
} while (true);
var img = new InternetImage();
img.URL = coverart.uri;
img.Data = ms.ToArray();
img.Image = new Bitmap(ms);
knownUrls.Add(coverart.uri);
backgroundWorker1.ReportProgress(0, img);
}
}
}
catch
{
}
} }
} }
} }
@@ -214,21 +199,32 @@ namespace CUETools.CTDB.EACPlugin
this.progressBar1.Visible = false; this.progressBar1.Visible = false;
this.button1.Visible = true; this.button1.Visible = true;
this.button2.Visible = true; this.button2.Visible = true;
if (listView1.Items.Count == 0) if (listView1.Items.Count == 0 && flowLayoutPanel1.Controls.Count == 0)
{ {
this.DialogResult = DialogResult.Cancel; this.DialogResult = DialogResult.Cancel;
return; return;
} }
listView1.Items[0].Selected = true; if (listView1.Items.Count > 0)
if (listView1.Items.Count == 1) listView1.Items[0].Selected = true;
if (flowLayoutPanel1.Controls.Count > 0 && m_currently_selected == null)
{
m_currently_selected = flowLayoutPanel1.Controls[0] as ImagePreview;
m_currently_selected.Selected = true;
}
if ((!this.cdinfo || listView1.Items.Count == 1) && (!this.cover || flowLayoutPanel1.Controls.Count == 1))
{
this.DialogResult = DialogResult.OK; this.DialogResult = DialogResult.OK;
}
} }
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{ {
var ht = listView1.HitTest(e.Location); if (this.cdinfo)
if (ht.Item != null) {
this.DialogResult = DialogResult.OK; var ht = listView1.HitTest(e.Location);
if (ht.Item != null)
this.DialogResult = DialogResult.OK;
}
} }
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
@@ -272,5 +268,10 @@ namespace CUETools.CTDB.EACPlugin
this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
} }
} }
private void FormMetadata_FormClosing(object sender, FormClosingEventArgs e)
{
Options.MetadataWindowSize = this.Size;
}
} }
} }

View File

@@ -6,6 +6,7 @@ using System.Drawing;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using CUETools.CTDB.EACPlugin.Properties; using CUETools.CTDB.EACPlugin.Properties;
using System.IO;
namespace CUETools.CTDB.EACPlugin namespace CUETools.CTDB.EACPlugin
{ {
@@ -14,6 +15,7 @@ namespace CUETools.CTDB.EACPlugin
private CUEToolsDB ctdb; private CUEToolsDB ctdb;
private int confidence, quality; private int confidence, quality;
private string artist, title, agent, drivename; private string artist, title, agent, drivename;
private CTDBResponse resp;
public FormSubmitParity(CUEToolsDB ctdb, string agent, string drivename, int confidence, int quality, string artist, string title) public FormSubmitParity(CUEToolsDB ctdb, string agent, string drivename, int confidence, int quality, string artist, string title)
{ {
@@ -41,19 +43,41 @@ namespace CUETools.CTDB.EACPlugin
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{ {
this.ctdb.UploadHelper.onProgress += UploadProgress; this.ctdb.UploadHelper.onProgress += UploadProgress;
if (resp == null)
{
#if DEBUG #if DEBUG
string server = "hq.cuetools.net"; string server = "hq.cuetools.net";
#else #else
string server = null; string server = null;
#endif #endif
this.ctdb.ContactDB(server, this.agent, this.drivename, true, true, CTDBMetadataSearch.None); this.ctdb.ContactDB(server, this.agent, this.drivename, true, true, CTDBMetadataSearch.None);
this.ctdb.DoVerify(); this.ctdb.DoVerify();
this.ctdb.Submit(this.confidence, this.quality, this.artist, this.title, null); resp = this.ctdb.Submit(this.confidence, this.quality, this.artist, this.title, null);
} else
{
var url = resp.updateurl;
resp = null;
var temp = Path.GetTempPath() + Path.GetFileName(url.Substring(url.LastIndexOf('/') + 1));
bool ok = false;
using (var stream = new FileStream(temp, FileMode.Create))
ok = this.ctdb.FetchFile(url, stream);
if (ok)
System.Diagnostics.Process.Start(temp);
}
this.ctdb.UploadHelper.onProgress -= UploadProgress; this.ctdb.UploadHelper.onProgress -= UploadProgress;
} }
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{ {
if (resp != null && resp.updateurl != null)
{
DialogResult mb = MessageBox.Show(this, (resp.updatemsg ?? "") + " Do you wish to download and install it?", "An updated version of CTDB plugin is available", MessageBoxButtons.OKCancel);
if (mb == DialogResult.OK)
{
this.backgroundWorker1.RunWorkerAsync();
return;
}
}
this.DialogResult = DialogResult.OK; this.DialogResult = DialogResult.OK;
} }

View File

@@ -12,6 +12,7 @@ using CUETools.Codecs;
using CUETools.CTDB; using CUETools.CTDB;
using CUETools.CTDB.EACPlugin.Properties; using CUETools.CTDB.EACPlugin.Properties;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using AudioDataPlugIn;
namespace MetadataPlugIn namespace MetadataPlugIn
{ {
@@ -24,6 +25,9 @@ namespace MetadataPlugIn
{ {
public bool GetCDInformation(CCDMetadata data, bool cdinfo, bool cover, bool lyrics) public bool GetCDInformation(CCDMetadata data, bool cdinfo, bool cover, bool lyrics)
{ {
if (Options.CoversSearch == CTDBCoversSearch.None)
cover = false;
if (!cdinfo && !cover) if (!cdinfo && !cover)
return false; return false;

View File

@@ -29,161 +29,202 @@ namespace AudioDataPlugIn
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel(); this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.radioButtonMBExtensive = new System.Windows.Forms.RadioButton(); this.radioButtonMBExtensive = new System.Windows.Forms.RadioButton();
this.radioButtonMBFast = new System.Windows.Forms.RadioButton(); this.radioButtonMBFast = new System.Windows.Forms.RadioButton();
this.radioButtonMBDefault = new System.Windows.Forms.RadioButton(); this.radioButtonMBDefault = new System.Windows.Forms.RadioButton();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
this.buttonOk = new System.Windows.Forms.Button(); this.buttonOk = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.groupBox2 = new System.Windows.Forms.GroupBox();
this.groupBox1.SuspendLayout(); this.radioButtonCoversNone = new System.Windows.Forms.RadioButton();
this.SuspendLayout(); this.radioButtonCoversSmall = new System.Windows.Forms.RadioButton();
// this.radioButtonCoversLarge = new System.Windows.Forms.RadioButton();
// label1 ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
// this.groupBox1.SuspendLayout();
this.label1.AutoSize = true; this.groupBox2.SuspendLayout();
this.label1.Location = new System.Drawing.Point(127, 16); this.SuspendLayout();
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); //
this.label1.Name = "label1"; // label1
this.label1.Size = new System.Drawing.Size(182, 17); //
this.label1.TabIndex = 0; this.label1.AutoSize = true;
this.label1.Text = "CUETools DB Plugin V2.1.4"; this.label1.Location = new System.Drawing.Point(95, 13);
// this.label1.Name = "label1";
// label2 this.label1.Size = new System.Drawing.Size(139, 13);
// this.label1.TabIndex = 0;
this.label2.Location = new System.Drawing.Point(127, 82); this.label1.Text = "CUETools DB Plugin V2.1.4";
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); //
this.label2.Name = "label2"; // label2
this.label2.Size = new System.Drawing.Size(307, 42); //
this.label2.TabIndex = 1; this.label2.Location = new System.Drawing.Point(95, 67);
this.label2.Text = "Copyright (c) 2011-12 Gregory S. Chudov"; this.label2.Name = "label2";
// this.label2.Size = new System.Drawing.Size(230, 34);
// linkLabel1 this.label2.TabIndex = 1;
// this.label2.Text = "Copyright (c) 2011-12 Gregory S. Chudov";
this.linkLabel1.AutoSize = true; //
this.linkLabel1.Location = new System.Drawing.Point(127, 44); // linkLabel1
this.linkLabel1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); //
this.linkLabel1.Name = "linkLabel1"; this.linkLabel1.AutoSize = true;
this.linkLabel1.Size = new System.Drawing.Size(209, 17); this.linkLabel1.Location = new System.Drawing.Point(95, 36);
this.linkLabel1.TabIndex = 3; this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true; this.linkLabel1.Size = new System.Drawing.Size(164, 13);
this.linkLabel1.Text = "http://db.cuetools.net/about.php"; this.linkLabel1.TabIndex = 3;
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); this.linkLabel1.TabStop = true;
// this.linkLabel1.Text = "http://db.cuetools.net/about.php";
// pictureBox1 this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
// //
this.pictureBox1.Image = global::CUETools.CTDB.EACPlugin.Properties.Resources.ctdb64; // pictureBox1
this.pictureBox1.Location = new System.Drawing.Point(17, 16); //
this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pictureBox1.Image = global::CUETools.CTDB.EACPlugin.Properties.Resources.ctdb64;
this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Location = new System.Drawing.Point(13, 13);
this.pictureBox1.Size = new System.Drawing.Size(85, 79); this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabIndex = 4; this.pictureBox1.Size = new System.Drawing.Size(64, 64);
this.pictureBox1.TabStop = false; this.pictureBox1.TabIndex = 4;
// this.pictureBox1.TabStop = false;
// radioButtonMBExtensive //
// // radioButtonMBExtensive
this.radioButtonMBExtensive.AutoSize = true; //
this.radioButtonMBExtensive.Location = new System.Drawing.Point(8, 20); this.radioButtonMBExtensive.AutoSize = true;
this.radioButtonMBExtensive.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radioButtonMBExtensive.Location = new System.Drawing.Point(6, 16);
this.radioButtonMBExtensive.Name = "radioButtonMBExtensive"; this.radioButtonMBExtensive.Name = "radioButtonMBExtensive";
this.radioButtonMBExtensive.Size = new System.Drawing.Size(89, 21); this.radioButtonMBExtensive.Size = new System.Drawing.Size(71, 17);
this.radioButtonMBExtensive.TabIndex = 6; this.radioButtonMBExtensive.TabIndex = 6;
this.radioButtonMBExtensive.TabStop = true; this.radioButtonMBExtensive.TabStop = true;
this.radioButtonMBExtensive.Text = "Extensive"; this.radioButtonMBExtensive.Text = "Extensive";
this.radioButtonMBExtensive.UseVisualStyleBackColor = true; this.radioButtonMBExtensive.UseVisualStyleBackColor = true;
// //
// radioButtonMBFast // radioButtonMBFast
// //
this.radioButtonMBFast.AutoSize = true; this.radioButtonMBFast.AutoSize = true;
this.radioButtonMBFast.Location = new System.Drawing.Point(8, 62); this.radioButtonMBFast.Location = new System.Drawing.Point(6, 50);
this.radioButtonMBFast.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radioButtonMBFast.Name = "radioButtonMBFast";
this.radioButtonMBFast.Name = "radioButtonMBFast"; this.radioButtonMBFast.Size = new System.Drawing.Size(45, 17);
this.radioButtonMBFast.Size = new System.Drawing.Size(56, 21); this.radioButtonMBFast.TabIndex = 7;
this.radioButtonMBFast.TabIndex = 7; this.radioButtonMBFast.TabStop = true;
this.radioButtonMBFast.TabStop = true; this.radioButtonMBFast.Text = "Fast";
this.radioButtonMBFast.Text = "Fast"; this.radioButtonMBFast.UseVisualStyleBackColor = true;
this.radioButtonMBFast.UseVisualStyleBackColor = true; //
// // radioButtonMBDefault
// radioButtonMBDefault //
// this.radioButtonMBDefault.AutoSize = true;
this.radioButtonMBDefault.AutoSize = true; this.radioButtonMBDefault.Location = new System.Drawing.Point(6, 33);
this.radioButtonMBDefault.Location = new System.Drawing.Point(8, 41); this.radioButtonMBDefault.Name = "radioButtonMBDefault";
this.radioButtonMBDefault.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radioButtonMBDefault.Size = new System.Drawing.Size(59, 17);
this.radioButtonMBDefault.Name = "radioButtonMBDefault"; this.radioButtonMBDefault.TabIndex = 8;
this.radioButtonMBDefault.Size = new System.Drawing.Size(74, 21); this.radioButtonMBDefault.TabStop = true;
this.radioButtonMBDefault.TabIndex = 8; this.radioButtonMBDefault.Text = "Default";
this.radioButtonMBDefault.TabStop = true; this.radioButtonMBDefault.UseVisualStyleBackColor = true;
this.radioButtonMBDefault.Text = "Default"; //
this.radioButtonMBDefault.UseVisualStyleBackColor = true; // groupBox1
// //
// groupBox1 this.groupBox1.Controls.Add(this.radioButtonMBFast);
// this.groupBox1.Controls.Add(this.radioButtonMBDefault);
this.groupBox1.Controls.Add(this.radioButtonMBDefault); this.groupBox1.Controls.Add(this.radioButtonMBExtensive);
this.groupBox1.Controls.Add(this.radioButtonMBExtensive); this.groupBox1.Location = new System.Drawing.Point(12, 127);
this.groupBox1.Controls.Add(this.radioButtonMBFast); this.groupBox1.Name = "groupBox1";
this.groupBox1.Location = new System.Drawing.Point(16, 156); this.groupBox1.Size = new System.Drawing.Size(136, 87);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.groupBox1.TabIndex = 15;
this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false;
this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4); this.groupBox1.Text = "Metadata search mode:";
this.groupBox1.Size = new System.Drawing.Size(191, 107); //
this.groupBox1.TabIndex = 15; // buttonOk
this.groupBox1.TabStop = false; //
this.groupBox1.Text = "Metadata search mode:"; this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK;
// this.buttonOk.Location = new System.Drawing.Point(303, 189);
// buttonOk this.buttonOk.Name = "buttonOk";
// this.buttonOk.Size = new System.Drawing.Size(75, 25);
this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK; this.buttonOk.TabIndex = 17;
this.buttonOk.Location = new System.Drawing.Point(404, 233); this.buttonOk.Text = "OK";
this.buttonOk.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.buttonOk.UseVisualStyleBackColor = true;
this.buttonOk.Name = "buttonOk"; this.buttonOk.Click += new System.EventHandler(this.button2_Click);
this.buttonOk.Size = new System.Drawing.Size(100, 31); //
this.buttonOk.TabIndex = 17; // buttonCancel
this.buttonOk.Text = "OK"; //
this.buttonOk.UseVisualStyleBackColor = true; this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonOk.Click += new System.EventHandler(this.button2_Click); this.buttonCancel.Location = new System.Drawing.Point(303, 158);
// this.buttonCancel.Name = "buttonCancel";
// buttonCancel this.buttonCancel.Size = new System.Drawing.Size(75, 25);
// this.buttonCancel.TabIndex = 19;
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.buttonCancel.Text = "Cancel";
this.buttonCancel.Location = new System.Drawing.Point(404, 194); this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); //
this.buttonCancel.Name = "buttonCancel"; // groupBox2
this.buttonCancel.Size = new System.Drawing.Size(100, 31); //
this.buttonCancel.TabIndex = 19; this.groupBox2.Controls.Add(this.radioButtonCoversNone);
this.buttonCancel.Text = "Cancel"; this.groupBox2.Controls.Add(this.radioButtonCoversSmall);
this.buttonCancel.UseVisualStyleBackColor = true; this.groupBox2.Controls.Add(this.radioButtonCoversLarge);
// this.groupBox2.Location = new System.Drawing.Point(154, 127);
// Options this.groupBox2.Name = "groupBox2";
// this.groupBox2.Size = new System.Drawing.Size(136, 87);
this.AcceptButton = this.buttonOk; this.groupBox2.TabIndex = 16;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.groupBox2.TabStop = false;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.groupBox2.Text = "Covers search mode:";
this.CancelButton = this.buttonCancel; //
this.ClientSize = new System.Drawing.Size(520, 279); // radioButtonCoversNone
this.Controls.Add(this.buttonCancel); //
this.Controls.Add(this.buttonOk); this.radioButtonCoversNone.AutoSize = true;
this.Controls.Add(this.groupBox1); this.radioButtonCoversNone.Location = new System.Drawing.Point(6, 50);
this.Controls.Add(this.pictureBox1); this.radioButtonCoversNone.Name = "radioButtonCoversNone";
this.Controls.Add(this.linkLabel1); this.radioButtonCoversNone.Size = new System.Drawing.Size(51, 17);
this.Controls.Add(this.label2); this.radioButtonCoversNone.TabIndex = 7;
this.Controls.Add(this.label1); this.radioButtonCoversNone.TabStop = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.radioButtonCoversNone.Text = "None";
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.radioButtonCoversNone.UseVisualStyleBackColor = true;
this.MaximizeBox = false; //
this.MinimizeBox = false; // radioButtonCoversSmall
this.Name = "Options"; //
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.radioButtonCoversSmall.AutoSize = true;
this.Text = "Options"; this.radioButtonCoversSmall.Location = new System.Drawing.Point(6, 33);
this.Load += new System.EventHandler(this.Options_Load); this.radioButtonCoversSmall.Name = "radioButtonCoversSmall";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.radioButtonCoversSmall.Size = new System.Drawing.Size(50, 17);
this.groupBox1.ResumeLayout(false); this.radioButtonCoversSmall.TabIndex = 8;
this.groupBox1.PerformLayout(); this.radioButtonCoversSmall.TabStop = true;
this.ResumeLayout(false); this.radioButtonCoversSmall.Text = "Small";
this.PerformLayout(); this.radioButtonCoversSmall.UseVisualStyleBackColor = true;
//
// radioButtonCoversLarge
//
this.radioButtonCoversLarge.AutoSize = true;
this.radioButtonCoversLarge.Location = new System.Drawing.Point(6, 16);
this.radioButtonCoversLarge.Name = "radioButtonCoversLarge";
this.radioButtonCoversLarge.Size = new System.Drawing.Size(52, 17);
this.radioButtonCoversLarge.TabIndex = 6;
this.radioButtonCoversLarge.TabStop = true;
this.radioButtonCoversLarge.Text = "Large";
this.radioButtonCoversLarge.UseVisualStyleBackColor = true;
//
// Options
//
this.AcceptButton = this.buttonOk;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.buttonCancel;
this.ClientSize = new System.Drawing.Size(390, 227);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOk);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.linkLabel1);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Options";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Options";
this.Load += new System.EventHandler(this.Options_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
} }
@@ -199,5 +240,9 @@ namespace AudioDataPlugIn
private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button buttonOk; private System.Windows.Forms.Button buttonOk;
private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.RadioButton radioButtonCoversNone;
private System.Windows.Forms.RadioButton radioButtonCoversSmall;
private System.Windows.Forms.RadioButton radioButtonCoversLarge;
} }
} }

View File

@@ -8,12 +8,21 @@ using System.Windows.Forms;
using CUETools.CTDB.EACPlugin.Properties; using CUETools.CTDB.EACPlugin.Properties;
using CUETools.CTDB; using CUETools.CTDB;
using Microsoft.Win32; using Microsoft.Win32;
using System.Runtime.Serialization.Formatters.Binary;
namespace AudioDataPlugIn namespace AudioDataPlugIn
{ {
public enum CTDBCoversSearch
{
Large,
Small,
None
}
public partial class Options : Form public partial class Options : Form
{ {
private static CTDBMetadataSearch? metadataSearch = null; private static CTDBMetadataSearch? metadataSearch = null;
private static CTDBCoversSearch? coversSearch = null;
private static string optionsKey = @"SOFTWARE\CUETools\EACPugin"; private static string optionsKey = @"SOFTWARE\CUETools\EACPugin";
public static CTDBMetadataSearch MetadataSearch public static CTDBMetadataSearch MetadataSearch
{ {
@@ -26,12 +35,10 @@ namespace AudioDataPlugIn
using (var key = Registry.CurrentUser.OpenSubKey(optionsKey, false)) using (var key = Registry.CurrentUser.OpenSubKey(optionsKey, false))
{ {
var val = key.GetValue("MetadataSearch") as string; var val = key.GetValue("MetadataSearch") as string;
if (val == "Default") metadataSearch = CTDBMetadataSearch.Default; metadataSearch = (CTDBMetadataSearch)Enum.Parse(typeof(CTDBMetadataSearch), val);
if (val == "Fast") metadataSearch = CTDBMetadataSearch.Fast;
if (val == "Extensive") metadataSearch = CTDBMetadataSearch.Extensive;
} }
} }
catch (Exception ex) catch (Exception)
{ {
} }
} }
@@ -50,6 +57,68 @@ namespace AudioDataPlugIn
} }
} }
public static CTDBCoversSearch CoversSearch
{
get
{
if (!coversSearch.HasValue)
{
try
{
using (var key = Registry.CurrentUser.OpenSubKey(optionsKey, false))
{
var val = key.GetValue("CoversSearch") as string;
coversSearch = (CTDBCoversSearch)Enum.Parse(typeof(CTDBCoversSearch), val);
}
}
catch (Exception)
{
}
}
return coversSearch ?? CTDBCoversSearch.Small;
}
set
{
using (var key = Registry.CurrentUser.CreateSubKey(optionsKey))
{
key.SetValue("CoversSearch", value.ToString());
}
coversSearch = value;
}
}
public static Size MetadataWindowSize
{
get
{
try
{
using (var key = Registry.CurrentUser.OpenSubKey(optionsKey, false))
{
var val = key.GetValue("MetadataWindowSize") as string;
return (Size)TypeDescriptor.GetConverter(typeof(Size)).ConvertFromInvariantString(val);
}
}
catch (Exception)
{
}
return new Size();
}
set
{
using (var key = Registry.CurrentUser.CreateSubKey(optionsKey))
{
var val = TypeDescriptor.GetConverter(value.GetType()).ConvertToInvariantString(value);
key.SetValue("MetadataWindowSize", val);
}
}
}
public Options() public Options()
{ {
this.InitializeComponent(); this.InitializeComponent();
@@ -66,6 +135,9 @@ namespace AudioDataPlugIn
this.radioButtonMBExtensive.Checked = MetadataSearch == CTDBMetadataSearch.Extensive; this.radioButtonMBExtensive.Checked = MetadataSearch == CTDBMetadataSearch.Extensive;
this.radioButtonMBDefault.Checked = MetadataSearch == CTDBMetadataSearch.Default; this.radioButtonMBDefault.Checked = MetadataSearch == CTDBMetadataSearch.Default;
this.radioButtonMBFast.Checked = MetadataSearch == CTDBMetadataSearch.Fast; this.radioButtonMBFast.Checked = MetadataSearch == CTDBMetadataSearch.Fast;
this.radioButtonCoversLarge.Checked = CoversSearch == CTDBCoversSearch.Large;
this.radioButtonCoversSmall.Checked = CoversSearch == CTDBCoversSearch.Small;
this.radioButtonCoversNone.Checked = CoversSearch == CTDBCoversSearch.None;
} }
private void button2_Click(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e)
@@ -74,6 +146,9 @@ namespace AudioDataPlugIn
: this.radioButtonMBDefault.Checked ? CTDBMetadataSearch.Default : this.radioButtonMBDefault.Checked ? CTDBMetadataSearch.Default
: this.radioButtonMBFast.Checked ? CTDBMetadataSearch.Fast : this.radioButtonMBFast.Checked ? CTDBMetadataSearch.Fast
: CTDBMetadataSearch.None; : CTDBMetadataSearch.None;
} Options.CoversSearch = this.radioButtonCoversLarge.Checked ? CTDBCoversSearch.Large
: this.radioButtonCoversSmall.Checked ? CTDBCoversSearch.Small
: CTDBCoversSearch.None;
}
} }
} }

View File

@@ -7,8 +7,33 @@ namespace CUETools.CTDB
[XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")] [XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")]
public class CTDBResponse public class CTDBResponse
{ {
[XmlIgnore]
public bool ParityNeeded
{
get
{
return this.status == "parity needed";
}
}
[XmlAttribute]
public string status { get; set; }
[XmlAttribute]
public string updateurl { get; set; }
[XmlAttribute]
public string updatemsg { get; set; }
[XmlAttribute]
public string message { get; set; }
[XmlAttribute]
public int npar { get; set; }
[XmlElement] [XmlElement]
public CTDBResponseEntry[] entry; public CTDBResponseEntry[] entry;
[XmlElement] [XmlElement]
public CTDBResponseMeta[] metadata; public CTDBResponseMeta[] metadata;
} }

View File

@@ -19,6 +19,12 @@ namespace CUETools.CTDB
[XmlAttribute] [XmlAttribute]
public string status { get; set; } public string status { get; set; }
[XmlAttribute]
public string updateurl { get; set; }
[XmlAttribute]
public string updatemsg { get; set; }
[XmlAttribute] [XmlAttribute]
public string message { get; set; } public string message { get; set; }

View File

@@ -60,7 +60,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="CTDBResponseMetaImage.cs" /> <Compile Include="CTDBResponseMetaImage.cs" />
<Compile Include="CTDBSubmitResponse.cs" />
<Compile Include="CTDBMetadataSearch.cs" /> <Compile Include="CTDBMetadataSearch.cs" />
<Compile Include="CTDBResponse.cs" /> <Compile Include="CTDBResponse.cs" />
<Compile Include="CTDBResponseEntry.cs" /> <Compile Include="CTDBResponseEntry.cs" />

View File

@@ -87,6 +87,7 @@ namespace CUETools.CTDB
{ {
this.QueryExceptionStatus = WebExceptionStatus.ProtocolError; this.QueryExceptionStatus = WebExceptionStatus.ProtocolError;
this.QueryResponseStatus = resp.StatusCode; this.QueryResponseStatus = resp.StatusCode;
this.QueryExceptionMessage = resp.StatusDescription;
if (this.QueryResponseStatus == HttpStatusCode.OK) if (this.QueryResponseStatus == HttpStatusCode.OK)
{ {
XmlSerializer serializer = new XmlSerializer(typeof(CTDBResponse)); XmlSerializer serializer = new XmlSerializer(typeof(CTDBResponse));
@@ -117,8 +118,11 @@ namespace CUETools.CTDB
{ {
this.QueryExceptionStatus = ex.Status; this.QueryExceptionStatus = ex.Status;
this.QueryExceptionMessage = ex.Message; this.QueryExceptionMessage = ex.Message;
if (this.QueryExceptionStatus == WebExceptionStatus.ProtocolError) if (this.QueryExceptionStatus == WebExceptionStatus.ProtocolError)
this.QueryResponseStatus = (ex.Response as HttpWebResponse).StatusCode; {
this.QueryResponseStatus = (ex.Response as HttpWebResponse).StatusCode;
this.QueryExceptionMessage = (ex.Response as HttpWebResponse).StatusDescription;
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -131,6 +135,50 @@ namespace CUETools.CTDB
} }
} }
public bool FetchFile(string url, Stream output)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.Proxy = proxy;
req.UserAgent = this.userAgent;
req.Timeout = connectTimeout;
req.ReadWriteTimeout = socketTimeout;
req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
currentReq = req;
try
{
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
{
if (resp.StatusCode != HttpStatusCode.OK)
return false;
using (Stream responseStream = resp.GetResponseStream())
{
var buf = new byte[4096];
int pos = 0;
do
{
if (uploadHelper.onProgress != null)
uploadHelper.onProgress(url, new UploadProgressEventArgs(req.RequestUri.AbsoluteUri, ((double)pos) / resp.ContentLength));
int len = responseStream.Read(buf, 0, buf.Length);
if (len <= 0) break;
output.Write(buf, 0, len);
pos += len;
} while (true);
return true;
}
}
}
catch (Exception)
{
}
finally
{
currentReq = null;
}
return false;
}
public ushort[,] FetchDB(DBEntry entry, int npar, ushort[,] syn) public ushort[,] FetchDB(DBEntry entry, int npar, ushort[,] syn)
{ {
string url = entry.hasParity[0] == '/' ? urlbase + entry.hasParity : entry.hasParity; string url = entry.hasParity[0] == '/' ? urlbase + entry.hasParity : entry.hasParity;
@@ -230,12 +278,12 @@ namespace CUETools.CTDB
return uuidInfo; return uuidInfo;
} }
public string Submit(int confidence, int quality, string artist, string title, string barcode) public CTDBResponse Submit(int confidence, int quality, string artist, string title, string barcode)
{ {
if (this.QueryExceptionStatus != WebExceptionStatus.Success && if (this.QueryExceptionStatus != WebExceptionStatus.Success &&
(this.QueryExceptionStatus != WebExceptionStatus.ProtocolError || this.QueryResponseStatus != HttpStatusCode.NotFound)) (this.QueryExceptionStatus != WebExceptionStatus.ProtocolError || this.QueryResponseStatus != HttpStatusCode.NotFound))
return this.DBStatus; return null;
CTDBSubmitResponse resp = null; CTDBResponse resp = null;
subResult = ""; subResult = "";
var confirms = this.MatchingEntries; var confirms = this.MatchingEntries;
if (confirms.Count > 0) if (confirms.Count > 0)
@@ -248,16 +296,16 @@ namespace CUETools.CTDB
resp = DoSubmit(confidence, quality, artist, title, barcode, true, confirm, Math.Min(AccurateRipVerify.maxNpar, resp.npar)); resp = DoSubmit(confidence, quality, artist, title, barcode, true, confirm, Math.Min(AccurateRipVerify.maxNpar, resp.npar));
subResult = subResult + (subResult == "" ? "" : ", ") + resp.message; subResult = subResult + (subResult == "" ? "" : ", ") + resp.message;
} }
return subResult; return resp;
} }
resp = DoSubmit(confidence, quality, artist, title, barcode, false, null, AccurateRipVerify.maxNpar); resp = DoSubmit(confidence, quality, artist, title, barcode, false, null, AccurateRipVerify.maxNpar);
if (resp.ParityNeeded) if (resp.ParityNeeded)
resp = DoSubmit(confidence, quality, artist, title, barcode, true, null, Math.Min(AccurateRipVerify.maxNpar, resp.npar)); resp = DoSubmit(confidence, quality, artist, title, barcode, true, null, Math.Min(AccurateRipVerify.maxNpar, resp.npar));
subResult = resp.message; subResult = resp.message;
return subResult; return resp;
} }
protected CTDBSubmitResponse DoSubmit(int confidence, int quality, string artist, string title, string barcode, bool upload, DBEntry confirm, int npar) protected CTDBResponse DoSubmit(int confidence, int quality, string artist, string title, string barcode, bool upload, DBEntry confirm, int npar)
{ {
var files = new List<UploadFile>(); var files = new List<UploadFile>();
long maxId = 0; long maxId = 0;
@@ -330,23 +378,23 @@ namespace CUETools.CTDB
{ {
using (Stream s = resp.GetResponseStream()) using (Stream s = resp.GetResponseStream())
{ {
var serializer = new XmlSerializer(typeof(CTDBSubmitResponse)); var serializer = new XmlSerializer(typeof(CTDBResponse));
return serializer.Deserialize(s) as CTDBSubmitResponse; return serializer.Deserialize(s) as CTDBResponse;
} }
} }
else else
{ {
return new CTDBSubmitResponse() { status = "database access error", message = resp.StatusCode.ToString() }; return new CTDBResponse() { status = "database access error", message = resp.StatusCode.ToString() };
} }
} }
} }
catch (WebException ex) catch (WebException ex)
{ {
return new CTDBSubmitResponse() { status = "database access error", message = ex.Message ?? ex.Status.ToString() }; return new CTDBResponse() { status = "database access error", message = ex.Message ?? ex.Status.ToString() };
} }
catch (Exception ex) catch (Exception ex)
{ {
return new CTDBSubmitResponse() { status = "database access error", message = ex.Message }; return new CTDBResponse() { status = "database access error", message = ex.Message };
} }
finally finally
{ {
@@ -462,7 +510,7 @@ namespace CUETools.CTDB
{ {
return QueryExceptionStatus == WebExceptionStatus.Success ? null : return QueryExceptionStatus == WebExceptionStatus.Success ? null :
QueryExceptionStatus != WebExceptionStatus.ProtocolError ? ("database access error: " + (QueryExceptionMessage ?? QueryExceptionStatus.ToString())) : QueryExceptionStatus != WebExceptionStatus.ProtocolError ? ("database access error: " + (QueryExceptionMessage ?? QueryExceptionStatus.ToString())) :
QueryResponseStatus != HttpStatusCode.NotFound ? "database access error: " + QueryResponseStatus.ToString() : QueryResponseStatus != HttpStatusCode.NotFound ? "database access error: " + (QueryExceptionMessage ?? QueryResponseStatus.ToString()) :
"disk not present in database"; "disk not present in database";
} }
} }