예제 #1
0
    def show(self):
        self.glade = gtk.glade.XML(get_resource("dialog_cookie.glade"))
        self.glade.signal_autoconnect({
            "on_button_add_cookie_data_clicked":
            self.on_button_add_cookie_data_clicked,
            "on_button_remove_cookie_data_clicked":
            self.on_button_remove_cookie_data_clicked,
            "on_button_save_clicked":
            self.on_button_save_clicked,
            "on_button_cancel_clicked":
            self.on_button_cancel_clicked
        })
        self.treeview = self.setup_cookie_list()

        self.values = []
        # Add data
        if self.cookie_data:
            for v in self.cookie_data["value"]:
                self.values.append(v)
            self.glade.get_widget("text_site").set_text(
                self.cookie_data["site"])

        # Update cookie data list
        self.update_cookie_values_list()

        cookie_list = self.glade.get_widget("viewport_list_cookie_values")
        cookie_list.add(self.treeview)
        cookie_list.show_all()
        self.dialog = self.glade.get_widget("dialog_cookie")
        self.dialog.set_transient_for(component.get("Preferences").pref_dialog)
        self.dialog.run()
    def show(self):
        self.glade = gtk.glade.XML(get_resource("dialog_cookie.glade"))
        self.glade.signal_autoconnect({
                "on_button_add_cookie_data_clicked": self.on_button_add_cookie_data_clicked,
                "on_button_remove_cookie_data_clicked": self.on_button_remove_cookie_data_clicked,
                "on_button_save_clicked": self.on_button_save_clicked,
                "on_button_cancel_clicked": self.on_button_cancel_clicked
        })
        self.treeview = self.setup_cookie_list()

        self.values = []
        # Add data
        if self.cookie_data:
            for v in self.cookie_data["value"]:
                self.values.append(v)
            self.glade.get_widget("text_site").set_text(self.cookie_data["site"])

        # Update cookie data list
        self.update_cookie_values_list()

        cookie_list = self.glade.get_widget("viewport_list_cookie_values")
        cookie_list.add(self.treeview)
        cookie_list.show_all()
        self.dialog = self.glade.get_widget("dialog_cookie")
        self.dialog.set_transient_for(component.get("Preferences").pref_dialog)
        self.dialog.run()
