Changeset 2478


Ignore:
Timestamp:
3/13/2012 6:16:56 AM (2 years ago)
Author:
lowjoel
Message:

Synchronise the Plugins Rewrite branch with trunk@r2442

Location:
branches/eraser6/pluginsRewrite
Files:
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/pluginsRewrite

  • branches/eraser6/pluginsRewrite/Eraser.Util/ExtensionMethods/IO.cs

    r2344 r2478  
    198198        public static string GetCompactPath(this FileSystemInfo info, int newWidth, Font drawFont) 
    199199        { 
    200             using (Control ctrl = new Control()) 
    201             { 
    202                 //First check if the source string is too long. 
    203                 Graphics g = ctrl.CreateGraphics(); 
    204                 string longPath = info.FullName; 
    205                 int width = g.MeasureString(longPath, drawFont).ToSize().Width; 
    206                 if (width <= newWidth) 
    207                     return longPath; 
    208  
    209                 //It is, shorten it. 
    210                 int aveCharWidth = width / longPath.Length; 
    211                 int charCount = newWidth / aveCharWidth; 
    212                 StringBuilder builder = new StringBuilder(); 
    213                 builder.Append(longPath); 
    214                 builder.EnsureCapacity(charCount); 
    215  
    216                 while (g.MeasureString(builder.ToString(), drawFont).Width > newWidth) 
    217                 { 
    218                     if (!NativeMethods.PathCompactPathEx(builder, longPath, 
    219                         (uint)charCount--, 0)) 
    220                     { 
    221                         return string.Empty; 
    222                     } 
    223                 } 
    224  
    225                 return builder.ToString(); 
    226             } 
     200            return PathUtil.GetCompactPath(info.FullName, newWidth, drawFont); 
    227201        } 
    228202 
  • branches/eraser6/pluginsRewrite/Eraser.Util/ExtensionMethods/PathUtil.cs

    r2344 r2478  
    2525using System.Text; 
    2626using System.IO; 
     27using System.Drawing; 
     28using System.Windows.Forms; 
    2729 
    2830namespace Eraser.Util.ExtensionMethods 
     
    110112            return true; 
    111113        } 
     114 
     115        /// <summary> 
     116        /// Compacts the file path, fitting in the given width. 
     117        /// </summary> 
     118        /// <param name="longPath">The path to compact.</param> 
     119        /// <param name="newWidth">The target width of the text.</param> 
     120        /// <param name="drawFont">The font used for drawing the text.</param> 
     121        /// <returns>The compacted file path.</returns> 
     122        public static string GetCompactPath(string longPath, int newWidth, Font drawFont) 
     123        { 
     124            using (Control ctrl = new Control()) 
     125            using (Graphics g = ctrl.CreateGraphics()) 
     126            { 
     127                //First check if the source string is too long. 
     128                int width = g.MeasureString(longPath, drawFont).ToSize().Width; 
     129                if (width <= newWidth) 
     130                    return longPath; 
     131 
     132                //It is, shorten it. 
     133                int aveCharWidth = width / longPath.Length; 
     134                int charCount = newWidth / aveCharWidth; 
     135                StringBuilder builder = new StringBuilder(); 
     136                builder.Append(longPath); 
     137                builder.EnsureCapacity(charCount); 
     138 
     139                while (g.MeasureString(builder.ToString(), drawFont).Width > newWidth) 
     140                { 
     141                    if (!NativeMethods.PathCompactPathEx(builder, longPath, 
     142                        (uint)charCount--, 0)) 
     143                    { 
     144                        return string.Empty; 
     145                    } 
     146                } 
     147 
     148                return builder.ToString(); 
     149            } 
     150        } 
     151 
     152        /// <summary> 
     153        /// Compacts the file path, fitting in the given width. 
     154        /// </summary> 
     155        /// <param name="longPath">The path to compact.</param> 
     156        /// <param name="newWidth">The target width of the text.</param> 
     157        /// <param name="control">The control on which this text is drawn. This is used 
     158        /// for font information.</param> 
     159        /// <returns>The compacted file path.</returns> 
     160        public static string GetCompactPath(string longPath, int newWidth, Control control) 
     161        { 
     162            return GetCompactPath(longPath, newWidth, control.Font); 
     163        } 
    112164    } 
    113165} 
  • branches/eraser6/pluginsRewrite/Eraser.Util/Localisation.cs

    r1802 r2478  
    111111                res = assemblies[assembly]; 
    112112 
    113             string result = res.GetString(Escape(text), Thread.CurrentThread.CurrentUICulture); 
     113            string result = null; 
     114            try 
     115            { 
     116                result = res.GetString(Escape(text), Thread.CurrentThread.CurrentUICulture); 
     117            } 
     118            catch (MissingManifestResourceException) 
     119            { 
     120            } 
    114121#if DEBUG 
    115122            return string.IsNullOrEmpty(result) ? text : Unescape(result); 
  • branches/eraser6/pluginsRewrite/Eraser.Util/NativeMethods/Kernel.cs

    r2208 r2478  
    2424using System.Text; 
    2525using System.Runtime.InteropServices; 
     26 
     27using System.Security.Permissions; 
     28using System.Runtime.ConstrainedExecution; 
    2629using Microsoft.Win32.SafeHandles; 
    2730 
     
    902905        /// call GetLastError.</returns> 
    903906        [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 
    904         public static extern SafeFileHandle FindFirstVolume(StringBuilder lpszVolumeName, 
    905             uint cchBufferLength); 
     907        public static extern SafeFindVolumeHandle FindFirstVolume( 
     908            StringBuilder lpszVolumeName, uint cchBufferLength); 
     909 
     910        /// <summary> 
     911        /// Implements a Safe handle for FindFirstVolume. 
     912        /// </summary> 
     913        [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode = true)] 
     914        [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)] 
     915        public class SafeFindVolumeHandle : SafeHandleMinusOneIsInvalid 
     916        { 
     917            internal SafeFindVolumeHandle() 
     918                : base(true) 
     919            { 
     920            } 
     921 
     922            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] 
     923            protected override bool ReleaseHandle() 
     924            { 
     925                return FindVolumeClose(handle); 
     926            } 
     927        } 
    906928 
    907929        /// <summary> 
     
    923945        [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 
    924946        [return: MarshalAs(UnmanagedType.Bool)] 
    925         public static extern bool FindNextVolume(SafeHandle hFindVolume, 
     947        public static extern bool FindNextVolume(SafeFindVolumeHandle hFindVolume, 
    926948            StringBuilder lpszVolumeName, uint cchBufferLength); 
    927949 
     
    938960        [DllImport("Kernel32.dll", SetLastError = true)] 
    939961        [return: MarshalAs(UnmanagedType.Bool)] 
    940         public static extern bool FindVolumeClose(SafeHandle hFindVolume); 
     962        internal static extern bool FindVolumeClose(IntPtr hFindVolume); 
    941963 
    942964        /// <summary> 
     
    959981        /// error information, call GetLastError.</returns> 
    960982        [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 
    961         public static extern SafeFileHandle FindFirstVolumeMountPoint( 
     983        public static extern SafeFindVolumeMountPointHandle FindFirstVolumeMountPoint( 
    962984            string lpszRootPathName, StringBuilder lpszVolumeMountPoint, 
    963985            uint cchBufferLength); 
     986 
     987        /// <summary> 
     988        /// Implements a Safe handle for FindFirstVolumeMountPoint. 
     989        /// </summary> 
     990        [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode = true)] 
     991        [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)] 
     992        public class SafeFindVolumeMountPointHandle : SafeHandleMinusOneIsInvalid 
     993        { 
     994            internal SafeFindVolumeMountPointHandle() 
     995                : base(true) 
     996            { 
     997            } 
     998 
     999            [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] 
     1000            protected override bool ReleaseHandle() 
     1001            { 
     1002                return FindVolumeMountPointClose(handle); 
     1003            } 
     1004        } 
    9641005 
    9651006        /// <summary> 
     
    9831024        [return: MarshalAs(UnmanagedType.Bool)] 
    9841025        public static extern bool FindNextVolumeMountPoint( 
    985             SafeHandle hFindVolumeMountPoint, StringBuilder lpszVolumeMountPoint, 
     1026            SafeFindVolumeMountPointHandle hFindVolumeMountPoint, StringBuilder lpszVolumeMountPoint, 
    9861027            uint cchBufferLength); 
    9871028 
     
    10001041        [DllImport("Kernel32.dll", SetLastError = true)] 
    10011042        [return: MarshalAs(UnmanagedType.Bool)] 
    1002         public static extern bool FindVolumeMountPointClose(SafeHandle hFindVolumeMountPoint); 
     1043        internal static extern bool FindVolumeMountPointClose(IntPtr hFindVolumeMountPoint); 
    10031044 
    10041045        /// <summary> 
  • branches/eraser6/pluginsRewrite/Eraser.Util/VolumeInfo.cs

    r2213 r2478  
    120120                List<VolumeInfo> result = new List<VolumeInfo>(); 
    121121                StringBuilder nextVolume = new StringBuilder(NativeMethods.LongPath * sizeof(char)); 
    122                 SafeHandle handle = NativeMethods.FindFirstVolume(nextVolume, NativeMethods.LongPath); 
    123                 if (handle.IsInvalid) 
    124                     return result; 
    125  
    126                 try 
    127                 { 
     122                using (NativeMethods.SafeFindVolumeHandle handle = NativeMethods.FindFirstVolume( 
     123                    nextVolume, NativeMethods.LongPath)) 
     124                { 
     125                    if (handle.IsInvalid) 
     126                        return result; 
     127 
    128128                    //Iterate over the volume mountpoints 
    129129                    do 
    130130                        result.Add(new VolumeInfo(nextVolume.ToString())); 
    131131                    while (NativeMethods.FindNextVolume(handle, nextVolume, NativeMethods.LongPath)); 
    132                 } 
    133                 finally 
    134                 { 
    135                     //Close the handle 
    136                     NativeMethods.FindVolumeClose(handle); 
    137                 } 
    138  
    139                 return result.AsReadOnly(); 
     132 
     133                    return result.AsReadOnly(); 
     134                } 
    140135            } 
    141136        } 
     
    527522                StringBuilder nextMountpoint = new StringBuilder(NativeMethods.LongPath * sizeof(char)); 
    528523 
    529                 SafeHandle handle = NativeMethods.FindFirstVolumeMountPoint(VolumeId, 
    530                     nextMountpoint, NativeMethods.LongPath); 
    531                 if (handle.IsInvalid) 
    532                     return result; 
    533  
    534                 try 
    535                 { 
     524                using (NativeMethods.SafeFindVolumeMountPointHandle handle = 
     525                    NativeMethods.FindFirstVolumeMountPoint(VolumeId, nextMountpoint, 
     526                    NativeMethods.LongPath)) 
     527                { 
     528                    if (handle.IsInvalid) 
     529                        return result; 
     530 
    536531                    //Iterate over the volume mountpoints 
    537532                    while (NativeMethods.FindNextVolumeMountPoint(handle, nextMountpoint, 
     
    540535                        result.Add(new VolumeInfo(nextMountpoint.ToString())); 
    541536                    } 
    542                 } 
    543                 finally 
    544                 { 
    545                     //Close the handle 
    546                     NativeMethods.FindVolumeMountPointClose(handle); 
    547                 } 
    548  
    549                 return result.AsReadOnly(); 
     537 
     538                    return result.AsReadOnly(); 
     539                } 
    550540            } 
    551541        } 
  • branches/eraser6/pluginsRewrite/Eraser/TaskPropertiesForm.cs

    r2452 r2478  
    210210        { 
    211211            IErasureTarget target = task.Targets[e.ItemIndex]; 
    212             FileInfo info = new FileInfo(target.ToString()); 
    213             e.Item = new ListViewItem(info.GetCompactPath(data.Columns[0].Width, data.Font)); 
     212            e.Item = new ListViewItem(PathUtil.GetCompactPath(target.UIText, 
     213                data.Columns[0].Width, data.Font)); 
    214214            e.Item.ToolTipText = target.ToString(); 
    215215 
  • branches/eraser6/pluginsRewrite/Installer/Bootstrapper/Bootstrapper.cpp

    r1675 r2478  
    116116    size_t CurrentOffset; 
    117117 
    118     static SRes LZMemStreamLook(void* object, void** buf, size_t* size) 
     118    static SRes LZMemStreamLook(void* object, const void** buf, size_t* size) 
    119119    { 
    120120        if (*size == 0) 
     
    238238        size_t convertedChars = 0; 
    239239        wchar_t fileName[MAX_PATH]; 
    240         mbstowcs_s(&convertedChars, fileName, file->Name, sizeof(fileName) / sizeof(fileName[0])); 
     240        SzArEx_GetFileNameUtf16(&db, i, reinterpret_cast<UInt16*>(fileName)); 
    241241         
    242242        //Split the path to get the file name only. 
     
    259259        while (result == SZ_OK && destFileSize) 
    260260        { 
    261             result = SzAr_Extract(&db, &stream.InStream, i, &blockIndex, 
     261            result = SzArEx_Extract(&db, &stream.InStream, i, &blockIndex, 
    262262                &outBuffer, &outBufferSize, &offset, &processedSize, &allocImp, 
    263263                &allocTempImp); 
     
    279279bool HasNetFramework() 
    280280{ 
    281     const std::wstring versionKey(L"v3.5"); 
     281    const std::wstring versionKey(L"v4"); 
    282282 
    283283    //Open the key for reading 
    284284    Handle<HKEY> key; 
    285285    DWORD result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
    286         (L"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\" + versionKey).c_str(), 
     286        (L"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\" + versionKey + L"\\Full").c_str(), 
    287287        0, KEY_READ, key); 
    288288 
     
    291291    { 
    292292        result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
    293             (L"SOFTWARE\\Wow6432Node\\Microsoft\\NET Framework Setup\\NDP\\" + versionKey).c_str(), 
     293            (L"SOFTWARE\\Wow6432Node\\Microsoft\\NET Framework Setup\\NDP\\" + versionKey + L"\\Full").c_str(), 
    294294            0, KEY_READ, key); 
    295295 
     
    340340    } 
    341341 
    342     return versionComponents[0] == 3 && versionComponents[1] == 5 && versionComponents[2] >= 30729; 
     342    return versionComponents[0] == 4 && versionComponents[1] >= 0 && versionComponents[2] >= 30319; 
    343343} 
    344344 
     
    393393        tempDir += L"\\"; 
    394394    std::wstring commandLine(L'"' + tempDir); 
    395     commandLine += L"dotnetfx35.exe\" /norestart"; 
    396  
    397     //If the user wants it quiet then pass the /q:a switch 
     395    commandLine += L"dotNetFx40_Full_setup.exe\" /norestart"; 
     396 
     397    //If the user wants it quiet then pass the /q switch 
    398398    if (quiet) 
    399399        commandLine += L" /q"; 
  • branches/eraser6/pluginsRewrite/Installer/Bootstrapper/Bootstrapper.vcxproj

    r2344 r2478  
    5353    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> 
    5454    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" /> 
     55    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Bootstrapper</TargetName> 
     56    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Bootstrapper</TargetName> 
    5557  </PropertyGroup> 
    5658  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 
     
    6971    </ClCompile> 
    7072    <Link> 
    71       <AdditionalDependencies>comctl32.lib;7zd.lib;%(AdditionalDependencies)</AdditionalDependencies> 
    72       <OutputFile>$(OutDir)Bootstrapper.exe</OutputFile> 
     73      <AdditionalDependencies>comctl32.lib;7zLib.lib;%(AdditionalDependencies)</AdditionalDependencies> 
    7374      <GenerateDebugInformation>true</GenerateDebugInformation> 
    7475      <SubSystem>Windows</SubSystem> 
     
    9192    </ClCompile> 
    9293    <Link> 
    93       <AdditionalDependencies>comctl32.lib;7z.lib;%(AdditionalDependencies)</AdditionalDependencies> 
    94       <OutputFile>$(OutDir)Bootstrapper.exe</OutputFile> 
     94      <AdditionalDependencies>comctl32.lib;7zLib.lib;%(AdditionalDependencies)</AdditionalDependencies> 
    9595      <GenerateDebugInformation>true</GenerateDebugInformation> 
    9696      <SubSystem>Windows</SubSystem> 
  • branches/eraser6/pluginsRewrite/Installer/Bootstrapper/stdafx.h

    r1675 r2478  
    3939//7-zip SDK 
    4040extern "C" { 
     41    #include <C/7z.h> 
     42    #include <C/7zAlloc.h> 
    4143    #include <C/7zCrc.h> 
    42     #include <C/Archive/7z/7zIn.h> 
    43     #include <C/Archive/7z/7zAlloc.h> 
    44     #include <C/Archive/7z/7zDecode.h> 
    45     #include <C/Archive/7z/7zExtract.h> 
    4644} 
    4745 
  • branches/eraser6/pluginsRewrite/Installer/DirectoryStructure.wxs

    r2122 r2478  
    2727                <!-- Dependencies (of Eraser.Shell.Dll) --> 
    2828                <?if $(sys.BUILDARCH) = "x64"?> 
    29                     <Merge Id="VCRedist" SourceFile="Merge Modules\Microsoft_VC90_CRT_x86_x64.msm" 
    30                         DiskId="1" Language="0"/> 
    31                     <Merge Id="VCAtlRedist" SourceFile="Merge Modules\Microsoft_VC90_ATL_x86_x64.msm" 
    32                         DiskId="1" Language="0"/> 
    33                     <Merge Id="VCMfcRedist" SourceFile="Merge Modules\Microsoft_VC90_MFC_x86_x64.msm" 
     29                    <Merge Id="VCRedist" SourceFile="Merge Modules\Microsoft_VC100_CRT_x64.msm" 
     30                        DiskId="1" Language="0"/> 
     31                    <Merge Id="VCAtlRedist" SourceFile="Merge Modules\Microsoft_VC100_ATL_x64.msm" 
     32                        DiskId="1" Language="0"/> 
     33                    <Merge Id="VCMfcRedist" SourceFile="Merge Modules\Microsoft_VC100_MFC_x64.msm" 
    3434                        DiskId="1" Language="0"/> 
    3535                <?else?> 
    36                     <Merge Id="VCRedist" SourceFile="Merge Modules\Microsoft_VC90_CRT_x86.msm" 
    37                         DiskId="1" Language="0"/> 
    38                     <Merge Id="VCAtlRedist" SourceFile="Merge Modules\Microsoft_VC90_ATL_x86.msm" 
    39                         DiskId="1" Language="0"/> 
    40                     <Merge Id="VCMfcRedist" SourceFile="Merge Modules\Microsoft_VC90_MFC_x86.msm" 
     36                    <Merge Id="VCRedist" SourceFile="Merge Modules\Microsoft_VC100_CRT_x86.msm" 
     37                        DiskId="1" Language="0"/> 
     38                    <Merge Id="VCAtlRedist" SourceFile="Merge Modules\Microsoft_VC100_ATL_x86.msm" 
     39                        DiskId="1" Language="0"/> 
     40                    <Merge Id="VCMfcRedist" SourceFile="Merge Modules\Microsoft_VC100_MFC_x86.msm" 
    4141                        DiskId="1" Language="0"/> 
    4242                <?endif?> 
Note: See TracChangeset for help on using the changeset viewer.