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 # Sub-Task 2
# We get: # We get:
# ["Task", "Sub-Task", "Sub-Task 2"] # [" Task", " Sub-Task", " Sub-Task 2"]
schedulepath = schedulep.copy() schedulepath = schedulep.copy()
schedulepath.append(" "+task["string"]) 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. # 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. # 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. # 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. # 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" t = "scenes"
item = filename.replace("/rnd", "") item = filename.replace("/rnd", "")
filename = filename[filename.rfind("/"):] filename = filename[filename.rfind("/"):]
item = item[:item.rfind(filename)]
elif filename.startswith("/ast") or filename.startswith("/dev"): elif filename.startswith("/ast") or filename.startswith("/dev"):
t = "assets" t = "assets"
@ -263,8 +264,21 @@ def draw(outlayer, win):
# This is our individual items. I want to create a folder # This is our individual items. I want to create a folder
# with USERS inside it. So you could see who done what. # with USERS inside it. So you could see who done what.
if win.cur and win.cur != item:
continue
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 = {} found = {}
@ -287,14 +301,12 @@ def draw(outlayer, win):
50, 50,
10) 10)
name = item[item.rfind("/")+1:]
acur = item.replace(name, "").replace("/", "")
# ICON # ICON
if i == "scenes" and not win.cur: if i == "scenes" and not win.cur:
UI_elements.image(layer, win, 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) 5, win.scroll["history"] + current_Y+5, 40, 40)
elif i == "assets" and not win.cur: elif i == "assets" and not win.cur:

View file

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

View file

