Adobe 65007312 Programming Guide - Page 71

Custom metadata example, Optional. Use only when

Page 71 highlights

CHAPTER 4: Working with Metadata Adding custom metadata 71 values table Required when dataType = "enum", otherwise disallowed. An array of allowed values. Each entry in the array is a table that must contain a value and a title. The title is shown in the popup menu; the corresponding value (which must be a string, number, or Boolean, or nil) is written to the database. The values table can have only one entry where value = nil. If such an entry is present, the corresponding label is used when no value has been assigned to this property for a photo. The values table can also have an entry allowPluginToSetOtherValues = true. X If present, your plug-in can store values outside of the enumerated values in this field. X If not, an attempt to set such a value triggers a Lua error and does not change the value stored in the database. readOnly Boolean Optional. Use only when title is provided. When true, the field is visible in the Metadata panel, but not editable by the user. The value can still be set programmatically, using LrPhoto:setPropertyForPlugin(). searchable Boolean Optional. Use only when title is provided. When true, this field is stored in a separate table and indexed for faster searching; this also means that the field can be chosen by a user as a search criterion for smart collections. Strings stored in this field must not exceed 511 bytes. Default is false. browsable Boolean Optional. Use only when title is provided and searchable is true. When true, this field can be used as a filter in the Library metadata browser. Custom metadata example This sample Metadata Provider script defines three metadata fields of representative types. return { metadataFieldsForPhotos = { { id = 'siteId', -- This field is not available in the metadata browser because -- it does not have a title field. You might use a field like this -- to store a photo ID from an external database or web service. }, { id = 'randomString', title = LOC "$$$/Sample/Fields/RandomString=Random String", dataType = 'string', -- Specifies the data type for this field. }, { id = 'modelRelease', title = LOC "$$$/Sample/Fields/ModelRelease=Model Release", dataType = 'enum', values = { { value = nil,

  • 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
4: Working with Metadata
Adding custom metadata
71
Custom metadata example
This sample Metadata Provider script defines three metadata fields of representative types.
return {
metadataFieldsForPhotos = {
{
id = 'siteId',
-- This field is not available in the metadata browser because
-- it does not have a title field. You might use a field like this
-- to store a photo ID from an external database or web service.
},
{
id = 'randomString',
title = LOC "$$$/Sample/Fields/RandomString=Random String",
dataType = 'string', -- Specifies the data type for this field.
},
{
id = 'modelRelease',
title = LOC "$$$/Sample/Fields/ModelRelease=Model Release",
dataType = 'enum',
values = {
{
value = nil,
values
table
Required when
dataType
=
"enum"
, otherwise disallowed. An array of allowed
values. Each entry in the array is a table that must contain a
value
and a
title
.
The title is shown in the popup menu; the corresponding value (which must
be a string, number, or Boolean, or nil) is written to the database. The
values
table can have only one entry where
value = nil
. If such an entry is present,
the corresponding label is used when no value has been assigned to this
property for a photo.
The
values
table can also have an entry
allowPluginToSetOtherValues =
true
.
X
If present, your plug-in can store values outside of the enumerated values
in this field.
X
If not, an attempt to set such a value triggers a Lua error and does not
change the value stored in the database.
readOnly
Boolean
Optional. Use only when
title
is provided. When true, the field is visible in the
Metadata panel, but not editable by the user. The value can still be set
programmatically, using
LrPhoto:setPropertyForPlugin()
.
searchable
Boolean
Optional. Use only when
title
is provided. When true, this field is stored in a
separate table and indexed for faster searching; this also means that the field
can be chosen by a user as a search criterion for smart collections. Strings
stored in this field must not exceed 511 bytes. Default is false.
browsable
Boolean
Optional. Use only when
title
is provided and
searchable
is true. When
true, this field can be used as a filter in the Library metadata browser.