Posted by member 12025 on 2004-08-12 09:15:47 link

I have a few ideas for shortening it, but here's the working script
;------------------------------------------------------------------------------
; One-line Exapnsion/execution
;------------------------------------------------------------------------------
; USE:
; !eval !bang(s) var vara<varb<varb>>
; EXAMPLES:
;
; !eval !varSet tmp "<<<test>style>_<<test>thick>_border_<<test>_grip>_bottom>" ; expands to value
; !eval !varSet tmp "*<<test>style>_<<test>thick>_border_<<test>_grip>_bottom*" ; get current evar (uses xlabel)
; !eval !varSet tmp "#<<test>style>_<<test>thick>_border_<<test>_grip>_bottom#" ; enclose in %# %# for evar

*script bang !eval
*script exec !varSet tmpParamCount 1
*script exec !varSet tmpFirstParams ""
*script exec !varSet tmpLeft ""
*script exec !varSet tmpRight ""
*script exec !setlistsep <

*script exec !varSet tmpNextParam "%{P}{\%{tmpParamCount}}"

*script LABEL upToVar
*script exec !varSet curParam "%{tmpNextParam}"
*script exec !varAdd tmpParamCount "1"
*script exec !varSet tmpNextParam "%{P}{\%{tmpParamCount}}"
;*script exec !msgbox "parameter: %{curParam} | next: %{tmpNextParam} | count: %{tmpParamCount}"
*script GOTOIF ( "%{tmpNextParam}" = "" ) foundVar
*script exec !ifEval ( "%{tmpFirstParams}" = "" ) '|varSet tmpFirstParams "%{\1}"' else '|varSet tmpFirstParams "%{tmpFirstParams} %{curParam}"'
;*script exec !msgbox "params: %{tmpFirstParams}"
*script GOTO upToVar

*script LABEL foundVar
*script exec !varSet tmpVar "%{curParam}"
;*script exec !varshow curParam

*script LABEL foundVarAgain
*script GOTOIF ( "%{tmpVar:_}" = "" ) endForVar
*script exec !varSet tmpLeft "%{tmpVar:}"
*script exec !varSet tmpRight "%{tmpVar:_}"
;*script exec !msgbox "parameters: %{tmpFirstParams} | left: %{tmpLeft} | right:_ %{tmpRight}"

*script LABEL loopVarIn
*script GOTOIF ( "%{tmpRight:_}" = "" ) replaceVar
*script exec !varSet tmpLeft %{tmpLeft}<%{tmpRight:}
*script exec !varSet tmpRight %{tmpRight:_}
*script GOTO loopVarIn

*script LABEL replaceVar
*script exec !setlistsep >
*script exec !varSet tmpRightTwo "%{tmpRight:_}"
*script exec !varSet tmpLeftTwo "%{tmpRight:}"
*script exec !varSet tmpLeftTwo "%{P}{%{tmpLeftTwo}}"
*script exec !varSet tmpVar "%{tmpLeft}%{tmpLeftTwo}%{tmpRightTwo}"
*script exec !varSet tmpLeft ""
*script exec !varSet tmpRight ""
*script exec !setlistsep <
*script GOTO foundVarAgain

*script LABEL endForVar
;*script exec !varshow tmpVar
*script exec !setlistsep #
*script GOTOIF ( "%{tmpVar:_}" <> "" ) varIsEvar
*script exec !setlistsep *
*script GOTOIF ( "%{tmpVar:_}" <> "" ) varIsCurEvar
*script GOTO end

*script LABEL varIsEvar
*script exec !varset tmpVar "%{tmpVar:_}"
*script exec !varset tmpVar "%{tmpVar:}"
*script exec !varSet tmpVar "%#%{tmpVar}%#"
*script GOTO end

*script LABEL varIsCurEvar
*script exec !varset tmpVar "%{tmpVar:_}"
*script exec !varset tmpVar "%{tmpVar:}"
*script exec !ParseEvars !varSet tmpVar "%#%{tmpVar}%#"
*script GOTO end