예제 #3
0
    def update_data_from_config(self, config):
        self.subscriptions = config.get('subscriptions', {})
        self.rssfeeds = config.get('rssfeeds', {})
        self.cookies = config.get('cookies', {})
        self.email_messages = config.get('email_messages', {})
        self.email_config = config.get('email_configurations', {})

        # When connecting to a second host, the glade object returns None for all the fields,
        # so reload the glade file here to avoid this problem.
        if self.glade.get_widget("textview_default_message") is None:
            self.glade = gtk.glade.XML(get_resource("yarss_main.glade"))

        # Update GUI
        self.update_subscription_list(self.subscriptions_store)
        self.update_rssfeeds_list(self.rssfeeds_store)
        self.update_cookies_list(self.cookies_store)
        self.update_email_messages_list(self.email_messages_store)

        # Set selection for each treeview
        if self.selected_path_subscriptions and self.subscriptions_treeview.get_selection():
            self.subscriptions_treeview.get_selection().select_path(self.selected_path_subscriptions)

        if self.selected_path_rssfeeds and self.rssfeeds_treeview.get_selection():
            self.rssfeeds_treeview.get_selection().select_path(self.selected_path_rssfeeds)

        if self.selected_path_email_message and self.email_messages_treeview.get_selection():
            self.email_messages_treeview.get_selection().select_path(self.selected_path_email_message)

        if self.selected_path_cookies and self.cookies_treeview.get_selection():
            self.cookies_treeview.get_selection().select_path(self.selected_path_cookies)

        # Email configurations
        send_email_checkbox = self.glade.get_widget("checkbutton_send_email_on_torrent_events")
        from_addr = self.glade.get_widget("txt_email_from")
        smtp_server = self.glade.get_widget("txt_email_server")
        smtp_port = self.glade.get_widget("txt_email_port")
        smtp_username = self.glade.get_widget("txt_email_username")
        smtp_password = self.glade.get_widget("txt_email_password")
        enable_auth = self.glade.get_widget("checkbox_email_enable_authentication")

        default_to_address = self.glade.get_widget("txt_default_to_address")
        default_subject = self.glade.get_widget("txt_default_subject")
        default_message = self.glade.get_widget("textview_default_message")

        default_message = default_message.get_buffer()
        from_addr.set_text(self.email_config["from_address"])
        smtp_server.set_text(self.email_config["smtp_server"])
        smtp_port.set_text(self.email_config["smtp_port"])

        enable_auth.set_active(self.email_config["smtp_authentication"])
        smtp_username.set_text(self.email_config["smtp_username"])
        smtp_password.set_text(self.email_config["smtp_password"])

        default_to_address.set_text(self.email_config["default_email_to_address"])
        default_subject.set_text(self.email_config["default_email_subject"])
        default_message.set_text(self.email_config["default_email_message"])

        # Must be last, since it will cause callback on
        # method on_checkbutton_send_email_on_torrent_events_toggled
        send_email_checkbox.set_active(self.email_config["send_email_on_torrent_events"])
    def setup(self):
        self.glade = gtk.glade.XML(get_resource("dialog_subscription.glade"))
        self.glade.signal_autoconnect({
                "on_txt_regex_include_changed":         self.on_txt_regex_changed,
                "on_txt_regex_exclude_changed":         self.on_txt_regex_changed,
                "on_button_cancel_clicked":             self.on_button_cancel_clicked,
                "on_button_save_clicked":               self.on_button_save_subscription_clicked,
                "on_button_add_notication_clicked":     self.on_button_add_notication_clicked,
                "on_button_remove_notication_clicked":  self.on_button_remove_notication_clicked,
                "on_rssfeed_selected":                  self.on_rssfeed_selected,
                "on_panel_matching_move_handle":        self.on_panel_matching_move_handle,
                "on_button_fetch_clicked":              self.on_rssfeed_selected,
                "on_button_last_matched_reset_clicked": self.on_button_last_matched_reset_clicked,
                "on_button_last_matched_now_clicked":   self.on_button_last_matched_now_clicked,
                })

        # This is to make testing of the GUI possible (tests/)
        self.method_perform_rssfeed_selection = self.perform_rssfeed_selection

        self.dialog = self.glade.get_widget("window_subscription")
        self.setup_rssfeed_combobox()
        self.setup_move_completed_combobox()
        self.setup_download_location_combobox()
        self.setup_messages_combobox()
        self.setup_messages_list()
        self.treeview = self.create_matching_tree()
        self.load_subscription_data()
예제 #5
0
 def __init__(self, gtkUI, logger, subscription_data, rssfeeds,
              move_completed_list, download_location_list, email_messages,
              cookies):
     self.gtkUI = gtkUI
     self.rssfeeds = rssfeeds
     self.move_completed_list = move_completed_list
     self.download_location_list = download_location_list
     self.email_messages = email_messages
     self.rssfeeds_dict = {}
     self.matching_store = None
     self.icon_matching = gtk.gdk.pixbuf_new_from_file(
         get_resource("match.png"))
     self.icon_nonmatching = gtk.gdk.pixbuf_new_from_file(
         get_resource("no_match.png"))
     self.subscription_data = subscription_data
     self.cookies = cookies
     self.log = logger
     self.rssfeedhandler = RSSFeedHandler(self.log)
