Differences

This shows you the differences between two versions of the page.

Link to this comparison view

indigo_5_documentation:folder_class [2019/01/25 22:53]
indigo_5_documentation:folder_class [2019/01/26 00:10] (current)
Line 1: Line 1:
 +====== 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 ​ ^
 +|<​code>​indigo.variables.folder.create("​Folder Name Here"​)</​code>​|
 +
 +^  Parameters ​ ^^^^
 +^  Parameter ​ ^  Required ​ ^  Type  ^  Description ​ ^
 +|//''​name''//​| ​ Yes  |  string ​ |the name of the folder|
 +
 +=== Delete ===
 +
 +Delete the specified folder.
 +
 +^  Command Syntax Examples ​ ^
 +|<​code>​indigo.devices.folder.delete(123,​ deleteAllChildren=True)</​code>​|
 +
 +^  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 ​ ^
 +|<​code>​indigo.controlPages.folder.duplicate(123,​ duplicateName="​New Name"​)</​code>​|
 +
 +^  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|
 +
 +=== Set Remote Display ===
 +
 +Use this command to set the remote display flag for the folder.
 +
 +^  Command Syntax Examples ​ ^
 +|<​code>​indigo.devices.folder.displayInRemoteUI(123,​ value=True)</​code>​|
 +|<​code>​indigo.schedules.folder.displayInRemoteUI(123,​ value=False)</​code>​|
 +
 +^  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 ====
 +
 +Since folders aren't available in AppleScript,​ we're only providing Python examples here.
 +
 +<​code>#​ 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"​)
 +</​code>​
 

© Perceptive Automation, LLC. · Privacy