FlyingHyrax's avatar

FlyingHyrax

Writ in Water
635 Watchers
130.5K
Page Views
17 Deviations
Hello everyone! It's been a while. Other priorities took my time for working on Rainmeter, so several of my skins have been broken for a while and there are lots of unanswered comments. Sadly I don't think I'll ever get around to answering all of them!

I had some free time recently, and I've finally been able to update Elementary. 3.0 is out and the weather skin finally works again (I hope).

Cheers,
Hyrax
Join the community to add your comment. Already a deviant? Log In
6 min read
Welcome to the CircuitousTwo Frequently Asked Questions guide.  I will use this journal to post answers to questions about the skins that I either get a lot, or that are too long and complicated to put in a mere comment.
CircuitousTwo by FlyingHyrax

Does the media player skin work with Spotify?

Short answer - not really.
The NowPlaying plugin used in the media player skin only has partial support for Spotify.  As far as I can tell, this is mostly just because Spotify only shows limited information in the first place.  From the manual, here is what NowPlaying can do with Spotify:
Partially supported. Only the types Artist, Track and the bangs Play, PlayPause, Stop, Next, and Previous are available.
This means that for Circuitous Two, many of the features of the media player skin simply will not work with Spotify.  No Album name will ever be displayed, song progress won't be displayed by the roundline, the repeat and shuffle buttons will not function, and you won't be able to click the roundline or scroll with the mousewheel to move backwards and forwards in the current song.  All that is why I decided to remove Spotify as an option in the Config.ini skin.
If you would like to use Spotify with CircuitousTwo regardless, you can do so by manually editing the file "...\CircuitousTwo\@Resources\Settings.txt".  (You can open the file by clicking the "advanced" link in the Config.ini skin.)  Just change the mediaPlayer value to Spotify, save the file, and refresh the Circuitous NowPlaying skin.



How do I make the SpeedFan skin work?

First, make sure that SpeedFan is actually running.  CoreTemp and SpeedFan provide the data for the CoreTemp and SpeedFan skins, respectively.  If the appropriate program is not running in the background, then the Tempurature skins will not display information.
SpeedFan assigns an index (a number) to each temperature and voltage sensor it finds on your system.  In order to retrieve the correct information from the SpeedFan application, Rainmeter's SpeedFan.dll plugin has to know which index to get the values for.  To find the index for a sensor, open the "Configure" window in the SpeedFan application, and count down from the top of the list of sensors.  The are numbered starting at zero, increasing from top to bottom, as shown here:



The same numbering scheme is used for the Voltage sensors - just go to the "Voltages" tab and count to find the index for the sensor you want to show in Rainmeter.
You set the index values for the CircuitousTwo SpeedFan skin in the file "...\CircuitousTwo\@Resources\Settings.txt".  You need to set the sfTempIndex and sfVoltIndex to the index of the temperature sensor and voltage sensor you want to show in the Circuitous SpeedFan skin:



Enter your desired index values, save the text file, and refresh the SpeedFan skin.

Can I add more than three hard drives?

Yes, and it isn't too difficult; but you do need to have at least a basic understanding of how Rainmeter skins work.
To make things as simple as possible, we will copy the original hard drive skins, and change the variable names in the code of the new copies to use new drive letter variables.
First, we should create more variables for our additional hard drive letters in "...\CircuitousTwo\@Resources\Settings.txt".  You can call them anything you'd like, but for consistency I will call them "hdN" (where 'N' is a number) like the original hard drive variables:



Obviously, the value of the variables you create in Settings.txt should be the letter of the hard drive you want to monitor.  Don't forget to save your changes.
Next, we will make copies of the original hard drive skins.  The hard drive skins are in the folder "...\CircuitousTwo\Disks\".  "disk1.ini" is coded slightly differently from disk2 and disk3 - disk1 is set to ignore removable hard drives and has a higher update rate.  For simplicity we will just make copies of disk2.  Copy the whole disk2 folder - if each .ini file is not in its own folder, then Rainmeter will consider them as "Variants" and you will not be able to launch them at the same time.



