Index: tolbase/lib/toltk/ImageManager.tcl
===================================================================
--- tolbase/lib/toltk/ImageManager.tcl	(revision ab2f6942f6cc27a5b2fcb74a996098cc0ec2dbeb)
+++ tolbase/lib/toltk/ImageManager.tcl	(revision ab2f6942f6cc27a5b2fcb74a996098cc0ec2dbeb)
@@ -0,0 +1,14 @@
+namespace eval ::ImageManager {
+}
+
+proc ::ImageManager::getImageResourceId { imageName } {
+  set rvar "__getImageResourceId__"
+  set tolExpr [ string map [ list %N $imageName %RV $rvar ] {
+    Text %RV = GuiTools::ImageManager::getImageResourceId( "%N" );
+  } ]
+  tol::console eval $tolExpr
+  set info [ tol::info variable [ list Text $rvar ] ]
+  set value [ string trim [ lindex $info 2 ] \" ]
+  tol::console stack release $rvar
+  return $value
+}
Index: tolbase/lib/toltk/MenuManager.tcl
===================================================================
--- tolbase/lib/toltk/MenuManager.tcl	(revision 24611128f13eb75d8958e33f0c2d09da65561532)
+++ tolbase/lib/toltk/MenuManager.tcl	(revision ab2f6942f6cc27a5b2fcb74a996098cc0ec2dbeb)
@@ -1,6 +1,6 @@
-namespace eval MenuManager {
-}
-
-proc MenuManager::getTypeOfObject { addr } {
+namespace eval ::MenuManager {
+}
+
+proc ::MenuManager::getTypeOfObject { addr } {
   set rvar "__getTypeOfObject__"
   set tolExpr [ string map [ list %A $addr %RV $rvar ] {
@@ -21,11 +21,11 @@
 }
 
-proc MenuManager::getLabelInfoForType { type } {
+proc ::MenuManager::getLabelInfoForType { type } {
   set rvar "__getLabelForType__"
   set tolExpr [ string map [ list %RV $rvar %T $type ] {
     Set %RV = {
-      Set aux = MenuManager::getTypeLabelInfo( "%T" );
+      Set aux = GuiTools::MenuManager::getTypeLabelInfo( "%T" );
       Set If( Card( aux ),
-              aux, MenuManager::getDefaultTypeLabelInfo( "%T" ) )
+              aux, GuiTools::MenuManager::getDefaultTypeLabelInfo( "%T" ) )
     }
   } ]
@@ -36,11 +36,11 @@
 }
 
-proc MenuManager::getLabelInfoForEntry { entryName } {
+proc ::MenuManager::getLabelInfoForEntry { entryName } {
   set rvar "__getLabelInfoForEntry__"
   set tolExpr [ string map [ list %RV $rvar %N $entryName ] {
     Set %RV = {
-      Set aux = MenuManager::getEntryInfo( "%N" );
+      Set aux = GuiTools::MenuManager::getEntryInfo( "%N" );
       Set If( Card( aux ),
-              aux, MenuManager::getDefaultEntryInfo( "%N" ) )
+              aux, GuiTools::MenuManager::getDefaultEntryInfo( "%N" ) )
     }
   } ]
@@ -51,8 +51,8 @@
 }
 
-proc MenuManager::getMenuOptionsForType { type } {
+proc ::MenuManager::getMenuOptionsForType { type } {
   set rvar "__getMenuOptionsForType__"
   set tolExpr [ string map [ list %RV $rvar %T $type ] {
-    Set %RV = MenuManager::getTypeOptionsInfo( "%T" );
+    Set %RV = GuiTools::MenuManager::getTypeOptionsInfo( "%T" );
   } ]
   tol::console eval $tolExpr
@@ -62,8 +62,6 @@
 }
 
-proc MenuManager::checkEntryState { name objSelection group } {
-  variable typesSelected
-
-  puts "MenuManager::checkEntryState $name $objSelection $group"
+proc ::MenuManager::checkEntryState { name objSelection group } {
+  variable typesSelected
 
   set SOA [ TclList2SetOfText $objSelection ]
@@ -77,6 +75,5 @@
         } )
       }, GetObjectFromAddress( objAddress[ 1 ] ) );
-      WriteLn( "%N" << target );
-      Real MenuManager::checkStateEntry( "%N", target )
+      Real GuiTools::MenuManager::checkStateEntry( "%N", target )
     }
   } ]
@@ -88,5 +85,5 @@
 }
 
