1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
package provide dialog_preferences 0.1
package require pd_guiprefs
package require pd_i18n
package require preferencewindow
namespace eval ::dialog_preferences:: {
}
set ::dialog_preferences::use_ttknotebook {}
after idle ::dialog_preferences::read
# allow updating the audio resp MIDI frame if the backend changes
set ::dialog_preferences::audio_frame {}
set ::dialog_preferences::midi_frame {}
proc ::dialog_preferences::cancel {mytoplevel} {
set ::dialog_preferences::audio_frame {}
set ::dialog_preferences::midi_frame {}
destroy $mytoplevel
}
proc ::dialog_preferences::do_apply {mytoplevel} {
::pd_guiprefs::write "gui_language" $::pd_i18n::language
::pd_guiprefs::write "use_ttknotebook" $::dialog_preferences::use_ttknotebook
::pd_guiprefs::write "cords_to_foreground" $::pdtk_canvas::enable_cords_to_foreground
pdsend "pd zoom-open $::sys_zoom_open"
}
proc ::dialog_preferences::apply {mytoplevel} {
::preferencewindow::apply $mytoplevel
}
proc ::dialog_preferences::ok {mytoplevel} {
::preferencewindow::ok $mytoplevel
}
proc ::dialog_preferences::read {} {
set x [::pd_guiprefs::read cords_to_foreground]
if {[catch { if { $x } { set x 1 } else { set x 0 } }]} {
set x 0
}
set ::pdtk_canvas::enable_cords_to_foreground $x
::dialog_preferences::read_usettknotebook
}
proc ::dialog_preferences::read_usettknotebook {} {
set ::dialog_preferences::use_ttknotebook [::pd_guiprefs::read use_ttknotebook]
}
proc ::dialog_preferences::write_usettknotebook {} {
::pd_guiprefs::write "use_ttknotebook" $::dialog_preferences::use_ttknotebook
}
proc ::dialog_preferences::tab_changed {mytoplevel} {
set tab [::preferencewindow::selected $mytoplevel]
::pd_guiprefs::write preferences_tab $tab
}
proc ::dialog_preferences::fill_frame {prefs} {
# patch-window settings
labelframe $prefs.extraframe -text [_ "Patch Windows" ] -padx 5 -pady 5 -borderwidth 1
checkbutton $prefs.extraframe.zoom -text [_ "Zoom New Windows"] \
-variable ::sys_zoom_open -anchor w
pack $prefs.extraframe.zoom -side left -expand 1
pack $prefs.extraframe -side top -anchor n -fill x
labelframe $prefs.guiframe -text [_ "GUI Settings" ] -padx 5 -pady 5 -borderwidth 1
pack $prefs.guiframe -side top -anchor n -fill x
labelframe $prefs.guiframe.prefsnavi -padx 5 -pady 5 -borderwidth 0 \
-text [_ "Preference layout (reopen the preferences to see the effect)" ]
pack $prefs.guiframe.prefsnavi -side top -anchor w -expand 1
radiobutton $prefs.guiframe.prefsnavi.tab \
-text [_ "Use tabs" ] \
-value 1 -variable ::dialog_preferences::use_ttknotebook
radiobutton $prefs.guiframe.prefsnavi.scroll \
-text [_ "Single page" ] \
-value 0 -variable ::dialog_preferences::use_ttknotebook
pack $prefs.guiframe.prefsnavi.tab -side left -anchor w
pack $prefs.guiframe.prefsnavi.scroll -side left -anchor w
labelframe $prefs.guiframe.patching -padx 5 -pady 5 -borderwidth 0 \
-text [_ "Patching helpers" ]
pack $prefs.guiframe.patching -side top -anchor w -expand 1
checkbutton $prefs.guiframe.patching.highlight_connections -text [_ "Highlight active cord while connecting"] \
-variable ::pdtk_canvas::enable_cords_to_foreground -anchor w
pack $prefs.guiframe.patching.highlight_connections -side left -anchor w
}
proc ::dialog_preferences::create_dialog {{mytoplevel .gui_preferences}} {
destroy $mytoplevel
destroy .audio_preferences
destroy .midi_preferences
::preferencewindow::create $mytoplevel [_ "Preferences" ]
#wm title $mytoplevel "GUI preferences"
#wm group $mytoplevel .
#wm withdraw $mytoplevel
#::pd_bindings::dialog_bindings $mytoplevel "guiprefs"
# path options
set prefs [::preferencewindow::add_frame $mytoplevel [_ "path preferences"]]
::dialog_path::fill_frame $prefs
::preferencewindow::add_apply ${mytoplevel} "::scrollboxwindow::apply ${prefs} ::dialog_path::commit"
# startup options
set prefs [::preferencewindow::add_frame $mytoplevel [_ "startup preferences"]]
::dialog_startup::fill_frame $prefs
::preferencewindow::add_apply ${mytoplevel} "::scrollboxwindow::apply ${prefs} ::dialog_startup::commit"
# audio options
set prefs [::preferencewindow::add_frame $mytoplevel [_ "audio preferences"]]
::dialog_audio::fill_frame $prefs
set ::dialog_preferences::audio_frame $prefs
::preferencewindow::add_apply ${mytoplevel} "::dialog_audio::apply ${prefs}"
# midi options
set prefs [::preferencewindow::add_frame $mytoplevel [_ "MIDI preferences"]]
::dialog_midi::fill_frame $prefs
set ::dialog_preferences::midi_frame $prefs
::preferencewindow::add_apply ${mytoplevel} "::dialog_midi::apply ${prefs}"
# deken options
if {[uplevel 1 info procs ::deken::preferences::fill_frame] ne ""} {
set prefs [::preferencewindow::add_frame $mytoplevel [_ "deken preferences"]]
::deken::preferences::fill_frame $prefs
::preferencewindow::add_apply ${mytoplevel} "::deken::preferences::apply ${prefs}"
}
# misc options
set prefs [::preferencewindow::add_frame $mytoplevel [_ "misc preferences"]]
::preferencewindow::add_apply $mytoplevel "::dialog_preferences::do_apply ${mytoplevel}"
::dialog_preferences::fill_frame $prefs
::preferencewindow::add_apply $mytoplevel {pdsend "pd save-preferences"}
::pd_bindings::dialog_bindings $mytoplevel "preferences"
pack $mytoplevel.content
::preferencewindow::select $mytoplevel [::pd_guiprefs::read preferences_tab]
catch { bind ${mytoplevel}.content.frames <<NotebookTabChanged>> "::dialog_preferences::tab_changed $mytoplevel" }
# re-adjust height based on optional sections
update
wm minsize $mytoplevel [winfo width $mytoplevel] [winfo reqheight $mytoplevel]
raise $mytoplevel
}
proc ::dialog_preferences::create {} {
::dialog_preferences::create_dialog
}
|