PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) { Measure* measure = (Measure*)data; std::lock_guard<std::recursive_mutex> lock(measure->mutex); measure->parameter = RmReadString(rm, L"Parameter", L""); measure->finishAction = RmReadString(rm, L"FinishAction", L"", FALSE); measure->outputFile = RmReadPath(rm, L"OutputFile", L""); measure->folder = RmReadPath(rm, L"StartInFolder", L" "); // Space is intentional! measure->timeout = RmReadInt(rm, L"Timeout", -1); const WCHAR* state = RmReadString(rm, L"State", L"HIDE"); if (_wcsicmp(state, L"SHOW") == 0) { measure->state = SW_SHOW; } else if (_wcsicmp(state, L"MAXIMIZE") == 0) { measure->state = SW_MAXIMIZE; } else if (_wcsicmp(state, L"MINIMIZE") == 0) { measure->state = SW_MINIMIZE; } else { measure->state = SW_HIDE; } // Grab "%COMSPEC% environment variable measure->program = RmReadString(rm, L"Program", RmReplaceVariables(rm, L"\"%COMSPEC%\" /U /C")); if (measure->program.empty()) { // Assume "cmd.exe" exists! measure->program = L"cmd.exe /U /C"; } const WCHAR* type = RmReadString(rm, L"OutputType", L"UTF16"); if (_wcsicmp(type, L"ANSI") == 0) { measure->outputType = OUTPUTTYPE_ANSI; } else if (_wcsicmp(type, L"UTF8") == 0) { measure->outputType = OUTPUTTYPE_UTF8; } else { measure->outputType = OUTPUTTYPE_UTF16; } }
static PyObject *Rainmeter_RmReadPath(RainmeterObject *self, PyObject *args) { PyObject *option, *defValue; PyArg_ParseTuple(args, "UU", &option, &defValue); wchar_t *optionStr = PyUnicode_AsWideCharString(option, NULL); wchar_t *defValueStr = PyUnicode_AsWideCharString(defValue, NULL); LPCWSTR result = RmReadPath(self->rm, optionStr, defValueStr); PyMem_Free(defValueStr); PyMem_Free(optionStr); if (result == NULL) { Py_INCREF(Py_None); return Py_None; } return PyUnicode_FromWideChar(result, -1); }
PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) { MeasureData* measure = (MeasureData*)data; measure->pathname = RmReadPath(rm, L"PathName", L""); if (PathIsDirectory(measure->pathname.c_str())) { std::vector<std::wstring> fileFilters; LPCWSTR filter = RmReadString(rm, L"FileFilter", L""); if (*filter) { std::wstring ext = filter; size_t start = 0; size_t pos = ext.find(L';'); while (pos != std::wstring::npos) { fileFilters.push_back(ext.substr(start, pos - start)); start = pos + 1; pos = ext.find(L';', pos + 1); } fileFilters.push_back(ext.substr(start)); } if (measure->pathname[measure->pathname.size() - 1] != L'\\') { measure->pathname += L"\\"; } // Scan files measure->files.clear(); bool bSubfolders = RmReadInt(rm, L"Subfolders", 1) == 1; ScanFolder(measure->files, fileFilters, bSubfolders, measure->pathname); } else { measure->separator = RmReadString(rm, L"Separator", L"\n"); } srand((unsigned)time(NULL)); }
PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) { MeasureData* measure = (MeasureData*)data; CFolderInfo* folder = measure->folder; if (!folder) { return; } LPCWSTR str = RmReadString(rm, L"InfoType", L""); if (_wcsicmp(str, L"FolderSize") == 0 || _wcsicmp(str, L"FolderSizeStr") == 0) { measure->type = MEASURE_FOLDERSIZE; } else if (_wcsicmp(str, L"FolderCount") == 0 || _wcsicmp(str, L"FolderCountStr") == 0) { measure->type = MEASURE_FOLDERCOUNT; } else if (_wcsicmp(str, L"FileCount") == 0 || _wcsicmp(str, L"FileCountStr") == 0) { measure->type = MEASURE_FILECOUNT; } if (measure->parent) { str = RmReadPath(rm, L"Folder", L""); folder->SetPath(str); str = RmReadString(rm, L"RegExpFilter", L""); folder->SetRegExpFilter(str); folder->SetSubFolders(RmReadInt(rm, L"IncludeSubFolders", 0) == 1); folder->SetHiddenFiles(RmReadInt(rm, L"IncludeHiddenFiles", 0) == 1); folder->SetSystemFiles(RmReadInt(rm, L"IncludeSystemFiles", 0) == 1); } }
PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue) { MeasureData* measure = (MeasureData*)data; EnterCriticalSection(&g_CriticalSection); /* Read our own settings from the ini-file */ std::wstring url = RmReadString(rm, L"Url", L"", FALSE); std::wstring::size_type start = 0; while ((start = url.find(L"[&", start)) != std::wstring::npos) { std::wstring::size_type si = start + 1; std::wstring::size_type end = url.find(L']', si); if (end == std::wstring::npos) break; std::wstring var = L"["; var.append(url, si + 1, end - si); const WCHAR* result = RmReplaceVariables(rm, var.c_str()); const size_t resultLength = wcslen(result); url.replace(start, end - start + 1, result, resultLength); start += resultLength; } measure->url = url; measure->regExp = RmReadString(rm, L"RegExp", L""); measure->finishAction = RmReadString(rm, L"FinishAction", L"", FALSE); measure->onRegExpErrAction = RmReadString(rm, L"OnRegExpErrorAction", L"", FALSE); measure->onConnectErrAction = RmReadString(rm, L"OnConnectErrorAction", L"", FALSE); measure->onDownloadErrAction = RmReadString(rm, L"OnDownloadErrorAction", L"", FALSE); measure->errorString = RmReadString(rm, L"ErrorString", L""); int index = RmReadInt(rm, L"StringIndex", 0); measure->stringIndex = index < 0 ? 0 : index; index = RmReadInt(rm, L"StringIndex2", 0); measure->stringIndex2 = index < 0 ? 0 : index; measure->decodeCharacterReference = RmReadInt(rm, L"DecodeCharacterReference", 0); measure->updateRate = RmReadInt(rm, L"UpdateRate", 600); measure->forceReload = 0!=RmReadInt(rm, L"ForceReload", 0); measure->codepage = RmReadInt(rm, L"CodePage", 0); if (measure->codepage == 0) { measure->codepage = CP_UTF8; } measure->download = 0!=RmReadInt(rm, L"Download", 0); if (measure->download) { measure->downloadFolder = RmPathToAbsolute(rm, L"DownloadFile\\"); measure->downloadFile = RmReadString(rm, L"DownloadFile", L""); } else { measure->downloadFile.clear(); } measure->debug = RmReadInt(rm, L"Debug", 0); if (measure->debug == 2) { measure->debugFileLocation = RmReadPath(rm, L"Debug2File", L"WebParserDump.txt"); RmLog(rm, LOG_DEBUG, measure->debugFileLocation.c_str()); } LeaveCriticalSection(&g_CriticalSection); }