Blender-Pipeline/studio/studio_storyLayer.py

411 lines
8.1 KiB
Python

# THIS FILE IS A PART OF VCStudio
# PYTHON 3
import os
# GTK module ( Graphical interface
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import GLib
from gi.repository import Gdk
import cairo
# Own modules
from settings import settings
from settings import talk
from project_manager import pm_project
from studio import analytics
#UI modules
from UI import UI_elements
from UI import UI_color
def layer(win):
# Making the layer
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, win.current['w'],
win.current['h'])
layer = cairo.Context(surface)
#text setting
layer.select_font_face("Monospace", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
UI_color.set(layer, win, "darker_parts")
UI_elements.roundrect(layer, win,
50,
50,
win.current["w"] - 100,
win.current["h"] - 80,
30)
# Little verion thing in the bottom corner
UI_color.set(layer, win, "testing_banner")
layer.set_font_size(15)
layer.move_to(win.current["w"]-80, win.current["h"] - 7)
layer.show_text(str(win.version))
# Hude analytics button on the top
def do():
print("Analytics")
UI_elements.roundrect(layer, win,
5,
5,
win.current["w"]-10,
40,
10,
do,
"analytics",
talk.text("analytics_tooltip"),
url="story_editor")
# Progressbar
UI_color.set(layer, win, "progress_background")
UI_elements.roundrect(layer, win,
55,
15,
win.current["w"]/3*2-10,
20,
10)
timepassed = 0.0
projectdone = 0.0
try:
timepassed = win.analytics["timepassed"]
projectdone = win.analytics["fraction"]
except:
pass
# Timepassed
UI_color.set(layer, win, "progress_time")
UI_elements.roundrect(layer, win,
55,
15,
(win.current["w"]/3*2-10)*timepassed,
20,
10)
# Project Done
UI_color.set(layer, win, "progress_active")
UI_elements.roundrect(layer, win,
55,
15,
(win.current["w"]/3*2-10)*projectdone,
20,
10)
# Separator
UI_color.set(layer, win, "node_background")
layer.move_to(win.current["w"]/3*2+55, 5)
layer.line_to(win.current["w"]/3*2+55, 45)
layer.stroke()
# Schedule
UI_elements.image(layer, win, "settings/themes/"\
+win.settings["Theme"]+"/icons/schedule.png",
win.current["w"]/3*2+60,
5,
40,
40)
# Temporarely:
UI_color.set(layer, win, "text_normal")
layer.set_font_size(20)
layer.move_to(win.current["w"]/3*2+120, 25)
layer.show_text("The Next Task")
layer.set_font_size(12)
layer.move_to(win.current["w"]/3*2+130+len("The Next Task")*12, 25)
layer.show_text("from: AllTasks > Subtasks > This")
layer.set_font_size(12)
layer.move_to(win.current["w"]/3*2+120, 40)
layer.show_text("Character: Moria")
###### LEFT PANNEL #######
# New Scene
def do():
print("New Scene")
UI_elements.roundrect(layer, win,
5,
105,
40,
40,
10,
do,
"node",
talk.text("new_scene_tooltip"),
url="story_editor")
# Link Asset
def do():
print("Link Asset")
UI_elements.roundrect(layer, win,
5,
155,
40,
40,
10,
do,
"obj_link",
talk.text("link_asset_tooltip"),
url="story_editor")
# Link File
def do():
print("Link File")
UI_elements.roundrect(layer, win,
5,
205,
40,
40,
10,
do,
"file_link",
talk.text("link_file_tooltip"),
url="story_editor")
# Event
def do():
print("Event")
UI_elements.roundrect(layer, win,
5,
255,
40,
40,
10,
do,
"event",
talk.text("event_tooltip"),
url="story_editor")
# Marker
def do():
print("Marker")
UI_elements.roundrect(layer, win,
5,
305,
40,
40,
10,
do,
"pin",
talk.text("marker_tooltip"),
url="story_editor")
# Renders
def do():
print("Renders")
UI_elements.roundrect(layer, win,
5,
405,
40,
40,
10,
do,
"render",
talk.text("render_lists_tooltip"),
url="story_editor")
# Edit Video
def do():
print("Edit Video")
UI_elements.roundrect(layer, win,
5,
455,
40,
40,
10,
do,
"vse",
talk.text("vse_tooltip"),
url="story_editor")
# Bottom
# Multiuser
def do():
win.url = "multiuser_layer"
UI_elements.roundrect(layer, win,
5,
win.current["h"]-95,
40,
40,
10,
do,
"multiuser",
talk.text("multiuser_tooltip"),
url="story_editor")
# Settings
def do():
win.url = "settings_layer"
UI_elements.roundrect(layer, win,
5,
win.current["h"]-45,
40,
40,
10,
do,
"settings",
talk.text("Settings"),
url="story_editor")
###### RIGHT PANNEL #######
# Characters
def do():
print("Characters")
UI_elements.roundrect(layer, win,
win.current["w"]-45,
105,
40,
40,
10,
do,
"chr",
talk.text("chr"),
url="story_editor")
# Vehicles
def do():
print("Vehicles")
UI_elements.roundrect(layer, win,
win.current["w"]-45,
155,
40,
40,
10,
do,
"veh",
talk.text("veh"),
url="story_editor")
# Locations
def do():
print("Locations")
UI_elements.roundrect(layer, win,
win.current["w"]-45,
205,
40,
40,
10,
do,
"loc",
talk.text("loc"),
url="story_editor")
# Other (obj)
def do():
print("Other (obj)")
UI_elements.roundrect(layer, win,
win.current["w"]-45,
255,
40,
40,
10,
do,
"obj",
talk.text("obj"),
url="story_editor")
# Sounds / Music
def do():
print("Sounds / Music")
UI_elements.roundrect(layer, win,
win.current["w"]-45,
355,
40,
40,
10,
do,
"mus",
talk.text("mus"),
url="story_editor")
####### NODES #######
# Clipping so it wont draw beyon the frame
UI_elements.roundrect(layer, win,
50,
50,
win.current["w"] - 100,
win.current["h"] - 80,
30,
fill=False)
layer.clip()
# Background Image
if os.path.exists(win.project+"/py_data/banner.png"):
UI_elements.image(layer, win, win.project+"/py_data/banner.png",
50,
50,
win.current["w"] - 100,
win.current["h"] - 80)
else:
UI_elements.image(layer, win, "icon.png",
50,
50,
win.current["w"] - 100,
win.current["h"] - 80)
UI_color.set(layer, win, "node_background")
layer.rectangle(0,0,win.current["w"], win.current["h"])
layer.fill()
# Setting up scroll for Projects
if "pm_scroll" not in win.current:
win.current["pm_scroll"] = 0.0
# Setting up tilling
tileY = 0
tileX = 0
UI_elements.scroll_area(layer, win, "pm_main",
50,
5,
win.current["w"] - 55,
win.current["h"] - 30,
tileY+340,
bar=True,
mmb=True,
url="project_manager"
)
return surface