Now we should rename our new folders and files.  Name the folders "disk4" and "disk5", and the files inside "disk4.ini" and "disk5.ini".  Just like with the variables, you can technically name these anything you want - but using numbers for these almost-identical skins makes it easier to keep track of things.



Next, we need to edit our new skin files to use the variables we created in Settings.txt.  Although we renamed them, the code inside disk4.ini and disk5.ini is exactly the same as the code in disk2.ini, so if we launched all of them right now they would look exactly the same.  What we need to do is go through our new files and change all instances of #hd2# to whatever our new variable name is for that skin (e.g., for disk4.ini we would change all occurrences of #hd2# to #hd4#).  The Find/Replace utility is your friend.



After the change, all the measures and meters in our skin file should use one of the new drive letter variables we created.  Don't forget to save.  Make sure that each of your hard drive skins is in it's own folder, each folder is named differently, and that each hard disk skin uses a different drive letter variable from Settings.txt.  When you are done making changes, right click on the Rainmeter tray icon and select "Refresh All."  Rainmeter will search through your skins folder and find the new skins you made, so that you can launch them from the Manage dialog or the context menu, just like the originals.



You can use these steps to add, in theory, as many hard drives as you'd like (up to the point where you run out of hard drive letters, of course).

How do I make the clock skin show AM/PM?

On the "Time" page of the Config.ini skin, click the "code" text under "Time Format."  In the text box, add " %p" to the end of the string and press enter.  This will add an AM/PM indicator to the main clock text:



You can also set the code string directly in the Settings.txt file.  A full list of valid format codes can be found here.
11Comments
Join the community to add your comment. Already a deviant? Log In
11 min read
If you are unfamiliar with the binary (base 2) numeral system, you may want to do some reading here before going through the rest of this post.

The aim of this skin is to create a binary-coded decimal clock in Rainmeter.  To keep this short, we'll just do the hours and minutes (especially since the code for seconds is virtually identical to the minutes anyway).



