- Timestamp:
- Aug 3, 2010, 11:35:16 AM (16 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 228e337
- Parents:
- f4034c80
- File:
-
- 1 edited
-
tolbase/lib/toltk/MenuManager.tcl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tolbase/lib/toltk/MenuManager.tcl
rf4034c80 rb3da993 202 202 } 203 203 204 proc ::MenuManager::compareMenuEntries { entry1 entry2 } { 205 # cache del rank de las entries, se pide a TOL solo una vez por 206 # ordenamiento 207 variable entriesRank 208 209 set name1 [ lindex $entry1 0 ] 210 set name2 [ lindex $entry2 0 ] 211 set path1 [ lrange [ split $name1 "/" ] 0 end-1 ] 212 set path2 [ lrange [ split $name2 "/" ] 0 end-1 ] 213 set submenu1 "" 214 set submenu2 "" 215 foreach subm1 $path1 subm2 $path2 { 216 if { $subm1 eq "" } { 217 # path1 es mas corto que path2, la parte comun es igual, asumo 218 # que es < 219 return -1 220 } 221 if { $subm2 eq "" } { 222 # path2 es mas corto que path2, la parte comun es igual, asumo 223 # que es > 224 return 1 225 } 226 append submenu1 [ expr { $submenu1 eq "" ? "" : "/" } ] $subm1 227 append submenu2 [ expr { $submenu2 eq "" ? "" : "/" } ] $subm2 228 if { ![ info exist entriesRank($submenu1) ] } { 229 set submenuInfo [ getLabelInfoForEntry $submenu1 ] 230 set entriesRank($submenu1,rank) [ lindex $submenuInfo 4 ] 231 } 232 if { ![ info exist entriesRank($submenu2) ] } { 233 set submenuInfo [ getLabelInfoForEntry $submenu2 ] 234 set entriesRank($submenu2,rank) [ lindex $submenuInfo 4 ] 235 } 236 set cmp \ 237 [ expr { $entriesRank($submenu1,rank) - $entriesRank($submenu2,rank) } ] 238 if { $cmp != 0 } { 239 return $cmp 240 } 241 } 242 # hasta este punto los caminos son iguales hay que usar el rank de la entry 243 return [ expr { [ lindex $entry1 4 ] - [ lindex $entry2 4 ] } ] 244 } 245 204 246 proc ::MenuManager::insertEntries { menuWidget objSelection entriesInfo } { 247 variable entriesRank 248 205 249 set multiple [ expr { [ llength $objSelection ] > 1 } ] 206 250 # inserto las entries segun el orden inducido por el campo rank 207 251 if { [ llength [ lindex $entriesInfo 0 ] ] > 4 } { 208 252 # rank aparecio en la version 2.2 de GuiTools 209 set sortedEntriesInfo [ lsort -real -index 4 $entriesInfo ] 253 array unset entriesRank 254 255 #set sortedEntriesInfo [ lsort -real -index 4 $entriesInfo ] 256 set sortedEntriesInfo [ lsort \ 257 -command ::MenuManager::compareMenuEntries \ 258 $entriesInfo ] 210 259 } else { 211 260 # se asume rank 0 para todos, el orden no cambia
Note: See TracChangeset
for help on using the changeset viewer.
