-from __future__ import absolute_import
from __future__ import division
__copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
-import platform
import wx, wx.lib.stattext, types
from wx.lib.agw import floatspin
self.popup = wx.PopupWindow(self, flags=wx.BORDER_SIMPLE)
self.popup.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK))
self.popup.setting = None
- self.popup.text = wx.StaticText(self.popup, -1, '');
+ self.popup.text = wx.StaticText(self.popup, -1, '')
+ self.popup.text.SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOTEXT))
self.popup.sizer = wx.BoxSizer()
self.popup.sizer.Add(self.popup.text, flag=wx.EXPAND|wx.ALL, border=1)
self.popup.SetSizer(self.popup.sizer)
size[0] = width
child.SetBestSize(size)
-class TitleRow():
+class TitleRow(object):
def __init__(self, panel, name):
"Add a title row to the configuration panel"
sizer = panel.GetSizer()
sizer.Add(wx.StaticLine(panel), (x+1,0), (1,3), flag=wx.EXPAND|wx.LEFT,border=10)
sizer.SetRows(x + 2)
-class SettingRow():
- def __init__(self, panel, configName, valueOverride = None):
+class SettingRow(object):
+ def __init__(self, panel, configName, valueOverride = None, index = None):
"Add a setting to the configuration panel"
sizer = panel.GetSizer()
x = sizer.GetRows()
flag = 0
self.setting = profile.settingsDictionary[configName]
+ self.settingIndex = index
self.validationMsg = ''
self.panel = panel
# flag = wx.EXPAND
if self.setting.getType() is types.BooleanType:
self.ctrl = wx.CheckBox(panel, -1, style=wx.ALIGN_RIGHT)
- self.SetValue(self.setting.getValue())
+ self.SetValue(self.setting.getValue(self.settingIndex))
self.ctrl.Bind(wx.EVT_CHECKBOX, self.OnSettingChange)
elif valueOverride is not None and valueOverride is wx.Colour:
self.ctrl = wx.ColourPickerCtrl(panel, -1)
- self.SetValue(self.setting.getValue())
+ self.SetValue(self.setting.getValue(self.settingIndex))
self.ctrl.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnSettingChange)
elif type(self.setting.getType()) is list or valueOverride is not None:
+ value = self.setting.getValue(self.settingIndex)
+ choices = self.setting.getType()
if valueOverride is not None:
- self.ctrl = wx.ComboBox(panel, -1, self.setting.getValue(), choices=valueOverride, style=wx.CB_DROPDOWN|wx.CB_READONLY)
- else:
- self.ctrl = wx.ComboBox(panel, -1, self.setting.getValue(), choices=self.setting.getType(), style=wx.CB_DROPDOWN|wx.CB_READONLY)
+ choices = valueOverride
+ self._englishChoices = choices[:]
+ if value not in choices and len(choices) > 0:
+ value = choices[0]
+ for n in xrange(0, len(choices)):
+ choices[n] = _(choices[n])
+ value = _(value)
+ self.ctrl = wx.ComboBox(panel, -1, value, choices=choices, style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.ctrl.Bind(wx.EVT_COMBOBOX, self.OnSettingChange)
self.ctrl.Bind(wx.EVT_LEFT_DOWN, self.OnMouseExit)
flag = wx.EXPAND
else:
- self.ctrl = wx.TextCtrl(panel, -1, self.setting.getValue())
+ self.ctrl = wx.TextCtrl(panel, -1, self.setting.getValue(self.settingIndex))
self.ctrl.Bind(wx.EVT_TEXT, self.OnSettingChange)
flag = wx.EXPAND
e.Skip()
def OnSettingChange(self, e):
- self.setting.setValue(self.GetValue())
+ self.setting.setValue(self.GetValue(), self.settingIndex)
self.panel.main._validate()
def _validate(self):
def GetValue(self):
if isinstance(self.ctrl, wx.ColourPickerCtrl):
return str(self.ctrl.GetColour().GetAsString(wx.C2S_HTML_SYNTAX))
+ elif isinstance(self.ctrl, wx.ComboBox):
+ value = str(self.ctrl.GetValue())
+ for ret in self._englishChoices:
+ if _(ret) == value:
+ return ret
+ return value
else:
return str(self.ctrl.GetValue())
self.ctrl.SetValue(float(value))
except ValueError:
pass
+ elif isinstance(self.ctrl, wx.ComboBox):
+ self.ctrl.SetValue(_(value))
else:
self.ctrl.SetValue(value)
-
-#Settings notify works as a validator, but instead of validating anything, it calls another function, which can use the value.
-# A bit hacky, bit it works.
-class settingNotify():
- def __init__(self, setting, func):
- self.setting = setting
- self.setting.validators.append(self)
- self.func = func
-
- def validate(self):
- self.func()
- return validators.SUCCESS, ''
-