366
371
self.load_feed_button = get("load_feed_button")
373
image = gtk.image_new_from_stock(gtk.STOCK_OK,
374
gtk.ICON_SIZE_BUTTON)
376
self.load_feed_button.set_image(image)
368
379
self.cbb = get("add_dialog_combobox")
370
381
self.cat_dialog = get("cat_dialog")
371
382
self.cat_dialog_entry = get("cat_dialog_entry")
372
383
self.cat_dialog_cbb = get("cat_dialog_combobox")
384
self.cat_dialog_ok_button = get("cat_dialog_ok_button")
375
387
self.cat_liststore = get("cat_liststore")
444
460
gobject.idle_add(self._idle_func, self.feed_liststore.clear)
447
feeds = rss_finder.get_feeds(url)
449
except ValueError, data:
462
feeds = rss_finder.get_feeds(url)
453
464
### Either no feeds were found for the url
454
465
### or the user typed in an invalid url.
456
467
self.progressbar_pulse_stop()
458
469
gobject.idle_add(self._idle_func, self.feed_liststore.append, [None,
469
484
self.feeds_to_add.append(elem)
471
gobject.idle_add(self._idle_func,
472
self.feed_liststore.append,
473
[True, feed_title, feed_url])
477
gobject.idle_add(self._idle_func, self.ok_button.set_sensitive, True)
481
for widget in self.dialog.get_children()[0].get_children():
482
gobject.idle_add(self._idle_func, widget.set_sensitive, True)
487
self.progressbar_pulse_stop()
489
gobject.idle_add(self._idle_func,
490
self.feed_liststore.append,
491
[True, feed_title, feed_url])
494
### If the user closed the Dialog all of its widgets will
496
if not self.destroyed:
499
gobject.idle_add(self._idle_func, self.ok_button.set_sensitive, True)
501
self.set_loading(False)
503
self.progressbar_pulse_stop()
505
def get_loading(self):
508
def set_loading(self, loading):
510
self.loading = loading
515
for widget in self.dialog.get_children()[0]:
516
if widget.get_name() != "add_dialog_hbox":
517
gobject.idle_add(self._idle_func, widget.set_sensitive, sens)
519
gobject.idle_add(self._idle_func, self.entry.set_sensitive, sens)
522
def change_icon(self):
524
#self.load_feed_button.remove(child)
525
stock_id = [gtk.STOCK_OK, gtk.STOCK_STOP][loading]
527
image = gtk.image_new_from_stock(stock_id,
528
gtk.ICON_SIZE_BUTTON)
530
self.load_feed_button.set_image(image)
532
gobject.idle_add(self._idle_func, change_icon, self)
490
534
def on_load_feed_button_clicked(self, button, data=None):
492
url = self.entry.get_text()
495
### Make every button except cancel
497
for widget in self.dialog.get_children()[0].get_children():
498
if not widget.get_name() == "dialog-action_area4":
499
widget.set_sensitive(False)
501
self.ok_button.set_sensitive(False)
502
#self.cancel_button.set_sensitive(True)
505
self.thread = threading.Thread(target=self.show_feeds, args=[url])
536
if self.get_loading() == False:
538
url = self.entry.get_text()
543
self.set_loading(True)
546
self.thread = threading.Thread(target=self.show_feeds, args=[url])
549
lock = threading.Lock()
552
self.set_loading(False)
553
self.progressbar_pulse_stop()
557
def on_cat_dialog_entry_changed(self, entry, data=None):
559
active = bool(self.cat_dialog_entry.get_text().strip())
560
self.cat_dialog_ok_button.set_sensitive(active)
510
562
def on_add_dialog_combobox_changed(self, combobox, data=None):
512
564
model = combobox.get_model()
566
old_active = combobox.get_active()
514
568
iter = combobox.get_active_iter()
515
569
active = combobox.get_active()
522
576
### open "new category" dialog.
523
577
if active != -1 and model[active].path == model[-1].path:
580
### Remove the "New..." item.
525
581
model.remove(model[-1].iter)
527
583
response = self.cat_dialog.run()
528
584
self.cat_dialog.hide()
530
name = self.cat_dialog_entry.get_text()
535
parent_key = self.cat_liststore.get_value(
536
self.cat_dialog_cbb.get_active_iter(), 2)
539
parent = self.FM.get_category(parent_key)
543
element = self.FM.add_category(name, parent)
545
self.FM.populate_cbb_liststore(model)
586
if response == gtk.RESPONSE_OK:
588
name = self.cat_dialog_entry.get_text()
592
parent_key = self.cat_liststore.get_value(
593
self.cat_dialog_cbb.get_active_iter(), 2)
596
parent = self.FM.get_category(parent_key)
600
element = self.FM.add_category(name, parent)
602
self.FM.populate_cbb_liststore(model)
604
### Re-add the "New..." item.
547
605
model.append([self.new_pixbuf, _("New..."), 0])
549
iterator = zip(model, range(len(model)))
550
for row, n in iterator:
552
if self.FM.get_category(row[2]) is element:
553
self.cbb.set_active(n)
607
### Set the combobox to be on the newly created
608
### category or None if we didn't create one.
611
iterator = zip(model, range(len(model)))
612
for row, n in iterator:
614
if self.FM.get_category(row[2]) is element:
615
self.cbb.set_active(n)
617
self.cbb.set_active(0)
620
self.cbb.set_active(old_active)
573
category = self.FM.get_category(key) #ELEMENTS[key]
639
category = self.FM.get_category(key)
575
641
### The feed elements created in show_feeds are not
576
642
### yet added to the ElementTree.
577
643
lock = threading.Lock()
579
for elem in self.feeds_to_add:
580
self.FM.move_feed(elem, category)
645
iterator = zip(self.feeds_to_add, self.feed_liststore)
646
for elem, row in iterator:
647
### Don't add feeds that were unchecked.
649
self.FM.move_feed(elem, category)
652
lock = threading.Lock()
655
self.destroyed = True
583
657
self.dialog.destroy()