亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? btdownloadgui.py

?? BT的原代碼
?? PY
?? 第 1 頁 / 共 5 頁
字號:
#!/usr/bin/env python# The contents of this file are subject to the BitTorrent Open Source License# Version 1.0 (the License).  You may not copy or use this file, in either# source code or executable form, except in compliance with the License.  You# may obtain a copy of the License at http://www.bittorrent.com/license/.## Software distributed under the License is distributed on an AS IS basis,# WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the License# for the specific language governing rights and limitations under the# License.# Written by Uoti Urpala and Matt Chisholmfrom __future__ import divisionimport sysassert sys.version_info >= (2, 3), "Install Python 2.3 or greater"import itertoolsimport mathimport osimport threadingimport datetimeimport randomimport gtkimport pangoimport gobjectimport webbrowserfrom urllib import quote, url2pathnamefrom BitTorrent import configfilefrom BitTorrent import HELP_URL, DONATE_URLfrom BitTorrent import is_frozen_exefrom BitTorrent.parseargs import parseargs, makeHelpfrom BitTorrent import version, doc_rootfrom BitTorrent.defaultargs import get_defaultsfrom BitTorrent import TorrentQueuefrom BitTorrent.TorrentQueue import RUNNING, QUEUED, KNOWN, ASKING_LOCATIONfrom BitTorrent.controlsocket import ControlSocketfrom BitTorrent import BTFailure, INFO, WARNING, ERROR, CRITICALfrom BitTorrent import OpenPathfrom BitTorrent import Desktopfrom BitTorrent import ClientIdentifierfrom BitTorrent import path_wrapfrom BitTorrent.GUI import * defaults = get_defaults('btdownloadgui')defaults.extend((('donated' , '', ''), # the version that the user last donated for                 ('notified', '', ''), # the version that the user was last notified of                 ))NAG_FREQUENCY = 3PORT_RANGE = 5defconfig = dict([(name, value) for (name, value, doc) in defaults])del name, value, docui_options = 'max_upload_rate minport maxport '\             'next_torrent_time next_torrent_ratio '\             'last_torrent_ratio '\             'ask_for_save save_in ip start_torrent_behavior '\             'close_with_rst '\             'min_uploads max_uploads max_initiate '\             'max_allow_in max_files_open display_interval '\             'pause donated notified'.split()advanced_ui_options_index = 11if is_frozen_exe:    ui_options.append('progressbar_hack')    defproghack = 0    wv = sys.getwindowsversion()    if (wv[3], wv[0], wv[1]) == (2, 5, 1):        # turn on progress bar hack by default for Win XP         defproghack = 1    defaults.extend((('progressbar_hack' , defproghack, ''),))                      main_torrent_dnd_tip = 'drag to reorder'torrent_menu_tip = 'right-click for menu'torrent_tip_format = '%s:\n %s\n %s'rate_label = ' rate: %s'speed_classes = {    (   4,    5): 'dialup'           ,    (   6,   14): 'DSL/cable 128k up',    (  15,   29): 'DSL/cable 256k up',    (  30,   91): 'DSL 768k up'      ,    (  92,  137): 'T1'               ,    ( 138,  182): 'T1/E1'            ,    ( 183,  249): 'E1'               ,    ( 250, 5446): 'T3'               ,    (5447,18871): 'OC3'              ,    }def find_dir(path):    if os.path.isdir(path):        return path    directory, garbage = os.path.split(path)    while directory:        if os.access(directory, os.F_OK) and os.access(directory, os.W_OK):            return directory        directory, garbage = os.path.split(directory)        if garbage == '':            break            return Nonedef smart_dir(path):    path = find_dir(path)    if path is None:        path = Desktop.desktop    return pathdef build_menu(menu_items, accel_group=None):    menu = gtk.Menu()    for label,func in menu_items:        if label == '----':            s = gtk.SeparatorMenuItem()            s.show()            menu.add(s)        else:            item = gtk.MenuItem(label)            if func is not None:                item.connect("activate", func)            else:                item.set_sensitive(False)            if accel_group is not None:                accel_index = label.find('_')                if accel_index > -1:                    accel_key = label[accel_index+1]                    item.add_accelerator("activate", accel_group,                                         ord(accel_key),                                         gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)            item.show()            menu.add(item)    return menuclass Validator(gtk.Entry):    valid_chars = '1234567890'    minimum = None    maximum = None    cast = int        def __init__(self, option_name, config, setfunc):        gtk.Entry.__init__(self)        self.option_name = option_name        self.config      = config        self.setfunc     = setfunc        self.set_text(str(config[option_name]))                    self.set_size_request(self.width,-1)                self.connect('insert-text', self.text_inserted)        self.connect('focus-out-event', self.focus_out)    def get_value(self):        value = None        try:            value = self.cast(self.get_text())        except ValueError:            pass        return value    def set_value(self, value):        self.set_text(str(value))        self.setfunc(self.option_name, value)                    def focus_out(self, entry, widget):        value = self.get_value()        if value is None:            return        if (self.minimum is not None) and (value < self.minimum):            value = self.minimum        if (self.maximum is not None) and (value > self.maximum):            value = self.maximum        self.set_value(value)    def text_inserted(self, entry, input, position, user_data):        for i in input:            if (self.valid_chars is not None) and (i not in self.valid_chars):                self.emit_stop_by_name('insert-text')                return Trueclass IPValidator(Validator):    valid_chars = '1234567890.'    width = 128    cast = strclass PortValidator(Validator):    width = 64    minimum = 0    maximum = 65535    def add_end(self, end_name):        self.end_option_name = end_name    def set_value(self, value):        self.set_text(str(value))        self.setfunc(self.option_name, value)        self.setfunc(self.end_option_name, value+PORT_RANGE)class PercentValidator(Validator):    width = 48    minimum = 0class MinutesValidator(Validator):    width = 48    minimum = 1class RateSliderBox(gtk.VBox):    base = 10    multiplier = 4    max_exponent = 3.3        def __init__(self, config, torrentqueue):        gtk.VBox.__init__(self, homogeneous=False)        self.config = config        self.torrentqueue = torrentqueue        if self.config['max_upload_rate'] < self.slider_to_rate(0):            self.config['max_upload_rate'] = self.slider_to_rate(0)        self.rate_slider_label = gtk.Label(            self.value_to_label(self.config['max_upload_rate']))        self.rate_slider_adj = gtk.Adjustment(            self.rate_to_slider(self.config['max_upload_rate']), 0,            self.max_exponent, 0.01, 0.1)                self.rate_slider = gtk.HScale(self.rate_slider_adj)        self.rate_slider.set_draw_value(False)        self.rate_slider_adj.connect('value_changed', self.set_max_upload_rate)        self.pack_start(self.rate_slider_label , expand=False, fill=False)        self.pack_start(self.rate_slider       , expand=False, fill=False)        if False: # this shows the legend for the slider            self.rate_slider_legend = gtk.HBox(homogeneous=True)            for i in range(int(self.max_exponent+1)):                label = gtk.Label(str(self.slider_to_rate(i)))                alabel = halign(label, i/self.max_exponent)                self.rate_slider_legend.pack_start(alabel,                                                   expand=True, fill=True)            self.pack_start(self.rate_slider_legend, expand=False, fill=False)    def start(self):        self.set_max_upload_rate(self.rate_slider_adj)    def rate_to_slider(self, value):        return math.log(value/self.multiplier, self.base)    def slider_to_rate(self, value):        return int(round(self.base**value * self.multiplier))    def value_to_label(self, value):        conn_type = ''        for key, conn in speed_classes.items():            min_v, max_v = key            if min_v <= value <= max_v:                conn_type = ' (%s)'%conn                break        label = 'Maximum upload'+(rate_label % Rate(value*1024)) + \                conn_type        return label    def set_max_upload_rate(self, adj):        option = 'max_upload_rate'        value = self.slider_to_rate(adj.get_value())        self.config[option] = value        self.torrentqueue.set_config(option, value)        self.rate_slider_label.set_text(self.value_to_label(int(value)))class StopStartButton(gtk.Button):    stop_tip  = 'Temporarily stop all running torrents'    start_tip = 'Resume downloading'    def __init__(self, main):        gtk.Button.__init__(self)        self.main = main        self.connect('clicked', self.toggle)        self.stop_image = gtk.Image()        self.stop_image.set_from_stock('bt-pause', gtk.ICON_SIZE_BUTTON)        self.stop_image.show()        self.start_image = gtk.Image()        self.start_image.set_from_stock('bt-play', gtk.ICON_SIZE_BUTTON)        self.start_image.show()        self.has_image = False    def toggle(self, widget):        self.set_paused(not self.main.config['pause'])    def set_paused(self, paused):        if paused:            if self.has_image:                self.remove(self.stop_image)            self.add(self.start_image)            self.main.tooltips.set_tip(self, self.start_tip)            self.main.stop_queue()        else:            if self.has_image:                self.remove(self.start_image)            self.add(self.stop_image)            self.main.tooltips.set_tip(self, self.stop_tip )            self.main.restart_queue()        self.has_image = Trueclass VersionWindow(Window):    def __init__(self, main, newversion, download_url):        Window.__init__(self)        self.set_title('New %s version available'%app_name)        self.set_border_width(SPACING)        self.set_resizable(gtk.FALSE)        self.main = main        self.newversion = newversion        self.download_url = download_url        self.connect('destroy', lambda w: self.main.window_closed('version'))        self.vbox = gtk.VBox(spacing=SPACING)        self.hbox = gtk.HBox(spacing=SPACING)        self.image = gtk.Image()        self.image.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG)        self.hbox.pack_start(self.image)                self.label = gtk.Label()        self.label.set_markup(            ("A newer version of %s is available.\n" % app_name) +            ("You are using %s, and the new version is %s.\n" % (version, newversion)) +            ("You can always get the latest version from \n%s" % self.download_url)            )         self.label.set_selectable(True)        self.hbox.pack_start(self.label)        self.vbox.pack_start(self.hbox)        self.bbox = gtk.HBox(spacing=SPACING)        self.closebutton = gtk.Button('Download _later')        self.closebutton.connect('clicked', self.close)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产人久久人人人人爽| 日韩一区二区电影网| 亚洲va欧美va国产va天堂影院| 欧美一二三在线| 91在线观看成人| 久久国产生活片100| 亚洲美女偷拍久久| 久久精品视频一区| 91精品国产综合久久精品麻豆| 国产999精品久久久久久绿帽| 偷窥少妇高潮呻吟av久久免费| 国产日韩av一区| 日韩欧美一二三四区| 欧美午夜在线观看| 99久久精品国产毛片| 国产一区二区影院| 免费高清在线视频一区·| 亚洲综合999| 国产精品毛片大码女人| 久久久久综合网| 欧美一区二区三区的| 欧美亚洲尤物久久| 97久久超碰国产精品| 成人在线综合网站| 国产精品一区二区三区网站| 久久精品国产99久久6| 日韩一区精品视频| 性做久久久久久久免费看| 亚洲激情校园春色| 日韩美女视频一区| 亚洲三级在线播放| 日韩久久一区二区| 亚洲欧洲精品天堂一级| 国产精品人成在线观看免费| 久久久综合精品| 2023国产精品视频| 久久久不卡影院| 亚洲国产精品t66y| 国产精品视频一二三区 | 色香蕉成人二区免费| 从欧美一区二区三区| 国产成人午夜99999| 国产成人精品免费一区二区| 国产成人综合在线播放| 国产成人欧美日韩在线电影| 成人精品电影在线观看| www.亚洲国产| 91国在线观看| 欧美三级乱人伦电影| 91精品国产aⅴ一区二区| 欧美一区二区在线视频| 日韩欧美一区二区视频| 26uuu色噜噜精品一区| 国产嫩草影院久久久久| 中文字幕一区三区| 亚洲影视资源网| 秋霞成人午夜伦在线观看| 国产美女一区二区三区| 成人精品电影在线观看| 欧美在线免费视屏| 欧美一区二区三区日韩| 国产亚洲一区二区三区四区| 日韩一区有码在线| 午夜精品一区二区三区三上悠亚| 日本不卡一二三| 懂色av中文一区二区三区 | 成人午夜av在线| 99久久免费精品| 91 com成人网| 久久久精品天堂| 一区二区三区在线免费| 天天亚洲美女在线视频| 国产麻豆精品一区二区| 99久久免费精品| 91精品国产综合久久婷婷香蕉| 精品国产髙清在线看国产毛片| 久久丝袜美腿综合| 亚洲精品中文字幕乱码三区| 美女mm1313爽爽久久久蜜臀| 不卡欧美aaaaa| 91麻豆精品国产91久久久| 久久久精品蜜桃| 亚洲午夜国产一区99re久久| 国模娜娜一区二区三区| 91色综合久久久久婷婷| 欧美一级欧美三级在线观看| 国产精品嫩草久久久久| 爽好久久久欧美精品| 懂色av中文字幕一区二区三区| 欧美日韩在线三级| 久久综合久久鬼色中文字| 一卡二卡三卡日韩欧美| 国产伦精一区二区三区| 欧美日本不卡视频| 亚洲视频网在线直播| 国产曰批免费观看久久久| 欧美日韩成人一区| 国产精品久久免费看| 麻豆91精品视频| 91精品91久久久中77777| 久久久亚洲高清| 丝瓜av网站精品一区二区| 91色综合久久久久婷婷| 国产清纯美女被跳蛋高潮一区二区久久w | 免费的成人av| 欧美午夜精品久久久| 中文字幕亚洲成人| 国产在线乱码一区二区三区| 欧美日韩国产a| 亚洲激情在线激情| av在线一区二区三区| 久久久国产精品午夜一区ai换脸| 青青草原综合久久大伊人精品优势| 色婷婷亚洲综合| 亚洲男同性视频| 99re在线精品| 18成人在线视频| 99麻豆久久久国产精品免费| 欧美国产亚洲另类动漫| 国产成人在线观看免费网站| 亚洲精品一区二区三区在线观看| 免费在线看成人av| 欧美人体做爰大胆视频| 亚洲电影一区二区| 91黄色免费版| 亚洲一区二区三区精品在线| 在线观看亚洲精品| 亚洲激情六月丁香| 色老汉一区二区三区| 亚洲伦理在线免费看| 91影视在线播放| 亚洲精品日日夜夜| 色婷婷久久一区二区三区麻豆| 最新欧美精品一区二区三区| k8久久久一区二区三区| 国产精品嫩草久久久久| 99re在线视频这里只有精品| 亚洲女子a中天字幕| 欧美性生交片4| 天天亚洲美女在线视频| 日韩三级伦理片妻子的秘密按摩| 蜜桃精品视频在线| 久久久三级国产网站| 国产另类ts人妖一区二区| 国产无人区一区二区三区| 成人午夜免费av| 亚洲欧美日韩一区二区三区在线观看| 99精品欧美一区二区三区综合在线| 综合欧美亚洲日本| 欧美日韩不卡视频| 奇米精品一区二区三区四区| 精品国产sm最大网站免费看| 国产精品一区二区在线观看不卡| 欧美国产精品一区二区三区| 91亚洲国产成人精品一区二三| 亚洲一级片在线观看| 日韩女优av电影| 国内精品免费**视频| 久久久精品免费观看| www.亚洲激情.com| 亚洲电影一区二区三区| 精品盗摄一区二区三区| 不卡视频免费播放| 亚洲福利一区二区三区| 精品国产一二三| 97久久精品人人爽人人爽蜜臀| 日韩综合在线视频| 久久色成人在线| 日本道免费精品一区二区三区| 日日骚欧美日韩| 国产欧美日韩视频在线观看| 欧美性大战久久久久久久蜜臀| 久久精品国产999大香线蕉| 国产精品电影一区二区| 欧美日韩国产美女| 国产乱色国产精品免费视频| 亚洲欧美一区二区久久| 欧美电影免费观看高清完整版在线观看| 国产成人自拍网| 亚洲成人av电影在线| 国产欧美一二三区| 欧美日韩二区三区| 成人手机电影网| 日韩国产欧美在线观看| 日本一区二区三区高清不卡| 欧美日韩成人一区二区| 成人av资源在线| 美美哒免费高清在线观看视频一区二区| 国产精品传媒在线| 久久精品在这里| 91麻豆蜜桃一区二区三区| 美女视频网站黄色亚洲| 亚洲综合在线电影| 国产亚洲精品7777| 欧美一区永久视频免费观看| www.日本不卡| 国产一区二区三区久久久| 午夜电影网一区| 最新久久zyz资源站| 国产日韩三级在线|