First Commit

This commit is contained in:
Seb Shader 2021-11-04 01:03:22 -07:00
commit 9cecd0dd41
9 changed files with 1045 additions and 0 deletions

473
color-themes-plugin.tcl Normal file
View file

@ -0,0 +1,473 @@
namespace eval color-themes {
variable this_path
variable current_name
variable current_theme
variable hover_theme
variable selected_theme
variable num_themes
variable canvas_height
}
# found https://comp.lang.tcl.narkive.com/39ezTJaO/string-trimright-bug
proc ::color-themes::trimsubstringright {str substr} {
set l [expr {[string length $substr]-1}]
if {[string range $str end-$l end] == $substr} {
incr l
return [string range $str 0 end-$l]
} else {
return -code error "$str does not end in $substr"
}
}
proc ::color-themes::reset_defaults {} {
array set ::pd_colors {
selected "#00f"
selection_rectangle "#000"
txt_highlight ""
txt_highlight_front ""
msg_iolet "#000"
msg_iolet_border "#000"
signal_iolet "#000"
signal_iolet_border "#000"
obj_box_outline "#000"
obj_box_fill ""
obj_box_text "#000"
msg_box_outline "#000"
msg_box_fill ""
msg_box_text "#000"
atom_box_outline "#000"
atom_box_fill ""
atom_box_text "#000"
atom_box_label "#000"
msg_cord "#000"
signal_cord "#000"
obj_box_outline_broken "#000"
canvas_fill "#FFFFFF"
canvas_text_cursor ""
comment "#000"
graph_outline "#000"
graph_text "#000"
array_name "#000"
array_values "#000"
gop_box "#FF8080"
text_window_fill "#FFFFFF"
text_window_text "#000"
text_window_highlight ""
text_window_cursor "#000"
pdwindow_fill "#FFFFFF"
pdwindow_fatal_text "#D00"
pdwindow_fatal_highlight "#FFE0E8"
pdwindow_error_text "#D00"
pdwindow_post_text "#000"
pdwindow_debug_text "#484848"
helpbrowser_fill "#FFFFFF"
helpbrowser_text ""
helpbrowser_highlight ""
helpbrowser_hl_text ""
}
}
proc ::color-themes::set_theme {name} {
variable this_path
variable current_name
variable current_theme
# check for theme
if { ![file exists $this_path/themes/$name-plugin.tcl] } {
::pdwindow::error "no theme '$name-plugin.tcl'\n"
return
}
#store name
set current_name $name
#reset defaults
::color-themes::reset_defaults
#load theme
source $this_path/themes/${name}-plugin.tcl
# redraw everything
foreach wind [wm stackorder .] {
if {[winfo class $wind] eq "PatchWindow"} {
pdsend "$wind map 0"
pdsend "$wind map 1"
${wind}.c configure -background [::pdtk_canvas::get_color canvas_fill]
}
}
::pdwindow::set_colors
}
proc ::color-themes::make_default {} {
variable current_name
variable this_path
if {[catch {set fp [open $this_path/current-theme.txt w]}]} {
::pdwindow::error "couldn't open file for writing\n"
return
}
puts -nonewline $fp $current_name
close $fp
::pdwindow::post "saved $current_name as the theme\n"
}
proc ::color-themes::print {} {
variable this_path
::pdwindow::post "color themes in $this_path/themes:\n"
foreach theme [lsort [glob -path $this_path/themes/ *-plugin.tcl]] {
::pdwindow::post "[{::color-themes::trimsubstringright} [file tail $theme] -plugin.tcl]\n"
}
}
proc ::color-themes::motion {box} {
#::pdwindow::post "box: $box\n"
if {$box ne ${::color-themes::hover_theme}} {
if {${::color-themes::hover_theme} ne "" && \
${::color-themes::hover_theme} ne \
${::color-themes::selected_theme} } {
.colortheme_dialog.theme_list.c.f${::color-themes::hover_theme}.c \
itemconfigure box${::color-themes::hover_theme} -outline \
black -width 1
.colortheme_dialog.theme_list.c \
itemconfigure box${::color-themes::hover_theme} -outline \
black -width 1
}
if {$box ne ${::color-themes::selected_theme}} {
.colortheme_dialog.theme_list.c.f$box.c itemconfigure \
box$box -outline blue -width 7
.colortheme_dialog.theme_list.c itemconfigure \
box$box -outline blue -width 7
}
set {::color-themes::hover_theme} $box
}
}
proc ::color-themes::click {box} {
if {${::color-themes::hover_theme} eq ""} {return}
if {${::color-themes::selected_theme} ne "" && \
${::color-themes::selected_theme} ne ${::color-themes::hover_theme}} {
.colortheme_dialog.theme_list.c.f${::color-themes::selected_theme}.c \
itemconfigure box${::color-themes::selected_theme} -outline \
black -width 1
.colortheme_dialog.theme_list.c \
itemconfigure box${::color-themes::selected_theme} -outline \
black -width 1
}
set {::color-themes::selected_theme} ${::color-themes::hover_theme}
.colortheme_dialog.theme_list.c.f$box.c itemconfigure \
box${::color-themes::hover_theme} -outline \
green -width 7
.colortheme_dialog.theme_list.c itemconfigure \
box${::color-themes::hover_theme} -outline \
green -width 7
}
proc ::color-themes::apply {names} {
variable selected_theme
if {$selected_theme eq ""} {return}
{::color-themes::set_theme} [lindex $names $selected_theme]
}
proc ::color-themes::save_dark {names} {
variable this_path
variable selected_theme
if {$selected_theme eq ""} {return}
set name [lindex $names $selected_theme]
if {[catch {set fp [open $this_path/dark-theme.txt w]}]} {
::pdwindow::error "couldn't open file for writing\n"
return
}
puts -nonewline $fp $name
close $fp
::pdwindow::post "saved $name as the dark theme\n"
}
proc ::color-themes::delete_dark {} {
variable this_path
if {[catch [file delete $this_path/dark-theme.txt]]} {
::pdwindow::error "couldn't delete dark theme file\n"
return
}
::pdwindow::post "deleted dark-theme.txt\n"
}
proc ::color-themes::opendialog {} {
variable this_path
variable current_name
variable hover_theme
variable selected_theme
variable num_themes
variable canvas_height
set hover_theme ""
set selected_theme ""
# save current theme
array set temp_theme [array get ::pd_colors]
if {[winfo exists .colortheme_dialog]} {
wm deiconify .colortheme_dialog
raise .colortheme_dialog
focus .colortheme_dialog
return
} else {
toplevel .colortheme_dialog -class ColorThemeDialog
wm title .colortheme_dialog [_ "Color Themes"]
wm group .colortheme_dialog .
wm resizable .colortheme_dialog 0 1
wm transient .colortheme_dialog
wm minsize .colortheme_dialog 400 380
}
if {$::windowingsystem eq "aqua"} {
.colortheme_dialog configure -menu $::dialog_menubar
}
set themes [lsort [glob -path $this_path/themes/ *-plugin.tcl]]
frame .colortheme_dialog.theme_list
scrollbar .colortheme_dialog.theme_list.sy -command \
".colortheme_dialog.theme_list.c yview"
canvas .colortheme_dialog.theme_list.c -yscrollcommand \
".colortheme_dialog.theme_list.sy set" -width 400
grid .colortheme_dialog.theme_list -sticky nwes -row 0 -column 0 \
-padx 5 -pady 5 -columnspan 3
grid .colortheme_dialog.theme_list.c -sticky ns -row 0 -column 0
grid .colortheme_dialog.theme_list.sy -sticky ns -row 0 -column 1
grid columnconfigure .colortheme_dialog.theme_list 0 -weight 1
grid rowconfigure .colortheme_dialog.theme_list 0 -weight 1
grid rowconfigure .colortheme_dialog 0 -weight 1
set height 5
set fontinfo [list $::font_family -14 $::font_weight]
set mwidth [font measure $fontinfo M]
set mheight [expr {[font metrics $fontinfo -linespace] + 5}]
set boxheight [expr {$mheight * 3 + 18}]
set boxincr [expr {$boxheight + 5}]
set corner [expr {$mheight/4}]
set counter 0
set names ""
foreach i $themes {
source ${i}
set name [{::color-themes::trimsubstringright} [file tail ${i}] -plugin.tcl]
lappend names $name
# canvas for txt_highlight
frame .colortheme_dialog.theme_list.c.f$counter
.colortheme_dialog.theme_list.c create rectangle 0 $height 400 \
[expr {$height + $boxheight}] -outline black -width 1 -tags \
box$counter
.colortheme_dialog.theme_list.c create window 0 $height -window \
.colortheme_dialog.theme_list.c.f$counter -anchor nw -width \
400 -height $boxheight
canvas .colortheme_dialog.theme_list.c.f$counter.c -width 400 -height \
$boxheight -background $::pd_colors(canvas_fill) \
-highlightthickness 0
grid .colortheme_dialog.theme_list.c.f$counter.c
bind .colortheme_dialog.theme_list.c.f$counter.c <MouseWheel> {
.colortheme_dialog.theme_list.c yview scroll [expr {- (%D)}] units
}
bind .colortheme_dialog.theme_list.c.f$counter.c <Motion> \
[list {::color-themes::motion} $counter]
bind .colortheme_dialog.theme_list.c.f$counter.c <ButtonPress> \
[list {::color-themes::click} $counter]
.colortheme_dialog.theme_list.c.f$counter.c create rectangle 0 0 \
400 $boxheight -outline black -width 1 -tags box$counter
# name
set twidth [expr {$mwidth * [string length $name] + 4}]
.colortheme_dialog.theme_list.c.f$counter.c create rectangle 2 0 \
[expr {2 + $twidth}] [expr {$mheight}] -fill black
.colortheme_dialog.theme_list.c.f$counter.c create text 4 3 \
-text ${name} -anchor nw -font $fontinfo -fill white
# (signal) object box
set twidth [expr {$mwidth * 13 + 4}]
.colortheme_dialog.theme_list.c.f$counter.c create rectangle 5 \
[expr {$mheight + 4}] [expr {$twidth + 5}] \
[expr {$mheight*2 + 4}] -fill $::pd_colors(obj_box_fill) \
-outline $::pd_colors(obj_box_outline)
.colortheme_dialog.theme_list.c.f$counter.c create text 7 \
[expr {$mheight + 7}] -text signal_object -anchor nw \
-font $fontinfo -fill $::pd_colors(obj_box_text)
# signal outlet + cable
.colortheme_dialog.theme_list.c.f$counter.c create rectangle 5 \
[expr {$mheight*2 + 1}] 16 [expr {$mheight*2 + 4}] \
-fill $::pd_colors(signal_iolet) -outline \
$::pd_colors(signal_iolet_border)
.colortheme_dialog.theme_list.c.f$counter.c create line 11 \
[expr {$mheight*2 + 4}] 11 $boxheight \
-fill $::pd_colors(signal_cord) -width 3
# broken object
.colortheme_dialog.theme_list.c.f$counter.c create rectangle \
[expr {$twidth + 15}] \
[expr {$mheight + 5}] [expr {$twidth*2 + 15}] \
[expr {$mheight*2 + 5}] -fill $::pd_colors(obj_box_fill) \
-outline $::pd_colors(obj_box_outline_broken) -dash -
.colortheme_dialog.theme_list.c.f$counter.c create text [expr {$twidth + 17}] \
[expr {$mheight + 8}] -text broken_object -anchor nw \
-font $fontinfo -fill $::pd_colors(obj_box_text)
# message box
set twidth [expr {$mwidth * 11 + 4}]
set tempy [expr {$mheight*2 + 8}]
set tempx [expr {$twidth + 20}]
.colortheme_dialog.theme_list.c.f$counter.c create polygon 20 \
$tempy [expr {$tempx + $corner}] $tempy \
$tempx [expr {$tempy + $corner}] $tempx \
[expr {$tempy + $mheight - $corner}] \
[expr {$tempx + $corner}] [expr {$tempy + $mheight}] \
20 [expr {$tempy + $mheight}] -fill $::pd_colors(msg_box_fill) \
-outline $::pd_colors(msg_box_outline)
.colortheme_dialog.theme_list.c.f$counter.c create text 22 \
[expr {$mheight*2 + 11}] -text message_box -anchor nw \
-font $fontinfo -fill $::pd_colors(msg_box_text)
# message outlet + cable
set tempy [expr {$tempy + $mheight}]
.colortheme_dialog.theme_list.c.f$counter.c create rectangle 20 \
[expr {$tempy - 3}] 31 $tempy -fill $::pd_colors(msg_iolet) \
-outline $::pd_colors(msg_iolet_border)
.colortheme_dialog.theme_list.c.f$counter.c create line 26 \
$tempy 26 [expr {$boxheight + $height}] -fill \
$::pd_colors(msg_cord) -width 2
# atom box
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 15}] [expr {$mheight*2 + 14}] -text label \
-anchor nw -font $fontinfo -fill $::pd_colors(atom_box_label)
set twidth [expr {$mwidth * 5 + 4}]
set tempx [expr {$tempx + $twidth + 14}]
set tempy [expr {$mheight*2 + 12}]
.colortheme_dialog.theme_list.c.f$counter.c create polygon $tempx \
$tempy [expr {$tempx + $twidth - $corner}] $tempy \
[expr {$tempx + $twidth}] [expr {$tempy + $corner}] \
[expr {$tempx + $twidth}] [expr {$tempy + $mheight}] \
$tempx [expr {$tempy + $mheight}] -fill \
$::pd_colors(atom_box_fill) -outline $::pd_colors(atom_box_outline)
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 2}] [expr {$tempy + 3}] -text gatom -anchor nw \
-font $fontinfo -fill $::pd_colors(atom_box_text)
incr tempx [expr {$twidth + 15}]
set twidth [expr {$mwidth * 8 + 4}]
# selected box/text
.colortheme_dialog.theme_list.c.f$counter.c create rectangle \
$tempx $tempy [expr {$tempx + $twidth}] \
[expr {$tempy + $mheight}] -fill $::pd_colors(obj_box_fill) \
-outline $::pd_colors(selected)
# can't figure out how to do text_highlight after all
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 2}] [expr {$tempy + 3}] -text selected -anchor nw \
-font $fontinfo -fill $::pd_colors(selected)
# comment
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$mwidth * 26 + 31}] [expr {$mheight + 8}] -text comment \
-anchor nw -font $fontinfo -fill $::pd_colors(comment)
# array
incr tempx [expr {$twidth + 6}]
set tempy [expr {$mheight*3 + 12}]
set twidth [expr {$mwidth * 5 + 4}]
.colortheme_dialog.theme_list.c.f$counter.c create text \
$tempx 9 -text array \
-anchor nw -font $fontinfo -fill $::pd_colors(array_name)
.colortheme_dialog.theme_list.c.f$counter.c create rectangle \
$tempx [expr {$mheight + 5}] [expr {$tempx + $twidth}] \
$tempy -outline $::pd_colors(graph_outline)
set tempy [expr {2*$mheight + 9}]
.colortheme_dialog.theme_list.c.f$counter.c create line \
$tempx $tempy [expr {$tempx + $twidth}] \
$tempy -fill $::pd_colors(array_values) -width 2
# pd window/console
incr tempx [expr {$twidth + 5}]
.colortheme_dialog.theme_list.c.f$counter.c create rectangle \
$tempx 0 [expr {$tempx + $twidth}] \
$boxheight -fill $::pd_colors(pdwindow_fill)
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 2}] 3 -text debug \
-anchor nw -font $fontinfo -fill $::pd_colors(pdwindow_debug_text)
set tempy [expr {$mheight - 1}]
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 2}] $tempy -text post \
-anchor nw -font $fontinfo -fill $::pd_colors(pdwindow_post_text)
incr tempy [expr {$mheight - 4}]
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 2}] $tempy -text error \
-anchor nw -font $fontinfo -fill $::pd_colors(pdwindow_error_text)
incr tempy [expr {$mheight - 4}]
.colortheme_dialog.theme_list.c.f$counter.c create rectangle \
[expr {$tempx + 1}] $tempy [expr {$tempx + $twidth - 1}] \
[expr {$tempy + $mheight - 4}] -fill \
$::pd_colors(pdwindow_fatal_highlight) -outline \
$::pd_colors(pdwindow_fatal_highlight)
.colortheme_dialog.theme_list.c.f$counter.c create text \
[expr {$tempx + 2}] $tempy -text fatal \
-anchor nw -font $fontinfo -fill $::pd_colors(pdwindow_fatal_text)
incr height $boxincr
incr counter
::color-themes::reset_defaults
}
set canvas_height $height
set num_themes $counter
.colortheme_dialog.theme_list.c configure -scrollregion \
[list 0 0 400 $height]
button .colortheme_dialog.apply -text [_ "Apply"] \
-command [list {::color-themes::apply} $names]
button .colortheme_dialog.close -text [_ "Close"] \
-command "destroy .colortheme_dialog"
button .colortheme_dialog.save -text [_ "Save Current"] \
-command {::color-themes::make_default}
grid .colortheme_dialog.apply -row 1 -column 0
grid .colortheme_dialog.close -row 1 -column 1
grid .colortheme_dialog.save -row 1 -column 2
grid columnconfigure .colortheme_dialog 0 -weight 1 -uniform a
grid columnconfigure .colortheme_dialog 1 -weight 1 -uniform a
grid columnconfigure .colortheme_dialog 2 -weight 1 -uniform a
if {$::windowingsystem eq "aqua"} {
button .colortheme_dialog.dark -text [_ "Save as Dark Theme"] \
-command [list {::color-themes::save_dark} $names]
button .colortheme_dialog.undark -text [_ "Delete Dark Theme"] \
-command {::color-themes::delete_dark}
grid .colortheme_dialog.dark -row 2 -column 0 -pady 5
grid .colortheme_dialog.undark -row 2 -column 1 -pady 5
grid configure .colortheme_dialog.apply -pady 1
} else {
grid configure .colortheme_dialog.apply -pady 5
grid configure .colortheme_dialog.close -pady 5
grid configure .colortheme_dialog.save -pady 5
}
bind .colortheme_dialog.theme_list.c <MouseWheel> {
.colortheme_dialog.theme_list.c yview scroll [expr {- (%D)}] units
}
bind .colortheme_dialog.theme_list.c <Leave> {
if {${::color-themes::hover_theme} ne "" && \
${::color-themes::selected_theme} ne ${::color-themes::hover_theme}} {
.colortheme_dialog.theme_list.c.f${::color-themes::hover_theme}.c \
itemconfigure box${::color-themes::hover_theme} -outline \
black -width 1
.colortheme_dialog.theme_list.c \
itemconfigure box${::color-themes::hover_theme} -outline \
black -width 1
}
set {::color-themes::hover_theme} ""
}
array set ::pd_colors [array get temp_theme]
}
proc ::color-themes::init {mymenu} {
set ::color-themes::this_path $::current_plugin_loadpath
#::pdwindow::post "menu: $mymenu\n"
$mymenu add command -label [_ "Color Themes..."] \
-command {::color-themes::opendialog}
if {[catch {set darkmode [exec defaults read -g AppleInterfaceStyle]}]} {
set darkmode ""
}
if {$::windowingsystem eq "aqua" && $darkmode eq "Dark" && [file exists \
$::current_plugin_loadpath/dark-theme.txt] } {
if {![catch {set fp [open $::current_plugin_loadpath/dark-theme.txt r]}]} {
# not sure if the console is ready..
::color-themes::set_theme [read -nonewline $fp]
close $fp
}
return
}
if {[catch {set fp [open $::current_plugin_loadpath/current-theme.txt r]}]} {
return
}
::color-themes::set_theme [read -nonewline $fp]
close $fp
}
if {$::windowingsystem eq "aqua"} {
::color-themes::init .menubar.apple.preferences
} else {
::color-themes::init .menubar.file.preferences
}

View file

@ -0,0 +1,47 @@
# theme by 60hz on the pure data forum
# https://forum.puredata.info/topic/10943/a-little-pd-mod
array set ::pd_colors {
selected "orange"
selection_rectangle "orange"
txt_highlight "grey"
txt_highlight_front "orange"
msg_iolet "grey15"
signal_iolet "grey15"
msg_iolet_border "grey15"
signal_iolet_border "blue"
obj_box_outline "grey35"
obj_box_fill "grey35"
obj_box_text "grey80"
msg_box_outline "grey80"
msg_box_fill "grey80"
msg_box_text "#000"
atom_box_outline "grey35"
atom_box_fill "grey80"
atom_box_text "#000"
atom_box_label "#000"
msg_cord "grey35"
signal_cord "blue"
obj_box_outline_broken "blue"
canvas_fill "grey60"
comment "#000"
graph_outline "grey25"
graph_text "#000"
array_name "#000"
array_values "#000"
gop_box "#FF8080"
text_window_fill "grey25"
text_window_text "#FFFFFF"
text_window_highlight "orange"
text_window_cursor "#FFFFFF"
canvas_text_cursor "orange"
pdwindow_fill "grey25"
pdwindow_fatal_text "#D00"
pdwindow_fatal_highlight "#FFE0E8"
pdwindow_error_text "#D00"
pdwindow_post_text "#FFFFFF"
pdwindow_debug_text "#808080"
helpbrowser_fill "grey25"
helpbrowser_text "#FFFFFF"
helpbrowser_highlight ""
}

