def cleanup_slides():
    with newAction("Cleanup slide items") as project:
        track = find_slide_track(project)
        prev_item = None
        for item in track.items:
            # Ensure that the slide is looped until the end of it's item
            item.set("B_LOOPSRC", True)
            #print(item.activeTake.source.type)
              
            if prev_item is not None:                
                # if items are not connected with each other, make previous item longer to fill the gap
                if prev_item.end < item.position:
                    prev_item.length = item.position - prev_item.position
              
            prev_item = item
def distribute_slide_items():
    with newAction("Distribute slide items") as project:
        slide_track = find_slide_track(project)
  
        total_length = project.end
        new_item_length = total_length/slide_track.items_count
        
        pos = 0
        
        # store items to list, because we will do nasty things with them 
        # (items will be temporary out of order during the loop iteration)
        items = list(slide_track.items)
        
        for item in items:
            # Ensure that the slide is looped until the end of it's item
            item.set("B_LOOPSRC", True)
                        
            item.position = pos
            item.length = new_item_length
            pos += new_item_length