| 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..1f46558e8b6aca65c066d5c38eb26d034967b0d5
|
| --- /dev/null
|
| +++ b/scripts/newbitmaps/lib/pixcontrol.py
|
| @@ -0,0 +1,102 @@
|
| +#!/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)
|
| +
|
| + # 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):
|
| + """User may have picked one of the pulldowns."""
|
| + 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
|
|
|