# SPDX-License-Identifier: GPL-2.0-or-later

import bpy
import os

def InitFolders():

    platform = os.sys.platform
    coat3D = bpy.context.scene.coat3D

    #    Global variable foundExchangeFolder (True / False) guides these steps
    # 1. Read Exchange_folder.txt, if not success ->
    # 2. Try to find exchange folder from system hard drive, if not success -->
    # 3. Leave foundExchangeFolder = False

    # 1. #################################################################

    if(platform == 'win32' or platform == 'darwin'):
        DC2Folder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender'
    else:
        DC2Folder = os.path.expanduser("~") + os.sep + '3DC2Blender'

    exchangeFile = DC2Folder + os.sep + 'Exchange_folder.txt'

    if(not os.path.isdir(DC2Folder)):
        os.mkdir(DC2Folder)

    if(not os.path.isfile(exchangeFile)):
        file = open(exchangeFile, 'w')
        file.close()
    else:
        savedExchangePath = ''
        folderPath = open(exchangeFile)

        for line in folderPath:
            savedExchangePath = line
            break
        folderPath.close()


        coat3D.exchangeFolder = savedExchangePath
        return True, coat3D.exchangeFolder


    # 2. #################################################################

    if(platform == 'win32' or platform == 'darwin'):
        exchangeFolder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + 'Applinks' + os.sep + '3D-Coat' + os.sep +'Exchange'
    else:
        exchangeFolder = os.path.expanduser("~") + os.sep + '3D-CoatV4' + os.sep + 'Exchange'
        if not(os.path.isdir(exchangeFolder)):
            exchangeFolder = os.path.expanduser("~") + os.sep + '3D-CoatV3' + os.sep + 'Exchange'
    if(os.path.isdir(exchangeFolder)):
        coat3D.exchangeFolder = exchangeFolder

        Blender_folder = ("%s%sBlender"%(exchangeFolder,os.sep))

        if(not(os.path.isdir(Blender_folder))):
            os.makedirs(Blender_folder, mode = 0o666)
            Blender_folder1 = os.path.join(Blender_folder,"run.txt")
            file = open(Blender_folder1, "w")
            file.close()

            Blender_folder2 = os.path.join(Blender_folder, "extension.txt")
            file = open(Blender_folder2, "w")
            file.write("fbx")
            file.close()

            Blender_folder3 = os.path.join(Blender_folder, "preset.txt")
            file = open(Blender_folder3, "w")
            file.write("Blender Cycles")
            file.close()

        file = open(exchangeFile, "w")
        file.write("%s"%(os.path.abspath(coat3D.exchangeFolder)))
        file.close()

        return True, coat3D.exchangeFolder

    return False, ''


def updateExchangeFile(newPath):

    platform = os.sys.platform

    if(platform == 'win32' or platform == 'darwin'):
        exchangeFile = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
    else:
        exchangeFile = os.path.expanduser("~") + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
    if(os.path.isfile(exchangeFile)):
        folderPath = ''

    if(os.path.isfile(exchangeFile)):
        file = open(exchangeFile, "w")
        file.write("%s"%(newPath))
        file.close()

def loadExchangeFolder():

    platform = os.sys.platform
    coat3D = bpy.context.scene.coat3D

    if(platform == 'win32' or platform == 'darwin'):
        DC2Folder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender'
    else:
        DC2Folder = os.path.expanduser("~") + os.sep + '3DC2Blender'

    exchangeFile = DC2Folder + os.sep + 'Exchange_folder.txt'

    if(not os.path.isdir(DC2Folder)):
        os.mkdir(DC2Folder)

    if(not os.path.isfile(exchangeFile)):
        file = open(exchangeFile, 'w')
        file.close()
    else:
        savedExchangePath = ''
        folderPath = open(exchangeFile)

        for line in folderPath:
            savedExchangePath = line
            break
        folderPath.close()
        coat3D.exchangeFolder = savedExchangePath


def set_working_folders():

    platform = os.sys.platform
    coat3D = bpy.context.scene.coat3D

    if(platform == 'win32' or platform == 'darwin'):
        if (coat3D.defaultfolder != '' and os.path.isdir(coat3D.defaultfolder)):
            return coat3D.defaultfolder
        else:
            folder_objects = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'ApplinkObjects'
            if(not(os.path.isdir(folder_objects))):
                os.makedirs(folder_objects, mode = 0o666)
    else:
        if (coat3D.defaultfolder != '' and os.path.isdir(coat3D.defaultfolder)):
            return coat3D.defaultfolder
        else:
            folder_objects = os.path.expanduser("~") + os.sep + '3DC2Blender' + os.sep + 'ApplinkObjects'
            if(not(os.path.isdir(folder_objects))):
                os.makedirs(folder_objects, mode = 0o666)

    return folder_objects