View file

@ -0,0 +1,100 @@
# canvas_fill - the canvas (patch background)
# gop_box - the GOP rectangle (when editing GOP patches)
# obj_box_text - text in an object box
# msg_box_text - text in a message box
# comment
# selected - selection
# obj_box_outline_broken - outline of "broken" object
# (that failed to create)
# obj_box_outline
# msg_box_outline
# msg_box_fill - fill of a message box
# obj_box_fill - " " object box
# signal_cord - signal cord and outline of signal inlets
# msg_cord - message cord and outline of message inlets
# msg_iolet - message inlet/outlet fill
# signal_iolet - signal inlet/outlet fill
# graph_outline - outline of arrays and GOP patches in the parent patch
# graph_text - color of the names of GOP patches in the parent patch
# selection_rectangle - selection rectangle color in edit mode
# txt_highlight - color text is highlighted
# (in the "background") when selected
# array_name - garray names
# array_values - array elements
# atom_box_fill - fill of gatoms (number box, symbol box)
# atom_box_text - text of gatoms
# atom_box_label - label of gatoms
# atom_box_outline - outline of gatoms
# text_window_fill - [text] window background
# text_window_text - [text] window text
# text_window_highlight - like txt_highlight but for [text] window
# text_window_cursor - [text] window cursor
# pdwindow_fill - background of post window
# pdwindow_fatal_text - text for fatal errors
# pdwindow_fatal_highlight - highlight (background) for fatal errors
# pdwindow_error_text - text for errors
# pdwindow_post_text - text for posting
# pdwindow_debug_text - text for verbose logs
# helpbrowser_fill
# helpbrowser_text
# helpbrowser_highlight - like txt_highlight but for help browser
array set ::pd_colors {
canvas_fill "magenta"
gop_box "black"
selected "yellow"
obj_box_outline_broken "light blue"
msg_box_fill "cyan"
obj_box_fill "lime green"
signal_cord "orange"
msg_cord "orange"
msg_iolet "pink"
signal_iolet "red"
signal_iolet_border "orange"
msg_iolet_border "orange"
graph_outline "blue"
selection_rectangle "light green"
txt_highlight "white"
graph_text "purple"
array_name "#0B8100"
array_values "purple"
atom_box_fill "cyan"
atom_box_outline "cyan"
text_window_fill "black"
text_window_text "magenta"
text_window_highlight "green"
text_window_cursor "green"
pdwindow_fill "#000"
pdwindow_fatal_text "#D00"
pdwindow_fatal_highlight "#FFE0E8"
pdwindow_error_text "#D00"
pdwindow_post_text "deep sky blue"
pdwindow_debug_text "green"
helpbrowser_fill "#000"
helpbrowser_highlight "red"
canvas_text_cursor "deep sky blue"
helpbrowser_hl_text "white"
helpbrowser_text "lime green"
}
#random colors for everything
#proc ::pdtk_canvas::get_color {type {window 0}} {
# return [format #%06x [expr {int(rand() * 0xFFFFFF)}]]
#}
# proc redraw_cords {name, blank, op} {
# foreach wind [wm stackorder .] {
# if {[winfo class $wind] eq "PatchWindow"} {
# set canv ${wind}.c
# foreach record [$canv find withtag cord] {
# set tag [lindex [$canv gettags $record] 0]
# set coords [lreplace [$canv coords $tag] 2 end-2]
# ::pdtk_canvas::pdtk_coords {*}$coords $tag $canv
# }
# }
# }
# }
#
# trace variable ::curve_cords w redraw_cords

