Adobe 65007312 Programming Guide - Page 170

Displaying a custom dialog, Create a properties table for program data

Page 170 highlights

CHAPTER 9: Getting Started: A Tutorial Example Displaying a custom dialog 170 Place this line of code in the body of the function: -- body of function LrDialogs.message( "ExportMenuItem Selected", "Hello World!", "info" ) 4. To call the function when the script runs, place this line at the end of the script: MyHWExportItem.showModalDialog() 5. Save your changes to the file. We will check the result after we have set up the second menu item. Displaying a custom dialog The item that we added to the Library menu creates a custom dialog, which required quite a bit more programming. These steps describe how to write the service script that defines the program data and custom interface elements, ties the data to the UI elements, and displays them in a custom dialog box. 1. Edit the LibraryMenuItem.lua file to import the following namespaces and classes: local LrFunctionContext = import 'LrFunctionContext' local LrBinding = import 'LrBinding' local LrDialogs = import 'LrDialogs' local LrView = import 'LrView' local LrColor = import 'LrColor 2. Create a function named showCustomDialog() in your own plug-in namespace: MyHWLibraryItem = {} function MyHWLibraryItem.showCustomDialog() -- body of show-dialog function end Create a properties table for program data We are going to create a properties table to keep the program data, the key values that we will bind to the UI elements to make them dynamic. This is an observable table, which requires a function context to automatically remove the notifications if anything goes wrong. 3. To get the function context, add the following code inside the showCustomDialog() function: -- body of show-dialog function LrFunctionContext.callWithContext( "showCustomDialog", function( context ) -- body of called function end) Notice that the second argument is the main function, which is passed an LrFunctionContext object. 4. In the body of the main function, create an observable table using the LrFunctionContext object. Add this to the body of the main function for callWithContext(): -- body of called function local props = LrBinding.makePropertyTable( context ) -- create bound table

  • 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
170
Place this line of code in the body of the function:
-- body of function
LrDialogs.message( "ExportMenuItem Selected", "Hello World!", "info" )
4.
To call the function when the script runs, place this line at the end of the script:
MyHWExportItem.showModalDialog()
5.
Save your changes to the file.
We will check the result after we have set up the second menu item.
Displaying a custom dialog
The item that we added to the Library menu creates a custom dialog, which required quite a bit more
programming. These steps describe how to write the service script that defines the program data and
custom interface elements, ties the data to the UI elements, and displays them in a custom dialog box.
1.
Edit the
LibraryMenuItem.lua
file to import the following namespaces and classes:
local LrFunctionContext = import 'LrFunctionContext'
local LrBinding = import 'LrBinding'
local LrDialogs = import 'LrDialogs'
local LrView = import 'LrView'
local LrColor = import 'LrColor
2.
Create a function named
showCustomDialog()
in your own plug-in namespace:
MyHWLibraryItem = {}
function MyHWLibraryItem.showCustomDialog()
-- body of show-dialog function
end
Create a properties table for program data
We are going to create a properties table to keep the program data, the key values that we will bind to the
UI elements to make them dynamic. This is an observable table, which requires a function context to
automatically remove the notifications if anything goes wrong.
3.
To get the function context, add the following code inside the
showCustomDialog()
function:
-- body of show-dialog function
LrFunctionContext.callWithContext( "showCustomDialog", function( context )
-- body of called function
end)
Notice that the second argument is the main function, which is passed an
LrFunctionContext
object.
4.
In the body of the main function, create an observable table using the
LrFunctionContext
object.
Add this to the body of the main function for
callWithContext()
:
-- body of called function
local props = LrBinding.makePropertyTable( context ) -- create bound table