Commit Graph

55 Commits

Author SHA1 Message Date
Birunthan Mohanathas
35be827071 - Changed std::transform(..., ::towlower/::towupper) to _wcsupr/_wcslwr
- MathParser: Fixed stack overflow (and possible crash) when the nested conditional limit is exceeded
2012-01-25 16:00:49 +00:00
spx
ebec08914a Adjusted copyright notice.
http://www.gnu.org/licenses/gpl-2.0.html
2012-01-23 06:36:15 +00:00
Birunthan Mohanathas
caf0a60a5b Removed ccalc and replaced with MathParser 2012-01-22 20:28:05 +00:00
spx
2835739b12 Code tweaks and cleanup. 2011-12-09 03:28:19 +00:00
spx
8e8b7d1268 Code tweaks and cleanup. 2011-12-04 22:18:40 +00:00
spx
f28ecf6e83 Minor tweaks. 2011-11-28 14:13:20 +00:00
spx
3c1338b4c5 - Renamed bool ReadFormula() to ParseFormula.
- Changed ReadConfig() in Measure/Meter to protected.
- Other code tweaks and cleanups.
2011-11-26 02:49:52 +00:00
spx
02f2d51b41 Minor tweaks. 2011-11-24 00:30:56 +00:00
spx
efc8275ed1 Minor tweaks. 2011-11-18 22:40:58 +00:00
spx
e119672f1c Minor tweaks. 2011-11-14 14:32:11 +00:00
spx
deef3b0ab4 Minor tweaks. 2011-11-12 15:36:05 +00:00
spx
bbe733b437 Code tweaks and cleanups. 2011-11-10 13:44:19 +00:00
spx
a209bf15d0 - Fixed Button issue: http://rainmeter.net/forum/viewtopic.php?t=10274&p=59935
- Removed unneeded NULL checks.
- Other code tweaks and cleanups.
2011-11-08 10:32:57 +00:00
spx
f945bacfb7 Minor tweaks. 2011-11-04 12:48:03 +00:00
spx
1aaa03308c Code cleanup. 2011-11-01 04:56:46 +00:00
Birunthan Mohanathas
822c10060a - Added !SetOption/!SetOptionGroup bangs.
- Script: Added GetOption() function
2011-07-27 10:42:35 +00:00
spx
8515877c48 Tweaks. 2011-07-15 16:54:47 +00:00
spx
c2e3b6292d Additional change for r852,r856. Improved reading the network statistics from Rainmeter.stats.
Some cosmetic changes.
2011-07-08 22:50:02 +00:00
spx
8867c94482 Cosmetic changes. 2011-07-07 23:25:45 +00:00
spx
4389edb8c1 Optimized ConfigParser. Reduced processing time on startup and on refreshing. 2011-07-06 09:00:44 +00:00
spx
a2316446ca Switched map/hash_map/set for caching to unordered_map/unordered_set. 2011-02-18 16:26:58 +00:00
spx
435ab8123a Code cleanup. 2011-01-24 10:43:03 +00:00
spx
d6789cc23f Removed unnecessary code. 2011-01-23 14:27:23 +00:00
spx
3569412464 Code cleanup. 2011-01-23 14:24:34 +00:00
spx
f0e2084c42 - Added skin related variables.
#CURRENTCONFIGX#
#CURRENTCONFIGY#
#CURRENTCONFIGWIDTH#
#CURRENTCONFIGHEIGHT#

