New typemaps for wxString when compiling for Python 2.0 and beyond

that allow Unicode objects to be passed as well as String objects.  If
a Unicode object is passed PyString_AsStringAndSize is used to convert
it to a wxString using the default encoding.

Fixed the generic buttons so tool tips work for them.

Fixed a bug in the demo's tree control.

Added a listbox to the listbox demo that shows how to find items with
a patching prefix as keys are typed.

Added code to the wxListCtrl demo to show how to get text from a
column in report mode.

Added code to the toolbar demo to clear the long help from the status
bar after 2 seconds.

Added wxJoystick.

Fixed wxTimer so it can be used as described in the docs, either with
a Notify method in a subclass, or sending an event to a wxEvtHandler
object, (usually a window.)

Added wxNotifyEvent.Allow()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2000-11-21 03:44:14 +00:00
parent baeea2909c
commit 185d7c3ee4
55 changed files with 6223 additions and 729 deletions

View File

@@ -32,6 +32,7 @@ class TestPanel(wxPanel):
b.SetBackgroundColour(wxNamedColour("Navy"))
b.SetForegroundColour(wxWHITE)
#b.SetUseFocusIndicator(false)
b.SetToolTipString("This is a BIG button...")
bmp = wxBitmap('bitmaps/test2.bmp', wxBITMAP_TYPE_BMP)
b = wxGenBitmapButton(self, -1, bmp, (10, 130))

View File

@@ -257,8 +257,7 @@ class wxPythonDemo(wxFrame):
item, flags = self.tree.HitTest(pt)
if item == self.tree.GetSelection():
self.SetOverview(self.tree.GetItemText(item), self.curOverview)
else:
event.Skip()
event.Skip()
#---------------------------------------------
def OnSelChanged(self, event):

View File

@@ -14,9 +14,11 @@ class TestPanel(wxPanel):
b.SetForegroundColour(wxWHITE)
b.SetDefault()
wxButton(self, 20, "HELLO AGAIN!", wxPoint(20, 60), wxSize(90, 45))
b = wxButton(self, 20, "HELLO AGAIN!", wxPoint(20, 60), wxSize(90, 45))
EVT_BUTTON(self, 20, self.OnClick)
b.SetToolTipString("This is a Hello button...")
bmp = wxBitmap('bitmaps/test2.bmp', wxBITMAP_TYPE_BMP)
mask = wxMaskColour(bmp, wxBLUE)

View File

@@ -1,6 +1,51 @@
from wxPython.wx import *
import string
#---------------------------------------------------------------------------
class wxFindPrefixListBox(wxListBox):
def __init__(self, parent, id, pos=wxDefaultPosition, size=wxDefaultSize,
choices=[], style=0, validator=wxDefaultValidator):
wxListBox.__init__(self, parent, id, pos, size, choices, style, validator)
self.typedText = ''
EVT_KEY_UP(self, self.OnKey)
def FindPrefix(self, prefix):
if prefix:
prefix = string.lower(prefix)
length = len(prefix)
for x in range(self.Number()):
text = self.GetString(x)
text = string.lower(text)
if text[:length] == prefix:
return x
return -1
def OnKey(self, evt):
key = evt.GetKeyCode()
if key >= 32 and key <= 127:
self.typedText = self.typedText + chr(key)
item = self.FindPrefix(self.typedText)
if item != -1:
self.SetSelection(item)
elif key == WXK_BACK: # backspace removes one character and backs up
self.typedText = self.typedText[:-1]
if not self.typedText:
self.SetSelection(0)
else:
item = self.FindPrefix(self.typedText)
if item != -1:
self.SetSelection(item)
else:
evt.Skip()
#---------------------------------------------------------------------------
class TestListBox(wxPanel):
@@ -32,6 +77,16 @@ class TestListBox(wxPanel):
self.lb2.SetSelection(0)
sampleList = sampleList + ['test a', 'test aa', 'test aab',
'test ab', 'test abc', 'test abcc',
'test abcd' ]
sampleList.sort()
wxStaticText(self, -1, "Find Prefix:", wxPoint(15, 250))
fp = wxFindPrefixListBox(self, -1, wxPoint(80, 250), wxSize(80, 120),
sampleList, wxLB_SINGLE)
fp.SetSelection(0)
def EvtListBox(self, event):
self.log.WriteText('EvtListBox: %s\n' % event.GetString())

