Exemple #1
0
void CharMap::SplitCodePage(wxUint32 splitCodeFirst)
{
	CodePage *page = GetCodePage(splitCodeFirst);
	if (page == NULL || page->GetRangeStart() == splitCodeFirst) {
		return;
	}
	CodePage oldPage(*page);
	CodePage newPage(*page, splitCodeFirst, page->GetRangeEnd());
	RemoveCodePage(page);
	// Todo: delete only present glyphs
	for (wxUint32 i = splitCodeFirst; i <= oldPage.GetRangeEnd(); i++) {
		oldPage.Remove(i);
	}
	oldPage.SetEnd(splitCodeFirst - 1);
	AddCodePage(oldPage);
	AddCodePage(newPage);
}
Exemple #2
0
// Добавляем стандартную таблицу символов
void AddStandardCodePage(const wchar_t *codePageName, uintptr_t codePage, int position = -1, bool enabled = true)
{
	bool checked = false;

	if (selectedCodePages && codePage!=CP_DEFAULT)
	{
		int selectType = 0;
		GeneralCfg->GetValue(FavoriteCodePagesKey, FormatString() << codePage, &selectType, 0);

		if (selectType & CPST_FIND)
			checked = true;
	}

	AddCodePage(codePageName, codePage, position, enabled, checked, false);
}
Exemple #3
0
// Добавляем стандартную таблицу символов
void AddStandardCodePage(const wchar_t *codePageName, UINT codePage, int position = -1, bool enabled = true)
{
	bool checked = false;

	if (selectedCodePages && codePage!=CP_AUTODETECT)
	{
		FormatString strCodePageName;
		strCodePageName<<codePage;
		int selectType = 0;
		GetRegKey(FavoriteCodePagesKey, strCodePageName, selectType, 0);

		if (selectType & CPST_FIND)
			checked = true;
	}

	AddCodePage(codePageName, codePage, position, enabled, checked, false);
}
Exemple #4
0
// Callback-функция получения таблиц символов
BOOL __stdcall EnumCodePagesProc(const wchar_t *lpwszCodePage)
{
	UINT codePage = _wtoi(lpwszCodePage);

	// Получаем информацию о кодовой странице. Если информацию по какой-либо причине получить не удалось, то
	// для списков продолжаем енумерацию, а для процедуры же проверки поддерживаемости кодовой страницы выходим
	CPINFOEX cpiex;
	if (!GetCodePageInfo(codePage, cpiex)) {
		return CallbackCallSource == CodePageCheck ? FALSE : TRUE;
	}

    	if (IsStandardCodePage(codePage)) {
    		return TRUE; // continue
    	}

	// Формируем имя таблиц символов
	bool IsCodePageNameCustom = false;
	wchar_t *codePageName = FormatCodePageName(_wtoi(lpwszCodePage), cpiex.CodePageName, sizeof(cpiex.CodePageName)/sizeof(wchar_t), IsCodePageNameCustom);
	// Получаем признак выбранности таблицы символов
	int selectType = 0;
	GetRegKey(FavoriteCodePagesKey, lpwszCodePage, selectType, 0);

	// Добавляем таблицу символов либо в нормальные, либо в выбранные таблицы симовлов
	if (selectType & CPST_FAVORITE)
	{
		// Если надо добавляем разделитель между выбранными и нормальными таблицами симовлов
		if (!favoriteCodePages)
			AddSeparator(MSG(MGetCodePageFavorites),GetItemsCount()-normalCodePages-(normalCodePages?1:0));

		// Добавляем таблицу символов в выбранные
		AddCodePage(
		    codePageName,
		    codePage,
		    GetCodePageInsertPosition(
		        codePage,
		        GetItemsCount()-normalCodePages-favoriteCodePages-(normalCodePages?1:0),
		        favoriteCodePages
		    ),
		    true,
		    selectType & CPST_FIND ? true : false,
			IsCodePageNameCustom
		);
		// Увеличиваем счётчик выбранных таблиц символов
		favoriteCodePages++;
	}
	else if (CallbackCallSource == CodePagesFill || Opt.CPMenuMode)
	{
		// добавляем разделитель между стандартными и системными таблицами символов
		if (!favoriteCodePages && !normalCodePages)
			AddSeparator(MSG(MGetCodePageOther));

		// Добавляем таблицу символов в нормальные
		AddCodePage(
		    codePageName,
		    codePage,
		    GetCodePageInsertPosition(
		        codePage,
		        GetItemsCount()-normalCodePages,
		        normalCodePages
		    ),
			true,
			false,
			IsCodePageNameCustom
		);
		// Увеличиваем счётчик выбранных таблиц символов
		normalCodePages++;
	}

	return TRUE;
}
Exemple #5
0
// Callback-функция получения таблиц символов
BOOL WINAPI EnumCodePagesProc(const wchar_t *lpwszCodePage)
{
	uintptr_t codePage = _wtoi(lpwszCodePage);

	// Для функции проверки нас не интересует информация о кодовых страницах отличных от проверяемой
	if (CallbackCallSource == CodePageCheck && codePage != currentCodePage)
		return TRUE;

	// Получаем информацию о кодовой странице. Если информацию по какой-либо причине получить не удалось, то
	// для списков прожолжаем енумерацию, а для процедуры же проверки поддерживаемости кодовой страницы выходим
	CPINFOEX cpiex;
	if (!GetCodePageInfo(codePage, cpiex))
		return CallbackCallSource == CodePageCheck ? FALSE : TRUE;

	// Для функции проверки поддерживаемости кодовой страницы мы прошли все проверки и можем выходить
	if (CallbackCallSource == CodePageCheck)
	{
		CodePageSupported = true;
		return FALSE;
	}

	// Формируем имя таблиц символов
	bool IsCodePageNameCustom = false;
	wchar_t *codePageName = FormatCodePageName(_wtoi(lpwszCodePage), cpiex.CodePageName, sizeof(cpiex.CodePageName)/sizeof(wchar_t), IsCodePageNameCustom);
	// Получаем признак выбранности таблицы символов
	int selectType = 0;
	GeneralCfg->GetValue(FavoriteCodePagesKey, lpwszCodePage, &selectType, 0);

	// Добавляем таблицу символов либо в нормальные, либо в выбранные таблицы симовлов
	if (selectType & CPST_FAVORITE)
	{
		// Если надо добавляем разделитель между выбранными и нормальными таблицами симовлов
		if (!favoriteCodePages)
			AddSeparator(MSG(MGetCodePageFavorites),GetItemsCount()-normalCodePages-(normalCodePages?1:0));

		// Добавляем таблицу символов в выбранные
		AddCodePage(
		    codePageName,
		    codePage,
		    GetCodePageInsertPosition(
		        codePage,
		        GetItemsCount()-normalCodePages-favoriteCodePages-(normalCodePages?1:0),
		        favoriteCodePages
		    ),
		    true,
		    selectType & CPST_FIND ? true : false,
			IsCodePageNameCustom
		);
		// Увеличиваем счётчик выбранных таблиц символов
		favoriteCodePages++;
	}
	else if (CallbackCallSource == CodePagesFill || !Opt.CPMenuMode)
	{
		// добавляем разделитель между стандартными и системными таблицами символов
		if (!favoriteCodePages && !normalCodePages)
			AddSeparator(MSG(MGetCodePageOther));

		// Добавляем таблицу символов в нормальные
		AddCodePage(
		    codePageName,
		    codePage,
		    GetCodePageInsertPosition(
		        codePage,
		        GetItemsCount()-normalCodePages,
		        normalCodePages
		    ),
			true,
			false,
			IsCodePageNameCustom
		);
		// Увеличиваем счётчик выбранных таблиц символов
		normalCodePages++;
	}

	return TRUE;
}