void SludgeProjectManager::on_comp_gamebutton_clicked()
{
	char cmd[1000];
	char *file = getFullPath(gameFile);

#ifdef __WIN32
	int cmdSuccess;
	int lastSlash = 0;
	char engineDir[1000];
	sprintf(engineDir, "%s", workingDir);

	for (int k = 0; engineDir[k] != 0; k++) {
		if (engineDir[k] == '\\') {
			lastSlash = k;
		}
	}
	sprintf(engineDir + lastSlash + 1, "Engine");
	sprintf(cmd, "\"%s\\SLUDGE Engine.exe\"", engineDir);
	cmdSuccess = sh_cmd(engineDir, cmd, file);

	if (!cmdSuccess) {
		errorBox("Couldn't find SLUDGE Engine", "The SLUDGE Engine was expected at ..\\Engine\\SLUDGE Engine.exe relative to the Project Manager executable. Make sure it's there to make the Run Game button work.");
	}
#else
	sprintf(cmd, "%s", "sludge-engine");
	sh_cmd(workingDir, cmd, file);
#endif

	deleteString(file);
}
Esempio n. 2
0
void			exec(t_cmd *cmd)
{
	pid_t	pid;
	int		stat;

	stat = 0;
	if (ft_strchr(cmd->tab[0], '/'))
		cmd->bin = 1;
	if (!sh_cmd(cmd))
		return ;
	else if (cmd->bin == 1 || check_bin(cmd))
	{
		gestion_signal(1);
		if ((pid = fork()) < 0)
			sh_error(1, cmd, -1);
		else if (pid == 0)
			if ((stat = execve(cmd->cmd, cmd->tab, cmd->env)) == -1)
				sh_error(2, cmd, stat);
		wait(&stat);
		if (WIFEXITED(stat))
			cmd->ret = WEXITSTATUS(stat);
		else if (WIFSIGNALED(stat))
			signal_message_exec(WTERMSIG(stat));
		gestion_signal(0);
	}
	else
		sh_error(0, cmd, 0);
}
void SludgeProjectManager::on_program_activate(whichProgram program)
{
	const char *exe;
	char executable[200];
#ifdef __WIN32
	exe = ".exe";
#else
	exe = "";
#endif

	switch (program) {
		case FLOORMAKER:
			sprintf(executable, "sludge-floormaker%s", exe);
			break;
		case SPRITEBANKEDITOR:
			sprintf(executable, "sludge-spritebankeditor%s", exe);
			break;
		case ZBUFFERMAKER:
			sprintf(executable, "sludge-zbuffermaker%s", exe);
			break;
		case TRANSLATIONEDITOR:
			sprintf(executable, "sludge-translationeditor%s", exe);
			break;
		default:
			break;
	}

	sh_cmd(workingDir, executable, NULL);
}
Esempio n. 4
0
void BinSlay::Gui::ShowFunctionView::doShowCFG()
{
#ifdef __linux__
  if (!getenv("DISPLAY"))
    return;

  std::string sh_cmd("dot -Txlib "
		     + _function->getBinary()->getFileName()
		     + "_0x"
		     + addrLineEdit->text().toStdString()
		     + ".dot"
		     + " &");

  system(sh_cmd.c_str());
#endif
}
void SludgeProjectManager::on_treeview_row_activated(GtkTreeView *theTreeView, GtkTreePath *thePath, GtkTreeViewColumn *theColumn, whichTreeview whichOne)
{
	GtkTreeModel *treeModel;
	const char *cmd;	
	char *tx, *tx1;
	if (currentFilename[0] == 0)
		return;
	getSourceDirFromName(currentFilename);
	gotoSourceDirectory();

	treeModel = gtk_tree_view_get_model(theTreeView);

	int filenameColumn = 0;
	switch (whichOne) {
		case ERROR_TREEVIEW:
			filenameColumn = ERRORS_COLUMN_FILENAME;
		case FILE_TREEVIEW:
			cmd = editor;
			break;
		default:
			break;
	}

	GtkTreeIter iter;
	gtk_tree_model_get_iter(treeModel, &iter, thePath);

	if (whichOne == ERROR_TREEVIEW) {
		gboolean hasFilename;
		gtk_tree_model_get(treeModel, &iter, ERRORS_COLUMN_HAS_FILENAME, &hasFilename, -1);
		if (!hasFilename) {
			gtk_tree_model_get(treeModel, &iter, ERRORS_COLUMN_OVERVIEW, &tx, -1);
			errorBox("Error overview", tx);
  			g_free(tx);
			return;
		}
	}

	gtk_tree_model_get(treeModel, &iter, filenameColumn, &tx1, -1);
	tx = g_filename_from_utf8(tx1, -1, NULL, NULL, NULL);
    g_free(tx1);

	char * extension;
	gint *indices;
	struct errorLinkToFile * index;
	int i, row;
	switch (whichOne) {
		case FILE_TREEVIEW:
			extension = tx + strlen(tx) - 4;
			if ((strlen(tx) > 4) && (!strcmp(extension, ".tra") || !strcmp(extension, ".TRA"))) {
#ifdef __WIN32
				cmd = "sludge-translationeditor.exe";	
#else
				cmd = "sludge-translationeditor";	
#endif
			}
			break;
		case RESOURCE_TREEVIEW:
			extension = tx + strlen(tx) - 4;	
			if (strlen(tx) > 4) {
				if        (!strcmp(extension, ".flo") || !strcmp(extension, ".FLO")) {
#ifdef __WIN32
					cmd = "sludge-floormaker.exe";
#else
					cmd = "sludge-floormaker";
#endif
				} else if (!strcmp(extension, ".duc") || !strcmp(extension, ".DUC")) {
#ifdef __WIN32
					cmd = "sludge-spritebankeditor.exe";	
#else
					cmd = "sludge-spritebankeditor";	
#endif
				} else if (!strcmp(extension, ".zbu") || !strcmp(extension, ".ZBU")) {
#ifdef __WIN32
					cmd = "sludge-zbuffermaker.exe";	
#else
					cmd = "sludge-zbuffermaker";	
#endif
				} else if (!strcmp(extension, ".png") || !strcmp(extension, ".PNG")
						|| !strcmp(extension, ".tga") || !strcmp(extension, ".TGA")) {
					cmd = imageViewer;
				} else if (!strcmp(extension, ".wav") || !strcmp(extension, ".WAV")
						|| !strcmp(extension, ".ogg") || !strcmp(extension, ".OGG")
						|| !strcmp(extension, "flac") || !strcmp(extension, "FLAC")) {
					cmd = audioPlayer;
				} else if (!strcmp(extension, ".mod") || !strcmp(extension, ".MOD")
						|| !strcmp(extension, ".s3m") || !strcmp(extension, ".S3M")) {
					cmd = modPlayer;
				} else {
					extension = tx + strlen(tx) - 3;
					if (strlen(tx) > 3 &&
						  (!strcmp(extension, ".it") || !strcmp(extension, ".IT")
						|| !strcmp(extension, ".xm") || !strcmp(extension, ".XM"))) {
						cmd = modPlayer;
					}
				}
			}
			break;
		default:
			break;
	}

	if (cmd[0] != 0 && tx) {
		sh_cmd(workingDir, cmd, getFullPath(tx));
	}
/*
	else {
		char buf[1000];
		GError *error = NULL;
		sprintf(buf, "file://%s", getFullPath(tx));
		gtk_show_uri (NULL, buf, GDK_CURRENT_TIME, &error);
		if (error != NULL) {
			errorBox("Opening file failed!", error->message);
			g_error_free(error);
		}
	}
*/

	g_free(tx);
}