⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statuslight.py

📁 bittorrent source by python. please enjoy
💻 PY
字号:
# The contents of this file are subject to the BitTorrent Open Source License# Version 1.1 (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 Matt Chisholmfrom BitTorrent.platform import bttimefrom BitTorrent.translation import _class StatusLight(object):    initial_state = 'stopped'    states = {        # state     : (stock icon name, label, tool tip),        'stopped'   : ('stopped',                       _("Paused"),                       _("Paused")),        'empty'     : ('stopped',                       _("No torrents"),                       _("No torrents")),        'starting'  : ('starting',                       _("Starting up..."),                       _("Starting download")),        'pre-natted': ('pre-natted',                       _("Checking connection..."),                       _("Online, checking connection")),        'running'   : ('running',                       _("Online"),                       _("Online, running normally")),        'natted'    : ('natted',                       _("Online, maybe firewalled"),                       _("Online, but downloads may be slow due to firewall/NAT")),        'broken'    : ('broken',                       _("No network connection"),                       _("Check network connection")),        }    messages = {        # message           : default new state,        'stop'              : 'stopped'   ,        'empty'             : 'empty'     ,        'start'             : 'starting'  ,        'seen_peers'        : 'pre-natted',        'seen_remote_peers' : 'running'   ,        'broken'            : 'broken'    ,        }    transitions = {        # state      : { message            : custom new state, },        'pre-natted' : { 'start'            : 'pre-natted',                         'seen_peers'       : 'pre-natted',},        'running'    : { 'start'            : 'running'   ,                         'seen_peers'       : 'running'   ,},        'natted'     : { 'start'            : 'natted'    ,                         'seen_peers'       : 'natted'    ,},        'broken'     : { 'start'            : 'broken'    ,},        #TODO: add broken transitions        }    time_to_nat = 60 * 5 # 5 minutes    def __init__(self):        self.mystate = self.initial_state        self.start_time = None    def send_message(self, message):        if message not in self.messages.keys():            #print 'bad message', message            return        new_state = self.messages[message]        if self.transitions.has_key(self.mystate):            if self.transitions[self.mystate].has_key(message):                new_state = self.transitions[self.mystate][message]        # special pre-natted timeout logic        if new_state == 'pre-natted':            if (self.mystate == 'pre-natted' and                bttime() - self.start_time > self.time_to_nat):                # go to natted state after a while                new_state = 'natted'            elif self.mystate != 'pre-natted':                # start pre-natted timer                self.start_time = bttime()        if new_state != self.mystate:            #print 'changing state from', self.mystate, 'to', new_state            self.mystate = new_state            self.change_state()    def change_state(self):        pass    def get_tip(self):        return self.states[self.mystate][2]    def get_label(self):        return self.states[self.mystate][1]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -