Changeset ef0bbb1 in tol for tolbase/lib/toltk


Ignore:
Timestamp:
Aug 6, 2010, 3:06:06 PM (16 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
15ee97c
Parents:
67afb90
Message:

#refs 963, se sube una funcion ::MenuManager::addObservers para intersectar los eventos Before y After asociados a la invocacion de una opcion de menu

proc onDeleteVariable { when } {
  puts "estoy $when"
  return 1
}

::MenuManager::addObservers "MMS.Delete_Variable" "Before" onDeleteVariable
::MenuManager::addObservers "MMS.Delete_Variable" "after" onDeleteVariable

El script debe retornar como resultado 0 ó 1

El valor $when (Before o After) se concatena al script antes de ejecutarlo.

Si alguno de los observadores del "Before" retorna 0 la opcion de menu
no se invoca.

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@2466 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tolbase/lib/toltk/MenuManager.tcl

    r67afb90 ref0bbb1  
    11namespace eval ::MenuManager {
     2  variable observers
     3}
     4
     5proc ::MenuManager::addObserver { event when script } {
     6  variable observers
     7
     8  if { $when ne "Before" || $when ne "After" } {
     9    error "::MenuManager::addObserver -- valor invalido '$when' para el argumento when, debe ser Before o After"
     10  }
     11  lappend observers($event,$when) $script
     12}
     13
     14proc ::MenuManager::invokeObservers { event when } {
     15  variable observers
     16
     17  if { [ info exists observers($event,$when) ] } {
     18    foreach script $observers($event,$when) {
     19      set result [ eval uplevel \#0 $script $when ]
     20      if { !$result } {
     21        return 0
     22      }
     23    }
     24  }
     25  return 1
    226}
    327
    … …  
    88112  variable typesSelected
    89113
     114  if { ![ invokeObservers $name "Before" ] } {
     115    return 0
     116  }
    90117  set SOA [ TclList2SetOfText $objSelection ]
    91118  set rvar "__invokeCommand__"
    … …  
    104131  set value [ lindex $info 2 ]
    105132  tol::console stack release $rvar
     133  invokeObservers $name "After"
    106134  return $value
    107135}
Note: See TracChangeset for help on using the changeset viewer.