View file

@ -0,0 +1,20 @@
array set ::pd_colors {
selected "#00f"
signal_iolet "#558"
signal_iolet_border "#558"
msg_iolet "#fff"
obj_box_outline "#ccc"
obj_box_fill "#f6f8f8"
msg_box_outline "#ccc"
msg_box_fill "#f8f8f6"
atom_box_outline "#ccc"
atom_box_fill "#eee"
msg_cord "#121"
signal_cord "#558"
obj_box_outline_broken "#f00"
canvas_fill "white"
}
set ::pd_colors(signal_iolet_border) $::pd_colors(signal_cord)
set ::pd_colors(msg_iolet_border) $::pd_colors(msg_cord)

View file

@ -0,0 +1,107 @@
# canvas_fill - the canvas (patch background)
# gop_box - the GOP rectangle (when editing GOP patches)
# obj_box_text - text in an object box
# msg_box_text - text in a message box
# comment
# selected - selection
# obj_box_outline_broken - outline of "broken" object
# (that failed to create)
# obj_box_outline
# msg_box_outline
# msg_box_fill - fill of a message box
# obj_box_fill - " " object box
# signal_cord - signal cord and outline of signal inlets
# msg_cord - message cord and outline of message inlets
# msg_iolet - message inlet/outlet fill
# signal_iolet - signal inlet/outlet fill
# graph_outline - outline of arrays and GOP patches in the parent patch
# graph_text - color of the names of GOP patches in the parent patch
# selection_rectangle - selection rectangle color in edit mode
# txt_highlight - color text is highlighted
# (in the "background") when selected
# array_name - garray names
# array_values - array elements
# atom_box_fill - fill of gatoms (number box, symbol box)
# atom_box_text - text of gatoms
# atom_box_label - label of gatoms
# atom_box_outline - outline of gatoms
# text_window_fill - [text] window background
# text_window_text - [text] window text
# text_window_highlight - like txt_highlight but for [text] window
# text_window_cursor - [text] window cursor
# pdwindow_fill - background of post window
# pdwindow_fatal_text - text for fatal errors
# pdwindow_fatal_highlight - highlight (background) for fatal errors
# pdwindow_error_text - text for errors
# pdwindow_post_text - text for posting
# pdwindow_debug_text - text for verbose logs
# helpbrowser_fill
# helpbrowser_text
# helpbrowser_highlight - like txt_highlight but for help browser
array set ::pd_colors {
canvas_fill "#FF8800"
gop_box "black"
obj_box_text "#00FF00"
msg_box_text "white"
comment "blue"
selected "yellow"
obj_box_outline_broken "light blue"
obj_box_outline "#0B8100"
msg_box_outline "purple"
msg_box_fill "purple"
obj_box_fill "#0B8100"
signal_cord "blue"
msg_cord "black"
msg_iolet "white"
signal_iolet "blue"
graph_outline "blue"
selection_rectangle "light green"
txt_highlight "black"
graph_text "purple"
array_name "#0B8100"
array_values "purple"
atom_box_fill "black"
atom_box_text "cyan"
atom_box_label "black"
atom_box_outline "cyan"
text_window_fill "black"
text_window_text "white"
text_window_highlight "green"
text_window_cursor "green"
pdwindow_fill "#000"
pdwindow_fatal_text "#D00"
pdwindow_fatal_highlight "#FFE0E8"
pdwindow_error_text "#D00"
pdwindow_post_text "deep sky blue"
pdwindow_debug_text "green"
helpbrowser_fill "#000"
helpbrowser_text "deep sky blue"
helpbrowser_highlight "red"
canvas_text_cursor "deep sky blue"
helpbrowser_hl_text "white"
}
set ::pd_colors(txt_highlight_front) "$::pd_colors(selected)"
set ::pd_colors(msg_iolet_border) "blue"
set ::pd_colors(signal_iolet_border) $::pd_colors(signal_cord)
#random colors for everything
#proc ::pdtk_canvas::get_color {type {window 0}} {
# return [format #%06x [expr {int(rand() * 0xFFFFFF)}]]
#}
# proc redraw_cords {name, blank, op} {
# foreach wind [wm stackorder .] {
# if {[winfo class $wind] eq "PatchWindow"} {
# set canv ${wind}.c
# foreach record [$canv find withtag cord] {
# set tag [lindex [$canv gettags $record] 0]
# set coords [lreplace [$canv coords $tag] 2 end-2]
# ::pdtk_canvas::pdtk_coords {*}$coords $tag $canv
# }
# }
# }
# }
#
# trace variable ::curve_cords w redraw_cords

