X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/demo/ColourDB.py?ds=sidebyside diff --git a/wxPython/demo/ColourDB.py b/wxPython/demo/ColourDB.py deleted file mode 100644 index a13d7e13b6..0000000000 --- a/wxPython/demo/ColourDB.py +++ /dev/null @@ -1,200 +0,0 @@ - -import wx -import wx.lib.colourdb - -import images - - -#---------------------------------------------------------------------- - -class TestWindow(wx.ScrolledWindow): - def __init__(self, parent): - wx.ScrolledWindow.__init__(self, parent, -1) - - # Populate our color list - self.clrList = wx.lib.colourdb.getColourInfoList() - - # Just for style points, we'll use this as a background image. - self.bg_bmp = images.getGridBGBitmap() - - # This could also be done by getting the window's default font; - # either way, we need to have a font loaded for later on. - #self.SetBackgroundColour("WHITE") - self.font = wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL) - - # Create drawing area and set its font - dc = wx.ClientDC(self) - dc.SetFont(self.font) - - # Using GetFullTextExtent(), we calculate a basic 'building block' - # that will be used to draw a depiction of the color list. We're - # using 'Wy' as the model becuase 'W' is a wide character and 'y' - # has a descender. This constitutes a 'worst case' scenario, which means - # that no matter what we draw later, text-wise, we'll have room for it - w,h,d,e = dc.GetFullTextExtent("Wy") - - # Height plus descender - self.textHeight = h + d - - # Pad a little bit - self.lineHeight = self.textHeight + 5 - - # ... and this is the basic width. - self.cellWidth = w - - # jmg 11/8/03: why 24? - numCells = 24 - - # 'prep' our scroll bars. - self.SetScrollbars( - self.cellWidth, self.lineHeight, numCells, len(self.clrList) + 2 - ) - - # Event handlers - moved here so events won't fire before init is - # finished. - self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) - self.Bind(wx.EVT_PAINT, self.OnPaint) - self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) - - - # tile the background bitmap loaded in __init__() - def TileBackground(self, dc): - sz = self.GetClientSize() - w = self.bg_bmp.GetWidth() - h = self.bg_bmp.GetHeight() - - # adjust for scrolled position - spx, spy = self.GetScrollPixelsPerUnit() - vsx, vsy = self.GetViewStart() - dx, dy = (spx * vsx) % w, (spy * vsy) % h - - x = -dx - - while x < sz.width: - y = -dy - while y < sz.height: - dc.DrawBitmap(self.bg_bmp, x, y) - y = y + h - - x = x + w - - # Redraw the background over a 'damaged' area. - def OnEraseBackground(self, evt): - dc = evt.GetDC() - - if not dc: - dc = wx.ClientDC(self) - rect = self.GetUpdateRegion().GetBox() - dc.SetClippingRect(rect) - - self.TileBackground(dc) - - - def OnPaint(self, evt): - dc = wx.PaintDC(self) - self.PrepareDC(dc) - self.Draw(dc, self.GetUpdateRegion(), self.GetViewStart()) - - - def Draw(self, dc, rgn=None, vs=None): - dc.SetTextForeground("BLACK") - dc.SetPen(wx.Pen("BLACK", 1, wx.SOLID)) - dc.SetFont(self.font) - colours = self.clrList - numColours = len(colours) - - if rgn: - # determine the subset of the color list that has been exposed - # and needs drawn. This is based on all the precalculation we - # did in __init__() - rect = rgn.GetBox() - pixStart = vs[1]*self.lineHeight + rect.y - pixStop = pixStart + rect.height - start = pixStart / self.lineHeight - 1 - stop = pixStop / self.lineHeight - else: - start = 0 - stop = numColours - - for line in range(max(0,start), min(stop,numColours)): - clr = colours[line][0] - y = (line+1) * self.lineHeight + 2 - - dc.DrawText(clr, self.cellWidth, y) - - brush = wx.Brush(clr, wx.SOLID) - dc.SetBrush(brush) - dc.DrawRectangle(10 * self.cellWidth, y, - 6 * self.cellWidth, self.textHeight) - - dc.DrawText(str(tuple(colours[line][1:])), - 18 * self.cellWidth, y) - - -# On wxGTK there needs to be a panel under wx.ScrolledWindows if they are -# going to be in a wxNotebook. And, in this demo, we are. -class TestPanel(wx.Panel): - def __init__(self, parent): - wx.Panel.__init__(self, parent, -1) - self.win = TestWindow(self) - self.Bind(wx.EVT_SIZE, self.OnSize) - - - def OnSize(self, evt): - self.win.SetSize(evt.GetSize()) - - - -#---------------------------------------------------------------------- - - -def runTest(frame, nb, log): - # This loads a whole bunch of new color names and values - # into TheColourDatabase - # - # Note 11/24/03 - jg - I moved this into runTest() because - # there must be a wx.App existing before this function - # can be called - this is a change from 2.4 -> 2.5. - wx.lib.colourdb.updateColourDB() - - win = TestPanel(nb) - - return win - -#---------------------------------------------------------------------- - -overview = """ - -
-ColourDB - -wxWindows maintains a database of standard RGB colours for a predefined -set of named colours (such as "BLACK'', "LIGHT GREY''). The application -may add to this set if desired by using Append. There is only one instance -of this class: TheColourDatabase. - -
The colourdb
library is a lightweight API that pre-defines
-a multitude of colors for you to use 'out of the box', and this demo serves
-to show you these colors (it also serves as a handy reference).
-
-
A secondary benefit of this demo is the use of the ScrolledWindow class -and the use of various *DC() classes, including background tiling and the use of -font data to generate a "building block" type of construct for repetitive use. - -
-Important note - -
-With implementation of V2.5 and later, it is required to have a wx.App already
-initialized before wx.updateColourDB()
can be called.
-Trying to do otherwise will cause an exception to be raised.
-
-
-"""
-
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
-