Adobe 65007312 Programming Guide - Page 174

containing the key and a transform function, Define the transform function as follows

Page 174 highlights

CHAPTER 9: Getting Started: A Tutorial Example Transforming data 174 f:radio_button { title = "Button two", checked_value = "two", -- add value binding in next step }, }, }, f:row { -- second row shows a static text box f:static_text { text_color = LrColor( 1, 0, 0 ), -- add title with binding later }, }, }, 5. For both buttons, add the following to bind the current value of both to the same key: -- add value binding in next step value = LrView.bind( "selectedButton" ), Now this key will reflect the user's choice of buttons; selecting a button will set the key value to "one" or "two". 6. Add the title for the static text box. Instead of binding it directly to the key value, we will transform that value into a display string. To do this, we make the argument of the bind() function a table, containing the key and a transform function: -- add title with binding later title = LrView.bind { key = "selectedButton", transform = function( value, fromTable ) -- body of function end, } 7. Define the transform function as follows: -- body of function if value == "one" then -- first button is selected return "Button one selected" else return "Button two selected" end 8. Use LrDialogs.presentModalDialog() to display the new custom dialog. The argument is a table with entries for the dialog title and the view hierarchy that defines the contents: local result = LrDialogs.presentModalDialog { title = "Custom Dialog Transform", contents = c, -- the view hierarchy we defined } 9. To call the function when the script runs, replace the call to showCustomDialog() at the bottom of the script with a call to the new function: MyHWLibraryItem.showCustomDialogWithTransform() 10. Save your changes to the file.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204

C
HAPTER
9: Getting Started: A Tutorial Example
Transforming data
174
f:radio_button {
title = "Button two",
checked_value = "two",
-- add value binding in next step
},
},
},
f:row { -- second row shows a static text box
f:static_text {
text_color = LrColor( 1, 0, 0 ),
-- add title with binding later
},
},
},
5.
For both buttons, add the following to bind the current value of both to the same key:
-- add value binding in next step
value = LrView.bind( "selectedButton" ),
Now this key will reflect the user’s choice of buttons; selecting a button will set the key value to "one"
or "two".
6.
Add the
title
for the static text box. Instead of binding it directly to the key value, we will transform
that value into a display string. To do this, we make the argument of the
bind()
function a table,
containing the key and a transform function:
-- add title with binding later
title = LrView.bind
{
key = "selectedButton",
transform = function( value, fromTable )
-- body of function
end,
}
7.
Define the transform function as follows:
-- body of function
if value == "one" then -- first button is selected
return "Button one selected"
else
return "Button two selected"
end
8.
Use
LrDialogs.presentModalDialog()
to display the new custom dialog. The argument is a table
with entries for the dialog
title
and the view hierarchy that defines the
contents
:
local result = LrDialogs.presentModalDialog
{
title = "Custom Dialog Transform",
contents = c, -- the view hierarchy we defined
}
9.
To call the function when the script runs, replace the call to
showCustomDialog()
at the bottom of the
script with a call to the new function:
MyHWLibraryItem.showCustomDialogWithTransform()
10.
Save your changes to the file.