Changeset ca01e16 in tol for tolbase


Ignore:
Timestamp:
Jan 11, 2010, 9:29:12 PM (17 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
5280be1
Parents:
fc03939
Message:

Deal with custom GUI method implemented in clases derived from @MenuDesc

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

File:
1 edited

Legend:

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

    rfc03939 rca01e16  
    515515  set data_menu(Text,Functions)     [menu $data_menu(main).mtefu -tearoff 0]
    516516  set data_menu(TimeSet,Functions)  [menu $data_menu(main).mtifu -tearoff 0]
     517  set data_menu(NameBlock,Functions)  [menu $data_menu(main).mnbfu -tearoff 0]
    517518
    518519  set data_menu(Matrix,Table)       [menu $data_menu(main).mmat   -tearoff 0]
    … …  
    18241825}
    18251826
     1827proc Tol_ObjIsClassOf { obj_addr cls_name } {
     1828  tol::console eval [ string map [ list %A $obj_addr %C $cls_name ] {
     1829    Real __gui_check__ = IsInstanceOf(GetObjectFromAddress("%A"),"%C")
     1830  } ]
     1831  set info [ tol::info variable {Real __gui_check__} ]
     1832  set x [ lindex $info 2 ]
     1833  tol::console stack release __gui_check__
     1834  expr { round($x) }
     1835}
     1836
     1837proc TolGui_GetMenuEntries { obj_addr } {
     1838  set try [ catch {
     1839    tol::console eval [ string map [ list %A $obj_addr ] {
     1840      @MenuDesc __aux_menu__ = GetObjectFromAddress("%A");
     1841      Set __gui_menu_entries__ = __aux_menu__::getMenuEntries(?)
     1842    } ] } msg ]
     1843  if { $try } {
     1844    puts "ERROR TolGui_GetMenuEntries : $msg"
     1845    set result ""
     1846  } else {
     1847    set result [ TolObj2TclObj {Set __gui_menu_entries__} ]
     1848  }
     1849  tol::console stack release __aux_menu__
     1850  tol::console stack release __gui_menu_entries__
     1851  set result
     1852}
     1853
     1854proc TolGui_InvokeMethod { obj_addr method } {
     1855  set try [ catch {
     1856    tol::console eval [ string map [ list %A $obj_addr %M $method ] {
     1857      NameBlock __aux_instance__ = GetObjectFromAddress("%A");
     1858      Real __aux_result__ = __aux_instance__::%M(?)
     1859    } ] } msg ]
     1860  if { $try } {
     1861    puts "ERROR TolGui_InvokeMethod : $msg"
     1862  }
     1863  tol::console stack release __aux_instance__
     1864  tol::console stack release __aux_result__
     1865}
    18261866
    18271867#/////////////////////////////////////////////////////////////////////////////
    … …  
    19041944          Anything -
    19051945          Text    -
     1946          NameBlock -
    19061947          TimeSet {
    19071948            lappend options_selected($grammar) [list $object $objName $path]
    … …  
    20152056                  $data_menu(TimeSet,View) add command -label [lindex $objInfo 1] \
    20162057                    -command [list ::TolInspector::ViewTimeSet [lindex $objInfo 0]]
     2058                }
     2059              }
     2060            }
     2061            NameBlock {
     2062              if { [ llength $options_selected(NameBlock) ] } {
     2063                puts "ooo = $options_selected(NameBlock)"
     2064                set obj_info [ lindex $options_selected(NameBlock) 0 ]
     2065                set tcl_ref [ lindex $obj_info 0 ]
     2066                set obj_addr [ ::tol::info address $tcl_ref ]
     2067                puts "obj_addr $obj_addr"
     2068                if { [ Tol_ObjIsClassOf $obj_addr "@MenuDesc" ] } {
     2069                  set entries [ TolGui_GetMenuEntries $obj_addr ]
     2070                  foreach ent $entries {
     2071                    $data_menu(main) add command -label [ lindex $ent 0 ] \
     2072                        -command [ list TolGui_InvokeMethod \
     2073                                       $obj_addr  [ lindex $ent 1 ] ]
     2074                  }
    20172075                }
    20182076              }
    … …  
    22552313  array unset options_selected
    22562314 
     2315  puts "::TolInspector::PostTree $x $y"
    22572316  foreach it [array names data_menu] {
    22582317    $data_menu($it) delete 0 end
    … …  
    22682327  if { [string length $node_act] } {
    22692328    set vars_selected [$ht_tree curselection]
    2270     #puts "vars_selected: $vars_selected"     
     2329    puts "vars_selected: $vars_selected"     
    22712330    if { [lsearch $vars_selected $node_act] >= 0 } { ;# Not root node
    22722331      set index [$ht_tree index anchor]
    2273       #puts "index: $index"   
     2332      puts "index: $index"   
    22742333      if { $index } {
    22752334        set info_node [split [lindex [$ht_tree get -full $index] end] "-"]
    2276         #puts "info_node: $info_node" 
     2335        puts "info_node: $info_node" 
    22772336        set node_type [lindex $info_node 0]
    2278         #puts "node_type: $node_type"         
     2337        puts "node_type: $node_type"         
    22792338        set node_name [lindex $info_node 1]
    2280         #puts "node_name: $node_name"         
     2339        puts "node_name: $node_name"         
    22812340      } else { ;# root node
    22822341        set node_type root
    … …  
    22902349      # label of object showed in the tree
    22912350      set objName [$ht_tree entry cget $index -label]
    2292       #puts "1objName: $objName"
     2351      puts "objName: $objName"
    22932352      set object $objName
    22942353
    … …  
    23122371        }
    23132372      }
    2314      
     2373      puts "object = $objName '[$ht_tree entry cget $index -data]'"
    23152374#Tolcon_Trace "***********************************" {red}
    23162375#Tolcon_Trace "index=$index, node_type=$node_type, node_name=$node_name" {red}
    … …  
    32313290}
    32323291
    3233 
    3234 
    32353292namespace eval ::LoadStatus {
    32363293  variable data
Note: See TracChangeset for help on using the changeset viewer.