*script LABEL end
*script exec !IfExist mzListSeparator {!setlistsep %{mzListSeparator}} else {!setlistsep :}
*script exec %{tmpFirstParams} %{tmpVar}
*script ~bang

and bangs using them, removing one more recycle for me:
*script bang !setStyle_box
*script exec !varset tmpBox %{\1} ; save from clearing of args
; one unnecessary expansion, yes, but for consistency.
*script exec !eval !varSet %{tmpBox}BoxImageLeftEdge <<<tmpBox>Style>_<<tmpBox>Thick>_edge_<<tmpBox>_grip>_left>
*script exec !eval !varSet %{tmpBox}BoxImageTopEdge <<<tmpBox>Style>_<<tmpBox>Thick>_edge_<<tmpBox>_grip>_top>
*script exec !eval !varSet %{tmpBox}BoxImageRightEdge <<<tmpBox>Style>_<<tmpBox>Thick>_edge_<<tmpBox>_grip>_right>
*script exec !eval !varSet %{tmpBox}BoxImageBottomEdge <<<tmpBox>Style>_<<tmpBox>Thick>_edge_<<tmpBox>_grip>_bottom>

*script exec !eval !varSet %{tmpBox}BorderLeft <<<tmpBox>Style>_<<tmpBox>Thick>_border_<<tmpBox>_grip>_left>
*script exec !eval !varSet %{tmpBox}BorderTop <<<tmpBox>Style>_<<tmpBox>Thick>_border_<<tmpBox>_grip>_top>
*script exec !eval !varSet %{tmpBox}BorderRight <<<tmpBox>Style>_<<tmpBox>Thick>_border_<<tmpBox>_grip>_right>
*script exec !eval !varSet %{tmpBox}BorderBottom <<<tmpBox>Style>_<<tmpBox>Thick>_border_<<tmpBox>_grip>_bottom>

*script exec !reposition_box %{tmpBox}
*script ~bang

*script bang !reposition_box ; name sans Box
*script exec !varset tmpBox %{\1}

*script exec !eval !LabelRefresh %{tmpBox}Box %{tmpBox}BoxImage "$LSImageFolder$<<tmpBox>Style>\<<tmpBox>Color>_<<tmpBox>_grip>.png"

;side-effect of using eval: additional expansion, like !varset
*script exec !eval !LabelRefresh %{tmpBox}Box %{tmpBox}BoxImageLeftEdge %{P}{%{tmpBox}BoxImageLeftEdge}
*script exec !eval !LabelRefresh %{tmpBox}Box %{tmpBox}BoxImageTopEdge %{P}{%{tmpBox}BoxImageTopEdge}
*script exec !eval !LabelRefresh %{tmpBox}Box %{tmpBox}BoxImageRightEdge %{P}{%{tmpBox}BoxImageRightEdge}
*script exec !eval !LabelRefresh %{tmpBox}Box %{tmpBox}BoxImageBottomEdge %{P}{%{tmpBox}BoxImageBottomEdge}

*script exec !eval !%{tmpBox}Move %{P}{%{tmpBox}BorderLeft} %{P}{%{tmpBox}BorderTop}

; wish I could do more vars in !eval, but it was tough enough to work as is.
*script exec !eval !varSet %{tmpBox}BoxWidth #<<tmpBox>BorderLeft>+<<tmpBox>BorderRight>+<<tmpBox>Width>#
*script exec !eval !varSet %{tmpBox}BoxHeight #<<tmpBox>BorderBottom>+<<tmpBox>BorderTop>+<<tmpBox>Height>#
; note: for boxes with multiple hooked things, the resizing scripts for them individually will create the width and height.

*script exec !varSet tmpBoxW %{P}{%{tmpBox}BoxWidth}
*script exec !varSet tmpBoxH %{P}{%{tmpBox}BoxHeight}
*script exec !LabelResize %{tmpBox}Box %{tmpBoxW} %{tmpBoxH}

*script ~bang

*script bang !setGrip
*script exec !varSet %{\1}_grip %{\2}
*script exec !setStyle %{style} %{\1}
*script ~bang

*script bang !trayMove ; more to come for others
*script exec !VtrayMove %{\1} %{\2}
*script ~bang