예제 #6
0
    def createUI(self):
        self.glade = gtk.glade.XML(get_resource("yarss_main.glade"))
        self.glade.signal_autoconnect({
                "on_button_add_subscription_clicked":       self.on_button_add_subscription_clicked,
                "on_button_delete_subscription_clicked":    self.on_button_delete_subscription_clicked,
                "on_button_edit_subscription_clicked" :     self.on_button_edit_subscription_clicked,

                "on_button_add_rssfeed_clicked":            self.on_button_add_rssfeed_clicked,
                "on_button_delete_rssfeed_clicked":         self.on_button_delete_rssfeed_clicked,
                "on_button_edit_rssfeed_clicked" :          self.on_button_edit_rssfeed_clicked,

                "on_button_add_cookie_clicked" :            self.on_button_add_cookie_clicked,
                "on_button_edit_cookie_clicked" :           self.on_button_edit_cookie_clicked,
                "on_button_delete_cookie_clicked":          self.on_button_delete_cookie_clicked,

                "on_button_add_message_clicked" :           self.on_button_add_message_clicked,
                "on_button_edit_message_clicked" :          self.on_button_edit_message_clicked,
                "on_button_delete_message_clicked":         self.on_button_delete_message_clicked,

                "on_checkbox_email_authentication_toggled": self.on_checkbox_email_authentication_toggled,
                "on_checkbutton_send_email_on_torrent_events_toggled":
                self.on_checkbutton_send_email_on_torrent_events_toggled
                })

        component.get("Preferences").add_page("YaRSS2", self.glade.get_widget("notebook_main"))
        component.get("PluginManager").register_hook("on_apply_prefs", self.on_apply_prefs)
        component.get("PluginManager").register_hook("on_show_prefs", self.on_show_prefs)
        self.gtkui_log = GTKUI_logger(self.glade.get_widget('textview_log'))
        self.log = Logger(gtkui_logger=self.gtkui_log)
        self.torrent_handler = TorrentHandler(self.log)

        self.subscriptions = {}
        self.rssfeeds = {}

        self.selected_path_subscriptions = None
        self.selected_path_rssfeeds = None
        self.selected_path_email_message = None
        self.selected_path_cookies = None

        # key, enabled, name, site, download_location
        self.subscriptions_store = gtk.ListStore(str, bool, str, str, str, str, str)

        # key, active, name, site, Update interval, Last update, subscripions, URL
        self.rssfeeds_store = gtk.ListStore(str, bool, str, str, str, str, str, str)

        # key, active, site, value
        self.cookies_store = gtk.ListStore(str, bool, str, str)

        # key, active, name, to-address, subject, message-content
        self.email_messages_store = gtk.ListStore(str, bool, str, str, str, str)

        self.create_subscription_pane()
        self.create_rssfeeds_pane()
        self.create_cookies_pane()
        self.create_email_messages_pane()
    def __init__(self, gtkUI, rssfeed):
        self.gtkUI = gtkUI
        self.rssfeed = rssfeed

        self.glade = gtk.glade.XML(get_resource("dialog_rssfeed.glade"))
        self.glade.signal_autoconnect({
                "on_button_cancel_clicked":self.on_button_cancel_clicked,
                "on_button_save_clicked": self.on_button_save_clicked
        })

        self.populate_data_fields()
 def __init__(self, gtkUI,
              logger,
              subscription_data,
              rssfeeds,
              move_completed_list,
              download_location_list,
              email_messages,
              cookies):
     self.gtkUI = gtkUI
     self.rssfeeds = rssfeeds
     self.move_completed_list = move_completed_list
     self.download_location_list = download_location_list
     self.email_messages = email_messages
     self.rssfeeds_dict = {}
     self.matching_store = None
     self.icon_matching = gtk.gdk.pixbuf_new_from_file(get_resource("match.png"))
     self.icon_nonmatching = gtk.gdk.pixbuf_new_from_file(get_resource("no_match.png"))
     self.subscription_data = subscription_data
     self.cookies = cookies
     self.log = logger
     self.rssfeedhandler = RSSFeedHandler(self.log)
    def __init__(self, gtkUI, rssfeed):
        self.gtkUI = gtkUI
        self.rssfeed = rssfeed

        self.glade = gtk.glade.XML(get_resource("dialog_rssfeed.glade"))
        self.glade.signal_autoconnect({
            "on_button_cancel_clicked":
            self.on_button_cancel_clicked,
            "on_button_save_clicked":
            self.on_button_save_clicked
        })

        self.populate_data_fields()
 def show(self):
     self.glade = gtk.glade.XML(get_resource("dialog_email_message.glade"))
     self.glade.signal_autoconnect({
             "on_button_save_clicked": self.on_button_save_clicked,
             "on_button_cancel_clicked": self.on_button_cancel_clicked
     })
     # Add data
     if self.message_data is not None:
         self.set_initial_data(self.message_data)
     
     self.dialog = self.glade.get_widget("dialog_email_message")
     self.dialog.set_transient_for(component.get("Preferences").pref_dialog)
     self.dialog.run()
예제 #11
0
    def show(self):
        self.glade = gtk.glade.XML(get_resource("dialog_email_message.glade"))
        self.glade.signal_autoconnect({
            "on_button_save_clicked":
            self.on_button_save_clicked,
            "on_button_cancel_clicked":
            self.on_button_cancel_clicked
        })
        # Add data
        if self.message_data is not None:
            self.set_initial_data(self.message_data)

        self.dialog = self.glade.get_widget("dialog_email_message")
        self.dialog.set_transient_for(component.get("Preferences").pref_dialog)
        self.dialog.run()
예제 #12
0
 def test_feedparser_ampersant_in_url(self):
     """A bug in feedparser resulted in URL containing &amp when XML Parser was not available.
     This test disables XML Parser and verifies that the URL is correct
     """
     from yarss2.lib import feedparser
     from yarss2 import common
     file_path = common.get_resource("rss_with_ampersand_link.rss", path="tests")
     
     # This is the link in rss_with_ampersand_link.rss
     url = "http://hostname.com/Fetch?hash=2f21d4e59&digest=865178f9bc"
     expected = "http://hostname.com/Fetch?hash=2f21d4e59&digest=865178f9bc"
     
     # Disable XML Parser
     feedparser._XML_AVAILABLE = 0
     parsed_feeds = feedparser.parse(file_path)
     
     for item in parsed_feeds['items']:
         self.assertEquals(expected, item["link"])
         break
예제 #13
0
    def setup(self):
        self.glade = gtk.glade.XML(get_resource("dialog_subscription.glade"))
        self.glade.signal_autoconnect({
            "on_txt_regex_include_changed":
            self.on_txt_regex_changed,
            "on_txt_regex_exclude_changed":
            self.on_txt_regex_changed,
            "on_button_cancel_clicked":
            self.on_button_cancel_clicked,
            "on_button_save_clicked":
            self.on_button_save_subscription_clicked,
            "on_button_add_notication_clicked":
            self.on_button_add_notication_clicked,
            "on_button_remove_notication_clicked":
            self.on_button_remove_notication_clicked,
            "on_rssfeed_selected":
            self.on_rssfeed_selected,
            "on_panel_matching_move_handle":
            self.on_panel_matching_move_handle,
            "on_button_fetch_clicked":
            self.on_rssfeed_selected,
            "on_button_last_matched_reset_clicked":
            self.on_button_last_matched_reset_clicked,
            "on_button_last_matched_now_clicked":
            self.on_button_last_matched_now_clicked,
        })

        # This is to make testing of the GUI possible (tests/)
        self.method_perform_rssfeed_selection = self.perform_rssfeed_selection

        self.dialog = self.glade.get_widget("window_subscription")
        self.setup_rssfeed_combobox()
        self.setup_move_completed_combobox()
        self.setup_download_location_combobox()
        self.setup_messages_combobox()
        self.setup_messages_list()
        self.treeview = self.create_matching_tree()
        self.load_subscription_data()
예제 #14
0
    def createUI(self):
        self.glade = gtk.glade.XML(get_resource("yarss_main.glade"))
        self.glade.signal_autoconnect({
            "on_button_add_subscription_clicked":
            self.on_button_add_subscription_clicked,
            "on_button_delete_subscription_clicked":
            self.on_button_delete_subscription_clicked,
            "on_button_edit_subscription_clicked":
            self.on_button_edit_subscription_clicked,
            "on_button_add_rssfeed_clicked":
            self.on_button_add_rssfeed_clicked,
            "on_button_delete_rssfeed_clicked":
            self.on_button_delete_rssfeed_clicked,
            "on_button_edit_rssfeed_clicked":
            self.on_button_edit_rssfeed_clicked,
            "on_button_add_cookie_clicked":
            self.on_button_add_cookie_clicked,
            "on_button_edit_cookie_clicked":
            self.on_button_edit_cookie_clicked,
            "on_button_delete_cookie_clicked":
            self.on_button_delete_cookie_clicked,
            "on_button_add_message_clicked":
            self.on_button_add_message_clicked,
            "on_button_edit_message_clicked":
            self.on_button_edit_message_clicked,
            "on_button_delete_message_clicked":
            self.on_button_delete_message_clicked,
            "on_checkbox_email_authentication_toggled":
            self.on_checkbox_email_authentication_toggled,
            "on_checkbutton_send_email_on_torrent_events_toggled":
            self.on_checkbutton_send_email_on_torrent_events_toggled
        })

        component.get("Preferences").add_page(
            "YaRSS2", self.glade.get_widget("notebook_main"))
        component.get("PluginManager").register_hook("on_apply_prefs",
                                                     self.on_apply_prefs)
        component.get("PluginManager").register_hook("on_show_prefs",
                                                     self.on_show_prefs)
        self.gtkui_log = GTKUI_logger(self.glade.get_widget('textview_log'))
        self.log = Logger(gtkui_logger=self.gtkui_log)
        self.torrent_handler = TorrentHandler(self.log)

        self.subscriptions = {}
        self.rssfeeds = {}

        self.selected_path_subscriptions = None
        self.selected_path_rssfeeds = None
        self.selected_path_email_message = None
        self.selected_path_cookies = None

        # key, enabled, name, site, download_location
        self.subscriptions_store = gtk.ListStore(str, bool, str, str, str, str,
                                                 str)

        # key, active, name, site, Update interval, Last update, subscripions, URL
        self.rssfeeds_store = gtk.ListStore(str, bool, str, str, str, str, str,
                                            str)

        # key, active, site, value
        self.cookies_store = gtk.ListStore(str, bool, str, str)

        # key, active, name, to-address, subject, message-content
        self.email_messages_store = gtk.ListStore(str, bool, str, str, str,
                                                  str)

        self.create_subscription_pane()
        self.create_rssfeeds_pane()
        self.create_cookies_pane()
        self.create_email_messages_pane()
