# THIS FILE IS A PART OF VCStudio # PYTHON 3 import os import sys import subprocess from settings import settings from settings import talk from studio import studio_gtk from studio_console import sc_main from gi.repository import GLib def new(name): # Removing all the bad characters name = name.replace("/","_").replace(" ", "_")\ .replace('"',"_").replace("(","_").replace(")","_").replace("'","_")\ .replace("[","_").replace("]","_").replace("{","_").replace("}","_") # This function makes a new project. # If there is not such a folder. As in the settings. if not os.path.exists(settings.read("New-Project-Folder")): return False # If there is a project folder, or a file with it's name. elif os.path.exists(settings.read("New-Project-Folder")+"/"+name): return False #If all good else: try: fn = settings.read("New-Project-Folder")+"/"+name os.mkdir(fn) os.mkdir(fn+"/rnd") os.mkdir(fn+"/dev") os.mkdir(fn+"/ast") os.mkdir(fn+"/pln") os.mkdir(fn+"/mus") os.mkdir(fn+"/set") for f in ["chr","loc","veh","obj"]: os.mkdir(fn+"/ast/"+f) os.mkdir(fn+"/dev/"+f) register_project(fn) return True # If it fails to create a project for some reason. except: return False def register_project(path): prevdata = "" try: data = open("project_manager/projects_list.data") prevdata = data.read() except: pass data = open("project_manager/projects_list.data", "w") if path not in prevdata: data.write(prevdata+path+"\n") else: data.write(prevdata) data.close() def get_list(): ret = [] try: data = open("project_manager/projects_list.data") data = data.read() data = data.split("\n") for line in data: if os.path.exists(line): ret.append(line) except: pass return ret def scan(): ret = [] #scan the system for "ast/chr" a folder that accurs in a project for i in [x[0] for x in os.walk("/")]: if i.endswith("/ast/chr"): ret.append(i.replace("/ast/chr", "")) register_project(i.replace("/ast/chr", "")) return ret def load(path, win=False): #first let's figure out if it's an old Blender-Organizer #or a new VCStudio project. #if new if not is_legacy(path): # Console mode if len(sys.argv) > 1 and sys.argv[1] == "-c": sc_main.run(path) else: studio_gtk.run(path, win) #old organizer else: if not os.path.exists(path+"/MAIN_FILE"): n = "blender-organizer" else: n = open(path+"/MAIN_FILE") n = n.read() #let's look if there is python2 since it's legacy software if not os.system("python2 -V") == 0: return "No python2" #loading the python2 thingy sh = open("/tmp/run_legacy_organizer.sh", "w") sh.write("cd "+path+"\n") sh.write("python2 "+n+"\n") sh.write('read -p ""') sh.close() if not os.path.exists(path+"/MAIN_FILE"): os.system("gnome-terminal -- sh /tmp/run_legacy_organizer.sh") else: subprocess.Popen(["sh", "/tmp/run_legacy_organizer.sh"]) if win: win.destroy() def is_legacy(project): # This function checks whether a given project is a Legacy ( Blender - # Organizer ) project. if not os.path.exists(project+"/set"): return True else: return False