lms-video/tcl/dialog_canvas.tcl
Santi Noreña e85d191b46 - Reestructuración de ficheros y directorios general
- merge v0.01 --> Añadido fileselector
- Añadidas fuentes de Gem y Pure Data
- pix2jpg incluído en Gem. Archivos de construcción de Gem modificados.
- Añadido fichero ompiling.txt con instrucciones de compilación
2013-02-04 18:00:17 +01:00

219 lines
9.8 KiB
Tcl

# TODO offset this panel so it doesn't overlap the pdtk_array panel
package provide dialog_canvas 0.1
namespace eval ::dialog_canvas:: {
namespace export pdtk_canvas_dialog
}
# global variables to store checkbox state on canvas properties window. These
# are only used in the context of getting data from the checkboxes, so they
# aren't really useful elsewhere. It would be nice to have them globally
# useful, but that would mean changing the C code.
array set graphme_button {}
array set hidetext_button {}
############# pdtk_canvas_dialog -- dialog window for canvases #################
proc ::dialog_canvas::apply {mytoplevel} {
pdsend "$mytoplevel donecanvasdialog \
[$mytoplevel.scale.x.entry get] \
[$mytoplevel.scale.y.entry get] \
[expr $::graphme_button($mytoplevel) + 2 * $::hidetext_button($mytoplevel)] \
[$mytoplevel.range.x.from_entry get] \
[$mytoplevel.range.y.from_entry get] \
[$mytoplevel.range.x.to_entry get] \
[$mytoplevel.range.y.to_entry get] \
[$mytoplevel.range.x.size_entry get] \
[$mytoplevel.range.y.size_entry get] \
[$mytoplevel.range.x.margin_entry get] \
[$mytoplevel.range.y.margin_entry get]"
}
proc ::dialog_canvas::cancel {mytoplevel} {
pdsend "$mytoplevel cancel"
}
proc ::dialog_canvas::ok {mytoplevel} {
::dialog_canvas::apply $mytoplevel
::dialog_canvas::cancel $mytoplevel
}
proc ::dialog_canvas::checkcommand {mytoplevel} {
if { $::graphme_button($mytoplevel) != 0 } {
$mytoplevel.scale.x.entry configure -state disabled
$mytoplevel.scale.y.entry configure -state disabled
$mytoplevel.parent.hidetext configure -state normal
$mytoplevel.range.x.from_entry configure -state normal
$mytoplevel.range.x.to_entry configure -state normal
$mytoplevel.range.x.size_entry configure -state normal
$mytoplevel.range.x.margin_entry configure -state normal
$mytoplevel.range.y.from_entry configure -state normal
$mytoplevel.range.y.to_entry configure -state normal
$mytoplevel.range.y.size_entry configure -state normal
$mytoplevel.range.y.margin_entry configure -state normal
if { [$mytoplevel.range.x.from_entry get] == 0 \
&& [$mytoplevel.range.y.from_entry get] == 0 \
&& [$mytoplevel.range.x.to_entry get] == 0 \
&& [$mytoplevel.range.y.to_entry get] == 0 } {
$mytoplevel.range.y.to_entry insert 0 1
$mytoplevel.range.y.to_entry insert 0 1
}
if { [$mytoplevel.range.x.size_entry get] == 0 } {
$mytoplevel.range.x.size_entry delete 0 end
$mytoplevel.range.x.margin_entry delete 0 end
$mytoplevel.range.x.size_entry insert 0 85
$mytoplevel.range.x.margin_entry insert 0 100
}
if { [$mytoplevel.range.y.size_entry get] == 0 } {
$mytoplevel.range.y.size_entry delete 0 end
$mytoplevel.range.y.margin_entry delete 0 end
$mytoplevel.range.y.size_entry insert 0 60
$mytoplevel.range.y.margin_entry insert 0 100
}
} else {
$mytoplevel.scale.x.entry configure -state normal
$mytoplevel.scale.y.entry configure -state normal
$mytoplevel.parent.hidetext configure -state disabled
$mytoplevel.range.x.from_entry configure -state disabled
$mytoplevel.range.x.to_entry configure -state disabled
$mytoplevel.range.x.size_entry configure -state disabled
$mytoplevel.range.x.margin_entry configure -state disabled
$mytoplevel.range.y.from_entry configure -state disabled
$mytoplevel.range.y.to_entry configure -state disabled
$mytoplevel.range.y.size_entry configure -state disabled
$mytoplevel.range.y.margin_entry configure -state disabled
if { [$mytoplevel.scale.x.entry get] == 0 } {
$mytoplevel.scale.x.entry delete 0 end
$mytoplevel.scale.x.entry insert 0 1
}
if { [$mytoplevel.scale.y.entry get] == 0 } {
$mytoplevel.scale.y.entry delete 0 end
$mytoplevel.scale.y.entry insert 0 1
}
}
}
proc ::dialog_canvas::pdtk_canvas_dialog {mytoplevel xscale yscale graphmeflags \
xfrom yfrom xto yto \
xsize ysize xmargin ymargin} {
if {[winfo exists $mytoplevel]} {
wm deiconify $mytoplevel
raise $mytoplevel
} else {
create_dialog $mytoplevel
}
switch -- $graphmeflags {
0 {
$mytoplevel.parent.graphme deselect
$mytoplevel.parent.hidetext deselect
} 1 {
$mytoplevel.parent.graphme select
$mytoplevel.parent.hidetext deselect
} 2 {
$mytoplevel.parent.graphme deselect
$mytoplevel.parent.hidetext select
} 3 {
$mytoplevel.parent.graphme select
$mytoplevel.parent.hidetext select
} default {
::pdwindow::error [_ "WARNING: unknown graphme flags received in pdtk_canvas_dialog"]
}
}
$mytoplevel.scale.x.entry insert 0 $xscale
$mytoplevel.scale.y.entry insert 0 $yscale
$mytoplevel.range.x.from_entry insert 0 $xfrom
$mytoplevel.range.y.from_entry insert 0 $yfrom
$mytoplevel.range.x.to_entry insert 0 $xto
$mytoplevel.range.y.to_entry insert 0 $yto
$mytoplevel.range.x.size_entry insert 0 $xsize
$mytoplevel.range.y.size_entry insert 0 $ysize
$mytoplevel.range.x.margin_entry insert 0 $xmargin
$mytoplevel.range.y.margin_entry insert 0 $ymargin
::dialog_canvas::checkcommand $mytoplevel
}
proc ::dialog_canvas::create_dialog {mytoplevel} {
toplevel $mytoplevel -class DialogWindow
wm title $mytoplevel [_ "Canvas Properties"]
wm group $mytoplevel .
wm resizable $mytoplevel 0 0
wm transient $mytoplevel $::focused_window
$mytoplevel configure -menu $::dialog_menubar
$mytoplevel configure -padx 0 -pady 0
::pd_bindings::dialog_bindings $mytoplevel "canvas"
labelframe $mytoplevel.scale -text [_ "Scale"] -borderwidth 1
pack $mytoplevel.scale -side top -fill x
frame $mytoplevel.scale.x -pady 2 -borderwidth 1
pack $mytoplevel.scale.x -side top
label $mytoplevel.scale.x.label -text [_ "X units per pixel:"]
entry $mytoplevel.scale.x.entry -width 10
pack $mytoplevel.scale.x.label $mytoplevel.scale.x.entry -side left
frame $mytoplevel.scale.y -pady 2
pack $mytoplevel.scale.y -side top
label $mytoplevel.scale.y.label -text [_ "Y units per pixel:"]
entry $mytoplevel.scale.y.entry -width 10
pack $mytoplevel.scale.y.label $mytoplevel.scale.y.entry -side left
labelframe $mytoplevel.parent -text [_ "Appearance on parent patch"] -borderwidth 1
pack $mytoplevel.parent -side top -fill x
checkbutton $mytoplevel.parent.graphme -text [_ "Graph-On-Parent"] \
-anchor w -variable graphme_button($mytoplevel) \
-command [concat ::dialog_canvas::checkcommand $mytoplevel]
pack $mytoplevel.parent.graphme -side top -fill x -padx 40
checkbutton $mytoplevel.parent.hidetext -text [_ "Hide object name and arguments"] \
-anchor w -variable hidetext_button($mytoplevel) \
-command [concat ::dialog_canvas::checkcommand $mytoplevel]
pack $mytoplevel.parent.hidetext -side top -fill x -padx 40
labelframe $mytoplevel.range -text [_ "Range and size"] -borderwidth 1
pack $mytoplevel.range -side top -fill x
frame $mytoplevel.range.x -padx 2 -pady 2
pack $mytoplevel.range.x -side top
label $mytoplevel.range.x.from_label -text [_ "X range, from"]
entry $mytoplevel.range.x.from_entry -width 6
label $mytoplevel.range.x.to_label -text [_ "to"]
entry $mytoplevel.range.x.to_entry -width 6
label $mytoplevel.range.x.size_label -text [_ "Size:"]
entry $mytoplevel.range.x.size_entry -width 4
label $mytoplevel.range.x.margin_label -text [_ "Margin:"]
entry $mytoplevel.range.x.margin_entry -width 4
pack $mytoplevel.range.x.from_label $mytoplevel.range.x.from_entry \
$mytoplevel.range.x.to_label $mytoplevel.range.x.to_entry \
$mytoplevel.range.x.size_label $mytoplevel.range.x.size_entry \
$mytoplevel.range.x.margin_label $mytoplevel.range.x.margin_entry \
-side left
frame $mytoplevel.range.y -padx 2 -pady 2
pack $mytoplevel.range.y -side top
label $mytoplevel.range.y.from_label -text [_ "Y range, from"]
entry $mytoplevel.range.y.from_entry -width 6
label $mytoplevel.range.y.to_label -text [_ "to"]
entry $mytoplevel.range.y.to_entry -width 6
label $mytoplevel.range.y.size_label -text [_ "Size:"]
entry $mytoplevel.range.y.size_entry -width 4
label $mytoplevel.range.y.margin_label -text [_ "Margin:"]
entry $mytoplevel.range.y.margin_entry -width 4
pack $mytoplevel.range.y.from_label $mytoplevel.range.y.from_entry \
$mytoplevel.range.y.to_label $mytoplevel.range.y.to_entry \
$mytoplevel.range.y.size_label $mytoplevel.range.y.size_entry \
$mytoplevel.range.y.margin_label $mytoplevel.range.y.margin_entry \
-side left
frame $mytoplevel.buttons
pack $mytoplevel.buttons -side bottom -fill x -expand 1 -pady 2m
button $mytoplevel.buttons.cancel -text [_ "Cancel"] \
-command "::dialog_canvas::cancel $mytoplevel"
pack $mytoplevel.buttons.cancel -side left -expand 1 -fill x -padx 10
if {$::windowingsystem ne "aqua"} {
button $mytoplevel.buttons.apply -text [_ "Apply"] \
-command "::dialog_canvas::apply $mytoplevel"
pack $mytoplevel.buttons.apply -side left -expand 1 -fill x -padx 10
}
button $mytoplevel.buttons.ok -text [_ "OK"] \
-command "::dialog_canvas::ok $mytoplevel"
pack $mytoplevel.buttons.ok -side left -expand 1 -fill x -padx 10
}