-proc MenuManager::invokeCommand { name objSelection group } {
+proc ::MenuManager::invokeCommand { name objSelection group } {
   variable typesSelected
 
@@ -101,5 +98,5 @@
         } )
       }, GetObjectFromAddress( objAddress[ 1 ] ) );
-      Real MenuManager::invokeEntry( "%N", target )
+      Real GuiTools::MenuManager::invokeEntry( "%N", target )
     }
   } ]
@@ -111,5 +108,5 @@
 }
 
-proc MenuManager::checkIfMenuManagerIsLoaded { } {
+proc ::MenuManager::checkIfMenuManagerIsLoaded { } {
   set rvar "__checkIfMenuManagerIsLoaded__"
   set tolExpr [ string map [ list %RV $rvar  ] {
@@ -123,5 +120,5 @@
 }
 
-proc MenuManager::initTypesInfoFromSelection { selection } {
+proc ::MenuManager::initTypesInfoFromSelection { selection } {
   variable typesSelected
 
@@ -165,21 +162,5 @@
 }
 
-proc MenuManager::kk { } {
-  variable typesSelected
-
-  set numberOfTypes [ llength $typesSelected(types) ]
-  #set typesSelected(globalOptions) [ list ]
-  foreach optionIndex [ array names typesSelected types,* ] {
-    puts "optionIndex = $optionIndex"
-    set optionName [ string range $optionIndex 6 end ]
-    puts "optionName = $optionName"
-    if { [ llength $typesSelected(types,$optionName) ] == $numberOfTypes } {
-      lappend typesSelected(globalOptions) \
-          $typesSelected(optionInfo,$optionName)
-    }
-  }
-}
-
-proc MenuManager::createSubMenuIfNeeded { targetMenu name } {
+proc ::MenuManager::createSubMenuIfNeeded { targetMenu name } {
   set path0 [ split $name "/" ]
   set mm $targetMenu
@@ -195,7 +176,11 @@
     set labelInfo [ getLabelInfoForEntry $nn ]
     foreach { name label image translate } $labelInfo break
+    set image0 [ ::ImageManager::getImageResourceId $image ]
+    if { $image0 ne "" } {
+      set image $image0
+    }
     $mm add cascade -menu $mm0 \
         -label [ expr { $translate ? [ msgcat::mc $label ] : $label } ] \
-        -image $image
+        -image $image -compound [ expr { $image eq "" ? "none" : "left" } ]
     set mm $mm0
   }
@@ -203,5 +188,5 @@
 }
 
-proc MenuManager::insertEntries { menuWidget objSelection entriesInfo } {
+proc ::MenuManager::insertEntries { menuWidget objSelection entriesInfo } {
   set multiple [ expr { [ llength $objSelection ] > 1 } ]
   foreach entryInfo $entriesInfo {
@@ -211,11 +196,16 @@
     set state [ checkEntryState $name $objSelection $group ]
     set entryLabel [ expr { $translate ? [ msgcat::mc $label ] : $label } ]
+    set image0 [ ::ImageManager::getImageResourceId $image ]
+    if { $image0 ne "" } {
+      set image $image0
+    }
     $mm add command -label $entryLabel \
-        -command [ list MenuManager::invokeCommand $name $objSelection $group ] \
-        -state [ expr { $state ? "normal" : "disabled" } ]
-  }
-}
-
-proc MenuManager::insertEntriesForSelection { menuWidget selection } {
+        -command [ list ::MenuManager::invokeCommand $name $objSelection $group ] \
+        -state [ expr { $state ? "normal" : "disabled" } ] \
+        -image $image -compound [ expr { $image eq "" ? "none" : "left" } ]
+  }
+}
+
+proc ::MenuManager::insertEntriesForSelection { menuWidget selection } {
   variable typesSelected
 
@@ -234,5 +224,10 @@
       foreach {label image translate} $typesSelected(labelInfo,$type) break  
       set labelCascade [ expr { $translate ? [ msgcat::mc $label ] : $label } ]
-      $menuWidget add cascade -label $labelCascade -menu $menuType
+      set image0 [ ::ImageManager::getImageResourceId $image ]
+      if { $image0 ne "" } {
+        set image $image0
+      }
+      $menuWidget add cascade -label $labelCascade -menu $menuType \
+          -image $image -compound [ expr { $image eq "" ? "none" : "left" } ]
       insertEntries $menuType \
           $typesSelected(objects,$type) $typesSelected(entriesInfo,$type)
