Exemplo n.º 1
0
    def __init__(self, handlers=None, initial=None, cb=None, parent=None):
        """
        :param handlers: dictionary of saved handlers from server
        :param initial: handler_id of handler to load initially
        :return:
        """
        self.handlers = handlers if handlers else {}
        self.cb = cb

        try:
            initial_settings = handlers[initial]
        except KeyError:
            initial_settings = None

        self.glade = gtk.glade.XML(get_resource("handler_editor.glade"))
        super(self.__class__, self).__init__(self.glade, initial_settings)
        self.window = self.glade.get_widget("window1")
        self.window.set_modal(True)
        self.handler_name_combo_entry = self.glade.get_widget("handler_name_combo_entry")
        inflate_list_store_combo(handlers.keys(), self.handler_name_combo_entry)
        if initial:
            self.handler_name_combo_entry.get_child().set_text(initial)

        signal_dictionary = {
            "on_handler_name_combo_changed": self.on_handler_changed,
            "on_save_changes_clicked": self.on_save_changes_clicked,
            "on_cancel_changes_clicked": self.on_cancel_changes_clicked,
            "on_query_checkbox_toggled": self.on_query_checkbox_toggled,
            "on_download_subs_checkbox_toggled": self.on_download_subs_checkbox_toggled,
        }
        self.glade.signal_autoconnect(signal_dictionary)

        if parent:
            self.window.set_transient_for(parent)
        self.window.show_all()
Exemplo n.º 2
0
    def __init__(self, handlers=None, initial=None, cb=None, parent=None):
        """
        :param handlers: dictionary of saved handlers from server
        :param initial: handler_id of handler to load initially
        :return:
        """
        self.handlers = handlers if handlers else {}
        self.cb = cb

        try:
            initial_settings = handlers[initial]
        except KeyError:
            initial_settings = None

        self.glade = gtk.glade.XML(get_resource("handler_editor.glade"))
        super(self.__class__, self).__init__(self.glade, initial_settings)
        self.window = self.glade.get_widget("window1")
        self.window.set_modal(True)
        self.handler_name_combo_entry = self.glade.get_widget("handler_name_combo_entry")
        inflate_list_store_combo(handlers.keys(), self.handler_name_combo_entry)
        if initial:
            self.handler_name_combo_entry.get_child().set_text(initial)

        signal_dictionary = {
            "on_handler_name_combo_changed": self.on_handler_changed,
            "on_save_changes_clicked": self.on_save_changes_clicked,
            "on_cancel_changes_clicked": self.on_cancel_changes_clicked,
            "on_query_checkbox_toggled": self.on_query_checkbox_toggled,
            "on_download_subs_checkbox_toggled": self.on_download_subs_checkbox_toggled,
        }
        self.glade.signal_autoconnect(signal_dictionary)

        if parent:
            self.window.set_transient_for(parent)
        self.window.show_all()
Exemplo n.º 3
0
    def on_save_handlers_clicked(self, *args):
        handler_combo = self.glade.get_widget("saved_handlers_combo")
        handler_name = handler_combo.get_child().get_text()
        if not handler_name:
            return
        data = self.handler_ui.collect_dialog_settings()
        data['query_override'] = None

        if handler_name in self.saved_handlers:
            message = "Overwrite the {0} profile?".format(handler_name)
            dialog = user_messenger.ResponseDialog("Confirm Overwrite",
                                                   message=message,
                                                   modal=True)
            response = dialog.run()
            dialog.destroy()
            if response != gtk.RESPONSE_ACCEPT:
                return
            #  preserve query override for pre-exsisting handlers (from config only)
            data['query_override'] = self.saved_handlers[handler_name][
                'query_override']

        self.saved_handlers[handler_name] = data
        log.debug("Sending handler configurations to server.")
        client.filebottool.update_handlers(self.saved_handlers)
        inflate_list_store_combo(self.saved_handlers, handler_combo)
