This commit was manufactured by cvs2svn to create tag 'WX_2_8_3'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/WX_2_8_3@44921 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
363
wxPython/tests/TreeMixinTest.py
Normal file
363
wxPython/tests/TreeMixinTest.py
Normal file
@@ -0,0 +1,363 @@
|
||||
import wx, wx.gizmos, wx.lib.customtreectrl, unittest
|
||||
from wx.lib.mixins import treemixin
|
||||
|
||||
|
||||
# VirtualTree tests
|
||||
|
||||
class VirtualTreeCtrl(treemixin.VirtualTree, wx.TreeCtrl):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.children = {}
|
||||
super(VirtualTreeCtrl, self).__init__(*args, **kwargs)
|
||||
|
||||
def OnGetItemText(self, indices):
|
||||
return 'item %s'%'.'.join([str(index) for index in indices])
|
||||
|
||||
def OnGetChildrenCount(self, indices=None):
|
||||
indices = indices or ()
|
||||
return self.children.get(indices, 0)
|
||||
|
||||
def SetChildrenCount(self, indices, childrenCount):
|
||||
self.children[tuple(indices)] = childrenCount
|
||||
|
||||
|
||||
class VirtualTreeCtrlTest_NoRootItems(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.frame = wx.Frame(None)
|
||||
self.tree = VirtualTreeCtrl(self.frame)
|
||||
self.tree.RefreshItems()
|
||||
|
||||
def testNoRootItems(self):
|
||||
self.assertEqual(0, self.tree.GetCount())
|
||||
|
||||
def testAddTwoRootItems(self):
|
||||
self.tree.SetChildrenCount((), 2)
|
||||
self.tree.RefreshItems()
|
||||
self.assertEqual(2, self.tree.GetCount())
|
||||
|
||||
def testAddOneRootItemAndOneChild(self):
|
||||
self.tree.SetChildrenCount((), 1)
|
||||
self.tree.SetChildrenCount((0,), 1)
|
||||
self.tree.RefreshItems()
|
||||
self.tree.ExpandAll()
|
||||
self.assertEqual(2, self.tree.GetCount())
|
||||
|
||||
def testAddOneRootItemAndTwoChildren(self):
|
||||
self.tree.SetChildrenCount((), 1)
|
||||
self.tree.SetChildrenCount((0,), 2)
|
||||
self.tree.RefreshItems()
|
||||
self.tree.ExpandAll()
|
||||
self.assertEqual(3, self.tree.GetCount())
|
||||
|
||||
|
||||
class VirtualTreeCtrlTest_OneRoot(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.frame = wx.Frame(None)
|
||||
self.tree = VirtualTreeCtrl(self.frame)
|
||||
self.tree.SetChildrenCount((), 1)
|
||||
self.tree.RefreshItems()
|
||||
|
||||
def testOneRoot(self):
|
||||
self.assertEqual(1, self.tree.GetCount())
|
||||
|
||||
def testDeleteRootItem(self):
|
||||
self.tree.SetChildrenCount((), 0)
|
||||
self.tree.RefreshItems()
|
||||
self.assertEqual(0, self.tree.GetCount())
|
||||
|
||||
def testAddOneChild(self):
|
||||
self.tree.SetChildrenCount((0,), 1)
|
||||
self.tree.RefreshItems()
|
||||
self.tree.ExpandAll()
|
||||
self.assertEqual(2, self.tree.GetCount())
|
||||
|
||||
def testAddTwoChildren(self):
|
||||
self.tree.SetChildrenCount((0,), 2)
|
||||
self.tree.RefreshItems()
|
||||
self.tree.ExpandAll()
|
||||
self.assertEqual(3, self.tree.GetCount())
|
||||
|
||||
|
||||
# TreeAPIHarmonizer tests
|
||||
|
||||
class TreeAPIHarmonizerTestCase(unittest.TestCase):
|
||||
style = wx.TR_DEFAULT_STYLE
|
||||
|
||||
def setUp(self):
|
||||
self.frame = wx.Frame(None)
|
||||
class HarmonizedTreeCtrl(treemixin.TreeAPIHarmonizer, self.TreeClass):
|
||||
pass
|
||||
self.tree = HarmonizedTreeCtrl(self.frame, style=self.style)
|
||||
self.populateTree()
|
||||
|
||||
def populateTree(self):
|
||||
self.root = self.tree.AddRoot('Root')
|
||||
self.item = self.tree.AppendItem(self.root, 'item')
|
||||
|
||||
|
||||
class TreeAPIHarmonizerCommonTests(object):
|
||||
def testSetItemImage(self):
|
||||
self.tree.SetItemImage(self.item, -1, wx.TreeItemIcon_Normal)
|
||||
self.assertEqual(-1,
|
||||
self.tree.GetItemImage(self.item, wx.TreeItemIcon_Normal))
|
||||
|
||||
def testGetColumnCount(self):
|
||||
self.assertEqual(0, self.tree.GetColumnCount())
|
||||
|
||||
def testGetItemType(self):
|
||||
self.assertEqual(0, self.tree.GetItemType(self.item))
|
||||
|
||||
def testGetMainWindow(self):
|
||||
self.assertEqual(self.tree, self.tree.GetMainWindow())
|
||||
|
||||
|
||||
class TreeAPIHarmonizerSingleSelectionTests(object):
|
||||
def testUnselectAll(self):
|
||||
self.tree.SelectItem(self.item)
|
||||
self.tree.UnselectAll()
|
||||
self.assertEqual([], self.tree.GetSelections())
|
||||
|
||||
def testGetSelections_NoSelection(self):
|
||||
self.tree.UnselectAll()
|
||||
self.assertEqual([], self.tree.GetSelections())
|
||||
|
||||
def testGetSelections_OneSelectedItem(self):
|
||||
self.tree.UnselectAll()
|
||||
self.tree.SelectItem(self.item)
|
||||
self.assertEqual([self.item], self.tree.GetSelections())
|
||||
|
||||
|
||||
class TreeAPIHarmonizerMultipleSelectionTests(object):
|
||||
style = wx.TR_DEFAULT_STYLE | wx.TR_MULTIPLE
|
||||
|
||||
def testUnselectAll(self):
|
||||
self.tree.SelectItem(self.item)
|
||||
self.tree.UnselectAll()
|
||||
self.assertEqual([], self.tree.GetSelections())
|
||||
|
||||
def testGetSelections_NoSelection(self):
|
||||
self.tree.UnselectAll()
|
||||
self.assertEqual([], self.tree.GetSelections())
|
||||
|
||||
def testGetSelections_OneSelectedItem(self):
|
||||
self.tree.UnselectAll()
|
||||
self.tree.SelectItem(self.item)
|
||||
self.assertEqual([self.item], self.tree.GetSelections())
|
||||
|
||||
def testGetSelections_TwoSelectedItems(self):
|
||||
item2 = self.tree.AppendItem(self.root, 'item 2')
|
||||
self.tree.ExpandAll()
|
||||
self.tree.UnselectAll()
|
||||
self.tree.SelectItem(item2)
|
||||
self.tree.SelectItem(self.item)
|
||||
self.assertEqual([self.item, item2], self.tree.GetSelections())
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithTreeCtrlTestCase(TreeAPIHarmonizerTestCase):
|
||||
TreeClass = wx.TreeCtrl
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithTreeCtrl_SingleSelection( \
|
||||
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerSingleSelectionTests,
|
||||
TreeAPIHarmonizerWithTreeCtrlTestCase):
|
||||
pass
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithTreeCtrl_MultipleSelection( \
|
||||
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerMultipleSelectionTests,
|
||||
TreeAPIHarmonizerWithTreeCtrlTestCase):
|
||||
pass
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithTreeListCtrlTestCase(TreeAPIHarmonizerTestCase):
|
||||
TreeClass = wx.gizmos.TreeListCtrl
|
||||
|
||||
def populateTree(self):
|
||||
self.tree.AddColumn('Column')
|
||||
super(TreeAPIHarmonizerWithTreeListCtrlTestCase, self).populateTree()
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithTreeListCtrl_SingleSelection( \
|
||||
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerSingleSelectionTests,
|
||||
TreeAPIHarmonizerWithTreeListCtrlTestCase):
|
||||
|
||||
def testGetColumnCount(self):
|
||||
self.assertEqual(1, self.tree.GetColumnCount())
|
||||
|
||||
def testGetMainWindow(self):
|
||||
self.assertNotEqual(self.tree, self.tree.GetMainWindow())
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithTreeListCtrl_MultipleSelection( \
|
||||
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerMultipleSelectionTests,
|
||||
TreeAPIHarmonizerWithTreeListCtrlTestCase):
|
||||
|
||||
def testGetColumnCount(self):
|
||||
self.assertEqual(1, self.tree.GetColumnCount())
|
||||
|
||||
def testGetMainWindow(self):
|
||||
self.assertNotEqual(self.tree, self.tree.GetMainWindow())
|
||||
|
||||
def testGetSelections_TwoSelectedItems(self):
|
||||
''' Override TreeAPIHarmonizerMultipleSelectionTests.-
|
||||
testGetSelections_TwoSelectedItems, because
|
||||
TreeListCtrl.SelectItem needs an extra parameter. '''
|
||||
self.tree.UnselectAll()
|
||||
item2 = self.tree.AppendItem(self.root, 'item 2')
|
||||
self.tree.SelectItem(self.item)
|
||||
self.tree.SelectItem(item2, unselect_others=False)
|
||||
self.assertEqual([self.item, item2], self.tree.GetSelections())
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithCustomTreeCtrlTestCase(TreeAPIHarmonizerTestCase):
|
||||
TreeClass = wx.lib.customtreectrl.CustomTreeCtrl
|
||||
|
||||
|
||||
class TreeAPIHarmonizerCustomTreeCtrlTests(object):
|
||||
def testGetCheckItemType(self):
|
||||
item = self.tree.AppendItem(self.root, 'item', ct_type=1)
|
||||
self.assertEqual(1, self.tree.GetItemType(item))
|
||||
|
||||
def testGetRadioItemType(self):
|
||||
item = self.tree.AppendItem(self.root, 'item', ct_type=2)
|
||||
self.assertEqual(2, self.tree.GetItemType(item))
|
||||
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithCustomTreeCtrl_SingleSelection( \
|
||||
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerSingleSelectionTests,
|
||||
TreeAPIHarmonizerCustomTreeCtrlTests,
|
||||
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
|
||||
pass
|
||||
|
||||
|
||||
class TreeAPIHarmonizerWithCustomTreeCtrl_MultipleSelection( \
|
||||
TreeAPIHarmonizerCommonTests, TreeAPIHarmonizerMultipleSelectionTests,
|
||||
TreeAPIHarmonizerCustomTreeCtrlTests,
|
||||
TreeAPIHarmonizerWithCustomTreeCtrlTestCase):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
# ExpansionState tests
|
||||
|
||||
class ExpansionStateTreeCtrl(treemixin.ExpansionState, wx.TreeCtrl):
|
||||
pass
|
||||
|
||||
|
||||
class GetExpansionStateTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.frame = wx.Frame(None)
|
||||
self.tree = ExpansionStateTreeCtrl(self.frame)
|
||||
|
||||
def testEmptyTree(self):
|
||||
self.assertEqual([], self.tree.GetExpansionState())
|
||||
|
||||
def testRoot(self):
|
||||
self.tree.AddRoot('Root item')
|
||||
self.assertEqual([], self.tree.GetExpansionState())
|
||||
|
||||
def testRoot_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
self.assertEqual([], self.tree.GetExpansionState())
|
||||
|
||||
def testExpandedRoot_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
self.tree.Expand(root)
|
||||
self.assertEqual([()], self.tree.GetExpansionState())
|
||||
|
||||
def testExpandedRoot_Child_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
self.tree.Expand(root)
|
||||
# Property should work too:
|
||||
self.assertEqual([()], self.tree.ExpansionState)
|
||||
|
||||
def testRoot_ExpandedChild_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
self.tree.Expand(child)
|
||||
self.assertEqual([], self.tree.GetExpansionState())
|
||||
|
||||
def testExpandedRoot_ExpandedChild_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
self.tree.Expand(child)
|
||||
self.tree.Expand(root)
|
||||
self.assertEqual([(), (0,)], self.tree.GetExpansionState())
|
||||
|
||||
def testExpandedRoot_ExpandedChild_ExpandedChild(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
grandGrandChild = self.tree.AppendItem(grandChild, 'Grandgrandchild')
|
||||
self.tree.Expand(root)
|
||||
self.tree.Expand(child)
|
||||
self.tree.Expand(grandChild)
|
||||
self.assertEqual([(), (0,), (0,0)], self.tree.GetExpansionState())
|
||||
|
||||
|
||||
class SetExpansionStateTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.frame = wx.Frame(None)
|
||||
self.tree = ExpansionStateTreeCtrl(self.frame)
|
||||
|
||||
def testEmptyTree(self):
|
||||
self.tree.SetExpansionState([])
|
||||
|
||||
def testRoot(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
self.tree.SetExpansionState([])
|
||||
self.failIf(self.tree.IsExpanded(root))
|
||||
|
||||
def testRoot_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
self.tree.SetExpansionState([])
|
||||
self.failIf(self.tree.IsExpanded(root))
|
||||
|
||||
def testExpandedRoot_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
self.tree.ExpansionState = [()] # Property should work too
|
||||
self.failUnless(self.tree.IsExpanded(root))
|
||||
|
||||
def testExpandedRoot_Child_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
self.tree.SetExpansionState([()])
|
||||
self.failIf(self.tree.IsExpanded(child))
|
||||
|
||||
def testExpandedRoot_ExpandedChild_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
self.tree.SetExpansionState([(), (0,)])
|
||||
self.failUnless(self.tree.IsExpanded(child))
|
||||
|
||||
def testRoot_ExpandedChild_Child(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
self.tree.SetExpansionState([(0,)])
|
||||
self.failIf(self.tree.IsExpanded(child))
|
||||
|
||||
def testExpandedRoot_ExpandedChild_ExpandedChild(self):
|
||||
root = self.tree.AddRoot('Root item')
|
||||
child = self.tree.AppendItem(root, 'Child')
|
||||
grandChild = self.tree.AppendItem(child, 'Grandchild')
|
||||
grandGrandChild = self.tree.AppendItem(grandChild, 'Grandgrandchild')
|
||||
self.tree.SetExpansionState([(), (0,), (0,0)])
|
||||
self.failUnless(self.tree.IsExpanded(grandChild))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.App(False)
|
||||
unittest.main()
|
||||
|
||||
|
||||
49
wxPython/tests/test_borders.py
Normal file
49
wxPython/tests/test_borders.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import wx
|
||||
|
||||
styles = [
|
||||
('wx.BORDER_DEFAULT', wx.BORDER_DEFAULT),
|
||||
('wx.BORDER_THEME', wx.BORDER_THEME),
|
||||
('wx.BORDER_NONE', wx.BORDER_NONE),
|
||||
('wx.BORDER_STATIC', wx.BORDER_STATIC),
|
||||
('wx.BORDER_SIMPLE', wx.BORDER_SIMPLE),
|
||||
('wx.BORDER_RAISED', wx.BORDER_RAISED),
|
||||
('wx.BORDER_SUNKEN', wx.BORDER_SUNKEN),
|
||||
('wx.BORDER_DOUBLE', wx.BORDER_DOUBLE),
|
||||
]
|
||||
|
||||
class TestPanel(wx.Panel):
|
||||
def __init__(self, *args, **kw):
|
||||
wx.Panel.__init__(self, *args, **kw)
|
||||
fgs = wx.FlexGridSizer(cols=3, hgap=10, vgap=10)
|
||||
|
||||
for name, bdr in styles:
|
||||
txt = wx.TextCtrl(self, size=(100,-1), style=bdr )#| wx.TE_RICH | wx.TE_MULTILINE)
|
||||
label = wx.StaticText(self, -1, name)
|
||||
ctrl = wx.Control(self, -1, style=bdr)
|
||||
ctrl.SetMinSize(txt.GetSize())
|
||||
ctrl.SetBackgroundColour("white")
|
||||
#txt.SetBackgroundColour("pink")
|
||||
fgs.Add(label)
|
||||
fgs.Add(ctrl)
|
||||
fgs.Add(txt)
|
||||
|
||||
|
||||
box = wx.BoxSizer()
|
||||
box.Add(fgs, 0, wx.ALL, 10)
|
||||
self.SetSizer(box)
|
||||
self.Fit()
|
||||
|
||||
|
||||
import wx.lib.mixins.inspection
|
||||
class TestApp(wx.App, wx.lib.mixins.inspection.InspectionMixin):
|
||||
pass
|
||||
|
||||
app = TestApp(False)
|
||||
app.Init()
|
||||
frm = wx.Frame(None, title="border styles")
|
||||
pnl = TestPanel(frm)
|
||||
frm.Fit()
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
|
||||
|
||||
27
wxPython/tests/test_floatOnParent.py
Normal file
27
wxPython/tests/test_floatOnParent.py
Normal file
@@ -0,0 +1,27 @@
|
||||
import wx
|
||||
|
||||
app = wx.App(False)
|
||||
|
||||
mf = wx.Frame(None, title="MainFrame")
|
||||
p = wx.Panel(mf)
|
||||
txt = wx.TextCtrl(p, value="Hello", pos=(10,10))
|
||||
mf.Show()
|
||||
|
||||
pf = wx.Frame(parent=mf, size=(150,150), #title="popup frame",
|
||||
style=0
|
||||
#| wx.DEFAULT_FRAME_STYLE
|
||||
| wx.FRAME_NO_TASKBAR
|
||||
#| wx.FRAME_TOOL_WINDOW | wx.CAPTION | wx.TINY_CAPTION_VERT
|
||||
| wx.FRAME_FLOAT_ON_PARENT
|
||||
#| wx.STAY_ON_TOP
|
||||
| wx.POPUP_WINDOW
|
||||
| wx.NO_BORDER
|
||||
)
|
||||
#pf.MacSetMetalAppearance(True)
|
||||
p = wx.Panel(pf)
|
||||
p.SetBackgroundColour("pink")
|
||||
pf.Show()
|
||||
pf.Move(mf.GetPosition() + (50,50))
|
||||
mf.Raise()
|
||||
|
||||
app.MainLoop()
|
||||
200
wxPython/tests/test_gcDrawBitmap.py
Normal file
200
wxPython/tests/test_gcDrawBitmap.py
Normal file
@@ -0,0 +1,200 @@
|
||||
import wx
|
||||
import math
|
||||
|
||||
##import os; print "PID:", os.getpid(); raw_input("Press Enter...")
|
||||
|
||||
class TestPanel(wx.Panel):
|
||||
def __init__(self, *args, **kw):
|
||||
wx.Panel.__init__(self, *args, **kw)
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
|
||||
self.SetBackgroundColour("white")
|
||||
|
||||
# maskless image
|
||||
self.bmp1 = getTest2Bitmap()
|
||||
|
||||
# give this one a mask
|
||||
self.bmp2 = getTest2Bitmap()
|
||||
self.bmp2.SetMaskColour("blue")
|
||||
|
||||
# now make one in which the opaque pixels from #2 are made
|
||||
# partially transparent
|
||||
bmp = getTest2Bitmap()
|
||||
bmp.SetMaskColour("blue")
|
||||
img = bmp.ConvertToImage()
|
||||
img.InitAlpha()
|
||||
self.bmp3 = img.ConvertToBitmap()
|
||||
pixelData = wx.AlphaPixelData(self.bmp3)
|
||||
if not pixelData:
|
||||
raise RuntimeError("Failed to gain raw access to bitmap data.")
|
||||
for pixel in pixelData:
|
||||
red, green, blue, alpha = pixel.Get()
|
||||
if alpha == 255:
|
||||
pixel.Set(red, green, blue, 128)
|
||||
|
||||
##self.bmp3 = wx.Bitmap("bitmaps/toucan.png")
|
||||
|
||||
|
||||
def OnPaint(self, evt):
|
||||
gc = wx.GraphicsContext.Create(wx.PaintDC(self))
|
||||
|
||||
# draw some lines to use as a background
|
||||
gc.SetPen(wx.Pen("navy", 1))
|
||||
x = y = 0
|
||||
sz = self.GetSize()
|
||||
while x < sz.width*2 or y < sz.height*2:
|
||||
gc.StrokeLine(x,0, 0,y)
|
||||
x += 20
|
||||
y += 20
|
||||
|
||||
|
||||
for bmp in [self.bmp1, self.bmp2, self.bmp3]:
|
||||
# draw the plain bitmap
|
||||
gc.DrawBitmap(bmp, 20,20,
|
||||
bmp.GetWidth(), bmp.GetHeight())
|
||||
|
||||
# translate and scale by using the w, and h parameters
|
||||
gc.Translate(100, 0)
|
||||
gc.DrawBitmap(bmp, 20,20,
|
||||
bmp.GetWidth()*1.5, bmp.GetHeight()*1.5)
|
||||
|
||||
# translate and scale using Scale()
|
||||
gc.Translate(125, 0)
|
||||
gc.PushState()
|
||||
gc.Scale(0.75, 0.75)
|
||||
gc.DrawBitmap(bmp, 20,20,
|
||||
bmp.GetWidth(), bmp.GetHeight())
|
||||
gc.PopState()
|
||||
|
||||
# translate and rotate
|
||||
gc.Translate(125, 0)
|
||||
gc.PushState()
|
||||
gc.Rotate(math.radians(45))
|
||||
gc.DrawBitmap(bmp, 20,20,
|
||||
bmp.GetWidth(), bmp.GetHeight())
|
||||
gc.PopState()
|
||||
|
||||
# move back to the left side, and down a row
|
||||
gc.Translate(-350, 150)
|
||||
|
||||
|
||||
def main():
|
||||
app = wx.App(False)
|
||||
frm = wx.Frame(None, size=(500,500))
|
||||
pnl = TestPanel(frm)
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
from wx import ImageFromStream, BitmapFromImage
|
||||
from wx import EmptyIcon
|
||||
import cStringIO
|
||||
|
||||
|
||||
def getTest2Data():
|
||||
return \
|
||||
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00@\x00\x00\x00@\x08\x02\x00\
|
||||
\x00\x00%\x0b\xe6\x89\x00\x00\x00\x03sBIT\x08\x08\x08\xdb\xe1O\xe0\x00\x00\
|
||||
\x08\xeeIDATh\x81\xd5\x9aKl\x1b\xd7\x15\x86\xbf\xcb\xe1\xf0\xa1\xa1(\x91\x92\
|
||||
(\xc9\x96T\xd9q,Ar\xdc\xbarb\xa0F\xd1\xb8\x81\xd3\xa0\xb0\x03gS\x04\xf0>\xd3\
|
||||
\x14\x857Aw\x0e\x8a\x00\xc9*\xe821h\x04\xe8&\x01\xb2k\x10\x07E\xd0\x00u\xb2p\
|
||||
\x16\x85\x1f\x01\x92\xc8\xae\xe3\x1a\xb2\xe5\xca\xa2%\xd3\xa6D\x89\xb4\x863\
|
||||
\xb7\x8b\xa1\xa8!9\x1c\x0ei\xcaA\xff\x15E\xce=\xf7\xff\xcf9\xf71\xe7H\x80\
|
||||
\xe4\xff\x19\xc1N\x19\x923\xa2\xa5\xe7\xc5\xa5\xce8NT"\xe0\xcd\xa0~\xbeV\x19\
|
||||
\xfb\xb7\xdc\xdap\x9f\x02\xca\xb8\xe8\xf8|\xf0q\xe6\xad\xe3\xd1\xae\x8c\xb2\
|
||||
\x00\xbf\xec\xc5k[\x7f\xca\xb3\xe5\x0f\x9dS\xd2\x86\x0c\x7f\x02l\xc7;\xd9;a+\
|
||||
\xa9\x96aJ\x0c\x89\xe9\xe0\xa3]\xf1\xcdI\xb4 \xa3\x99\x00o\xeaNl\x06d\xed\
|
||||
\x00&\xe4M\xb2&k\x16\xa6\xe4\x17\xd7\x00\xbe\x16/\xdb\x0f(\x044\x82I\xc21T\
|
||||
\x05\xa1 T\x02\n\x81-;\x07\xc1w4<\x05\\l\xe6\xf5\xcd_M\xac"\xe6\n\xc6\xb0\
|
||||
\xfc\xd0c\xb27\xc5\x01@%\x90 <J,I8\x8c\xa2\x11\xec#\x12G\x8d\xa0\x94eljp\xa1\
|
||||
[\xa7\xaa\xb1\x80F\xec\xeb\xa8+\xf2\x03\x0f\xd2\x8dpJL\xc7P#(\t\xc2\xe3t\x8f\
|
||||
\xa2\r\xd2U\x96!?\xf0^WN\x19\r\x04x\xfb^\xbc\xf68\xd4\x9dxE\x8ck\x04\x87\xe8\
|
||||
\x1aE\xdbM\xbc"C\x93\x7f\xf5\xa9\xa1\xdd\x83L\x9eU\xda\x1cY\x85\xbf\xc99\xe0\
|
||||
\xb8\x18[d}\x9e5[\xc6\x18\xb1\x9f\x82!Q}l\x8d\x02dk\xee\xdf6\x1c\x17c=\x84\
|
||||
\x86\xe8\x1a\'\xf6G\xf9\xf5\xc2~\x06T/\rv\x10\x02\r\x7f\x7f\xe28\'o\xdf\xa3\
|
||||
\xf0o\x1e^b\x19\x98-\xb2d`4\xdb\x8a\xea\x04\xfcH\xee\xb7\xf1\x0f\xf9\xdfuJ\
|
||||
\x8b\xac\x03\x17\xd7\x9bh\xb0\x13\xc7\xf7\x1a\xa8fo\x9a\x18\x06\x96E \x80\
|
||||
\xaa\xa2tbA\xd86\xcf\xad-\xfcV\x1b\x06f\x0b\xe5\xef\xa7\xf0\xca%\x7f\x02\xaa\
|
||||
\xd9\x1b\x06\x0f\x1e\xb0\xb4D\xb1\x88\xa618HO\x0f\x81\xc7KF\xcbbe\x85L\x86\
|
||||
\xb55\xde\xfb\xee.\x90)\x81\x0f\r>\x048\xd8\x0b\x91\xb6?|\xf5\x95>;\xcb\xca\
|
||||
\n##\xcc\xcc\x10\x8d\x12\x89\xb4I\xbdb\xf3\xda5\xfd\xf2e\xee\xdc!\x1e\xe7\
|
||||
\xfe}\xd6M\xee\xd1\\C3\x01n\xec\x81\xd9Y.]\xa2X\xa4T\xe2\xe9\xa7\xb1\xac\xaa\
|
||||
Av2\x98f\xad1E\xf1\xca\xb7\xc9\xc9\xf4;\xef\xe8W\xaf\x96}\x91\xfe\x17\x7f8\
|
||||
\xc4R\x89\xd9\x02\x02\x14AP\xd0\x1f$P\xad\xc1S@\xe3U{\xef\x1e\xcb\xcbHI\xa1\
|
||||
\x80a 7\xd7\x99iR,\xb2\xb2\xc2\xfd\xfb\xac\xadUiP\x144\x8d\xbe>\xe2q"\x11w\
|
||||
\x19\x85\x02\xab\xab\xe4\xf3\xdc\xbb\xc7\xea*\x7f\xcfp|\x88\xa5\x12\xd7\x8ah\
|
||||
\x01\x92\nZ\x00\xadz`\x9b\x07\x99\xab\x83\x9d!r\xe2\xf4i\x1dPU\x12\t\xc6\xc7\
|
||||
\x19\x1bcx\x98D\x02Uuy\xd8\x0e\xa6m_J,\xc9\x06,\x97\x98\xdb\xe0\'\x1b\xa4T\
|
||||
\xa2\x81\xaa 4\x16\xd0\xca\xa6\x19\x8b\xb9S\xb7\xf1\xf6\xdbi\xe0\xc4\t]\xd3\
|
||||
\xb8u\x8b\xf1q\xa6\xa7\x99\x98``\xc0]\x83\x13\xe7W9\xd2\xcd#\x8bE\x83\x9b\
|
||||
\x8f\x18\r\x11\xaf\x0eB\x07\xde\x89\x0f\x1f\xf6b_\xc1\'\x9f\xa4\x8f\x1e\xd5s\
|
||||
\xb9rv\x01\xc1 \xfd\xfd\xbe\xa60!g2o0\xbf\xc1`u\x10\x1al~\xbe\xddo{\xd7\'\
|
||||
\xbe\xf8"](\xb0\xb8\xc8\xb5k|\xff=w\xefR(4\x1fu~\x15Kn\x05!cP\xb0\xc0y\x95\
|
||||
\xe8T\x81\xa0\x82\x13\'\xf4\x93\'u\xd7\x9fT\x15\xc3`y\x99\xb99n\xdffe\xc5\
|
||||
\xafMg\x10V,\xacM\xcan\x11h%\xfb\xed\x05Z\xc1\x993\xfa[o\xe9\x07\x0ep\xe8\
|
||||
\x10\x9f~\xaa_\xb9R+\xe3\xf3\xcf\xd3\xaa\xca\xc6\x06\x8b\x8b\xdc\xbcI&\xe3k\
|
||||
\x96J\x102\x06\xb76\xc8\x96\xd8\xd8\x14\xd0\x815p\xe1\x82\xbe\x7f?\xe1p\xf9x\
|
||||
\xce\xe7\x81\xad\x1d\xd30tU\xadJ\xb3\xde^\xb2Yr9\xe6\xe7\x99\x9foa"\x13\xf2\
|
||||
\x16\xd9\x12y\x8b\xca\xc1S\x8e\xc0\xe3\x16g\x04\xaaJ_\x1fO=\xc5\xbe}\xec\xdb\
|
||||
\xc7\x9e=\xa4Rh\x1a\xc1 RV\xc5\xe1\xe3\x8f\xd3\x8a\xc2\xa3Gd2\xdc\xba\xd5\
|
||||
\xc2,\x96\xa4$)J\x1eY\x94\\# .\xd9\'R\x9b\x15+E\xf1{\xab\xb3\x05\xe4\xf3d\
|
||||
\xb3\xadMa\xcar\xb9 o\x02\x16\xce+\xd8f\x10:So\xeb8\xce\xaf\x02\x94$\x0fL\
|
||||
\xeel\xb0\xf3\xdb\xef`\x83\x1f\xeb\x85\xc64Q\x14b1\x92\xc9\x16\x07n.\x03\xc8\
|
||||
\x83\xc5\x93\x11Ps\xc5x\xf5U\xbdT"\x18$\x91`d\xa45S\x96\xc4\x94\xfc\xf9\xeei\
|
||||
0\xedr\xc4\xb6\x0b\xa8\xbf =|\x88e\x11\n\x91H00\xf0\xb8\xf6\xb7W\x80\xeb\xf5\
|
||||
\xce0PU\x92I\x86\x86H$Z\xb6y.w\xdc\xf9g\xc7\xfa\x035ht3}\xe1\x05]U\x19\x18`b\
|
||||
\x82\xc9I\xbfw!\x1b_\xe6\x9f\xaf\xffr[\x044b\xff\xe2\x8bz(D\x7f?\x93\x93\xcc\
|
||||
\xcc01\xd1N\x04j\xd0y\x01\x8d\xd8\xbf\xf4\x92\xde\xdb\xcb\x8e\x1d\xec\xda\
|
||||
\xd5\xc2u\xba):,\xc0\x95}%m\xf6\xeee\xdf>v\xed\xf2z\xa1i\x86\x00(\xa0\x82b\
|
||||
\x1fY\x9d\x14\xe0\xcd~j\x8a\x99\x19&\'I&\x1b\xbeR\xfa\x80\x021HB\xcc\xde\x81\
|
||||
j\x05\x08!\xa5l~\x18G\xa3\xc4b\xe5\x0f\xaa\x8ah0\xe2\xd81]\x08\xfa\xfa\xcaI?\
|
||||
5\xd5$m<\xcc\n\xf1<\xd8\x84\x130\x02\t\x08\xb9\x08\xf0\x89\xf1\xf1\xad\x0f\
|
||||
\xf1x\xf9F"\xa5\xee\x0c\xc2\xbb\xef\xeaw\xee\x10\x0e3:\xea7\xe9]\xcdV\xa36\
|
||||
\x02[M\xbe\n\xbc#`Y<|\xc8\xc2B\xf9\x1e\x96L\xb2c\x07\xbd\xbd[\x93\t\x91^_\
|
||||
\xd7\x17\x16\xf8\xe1\x072\x19\xe2q\xc6\xc6\x18\x19!\x99\xf4bo\x9ad\xb3,,\x90\
|
||||
\xcb\x95\x0f\xe9\xa1\xa1\xaaz\xd9\x91n\xbe\xcc\xff\x1a\xe2p\x00~\x03\xcf@\
|
||||
\x17m\x1cdB\x10\x8d\x12\x8f\xa3ih\x1a\xf18\xd1hU\xac76\xf4\x95\x15r9L\x93X\
|
||||
\x8c\xbe>R\xa9\xe6K\xd6.%I\x89\xa61<\xcc\xce\x9dtw\xd7F\xe0h\xf7?k\xdc\x8fk\
|
||||
\ny,\x03;C2\x19}n\x8e\xeb\xd7\x01\xf6\xee%\x12!\x1cF\x88\xaaE\xfc\xfe\xfb\
|
||||
\xfa\xe2"\x81\x00\xbbw\x93J\xd5V\xbe\\m\xde\xb8\xc1\xf5\xebH\xc9\x9e=\x84\
|
||||
\xc3D\xa3[\xcf\x1c\xe9& \x08\x07xc\xf0\xc3\xbfd~\x07I{\x01\xb8\x0b\xf0\x9e\t\
|
||||
\x18\x1cL\x9f9\xa3\x7f\xf3\r@\xa9D\x7f\xbf\x1d\x87\xaa-\xe8\xf2e\x96\x97\xcb\
|
||||
kqr\xb2\xa1\x80z\x9bv.\xb1Y\xb3\xa8\x04A\x81\x1e\x85Q\x15\x18\x85x%\x02n)\
|
||||
\x94\x16M\x1b\x9d\xd9,\xd9,KK\xe5\x12Z=\xbf\xe5eVW)\x14(\x95\xbc\xdc\xef\xc4\
|
||||
\xeb\xaf\xa7\xedep\xe3\x067n\xf0\xe0\x01\x86\x01\x0e\xf7\x0f\xa9\xec\x0e\xb3\
|
||||
\xb0\xff\x00lE\xa7A\x04\xd2Mv\xd2d\x92\x9e\x1e\x8aE\x82A\xf7\xba\xb4\x9d\x00\
|
||||
\xfd\xfd\xa4R.\xd9\xdc\x08==H\x89\xa2\xd4\xee\xcb\x15\xf7\xdb\x85-\xa7\xdf\
|
||||
\xeb\x04lR\xaf_\t\xce]rj\n(W\xa7\xeb\xf7\xbb\x8f>\xd2\xe7\xe6(\x95H\xa5\x98\
|
||||
\x9a\xa2\xbf\x9fP\xc8\x9d\xb1\xd3\xa6]\xf1\xcefI&\xd9\xbb\xb7\xbc\xeek\xdcoW\
|
||||
\xb5\x9ch\xbc\x06\xdc\x82`\xbf\x9e\xdb\xfd\x81\xbe\xber\x7f \x95"\x14*\xffdY\
|
||||
\xe4rd2\xec\xd9\x83\x94\xc4b\x0c\x0c\x90HxE\xa0\xc6f\xa1@4\xba5* \x08\t\xfa\
|
||||
\x83\x8c\x87\x18\x0b\x11\x0f\xd4V\xa7\xeb\xce\x81j\xde\xb2A\xb7\xc9\xa3C\xe3\
|
||||
\xac\xad{\xd7\xd3\x9b\xda|!NH0\x10d:\xcas\x1a\xd3\x91ry\xddYCi\xb2\x0b\x89\
|
||||
\xb3\xee\x1a<\n\x10\xfek\x13\xde\x03+\xec\xa7\xa2\xcct1\x11&Q\xd7\x1c\xc0\
|
||||
\xcfA&\xb6\xbd\xb5\xe7\x02\'\xfb\x83]LE\x1a\xb6\x98|\xed\x0eOX\x837\xfb\x9a\
|
||||
\x1a\x9c\xdf\xab\xc4\x13\xd3\xe0\xdf\xf76Z\xb8\x0b=\x01\rB\x1c\xed\n0\xa42\
|
||||
\xed\x8f=\xad^\xe6\xb6U\x83\x10\xc7 \xf5Y\xee\x8d\x99.\x9e\xd3\xdc\xd9\xd7\
|
||||
\xd7p[\xbf\x8d\x9e\xed\xbc\x8c\xe3\xbd\x08q\x12&\xe0Y\xf8\xd5/cL\xfb\xf0\xbd\
|
||||
\x8d6_h\xc4Y\xb0\x90\xbfoo\xf4\x16^I\xa0\x05\x98\x88\xf0Y\xeeY\xd8\r\xa30\
|
||||
\xf8\xb3\xab\xf9\xd2\xcfc\x8a\xbf"m\x93\x83\xac9\xda\x95q*EL!"H\x04\x19\x0f\
|
||||
\xf1\xf2\x7f\xae\xc0 \xc4!\x02\x8a\xeb\x7f\x90\xb9\xf6\x00\\\xde\xc8Z\xd6\
|
||||
\x00X`@\x11\xf9\'\xaf\xa7\xde\x1c\x06P\x05\x89 \xa3!\x92\n\xe1\x00Z\x80gf\
|
||||
\x17*\xd4+\x0f\xd7kp\x15\xd0\xa1\xaaD\x00\xc2\xa0"\xde\x03\x0bN\xe5 \x0fYX\
|
||||
\x83\xaa~\xf2\x85\x89\xc3\x8a(w\xadw~\x9b\x03\xc5Q&\xf1B\xa3\x16L\x87"P\x0f\
|
||||
\xbd\x04F\r{\x07|\x91v\x06\xa1\x15\x01<\xb6\x06\xbd\x93mO9#<:`\xdbP\x9d\xee(\
|
||||
{\x9a\xf5\xef\x1a\x08h\x9bD\xa7\xd97\xc5\xff\x00n\xb9j)\xe8*\xac\xf1\x00\x00\
|
||||
\x00\x00IEND\xaeB`\x82'
|
||||
|
||||
def getTest2Bitmap():
|
||||
return BitmapFromImage(getTest2Image())
|
||||
|
||||
def getTest2Image():
|
||||
stream = cStringIO.StringIO(getTest2Data())
|
||||
return ImageFromStream(stream)
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
35
wxPython/tests/test_gcMemDC.py
Normal file
35
wxPython/tests/test_gcMemDC.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""
|
||||
Tests using a memory dc (or a buffered dc) as the target of a
|
||||
wx.GraphicsContext.
|
||||
"""
|
||||
|
||||
import wx
|
||||
#import os; print "PID:", os.getpid(); raw_input("Press Enter...")
|
||||
|
||||
|
||||
class TestPanel(wx.Panel):
|
||||
def __init__(self, *args, **kw):
|
||||
wx.Panel.__init__(self, *args, **kw)
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||
|
||||
def OnSize(self, evt):
|
||||
self.Refresh()
|
||||
|
||||
def OnPaint(self, evt):
|
||||
#dc = wx.PaintDC(self)
|
||||
dc = wx.BufferedPaintDC(self)
|
||||
gcdc = wx.GCDC(dc)
|
||||
|
||||
sz = self.GetSize()
|
||||
gcdc.SetBackground(wx.Brush(self.GetBackgroundColour()))
|
||||
gcdc.Clear()
|
||||
gcdc.DrawLine(0, 0, sz.width, sz.height)
|
||||
gcdc.DrawLine(sz.width, 0, 0, sz.height)
|
||||
|
||||
|
||||
app = wx.App(False)
|
||||
frm = wx.Frame(None, title="GC/MemoryDC")
|
||||
pnl = TestPanel(frm)
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
77
wxPython/tests/test_gcText.py
Normal file
77
wxPython/tests/test_gcText.py
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
import wx
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
class TestPanel(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
wx.Panel.__init__(self, parent, -1)
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
|
||||
|
||||
def OnPaint(self, evt):
|
||||
dc = wx.PaintDC(self)
|
||||
try:
|
||||
gc = wx.GraphicsContext.Create(dc)
|
||||
except NotImplementedError:
|
||||
dc.DrawText("This build of wxPython does not support the wx.GraphicsContext "
|
||||
"family of classes.",
|
||||
25, 25)
|
||||
return
|
||||
|
||||
font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
|
||||
font.SetWeight(wx.BOLD)
|
||||
gc.SetFont(font)
|
||||
|
||||
gc.Translate(10, 10)
|
||||
self.DrawText(gc, 'normal')
|
||||
|
||||
gc.Translate(0, 25)
|
||||
gc.PushState()
|
||||
gc.Scale(2, 2)
|
||||
self.DrawText(gc, 'scaled')
|
||||
gc.PopState()
|
||||
|
||||
gc.Translate(0, 35)
|
||||
self.DrawText(gc, '\nnewline')
|
||||
|
||||
def DrawText(self, gc, txt):
|
||||
txt = "This is a test: " + txt
|
||||
w,h,d,e = gc.GetFullTextExtent(txt)
|
||||
##print w,h,d,e
|
||||
|
||||
gc.DrawText(txt, 0, 0)
|
||||
|
||||
pen = wx.Pen("red", 1)
|
||||
gc.SetPen(pen)
|
||||
|
||||
path = gc.CreatePath()
|
||||
path.MoveToPoint(-1, -1)
|
||||
self.MakeCrosshair(path)
|
||||
gc.StrokePath(path)
|
||||
|
||||
path = gc.CreatePath()
|
||||
path.MoveToPoint(w+1, h+1)
|
||||
self.MakeCrosshair(path)
|
||||
gc.StrokePath(path)
|
||||
|
||||
|
||||
|
||||
|
||||
def MakeCrosshair(self, path):
|
||||
x, y = path.GetCurrentPoint()
|
||||
path.MoveToPoint(x-5, y)
|
||||
path.AddLineToPoint(x+5,y)
|
||||
path.MoveToPoint(x, y-5)
|
||||
path.AddLineToPoint(x, y+5)
|
||||
path.MoveToPoint(x,y)
|
||||
|
||||
|
||||
|
||||
|
||||
app = wx.App(False)
|
||||
frm = wx.Frame(None, title="Testing GC Text")
|
||||
pnl = TestPanel(frm)
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
41
wxPython/tests/test_gcdcDrawEllipticArc.py
Normal file
41
wxPython/tests/test_gcdcDrawEllipticArc.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import wx
|
||||
|
||||
class Canvas(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
wx.Panel.__init__(self, parent)
|
||||
self.Bind (wx.EVT_PAINT, self.OnPaint)
|
||||
self.bkg_brush = wx.Brush((190,190,255))
|
||||
self.v_pos = 100
|
||||
|
||||
def OnPaint(self, evt):
|
||||
dc = wx.PaintDC(self)
|
||||
dc = wx.GCDC(dc)
|
||||
dc.SetBackground(self.bkg_brush)
|
||||
dc.Clear()
|
||||
dc.DrawEllipticArc(100, 200, 200, 200-self.v_pos, 90,270)
|
||||
dc.DrawLine(100, 100, 100, 300)
|
||||
|
||||
|
||||
class MyFrame(wx.Frame):
|
||||
def __init__(self):
|
||||
wx.Frame.__init__(self, None, title="DrawEllipticArc")
|
||||
self.SetSize((640,480))
|
||||
self.canvas = Canvas(self)
|
||||
self.slider = wx.Slider(self, minValue=0, maxValue=100)
|
||||
box = wx.BoxSizer(wx.VERTICAL)
|
||||
box.Add(self.canvas, 1, wx.EXPAND)
|
||||
box.Add(self.slider, 0, wx.EXPAND)
|
||||
self.SetSizer(box)
|
||||
self.Show()
|
||||
self.CenterOnScreen()
|
||||
self.slider.Bind (wx.EVT_SLIDER, self.OnSlide)
|
||||
|
||||
def OnSlide(self, evt):
|
||||
self.canvas.v_pos = 100+self.slider.GetValue()
|
||||
self.canvas.Refresh(False)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = wx.App(0)
|
||||
frame = MyFrame()
|
||||
app.MainLoop()
|
||||
44
wxPython/tests/test_gcdcDrawRect.py
Normal file
44
wxPython/tests/test_gcdcDrawRect.py
Normal file
@@ -0,0 +1,44 @@
|
||||
|
||||
import wx
|
||||
|
||||
CLIP = True
|
||||
|
||||
class TestPanel(wx.Panel):
|
||||
def __init__(self, parent, *args):
|
||||
wx.Panel.__init__(self, parent, *args)
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
|
||||
def OnPaint(self, evt):
|
||||
pdc = wx.PaintDC(self)
|
||||
gcdc = wx.GCDC(pdc)
|
||||
|
||||
for dc, y in [(gcdc, 10), (pdc, 40)]:
|
||||
r = wx.Rect(10, y, 100, 20)
|
||||
|
||||
dc.SetPen(wx.Pen("red", 1))
|
||||
dc.SetBrush(wx.Brush("light blue"))
|
||||
|
||||
if CLIP: dc.SetClippingRect(r)
|
||||
dc.DrawRectangleRect(r)
|
||||
dc.DestroyClippingRegion()
|
||||
|
||||
r.Offset((120, 0))
|
||||
if CLIP: dc.SetClippingRect(r)
|
||||
dc.DrawRoundedRectangleRect(r, 8)
|
||||
dc.DestroyClippingRegion()
|
||||
|
||||
|
||||
r.Offset((120, 0))
|
||||
if CLIP: dc.SetClippingRect(r)
|
||||
dc.DrawEllipseRect(r)
|
||||
dc.DestroyClippingRegion()
|
||||
|
||||
|
||||
app = wx.App(False)
|
||||
frm = wx.Frame(None, title="wxGCDC Drawing Rectangles")
|
||||
pnl = TestPanel(frm)
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
|
||||
|
||||
|
||||
49
wxPython/tests/test_griddrag.py
Normal file
49
wxPython/tests/test_griddrag.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
##import os; print os.getpid(); raw_input("press enter...")
|
||||
|
||||
class TestFrame(wx.Frame):
|
||||
def __init__(self, *args, **kw):
|
||||
wx.Frame.__init__(self, *args, **kw)
|
||||
self.grid = wx.grid.Grid(self)
|
||||
self.grid.CreateGrid(10,10)
|
||||
self.grid.EnableDragCell(True)
|
||||
self.grid.Bind(wx.grid.EVT_GRID_CELL_BEGIN_DRAG, self.OnBeginDrag)
|
||||
#self.grid.GetGridWindow().Bind(wx.EVT_MOTION, self.OnMouseDrag)
|
||||
|
||||
|
||||
def OnBeginDrag(self, evt):
|
||||
print "OnBeginDrag"
|
||||
|
||||
# The grid window has the mouse captured when this event is sent??
|
||||
if self.grid.GetGridWindow().HasCapture():
|
||||
print "Releasing capture"
|
||||
self.grid.GetGridWindow().ReleaseMouse()
|
||||
|
||||
src = wx.DropSource(self.grid)
|
||||
data = wx.TextDataObject("This is a test")
|
||||
src.SetData(data)
|
||||
result = src.DoDragDrop()
|
||||
print "result = %d" % result
|
||||
|
||||
|
||||
def OnMouseDrag(self, evt):
|
||||
if not evt.Dragging():
|
||||
evt.Skip()
|
||||
return
|
||||
print "OnMouseDrag"
|
||||
src = wx.DropSource(self.grid)
|
||||
data = wx.TextDataObject("This is a test")
|
||||
src.SetData(data)
|
||||
result = src.DoDragDrop()
|
||||
print "result = %d" % result
|
||||
|
||||
|
||||
from wx.lib.mixins.inspection import InspectableApp
|
||||
|
||||
app = InspectableApp(False)
|
||||
app.Init()
|
||||
frm = TestFrame(None, title="EVT_GRID_CELL_BEGIN_DRAG")
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
|
||||
47
wxPython/tests/test_logWindow.py
Executable file
47
wxPython/tests/test_logWindow.py
Executable file
@@ -0,0 +1,47 @@
|
||||
import wx
|
||||
print wx.VERSION
|
||||
|
||||
|
||||
class Frame(wx.Frame):
|
||||
def __init__(self, *args, **kw):
|
||||
wx.Frame.__init__(self, *args, **kw)
|
||||
self.log = wx.LogWindow(self, "Program Log", False, False)
|
||||
|
||||
pnl = wx.Panel(self)
|
||||
btn1 = wx.Button(pnl, -1, "Toggle Log")
|
||||
btn2 = wx.Button(pnl, -1, "Log Message")
|
||||
btn3 = wx.Button(pnl, -1, "Close")
|
||||
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(btn1, 0, wx.ALL, 10)
|
||||
sizer.Add(btn2, 0, wx.ALL, 10)
|
||||
sizer.Add(btn3, 0, wx.ALL, 10)
|
||||
pnl.SetSizer(sizer)
|
||||
|
||||
self.Bind(wx.EVT_BUTTON, self.OnToggleLog, btn1)
|
||||
self.Bind(wx.EVT_BUTTON, self.OnLogMessage, btn2)
|
||||
self.Bind(wx.EVT_BUTTON, self.OnDoClose, btn3)
|
||||
self.Bind(wx.EVT_CLOSE, self.OnClose)
|
||||
|
||||
|
||||
def OnClose(self, evt):
|
||||
self.log.this.disown()
|
||||
wx.Log.SetActiveTarget(None)
|
||||
self.Destroy()
|
||||
|
||||
|
||||
def OnToggleLog(self, evt):
|
||||
self.log.Show(not self.log.GetFrame().IsShown())
|
||||
|
||||
def OnLogMessage(self, evt):
|
||||
wx.LogMessage("This is a test message")
|
||||
|
||||
def OnDoClose(self, evt):
|
||||
self.Close()
|
||||
|
||||
|
||||
app = wx.App(False)
|
||||
frm = Frame(None, title="Testing wx.LogWindow")
|
||||
frm.Show()
|
||||
app.MainLoop()
|
||||
|
||||
Reference in New Issue
Block a user