View file

@ -0,0 +1,99 @@
# theme from https://github.com/Eric-Lennartson/pd-themes
# canvas_fill - the canvas (patch background)
# canvas_text_cursor - text insertion cursor for all canvas objects
# gop_box - the GOP rectangle (when editing GOP patches)
# obj_box_text - text in an object box
# msg_box_text - text in a message box
# comment
# selected - selection
# obj_box_outline_broken - outline of "broken" object
# (that failed to create)
# obj_box_outline
# msg_box_outline
# msg_box_fill - fill of a message box
# obj_box_fill - " " object box
# signal_cord - signal cord and outline of signal inlets
# msg_cord - message cord and outline of message inlets
# msg_iolet - message inlet/outlet fill
# signal_iolet - signal inlet/outlet fill
# graph_outline - outline of arrays and GOP patches in the parent patch
# graph_text - color of the names of GOP patches in the parent patch
# selection_rectangle - selection rectangle color in edit mode
# txt_highlight - color text is highlighted (in the "background") when selected
# array_name - garray names
# array_values - array elements
# atom_box_fill - fill of gatoms (number box, symbol box)
# atom_box_text - text of gatoms
# atom_box_label - label of gatoms
# atom_box_outline - outline of gatoms
# text_window_fill - [text] window background
# text_window_text - [text] window text
# text_window_highlight - like txt_highlight but for [text] window
# text_window_cursor - [text] window cursor
# pdwindow_fill - background of post window
# pdwindow_fatal_text - text for fatal errors
# pdwindow_fatal_highlight - highlight (background) for fatal errors
# pdwindow_error_text - text for errors
# pdwindow_post_text - text for posting
# pdwindow_debug_text - text for verbose logs
# helpbrowser_fill
# helpbrowser_text
# helpbrowser_highlight - like txt_highlight but for help browser
# gruvbox
array set ::pd_colors {
gop_box "#b85651"
canvas_fill "#32302f"
pdwindow_fill "#32302f"
helpbrowser_fill "#32302f"
text_window_fill "#32302f"
obj_box_text "#a9b665"
msg_box_text "#a9b665"
atom_box_text "#a9b665"
pdwindow_post_text "#c5b18d"
atom_box_label "#c5b18d"
helpbrowser_text "#c5b18d"
text_window_text "#c5b18d"
comment "#928374"
obj_box_outline "#5a524c"
msg_box_outline "#5a524c"
atom_box_outline "#5a524c"
msg_box_fill "#5a524c"
obj_box_fill "#5a524c"
atom_box_fill "#5a524c"
signal_cord "#c18f41"
signal_iolet "#c18f41"
signal_iolet_border "#c18f41"
msg_cord "#a89984"
msg_iolet "#a89984"
msg_iolet_border "#a89984"
graph_outline "#5a524c"
graph_text "#a9b665"
array_name "#a9b665"
array_values "#d3869b"
obj_box_outline_broken "#ea6962"
pdwindow_fatal_text "#ea6962"
pdwindow_fatal_highlight "#32302f"
pdwindow_error_text "#ea6962"
pdwindow_debug_text "#8f9a52"
selected "#7daea3"
selection_rectangle "#7daea3"
helpbrowser_highlight "#7c6f64"
txt_highlight_front "#7daea3"
text_window_highlight "#7c6f64"
txt_highlight "#7c6f64"
text_window_cursor "#FFFFFF"
canvas_text_cursor "#FFFFFF"
cursor "#FFFFFF"
scrollbox_fill "#45403d"
text "#ddc7a1"
}

