mirror of
				https://github.com/chibicitiberiu/rainmeter-studio.git
				synced 2024-02-24 04:33:31 +00:00 
			
		
		
		
	Got rid of the "Not a meter or measure" error.
The handling of the MeterStyle is now done in the CConfigParser.
This commit is contained in:
		| @@ -149,7 +149,15 @@ const std::wstring& CConfigParser::ReadString(LPCTSTR section, LPCTSTR key, LPCT | ||||
| 		defValue = L""; | ||||
| 	} | ||||
|  | ||||
| 	result = GetValue(section, key, defValue); | ||||
| 	std::wstring strDefault = defValue; | ||||
|  | ||||
| 	// If the template is defined read the value first from there. | ||||
| 	if (!m_StyleTemplate.empty()) | ||||
| 	{ | ||||
| 		strDefault = GetValue(m_StyleTemplate, key, strDefault); | ||||
| 	} | ||||
|  | ||||
| 	result = GetValue(section, key, strDefault); | ||||
| 	if (result == defValue) | ||||
| 	{ | ||||
| 		return result; | ||||
|   | ||||
| @@ -39,6 +39,7 @@ public: | ||||
| 	void Initialize(LPCTSTR filename, CRainmeter* pRainmeter); | ||||
| 	void AddMeasure(CMeasure* pMeasure); | ||||
| 	void SetVariable(const std::wstring& strVariable, const std::wstring& strValue); | ||||
| 	void SetStyleTemplate(const std::wstring& strStyle) { m_StyleTemplate = strStyle; } | ||||
|  | ||||
| 	const std::wstring& ReadString(LPCTSTR section, LPCTSTR key, LPCTSTR defValue, bool bReplaceMeasures = true); | ||||
| 	double ReadFloat(LPCTSTR section, LPCTSTR key, double defValue); | ||||
| @@ -66,6 +67,8 @@ private: | ||||
| 	hqMathParser* m_Parser; | ||||
| 	std::map<std::wstring, CMeasure*> m_Measures; | ||||
|  | ||||
| 	std::wstring m_StyleTemplate; | ||||
|  | ||||
| 	stdext::hash_map<std::wstring, std::vector<std::wstring> > m_Keys; | ||||
| 	stdext::hash_map<std::wstring, std::wstring> m_Values; | ||||
| }; | ||||
|   | ||||
| @@ -44,7 +44,6 @@ private: | ||||
| 	int m_UpdateRandom; | ||||
| 	int m_LowBound; | ||||
| 	int m_HighBound; | ||||
|  | ||||
| }; | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -212,6 +212,10 @@ void CMeter::ReadConfig(const WCHAR* section) | ||||
| { | ||||
| 	CConfigParser& parser = m_MeterWindow->GetParser(); | ||||
|  | ||||
| 	// The MeterStyle defines a template where the values are read if the meter doesn't have it itself | ||||
| 	const std::wstring& style = parser.ReadString(section, L"MeterStyle", L""); | ||||
| 	parser.SetStyleTemplate(style); | ||||
|  | ||||
| 	const std::wstring& x = parser.ReadString(section, L"X", L"0"); | ||||
| 	if (x.size() > 0) | ||||
| 	{ | ||||
|   | ||||
| @@ -1563,12 +1563,8 @@ void CMeterWindow::ReadSkin() | ||||
| 				{ | ||||
| 					MessageBox(m_Window, error.GetString().c_str(), APPNAME, MB_OK | MB_TOPMOST | MB_ICONEXCLAMATION); | ||||
| 				} | ||||
| 			}  | ||||
| 			else | ||||
| 			{ | ||||
| 				// It's something else | ||||
|                 throw CError(std::wstring(L"Section [") + pos + L"] is not a meter or a measure!", __LINE__, __FILE__); | ||||
|             } | ||||
| 			} | ||||
| 			// If it's not a meter or measure it will be ignored | ||||
| 		} | ||||
| 		pos = pos + wcslen(pos) + 1; | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kimmo Pekkola
					Kimmo Pekkola