@ -182,7 +182,7 @@ def layer(win):
# Icon # Icon
UI_elements.image(layer, win, "settings/themes/"\ UI_elements.image(layer, win, "settings/themes/"\
+win.settings["Theme"]+"/icons/vse.png", +win.settings["Theme"]+"/icons/scene.png",
win.current["w"]/4+10, win.current["w"]/4+10,
95, 95,
40, 40,
@ -387,7 +387,7 @@ def layer(win):
win.current["analytics_middle_graph_switch"] = { win.current["analytics_middle_graph_switch"] = {
"project":[True,"analytics", "progress_active"], "project":[True,"analytics", "progress_active"],
"checklist":[True,"checklist", "darker_parts"], "checklist":[True,"checklist", "darker_parts"],
"rnd":[True,"vse", "node_videofile"], "rnd":[True,"scene", "node_videofile"],
"chr":[True,"chr", "node_asset"], "chr":[True,"chr", "node_asset"],
"veh":[True,"veh", "node_imagefile"], # Name in data : [ Active, Icon name, color ] "veh":[True,"veh", "node_imagefile"], # Name in data : [ Active, Icon name, color ]
"loc":[True,"loc", "node_blendfile"], "loc":[True,"loc", "node_blendfile"],
@ -792,7 +792,7 @@ def layer(win):
if cur not in win.analytics["dates"][theday][itemtype]: if cur not in win.analytics["dates"][theday][itemtype]:
win.analytics["dates"][theday][itemtype][cur] = [] win.analytics["dates"][theday][itemtype][cur] = []
#print("test 1")
win.analytics["dates"][theday][itemtype][cur].append( win.analytics["dates"][theday][itemtype][cur].append(
["00:00:00", ["00:00:00",
"schedule", "schedule",
@ -801,7 +801,7 @@ def layer(win):
schedulepath, schedulepath,
username] username]
) )
#print("test 2")
# RETURNING BACK TO NORMAL # RETURNING BACK TO NORMAL
win.url = back win.url = back
@ -809,6 +809,7 @@ def layer(win):
analytics.save(win.project, win.analytics) analytics.save(win.project, win.analytics)
win.analytics = analytics.load(win.project) win.analytics = analytics.load(win.project)
win.checklists = {} win.checklists = {}
#print("test 3")
else: else:
win.current["date"] = theday win.current["date"] = theday
@ -832,11 +833,14 @@ def layer(win):
sch = [] sch = []
if theday in win.analytics["dates"]: if theday in win.analytics["dates"]:
date = win.analytics["dates"][theday] date = win.analytics["dates"][theday]
print(date)
for i in ["files", "assets", "scenes"]: for i in ["files", "assets", "scenes"]:
if i in date: if i in date:
for item in date[i]: for item in date[i]:
for stuff in date[i][item]: for stuff in date[i][item]:
if stuff[1] == "schedule": if stuff[1] == "schedule":
if not win.current["schedule_analytics_settings"]["multiuser"]: if not win.current["schedule_analytics_settings"]["multiuser"]:
if win.settings["Username"] != stuff[-1]: if win.settings["Username"] != stuff[-1]:
continue continue
@ -933,6 +937,8 @@ def layer(win):
path, back, cur, schedulepath, username = win.current["grab_data"].copy() path, back, cur, schedulepath, username = win.current["grab_data"].copy()
checklist.draw(layer, win, path, back) checklist.draw(layer, win, path, back)
UI_color.set(layer, win, "node_background") 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. But who are we deceiving? This is way cooler then
# the legacy organizer. # 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 # 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. # current progress. Or at least on the current progress of this asset.
if "asset_left_panel" not in win.current: if "asset_left_panel" not in win.current:
if fraction == 1.0: # If the asset is done 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 else: # Other
win.current["asset_left_panel"] = "schedule" # List schedules 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: if 65307 in win.current["keys"] and not win.textactive:
do() 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 # 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 # have the asset. I think I'm going to make it per shot based. Like
@ -841,15 +841,18 @@ def layer(win):
foundinscene = [] foundinscene = []
for block in shots: for num, block in enumerate(shots):
si = 1 si = 1
if block == "shot_block": if block[0] == "shot_block":
si = 2 si = 2
found = [] found = []
for n, stuff in enumerate(block[si]): for n, stuff in enumerate(block[si]):
# DIRECT LINK
#print(block, si)
if stuff[0] == "link" and stuff[1] == win.cur: if stuff[0] == "link" and stuff[1] == win.cur:
start = "" start = ""
@ -866,10 +869,29 @@ def layer(win):
found = [start, part, end] found = [start, part, end]
if si == 2: if si == 2:
foundinscene.append([block[1],found]) foundinscene.append([block[1],found,num,n])
else: 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: if foundinscene:
UI_color.set(layer, win, "node_background") UI_color.set(layer, win, "node_background")
@ -882,7 +904,7 @@ def layer(win):
# ICON # ICON
UI_elements.image(layer, win, 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) 20, y+win.scroll["asset_scenes"] + current_Y_scenes+5, 40, 40)
# SELECTION # SELECTION
@ -949,7 +971,7 @@ def layer(win):
# If it's a shot let's mark in the different color. # If it's a shot let's mark in the different color.
if block[0]: if block[0]:
UI_color.set(layer, win, "node_background") UI_color.set(layer, win, "node_badfile")
else: else:
UI_color.set(layer, win, "dark_overdrop") UI_color.set(layer, win, "dark_overdrop")
UI_elements.roundrect(layer, win, UI_elements.roundrect(layer, win,
@ -959,6 +981,25 @@ def layer(win):
30, 30,
10) 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] start = block[1][0]
name = block[1][1] name = block[1][1]
end = block[1][2] end = block[1][2]
@ -978,19 +1019,28 @@ def layer(win):
sp = np - len(start)*12 sp = np - len(start)*12
# BEFORE NAME # BEFORE NAME
UI_color.set(layer, win, "button_active") UI_color.set(layer, win, "text_normal")
layer.set_font_size(20) layer.set_font_size(20)
layer.move_to( sp, y+win.scroll["asset_scenes"] + current_Y_scenes+20) layer.move_to( sp, y+win.scroll["asset_scenes"] + current_Y_scenes+20)
layer.show_text(start) layer.show_text(start)
# NAME AS MENTIONED IN THE SCRIPT # 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") UI_color.set(layer, win, "text_normal")
layer.set_font_size(20) layer.set_font_size(20)
layer.move_to(np, y+win.scroll["asset_scenes"] + current_Y_scenes+20) layer.move_to(np, y+win.scroll["asset_scenes"] + current_Y_scenes+20)
layer.show_text(name) layer.show_text(name)
# AFTER NAME # AFTER NAME
UI_color.set(layer, win, "button_active") UI_color.set(layer, win, "text_normal")
layer.set_font_size(20) layer.set_font_size(20)
layer.move_to( ep, y+win.scroll["asset_scenes"] + current_Y_scenes+20) layer.move_to( ep, y+win.scroll["asset_scenes"] + current_Y_scenes+20)
layer.show_text(end) layer.show_text(end)

View file

@ -16,15 +16,16 @@ import datetime
from settings import settings from settings import settings
from settings import talk from settings import talk
from project_manager import pm_project 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 # Studio
from studio import analytics from studio import analytics
from studio import story from studio import story
from studio import studio_storyDeletionLayer 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 # UI modules
from UI import UI_testing from UI import UI_testing
@ -120,6 +121,10 @@ def run(project, win):
win.current["tool"] = "selection" win.current["tool"] = "selection"
win.current["draw_dot"] = "end" win.current["draw_dot"] = "end"
win.current["calls"] = {} # Calls. See sutdio/studio_dialogs.py 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" new_date_format = "%Y/%m/%d"
today = datetime.datetime.strftime(datetime.datetime.today(), new_date_format) today = datetime.datetime.strftime(datetime.datetime.today(), new_date_format)
@ -254,7 +259,8 @@ def pmdrawing(pmdrawing, main_layer, win):
elif win.url == "assets": elif win.url == "assets":
Layers.append([studio_assetLayer.layer(win),"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. # 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["mx"]) == int(win.previous["LMB"][0])\
and int(win.current["my"]) == int(win.previous["LMB"][1]): 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": 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, 40,
10, 10,
do, do,
"node", "scene_new",
talk.text("new_scene_tooltip")+"\n[N]", talk.text("new_scene_tooltip")+"\n[N]",
url="story_editor") url="story_editor")
@ -826,25 +826,26 @@ def layer(win):
# SCENES # SCENES
try:
for scene in win.story["scenes"]: for scene in win.story["scenes"]:
# Loaction # Loaction
sx, sy = win.story["scenes"][scene]["position"] sx, sy = win.story["scenes"][scene]["position"]
sx = sx + cx sx = sx + cx
sy = sy + cy sy = sy + cy
# Scale # Scale
ssx, ssy = win.story["scenes"][scene]["size"] ssx, ssy = win.story["scenes"][scene]["size"]
#Fraction #Fraction
sf = win.story["scenes"][scene]["fraction"] sf = win.story["scenes"][scene]["fraction"]
#Draw #Draw
studio_nodes.scene_node(layer, win, sx, sy, ssx, ssy, name=scene, fraction=sf) studio_nodes.scene_node(layer, win, sx, sy, ssx, ssy, name=scene, fraction=sf)
except:
pass
########### TIMES RECORDING FOR PERFONMANCE MEASURING ############# ########### TIMES RECORDING FOR PERFONMANCE MEASURING #############
fif = datetime.datetime.now() fif = datetime.datetime.now()