def on_menu_databases_restore(self, *_):
        selected_databases = self._databases.selected
        if len(selected_databases) == 1 and selected_databases[0].db_name.find('backup$') == 0:
            restore_database = True
            source_name = selected_databases[0].db_name
            target_name = source_name[7::]

            try:
                self._model.get_database(target_name)
                response = GtkHelper.run_dialog(self._win, Gtk.MessageType.QUESTION,
                                                Gtk.ButtonsType.YES_NO,
                                                "Target database already exists, continue?")

                restore_database = response is Gtk.ResponseType.YES
            except:
                pass

            if restore_database:
                repl = Replication(self._model, source_name, target_name, drop_first=True, create=True)
                self.queue_replication(repl)
    def on_menu_databases_backup(self, *_):
        for selected_database in self._databases.selected:
            if selected_database.db_name.find('backup$') < 0:
                backup_database = True
                source_name = selected_database.db_name
                target_name = 'backup$' + source_name

                try:
                    self._model.get_database(target_name)
                    response = GtkHelper.run_dialog(
                        self._win,
                        Gtk.MessageType.QUESTION,
                        Gtk.ButtonsType.YES_NO,
                        "Target database '{}' already exists, continue?".format(target_name))

                    backup_database = response is Gtk.ResponseType.YES
                except:
                    pass

                if backup_database:
                    repl = Replication(self._model, source_name, target_name, drop_first=True, create=True)
                    self.queue_replication(repl)