Download Full Skin Here
(package includes several variants - we'll be going through "Decimal_HM.ini")

The Groundwork


To begin, we'll need [Rainmeter], [Metadata], and [Variables] sections.  Once again, we'll use include to put the variables in an external file (called Appearance.txt) so the end user can change settings easily.

[Rainmeter]
Author=Flying Hyrax
Version=2001000

[Metadata]
Name=Binary Clock - Encoded Decimal - Hours and Minutes
Version=1.0
Information=
License=Creative Commons Attribution-Non Commercial-Share Alike 3.0

[Variables]
include=#CURRENTPATH#Appearance.txt

(Here's the contents of Appearance.txt, for reference:)

[Variables]

Hour0=200,200,200,100
Hour1=250,250,250,200

Min0=200,200,200,100
Min1=250,250,250,200

Sec0=200,200,200,100
Sec1=250,250,250,200

Radius=6
Space=12

Next, back in the main file, we need Time Measures to return the "raw" time information that we will be converting into binary:

[mHour]
Measure=TIME
Format=%H

[mMin]
Measure=TIME
Format=%M

Math!


Now we get to the fun stuff.  For this version of the binary clock, the different place values of the decimal time each have their own column.  In other words, we'll need to convert the tens place of the hour and one's place of the hour into binary separately.  Lets say it's 1 o'clock PM (13 in the 24-hour representation) - we'll need a way to separate the "1" and the "3" in 13 from each other.  To do this, the solution I came up with is to use some Calc Measures and the FRAC and TRUNC functions.  Both functions take a number as their input. FRAC returns the fractional part (i.e. FRAC(1.234) returns .234) while TRUNC returns the whole number (TRUNC(4.321) returns 4).  Here's what we do:

[mHourTens]
Measure=CALC
Formula=(TRUNC(mHour * 0.1))

[mHourOnes]
Measure=CALC
Formula=(10 * (FRAC(mHour * 0.1)))

[mMinTens]
Measure=CALC
Formula=(TRUNC(mMin * 0.1))

[mMinOnes]
Measure=CALC
Formula=(10 * (FRAC(mMin * 0.1)))

Here's what's going on there, using 13:27 as an example time.  [mHourTens] multiplies 13 by 0.1, giving 1.3, then uses TRUNC to isolate the 1.  [mHourOnes] multiplies 13 by 0.1 (gives 1.3), isolates the fractional part (0.3), then multiplies by 10 (returns 3).  [mMinTens] and [mMinOnes] do the same thing, but with the numerals in 27.  Using these Calcs, we now have the individual digits that make up the current time: 1, 3, 2, and 7.

More math!


Now we're going to start converting those numbers into binary.  I'm sure there are several ways to do this, but for this particular skin this is the approach I took, and I think it worked rather well.  Using this method, you get one measure for each of the place values of the binary numbers, each of which returns either a 1 or a 0.  These raw numbers can then be used in a variety of different meter types.  

The algorithm I used is described here, under "Short division by two with remainder."  Read that section to better understand what I'm doing in these next sections, but the TL;DR is that to convert a number from decimal to binary, you divide by two, and the remainder becomes the next least-significant bit (the next place to the left, starting at the radix point).  The quotient of the division operation is again divided by two leaving a remainder of 1 or 0; repeat until the quotient is zero.  For example, here are the Calc measures to convert the decimal ten's place into binary values:

[mHourTensBin1]
Measure=CALC
Formula=(mHourTens >= 1) ? (mHourTens % 2) : 0
DynamicVariables=1

[mHourTensBin2]
Measure=CALC
Formula=(mHourTens >= 2) ? ((TRUNC(mHourTens / 2)) % 2) : 0
DynamicVariables=1

Here's the rundown.  In [mHourTenBin1], we first check if the ten's place of the decimal hour ("1" from our example above; the result of [mHourTens]) is greater than or equal to 1 using a Conditional Operator (see here also).  If the input is at least 1, we use the Modulo operation (%) to do the remainder division.

Modulo divides one number by another number, but returns the remainder of the division operation, not the quotient.  For instance, (5  % 2) would return 1, and (7 % 4) would return 3.  Especially, note that 1 % 2 returns 1, because 1 / 2 in remainder division is 0 remainder 1.  (That's pretty much the principle that makes this skin work).

[mHourTensBin2] is where things start to get fun.  Now that we've evaluated the 2^0 place using [mHourTensBin1], we need to evaluate the next least significant bit - in this case, 2^1.  Recall from here that we do this by performing remainder division on the whole integer answer from our first operation.  So what [mHourTensBin2] does, after checking that the input value is greater than or equal to 2, is divide the input by 2, TRUNC the answer to give us the whole integer, then use the Modulo operation on that.  If you are confused by my mediocre writing, it helps to use actual numbers as examples.  For instance, "2" (the ten's place if our hour is between 20 and 23):

2/2=1.0
TRUNC(1.0)=1
1%2=1

Alright then.  Next, the decimal one's place.  For the decimal ten's place there are only three possible options (0, 1, or 2), which can be represented by 2 binary places (2^0 and 2^1).  But the one's place has 10 possible options (the digits 0-9), which needs 4 binary places (2^0, 2^1, 2^2, 2^3).

[mHourOnesBin1]
Measure=CALC
Formula=(mHourOnes >= 1) ? (mHourOnes % 2) : 0
DynamicVariables=1

[mHourOnesBin2]
Measure=CALC
Formula=(mHourOnes >= 2) ? ((TRUNC(mHourOnes / 2)) % 2) : 0
DynamicVariables=1

[mHourOnesBin4]
Measure=CALC
Formula=(mHourOnes >= 4) ? ((TRUNC((TRUNC(mHourOnes / 2)) / 2)) % 2) : 0
DynamicVariables=1

[mHourOnesBin8]
Measure=CALC
Formula=(mHourOnes >= 8) ? ((TRUNC((TRUNC((TRUNC(mHourOnes / 2)) / 2)) / 2)) % 2) : 0
DynamicVariables=1

This is the same process we used for the ten's place, only expanded to include up to the binary 8's (2^3) place.  The higher the place value, the longer the formula necessary to evaluate the binary value of that place, because you must do one TRUNC(n/2) for every previous place.  Hence in [mHourOneBin8] there are 3 TRUNC functions, to account for the binary 4's, 2's, and 1's places.  For instance, if [mHourOnes] was returning 9, then the process that [mHourOnesBin8] would go through would look something like this:

9/2=4.5
TRUNC(4 .5)=4
4/2=2
TRUNC(2)=2
2/2=1
TRUNC(1)=1
1 % 2 = 1

Just a bit more math...


Next, we need to do the same thing, only for the minutes.  The ten's place for the minutes has 6 possible values (0-5), meaning we need 3 binary places; while the one's place has 10 options (0-9), so we need 4 binary places for that.

[mMinTensBin1]
Measure=CALC
Formula=(mMinTens >= 1) ? (mMinTens % 2) : 0
DynamicVariables=1

[mMinTensBin2]
Measure=CALC
Formula=(mMinTens >= 2) ? ((TRUNC(mMinTens / 2)) % 2) : 0
DynamicVariables=1

[mMinTensBin4]
Measure=CALC
Formula=(mMinTens >= 4) ? ((TRUNC((TRUNC(mMinTens / 2)) / 2)) % 2) : 0
DynamicVariables=1

[mMinOnesBin1]
Measure=CALC
Formula=(mMinOnes >= 1) ? (mMinOnes % 2) : 0
DynamicVariables=1

[mMinOnesBin2]
Measure=CALC
Formula=(mMinOnes >= 2) ? ((TRUNC(mMinOnes / 2)) % 2) : 0
DynamicVariables=1

[mMinOnesBin4]
Measure=CALC
Formula=(mMinOnes >= 4) ? ((TRUNC((TRUNC(mMinOnes / 2)) / 2)) % 2) : 0
DynamicVariables=1

[mMinOnesBin8]
Measure=CALC
Formula=(mMinOnes >= 8) ? ((TRUNC((TRUNC((TRUNC(mMinOnes / 2)) / 2)) / 2)) % 2) : 0
DynamicVariables=1

...and that's all the binary conversion stuff.  To do seconds, the formulas would be the same as for the minutes - only changing all the measure names.

Auto Scaling


Now assuming that you are still reading and that your brain isn't fried (mine sure was when I was writing this), we can move on to appearance stuff.  We'll be using Roundline meters to display our binary "1s" and "0s," and it would be nice if the end user could just change some numbers in our Appearance.txt file to make the skin whatever size they wanted.  Unfortunately, you cannot use a formula directly in a Roundline meter, so we can't just do some math in each meter to make the various pieces scale to each other.  What we can do is put the math in some more Calc measures, then plug those measures into our meters using Dynamic Variables.

[mHourTensYPos]
Measure=CALC
Formula=((#Radius# * 4) + (#Space# * 3))
DynamicVariables=1

[mMinSecYPos]
Measure=CALC
Formula=((#Radius# * 2)+(#Space# * 2))
DynamicVariables=1

[mMinSecXPos]
Measure=CALC
Formula=(#Space# * 1.5)
DynamicVariables=1

[mSizeCalc]
Measure=CALC
Formula=(#Radius# * 2)

[mAlways1]
Measure=FREEDISKSPACE
Total=1
MinValue=0
MaxValue=1
UpdateDivider=86400

Here's a quick diagram showing where these formulas are coming from ([mHourTensYPos], specifically):



[mAlways1] is a little "cheat" measure that we plug in as the MeasureName for all of our Roundline meters - by using it, all our Roundlines will appear as solid dots.

Meter Styles


To accomplish the "lit" vs "unlit" effect for the binary dots, I decided to use Meter Styles and Dynamic Variables.  Here's the code:

[sHour0]
LineColor=#Hour0#

[sHour1]
LineColor=#Hour1#

[sMin0]
LineColor=#Min0#

[sMin1]
LineColor=#Min1#

[sCircle]
LineWidth=1
LineLength=#Radius#
LineStart=0
StartAngle=0
RotationAngle=6.28
Solid=1
AntiAlias=1
MeasureName=mAlways1
X=r
Y=#Space#R
W=[mSizeCalc]
H=[mSizeCalc]
DynamicVariables=1

[sCircle] contains all the settings that are common to every single Roundline meter, so that we don't have to repeat them a bunch of times.  (You'll see soon how short this makes all of the Meters.)  The other Styles are used with the output of the various measures (which will be either a 1 or 0) to change which color the various meters will be, by plugging the output of a Calc measure into the "MeterStyle=" line of the matching meter as a Dynamic Variable...

Meters


...like this:

[HourTens2]
Meter=ROUNDLINE
MeterStyle=sCircle | sHour[mHourTensBin2]
X=#Space#
Y=[mHourTensYPos]

[HourTens1]
Meter=ROUNDLINE
MeterStyle=sCircle | sHour[mHourTensBin1]

[HourOnes8]
Meter=ROUNDLINE
MeterStyle=sCircle | sHour[mHourOnesBin8]
X=#Space#R
Y=#Space#

[HourOnes4]
Meter=ROUNDLINE
MeterStyle=sCircle | sHour[mHourOnesBin4]

[HourOnes2]
Meter=ROUNDLINE
MeterStyle=sCircle | sHour[mHourOnesBin2]

[HourOnes1]
Meter=ROUNDLINE
MeterStyle=sCircle | sHour[mHourOnesBin1]

[MinuteTens4]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinTensBin4]
X=[mMinSecXPos]R
Y=[mMinSecYPos]

[MinuteTens2]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinTensBin2]

[MinuteTens1]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinTensBin1]

[MinuteOnes8]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinOnesBin8]
X=#Space#R
Y=#Space#

[MinuteOnes4]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinOnesBin4]

[MinutesOnes2]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinOnesBin2]

[MinuteOnes1]
Meter=ROUNDLINE
MeterStyle=sCircle | sMin[mMinOnesBin1]

[spacer]
Meter=IMAGE
SolidColor=0,0,0,1
X=R
Y=R
W=#Space#
H=#Space#

As you can see, all the Roundline meters share sCircle, but depending on whether or not the meter is for the hours or minutes, and whether or not the Measure for the appropriate binary place returns a 1 or 0, the second style is either sHour0, sHour1, sMin0, or sMin1; and this second style contains the LineColor for the Roundline meter.  The last meter is just an empty box with the dimensions of our #Space# variable, so that when the skin snaps to the edges of the screen or other skins, there is a gap between the circles and the edge.

That's pretty much it.  The difficulty with this skin is definitely the Calc measures used to change the Time measures into individual binary digits.  Except for that, the rest of the skin is fairly straightforward.

-fh
10Comments
Join the community to add your comment. Already a deviant? Log In
4 min read
(For deliprofesor and Hippokrates)

First things first, we'll need to add more variables for the hard drives you want to monitor.  There are several ways to do this (and you could get by without doing it at all and just hardcoding the drive letters into the skin) but the most useable way is probably to add them to Settings.txt.  I just added two more variables below the one that is already there in Settings.txt.  You can name them whatever you want as long as the names are all different.

drive=C
drive2=H
drive3=D

Now that that's out of the way, we have to add measures for the extra hard drives.  In either system skin (eSystem1 or eSystem2), you can pretty much just copy the current [msrDrive] measure for as many hard drives as you need, just change the name of each instance ([msrHardDrive2], [msrHardDrive3], etc.) and change the #drive# variable to the name of the correct variable in Settings.txt.  Like so:

[msrDrive]
Measure=FreeDiskSpace
Drive=#drive#:
InvertMeasure=1
UpdateDivider=10

[msrDrive2]
Measure=FreeDiskSpace
Drive=#drive2#:
InvertMeasure=1
UpdateDivider=10
IgnoreRemovable=0

[msrDrive3]
Measure=FreeDiskSpace
Drive=#drive3#:
InvertMeasure=1
UpdateDivider=10
IgnoreRemovable=0

(I added "IgnoreRemovable=0" so that the new measures would work with my USB drives.  You don't need it if all your drives are internal.)

Lastly, we need to add corresponding meters for each measure that we added.  Again, there are lots of ways to do this, I'll just show a few different configurations.  First, for "eSystem2.ini" I did this:

[mtrDrive]
Meter=STRING
MeasureName=msrDrive
MeterStyle=sText3
X=0
Y=5R
Percentual=1
Text="HD#drive# %1%"

[mtrDrive2]
Meter=STRING
MeasureName=msrDrive2
MeterStyle=sText3
X=0
Y=5R
Percentual=1
Text="HD#drive2# %1%"

[mtrDrive3]
Meter=STRING
MeasureName=msrDrive3
MeterStyle=sText3
X=0
Y=5R
Percentual=1
Text="HD#drive3# %1%"

You just have to copy the original ([mtrDrive]), but change the name of the meter, the MeasureName, and the variable used in the "Text=" line so that the right meters show the right drives.  Using this code in eSystem2.ini makes the skin look like this:



Changing the meters in eSystem1.ini is a little more difficult, only because you have to change all of the X positions manually.  The important thing to remember is that the meters are all spaced 150 px apart.  So when you add in a meter, to get it's X position just add 150 to the X of the meter before it.

[mtrDrive]
Meter=STRING
MeasureName=msrDrive
MeterStyle=sText3
X=300
Y=0
Percentual=1
Text="HD#drive# %1%"

[mtrDrive2]
Meter=STRING
MeasureName=msrDrive2
MeterStyle=sText3
X=450
Y=0
Percentual=1
Text="HD#drive2# %1%"

[mtrDrive3]
Meter=STRING
MeasureName=msrDrive3
MeterStyle=sText3
X=600
Y=0
Percentual=1
Text="HD#drive3# %1%"

Using the above code, you'll also need to change the X value in [mtrNet] to 750 so that things don't overlap.  The finished product looks like this:



If you want to use up less horizontal space, you can combine the two different layouts, putting everything horizontally like in eSystem1 but stacking the HD meters like in eSystem2:

[mtrDrive]
Meter=STRING
MeasureName=msrDrive
MeterStyle=sText3
X=300
Y=0
Percentual=1
Text="HD#drive# %1%"

[mtrDrive2]
Meter=STRING
MeasureName=msrDrive2
MeterStyle=sText3
X=300
Y=5R
Percentual=1
Text="HD#drive2# %1%"

[mtrDrive3]
Meter=STRING
MeasureName=msrDrive3
MeterStyle=sText3
X=300
Y=5R
Percentual=1
Text="HD#drive3# %1%"

[mtrNet]
Meter=STRING
MeasureName=msrNetUp
MeasureName2=msrNetDown
MeterStyle=sText3
X=450
Y=0
W=200
H=15
AutoScale=1
NumOfDecimals=0
Text="NET %1/%2"

That should look something like this:



And that's that.  You can theoretically add in as many or as few drives as you want, just make sure that:
- the variable names for the drives are all different
- The Measure and Meter names are all different
- The right Variables are used in the right Measure which are used in the right Meters.
(That's why numbering them is so convenient, it helps make sure everything matches.)

Hopefully this will help both of you out; let me know if you have questions or problems.
1Comments
Join the community to add your comment. Already a deviant? Log In
5 min read
This should make the skin only appear when you need a jacket, and be invisible otherwise.  (Note that I haven't tested this personally, so let me know.)
All the measures before [mCalcYN] can stay the same.  However, [mCalcYN] itself needs to be changed like this:

[mCalcYN]
Measure=CALC
Formula=(1 < mCalcTemp) || (0 < mCalcWind) ? 0 : 1

Then we're going to make some change to the meters.  First we're going to add a blank transparent image meter, and move the MouseActions out of the [Rainmeter] section and into this meter - that way you can get the buttons to show even if the strings are hidden, and there will always be a placeholder.  Preferably, Put this after all the measures and before all the other meters.

[bg]
Meter=IMAGE
SolidColor=0,0,0,1
X=0
Y=0
W=82
H=24
MouseOverAction=!Execute [!ShowMeterGroup buttons][!Redraw]
MouseLeaveAction=!Execute [!HideMeterGroup buttons][!Redraw]

Next we change the string meters - we plug the result of [mCalcYN] into the "Hidden" option in both String meters, so if you need a jacket the result will be "Hidden=0" and the skin will show, and the opposite otherwise.

[Y/N]
Meter=STRING
FontFace=#font1#
FontSize=#size1#
FontColor=#color#
X=0
Y=0
AntiAlias=1
SolidColor=0,0,0,1
Text="You need a jacket."
Hidden=[mCalcYN]
DynamicVariables=1

[Elaboration]
Meter=STRING
MeasureName=mTempSubs
MeasureName2=mWindSubs
MeasureName3=mCalcJunction
MeasureName4=mCondition
MeasureName5=mTemp
MeasureName6=mTempUnit
MeasureName7=mWind
MeasureName8=mWindUnit
MeasureName9=mCity
MeasureName10=mRegion
MeasureName11=mCountry
MeasureName12=mDate
FontFace=#font2#
FontSize=#size2#
FontColor=#color#
X=5
Y=43
AntiAlias=1
SolidColor=0,0,0,1
Text="It's %1, %3 %2."
ToolTipText="%9 %10 %11#CRLF#%12#CRLF#%4, %5 %6#CRLF#Wind: %7 %8"
Hidden=[mCalcYN]
DynamicVariables=1

Don't forget the "DynamicVariables=1" option; it definitely won't work without that.
That should be all the changes you need to make.  Let me know how it goes - if it doesn't work then I'll stop being lazy and actually try it myself.  :P



Full code:


[Rainmeter]
Update=1000
Author=Flying Hyrax | flyinghyrax.deviantart.com
DynamicWindowSize=1

[Metadata]
Name=Do I Need a Jacket?
Version=1.0
License=Creative Commons Attribution-Non-Commercial-Share Alike 3.0
Information=Tells you if you'll need a jacket, based on current weather information from Yahoo! Weather and threshold values which you can set. | ALL credit for idea due to www.doineedajacket.com | Variables/options consolidated in Settings.txt in skin's root folder.

[Variables]
include=#CURRENTPATH#settings.txt

[mWeatherData]
Measure=PLUGIN
Plugin=Plugins\WebParser.dll
URL=http://weather.yahooapis.com/forecastrss?p=#loc#&u=#unit#
RegExp="(?siU)<yweather:location city="(.*)".*region="(.*)".*country="(.*)".*<yweather:units temperature="(.*)".*speed="(.*)".*speed="(.*)".*<pubDate>(.*)</pubDate>.*<yweather:condition  text="(.*)".*temp="(.*)".*low="(.*)""
UpdateDivider=900
ErrorString="ixnay on the eatherway"
DecodeCharacterReference=1
ForceReload=1
Debug=0

[mCity]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=1

[mRegion]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=2

[mCountry]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=3

[mTempUnit]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=4

[mWindUnit]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=5

[mWind]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=6

[mDate]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=7

[mCondition]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=8

[mTemp]
Measure=Plugin
Plugin=Plugins\WebParser.dll
URL=[mWeatherData]
StringIndex=9

[mCalcTemp]
Measure=CALC
Formula=#freezeTemp# > mTemp ? 3 : (#coldTemp# > mTemp ? 2 : (#hotTemp# > mTemp ? 1 : 0))

[mTempSubs]
Measure=CALC
Formula=mCalcTemp
Substitute="3":"darn cold out","2":"chilly out","1":"temperate","0":"positively balmy"

[mCalcWind]
Measure=CALC
Formula=#windLow# > mWind ? 0 : (#windHigh# > mWind ? 1 : (#windExtreme# > mWind ? 2 : (#windExtreme# <= mWind ? 3 : 4)))

[mWindSubs]
Measure=CALC
Formula=mCalcWind
Substitute="0":"not windy","1":"somewhat breezy","2":"very windy","3":"your computer just blew away"

[mCalcJunction]
Measure=CALC
Formula=(mCalcTemp > 1) && (mCalcWind > 0) ? 1 : ((mCalcTemp > 1) && (mCalcWind <= 0) ? 2 : ((mCalcTemp <= 1) && (mCalcWind > 0) ? 2 : ((mCalcTemp <= 1) && (mCalcWind <= 0) ? 1 : 0)))
Substitute="1":"and","2":"but","0":","

[mCalcYN]
Measure=CALC
Formula=(1 < mCalcTemp) || (0 < mCalcWind) ? 0 : 1

[bg]
Meter=IMAGE
SolidColor=0,0,0,1
X=0
Y=0
W=82
H=24
MouseOverAction=!Execute [!ShowMeterGroup buttons][!Redraw]
MouseLeaveAction=!Execute [!HideMeterGroup buttons][!Redraw]

[Y/N]
Meter=STRING
FontFace=#font1#
FontSize=#size1#
FontColor=#color#
X=0
Y=0
AntiAlias=1
SolidColor=0,0,0,1
Text="You need a jacket."
Hidden=[mCalcYN]
DynamicVariables=1

[Elaboration]
Meter=STRING
MeasureName=mTempSubs
MeasureName2=mWindSubs
MeasureName3=mCalcJunction
MeasureName4=mCondition
MeasureName5=mTemp
MeasureName6=mTempUnit
MeasureName7=mWind
MeasureName8=mWindUnit
MeasureName9=mCity
MeasureName10=mRegion
MeasureName11=mCountry
MeasureName12=mDate
FontFace=#font2#
FontSize=#size2#
FontColor=#color#
X=5
Y=43
AntiAlias=1
SolidColor=0,0,0,1
Text="It's %1, %3 %2."
ToolTipText="%9 %10 %11#CRLF#%12#CRLF#%4, %5 %6#CRLF#Wind: %7 %8"
Hidden=[mCalcYN]
DynamicVariables=1

[Settings]
Meter=IMAGE
ImageName=set.png
SolidColor=0,0,0,1
X=0
Y=0
W=24
PreserveAspectRatio=1
AntiAlias=1
ImageTint=#color#
Group=buttons
Hidden=1
LeftMouseUpAction=!Execute ["#CURRENTPATH#settings.txt"]
ToolTipText="Open settings.txt"

[Refresh]
Meter=IMAGE
ImageName=fresh.png
SolidColor=0,0,0,1
X=5R
Y=r
W=24
PreserveAspectRatio=1
AntiAlias=1
ImageTint=#color#
Group=buttons
Hidden=1
LeftMouseUpAction=!Refresh
ToolTipText="Refresh skin"

[Help]
Meter=IMAGE
ImageName=help.png
SolidColor=0,0,0,1
X=5R
Y=r
W=24
PreserveAspectRatio=1
AntiAlias=1
ImageTint=#color#
Group=buttons
Hidden=1
LeftMouseUpAction=!Execute ["#CURRENTPATH#info.rtf"]
ToolTipText="Open ReadMe"
0Comments
Join the community to add your comment. Already a deviant? Log In
Featured

CircuitousTwo FAQ by FlyingHyrax, journal

Rainmeter Code Walkthrough #2 - Binary Clock by FlyingHyrax, journal

Adding more Hard Drives to Elementary by FlyingHyrax, journal

DINAJ code for ~legionfalls by FlyingHyrax, journal

Rainmeter Code Walkthrough #1 - Do I Need a Jacket by FlyingHyrax, journal