It is currently October 22nd, 2021, 7:29 am

Weather Skins Not Working

Help with creating, editing & fixing problems with skins
User avatar
jsmorley
Developer
Posts: 22372
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Weather Skins Not Working

Post by jsmorley »

I don't think the culprit is StringIndex2 as such.

https://docs.rainmeter.net/tips/webparser-using-stringindex2/

There must be something else about this that is throwing WebParser.

and I need to change the URL that example uses. That feed is long dead...
User avatar
Yincognito
Rainmeter Sage
Posts: 4070
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Skins Not Working

Post by Yincognito »

jsmorley wrote: August 2nd, 2020, 1:32 am I don't think the culprit is StringIndex2 as such.

https://docs.rainmeter.net/tips/webparser-using-stringindex2/

There must be something else about this that is throwing WebParser.

and I need to change the URL that example uses. That feed is long dead...
Understood - I'll build a basic skin and see if it happens there as well. Just to take out a possible (yet unlikely, in my view) mistake in my code.
User avatar
jsmorley
Developer
Posts: 22372
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Weather Skins Not Working

Post by jsmorley »

I'd be tempted to use FinishAction on the "parent" to throw a [!CommandMeasure MeasureName "Update"] at the "intermediate" measure to see if that has any effect.
User avatar
Yincognito
Rainmeter Sage
Posts: 4070
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Skins Not Working

Post by Yincognito »

jsmorley wrote: August 2nd, 2020, 1:44 am I'd be tempted to use FinishAction on the "parent" to throw a [!CommandMeasure MeasureName "Update"] at the "intermediate" measure to see if that has any effect.
Just tried it. No effect. :confused:
User avatar
Yincognito
Rainmeter Sage
Posts: 4070
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Skins Not Working

Post by Yincognito »

jsmorley wrote: August 2nd, 2020, 1:32 am I don't think the culprit is StringIndex2 as such.

https://docs.rainmeter.net/tips/webparser-using-stringindex2/

There must be something else about this that is throwing WebParser.

and I need to change the URL that example uses. That feed is long dead...
Here is the simple test. This assumes there is a UCS-2 LE BOM file called SomeFile.txt in the current skin folder, having this contents:

Code: Select all

This is a unicode code point: \u0219 and this is not: u0219.
The code:

Code: Select all

[Variables]

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=47,47,47,255

---Measures---

[MeasureParent]
Measure=WebParser
URL=file://#CURRENTPATH#SomeFile.txt
CodePage=1200
RegExp=^(.*)$

[MeasureChild]
Measure=WebParser
URL=[MeasureParent]
StringIndex=1
RegExp=(?siU)^(.*) and (.*)$
StringIndex2=1
DecodeCodePoints=1

[MeasureGrandchild]
Measure=WebParser
URL=[MeasureChild]
StringIndex=1
RegExp=(?siU)^(.*): (.*)$
StringIndex2=2
;DecodeCodePoints=1

---Meters---

[MeterTest]
Meter=STRING
X=0
Y=0
FontFace=Consolas
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
FontSize=16
AntiAlias=1
MeasureName=MeasureGrandchild
Text="Test = %1"
DynamicVariables=1
Result:
Code Point Grandchild.jpg
Seems like the decoding is done in the child, but somehow it doesn't persist in the grandchild, unless one adds the option to it as well... :confused:
You do not have the required permissions to view the files attached to this post.
User avatar
jsmorley
Developer
Posts: 22372
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Weather Skins Not Working

Post by jsmorley »

Ah, well, that makes some sense. Much like Substitute, the DecodeCodePoints option is acting on the string value of the measure, no doubt when the string value is "asked for", and does not "change" the indexed value of the intermediate child measure. Since the URL=[SomeMeasure] option in WebParser is not "asking for the string value" of the measure in question, but internal to WebParser saying "let me use your data". I can see why DecodeCodePoints isn't going to work until you actually use the string value of the measure someplace. It is only the "grandchild" that is ever being displayed.

Don't be fooled by the log, it is "asking for the string value" of the child measure. So the DecodeCodePoints is working there. That doesn't in any way mean that the value of the child measure is actually "changed" by the DecodeCodePoints.

