diff --git a/samples/combo/combo1.py b/samples/combo/combo1.py index 3b66f34d..64abf20e 100644 --- a/samples/combo/combo1.py +++ b/samples/combo/combo1.py @@ -19,19 +19,19 @@ class NullLog: def write(self, *args): #print(' '.join(args)) pass - + #---------------------------------------------------------------------- # This class is used to provide an interface between a ComboCtrl and the -# ListCtrl that is used as the popoup for the combo widget. +# ListCtrl that is used as the popoup for the combo widget. class ListCtrlComboPopup(wx.ComboPopup): - + def __init__(self): wx.ComboPopup.__init__(self) self.log = NullLog() self.lc = None - + def AddItem(self, txt): self.lc.InsertItem(self.lc.GetItemCount(), txt) @@ -130,12 +130,12 @@ class ListCtrlComboPopup(wx.ComboPopup): # Return true if you want delay the call to Create until the popup # is shown for the first time. It is more efficient, but note that # it is often more convenient to have the control created - # immediately. + # immediately. # Default returns false. def LazyCreate(self): self.log.write("ListCtrlComboPopup.LazyCreate") return wx.ComboPopup.LazyCreate(self) - + @@ -149,7 +149,7 @@ class TestFrame(wx.Frame): # Create a ComboCtrl cc = self.cc = wx.ComboCtrl(pnl, pos=(10,10), size=(275,-1)) cc.SetHint('Click the button -->') - + # Create a Popup popup = ListCtrlComboPopup() @@ -160,11 +160,11 @@ class TestFrame(wx.Frame): # Add some items to the listctrl. for x in range(75): popup.AddItem("Item-%02d" % x) - + #---------------------------------------------------------------------- - - + + if __name__ == '__main__': app = wx.App(False) frm = TestFrame(None) diff --git a/samples/dataview/CustomRenderer.py b/samples/dataview/CustomRenderer.py index a96c1152..d8c6987a 100644 --- a/samples/dataview/CustomRenderer.py +++ b/samples/dataview/CustomRenderer.py @@ -114,17 +114,17 @@ class TestPanel(wx.Panel): # Create a dataview control self.dvc = dv.DataViewCtrl(self, style=wx.BORDER_THEME - | dv.DV_ROW_LINES + | dv.DV_ROW_LINES #| dv.DV_HORIZ_RULES | dv.DV_VERT_RULES | dv.DV_MULTIPLE ) - + # Create an instance of the model if model is None: self.model = TestModel(data, log) else: - self.model = model + self.model = model self.dvc.AssociateModel(self.model) # Now we create some columns. @@ -140,24 +140,24 @@ class TestPanel(wx.Panel): column = dv.DataViewColumn(title, renderer, col, width=width) column.Alignment = wx.ALIGN_LEFT self.dvc.AppendColumn(column) - - # Layout - self.Sizer = wx.BoxSizer(wx.VERTICAL) + + # Layout + self.Sizer = wx.BoxSizer(wx.VERTICAL) self.Sizer.Add(self.dvc, 1, wx.EXPAND) - + #---------------------------------------------------------------------- def main(): from data import musicdata - + app = wx.App() frm = wx.Frame(None, title="CustomRenderer sample", size=(700,500)) pnl = TestPanel(frm, sys.stdout, data=musicdata) frm.Show() app.MainLoop() - + diff --git a/samples/dataview/DataViewModel.py b/samples/dataview/DataViewModel.py index c309b57d..949cd504 100644 --- a/samples/dataview/DataViewModel.py +++ b/samples/dataview/DataViewModel.py @@ -32,16 +32,16 @@ class Song(object): m = random.choice(range(12)) y = random.choice(range(1980, 2005)) self.date = wx.DateTime.FromDMY(d,m,y) - + def __repr__(self): return 'Song: %s-%s' % (self.artist, self.title) - + class Genre(object): def __init__(self, name): self.name = name self.songs = [] - + def __repr__(self): return 'Genre: ' + self.name @@ -49,7 +49,7 @@ class Genre(object): # This model acts as a bridge between the DataViewCtrl and the music data, and # organizes it hierarchically as a collection of Genres, each of which is a -# collection of songs. +# collection of songs. # This model provides these data columns: # @@ -66,7 +66,7 @@ class MyTreeListModel(dv.PyDataViewModel): dv.PyDataViewModel.__init__(self) self.data = data self.log = log - + # The PyDataViewModel derives from both DataViewModel and from # DataViewItemObjectMapper, which has methods that help associate # data view items with Python objects. Normally a dictionary is used @@ -75,20 +75,20 @@ class MyTreeListModel(dv.PyDataViewModel): # WeakValueDictionary instead. self.UseWeakRefs(True) - + # Report how many columns this model provides data for. def GetColumnCount(self): return 6 - - def GetChildren(self, parent, children): + + def GetChildren(self, parent, children): # The view calls this method to find the children of any node in the # control. There is an implicit hidden root node, and the top level # item(s) should be reported as children of this node. A List view # simply provides all items as children of this hidden root. A Tree # view adds additional items as children of the other items, as needed, # to provide the tree hierachy. - + # If the parent item is invalid then it represents the hidden root # item, so we'll use the genre objects as its children and they will # end up being the collection of visible roots in our tree. @@ -96,7 +96,7 @@ class MyTreeListModel(dv.PyDataViewModel): for genre in self.data: children.append(self.ObjectToItem(genre)) return len(self.data) - + # Otherwise we'll fetch the python object associated with the parent # item and make DV items for each of it's child objects. node = self.ItemToObject(parent) @@ -105,11 +105,11 @@ class MyTreeListModel(dv.PyDataViewModel): children.append(self.ObjectToItem(song)) return len(node.songs) return 0 - + def IsContainer(self, item): # Return True if the item has children, False otherwise. - + # The hidden root is a container if not item: return True @@ -118,33 +118,33 @@ class MyTreeListModel(dv.PyDataViewModel): if isinstance(node, Genre): return True # but everything else (the song objects) are not - return False + return False def GetParent(self, item): # Return the item which is this item's parent. ##self.log.write("GetParent\n") - + if not item: return dv.NullDataViewItem - node = self.ItemToObject(item) + node = self.ItemToObject(item) if isinstance(node, Genre): return dv.NullDataViewItem elif isinstance(node, Song): for g in self.data: if g.name == node.genre: return self.ObjectToItem(g) - - + + def GetValue(self, item, col): # Return the value to be displayed for this item and column. For this # example we'll just pull the values from the data objects we # associated with the items in GetChildren. - + # Fetch the data object for this item. node = self.ItemToObject(item) - + if isinstance(node, Genre): # We'll only use the first column for the Genre objects, # for the other columns lets just return empty values @@ -156,8 +156,8 @@ class MyTreeListModel(dv.PyDataViewModel): 5 : False, } return mapper[col] - - + + elif isinstance(node, Song): mapper = { 0 : node.genre, 1 : node.artist, @@ -167,10 +167,10 @@ class MyTreeListModel(dv.PyDataViewModel): 5 : node.like, } return mapper[col] - + else: raise RuntimeError("unknown node type") - + def GetAttr(self, item, col, attr): @@ -181,14 +181,14 @@ class MyTreeListModel(dv.PyDataViewModel): attr.SetBold(True) return True return False - - + + def SetValue(self, value, item, col): self.log.write("SetValue: col %d, %s\n" % (col, value)) - + # We're not allowing edits in column zero (see below) so we just need # to deal with Song objects and cols 1 - 5 - + node = self.ItemToObject(item) if isinstance(node, Song): if col == 1: @@ -218,17 +218,17 @@ class TestPanel(wx.Panel): | dv.DV_VERT_RULES | dv.DV_MULTIPLE ) - + # Create an instance of our model... if model is None: self.model = MyTreeListModel(data, log) else: - self.model = model + self.model = model # Tel the DVC to use the model self.dvc.AssociateModel(self.model) - # Define the columns that we want in the view. Notice the + # Define the columns that we want in the view. Notice the # parameter which tells the view which col in the data model to pull # values from for each view column. if 0: @@ -240,46 +240,46 @@ class TestPanel(wx.Panel): self.dvc.AppendColumn(c0) else: self.dvc.AppendTextColumn("Genre", 0, width=80) - + c1 = self.dvc.AppendTextColumn("Artist", 1, width=170, mode=dv.DATAVIEW_CELL_EDITABLE) c2 = self.dvc.AppendTextColumn("Title", 2, width=260, mode=dv.DATAVIEW_CELL_EDITABLE) c3 = self.dvc.AppendDateColumn('Acquired', 4, width=100, mode=dv.DATAVIEW_CELL_ACTIVATABLE) c4 = self.dvc.AppendToggleColumn('Like', 5, width=40, mode=dv.DATAVIEW_CELL_ACTIVATABLE) - + # Notice how we pull the data from col 3, but this is the 6th col # added to the DVC. The order of the view columns is not dependent on # the order of the model columns at all. c5 = self.dvc.AppendTextColumn("id", 3, width=40, mode=dv.DATAVIEW_CELL_EDITABLE) c5.Alignment = wx.ALIGN_RIGHT - + # Set some additional attributes for all the columns for c in self.dvc.Columns: c.Sortable = True c.Reorderable = True - + self.Sizer = wx.BoxSizer(wx.VERTICAL) self.Sizer.Add(self.dvc, 1, wx.EXPAND) - + b1 = wx.Button(self, label="New View", name="newView") self.Bind(wx.EVT_BUTTON, self.OnNewView, b1) - + self.Sizer.Add(b1, 0, wx.ALL, 5) - - + + def OnNewView(self, evt): f = wx.Frame(None, title="New view, shared model", size=(600,400)) TestPanel(f, self.log, model=self.model) b = f.FindWindowByName("newView") b.Disable() f.Show() - - + + #---------------------------------------------------------------------- def main(): from data import musicdata - + # our data structure will be a collection of Genres, each of which is a # collection of Songs data = dict() @@ -297,11 +297,11 @@ def main(): pnl = TestPanel(frm, sys.stdout, data=data) frm.Show() app.MainLoop() - + #---------------------------------------------------------------------- if __name__ == '__main__': main() - + diff --git a/samples/dataview/IndexListModel.py b/samples/dataview/IndexListModel.py index e28b9ae0..5603a0d1 100644 --- a/samples/dataview/IndexListModel.py +++ b/samples/dataview/IndexListModel.py @@ -46,7 +46,7 @@ class TestModel(dv.DataViewIndexListModel): def GetCount(self): #self.log.write('GetCount') return len(self.data) - + # Called to check if non-standard attributes should be used in the # cell at (row, col) def GetAttrByRow(self, row, col, attr): @@ -74,28 +74,28 @@ class TestModel(dv.DataViewIndexListModel): else: return cmp(self.data[row1][col], self.data[row2][col]) - + def DeleteRows(self, rows): # make a copy since we'll be sorting(mutating) the list rows = list(rows) # use reverse order so the indexes don't change as we remove items rows.sort(reverse=True) - + for row in rows: # remove it from our data structure del self.data[row] # notify the view(s) using this model that it has been removed self.RowDeleted(row) - - + + def AddRow(self, value): # update data structure self.data.append(value) # notify views self.RowAppended() - - + + class TestPanel(wx.Panel): def __init__(self, parent, log, model=None, data=None): self.log = log @@ -109,12 +109,12 @@ class TestPanel(wx.Panel): | dv.DV_VERT_RULES | dv.DV_MULTIPLE ) - + # Create an instance of our simple model... if model is None: self.model = TestModel(data, log) else: - self.model = model + self.model = model # ...and associate it with the dataview control. Models can # be shared between multiple DataViewCtrls, so this does not @@ -158,9 +158,9 @@ class TestPanel(wx.Panel): c0.Reorderable = False # set the Sizer property (same as SetSizer) - self.Sizer = wx.BoxSizer(wx.VERTICAL) + self.Sizer = wx.BoxSizer(wx.VERTICAL) self.Sizer.Add(self.dvc, 1, wx.EXPAND) - + # Add some buttons to help out with the tests b1 = wx.Button(self, label="New View", name="newView") self.Bind(wx.EVT_BUTTON, self.OnNewView, b1) @@ -196,7 +196,7 @@ class TestPanel(wx.Panel): rows = [self.model.GetRow(item) for item in items] self.model.DeleteRows(rows) - + def OnAddRow(self, evt): # Add some bogus data to a new row in the model's data id = len(self.model.data) + 1 @@ -205,7 +205,7 @@ class TestPanel(wx.Panel): 'new title %d' % id, 'genre %d' % id] self.model.AddRow(value) - + def OnEditingDone(self, evt): self.log.write("OnEditingDone\n") @@ -213,18 +213,18 @@ class TestPanel(wx.Panel): def OnValueChanged(self, evt): self.log.write("OnValueChanged\n") - + #---------------------------------------------------------------------- def main(): from data import musicdata - + app = wx.App() frm = wx.Frame(None, title="IndexListModel sample", size=(700,500)) pnl = TestPanel(frm, sys.stdout, data=musicdata) frm.Show() app.MainLoop() - + #---------------------------------------------------------------------- diff --git a/samples/floatcanvas/Animation.py b/samples/floatcanvas/Animation.py index 2e968b52..6f507f4a 100644 --- a/samples/floatcanvas/Animation.py +++ b/samples/floatcanvas/Animation.py @@ -44,16 +44,16 @@ ID_TEST = 500 class DrawFrame(wx.Frame): def __init__(self,parent, id,title,position,size): wx.Frame.__init__(self,parent, id,title,position, size) - + ## Set up the MenuBar - + MenuBar = wx.MenuBar() - + file_menu = wx.Menu() exit = file_menu.Append(wx.ID_EXIT, "", "Terminate the program") self.Bind(wx.EVT_MENU, self.OnQuit, exit) MenuBar.Append(file_menu, "&File") - + draw_menu = wx.Menu() draw = draw_menu.Append(wx.ID_ANY, "&Draw Test", @@ -65,68 +65,68 @@ class DrawFrame(wx.Frame): clear = draw_menu.Append(wx.ID_ANY, "&Clear","Clear the Canvas") self.Bind(wx.EVT_MENU, self.Clear, clear) MenuBar.Append(draw_menu, "&Draw") - - + + view_menu = wx.Menu() zoom = view_menu.Append(wx.ID_ANY, "Zoom to &Fit","Zoom to fit the window") self.Bind(wx.EVT_MENU, self.ZoomToFit, zoom) MenuBar.Append(view_menu, "&View") - + help_menu = wx.Menu() about = help_menu.Append(wx.ID_ABOUT, "", "More information About this program") self.Bind(wx.EVT_MENU, self.OnAbout, about) MenuBar.Append(help_menu, "&Help") - + self.SetMenuBar(MenuBar) - + self.CreateStatusBar() self.SetStatusText("") - + self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) - + # Other event handlers: self.Bind(wx.EVT_RIGHT_DOWN, self.RightButtonEvent) - + # Add the Canvas self.Canvas = NavCanvas.NavCanvas(self,-1,(500,500), Debug = False, BackgroundColor = "WHITE").Canvas self.Canvas.NumBetweenBlits = 1000 self.Show(True) - + self.DrawTest(None) return None - + def RightButtonEvent(self,event): print("Right Button has been clicked in DrawFrame") print("coords are: %i, %i"%(event.GetX(),event.GetY())) event.Skip() - + def OnAbout(self, event): dlg = wx.MessageDialog(self, "This is a small program to demonstrate\n" "the use of the FloatCanvas\n", "About Me", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() - + def ZoomToFit(self,event): self.Canvas.ZoomToBB() - + def Clear(self,event = None): self.Canvas.ClearAll() self.Canvas.Draw() - + def OnQuit(self,event): self.Close(True) - + def OnCloseWindow(self, event): self.Destroy() - + def DrawTest(self,event = None): import random import numpy.random as RandomArray - + Range = (-10,10) colors = ["AQUAMARINE", "BLACK", "BLUE", "BLUE VIOLET", "BROWN", @@ -143,7 +143,7 @@ class DrawFrame(wx.Frame): "ORCHID", "PALE GREEN", "PINK", "PLUM", "PURPLE", "RED", "SALMON", "SEA GREEN", "SIENNA", "SKY BLUE", "SLATE BLUE", "SPRING GREEN", "STEEL BLUE", "TAN", "THISTLE", "TURQUOISE", - "VIOLET", "VIOLET RED", "WHEAT", "WHITE", "YELLOW", "YELLOW GREEN"] + "VIOLET", "VIOLET RED", "WHEAT", "WHITE", "YELLOW", "YELLOW GREEN"] Canvas = self.Canvas # Some Polygons in the background: @@ -161,17 +161,17 @@ class DrawFrame(wx.Frame): FillColor = colors[cf], FillStyle = 'Solid', InForeground = False) - + ## Pointset print("Adding Points to Foreground" ) for i in range(1): points = RandomArray.uniform(-100,100,(1000,2)) D = 2 self.LEs = self.Canvas.AddPointSet(points, Color = "Black", Diameter = D, InForeground = True) - + self.Canvas.AddRectangle((-200,-200), (400,400)) Canvas.ZoomToBB() - + def RunMovie(self,event = None): import numpy.random as RandomArray start = clock() @@ -184,80 +184,80 @@ class DrawFrame(wx.Frame): self.Canvas.Draw() wx.GetApp().Yield(True) print("running the movie took %f seconds"%(clock() - start)) - + class DemoApp(wx.App): """ How the demo works: - + Under the Draw menu, there are three options: - + *Draw Test: will put up a picture of a bunch of randomly generated objects, of each kind supported. - + *Draw Map: will draw a map of the world. Be patient, it is a big map, - with a lot of data, and will take a while to load and draw (about 10 sec + with a lot of data, and will take a while to load and draw (about 10 sec on my 450Mhz PIII). Redraws take about 2 sec. This demonstrates how the performance is not very good for large drawings. - + *Clear: Clears the Canvas. - + Once you have a picture drawn, you can zoom in and out and move about the picture. There is a tool bar with three tools that can be - selected. - + selected. + The magnifying glass with the plus is the zoom in tool. Once selected, if you click the image, it will zoom in, centered on where you clicked. If you click and drag the mouse, you will get a rubber band box, and the image will zoom to fit that box when you release it. - + The magnifying glass with the minus is the zoom out tool. Once selected, if you click the image, it will zoom out, centered on where you clicked. (note that this takes a while when you are looking at the map, as it has a LOT of lines to be drawn. The image is double buffered, so you don't see the drawing in progress) - + The hand is the move tool. Once selected, if you click and drag on the image, it will move so that the part you clicked on ends up where you release the mouse. Nothing is changed while you are dragging. The drawing is too slow for that. - + I'd like the cursor to change as you change tools, but the stock wx.Cursors didn't include anything I liked, so I stuck with the pointer. Pleae let me know if you have any nice cursor images for me to use. - - + + Any bugs, comments, feedback, questions, and especially code are welcome: - + -Chris Barker - + ChrisHBarker@home.net http://members.home.net/barkerlohmann - + """ - + def OnInit(self): frame = DrawFrame(None, -1, "Simple Drawing Window",wx.DefaultPosition, (700,700) ) self.SetTopWindow(frame) return True - + def Read_MapGen(filename,stats = False): """ This function reads a MapGen Format file, and returns a list of NumPy arrays with the line segments in them. - + Each NumPy array in the list is an NX2 array of Python Floats. - + The demo should have come with a file, "world.dat" that is the shorelines of the whole worls, in MapGen format. - + """ from numpy import array file = open(filename,'rt') data = file.readlines() - data = [s.strip() for s in data] + data = [s.strip() for s in data] Shorelines = [] segment = [] @@ -268,7 +268,7 @@ def Read_MapGen(filename,stats = False): else: segment.append(map(float,string.split(line))) if segment: Shorelines.append(array(segment)) - + if stats: NumSegments = len(Shorelines) NumPoints = False @@ -277,20 +277,20 @@ def Read_MapGen(filename,stats = False): AvgPoints = NumPoints / NumSegments print("Number of Segments: ", NumSegments) print("Average Number of Points per segment: ",AvgPoints) - + return Shorelines - + if __name__ == "__main__": app = DemoApp(0) app.MainLoop() - - - - - - - - - - + + + + + + + + + + diff --git a/samples/floatcanvas/BB_HitTest.py b/samples/floatcanvas/BB_HitTest.py index 0d2f7816..ac99bed1 100644 --- a/samples/floatcanvas/BB_HitTest.py +++ b/samples/floatcanvas/BB_HitTest.py @@ -29,8 +29,8 @@ def BB_HitTest(self, event, HitEvent): xy = self.PixelToWorld( xy_p ) #Convert to the correct coords for key2 in self.HitDict[HitEvent].keys(): #Get Mouse Event Position - bb = self.HitDict[HitEvent][key2].BoundingBox - if bb.PointInside(xy): + bb = self.HitDict[HitEvent][key2].BoundingBox + if bb.PointInside(xy): Object = self.HitDict[HitEvent][key2] objects.append(Object) try: @@ -44,7 +44,7 @@ def BB_HitTest(self, event, HitEvent): Object = self.HitDict[HitEvent][key2] if len(objects) > 0: #If no objects then do nothing #Get the highest index object - highest_object = objects[object_index_list.index(max(object_index_list))] + highest_object = objects[object_index_list.index(max(object_index_list))] highest_object.HitCoords = xy highest_object.HitCoordsPixel = xy_p highest_object.CallBackFuncs[HitEvent](highest_object) @@ -74,10 +74,10 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) Point = (45,40) Text = Canvas.AddScaledText("A String", @@ -118,10 +118,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/BNAEditor.py b/samples/floatcanvas/BNAEditor.py index 67e95eda..f1826136 100644 --- a/samples/floatcanvas/BNAEditor.py +++ b/samples/floatcanvas/BNAEditor.py @@ -40,7 +40,7 @@ class BNAData: self.Types = None if Filename is not None: self.Load(Filename) - + def __getitem__(self,index): return (self.PointsData[index], self.Names[index]) @@ -121,7 +121,7 @@ class DrawFrame(wx.Frame): self.SetMenuBar(MenuBar) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas self.Canvas = NavCanvas.NavCanvas(self,-1,(500,500), Debug = 0, @@ -130,8 +130,8 @@ class DrawFrame(wx.Frame): wx.EVT_CLOSE(self, self.OnCloseWindow) - FloatCanvas.EVT_MOTION(self.Canvas, self.OnMove ) - FloatCanvas.EVT_LEFT_UP(self.Canvas, self.OnLeftUp ) + FloatCanvas.EVT_MOTION(self.Canvas, self.OnMove ) + FloatCanvas.EVT_LEFT_UP(self.Canvas, self.OnLeftUp ) FloatCanvas.EVT_LEFT_DOWN(self.Canvas, self.OnLeftDown) try: @@ -153,7 +153,7 @@ class DrawFrame(wx.Frame): if self.SelectedPoly: self.DeSelectPoly() self.Canvas.Draw() - + def OnAbout(self, event): dlg = wx.MessageDialog(self, "This is a small program to demonstrate\n" "the use of the FloatCanvas\n", @@ -244,7 +244,7 @@ class DrawFrame(wx.Frame): Canvas.RemoveObject(self.SelectedPoly) Canvas.RemoveObject(self.SelectedPoints) self.ResetSelections() - + def SelectPoly(self, Object): Canvas = self.Canvas if Object is self.SelectedPolyOrig: @@ -306,7 +306,7 @@ class BNAEditor(wx.App): """ Once you have a picture drawn, you can zoom in and out and move about the picture. There is a tool bar with three tools that can be - selected. + selected. """ def __init__(self, *args, **kwargs): @@ -329,10 +329,10 @@ class BNAEditor(wx.App): app = BNAEditor(False)# put in True if you want output to go to it's own window. app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/BarPlot.py b/samples/floatcanvas/BarPlot.py index 12af53ae..2c96448a 100644 --- a/samples/floatcanvas/BarPlot.py +++ b/samples/floatcanvas/BarPlot.py @@ -20,12 +20,12 @@ MaxValue = 2000 def YScaleFun(center): """ Function that returns a scaling vector to scale y data to same range as x data - + This is used by FloatCanvas as a "projection function", so that you can have a different scale for X and Y. With the default projection, X and Y are the same scale. """ - + # center gets ignored in this case return N.array((1, float(NumChannels)/MaxValue), N.float) @@ -34,7 +34,7 @@ def ScaleWorldToPixel(self, Lengths): This is a new version of a function that will get passed to the drawing functions of the objects, to Change a length from world to pixel coordinates. - + This version uses the "ceil" function, so that fractional pixel get rounded up, rather than down. @@ -63,14 +63,14 @@ class DrawFrame(wx.Frame): BackgroundColor = "DARK SLATE BLUE", ProjectionFun = YScaleFun, ) - + self.Canvas = Canvas = NC.Canvas #self.Canvas.ScaleWorldToPixel = ScaleWorldToPixel - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) self.Values = random.randint(0, MaxValue, (NumChannels,)) - + self.Bars = [] self.BarWidth = 0.75 # add an X axis @@ -88,7 +88,7 @@ class DrawFrame(wx.Frame): FillStyle = "Solid", ) self.Bars.append(bar) - + # Add a couple a button the Toolbar tb = NC.ToolBar @@ -106,7 +106,7 @@ class DrawFrame(wx.Frame): self.Show() Canvas.ZoomToBB() Canvas.Draw(True) - + def OnMove(self, event): """ @@ -118,7 +118,7 @@ class DrawFrame(wx.Frame): channel = "%i,"%(channel+1) else: channel = "" - + if value >=0: value = "%3g"%value else: @@ -128,16 +128,16 @@ class DrawFrame(wx.Frame): def ResetData(self, event): self.Values = random.randint(0, MaxValue, (NumChannels,)) for i, bar in enumerate(self.Bars): - bar.SetShape(bar.XY, (self.BarWidth, self.Values[i])) + bar.SetShape(bar.XY, (self.BarWidth, self.Values[i])) self.Canvas.Draw(Force=True) app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/BouncingBall.py b/samples/floatcanvas/BouncingBall.py index 933189aa..16d7a9ee 100644 --- a/samples/floatcanvas/BouncingBall.py +++ b/samples/floatcanvas/BouncingBall.py @@ -32,7 +32,7 @@ FC = FloatCanvas class MovingObjectMixin: # Borrowed from MovingElements.py """ Methods required for a Moving object - + """ def GetOutlinePoints(self): @@ -57,22 +57,22 @@ class Ball(MovingObjectMixin, FloatCanvas.Circle): class DrawFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) - + ## Set up the MenuBar - + MenuBar = wx.MenuBar() - + file_menu = wx.Menu() item = file_menu.Append(wx.ID_EXIT, "","Terminate the program") self.Bind(wx.EVT_MENU, self.OnQuit, item) MenuBar.Append(file_menu, "&File") - - + + self.SetMenuBar(MenuBar) - + self.CreateStatusBar() self.SetStatusText("") - + self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) # Add the buttons @@ -81,7 +81,7 @@ class DrawFrame(wx.Frame): StartButton = wx.Button(self, label="Start") StartButton.Bind(wx.EVT_BUTTON, self.OnStart) - + StopButton = wx.Button(self, label="Stop") StopButton.Bind(wx.EVT_BUTTON, self.OnStop) @@ -93,7 +93,7 @@ class DrawFrame(wx.Frame): NC = NavCanvas.NavCanvas(self, -1, (500,500), Debug = False, BackgroundColor = "BLUE") - + self.Canvas = NC.Canvas self.Initialize(None) @@ -107,30 +107,30 @@ class DrawFrame(wx.Frame): self.Bind(wx.EVT_TIMER, self.MoveBall, self.timer) self.Show(True) - + def OnQuit(self,event): self.timer.Stop() self.Close(True) - + def OnCloseWindow(self, event): self.Destroy() - + def Initialize(self, event=None): - Canvas = self.Canvas - + Canvas = self.Canvas + #Add the floor Canvas.AddLine(( (0, 0), (100, 0) ), LineWidth=4, LineColor="Black") # add the wall: Canvas.AddRectangle( (0,0), (10,50), FillColor='green') # add the ball: - self.Ball = Ball( (5, 52), (2, 0), InForeground=True ) + self.Ball = Ball( (5, 52), (2, 0), InForeground=True ) Canvas.AddObject( self.Ball ) # to capture the mouse to move the ball self.Ball.Bind(FC.EVT_FC_LEFT_DOWN, self.BallHit) - Canvas.Bind(FC.EVT_MOTION, self.OnMove ) - Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) - + Canvas.Bind(FC.EVT_MOTION, self.OnMove ) + Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) + wx.CallAfter(Canvas.ZoomToBB) def BallHit(self, object): @@ -150,12 +150,12 @@ class DrawFrame(wx.Frame): def OnLeftUp(self, event): self.Ball.Moving = False - + def OnReset(self, event=None): self.Ball.SetPoint( (5, 52) ) self.Ball.Velocity = np.array((1.5, 0.0)) self.Canvas.Draw(True) - + def OnStart(self, event=None): self.timer.Start(20) @@ -171,7 +171,7 @@ class DrawFrame(wx.Frame): A = np.pi*(ball.Radius/100)**2 # radius in cm Cd = 0.47 rho = 1.3 - + if not ball.Moving: # don't do this if the user is moving it vel = ball.Velocity pos = ball.XY @@ -179,9 +179,9 @@ class DrawFrame(wx.Frame): # apply drag vel -= np.sign(vel) * ((0.5 * Cd * rho * A * vel**2) / m * dt) # apply gravity - vel[1] -= g * dt + vel[1] -= g * dt # move the ball - pos += dt * vel + pos += dt * vel # check if it's on the wall if pos[1] <= 52. and pos[0] <= 10.: #reverse velocity @@ -193,10 +193,10 @@ class DrawFrame(wx.Frame): vel[1] *= -1.0 pos[1] = ball.Radius - self.Ball.SetPoint( pos ) + self.Ball.SetPoint( pos ) self.Canvas.Draw(True) wx.GetApp().Yield(onlyIfNeeded=True) - + class DemoApp(wx.App): def OnInit(self): frame = DrawFrame(None, -1, "Simple Drawing Window",wx.DefaultPosition, (700,700) ) @@ -204,10 +204,10 @@ class DemoApp(wx.App): self.SetTopWindow(frame) return True - + if __name__ == "__main__": app = DemoApp(0) app.MainLoop() - - + + diff --git a/samples/floatcanvas/Chart.py b/samples/floatcanvas/Chart.py index 635833f5..da2d7655 100644 --- a/samples/floatcanvas/Chart.py +++ b/samples/floatcanvas/Chart.py @@ -36,10 +36,10 @@ class DrawFrame(wx.Frame): # Debug = 0, # BackgroundColor = "White", # ) - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) self.Canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.OnLeft) @@ -49,7 +49,7 @@ class DrawFrame(wx.Frame): self.SpaceWidth = 1 self.Labels = ["SW Tasks", "Set RX Rf"] + ["A Row Label"]*16 self.NumRows = len(self.Labels) - + self.BuildChartBackground() self.AddLabels() self.Show() @@ -69,20 +69,20 @@ class DrawFrame(wx.Frame): LineColor = None, FillColor = "LightGrey", FillStyle = "Solid",) - + # put a dashed line in every 1 unit: for i in range(16): Canvas.AddLine(((i*self.SpaceWidth,bottom),(i*self.SpaceWidth,top)), LineColor = "Black", LineStyle = "Dot", - # or "Dot", "ShortDash", "LongDash","ShortDash", "DotDash" + # or "Dot", "ShortDash", "LongDash","ShortDash", "DotDash" LineWidth = 1,) def AddLabels(self): Canvas = self.Canvas for i, label in enumerate(self.Labels): Canvas.AddScaledText(label, - ( -self.TextWidth, -(i+0.2)*self.LineHeight ), + ( -self.TextWidth, -(i+0.2)*self.LineHeight ), Size = 0.6 * self.LineHeight, Color = "Black", BackgroundColor = None, @@ -111,10 +111,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/ClickableBoxes.py b/samples/floatcanvas/ClickableBoxes.py index 4cb16a11..9462c228 100644 --- a/samples/floatcanvas/ClickableBoxes.py +++ b/samples/floatcanvas/ClickableBoxes.py @@ -24,9 +24,9 @@ from wx.lib.floatcanvas import NavCanvas, FloatCanvas #from floatcanvas import FloatCanvas as FC -colors = [ (255, 0 , 0 ), - (0 , 255, 0 ), - (0 , 0, 255), +colors = [ (255, 0 , 0 ), + (0 , 255, 0 ), + (0 , 0, 255), (255, 255, 0 ), (255, 0, 255), (0 , 255, 255), @@ -49,11 +49,11 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "Black", ) - + self.Canvas = Canvas self.Canvas.Bind(wx.EVT_SIZE, self.OnSize) - + # build the squares: w = 10 dx = 14 @@ -104,10 +104,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/DrawBot.py b/samples/floatcanvas/DrawBot.py index f5d634cb..581aefb2 100644 --- a/samples/floatcanvas/DrawBot.py +++ b/samples/floatcanvas/DrawBot.py @@ -42,11 +42,11 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "White", ).Canvas - + self.Show(True) self.MakePic() - + return None def MakePic(self): @@ -69,4 +69,4 @@ class DrawFrame(wx.Frame): app = wx.App() DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (700,700) ) app.MainLoop() - + diff --git a/samples/floatcanvas/DrawRect.py b/samples/floatcanvas/DrawRect.py index ec3b03dc..8431f800 100644 --- a/samples/floatcanvas/DrawRect.py +++ b/samples/floatcanvas/DrawRect.py @@ -32,7 +32,7 @@ class DrawFrame(wx.Frame): def __init__(self,parent, id,title,position,size): wx.Frame.__init__(self,parent, id,title,position, size) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas NC = NavCanvas.NavCanvas(self, size= (500,500), @@ -40,10 +40,10 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ) - + self.Canvas = NC.Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) # Add some buttons to the Toolbar tb = NC.ToolBar @@ -65,7 +65,7 @@ class DrawFrame(wx.Frame): self.RBBoxMode = GUI.RubberBandBox(self.NewRect) self.Canvas.SetMode(self.RBBoxMode) - + self.Canvas.ZoomToBB() self.Show(True) @@ -102,10 +102,10 @@ class DrawFrame(wx.Frame): app = wx.App() DrawFrame(None, -1, "FloatCanvas Rectangle Drawer", wx.DefaultPosition, (700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/GridDemo.py b/samples/floatcanvas/GridDemo.py index 66d4b8df..4efdc158 100644 --- a/samples/floatcanvas/GridDemo.py +++ b/samples/floatcanvas/GridDemo.py @@ -35,8 +35,8 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - - + + Point = (45,40) Box = Canvas.AddCircle(Point, Diameter = 10, @@ -52,7 +52,7 @@ class DrawFrame(wx.Frame): Canvas.GridUnder = Grid #Canvas.GridOver = Grid - Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) self.Show() Canvas.ZoomToBB() @@ -69,10 +69,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) # true to get its own output window. F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/GroupDeleteDemo.py b/samples/floatcanvas/GroupDeleteDemo.py index a789245c..56f4aec1 100644 --- a/samples/floatcanvas/GroupDeleteDemo.py +++ b/samples/floatcanvas/GroupDeleteDemo.py @@ -37,7 +37,7 @@ class DrawFrame(wx.Frame): Canvas = NC.Canvas self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) Point = (45,40) @@ -52,7 +52,7 @@ class DrawFrame(wx.Frame): self.GroupA.AddObjects((C2,T)) Canvas.AddObject(self.GroupA) - + ## create another Groups of objects R = FloatCanvas.Rectangle((15, 15),(10, 18), FillColor="orange") @@ -63,7 +63,7 @@ class DrawFrame(wx.Frame): self.GroupB = FloatCanvas.Group((R,E,C,C2,T)) Canvas.AddObject(self.GroupB) - + self.Groups = {"A":self.GroupA, "B":self.GroupB} # Add a couple of tools to the Canvas Toolbar @@ -106,10 +106,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/GroupDemo.py b/samples/floatcanvas/GroupDemo.py index a316fbd8..b6ce3f6d 100644 --- a/samples/floatcanvas/GroupDemo.py +++ b/samples/floatcanvas/GroupDemo.py @@ -37,7 +37,7 @@ class DrawFrame(wx.Frame): Canvas = NC.Canvas self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) Point = (45,40) @@ -52,7 +52,7 @@ class DrawFrame(wx.Frame): self.GroupA.AddObjects((C2,T)) Canvas.AddObject(self.GroupA) - + ## create another Groups of objects R = FloatCanvas.Rectangle((15, 15),(10, 18), FillColor="orange") @@ -63,7 +63,7 @@ class DrawFrame(wx.Frame): self.GroupB = FloatCanvas.Group((R,E,C,C2,T)) Canvas.AddObject(self.GroupB) - + self.Groups = {"A":self.GroupA, "B":self.GroupB} # Add a couple of tools to the Canvas Toolbar @@ -96,10 +96,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/Hexagons.py b/samples/floatcanvas/Hexagons.py index 450c9ec2..cf7bb7d8 100644 --- a/samples/floatcanvas/Hexagons.py +++ b/samples/floatcanvas/Hexagons.py @@ -50,7 +50,7 @@ class DrawFrame(wx.Frame): def MakeHexagons(self): print("Building %i Hexagons"%NumHexagons) # get a list of colors for random colors - + wx.lib.colourdb.updateColourDB() self.colors = wx.lib.colourdb.getColourList() print("Max colors:", len(self.colors)) @@ -63,7 +63,7 @@ class DrawFrame(wx.Frame): (-D , 0), (-D/2, h), (D/2 , h), - )) + )) Centers = uniform(-100, 100, (NumHexagons, 2)) for center in Centers: # scale the hexagon @@ -87,10 +87,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/Map.py b/samples/floatcanvas/Map.py index 43fa6f89..817f60d1 100644 --- a/samples/floatcanvas/Map.py +++ b/samples/floatcanvas/Map.py @@ -23,7 +23,7 @@ class DrawFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas NC = NavCanvas.NavCanvas(self,-1, @@ -33,10 +33,10 @@ class DrawFrame(wx.Frame): BackgroundColor = "White", ) self.Canvas = NC.Canvas - + self.LoadMap(TestFileName) - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) self.Show() self.Canvas.ZoomToBB() @@ -73,5 +73,5 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - + + diff --git a/samples/floatcanvas/MicroDemo.py b/samples/floatcanvas/MicroDemo.py index 2cb8a4b4..3af16134 100644 --- a/samples/floatcanvas/MicroDemo.py +++ b/samples/floatcanvas/MicroDemo.py @@ -30,10 +30,10 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) Point = (45,40) Text = Canvas.AddScaledText("A String", @@ -68,10 +68,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/MiniDemo.py b/samples/floatcanvas/MiniDemo.py index 9edc4e1d..4b667cf2 100644 --- a/samples/floatcanvas/MiniDemo.py +++ b/samples/floatcanvas/MiniDemo.py @@ -69,7 +69,7 @@ class DrawFrame(wx.Frame): BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Show(True) @@ -286,25 +286,25 @@ class DrawFrame(wx.Frame): elif Dir == "down": Y -= 10 Object.SetPoint((X,Y)) self.Canvas.Draw(True) - + def UnBindAllMouseEvents(self): ## Here is how you catch FloatCanvas mouse events - self.Canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_LEFT_UP, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_LEFT_DCLICK, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_LEFT_UP, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_LEFT_DCLICK, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_MIDDLE_DOWN, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_MIDDLE_UP, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_MIDDLE_DCLICK, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_MIDDLE_DOWN, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_MIDDLE_UP, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_MIDDLE_DCLICK, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_RIGHT_DOWN, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_RIGHT_UP, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_RIGHT_DCLICK, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_RIGHT_DOWN, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_RIGHT_UP, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_RIGHT_DCLICK, self.dummyHandler) - self.Canvas.Bind(FloatCanvas.EVT_MOUSEWHEEL, self.dummyHandler) + self.Canvas.Bind(FloatCanvas.EVT_MOUSEWHEEL, self.dummyHandler) self.EventsAreBound = False - + def dummyHandler(self, evt): evt.Skip() @@ -318,7 +318,7 @@ class DemoApp(wx.App): objects, of each kind supported. *Draw Map: will draw a map of the world. Be patient, it is a big map, - with a lot of data, and will take a while to load and draw (about 10 sec + with a lot of data, and will take a while to load and draw (about 10 sec on my 450Mhz PIII). Redraws take about 2 sec. This demonstrates how the performance is not very good for large drawings. @@ -326,7 +326,7 @@ class DemoApp(wx.App): Once you have a picture drawn, you can zoom in and out and move about the picture. There is a tool bar with three tools that can be - selected. + selected. The magnifying glass with the plus is the zoom in tool. Once selected, if you click the image, it will zoom in, centered on where you @@ -369,10 +369,10 @@ class DemoApp(wx.App): app = DemoApp(False) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/MouseTest.py b/samples/floatcanvas/MouseTest.py index 56e74bbe..602cd162 100644 --- a/samples/floatcanvas/MouseTest.py +++ b/samples/floatcanvas/MouseTest.py @@ -19,25 +19,25 @@ except ImportError: from wx.lib.floatcanvas import NavCanvas, FloatCanvas, GUIMode class TestFrame(wx.Frame): - + def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) self.canvas =FloatCanvas.FloatCanvas(self, BackgroundColor = "DARK SLATE BLUE") - + # Layout MainSizer = wx.BoxSizer(wx.VERTICAL) MainSizer.Add(self.canvas, 4, wx.EXPAND) self.SetSizer(MainSizer) - + self.canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.OnLeftDown) self.canvas.AddRectangle((10,10), (100, 20), FillColor="red") - + self.canvas.SetMode(GUIMode.GUIMouse(self.canvas)) - + wx.CallAfter(self.canvas.ZoomToBB) - + def OnLeftDown(self, event): print('Left Button clicked at: %s' % event.Coords) diff --git a/samples/floatcanvas/MovingElements.py b/samples/floatcanvas/MovingElements.py index 74b67903..40db2858 100644 --- a/samples/floatcanvas/MovingElements.py +++ b/samples/floatcanvas/MovingElements.py @@ -33,7 +33,7 @@ import numpy as N class MovingObjectMixin: """ Methods required for a Moving object - + """ def GetOutlinePoints(self): @@ -46,20 +46,20 @@ class MovingObjectMixin: ) return OutlinePoints - + class ConnectorObjectMixin: """ Mixin class for DrawObjects that can be connected with lines - + NOte that this versionony works for Objects that have an "XY" attribute: that is, one that is derived from XHObjectMixin. - + """ - + def GetConnectPoint(self): return self.XY - + class MovingBitmap(FC.ScaledBitmap, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -67,7 +67,7 @@ class MovingBitmap(FC.ScaledBitmap, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class MovingCircle(FC.Circle, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -75,7 +75,7 @@ class MovingCircle(FC.Circle, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class MovingArc(FC.Arc, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -83,7 +83,7 @@ class MovingArc(FC.Arc, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): """ @@ -100,8 +100,8 @@ class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): InForeground = False): FC.DrawObject.__init__(self, InForeground) - self.Object1 = Object1 - self.Object2 = Object2 + self.Object1 = Object1 + self.Object2 = Object2 self.LineColor = LineColor self.LineStyle = LineStyle self.LineWidth = LineWidth @@ -127,8 +127,8 @@ class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): if HTdc and self.HitAble: HTdc.SetPen(self.HitPen) HTdc.DrawLines(Points) - - + + class TriangleShape1(FC.Polygon, MovingObjectMixin): def __init__(self, XY, L): @@ -153,9 +153,9 @@ class TriangleShape1(FC.Polygon, MovingObjectMixin): ## Override the default OutlinePoints def GetOutlinePoints(self): return self.Points - + def CompPoints(self, XY, L): - c = L/ N.sqrt(3) + c = L/ N.sqrt(3) Points = N.array(((0, c), ( L/2.0, -c/2.0), @@ -176,24 +176,24 @@ class DrawFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas Canvas = NavCanvas.NavCanvas(self,-1,(500,500), ProjectionFun = None, Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - Canvas.Bind(FC.EVT_MOTION, self.OnMove ) - Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) + Canvas.Bind(FC.EVT_MOTION, self.OnMove ) + Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) Points = N.array(((0,0), (1,0), (0.5, 1)), N.float) - + data = (( (0,0), 1), ( (3,3), 2), ( (-2,3), 2.5 ), @@ -218,16 +218,16 @@ class DrawFrame(wx.Frame): ) Line = ConnectorLine(Bitmaps[0], Bitmaps[1], LineWidth=3, LineColor="Red") Canvas.AddObject(Line) - - - + + + ## then add them to the Canvas, so they are on top of the line for bmp in Bitmaps: Canvas.AddObject(bmp) bmp.Bind(FC.EVT_FC_LEFT_DOWN, self.ObjectHit) A = MovingArc((-5, 0),(-2, 2),(-5, 2), LineColor="Red", LineWidth=2) - self.Canvas.AddObject(A) + self.Canvas.AddObject(A) A.Bind(FC.EVT_FC_LEFT_DOWN, self.ObjectHit) self.Show(True) @@ -272,7 +272,7 @@ class DrawFrame(wx.Frame): if self.MoveObject is not None: dxy = event.GetPosition() - self.StartPoint dxy = self.Canvas.ScalePixelToWorld(dxy) - self.MovingObject.Move(dxy) + self.MovingObject.Move(dxy) self.MoveTri = None self.Canvas.Draw(True) diff --git a/samples/floatcanvas/MovingPlot.py b/samples/floatcanvas/MovingPlot.py index 7bf55459..5ee561b4 100644 --- a/samples/floatcanvas/MovingPlot.py +++ b/samples/floatcanvas/MovingPlot.py @@ -83,7 +83,7 @@ class DrawFrame(wx.Frame): self.timer = None self.DrawAxis() - + return None diff --git a/samples/floatcanvas/MovingTriangle.py b/samples/floatcanvas/MovingTriangle.py index 94378749..f7caab80 100644 --- a/samples/floatcanvas/MovingTriangle.py +++ b/samples/floatcanvas/MovingTriangle.py @@ -57,9 +57,9 @@ class TriangleShape1(FC.Polygon, ShapeMixin): FillColor = "Red", FillStyle = "Solid") ShapeMixin.__init__(self) - + def CompPoints(self, XY, L): - c = L/ N.sqrt(3) + c = L/ N.sqrt(3) Points = N.array(((0, c), ( L/2.0, -c/2.0), @@ -80,18 +80,18 @@ class DrawFrame(wx.Frame): def __init__(self,parent, id,title,position,size): wx.Frame.__init__(self,parent, id,title,position, size) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas Canvas = NavCanvas.NavCanvas(self,-1,(500,500), ProjectionFun = None, Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - Canvas.Bind(FC.EVT_MOTION, self.OnMove ) - Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) + Canvas.Bind(FC.EVT_MOTION, self.OnMove ) + Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) Canvas.AddRectangle((-5,-5), (10,10), @@ -105,7 +105,7 @@ class DrawFrame(wx.Frame): (1,0), (0.5, 1)), N.float_) - + data = (( (0,0), 1), ( (3,3), 2), ( (-2,3), 2.5 ), @@ -174,10 +174,10 @@ if __name__ == "__main__": x = DrawFrame(None, -1, "FloatCanvas TextBox Test App", wx.DefaultPosition, (700,700) ) x.Show() app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/NoToolbar.py b/samples/floatcanvas/NoToolbar.py index 3dffb93e..abf100ff 100644 --- a/samples/floatcanvas/NoToolbar.py +++ b/samples/floatcanvas/NoToolbar.py @@ -33,10 +33,10 @@ class DrawFrame(wx.Frame): size = (500,500), BackgroundColor = "DARK SLATE BLUE", ) - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) Point = (45,40) Box = Canvas.AddScaledTextBox("A Two Line\nString", @@ -78,10 +78,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/OverlayDemo.py b/samples/floatcanvas/OverlayDemo.py index 3099c428..f57a5dca 100644 --- a/samples/floatcanvas/OverlayDemo.py +++ b/samples/floatcanvas/OverlayDemo.py @@ -5,10 +5,10 @@ A simple demo to show how to "Overlays": i.e. drawing something on top of eveything else on the Canvas, relative to window coords, rather than screen coords. -This method uses the "GridOver" object in the FloatCanvas +This method uses the "GridOver" object in the FloatCanvas - it was orginally dsigend for girds, graticule,s etc. that are always drawn regardless of zoom, pan, etc, but it works - for overlays too. + for overlays too. """ @@ -28,7 +28,7 @@ class TextOverlay(FloatCanvas.Text): An example of an Overlay object: all it needs is a new _Draw method. - + NOTE: you may want to get fancier with this, deriving from ScaledTextBox @@ -94,8 +94,8 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - - + + Point = (45,40) Box = Canvas.AddCircle(Point, Diameter = 10, @@ -110,7 +110,7 @@ class DrawFrame(wx.Frame): BackgroundColor = 'Pink', ) - Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) self.Show() Canvas.ZoomToBB() @@ -127,10 +127,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) # true to get its own output window. F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/PieChart.py b/samples/floatcanvas/PieChart.py index b7d89213..82379ac2 100644 --- a/samples/floatcanvas/PieChart.py +++ b/samples/floatcanvas/PieChart.py @@ -34,29 +34,29 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas Values = (10,10,10) Colors = ('Red', 'Blue', 'Green') Pie1 = PieChart(N.array((0, 0)), 10, Values, Colors, Scaled=False) Canvas.AddObject(Pie1) - + Values = (10, 5, 5) Pie2 = PieChart(N.array((40, 0)), 10, Values, Colors) Canvas.AddObject(Pie2) - + # test default colors Values = (10, 15, 12, 24, 6, 10, 13, 11, 9, 13, 15, 12) Pie3 = PieChart(N.array((20, 20)), 10, Values, LineColor="Black") Canvas.AddObject(Pie3) - + # missng slice! Values = (10, 15, 12, 24) Colors = ('Red', 'Blue', 'Green', None) Pie4 = PieChart(N.array((0, -15)), 10, Values, Colors, LineColor="Black") Canvas.AddObject(Pie4) - + # Test the styles Values = (10, 12, 14) @@ -68,7 +68,7 @@ class DrawFrame(wx.Frame): Pie1.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.Pie1Hit) Pie2.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.Pie2Hit) - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) self.Show() Canvas.ZoomToBB() diff --git a/samples/floatcanvas/PixelBitmap.py b/samples/floatcanvas/PixelBitmap.py index 6483bc56..e6302c7b 100644 --- a/samples/floatcanvas/PixelBitmap.py +++ b/samples/floatcanvas/PixelBitmap.py @@ -20,27 +20,27 @@ FC = FloatCanvas class PixelBitmap: """ An unscaled bitmap that can be put on top of the canvas using: - + Canvas.GridOver = MyPixelBitmap - + It will always be drawn on top of everything else, and be positioned according to pixel coordinates on teh screen, regardless of zoom and pan position. - + """ def __init__(self, Bitmap, XY, Position = 'tl'): """ PixelBitmap (Bitmap, XY, Position='tl') Bitmap is a wx.Bitmap or wx.Image - + XY is the (x,y) location to place the bitmap, in pixel coordinates - + Position indicates from where in the window the position is relative to: 'tl' indicated the position from the top left the the window (the detault) 'br' the bottom right 'cr the center right, etc. - + """ if type(Bitmap) == wx.Bitmap: self.Bitmap = Bitmap @@ -51,7 +51,7 @@ class PixelBitmap: self.XY = np.asarray(XY, dtype=np.int).reshape((2,)) self.Position = Position - + (self.Width, self.Height) = self.Bitmap.GetWidth(), self.Bitmap.GetHeight() self.ShiftFun = FC.TextObjectMixin.ShiftFunDict[Position] @@ -62,7 +62,7 @@ class PixelBitmap: XY = (XY[0], h - XY[1] - self.Height) elif self.Position[0] == 'c': XY = (XY[0], XY[1] + (h - self.Height)/2) - + if self.Position[1] == 'r': XY = (w - XY[0] - self.Width, XY[1]) elif self.Position[1] == 'c': @@ -77,7 +77,7 @@ class GridGroup: def _Draw(self, *args): for grid in self.Grids: grid._Draw(*args) - + class DrawFrame(wx.Frame): """ @@ -97,8 +97,8 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - - + + Point = (45,40) Box = Canvas.AddCircle(Point, Diameter = 10, @@ -118,7 +118,7 @@ class DrawFrame(wx.Frame): ]) Canvas.GridOver = grids - FloatCanvas.EVT_MOTION(Canvas, self.OnMove ) + FloatCanvas.EVT_MOTION(Canvas, self.OnMove ) self.Show() Canvas.ZoomToBB() @@ -135,10 +135,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) # true to get its own output window. F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/PointsHitDemo.py b/samples/floatcanvas/PointsHitDemo.py index ac921bf8..605db0a6 100644 --- a/samples/floatcanvas/PointsHitDemo.py +++ b/samples/floatcanvas/PointsHitDemo.py @@ -30,16 +30,16 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) Pts = ((45,40), (20, 15), (10, 40), (30,30)) - + Points = Canvas.AddPointSet(Pts, Diameter=3, Color="Red") Points.HitLineWidth = 10 - + Points.Bind(FloatCanvas.EVT_FC_ENTER_OBJECT, self.OnOverPoints) Points.Bind(FloatCanvas.EVT_FC_LEAVE_OBJECT, self.OnLeavePoints) Points.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.OnLeftDown) @@ -66,10 +66,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/PolyEditor.py b/samples/floatcanvas/PolyEditor.py index 9c0e7cb3..72588d2f 100644 --- a/samples/floatcanvas/PolyEditor.py +++ b/samples/floatcanvas/PolyEditor.py @@ -50,7 +50,7 @@ class DrawFrame(wx.Frame): self.SetMenuBar(MenuBar) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas self.Canvas = NavCanvas.NavCanvas(self,-1,(500,500), Debug = 0, @@ -59,9 +59,9 @@ class DrawFrame(wx.Frame): self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) - self.Canvas.Bind(FloatCanvas.EVT_LEFT_UP, self.OnLeftUp) - self.Canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.OnLeftClick) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FloatCanvas.EVT_LEFT_UP, self.OnLeftUp) + self.Canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.OnLeftClick) self.ResetSelections() @@ -226,12 +226,12 @@ class PolyEditor(wx.App): PolyEditor(0).MainLoop()# put in True if you want output to go to it's own window. - - - - - - + + + + + + diff --git a/samples/floatcanvas/ProcessDiagram.py b/samples/floatcanvas/ProcessDiagram.py index 94f818bd..cf860905 100644 --- a/samples/floatcanvas/ProcessDiagram.py +++ b/samples/floatcanvas/ProcessDiagram.py @@ -33,16 +33,16 @@ import numpy as N class MovingObjectMixin: """ Methods required for a Moving object - + """ def GetOutlinePoints(self): """ - Returns a set of points with which to draw the outline when moving the + Returns a set of points with which to draw the outline when moving the object. - + Points are a NX2 array of (x,y) points in World coordinates. - - + + """ BB = self.BoundingBox OutlinePoints = N.array( ( (BB[0,0], BB[0,1]), @@ -57,15 +57,15 @@ class MovingObjectMixin: class ConnectorObjectMixin: """ Mixin class for DrawObjects that can be connected with lines - + Note that this version only works for Objects that have an "XY" attribute: that is, one that is derived from XHObjectMixin. - + """ - + def GetConnectPoint(self): return self.XY - + class MovingBitmap(FC.ScaledBitmap, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -73,7 +73,7 @@ class MovingBitmap(FC.ScaledBitmap, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class MovingCircle(FC.Circle, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -84,10 +84,10 @@ class MovingCircle(FC.Circle, MovingObjectMixin, ConnectorObjectMixin): class MovingGroup(FC.Group, MovingObjectMixin, ConnectorObjectMixin): - + def GetConnectPoint(self): return self.BoundingBox.Center - + class NodeObject(FC.Group, MovingObjectMixin, ConnectorObjectMixin): """ A version of the moving group for nodes -- an ellipse with text on it. @@ -117,7 +117,7 @@ class NodeObject(FC.Group, MovingObjectMixin, ConnectorObjectMixin): def GetConnectPoint(self): return self.BoundingBox.Center - + class MovingText(FC.ScaledText, MovingObjectMixin, ConnectorObjectMixin): """ @@ -134,7 +134,7 @@ class MovingTextBox(FC.ScaledTextBox, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): """ @@ -152,8 +152,8 @@ class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): InForeground = False): FC.DrawObject.__init__(self, InForeground) - self.Object1 = Object1 - self.Object2 = Object2 + self.Object1 = Object1 + self.Object2 = Object2 self.LineColor = LineColor self.LineStyle = LineStyle self.LineWidth = LineWidth @@ -179,8 +179,8 @@ class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): if HTdc and self.HitAble: HTdc.SetPen(self.HitPen) HTdc.DrawLines(Points) - - + + class TriangleShape1(FC.Polygon, MovingObjectMixin): def __init__(self, XY, L): @@ -205,9 +205,9 @@ class TriangleShape1(FC.Polygon, MovingObjectMixin): ## Override the default OutlinePoints def GetOutlinePoints(self): return self.Points - + def CompPoints(self, XY, L): - c = L/ N.sqrt(3) + c = L/ N.sqrt(3) Points = N.array(((0, c), ( L/2.0, -c/2.0), @@ -232,7 +232,7 @@ class TreeNode: def __str__(self): return "TreeNode: %s"%self.Name __repr__ = __str__ - + ## Build Tree: leaves = [TreeNode(name) for name in ["Assistant VP 1","Assistant VP 2","Assistant VP 3"] ] @@ -246,12 +246,12 @@ elements = TreeNode("Root", [CEO, Father]) def LayoutTree(root, x, y, level): NumNodes = len(root.Children) root.Point = (x,y) - x += root.dx + x += root.dx y += (root.dy * level * (NumNodes-1) / 2.0) for node in root.Children: LayoutTree(node, x, y, level-1) y -= root.dy * level - + def TraverseTree(root, func): func(root) for child in (root.Children): @@ -267,25 +267,25 @@ class DrawFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas Canvas = NavCanvas.NavCanvas(self,-1,(500,500), ProjectionFun = None, Debug = 0, BackgroundColor = "White", ).Canvas - + self.Canvas = Canvas - Canvas.Bind(FC.EVT_MOTION, self.OnMove ) - Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) + Canvas.Bind(FC.EVT_MOTION, self.OnMove ) + Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) self.elements = elements LayoutTree(self.elements, 0, 0, 3) self.AddTree(self.elements) - - + + self.Show(True) self.Canvas.ZoomToBB() @@ -319,7 +319,7 @@ class DrawFrame(wx.Frame): node.DrawObject = object Nodes.append(object) def AddConnectors(node): - for child in node.Children: + for child in node.Children: Connector = ConnectorLine(node.DrawObject, child.DrawObject, LineWidth=3, LineColor="Red") Connectors.append(Connector) ## create the Objects @@ -327,14 +327,14 @@ class DrawFrame(wx.Frame): ## create the Connectors TraverseTree(root, AddConnectors) ## Add the conenctos to the Canvas first, so they are undernieth the nodes - self.Canvas.AddObjects(Connectors) + self.Canvas.AddObjects(Connectors) ## now add the nodes - self.Canvas.AddObjects(Nodes) + self.Canvas.AddObjects(Nodes) # Now bind the Nodes -- DrawObjects must be Added to a Canvas before they can be bound. for node in Nodes: #pass node.Bind(FC.EVT_FC_LEFT_DOWN, self.ObjectHit) - + def ObjectHit(self, object): @@ -371,7 +371,7 @@ class DrawFrame(wx.Frame): if self.MoveObject is not None: dxy = event.GetPosition() - self.StartPoint dxy = self.Canvas.ScalePixelToWorld(dxy) - self.MovingObject.Move(dxy) + self.MovingObject.Move(dxy) self.Canvas.Draw(True) app = wx.App(0) diff --git a/samples/floatcanvas/ScaleDemo.py b/samples/floatcanvas/ScaleDemo.py index 5097faf0..5e70c7cf 100644 --- a/samples/floatcanvas/ScaleDemo.py +++ b/samples/floatcanvas/ScaleDemo.py @@ -51,9 +51,9 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - + Point = N.array((50e-6, 0)) Size = N.array(( (2000e-6 - 5e-6), 50000)) Box = Canvas.AddRectangle(Point, @@ -64,14 +64,14 @@ class DrawFrame(wx.Frame): Canvas.AddText("%s"%(Point,), Point, Position="cr") Canvas.AddPoint(Point, Diameter=3, Color = "red") - + Point = Point + Size Canvas.AddText("%s"%(Point,), Point, Position="cl") Canvas.AddPoint(Point, Diameter=3, Color = "red") - - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) - + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + + self.Show() Canvas.ZoomToBB() @@ -85,10 +85,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/ScaledBitmap2Demo.py b/samples/floatcanvas/ScaledBitmap2Demo.py index a50a3b03..40d29c17 100644 --- a/samples/floatcanvas/ScaledBitmap2Demo.py +++ b/samples/floatcanvas/ScaledBitmap2Demo.py @@ -8,7 +8,7 @@ but uses memory more efficiently for large images and high zoom levels.) """ ## Set a path to an Image file here: -ImageFile = "white_tank.jpg" +ImageFile = "white_tank.jpg" import wx @@ -41,9 +41,9 @@ class DrawFrame(wx.Frame): Canvas.MaxScale=20 # sets the maximum zoom level self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + - # create the image: image = wx.Image(ImageFile) self.width, self.height = image.GetSize() @@ -53,10 +53,10 @@ class DrawFrame(wx.Frame): Position = 'tl', ) Canvas.AddObject(img) - + self.Show() Canvas.ZoomToBB() - + def OnMove(self, event): """ Updates the status bar with the world coordinates @@ -68,10 +68,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/SplitterWindow.py b/samples/floatcanvas/SplitterWindow.py index e4cab6c3..fff04329 100644 --- a/samples/floatcanvas/SplitterWindow.py +++ b/samples/floatcanvas/SplitterWindow.py @@ -48,7 +48,7 @@ class MyFrame(wx.Frame): Position = 'br', Alignment = "left", InForeground = False) - + wx.CallAfter(Canvas.ZoomToBB) # set up the Splitter @@ -56,7 +56,7 @@ class MyFrame(wx.Frame): splitter.SplitVertically(panel1, panel2, sash_Position) min_Pan_size = 40 splitter.SetMinimumPaneSize(min_Pan_size) - + self.Fit() diff --git a/samples/floatcanvas/SubClassNavCanvas.py b/samples/floatcanvas/SubClassNavCanvas.py index 2b8b0d98..56e35bb4 100644 --- a/samples/floatcanvas/SubClassNavCanvas.py +++ b/samples/floatcanvas/SubClassNavCanvas.py @@ -25,9 +25,9 @@ class DrawFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) self.CreateStatusBar() - + panel = NavPanel(self) - + self.Show() class NavPanel(NavCanvas.NavCanvas): @@ -40,10 +40,10 @@ class NavPanel(NavCanvas.NavCanvas): ProjectionFun = None, BackgroundColor = "DARK SLATE BLUE", ) - + self.parent_frame = parent - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) - + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove) + # create the image: self.Canvas.AddPolygon( ( (2,3), (5,6), @@ -51,9 +51,9 @@ class NavPanel(NavCanvas.NavCanvas): FillColor = "red", ) - + wx.CallAfter(self.Canvas.ZoomToBB) # so it will get called after everything is created and sized - + def OnMove(self, event): """ Updates the status bar with the world coordinates diff --git a/samples/floatcanvas/TestSpline.py b/samples/floatcanvas/TestSpline.py index ce514274..02c025a0 100644 --- a/samples/floatcanvas/TestSpline.py +++ b/samples/floatcanvas/TestSpline.py @@ -23,7 +23,7 @@ from wx.lib.floatcanvas import NavCanvas class Spline(FC.Line): def __init__(self, *args, **kwargs): FC.Line.__init__(self, *args, **kwargs) - + def _Draw(self, dc , WorldToPixel, ScaleWorldToPixel, HTdc=None): Points = WorldToPixel(self.Points) dc.SetPen(self.Pen) @@ -56,21 +56,21 @@ class DrawFrame(wx.Frame): MenuBar.Append(help_menu, "&Help") self.SetMenuBar(MenuBar) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas self.Canvas = NavCanvas.NavCanvas(self, BackgroundColor = "White", ).Canvas - self.Canvas.Bind(FC.EVT_MOTION, self.OnMove) + self.Canvas.Bind(FC.EVT_MOTION, self.OnMove) self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) self.DrawTest() self.Show() self.Canvas.ZoomToBB() - + def OnAbout(self, event): print("OnAbout called") @@ -94,7 +94,7 @@ class DrawFrame(wx.Frame): def DrawTest(self,event=None): wx.GetApp().Yield() - + Canvas = self.Canvas Points = [(0, 0), @@ -135,7 +135,7 @@ class DrawFrame(wx.Frame): MyLine = FC.Spline(Points, LineWidth = 3, LineColor = "Blue") - + Canvas.AddObject(MyLine) Canvas.AddPointSet(Points, Color = "Red", @@ -148,7 +148,7 @@ class DrawFrame(wx.Frame): (70, 185), (160,60), ] - + Canvas.AddSpline(Points, LineWidth = 5, LineColor = "Purple") @@ -163,7 +163,7 @@ class DemoApp(wx.App): self.SetTopWindow(frame) return True - + app = DemoApp(False)# put in True if you want output to go to it's own window. app.MainLoop() diff --git a/samples/floatcanvas/TextBox.py b/samples/floatcanvas/TextBox.py index c9dfd3cf..5c3b225d 100644 --- a/samples/floatcanvas/TextBox.py +++ b/samples/floatcanvas/TextBox.py @@ -16,7 +16,7 @@ from wx.lib.floatcanvas import NavCanvas, FloatCanvas #from floatcanvas import NavCanvas, FloatCanvas import numpy as N - + class DrawFrame(wx.Frame): """ @@ -28,16 +28,16 @@ class DrawFrame(wx.Frame): wx.Frame.__init__(self,parent, id,title,position, size) # Add the Canvas - self.CreateStatusBar() + self.CreateStatusBar() Canvas = NavCanvas.NavCanvas(self,-1,(500,500), ProjectionFun = None, Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) - + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + Point = (45,40) Box = Canvas.AddScaledTextBox("A Two Line\nString", Point, @@ -265,7 +265,7 @@ class DrawFrame(wx.Frame): LineSpacing = 0.8, Alignment = 'center', ) - + self.Show(True) self.Canvas.ZoomToBB() @@ -287,10 +287,10 @@ class DrawFrame(wx.Frame): app = wx.App() DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/TextBox2.py b/samples/floatcanvas/TextBox2.py index 6b0ba143..14ec15ea 100644 --- a/samples/floatcanvas/TextBox2.py +++ b/samples/floatcanvas/TextBox2.py @@ -37,7 +37,7 @@ This is another paragraph. I am trying to make it long enough to wrap a reasonab ##LongString = ( ##""" This is a not so long string ##Another line""") - + class DrawFrame(wx.Frame): """ @@ -48,23 +48,23 @@ class DrawFrame(wx.Frame): def __init__(self,parent, id,title,position,size): wx.Frame.__init__(self,parent, id,title,position, size) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas Canvas = NavCanvas.NavCanvas(self,-1,(500,500), ProjectionFun = None, Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) - self.Canvas.Bind(FloatCanvas.EVT_LEFT_UP, self.OnLeftUp ) + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + self.Canvas.Bind(FloatCanvas.EVT_LEFT_UP, self.OnLeftUp ) self.Canvas.Bind(FloatCanvas.EVT_LEFT_DOWN, self.OnLeftDown) Point = N.array((0,0), N.float) - + Canvas.AddCircle(Point, @@ -76,7 +76,7 @@ class DrawFrame(wx.Frame): ) - + Width = 300 self.Box = Canvas.AddScaledTextBox(LongString, Point, @@ -93,19 +93,19 @@ class DrawFrame(wx.Frame): Weight = wx.NORMAL, Underlined = False, Position = 'tl', - LineSpacing = 0.8, + LineSpacing = 0.8, Alignment = "left", #Alignment = "center", #Alignment = "right", InForeground = False) - + self.Handle1 = Canvas.AddBitmap(Resources.getMoveCursorBitmap(), Point, Position='cc') self.Handle2a = Canvas.AddBitmap(Resources.getMoveRLCursorBitmap(), Point, Position='cc') self.Handle2b = Canvas.AddBitmap(Resources.getMoveRLCursorBitmap(), Point, Position='cc') self.SetHandles() - + self.Handle1.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.Handle1Hit) self.Handle2a.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.Handle2Hit) self.Handle2b.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.Handle2Hit) @@ -177,7 +177,7 @@ class DrawFrame(wx.Frame): def OnLeftDown(self, event): pass - + def OnLeftUp(self, event): if self.Resizing: self.Resizing = False @@ -196,7 +196,7 @@ class DrawFrame(wx.Frame): self.ResizeRect = None # self.Box.SetPoint(Point1) self.SetHandles() - + self.Canvas.Draw(True) def SetHandles(self): @@ -208,15 +208,15 @@ class DrawFrame(wx.Frame): y -= h/3 self.Handle2b.SetPoint((x,y)) self.Handle1.SetPoint(self.Box.XY) - + app = wx.App() DrawFrame(None, -1, "FloatCanvas TextBox Test App", wx.DefaultPosition, (700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/floatcanvas/Tiny.bna b/samples/floatcanvas/Tiny.bna index 72e30d3d..249c775e 100644 --- a/samples/floatcanvas/Tiny.bna +++ b/samples/floatcanvas/Tiny.bna @@ -1,4 +1,4 @@ -"Another Name","Another Type", 19 +"Another Name","Another Type", 19 -81.531753540039,31.134635925293 -81.531150817871,31.134529113769 -81.530662536621,31.134353637695 @@ -18,7 +18,7 @@ -81.532928466797,31.135110855102 -81.532447814941,31.134794235229 -81.532341003418,31.134586334229 -"A third 'name'","6", 7 +"A third 'name'","6", 7 -81.522369384766,31.122062683106 -81.522109985352,31.121908187866 -81.522010803223,31.121685028076 @@ -26,7 +26,7 @@ -81.522483825684,31.121797561646 -81.522514343262,31.122062683106 -81.522369384766,31.122062683106 -"8223","1", 9 +"8223","1", 9 -81.523277282715,31.122261047363 -81.522987365723,31.121982574463 -81.523200988770,31.121547698975 diff --git a/samples/floatcanvas/Tree.py b/samples/floatcanvas/Tree.py index 93abf017..7757651f 100644 --- a/samples/floatcanvas/Tree.py +++ b/samples/floatcanvas/Tree.py @@ -33,16 +33,16 @@ import numpy as N class MovingObjectMixin: """ Methods required for a Moving object - + """ def GetOutlinePoints(self): """ - Returns a set of points with which to draw the outline when moving the + Returns a set of points with which to draw the outline when moving the object. - + Points are a NX2 array of (x,y) points in World coordinates. - - + + """ BB = self.BoundingBox OutlinePoints = N.array( ( (BB[0,0], BB[0,1]), @@ -57,15 +57,15 @@ class MovingObjectMixin: class ConnectorObjectMixin: """ Mixin class for DrawObjects that can be connected with lines - + Note that this version only works for Objects that have an "XY" attribute: that is, one that is derived from XHObjectMixin. - + """ - + def GetConnectPoint(self): return self.XY - + class MovingBitmap(FC.ScaledBitmap, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -73,7 +73,7 @@ class MovingBitmap(FC.ScaledBitmap, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class MovingCircle(FC.Circle, MovingObjectMixin, ConnectorObjectMixin): """ ScaledBitmap Object that can be moved @@ -84,10 +84,10 @@ class MovingCircle(FC.Circle, MovingObjectMixin, ConnectorObjectMixin): class MovingGroup(FC.Group, MovingObjectMixin, ConnectorObjectMixin): - + def GetConnectPoint(self): return self.BoundingBox.Center - + class NodeObject(FC.Group, MovingObjectMixin, ConnectorObjectMixin): """ A version of the moving group for nodes -- an ellipse with text on it. @@ -117,7 +117,7 @@ class NodeObject(FC.Group, MovingObjectMixin, ConnectorObjectMixin): def GetConnectPoint(self): return self.BoundingBox.Center - + class MovingText(FC.ScaledText, MovingObjectMixin, ConnectorObjectMixin): """ @@ -126,7 +126,7 @@ class MovingText(FC.ScaledText, MovingObjectMixin, ConnectorObjectMixin): ## All we need to do is is inherit from: ## ScaledBitmap, MovingObjectMixin and ConnectorObjectMixin pass - + class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): """ @@ -144,8 +144,8 @@ class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): InForeground = False): FC.DrawObject.__init__(self, InForeground) - self.Object1 = Object1 - self.Object2 = Object2 + self.Object1 = Object1 + self.Object2 = Object2 self.LineColor = LineColor self.LineStyle = LineStyle self.LineWidth = LineWidth @@ -171,8 +171,8 @@ class ConnectorLine(FC.LineOnlyMixin, FC.DrawObject,): if HTdc and self.HitAble: HTdc.SetPen(self.HitPen) HTdc.DrawLines(Points) - - + + class TriangleShape1(FC.Polygon, MovingObjectMixin): def __init__(self, XY, L): @@ -197,9 +197,9 @@ class TriangleShape1(FC.Polygon, MovingObjectMixin): ## Override the default OutlinePoints def GetOutlinePoints(self): return self.Points - + def CompPoints(self, XY, L): - c = L/ N.sqrt(3) + c = L/ N.sqrt(3) Points = N.array(((0, c), ( L/2.0, -c/2.0), @@ -224,7 +224,7 @@ class TreeNode: def __str__(self): return "TreeNode: %s"%self.Name __repr__ = __str__ - + ## Build Tree: leaves = [TreeNode(name) for name in ["Assistant VP 1","Assistant VP 2","Assistant VP 3"] ] @@ -238,12 +238,12 @@ elements = TreeNode("Root", [CEO, Father]) def LayoutTree(root, x, y, level): NumNodes = len(root.Children) root.Point = (x,y) - x += root.dx + x += root.dx y += (root.dy * level * (NumNodes-1) / 2.0) for node in root.Children: LayoutTree(node, x, y, level-1) y -= root.dy * level - + def TraverseTree(root, func): func(root) for child in (root.Children): @@ -259,25 +259,25 @@ class DrawFrame(wx.Frame): def __init__(self, *args, **kwargs): wx.Frame.__init__(self, *args, **kwargs) - self.CreateStatusBar() + self.CreateStatusBar() # Add the Canvas Canvas = NavCanvas.NavCanvas(self,-1,(500,500), ProjectionFun = None, Debug = 0, BackgroundColor = "White", ).Canvas - + self.Canvas = Canvas - Canvas.Bind(FC.EVT_MOTION, self.OnMove ) - Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) + Canvas.Bind(FC.EVT_MOTION, self.OnMove ) + Canvas.Bind(FC.EVT_LEFT_UP, self.OnLeftUp ) self.elements = elements LayoutTree(self.elements, 0, 0, 3) self.AddTree(self.elements) - - + + self.Show(True) self.Canvas.ZoomToBB() @@ -310,7 +310,7 @@ class DrawFrame(wx.Frame): node.DrawObject = object Nodes.append(object) def AddConnectors(node): - for child in node.Children: + for child in node.Children: Connector = ConnectorLine(node.DrawObject, child.DrawObject, LineWidth=3, LineColor="Red") Connectors.append(Connector) ## create the Objects @@ -318,14 +318,14 @@ class DrawFrame(wx.Frame): ## create the Connectors TraverseTree(root, AddConnectors) ## Add the conenctos to the Canvas first, so they are undernieth the nodes - self.Canvas.AddObjects(Connectors) + self.Canvas.AddObjects(Connectors) ## now add the nodes - self.Canvas.AddObjects(Nodes) + self.Canvas.AddObjects(Nodes) # Now bind the Nodes -- DrawObjects must be Added to a Canvas before they can be bound. for node in Nodes: #pass node.Bind(FC.EVT_FC_LEFT_DOWN, self.ObjectHit) - + def ObjectHit(self, object): @@ -362,7 +362,7 @@ class DrawFrame(wx.Frame): if self.MoveObject is not None: dxy = event.GetPosition() - self.StartPoint dxy = self.Canvas.ScalePixelToWorld(dxy) - self.MovingObject.Move(dxy) + self.MovingObject.Move(dxy) self.MoveTri = None self.Canvas.Draw(True) diff --git a/samples/floatcanvas/VectPlot.py b/samples/floatcanvas/VectPlot.py index e15dd996..39b339d7 100644 --- a/samples/floatcanvas/VectPlot.py +++ b/samples/floatcanvas/VectPlot.py @@ -21,11 +21,11 @@ from wx.lib.floatcanvas import NavCanvas, FloatCanvas class DrawFrame(wx.Frame): def __init__(self,parent, id,title,position,size): wx.Frame.__init__(self,parent, id,title,position, size) - + ## Set up the MenuBar - + MenuBar = wx.MenuBar() - + file_menu = wx.Menu() item = file_menu.Append(wx.ID_ANY, "E&xit","Terminate the program") self.Bind(wx.EVT_MENU, self.OnQuit, item) @@ -35,22 +35,22 @@ class DrawFrame(wx.Frame): item = draw_menu.Append(wx.ID_ANY, "&Plot","Re-do Plot") self.Bind(wx.EVT_MENU, self.Plot, item) MenuBar.Append(draw_menu, "&Plot") - - + + help_menu = wx.Menu() item = help_menu.Append(wx.ID_ANY, "&About", "More information About this program") self.Bind(wx.EVT_MENU, self.OnAbout, item) MenuBar.Append(help_menu, "&Help") - + self.SetMenuBar(MenuBar) - - + + self.CreateStatusBar() self.SetStatusText("") - + self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) - + # Add the Canvas self.Canvas = NavCanvas.NavCanvas(self ,wx.ID_ANY ,(500,300), ProjectionFun = None, @@ -60,13 +60,13 @@ class DrawFrame(wx.Frame): self.Canvas.NumBetweenBlits = 1000 - + self.Show(True) - + self.Plot() return None - - + + def OnAbout(self, event): dlg = wx.MessageDialog(self, "This is a small program to demonstrate\n" "the use of the FloatCanvas\n" @@ -74,20 +74,20 @@ class DrawFrame(wx.Frame): "About Me", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() - + def ZoomToFit(self,event): self.Canvas.ZoomToBB() - + def OnQuit(self,event): self.Close(True) - + def OnCloseWindow(self, event): self.Destroy() - + def DrawAxis(self): Canvas = self.Canvas - + # Draw the Axis # Note: the AddRectangle Parameters all have sensible @@ -145,59 +145,59 @@ class DrawFrame(wx.Frame): self.Canvas.Draw() self.Canvas.SaveAsImage("junk.png") - + class DemoApp(wx.App): """ How the demo works: - + Either under the Draw menu, or on the toolbar, you can push Run and Stop "Run" start an oscilloscope like display of a moving sine curve "Stop" stops it. - + While the plot os running (or not) you can zoom in and out and move about the picture. There is a tool bar with three tools that can be selected. - + The magnifying glass with the plus is the zoom in tool. Once selected, if you click the image, it will zoom in, centered on where you clicked. If you click and drag the mouse, you will get a rubber band box, and the image will zoom to fit that box when you release it. - + The magnifying glass with the minus is the zoom out tool. Once selected, if you click the image, it will zoom out, centered on where you clicked. - + The hand is the move tool. Once selected, if you click and drag on the image, it will move so that the part you clicked on ends up where you release the mouse. Nothing is changed while you are dragging, but you can see the outline of the former picture. - + I'd like the cursor to change as you change tools, but the stock wx.Cursors didn't include anything I liked, so I stuck with the pointer. Please let me know if you have any nice cursor images for me to use. - - + + Any bugs, comments, feedback, questions, and especially code are welcome: - + -Chris Barker - + Chris.Barker@noaa.gov - + """ - + def OnInit(self): frame = DrawFrame(None, wx.ID_ANY, "Plotting Test",wx.DefaultPosition,wx.Size(700,400)) self.SetTopWindow(frame) return True - - + + if __name__ == "__main__": app = DemoApp(0) app.MainLoop() - - + + diff --git a/samples/floatcanvas/YDownDemo.py b/samples/floatcanvas/YDownDemo.py index d3eaff28..c64c16d0 100644 --- a/samples/floatcanvas/YDownDemo.py +++ b/samples/floatcanvas/YDownDemo.py @@ -47,9 +47,9 @@ class DrawFrame(wx.Frame): Debug = 0, BackgroundColor = "DARK SLATE BLUE", ).Canvas - + self.Canvas = Canvas - + Point = (0,0) Box = Canvas.AddRectangle(Point, (80,100), @@ -59,14 +59,14 @@ class DrawFrame(wx.Frame): Canvas.AddText("%s"%(Point,), Point, Position="cr") Canvas.AddPoint(Point, Diameter=3, Color = "red") - + Point = (0,100) Canvas.AddText("%s"%(Point,), Point, Position="cr") Canvas.AddPoint(Point, Diameter=3, Color = "red") - - self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) - + self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove ) + + self.Show() Canvas.ZoomToBB() @@ -80,10 +80,10 @@ class DrawFrame(wx.Frame): app = wx.App(False) F = DrawFrame(None, title="FloatCanvas Demo App", size=(700,700) ) app.MainLoop() - - - - + + + + diff --git a/samples/glcanvas/GLCanvas.py b/samples/glcanvas/GLCanvas.py index c4f9c9f6..220ef1f8 100644 --- a/samples/glcanvas/GLCanvas.py +++ b/samples/glcanvas/GLCanvas.py @@ -21,13 +21,13 @@ class MyCanvasBase(glcanvas.GLCanvas): glcanvas.GLCanvas.__init__(self, parent, -1) self.init = False self.context = glcanvas.GLContext(self) - + self.lastx = self.x = 30 self.lasty = self.y = 30 self.size = None - + self.SetBackgroundStyle(wx.BG_STYLE_PAINT) - + self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseDown) @@ -44,7 +44,7 @@ class MyCanvasBase(glcanvas.GLCanvas): def DoSetViewport(self): size = self.size = self.GetClientSize() self.SetCurrent(self.context) - glViewport(0, 0, size.width, size.height) + glViewport(0, 0, size.width, size.height) def OnPaint(self, event): diff --git a/samples/grid/events.py b/samples/grid/events.py index 638fb14d..59472538 100644 --- a/samples/grid/events.py +++ b/samples/grid/events.py @@ -12,7 +12,7 @@ class SimpleGrid(wx.grid.Grid): self.SetCellValue(6, 3, "You can veto editing this cell") - + # test all the events self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnCellLeftClick) self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnCellRightClick) @@ -81,7 +81,7 @@ class SimpleGrid(wx.grid.Grid): def OnGridColSort(self, evt): self.log.write("OnGridColSort: %s %s" % (evt.GetCol(), self.GetSortingColumn())) self.SetSortingColumn(evt.GetCol()) - + def OnRowSize(self, evt): self.log.write("OnRowSize: row %d, %s\n" % (evt.GetRowOrCol(), evt.GetPosition())) diff --git a/samples/grid/simple.py b/samples/grid/simple.py index 8e346499..e4160389 100644 --- a/samples/grid/simple.py +++ b/samples/grid/simple.py @@ -5,7 +5,7 @@ class TestGrid(wx.grid.Grid): def __init__(self, *args, **kw): wx.grid.Grid.__init__(self, *args, **kw) self.CreateGrid(25, 25) - + # Show some simple cell formatting self.SetColSize(3, 200) self.SetRowSize(4, 45) @@ -33,7 +33,7 @@ class TestGrid(wx.grid.Grid): # you can set cell attributes for the whole row (or column) self.SetRowAttr(5, attr) - + self.SetColLabelValue(0, "Custom") self.SetColLabelValue(1, "column") self.SetColLabelValue(2, "labels") @@ -55,15 +55,15 @@ class TestGrid(wx.grid.Grid): self.SetCellRenderer(15,0, renderer) self.SetCellValue(15,0, "The text in this cell will be rendered with word-wrapping") self.SetRowSize(15, 40) - - + + class TestFrame(wx.Frame): def __init__(self, *args, **kw): wx.Frame.__init__(self, *args, **kw) self.grid = TestGrid(self) - + app = wx.App() frm = TestFrame(None, title="Simple Test Grid", size=(700,500)) frm.Show() diff --git a/samples/html2/HTML2_WebView.py b/samples/html2/HTML2_WebView.py index 10bde10e..07f0e99d 100644 --- a/samples/html2/HTML2_WebView.py +++ b/samples/html2/HTML2_WebView.py @@ -11,7 +11,7 @@ class TestPanel(wx.Panel): self.current = "http://wxPython.org" self.frame = self.GetTopLevelParent() self.titleBase = self.frame.GetTitle() - + sizer = wx.BoxSizer(wx.VERTICAL) btnSizer = wx.BoxSizer(wx.HORIZONTAL) self.wv = webview.WebView.New(self) @@ -19,7 +19,7 @@ class TestPanel(wx.Panel): self.Bind(webview.EVT_WEBVIEW_NAVIGATED, self.OnWebViewNavigated, self.wv) self.Bind(webview.EVT_WEBVIEW_LOADED, self.OnWebViewLoaded, self.wv) self.Bind(webview.EVT_WEBVIEW_TITLE_CHANGED, self.OnWebViewTitleChanged, self.wv) - + btn = wx.Button(self, -1, "Open", style=wx.BU_EXACTFIT) self.Bind(wx.EVT_BUTTON, self.OnOpenButton, btn) btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2) @@ -50,13 +50,13 @@ class TestPanel(wx.Panel): self.location.AppendItems(['http://wxPython.org', 'http://wxwidgets.org', 'http://google.com']) - + #for url in ['http://wxPython.org', # 'http://wxwidgets.org', # 'http://google.com']: # item = webview.WebViewHistoryItem(url, url) # self.wv.LoadHistoryItem(item) - + self.Bind(wx.EVT_COMBOBOX, self.OnLocationSelect, self.location) self.location.Bind(wx.EVT_TEXT_ENTER, self.OnLocationEnter) btnSizer.Add(self.location, 1, wx.EXPAND|wx.ALL, 2) @@ -65,7 +65,7 @@ class TestPanel(wx.Panel): sizer.Add(btnSizer, 0, wx.EXPAND) sizer.Add(self.wv, 1, wx.EXPAND) self.SetSizer(sizer) - + self.wv.LoadURL(self.current) @@ -82,7 +82,7 @@ class TestPanel(wx.Panel): def OnWebViewNavigated(self, evt): self.frame.SetStatusText("Loading %s..." % evt.GetURL()) - + def OnWebViewLoaded(self, evt): # The full document has loaded @@ -90,11 +90,11 @@ class TestPanel(wx.Panel): self.location.SetValue(self.current) self.frame.SetStatusText("Loaded") - + def OnWebViewTitleChanged(self, evt): # Set the frame's title to include the document's title self.frame.SetTitle("%s -- %s" % (self.titleBase, evt.GetString())) - + # Control bar events def OnLocationSelect(self, evt): @@ -132,7 +132,7 @@ class TestPanel(wx.Panel): def OnCheckCanGoBack(self, event): event.Enable(self.wv.CanGoBack()) - + def OnCheckCanGoForward(self, event): event.Enable(self.wv.CanGoForward()) @@ -141,8 +141,8 @@ class TestPanel(wx.Panel): def OnRefreshPageButton(self, evt): self.wv.Reload() - - + + #---------------------------------------------------------------------- @@ -153,7 +153,7 @@ def main(): pnl = TestPanel(frm) frm.Show() app.MainLoop() - + #---------------------------------------------------------------------- diff --git a/samples/mainloop/mainloop.py b/samples/mainloop/mainloop.py index a5b683c1..17b5fedc 100755 --- a/samples/mainloop/mainloop.py +++ b/samples/mainloop/mainloop.py @@ -6,7 +6,7 @@ in Python. """ import time -import wx +import wx ##import os; raw_input('PID: %d\nPress enter...' % os.getpid()) @@ -27,7 +27,7 @@ class MyFrame(wx.Frame): panel = wx.Panel(self) sizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5) - + self.sizeCtrl = wx.TextCtrl(panel, -1, "", style=wx.TE_READONLY) sizer.Add(wx.StaticText(panel, -1, "Size:")) sizer.Add(self.sizeCtrl) @@ -43,7 +43,7 @@ class MyFrame(wx.Frame): border = wx.BoxSizer() border.Add(sizer, 0, wx.ALL, 20) panel.SetSizer(border) - + def OnCloseWindow(self, event): self.Destroy() @@ -71,22 +71,22 @@ class MyEventLoop(wx.GUIEventLoop): self.exitCode = 0 self.shouldExit = False - + def DoMyStuff(self): # Do whatever you want to have done for each iteration of the event # loop. In this example we'll just sleep a bit to simulate something # real happening. time.sleep(0.10) - + def Run(self): # Set this loop as the active one. It will automatically reset to the # original evtloop when the context manager exits. with wx.EventLoopActivator(self): while True: - + self.DoMyStuff() - + # Generate and process idles events for as long as there # isn't anything else to do while not self.shouldExit and not self.Pending() and self.ProcessIdle(): @@ -94,7 +94,7 @@ class MyEventLoop(wx.GUIEventLoop): if self.shouldExit: break - + # dispatch all the pending events and call Dispatch() to wait # for the next message if not self.ProcessEvents(): @@ -103,8 +103,8 @@ class MyEventLoop(wx.GUIEventLoop): # Currently on wxOSX Pending always returns true, so the # ProcessIdle above is not ever called. Call it here instead. if 'wxOSX' in wx.PlatformInfo: - self.ProcessIdle() - + self.ProcessIdle() + # Proces remaining queued messages, if any while True: checkAgain = False @@ -116,29 +116,29 @@ class MyEventLoop(wx.GUIEventLoop): checkAgain = True if not checkAgain: break - + return self.exitCode - + def Exit(self, rc=0): self.exitCode = rc self.shouldExit = True self.OnExit() self.WakeUp() - - + + def ProcessEvents(self): if wx.GetApp(): - wx.GetApp().ProcessPendingEvents() - + wx.GetApp().ProcessPendingEvents() + if self.shouldExit: return False - + return self.Dispatch() - - + + class MyApp(wx.App): diff --git a/samples/overlay/overlay.py b/samples/overlay/overlay.py index e4421332..861f701b 100644 --- a/samples/overlay/overlay.py +++ b/samples/overlay/overlay.py @@ -18,13 +18,13 @@ class TestPanel(wx.Panel): self.overlay = wx.Overlay() wx.TextCtrl(self, pos=(140,20)) - + def OnPaint(self, evt): # Just some simple stuff to paint in the window for an example dc = wx.PaintDC(self) dc.SetBackground(wx.Brush("sky blue")) - dc.Clear() + dc.Clear() dc.DrawLabel("Drag the mouse across this window to see \n" "a rubber-band effect using wx.Overlay", (140, 50, -1, -1)) @@ -34,7 +34,7 @@ class TestPanel(wx.Panel): dc.SetPen(wx.Pen("red", 2)) dc.SetBrush(wx.CYAN_BRUSH) dc.DrawPolygon(coords) - + def OnLeftDown(self, evt): # Capture the mouse and save the starting position for the @@ -46,7 +46,7 @@ class TestPanel(wx.Panel): def OnMouseMove(self, evt): if evt.Dragging() and evt.LeftIsDown(): rect = wx.Rect(topLeft=self.startPos, bottomRight=evt.GetPosition()) - + # Draw the rubber-band rectangle using an overlay so it # will manage keeping the rectangle and the former window # contents separate. @@ -59,7 +59,7 @@ class TestPanel(wx.Panel): # wx.GCDC so don't try it. if 'wxMac' not in wx.PlatformInfo: dc = wx.GCDC(dc) - + dc.SetPen(wx.Pen("black", 2)) dc.SetBrush(wx.Brush(wx.Colour(0xC0, 0xC0, 0xC0, 0x80))) dc.DrawRectangle(rect) @@ -78,7 +78,7 @@ class TestPanel(wx.Panel): del odc self.overlay.Reset() - + app = wx.App(redirect=False) frm = wx.Frame(None, title="wx.Overlay Test", size=(450,450)) diff --git a/samples/printing/printing.py b/samples/printing/printing.py index c0018653..24eb0e9c 100644 --- a/samples/printing/printing.py +++ b/samples/printing/printing.py @@ -54,16 +54,16 @@ class TextDocPrintout(wx.Printout): dw, dh = dc.GetSize() self.x1 = topLeft.x * self.logUnitsMM self.y1 = topLeft.y * self.logUnitsMM - self.x2 = dc.DeviceToLogicalXRel(dw) - bottomRight.x * self.logUnitsMM - self.y2 = dc.DeviceToLogicalYRel(dh) - bottomRight.y * self.logUnitsMM + self.x2 = dc.DeviceToLogicalXRel(dw) - bottomRight.x * self.logUnitsMM + self.y2 = dc.DeviceToLogicalYRel(dh) - bottomRight.y * self.logUnitsMM # use a 1mm buffer around the inside of the box, and a few # pixels between each line self.pageHeight = self.y2 - self.y1 - 2*self.logUnitsMM - font = wx.Font(FONTSIZE, wx.FONTFAMILY_TELETYPE, + font = wx.Font(FONTSIZE, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) dc.SetFont(font) - self.lineHeight = dc.GetCharHeight() + self.lineHeight = dc.GetCharHeight() self.linesPerPage = int(self.pageHeight/self.lineHeight) @@ -112,7 +112,7 @@ class PrintFrameworkSample(wx.Frame): # A text widget to display the doc and let it be edited self.tc = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_DONTWRAP) - self.tc.SetFont(wx.Font(FONTSIZE, wx.FONTFAMILY_TELETYPE, + self.tc.SetFont(wx.Font(FONTSIZE, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) filename = os.path.join(os.path.dirname(__file__), "sample-text.txt") self.tc.SetValue(open(filename).read()) @@ -135,10 +135,10 @@ class PrintFrameworkSample(wx.Frame): ## menu.AppendSeparator() item = menu.Append(wx.ID_ABOUT, "About", "About this application") - self.Bind(wx.EVT_MENU, self.OnAbout, item) + self.Bind(wx.EVT_MENU, self.OnAbout, item) item = menu.Append(wx.ID_EXIT, "E&xit\tCtrl-Q", "Close this application") self.Bind(wx.EVT_MENU, self.OnExit, item) - + menubar = wx.MenuBar() menubar.Append(menu, "&File") self.SetMenuBar(menubar) @@ -187,7 +187,7 @@ class PrintFrameworkSample(wx.Frame): def OnPrintPreview(self, evt): data = wx.PrintDialogData(self.pdata) - text = self.tc.GetValue() + text = self.tc.GetValue() printout1 = TextDocPrintout(text, "title", self.margins) printout2 = TextDocPrintout(text, "title", self.margins) preview = wx.PrintPreview(printout1, printout2, data) @@ -205,7 +205,7 @@ class PrintFrameworkSample(wx.Frame): def OnPrint(self, evt): data = wx.PrintDialogData(self.pdata) printer = wx.Printer(data) - text = self.tc.GetValue() + text = self.tc.GetValue() printout = TextDocPrintout(text, "title", self.margins) useSetupDialog = True if not printer.Print(self, printout, useSetupDialog) \ @@ -241,8 +241,8 @@ class PrintFrameworkSample(wx.Frame): print_("GetPrinterName:", self.pdata.GetPrinterName()) dlg.Destroy() - - + + app = wx.App() frm = PrintFrameworkSample() frm.Show() diff --git a/samples/rawbmp/rawbmp1.py b/samples/rawbmp/rawbmp1.py index 0e6d29b0..7371e3f7 100644 --- a/samples/rawbmp/rawbmp1.py +++ b/samples/rawbmp/rawbmp1.py @@ -50,7 +50,7 @@ class TestPanel(wx.Panel): tm = t.timeit(num) log.write("%d passes creating %dx%d images in %f seconds\n" "\t%f seconds per pass " % (num, DIM,DIM, tm, tm/num)) - + if not USE_NUMPY: log.write("using raw access\n") self.redBmp = self.MakeBitmap(178, 34, 34) @@ -122,7 +122,7 @@ class TestPanel(wx.Panel): pixels.Set(red, green, blue, wx.ALPHA_OPAQUE) pixels.MoveTo(pixelData, DIM-1, y) pixels.Set(red, green, blue, wx.ALPHA_OPAQUE) - + return bmp @@ -149,9 +149,9 @@ class TestPanel(wx.Panel): # finally, use the array to create a bitmap bmp = wx.Bitmap.FromBufferRGBA(DIM, DIM, arr) return bmp - - - + + + #---------------------------------------------------------------------- if __name__ == '__main__': @@ -160,4 +160,4 @@ if __name__ == '__main__': pnl = TestPanel(frm, sys.stdout) frm.Show() app.MainLoop() - + diff --git a/samples/roses/clroses.py b/samples/roses/clroses.py index 1d7ea3dc..a5a87866 100644 --- a/samples/roses/clroses.py +++ b/samples/roses/clroses.py @@ -49,7 +49,7 @@ class rose: # The following data is accessible by callers, but there are set # methods for most everything and various method calls to client methods - # to display current values. + # to display current values. style = 100 # Angular distance along curve between points sincr = -1 # Amount to increment style by in auto mode petals = 2 # Lobes on the rose (even values have 2X lobes) @@ -66,7 +66,7 @@ class rose: # Other variables that the application shouldn't access. verbose = 0 # No good way to set this at the moment. nextpt = 0 # Next position to draw on next clock tick - + # Internal states: INT_IDLE, INT_DRAW, INT_SEARCH, INT_WAIT, INT_RESIZE = range(5) int_state = INT_IDLE @@ -74,7 +74,7 @@ class rose: # Command states CMD_STOP, CMD_GO = range(2) cmd_state = CMD_STOP - + # Return full rose line (a tuple of (x, y) tuples). Not used by interactive # clients but still useful for command line and batch clients. # This is the "purest" code and doesn't require the App* methods defined @@ -91,7 +91,7 @@ class rose: return line # Generate vectors for the next chunk of rose. - + # This is not meant to be called from an external module, as it is closely # coupled to parameters set up within the class and limits set up by # restart(). Restart() initializes all data this needs to start drawing a @@ -122,7 +122,7 @@ class rose: def make_tables(self, vectors): self.sin_table = [sin(2.0 * pi * i / vectors) for i in range(vectors)] self.cos_table = [cos(2.0 * pi * i / vectors) for i in range(vectors)] - + # Rescale (x,y) data to match our window. Note the negative scaling in the # Y direction, this compensates for Y moving down the screen, but up on # graph paper. @@ -186,7 +186,7 @@ class rose: self.center = (xsize / 2, ysize / 2) self.scale = min(xsize, ysize) / 2.1 self.repaint(delay) - + # Called from App or above. From App, called with small delay because # some window managers will produce a flood of expose events or call us # before initialization is done. @@ -196,7 +196,7 @@ class rose: self.int_state = self.INT_RESIZE self.AppCancelTimer() self.AppAfter(delay, self.clock) - + # Method that returns the next style and petal values for automatic # mode and remembers them internally. Keep things scaled in the # range [0:nvec) because there's little reason to exceed that. @@ -253,7 +253,7 @@ class rose: self.pincr = -self.pincr else: self.AppSetIncrs(self.sincr, self.pincr) - + # Forward/Skip button. CMD_STOP & CMD_GO both just call resume. def cmd_step(self): self.resume() # Draw next pattern @@ -292,7 +292,7 @@ class rose: self.AppSetParam(self.style, self.petals, self.nvec) self.AppSetIncrs(self.sincr, self.pincr) delay = self.restart() # Calls us to start drawing - + if delay == 0: if self.verbose: print_('clock: going idle from state', self.int_state) @@ -310,7 +310,7 @@ class rose: # We restrict the style and petals parameters to the range [0: nvec) # since numbers outside of that range aren't interesting. We don't # immediately update the value in the application, we probably should. - + # NW control window - key parameters def SetStyle(self, value): self.style = value % self.nvec diff --git a/samples/roses/wxroses.py b/samples/roses/wxroses.py index a12a7103..e56c1729 100644 --- a/samples/roses/wxroses.py +++ b/samples/roses/wxroses.py @@ -96,7 +96,7 @@ class SpinPanel(wx.Panel): sizer.Add((1,1), 1) sizer.Add(self.sc) self.SetSizer(sizer) - + global spin_panels spin_panels[name] = self @@ -128,7 +128,7 @@ class RosePanel(wx.Panel): # set default colors self.SetBackgroundColour((51, 51, 51)) # gray20 self.SetForegroundColour((164, 211, 238)) # lightskyblue2 - + # connect the size and paint events to handlers self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_PAINT, self.OnPaint) @@ -139,7 +139,7 @@ class RosePanel(wx.Panel): size = self.GetClientSize() self.buffer = wx.Bitmap(max(1, size.width), max(1, size.height)) - + def Clear(self): dc = self.useBuffer and wx.MemoryDC(self.buffer) or wx.ClientDC(self) dc.SetBackground(wx.Brush(self.GetBackgroundColour())) @@ -163,7 +163,7 @@ class RosePanel(wx.Panel): def TriggerRedraw(self): self.GetParent().TriggerRedraw() - + def OnSize(self, evt): self.resizeNeeded = True @@ -203,9 +203,9 @@ class OptionsPanel(wx.Panel): sizer.Add((4,4)) sizer.Add(lbl, 0, wx.ALIGN_CENTER_VERTICAL) return sizer, btn - + s, self.fg = makeCButton('Foreground') - sizer.Add(s) + sizer.Add(s) s, self.bg = makeCButton('Background') sizer.Add(s) self.SetSizer(sizer) @@ -233,7 +233,7 @@ class OptionsPanel(wx.Panel): def OnUseBuffer(self, evt): self.rose.useBuffer = evt.IsChecked() self.rose.TriggerRedraw() - + def OnSetFG(self, evt): self.rose.SetForegroundColour(evt.GetValue()) self.rose.TriggerRedraw() @@ -277,12 +277,12 @@ class MyFrame(wx.Frame, clroses.rose): sizer.Add(st, 0, wx.EXPAND) panel.SetSizer(sizer) return panel - + wx.Frame.__init__(self, None, title="Roses in wxPython") self.rose_panel = RosePanel(self) self.side_panel = wx.Panel(self) - + # The cmd panel is four buttons whose names and foreground colors # change. Plop them in a StaticBox like the SpinPanels. Use # a 2x2 grid, but StaticBoxSizer can't handle that. Therefore, @@ -330,14 +330,14 @@ class MyFrame(wx.Frame, clroses.rose): ('Skip first', 0, 0, 3600), ('Draw only' , 1, 3600, 3600)), (('Takes', 'Takes 0000 vectors'), )) - + self.tim_panel = makeSP('Timing', (('Vec/tick' , 1, 20, 3600), ('msec/tick', 1, 50, 1000), ('Delay' , 1, 2000, 9999))) self.opt_panel = OptionsPanel(self.side_panel, self.rose_panel) - + # put them all on in a sizer attached to the side_panel panelSizer = wx.BoxSizer(wx.VERTICAL) panelSizer.Add(self.cmd_panel, 0, wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT, 5) @@ -412,12 +412,12 @@ class MyFrame(wx.Frame, clroses.rose): # implement the missing parts of the functionality needed to do # the actual work of getting the diagram to the screen and etc. # Those are implemented here as the App* methods. - + def AppClear(self): if verbose: print_('AppClear: clear screen') self.rose_panel.Clear() - + def AppCreateLine(self, line): # print('AppCreateLine, len', len(line), 'next', self.nextpt) self.rose_panel.DrawLines(line) @@ -439,7 +439,7 @@ class MyFrame(wx.Frame, clroses.rose): spin_panels['Maximum'].SetValue(maxvec) spin_panels['Skip first'].SetValue(skipvec) spin_panels['Draw only'].SetValue(drawvec) - + def AppSetTakesVec(self, takes): spin_panels['Takes'].SetLabel('Takes %d vectors' % takes) @@ -463,7 +463,7 @@ class MyFrame(wx.Frame, clroses.rose): # AppAfter and OnTimer alternate, but don't verify that AppCancelTimer() # is canceling anything as callers of that may be uncertain about what's # happening. - + # Method to provide a single callback after some amount of time. def AppAfter(self, msec, callback): if self.timer_callback: @@ -491,7 +491,7 @@ class MyFrame(wx.Frame, clroses.rose): resize_delay = 300 - + def TriggerResize(self, size): self.resize(size, self.resize_delay) self.resize_delay = 100 diff --git a/samples/simple/dialog.py b/samples/simple/dialog.py index a9c005c7..19b7c00c 100644 --- a/samples/simple/dialog.py +++ b/samples/simple/dialog.py @@ -3,18 +3,18 @@ import wx class MyDialog(wx.Dialog): def __init__(self, *args, **kw): wx.Dialog.__init__(self, *args, **kw) - + # Widgets txt = wx.StaticText(self, label="Hello. I am a Dialog! Hear me roar!") ok = wx.Button(self, wx.ID_OK) ok.SetDefault() cancel = wx.Button(self, wx.ID_CANCEL) - + # Layout self.Sizer = wx.BoxSizer(wx.VERTICAL) # using the Sizer property self.Sizer.Add(txt, 0, wx.ALL, 10) self.Sizer.Add(wx.StaticLine(self), 0, wx.EXPAND) - + # make a new sizer to hold the buttons row = wx.BoxSizer(wx.HORIZONTAL) row.Add((1,1), 1) # a spacer that gets a portion of the free space @@ -22,16 +22,16 @@ class MyDialog(wx.Dialog): row.Add((1,1), 1) row.Add(cancel) row.Add((1,1), 1) - + # add that sizer to the main sizer self.Sizer.Add(row, 0, wx.EXPAND|wx.ALL, 10) - + # size the dialog to fit the content managed by the sizer self.Fit() - - + + app = wx.App() dlg = MyDialog(None, title="Hello Dialog") val = dlg.ShowModal() -dlg.Destroy() +dlg.Destroy() app.MainLoop() \ No newline at end of file diff --git a/samples/simple/events.py b/samples/simple/events.py index 2cba3f4d..af58312a 100644 --- a/samples/simple/events.py +++ b/samples/simple/events.py @@ -11,25 +11,25 @@ class MyFrame(wx.Frame): wx.Frame.__init__(self, *args, **kw) self.Bind(wx.EVT_SIZE, self.onSize) wx.CallAfter(self.after, 1, 2, 3) - + def after(self, a, b, c): print_('Called via wx.CallAfter:', a, b, c) def onSize(self, evt): print_(repr(evt.Size)) evt.Skip() - + class MyApp(wx.App): def OnInit(self): print_('OnInit') frm = MyFrame(None, title="Hello with Events", size=(480,360)) frm.Show() return True - + def OnExit(self): print_('OnExit') return 0 - + app = MyApp() app.MainLoop() diff --git a/samples/simple/giltest.py b/samples/simple/giltest.py index 7fbd44fb..ddbc8e85 100644 --- a/samples/simple/giltest.py +++ b/samples/simple/giltest.py @@ -18,14 +18,14 @@ class ThreadedTask(threading.Thread): self.counter = 0 self.sleepTime = random.random()/2 self.timeToDie = False - + def run(self): while not self.timeToDie: time.sleep(self.sleepTime) self.counter += 1 print('thread: %5s count: %d' % (self.name, self.counter)) - - + + class MainFrame(wx.Frame): def __init__(self): @@ -36,8 +36,8 @@ class MainFrame(wx.Frame): self.pnl.Bind(wx.EVT_CONTEXT_MENU, self.onShowMenu) btn = wx.Button(self.pnl, label='timed test', pos=(10, 60)) self.Bind(wx.EVT_BUTTON, self.onOtherButton, btn) - - + + def onButton(self, evt): dlg = wx.Dialog(self, title='close this dialog', size=(300,150)) dlg.ShowModal() @@ -58,8 +58,8 @@ class MainFrame(wx.Frame): s.IncBy(4,6) wx.MessageBox('%d reps performed in %f seconds' % (reps, time.time() - start), 'Results') - - + + def onShowMenu(self, evt): menu = wx.Menu() menu.Append(-1, 'one') @@ -67,13 +67,13 @@ class MainFrame(wx.Frame): menu.Append(-1, 'three') self.pnl.PopupMenu(menu) menu.Destroy() - - + + threads = [ ThreadedTask(name='one'), ThreadedTask(name='two'), ThreadedTask(name='three') ] for t in threads: t.start() - + app = wx.App() frm = MainFrame() frm.Show() @@ -81,5 +81,4 @@ app.MainLoop() for t in threads: t.timeToDie = True - - \ No newline at end of file + diff --git a/samples/simple/hello.py b/samples/simple/hello.py index 39aab931..9a4ac13b 100644 --- a/samples/simple/hello.py +++ b/samples/simple/hello.py @@ -9,8 +9,8 @@ pnl.BackgroundColour = 'sky blue' st = wx.StaticText(pnl, -1, 'Hello World!', (15,10)) st.SetFont(wx.FFont(14, wx.FONTFAMILY_SWISS, wx.FONTFLAG_BOLD)) -st = wx.StaticText(pnl, pos=(15,40), - label='This is wxPython %s\nrunning on Python %s %s' % +st = wx.StaticText(pnl, pos=(15,40), + label='This is wxPython %s\nrunning on Python %s %s' % (wx.version(), sys.version.split(' ')[0], platform.architecture()[0])) st.SetFont(wx.FFont(10, wx.FONTFAMILY_SWISS, wx.FONTFLAG_BOLD)) @@ -20,4 +20,4 @@ sb = wx.StaticBitmap(pnl, label=bmp, pos=(15,85)) frm.Show() app.MainLoop() - + diff --git a/samples/simple/simple.py b/samples/simple/simple.py index 11e096cf..287863ea 100644 --- a/samples/simple/simple.py +++ b/samples/simple/simple.py @@ -25,7 +25,7 @@ class MyFrame(wx.Frame): # Create the menubar menuBar = wx.MenuBar() - # and a menu + # and a menu menu = wx.Menu() # add an item to the menu, using \tKeyName automatically @@ -41,7 +41,7 @@ class MyFrame(wx.Frame): self.SetMenuBar(menuBar) self.CreateStatusBar() - + # Now create the Panel to put the other controls on. panel = wx.Panel(self) @@ -73,7 +73,7 @@ class MyFrame(wx.Frame): self.SetSizer(sizer) self.Fit() self.CenterOnScreen(wx.BOTH) - + def OnTimeToClose(self, evt): """Event handler for the button click.""" @@ -97,7 +97,7 @@ class MyApp(AppBaseClass): frame.Show(True) return True - + app = MyApp(redirect=True) app.MainLoop() diff --git a/samples/wxptag/wxpTest.py b/samples/wxptag/wxpTest.py index bcb6b557..54afc821 100644 --- a/samples/wxptag/wxpTest.py +++ b/samples/wxptag/wxpTest.py @@ -15,16 +15,16 @@ class Frame(wx.Frame): hwin = HtmlWindow(self, -1, size=(600,400)) name = os.path.join(os.path.dirname(sys.argv[0]), 'widgetTest.html') hwin.LoadPage(name) - + hwin.Bind(wx.EVT_BUTTON, self.OnButton, id=wx.ID_OK) - + def OnClose(self, event): self.Destroy() def OnButton(self, event): print('It works!') - + app = wx.App() top = Frame("wxpTest")