зеркало из https://github.com/mozilla/gecko-dev.git
Application launcher...
This commit is contained in:
Родитель
7d39d8a031
Коммит
c3af294fcb
|
@ -0,0 +1,157 @@
|
|||
/* -*- 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 "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/NPL/
|
||||
*
|
||||
* 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 Mozilla Communicator client code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corporation. Portions created by Netscape are Copyright (C) 1998
|
||||
* Netscape Communications Corporation. All Rights Reserved.
|
||||
*/
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIURL.h"
|
||||
#include "nsIWidget.h"
|
||||
#include "plevent.h"
|
||||
|
||||
#include "nsIAppShell.h"
|
||||
#include "nsIAppShellService.h"
|
||||
|
||||
/* Define Class IDs */
|
||||
static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID);
|
||||
|
||||
/* Define Interface IDs */
|
||||
static NS_DEFINE_IID(kIAppShellServiceIID, NS_IAPPSHELL_SERVICE_IID);
|
||||
|
||||
|
||||
/*
|
||||
* This routine translates the nsresult into a platform specific return
|
||||
* code for the application...
|
||||
*/
|
||||
static int TranslateReturnValue(nsresult aResult)
|
||||
{
|
||||
if (NS_SUCCEEDED(aResult)) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
extern "C" void NS_SetupRegistry();
|
||||
|
||||
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
nsresult rv;
|
||||
#if 0
|
||||
nsICmdLineArguements* cmdLineArgs = nsnull;
|
||||
#endif
|
||||
nsIAppShellService* appShell = nsnull;
|
||||
|
||||
/*
|
||||
* Initialize XPCOM. Ultimately, this should be a function call such as
|
||||
* NS_XPCOM_Initialize(...).
|
||||
*
|
||||
* - PL_EventsLib(...)
|
||||
* - Repository
|
||||
* - ServiceManager
|
||||
*/
|
||||
// XXX: This call will be replaced by a registry initialization...
|
||||
NS_SetupRegistry();
|
||||
#ifdef XP_PC
|
||||
PL_InitializeEventsLib("");
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Start up the core services:
|
||||
* - Command-line processor.
|
||||
*/
|
||||
#if 0
|
||||
rv = nsServiceManager::GetService(kCmdLineProcessorCID,
|
||||
kICmdLineArgumentsIID,
|
||||
(nsISupports **)&cmdLineArgs);
|
||||
if (!NS_SUCCEEDED(rv)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
rv = cmdLineArgs->Initialize(argc, argv);
|
||||
if (PR_FALSE == NS_SUCCEEDED(rv)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Create the Application Shell instance...
|
||||
*/
|
||||
rv = nsServiceManager::GetService(kAppShellServiceCID,
|
||||
kIAppShellServiceIID,
|
||||
(nsISupports**)&appShell);
|
||||
if (!NS_SUCCEEDED(rv)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the Shell...
|
||||
*/
|
||||
rv = appShell->Initialize();
|
||||
if (!NS_SUCCEEDED(rv)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
/*
|
||||
* Post an event to the shell instance to load the AppShell
|
||||
* initialization routines...
|
||||
*
|
||||
* This allows the application to enter its event loop before having to
|
||||
* deal with GUI initialization...
|
||||
*/
|
||||
///write me...
|
||||
nsIURL* url;
|
||||
nsIWidget* newWindow;
|
||||
|
||||
rv = NS_NewURL(&url, "resource:/res/samples/test0.html");
|
||||
if (NS_FAILED(rv)) {
|
||||
goto done;
|
||||
}
|
||||
appShell->CreateTopLevelWindow(url, newWindow);
|
||||
NS_RELEASE(url);
|
||||
|
||||
/*
|
||||
* Start up the main event loop...
|
||||
*/
|
||||
rv = appShell->Run();
|
||||
|
||||
/*
|
||||
* Shutdown the Shell instance... This is done even if the Run(...)
|
||||
* method returned an error.
|
||||
*/
|
||||
(void) appShell->Shutdown();
|
||||
|
||||
done:
|
||||
/* Release the services... */
|
||||
#if 0
|
||||
if (nsnull != cmdLineArgs) {
|
||||
nsServiceManager::ReleaseService(kCmdLineProcessorCID, cmdLineArgs);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Release the shell... */
|
||||
if (nsnull != appShell) {
|
||||
nsServiceManager::ReleaseService(kAppShellServiceCID, appShell);
|
||||
}
|
||||
|
||||
/*
|
||||
* Translate the nsresult into an appropriate platform-specific return code.
|
||||
*/
|
||||
return TranslateReturnValue(rv);
|
||||
}
|
Загрузка…
Ссылка в новой задаче