View File

@@ -66,14 +66,15 @@ class TestListCtrlPanel(wxPanel):
tID = wxNewId()
self.il = wxImageList(16, 16)
idx1 = self.il.Add(wxBitmap('bitmaps/smiles.bmp', wxBITMAP_TYPE_BMP))
bmp = wxBitmap('bitmaps/smiles.bmp', wxBITMAP_TYPE_BMP)
idx1 = self.il.AddWithColourMask(bmp, wxWHITE)
self.list = wxListCtrl(self, tID,
style=wxLC_REPORT|wxSUNKEN_BORDER)
self.list.SetImageList(self.il, wxIMAGE_LIST_SMALL)
# Why doesn't this show up on MSW???
self.list.SetToolTip(wxToolTip("This is a ToolTip!"))
wxToolTip_Enable(true)
self.list.InsertColumn(0, "Artist")
self.list.InsertColumn(1, "Title", wxLIST_FORMAT_RIGHT)
@@ -122,9 +123,19 @@ class TestListCtrlPanel(wxPanel):
self.log.WriteText("x, y = %s\n" % str((self.x, self.y)))
event.Skip()
def getColumnText(self, index, col):
item = self.list.GetItem(index, col)
return item.GetText()
def OnItemSelected(self, event):
self.currentItem = event.m_itemIndex
self.log.WriteText("OnItemSelected: %s\n" % self.list.GetItemText(self.currentItem))
self.log.WriteText("OnItemSelected: %s, %s, %s\n" %
(self.list.GetItemText(self.currentItem),
self.getColumnText(self.currentItem, 1),
self.getColumnText(self.currentItem, 2)))
def OnItemActivated(self, event):
self.currentItem = event.m_itemIndex
@@ -148,7 +159,7 @@ class TestListCtrlPanel(wxPanel):
def OnDoubleClick(self, event):
self.log.WriteText("OnDoubleClick item %s\n" % self.list.GetItemText(self.currentItem))
event.Skip()
def OnRightClick(self, event):
self.log.WriteText("OnRightClick %s\n" % self.list.GetItemText(self.currentItem))
@@ -170,6 +181,7 @@ class TestListCtrlPanel(wxPanel):
EVT_MENU(self, tPopupID5, self.OnPopupFive)
self.PopupMenu(menu, wxPoint(self.x, self.y))
menu.Destroy()
event.Skip()
def OnPopupOne(self, event):
self.log.WriteText("Popup one\n")

View File