I don't know if it helps your situation, but you can "ask for" and use the "string value" of a WebParser measure in another WebParser measure like this:

URL=[&SomeMeasureName]
DynamicVariables=1

Just keep in mind that things like Substitute, DecodeCharacterReference, DecodeCodePoints and any another options that might be eluding me at the moment that "manipulate" the value of a measure, do NOT "change" the value of the measure. They are applied when the value of the measure is "asked for" by something else.
User avatar
Yincognito
Rainmeter Sage
Posts: 4070
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Skins Not Working

Post by Yincognito »

jsmorley wrote: August 2nd, 2020, 2:13 am Ah, well, that makes some sense. Much like Substitute, the DecodeCodePoints option is acting on the string value of the measure, no doubt when the string value is "asked for", and does not "change" the indexed value of the intermediate child measure. Since the URL=[SomeMeasure] option in WebParser is not "asking for the string value" of the measure in question, but internal to WebParser saying "let me use your data". I can see why DecodeCodePoints isn't going to work until you actually use the string value of the measure someplace. It is only the "grandchild" that is ever being displayed.

Don't be fooled by the log, it is "asking for the string value" of the child measure. So the DecodeCodePoints is working there. That doesn't in any way mean that the value of the child measure is actually "changed" by the DecodeCodePoints.
Yep, I was just going to compare it to the way Substitute doesn't really change the value of the measure as well. Well, it looks like I'll have to use the option on the grandchildren then. The good thing is that in my skin, due to the way I built it, there are below 50 of them, unlike in other skins (don't ask me which...) that have hundreds of them. :???:

And of course, one way or another, it works, that's the most important thing.

P.S. Hopefully I won't get into similar issues when I pass the value of a code point decoded child (without other children) to a String measure, cause I'm doing that for forecast data, as String measures are friendlier to dynamic variables than WebParser ones (which need a command update, i.e. another polling to the site, to get them)...
User avatar
jsmorley
Developer
Posts: 22372
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Weather Skins Not Working

Post by jsmorley »

Code: Select all

[Variables]

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=47,47,47,255

---Measures---

[MeasureParent]
Measure=WebParser
URL=file://#CURRENTPATH#SomeFile.txt
CodePage=1200
RegExp=^(.*)$

[MeasureChild]
Measure=WebParser
URL=[MeasureParent]
StringIndex=1
RegExp=(?siU)^(.*) and (.*)$
StringIndex2=1

[MeasureGrandchild]
Measure=WebParser
URL=[MeasureChild]
StringIndex=1
RegExp=(?siU)^(.*): (.*)$
StringIndex2=2
DecodeCodePoints=1

---Meters---

[MeterTest]
Meter=STRING
X=0
Y=0
FontFace=Consolas
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
FontSize=16
AntiAlias=1
MeasureName=MeasureGrandchild
Text="Test = %1"
DynamicVariables=1

1.jpg

2.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
jsmorley
Developer
Posts: 22372
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Weather Skins Not Working

Post by jsmorley »

It should be fine passing the WebParser child value with DecodeCodePoints to a String measure.

[MeasureString]
Measure=String
String=[SomeMeasure]
DynamicVariables=1

Is always by its nature "asking for" the string value of that section variable, and any DecodeCodePoints and such on [SomeMeasure] will be applied.
User avatar
Yincognito
Rainmeter Sage
Posts: 4070
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Skins Not Working

Post by Yincognito »

jsmorley wrote: August 2nd, 2020, 2:34 am It should be fine passing the WebParser child value with DecodeCodePoints to a String measure.

[MeasureString]
Measure=String
String=[SomeMeasure]
DynamicVariables=1

Is always by its nature "asking for" the string value of that section variable, and any DecodeCodePoints and such on [SomeMeasure] will be applied.
Yes. It worked, just made all the needed changes. Just have to remember whenever I'll edit again the skin to keep the option on the daily forecast child measure (which is the only child of the 4 that doesn't have grandchildren), as it's the last link in the chain.

All in all, great job! Many thanks for all your effort. :rosegift: