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; }
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; }
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; }
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; }
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; }
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); } }