def __init__(self, *args, **kwargs):
        Stock.__init__(self, *args, **kwargs)
        google_stock.GoogleStock.__init__(self, 'files', **kwargs)

        # files in this list are either LocalFile or GoogleFile 
        self.__files = []
        self.__display_limit = 5
        self.__recentf_path = os.path.expanduser('~/.recently-used.xbel')
        
        self.__slideout = None 
        self.__slideout_target = None

        self.desktop_path = self._panel.get_desktop_path()

        self._box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, spacing=4, padding_top=2)
        self._recentbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, spacing=4)
        self._box.append(self._recentbox)

        self.__file_browser = None
        self._add_more_button(self.__on_more_button)

        self.__monitor = VfsMonitor('file://' + self.__recentf_path, gnomevfs.MONITOR_FILE, self.__update_local_files)
        gobject.idle_add(self.__update_local_files)

        search.enable_search_provider('files', constructor=self.__construct_search_provider)
        #### FIXME need to figure out when to call search.disable_search_provider
        
        self.__drag_window = None
        self.__drag_start_pos = None
    def __init__(self, *args, **kwargs):
        super(PeopleStock, self).__init__(*args, **kwargs)

        self.__box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, spacing=3)
        
        self.__scroll_box = scroll_ribbon.VerticalScrollArea()
        self.__scroll_box.set_increment(50)
        self.__box.append(self.__scroll_box, hippo.PACK_EXPAND)

        self.__person_box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, spacing=3)
        self.__scroll_box.add(self.__person_box)

        self.__person_items = {}

        self.__slideout = None
        self.__slideout_item = None

        self.__people_browser = None
        self._add_more_button(self.__on_more_button)        
        
        self.__tracker = PeopleTracker()
        self.__tracker.people.connect("added", self.__on_person_added)
        self.__tracker.people.connect("removed", self.__on_person_removed)

        for person in self.__tracker.people:
            self.__on_person_added(self.__tracker.people, person)
            
        ## add a new search provider (FIXME never gets disabled)
        search.enable_search_provider('people',
                                      lambda: PeopleSearchProvider(self.__tracker))
    def __init__(self, *args, **kwargs):
        super(AppsStock, self).__init__(*args, **kwargs)

        search.enable_search_provider('apps')

        self.__box = CanvasVBox(spacing=3)
        self.__message = hippo.CanvasText()
        self.__message_link = ActionLink()
        self.__message_link.connect("button-press-event", lambda link, event: self.__on_message_link())
        self.__message_link_url = None
        self.__subtitle = hippo.CanvasText(font="Bold 12px")
        self.__static_set = CanvasVBox()
        self.__dynamic_set = CanvasVBox()
        
        self.__box.append(self.__message)
        self.__box.append(self.__message_link)        
        self.__box.append(self.__subtitle)
        self.__box.append(self.__static_set)
        self.__box.append(self.__dynamic_set)        
        self.__box.set_child_visible(self.__dynamic_set, False)
        
        self.__app_browser = None
        self._add_more_button(self.__on_more_button)
        
        self.__static_set_ids = {}

        gconf.client_get_default().notify_add(GCONF_KEY_APP_SIZE, self.__on_app_size_changed)
         
        self.__set_message('Loading...')

        self.__repo = apps.get_apps_repo()

        self.__repo.connect('enabled-changed', self.__on_usage_enabled_changed)
        self.__repo.connect('all-apps-loaded', self.__on_all_apps_loaded)
        self.__repo.connect('my-pinned-apps-changed', self.__on_my_pinned_apps_changed)
        self.__repo.connect('my-top-apps-changed', self.__on_my_top_apps_changed)
        self.__repo.connect('global-top-apps-changed', self.__on_global_top_apps_changed)
        self.__repo.connect('app-launched', self.__on_app_launched)

        self.__sync()
                'testing 123',
                'search',
                'search2',
                'searched' ]

            results = []
            for s in stuff_to_search_in:
                if query.lower() in s.lower():
                    results.append(TestSearchResult(self, s + " " + self.__heading))
            consumer.add_results(results)

    def construct_provider():
        return TestSearchProvider()

    search.register_provider_constructor('test1', lambda: TestSearchProvider("A_TestItems"))
    search.enable_search_provider('test1')

    search.register_provider_constructor('test2', lambda: TestSearchProvider("B_TestItems"))
    search.enable_search_provider('test2')

    search.register_provider_constructor('test3', lambda: TestSearchProvider("C_TestItems"))
    search.enable_search_provider('test3')

    search.register_provider_constructor('test4', lambda: TestSearchProvider("D_TestItems"))
    search.enable_search_provider('test4')

    window = gtk.Window()
    window.set_border_width(50) ## to test positioning of results window 
    entry = SearchEntry()
    entry.show()
    window.add(entry)