예제 #15
0
    def update_data_from_config(self, config):
        self.subscriptions = config.get('subscriptions', {})
        self.rssfeeds = config.get('rssfeeds', {})
        self.cookies = config.get('cookies', {})
        self.email_messages = config.get('email_messages', {})
        self.email_config = config.get('email_configurations', {})

        # When connecting to a second host, the glade object returns None for all the fields,
        # so reload the glade file here to avoid this problem.
        if self.glade.get_widget("textview_default_message") is None:
            self.glade = gtk.glade.XML(get_resource("yarss_main.glade"))

        # Update GUI
        self.update_subscription_list(self.subscriptions_store)
        self.update_rssfeeds_list(self.rssfeeds_store)
        self.update_cookies_list(self.cookies_store)
        self.update_email_messages_list(self.email_messages_store)

        # Set selection for each treeview
        if self.selected_path_subscriptions and self.subscriptions_treeview.get_selection(
        ):
            self.subscriptions_treeview.get_selection().select_path(
                self.selected_path_subscriptions)

        if self.selected_path_rssfeeds and self.rssfeeds_treeview.get_selection(
        ):
            self.rssfeeds_treeview.get_selection().select_path(
                self.selected_path_rssfeeds)

        if self.selected_path_email_message and self.email_messages_treeview.get_selection(
        ):
            self.email_messages_treeview.get_selection().select_path(
                self.selected_path_email_message)

        if self.selected_path_cookies and self.cookies_treeview.get_selection(
        ):
            self.cookies_treeview.get_selection().select_path(
                self.selected_path_cookies)

        # Email configurations
        send_email_checkbox = self.glade.get_widget(
            "checkbutton_send_email_on_torrent_events")
        from_addr = self.glade.get_widget("txt_email_from")
        smtp_server = self.glade.get_widget("txt_email_server")
        smtp_port = self.glade.get_widget("txt_email_port")
        smtp_username = self.glade.get_widget("txt_email_username")
        smtp_password = self.glade.get_widget("txt_email_password")
        enable_auth = self.glade.get_widget(
            "checkbox_email_enable_authentication")

        default_to_address = self.glade.get_widget("txt_default_to_address")
        default_subject = self.glade.get_widget("txt_default_subject")
        default_message = self.glade.get_widget("textview_default_message")

        default_message = default_message.get_buffer()
        from_addr.set_text(self.email_config["from_address"])
        smtp_server.set_text(self.email_config["smtp_server"])
        smtp_port.set_text(self.email_config["smtp_port"])

        enable_auth.set_active(self.email_config["smtp_authentication"])
        smtp_username.set_text(self.email_config["smtp_username"])
        smtp_password.set_text(self.email_config["smtp_password"])

        default_to_address.set_text(
            self.email_config["default_email_to_address"])
        default_subject.set_text(self.email_config["default_email_subject"])
        default_message.set_text(self.email_config["default_email_message"])

        # Must be last, since it will cause callback on
        # method on_checkbutton_send_email_on_torrent_events_toggled
        send_email_checkbox.set_active(
            self.email_config["send_email_on_torrent_events"])