From 22a829cb1907c79bfe68ad91314a1dddbf1beeb3 Mon Sep 17 00:00:00 2001 From: Miller Puckette Date: Tue, 1 Sep 2009 18:22:23 +0000 Subject: merge in HC's new tcl code and start taking patches svn path=/trunk/; revision=12166 --- pd/tcl/dialog_gatom.tcl | 145 +++++++++++++++++------------------------------- 1 file changed, 50 insertions(+), 95 deletions(-) (limited to 'pd/tcl/dialog_gatom.tcl') diff --git a/pd/tcl/dialog_gatom.tcl b/pd/tcl/dialog_gatom.tcl index e377657f..b59751bf 100644 --- a/pd/tcl/dialog_gatom.tcl +++ b/pd/tcl/dialog_gatom.tcl @@ -4,24 +4,15 @@ package provide dialog_gatom 0.1 package require wheredoesthisgo namespace eval ::dialog_gatom:: { - namespace export pdtk_gatom_dialog + namespace export pdtk_gatom_dialog } -# hashtable for communicating the position of the radiobuttons (Tk's +# array for communicating the position of the radiobuttons (Tk's # radiobutton widget requires this to be global) -global gatomlabel_position +array set gatomlabel_radio {} ############ pdtk_gatom_dialog -- run a gatom dialog ######### -# dialogs like this one can come up in many copies; but in TK the easiest -# way to get data from an "entry", etc., is to set an associated variable -# name. This is especially true for grouped "radio buttons". So we have -# to synthesize variable names for each instance of the dialog. The dialog -# gets a TK pathname $id, from which it strips the leading "." to make a -# variable suffix $vid. Then you can get the actual value out by asking for -# [eval concat $$variablename]. There should be an easier way but I don't see -# it yet. - proc ::dialog_gatom::escape {sym} { if {[string length $sym] == 0} { set ret "-" @@ -44,164 +35,128 @@ proc ::dialog_gatom::unescape {sym} { return $ret } -proc gatom_apply {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_gatom::apply $mytoplevel -} - proc ::dialog_gatom::apply {mytoplevel} { - global gatomlabel_position - + global gatomlabel_radio + pdsend "$mytoplevel param \ [$mytoplevel.width.entry get] \ [$mytoplevel.limits.lower.entry get] \ [$mytoplevel.limits.upper.entry get] \ [::dialog_gatom::escape [$mytoplevel.gatomlabel.name.entry get]] \ - $gatomlabel_position($mytoplevel) \ + $gatomlabel_radio($mytoplevel) \ [::dialog_gatom::escape [$mytoplevel.s_r.send.entry get]] \ [::dialog_gatom::escape [$mytoplevel.s_r.receive.entry get]]" } - -proc gatom_cancel {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_gatom::cancel $mytoplevel -} - proc ::dialog_gatom::cancel {mytoplevel} { pdsend "$mytoplevel cancel" } - -proc gatom_ok {mytoplevel} { - # TODO kludge!! until a common approach to ::pd_bindings::panel_bindings - # is sorted out - ::dialog_gatom::ok $mytoplevel -} proc ::dialog_gatom::ok {mytoplevel} { ::dialog_gatom::apply $mytoplevel ::dialog_gatom::cancel $mytoplevel } # set up the panel with the info from pd -proc ::dialog_gatom::pdtk_gatom_dialog {mytoplevel initwidth initlower \ - initupper initgatomlabel_position initgatomlabel initsend initreceive} { - global gatomlabel_position - set gatomlabel_position($mytoplevel) $initgatomlabel_position +proc ::dialog_gatom::pdtk_gatom_dialog {mytoplevel initwidth initlower initupper \ + initgatomlabel_radio \ + initgatomlabel initsend initreceive} { + global gatomlabel_radio + set gatomlabel_radio($mytoplevel) $initgatomlabel_radio if {[winfo exists $mytoplevel]} { - wm deiconify $mytoplevel - raise $mytoplevel + wm deiconify $mytoplevel + raise $mytoplevel } else { - create_panel $mytoplevel + create_dialog $mytoplevel } $mytoplevel.width.entry insert 0 $initwidth $mytoplevel.limits.lower.entry insert 0 $initlower $mytoplevel.limits.upper.entry insert 0 $initupper if {$initgatomlabel ne "-"} { - $mytoplevel.gatomlabel.name.entry insert 0 $initgatomlabel + $mytoplevel.gatomlabel.name.entry insert 0 $initgatomlabel } - set gatomlabel_position($mytoplevel) $initgatomlabel_position - if {$initsend ne "-"} { - $mytoplevel.s_r.send.entry insert 0 $initsend + set gatomlabel_radio($mytoplevel) $initgatomlabel_radio + if {$initsend ne "-"} { + $mytoplevel.s_r.send.entry insert 0 $initsend } if {$initreceive ne "-"} { - $mytoplevel.s_r.receive.entry insert 0 $initreceive + $mytoplevel.s_r.receive.entry insert 0 $initreceive } } -proc ::dialog_gatom::create_panel {mytoplevel} { - global gatomlabel_position +proc ::dialog_gatom::create_dialog {mytoplevel} { + global gatomlabel_radio - toplevel $mytoplevel - wm title $mytoplevel "atom box properties" - wm resizable $mytoplevel 0 0 - catch { # not all platforms/Tcls versions have these options - wm attributes $mytoplevel -topmost 1 - #wm attributes $mytoplevel -transparent 1 - #$mytoplevel configure -highlightthickness 1 - } - wm protocol $mytoplevel WM_DELETE_WINDOW "::dialog_gatom::cancel $mytoplevel" - - ::pd_bindings::panel_bindings $mytoplevel "gatom" + toplevel $mytoplevel -class DialogWindow + wm title $mytoplevel [_ "Atom Box Properties"] + if {$::windowingsystem eq "aqua"} {$mytoplevel configure -menu .menubar} + ::pd_bindings::dialog_bindings $mytoplevel "gatom" frame $mytoplevel.width -height 7 pack $mytoplevel.width -side top - label $mytoplevel.width.label -text "width" + label $mytoplevel.width.label -text [_ "Width:"] entry $mytoplevel.width.entry -width 4 - pack $mytoplevel.width.label $mytoplevel.width.entry -side left + pack $mytoplevel.width.label $mytoplevel.width.entry -side left - labelframe $mytoplevel.limits -text "limits" -padx 15 -pady 4 -borderwidth 1 \ - -font highlight_font + labelframe $mytoplevel.limits -text [_ "Limits"] -padx 15 -pady 4 -borderwidth 1 pack $mytoplevel.limits -side top -fill x frame $mytoplevel.limits.lower pack $mytoplevel.limits.lower -side left - label $mytoplevel.limits.lower.label -text "lower" - entry $mytoplevel.limits.lower.entry -width 8 + label $mytoplevel.limits.lower.label -text [_ "Lower:"] + entry $mytoplevel.limits.lower.entry -width 7 pack $mytoplevel.limits.lower.label $mytoplevel.limits.lower.entry -side left frame $mytoplevel.limits.upper pack $mytoplevel.limits.upper -side left - frame $mytoplevel.limits.upper.spacer -width 20 - label $mytoplevel.limits.upper.label -text "upper" - entry $mytoplevel.limits.upper.entry -width 8 - pack $mytoplevel.limits.upper.spacer $mytoplevel.limits.upper.label \ - $mytoplevel.limits.upper.entry -side left - - frame $mytoplevel.spacer1 -height 7 - pack $mytoplevel.spacer1 -side top - - labelframe $mytoplevel.gatomlabel -text "label" -padx 5 -pady 4 -borderwidth 1 \ - -font highlight_font - pack $mytoplevel.gatomlabel -side top -fill x + label $mytoplevel.limits.upper.label -text [_ "Upper:"] + entry $mytoplevel.limits.upper.entry -width 7 + pack $mytoplevel.limits.upper.label $mytoplevel.limits.upper.entry -side left + + labelframe $mytoplevel.gatomlabel -text [_ "Label"] -padx 5 -pady 5 -borderwidth 1 + pack $mytoplevel.gatomlabel -side top -fill x -pady 5 frame $mytoplevel.gatomlabel.name pack $mytoplevel.gatomlabel.name -side top entry $mytoplevel.gatomlabel.name.entry -width 33 pack $mytoplevel.gatomlabel.name.entry -side left frame $mytoplevel.gatomlabel.radio pack $mytoplevel.gatomlabel.radio -side top - radiobutton $mytoplevel.gatomlabel.radio.left -value 0 -text "left " \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 - radiobutton $mytoplevel.gatomlabel.radio.right -value 1 -text "right" \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 - radiobutton $mytoplevel.gatomlabel.radio.top -value 2 -text "top" \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 - radiobutton $mytoplevel.gatomlabel.radio.bottom -value 3 -text "bottom" \ - -variable gatomlabel_position($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.left -value 0 -text [_ "Left "] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.right -value 1 -text [_ "Right"] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.top -value 2 -text [_ "Top"] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 + radiobutton $mytoplevel.gatomlabel.radio.bottom -value 3 -text [_ "Bottom"] \ + -variable gatomlabel_radio($mytoplevel) -justify left -takefocus 0 pack $mytoplevel.gatomlabel.radio.left -side left -anchor w pack $mytoplevel.gatomlabel.radio.right -side right -anchor w pack $mytoplevel.gatomlabel.radio.top -side top -anchor w pack $mytoplevel.gatomlabel.radio.bottom -side bottom -anchor w - frame $mytoplevel.spacer2 -height 7 - pack $mytoplevel.spacer2 -side top - - labelframe $mytoplevel.s_r -text "messages" -padx 5 -pady 4 -borderwidth 1 \ - -font highlight_font + labelframe $mytoplevel.s_r -text [_ "Messages"] -padx 5 -pady 5 -borderwidth 1 pack $mytoplevel.s_r -side top -fill x frame $mytoplevel.s_r.send pack $mytoplevel.s_r.send -side top -anchor e - label $mytoplevel.s_r.send.label -text "send symbol" + label $mytoplevel.s_r.send.label -text [_ "Send symbol:"] entry $mytoplevel.s_r.send.entry -width 21 pack $mytoplevel.s_r.send.entry $mytoplevel.s_r.send.label -side right frame $mytoplevel.s_r.receive pack $mytoplevel.s_r.receive -side top -anchor e - label $mytoplevel.s_r.receive.label -text "receive symbol" + label $mytoplevel.s_r.receive.label -text [_ "Receive symbol:"] entry $mytoplevel.s_r.receive.entry -width 21 pack $mytoplevel.s_r.receive.entry $mytoplevel.s_r.receive.label -side right frame $mytoplevel.buttonframe -pady 5 pack $mytoplevel.buttonframe -side top -fill x -pady 2m - button $mytoplevel.buttonframe.cancel -text {Cancel} \ + button $mytoplevel.buttonframe.cancel -text [_ "Cancel"] \ -command "::dialog_gatom::cancel $mytoplevel" pack $mytoplevel.buttonframe.cancel -side left -expand 1 - button $mytoplevel.buttonframe.apply -text {Apply} \ + button $mytoplevel.buttonframe.apply -text [_ "Apply"] \ -command "::dialog_gatom::apply $mytoplevel" pack $mytoplevel.buttonframe.apply -side left -expand 1 - button $mytoplevel.buttonframe.ok -text {OK} \ + button $mytoplevel.buttonframe.ok -text [_ "OK"] \ -command "::dialog_gatom::ok $mytoplevel" pack $mytoplevel.buttonframe.ok -side left -expand 1 -- cgit v1.2.1