'''The view tab'''
import Tkinter as tk
from pmg_tk.startup.ProMol import promolglobals as glb
from pmg_tk.startup.ProMol.Methods.setting import *
from pmg_tk.startup.ProMol.Methods.visual import *

def initialise():
    '''Start the view tab'''

    #-------------- Selection Dropdown -----------------
    tk.Label(glb.GUI.view['tab'], text='Select:').grid(row=0, column=0,
        sticky=tk.NE)
    glb.GUI.view['advanced_selection'] = tk.StringVar()
    glb.GUI.view['advanced_selection'].set('All')
    glb.GUI.view['advanced_selection_menu'] = tk.OptionMenu(glb.GUI.view['tab'],
        glb.GUI.view['advanced_selection'], 'All', 'Selected',
        'Not Selected', command=glb.set_selection)
    glb.GUI.view['advanced_selection_menu'].grid(row=0, column=1, sticky=tk.NW)
    
    tk.Button(glb.GUI.view['tab'], text='Update Selection',
        command=glb.populate).grid(row=0, column=2, sticky=tk.E)

    #--------------- Setting Defaults -----------------
    tk.Label(glb.GUI.view['tab'], text='Reset:').grid(row=0, column=4,
        sticky=tk.NE)
    defaults = tk.StringVar()
    defaults.set('Cartoon')
    defaults_menu = tk.OptionMenu(glb.GUI.view['tab'], defaults,
        'Cartoon', 'Spheres', 'Sticks', 'Surface', 'Ambient',
        command=glb.defaults)
    defaults_menu.grid(row=0, column=5, sticky=tk.NW)

    #--------------- Cartoon Group----------------
    group = tk.LabelFrame(glb.GUI.view['tab'], text='Cartoon:')
    group.grid(row=1, column=0, padx=1, columnspan=3, pady=0, sticky=tk.NW)

    # Cartoon Width Slider
    tk.Label(group, text='Width').grid(row=0, column=0, padx=0, pady=0,
        sticky=tk.W)
    glb.GUI.view['toonWidth'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="2.0")
    glb.GUI.view['toonWidth'].set(1.4)
    glb.GUI.view['toonWidth'].grid(row=0, column=1, padx=0, pady=0,
        sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=cartoon_width).grid(row=0, column=2, sticky=tk.SW, padx=2,
        pady=2)

    # Cartoon Thickness Slider
    tk.Label(group, text='Thickness').grid(row=1, column=0, padx=0, pady=0,
        sticky=tk.W)
    glb.GUI.view['toonThickness'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="2.0")
    glb.GUI.view['toonThickness'].set(0.3)
    glb.GUI.view['toonThickness'].grid(row=1, column=1, padx=0, pady=0,
        sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=cartoon_thickness).grid(row=1, column=2, sticky=tk.SW, padx=2,
        pady=2)

    # Cartoon Transparency Slider
    tk.Label(group, text='Transparency').grid(row=2, column=0, padx=0, pady=0,
        sticky=tk.W)
    glb.GUI.view['cartoonTransparency'] = tk.Scale(group, width=8,
        length="65", troughcolor="#ffffff", orient="horizontal",
        resolution="0.05", to="1.0")
    glb.GUI.view['cartoonTransparency'].grid(row=2, column=1, padx=0,
        pady=0, sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10, 
        command=cartoon_transparency).grid(row=2, column=2, sticky=tk.SW, 
        padx=2, pady=2)

    # Cartoon Tube Radius Slider
    tk.Label(group, text='Tube Radius').grid(row=3, column=0, padx=0, pady=0,
        sticky=tk.W)
    glb.GUI.view['toonTubeRadius'] = Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="1.0")
    glb.GUI.view['toonTubeRadius'].set(0.5)
    glb.GUI.view['toonTubeRadius'].grid(row=3, column=1, padx=0, pady=0,
        sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=cartoon_tube_radius).grid(row=3, column=2, sticky=tk.SW, padx=2,
        pady=2)
    
    ribbonTypes = StringVar()
    ribbonTypes.set('Automatic')
    ribbonTypes_menu = tk.OptionMenu (group, ribbonTypes, 'Automatic', 'Skip',
        'Loop', 'Rectangle', 'Oval', 'Tube', 'Arrow', 'Dumbbell', 'Putty',
        'Fancy helix', command=ribType)
    ribbonTypes_menu.grid(row=4, column=2, sticky=tk.SW)
    
    #-------------- Sphere Group--------------------
    group = tk.LabelFrame(glb.GUI.view['tab'], text='Spheres:')
    group.grid(row=1, column=3, columnspan=3, padx=1, pady=0, sticky=tk.NW)

    # Sphere Size Slider
    tk.Label(group, text='Size').grid(row=0, column=0, padx=0, pady=0,
        sticky=tk.E)
    glb.GUI.view['sphereScale'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="2.0")
    glb.GUI.view['sphereScale'].set(0.7)
    glb.GUI.view['sphereScale'].grid(row=0, column=1, padx=0, pady=0,
        sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=sphereSize).grid(row=0, column=2, sticky=tk.SW, padx=2, pady=2)

    # Sphere Transparency Slider
    tk.Label(group, text='Transparency').grid(row=1, column=0, padx=0, pady=0,
        sticky=tk.E)
    glb.GUI.view['sphereTransparency'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="1.0")
    glb.GUI.view['sphereTransparency'].grid(row=1, column=1, padx=0,
        pady=0, sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=sphere_transparency).grid(row=1, column=2, sticky=tk.SW, padx=2,
        pady=2)

    #--------------- Stick Group --------------------
    group = tk.LabelFrame(glb.GUI.view['tab'], text='Sticks:')
    group.grid(row=1, column=3, columnspan=3, padx=1, pady=0, sticky=tk.SW)

    # Stick Radius Slider
    tk.Label(group, text='Radius').grid(row=0, column=0, padx=0, pady=0,
        sticky=tk.E)
    glb.GUI.view['stickRadius'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="3.0")
    glb.GUI.view['stickRadius'].set(0.2)
    glb.GUI.view['stickRadius'].grid(row=0, column=1, padx=0, pady=0,
        sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10, 
        command=stickRad).grid(row=0, column=2, sticky=tk.SW, padx=2, pady=2)

    # Stick Transparency Slider
    tk.Label(group, text='Transparency').grid(row=1, column=0, padx=0, pady=0,
        sticky=tk.E)
    glb.GUI.view['stickTransparency'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="1.0")
    glb.GUI.view['stickTransparency'].grid(row=1, column=1, padx=0,
        pady=0, sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=stick_transparency).grid(row=1, column=2, sticky=tk.SW, padx=2,
        pady=2)

    #-------------- Surface Group -------------------
    group = tk.LabelFrame(glb.GUI.view['tab'], text='Surface:')
    group.grid(row=2, column=3, columnspan=3, padx=1, pady=0, sticky=tk.SW)

    # Surface Transparency Slider
    tk.Label(group, text='Transparency').grid(row=2, column=0, padx=0, pady=0,
        sticky=tk.E)
    glb.GUI.view['surfaceTransparency'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.05", to="1.0")
    glb.GUI.view['surfaceTransparency'].grid(row=2, column=1, padx=0,
        pady=0, sticky=tk.W)
    tk.Button(group, text='Update', highlightthickness=0, width=10,
        command=surface_transparency).grid(row=2, column=2, sticky=tk.SW,
        padx=2, pady=2)

    #----------Ambient Light Group----------------------
    group = tk.LabelFrame(glb.GUI.view['tab'], text='Ambient Light')
    group.grid(row=2, column=0, columnspan=3, padx=0, pady=0, sticky=tk.SW)
     #-----------------Ambient Light------------------------#
    tk.Label(group, text='Ambient Light').grid(row=0, column=0, padx=9, pady=0,
        sticky=tk.E)
    glb.GUI.view['asca'] = tk.Scale(group, width=8,
        troughcolor="#ffffff", length="65", orient="horizontal",
        resolution="0.01", to="2.0")
    glb.GUI.view['asca'].grid(row=0, column=1, padx=0, pady=0,
        sticky=tk.W)
    glb.GUI.view['asca'].set(.25)
    tk.Button(group, text='Update', command=ambient_update,
        width=10).grid(row=0, column=2, padx=0, pady=0, sticky=tk.SW)