Esempio n. 1
0
        internal virtual void OnBeforeVistaDialog(FileDialogNative.IFileDialog dialog)
        {
            dialog.SetDefaultExtension(this.DefaultExt);

            dialog.SetFileName(this.FileName);

            if (!string.IsNullOrEmpty(this.InitialDirectory))
            {
                try
                {
                    FileDialogNative.IShellItem initialDirectory = GetShellItemForPath(this.InitialDirectory);

                    dialog.SetDefaultFolder(initialDirectory);
                    dialog.SetFolder(initialDirectory);
                }
                catch (FileNotFoundException)
                {
                }
            }

            dialog.SetTitle(this.Title);

            dialog.SetOptions(GetOptions());
            
            SetFileTypes(dialog);

            this._customPlaces.Apply(dialog);
        }
 internal override string[] ProcessVistaFiles(FileDialogNative.IFileDialog dialog)
 {
     FileDialogNative.IShellItem item;
     FileDialogNative.IFileSaveDialog dialog1 = (FileDialogNative.IFileSaveDialog) dialog;
     dialog.GetResult(out item);
     return new string[] { FileDialog.GetFilePathFromShellItem(item) };
 }
 internal override string[] ProcessVistaFiles(FileDialogNative.IFileDialog dialog)
 {
     FileDialogNative.IShellItem item2;
     FileDialogNative.IFileOpenDialog dialog2 = (FileDialogNative.IFileOpenDialog) dialog;
     if (this.Multiselect)
     {
         FileDialogNative.IShellItemArray array;
         uint num;
         dialog2.GetResults(out array);
         array.GetCount(out num);
         string[] strArray = new string[num];
         for (uint i = 0; i < num; i++)
         {
             FileDialogNative.IShellItem item;
             array.GetItemAt(i, out item);
             strArray[i] = FileDialog.GetFilePathFromShellItem(item);
         }
         return strArray;
     }
     dialog2.GetResult(out item2);
     return new string[] { FileDialog.GetFilePathFromShellItem(item2) };
 }
Esempio n. 4
0
 public void OnOverwrite(FileDialogNative.IFileDialog pfd, FileDialogNative.IShellItem psi, out FileDialogNative.FDE_OVERWRITE_RESPONSE pResponse)
 {
     pResponse = FileDialogNative.FDE_OVERWRITE_RESPONSE.FDEOR_DEFAULT;
 }
Esempio n. 5
0
 public void OnTypeChange(FileDialogNative.IFileDialog pfd)
 {
 }
Esempio n. 6
0
 public void OnShareViolation(FileDialogNative.IFileDialog pfd, FileDialogNative.IShellItem psi, out FileDialogNative.FDE_SHAREVIOLATION_RESPONSE pResponse)
 {
     pResponse = FileDialogNative.FDE_SHAREVIOLATION_RESPONSE.FDESVR_DEFAULT;
 }
Esempio n. 7
0
 public void OnSelectionChange(FileDialogNative.IFileDialog pfd)
 {
 }
Esempio n. 8
0
 public void OnFolderChange(FileDialogNative.IFileDialog pfd)
 {
 }
Esempio n. 9
0
        private bool HandleVistaFileOk(FileDialogNative.IFileDialog dialog)
        {
            int saveOptions = options;
            int saveFilterIndex = filterIndex;
            string[] saveFileNames = fileNames;
            bool saveSecurityCheckFileNames = securityCheckFileNames;
            bool ok = false;

            try
            {
                securityCheckFileNames = true;
                Thread.MemoryBarrier();
                uint filterIndexTemp;
                dialog.GetFileTypeIndex(out filterIndexTemp);
                filterIndex = unchecked((int)filterIndexTemp);
                fileNames = ProcessVistaFiles(dialog);
                if (ProcessFileNames())
                {
                    CancelEventArgs ceevent = new CancelEventArgs();
                    if (NativeWindow.WndProcShouldBeDebuggable)
                    {
                        OnFileOk(ceevent);
                        ok = !ceevent.Cancel;
                    }
                    else
                    {
                        try
                        {
                            OnFileOk(ceevent);
                            ok = !ceevent.Cancel;
                        }
                        catch (Exception e)
                        {
                            Application.OnThreadException(e);
                        }
                    }
                }
            }
            finally
            {
                if (!ok)
                {
                    //Order here is important.  We don't want a window where securityCheckFileNames is false, but the temporary fileNames is still in place
                    securityCheckFileNames = saveSecurityCheckFileNames;
                    Thread.MemoryBarrier();
                    fileNames = saveFileNames;

                    options = saveOptions;
                    filterIndex = saveFilterIndex;
                }
                else
                {
                    if (0 != (options & NativeMethods.OFN_HIDEREADONLY))
                    {
                        //When the dialog is dismissed OK, the Readonly bit can't
                        // be left on if ShowReadOnly was false
                        // Downlevel this happens automatically, on Vista mode, we need to watch out for it.

                        options &= ~ NativeMethods.OFN_READONLY;
                    }
                }
            }
            return ok;
        }
