Index: guiframe/__init__.py
===================================================================
--- guiframe/__init__.py	(revision 41d466f6e37304375ace192af8fba17283851239)
+++ guiframe/__init__.py	(revision ba924ed5167906337d7af5b9ac868fb0ab4eacca)
@@ -0,0 +1,44 @@
+
+
+import os
+from distutils.filelist import findall
+
+def get_data_path(media):
+    """
+    """
+    # Check for data path in the package
+    path = os.path.join(os.path.dirname(__file__), media)
+    if os.path.isdir(path):
+        return path
+
+    # Check for data path next to exe/zip file.
+    # If we are inside a py2exe zip file, we need to go up
+    # to get to the directory containing 
+    # the media for this module
+    path = os.path.dirname(__file__)
+    #Look for maximum n_dir up of the current dir to find media
+    n_dir = 12
+    for i in range(n_dir):
+        path, _ = os.path.split(path)
+        media_path = os.path.join(path, media)
+        if os.path.isdir(media_path):
+            module_media_path = os.path.join(media_path, 'images')
+            if os.path.isdir(module_media_path):
+                return module_media_path
+            return media_path
+   
+    raise RuntimeError('Could not find guiframe images files')
+
+def data_files():
+    """
+    Return the data files associated with guiframe images .
+    
+    The format is a list of (directory, [files...]) pairs which can be
+    used directly in setup(...,data_files=...) for setup.py.
+
+    """
+    data_files = []
+    path = get_data_path(media="images")
+    for f in findall(path):
+        data_files.append(('icons', [f]))
+    return data_files
Index: guiframe/gui_style.py
===================================================================
--- guiframe/gui_style.py	(revision f036c692f54d10e88f06297560c534cf2520191b)
+++ guiframe/gui_style.py	(revision ba924ed5167906337d7af5b9ac868fb0ab4eacca)
@@ -4,4 +4,7 @@
 """
 import wx
+import os
+from sans.guiframe import get_data_path
+
 
 class GUIFRAME:
@@ -30,4 +33,31 @@
     PRINT_ID = wx.NewId()
     CURRENT_APPLICATION = wx.NewId()
+    
+class GUIFRAME_ICON:
+    PATH = get_data_path(media='images')
+    SAVE_ICON_PATH = os.path.join(PATH, 'save.png')
+    UNDO_ICON_PATH = os.path.join(PATH, 'undo.png')
+    REDO_ICON_PATH = os.path.join(PATH, 'redo.png')
+    BOOKMARK_ICON_PATH = os.path.join(PATH, 'bookmark.png')
+    ZOOM_IN_ID_PATH = os.path.join(PATH, 'zoom_in.png')
+    ZOOM_OUT_ID_PATH = os.path.join(PATH, 'zoom_out.png')
+    ZOOM_ID_PATH = os.path.join(PATH, 'search_pan.png')
+    DRAG_ID_PATH = os.path.join(PATH, 'drag_hand.png')
+    RESET_ID_PATH = os.path.join(PATH, 'reset.png')
+    PREVIEW_ID_PATH = os.path.join(PATH, 'report.png')
+    PRINT_ID_PATH = os.path.join(PATH, 'printer.png')
+    
+    SAVE_ICON = wx.Image(os.path.join(PATH, 'save.png'))
+    UNDO_ICON = wx.Image(os.path.join(PATH, 'undo.png'))
+    REDO_ICON = wx.Image(os.path.join(PATH, 'redo.png'))
+    BOOKMARK_ICON = wx.Image(os.path.join(PATH, 'bookmark.png'))
+    ZOOM_IN_ICON = wx.Image(os.path.join(PATH, 'zoom_in.png'))
+    ZOOM_OUT_ICON = wx.Image(os.path.join(PATH, 'zoom_out.png'))
+    ZOOM_ICON = wx.Image(os.path.join(PATH, 'search_pan.png'))
+    DRAG_ICON = wx.Image(os.path.join(PATH, 'drag_hand.png'))
+    RESET_ICON = wx.Image(os.path.join(PATH, 'reset.png'))
+    REPORT_ICON = wx.Image(os.path.join(PATH, 'report.png'))
+    PREVIEW_ICON = wx.Image(os.path.join(PATH, 'preview.png'))
+    PRINT_ICON = wx.Image(os.path.join(PATH, 'printer.png'))
 
 if __name__ == "__main__":
Index: guiframe/gui_toolbar.py
===================================================================
--- guiframe/gui_toolbar.py	(revision 93fe7e28573cb33249b88404980d443011696efa)
+++ guiframe/gui_toolbar.py	(revision ba924ed5167906337d7af5b9ac868fb0ab4eacca)
@@ -1,9 +1,28 @@
 
 import wx
+import os
 from wx import ToolBar as Tbar
+
+
 from sans.guiframe.gui_style import GUIFRAME_ID
-
+from sans.guiframe.gui_style import GUIFRAME_ICON
+
+
+def clear_image(image):
+    w, h = image.GetSize()
+    factor = 155
+    compress = lambda x: int(x * factor/255.) + factor
+    for y in range(h):
+        for x in range(w):
+            grey = compress(image.GetGreen(x, y))
+            image.SetRGB(x, y, grey, grey, grey)
+    if image.HasAlpha():
+        image.ConvertAlphaToMask()
+    return image
 
 class GUIToolBar(Tbar):
+    """
+    Implement toolbar for guiframe
+    """
     def __init__(self, parent,  *args, **kwds):
         Tbar.__init__(self, parent,  *args, **kwds)
@@ -11,49 +30,89 @@
         self.do_layout()
         self.on_bind_button()
-        
+       
     def do_layout(self):
         """
         """
-        tbar_size = (-1,-1)
-        save_bmp =  wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR,
-                                             size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.SAVE_ID, 'Save', save_bmp, shortHelp='Save')
-        self.AddSeparator()
-       
-        bookmark_bmp =  wx.ArtProvider.GetBitmap(wx.ART_ADD_BOOKMARK, wx.ART_TOOLBAR,
-                                                 size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.BOOKMARK_ID, 'Bookmark', bookmark_bmp,shortHelp='Bookmark')
-        self.AddSeparator()
-        zoom_in_bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_UP, wx.ART_TOOLBAR,
-                                                size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.ZOOM_IN_ID, 'Zoom in', zoom_in_bmp,shortHelp='Zoom in')
-        self.AddSeparator()
-        zoom_out_bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_DOWN, wx.ART_TOOLBAR,
-                                                 size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.ZOOM_OUT_ID,'Zoom out',zoom_out_bmp,shortHelp='Zoom out')
-        self.AddSeparator()
-        zoom_bmp =  wx.ArtProvider.GetBitmap(wx.ART_GO_FORWARD, wx.ART_TOOLBAR,
-                                             size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.ZOOM_ID, 'Zoom', zoom_bmp,shortHelp='Zoom')
-        self.AddSeparator()
-        drag_bmp =  wx.ArtProvider.GetBitmap(wx.ART_REMOVABLE, wx.ART_TOOLBAR,
-                                             size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.DRAG_ID, 'Drag', drag_bmp,shortHelp='Drag')
-        self.AddSeparator()
-        preview_bmp =  wx.ArtProvider.GetBitmap(wx.ART_REPORT_VIEW, wx.ART_TOOLBAR,
-                                                size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.PREVIEW_ID, 'Preview', preview_bmp,shortHelp='Report')
-        self.AddSeparator()
-        print_bmp =  wx.ArtProvider.GetBitmap(wx.ART_PRINT, wx.ART_TOOLBAR,
-                                              size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.PRINT_ID, 'Print', print_bmp,shortHelp='Print')
-        self.AddSeparator()
-        undo_bmp =  wx.ArtProvider.GetBitmap(wx.ART_UNDO, wx.ART_TOOLBAR,
-                                             size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.UNDO_ID, 'Undo', undo_bmp,shortHelp='Undo')
-        self.AddSeparator()
-        redo_bmp =  wx.ArtProvider.GetBitmap(wx.ART_REDO, wx.ART_TOOLBAR,
-                                             size=tbar_size)
-        self.AddLabelTool(GUIFRAME_ID.REDO_ID, 'Redo', redo_bmp,shortHelp='Redo')
+        tbar_size = (22, 22)
+        button_type =  wx.ITEM_NORMAL
+        save_im = GUIFRAME_ICON.SAVE_ICON
+        save_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        save_bmp = save_im.ConvertToBitmap()
+        #disable_save_bmp = clear_image(save_im).ConvertToBitmap()
+        disable_save_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.SAVE_ID, 'Save', save_bmp, 
+                          disable_save_bmp,button_type, shortHelp='Save')
+        self.AddSeparator()
+        bookmark_im = GUIFRAME_ICON.BOOKMARK_ICON
+        bookmark_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        bookmark_bmp = bookmark_im.ConvertToBitmap()
+        #disable_bookmark_bmp = clear_image(bookmark_im).ConvertToBitmap()
+        disable_bookmark_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.BOOKMARK_ID, 'Bookmark', bookmark_bmp,
+                   disable_bookmark_bmp, button_type,'Bookmark')
+        self.AddSeparator()
+        zoom_in_im = GUIFRAME_ICON.ZOOM_IN_ICON
+        zoom_in_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        zoom_in_bmp = zoom_in_im.ConvertToBitmap()
+        #disable_zoom_in_bmp = clear_image(zoom_in_im).ConvertToBitmap()
+        disable_zoom_in_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.ZOOM_IN_ID, 'Zoom In', zoom_in_bmp,
+                   disable_zoom_in_bmp, button_type,'Zoom In')
+        self.AddSeparator()
+        zoom_out_im = GUIFRAME_ICON.ZOOM_OUT_ICON
+        zoom_out_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        zoom_out_bmp = zoom_out_im.ConvertToBitmap()
+        #disable_zoom_out_bmp = clear_image(zoom_out_im).ConvertToBitmap()
+        disable_zoom_out_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.ZOOM_OUT_ID, 'Zoom Out', zoom_out_bmp,
+                   disable_zoom_out_bmp, button_type,'Zoom Out')
+        self.AddSeparator()
+        zoom_im = GUIFRAME_ICON.ZOOM_ICON
+        zoom_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        zoom_bmp = zoom_im.ConvertToBitmap()
+        #disable_zoom_bmp = clear_image(zoom_im).ConvertToBitmap()
+        disable_zoom_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.ZOOM_ID, 'Zoom', zoom_bmp,
+                   disable_zoom_bmp, button_type,'Zoom In')
+        self.AddSeparator()
+        drag_im = GUIFRAME_ICON.DRAG_ICON
+        drag_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        drag_bmp = drag_im.ConvertToBitmap()
+        #disable_drag_bmp = clear_image(drag_im).ConvertToBitmap()
+        disable_drag_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.DRAG_ID, 'Drag', drag_bmp,
+                   disable_drag_bmp, button_type,'Drag')
+        self.AddSeparator()
+        report_im = GUIFRAME_ICON.REPORT_ICON
+        report_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        report_bmp = report_im.ConvertToBitmap()
+        #disable_report_bmp = clear_image(report_im).ConvertToBitmap()
+        disable_report_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.PREVIEW_ID, 'Report', report_bmp,
+                   disable_report_bmp, button_type,'Report')
+        self.AddSeparator()
+        print_im = GUIFRAME_ICON.PRINT_ICON
+        print_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        print_bmp = print_im.ConvertToBitmap()
+        #disable_print_bmp = clear_image(print_im).ConvertToBitmap()
+        disable_print_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.PRINT_ID, 'Print', print_bmp,
+                          disable_print_bmp, button_type, 'Print')
+        self.AddSeparator()
+        undo_im = GUIFRAME_ICON.UNDO_ICON
+        undo_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        undo_bmp = undo_im.ConvertToBitmap()
+        #disable_undo_bmp = clear_image(undo_im).ConvertToBitmap()
+        disable_undo_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.UNDO_ID, 'Undo', undo_bmp,
+                          disable_undo_bmp, button_type,'Undo')
+        self.AddSeparator()
+        redo_im = GUIFRAME_ICON.REDO_ICON
+        redo_im.Rescale(tbar_size[0], tbar_size[1], wx.IMAGE_QUALITY_HIGH)
+        redo_bmp = redo_im.ConvertToBitmap()
+        #disable_redo_bmp = clear_image(redo_im).ConvertToBitmap()
+        disable_redo_bmp = wx.NullBitmap
+        self.AddLabelTool(GUIFRAME_ID.REDO_ID, 'Redo', redo_bmp,
+                          disable_redo_bmp, button_type,'Redo')
         self.AddSeparator()
         #add button for the current application
@@ -61,4 +120,6 @@
         self.button_application.SetForegroundColour('black')
         self.button_application.SetBackgroundColour('#1874CD')
+        hint = 'Active Application'
+        self.button_application.SetToolTipString(hint)
         self.AddControl(self.button_application)
         self.AddSeparator()
@@ -67,6 +128,8 @@
         self.button_panel.SetForegroundColour('black')
         self.button_panel.SetBackgroundColour('#90EE90')
+        hint = 'Panel on Focus'
+        self.button_panel.SetToolTipString(hint)
         self.AddControl(self.button_panel)
-    
+       
         self.SetToolBitmapSize(tbar_size)
         self.Realize()
@@ -105,9 +168,9 @@
         self.button_panel.SetLabel(str(panel_name))
         print "update_button", application_name, panel_name
+        
     def update_toolbar(self, panel=None):
         """
         """
         if panel is None:
-            #self.Disable()
             self.EnableTool(GUIFRAME_ID.PRINT_ID, False)
             self.EnableTool(GUIFRAME_ID.UNDO_ID,False)
@@ -122,5 +185,4 @@
             self.EnableTool(GUIFRAME_ID.RESET_ID, False)
         else:
-            self.Enable()
             self.EnableTool(GUIFRAME_ID.PRINT_ID, panel.get_print_flag())
             self.EnableTool(GUIFRAME_ID.UNDO_ID, panel.get_undo_flag())
@@ -134,5 +196,5 @@
             self.EnableTool(GUIFRAME_ID.DRAG_ID, panel.get_drag_flag())
             self.EnableTool(GUIFRAME_ID.RESET_ID, panel.get_reset_flag())
-
+        self.Realize()
   
 
Index: guiframe/setup.py
===================================================================
--- guiframe/setup.py	(revision febcd793e0667762c9b8ee40e92293d0e3a59e67)
+++ guiframe/setup.py	(revision ba924ed5167906337d7af5b9ac868fb0ab4eacca)
@@ -13,7 +13,9 @@
 path = os.path.join(os.getcwd(), 'local_perspectives')
 package_dir = { "sans.guiframe":".",
-                "sans.guiframe.local_perspectives":"local_perspectives"}
+                "sans.guiframe.local_perspectives":"local_perspectives",
+                "sans.guiframe.widgets":"widgets"}
 packages = ["sans.guiframe", 
-            "sans.guiframe.local_perspectives"]
+            "sans.guiframe.local_perspectives",
+            "sans.guiframe.widgets"]
 # build local plugin
 for dir in os.listdir(path):