- Code cleanup.
2011-01-16 15:51:23 +00:00
spx
d1a7b604df Core dll:
- Replace swprintf/wsprintf/wcscpy/wcscat to _snwprintf_s/wcsncpy_s/wcsncat_s.
- Changed printf format parameter strictly for supporting both 32bit and 64bit.
- Fixed an issue that !RainmeterWriteKeyValue doesn't accept %APPDATA%\Rainmeter path.
- Code cleanup.
2010-12-16 20:35:44 +00:00
jsmorley
68ae1fe491 Updating CSPlugingInputText
Adding Rainmeter.exe.config file to root to support dependent .dll files for C@ plugins
Adding Dependencies folder in \Plugins to support dependent .dll files for C@ plugins
Changes to server core Rainmeter codes to better export variables for C# plugins
Changes to Build.py
Changes to installer
2010-12-16 17:04:14 +00:00
mapeki
c516bf8310 Added Lua Stuff
There are a few changes to the core Rainmeter code.
2010-12-12 17:08:36 +00:00
spx
fe22cfdf3d Quick fix for http://rainmeter.net/forum/viewtopic.php?f=5&t=4059&p=39475#p39461 2010-12-11 05:27:01 +00:00
spx
96c81ac516 - Added BackgroundMode=4 for tiling background image.
- Added tinting functions for Background.
- Added "ImageCrop" option to Meter=IMAGE/BAR/HISTOGRAM/ROTATOR and Background.
- Added "Tile" option to Meter=IMAGE.
- Some code cleanups.
2010-12-04 15:07:28 +00:00
spx
25abbc2444 - Added multiple MeterStyle.
- Code cleanup & cosmetics.
2010-11-04 00:17:42 +00:00
spx
dbdebfd1f1 Overhauled Variables part. Fixed the issue that all variables are reset when the screen resolution (or work area) is changed. 2010-08-24 01:07:29 +00:00
spx
3d33a16f9f - Additional fix for r502. Functions/Measures/Counter in Formula are now case-insensitive in MeasureCalc.
- "[Measure]" is now case-insensitive in DynamicVariables.
2010-08-10 18:23:10 +00:00
spx
64888434c9 - Added !RainmeterWriteKeyValue. (based on MattKing's code)
!RainmeterWriteKeyValue "Section" "Key" "Value" ("FileSpec"), where "FileSpec" is an optional parameter. If FileSpec is not present, the change is automatically done in the currently running skin file. If the bang is executed from command line, FileSpec is required.

- Some improvements of MouseOver/Leave detection.

- Fixed the issue that window dragging brings on MouseLeave if "Show window contents while dragging" is not set.
- Fixed the issue that window dragging can't be begun by dragging the Button.
- Fixed the issue that a reaction of the upper Button penetrates to the lower Buttons or the other window.
2010-08-03 15:10:42 +00:00
spx
f2682eaee0 Changed the behavior of DynamicVariables. The fixed value definition of the following settings is handled as the starting value. If the value definition of these settings contains variables or measures, related !bangs are ignored.
[Measure]
Disabled

[Meter]
Hidden
X
Y

In case of "Hidden":
- Hidden not added or Hidden=0/1 (=fixed value specified) and DynamicVariables=1
The specified value is handled as the starting value. After that the value is not re-read on every update. !RainmeterShowMeter etc. are enabled.

- Hidden=#VAR# or Hidden=[Measure] and DynamicVariables=1
The value is re-read on every update. !RainmeterShowMeter etc. are disabled by re-reading value.
2010-06-01 14:55:52 +00:00
spx
b675265606 Fixed incomplete fix in r420 and r422.
Fixed the issue that the result of some bangs is overwritten with the default value if DynamicVariables=1 is added to Measure/Meter. (Issue 125) Note that this fix is effective only when the setting is not defined in skin configuration file. The result of !RainmeterHideMeter(or Show/Toggle) is overwritten if Hidden=0/1 is added.
Some minor changes.
2010-05-31 21:02:04 +00:00
spx
e2e6ffff86 Formula now can be used with the relative position (r/R) in Meter's X/Y option.
Added built-in variable #PROGRAMDRIVE#

Changed Net measures to gather statistics of the logical interfaces for wireless devices.
2010-04-10 02:29:52 +00:00
spx
415c905d0a - Fixed a problem that !RainmeterQuit isn't executed when no meter window is running.
- Fixed a problem that StyleTemplate affects to Meters which have no relation.

- Added a workaround to avoid the "IniFileMapping" function when reading skins.

- Some small code cosmetics.
2010-04-02 01:35:53 +00:00
spx
06ec730bfd - Added the workaround to pin the window to desktop in Vista/7 with Aero.
- Added !RainmeterSetTransparency, !RainmeterShowFade, !RainmeterHideFade, !RainmeterToggleFade.

- Added the function to log the installed font families to the log file when Debug=1 is set.

- Added the workaround for issue 145. The wrong drawing position was fixed when AntiAlias=0 is set.
2010-03-20 19:40:30 +00:00
jsmorley
3166c5d5f2 MattKings Changes:
1) New feature of Meter=String
StringCase= [NONE | LOWER | UPPER | PROPER]
2) Changes to SetVariable to allow mathematical formulas and functions to be used in setting a variable.
2010-03-18 19:48:14 +00:00
spx
6088470157 - CHANGED: ConfigParser now reads value strictly. Note that this change affects the
reading of various skin setting values.

 For instance:
 - OK
  FontSize=10
  FontSize=0
 - NG (uses default value instead)
  FontSize=
  FontSize=ABC
  FontSize=20ABC (has been parsed as "FontSize=20" until now.)

