Chromium Code Reviews| Index: scripts/newbitmaps/lib/pixcontrol.py |
| diff --git a/scripts/newbitmaps/lib/pixcontrol.py b/scripts/newbitmaps/lib/pixcontrol.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..507c4c927df5ce463c9697f66f1316e369ab2115 |
| --- /dev/null |
| +++ b/scripts/newbitmaps/lib/pixcontrol.py |
| @@ -0,0 +1,103 @@ |
| +#!/usr/bin/python -tt |
| +# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +"""Edit buttons for bmpblock object""" |
| + |
| +import wx |
| + |
| +class Frame(wx.Frame): |
| + |
| + def __init__(self, bmpblock=None, title=None): |
| + wx.Frame.__init__(self, None, wx.ID_ANY, title, size=(200,400)) |
| + menuFile = wx.Menu() |
| + m_about = menuFile.Append(wx.ID_ANY, "About...\tCtrl+A") |
| + menuFile.AppendSeparator() |
| + m_reload = menuFile.Append(wx.ID_ANY, "Reload\tCtrl+R") |
| + m_quit = menuFile.Append(wx.ID_ANY, "Quit\tCtrl+Q") |
| + menuBar = wx.MenuBar() |
| + menuBar.Append(menuFile, "&File") |
| + self.SetMenuBar(menuBar) |
| + self.CreateStatusBar() |
| + self.Bind(wx.EVT_MENU, self.OnAbout, m_about) |
| + self.Bind(wx.EVT_MENU, self.OnReload, m_reload) |
| + self.Bind(wx.EVT_MENU, self.OnQuit, m_quit) |
| + self.Bind(wx.EVT_CLOSE, self.OnQuit) |
| + |
| + acctbl = wx.AcceleratorTable([ |
| + (wx.ACCEL_CTRL, ord('A'), m_about.GetId()), |
| + (wx.ACCEL_CTRL, ord('R'), m_reload.GetId()), |
| + (wx.ACCEL_CTRL, ord('Q'), m_quit.GetId()) |
| + ]) |
| + |
| + self.SetAcceleratorTable(acctbl) |
| + |
|
Randall Spangler
2011/03/01 17:37:18
Extra newline
|
| + |
| + # create UI components |
| + panel = wx.Panel(self) |
| + button_reload = wx.Button(panel, label="Reload File") |
| + self.screenlist = wx.ListBox(panel, wx.ID_ANY) |
| + |
| + # connect events |
| + self.Bind(wx.EVT_BUTTON, self.OnReload, button_reload) |
| + self.Bind(wx.EVT_LISTBOX, self.OnSelected, self.screenlist) |
| + self.Bind(wx.EVT_IDLE, self.OnIdle) |
| + |
| + # place the componenents |
| + sizer = wx.BoxSizer(wx.VERTICAL) |
| + sizer.Add(button_reload) |
| + sizer.Add(wx.StaticText(panel, wx.ID_ANY, "Screens")) |
| + sizer.Add(self.screenlist, 1, wx.EXPAND) |
| + |
| + panel.SetSizer(sizer) |
| + panel.Fit() |
| + |
| + # now, what are we looking at? |
| + self.bmpblock = bmpblock |
| + self.UpdateControls() |
| + self.do_update = True |
| + self.screenlist.SetFocus() |
| + |
| + def OnAbout(self, event): |
| + """Display basic information about this application.""" |
| + msg = ("Yes, all this does right now is display the screens from the config" |
| + " file. You still have to edit, save, and reload in order to see any" |
| + " changes. Learning python and wxpython is my 20% project (actually" |
| + " it's more like 5%). Feel free to improve things.\n\t-- bill") |
| + wx.MessageBox(msg, "About", wx.OK | wx.ICON_INFORMATION, self) |
| + |
| + def OnQuit(self, event): |
| + """Close all application windows and quit.""" |
| + wx.GetApp().ExitMainLoop() |
| + |
| + def OnReload(self, event): |
| + """Tell the model object to refresh the view that the user sees. |
| + FIXME: The model itself should know to do this without being told. |
| + """ |
| + self.bmpblock.Reload() |
| + self.do_update = True; |
| + self.UpdateControls() |
| + |
| + def OnSelected(self, event): |
| + """I may have picked one of the pulldowns.""" |
|
Randall Spangler
2011/03/01 17:37:18
I -> User
|
| + if event.IsSelection(): |
| + self.bmpblock.current_screen = event.GetString() |
| + self.do_update = True |
| + event.Skip() |
| + |
| + def UpdateControls(self): |
| + """Reload all the buttons with the current model information.""" |
| + screens = self.bmpblock.yaml["screens"] |
| + self.screenlist.Clear() |
| + self.screenlist.AppendItems(sorted(screens.keys())) |
| + current = self.bmpblock.current_screen |
| + self.screenlist.SetStringSelection(current) |
| + self.SetStatusText(self.bmpblock.filename) |
| + |
| + def OnIdle(self, event=None): |
| + """What to do, what to do...""" |
| + if self.do_update: |
| + # FIXME: The model should know when to do this itself, right? |
| + self.bmpblock.Redisplay() |
| + self.do_update = False |