Esempio n. 10
0
 internal abstract string[] ProcessVistaFiles(FileDialogNative.IFileDialog dialog);
 internal override string[] ProcessVistaFiles(FileDialogNative.IFileDialog dialog)
 {
     FileDialogNative.IFileOpenDialog openDialog = (FileDialogNative.IFileOpenDialog)dialog;
     if (Multiselect)
     {
         FileDialogNative.IShellItemArray results;
         openDialog.GetResults(out results);
         uint count;
         results.GetCount(out count);
         string[] files = new string[count];
         for (uint i = 0; i < count; ++i)
         { 
             FileDialogNative.IShellItem item;
             results.GetItemAt(i, out item);
             files[unchecked((int)i)] = GetFilePathFromShellItem(item);
         }
         return files;
     }
     else
     { 
         FileDialogNative.IShellItem item;
         openDialog.GetResult(out item);
         return new string[] { GetFilePathFromShellItem(item) };
     }
 }
 private bool HandleVistaFileOk(FileDialogNative.IFileDialog dialog)
 {
     int options = this.options;
     int filterIndex = this.filterIndex;
     string[] fileNames = this.fileNames;
     bool securityCheckFileNames = this.securityCheckFileNames;
     bool flag2 = false;
     try
     {
         uint num3;
         this.securityCheckFileNames = true;
         Thread.MemoryBarrier();
         dialog.GetFileTypeIndex(out num3);
         this.filterIndex = (int) num3;
         this.fileNames = this.ProcessVistaFiles(dialog);
         if (!this.ProcessFileNames())
         {
             return flag2;
         }
         CancelEventArgs e = new CancelEventArgs();
         if (NativeWindow.WndProcShouldBeDebuggable)
         {
             this.OnFileOk(e);
             return !e.Cancel;
         }
         try
         {
             this.OnFileOk(e);
             flag2 = !e.Cancel;
         }
         catch (Exception exception)
         {
             Application.OnThreadException(exception);
         }
     }
     finally
     {
         if (!flag2)
         {
             this.securityCheckFileNames = securityCheckFileNames;
             Thread.MemoryBarrier();
             this.fileNames = fileNames;
             this.options = options;
             this.filterIndex = filterIndex;
         }
         else if ((this.options & 4) != 0)
         {
             this.options &= -2;
         }
     }
     return flag2;
 }
 internal static string GetFilePathFromShellItem(FileDialogNative.IShellItem item)
 {
     string str;
     item.GetDisplayName((FileDialogNative.SIGDN) (-2147319808), out str);
     return str;
 }
 public int OnFolderChanging(FileDialogNative.IFileDialog pfd, FileDialogNative.IShellItem psiFolder)
 {
     return 0;
 }
 public int OnFileOk(FileDialogNative.IFileDialog pfd)
 {
     if (!this._dialog.HandleVistaFileOk(pfd))
     {
         return 1;
     }
     return 0;
 }
Esempio n. 16
0
 private void SetFileTypes(FileDialogNative.IFileDialog dialog)
 {
     FileDialogNative.COMDLG_FILTERSPEC[] filterItems = FilterItems;
     dialog.SetFileTypes((uint)filterItems.Length, filterItems);
     if (filterItems.Length > 0)
     {
         dialog.SetFileTypeIndex(unchecked((uint)filterIndex));
     }
 }
Esempio n. 17
0
 internal static string GetFilePathFromShellItem(FileDialogNative.IShellItem item)
 {
     string filename;
     item.GetDisplayName(FileDialogNative.SIGDN.SIGDN_DESKTOPABSOLUTEPARSING, out filename);
     return filename;
 }
Esempio n. 18
0
 public int OnFileOk(FileDialogNative.IFileDialog pfd)
 {
     return this._dialog.HandleVistaFileOk(pfd) ? NativeMethods.S_OK : NativeMethods.S_FALSE;
 }
Esempio n. 19
0
 public static extern int SHCreateShellItem(IntPtr pidlParent, IntPtr psfParent, IntPtr pidl, out FileDialogNative.IShellItem ppsi);
Esempio n. 20
0
 public int OnFolderChanging(FileDialogNative.IFileDialog pfd, FileDialogNative.IShellItem psiFolder)
 {
     return NativeMethods.S_OK;
 }