@@ -8,11 +8,13 @@ class TestToolBar(wxFrame):
wxFrame.__init__(self, parent, -1, 'Test ToolBar',
wxPoint(0,0), wxSize(500, 300))
self.log = log
self.timer = None
EVT_CLOSE(self, self.OnCloseWindow)
wxWindow(self, -1).SetBackgroundColour(wxNamedColour("WHITE"))
tb = self.CreateToolBar(wxTB_HORIZONTAL|wxNO_BORDER) #|wxTB_FLAT)
#tb = wxToolBar(self, -1, wxDefaultPosition, wxDefaultSize,
#tb = wxToolBarSimple(self, -1, wxDefaultPosition, wxDefaultSize,
# wxTB_HORIZONTAL | wxNO_BORDER | wxTB_FLAT)
#self.SetToolBar(tb)
@@ -21,34 +23,34 @@ class TestToolBar(wxFrame):
tb.AddSimpleTool(10, wxBitmap('bitmaps/new.bmp', wxBITMAP_TYPE_BMP),
"New", "Long help for 'New'")
EVT_TOOL(self, 10, self.OnToolClick)
EVT_TOOL_RCLICKED(self, 10, self.OnToolRClick)
tb.AddSimpleTool(20, wxBitmap('bitmaps/open.bmp', wxBITMAP_TYPE_BMP), "Open")
tb.AddSimpleTool(20, wxBitmap('bitmaps/open.bmp', wxBITMAP_TYPE_BMP),
"Open", "Long help for 'Open'")
EVT_TOOL(self, 20, self.OnToolClick)
EVT_TOOL_RCLICKED(self, 20, self.OnToolRClick)
tb.AddSeparator()
tb.AddSimpleTool(30, wxBitmap('bitmaps/copy.bmp', wxBITMAP_TYPE_BMP), "Copy")
tb.AddSimpleTool(30, wxBitmap('bitmaps/copy.bmp', wxBITMAP_TYPE_BMP),
"Copy", "Long help for 'Copy'")
EVT_TOOL(self, 30, self.OnToolClick)
EVT_TOOL_RCLICKED(self, 30, self.OnToolRClick)
tb.AddSimpleTool(40, wxBitmap('bitmaps/paste.bmp', wxBITMAP_TYPE_BMP), "Paste")
tb.AddSimpleTool(40, wxBitmap('bitmaps/paste.bmp', wxBITMAP_TYPE_BMP),
"Paste", "Long help for 'Paste'")
EVT_TOOL(self, 40, self.OnToolClick)
EVT_TOOL_RCLICKED(self, 40, self.OnToolRClick)
tb.AddSeparator()
tool = tb.AddTool(50, wxBitmap('bitmaps/tog1.bmp', wxBITMAP_TYPE_BMP),
shortHelpString="Toggle this", isToggle=true)
EVT_TOOL(self, 50, self.OnToolClick)
EVT_TOOL_RCLICKED(self, 50, self.OnToolRClick)
tb.AddTool(60, wxBitmap('bitmaps/tog1.bmp', wxBITMAP_TYPE_BMP),
wxBitmap('bitmaps/tog2.bmp', wxBITMAP_TYPE_BMP),
shortHelpString="Toggle with 2 bitmaps", isToggle=true)
EVT_TOOL(self, 60, self.OnToolClick)
EVT_TOOL_RCLICKED(self, 60, self.OnToolRClick)
EVT_TOOL_ENTER(self, -1, self.OnToolEnter)
EVT_TOOL_RCLICKED(self, -1, self.OnToolRClick) # Match all
EVT_TIMER(self, -1, self.OnClearSB)
tb.AddSeparator()
cbID = wxNewId()
@@ -57,12 +59,8 @@ class TestToolBar(wxFrame):
EVT_COMBOBOX(self, cbID, self.OnCombo)
tb.Realize()
EVT_CLOSE(self, self.OnCloseWindow)
def OnCloseWindow(self, event):
self.Destroy()
def OnToolClick(self, event):
self.log.WriteText("tool %s clicked\n" % event.GetId())
@@ -72,6 +70,25 @@ class TestToolBar(wxFrame):
def OnCombo(self, event):
self.log.WriteText("combobox item selected: %s\n" % event.GetString())
def OnToolEnter(self, event):
self.log.WriteText('OnToolEnter: %s, %s\n' % (event.GetId(), event.GetInt()))
if self.timer is None:
self.timer = wxTimer(self)
self.timer.Start(2000)
event.Skip()
def OnClearSB(self, event):
self.SetStatusText("")
self.timer.Stop()
self.timer = None
def OnCloseWindow(self, event):
if self.timer is not None:
self.timer.Stop()
self.timer = None
self.Destroy()
#---------------------------------------------------------------------------
@@ -98,37 +115,5 @@ def runTest(frame, nb, log):
overview = """\
The name wxToolBar is defined to be a synonym for one of the following classes:
wxToolBar95 The native Windows 95 toolbar. Used on Windows 95, NT 4 and above.
wxToolBarMSW A Windows implementation. Used on 16-bit Windows.
wxToolBarGTK The GTK toolbar.
wxToolBarSimple A simple implementation, with scrolling. Used on platforms with no native toolbar control, or where scrolling is required.
wxToolBar()
-----------------------
Default constructor.
wxToolBar(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTB_HORIZONTAL | wxNO_BORDER, const wxString& name = wxPanelNameStr)
Constructs a toolbar.
Parameters
-------------------
parent = Pointer to a parent window.
id = Window identifier. If -1, will automatically create an identifier.
pos = Window position. wxDefaultPosition is (-1, -1) which indicates that wxWindows should generate a default position for the window. If using the wxWindow class directly, supply an actual position.
size = Window size. wxDefaultSize is (-1, -1) which indicates that wxWindows should generate a default size for the window.
style = Window style. See wxToolBar for details.
name = Window name.
"""