mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Tweaks
This commit is contained in:
parent
4bbc372116
commit
8309eb2bda
@ -525,9 +525,10 @@ void CMeter::BindSecondaryMeasures(CConfigParser& parser, const WCHAR* section)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Replaces %1, %2 etc with the corresponding measure value
|
** Replaces %1, %2, ... with the corresponding measure value.
|
||||||
|
**
|
||||||
*/
|
*/
|
||||||
bool CMeter::ReplaceMeasures(const std::vector<std::wstring>& stringValues, std::wstring& str)
|
bool CMeter::ReplaceMeasures(std::wstring& str, AUTOSCALE autoScale, double scale, int decimals, bool percentual)
|
||||||
{
|
{
|
||||||
bool replaced = false;
|
bool replaced = false;
|
||||||
|
|
||||||
@ -535,18 +536,21 @@ bool CMeter::ReplaceMeasures(const std::vector<std::wstring>& stringValues, std:
|
|||||||
{
|
{
|
||||||
WCHAR buffer[64];
|
WCHAR buffer[64];
|
||||||
|
|
||||||
// Create the actual text (i.e. replace %1, %2, .. with the measure texts)
|
for (size_t i = m_Measures.size(); i > 0; --i)
|
||||||
for (size_t i = stringValues.size(); i > 0; --i)
|
|
||||||
{
|
{
|
||||||
size_t len = _snwprintf_s(buffer, _TRUNCATE, L"%%%i", (int)i);
|
size_t len = _snwprintf_s(buffer, _TRUNCATE, L"%%%i", (int)i);
|
||||||
size_t start = 0, pos;
|
size_t start = 0, pos;
|
||||||
|
|
||||||
|
const WCHAR* measureValue = m_Measures[i - 1]->GetStringValue(autoScale, scale, decimals, percentual);
|
||||||
|
int measureValueLen = wcslen(measureValue);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
pos = str.find(buffer, start, len);
|
pos = str.find(buffer, start, len);
|
||||||
if (pos != std::wstring::npos)
|
if (pos != std::wstring::npos)
|
||||||
{
|
{
|
||||||
str.replace(pos, len, stringValues[i - 1]);
|
str.replace(pos, len, measureValue, measureValueLen);
|
||||||
start = pos + stringValues[i - 1].length();
|
start = pos + measureValueLen;
|
||||||
replaced = true;
|
replaced = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -557,26 +561,6 @@ bool CMeter::ReplaceMeasures(const std::vector<std::wstring>& stringValues, std:
|
|||||||
return replaced;
|
return replaced;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
** Replaces %1, %2 etc with the corresponding measure value
|
|
||||||
*/
|
|
||||||
void CMeter::ReplaceToolTipMeasures(std::wstring& str)
|
|
||||||
{
|
|
||||||
std::vector<std::wstring> stringValues;
|
|
||||||
|
|
||||||
if (!m_Measures.empty())
|
|
||||||
{
|
|
||||||
// Get the values for the measures
|
|
||||||
std::vector<CMeasure*>::const_iterator iter = m_Measures.begin();
|
|
||||||
for ( ; iter != m_Measures.end(); ++iter)
|
|
||||||
{
|
|
||||||
stringValues.push_back((*iter)->GetStringValue(AUTOSCALE_ON, 1, 0, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
ReplaceMeasures(stringValues, str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Does the initial construction of the ToolTip for the meter
|
** Does the initial construction of the ToolTip for the meter
|
||||||
*/
|
*/
|
||||||
@ -630,7 +614,7 @@ void CMeter::UpdateToolTip()
|
|||||||
SendMessage(hwndTT, TTM_GETTOOLINFO, NULL, (LPARAM)&ti);
|
SendMessage(hwndTT, TTM_GETTOOLINFO, NULL, (LPARAM)&ti);
|
||||||
|
|
||||||
std::wstring text = m_ToolTipText;
|
std::wstring text = m_ToolTipText;
|
||||||
ReplaceToolTipMeasures(text);
|
ReplaceMeasures(text);
|
||||||
ti.lpszText = (LPTSTR)text.c_str();
|
ti.lpszText = (LPTSTR)text.c_str();
|
||||||
ti.rect = GetMeterRect();
|
ti.rect = GetMeterRect();
|
||||||
|
|
||||||
@ -673,7 +657,7 @@ void CMeter::UpdateToolTip()
|
|||||||
}
|
}
|
||||||
|
|
||||||
text = m_ToolTipTitle;
|
text = m_ToolTipTitle;
|
||||||
ReplaceToolTipMeasures(text);
|
ReplaceMeasures(text);
|
||||||
SendMessage(hwndTT, TTM_SETTITLE, (WPARAM) hIcon, (LPARAM)text.c_str());
|
SendMessage(hwndTT, TTM_SETTITLE, (WPARAM) hIcon, (LPARAM)text.c_str());
|
||||||
|
|
||||||
if (destroy)
|
if (destroy)
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "Litestep.h"
|
#include "Litestep.h"
|
||||||
#include "ConfigParser.h"
|
#include "ConfigParser.h"
|
||||||
#include "MeterWindow.h"
|
#include "MeterWindow.h"
|
||||||
|
#include "Measure.h"
|
||||||
#include "Group.h"
|
#include "Group.h"
|
||||||
|
|
||||||
class CMeasure;
|
class CMeasure;
|
||||||
@ -121,8 +122,7 @@ protected:
|
|||||||
bool BindPrimaryMeasure(CConfigParser& parser, const WCHAR* section, bool optional);
|
bool BindPrimaryMeasure(CConfigParser& parser, const WCHAR* section, bool optional);
|
||||||
void BindSecondaryMeasures(CConfigParser& parser, const WCHAR* section);
|
void BindSecondaryMeasures(CConfigParser& parser, const WCHAR* section);
|
||||||
|
|
||||||
void ReplaceToolTipMeasures(std::wstring& str);
|
bool ReplaceMeasures(std::wstring& str, AUTOSCALE autoScale = AUTOSCALE_ON, double scale = 1.0, int decimals = 0, bool percentual = false);
|
||||||
static bool ReplaceMeasures(const std::vector<std::wstring>& stringValues, std::wstring& str);
|
|
||||||
|
|
||||||
const std::wstring m_Name;
|
const std::wstring m_Name;
|
||||||
std::vector<CMeasure*> m_Measures;
|
std::vector<CMeasure*> m_Measures;
|
||||||
|
@ -152,30 +152,17 @@ bool CMeterImage::Update()
|
|||||||
|
|
||||||
if (!m_Measures.empty()) // read from the measures
|
if (!m_Measures.empty()) // read from the measures
|
||||||
{
|
{
|
||||||
std::wstring val = m_Measures[0]->GetStringValue(AUTOSCALE_OFF, 1, 0, false);
|
|
||||||
|
|
||||||
if (m_ImageName.empty())
|
if (m_ImageName.empty())
|
||||||
{
|
{
|
||||||
m_ImageNameResult = val;
|
m_ImageNameResult = m_Measures[0]->GetStringValue(AUTOSCALE_OFF, 1, 0, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::vector<std::wstring> stringValues;
|
|
||||||
|
|
||||||
stringValues.push_back(val);
|
|
||||||
|
|
||||||
// Get the values for the other measures
|
|
||||||
std::vector<CMeasure*>::const_iterator iter = m_Measures.begin();
|
|
||||||
for ( ; iter != m_Measures.end(); ++iter)
|
|
||||||
{
|
|
||||||
stringValues.push_back((*iter)->GetStringValue(AUTOSCALE_OFF, 1, 0, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
m_ImageNameResult = m_ImageName;
|
m_ImageNameResult = m_ImageName;
|
||||||
if (!ReplaceMeasures(stringValues, m_ImageNameResult))
|
if (!ReplaceMeasures(m_ImageNameResult))
|
||||||
{
|
{
|
||||||
// ImageName doesn't contain any measures, so use the result of MeasureName.
|
// ImageName doesn't contain any measures, so use the result of MeasureName.
|
||||||
m_ImageNameResult = val;
|
m_ImageNameResult = m_Measures[0]->GetStringValue(AUTOSCALE_OFF, 1, 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -490,27 +490,20 @@ bool CMeterString::Update()
|
|||||||
{
|
{
|
||||||
int decimals = (m_NumOfDecimals != -1) ? m_NumOfDecimals : (m_NoDecimals && (m_Percentual || m_AutoScale == AUTOSCALE_OFF)) ? 0 : 1;
|
int decimals = (m_NumOfDecimals != -1) ? m_NumOfDecimals : (m_NoDecimals && (m_Percentual || m_AutoScale == AUTOSCALE_OFF)) ? 0 : 1;
|
||||||
|
|
||||||
std::vector<std::wstring> stringValues;
|
|
||||||
std::vector<CMeasure*>::const_iterator iter = m_Measures.begin();
|
|
||||||
for ( ; iter != m_Measures.end(); ++iter)
|
|
||||||
{
|
|
||||||
stringValues.push_back((*iter)->GetStringValue(m_AutoScale, m_Scale, decimals, m_Percentual));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the text
|
// Create the text
|
||||||
m_String = m_Prefix;
|
m_String = m_Prefix;
|
||||||
if (m_Text.empty())
|
if (!m_Measures.empty())
|
||||||
{
|
{
|
||||||
if (!stringValues.empty())
|
if (m_Text.empty())
|
||||||
{
|
{
|
||||||
m_String += stringValues[0];
|
m_String += m_Measures[0]->GetStringValue(m_AutoScale, m_Scale, decimals, m_Percentual);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::wstring tmpText = m_Text;
|
||||||
|
ReplaceMeasures(tmpText, m_AutoScale, m_Scale, decimals, m_Percentual);
|
||||||
|
m_String += tmpText;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (!stringValues.empty())
|
|
||||||
{
|
|
||||||
std::wstring tmpText = m_Text;
|
|
||||||
ReplaceMeasures(stringValues, tmpText);
|
|
||||||
m_String += tmpText;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user