Exemplo n.º 4
0
    def on_save_handlers_clicked(self, *args):
        handler_combo = self.glade.get_widget("saved_handlers_combo")
        handler_name = handler_combo.get_child().get_text()
        if not handler_name:
            return
        data = self.handler_ui.collect_dialog_settings()
        data['query_override'] = None

        if handler_name in self.saved_handlers:
            message = "Overwrite the {0} profile?".format(handler_name)
            dialog = user_messenger.ResponseDialog(
                "Confirm Overwrite", message=message, modal=True)
            response = dialog.run()
            dialog.destroy()
            if response != gtk.RESPONSE_ACCEPT:
                return
            #  preserve query override for pre-exsisting handlers (from config only)
            data['query_override'] = self.saved_handlers[handler_name]['query_override']

        self.saved_handlers[handler_name] = data
        log.debug("Sending handler configurations to server.")
        client.filebottool.update_handlers(self.saved_handlers)
        inflate_list_store_combo(self.saved_handlers, handler_combo)
Exemplo n.º 5
0
    def init_combo_boxes(self, combo_data):
        """retrieves valid values for combo boxes and inflates them"""
        self.monitor_changes = False

        log.debug("building database combo box")
        databases = combo_data["valid_databases"]
        inflate_list_store_combo(databases, self.database_combo)

        log.debug("building rename action combo box")
        rename_actions = combo_data["valid_rename_actions"]
        inflate_list_store_combo(rename_actions, self.rename_action_combo)

        log.debug("building on conflict combo box")
        on_conflicts = combo_data["valid_on_conflicts"]
        inflate_list_store_combo(on_conflicts, self.on_conflict_combo)

        log.debug("building episode order combo box")
        episode_orders = combo_data["valid_episode_orders"]
        inflate_list_store_combo(episode_orders, self.episode_order_combo)

        if self.initial_settings:
            self.populate_with_settings(self.initial_settings)
        self.populated = True
        self.monitor_changes = True
Exemplo n.º 6
0
    def init_combo_boxes(self, combo_data):
        """retrieves valid values for combo boxes and inflates them"""
        self.monitor_changes = False

        log.debug("building database combo box")
        databases = combo_data["valid_databases"]
        inflate_list_store_combo(databases, self.database_combo)

        log.debug("building rename action combo box")
        rename_actions = combo_data["valid_rename_actions"]
        inflate_list_store_combo(rename_actions, self.rename_action_combo)

        log.debug("building on conflict combo box")
        on_conflicts = combo_data["valid_on_conflicts"]
        inflate_list_store_combo(on_conflicts, self.on_conflict_combo)

        log.debug("building episode order combo box")
        episode_orders = combo_data["valid_episode_orders"]
        inflate_list_store_combo(episode_orders, self.episode_order_combo)

        if self.initial_settings:
            self.populate_with_settings(self.initial_settings)
        self.populated = True
        self.monitor_changes = True
Exemplo n.º 7
0
    def __init__(self, dialog_settings):
        """sets up the dialog using the settings supplied by the server
        Also loads relevant glade widgets as members

        Args:
         dialog_settings: A dictionary containing the settings to populate.
        """
        self.watch_for_setting_change = False
        self.messenger = user_messenger.UserMessenger()
        self.torrent_ids = dialog_settings["torrent_ids"]
        self.torrent_id = None
        self.files = []
        self.current_save_path = ""
        self.glade = gtk.glade.XML(get_resource("rename.glade"))

        if len(dialog_settings["torrent_ids"]) == 1:
            self.torrent_id = dialog_settings["torrent_ids"][0]
            self.files = dialog_settings["files"]
            self.current_save_path = dialog_settings["torrent_save_path"]

        self.ui_settings = dialog_settings["rename_dialog_last_settings"]
        handler_name = self.ui_settings['handler_name']
        if handler_name in dialog_settings['saved_handlers']:
            try:
                self.ui_settings = dialog_settings['saved_handlers'][handler_name]
            except KeyError:
                log.error('handler {0} could not be found'.format(handler_name))

        self.handler_ui = HandlerUI(self.glade, self.ui_settings)

        self.server_filebot_version = dialog_settings["filebot_version"]

        self.window = self.glade.get_widget("rename_dialog")
        self.window.set_transient_for(component.get("MainWindow").window)

        fb_icon = self.glade.get_widget("execute_icon")
        image = get_resource("fb_icon24.png")
        fb_icon.set_from_file(image)

        self.original_files_treeview = self.glade.get_widget("files_treeview")
        self.new_files_treeview = self.glade.get_widget("new_files_treeview")
        self.history_files_treeview = self.glade.get_widget("history_files_treeview")

        if not self.torrent_id:
            self.glade.get_widget("tree_pane").hide()
            self.glade.get_widget("do_dry_run").hide()
            self.history_files_treeview.hide()
            # self.glade.get_widget("dialog_notebook").set_show_tabs(False)
            # self.glade.get_widget("query_entry").set_sensitive(False)
            # self.glade.get_widget("query_label").set_sensitive(False)

        signal_dictionary = {
            "on_toggle_advanced": self.on_toggle_advanced,
            "on_do_dry_run_clicked": self.on_do_dry_run_clicked,
            "on_format_help_clicked": self.on_format_help_clicked,
            "on_execute_filebot_clicked": self.on_execute_filebot_clicked,
            "on_revert_button_clicked": self.on_revert_button_clicked,
            "on_download_subs_toggled": self.on_download_subs_toggled,
            "on_setting_changed": self.on_setting_changed,
            "on_save_handlers_clicked": self.on_save_handlers_clicked,
            "on_load_saved_handler": self.on_load_saved_handler,
            "on_saved_handlers_entry_focus": self.on_saved_handers_entry_focus,
        }

        self.glade.signal_autoconnect(signal_dictionary)

        if self.server_filebot_version:
            self.glade.get_widget("filebot_version").set_text(self.server_filebot_version)
        else:

            def open_filebot_homepage(*args):
                webbrowser.open(r'http://www.filebot.net', new=2)
                log.debug('opening filebot homepage')

            signal = {"on_filebot_version_clicked": open_filebot_homepage}
            self.glade.signal_autoconnect(signal)
            self.toggle_button(self.glade.get_widget('do_dry_run'))
            self.toggle_button(self.glade.get_widget('execute_filebot'))

        advanced_options = self.glade.get_widget("advanced_options")
        show_advanced = dialog_settings['rename_dialog_last_settings']['show_advanced']
        if advanced_options.get_visible() != show_advanced:
            self.on_toggle_advanced()

        download_subs = self.handler_ui.download_subs_checkbox
        if download_subs.get_active() != self.glade.get_widget(
                "subs_options").get_sensitive():
            self.on_download_subs_toggled()

        self.init_treestore(
            self.original_files_treeview,
            "Original File Structure at {0}".format(self.current_save_path))
        self.init_treestore(self.new_files_treeview, "New File Structure")
        self.init_treestore(
            self.history_files_treeview,
            "Current File Structure at {0}".format(self.current_save_path))
        self.load_treestore(self.original_files_treeview, self.files)
        self.load_treestore(self.history_files_treeview, self.files)
        treeview = self.glade.get_widget("files_treeview")
        treeview.expand_all()

        self.saved_handlers = dialog_settings["saved_handlers"]
        inflate_list_store_combo(self.saved_handlers.keys(),
                                 self.glade.get_widget("saved_handlers_combo"))

        if handler_name:
            entry = self.glade.get_widget('saved_handlers_combo').get_child()
            log.debug('Setting text to {0}'.format(handler_name))
            entry.set_text(handler_name)

        self.watch_for_setting_change = True

        self.window.show()

        tree_pane = self.glade.get_widget("tree_pane")
        tree_pane.set_position(tree_pane.allocation.width / 2)
