Back to index

lightning-sunbird  0.9+nobinonly
nsClipboard.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /* vim:expandtab:shiftwidth=4:tabstop=4:
00003  */
00004 /* ***** BEGIN LICENSE BLOCK *****
00005  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00006  *
00007  * The contents of this file are subject to the Mozilla Public License Version
00008  * 1.1 (the "License"); you may not use this file except in compliance with
00009  * the License. You may obtain a copy of the License at
00010  * http://www.mozilla.org/MPL/
00011  *
00012  * Software distributed under the License is distributed on an "AS IS" basis,
00013  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00014  * for the specific language governing rights and limitations under the
00015  * License.
00016  *
00017  * The Original Code is mozilla.org code.
00018  *
00019  * The Initial Developer of the Original Code is Christopher Blizzard
00020  * <blizzard@mozilla.org>.  Portions created by the Initial Developer
00021  * are Copyright (C) 2001 the Initial Developer. All Rights Reserved.
00022  *
00023  * Contributor(s):
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either the GNU General Public License Version 2 or later (the "GPL"), or
00027  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 #ifndef __nsClipboard_h_
00040 #define __nsClipboard_h_
00041 
00042 #include "nsIClipboard.h"
00043 #include <gtk/gtkselection.h>
00044 
00045 class nsClipboard : public nsIClipboard
00046 {
00047 public:
00048     nsClipboard();
00049     virtual ~nsClipboard();
00050     
00051     NS_DECL_ISUPPORTS
00052     
00053     NS_DECL_NSICLIPBOARD
00054 
00055     // Make sure we are initialized, called from the factory
00056     // constructor
00057     nsresult  Init                (void);
00058     // Someone reqeusted the selection from the hidden widget
00059     void      SelectionGetEvent   (GtkWidget         *aWidget,
00060                                    GtkSelectionData  *aSelectionData,
00061                                    guint              aTime);
00062     void      SelectionClearEvent (GtkWidget         *aWidget,
00063                                    GdkEventSelection *aEvent);
00064 
00065 
00066 private:
00067     // Utility methods
00068     static GdkAtom               GetSelectionAtom (PRInt32 aWhichClipboard);
00069     static GtkSelectionData     *GetTargets       (GdkAtom aWhichClipboard);
00070 
00071     // Get our hands on the correct transferable, given a specific
00072     // clipboard
00073     nsITransferable             *GetTransferable  (PRInt32 aWhichClipboard);
00074 
00075     // Add a target type to the hidden widget
00076     void                         AddTarget        (GdkAtom aName,
00077                                                    GdkAtom aClipboard);
00078 
00079     // The hidden widget where we do all of our operations
00080     GtkWidget                   *mWidget;
00081     // Hang on to our owners and transferables so we can transfer data
00082     // when asked.
00083     nsCOMPtr<nsIClipboardOwner>  mSelectionOwner;
00084     nsCOMPtr<nsIClipboardOwner>  mGlobalOwner;
00085     nsCOMPtr<nsITransferable>    mSelectionTransferable;
00086     nsCOMPtr<nsITransferable>    mGlobalTransferable;
00087 
00088 };
00089 
00090 #endif /* __nsClipboard_h_ */