361
353
rowsizer = wxFlexGridSizer(cols = 2, hgap = 20)
363
block12sizer = wxFlexGridSizer(cols = 1, vgap = 7)
355
block12sizer = wxFlexGridSizer(cols = 1, vgap = 12)
365
357
block1sizer = wxFlexGridSizer(cols = 1, vgap = 2)
366
358
if (sys.platform == 'win32'):
367
359
block1sizer.Add(self.win32_taskbar_icon_checkbox)
368
# block1sizer.Add(self.upnp_checkbox)
369
360
block1sizer.Add(self.gui_stretchwindow_checkbox)
370
361
block1sizer.Add(self.gui_displaystats_checkbox)
371
362
block1sizer.Add(self.gui_displaymiscstats_checkbox)
372
block1sizer.Add(self.security_checkbox)
373
block1sizer.Add(self.autokick_checkbox)
374
363
block1sizer.Add(self.buffering_checkbox)
375
364
block1sizer.Add(self.breakup_checkbox)
376
365
block1sizer.Add(self.autoflush_checkbox)
377
366
if sys.version_info >= (2,3) and socket.has_ipv6:
378
367
block1sizer.Add(self.ipv6enabled_checkbox)
379
368
block1sizer.Add(self.gui_forcegreenonfirewall_checkbox)
381
369
block12sizer.Add(block1sizer)
370
block12sizer.Add(cryptoButton, 0, wxALIGN_CENTER)
383
372
colorsizer = wxStaticBoxSizer(wxStaticBox(panel, -1, "Gauge Colors:"), wxVERTICAL)
384
373
colorsizer1 = wxFlexGridSizer(cols = 7)
517
504
if (sys.platform == 'win32'):
518
505
self.win32_taskbar_icon_checkbox.SetValue(self.defaults['win32_taskbar_icon'])
519
# self.upnp_checkbox.SetValue(self.defaults['upnp_nat_access'])
520
506
self.upnp_data.SetSelection(self.defaults['upnp_nat_access'])
508
# reset advanced and crypto windows too
523
509
self.advancedConfig = {}
524
510
for key in ['ip', 'bind', 'min_peers', 'max_initiate', 'display_interval',
525
511
'alloc_type', 'alloc_rate', 'max_files_open', 'max_connections', 'super_seeder',
526
512
'ipv6_binds_v4', 'double_check', 'triple_check', 'lock_files', 'lock_while_reading',
527
513
'expire_cache_data']:
528
514
self.advancedConfig[key] = self.defaults[key]
515
self.cryptoConfig = {}
516
for key in ['security', 'auto_kick',
517
'crypto_allowed', 'crypto_only', 'crypto_stealth']:
518
self.cryptoConfig[key] = self.config[key]
529
519
self.CloseAdvanced()
531
521
self.parent.exception()
1066
1056
except wxPyDeadObjectError, e:
1067
1057
self.advancedMenuBox = None
1060
def cryptoMenu(self, event = None):
1062
if not self.cryptoConfig:
1063
for key in ['security', 'auto_kick',
1064
'crypto_allowed', 'crypto_only', 'crypto_stealth']:
1065
self.cryptoConfig[key] = self.config[key]
1067
if (self.cryptoMenuBox is not None):
1069
self.cryptoMenuBox.Close ()
1070
except wxPyDeadObjectError, e:
1071
self.cryptoMenuBox = None
1073
self.cryptoMenuBox = wxFrame(None, -1, 'BitTornado Encryption/Security Preferences', size = (1,1),
1074
style = wxDEFAULT_FRAME_STYLE|wxFULL_REPAINT_ON_RESIZE)
1075
if (sys.platform == 'win32'):
1076
self.cryptoMenuBox.SetIcon(self.icon)
1078
panel = wxPanel(self.cryptoMenuBox, -1)
1079
# self.panel = panel
1081
def StaticText(text, font = self.FONT, underline = False, color = None, panel = panel):
1082
x = wxStaticText(panel, -1, text, style = wxALIGN_LEFT)
1083
x.SetFont(wxFont(font, wxDEFAULT, wxNORMAL, wxNORMAL, underline))
1084
if color is not None:
1085
x.SetForegroundColour(color)
1088
colsizer = wxFlexGridSizer(cols = 1, hgap = 13, vgap = 13)
1090
self.cryptomode_data=wxRadioBox(panel, -1, 'Encryption',
1091
style = wxRA_SPECIFY_COLS, majorDimension = 1,
1093
'no encryption permitted',
1094
'encryption enabled (default)',
1095
'encrypted connections only',
1096
'full stealth encryption'+
1097
' (may cause effective firewalling)' ] )
1098
self.cryptomode_data.SetFont(self.default_font)
1099
if self.cryptoConfig['crypto_stealth']:
1101
elif self.cryptoConfig['crypto_only']:
1103
elif self.cryptoConfig['crypto_allowed']:
1107
self.cryptomode_data.SetSelection(m)
1108
if not CRYPTO_OK: # no crypto library in place
1109
self.cryptomode_data.Enable(False)
1111
self.security_checkbox = wxCheckBox(panel, -1, "Don't allow multiple connections from the same IP")
1112
self.security_checkbox.SetFont(self.default_font)
1113
self.security_checkbox.SetValue(self.cryptoConfig['security'])
1115
self.autokick_checkbox = wxCheckBox(panel, -1, "Kick/ban clients that send you bad data")
1116
self.autokick_checkbox.SetFont(self.default_font)
1117
self.autokick_checkbox.SetValue(self.cryptoConfig['auto_kick'])
1119
colsizer.Add(self.cryptomode_data)
1121
block2sizer = wxFlexGridSizer(cols = 1, vgap = 2)
1122
block2sizer.Add(self.security_checkbox)
1123
block2sizer.Add(self.autokick_checkbox)
1124
colsizer.Add(block2sizer)
1126
savesizer = wxGridSizer(cols = 3, hgap = 20)
1127
okButton = wxButton(panel, -1, 'OK')
1128
savesizer.Add(okButton, 0, wxALIGN_CENTER)
1130
cancelButton = wxButton(panel, -1, 'Cancel')
1131
savesizer.Add(cancelButton, 0, wxALIGN_CENTER)
1133
defaultsButton = wxButton(panel, -1, 'Revert to Defaults')
1134
savesizer.Add(defaultsButton, 0, wxALIGN_CENTER)
1135
colsizer.Add(savesizer, 1, wxALIGN_CENTER)
1137
resizewarningtext=StaticText('None of these settings will take effect until the next time you start BitTorrent', self.FONT-2)
1138
colsizer.Add(resizewarningtext, 1, wxALIGN_CENTER)
1140
border = wxBoxSizer(wxHORIZONTAL)
1141
border.Add(colsizer, 1, wxEXPAND | wxALL, 4)
1143
panel.SetSizer(border)
1144
panel.SetAutoLayout(True)
1146
def setDefaults(evt, self = self):
1148
if self.defaults['crypto_stealth']:
1150
elif self.defaults['crypto_only']:
1152
elif self.defaults['crypto_allowed']:
1156
self.cryptomode_data.SetSelection(m)
1157
self.security_checkbox.SetValue(self.defaults['security'])
1158
self.autokick_checkbox.SetValue(self.defaults['auto_kick'])
1160
self.parent.exception()
1162
def saveConfigs(evt, self = self):
1164
m = self.cryptomode_data.GetSelection()
1165
self.cryptoConfig['crypto_stealth'] = int(m==3)
1166
self.cryptoConfig['crypto_only'] = int(m>=2)
1167
self.cryptoConfig['crypto_allowed'] = int(m>=1)
1168
self.cryptoConfig['security']=int(self.security_checkbox.GetValue())
1169
self.cryptoConfig['auto_kick']=int(self.autokick_checkbox.GetValue())
1170
self.cryptoMenuBox.Close()
1172
self.parent.exception()
1174
def cancelConfigs(evt, self = self):
1175
self.cryptoMenuBox.Close()
1177
EVT_BUTTON(self.cryptoMenuBox, okButton.GetId(), saveConfigs)
1178
EVT_BUTTON(self.cryptoMenuBox, cancelButton.GetId(), cancelConfigs)
1179
EVT_BUTTON(self.cryptoMenuBox, defaultsButton.GetId(), setDefaults)
1181
self.cryptoMenuBox.Show ()
1183
self.cryptoMenuBox.Fit()
1185
self.parent.exception()
1188
def CloseCrypt(self):
1189
if self.cryptMenuBox is not None:
1191
self.cryptMenuBox.Close()
1192
except wxPyDeadObjectError, e:
1193
self.cryptMenuBox = None