mirror of
https://git.deluge-torrent.org/deluge
synced 2025-08-03 23:18:40 +00:00
This commit is contained in:
parent
22225963d5
commit
b31fa3a6df
3 changed files with 6 additions and 266 deletions
257
src/bookmark.py
257
src/bookmark.py
|
@ -1,257 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# bookmark.py
|
|
||||||
#
|
|
||||||
# Copyright (C) Marcos Pinto 2007 <markybob@gmail.com>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, write to:
|
|
||||||
# The Free Software Foundation, Inc.,
|
|
||||||
# 51 Franklin Street, Fifth Floor
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# In addition, as a special exception, the copyright holders give
|
|
||||||
# permission to link the code of portions of this program with the OpenSSL
|
|
||||||
# library.
|
|
||||||
# You must obey the GNU General Public License in all respects for all of
|
|
||||||
# the code used other than OpenSSL. If you modify file(s) with this
|
|
||||||
# exception, you may extend this exception to your version of the file(s),
|
|
||||||
# but you are not obligated to do so. If you do not wish to do so, delete
|
|
||||||
# this exception statement from your version. If you delete this exception
|
|
||||||
# statement from all source files in the program, then also delete it here.
|
|
||||||
|
|
||||||
import cPickle
|
|
||||||
import os.path
|
|
||||||
import pygtk
|
|
||||||
pygtk.require("2.0")
|
|
||||||
import gtk.glade
|
|
||||||
import common
|
|
||||||
|
|
||||||
class BookmarkManager:
|
|
||||||
"""class builds and displays our internal bookmark manager"""
|
|
||||||
def __init__(self, parent, toolbutton):
|
|
||||||
"""show bookmark manager"""
|
|
||||||
self.bookmarks = []
|
|
||||||
self.toolbutton = toolbutton
|
|
||||||
self.menu = gtk.Menu()
|
|
||||||
self.parent = parent
|
|
||||||
self.widgets = gtk.glade.XML(common.get_glade_file("list_bookmarks.glade"))
|
|
||||||
self.list_dlg = self.widgets.get_widget("list_bookmarks_dialog")
|
|
||||||
self.treeview = self.widgets.get_widget("bookmarks_treeview")
|
|
||||||
self.add_bookmark_dialog = self.widgets.get_widget("add_bookmark_dialog")
|
|
||||||
self.edit_bookmark_dialog = self.widgets.get_widget("edit_bookmark_dialog")
|
|
||||||
if common.windows_check():
|
|
||||||
self.add_bookmark_dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
|
|
||||||
self.edit_bookmark_dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
|
|
||||||
else:
|
|
||||||
self.list_dlg.set_icon(common.get_logo(18))
|
|
||||||
self.edit_bookmark_dialog.set_icon(common.get_logo(18))
|
|
||||||
self.add_bookmark_dialog.set_icon(common.get_logo(18))
|
|
||||||
self.list_dlg.set_transient_for(self.parent.window)
|
|
||||||
self.signal_dic = { "on_button_cancel_clicked" : self.on_button_cancel_clicked,
|
|
||||||
"on_button_ok_clicked" : self.on_button_ok_clicked,
|
|
||||||
"on_button_add_clicked" : self.on_button_add_clicked,
|
|
||||||
"on_button_edit_clicked" : self.on_button_edit_clicked,
|
|
||||||
"on_button_remove_clicked" : self.on_button_remove_clicked,
|
|
||||||
"on_button_add_ok_clicked" : self.on_button_add_ok_clicked,
|
|
||||||
"on_button_add_cancel_clicked" : self.on_button_add_cancel_clicked,
|
|
||||||
"on_button_edit_ok_clicked" : self.on_button_edit_ok_clicked,
|
|
||||||
"on_button_edit_cancel_clicked" : self.on_button_edit_cancel_clicked,
|
|
||||||
"quit" : self.on_button_cancel_clicked
|
|
||||||
}
|
|
||||||
self.widgets.signal_autoconnect(self.signal_dic)
|
|
||||||
# Create a liststore for tier, url
|
|
||||||
self.liststore = gtk.ListStore(str, str)
|
|
||||||
|
|
||||||
# Create the columns
|
|
||||||
self.treeview.append_column(
|
|
||||||
gtk.TreeViewColumn("Name", gtk.CellRendererText(), text=0))
|
|
||||||
self.treeview.append_column(
|
|
||||||
gtk.TreeViewColumn("URL", gtk.CellRendererText(), text=1))
|
|
||||||
|
|
||||||
self.treeview.set_model(self.liststore)
|
|
||||||
self.liststore.set_sort_column_id(0, gtk.SORT_ASCENDING)
|
|
||||||
self.load_bookmarks()
|
|
||||||
|
|
||||||
self.build_menu()
|
|
||||||
|
|
||||||
def show(self):
|
|
||||||
self.list_dlg.show()
|
|
||||||
|
|
||||||
def hide(self):
|
|
||||||
self.list_dlg.hide()
|
|
||||||
if common.windows_check():
|
|
||||||
path = os.path.join(common.CONFIG_DIR, "bookmarks.save")
|
|
||||||
else:
|
|
||||||
path = os.path.join(common.CONFIG_DIR, "mozilla", "bookmarks.save")
|
|
||||||
try:
|
|
||||||
bookmark_file = open(path, "wb")
|
|
||||||
cPickle.dump(self.bookmarks, bookmark_file)
|
|
||||||
bookmark_file.close()
|
|
||||||
except Exception, e:
|
|
||||||
print "Unable to save bookmarks file: %s", e
|
|
||||||
|
|
||||||
def load_bookmarks(self):
|
|
||||||
bookmarks = None
|
|
||||||
if common.windows_check():
|
|
||||||
path = os.path.join(common.CONFIG_DIR, "bookmarks.save")
|
|
||||||
else:
|
|
||||||
path = os.path.join(common.CONFIG_DIR, "mozilla", "bookmarks.save")
|
|
||||||
|
|
||||||
if os.path.exists(path):
|
|
||||||
try:
|
|
||||||
bookmark_file = open(path, "rb")
|
|
||||||
bookmarks = cPickle.load(bookmark_file)
|
|
||||||
bookmark_file.close()
|
|
||||||
except Exception, e:
|
|
||||||
print "Unable to load bookmarks file: %s", e
|
|
||||||
|
|
||||||
if bookmarks == None:
|
|
||||||
return
|
|
||||||
|
|
||||||
self.liststore.clear()
|
|
||||||
|
|
||||||
for bookmark in bookmarks:
|
|
||||||
self.liststore.append([bookmark["name"], bookmark["url"]])
|
|
||||||
|
|
||||||
self.bookmarks = bookmarks
|
|
||||||
|
|
||||||
self.build_menu()
|
|
||||||
|
|
||||||
def build_menu(self):
|
|
||||||
"""Builds the bookmark menu"""
|
|
||||||
self.menu = gtk.Menu()
|
|
||||||
menuitem = gtk.MenuItem("Bookmark This Page...")
|
|
||||||
menuitem.connect("activate", self.menuitem_activate)
|
|
||||||
self.menu.append(menuitem)
|
|
||||||
menuitem = gtk.SeparatorMenuItem()
|
|
||||||
self.menu.append(menuitem)
|
|
||||||
# Iterate through the bookmark list and make menuitems for them
|
|
||||||
def add_menuitem(model, path, row, data):
|
|
||||||
menuitem = gtk.MenuItem(model.get_value(row, 0))
|
|
||||||
menuitem.connect("activate", self.menuitem_activate)
|
|
||||||
self.menu.append(menuitem)
|
|
||||||
|
|
||||||
self.liststore.foreach(add_menuitem, None)
|
|
||||||
self.menu.show_all()
|
|
||||||
# Set the new menu on the toolbutton
|
|
||||||
self.toolbutton.set_menu(self.menu)
|
|
||||||
|
|
||||||
def add_bookmark(self, name, url):
|
|
||||||
"""Adds a bookmark to the list"""
|
|
||||||
self.liststore.append([name, url])
|
|
||||||
self.build_menu()
|
|
||||||
|
|
||||||
def get_selected(self):
|
|
||||||
"""Returns the selected bookmark"""
|
|
||||||
return self.treeview.get_selection().get_selected()[1]
|
|
||||||
|
|
||||||
def on_button_add_clicked(self, widget):
|
|
||||||
# Show the add bookmark dialog
|
|
||||||
self.add_bookmark_dialog.show()
|
|
||||||
self.widgets.get_widget("entry_add_name").grab_focus()
|
|
||||||
|
|
||||||
def on_button_edit_clicked(self, widget):
|
|
||||||
# Show the edit bookmark dialog
|
|
||||||
selected = self.get_selected()
|
|
||||||
if selected != None:
|
|
||||||
self.edit_bookmark_dialog.show()
|
|
||||||
self.widgets.get_widget("entry_edit_name").grab_focus()
|
|
||||||
self.widgets.get_widget("entry_edit_name").set_text(self.liststore.\
|
|
||||||
get_value(selected, 0))
|
|
||||||
self.widgets.get_widget("entry_edit_url").set_text(self.liststore.\
|
|
||||||
get_value(selected, 1))
|
|
||||||
|
|
||||||
def on_button_add_ok_clicked(self, widget):
|
|
||||||
# Get values from the entry widgets
|
|
||||||
name = self.widgets.get_widget("entry_add_name").get_text()
|
|
||||||
url = self.widgets.get_widget("entry_add_url").get_text()
|
|
||||||
|
|
||||||
self.add_bookmark(name, url)
|
|
||||||
# Clear the entry widget and hide the dialog
|
|
||||||
self.widgets.get_widget("entry_add_name").set_text("")
|
|
||||||
self.widgets.get_widget("entry_add_url").set_text("")
|
|
||||||
self.add_bookmark_dialog.hide()
|
|
||||||
|
|
||||||
def on_button_add_cancel_clicked(self, widget, arg=None):
|
|
||||||
# Clear the entry widget and hide the dialog
|
|
||||||
self.widgets.get_widget("entry_add_name").set_text("")
|
|
||||||
self.widgets.get_widget("entry_add_url").set_text("")
|
|
||||||
self.add_bookmark_dialog.hide()
|
|
||||||
if arg != None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
def on_button_edit_ok_clicked(self, widget):
|
|
||||||
# Get values from the entry widgets
|
|
||||||
name = self.widgets.get_widget("entry_edit_name").get_text()
|
|
||||||
url = self.widgets.get_widget("entry_edit_url").get_text()
|
|
||||||
selected = self.get_selected()
|
|
||||||
if selected != None:
|
|
||||||
self.liststore.remove(selected)
|
|
||||||
self.add_bookmark(name, url)
|
|
||||||
self.build_menu()
|
|
||||||
|
|
||||||
# Clear the entry widget and hide the dialog
|
|
||||||
self.widgets.get_widget("entry_edit_name").set_text("")
|
|
||||||
self.widgets.get_widget("entry_edit_url").set_text("")
|
|
||||||
self.edit_bookmark_dialog.hide()
|
|
||||||
|
|
||||||
def on_button_edit_cancel_clicked(self, widget, arg=None):
|
|
||||||
# Clear the entry widget and hide the dialog
|
|
||||||
self.widgets.get_widget("entry_edit_name").set_text("")
|
|
||||||
self.widgets.get_widget("entry_edit_url").set_text("")
|
|
||||||
self.edit_bookmark_dialog.hide()
|
|
||||||
if arg != None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
def on_button_remove_clicked(self, widget):
|
|
||||||
selected = self.get_selected()
|
|
||||||
if selected != None:
|
|
||||||
self.liststore.remove(selected)
|
|
||||||
|
|
||||||
self.build_menu()
|
|
||||||
|
|
||||||
def on_button_cancel_clicked(self, widget, arg=None):
|
|
||||||
self.load_bookmarks()
|
|
||||||
self.hide()
|
|
||||||
if arg != None:
|
|
||||||
return True
|
|
||||||
|
|
||||||
def on_button_ok_clicked(self, widget):
|
|
||||||
def each(model, path, iter, data):
|
|
||||||
bookmark = {}
|
|
||||||
bookmark["name"] = model.get_value(iter, 0)
|
|
||||||
bookmark["url"] = model.get_value(iter, 1)
|
|
||||||
self.bookmarks.append(bookmark)
|
|
||||||
self.bookmarks = []
|
|
||||||
self.liststore.foreach(each, None)
|
|
||||||
self.hide()
|
|
||||||
|
|
||||||
def menuitem_activate(self, widget):
|
|
||||||
text = widget.get_child().get_text()
|
|
||||||
def load_url(model, path, row, data):
|
|
||||||
if model.get_value(row, 0) == text:
|
|
||||||
# Grab the URL and load it
|
|
||||||
url = model.get_value(row, 1)
|
|
||||||
self.parent.txt_url.set_text(url)
|
|
||||||
self.parent.load_url()
|
|
||||||
if text == "Bookmark This Page...":
|
|
||||||
# Show the add bookmark dialog
|
|
||||||
self.add_bookmark_dialog.show()
|
|
||||||
self.widgets.get_widget("entry_add_name").grab_focus()
|
|
||||||
self.widgets.get_widget("entry_add_url").set_text(
|
|
||||||
self.parent.txt_url.get_text())
|
|
||||||
self.on_button_ok_clicked(widget)
|
|
||||||
return
|
|
||||||
|
|
||||||
self.liststore.foreach(load_url, None)
|
|
|
@ -153,12 +153,13 @@ def get_logo(size):
|
||||||
return gtk.gdk.pixbuf_new_from_file_at_size(get_pixmap("deluge.svg"), \
|
return gtk.gdk.pixbuf_new_from_file_at_size(get_pixmap("deluge.svg"), \
|
||||||
size, size)
|
size, size)
|
||||||
|
|
||||||
def open_url_in_browser(link, force_ext=None):
|
def open_url_in_browser(link, plugins, force_ext=None):
|
||||||
import pref
|
import pref
|
||||||
config = pref.Preferences(os.path.join(os.path.expanduser("~"), 'deluge', "prefs.state"))
|
config = pref.Preferences(os.path.join(os.path.expanduser("~"), 'deluge', "prefs.state"))
|
||||||
if config.get("use_internal") and not force_ext:
|
enabled = config.get('enabled_plugins').split(':')
|
||||||
import browser
|
if ("Anonymizing Browser" in enabled) and not force_ext and plugins:
|
||||||
browser.Browser(link)
|
plugins.launch_site(link)
|
||||||
|
plugins.show_all()
|
||||||
else:
|
else:
|
||||||
import threading
|
import threading
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
|
@ -153,8 +153,6 @@ class PreferencesDlg:
|
||||||
self.glade.get_widget("chk_clear_max_ratio_torrents").set_sensitive(self.preferences.get("auto_end_seeding"))
|
self.glade.get_widget("chk_clear_max_ratio_torrents").set_sensitive(self.preferences.get("auto_end_seeding"))
|
||||||
self.glade.get_widget("chk_clear_max_ratio_torrents").set_active(self.preferences.get("clear_max_ratio_torrents"))
|
self.glade.get_widget("chk_clear_max_ratio_torrents").set_active(self.preferences.get("clear_max_ratio_torrents"))
|
||||||
self.glade.get_widget("chk_paused").set_active(self.preferences.get("start_paused"))
|
self.glade.get_widget("chk_paused").set_active(self.preferences.get("start_paused"))
|
||||||
self.glade.get_widget("chk_show_search").set_active(self.preferences.get("show_search"))
|
|
||||||
self.glade.get_widget("chk_use_internal").set_active(self.preferences.get("use_internal"))
|
|
||||||
self.glade.get_widget("ratio_spinner").set_value(self.preferences.get("auto_seed_ratio"))
|
self.glade.get_widget("ratio_spinner").set_value(self.preferences.get("auto_seed_ratio"))
|
||||||
self.glade.get_widget("chk_dht").set_active(self.preferences.get("enable_dht"))
|
self.glade.get_widget("chk_dht").set_active(self.preferences.get("enable_dht"))
|
||||||
self.glade.get_widget("chk_use_advanced_bar").set_active(self.preferences.get("use_advanced_bar"))
|
self.glade.get_widget("chk_use_advanced_bar").set_active(self.preferences.get("use_advanced_bar"))
|
||||||
|
@ -275,8 +273,6 @@ class PreferencesDlg:
|
||||||
self.preferences.set("max_active_torrents", int(self.glade.get_widget("spin_torrents").get_value()))
|
self.preferences.set("max_active_torrents", int(self.glade.get_widget("spin_torrents").get_value()))
|
||||||
self.preferences.set("queue_seeds_to_bottom", self.glade.get_widget("chk_seedbottom").get_active())
|
self.preferences.set("queue_seeds_to_bottom", self.glade.get_widget("chk_seedbottom").get_active())
|
||||||
self.preferences.set("enable_dht", self.glade.get_widget("chk_dht").get_active())
|
self.preferences.set("enable_dht", self.glade.get_widget("chk_dht").get_active())
|
||||||
self.preferences.set("show_search", self.glade.get_widget("chk_show_search").get_active())
|
|
||||||
self.preferences.set("use_internal", self.glade.get_widget("chk_use_internal").get_active())
|
|
||||||
self.preferences.set("clear_max_ratio_torrents", self.glade.get_widget("chk_clear_max_ratio_torrents").get_active())
|
self.preferences.set("clear_max_ratio_torrents", self.glade.get_widget("chk_clear_max_ratio_torrents").get_active())
|
||||||
self.preferences.set("queue_above_completed", self.glade.get_widget("chk_queue_above_completed").get_active())
|
self.preferences.set("queue_above_completed", self.glade.get_widget("chk_queue_above_completed").get_active())
|
||||||
self.preferences.set("start_paused", self.glade.get_widget("chk_paused").get_active())
|
self.preferences.set("start_paused", self.glade.get_widget("chk_paused").get_active())
|
||||||
|
@ -334,7 +330,7 @@ class PreferencesDlg:
|
||||||
self.plugins.configure_plugin(plugin_name, self.dialog)
|
self.plugins.configure_plugin(plugin_name, self.dialog)
|
||||||
|
|
||||||
def TestPort(self, widget):
|
def TestPort(self, widget):
|
||||||
common.open_url_in_browser('http://www.deluge-torrent.org/test-port.php?port=%s' % self.active_port, True)
|
common.open_url_in_browser('http://www.deluge-torrent.org/test-port.php?port=%s' % self.active_port, self.plugins, force_ext=True)
|
||||||
|
|
||||||
def toggle_ui(self, widget):
|
def toggle_ui(self, widget):
|
||||||
value = widget.get_active()
|
value = widget.get_active()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue