- 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
219 lines
9.8 KiB
Tcl
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
|
|
}
|