Upload files to 'studio'

This commit is contained in:
Jeison Yehuda Amihud (Blender Dumbass) 2020-12-15 20:38:04 +00:00
parent c4b23f24c3
commit 185e3c177d
9 changed files with 1276 additions and 52 deletions

View file

@ -451,7 +451,7 @@ def draw(outlayer, win, path, back="story_editor"):
# Sub-Task 2
# We get:
# ["Task", "Sub-Task", "Sub-Task 2"]
# [" Task", " Sub-Task", " Sub-Task 2"]
schedulepath = schedulep.copy()
schedulepath.append(" "+task["string"])
@ -527,7 +527,7 @@ def draw(outlayer, win, path, back="story_editor"):
# So here we set up the grab tool and creating a little variable.
# This variable (moving_task_now) will consist of 2 parts on release.
# 1. The entire task ( will subtasks ) using pop. Which is not simply
# 1. The entire task ( with subtasks ) using pop. Which is not simply
# a copy. But also removing the task from the checklist's list.
# 2. The current frame of poping. So to offset insertion for 1 frame.

View file

@ -84,6 +84,7 @@ def record(win, filename, task, checklist=[] ):
t = "scenes"
item = filename.replace("/rnd", "")
filename = filename[filename.rfind("/"):]
item = item[:item.rfind(filename)]
elif filename.startswith("/ast") or filename.startswith("/dev"):
t = "assets"
@ -263,9 +264,22 @@ def draw(outlayer, win):
# This is our individual items. I want to create a folder
# with USERS inside it. So you could see who done what.
if win.cur and win.cur != item:
if win.cur.count("/") > 1:
tmp = win.cur.replace("/","",1).split("/")
acur, name = tmp[0], tmp[1]
else:
name = win.cur[win.cur.rfind("/")+1:]
acur = ""
if win.cur not in item and win.cur:
continue
name = item[item.rfind("/")+1:]
acur = item.replace(name, "").replace("/", "")
found = {}
for stuff in date[i][item]:
@ -287,14 +301,12 @@ def draw(outlayer, win):
50,
10)
name = item[item.rfind("/")+1:]
acur = item.replace(name, "").replace("/", "")
# ICON
if i == "scenes" and not win.cur:
UI_elements.image(layer, win,
"settings/themes/"+win.settings["Theme"]+"/icons/vse.png",
"settings/themes/"+win.settings["Theme"]+"/icons/scene.png",
5, win.scroll["history"] + current_Y+5, 40, 40)
elif i == "assets" and not win.cur:

View file

@ -84,7 +84,7 @@ def filter(project, dates):
path = project+"/dev"+url+path
elif os.path.exists(project+"rnd/"+url+path):
elif os.path.exists(project+"/rnd"+url+path):
path = project+"/rnd"+url+path
elif os.path.exists(project+"/set/"+path):
@ -274,7 +274,7 @@ def draw(outlayer, win):
continue
for item in schedules[date]:
if win.cur == item or not win.cur:
if win.cur in item or not win.cur:
slist.append([date, item, schedules[date][item]])
@ -299,6 +299,15 @@ def draw(outlayer, win):
# Parsing the cur to get name and type
name = entry[1][entry[1].rfind("/")+1:]
acur = entry[1].replace(name, "").replace("/", "")
if entry[1].count("/") > 1:
tmp = entry[1].replace("/","",1).split("/")
acur, name = tmp[0], tmp[1]
else:
name = entry[1][entry[1].rfind("/")+1:]
acur = ""
fullurl = ""
for e in thing[0][4][:-1]:
fullurl = fullurl+e+" > "
@ -396,6 +405,8 @@ def draw(outlayer, win):
dev = ""
if itemtype == "assets":
dev = "/dev"
if itemtype == "scenes":
dev = "/rnd"
win.current["tool"] = "schedule"
win.current["grab_data"] = [dev+entry[1]+thing[0][2], win.url, entry[1], pop[4], pop[-1]]
@ -552,7 +563,7 @@ def draw(outlayer, win):
else:
# ICON
UI_elements.image(layer, win,
"settings/themes/"+win.settings["Theme"]+"/icons/vse.png",
"settings/themes/"+win.settings["Theme"]+"/icons/scene.png",
25, win.scroll["schedule"] + current_Y+5, 40, 40)
goto = "script"

View file

