📄 configreader.py
字号:
self.config['gui_displaystats']=int(self.gui_displaystats_checkbox.GetValue()) self.config['gui_displaymiscstats']=int(self.gui_displaymiscstats_checkbox.GetValue()) self.config['security']=int(self.security_checkbox.GetValue()) self.config['auto_kick']=int(self.autokick_checkbox.GetValue()) buffering=int(self.buffering_checkbox.GetValue()) self.config['buffer_reads']=buffering if buffering: self.config['write_buffer_size']=self.defaults['write_buffer_size'] else: self.config['write_buffer_size']=0 self.config['breakup_seed_bitfield']=int(self.breakup_checkbox.GetValue()) if self.autoflush_checkbox.GetValue(): self.config['auto_flush']=5 else: self.config['auto_flush']=0 if sys.version_info >= (2,3) and socket.has_ipv6: self.config['ipv6_enabled']=int(self.ipv6enabled_checkbox.GetValue()) self.config['gui_forcegreenonfirewall']=int(self.gui_forcegreenonfirewall_checkbox.GetValue()) self.config['minport']=self.minport_data.GetValue() self.config['maxport']=self.maxport_data.GetValue() self.config['random_port']=int(self.randomport_checkbox.GetValue()) self.config['gui_font']=self.gui_font_data.GetValue() self.config['gui_ratesettingsdefault']=self.gui_ratesettingsdefault_data.GetStringSelection() self.config['max_download_rate']=self.maxdownload_data.GetValue() self.config['gui_ratesettingsmode']=self.gui_ratesettingsmode_data.GetStringSelection() self.config['gui_default_savedir']=self.gui_default_savedir_ctrl.GetValue() self.config['gui_saveas_ask']=1-self.gui_savemode_data.GetSelection() self.config['gui_checkingcolor']=ColorToHex(self.checkingcolor) self.config['gui_downloadcolor']=ColorToHex(self.downloadcolor) self.config['gui_seedingcolor']=ColorToHex(self.seedingcolor) if (sys.platform == 'win32'): self.config['win32_taskbar_icon']=int(self.win32_taskbar_icon_checkbox.GetValue())# self.config['upnp_nat_access']=int(self.upnp_checkbox.GetValue()) self.config['upnp_nat_access']=self.upnp_data.GetSelection() if self.advancedConfig: for key,val in self.advancedConfig.items(): self.config[key] = val self.writeConfigFile() self._configReset = True self.Close() except: self.parent.exception() def cancelConfigs(evt, self = self): self.Close() def savepath_set(evt, self = self): try: d = self.gui_default_savedir_ctrl.GetValue() if d == '': d = self.config['last_saved'] dl = wxDirDialog(self.panel, 'Choose a default directory to save to', d, style = wxDD_DEFAULT_STYLE | wxDD_NEW_DIR_BUTTON) if dl.ShowModal() == wxID_OK: self.gui_default_savedir_ctrl.SetValue(dl.GetPath()) except: self.parent.exception() def checkingcoloricon_set(evt, self = self): try: newcolor = self.getColorFromUser(self.panel,self.checkingcolor) self.setColorIcon(self.checkingcolor_icon, self.checkingcolor_iconptr, newcolor) self.checkingcolor = newcolor except: self.parent.exception() def downloadcoloricon_set(evt, self = self): try: newcolor = self.getColorFromUser(self.panel,self.downloadcolor) self.setColorIcon(self.downloadcolor_icon, self.downloadcolor_iconptr, newcolor) self.downloadcolor = newcolor except: self.parent.exception() def seedingcoloricon_set(evt, self = self): try: newcolor = self.getColorFromUser(self.panel,self.seedingcolor) self.setColorIcon(self.seedingcolor_icon, self.seedingcolor_iconptr, newcolor) self.seedingcolor = newcolor except: self.parent.exception() EVT_BUTTON(self.configMenuBox, saveButton.GetId(), saveConfigs) EVT_BUTTON(self.configMenuBox, cancelButton.GetId(), cancelConfigs) EVT_BUTTON(self.configMenuBox, defaultsButton.GetId(), setDefaults) EVT_BUTTON(self.configMenuBox, advancedButton.GetId(), self.advancedMenu) EVT_BUTTON(self.configMenuBox, savepathButton.GetId(), savepath_set) EVT_LEFT_DOWN(self.checkingcolor_iconptr, checkingcoloricon_set) EVT_LEFT_DOWN(self.downloadcolor_iconptr, downloadcoloricon_set) EVT_LEFT_DOWN(self.seedingcolor_iconptr, seedingcoloricon_set) self.configMenuBox.Show () border.Fit(panel) self.configMenuBox.Fit() except: self.parent.exception() def Close(self): self.CloseAdvanced() if self.configMenuBox is not None: try: self.configMenuBox.Close () except wxPyDeadObjectError, e: pass self.configMenuBox = None def advancedMenu(self, event = None): try: if not self.advancedConfig: for key in ['ip', 'bind', 'min_peers', 'max_initiate', 'display_interval', 'alloc_type', 'alloc_rate', 'max_files_open', 'max_connections', 'super_seeder', 'ipv6_binds_v4', 'double_check', 'triple_check', 'lock_files', 'lock_while_reading', 'expire_cache_data']: self.advancedConfig[key] = self.config[key] if (self.advancedMenuBox is not None): try: self.advancedMenuBox.Close () except wxPyDeadObjectError, e: self.advancedMenuBox = None self.advancedMenuBox = wxFrame(None, -1, 'BitTorrent Advanced Preferences', size = (1,1), style = wxDEFAULT_FRAME_STYLE|wxFULL_REPAINT_ON_RESIZE) if (sys.platform == 'win32'): self.advancedMenuBox.SetIcon(self.icon) panel = wxPanel(self.advancedMenuBox, -1)# self.panel = panel def StaticText(text, font = self.FONT, underline = False, color = None, panel = panel): x = wxStaticText(panel, -1, text, style = wxALIGN_LEFT) x.SetFont(wxFont(font, wxDEFAULT, wxNORMAL, wxNORMAL, underline)) if color is not None: x.SetForegroundColour(color) return x colsizer = wxFlexGridSizer(cols = 1, hgap = 13, vgap = 13) warningtext = StaticText('CHANGE THESE SETTINGS AT YOUR OWN RISK', self.FONT+4, True, 'Red') colsizer.Add(warningtext, 1, wxALIGN_CENTER) self.ip_data = wxTextCtrl(parent = panel, id = -1, value = self.advancedConfig['ip'], size = (self.FONT*13, int(self.FONT*2.2)), style = wxTE_PROCESS_TAB) self.ip_data.SetFont(self.default_font) self.bind_data = wxTextCtrl(parent = panel, id = -1, value = self.advancedConfig['bind'], size = (self.FONT*13, int(self.FONT*2.2)), style = wxTE_PROCESS_TAB) self.bind_data.SetFont(self.default_font) if sys.version_info >= (2,3) and socket.has_ipv6: self.ipv6bindsv4_data=wxChoice(panel, -1, choices = ['separate sockets', 'single socket']) self.ipv6bindsv4_data.SetFont(self.default_font) self.ipv6bindsv4_data.SetSelection(self.advancedConfig['ipv6_binds_v4']) self.minpeers_data = wxSpinCtrl(panel, -1, '', (-1,-1), (self.FONT*7, -1)) self.minpeers_data.SetFont(self.default_font) self.minpeers_data.SetRange(10,100) self.minpeers_data.SetValue(self.advancedConfig['min_peers']) # max_initiate = 2*minpeers self.displayinterval_data = wxSpinCtrl(panel, -1, '', (-1,-1), (self.FONT*7, -1)) self.displayinterval_data.SetFont(self.default_font) self.displayinterval_data.SetRange(100,2000) self.displayinterval_data.SetValue(int(self.advancedConfig['display_interval']*1000)) self.alloctype_data=wxChoice(panel, -1, choices = ['normal', 'background', 'pre-allocate', 'sparse']) self.alloctype_data.SetFont(self.default_font) self.alloctype_data.SetStringSelection(self.advancedConfig['alloc_type']) self.allocrate_data = wxSpinCtrl(panel, -1, '', (-1,-1), (self.FONT*7,-1)) self.allocrate_data.SetFont(self.default_font) self.allocrate_data.SetRange(1,100) self.allocrate_data.SetValue(int(self.advancedConfig['alloc_rate'])) self.locking_data=wxChoice(panel, -1, choices = ['no locking', 'lock while writing', 'lock always']) self.locking_data.SetFont(self.default_font) if self.advancedConfig['lock_files']: if self.advancedConfig['lock_while_reading']: self.locking_data.SetSelection(2) else: self.locking_data.SetSelection(1) else: self.locking_data.SetSelection(0) self.doublecheck_data=wxChoice(panel, -1, choices = ['no extra checking', 'double-check', 'triple-check']) self.doublecheck_data.SetFont(self.default_font) if self.advancedConfig['double_check']: if self.advancedConfig['triple_check']: self.doublecheck_data.SetSelection(2) else: self.doublecheck_data.SetSelection(1) else: self.doublecheck_data.SetSelection(0) self.maxfilesopen_choices = ['50', '100', '200', 'no limit '] self.maxfilesopen_data=wxChoice(panel, -1, choices = self.maxfilesopen_choices) self.maxfilesopen_data.SetFont(self.default_font) setval = self.advancedConfig['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) self.maxconnections_choices = ['no limit ', '20', '30', '40', '50', '60', '100', '200'] self.maxconnections_data=wxChoice(panel, -1, choices = self.maxconnections_choices) self.maxconnections_data.SetFont(self.default_font) setval = self.advancedConfig['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=wxChoice(panel, -1, choices = ['normal', 'super-seed']) self.superseeder_data.SetFont(self.default_font) self.superseeder_data.SetSelection(self.advancedConfig['super_seeder']) self.expirecache_choices = ['never ', '3', '5', '7', '10', '15', '30', '60', '90'] self.expirecache_data=wxChoice(panel, -1, choices = self.expirecache_choices) setval = self.advancedConfig['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.SetFont(self.default_font) self.expirecache_data.SetStringSelection(setval) twocolsizer = wxFlexGridSizer(cols = 2, hgap = 20) datasizer = wxFlexGridSizer(cols = 2, vgap = 2) datasizer.Add(StaticText('Local IP: '), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.ip_data) datasizer.Add(StaticText('IP to bind to: '), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.bind_data) if sys.version_info >= (2,3) and socket.has_ipv6: datasizer.Add(StaticText('IPv6 socket handling: '), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.ipv6bindsv4_data) datasizer.Add(StaticText('Minimum number of peers: '), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.minpeers_data) datasizer.Add(StaticText('Display interval (ms): '), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.displayinterval_data) datasizer.Add(StaticText('Disk allocation type:'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.alloctype_data) datasizer.Add(StaticText('Allocation rate (MiB/s):'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.allocrate_data) datasizer.Add(StaticText('File locking:'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.locking_data) datasizer.Add(StaticText('Extra data checking:'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.doublecheck_data) datasizer.Add(StaticText('Max files open:'), 1, wxALIGN_CENTER_VERTICAL) datasizer.Add(self.maxfilesopen_data)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -