Skip to content
Snippets Groups Projects
dialog_gui.tcl 14.9 KiB
Newer Older
package provide dialog_gui 0.1
package require dialog_prefs
package require pd_guiprefs

namespace import ::pd_guiprefs::write_guipreset

namespace eval ::dialog_gui:: {
    namespace export create_gui_dialog
}

####################### gui dialog ##################3

proc ::dialog_gui::apply {mytoplevel} {
    # nothing to do
}

proc ::dialog_gui::cancel {mytoplevel} {
#    pdsend "$mytoplevel cancel"
}

proc ::dialog_gui::ok {mytoplevel} {
    ::dialog_gui::apply $mytoplevel
    ::dialog_gui::cancel $mytoplevel
}

proc ::dialog_gui::setswatch {b swatch} {
    $b configure -image $swatch
}

# this is triggered whenever the ::gui_preset
# variable is written to
proc ::dialog_gui::set_gui_preset {args} {
    set choice $::gui_preset
    ::pd_guiprefs::write_guipreset
    switch $choice {
        Vanilla {
            set ::pd_colors(atom_box)        white
            set ::pd_colors(atom_box_border) black
            set ::pd_colors(canvas_color)    white
            set ::pd_colors(canvas_cursor)   black
            set ::pd_colors(text)            black
            set ::pd_colors(text_in_console) black
            set ::pd_colors(box)             white
            set ::pd_colors(box_border)      black
            set ::pd_colors(msg)             white
            set ::pd_colors(msg_border)      black
            set ::pd_colors(iemgui_border)   black
            set ::pd_colors(control_cord)    black
            set ::pd_colors(control_nlet)    white
            set ::pd_colors(iemgui_nlet)     black
            set ::pd_colors(signal_cord)     black
            set ::pd_colors(signal_nlet)     $::pd_colors(signal_cord)
            set ::pd_colors(control_nlet)    white
            set ::pd_colors(xlet_hover)      grey
            set ::pd_colors(link)            blue
            set ::pd_colors(selection)       blue
            set ::pd_colors(selection_rectangle) black
            set ::pd_colors(highlighted_text) black
            set ::pd_colors(highlighted_text_bg) #c3c3c3
            set ::pd_colors(dash_outline)    "#f00"
            set ::pd_colors(dash_fill)       white
            set ::pd_colors(graph_border)    black
            set ::pd_colors(graph)           white
            set ::pd_colors(magic_glass_bg)  black
            set ::pd_colors(magic_glass_bd)  black
            set ::pd_colors(magic_glass_text) "#ffffff"
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
        Inverted {
            set ::pd_colors(atom_box)        black
            set ::pd_colors(atom_box_border) white
            set ::pd_colors(canvas_color)    black
            set ::pd_colors(canvas_cursor)   white
            set ::pd_colors(text)            white
            set ::pd_colors(text_in_console) white
            set ::pd_colors(box)             black
            set ::pd_colors(box_border)      white
            set ::pd_colors(msg)             black
            set ::pd_colors(msg_border)      white
            set ::pd_colors(iemgui_border)   white
            set ::pd_colors(control_cord)    white
            set ::pd_colors(control_nlet)    white
            set ::pd_colors(iemgui_nlet)     white
            set ::pd_colors(signal_cord)     white
            set ::pd_colors(signal_nlet)     $::pd_colors(signal_cord)
            set ::pd_colors(control_nlet)    white
            set ::pd_colors(xlet_hover)      grey
            set ::pd_colors(link)            yellow
            set ::pd_colors(selection)       yellow
            set ::pd_colors(selection_rectangle) white
            set ::pd_colors(highlighted_text) white
            set ::pd_colors(highlighted_text_bg) #3c3c3c
            set ::pd_colors(dash_outline)    "#f00"
            set ::pd_colors(dash_fill)       black
            set ::pd_colors(graph_border)    white
            set ::pd_colors(graph)           gray
            set ::pd_colors(magic_glass_bg)  white
            set ::pd_colors(magic_glass_bd)  white
            set ::pd_colors(magic_glass_text) "#000000"
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
            set ::pd_colors(atom_box)        "#eee"
            set ::pd_colors(atom_box_border) "#ccc"
            set ::pd_colors(canvas_color)     white
            set ::pd_colors(canvas_cursor)    black
            set ::pd_colors(text)             black
            set ::pd_colors(text_in_console)  grey40
            set ::pd_colors(box)              "#f6f8f8"
            set ::pd_colors(box_border)       "#ccc"
            set ::pd_colors(msg)              #f8f8f6
            set ::pd_colors(msg_border)       "#ccc"
            set ::pd_colors(iemgui_border)    "#000000"
            set ::pd_colors(iemgui_nlet)      "#000000"
            set ::pd_colors(control_cord)     "#565"
            set ::pd_colors(control_nlet)     white
            set ::pd_colors(signal_cord)      #808095
            set ::pd_colors(signal_nlet)      $::pd_colors(signal_cord)
            set ::pd_colors(xlet_hover)       grey
            set ::pd_colors(selection)        #e87216
            set ::pd_colors(selection_rectangle) #e87216
            set ::pd_colors(highlighted_text) black
            set ::pd_colors(highlighted_text_bg) #c3c3c3
            set ::pd_colors(dash_outline)     "#f00"
            set ::pd_colors(dash_fill)        "#ffdddd"
            set ::pd_colors(graph_border)     "#777"
            set ::pd_colors(graph)            white
            set ::pd_colors(magic_glass_bg)    black
            set ::pd_colors(magic_glass_bd)    black
            set ::pd_colors(magic_glass_text)  white
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
            set ::pd_colors(atom_box)       black
            set ::pd_colors(atom_box_border) white
            set ::pd_colors(canvas_color)     black
            set ::pd_colors(canvas_cursor) white
            set ::pd_colors(text)          white
            set ::pd_colors(text_in_console) #999999
            set ::pd_colors(box)           #090707
            set ::pd_colors(box_border)    #3e3e3e
            set ::pd_colors(msg)       #090707
            set ::pd_colors(msg_border) #3e3e3e
            set ::pd_colors(iemgui_border) white
            set ::pd_colors(iemgui_nlet) white
            set ::pd_colors(control_cord)  white
            set ::pd_colors(control_nlet)  #a294a2
            set ::pd_colors(signal_cord)   #7d7d68
            set ::pd_colors(signal_nlet)   $::pd_colors(signal_cord)
            set ::pd_colors(xlet_hover)    white
            set ::pd_colors(link)          blue
            set ::pd_colors(selection)      #ffff00
            set ::pd_colors(selection_rectangle) white
            set ::pd_colors(highlighted_text) white
            set ::pd_colors(highlighted_text_bg) #3c3c3c
            set ::pd_colors(dash_outline)  "#f00"
            set ::pd_colors(dash_fill)     "#002222"
            set ::pd_colors(graph_border)  "#777"
            set ::pd_colors(graph)         gray
            set ::pd_colors(magic_glass_bg) black
            set ::pd_colors(magic_glass_bd) black
            set ::pd_colors(magic_glass_text) white
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
        Extended    {
            set ::pd_colors(atom_box)       #e0e0e0
            set ::pd_colors(atom_box_border) #c1c1c1
            set ::pd_colors(canvas_color)     white
            set ::pd_colors(canvas_cursor) black
            set ::pd_colors(text)          black
            set ::pd_colors(text_in_console) black
            set ::pd_colors(box)           #f6f8f8
            set ::pd_colors(box_border)    #c1c1c1
            set ::pd_colors(msg)       #f6f8f8
            set ::pd_colors(msg_border) #c1c1c1
            set ::pd_colors(iemgui_border) black
            set ::pd_colors(iemgui_nlet) black
            set ::pd_colors(control_cord)  black
            set ::pd_colors(control_nlet)  white
            set ::pd_colors(signal_cord)   #828297
            set ::pd_colors(signal_nlet)   $::pd_colors(signal_cord)
            set ::pd_colors(control_nlet)         #536253
            set ::pd_colors(xlet_hover)    grey
            set ::pd_colors(link)          blue
            set ::pd_colors(selection)      blue
            set ::pd_colors(selection_rectangle) black
            set ::pd_colors(highlighted_text) black
            set ::pd_colors(highlighted_text_bg) #c3c3c3
            set ::pd_colors(dash_outline)  "#f00"
            set ::pd_colors(dash_fill)     "#f7f7f7"
            set ::pd_colors(graph_border)  "#777"
            set ::pd_colors(graph)         white
            set ::pd_colors(magic_glass_bg) black
            set ::pd_colors(magic_glass_bd) black
            set ::pd_colors(magic_glass_text) white
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
        C64   {
            set ::pd_colors(atom_box)       #3e32a2
            set ::pd_colors(atom_box_border) #7569d7
            set ::pd_colors(canvas_color)     #3e32a2
            set ::pd_colors(canvas_cursor) white
            set ::pd_colors(text)          #a49aea
            set ::pd_colors(text_in_console) #a49aea
            set ::pd_colors(box)           #3e32a2
            set ::pd_colors(box_border)    #7569d7
            set ::pd_colors(msg)       #3e32a2
            set ::pd_colors(msg_border) #7569d7
            set ::pd_colors(iemgui_border) #7569d7
            set ::pd_colors(iemgui_nlet) #7569d7
            set ::pd_colors(control_cord)  #7569d7
            set ::pd_colors(control_nlet)  white
            set ::pd_colors(signal_cord)   #7569d7
            set ::pd_colors(signal_nlet)   $::pd_colors(signal_cord)
            set ::pd_colors(control_nlet)         #7c71da
            set ::pd_colors(xlet_hover)    grey
            set ::pd_colors(link)          #e87216
            set ::pd_colors(selection)      #cc9933
            set ::pd_colors(selection_rectangle) #7c71da
            set ::pd_colors(highlighted_text) #3e32a2
            set ::pd_colors(highlighted_text_bg) #a49aea
            set ::pd_colors(dash_outline)  "#ff9933"
            set ::pd_colors(dash_fill)     "#3e32a2"
            set ::pd_colors(graph_border)  "#777"
            set ::pd_colors(graph)         "#3e32a2"
            set ::pd_colors(magic_glass_bg) black
            set ::pd_colors(magic_glass_bd) black
            set ::pd_colors(magic_glass_text) white
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
        Strongbad {
            set ::pd_colors(atom_box)       black
            set ::pd_colors(atom_box_border) #0b560b
            set ::pd_colors(canvas_color)     black
            set ::pd_colors(canvas_cursor) white
            set ::pd_colors(text)          #4bd046
            set ::pd_colors(text_in_console) #4bd046
            set ::pd_colors(box)           black
            set ::pd_colors(box_border)    #0b560b
            set ::pd_colors(msg)       black
            set ::pd_colors(msg_border) #0b560b
            set ::pd_colors(iemgui_border) #0b560b
            set ::pd_colors(iemgui_nlet) #0b560b
            set ::pd_colors(control_cord)  #53b83b
            set ::pd_colors(control_nlet)  #53b83b
            set ::pd_colors(signal_cord)   #53b83b
            set ::pd_colors(signal_nlet)   $::pd_colors(signal_cord)
            set ::pd_colors(xlet_hover)    white
            set ::pd_colors(link)          blue
            set ::pd_colors(selection)      green
            set ::pd_colors(selection_rectangle) #53b83b
            set ::pd_colors(highlighted_text) black
            set ::pd_colors(highlighted_text_bg) #4bd046 
            set ::pd_colors(dash_outline)  "#f00"
            set ::pd_colors(dash_fill)     "#f7f7f7"
            set ::pd_colors(graph_border)  "#777"
            set ::pd_colors(graph)         "#53b83b"
            set ::pd_colors(magic_glass_bg) black
            set ::pd_colors(magic_glass_bd) black
            set ::pd_colors(magic_glass_text) white
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
        Subdued {
            set ::pd_colors(atom_box)       #9fc79f
            set ::pd_colors(atom_box_border) #b1d3b1
            set ::pd_colors(canvas_color)     #c0dcc0
            set ::pd_colors(canvas_cursor) black
            set ::pd_colors(text)          black
            set ::pd_colors(text_in_console) black
            set ::pd_colors(box)           #c0dcc0
            set ::pd_colors(box_border)    #666666
            set ::pd_colors(msg)       #c0dcc0
            set ::pd_colors(msg_border) #666666
            set ::pd_colors(iemgui_border) #666666
            set ::pd_colors(iemgui_nlet) #666666
            set ::pd_colors(control_cord)  #333333
            set ::pd_colors(control_nlet)         #333333
            set ::pd_colors(signal_cord)   #666666
            set ::pd_colors(signal_nlet)   $::pd_colors(signal_cord)
            set ::pd_colors(xlet_hover)    white
            set ::pd_colors(link)          blue
            set ::pd_colors(selection)      blue
            set ::pd_colors(selection_rectangle) #333333
            set ::pd_colors(highlighted_text) black 
            set ::pd_colors(highlighted_text_bg) #c3c3c3
            set ::pd_colors(dash_outline)  "#f00"
            set ::pd_colors(dash_fill)     "#f7f7f7"
            set ::pd_colors(graph_border)  "#777"
            set ::pd_colors(graph)         "#9fc79f"
            set ::pd_colors(magic_glass_bg) black
            set ::pd_colors(magic_glass_bd) black
            set ::pd_colors(magic_glass_text) white
            set ::pd_colors(magic_glass_flash) "#e87216"
        }
        Custom {
            # empty one if we have any custom settings
        }
    }
}

proc ::dialog_gui::create_gui_dialog {mytoplevel} {
    if [winfo exists $mytoplevel.colors] then return
    set fr [ttk::frame $mytoplevel.colors]
    set p [ttk::frame $fr.presets]
    ttk::label $p.presetlabel -text "Color Preset"
#    ttk::combobox $fr.presets -state readonly -values {Inverted L2Ork Foo}
# todo: set presets in _one_ place
    ::dialog_prefs::dropdown $p.presets ::gui_preset {Vanilla Inverted L2Ork L2Ork_Inverted Extended C64 Strongbad Subdued Custom}
    pack $fr -side top
    grid $p -column 0 -columnspan 3 -row 0 -sticky w -pady 21
    pack $p.presetlabel -side left -padx 7
    pack $p.presets -side left
    set clen [expr {[llength [array names ::pd_colors]] / 2}]
    set i 0
    foreach name [lsort [array names ::pd_colors]] {
        # hack to exclude widths
        if {[regexp {.*width} $name]} {continue}
        set label [string map {_ " "} $name]
        set label [string toupper $label 0 0]
        ::dialog_prefs::swatchbutton $fr.$name ::pd_colors($name)
        ::dialog_prefs::set_swatchbutton $fr.$name \
            ::pd_colors($name)
        ttk::label $fr.${name}label -text "$label"
        grid $fr.${name} -column [expr $i/$clen * 2] -row [expr $i%$clen+1] -sticky e
        grid $fr.${name}label -column [expr $i/$clen * 2 + 1] -row [expr $i%$clen+1] -sticky w -padx 7 -pady 3
        incr i
    }
}