Folders
The folder class represents a folder in the various Indigo user interfaces (Mac client, Indigo Touch, web, etc.).
Class Properties
Property | Type | Description |
id | integer | the unique id of the folder, assigned on creation by IndigoServer |
name | string | the name of the folder - no two folders in the same namespace (i.e. indigo.devices ) can have the same name |
remoteDisplay | boolean | should this folder be displayed in remote clients (IWS, Indigo Touch, etc) |
Commands (indigo.*.folder.*)
The commands to manipulate folders are within the object lists defined in the IOM Overview page (indigo.devices.folder.*, indigo.variables.folder.*, etc).
Create
Create a folder. This method returns a copy of the newly created folder.
Command Syntax Examples |
indigo.variables.folder.create("Folder Name Here")
|
Parameters |
Parameter | Required | Type | Description |
name | Yes | string | the name of the folder |
Delete
Delete the specified folder.
Command Syntax Examples |
indigo.devices.folder.delete(123, deleteAllChildren=True)
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the folder to delete |
deleteAllChildren | No | boolean | a boolean to specify whether all objects contained in the folder should be deleted as well - defaults to False |
Duplicate
Duplicate the specified folder. This method returns a copy of the new folder.
Command Syntax Examples |
indigo.controlPages.folder.duplicate(123, duplicateName="New Name")
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the folder to duplicate |
duplicateName | No | string | name for the newly duplicated folder |
Get ID
Returns the ID of the named folder under the specified object type (device, trigger, etc).
Command Syntax Examples |
indigo.device.folders.getId("Some Folder Name")
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | string | name of any folder for the specified object type. |
Set Remote Display
Use this command to set the remote display flag for the folder.
Command Syntax Examples |
indigo.devices.folder.displayInRemoteUI(123, value=True)
|
indigo.schedules.folder.displayInRemoteUI(123, value=False)
|
Parameters |
Parameter | Required | Type | Description |
direct parameter | Yes | integer | id or instance of the folder |
value | Yes | boolean | True to display the folder on remote user interfaces or False to hide it |
Examples
# create a new variable folder
newFolder = indigo.variables.folder.create("My New Variable Folder")
# test to see if a folder exists by Name
if ("My New Variable Folder" in indigo.variables.folders):
# should execute this because we just created it
indigo.server.log("folder named 'My New Variable Folder' exists")
# test to see if a folder exists by ID
if (newFolder.id in indigo.variables.folders):
# should execute this because we just created it
indigo.server.log("folder id " + newFolder.id + " exists")
# set the remote display flag on the folder immediately
indigo.variables.folder.displayInRemoteUI(newFolder, value=False)
# a ValueError exception with the text "NameNotUniqueError" is thrown if you try to
# create a folder with a name that already exists
try:
indigo.variables.folder.create("My New Variable Folder")
except ValueError, e:
if str(e) == "NameNotUniqueError":
# should execute this because it's a dup name
indigo.server.log("folder named 'My New Variable Folder' already exists")
else:
indigo.server.log("Some other error")
# NOTE - at this point, newFolder.remoteDisplay is still true (default for new folders)
# because we're still working with a copy. Refresh it to get it updated:
newFolder.refreshFromServer()
# change the name of a folder
newFolder.name="My Variable Folder"
newFolder.replaceOnServer()
# duplicate the folder
indigo.variables.folder.duplicate(newFolder, duplicateName="My Duplicate Folder")
# delete a folder
indigo.variables.folder.delete(newFolder)
#test to see if a folder doesn't exist using name
if ("My New Variable Folder" not in indigo.variables.folders):
# should execute this because we just deleted it
indigo.server.log("folder named 'My New Variable Folder' does not exist on the server")
# test to see if a folder doesn't exist using ID (was deleted perhaps)
if (newFolder.id not in indigo.variables.folders):
# should execute this because we just deleted it
indigo.server.log("folder id " + newFolder.id + " does not exist on the server")