forked from mirrors/gecko-dev
329 lines
9.2 KiB
Rust
329 lines
9.2 KiB
Rust
// Licensed under the Apache License, Version 2.0
|
|
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
|
|
// All files in the project carrying such notice may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
use shared::guiddef::REFGUID;
|
|
use shared::minwindef::{BOOL, DWORD, UINT};
|
|
use shared::windef::HWND;
|
|
use um::propsys::{IPropertyDescriptionList, IPropertyStore};
|
|
use um::shobjidl_core::{IModalWindow, IModalWindowVtbl, IShellItem, IShellItemFilter};
|
|
use um::shtypes::COMDLG_FILTERSPEC;
|
|
use um::unknwnbase::{IUnknown, IUnknownVtbl};
|
|
use um::winnt::{HRESULT, LPCWSTR, LPWSTR, WCHAR};
|
|
pub type IFileOperationProgressSink = IUnknown; // TODO
|
|
pub use um::shobjidl_core::{IShellItemArray, SIATTRIBFLAGS}; // FIXME: Remove these in the next major release
|
|
ENUM!{enum FDE_OVERWRITE_RESPONSE {
|
|
FDEOR_DEFAULT = 0,
|
|
FDEOR_ACCEPT = 1,
|
|
FDEOR_REFUSE = 2,
|
|
}}
|
|
ENUM!{enum FDE_SHAREVIOLATION_RESPONSE {
|
|
FDESVR_DEFAULT = 0,
|
|
FDESVR_ACCEPT = 1,
|
|
FDESVR_REFUSE = 2,
|
|
}}
|
|
ENUM!{enum FDAP {
|
|
FDAP_BOTTOM = 0,
|
|
FDAP_TOP = 1,
|
|
}}
|
|
RIDL!{#[uuid(0x973510db, 0x7d7f, 0x452b, 0x89, 0x75, 0x74, 0xa8, 0x58, 0x28, 0xd3, 0x54)]
|
|
interface IFileDialogEvents(IFileDialogEventsVtbl): IUnknown(IUnknownVtbl) {
|
|
fn OnFileOk(
|
|
pfd: *mut IFileDialog,
|
|
) -> HRESULT,
|
|
fn OnFolderChanging(
|
|
pfd: *mut IFileDialog,
|
|
psiFolder: *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn OnFolderChange(
|
|
pfd: *mut IFileDialog,
|
|
) -> HRESULT,
|
|
fn OnSelectionChange(
|
|
pfd: *mut IFileDialog,
|
|
) -> HRESULT,
|
|
fn OnShareViolation(
|
|
pfd: *mut IFileDialog,
|
|
psi: *mut IShellItem,
|
|
pResponse: *mut FDE_SHAREVIOLATION_RESPONSE,
|
|
) -> HRESULT,
|
|
fn OnTypeChange(
|
|
pfd: *mut IFileDialog,
|
|
) -> HRESULT,
|
|
fn OnOverwrite(
|
|
pfd: *mut IFileDialog,
|
|
psi: *mut IShellItem,
|
|
pResponse: *mut FDE_OVERWRITE_RESPONSE,
|
|
) -> HRESULT,
|
|
}}
|
|
ENUM!{enum FILEOPENDIALOGOPTIONS {
|
|
FOS_OVERWRITEPROMPT = 0x2,
|
|
FOS_STRICTFILETYPES = 0x4,
|
|
FOS_NOCHANGEDIR = 0x8,
|
|
FOS_PICKFOLDERS = 0x20,
|
|
FOS_FORCEFILESYSTEM = 0x40,
|
|
FOS_ALLNONSTORAGEITEMS = 0x80,
|
|
FOS_NOVALIDATE = 0x100,
|
|
FOS_ALLOWMULTISELECT = 0x200,
|
|
FOS_PATHMUSTEXIST = 0x800,
|
|
FOS_FILEMUSTEXIST = 0x1000,
|
|
FOS_CREATEPROMPT = 0x2000,
|
|
FOS_SHAREAWARE = 0x4000,
|
|
FOS_NOREADONLYRETURN = 0x8000,
|
|
FOS_NOTESTFILECREATE = 0x10000,
|
|
FOS_HIDEMRUPLACES = 0x20000,
|
|
FOS_HIDEPINNEDPLACES = 0x40000,
|
|
FOS_NODEREFERENCELINKS = 0x100000,
|
|
FOS_DONTADDTORECENT = 0x2000000,
|
|
FOS_FORCESHOWHIDDEN = 0x10000000,
|
|
FOS_DEFAULTNOMINIMODE = 0x20000000,
|
|
FOS_FORCEPREVIEWPANEON = 0x40000000,
|
|
FOS_SUPPORTSTREAMABLEITEMS = 0x80000000,
|
|
}}
|
|
RIDL!{#[uuid(0x42f85136, 0xdb7e, 0x439c, 0x85, 0xf1, 0xe4, 0x07, 0x5d, 0x13, 0x5f, 0xc8)]
|
|
interface IFileDialog(IFileDialogVtbl): IModalWindow(IModalWindowVtbl) {
|
|
fn SetFileTypes(
|
|
cFileTypes: UINT,
|
|
rgFilterSpec: *const COMDLG_FILTERSPEC,
|
|
) -> HRESULT,
|
|
fn SetFileTypeIndex(
|
|
iFileType: UINT,
|
|
) -> HRESULT,
|
|
fn GetFileTypeIndex(
|
|
piFileType: *mut UINT,
|
|
) -> HRESULT,
|
|
fn Advise(
|
|
pfde: *mut IFileDialogEvents,
|
|
pdwCookie: *mut DWORD,
|
|
) -> HRESULT,
|
|
fn Unadvise(
|
|
dwCookie: DWORD,
|
|
) -> HRESULT,
|
|
fn SetOptions(
|
|
fos: FILEOPENDIALOGOPTIONS,
|
|
) -> HRESULT,
|
|
fn GetOptions(
|
|
pfos: *mut FILEOPENDIALOGOPTIONS,
|
|
) -> HRESULT,
|
|
fn SetDefaultFolder(
|
|
psi: *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn SetFolder(
|
|
psi: *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn GetFolder(
|
|
ppsi: *mut *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn GetCurrentSelection(
|
|
ppsi: *mut *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn SetFileName(
|
|
pszName: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn GetFileName(
|
|
pszName: *mut LPWSTR,
|
|
) -> HRESULT,
|
|
fn SetTitle(
|
|
pszTitle: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn SetOkButtonLabel(
|
|
pszText: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn SetFileNameLabel(
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn GetResult(
|
|
ppsi: *mut *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn AddPlace(
|
|
psi: *mut IShellItem,
|
|
fdap: FDAP,
|
|
) -> HRESULT,
|
|
fn SetDefaultExtension(
|
|
pszDefaultExtension: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn Close(
|
|
hr: HRESULT,
|
|
) -> HRESULT,
|
|
fn SetClientGuid(
|
|
guid: REFGUID,
|
|
) -> HRESULT,
|
|
fn ClearClientData() -> HRESULT,
|
|
fn SetFilter(
|
|
pFilter: *mut IShellItemFilter,
|
|
) -> HRESULT,
|
|
}}
|
|
RIDL!{#[uuid(0x84bccd23, 0x5fde, 0x4cdb, 0xae, 0xa4, 0xaf, 0x64, 0xb8, 0x3d, 0x78, 0xab)]
|
|
interface IFileSaveDialog(IFileSaveDialogVtbl): IFileDialog(IFileDialogVtbl) {
|
|
fn SetSaveAsItem(
|
|
psi: *mut IShellItem,
|
|
) -> HRESULT,
|
|
fn SetProperties(
|
|
pStore: *mut IPropertyStore,
|
|
) -> HRESULT,
|
|
fn SetCollectedProperties(
|
|
pList: *mut IPropertyDescriptionList,
|
|
fAppendDefault: BOOL,
|
|
) -> HRESULT,
|
|
fn GetProperties(
|
|
ppStore: *mut *mut IPropertyStore,
|
|
) -> HRESULT,
|
|
fn ApplyProperties(
|
|
psi: *mut IShellItem,
|
|
pStore: *mut IPropertyStore,
|
|
hwnd: HWND,
|
|
pSink: *mut IFileOperationProgressSink,
|
|
) -> HRESULT,
|
|
}}
|
|
RIDL!{#[uuid(0xd57c7288, 0xd4ad, 0x4768, 0xbe, 0x02, 0x9d, 0x96, 0x95, 0x32, 0xd9, 0x60)]
|
|
interface IFileOpenDialog(IFileOpenDialogVtbl): IFileDialog(IFileDialogVtbl) {
|
|
fn GetResults(
|
|
ppenum: *mut *mut IShellItemArray,
|
|
) -> HRESULT,
|
|
fn GetSelectedItems(
|
|
ppsai: *mut *mut IShellItemArray,
|
|
) -> HRESULT,
|
|
}}
|
|
ENUM!{enum CDCONTROLSTATEF {
|
|
CDCS_INACTIVE = 0,
|
|
CDCS_ENABLED = 0x1,
|
|
CDCS_VISIBLE = 0x2,
|
|
CDCS_ENABLEDVISIBLE = 0x3,
|
|
}}
|
|
RIDL!{#[uuid(0xe6fdd21a, 0x163f, 0x4975, 0x9c, 0x8c, 0xa6, 0x9f, 0x1b, 0xa3, 0x70, 0x34)]
|
|
interface IFileDialogCustomize(IFileDialogCustomizeVtbl): IUnknown(IUnknownVtbl) {
|
|
fn EnableOpenDropDown(
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn AddMenu(
|
|
dwIDCtl: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn AddPushButton(
|
|
dwIDCtl: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn AddComboBox(
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn AddRadioButtonList(
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn AddCheckButton(
|
|
dwIDCtl: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
bChecked: BOOL,
|
|
) -> HRESULT,
|
|
fn AddEditBox(
|
|
dwIDCtl: DWORD,
|
|
pszText: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn AddSeparator(
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn AddText(
|
|
dwIDCtl: DWORD,
|
|
pszText: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn SetControlLabel(
|
|
dwIDCtl: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn GetControlState(
|
|
dwIDCtl: DWORD,
|
|
pdwState: *mut CDCONTROLSTATEF,
|
|
) -> HRESULT,
|
|
fn SetControlState(
|
|
dwIDCtl: DWORD,
|
|
dwState: CDCONTROLSTATEF,
|
|
) -> HRESULT,
|
|
fn GetEditBoxText(
|
|
dwIDCtl: DWORD,
|
|
ppszText: *mut *mut WCHAR,
|
|
) -> HRESULT,
|
|
fn SetEditBoxText(
|
|
dwIDCtl: DWORD,
|
|
pszText: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn GetCheckButtonState(
|
|
dwIDCtl: DWORD,
|
|
pbChecked: *mut BOOL,
|
|
) -> HRESULT,
|
|
fn SetCheckButtonState(
|
|
dwIDCtl: DWORD,
|
|
bChecked: BOOL,
|
|
) -> HRESULT,
|
|
fn AddControlItem(
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn RemoveControlItem(
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
) -> HRESULT,
|
|
fn RemoveAllControlItems(
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn GetControlItemState(
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
pdwState: *mut CDCONTROLSTATEF,
|
|
) -> HRESULT,
|
|
fn SetControlItemState(
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
dwState: CDCONTROLSTATEF,
|
|
) -> HRESULT,
|
|
fn GetSelectedControlItem(
|
|
dwIDCtl: DWORD,
|
|
pdwIDItem: *mut DWORD,
|
|
) -> HRESULT,
|
|
fn SetSelectedControlItem(
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
) -> HRESULT,
|
|
fn StartVisualGroup(
|
|
dwIDCtl: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn EndVisualGroup() -> HRESULT,
|
|
fn MakeProminent(
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn SetControlItemText(
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
}}
|
|
RIDL!{#[uuid(0x36116642, 0xd713, 0x4b97, 0x9b, 0x83, 0x74, 0x84, 0xa9, 0xd0, 0x04, 0x33)]
|
|
interface IFileDialogControlEvents(IFileDialogControlEventsVtbl): IUnknown(IUnknownVtbl) {
|
|
fn OnItemSelected(
|
|
pfdc: *mut IFileDialogCustomize,
|
|
dwIDCtl: DWORD,
|
|
dwIDItem: DWORD,
|
|
) -> HRESULT,
|
|
fn OnButtonClicked(
|
|
pfdc: *mut IFileDialogCustomize,
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
fn OnCheckButtonToggled(
|
|
pfdc: *mut IFileDialogCustomize,
|
|
dwIDCtl: DWORD,
|
|
bChecked: BOOL,
|
|
) -> HRESULT,
|
|
fn OnControlActivating(
|
|
pfdc: *mut IFileDialogCustomize,
|
|
dwIDCtl: DWORD,
|
|
) -> HRESULT,
|
|
}}
|
|
RIDL!{#[uuid(0x61744fc7, 0x85b5, 0x4791, 0xa9, 0xb0, 0x27, 0x22, 0x76, 0x30, 0x9b, 0x13)]
|
|
interface IFileDialog2(IFileDialog2Vtbl): IFileDialog(IFileDialogVtbl) {
|
|
fn SetCancelButtonLabel(
|
|
pszLabel: LPCWSTR,
|
|
) -> HRESULT,
|
|
fn SetNavigationRoot(
|
|
psi: IShellItem,
|
|
) -> HRESULT,
|
|
}}
|