Exemplo n.º 1
0
static void qspPlayFile(QSP_CHAR *s, int volume, QSP_BOOL isAddToPlayList)
{
	int len;
	QSP_CHAR buf[4], *file;
	if (!qspIsAnyString(s)) return;
	if (volume < 0)
		volume = 0;
	else if (volume > 100)
		volume = 100;
	file = qspGetAbsFromRelPath(s);
	qspCallPlayFile(file, volume);
	free(file);
	if (isAddToPlayList)
	{
		if (qspPLFilesCount == QSP_MAXPLFILES)
		{
			qspRefreshPlayList();
			if (qspPLFilesCount == QSP_MAXPLFILES) return;
		}
		len = qspAddText(&file, s, 0, -1, QSP_TRUE);
		if (volume != 100)
		{
			len = qspAddText(&file, QSP_PLVOLUMEDELIM, len, 1, QSP_FALSE);
			file = qspGetAddText(file, qspNumToStr(buf, volume), len, -1);
		}
		qspPLFiles[qspPLFilesCount++] = file;
	}
}
Exemplo n.º 2
0
int qspCodeWriteIntVal(QSP_CHAR **s, int len, int val, QSP_BOOL isCode)
{
	QSP_CHAR buf[12], *temp;
	qspNumToStr(buf, val);
	if (isCode)
	{
		temp = qspCodeReCode(buf, QSP_TRUE);
		len = qspAddText(s, temp, len, -1, QSP_FALSE);
		free(temp);
	}
	else
		len = qspAddText(s, buf, len, -1, QSP_FALSE);
	return qspAddText(s, QSP_STRSDELIM, len, QSP_LEN(QSP_STRSDELIM), QSP_FALSE);
}
Exemplo n.º 3
0
int qspCodeWriteVal(QSP_CHAR **s, int len, QSP_CHAR *val, QSP_BOOL isCode)
{
	QSP_CHAR *temp;
	if (val)
	{
		if (isCode)
		{
			temp = qspCodeReCode(val, QSP_TRUE);
			len = qspAddText(s, temp, len, -1, QSP_FALSE);
			free(temp);
		}
		else
			len = qspAddText(s, val, len, -1, QSP_FALSE);
	}
	return qspAddText(s, QSP_STRSDELIM, len, QSP_LEN(QSP_STRSDELIM), QSP_FALSE);
}
Exemplo n.º 4
0
/* Текст строки ввода */
AS3_Val QSPSetInputStrText(void *param, AS3_Val args)
{
	QSP_CHAR *valWC;
	char *val;
	AS3_ArrayValue(args, "StrType", &val);
	valWC = qspC2W(val);
	qspCurInputLen = qspAddText(&qspCurInput, valWC, 0, -1, QSP_FALSE);
	free(valWC);
	return AS3_True();
}
Exemplo n.º 5
0
void qspCopyStrs(QSP_CHAR ***dest, QSP_CHAR **src, int start, int end)
{
	int i, count = end - start;
	if (src && count)
	{
		*dest = (QSP_CHAR **)malloc(count * sizeof(QSP_CHAR *));
		i = 0;
		while (start < end)
			qspAddText(*dest + i++, src[start++], 0, -1, QSP_TRUE);
	}
	else
		*dest = 0;
}
Exemplo n.º 6
0
QSPString qspGetAllActionsAsCode()
{
	int count, i;
	QSPString res, temp;
	res = qspNewEmptyString();
	for (i = 0; i < qspCurActionsCount; ++i)
	{
		qspAddText(&res, QSP_STATIC_STR(QSP_FMT("ACT '")), QSP_FALSE);
		temp = qspReplaceText(qspCurActions[i].Desc, QSP_STATIC_STR(QSP_FMT("'")), QSP_STATIC_STR(QSP_FMT("''")));
		qspAddText(&res, temp, QSP_FALSE);
		qspFreeString(temp);
		if (qspCurActions[i].Image.Str)
		{
			qspAddText(&res, QSP_STATIC_STR(QSP_FMT("','")), QSP_FALSE);
			temp = qspReplaceText(
				qspStringFromPair(qspCurActions[i].Image.Str + qspStrLen(qspQstPath), qspCurActions[i].Image.End),
				QSP_STATIC_STR(QSP_FMT("'")), QSP_STATIC_STR(QSP_FMT("''")));
			qspAddText(&res, temp, QSP_FALSE);
			qspFreeString(temp);
		}
		qspAddText(&res, QSP_STATIC_STR(QSP_FMT("':")), QSP_FALSE);
		count = qspCurActions[i].OnPressLinesCount;
		if (count == 1 && qspIsAnyString(qspCurActions[i].OnPressLines->Str))
			qspAddText(&res, qspCurActions[i].OnPressLines->Str, QSP_FALSE);
		else
		{
			if (count >= 2)
			{
				qspAddText(&res, QSP_STATIC_STR(QSP_STRSDELIM), QSP_FALSE);
				temp = qspJoinPrepLines(qspCurActions[i].OnPressLines, count, QSP_STATIC_STR(QSP_STRSDELIM));
				qspAddText(&res, temp, QSP_FALSE);
				qspFreeString(temp);
			}
			qspAddText(&res, QSP_STATIC_STR(QSP_STRSDELIM QSP_FMT("END")), QSP_FALSE);
		}
		qspAddText(&res, QSP_STATIC_STR(QSP_STRSDELIM), QSP_FALSE);
	}
	return res;
}
Exemplo n.º 7
0
QSP_CHAR *qspGetAllActionsAsCode()
{
	int len = 0, count, i;
	QSP_CHAR *res, *temp;
	res = qspGetNewText(QSP_FMT(""), 0);
	for (i = 0; i < qspCurActionsCount; ++i)
	{
		len = qspAddText(&res, QSP_FMT("ACT '"), len, 5, QSP_FALSE);
		temp = qspReplaceText(qspCurActions[i].Desc, QSP_FMT("'"), QSP_FMT("''"));
		len = qspAddText(&res, temp, len, -1, QSP_FALSE);
		free(temp);
		if (qspCurActions[i].Image)
		{
			len = qspAddText(&res, QSP_FMT("','"), len, 3, QSP_FALSE);
			temp = qspReplaceText(qspCurActions[i].Image + qspQstPathLen, QSP_FMT("'"), QSP_FMT("''"));
			len = qspAddText(&res, temp, len, -1, QSP_FALSE);
			free(temp);
		}
		len = qspAddText(&res, QSP_FMT("':"), len, 2, QSP_FALSE);
		count = qspCurActions[i].OnPressLinesCount;
		if (count == 1 && qspIsAnyString(qspCurActions[i].OnPressLines->Str))
			len = qspAddText(&res, qspCurActions[i].OnPressLines->Str, len, -1, QSP_FALSE);
		else
		{
			if (count >= 2)
			{
				len = qspAddText(&res, QSP_STRSDELIM, len, QSP_LEN(QSP_STRSDELIM), QSP_FALSE);
				temp = qspJoinPrepLines(qspCurActions[i].OnPressLines, count, QSP_STRSDELIM);
				len = qspAddText(&res, temp, len, -1, QSP_FALSE);
				free(temp);
			}
			len = qspAddText(&res, QSP_STRSDELIM QSP_FMT("END"), len, QSP_LEN(QSP_STRSDELIM) + 3, QSP_FALSE);
		}
		len = qspAddText(&res, QSP_STRSDELIM, len, QSP_LEN(QSP_STRSDELIM), QSP_FALSE);
	}
	return res;
}
Exemplo n.º 8
0
static int qspProcessEOLExtensions(QSPLineOfCode *s, int count, QSPLineOfCode **strs)
{
	QSPLineOfCode *ret;
	QSPString str, eol, eolExt;
	int len, lastNum = 0, i = 0, bufSize = 8, newCount = 0;
	ret = (QSPLineOfCode *)malloc(bufSize * sizeof(QSPLineOfCode));
	eolExt = QSP_STATIC_STR(QSP_PREEOLEXT QSP_EOLEXT);
	while (i < count)
	{
		qspAddText(&str, s[i].Str, QSP_TRUE);
		len = qspStrLen(str);
		if (len >= QSP_STATIC_LEN(QSP_PREEOLEXT QSP_EOLEXT))
		{
			eol = str;
			eol.Str += len - QSP_STATIC_LEN(QSP_PREEOLEXT QSP_EOLEXT);
			while (!qspStrsComp(eol, eolExt))
			{
				if (++i == count) break;
				str.End -= QSP_STATIC_LEN(QSP_EOLEXT);
				qspAddText(&str, s[i].Str, QSP_FALSE);
				len = qspStrLen(str);
				eol = str;
				eol.Str += len - QSP_STATIC_LEN(QSP_PREEOLEXT QSP_EOLEXT);
			}
		}
		if (newCount >= bufSize)
		{
			bufSize = newCount + 16;
			ret = (QSPLineOfCode *)realloc(ret, bufSize * sizeof(QSPLineOfCode));
		}
		qspInitLineOfCode(ret + newCount++, str, lastNum);
		++i;
		lastNum = s[i].LineNum;
	}
	*strs = ret;
	return newCount;
}
Exemplo n.º 9
0
void qspClearObjectsWithNotify()
{
	QSPVariant v;
	QSP_CHAR **objs;
	int i, oldRefreshCount, oldCount = qspCurObjectsCount;
	if (oldCount)
	{
		objs = (QSP_CHAR **)malloc(oldCount * sizeof(QSP_CHAR *));
		for (i = 0; i < oldCount; ++i)
			qspAddText(objs + i, qspCurObjects[i].Desc, 0, -1, QSP_TRUE);
		qspClearObjects(QSP_FALSE);
		v.IsStr = QSP_TRUE;
		oldRefreshCount = qspRefreshCount;
		for (i = 0; i < oldCount; ++i)
		{
			QSP_STR(v) = objs[i];
			qspExecLocByVarNameWithArgs(QSP_FMT("ONOBJDEL"), &v, 1);
			if (qspRefreshCount != oldRefreshCount || qspErrorNum) break;
		}
		qspFreeStrs(objs, oldCount);
	}
}
Exemplo n.º 10
0
QSP_CHAR *qspGetAddText(QSP_CHAR *dest, QSP_CHAR *val, int destLen, int valLen)
{
	qspAddText(&dest, val, destLen, valLen, QSP_FALSE);
	return dest;
}
Exemplo n.º 11
0
QSP_CHAR *qspGetNewText(QSP_CHAR *val, int valLen)
{
	QSP_CHAR *buf;
	qspAddText(&buf, val, 0, valLen, QSP_TRUE);
	return buf;
}
Exemplo n.º 12
0
/* Текст строки ввода */
void QSPSetInputStrText(const QSP_CHAR *val)
{
	qspCurInputLen = qspAddText(&qspCurInput, (QSP_CHAR *)val, 0, -1, QSP_FALSE);
}