コード例 #1
0
ファイル: main_nix.cpp プロジェクト: luzpaz/scribus
void defaultCrashHandler(int sig)
{
	static int crashRecursionCounter = 0;
	crashRecursionCounter++;
	signal(SIGALRM, SIG_DFL);
	if (crashRecursionCounter < 2)
	{
		emergencyActivated=true;
		crashRecursionCounter++;
		QString sigHdr=QObject::tr("Scribus Crash");
		QString sigLine="-------------";
		QString sigMsg=QObject::tr("Scribus crashes due to Signal #%1").arg(sig);
		std::cout << sigHdr.toStdString() << std::endl;
		std::cout << sigLine.toStdString() << std::endl;
		std::cout << sigMsg.toStdString() << std::endl;
		ScImageCacheManager::instance().removeMasterLock();
		if (ScribusQApp::useGUI)
		{
			ScCore->closeSplash();
			ScribusMainWindow* mainWin = ScCore->primaryMainWindow();
			if (mainWin)
			{
				ScMessageBox::critical(mainWin, sigHdr, sigMsg);
				mainWin->emergencySave();
				mainWin->close();
			}
		}
		alarm(300);
	}
	exit(255);
}
コード例 #2
0
ファイル: main_win32.cpp プロジェクト: luzpaz/scribus
void defaultCrashHandler(DWORD exceptionCode)
{
	static int crashRecursionCounter = 0;
	crashRecursionCounter++;
	if (crashRecursionCounter < 2)
	{
		emergencyActivated=true;
		crashRecursionCounter++;
		QString expDesc = exceptionDescription(exceptionCode);
		QString expHdr  = QObject::tr("Scribus Crash");
		QString expLine = "-------------";
		QString expMsg  = QObject::tr("Scribus crashes due to the following exception : %1").arg(expDesc);
		std::cout << expHdr.toStdString() << std::endl;
		std::cout << expLine.toStdString() << std::endl;
		std::cout << expMsg.toStdString() << std::endl;
		if (ScribusQApp::useGUI)
		{
			ScCore->closeSplash();
			ScribusMainWindow* mainWin = ScCore->primaryMainWindow();
			if (mainWin)
			{
				ScMessageBox::critical(mainWin, expHdr, expMsg);
				mainWin->emergencySave();
				mainWin->close();
			}
		}
		ScImageCacheManager::instance().removeMasterLock();
	}
	ExitProcess(255);
}
コード例 #3
0
ファイル: main_win32.cpp プロジェクト: luzpaz/scribus
void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
	QByteArray localMsg = msg.toLocal8Bit();
	switch (type)
	{
	case QtDebugMsg:
		cerr << "Debug: " << localMsg.constData();
		if (context.file && context.function)
			cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")";
		cerr << endl;
		break;
	case QtWarningMsg:
		cerr << "Warning: " << localMsg.constData();
		if (context.file && context.function)
			cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")";
		cerr << endl;
		break;
	case QtCriticalMsg:
		cerr << "Critical: " << localMsg.constData();
		if (context.file && context.function)
			cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")";
		cerr << endl;
		break;
	case QtFatalMsg:
		if (ScribusQApp::useGUI)
		{
			ScCore->closeSplash();
			ScribusMainWindow* mainWin = ScCore->primaryMainWindow();
			if (mainWin)
			{
				QString expHdr = QObject::tr("Scribus Crash");
				QString expMsg = msg;
				ScMessageBox::critical(mainWin, expHdr, expMsg);
				mainWin->emergencySave();
				mainWin->close();
			}
		}
		else
		{
			cerr << "Fatal: " << localMsg.constData();
			if (context.file && context.function)
				cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")";
			cerr << endl;
		}
		ExitProcess(255);
	}
}