def on_search_btn_pressed(self, btn):
ddg_query = self.ddg_query_box.get_text()
if not ddg_query == "":
if ddg_query.lower() == "easter eggs?":\
self.ddg_query_box.set_text("No.")
if ddg_query.lower() == "philips exeter":
ddg_query = "Philips Academy, Andover"
self.ddg_query_box.set_text("Philips Academy, Andover")
def get_feeds_from_query():
potential_feed_sites = get_links(ddg_query)
with concurrent.futures.ProcessPoolExecutor() as executor:
feed_tuples = executor.map(process_site, potential_feed_sites)
for feed_tuple in feed_tuples:
if feed_tuple is not None:
GLib.idle_add(add_feed, feed_tuple)
GLib.idle_add(reenable_controls)
def add_feed(feed_tuple):
feed = feed_tuple[0]
feed_link = feed_tuple[1]
sub_btn = Gtk.CheckButton()
sub_btn.connect("toggled", self.on_sub_btn_clicked, feed_link)
self.feed_grid.attach(sub_btn, 0, self.current_feed_grid_row, 1, 1)
sub_btn.show()
title_label = Gtk.Label(feed["channel"]["title"])
title_label.set_line_wrap(True)
self.feed_grid.attach(title_label, 1, self.current_feed_grid_row, 1, 1)
title_label.show()
try:
feed_desc = feed["channel"]["description"]
except KeyError:
feed_desc = ""
desc_label = Gtk.Label(feed_desc)
desc_label.set_line_wrap(True)
self.feed_grid.attach(desc_label, 2, self.current_feed_grid_row, 1, 1)
desc_label.show()
self.current_feed_grid_row += 1
print("Adding to box: ", feed_link)
def reenable_controls():
# Re-enable boxes
self.ddg_query_box.set_sensitive(True)
self.search_btn.set_sensitive(True)
thread = threading.Thread(target=get_feeds_from_query)
thread.daemon = True
thread.start()
# Disable boxes
self.ddg_query_box.set_sensitive(False)
self.search_btn.set_sensitive(False)
print("Starting query async...")
评论列表
文章目录