Added a demo to show off all the colours that can be added to
wxTheColourDatabase by the wxPython.lib.colourdb module. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9801 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
114
wxPython/demo/ColourDB.py
Normal file
114
wxPython/demo/ColourDB.py
Normal file
@@ -0,0 +1,114 @@
|
||||
|
||||
from wxPython.wx import *
|
||||
from wxPython.lib import colourdb
|
||||
|
||||
import images
|
||||
|
||||
|
||||
# This loads a whole bunch of new color names and values
|
||||
# into wxTheColourDatabase
|
||||
|
||||
colourdb.updateColourDB()
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
class TestWindow(wxScrolledWindow):
|
||||
def __init__(self, parent):
|
||||
wxScrolledWindow.__init__(self, parent, -1)
|
||||
|
||||
self.clrList = colourdb.getColourList()
|
||||
self.bg_bmp = images.getGridBGBitmap()
|
||||
|
||||
EVT_PAINT(self, self.OnPaint)
|
||||
EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)
|
||||
#self.SetBackgroundColour("WHITE")
|
||||
|
||||
self.font = wxFont(10, wxSWISS, wxNORMAL, wxNORMAL)
|
||||
dc = wxClientDC(self)
|
||||
dc.SetFont(self.font)
|
||||
|
||||
w,h,d,e = dc.GetFullTextExtent("Wy") # a wide character and one that decends
|
||||
self.textHeight = h + d
|
||||
self.lineHeight = self.textHeight + 5
|
||||
self.cellWidth = w
|
||||
|
||||
numCells = 24
|
||||
self.SetScrollbars(self.cellWidth, self.lineHeight, numCells, len(self.clrList) + 2)
|
||||
|
||||
|
||||
def TileBackground(self, dc):
|
||||
# tile the background bitmap
|
||||
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
|
||||
|
||||
|
||||
def OnEraseBackground(self, evt):
|
||||
dc = evt.GetDC()
|
||||
if not dc:
|
||||
dc = wxClientDC(self)
|
||||
self.TileBackground(dc)
|
||||
|
||||
|
||||
def OnPaint(self, evt):
|
||||
dc = wxPaintDC(self)
|
||||
self.PrepareDC(dc)
|
||||
self.Draw(dc, self.GetUpdateRegion(), self.GetViewStart())
|
||||
|
||||
|
||||
def Draw(self, dc, rgn=None, vs=None):
|
||||
dc.BeginDrawing()
|
||||
dc.SetTextForeground("BLACK")
|
||||
dc.SetPen(wxPen("BLACK", 1, wxSOLID))
|
||||
dc.SetFont(self.font)
|
||||
colours = self.clrList
|
||||
numColours = len(colours)
|
||||
|
||||
if rgn:
|
||||
# determine the subset that have been exposed and needs drawn
|
||||
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 = len(numColours)
|
||||
|
||||
for line in range(max(0,start), min(stop,numColours)):
|
||||
clr = colours[line]
|
||||
y = (line+1) * self.lineHeight + 2
|
||||
dc.DrawText(clr, self.cellWidth, y)
|
||||
|
||||
brush = wxBrush(clr, wxSOLID)
|
||||
dc.SetBrush(brush)
|
||||
dc.DrawRectangle(12 * self.cellWidth, y, 6 * self.cellWidth, self.textHeight)
|
||||
|
||||
dc.EndDrawing()
|
||||
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
def runTest(frame, nb, log):
|
||||
win = TestWindow(nb)
|
||||
return win
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
overview = """
|
||||
"""
|
Reference in New Issue
Block a user