Because LC can't do two things at once.
Peter M. Brigham
pmbrig at gmail.com
Sun Mar 1 13:04:10 EST 2015
Just closing the loop on this one (the power source of a laptop). (Calling Richard Gaskin re the Linux case...)
-- Peter
Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig
---------
function getPowerSource
-- returns the current power source for a laptop
-- "AC" or "Battery"
-- requires caseSwitch()
switch the platform
case "MacOS"
-- thanks to Martin Koob, use-LC list
put shell ("pmset -g batt") into tSource
-- returns something like:
-- Currently drawing from 'AC Power'
-- -InternalBattery-0 99%; finishing charge; 0:00 remaining
return char 2 to -1 of word -2 of line 1 of tSource
break
case "Win32"
-- thanks to Bob Sneidar, use-LC list
-- someone with a Windows machine should test this case
put shell("WMIC Path Win32_Battery GetAvailability") into tSource
-- Line 3 will contain 2 if the battery is charging, 3 if running on battery
put line 3 of tSource into tStatus
return caseSwitch(tStatus,"3=Battery","*=AC")
break
default
-- Linux awaiting Richard Gaskin...
end switch
end getPowerSource
function caseSwitch
-- does a quick inline switch/case
-- param 1 is checkValue
-- params 2+ are in the form matchValue(s)>=<returnValue
-- separate multiple matcheValues with commas
-- and enclose each matchValue=returnValue pair in quotes
-- if checkValue matches one or more items in matchValue(s),
-- returns returnValue
-- note that checkValue should NOT be enclosed in quotes
-- use a matchValue of "*" to specify a default value,
-- to be returned if no matches found in the list
-- if the default is "*=*" then no match returns the original <checkValue>
-- if no match and no default value specified, then returns empty
-- usage:
-- put caseSwitch(len(tZip),"5=zip","10=zip+4","*=not a zip code") \
-- into zipCodeType
-- from Ken Ray, use-LC list, originally named stsSwitch()
put param(1) into tCheckValue
set the itemDel to "="
put "" into tDefault
repeat with x = 2 to the paramCount
put param(x) into tCheck
put item 1 of tCheck into tMatch
put item 2 of tCheck into tRetVal
replace "," with "=" in tMatch
if tCheckValue is among the items of tMatch then return tRetVal
if tMatch = "*" then
if tRetVal = "*" then
put tCheckValue into tDefault
else
put tRetVal into tDefault
end if
end if
end repeat
return tDefault
end caseSwitch
----------
On Feb 21, 2015, at 2:59 AM, Richard Gaskin wrote:
> Peter M. Brigham wrote:
>
>> Just out of curiosity, how *would* you do this via shell call or
>> the equivalent on a Windows laptop?
>
> Good question.
>
> Thanks to the beautiful simplicity of the Linux /proc directory I was able to find:
>
> cat /proc/acpi/battery/BAT1/state
>
> The "charging state" field there will contain "charging" or "discharging".
>
> Now if we can turn up a Win command line solution I'll write a handler for this that'll make it convenient to get this info on all three platforms.
>
> Martin, thanks for handling the Mac side - nice work.
>
>
>> On Feb 20, 2015, at 11:19 AM, Martin Koob wrote:
>>
>>> Hi Richard
>>>
>>> I noticed in your bug report was for Mac so till that enhancement gets
>>> implemented you could use this.
>>>
>>> function powerStatus
>>> put shell ("pmset -g batt") into tPowerStatus
>>> put matchtext(tPowerStatus, "'([^']*)",tPowerSource) into tSuccess
>>> return tPowerSource
>>> end powerStatus
>
>
>
> --
> Richard Gaskin
> Fourth World Systems
> Software Design and Development for Desktop, Mobile, and Web
> ____________________________________________________________
> Ambassador at FourthWorld.com http://www.FourthWorld.com
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list