add nsBaseFilePicker and have it built on unix r=smfr

This commit is contained in:
pavlov%netscape.com 1999-11-16 01:51:39 +00:00
parent e126986a82
commit 3842ca1f17
3 changed files with 164 additions and 1 deletions

View File

@ -30,12 +30,13 @@ LIBRARY_NAME = raptorbasewidget_s
CPPSRCS = \
nsBaseWidget.cpp \
nsBaseFilePicker.cpp \
nsTransferable.cpp \
nsXIFFormatConverter.cpp \
nsBaseDragService.cpp \
nsBaseClipboard.cpp \
nsFileSpecWithUIImpl.cpp \
nsPrimitiveHelpers.cpp \
nsPrimitiveHelpers.cpp \
$(NULL)
LOCAL_INCLUDES = \

View File

@ -0,0 +1,113 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Stuart Parmenter <pavlov@netscape.com>
*/
#include "nsCOMPtr.h"
#include "nsIDOMWindow.h"
#include "nsIScriptGlobalObject.h"
#include "nsIWebShell.h"
#include "nsIContentViewer.h"
#include "nsIDocumentViewer.h"
#include "nsIPresShell.h"
#include "nsIViewManager.h"
#include "nsIView.h"
#include "nsIWidget.h"
#include "nsBaseFilePicker.h"
nsBaseFilePicker::nsBaseFilePicker()
{
}
nsBaseFilePicker::~nsBaseFilePicker()
{
}
/* XXX aaaarrrrrrgh! */
NS_IMETHODIMP nsBaseFilePicker::DOMWindowToWidget(nsIDOMWindow *dw, nsIWidget **aResult)
{
nsresult rv = NS_ERROR_FAILURE;
*aResult = nsnull;
nsCOMPtr<nsIScriptGlobalObject> sgo = do_QueryInterface(dw);
if (sgo) {
nsCOMPtr<nsIWebShell> webShell;
sgo->GetWebShell(getter_AddRefs(webShell));
if (webShell) {
nsCOMPtr<nsIContentViewer> contentViewer;
rv = webShell->GetContentViewer(getter_AddRefs(contentViewer));
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIDocumentViewer> documentViewer;
documentViewer = do_QueryInterface(webShell, &rv);
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIPresShell> presShell;
rv = documentViewer->GetPresShell(*getter_AddRefs(presShell));
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIViewManager> viewManager;
rv = presShell->GetViewManager(getter_AddRefs(viewManager));
if (NS_SUCCEEDED(rv)) {
nsIView *view;
rv = viewManager->GetRootView(view);
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIWidget> widget;
rv = view->GetWidget(*getter_AddRefs(widget));
if (NS_SUCCEEDED(rv)) {
*aResult = widget;
NS_ADDREF(*aResult);
return NS_OK;
}
}
}
}
}
}
}
}
return rv;
}
//-------------------------------------------------------------------------
NS_IMETHODIMP nsBaseFilePicker::Create(nsIDOMWindow *aParent,
const PRUnichar *aTitle,
PRInt16 aMode)
{
nsCOMPtr<nsIWidget> widget;
nsresult rv = DOMWindowToWidget(aParent, getter_AddRefs(widget));
if (NS_SUCCEEDED(rv))
{
return CreateNative(widget, aTitle, aMode);
}
return rv;
}

View File

@ -0,0 +1,49 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Mozilla browser.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Stuart Parmenter <pavlov@netscape.com>
*/
#ifndef nsBaseFilePicker_h__
#define nsBaseFilePicker_h__
#include "nsIFilePicker.h"
#include "nsIWidget.h"
class nsBaseFilePicker : public nsIFilePicker
{
public:
nsBaseFilePicker();
virtual ~nsBaseFilePicker();
NS_IMETHOD Create(nsIDOMWindow *aParent,
const PRUnichar *aTitle,
PRInt16 aMode);
protected:
NS_IMETHOD CreateNative(nsIWidget *aParent,
const PRUnichar *aTitle,
PRInt16 aMode) = 0;
private:
NS_IMETHOD DOMWindowToWidget(nsIDOMWindow *dw, nsIWidget **aResult);
};
#endif // nsBaseFilePicker_h__