123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- # 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
-
-
|