我们的程序会出bug,如果某个installer的 installed() raise 了 Exception。为了解决这个bug,我在
AppObjs.all_objs_reset_status() 里加了这段代码:

        failed = []
        for obj in cls.appobjs:
            try:
                obj.showed_in_toggle = obj.cache_installed = obj.installed()
            except:
                print_traceback()
                failed.append(obj)
        for o in failed:
            cls.appobjs.remove(o)
            iter = cls.list_store.get_iter_first()
            while iter:
                if cls.list_store.get_value(iter, 0) == o:
                    cls.list_store.remove(iter)
                    break
                iter = cls.list_store.iter_next(iter)

bug 解决了。副作用是 InstallRemovePane 的 right_store 被删去,right_store 改用
AppObjs.list_store。

请 Haofu 留意一下,我们两个都将 right_store 移动到 AppObjs 了。

Homer
_______________________________________________
Mailing list: https://launchpad.net/~ailurus
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~ailurus
More help   : https://help.launchpad.net/ListHelp

回复