- CHANGED: FontSize=0(invisible) is now able to use in Meter=STRING.

- Fixed the problem that the window doesn't move into the screen correctly when KeepOnScreen is 1.
2010-02-08 14:12:47 +00:00
spx
cc3ad487a7 * Changed the way to get the information of the multiple display monitors.
This change brings the order of monitors close to the order of "Display Properties" due to using EnumDisplayDevices and EnumDisplaySettings instead of EnumDisplayMonitors. (If EnumDisplayDevices failed, EnumDisplayMonitors is used as before.)

-----

* Added the "Display Monitor" submenu in [Skins Menu]-[Position].

These menus convert the present position to the relative position from the specified monitor.
(But the meter window doesn't move to the specified monitor area immediately. Only converts.)

- "Use default: Primary monitor" removes the @-directive from WindowX/Y.
- @0(@1, @2, ...) adds the specified monitor number to WindowX/Y. @0 means "The Virtual Screen". (http://msdn.microsoft.com/en-us/library/dd145136%28VS.85%29.aspx)
- If "Auto-select based on window position" is checked, the WindowX and WindowY "@n" settings are made automatically based on the position of the meter's window. If a monitor is selected directly using "Display Monitor" in the Rainmeter / skin context menu, this menu is unchecked. This setting can be manually made in either the [Rainmeter] (all configs) or individual config sections of Rainmeter.ini.

AutoSelectScreen
If set to 1, the WindowX and WindowY "@n" settings are made automatically based on the position of the meter's window. If a monitor is selected directly using "Display Monitor" in the Rainmeter / skin context menu, this setting is reset to 0.

-----

* Added the variables for multiple display monitors and the virtual screen.
All X/Y positions are represented in the virtual screen coordinates.

The following variables are for the virtual screen.

 #VSCREENAREAX# is the X-position of the left-side of the virtual screen.
 #VSCREENAREAY# is the Y-position of the top-side of the virtual screen.
 #VSCREENAREAWIDTH# is the width of the virtual screen.
 #VSCREENAREAHEIGHT# is the height of the virtual screen.

The following variables are for the PRESENT monitor.
Note that these variables automatically change by the WindowX and WindowY "@n" settings. If "@n" is not set, these variables return the value of the primary monitor.

 #WORKAREAX# is the X-position of the left-side of the work area.
 #WORKAREAY# is the Y-position of the top-side of the work area.
 #WORKAREAWIDTH# is the width of the work area.
 #WORKAREAHEIGHT# is the height of the work area.
 #SCREENAREAX# is the X-position of the left-side of the monitor screen.
 #SCREENAREAY# is the Y-position of the top-side of the monitor screen.
 #SCREENAREAWIDTH# is the width of the display resolution.
 #SCREENAREAHEIGHT# is the height of the display resolution.

The following variables are for the PRIMARY monitor.

 #PWORKAREAX# is the X-position of the left-side of the work area.
 #PWORKAREAY# is the Y-position of the top-side of the work area.
 #PWORKAREAWIDTH# is the width of the work area.
 #PWORKAREAHEIGHT# is the height of the work area.
 #PSCREENAREAX# is the X-position of the left-side of the monitor screen. (maybe, always 0)
 #PSCREENAREAY# is the Y-position of the top-side of the monitor screen. (maybe, always 0)
 #PSCREENAREAWIDTH# is the width of the display resolution.
 #PSCREENAREAHEIGHT# is the height of the display resolution.

The following variables are for the SPECIFIED monitor. (@n = @1, @2, ...)

 #WORKAREAX@n# is the X-position of the left-side of the work area.
 #WORKAREAY@n# is the Y-position of the top-side of the work area.
 #WORKAREAWIDTH@n# is the width of the work area.
 #WORKAREAHEIGHT@n# is the height of the work area.
 #SCREENAREAX@n# is the X-position of the left-side of the monitor screen.
 #SCREENAREAY@n# is the Y-position of the top-side of the monitor screen.
 #SCREENAREAWIDTH@n# is the width of the display resolution.
 #SCREENAREAHEIGHT@n# is the height of the display resolution.

-----

* Other related changes:

- Fixed the problem that the primary monitor isn't recognized correctly.

- Fixed the problem that the information of the multiple display monitors is refreshed excessively.

- For DynamicVariables, when display setting or workarea size has been changed, all variables are now updated to apply changed WORKAREA/SCREENAREA variables.

- Fixed the problem that the "On Desktop" window isn't dragged correctly when the top-left corner of the virtual screen has negative coordinates.

- Changed the way to stick the "On Desktop" window. ("SysListView32/FolderView" is used instead of "Progman/Program Manager".)

-----

* Other changes:

- When the meter window is draggable and isn't dragged, LeftMouseUpAction is now executed.

- Added MouseDoubleClickAction (LeftMouseDoubleClickAction, RightMouseDoubleClickAction, MiddleMouseDoubleClickAction). If MouseDoubleClickAction is empty when mouse button is double-clicked, MouseDownAction is executed instead.

- Fixed the problem that the Meter's hit-test code checks outside the area.

- Changed the way to set the #CURRENTCONFIG#. (CMeterWindow::GetSkinName() is now used instead of parsing the path.)
2009-12-18 05:58:37 +00:00
Kimmo Pekkola
71c1d052a7 The relative coordinates got broken by the previous changes. They should be fixed now.
Changed the meter bangs to case insensitive.
2009-09-19 07:15:28 +00:00
Kimmo Pekkola
fa6d437a71 Added a version check for the skins which come with Rainmeter so they can be upgraded. 2009-09-18 18:42:50 +00:00
Kimmo Pekkola
e84e7d534d The skin files can read other files with @include statement. 2009-09-18 15:30:51 +00:00
Kimmo Pekkola
8eccc8ddec Got rid of the "Not a meter or measure" error.
The handling of the MeterStyle is now done in the CConfigParser.
2009-09-04 17:40:02 +00:00
Kimmo Pekkola
4bf4e51126 Reverted the changes from r209. 2009-09-04 16:37:51 +00:00
jsmorley
8239919333 Added MeterStyle functionality:
Rainy, given the "issues" listed at the bottom of this comment, I leave it to you whether to create a build using this revision or use r208 for the build.  I would like to start testing MeterStyle, but there are a few more things it needs work on.

What is MeterStyle?

MeterStyle
This will allow users to create CSS-like "Styles" for meters. This means that all the parameters of a meter can be defined in the style, and then many meters can use the style to eliminate copy / pasting the same parameters over and over on multiple meters. (Examples: FontColor=, FontSize= etc.)

How do I use it?

You will create a new [Section] (as many as you want) in the .ini. The section(s) can have any name.

[MyStringStyle]

Then you will tell Rainmeter that this is a "MeterStyle" and not a measure or meter

Style=Meter

Note: The "value" of the key "Style" can be anything. It can be used to add a description of the style if you like. Style=This style is for the AccuWeather part of this skin
It is however required, both to tell Rainmeter it is not a meter or measure and to have the MeterStyle routines parse it.

Then you define parameters you want to use in the style

FontColor=#FontColor#
FontFace=TheSansBold-Caps
FontSize=11
StringEffect=SHADOW
StringStyle=BOLD
StringAlign=LEFT
AntiAlias=1

Then in any or all meters, you just use

[MeterName]
Meter=STRING (or any other meter type)
MeterStyle=MyStringStyle

None of the parameters in the style are then required to be actually in the meter(s). They are "inherited" from the MeterStyle.

Note: This works and has had preliminary testing with dynamic variables like FontColor=[MeasureName] and regular variables like FontColor=#FontColor#. It doesn't matter if the [Variables] section or the [MeasureName] measure is before or after the [StyleName] in the .ini file.

What if I want to override a MeterStyle parameter on a meter?

Sure. Just put in any parameter with a value different from the one defined in the MeterStyle and the one in the meter will take presidence. All non-defined parameters will still use the MeterStyle value.

[MeterName]
Meter=STRING
MeterStyle=MyStringStyle
FontColor=100,100,100,50

What are these "known issues" you are on about?

This is still a bit of a work in progress. Right now you cannot define X or Y in a style. You can define W and H, but NOT for a STRING meter. You cannot define a "Transformation Matrix" in a style. MattKing will be looking into these tomorrow. W and H in a string meter is our top priority. We will also look at X and Y and hope for an easy solution. Transformation Matrix may have to come later.
2009-09-04 14:48:28 +00:00
Kimmo Pekkola
ffdec7be65 Some of the plugins don't work with the dynamic variables so the feature is now disabled for them. 2009-08-26 19:29:49 +00:00
Kimmo Pekkola
dc3c767efa It's now possible to use the measures as if they were variables (use [MeasureName] instead #VariableName#). Set DynamicVariables=1 for all meters and measures which refer to other measures.
New bang !RainmeterSetVariable can be used to change the value of a variable (DynamicVariables must be 1 in places where the variable is used).
2009-08-26 17:37:15 +00:00