From 776b866b01ed54bb69df71e00ebc45ddfdde3a49 Mon Sep 17 00:00:00 2001 From: "mcmullen%netscape.com" Date: Mon, 29 Mar 1999 23:39:38 +0000 Subject: [PATCH] Rearranged the prefs frames, fixed the window size, instantiated the prefs window from C++ (from new ShowWindow() call). git-svn-id: svn://10.0.0.236/trunk@25491 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpfe/AppCores/idl/PrefsCore.idl | 2 + .../xpfe/AppCores/public/nsIDOMPrefsCore.h | 4 ++ mozilla/xpfe/AppCores/src/nsJSPrefsCore.cpp | 43 +++++++++++++++++ mozilla/xpfe/AppCores/src/nsPrefsCore.cpp | 46 ++++++++++++++++++- mozilla/xpfe/AppCores/xul/PrefsWindow.html | 13 +++--- mozilla/xpfe/AppCores/xul/PrefsWindow.js | 8 ++-- mozilla/xpfe/browser/src/navigator.xul | 15 +++--- 7 files changed, 111 insertions(+), 20 deletions(-) diff --git a/mozilla/xpfe/AppCores/idl/PrefsCore.idl b/mozilla/xpfe/AppCores/idl/PrefsCore.idl index 87b56d1cee4..81e9c1e5d98 100644 --- a/mozilla/xpfe/AppCores/idl/PrefsCore.idl +++ b/mozilla/xpfe/AppCores/idl/PrefsCore.idl @@ -5,6 +5,8 @@ interface PrefsCore : BaseAppCore void PrefsCore(); + void ShowWindow(in Window currentFrontWin); + void ChangePanel(in wstring url); void PanelLoaded(in Window win); diff --git a/mozilla/xpfe/AppCores/public/nsIDOMPrefsCore.h b/mozilla/xpfe/AppCores/public/nsIDOMPrefsCore.h index 864290850e4..a26938861b5 100644 --- a/mozilla/xpfe/AppCores/public/nsIDOMPrefsCore.h +++ b/mozilla/xpfe/AppCores/public/nsIDOMPrefsCore.h @@ -35,6 +35,8 @@ class nsIDOMPrefsCore : public nsIDOMBaseAppCore { public: static const nsIID& GetIID() { static nsIID iid = NS_IDOMPREFSCORE_IID; return iid; } + NS_IMETHOD ShowWindow(nsIDOMWindow* aCurrentFrontWin)=0; + NS_IMETHOD ChangePanel(const nsString& aUrl)=0; NS_IMETHOD PanelLoaded(nsIDOMWindow* aWin)=0; @@ -46,6 +48,7 @@ public: #define NS_DECL_IDOMPREFSCORE \ + NS_IMETHOD ShowWindow(nsIDOMWindow* aCurrentFrontWin); \ NS_IMETHOD ChangePanel(const nsString& aUrl); \ NS_IMETHOD PanelLoaded(nsIDOMWindow* aWin); \ NS_IMETHOD SavePrefs(); \ @@ -54,6 +57,7 @@ public: #define NS_FORWARD_IDOMPREFSCORE(_to) \ + NS_IMETHOD ShowWindow(nsIDOMWindow* aCurrentFrontWin) { return _to##ShowWindow(aCurrentFrontWin); } \ NS_IMETHOD ChangePanel(const nsString& aUrl) { return _to##ChangePanel(aUrl); } \ NS_IMETHOD PanelLoaded(nsIDOMWindow* aWin) { return _to##PanelLoaded(aWin); } \ NS_IMETHOD SavePrefs() { return _to##SavePrefs(); } \ diff --git a/mozilla/xpfe/AppCores/src/nsJSPrefsCore.cpp b/mozilla/xpfe/AppCores/src/nsJSPrefsCore.cpp index 775fb573a57..46d953f56aa 100644 --- a/mozilla/xpfe/AppCores/src/nsJSPrefsCore.cpp +++ b/mozilla/xpfe/AppCores/src/nsJSPrefsCore.cpp @@ -130,6 +130,48 @@ ResolvePrefsCore(JSContext *cx, JSObject *obj, jsval id) } +// +// Native method ShowWindow +// +PR_STATIC_CALLBACK(JSBool) +PrefsCoreShowWindow(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + nsIDOMPrefsCore *nativeThis = (nsIDOMPrefsCore*)JS_GetPrivate(cx, obj); + JSBool rBool = JS_FALSE; + nsIDOMWindowPtr b0; + + *rval = JSVAL_NULL; + + // If there's no private data, this must be the prototype, so ignore + if (nsnull == nativeThis) { + return JS_TRUE; + } + + if (argc >= 1) { + + if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0, + kIWindowIID, + "Window", + cx, + argv[0])) { + return JS_FALSE; + } + + if (NS_OK != nativeThis->ShowWindow(b0)) { + return JS_FALSE; + } + + *rval = JSVAL_VOID; + } + else { + JS_ReportError(cx, "Function ShowWindow requires 1 parameters"); + return JS_FALSE; + } + + return JS_TRUE; +} + + // // Native method ChangePanel // @@ -306,6 +348,7 @@ static JSPropertySpec PrefsCoreProperties[] = // static JSFunctionSpec PrefsCoreMethods[] = { + {"ShowWindow", PrefsCoreShowWindow, 1}, {"ChangePanel", PrefsCoreChangePanel, 1}, {"PanelLoaded", PrefsCorePanelLoaded, 1}, {"SavePrefs", PrefsCoreSavePrefs, 0}, diff --git a/mozilla/xpfe/AppCores/src/nsPrefsCore.cpp b/mozilla/xpfe/AppCores/src/nsPrefsCore.cpp index 63e2f53a5a3..d209eb6183c 100644 --- a/mozilla/xpfe/AppCores/src/nsPrefsCore.cpp +++ b/mozilla/xpfe/AppCores/src/nsPrefsCore.cpp @@ -19,13 +19,18 @@ */ #include "nsPrefsCore.h" + +#include "nsIURL.h" #include "nsIBrowserWindow.h" #include "nsIWebShell.h" #include "pratom.h" #include "nsIComponentManager.h" #include "nsAppCores.h" #include "nsAppCoresCIDs.h" +#include "nsAppShellCIDs.h" #include "nsAppCoresManager.h" +#include "nsIAppShellService.h" +#include "nsIServiceManager.h" #include "nsIScriptGlobalObject.h" @@ -42,10 +47,11 @@ static NS_DEFINE_IID(kIPrefsCoreIID, NS_IDOMPREFSCORE_IID); static NS_DEFINE_IID(kIDOMDocumentIID, nsIDOMDocument::GetIID()); static NS_DEFINE_IID(kIDocumentIID, nsIDocument::GetIID()); +static NS_DEFINE_IID(kIAppShellServiceIID, NS_IAPPSHELL_SERVICE_IID); static NS_DEFINE_IID(kPrefsCoreCID, NS_PREFSCORE_CID); static NS_DEFINE_IID(kBrowserWindowCID, NS_BROWSER_WINDOW_CID); - +static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); //---------------------------------------------------------------------------------------- nsPrefsCore::nsPrefsCore() @@ -113,6 +119,44 @@ NS_IMETHODIMP nsPrefsCore::SetPrefsTree(nsIDOMWindow* aWin) } #endif // 0 +//---------------------------------------------------------------------------------------- +NS_IMETHODIMP nsPrefsCore::ShowWindow(nsIDOMWindow* /*aCurrentFrontWin*/) +//---------------------------------------------------------------------------------------- +{ + // Get app shell service. + nsIAppShellService *appShell; + nsresult rv = nsServiceManager::GetService(kAppShellServiceCID, + kIAppShellServiceIID, + (nsISupports**)&appShell); + + if (NS_FAILED(rv)) + return rv; + + nsString controllerCID = "43147b80-8a39-11d2-9938-0080c7cb1081"; + nsIWebShellWindow *newWindow; + + nsIURL *url; + rv = NS_NewURL(&url, "resource:/res/samples/PrefsWindow.html"); + + if (NS_FAILED(rv)) + return rv; + + // Create "save to disk" nsIXULCallbacks... + //nsIXULWindowCallbacks *cb = new nsFindDialogCallbacks( aURL, aContentType ); + nsIXULWindowCallbacks *cb = nsnull; + + rv = appShell->CreateTopLevelWindow( nsnull, + url, + controllerCID, + newWindow, + nsnull, + cb, + 504, + 346 ); + NS_RELEASE(url); + return rv; +} // nsPrefsCore::ShowPrefsWindow + //---------------------------------------------------------------------------------------- NS_IMETHODIMP nsPrefsCore::ChangePanel(const nsString& aURL) // Start loading of a new prefs panel. diff --git a/mozilla/xpfe/AppCores/xul/PrefsWindow.html b/mozilla/xpfe/AppCores/xul/PrefsWindow.html index 4e04cc24728..0f3221f3b18 100644 --- a/mozilla/xpfe/AppCores/xul/PrefsWindow.html +++ b/mozilla/xpfe/AppCores/xul/PrefsWindow.html @@ -4,16 +4,15 @@ - - - - - - + + + + + + - diff --git a/mozilla/xpfe/AppCores/xul/PrefsWindow.js b/mozilla/xpfe/AppCores/xul/PrefsWindow.js index 0a909f9cb2d..5bbf21c274a 100644 --- a/mozilla/xpfe/AppCores/xul/PrefsWindow.js +++ b/mozilla/xpfe/AppCores/xul/PrefsWindow.js @@ -13,10 +13,6 @@ function StartUp(windowName) { dump("PrefsCore has been created.\n"); prefsCore.Init("PrefsCore"); - if (windowName != "Top" && windowName != "Bottom") - { - prefsCore.PanelLoaded(window); - } } else { @@ -27,6 +23,10 @@ function StartUp(windowName) { dump("PrefsCore has already been created! Hurrah!\n"); } + if (prefsCore != null && windowName != "Top" && windowName != "Bottom") + { + prefsCore.PanelLoaded(window); + } } function DoSave() diff --git a/mozilla/xpfe/browser/src/navigator.xul b/mozilla/xpfe/browser/src/navigator.xul index 53cb0fb7081..91a68ef8f5b 100644 --- a/mozilla/xpfe/browser/src/navigator.xul +++ b/mozilla/xpfe/browser/src/navigator.xul @@ -312,16 +312,15 @@ function DoPreferences() { - var toolkitCore = XPAppCoresManager.Find("ToolkitCore"); - if (!toolkitCore) { - toolkitCore = new ToolkitCore(); - if (toolkitCore) { - toolkitCore.Init("ToolkitCore"); + var prefsCore = XPAppCoresManager.Find("PrefsCore"); + if (!prefsCore) { + prefsCore = new PrefsCore(); + if (prefsCore) { + prefsCore.Init("PrefsCore"); } } - if (toolkitCore) { - toolkitCore.ShowWindow("resource:/res/samples/PrefsWindow.html", - window); + if (prefsCore) { + prefsCore.ShowWindow(window); } }