# 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