Don't access broken service mgr during bootstrap failure
...so that displaying a (non-translated) error box upon BE_UNO_SERVICEMANAGER
works after all. Augment the error text with an exception message where
appropriate. This allows to revert fdfb7a3c4b
"Related fdo#51252: Report uncaught exceptions with MessageBox on Windows" as
that was to catch and display failures from instantiating the service mgr.
Change-Id: I049a38e95342634796eb0e940e2ee8e55193c9d3
This commit is contained in:
@@ -103,15 +103,16 @@ class Desktop : public Application
|
|||||||
static ResMgr* GetDesktopResManager();
|
static ResMgr* GetDesktopResManager();
|
||||||
static CommandLineArgs& GetCommandLineArgs();
|
static CommandLineArgs& GetCommandLineArgs();
|
||||||
|
|
||||||
void HandleBootstrapErrors( BootstrapError );
|
void HandleBootstrapErrors(
|
||||||
void SetBootstrapError( BootstrapError nError )
|
BootstrapError nError, OUString const & aMessage );
|
||||||
|
void SetBootstrapError(
|
||||||
|
BootstrapError nError, OUString const & aMessage )
|
||||||
{
|
{
|
||||||
if ( m_aBootstrapError == BE_OK )
|
if ( m_aBootstrapError == BE_OK )
|
||||||
|
{
|
||||||
m_aBootstrapError = nError;
|
m_aBootstrapError = nError;
|
||||||
}
|
m_aBootstrapErrorMessage = aMessage;
|
||||||
BootstrapError GetBootstrapError() const
|
}
|
||||||
{
|
|
||||||
return m_aBootstrapError;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBootstrapStatus( BootstrapStatus nStatus )
|
void SetBootstrapStatus( BootstrapStatus nStatus )
|
||||||
@@ -135,8 +136,6 @@ class Desktop : public Application
|
|||||||
void SetSplashScreenText( const ::rtl::OUString& rText );
|
void SetSplashScreenText( const ::rtl::OUString& rText );
|
||||||
void SetSplashScreenProgress( sal_Int32 );
|
void SetSplashScreenProgress( sal_Int32 );
|
||||||
|
|
||||||
static void ensureProcessServiceFactory();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Bootstrap methods
|
// Bootstrap methods
|
||||||
static ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > CreateApplicationServiceManager();
|
static ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > CreateApplicationServiceManager();
|
||||||
@@ -159,9 +158,6 @@ class Desktop : public Application
|
|||||||
void HandleBootstrapPathErrors( ::utl::Bootstrap::Status, const ::rtl::OUString& aMsg );
|
void HandleBootstrapPathErrors( ::utl::Bootstrap::Status, const ::rtl::OUString& aMsg );
|
||||||
void StartSetup( const ::rtl::OUString& aParameters );
|
void StartSetup( const ::rtl::OUString& aParameters );
|
||||||
|
|
||||||
// Get a resource message string securely e.g. if resource cannot be retrieved return aFaultBackMsg
|
|
||||||
::rtl::OUString GetMsgString( sal_uInt16 nId, const ::rtl::OUString& aFaultBackMsg );
|
|
||||||
|
|
||||||
// Create a error message depending on bootstrap failure code and an optional file url
|
// Create a error message depending on bootstrap failure code and an optional file url
|
||||||
::rtl::OUString CreateErrorMsgString( utl::Bootstrap::FailureCode nFailureCode,
|
::rtl::OUString CreateErrorMsgString( utl::Bootstrap::FailureCode nFailureCode,
|
||||||
const ::rtl::OUString& aFileURL );
|
const ::rtl::OUString& aFileURL );
|
||||||
@@ -200,6 +196,7 @@ class Desktop : public Application
|
|||||||
bool m_bCleanedExtensionCache;
|
bool m_bCleanedExtensionCache;
|
||||||
bool m_bServicesRegistered;
|
bool m_bServicesRegistered;
|
||||||
BootstrapError m_aBootstrapError;
|
BootstrapError m_aBootstrapError;
|
||||||
|
OUString m_aBootstrapErrorMessage;
|
||||||
BootstrapStatus m_aBootstrapStatus;
|
BootstrapStatus m_aBootstrapStatus;
|
||||||
|
|
||||||
std::auto_ptr< Lockfile > m_pLockfile;
|
std::auto_ptr< Lockfile > m_pLockfile;
|
||||||
|
@@ -378,28 +378,34 @@ ResMgr* Desktop::GetDesktopResManager()
|
|||||||
return Desktop::pResMgr;
|
return Desktop::pResMgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Get a message string securely. There is a fallback string if the resource
|
// Get a message string securely. There is a fallback string if the resource
|
||||||
// is not available.
|
// is not available.
|
||||||
|
|
||||||
OUString Desktop::GetMsgString( sal_uInt16 nId, const OUString& aFaultBackMsg )
|
OUString GetMsgString(
|
||||||
|
sal_uInt16 nId, const OUString& aFaultBackMsg,
|
||||||
|
bool bAlwaysUseFaultBackMsg = false )
|
||||||
{
|
{
|
||||||
ResMgr* resMgr = GetDesktopResManager();
|
if ( !bAlwaysUseFaultBackMsg )
|
||||||
if ( !resMgr )
|
{
|
||||||
return aFaultBackMsg;
|
ResMgr* resMgr = Desktop::GetDesktopResManager();
|
||||||
else
|
if ( resMgr )
|
||||||
return OUString( String( ResId( nId, *resMgr )));
|
return OUString( String( ResId( nId, *resMgr )));
|
||||||
|
}
|
||||||
|
return aFaultBackMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
OUString MakeStartupErrorMessage(OUString const & aErrorMessage)
|
OUString MakeStartupErrorMessage(
|
||||||
|
OUString const & aErrorMessage, bool bAlwaysUseFaultBackMsg = false )
|
||||||
{
|
{
|
||||||
OUStringBuffer aDiagnosticMessage( 100 );
|
OUStringBuffer aDiagnosticMessage( 100 );
|
||||||
|
|
||||||
ResMgr* pResMgr = Desktop::GetDesktopResManager();
|
aDiagnosticMessage.append(
|
||||||
if ( pResMgr )
|
GetMsgString(
|
||||||
aDiagnosticMessage.append( OUString(String(ResId(STR_BOOTSTRAP_ERR_CANNOT_START, *pResMgr))) );
|
STR_BOOTSTRAP_ERR_CANNOT_START, "The program cannot be started.",
|
||||||
else
|
bAlwaysUseFaultBackMsg ) );
|
||||||
aDiagnosticMessage.appendAscii( "The program cannot be started." );
|
|
||||||
|
|
||||||
aDiagnosticMessage.appendAscii( "\n" );
|
aDiagnosticMessage.appendAscii( "\n" );
|
||||||
|
|
||||||
@@ -468,9 +474,8 @@ static bool ShouldSuppressUI(const CommandLineArgs& rCmdLine)
|
|||||||
rCmdLine.IsQuickstart();
|
rCmdLine.IsQuickstart();
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
struct theCommandLineArgs : public rtl::Static< CommandLineArgs, theCommandLineArgs > {};
|
||||||
{
|
|
||||||
struct theCommandLineArgs : public rtl::Static< CommandLineArgs, theCommandLineArgs > {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandLineArgs& Desktop::GetCommandLineArgs()
|
CommandLineArgs& Desktop::GetCommandLineArgs()
|
||||||
@@ -591,29 +596,30 @@ void Desktop::Init()
|
|||||||
// We need to have service factory before going further, but see fdo#37195.
|
// We need to have service factory before going further, but see fdo#37195.
|
||||||
// Doing this will mmap common.rdb, making it not overwritable on windows,
|
// Doing this will mmap common.rdb, making it not overwritable on windows,
|
||||||
// so this can't happen before the synchronization above. Lets rework this
|
// so this can't happen before the synchronization above. Lets rework this
|
||||||
// so that the above is called *from* ensureProcessServiceFactory or
|
// so that the above is called *from* CreateApplicationServiceManager or
|
||||||
// something to enforce this gotcha
|
// something to enforce this gotcha
|
||||||
ensureProcessServiceFactory();
|
try
|
||||||
|
|
||||||
if( !::comphelper::getProcessServiceFactory().is())
|
|
||||||
{
|
{
|
||||||
OSL_FAIL("Service factory should have been crated in soffice_main().");
|
comphelper::setProcessServiceFactory(CreateApplicationServiceManager());
|
||||||
SetBootstrapError( BE_UNO_SERVICEMANAGER );
|
}
|
||||||
|
catch (css::uno::Exception & e)
|
||||||
|
{
|
||||||
|
SetBootstrapError( BE_UNO_SERVICEMANAGER, e.Message );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( GetBootstrapError() == BE_OK )
|
if ( m_aBootstrapError == BE_OK )
|
||||||
{
|
{
|
||||||
// prepare language
|
// prepare language
|
||||||
if ( !LanguageSelection::prepareLanguage() )
|
if ( !LanguageSelection::prepareLanguage() )
|
||||||
{
|
{
|
||||||
if ( LanguageSelection::getStatus() == LanguageSelection::LS_STATUS_CANNOT_DETERMINE_LANGUAGE )
|
if ( LanguageSelection::getStatus() == LanguageSelection::LS_STATUS_CANNOT_DETERMINE_LANGUAGE )
|
||||||
SetBootstrapError( BE_LANGUAGE_MISSING );
|
SetBootstrapError( BE_LANGUAGE_MISSING, OUString() );
|
||||||
else
|
else
|
||||||
SetBootstrapError( BE_OFFICECONFIG_BROKEN );
|
SetBootstrapError( BE_OFFICECONFIG_BROKEN, OUString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( GetBootstrapError() == BE_OK )
|
if ( m_aBootstrapError == BE_OK )
|
||||||
{
|
{
|
||||||
const CommandLineArgs& rCmdLineArgs = GetCommandLineArgs();
|
const CommandLineArgs& rCmdLineArgs = GetCommandLineArgs();
|
||||||
// start ipc thread only for non-remote offices
|
// start ipc thread only for non-remote offices
|
||||||
@@ -621,7 +627,7 @@ void Desktop::Init()
|
|||||||
OfficeIPCThread::Status aStatus = OfficeIPCThread::EnableOfficeIPCThread();
|
OfficeIPCThread::Status aStatus = OfficeIPCThread::EnableOfficeIPCThread();
|
||||||
if ( aStatus == OfficeIPCThread::IPC_STATUS_BOOTSTRAP_ERROR )
|
if ( aStatus == OfficeIPCThread::IPC_STATUS_BOOTSTRAP_ERROR )
|
||||||
{
|
{
|
||||||
SetBootstrapError( BE_PATHINFO_MISSING );
|
SetBootstrapError( BE_PATHINFO_MISSING, OUString() );
|
||||||
}
|
}
|
||||||
else if ( aStatus == OfficeIPCThread::IPC_STATUS_2ND_OFFICE )
|
else if ( aStatus == OfficeIPCThread::IPC_STATUS_2ND_OFFICE )
|
||||||
{
|
{
|
||||||
@@ -644,29 +650,6 @@ void Desktop::InitFinished()
|
|||||||
CloseSplashScreen();
|
CloseSplashScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCommandLineArgs() requires this code to work, otherwise it will abort, and
|
|
||||||
// on Unix command line args needs to be checked before Desktop::Init()
|
|
||||||
void Desktop::ensureProcessServiceFactory()
|
|
||||||
{
|
|
||||||
if (!comphelper::getProcessServiceFactory().is())
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
comphelper::setProcessServiceFactory(
|
|
||||||
CreateApplicationServiceManager());
|
|
||||||
}
|
|
||||||
catch (const css::uno::Exception& e)
|
|
||||||
{
|
|
||||||
// Application::ShowNativeErrorBox would only work after InitVCL, so
|
|
||||||
// all we can realistically do here is hope the user can see stderr:
|
|
||||||
std::cerr << "UNO Exception: " << e.Message << std::endl;
|
|
||||||
// Let exceptions escape and tear down the process, it is completely
|
|
||||||
// broken anyway:
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Desktop::DeInit()
|
void Desktop::DeInit()
|
||||||
{
|
{
|
||||||
RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::DeInit" );
|
RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::DeInit" );
|
||||||
@@ -881,7 +864,8 @@ void Desktop::HandleBootstrapPathErrors( ::utl::Bootstrap::Status aBootstrapStat
|
|||||||
return MakeStartupErrorMessage( aMsg );
|
return MakeStartupErrorMessage( aMsg );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Desktop::HandleBootstrapErrors( BootstrapError aBootstrapError )
|
void Desktop::HandleBootstrapErrors(
|
||||||
|
BootstrapError aBootstrapError, OUString const & aErrorMessage )
|
||||||
{
|
{
|
||||||
if ( aBootstrapError == BE_PATHINFO_MISSING )
|
if ( aBootstrapError == BE_PATHINFO_MISSING )
|
||||||
{
|
{
|
||||||
@@ -962,16 +946,18 @@ void Desktop::HandleBootstrapErrors( BootstrapError aBootstrapError )
|
|||||||
// PropertyValue is available). To give the user a hint even if
|
// PropertyValue is available). To give the user a hint even if
|
||||||
// generating and displaying a message box below crashes, print a
|
// generating and displaying a message box below crashes, print a
|
||||||
// hard-coded message on stderr first:
|
// hard-coded message on stderr first:
|
||||||
fputs(
|
std::cerr
|
||||||
aBootstrapError == BE_UNO_SERVICEMANAGER
|
<< "The application cannot be started.\n"
|
||||||
? ("The application cannot be started. " "\n"
|
// STR_BOOTSTRAP_ERR_CANNOT_START
|
||||||
"The component manager is not available." "\n")
|
<< (aBootstrapError == BE_UNO_SERVICEMANAGER
|
||||||
// STR_BOOTSTRAP_ERR_CANNOT_START, STR_BOOTSTRAP_ERR_NO_SERVICE
|
? "The component manager is not available.\n"
|
||||||
: ("The application cannot be started. " "\n"
|
// STR_BOOTSTRAP_ERR_NO_SERVICE
|
||||||
"The configuration service is not available." "\n"),
|
: "The configuration service is not available.\n");
|
||||||
// STR_BOOTSTRAP_ERR_CANNOT_START,
|
// STR_BOOTSTRAP_ERR_NO_CFG_SERVICE
|
||||||
// STR_BOOTSTRAP_ERR_NO_CFG_SERVICE
|
if ( !aErrorMessage.isEmpty() )
|
||||||
stderr);
|
{
|
||||||
|
std::cerr << "(\"" << aErrorMessage << "\")\n";
|
||||||
|
}
|
||||||
|
|
||||||
// First sentence. We cannot bootstrap office further!
|
// First sentence. We cannot bootstrap office further!
|
||||||
OUString aMessage;
|
OUString aMessage;
|
||||||
@@ -980,24 +966,32 @@ void Desktop::HandleBootstrapErrors( BootstrapError aBootstrapError )
|
|||||||
OUString aErrorMsg;
|
OUString aErrorMsg;
|
||||||
|
|
||||||
if ( aBootstrapError == BE_UNO_SERVICEMANAGER )
|
if ( aBootstrapError == BE_UNO_SERVICEMANAGER )
|
||||||
aErrorMsg = GetMsgString( STR_BOOTSTRAP_ERR_NO_SERVICE,
|
aErrorMsg = "The service manager is not available.";
|
||||||
OUString( "The service manager is not available." ) );
|
|
||||||
else
|
else
|
||||||
aErrorMsg = GetMsgString( STR_BOOTSTRAP_ERR_NO_CFG_SERVICE,
|
aErrorMsg = GetMsgString( STR_BOOTSTRAP_ERR_NO_CFG_SERVICE,
|
||||||
OUString( "The configuration service is not available." ) );
|
OUString( "The configuration service is not available." ) );
|
||||||
|
|
||||||
aDiagnosticMessage.append( aErrorMsg );
|
aDiagnosticMessage.append( aErrorMsg );
|
||||||
aDiagnosticMessage.appendAscii( "\n" );
|
aDiagnosticMessage.appendAscii( "\n" );
|
||||||
|
if ( !aErrorMessage.isEmpty() )
|
||||||
|
{
|
||||||
|
aDiagnosticMessage.appendAscii( "(\"" );
|
||||||
|
aDiagnosticMessage.append( aErrorMessage );
|
||||||
|
aDiagnosticMessage.appendAscii( "\")\n" );
|
||||||
|
}
|
||||||
|
|
||||||
// Due to the fact the we haven't a backup applicat.rdb file anymore it is not possible to
|
// Due to the fact the we haven't a backup applicat.rdb file anymore it is not possible to
|
||||||
// repair the installation with the setup executable besides the office executable. Now
|
// repair the installation with the setup executable besides the office executable. Now
|
||||||
// we have to ask the user to start the setup on CD/installation directory manually!!
|
// we have to ask the user to start the setup on CD/installation directory manually!!
|
||||||
OUString aStartSetupManually( GetMsgString(
|
OUString aStartSetupManually( GetMsgString(
|
||||||
STR_ASK_START_SETUP_MANUALLY,
|
STR_ASK_START_SETUP_MANUALLY,
|
||||||
OUString( "Start setup application to repair the installation from CD, or the folder containing the installation packages." ) ));
|
OUString( "Start setup application to repair the installation from CD, or the folder containing the installation packages." ),
|
||||||
|
aBootstrapError == BE_UNO_SERVICEMANAGER ) );
|
||||||
|
|
||||||
aDiagnosticMessage.append( aStartSetupManually );
|
aDiagnosticMessage.append( aStartSetupManually );
|
||||||
aMessage = MakeStartupErrorMessage( aDiagnosticMessage.makeStringAndClear() );
|
aMessage = MakeStartupErrorMessage(
|
||||||
|
aDiagnosticMessage.makeStringAndClear(),
|
||||||
|
aBootstrapError == BE_UNO_SERVICEMANAGER );
|
||||||
|
|
||||||
FatalError( aMessage);
|
FatalError( aMessage);
|
||||||
}
|
}
|
||||||
@@ -1378,10 +1372,9 @@ int Desktop::Main()
|
|||||||
com::sun::star::uno::ContextLayer layer(
|
com::sun::star::uno::ContextLayer layer(
|
||||||
com::sun::star::uno::getCurrentContext() );
|
com::sun::star::uno::getCurrentContext() );
|
||||||
|
|
||||||
BootstrapError eError = GetBootstrapError();
|
if ( m_aBootstrapError != BE_OK )
|
||||||
if ( eError != BE_OK )
|
|
||||||
{
|
{
|
||||||
HandleBootstrapErrors( eError );
|
HandleBootstrapErrors( m_aBootstrapError, m_aBootstrapErrorMessage );
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1415,11 +1408,12 @@ int Desktop::Main()
|
|||||||
{
|
{
|
||||||
OSL_FAIL("userinstall failed");
|
OSL_FAIL("userinstall failed");
|
||||||
if ( inst_fin == UserInstall::E_NoDiskSpace )
|
if ( inst_fin == UserInstall::E_NoDiskSpace )
|
||||||
HandleBootstrapErrors( BE_USERINSTALL_NOTENOUGHDISKSPACE );
|
HandleBootstrapErrors(
|
||||||
|
BE_USERINSTALL_NOTENOUGHDISKSPACE, OUString() );
|
||||||
else if ( inst_fin == UserInstall::E_NoWriteAccess )
|
else if ( inst_fin == UserInstall::E_NoWriteAccess )
|
||||||
HandleBootstrapErrors( BE_USERINSTALL_NOWRITEACCESS );
|
HandleBootstrapErrors( BE_USERINSTALL_NOWRITEACCESS, OUString() );
|
||||||
else
|
else
|
||||||
HandleBootstrapErrors( BE_USERINSTALL_FAILED );
|
HandleBootstrapErrors( BE_USERINSTALL_FAILED, OUString() );
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
// refresh path information
|
// refresh path information
|
||||||
@@ -1797,9 +1791,10 @@ bool Desktop::InitializeConfiguration()
|
|||||||
comphelper::getProcessComponentContext() );
|
comphelper::getProcessComponentContext() );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch( const ::com::sun::star::lang::ServiceNotRegisteredException& )
|
catch( ::com::sun::star::lang::ServiceNotRegisteredException & e )
|
||||||
{
|
{
|
||||||
this->HandleBootstrapErrors( Desktop::BE_UNO_SERVICE_CONFIG_MISSING );
|
this->HandleBootstrapErrors(
|
||||||
|
Desktop::BE_UNO_SERVICE_CONFIG_MISSING, e.Message );
|
||||||
}
|
}
|
||||||
catch( const ::com::sun::star::configuration::MissingBootstrapFileException& e )
|
catch( const ::com::sun::star::configuration::MissingBootstrapFileException& e )
|
||||||
{
|
{
|
||||||
|
@@ -51,7 +51,6 @@
|
|||||||
#define STR_BOOTSTRAP_ERR_NO_SUPPORT (RID_DESKTOP_STRING_START+107)
|
#define STR_BOOTSTRAP_ERR_NO_SUPPORT (RID_DESKTOP_STRING_START+107)
|
||||||
#define STR_BOOTSTRAP_ERR_LANGUAGE_MISSING (RID_DESKTOP_STRING_START+108)
|
#define STR_BOOTSTRAP_ERR_LANGUAGE_MISSING (RID_DESKTOP_STRING_START+108)
|
||||||
|
|
||||||
#define STR_BOOTSTRAP_ERR_NO_SERVICE (RID_DESKTOP_STRING_START+120)
|
|
||||||
#define STR_BOOTSTRAP_ERR_NO_CFG_SERVICE (RID_DESKTOP_STRING_START+121)
|
#define STR_BOOTSTRAP_ERR_NO_CFG_SERVICE (RID_DESKTOP_STRING_START+121)
|
||||||
#define STR_BOOTSTRAP_ERR_CFG_DATAACCESS (RID_DESKTOP_STRING_START+122)
|
#define STR_BOOTSTRAP_ERR_CFG_DATAACCESS (RID_DESKTOP_STRING_START+122)
|
||||||
#define STR_BOOTSTRAP_ERR_NO_PATHSET_SERVICE (RID_DESKTOP_STRING_START+123)
|
#define STR_BOOTSTRAP_ERR_NO_PATHSET_SERVICE (RID_DESKTOP_STRING_START+123)
|
||||||
|
@@ -88,11 +88,6 @@ String STR_BOOTSTRAP_ERR_LANGUAGE_MISSING
|
|||||||
Text [ en-US ] = "The user interface language cannot be determined.";
|
Text [ en-US ] = "The user interface language cannot be determined.";
|
||||||
};
|
};
|
||||||
|
|
||||||
String STR_BOOTSTRAP_ERR_NO_SERVICE
|
|
||||||
{
|
|
||||||
Text [ en-US ] = "The component manager is not available.";
|
|
||||||
};
|
|
||||||
|
|
||||||
String STR_BOOTSTRAP_ERR_NO_CFG_SERVICE
|
String STR_BOOTSTRAP_ERR_NO_CFG_SERVICE
|
||||||
{
|
{
|
||||||
Text [ en-US ] = "The configuration service is not available.";
|
Text [ en-US ] = "The configuration service is not available.";
|
||||||
|
@@ -38,21 +38,14 @@
|
|||||||
#include <rtl/bootstrap.hxx>
|
#include <rtl/bootstrap.hxx>
|
||||||
#include <tools/extendapplicationenvironment.hxx>
|
#include <tools/extendapplicationenvironment.hxx>
|
||||||
|
|
||||||
#if defined WNT
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int SVMain();
|
int SVMain();
|
||||||
|
|
||||||
// -=-= main() -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
// -=-= main() -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||||
|
|
||||||
extern "C" int DESKTOP_DLLPUBLIC soffice_main()
|
extern "C" int DESKTOP_DLLPUBLIC soffice_main()
|
||||||
{
|
{
|
||||||
#if defined ANDROID || defined WNT
|
#if defined ANDROID
|
||||||
try {
|
try {
|
||||||
#endif
|
|
||||||
#if defined(ANDROID)
|
|
||||||
rtl::Bootstrap::setIniFilename(
|
rtl::Bootstrap::setIniFilename(
|
||||||
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///assets/program/lofficerc")));
|
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///assets/program/lofficerc")));
|
||||||
#endif
|
#endif
|
||||||
@@ -83,20 +76,10 @@ extern "C" int DESKTOP_DLLPUBLIC soffice_main()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return SVMain();
|
return SVMain();
|
||||||
#if defined ANDROID || defined WNT
|
|
||||||
} catch (const ::com::sun::star::uno::Exception &e) {
|
|
||||||
#if defined ANDROID
|
#if defined ANDROID
|
||||||
|
} catch (const ::com::sun::star::uno::Exception &e) {
|
||||||
fprintf (stderr, "Not handled UNO exception at main: '%s'\n",
|
fprintf (stderr, "Not handled UNO exception at main: '%s'\n",
|
||||||
rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr());
|
rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr());
|
||||||
#elif defined WNT
|
|
||||||
MessageBoxW(
|
|
||||||
0,
|
|
||||||
reinterpret_cast< LPCWSTR >(
|
|
||||||
rtl::OUString("Unhandled exception:\n" + e.Message).getStr()),
|
|
||||||
reinterpret_cast< LPCWSTR >(rtl::OUString("Fatal Error").getStr()),
|
|
||||||
(MB_OK | MB_ICONERROR | MB_DEFBUTTON1 | MB_TASKMODAL
|
|
||||||
| MB_SETFOREGROUND | MB_TOPMOST));
|
|
||||||
#endif
|
|
||||||
throw; // to get exception type printed
|
throw; // to get exception type printed
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -106,9 +106,13 @@ rtl::OUString AquaSalSystem::GetDisplayScreenName( unsigned int nScreen )
|
|||||||
return aRet;
|
return aRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString* getStandardString( int nButtonId )
|
static NSString* getStandardString( int nButtonId, bool bUseResources )
|
||||||
{
|
{
|
||||||
rtl::OUString aText( Button::GetStandardText( nButtonId ) );
|
rtl::OUString aText;
|
||||||
|
if( bUseResources )
|
||||||
|
{
|
||||||
|
aText = Button::GetStandardText( nButtonId );
|
||||||
|
}
|
||||||
if( aText.isEmpty() ) // this is for bad cases, we might be missing the vcl resource
|
if( aText.isEmpty() ) // this is for bad cases, we might be missing the vcl resource
|
||||||
{
|
{
|
||||||
switch( nButtonId )
|
switch( nButtonId )
|
||||||
@@ -127,7 +131,7 @@ static NSString* getStandardString( int nButtonId )
|
|||||||
int AquaSalSystem::ShowNativeMessageBox( const rtl::OUString& rTitle,
|
int AquaSalSystem::ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton)
|
int nDefaultButton, bool bUseResources)
|
||||||
{
|
{
|
||||||
NSString* pTitle = CreateNSString( rTitle );
|
NSString* pTitle = CreateNSString( rTitle );
|
||||||
NSString* pMessage = CreateNSString( rMessage );
|
NSString* pMessage = CreateNSString( rMessage );
|
||||||
@@ -166,11 +170,14 @@ int AquaSalSystem::ShowNativeMessageBox( const rtl::OUString& rTitle,
|
|||||||
if( aButtonIds[nC].nDefaultButton == nDefaultButton )
|
if( aButtonIds[nC].nDefaultButton == nDefaultButton )
|
||||||
{
|
{
|
||||||
if( aButtonIds[nC].nTextIds[0] != -1 )
|
if( aButtonIds[nC].nTextIds[0] != -1 )
|
||||||
pDefText = getStandardString( aButtonIds[nC].nTextIds[0] );
|
pDefText = getStandardString(
|
||||||
|
aButtonIds[nC].nTextIds[0], bUseResources );
|
||||||
if( aButtonIds[nC].nTextIds[1] != -1 )
|
if( aButtonIds[nC].nTextIds[1] != -1 )
|
||||||
pAltText = getStandardString( aButtonIds[nC].nTextIds[1] );
|
pAltText = getStandardString(
|
||||||
|
aButtonIds[nC].nTextIds[1], bUseResources );
|
||||||
if( aButtonIds[nC].nTextIds[2] != -1 )
|
if( aButtonIds[nC].nTextIds[2] != -1 )
|
||||||
pOthText = getStandardString( aButtonIds[nC].nTextIds[2] );
|
pOthText = getStandardString(
|
||||||
|
aButtonIds[nC].nTextIds[2], bUseResources );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -47,6 +47,47 @@
|
|||||||
|
|
||||||
using namespace com::sun::star;
|
using namespace com::sun::star;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
OUString GetNativeMessageBoxButtonText( int nButtonId, bool bUseResources )
|
||||||
|
{
|
||||||
|
OUString aText;
|
||||||
|
if( bUseResources )
|
||||||
|
{
|
||||||
|
aText = Button::GetStandardText( nButtonId );
|
||||||
|
}
|
||||||
|
if( aText.isEmpty() )
|
||||||
|
{
|
||||||
|
switch( nButtonId )
|
||||||
|
{
|
||||||
|
case BUTTON_OK:
|
||||||
|
aText = "OK";
|
||||||
|
break;
|
||||||
|
case BUTTON_CANCEL:
|
||||||
|
aText = "Cancel";
|
||||||
|
break;
|
||||||
|
case BUTTON_ABORT:
|
||||||
|
aText = "Abort";
|
||||||
|
break;
|
||||||
|
case BUTTON_RETRY:
|
||||||
|
aText = "Retry";
|
||||||
|
break;
|
||||||
|
case BUTTON_IGNORE:
|
||||||
|
aText = "Ignore";
|
||||||
|
break;
|
||||||
|
case BUTTON_YES:
|
||||||
|
aText = "Yes";
|
||||||
|
break;
|
||||||
|
case BUTTON_NO:
|
||||||
|
aText = "No";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aText;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
SalGenericSystem::SalGenericSystem()
|
SalGenericSystem::SalGenericSystem()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -56,7 +97,8 @@ SalGenericSystem::~SalGenericSystem()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int SalGenericSystem::ShowNativeMessageBox( const rtl::OUString& rTitle, const rtl::OUString& rMessage,
|
int SalGenericSystem::ShowNativeMessageBox( const rtl::OUString& rTitle, const rtl::OUString& rMessage,
|
||||||
int nButtonCombination, int nDefaultButton )
|
int nButtonCombination, int nDefaultButton,
|
||||||
|
bool bUseResources )
|
||||||
{
|
{
|
||||||
int nDefButton = 0;
|
int nDefButton = 0;
|
||||||
std::list< rtl::OUString > aButtons;
|
std::list< rtl::OUString > aButtons;
|
||||||
@@ -67,15 +109,15 @@ int SalGenericSystem::ShowNativeMessageBox( const rtl::OUString& rTitle, const r
|
|||||||
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK ||
|
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK ||
|
||||||
nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL )
|
nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL )
|
||||||
{
|
{
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_OK ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_OK, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK;
|
||||||
}
|
}
|
||||||
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_YES_NO_CANCEL ||
|
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_YES_NO_CANCEL ||
|
||||||
nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_YES_NO )
|
nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_YES_NO )
|
||||||
{
|
{
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_YES ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_YES, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_YES;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_YES;
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_NO ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_NO, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO;
|
||||||
if( nDefaultButton == SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO )
|
if( nDefaultButton == SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO )
|
||||||
nDefButton = 1;
|
nDefButton = 1;
|
||||||
@@ -86,21 +128,21 @@ int SalGenericSystem::ShowNativeMessageBox( const rtl::OUString& rTitle, const r
|
|||||||
{
|
{
|
||||||
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL )
|
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL )
|
||||||
{
|
{
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_RETRY ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_RETRY, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_RETRY;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_RETRY;
|
||||||
}
|
}
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_CANCEL ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_CANCEL, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL;
|
||||||
if( nDefaultButton == SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL )
|
if( nDefaultButton == SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL )
|
||||||
nDefButton = aButtons.size()-1;
|
nDefButton = aButtons.size()-1;
|
||||||
}
|
}
|
||||||
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_ABORT_RETRY_IGNORE )
|
if( nButtonCombination == SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_ABORT_RETRY_IGNORE )
|
||||||
{
|
{
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_ABORT ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_ABORT, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_ABORT;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_ABORT;
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_RETRY ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_RETRY, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_RETRY;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_RETRY;
|
||||||
aButtons.push_back( Button::GetStandardText( BUTTON_IGNORE ) );
|
aButtons.push_back( GetNativeMessageBoxButtonText( BUTTON_IGNORE, bUseResources ) );
|
||||||
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_IGNORE;
|
nButtonIds[nBut++] = SALSYSTEM_SHOWNATIVEMSGBOX_BTN_IGNORE;
|
||||||
switch( nDefaultButton )
|
switch( nDefaultButton )
|
||||||
{
|
{
|
||||||
|
@@ -52,7 +52,7 @@ public:
|
|||||||
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton);
|
int nDefaultButton, bool bUseResources);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -50,7 +50,7 @@ class VCL_DLLPUBLIC SalGenericSystem : public SalSystem
|
|||||||
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton);
|
int nDefaultButton, bool bUseResources);
|
||||||
|
|
||||||
// simple helpers primarily for X Windowing W_CLASS hints
|
// simple helpers primarily for X Windowing W_CLASS hints
|
||||||
static const char *getFrameResName();
|
static const char *getFrameResName();
|
||||||
|
@@ -46,7 +46,7 @@ public:
|
|||||||
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton);
|
int nDefaultButton, bool bUseResources);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _SV_SALSYS_H
|
#endif // _SV_SALSYS_H
|
||||||
|
@@ -133,6 +133,10 @@ public:
|
|||||||
The effect of specifying a button that doesn't belong
|
The effect of specifying a button that doesn't belong
|
||||||
to the specified button combination is undefined.
|
to the specified button combination is undefined.
|
||||||
|
|
||||||
|
@param bUseResources
|
||||||
|
If false, assume initialization of the application failed early and do
|
||||||
|
not try to access any resources.
|
||||||
|
|
||||||
@returns the identifier of the button that was pressed by the user.
|
@returns the identifier of the button that was pressed by the user.
|
||||||
See button identifier above. If the function fails the
|
See button identifier above. If the function fails the
|
||||||
return value is 0.
|
return value is 0.
|
||||||
@@ -140,7 +144,8 @@ public:
|
|||||||
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton) = 0;
|
int nDefaultButton,
|
||||||
|
bool bUseResources ) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
SalSystem* ImplGetSalSystem();
|
SalSystem* ImplGetSalSystem();
|
||||||
|
@@ -76,7 +76,7 @@ public:
|
|||||||
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
virtual int ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton);
|
int nDefaultButton, bool bUseResources);
|
||||||
bool initMonitors();
|
bool initMonitors();
|
||||||
// discards monitorinfo; used by WM_DISPLAYCHANGED handler
|
// discards monitorinfo; used by WM_DISPLAYCHANGED handler
|
||||||
void clearMonitors();
|
void clearMonitors();
|
||||||
|
@@ -106,9 +106,13 @@ rtl::OUString IosSalSystem::GetDisplayScreenName( unsigned int nScreen )
|
|||||||
return aRet;
|
return aRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString* getStandardString( int nButtonId )
|
static NSString* getStandardString( int nButtonId, bool bUseResources )
|
||||||
{
|
{
|
||||||
rtl::OUString aText( Button::GetStandardText( nButtonId ) );
|
rtl::OUString aText;
|
||||||
|
if( bUseResources )
|
||||||
|
{
|
||||||
|
aText = Button::GetStandardText( nButtonId );
|
||||||
|
}
|
||||||
if( ! aText.getLength() ) // this is for bad cases, we might be missing the vcl resource
|
if( ! aText.getLength() ) // this is for bad cases, we might be missing the vcl resource
|
||||||
{
|
{
|
||||||
switch( nButtonId )
|
switch( nButtonId )
|
||||||
@@ -150,7 +154,7 @@ static NSString* getStandardString( int nButtonId )
|
|||||||
int IosSalSystem::ShowNativeMessageBox( const rtl::OUString& rTitle,
|
int IosSalSystem::ShowNativeMessageBox( const rtl::OUString& rTitle,
|
||||||
const rtl::OUString& rMessage,
|
const rtl::OUString& rMessage,
|
||||||
int nButtonCombination,
|
int nButtonCombination,
|
||||||
int nDefaultButton)
|
int nDefaultButton, bool bUseResources)
|
||||||
{
|
{
|
||||||
NSString* pTitle = CreateNSString( rTitle );
|
NSString* pTitle = CreateNSString( rTitle );
|
||||||
NSString* pMessage = CreateNSString( rMessage );
|
NSString* pMessage = CreateNSString( rMessage );
|
||||||
@@ -189,11 +193,14 @@ int IosSalSystem::ShowNativeMessageBox( const rtl::OUString& rTitle,
|
|||||||
if( aButtonIds[nC].nDefaultButton == nDefaultButton )
|
if( aButtonIds[nC].nDefaultButton == nDefaultButton )
|
||||||
{
|
{
|
||||||
if( aButtonIds[nC].nTextIds[0] != -1 )
|
if( aButtonIds[nC].nTextIds[0] != -1 )
|
||||||
pDefText = getStandardString( aButtonIds[nC].nTextIds[0] );
|
pDefText = getStandardString(
|
||||||
|
aButtonIds[nC].nTextIds[0], bUseResources );
|
||||||
if( aButtonIds[nC].nTextIds[1] != -1 )
|
if( aButtonIds[nC].nTextIds[1] != -1 )
|
||||||
pAltText = getStandardString( aButtonIds[nC].nTextIds[1] );
|
pAltText = getStandardString(
|
||||||
|
aButtonIds[nC].nTextIds[1], bUseResources );
|
||||||
if( aButtonIds[nC].nTextIds[2] != -1 )
|
if( aButtonIds[nC].nTextIds[2] != -1 )
|
||||||
pOthText = getStandardString( aButtonIds[nC].nTextIds[2] );
|
pOthText = getStandardString(
|
||||||
|
aButtonIds[nC].nTextIds[2], bUseResources );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1716,7 +1716,7 @@ void Application::ShowNativeErrorBox(const String& sTitle ,
|
|||||||
sTitle,
|
sTitle,
|
||||||
sMessage,
|
sMessage,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK, false);
|
||||||
if (btn != SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK) {
|
if (btn != SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK) {
|
||||||
OSL_TRACE("ShowNativeMessageBox returned %d", btn);
|
OSL_TRACE("ShowNativeMessageBox returned %d", btn);
|
||||||
}
|
}
|
||||||
|
@@ -407,7 +407,7 @@ bool ImplInitAccessBridge(sal_Bool bAllowCancel, sal_Bool &rCancelled)
|
|||||||
aTitle,
|
aTitle,
|
||||||
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL, true);
|
||||||
|
|
||||||
// Do not change the setting in case the user chooses to cancel
|
// Do not change the setting in case the user chooses to cancel
|
||||||
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
||||||
@@ -430,7 +430,7 @@ bool ImplInitAccessBridge(sal_Bool bAllowCancel, sal_Bool &rCancelled)
|
|||||||
aTitle,
|
aTitle,
|
||||||
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL, true);
|
||||||
|
|
||||||
// Do not change the setting in case the user chooses to cancel
|
// Do not change the setting in case the user chooses to cancel
|
||||||
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
||||||
@@ -453,7 +453,7 @@ bool ImplInitAccessBridge(sal_Bool bAllowCancel, sal_Bool &rCancelled)
|
|||||||
aTitle,
|
aTitle,
|
||||||
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL, true);
|
||||||
|
|
||||||
// Do not change the setting in case the user chooses to cancel
|
// Do not change the setting in case the user chooses to cancel
|
||||||
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
||||||
@@ -476,7 +476,7 @@ bool ImplInitAccessBridge(sal_Bool bAllowCancel, sal_Bool &rCancelled)
|
|||||||
aTitle,
|
aTitle,
|
||||||
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL, true);
|
||||||
|
|
||||||
// Do not change the setting in case the user chooses to cancel
|
// Do not change the setting in case the user chooses to cancel
|
||||||
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
||||||
@@ -515,7 +515,7 @@ bool ImplInitAccessBridge(sal_Bool bAllowCancel, sal_Bool &rCancelled)
|
|||||||
aTitle,
|
aTitle,
|
||||||
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL, true);
|
||||||
|
|
||||||
// Do not change the setting in case the user chooses to cancel
|
// Do not change the setting in case the user chooses to cancel
|
||||||
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
|
||||||
@@ -529,7 +529,7 @@ bool ImplInitAccessBridge(sal_Bool bAllowCancel, sal_Bool &rCancelled)
|
|||||||
aTitle,
|
aTitle,
|
||||||
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
ReplaceJavaErrorMessages(aMessage.makeStringAndClear()),
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK,
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK,
|
||||||
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK);
|
SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -220,7 +220,7 @@ static int DEFAULT_BTN_MAPPING_TABLE[][8] =
|
|||||||
{ MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1 } //RETRY_CANCEL
|
{ MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1, MB_DEFBUTTON1 } //RETRY_CANCEL
|
||||||
};
|
};
|
||||||
|
|
||||||
int WinSalSystem::ShowNativeMessageBox(const rtl::OUString& rTitle, const rtl::OUString& rMessage, int nButtonCombination, int nDefaultButton)
|
int WinSalSystem::ShowNativeMessageBox(const rtl::OUString& rTitle, const rtl::OUString& rMessage, int nButtonCombination, int nDefaultButton, SAL_UNUSED_PARAMETER bool)
|
||||||
{
|
{
|
||||||
DBG_ASSERT( nButtonCombination >= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK &&
|
DBG_ASSERT( nButtonCombination >= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK &&
|
||||||
nButtonCombination <= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL &&
|
nButtonCombination <= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL &&
|
||||||
|
Reference in New Issue
Block a user