From f581a26df926aeb17a2a52386020c2f2a48f5419 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 5 Aug 1999 05:06:50 +0000 Subject: [PATCH] Some minor tweaks git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- utils/wxPython/README.txt | 1 + utils/wxPython/demo/wxComboBox.py | 2 +- utils/wxPython/src/glcanvas.i | 14 ++-- utils/wxPython/src/msw/glcanvas.cpp | 2 +- utils/wxPython/src/msw/wx.cpp | 46 +---------- utils/wxPython/src/msw/wx.py | 6 +- utils/wxPython/tests/leave.py | 26 +++++++ utils/wxPython/tests/test4.py | 8 +- utils/wxPython/tests/testTree.py | 116 ++++++++++++++++++++++++++++ 9 files changed, 164 insertions(+), 57 deletions(-) create mode 100644 utils/wxPython/tests/leave.py create mode 100644 utils/wxPython/tests/testTree.py diff --git a/utils/wxPython/README.txt b/utils/wxPython/README.txt index 93d9987273..02eb7b28d6 100644 --- a/utils/wxPython/README.txt +++ b/utils/wxPython/README.txt @@ -109,6 +109,7 @@ in wx.cpp. + What's new in 2.1b1 -------------------- Fixed wxComboBox.SetSelection so that it actually sets the selected diff --git a/utils/wxPython/demo/wxComboBox.py b/utils/wxPython/demo/wxComboBox.py index 3934bc18b3..b4b3112f05 100644 --- a/utils/wxPython/demo/wxComboBox.py +++ b/utils/wxPython/demo/wxComboBox.py @@ -15,7 +15,7 @@ class TestComboBox(wxPanel): wxPoint(8, 10)) wxStaticText(self, -1, "Select one:", wxPoint(15, 50), wxSize(75, 18)) - wxComboBox(self, 500, "default value", wxPoint(80, 50), wxSize(95, 20), + wxComboBox(self, 500, "default value", wxPoint(80, 50), wxSize(95, -1), sampleList, wxCB_DROPDOWN) EVT_COMBOBOX(self, 500, self.EvtComboBox) diff --git a/utils/wxPython/src/glcanvas.i b/utils/wxPython/src/glcanvas.i index 5eb2d26497..6f9f6446d5 100644 --- a/utils/wxPython/src/glcanvas.i +++ b/utils/wxPython/src/glcanvas.i @@ -36,11 +36,11 @@ %{ -//#ifdef SEPARATE -// static wxString wxPyEmptyStr(""); -// static wxPoint wxPyDefaultPosition(-1, -1); -// static wxSize wxPyDefaultSize(-1, -1); -//#endif +#if defined(SEPARATE) && defined(__WXMSW__) + static wxString wxPyEmptyStr(""); + static wxPoint wxPyDefaultPosition(-1, -1); + static wxSize wxPyDefaultSize(-1, -1); +#endif %} %pragma(python) code = "import wx" @@ -64,11 +64,13 @@ public: void SetColour(const char *colour); void SwapBuffers(); +#ifdef __WXGTK__ void SetupPixelFormat(); void SetupPalette(const wxPalette& palette); wxPalette CreateDefaultPalette(); - wxPalette* GetPalette(); +#endif + wxWindow* GetWindow(); }; diff --git a/utils/wxPython/src/msw/glcanvas.cpp b/utils/wxPython/src/msw/glcanvas.cpp index a11b302c4e..e1d0ec65c5 100644 --- a/utils/wxPython/src/msw/glcanvas.cpp +++ b/utils/wxPython/src/msw/glcanvas.cpp @@ -115,7 +115,7 @@ extern wxAcceleratorEntry* wxAcceleratorEntry_LIST_helper(PyObject* source); static char* wxStringErrorMsg = "string type is required for parameter"; -#ifdef SEPARATE +#if defined(SEPARATE) && defined(__WXMSW__) static wxString wxPyEmptyStr(""); static wxPoint wxPyDefaultPosition(-1, -1); static wxSize wxPyDefaultSize(-1, -1); diff --git a/utils/wxPython/src/msw/wx.cpp b/utils/wxPython/src/msw/wx.cpp index 3b1c0f80ac..c58088b5c8 100644 --- a/utils/wxPython/src/msw/wx.cpp +++ b/utils/wxPython/src/msw/wx.cpp @@ -33,50 +33,8 @@ * and things like that. * * $Log$ - * Revision 1.13 1999/07/31 07:56:03 RD - * wxPython 2.1b1: - * - * Added the missing wxWindow.GetUpdateRegion() method. - * - * Made a new change in SWIG (update your patches everybody) that - * provides a fix for global shadow objects that get an exception in - * their __del__ when their extension module has already been deleted. - * It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about - * line 496 if you want to do it by hand. - * - * It is now possible to run through MainLoop more than once in any one - * process. The cleanup that used to happen as MainLoop completed (and - * prevented it from running again) has been delayed until the wxc module - * is being unloaded by Python. - * - * wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added - * wxWindow.PopupMenuXY to be consistent with some other methods. - * - * Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace. - * - * You can now provide your own app.MainLoop method. See - * wxPython/demo/demoMainLoop.py for an example and some explaination. - * - * Got the in-place-edit for the wxTreeCtrl fixed and added some demo - * code to show how to use it. - * - * Put the wxIcon constructor back in for GTK as it now has one that - * matches MSW's. - * - * Added wxGrid.GetCells - * - * Added wxSystemSettings static methods as functions with names like - * wxSystemSettings_GetSystemColour. - * - * Removed wxPyMenu since using menu callbacks have been depreciated in - * wxWindows. Use wxMenu and events instead. - * - * Added alternate wxBitmap constructor (for MSW only) as - * wxBitmapFromData(data, type, width, height, depth = 1) - * - * Added a helper function named wxPyTypeCast that can convert shadow - * objects of one type into shadow objects of another type. (Like doing - * a down-cast.) See the implementation in wx.py for some docs. + * Revision 1.14 1999/08/05 05:06:38 RD + * Some minor tweaks * ************************************************************************/ diff --git a/utils/wxPython/src/msw/wx.py b/utils/wxPython/src/msw/wx.py index 1ced3863e2..923aefd279 100644 --- a/utils/wxPython/src/msw/wx.py +++ b/utils/wxPython/src/msw/wx.py @@ -1371,7 +1371,7 @@ class wxAcceleratorTable(wxAcceleratorTablePtr): #---------------------------------------------------------------------- # This helper function will take a wxPython object and convert it to # another wxPython object type. This will not be able to create objects -# user that are derived from wxPython classes, only those that are +# that are derived from wxPython classes by the user, only those that are # actually part of wxPython and directly corespond to C++ objects. # # This is useful in situations where some method returns a generic @@ -1458,8 +1458,8 @@ class wxApp(wxPyApp): if filename: sys.stdout = sys.stderr = open(filename, 'a') else: - #raise self.error, 'wxPyStdOutWindow not yet implemented.' - self.stdioWin = sys.stdout = sys.stderr = wxPyStdOutWindow() + raise self.error, 'wxPyStdOutWindow not yet implemented.' + #self.stdioWin = sys.stdout = sys.stderr = wxPyStdOutWindow() def RestoreStdio(self): sys.stdout, sys.stderr = self.saveStdio diff --git a/utils/wxPython/tests/leave.py b/utils/wxPython/tests/leave.py new file mode 100644 index 0000000000..bd2cca3509 --- /dev/null +++ b/utils/wxPython/tests/leave.py @@ -0,0 +1,26 @@ +from wxPython.wx import * + +class TestFrame(wxFrame): + + def __init__(self): + wxFrame.__init__(self,NULL,-1,"Test Frame",wxPoint(200,200)) + win = wxWindow(self, -1) + self.Show(true) + EVT_LEAVE_WINDOW(win, self.onLeave) + EVT_ENTER_WINDOW(win, self.onEnter) + + def onLeave(self, event): + print("out") + + def onEnter(self, event): + print('in') + +class MyApp(wxApp): + + def OnInit(self): + self.mainFrame = TestFrame() + return true + +app = MyApp(0) +app.MainLoop() + diff --git a/utils/wxPython/tests/test4.py b/utils/wxPython/tests/test4.py index 89b94ebe2e..079c4a9215 100644 --- a/utils/wxPython/tests/test4.py +++ b/utils/wxPython/tests/test4.py @@ -53,13 +53,13 @@ class TestSimpleControlsDlg(wxDialog): y_pos = y_pos + delta wxStaticText(self, -1, "wxComboBox", wxPoint(5, y_pos), wxSize(75, 18)) - wxComboBox(self, 50, "default value", wxPoint(80, y_pos), wxSize(95, 20), + wxComboBox(self, 50, "default value", wxPoint(80, y_pos), wxSize(95, -1), sampleList, wxCB_DROPDOWN) EVT_COMBOBOX(self, 50, self.EvtComboBox) y_pos = y_pos + delta wxStaticText(self, -1, "wxListBox", wxPoint(5, y_pos), wxSize(75, 18)) - lb = wxListBox(self, 60, wxPoint(80, y_pos), wxDefaultSize, + lb = wxListBox(self, 60, wxPoint(80, y_pos), wxSize(95, 80), sampleList, wxLB_SINGLE) EVT_LISTBOX(self, 60, self.EvtListBox) EVT_LISTBOX_DCLICK(self, 60, self.EvtListBoxDClick) @@ -998,7 +998,11 @@ if __name__ == '__main__': #---------------------------------------------------------------------------- # # $Log$ +# Revision 1.17 1999/08/05 05:06:50 RD +# Some minor tweaks +# # Revision 1.16 1999/04/30 03:29:54 RD +# # wxPython 2.0b9, first phase (win32) # Added gobs of stuff, see wxPython/README.txt for details # diff --git a/utils/wxPython/tests/testTree.py b/utils/wxPython/tests/testTree.py new file mode 100644 index 0000000000..e445371c94 --- /dev/null +++ b/utils/wxPython/tests/testTree.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python + +from wxPython import wx +import sys, os +from stat import * + +GlobalObjList = [] + +class Obj: + def __init__(self, obj): + self.obj = obj + # Uncomment next line to eliminate crash. + # GlobalObjList.append(self) + + def Name(self): + head, tail = os.path.split(self.obj) + if tail: + return tail + else: + return head + + def HasChildren(self): + return os.path.isdir(self.obj) + + def Children(self): + objList = os.listdir(self.obj) + objList.sort() + objList = map(lambda obj,parent=self.obj: os.path.join(parent,obj), + objList) + objectList = map(Obj, objList) + return objectList + + def __str__(self): + return self.obj + + def __repr__(self): + return self.obj + + def __del__(self): + print 'del', self.obj + + +#---------------------------------------------------------------------- + +class pyTree(wx.wxTreeCtrl): + + def __init__(self, parent, id, obj): + wx.wxTreeCtrl.__init__(self, parent, id) + self.root = self.AddRoot(obj.Name(), -1, -1, wx.wxTreeItemData('')) + self.SetPyData(self.root, obj) + if obj.HasChildren(): + self.SetItemHasChildren(self.root, wx.TRUE) + wx.EVT_TREE_ITEM_EXPANDING(self, self.GetId(), self.OnItemExpanding) + wx.EVT_TREE_ITEM_COLLAPSED(self, self.GetId(), self.OnItemCollapsed) + wx.EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged) + self.output = None + + def SetOutput(self, output): + self.output = output + + def OnItemExpanding(self,event): + item = event.GetItem() + obj = self.GetPyData(item) + children = obj.Children() + for child in children: + new_item = self.AppendItem(item, child.Name(), -1, -1, + wx.wxTreeItemData('')) + self.SetPyData(new_item, child) + if child.HasChildren(): + self.SetItemHasChildren(new_item, wx.TRUE) + + def OnItemCollapsed(self, event): + item = event.GetItem() + self.DeleteChildren(item) + + def OnSelChanged(self, event): + if not self.output: + return + obj = self.GetPyData( event.GetItem() ) + apply(self.output, (`obj`,)) + + + +#---------------------------------------------------------------------- +if __name__ == '__main__': + + class MyFrame(wx.wxFrame): + + def __init__(self): + wx.wxFrame.__init__(self, wx.NULL, -1, 'PyTreeItemData Test', + wx.wxDefaultPosition, wx.wxSize(600,500)) + split = wx.wxSplitterWindow(self, -1) + + if sys.platform == 'win32': + tree = pyTree(split, -1, Obj('C:\\')) + else: + tree = pyTree(split, -1, Obj('/')) + + text = wx.wxTextCtrl(split, -1, '', wx.wxDefaultPosition, + wx.wxDefaultSize, wx.wxTE_MULTILINE) + split.SplitVertically(tree, text, 200) + tree.SetOutput(text.SetValue) + tree.SelectItem(tree.root) + + class MyApp(wx.wxApp): + + def OnInit(self): + frame = MyFrame() + frame.Show(wx.TRUE) + self.SetTopWindow(frame) + return wx.TRUE + + app = MyApp(0) + app.MainLoop() + + -- 2.45.2