Adobe 65007312 Programming Guide - Page 171

Create UI elements, container, and it is bound to the observable data table that we created in step

Page 171 highlights

CHAPTER 9: Getting Started: A Tutorial Example Displaying a custom dialog 171 5. Add a key to the observable table called isChecked: -- body of called function local props = LrBinding.makePropertyTable( context ) -- create bound table props.isChecked = false -- add a property key and initial value -- create view hierarchy Create UI elements The Lightroom SDK also provides the LrView class and namespace which allows you to create custom dialog elements. You need to populate the custom dialog with a view hierarchy that defines the custom-UI portion of the dialog. We imported the LrView namespace with the import() function. Now we will use the namespace function LrView.osFactory() to obtain a view-factory object, then use that object to create the UI elements. 6. Add code to obtain a view-factory object: -- create view hierarchy local f = LrView.osFactory() 7. The variable c will hold the view hierarchy that defines the dialog contents. The root node is a row container, and it is bound to the observable data table that we created in step 4 above. All of the child nodes inherit this binding, so that they can easily reflect and set data values in this table. Add this code: local f = LrView.osFactory() local c = f:row { -- the root node bind_to_object = props, -- bound to our data table -- add controls 8. Add a checkbox control as a child of the row, and bind it to the isChecked property we created in step 5: -- add controls f:checkbox { title = "Enable", -- label text value = LrView.bind( "isChecked" ) -- bind button state to data key }, 9. Create an editable text field, setting the value to some arbitrary text. This field will only be enabled when the checkbox is checked: f:edit_field { value = "Some Text", enabled = LrView.bind( "isChecked" ) -- bind state to same key }, }

  • 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
Displaying a custom dialog
171
5.
Add a key to the observable table called
isChecked
:
-- body of called function
local props = LrBinding.makePropertyTable( context ) -- create bound table
props.isChecked = false -- add a property key and initial value
-- create view hierarchy
Create UI elements
The Lightroom SDK also provides the
LrView
class and namespace which allows you to create custom
dialog elements. You need to populate the custom dialog with a view hierarchy that defines the custom-UI
portion of the dialog.
We imported the
LrView
namespace with the
import()
function. Now we will use the namespace
function
LrView.osFactory()
to obtain a view-factory object, then use that object to create the UI
elements.
6.
Add code to obtain a view-factory object:
-- create view hierarchy
local f = LrView.osFactory()
7.
The variable
c
will hold the view hierarchy that defines the dialog contents. The root node is a row
container, and it is bound to the observable data table that we created in step
4
above. All of the child
nodes inherit this binding, so that they can easily reflect and set data values in this table.
Add this code:
local f = LrView.osFactory()
local c = f:row {
-- the root node
bind_to_object = props,
-- bound to our data table
-- add controls
8.
Add a checkbox control as a child of the row, and bind it to the
isChecked
property we created in step
5
:
-- add controls
f:checkbox {
title = "Enable",
-- label text
value = LrView.bind( "isChecked" )
-- bind button state to data key
},
9.
Create an editable text field, setting the value to some arbitrary text. This field will only be enabled
when the checkbox is checked:
f:edit_field {
value = “Some Text”,
enabled = LrView.bind( "isChecked" )
-- bind state to same key
},
}