self.props = self.init_props()
self.pnl = wx.Panel(self)
+ # wx item vars
+ self.wx_items = dict()
+ self.wx_items['StaticText'] = dict()
+ self.wx_items['TextEntry'] = dict()
+ self.wx_items['RadioButton'] = dict()
+ self.wx_items['ComboBox'] = dict()
+
# setup the GUI itself
self.create_wx_items()
self.establish_wx_bindings()
self.program_name.SetFont(font)
# text entry fields
- self.st_distance = wx.StaticText(self.pnl, label="Distance: ", style=wx.ALIGN_RIGHT)
- self.te_distance = wx.TextCtrl(self.pnl, value="0", size=(140, -1))
-
- self.st_elevation = wx.StaticText(self.pnl, label="Elevation: ", style=wx.ALIGN_RIGHT)
- self.te_elevation = wx.TextCtrl(self.pnl, value="0", size=(140, -1))
-
- self.st_fitness = wx.StaticText(self.pnl, label="Fitness: ", style=wx.ALIGN_RIGHT)
+ self.wx_items['StaticText']['distance'] = wx.StaticText(self.pnl,
+ label="Distance: ",
+ style=wx.ALIGN_RIGHT)
+ self.wx_items['TextEntry']['distance'] = wx.TextCtrl(self.pnl,
+ value="0",
+ size=(140, -1))
+
+ self.wx_items['StaticText']['elevation'] = wx.StaticText(self.pnl,
+ label="Elevation: ",
+ style=wx.ALIGN_RIGHT)
+ self.wx_items['TextEntry']['elevation'] = wx.TextCtrl(self.pnl,
+ value="0",
+ size=(140, -1))
+
+ self.wx_items['StaticText']['fitness'] = wx.StaticText(self.pnl,
+ label="Fitness: ",
+ style=wx.ALIGN_RIGHT)
rb_fitness_choices = ['slow', 'average', 'fast']
rb_fitness_default = 'average'
- self.rb_fitness = wx.ComboBox(self.pnl, choices=rb_fitness_choices,
- value=rb_fitness_default,
- style=wx.CB_READONLY)
-
- self.st_travel_mode = wx.StaticText(self.pnl,
- label="Travel Mode: ",
- style=wx.ALIGN_RIGHT)
+ self.wx_items['RadioButton']['fitness'] = wx.ComboBox(self.pnl,
+ choices=rb_fitness_choices,
+ value=rb_fitness_default,
+ style=wx.CB_READONLY)
+
+ self.wx_items['StaticText']['travel_mode'] = wx.StaticText(self.pnl,
+ label="Travel Mode: ",
+ style=wx.ALIGN_RIGHT)
rb_travel_mode_choices = ['uphill', 'flat', 'downhill', 'bushwhacking']
rb_travel_mode_default = 'uphill'
- self.rb_travel_mode = wx.ComboBox(self.pnl,
- choices=rb_travel_mode_choices,
- value=rb_travel_mode_default,
- style=wx.CB_READONLY)
-
- self.st_units = wx.StaticText(self.pnl, label="Units: ", style=wx.ALIGN_RIGHT)
+ self.wx_items['RadioButton']['travel_mode'] = wx.ComboBox(self.pnl,
+ choices=rb_travel_mode_choices,
+ value=rb_travel_mode_default,
+ style=wx.CB_READONLY)
+
+ self.wx_items['StaticText']['units'] = wx.StaticText(self.pnl,
+ label="Units: ",
+ style=wx.ALIGN_RIGHT)
rb_units_choices = ['imperial', 'metric']
rb_units_default = 'imperial'
- self.rb_units = []
+ self.wx_items['RadioButton']['units'] = []
for choice in rb_units_choices:
label = choice
style = wx.RB_GROUP if choice == rb_units_default else 0
- self.rb_units.append(wx.RadioButton(self.pnl, label=label, style=style))
+ self.wx_items['RadioButton']['units'].append(wx.RadioButton(self.pnl,
+ label=label,
+ style=style))
# static text
- self.st_mtc = wx.StaticText(self.pnl, label="",
- style=wx.ALIGN_CENTRE_HORIZONTAL)
+ self.wx_items['StaticText']['mtc'] = wx.StaticText(self.pnl,
+ label="",
+ style=wx.ALIGN_CENTRE_HORIZONTAL)
st_mtc_font = self.program_name.GetFont()
st_mtc_font.PointSize += 10
- self.st_mtc.SetFont(st_mtc_font)
+ self.wx_items['StaticText']['mtc'].SetFont(st_mtc_font)
# buttons
self.b_reset = wx.Button(self.pnl, wx.NewId(), '&Reset', (-1, -1),
def establish_wx_bindings(self):
"""establish wxPython bindings"""
- self.pnl.Bind(wx.EVT_TEXT, self.update_distance, self.te_distance)
- self.pnl.Bind(wx.EVT_TEXT, self.update_elevation, self.te_elevation)
- self.rb_fitness.Bind(wx.EVT_COMBOBOX, self.update_fitness)
- self.rb_travel_mode.Bind(wx.EVT_COMBOBOX, self.update_travel_mode)
+ self.pnl.Bind(wx.EVT_TEXT, self.update_distance, self.wx_items['TextEntry']['distance'])
+ self.pnl.Bind(wx.EVT_TEXT, self.update_elevation, self.wx_items['TextEntry']['elevation'])
+ self.wx_items['RadioButton']['fitness'].Bind(wx.EVT_COMBOBOX, self.update_fitness)
+ self.wx_items['RadioButton']['travel_mode'].Bind(wx.EVT_COMBOBOX, self.update_travel_mode)
self.b_reset.Bind(wx.EVT_BUTTON, self.reset)
- for rb_unit in self.rb_units:
+ for rb_unit in self.wx_items['RadioButton']['units']:
rb_unit.Bind(wx.EVT_RADIOBUTTON, self.update_units)
def do_wx_layout(self):
static_line = wx.StaticLine(self.pnl, wx.NewId(), style=wx.LI_HORIZONTAL)
hsizer_distance = wx.BoxSizer(wx.HORIZONTAL)
- hsizer_distance.Add(self.st_distance, 0, wx.RIGHT, border)
- hsizer_distance.Add(self.te_distance, 1, wx.GROW, border)
- hsizer_distance.SetItemMinSize(self.st_distance, (width, -1))
+ hsizer_distance.Add(self.wx_items['StaticText']['distance'], 0, wx.RIGHT, border)
+ hsizer_distance.Add(self.wx_items['TextEntry']['distance'], 1, wx.GROW, border)
+ hsizer_distance.SetItemMinSize(self.wx_items['StaticText']['distance'], (width, -1))
hsizer_elevation = wx.BoxSizer(wx.HORIZONTAL)
- hsizer_elevation.Add(self.st_elevation, 0, wx.RIGHT, border)
- hsizer_elevation.Add(self.te_elevation, 1, wx.GROW, border)
- hsizer_elevation.SetItemMinSize(self.st_elevation, (width, -1))
+ hsizer_elevation.Add(self.wx_items['StaticText']['elevation'], 0, wx.RIGHT, border)
+ hsizer_elevation.Add(self.wx_items['TextEntry']['elevation'], 1, wx.GROW, border)
+ hsizer_elevation.SetItemMinSize(self.wx_items['StaticText']['elevation'], (width, -1))
hsizer_fitness = wx.BoxSizer(wx.HORIZONTAL)
- hsizer_fitness.Add(self.st_fitness, 0, wx.RIGHT, border)
- hsizer_fitness.Add(self.rb_fitness, 1, wx.GROW, border)
- hsizer_fitness.SetItemMinSize(self.st_fitness, (width, -1))
+ hsizer_fitness.Add(self.wx_items['StaticText']['fitness'], 0, wx.RIGHT, border)
+ hsizer_fitness.Add(self.wx_items['RadioButton']['fitness'], 1, wx.GROW, border)
+ hsizer_fitness.SetItemMinSize(self.wx_items['StaticText']['fitness'], (width, -1))
hsizer_travel_mode = wx.BoxSizer(wx.HORIZONTAL)
- hsizer_travel_mode.Add(self.st_travel_mode, 0, wx.RIGHT, border)
- hsizer_travel_mode.Add(self.rb_travel_mode, 1, wx.GROW, border)
- hsizer_travel_mode.SetItemMinSize(self.st_travel_mode, (width, -1))
+ hsizer_travel_mode.Add(self.wx_items['StaticText']['travel_mode'], 0, wx.RIGHT, border)
+ hsizer_travel_mode.Add(self.wx_items['RadioButton']['travel_mode'], 1, wx.GROW, border)
+ hsizer_travel_mode.SetItemMinSize(self.wx_items['StaticText']['travel_mode'], (width, -1))
hsizer_units = wx.BoxSizer(wx.HORIZONTAL)
- hsizer_units.Add(self.st_units, 0, wx.RIGHT, border)
- for rb_unit in range(len(self.rb_units)):
- hsizer_units.Add(self.rb_units[rb_unit], rb_unit + 1, wx.GROW, border)
- hsizer_units.SetItemMinSize(self.st_units, (width, -1))
+ hsizer_units.Add(self.wx_items['StaticText']['units'], 0, wx.RIGHT, border)
+ for rb_unit in range(len(self.wx_items['RadioButton']['units'])):
+ hsizer_units.Add(self.wx_items['RadioButton']['units'][rb_unit],
+ rb_unit + 1,
+ wx.GROW,
+ border)
+ hsizer_units.SetItemMinSize(self.wx_items['StaticText']['units'], (width, -1))
hsizer_mtc = wx.BoxSizer(wx.HORIZONTAL)
- hsizer_mtc.Add(self.st_mtc, 1, wx.GROW, border)
- hsizer_mtc.SetItemMinSize(self.st_mtc, (width, -1))
+ hsizer_mtc.Add(self.wx_items['StaticText']['mtc'], 1, wx.GROW, border)
+ hsizer_mtc.SetItemMinSize(self.wx_items['StaticText']['mtc'], (width, -1))
hsizer5 = wx.BoxSizer(wx.HORIZONTAL)
hsizer5.Add(self.b_reset, 0)
self.props['distance'] = new_val
except ValueError:
# reset GUI to last-accepted val
- self.te_distance.SetValue(str(self.props['distance']))
+ self.wx_items['TextEntry']['distance'].SetValue(str(self.props['distance']))
self.update_mtc()
def update_elevation(self, event):
self.props['elevation'] = new_val
except ValueError:
# reset GUI to last-accepted val
- self.te_elevation.SetValue(str(self.props['elevation']))
+ self.wx_items['TextEntry']['elevation'].SetValue(str(self.props['elevation']))
self.update_mtc()
def update_fitness(self, event):
"""resets all values"""
event.GetTimestamp()
self.props = self.init_props()
- self.te_distance.SetValue(str(self.props['distance']))
- self.te_elevation.SetValue(str(self.props['elevation']))
- self.rb_fitness.SetValue(str(self.props['fitness']))
- self.rb_travel_mode.SetValue(str(self.props['travel_mode']))
+ self.wx_items['TextEntry']['distance'].SetValue(str(self.props['distance']))
+ self.wx_items['TextEntry']['elevation'].SetValue(str(self.props['elevation']))
+ self.wx_items['RadioButton']['fitness'].SetValue(str(self.props['fitness']))
+ self.wx_items['RadioButton']['travel_mode'].SetValue(str(self.props['travel_mode']))
# leave units as the user selected
self.update_mtc()
hours = int(est['time'])
minutes = int((est['time'] - hours) * 60)
- self.st_mtc.SetLabel("{human_time}".format(
+ self.wx_items['StaticText']['mtc'].SetLabel("{human_time}".format(
human_time="{hours} hours {minutes} minutes".format(
hours=hours,
minutes=minutes)))