62 lines
2.2 KiB
Text
62 lines
2.2 KiB
Text
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set sw=2 ts=8 et ft=ipdl : */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
namespace mozilla {
|
|
namespace widget {
|
|
namespace filedialog {
|
|
|
|
// Commands corresponding to the various functions in IFileDialog (or at least
|
|
// the ones we actually make use of).
|
|
//
|
|
// All commands' semantics are direct parallels of their equivalently-named
|
|
// functions on IFileDialog, with the only changes being those necessary to use
|
|
// IPDLable representation-datatypes. (Thus, e.g., `SetOptions` effectively
|
|
// takes a `FILEOPENDIALOGOPTIONS`, and `SetFileTypeIndex` is 1-based.)
|
|
struct SetOptions { uint32_t options; };
|
|
struct SetTitle { nsString title; };
|
|
struct SetOkButtonLabel { nsString label; };
|
|
struct SetFolder { nsString path; };
|
|
struct SetFileName { nsString filename; };
|
|
struct SetDefaultExtension { nsString extension; };
|
|
struct ComDlgFilterSpec { nsString name; nsString spec; };
|
|
struct SetFileTypes { ComDlgFilterSpec[] filterList; };
|
|
struct SetFileTypeIndex { uint32_t index; };
|
|
|
|
// Union of the above.
|
|
union Command {
|
|
SetOptions;
|
|
SetTitle;
|
|
SetOkButtonLabel;
|
|
SetFolder;
|
|
SetFileName;
|
|
SetDefaultExtension;
|
|
SetFileTypes;
|
|
SetFileTypeIndex;
|
|
};
|
|
|
|
// The results from opening a file dialog. (Note that folder selection only
|
|
// returns an nsString.)
|
|
struct Results {
|
|
nsString[] paths;
|
|
uint32_t selectedFileTypeIndex;
|
|
};
|
|
|
|
// Homolog of filedialog::Err. (Always Err::Kind::RemoteError, by definition.)
|
|
struct RemoteError {
|
|
// An enum (`filedialog::Error::Location`) describing the compile-time location
|
|
// where the error was detected.
|
|
//
|
|
// (This value is validated at use-sites; if the child process sends a bad
|
|
// value, nothing of import will happen.)
|
|
uint32_t where;
|
|
// An error code describing the error itself more precisely. Its semantics
|
|
// depend on the context provided by `where`, but it's probably an HRESULT.
|
|
uint32_t why;
|
|
};
|
|
|
|
} // namespace filedialog
|
|
} // namespace widget
|
|
} // namespace mozilla
|