#---Designation: Copy SQL folder
#   Classes: SQLFolder
#   Selectedobjectsscript: Yes
#   Condexpression: self->size = 1
#---The script copies the current folder and appends it to a parent folder 
#   to be selected in a selection dialog
#---15.09.2025, sth: Adapted to version 6.8, English, new fields
#   Requires Vertec version 6.8.0.7.

def main(folderlist):
    for folder in folderlist:
        parentfolder = None
        # Evaluate new parent folder
        parentfolder = vtcapp.selectobjectintree("Select parent folder for new folder", [], browsefilter="", selectfilter="AbstractFolder")
        if parentfolder:
            try:
                newfolder = vtcapp.createobject("SqlFolder")
                newfolder.parentfolder = parentfolder
                # copy all members
                newfolder.allowShowAll = folder.allowShowAll
                newfolder.orderClause = folder.orderClause
                newfolder.showDialog = folder.showDialog
                newfolder.whereClause = folder.whereClause
                newfolder.classname = folder.classname
                newfolder.creatorClasses = folder.creatorClasses
                newfolder.dialogParamsInitialized = folder.dialogParamsInitialized
                newfolder.expression = folder.expression
                newfolder.searchConfiguration = folder.searchConfiguration
                newfolder.designation = folder.designation
                newfolder.tabsPerClass = folder.tabsPerClass
                newfolder.idx = folder.idx
                newfolder.persistentIcon = folder.persistentIcon
                newfolder.remarks = folder.remarks
                newfolder.controllerClassname = folder.controllerClassname
                newfolder.isExpandable = folder.isExpandable
                newfolder.openInNavigationView = folder.openInNavigationView
                newfolder.visibleExpression = folder.visibleExpression
                for biview in folder.assignedDimensionDisplays:
                    newfolder.assignedDimensionDisplays.append(biview)                
                vtcapp.msgbox("Copying process completed")
            except Exception as e:
                vtcapp.msgbox('There was a problem creating the new folder. The copying process was aborted.\nThe error is: {}'.format(e))
                continue

main(selectedobjects)