#============================================================================== # # Project: SharpImage # Module: Close.py # Language: IronPython # Author: Dan Mueller # Date: $Date: 2007-07-06 10:57:00 +1000 (Fri, 06 Jul 2007) $ # Revision: $Revision: 2 $ # # Copyright (c) Queensland University of Technology (QUT) 2007. # All rights reserved. # # This software is distributed WITHOUT ANY WARRANTY; without even # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the above copyright notices for more information. # #============================================================================== # Import the base script class import Script from Script import * class CloseScript(ScriptObject): Name = "Close" Help = """Closes the images containing the Close pattern. Images containing the Keep pattern are not closed. If no Close pattern is provided then all images are considered. Eg. Close Close=\"test1;test2\" Keep=\"test3;test4\"""" Parameters = """(string) Close = the semi-colon separated patterns of images to close. (string) Keep = the semi-colon separated patterns of images to keep.""" ParentApplication = None Handlers = None Close = None Keep = None RenderersToBeClosed = List[siRenderer]() def CheckIfRendererToBeClosed(self, renderer): """ If renderer is to be closed, it is added to the RenderersToBeClose list. """ # Check that the renderer has a valid input isKeeping = False if (renderer == None or renderer.Inputs.Count == 0): return if (self.Keep != None and self.Keep.Length > 0): for keep in self.Keep.Split(';'): if (renderer.Inputs[0].Name.ToLower().Contains( keep.ToLower() )): isKeeping = True if (not isKeeping): self.RenderersToBeClosed.Add( renderer ) def Run(self): """ The entry-point for this script. """ self.Initialise() # Get the renderers to be closed if (self.Close == None or self.Close.Length == 0): for renderer in self.ParentApplication.Renderers: self.CheckIfRendererToBeClosed( renderer ) else: for close in self.Close.Split(';'): for renderer in self.GetAllRenderersMatchingPattern( close ): self.CheckIfRendererToBeClosed( renderer ) # Close each of the renderers for renderer in self.RenderersToBeClosed: if (renderer != None): renderer.Close() self.Finalise()