- 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
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Tcl
		
	
	
	
	
	
| 
 | |
| ####### scrollboxwindow -- scrollbox window with default bindings #########
 | |
| ## This is the base dialog behind the Path and Startup dialogs
 | |
| ## This namespace specifies everything the two dialogs have in common,
 | |
| ## with arguments specifying the differences
 | |
| ##
 | |
| ## By default, this creates a dialog centered on the viewing area of the screen
 | |
| ## with cancel, apply, and OK buttons
 | |
| ## which contains a scrollbox widget populated with the given data
 | |
| 
 | |
| package provide scrollboxwindow 0.1
 | |
| 
 | |
| package require scrollbox
 | |
| 
 | |
| namespace eval scrollboxwindow {
 | |
| }
 | |
| 
 | |
| 
 | |
| proc ::scrollboxwindow::get_listdata {mytoplevel} {
 | |
|     return [$mytoplevel.listbox.box get 0 end]
 | |
| }
 | |
| 
 | |
| proc ::scrollboxwindow::do_apply {mytoplevel commit_method listdata} {
 | |
|     $commit_method [pdtk_encode $listdata]
 | |
|     pdsend "pd save-preferences"
 | |
| }
 | |
| 
 | |
| # Cancel button action
 | |
| proc ::scrollboxwindow::cancel {mytoplevel} {
 | |
|     pdsend "$mytoplevel cancel"
 | |
| }
 | |
| 
 | |
| # Apply button action
 | |
| proc ::scrollboxwindow::apply {mytoplevel commit_method } {
 | |
|     do_apply $mytoplevel $commit_method [get_listdata $mytoplevel]
 | |
| }
 | |
| 
 | |
| # OK button action
 | |
| # The "commit" action can take a second or more,
 | |
| # long enough to be noticeable, so we only write
 | |
| # the changes after closing the dialog
 | |
| proc ::scrollboxwindow::ok {mytoplevel commit_method } {
 | |
|     set listdata [get_listdata $mytoplevel]
 | |
|     cancel $mytoplevel
 | |
|     do_apply $mytoplevel $commit_method $listdata
 | |
| }
 | |
| 
 | |
| # "Constructor" function for building the window
 | |
| # id -- the window id to use
 | |
| # listdata -- the data used to populate the scrollbox
 | |
| # add_method -- a reference to a proc to be called when the user adds a new item
 | |
| # edit_method -- same as above, for editing and existing item
 | |
| # commit_method -- same as above, to commit during the "apply" action
 | |
| # title -- top-level title for the dialog
 | |
| # width, height -- initial width and height dimensions for the window, also minimum size
 | |
| proc ::scrollboxwindow::make {mytoplevel listdata add_method edit_method commit_method title width height } {
 | |
|     wm deiconify .pdwindow
 | |
|     raise .pdwindow
 | |
|     toplevel $mytoplevel -class DialogWindow
 | |
|     wm title $mytoplevel $title
 | |
|     wm group $mytoplevel .
 | |
|     wm transient $mytoplevel .pdwindow
 | |
|     wm protocol $mytoplevel WM_DELETE_WINDOW "::scrollboxwindow::cancel $mytoplevel"
 | |
| 
 | |
|     # Enforce a minimum size for the window
 | |
|     wm minsize $mytoplevel $width $height
 | |
| 
 | |
|     # Set the current dimensions of the window
 | |
|     wm geometry $mytoplevel "${width}x${height}"
 | |
| 
 | |
|     # Add the scrollbox widget
 | |
|     ::scrollbox::make $mytoplevel $listdata $add_method $edit_method
 | |
| 
 | |
|     # Use two frames for the buttons, since we want them both
 | |
|     # bottom and right
 | |
|     frame $mytoplevel.nb
 | |
|     pack $mytoplevel.nb -side bottom -fill x -pady 2m
 | |
| 
 | |
|     frame $mytoplevel.nb.buttonframe
 | |
|     pack $mytoplevel.nb.buttonframe -side right -padx 2m
 | |
| 
 | |
|     button $mytoplevel.nb.buttonframe.cancel -text [_ "Cancel"]\
 | |
|         -command "::scrollboxwindow::cancel $mytoplevel"
 | |
|     button $mytoplevel.nb.buttonframe.apply -text [_ "Apply"]\
 | |
|         -command "::scrollboxwindow::apply $mytoplevel $commit_method"
 | |
|     button $mytoplevel.nb.buttonframe.ok -text [_ "OK"]\
 | |
|         -command "::scrollboxwindow::ok $mytoplevel $commit_method"
 | |
| 
 | |
|     pack $mytoplevel.nb.buttonframe.cancel -side left -expand 1 -padx 2m
 | |
|     pack $mytoplevel.nb.buttonframe.apply -side left -expand 1 -padx 2m
 | |
|     pack $mytoplevel.nb.buttonframe.ok -side left -expand 1 -padx 2m
 | |
| }
 | |
| 
 | |
| 
 |