Changeset 57e34db in tol for tolbase/lib
- Timestamp:
- Mar 24, 2010, 10:37:02 PM (17 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 320d511
- Parents:
- 03885938
- File:
-
- 1 edited
-
tolbase/lib/toltk/tolinspe.tcl (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tolbase/lib/toltk/tolinspe.tcl
r03885938 r57e34db 1828 1828 proc Tol_ObjIsClassOf { obj_addr cls_name } { 1829 1829 tol::console eval [ string map [ list %A $obj_addr %C $cls_name ] { 1830 Real __gui_check__ = IsInstanceOf( GetObjectFromAddress("%A"),"%C")1830 Real __gui_check__ = IsInstanceOf( GetObjectFromAddress( "%A" ),"%C" ) 1831 1831 } ] 1832 1832 set info [ tol::info variable {Real __gui_check__} ] … … 1836 1836 } 1837 1837 1838 proc TolGui_GetMenuEntries { obj_addr } { 1838 proc Tol_ClassOf { obj_addr } { 1839 tol::console eval [ string map [ list %A $obj_addr ] { 1840 Text __gui_classof__ = { 1841 Anything obj = GetObjectFromAddress( "%A" ); 1842 // WriteLn( "Tol_ClassOf " << Grammar( obj ) ); 1843 Text If( Grammar( obj ) == "NameBlock", ClassOf( obj ), "" ) 1844 } 1845 } ] 1846 set info [ tol::info variable {Text __gui_classof__} ] 1847 set x [ string trim [ lindex $info 2 ] \" ] 1848 tol::console stack release __gui_classof__ 1849 set x 1850 } 1851 1852 proc TolGui_GetMenuEntries { selection idx } { 1853 array set instances {} 1854 array set menu_class {} 1855 set i 0 1856 foreach obj_info $selection { 1857 set tcl_ref [ lindex $obj_info 0 ] 1858 set obj_addr [ ::tol::info address $tcl_ref ] 1859 set class [ Tol_ClassOf $obj_addr ] 1860 if { $class ne "" } { 1861 lappend instances($class) $obj_addr 1862 set name_inst [ lindex $obj_info 1 ] 1863 set menu_items [ TolGui_GetObjMenu $obj_addr ] 1864 # esto hace que estemos guardando la ultima instancia, asumimos 1865 # tambien que todas las instancia tienen la misma espcificacion 1866 # de menu 1867 if { ![ llength [ array names menu_class $class ] ] || $i == $idx } { 1868 set menu_class($class) \ 1869 [ list $name_inst $obj_addr $menu_items ] 1870 } 1871 } 1872 incr i 1873 } 1874 set menu_info [ list ] 1875 foreach c [ array names instances ] { 1876 lappend menu_info [ list $c $menu_class($c) $instances($c) ] 1877 } 1878 set menu_info 1879 } 1880 1881 proc TolGui_GetObjMenu { obj_addr } { 1839 1882 set try [ catch { 1840 1883 tol::console eval [ string map [ list %A $obj_addr ] { … … 1853 1896 } 1854 1897 1855 proc TolGui_InvokeMethod { obj_addr method} {1898 proc TolGui_InvokeMethod { method obj_addr } { 1856 1899 set try [ catch { 1857 1900 tol::console eval [ string map [ list %A $obj_addr %M $method ] { … … 1866 1909 } 1867 1910 1911 proc TclList2SetOfText { lst } { 1912 set result [ list ] 1913 foreach i $lst { 1914 lappend result \"$i\" 1915 } 1916 return "SetOfText([join $result ,])" 1917 } 1918 1919 proc TolGui_InvokeGroup { cname function group } { 1920 set SOA [ TclList2SetOfText $group ] 1921 set try [ catch { 1922 tol::console eval \ 1923 [ string map [ list %C $cname %F $function %S $SOA ] { 1924 Real __aux_result__ = %C::%F( %S ) 1925 } ] } msg ] 1926 if { $try } { 1927 puts "ERROR TolGui_InvokeGroup : $msg" 1928 } 1929 tol::console stack release __aux_result__ 1930 } 1931 1868 1932 #///////////////////////////////////////////////////////////////////////////// 1869 1933 proc ::TolInspector::PostVariable { x y } { … … 1901 1965 #puts "PostVariable: InRootConsole,InRootPool,InRootFiles = $InRootConsole,$InRootPool,$InRootFiles" 1902 1966 set node_act [$ht_vars index current] 1903 if { [string length $node_act] } { 1967 if { [string length $node_act] } { 1904 1968 set vars_selected [$ht_vars curselection] 1905 1969 if { [lsearch $vars_selected $node_act] >= 0 } { … … 1917 1981 if {[llength $aryData(Reference)]} { 1918 1982 #set object [lindex $aryData(Reference) 0] 1919 set object [lrange $aryData(Reference) 0 end]1983 set object [lrange $aryData(Reference) 0 end] 1920 1984 } else { 1921 1985 if { [string length $tolset] } { … … 2062 2126 NameBlock { 2063 2127 if { [ llength $options_selected(NameBlock) ] } { 2064 puts "ooo = $options_selected(NameBlock)" 2065 set obj_info [ lindex $options_selected(NameBlock) 0 ] 2066 set tcl_ref [ lindex $obj_info 0 ] 2067 set obj_addr [ ::tol::info address $tcl_ref ] 2068 puts "obj_addr $obj_addr" 2069 if { [ Tol_ObjIsClassOf $obj_addr "@MenuDesc" ] } { 2070 set entries [ TolGui_GetMenuEntries $obj_addr ] 2071 foreach ent $entries { 2072 $data_menu(main) add command -label [ lindex $ent 0 ] \ 2128 set idx_current [ lsearch $vars_selected $node_act ] 2129 foreach mi [ TolGui_GetMenuEntries \ 2130 $options_selected(NameBlock) $idx_current ] { 2131 set _cname [ lindex $mi 0 ] 2132 set cname [ string map [ list @ "" . _ ] $_cname ] 2133 foreach { ninst obj_addr entries } [ lindex $mi 1 ] break 2134 set instances [ lindex $mi 2 ] 2135 # creo el menu de la clase si no existe 2136 set mclass $data_menu(main).cls$cname 2137 if { ![ winfo exists $mclass ] } { 2138 menu $data_menu(main).cls$cname -tearoff 0 2139 } else { 2140 $mclass delete 0 end 2141 } 2142 $data_menu(main) add cascade -label $cname -menu $mclass 2143 foreach inst_entry $entries { 2144 foreach { label single group } $inst_entry break 2145 $mclass add command -label "$label $ninst" \ 2073 2146 -command [ list TolGui_InvokeMethod \ 2074 $obj_addr [ lindex $ent 1 ] ] 2147 $single $obj_addr ] 2148 if { $group ne "" && [ llength $instances ] > 1 } { 2149 # hay una funcion que se aplica a toda la seleccion 2150 $mclass add command -label "$label All" \ 2151 -command [ list TolGui_InvokeGroup \ 2152 $_cname $group $instances ] 2153 } 2075 2154 } 2076 2155 }
Note: See TracChangeset
for help on using the changeset viewer.
