コード例 #1
0
ファイル: main.cpp プロジェクト: EasyCoding/desura-app
int main(int argc, char** argv)
{
	gtk_init(&argc, &argv);

	const char* text =  "An error has occured that is preventing Desura from running correctly. "
						"Restarting Desura should allow you to continue, otherwise you can clean "
						"your Desura install by forcing an update.";

	if (!ChangeToAppDir())
		return 1;

	GtkWidget* dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, "%s", text);

	gtk_window_set_title(GTK_WINDOW(dialog), "Desura Error");

	gtk_dialog_add_button(GTK_DIALOG(dialog), "Restart Desura", 1);
	gtk_dialog_add_button(GTK_DIALOG(dialog), "Force Update", 2);
	gtk_dialog_add_button(GTK_DIALOG(dialog), "Exit", 3);

	g_signal_connect(G_OBJECT(dialog), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
	g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(on_response), NULL);

	gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);

	gtk_widget_show_all(dialog);

	gtk_main();

	return 0;
}
コード例 #2
0
ファイル: DesuraMain.cpp プロジェクト: anchowee/desura-app
int MainApp::run()
{
	ERROR_OUTPUT("#########################################");
	ERROR_OUTPUT("#               DEBUG BUILD             #");
	ERROR_OUTPUT("#########################################");

	if (!ChangeToAppDir())
		return -1;

	bool usingGDB = false;
#ifdef WITH_GTEST
	bool runGtest = false;
#endif

#ifdef DESURA_OFFICIAL_BUILD
	bool forceUpdate = false;
	bool skipUpdate = false;
	bool testDownload = false;
	bool testInstall = false;
#endif

	for (int x=0; x<m_Argc; x++)
	{
		if (!m_Argv[x])
			continue;

		if (strcasecmp(m_Argv[x], "-g") == 0 || strcasecmp(m_Argv[x], "--gdb") == 0)
			usingGDB = true;

#ifdef WITH_GTEST
		if (strcasecmp(m_Argv[x], "-u") == 0 || strcasecmp(m_Argv[x], "--unittests") == 0)
			runGtest = true;
#endif

#ifdef DESURA_OFFICIAL_BUILD
		if (strcasecmp(m_Argv[x], "-td") == 0 || strcasecmp(m_Argv[x], "--testdownload") == 0)
			testDownload = true;

		if (strcasecmp(m_Argv[x], "-ti") == 0 || strcasecmp(m_Argv[x], "--testinstall") == 0)
			testInstall = true;

		if (strcasecmp(m_Argv[x], "-s") == 0 || strcasecmp(m_Argv[x], "--skipupdate") == 0 || strncasecmp(m_Argv[x], "desura://", 9) == 0)
			skipUpdate = true;

		if (strcasecmp(m_Argv[x], "-f") == 0 || strcasecmp(m_Argv[x], "--forceupdate") == 0)
			forceUpdate = true;
#endif
	}

#ifdef DESURA_OFFICIAL_BUILD
#ifdef WIN32
	if (testInstall)
		return InstallFilesForTest();

	if (testDownload)
		return DownloadFilesForTest();
#endif
#endif

#ifndef DEBUG
	std::string lockPath = UTIL::LIN::expandPath("$XDG_RUNTIME_DIR/desura/lock");

	if (!FileExists(lockPath.c_str())) // if desura isn't already running - simple check
	{
#ifdef DESURA_OFFICIAL_BUILD
		if (CheckForUpdate(forceUpdate, skipUpdate))
			return 0;
#endif

		checkUnityWhitelist();
	}
#endif

	if (!loadUICore())
	{
		ERROR_OUTPUT(dlerror());
		return -1;
	}

#ifdef WITH_GTEST
	if (runGtest)
	{
		return m_pUICore->runUnitTests(m_Argc, m_Argv);
	}
#endif

	if (!m_pUICore->singleInstantCheck())
	{
		sendArgs();
		return 0;
	}

#ifndef DEBUG
	if (!loadCrashHelper())
		return -1;
#endif

	m_pUICore->disableSingleInstanceLock();

	if (usingGDB)
	{
		ERROR_OUTPUT("Running with GDB -- Not setting up dump handler");
	}
	else
	{
		MiniDumpGenerator m_MDumpHandle;
		m_MDumpHandle.showMessageBox(true);
		m_MDumpHandle.setCrashCallback(&MainApp::onCrash);	
	}

	return m_pUICore->initWxWidgets(m_Argc, m_Argv);
}