====== 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| === 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 ==== Since folders aren't available in AppleScript, we're only providing Python examples here. # 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")