@ -182,7 +182,7 @@ def layer(win):
# Icon
UI_elements.image(layer, win, "settings/themes/"\
+win.settings["Theme"]+"/icons/vse.png",
+win.settings["Theme"]+"/icons/scene.png",
win.current["w"]/4+10,
95,
40,
@ -387,7 +387,7 @@ def layer(win):
win.current["analytics_middle_graph_switch"] = {
"project":[True,"analytics", "progress_active"],
"checklist":[True,"checklist", "darker_parts"],
"rnd":[True,"vse", "node_videofile"],
"rnd":[True,"scene", "node_videofile"],
"chr":[True,"chr", "node_asset"],
"veh":[True,"veh", "node_imagefile"], # Name in data : [ Active, Icon name, color ]
"loc":[True,"loc", "node_blendfile"],
@ -792,7 +792,7 @@ def layer(win):
if cur not in win.analytics["dates"][theday][itemtype]:
win.analytics["dates"][theday][itemtype][cur] = []
#print("test 1")
win.analytics["dates"][theday][itemtype][cur].append(
["00:00:00",
"schedule",
@ -801,7 +801,7 @@ def layer(win):
schedulepath,
username]
)
#print("test 2")
# RETURNING BACK TO NORMAL
win.url = back
@ -809,6 +809,7 @@ def layer(win):
analytics.save(win.project, win.analytics)
win.analytics = analytics.load(win.project)
win.checklists = {}
#print("test 3")
else:
win.current["date"] = theday
@ -832,11 +833,14 @@ def layer(win):
sch = []
if theday in win.analytics["dates"]:
date = win.analytics["dates"][theday]
print(date)
for i in ["files", "assets", "scenes"]:
if i in date:
for item in date[i]:
for stuff in date[i][item]:
if stuff[1] == "schedule":
if not win.current["schedule_analytics_settings"]["multiuser"]:
if win.settings["Username"] != stuff[-1]:
continue
@ -933,6 +937,8 @@ def layer(win):
path, back, cur, schedulepath, username = win.current["grab_data"].copy()
checklist.draw(layer, win, path, back)
UI_color.set(layer, win, "node_background")

View file

@ -725,14 +725,14 @@ def layer(win):
# the legacy organizer. But who are we deceiving? This is way cooler then
# the legacy organizer.
leftpanellist = ["vse", "schedule", "history"] # Using the names of the icons.
leftpanellist = ["scene", "schedule", "history"] # Using the names of the icons.
# We need to choose the correct category based smartly on the project's
# current progress. Or at least on the current progress of this asset.
if "asset_left_panel" not in win.current:
if fraction == 1.0: # If the asset is done
win.current["asset_left_panel"] = "vse" # Then list scenes
win.current["asset_left_panel"] = "scene" # Then list scenes
else: # Other
win.current["asset_left_panel"] = "schedule" # List schedules
@ -803,7 +803,7 @@ def layer(win):
if 65307 in win.current["keys"] and not win.textactive:
do()
if win.current["asset_left_panel"] == "vse":
if win.current["asset_left_panel"] == "scene":
# Here I want to parse the story data in pusuit of all the scenes that
# have the asset. I think I'm going to make it per shot based. Like
@ -841,15 +841,18 @@ def layer(win):
foundinscene = []
for block in shots:
for num, block in enumerate(shots):
si = 1
if block == "shot_block":
if block[0] == "shot_block":
si = 2
found = []
for n, stuff in enumerate(block[si]):
# DIRECT LINK
#print(block, si)
if stuff[0] == "link" and stuff[1] == win.cur:
start = ""
@ -866,9 +869,28 @@ def layer(win):
found = [start, part, end]
if si == 2:
foundinscene.append([block[1],found])
foundinscene.append([block[1],found,num,n])
else:
foundinscene.append(["",found])
foundinscene.append(["",found,num,n])
# FRASE LINK
if stuff[0] == "frase" and stuff[1][0] == "link" and stuff[1][1] == win.cur:
start = ""
part = stuff[1][-1]
end = ""
if n < len(block[si])-1:
end = " : "+stuff[-1]
found = [start, part, end]
if si == 2:
foundinscene.append([block[1],found,num ,n])
else:
foundinscene.append(["",found,num ,n])
if foundinscene:
@ -882,7 +904,7 @@ def layer(win):
# ICON
UI_elements.image(layer, win,
"settings/themes/"+win.settings["Theme"]+"/icons/vse.png",
"settings/themes/"+win.settings["Theme"]+"/icons/scene.png",
20, y+win.scroll["asset_scenes"] + current_Y_scenes+5, 40, 40)
# SELECTION
@ -949,7 +971,7 @@ def layer(win):
# If it's a shot let's mark in the different color.
if block[0]:
UI_color.set(layer, win, "node_background")
UI_color.set(layer, win, "node_badfile")
else:
UI_color.set(layer, win, "dark_overdrop")
UI_elements.roundrect(layer, win,
@ -959,6 +981,25 @@ def layer(win):
30,
10)
# GET TO THE SCENE BUTTON
def do():
win.current["script_find"] = [block[2],block[3]]
win.url = "script"
print(scene)
win.cur = "/"+scene+"/"+block[0]
print(win.cur)
UI_elements.roundrect(layer, win,
x,
y+win.scroll["asset_scenes"]+current_Y_scenes,
width,
30,
10,
button=do,
fill=False)
layer.stroke()
start = block[1][0]
name = block[1][1]
end = block[1][2]
@ -978,19 +1019,28 @@ def layer(win):
sp = np - len(start)*12
# BEFORE NAME
UI_color.set(layer, win, "button_active")
UI_color.set(layer, win, "text_normal")
layer.set_font_size(20)
layer.move_to( sp, y+win.scroll["asset_scenes"] + current_Y_scenes+20)
layer.show_text(start)
# NAME AS MENTIONED IN THE SCRIPT
UI_color.set(layer, win, "node_asset")
UI_elements.roundrect(layer, win,
np-6,
y+win.scroll["asset_scenes"]+current_Y_scenes+2,
len(name)*12+12,
26,
10)
UI_color.set(layer, win, "text_normal")
layer.set_font_size(20)
layer.move_to(np, y+win.scroll["asset_scenes"] + current_Y_scenes+20)
layer.show_text(name)
# AFTER NAME
UI_color.set(layer, win, "button_active")
UI_color.set(layer, win, "text_normal")
layer.set_font_size(20)
layer.move_to( ep, y+win.scroll["asset_scenes"] + current_Y_scenes+20)
layer.show_text(end)

View file

@ -16,15 +16,16 @@ import datetime
from settings import settings
from settings import talk
from project_manager import pm_project
from studio import studio_storyLayer
from studio import studio_settingsLayer
from studio import studio_assetLayer
from studio import studio_analyticsLayer
# Studio
from studio import analytics
from studio import story
from studio import studio_storyDeletionLayer
from studio import studio_storyLayer
from studio import studio_settingsLayer
from studio import studio_assetLayer
from studio import studio_analyticsLayer
from studio import studio_scriptLayer
# UI modules
from UI import UI_testing
@ -120,6 +121,10 @@ def run(project, win):
win.current["tool"] = "selection"
win.current["draw_dot"] = "end"
win.current["calls"] = {} # Calls. See sutdio/studio_dialogs.py
win.current["script_find"] = [0,0]
if "pointers" not in win.story:
win.story["pointers"] = {} # List of text pointers per scene
new_date_format = "%Y/%m/%d"
today = datetime.datetime.strftime(datetime.datetime.today(), new_date_format)
@ -254,7 +259,8 @@ def pmdrawing(pmdrawing, main_layer, win):
elif win.url == "assets":
Layers.append([studio_assetLayer.layer(win),"assets"])
elif win.url == "script":
Layers.append([studio_scriptLayer.layer(win), "script"])
# Call layers. See studio/studio_dialogs.py for explanation. It's wild.

View file

@ -365,7 +365,9 @@ def scene_node(outlayer, win, x, y, width, height, name="Unknown", fraction=0.0)
and int(win.current["mx"]) == int(win.previous["LMB"][0])\
and int(win.current["my"]) == int(win.previous["LMB"][1]):
win.url = "scene"
win.url = "script"
win.cur = "/"+name
win.current["tool"] = "selection"
if win.current["LMB"] and win.current["tool"] == "selection":

1136
studio/studio_scriptLayer.py Normal file

File diff suppressed because it is too large Load diff

View file

@ -319,7 +319,7 @@ def layer(win):
40,
10,
do,
"node",
"scene_new",
talk.text("new_scene_tooltip")+"\n[N]",
url="story_editor")
@ -826,25 +826,26 @@ def layer(win):
# SCENES
try:
for scene in win.story["scenes"]:
for scene in win.story["scenes"]:
# Loaction
sx, sy = win.story["scenes"][scene]["position"]
sx = sx + cx
sy = sy + cy
# Loaction
sx, sy = win.story["scenes"][scene]["position"]
sx = sx + cx
sy = sy + cy
# Scale
ssx, ssy = win.story["scenes"][scene]["size"]
# Scale
ssx, ssy = win.story["scenes"][scene]["size"]
#Fraction
sf = win.story["scenes"][scene]["fraction"]
#Fraction
sf = win.story["scenes"][scene]["fraction"]
#Draw
studio_nodes.scene_node(layer, win, sx, sy, ssx, ssy, name=scene, fraction=sf)
#Draw
studio_nodes.scene_node(layer, win, sx, sy, ssx, ssy, name=scene, fraction=sf)
except:
pass
########### TIMES RECORDING FOR PERFONMANCE MEASURING #############
fif = datetime.datetime.now()