def __init__(self): super(FeedListStore, self).__init__(str, GdkPixbuf.Pixbuf, str, str, str, str, str, object, object, object) self.account_liststore = AccountListStore() self.filter_liststore = FilterListStore() self.window = MainWindow(self) self.save = SaveListStore() for entry in self.save.load(): self.append(entry)
def __init__(self): super(FeedListStore, self).__init__( str, GdkPixbuf.Pixbuf, str, str, str, str, str, object, object, object) self.account_liststore = AccountListStore() self.filter_liststore = FilterListStore() self.window = MainWindow(self) self.save = SaveListStore() for entry in self.save.load(): self.append(entry)
class FeedListStore(ListStoreBase): """ListStore for Feed Sources. 0, 1, 2, 3, 4, 5, 6, group, icon, source, username, name, target, argument, 7, 8, 9 options_dict, account_obj, api_obj """ def __init__(self): super(FeedListStore, self).__init__(str, GdkPixbuf.Pixbuf, str, str, str, str, str, object, object, object) self.account_liststore = AccountListStore() self.filter_liststore = FilterListStore() self.window = MainWindow(self) self.save = SaveListStore() for entry in self.save.load(): self.append(entry) def append(self, source, iter=None): account_obj = self.account_liststore.get_account_obj( source.get('source'), source.get('username')) if not account_obj: print "Error: ACCOUNT (%s, %s) is not found!" % ( source.get('source'), source.get('username')) return api_class = account_obj.api_dict.get(source.get('target')) if not api_class: print "Error: API (%s) is not found!" % source.get('target') return api = api_class(account_obj, source.get('options')) view = self._get_view(source, api, iter) api_obj = api.output(api, view, source.get('argument'), source.get('options'), self.filter_liststore) list = [ source.get('group'), account_obj.icon.get_pixbuf(), source.get('source'), source.get('username'), source.get('name'), source['target'], # API source.get('argument'), source.get('options'), account_obj, api_obj ] new_iter = self.insert_before(iter, list) interval = 40 if api.name == 'Home TimeLine' else 180 api_obj.start(interval) return new_iter def _get_view(self, source, api, iter): for i, row in enumerate(self): if iter and i == int(str(self.get_path(iter))): continue if (source.get('name') == row[Column.API].view.name and source.get('group') == row[Column.GROUP] and source.get('source') == row[Column.SOURCE]): view = row[Column.API].view view.feed_counter += 1 break else: notebook = self.window.get_notebook(source.get('group')) page = int(str(self.get_path(iter))) if iter else -1 tab_name = source.get('name') or api.name view = FeedView(self, notebook, api, tab_name, page) return view def update(self, source, iter): old_column = [ Column.GROUP, Column.SOURCE, Column.USERNAME, Column.NAME, Column.TARGET, Column.ARGUMENT ] old = [self.get_value(iter, x).decode('utf-8') for x in old_column] new = [ source.get(x) for x in ['group', 'source', 'username', 'name', 'target', 'argument'] ] if old != new: new_iter = self.append(source, iter) self.remove(iter) else: new_iter = iter # API api_obj = self.get_value(iter, Column.API) api_obj.options = source.get('options', {}) self.set_value(iter, Column.OPTIONS, api_obj.options) return new_iter def remove(self, iter): api = self.get_value(iter, Column.API) api.exit() del api super(FeedListStore, self).remove(iter) def get_group_page(self, target_group): group_list = self.get_group_list() return group_list.index(target_group) \ if target_group in group_list else 0 def get_group_list(self): group_list = [] for x in self: group = x[Column.GROUP].decode('utf-8') if group not in group_list: group_list.append(group) return group_list
class FeedListStore(ListStoreBase): """ListStore for Feed Sources. 0, 1, 2, 3, 4, 5, 6, group, icon, source, username, name, target, argument, 7, 8, 9 options_dict, account_obj, api_obj """ def __init__(self): super(FeedListStore, self).__init__( str, GdkPixbuf.Pixbuf, str, str, str, str, str, object, object, object) self.account_liststore = AccountListStore() self.filter_liststore = FilterListStore() self.window = MainWindow(self) self.save = SaveListStore() for entry in self.save.load(): self.append(entry) def append(self, source, iter=None): account_obj = self.account_liststore.get_account_obj( source.get('source'), source.get('username')) if not account_obj: print "Error: ACCOUNT (%s, %s) is not found!" % ( source.get('source'), source.get('username')) return api_class = account_obj.api_dict.get(source.get('target')) if not api_class: print "Error: API (%s) is not found!" % source.get('target') return api = api_class(account_obj, source.get('options')) view = self._get_view(source, api, iter) api_obj = api.output(api, view, source.get('argument'), source.get('options'), self.filter_liststore) list = [source.get('group'), account_obj.icon.get_pixbuf(), source.get('source'), source.get('username'), source.get('name'), source['target'], # API source.get('argument'), source.get('options'), account_obj, api_obj] new_iter = self.insert_before(iter, list) interval = 40 if api.name == 'Home TimeLine' else 180 api_obj.start(interval) return new_iter def _get_view(self, source, api, iter): for i, row in enumerate(self): if iter and i == int(str(self.get_path(iter))): continue if (source.get('name') == row[Column.API].view.name and source.get('group') == row[Column.GROUP] and source.get('source') == row[Column.SOURCE]): view = row[Column.API].view view.feed_counter += 1 break else: notebook = self.window.get_notebook(source.get('group')) page = int(str(self.get_path(iter))) if iter else -1 tab_name = source.get('name') or api.name view = FeedView(self, notebook, api, tab_name, page) return view def update(self, source, iter): old_column = [Column.GROUP, Column.SOURCE, Column.USERNAME, Column.NAME, Column.TARGET, Column.ARGUMENT] old = [self.get_value(iter, x).decode('utf-8') for x in old_column] new = [source.get(x) for x in ['group', 'source', 'username', 'name', 'target', 'argument']] if old != new: new_iter = self.append(source, iter) self.remove(iter) else: new_iter = iter # API api_obj = self.get_value(iter, Column.API) api_obj.options = source.get('options', {}) self.set_value(iter, Column.OPTIONS, api_obj.options) return new_iter def remove(self, iter): api = self.get_value(iter, Column.API) api.exit() del api super(FeedListStore, self).remove(iter) def get_group_page(self, target_group): group_list = self.get_group_list() return group_list.index(target_group) \ if target_group in group_list else 0 def get_group_list(self): group_list =[] for x in self: group = x[Column.GROUP].decode('utf-8') if group not in group_list: group_list.append(group) return group_list