Exemplo n.º 8
0
    def __init__(self, dialog_settings, server_plugin_version):
        """sets up the dialog using the settings supplied by the server
        Also loads relevant glade widgets as members

        Args:
         dialog_settings: A dictionary containing the settings to populate.
        """
        self.server_plugin_version = server_plugin_version
        self.watch_for_setting_change = False
        self.messenger = user_messenger.UserMessenger()
        self.torrent_ids = dialog_settings["torrent_ids"]
        self.torrent_id = None
        self.files = []
        self.current_save_path = ""
        self.glade = gtk.glade.XML(get_resource("rename.glade"))

        if len(dialog_settings["torrent_ids"]) == 1:
            self.torrent_id = dialog_settings["torrent_ids"][0]
            self.files = dialog_settings["files"]
            self.current_save_path = dialog_settings["torrent_save_path"]

        self.ui_settings = dialog_settings["rename_dialog_last_settings"]
        handler_name = self.ui_settings['handler_name']
        if handler_name in dialog_settings['saved_handlers']:
            try:
                self.ui_settings = dialog_settings['saved_handlers'][handler_name]
            except KeyError:
                log.error('handler {0} could not be found'.format(handler_name))

        self.handler_ui = HandlerUI(self.glade, self.ui_settings)

        self.server_filebot_version = dialog_settings["filebot_version"]

        self.window = self.glade.get_widget("rename_dialog")
        self.window.set_transient_for(component.get("MainWindow").window)

        fb_icon = self.glade.get_widget("execute_icon")
        image = get_resource("fb_icon24.png")
        fb_icon.set_from_file(image)

        self.original_files_treeview = self.glade.get_widget("files_treeview")
        self.new_files_treeview = self.glade.get_widget("new_files_treeview")
        self.history_files_treeview = self.glade.get_widget("history_files_treeview")
        self.previous_treeview = self.glade.get_widget("previous_treeview")

        if not self.torrent_id:
            self.glade.get_widget("tree_pane").hide()
            self.glade.get_widget("do_dry_run").hide()
            self.history_files_treeview.hide()
            self.previous_treeview.hide()
            # self.glade.get_widget("dialog_notebook").set_show_tabs(False)
            # self.glade.get_widget("query_entry").set_sensitive(False)
            # self.glade.get_widget("query_label").set_sensitive(False)

        signal_dictionary = {
            "on_toggle_advanced": self.on_toggle_advanced,
            "on_do_dry_run_clicked": self.on_do_dry_run_clicked,
            "on_format_help_clicked": self.on_format_help_clicked,
            "on_execute_filebot_clicked": self.on_execute_filebot_clicked,
            "on_revert_button_clicked": self.on_revert_button_clicked,
            "on_download_subs_toggled": self.on_download_subs_toggled,
            "on_setting_changed": self.on_setting_changed,
            "on_save_handlers_clicked": self.on_save_handlers_clicked,
            "on_load_saved_handler": self.on_load_saved_handler,
            "on_saved_handlers_entry_focus": self.on_saved_handers_entry_focus,
        }

        self.glade.signal_autoconnect(signal_dictionary)

        if self.server_filebot_version:
            self.glade.get_widget("filebot_version").set_text(self.server_filebot_version)
        else:

            def open_filebot_homepage(*args):
                webbrowser.open(r'http://www.filebot.net', new=2)
                log.debug('opening filebot homepage')

            signal = {"on_filebot_version_clicked": open_filebot_homepage}
            self.glade.signal_autoconnect(signal)
            self.toggle_button(self.glade.get_widget('do_dry_run'))
            self.toggle_button(self.glade.get_widget('execute_filebot'))

        advanced_options = self.glade.get_widget("advanced_options")
        show_advanced = dialog_settings['rename_dialog_last_settings']['show_advanced']
        if advanced_options.get_visible() != show_advanced:
            self.on_toggle_advanced()

        download_subs = self.handler_ui.download_subs_checkbox
        if download_subs.get_active() != self.glade.get_widget(
                "subs_options").get_sensitive():
            self.on_download_subs_toggled()

        self.init_treestore(self.new_files_treeview, "New File Structure")
        self.init_treestore(self.original_files_treeview,
                            "Original File Structure at {0}".format(
                                self.current_save_path))
        self.load_treestore(self.original_files_treeview, self.files)
        self.init_treestore(self.history_files_treeview,
                            "Current File Structure at {0}".format(
                                self.current_save_path))
        self.load_treestore(self.history_files_treeview, self.files)
        if self.server_plugin_version > (1, 1, 12):
            self.init_treestore(self.previous_treeview, "Awaiting FileBot History...")
            self.get_history(self.torrent_id)
        else:
            header = "Server version does not support History!"
            self.init_treestore(self.previous_treeview, header)

        treeview = self.glade.get_widget("files_treeview")
        treeview.expand_all()

        self.saved_handlers = dialog_settings["saved_handlers"]
        inflate_list_store_combo(self.saved_handlers.keys(),
                                 self.glade.get_widget("saved_handlers_combo"))

        if handler_name:
            entry = self.glade.get_widget('saved_handlers_combo').get_child()
            log.debug('Setting text to {0}'.format(handler_name))
            entry.set_text(handler_name)

        self.watch_for_setting_change = True

        self.window.show()

        tree_pane = self.glade.get_widget("tree_pane")
        tree_pane.set_position(tree_pane.allocation.width / 2)