📄 configreader.py
字号:
datasizer.Add(StaticText('Max peer connections:'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.maxconnections_data) datasizer.Add(StaticText('Default seeding mode:'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.superseeder_data) datasizer.Add(StaticText('Expire resume data(days):'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.expirecache_data) twocolsizer.Add(datasizer) infosizer = wxFlexGridSizer(cols = 1) self.hinttext = StaticText('', self.FONT, False, 'Blue') infosizer.Add(self.hinttext, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL) infosizer.SetMinSize((180,100)) twocolsizer.Add(infosizer, 1, wxEXPAND) colsizer.Add(twocolsizer) savesizer = wxGridSizer(cols = 3, hgap = 20) okButton = wxButton(panel, -1, 'OK')# okButton.SetFont(self.default_font) savesizer.Add(okButton, 0, wxALIGN_CENTER) cancelButton = wxButton(panel, -1, 'Cancel')# cancelButton.SetFont(self.default_font) savesizer.Add(cancelButton, 0, wxALIGN_CENTER) defaultsButton = wxButton(panel, -1, 'Revert to Defaults')# defaultsButton.SetFont(self.default_font) savesizer.Add(defaultsButton, 0, wxALIGN_CENTER) colsizer.Add(savesizer, 1, wxALIGN_CENTER) resizewarningtext=StaticText('None of these settings will take effect until the next time you start BitTorrent', self.FONT-2) colsizer.Add(resizewarningtext, 1, wxALIGN_CENTER) border = wxBoxSizer(wxHORIZONTAL) border.Add(colsizer, 1, wxEXPAND | wxALL, 4) panel.SetSizer(border) panel.SetAutoLayout(True) def setDefaults(evt, self = self): try: self.ip_data.SetValue(self.defaults['ip']) self.bind_data.SetValue(self.defaults['bind']) if sys.version_info >= (2,3) and socket.has_ipv6: self.ipv6bindsv4_data.SetSelection(self.defaults['ipv6_binds_v4']) self.minpeers_data.SetValue(self.defaults['min_peers']) self.displayinterval_data.SetValue(int(self.defaults['display_interval']*1000)) self.alloctype_data.SetStringSelection(self.defaults['alloc_type']) self.allocrate_data.SetValue(int(self.defaults['alloc_rate'])) if self.defaults['lock_files']: if self.defaults['lock_while_reading']: self.locking_data.SetSelection(2) else: self.locking_data.SetSelection(1) else: self.locking_data.SetSelection(0) if self.defaults['double_check']: if self.defaults['triple_check']: self.doublecheck_data.SetSelection(2) else: self.doublecheck_data.SetSelection(1) else: self.doublecheck_data.SetSelection(0) setval = self.defaults['max_files_open'] if setval == 0: setval = 'no limit ' else: setval = str(setval) if not setval in self.maxfilesopen_choices: setval = self.maxfilesopen_choices[0] self.maxfilesopen_data.SetStringSelection(setval) setval = self.defaults['max_connections'] if setval == 0: setval = 'no limit ' else: setval = str(setval) if not setval in self.maxconnections_choices: setval = self.maxconnections_choices[0] self.maxconnections_data.SetStringSelection(setval) self.superseeder_data.SetSelection(int(self.defaults['super_seeder'])) setval = self.defaults['expire_cache_data'] if setval == 0: setval = 'never ' else: setval = str(setval) if not setval in self.expirecache_choices: setval = self.expirecache_choices[0] self.expirecache_data.SetStringSelection(setval) except: self.parent.exception() def saveConfigs(evt, self = self): try: self.advancedConfig['ip'] = self.ip_data.GetValue() self.advancedConfig['bind'] = self.bind_data.GetValue() if sys.version_info >= (2,3) and socket.has_ipv6: self.advancedConfig['ipv6_binds_v4'] = self.ipv6bindsv4_data.GetSelection() self.advancedConfig['min_peers'] = self.minpeers_data.GetValue() self.advancedConfig['display_interval'] = float(self.displayinterval_data.GetValue())/1000 self.advancedConfig['alloc_type'] = self.alloctype_data.GetStringSelection() self.advancedConfig['alloc_rate'] = float(self.allocrate_data.GetValue()) self.advancedConfig['lock_files'] = int(self.locking_data.GetSelection() >= 1) self.advancedConfig['lock_while_reading'] = int(self.locking_data.GetSelection() > 1) self.advancedConfig['double_check'] = int(self.doublecheck_data.GetSelection() >= 1) self.advancedConfig['triple_check'] = int(self.doublecheck_data.GetSelection() > 1) try: self.advancedConfig['max_files_open'] = int(self.maxfilesopen_data.GetStringSelection()) except: # if it ain't a number, it must be "no limit" self.advancedConfig['max_files_open'] = 0 try: self.advancedConfig['max_connections'] = int(self.maxconnections_data.GetStringSelection()) self.advancedConfig['max_initiate'] = min( 2*self.advancedConfig['min_peers'], self.advancedConfig['max_connections']) except: # if it ain't a number, it must be "no limit" self.advancedConfig['max_connections'] = 0 self.advancedConfig['max_initiate'] = 2*self.advancedConfig['min_peers'] self.advancedConfig['super_seeder']=int(self.superseeder_data.GetSelection()) try: self.advancedConfig['expire_cache_data'] = int(self.expirecache_data.GetStringSelection()) except: self.advancedConfig['expire_cache_data'] = 0 self.advancedMenuBox.Close() except: self.parent.exception() def cancelConfigs(evt, self = self): self.advancedMenuBox.Close() def ip_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nThe IP reported to the tracker.\n' + 'unless the tracker is on the\n' + 'same intranet as this client,\n' + 'the tracker will autodetect the\n' + "client's IP and ignore this\n" + "value.") def bind_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nThe IP the client will bind to.\n' + 'Only useful if your machine is\n' + 'directly handling multiple IPs.\n' + "If you don't know what this is,\n" + "leave it blank.") def ipv6bindsv4_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nCertain operating systems will\n' + 'open IPv4 protocol connections on\n' + 'an IPv6 socket; others require you\n' + "to open two sockets on the same\n" + "port, one IPv4 and one IPv6.") def minpeers_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nThe minimum number of peers the\n' + 'client tries to stay connected\n' + 'with. Do not set this higher\n' + 'unless you have a very fast\n' + "connection and a lot of system\n" + "resources.") def displayinterval_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nHow often to update the\n' + 'graphical display, in 1/1000s\n' + 'of a second. Setting this too low\n' + "will strain your computer's\n" + "processor and video access.") def alloctype_hint(evt, self = self): self.hinttext.SetLabel('\n\nHow to allocate disk space.\n' + 'normal allocates space as data is\n' + 'received, background also adds\n' + "space in the background, pre-\n" + "allocate reserves up front, and\n" + 'sparse is only for filesystems\n' + 'that support it by default.') def allocrate_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nAt what rate to allocate disk\n' + 'space when allocating in the\n' + 'background. Set this too high on a\n' + "slow filesystem and your download\n" + "will slow to a crawl.") def locking_hint(evt, self = self): self.hinttext.SetLabel('\n\n\n\nFile locking prevents other\n' + 'programs (including other instances\n' + 'of BitTorrent) from accessing files\n' + "you are downloading.") def doublecheck_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nHow much extra checking to do\n' + 'making sure no data is corrupted.\n' + 'Double-check mode uses more CPU,\n' + "while triple-check mode increases\n" + "disk accesses.") def maxfilesopen_hint(evt, self = self): self.hinttext.SetLabel('\n\n\nThe maximum number of files to\n' + 'keep open at the same time. Zero\n' + 'means no limit. Please note that\n' + "if this option is in effect,\n" + "files are not guaranteed to be\n" + "locked.") def maxconnections_hint(evt, self = self): self.hinttext.SetLabel('\n\nSome operating systems, most\n' + 'notably Windows 9x/ME combined\n' + 'with certain network drivers,\n' + "cannot handle more than a certain\n" + "number of open ports. If the\n" + "client freezes, try setting this\n" + "to 60 or below.") def superseeder_hint(evt, self = self): self.hinttext.SetLabel('\n\nThe "super-seed" method allows\n' + 'a single source to more efficiently\n' + 'seed a large torrent, but is not\n' + "necessary in a well-seeded torrent,\n" + "and causes problems with statistics.\n" + "Unless you routinely seed torrents\n" + "you can enable this by selecting\n" + '"SUPER-SEED" for connection type.\n' + '(once enabled it does not turn off.)') def expirecache_hint(evt, self = self): self.hinttext.SetLabel('\n\nThe client stores temporary data\n' + 'in order to handle downloading only\n' + 'specific files from the torrent and\n' + "so it can resume downloads more\n" + "quickly. This sets how long the\n" + "client will keep this data before\n" + "deleting it to free disk space.") EVT_BUTTON(self.advancedMenuBox, okButton.GetId(), saveConfigs) EVT_BUTTON(self.advancedMenuBox, cancelButton.GetId(), cancelConfigs) EVT_BUTTON(self.advancedMenuBox, defaultsButton.GetId(), setDefaults) EVT_ENTER_WINDOW(self.ip_data, ip_hint) EVT_ENTER_WINDOW(self.bind_data, bind_hint) if sys.version_info >= (2,3) and socket.has_ipv6: EVT_ENTER_WINDOW(self.ipv6bindsv4_data, ipv6bindsv4_hint) EVT_ENTER_WINDOW(self.minpeers_data, minpeers_hint) EVT_ENTER_WINDOW(self.displayinterval_data, displayinterval_hint) EVT_ENTER_WINDOW(self.alloctype_data, alloctype_hint) EVT_ENTER_WINDOW(self.allocrate_data, allocrate_hint) EVT_ENTER_WINDOW(self.locking_data, locking_hint) EVT_ENTER_WINDOW(self.doublecheck_data, doublecheck_hint) EVT_ENTER_WINDOW(self.maxfilesopen_data, maxfilesopen_hint) EVT_ENTER_WINDOW(self.maxconnections_data, maxconnections_hint) EVT_ENTER_WINDOW(self.superseeder_data, superseeder_hint) EVT_ENTER_WINDOW(self.expirecache_data, expirecache_hint) self.advancedMenuBox.Show () border.Fit(panel) self.advancedMenuBox.Fit() except: self.parent.exception() def CloseAdvanced(self): if self.advancedMenuBox is not None: try: self.advancedMenuBox.Close() except wxPyDeadObjectError, e: self.advancedMenuBox = None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -