diff --git a/mozilla/widget/public/nsIDragService.idl b/mozilla/widget/public/nsIDragService.idl new file mode 100644 index 00000000000..f7baa2e2306 --- /dev/null +++ b/mozilla/widget/public/nsIDragService.idl @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsISupports.idl" +#include "nsISupportsArray.idl" +#include "nsIDragSession.idl" + +%{ C++ + +class nsIRegion; + +%} + +[ptr] native nsIRegion (nsIRegion); + + +[scriptable, uuid(8B5314BB-DB01-11d2-96CE-0060B0FB9956)] +interface nsIDragService : nsISupports +{ + const long DRAGDROP_ACTION_NONE = 0; + const long DRAGDROP_ACTION_COPY = 1; + const long DRAGDROP_ACTION_MOVE = 2; + const long DRAGDROP_ACTION_LINK = 4; + + /** + * Starts a modal drag session with an array of transaferables + * + * @param aTransferables - an array of transferables to be dragged + * @param aRegion - a region containing rectangles for cursor feedback, + * in window coordinates. + * @param aActionType - specified which of copy/move/link are allowed + */ + [noscript] void InvokeDragSession ( in nsISupportsArray aTransferables, + in nsIRegion aRegion, in unsigned long aActionType ); + + /** + * Returns the current Drag Session + */ + nsIDragSession GetCurrentSession ( ) ; + + /** + * Tells the Drag Service to start a drag session. This is called when + * an external drag occurs + */ + void StartDragSession ( ) ; + + /** + * Tells the Drag Service to end a drag session. This is called when + * an external drag occurs + */ + void EndDragSession ( ) ; + +}; + + +%{ C++ + +%} diff --git a/mozilla/widget/public/nsIDragSession.idl b/mozilla/widget/public/nsIDragSession.idl new file mode 100644 index 00000000000..236c7dcae23 --- /dev/null +++ b/mozilla/widget/public/nsIDragSession.idl @@ -0,0 +1,76 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsISupports.idl" +#include "nsISupportsArray.idl" +#include "nsITransferable.idl" + +%{ C++ +#include "nsSize.h" +%} + +native nsSize (nsSize); + + +[scriptable, uuid(CBA22C53-FCCE-11d2-96D4-0060B0FB9956)] +interface nsIDragSession : nsISupports +{ + /** + * Set the current state of the drag whether it can be dropped or not. + * usually the target "frame" sets this so the native system can render the correct feedback + */ + attribute boolean CanDrop; + + /** + * Sets the action (copy, move, link, et.c) for the current drag + */ + attribute unsigned long DragAction; + + /** + * Sets the current width and height if the drag target area. + * It will contain the current size of the Frame that the drag is currently in + */ + attribute nsSize TargetSize; + + /** + * Get the number items that were dropped + */ + readonly attribute unsigned long NumDropItems; + + /** + * Get data from a Drag&Drop. Can be called while the drag is in process + * or after the drop has completed. + * + * @param aTransferable the transferable for the data to be put into + * @param aItemIndex which of multiple drag items, zero-based + */ + void GetData ( in nsITransferable aTransferable, in unsigned long aItemIndex ) ; + + /** + * Check to set if ant of the native data on the clipboard matches this data flavor + * + * @result NS_OK if if the data flavor is supported and, NS_ERROR_FAILURE is it is not + */ + boolean IsDataFlavorSupported ( in string aDataFlavor ) ; + +}; + + +%{ C++ + +%} diff --git a/mozilla/widget/public/nsIFormatConverter.idl b/mozilla/widget/public/nsIFormatConverter.idl new file mode 100644 index 00000000000..3c495bd1457 --- /dev/null +++ b/mozilla/widget/public/nsIFormatConverter.idl @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsISupports.idl" +#include "nsISupportsArray.idl" + + +[scriptable, uuid(948A0023-E3A7-11d2-96CF-0060B0FB9956)] +interface nsIFormatConverter : nsISupports +{ + /** + * Get the list of the "input" data flavors (mime types as nsISupportsString), + * in otherwords, the flavors that this converter can convert "from" (the + * incoming data to the converter). + */ + nsISupportsArray GetInputDataFlavors ( ) ; + + /** + * Get the list of the "output" data flavors (mime types as nsISupportsString), + * in otherwords, the flavors that this converter can convert "to" (the + * outgoing data to the converter). + * + * @param aDataFlavorList fills list with supported flavors + */ + nsISupportsArray GetOutputDataFlavors ( ) ; + + /** + * Determines whether a converion from one flavor to another is supported + * + * @param aFromFormatConverter flavor to convert from + * @param aFromFormatConverter flavor to convert to + */ + boolean CanConvert ( in string aFromDataFlavor, in string aToDataFlavor ) ; + + /** + * Converts from one flavor to another. + * + * @param aFromFormatConverter flavor to convert from + * @param aFromFormatConverter flavor to convert to (destination own the memory) + * @returns returns NS_OK if it was converted + */ + void Convert ( in string aFromDataFlavor, in nsISupports aFromData, in unsigned long aDataLen, + in string aToDataFlavor, out nsISupports aToData, out unsigned long aDataToLen ) ; + +}; + + +%{ C++ + +%} diff --git a/mozilla/widget/public/nsITransferable.idl b/mozilla/widget/public/nsITransferable.idl new file mode 100644 index 00000000000..1f01c4c72ef --- /dev/null +++ b/mozilla/widget/public/nsITransferable.idl @@ -0,0 +1,119 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsISupports.idl" +#include "nsISupportsArray.idl" +#include "nsIFormatConverter.idl" + + +%{ C++ + +// these probably shouldn't live here, but in some central repository shared +// by the entire app. +#define kTextMime "text/plain" +#define kXIFMime "text/xif" +#define kUnicodeMime "text/unicode" +#define kHTMLMime "text/html" +#define kAOLMailMime "AOLMAIL" +#define kPNGImageMime "image/png" +#define kJPEGImageMime "image/jpg" +#define kGIFImageMime "image/gif" +#define kDropFilesMime "text/dropfiles" + +%} + + +[scriptable, uuid(8B5314BC-DB01-11d2-96CE-0060B0FB9956)] +interface nsITransferable : nsISupports +{ + /** + * Computes a list of flavors (mime types as nsISupportsString) that the transferable + * can export, either through intrinsic knowledge or output data converters. + * + * @param aDataFlavorList fills list with supported flavors. This is a copy of + * the internal list, so it may be edited w/out affecting the transferable. + */ + nsISupportsArray FlavorsTransferableCanExport ( ) ; + + /** + * Given a flavor retrieve the data. + * + * @param aFlavor (in parameter) the flavor of data to retrieve + * @param aData the data. Some variant of class in nsISupportsPrimitives.idl + * @param aDataLen the length of the data + */ + void GetTransferData ( in string aFlavor, out nsISupports aData, out unsigned long aDataLen ) ; + + /** + * Returns the best flavor in the transferable, given those that have + * been added to it with |AddFlavor()| + * + * @param aFlavor (out parameter) the flavor of data that was retrieved + * @param aData the data. Some variant of class in nsISupportsPrimitives.idl + * @param aDataLen the length of the data + */ + void GetAnyTransferData ( out string aFlavor, out nsISupports aData, out unsigned long aDataLen ) ; + + /** + * Returns true if the data is large. + */ + boolean IsLargeDataSet ( ) ; + + /////////////////////////////// + // Setter part of interface + /////////////////////////////// + + /** + * Computes a list of flavors (mime types as nsISupportsString) that the transferable can + * accept into it, either through intrinsic knowledge or input data converters. + * + * @param outFlavorList fills list with supported flavors. This is a copy of + * the internal list, so it may be edited w/out affecting the transferable. + */ + nsISupportsArray FlavorsTransferableCanImport ( ) ; + + /** + * Sets the data in the transferable with the specified flavor. The transferable + * will maintain its own copy the data, so it is not necessary to do that beforehand. + * + * @param aFlavor the flavor of data that is being set + * @param aData the data, some variant of class in nsISupportsPrimitives.idl + * @param aDataLen the length of the data + */ + void SetTransferData ( in string aFlavor, in nsISupports aData, in unsigned long aDataLen ) ; + + /** + * Add the data flavor, indicating that this transferable + * can receive this type of flavor + * + * @param aDataFlavor a new data flavor to handle + */ + void AddDataFlavor ( in string aDataFlavor ) ; + + /** + * Removes the data flavor matching the given one (string compare) and the data + * that goes along with it. + * + * @param aDataFlavor a data flavor to remove + */ + void RemoveDataFlavor ( in string aDataFlavor ) ; + + attribute nsIFormatConverter converter; + +}; +