예제 #1
0
BOOL GetConfigBookmark(HCONFIG hBookmark, BOOKMARK *bm)
{
	UINT64 a, b;

	GetConfigStr(hBookmark, TEXT("name"), bm->pszTitle, 100, TEXT(""));
	GetConfigStr(hBookmark, TEXT("desc"), bm->pszText, 100, TEXT(""));
	GetConfigI64(hBookmark, TEXT("offset"), &a, 0);
	GetConfigI64(hBookmark, TEXT("length"), &b, 0);
	GetConfigH32(hBookmark, TEXT("fgcol"), &bm->col, 0);
	GetConfigH32(hBookmark, TEXT("bgcol"), &bm->backcol, 0);
				
	bm->offset	= a;
	bm->length	= b;
	return TRUE;
}
예제 #2
0
BOOL UpdateHighlightsFromConfig(HGRIDITEM hRoot, HWND hwndGridView, TCHAR *szBookPath, COLORREF col)
{
	HCONFIG hConf, hBookmarks;
	HBOOKMARK bookmark;
	size_t i;
	TCHAR szFilePath[MAX_PATH];
	GVITEM gvitem = { 0 };

	hConf = OpenConfig(szBookPath);

	if(hConf)
	{
		if(GetConfigStr(hConf, TEXT("hexFileData\\filePath"), szFilePath, MAX_PATH, 0))
		{
			hBookmarks = OpenConfigSection(hConf, TEXT("hexFileData\\bookmarks"));

			for(i = 0; bookmark = EnumConfigSection(hBookmarks, TEXT("bookmark"), (int)i); i++)
			{
				TCHAR name[100], desc[100];
				BOOKMARK bm = { 0, 0, 0, 0, 0, name, 100, desc, 100 };

				// do we need to add a root item?
				if(hRoot == 0)
				{
					GVITEM gvitem = { GVIF_TEXT };
					gvitem.pszText = szFilePath;
					hRoot = GridView_FindChild(hwndGridView, GVI_ROOT, &gvitem);

					if (!hRoot)
						hRoot = CreateBookmarkFileRoot(GVI_ROOT, szFilePath, hwndGridView, FALSE);

					gvitem.mask  = GVIF_PARAM|GVIF_FONT;
					gvitem.iFont = 0; // regular
					gvitem.param = 0;
					GridView_SetItem(hwndGridView, hRoot, &gvitem);
					GridView_DeleteChildren(hwndGridView, hRoot);	
			
					MkRootGVITEM(&gvitem, szFilePath, FALSE, 0);	
					GridView_SetItem(hwndGridView, hRoot, &gvitem);
				}

				GetConfigBookmark(bookmark, &bm);

				FillGridView2(hwndGridView, hRoot, NULL, &bm, col);
						//callback(&bm, param);	
			}

		}

		CloseConfig(hConf);
	}

	return TRUE;
}
예제 #3
0
int Playlist::ReloadPlaylist(void)
{
	LogDebug(VB_PLAYLIST, "Playlist::ReloadPlaylist()\n");

	std::unique_lock<std::recursive_mutex> lck (m_playlistMutex);
	std::string currentSectionStr = m_currentSectionStr;
	int repeat = m_repeat;

	Json::Value root = LoadJSON(m_filename.c_str());

	if (!Load(root))
		return 0;

	m_currentSectionStr = currentSectionStr;
	m_repeat = repeat;

	GetConfigStr();

	return 1;
}
예제 #4
0
int Playlist::Load(const char *filename)
{
	LogDebug(VB_PLAYLIST, "Playlist::Load(%s)\n", filename);

	if (mqtt)
		mqtt->Publish("playlist/name/status", filename);

	m_filename = getPlaylistDirectory();
	m_filename += "/";
	m_filename += filename;
	m_filename += ".json";

	std::unique_lock<std::recursive_mutex> lck (m_playlistMutex);

	Json::Value root = LoadJSON(m_filename.c_str());

	int res = Load(root);

	GetConfigStr();

	return res;
}
예제 #5
0
BOOL UpdateHighlights2(HWND hwndHexView, HWND hwndGridView)
{

	HGRIDITEM hGridItem;
	hGridItem = GVI_ROOT;//GridView_InsertChild(hwndGridView, GVI_ROOT, &gvitem);

	SendMessage(hwndGridView, WM_SETREDRAW, FALSE, 0);
	GridView_DeleteAll(hwndGridView);

	if(hwndHexView == 0)
	{
		// just add bookmarks for specified hexview
		FillHexViewHighlights(GVI_ROOT, hwndHexView, hwndGridView, 0);
	}
	else if(hwndHexView != (HWND)-1)
	{
		int i;

		// add bookmarks for all open files
		for(i = 0; (hwndHexView = EnumHexView(g_hwndMain, i)) != 0; i++)
		{
			AddHexViewHighlights(GVI_ROOT, hwndHexView, hwndGridView, 0);
		}
	}
	else 
	{
		WIN32_FIND_DATA win32fd;
		HANDLE hFind;
		TCHAR szBookPath[MAX_PATH];
		TCHAR szFilePath[MAX_PATH];
		HCONFIG hConf ;

		GetProgramDataPath(szBookPath, MAX_PATH);
		lstrcat(szBookPath, TEXT("\\Bookmarks\\*"));

		// enumerate all files in the bookmarks directory
		if((hFind = FindFirstFile(szBookPath, &win32fd)) != 0)
		{
			do 
			{
				if((win32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
				{
					HWND hwndHV; 
					int i;
					HCONFIG hBookmarks, bookmark;
					HGRIDITEM hItem;

					GetProgramDataPath(szBookPath, MAX_PATH);
					wsprintf(szFilePath, TEXT("%s\\Bookmarks\\%s"), szBookPath, win32fd.cFileName);				

					hConf = OpenConfig(szFilePath);
					GetConfigStr(hConf, TEXT("hexFileData\\filePath"), szFilePath, MAX_PATH, 0);

					if((hwndHV = HexIsOpen(g_hwndMain, szFilePath, 0)) != 0)
					{
						AddHexViewHighlights(GVI_ROOT, hwndHV, hwndGridView, 0);
					}
					else
					{
						hItem = CreateBookmarkFileRoot(GVI_ROOT, szFilePath, hwndGridView, FALSE);
					//EnumHighlights(szBookPath, addgv, hwndGridView);

						hBookmarks = OpenConfigSection(hConf, TEXT("hexFileData\\bookmarks"));

						for(i = 0; bookmark = EnumConfigSection(hBookmarks, TEXT("bookmark"), i); i++)
						{
							TCHAR name[100], desc[100];
							BOOKMARK bm = { 0, 0, 0, 0, 0, name, 100, desc, 100 };

							GetConfigBookmark(bookmark, &bm);

							FillGridView2(hwndGridView, hItem, NULL, &bm, 0);
						//callback(&bm, param);	
						}
					}

					CloseConfig(hConf);
				}

			} while(FindNextFile(hFind, &win32fd));

			FindClose(hFind);
		}


	}

/*	for(hbm = 0; (hbm = HexView_EnumBookmark(hwndHexView, hbm, &bm)) != 0; )
	{
		TCHAR szOffset[32];
		TCHAR szTitle[32];

		_stprintf(szTitle, TEXT("%s"), bm.pszTitle);
		_stprintf(szOffset, TEXT("%08I64X  (%d bytes)"), bm.offset, bm.length);

		FillGridView2(hwndGridView, hGridItem, hbm, szTitle, szOffset, bm.pszText);
	}*/

	SendMessage(hwndGridView, WM_SETREDRAW, TRUE, 0);
	GridView_Update(hwndGridView);

	//ForceClientResize(hwndGridView);
	//InvalidateRect(hwndGridView, 0, 0);

	return TRUE;
}
예제 #6
0
void DeleteBookmarkFromConfig(LPCTSTR szFilename, LPCTSTR szBookmarkName)
{
	WIN32_FIND_DATA win32fd;
	HANDLE hFind;
	TCHAR szBookPath[MAX_PATH];
	TCHAR szFilePath[MAX_PATH];
	TCHAR szRefFilePath[MAX_PATH] = { 0 };

	GetProgramDataPath(szBookPath, MAX_PATH);
	lstrcat(szBookPath, TEXT("\\Bookmarks\\*"));

	// enumerate all files in the bookmarks directory
	if ((hFind = FindFirstFile(szBookPath, &win32fd)) != 0)
	{
		do
		{
			if ((win32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
			{
				GetProgramDataPath(szBookPath, MAX_PATH);
				wsprintf(szFilePath, TEXT("%s\\Bookmarks\\%s"), szBookPath, win32fd.cFileName);

				HCONFIG configFile = OpenConfig(szFilePath);
				if (configFile)
				{
					if (GetConfigStr(configFile, TEXT("hexFileData\\filePath"), szRefFilePath, MAX_PATH, 0) && _tcscmp(szRefFilePath, szFilename) == 0)
					{
						HCONFIG bookmarksSection = OpenConfigSection(configFile, TEXT("hexFileData\\bookmarks"));
						DWORD idx = 0;
						HCONFIG bookmark = 0;
						DWORD countedBookmarks = 0;
						while (bookmark = EnumConfigSection(bookmarksSection, TEXT("bookmark"), idx++))
						{
							TCHAR title[100];
							BOOKMARK bm = { 0 };
							bm.pszTitle = title;
							bm.nMaxTitle = ARRAYSIZE(title);

							if (GetConfigBookmark(bookmark, &bm) && _tcscmp(title, szBookmarkName) == 0)
							{
								DeleteConfigSection(bookmark);
							}
							else
							{
								countedBookmarks++;
							}
						}

						SaveConfig(szFilePath, configFile);
						CloseConfig(configFile);
						if (countedBookmarks == 0)
						{
							DeleteFile(szFilePath);
						}
						break;
					}
					CloseConfig(configFile);
				}
			}

		} while (FindNextFile(hFind, &win32fd));

		FindClose(hFind);
	}
}