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:
@@ -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))
|
||||
|
@@ -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):
|
||||
|
@@ -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)
|
||||
|
@@ -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())
|
||||
|
||||
|
@@ -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")
|
||||
|
@@ -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.
|
||||
"""
|
||||
|
Reference in New Issue
Block a user