98
themes/theme-monokai-plugin.tcl Executable file
View file

@ -0,0 +1,98 @@
# theme from https://github.com/Eric-Lennartson/pd-themes
# canvas_fill - the canvas (patch background)
# canvas_text_cursor - text insertion cursor for all canvas objects
# gop_box - the GOP rectangle (when editing GOP patches)
# obj_box_text - text in an object box
# msg_box_text - text in a message box
# comment
# selected - selection
# obj_box_outline_broken - outline of "broken" object
# (that failed to create)
# obj_box_outline
# msg_box_outline
# msg_box_fill - fill of a message box
# obj_box_fill - " " object box
# signal_cord - signal cord and outline of signal inlets
# msg_cord - message cord and outline of message inlets
# msg_iolet - message inlet/outlet fill
# signal_iolet - signal inlet/outlet fill
# graph_outline - outline of arrays and GOP patches in the parent patch
# graph_text - color of the names of GOP patches in the parent patch
# selection_rectangle - selection rectangle color in edit mode
# txt_highlight - color text is highlighted (in the "background") when selected
# array_name - garray names
# array_values - array elements
# atom_box_fill - fill of gatoms (number box, symbol box)
# atom_box_text - text of gatoms
# atom_box_label - label of gatoms
# atom_box_outline - outline of gatoms
# text_window_fill - [text] window background
# text_window_text - [text] window text
# text_window_highlight - like txt_highlight but for [text] window
# text_window_cursor - [text] window cursor
# pdwindow_fill - background of post window
# pdwindow_fatal_text - text for fatal errors
# pdwindow_fatal_highlight - highlight (background) for fatal errors
# pdwindow_error_text - text for errors
# pdwindow_post_text - text for posting
# pdwindow_debug_text - text for verbose logs
# helpbrowser_fill
# helpbrowser_text
# helpbrowser_highlight - like txt_highlight but for help browser
# monokai
array set ::pd_colors {
gop_box "#D8447A"
canvas_fill "#272822"
pdwindow_fill "#272822"
scrollbox_fill "#272822"
helpbrowser_fill "#272822"
text_window_fill "#272822"
obj_box_text "#A1D044"
msg_box_text "#D6CC78"
atom_box_text "#AE81FF"
atom_box_label "#88846f"
pdwindow_post_text "#CFCFCF"
helpbrowser_text "#CFCFCF"
text_window_text "#CFCFCF"
text "#CFCFCF"
comment "#88846f"
obj_box_outline "#403f34"
msg_box_outline "#403f34"
atom_box_outline "#403f34"
msg_box_fill "#403f34"
obj_box_fill "#403f34"
atom_box_fill "#403f34"
signal_cord "#D99A53"
signal_iolet "#D99A53"
signal_iolet_border "#D99A53"
msg_cord "#A3A28F"
msg_iolet "#A3A28F"
msg_iolet_border "#A3A28F"
graph_outline "#403f34"
graph_text "#88846f"
array_name "#AE81FF"
array_values "#AE81FF"
obj_box_outline_broken "#DC5E5E"
pdwindow_fatal_text "#DC5E5E"
pdwindow_error_text "#DC5E5E"
pdwindow_fatal_highlight "#272822"
pdwindow_debug_text "#A1D044"
selected "#90BFC9"
selection_rectangle "#90BFC9"
helpbrowser_highlight "#716F5B"
txt_highlight_front "#060901"
text_window_highlight "#90BFC9"
txt_highlight "#716F5B"
text_window_cursor "#FFFFFF"
canvas_text_cursor "#FFFFFF"
cursor "#FFFFFF"
}

