#!/bin/env python #---------------------------------------------------------------------------- # Name: test3.py # Purpose: Testing menus and status lines # # Author: Robin Dunn # # Created: # RCS-ID: $Id$ # Copyright: (c) 1998 by Total Control Software # Licence: wxWindows license #---------------------------------------------------------------------------- from wxPython.wx import * #--------------------------------------------------------------------------- class MyCanvas(wxWindow): def __init__(self, parent, ID): wxWindow.__init__(self, parent, ID) self.SetBackgroundColour(wxNamedColor("WHITE")) def OnPaint(self, event): dc = wxPaintDC(self) dc.BeginDrawing() size = self.GetClientSize() font = wxFont(42, wxSWISS, wxNORMAL, wxNORMAL) dc.SetFont(font) st = "Python Rules!" tw,th, d,e = dc.GetTextExtent(st) dc.DrawText(st, (size.width-tw)/2, (size.height-th)/2) dc.EndDrawing() #--------------------------------------------------------------------------- #if wxPlatform == '__WXMSW__': class MyMiniFrame(wxMiniFrame): def __init__(self, parent, ID, title, pos, size, style): wxMiniFrame.__init__(self, parent, ID, title, pos, size, style) panel = wxPanel(self, -1) ID = NewId() button = wxButton(panel, ID, "Close Me") button.SetPosition(wxPoint(15, 15)) self.Connect(ID, -1, wxEVT_COMMAND_BUTTON_CLICKED, self.OnCloseMe) def OnCloseMe(self, event): self.Close(true) def OnCloseWindow(self, event): self.Destroy() #--------------------------------------------------------------------------- class MyFrame(wxFrame): def __init__(self, parent, id, title): wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition, wxSize(420, 200)) self.canvas = MyCanvas(self, -1) self.CreateStatusBar(2) mainmenu = wxMenuBar() menu = wxMenu() menu.Append(100, 'A &Menu Item', 'the help text') menu.Append(101, '&Another', 'Grok!') menu.AppendSeparator() menu.Append(200, 'E&xit', 'Get the heck outta here!') mainmenu.Append(menu, "&It's a menu!") self.SetMenuBar(mainmenu) if wxPlatform == '__WXMSW__': print menu.GetHelpString(100) print mainmenu.GetHelpString(101) print mainmenu.GetHelpString(200) self.DragAcceptFiles(true) self.Connect(-1, -1, wxEVT_COMMAND_MENU_SELECTED, self.OnMenuCommand) self.Connect(-1, -1, wxEVT_DROP_FILES, self.OnDropFiles) def OnCloseWindow(self, event): print 'OnCloseWindow' self.Destroy() def OnSize(self, event): size = self.GetClientSize() self.canvas.SetSize(size) self.SetStatusText("hello, this is a test: (%d, %d)" % (size.width, size.height), 1) ## def OnMenuHighlight(self, event): ## mainmenu = self.GetMenuBar() ## st = mainmenu.GetHelpString(event.GetMenuId()) ## self.SetStatusText('['+st+']', 0) def OnMenuCommand(self, event): # why isn't this a wxMenuEvent??? print event, event.GetInt() if event.GetInt() == 200: self.Close() elif event.GetInt() == 101: #if wxPlatform == '__WXMSW__': win = MyMiniFrame(self, -1, "This is a Mini...", wxPoint(-1, -1), #wxPyDefaultPosition, wxSize(150, 150), wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxTINY_CAPTION_HORIZ) win.Show(true) #else: # print 'Sorry, can\'t do mini\'s...' def OnDropFiles(self, event): fileList = event.GetFiles() for file in fileList: print file #--------------------------------------------------------------------------- class MyApp(wxApp): def OnInit(self): frame = MyFrame(NULL, -1, "Test 3") frame.Show(true) self.SetTopWindow(frame) return true #--------------------------------------------------------------------------- def main(): app = MyApp(0) app.MainLoop() def t(): import pdb pdb.run('main()') if __name__ == '__main__': main() #---------------------------------------------------------------------------- # # $Log$ # Revision 1.4 1998/12/16 22:12:46 RD # Tweaks needed to be able to build wxPython with wxGTK. # # Revision 1.3 1998/12/15 20:44:35 RD # Changed the import semantics from "from wxPython import *" to "from # wxPython.wx import *" This is for people who are worried about # namespace pollution, they can use "from wxPython import wx" and then # prefix all the wxPython identifiers with "wx." # # Added wxTaskbarIcon for wxMSW. # # Made the events work for wxGrid. # # Added wxConfig. # # Added wxMiniFrame for wxGTK, (untested.) # # Changed many of the args and return values that were pointers to gdi # objects to references to reflect changes in the wxWindows API. # # Other assorted fixes and additions. # # Revision 1.2 1998/08/22 19:51:17 RD # some tweaks for wxGTK # # Revision 1.1 1998/08/09 08:28:05 RD # Initial version # #