100
themes/theme-softpaper-plugin.tcl Executable file
View file

@ -0,0 +1,100 @@
# theme from https://github.com/Eric-Lennartson/pd-themes
# canvas_fill - the canvas (patch background)
# canvas_text_cursor - text insertion cursor for all canvas objects
# gop_box - the GOP rectangle (when editing GOP patches)
# obj_box_text - text in an object box
# msg_box_text - text in a message box
# comment
# selected - selection
# obj_box_outline_broken - outline of "broken" object
# (that failed to create)
# obj_box_outline
# msg_box_outline
# msg_box_fill - fill of a message box
# obj_box_fill - " " object box
# signal_cord - signal cord and outline of signal inlets
# msg_cord - message cord and outline of message inlets
# msg_iolet - message inlet/outlet fill
# signal_iolet - signal inlet/outlet fill
# graph_outline - outline of arrays and GOP patches in the parent patch
# graph_text - color of the names of GOP patches in the parent patch
# selection_rectangle - selection rectangle color in edit mode
# txt_highlight - color text is highlighted (in the "background") when selected
# array_name - garray names
# array_values - array elements
# atom_box_fill - fill of gatoms (number box, symbol box)
# atom_box_text - text of gatoms
# atom_box_label - label of gatoms
# atom_box_outline - outline of gatoms
# text_window_fill - [text] window background
# text_window_text - [text] window text
# text_window_highlight - like txt_highlight but for [text] window
# text_window_cursor - [text] window cursor
# pdwindow_fill - background of post window
# pdwindow_fatal_text - text for fatal errors
# pdwindow_fatal_highlight - highlight (background) for fatal errors
# pdwindow_error_text - text for errors
# pdwindow_post_text - text for posting
# pdwindow_debug_text - text for verbose logs
# helpbrowser_fill
# helpbrowser_text
# helpbrowser_highlight - like txt_highlight but for help browser
# softpaper
array set ::pd_colors {
gop_box "#AB6526"
atom_box_label "#939e53"
comment "#AAAAAA"
obj_box_outline "#DCD6C5"
msg_box_outline "#DCD6C5"
atom_box_outline "#DCD6C5"
msg_box_fill "#DCD6C5"
obj_box_fill "#DCD6C5"
atom_box_fill "#DCD6C5"
obj_box_text "#5F5F5E"
msg_box_text "#5F5F5E"
atom_box_text "#5F5F5E"
pdwindow_post_text "#5F5F5E"
helpbrowser_text "#5F5F5E"
text_window_text "#5F5F5E"
signal_cord "#869438"
signal_iolet "#869438"
signal_iolet_border "#869438"
msg_cord "#AAAAAA"
msg_iolet "#AAAAAA"
msg_iolet_border "#AAAAAA"
graph_outline "#5F5F5E"
graph_text "#5F5F5E"
array_name "#5F5F5E"
array_values "#9C5FBF"
canvas_fill "#F3F1EB"
pdwindow_fill "#F3F1EB"
text_window_fill "#F3F1EB"
helpbrowser_fill "#F3F1EB"
obj_box_outline_broken "#FF4747"
pdwindow_fatal_text "#FF4747"
pdwindow_error_text "#FF4747"
pdwindow_fatal_highlight "#F3F1EB"
pdwindow_debug_text "#205988"
helpbrowser_highlight "#c2baa1"
selection_rectangle "#9C5FBF"
selected "#AE7CCB"
txt_highlight_front "#AE7CCB"
text_window_highlight "#AAAAAA"
txt_highlight "#AAAAAA"
text_window_cursor "#2B2B2B"
canvas_text_cursor "#2B2B2B"
cursor "#2B2B2B"
scrollbox_fill "#DCD6C5"
text "#5F5F5E"
}

View file

@ -0,0 +1 @@
# just let the default colors get and set