Sun Oct 16 15:15:13 PDT 2005 Christian Hammond A src/taco/engine.py: * src/taco/canvas.py: * src/taco/shapes.py: * src/taco/thingies/balls.py: * src/taco/ui/MainWindow.py: - First rough broken attempt at basic collision detection. It's kind of fun, though. The balls just drop. See if you can catch them! I think I'll just relesae it like this. Sun Oct 16 13:40:25 PDT 2005 Christian Hammond * src/taco/canvas.py: * src/taco/shapes.py: * src/taco/ui/MainWindow.py: - Replace Rectangle.contains with containsPoint. - Make taco run again. Sun Oct 16 13:30:24 PDT 2005 Christian Hammond * src/taco/thingies/walls.py: * src/taco/canvas.py: A src/taco/shapes.py: - Move Rectangle into shapes.py, and make it a subclass of Shape. Sun Oct 16 10:47:52 PDT 2005 Christian Hammond D src/taco/ui/canvas.py: * src/taco/machine.py: * src/taco/thingies/walls.py: A src/taco/canvas.py: - Move taco.ui.canvas to taco.canvas. Thu Oct 13 23:18:58 PDT 2005 Christian Hammond A images/selection/delete-over.png: A images/selection/delete.png: - Add two missing images. Wed Oct 12 23:06:40 PDT 2005 Christian Hammond * images/selection/selection-controls.svg: * src/taco/machine.py: * src/taco/thingies/walls.py: * src/taco/ui/canvas.py: - Consolidate Selection.showControls and hideControls into Selection.setControlsVisible. Also override setVisible to also call setControlsVisible. - Be more specific in what we show and hide in setControlsVisible. Resize handles are only shown if the target is resizable. - Rename CursorCache to Cursor. - Added a trash selection control. - Added minimum and maximum constraints for canvas objects. - The intersection block for walls can now appear on any part of the wall. Sat Oct 01 19:59:23 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Be more specific in what we show and hide in Selection.showControls and hideControls. Only show the resize controls if the target is resizable. Fri Sep 30 00:27:39 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Make sure that when resizing, we snap to the grid properly. I'm not entirely sure why this didn't just work before, but it does now. Fri Sep 30 00:23:45 PDT 2005 Christian Hammond A images/thingies/wall-corner.png: A images/thingies/wall-corner.svg: * src/taco/sprite.py: * src/taco/thingies/walls.py: - Add code for a useless but pretty feature: that little corner image that appears when you stick two wall ends together. Thu Sep 29 01:49:35 PDT 2005 Christian Hammond * src/taco/consts.py: * src/taco/thingies/walls.py: * src/taco/ui/canvas.py: - Resizing walls now works like in TIM. If you resize a horizontal wall vertically, it becomes a vertical wall, and vice-versa. It rocks. Thu Sep 29 01:39:48 PDT 2005 Christian Hammond A src/taco/consts.py: * src/taco/machine.py: * src/taco/thingies/walls.py: * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - Do some shuffling, and allow objects to handle their own resize events when the user resizes the object. Thu Sep 29 01:24:29 PDT 2005 Christian Hammond * src/taco/__init__.py: * src/taco/ui/canvas.py: - Fix an off-by-one in Rectangle.containsRect. Objects should now be able to be placed right next to each other. This was very noticeable with walls. Thu Sep 29 01:15:38 PDT 2005 Christian Hammond * src/taco/sprite.py: - Revert the code to compute the number of tiles back to how it was before, since it doesn't work as well now. Thu Sep 29 00:58:02 PDT 2005 Christian Hammond A images/thingies/brickwall-red-horiz.png: A images/thingies/brickwall-red-horiz.svg: A images/thingies/brickwall-red-vert.png: A images/thingies/brickwall-red-vert.svg: D images/thingies/brickwall-red.png: D images/thingies/brickwall-red.svg: * src/taco/thingies/walls.py: - Renamed brickwall-red.* to brickwall-red-horiz.*. - StraightWall now takes a horiz filename and a vert filename. BrickWall supplies both. Vertical brick walls don't suck as much anymore. Thu Sep 29 00:49:50 PDT 2005 Christian Hammond * src/taco/sprite.py: * src/taco/thingies/walls.py: * src/taco/ui/MainWindow.py: - Added a function that takes an image and an optional border width and an area and tiles the image inside that border width into the destination area, tiling the border of the image around the new tiled area. Does that make sense? Wed Sep 28 23:38:39 PDT 2005 Christian Hammond * src/taco/thingies/walls.py: * src/taco/ui/MainWindow.py: - Move most of the BrickWall code into StraightWall. Make the orientation mandatory. Wed Sep 28 23:13:40 PDT 2005 Christian Hammond D src/taco/Connector.py: D src/taco/Slot.py: D src/taco/Thingie.py: * src/taco/thingies/balls.py: * src/taco/thingies/walls.py: * src/taco/ui/canvas.py: - Move Thingie, Connector, and Slot into taco.machine - Added an Orientation, um, enum-thingy. Wall uses it now. For some definition of use. Sun Sep 25 14:45:56 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Hide the controls around the selection while dragging. Re-show when dropped. Sun Sep 25 14:32:36 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Add Object.onMouseEnterEvent and Object.onMouseLeaveEvent. - The resize handles now change color slightly when hovered over. Sun Sep 25 14:22:45 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Resizable objects can now be resized. Sun Sep 25 13:51:28 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Added HorizResizeControl and VertResizeControl classes. Yay reusable code. Sun Sep 25 13:43:01 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Put the selection resize handles into a list, so that we can just iterate through and set things instead of doing it one-by-one. Sun Sep 25 13:22:26 PDT 2005 Christian Hammond * src/taco/Thingie.py: * src/taco/ui/canvas.py: - Add movement restraints and set them for the resize handles. Sun Sep 25 13:08:16 PDT 2005 Christian Hammond * src/taco/thingies/walls.py: * src/taco/ui/canvas.py: - Objects can now specify if they're resizable or not, and the arrows are only shown if the selected object is resizable. Sun Sep 25 13:01:23 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Increase the size of the selection to accomodate the controls, but continue drawing only in that area around the selected object. This allows for moving the mouse outside that box to select a control and not having the whole selection disappear. Sun Sep 25 12:43:17 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Hide the arrows when nothing is selected. Sun Sep 25 12:35:38 PDT 2005 Christian Hammond * src/taco/Thingie.py: * src/taco/thingies/balls.py: * src/taco/thingies/walls.py: * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - Add sexy resize arrows to selected widgets. - The desired layer is now passed to all objects. The constructor does the add call. This simplifies code and allows objects to manipulate the layer in the constructor. Sun Sep 25 11:59:45 PDT 2005 Christian Hammond A images/selection/resize-horiz-over.png: A images/selection/resize-vert-over.png: A images/selection/resize-vert.png: A images/selection/selection-controls.svg: - Add the resize control images for selected objects. Sun Sep 25 02:01:03 PDT 2005 Christian Hammond * images/thingies/bowlingball-blue.png: * images/thingies/bowlingball-blue.svg: * images/thingies/bowlingball-holes.png: * images/thingies/bowlingball-holes.svg: - Resize the bowling ball to 40x40. Sun Sep 25 01:51:05 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - If a dragged object is released onto a spot that it's not allowed on, the object will jump back to its original location. Sun Sep 25 01:27:55 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Add basic bounds-based collision detection for selections. If you attempt to move something on top of something else, you'll get a red selection with an X in it. It doesn't yet prevent you from placing it there, though. Sat Sep 24 22:18:08 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Reverse the order in which we represent objects in the list. Now, the start of the list are the top-most objects and the end are the bottom-most. draw() now draws the list in reverse order to accomodate this change. This fixes getObject(), which was scanning from the lower-most object to the upper-most. Sat Sep 24 21:52:25 PDT 2005 Christian Hammond * src/taco/thingies/balls.py: * src/taco/ui/canvas.py: - Added a containsPoint function on canvas.Object. Ball overrides this and checks if the point is in the circle making up its bounds. This all needs to be done in a better way. Sat Sep 24 20:46:47 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - The selection now changes on hover, rather than on click, making it work more like TIM. - Fixed a bug where the cursor was being reset to pointer when the drag finished. It should have stayed as the hand. Sat Sep 24 20:40:59 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Get rid of some "integer argument expected, got float" runtime warnings. Sat Sep 24 20:25:25 PDT 2005 Christian Hammond * src/taco/thingies/balls.py: - The bowling ball animation was fun, but it's time to turn it off the nextFrame() calls in draw(). Sat Sep 24 20:23:33 PDT 2005 Christian Hammond * src/taco/thingies/walls.py: - Properly compute the width of the number of wall tiles, and clip it to the proper dimensions. Sat Sep 24 16:26:02 PDT 2005 Christian Hammond A images/thingies/brickwall-red.png: A images/thingies/brickwall-red.svg: * src/taco/thingies/walls.py: - Use a nice brick wall image for BrickWall. Sat Sep 24 15:52:25 PDT 2005 Christian Hammond * src/taco/sprite.py: - Added sprite.drawSubImage(). Sat Sep 24 15:44:43 PDT 2005 Christian Hammond A src/taco/sprite.py: D src/taco/SpriteAnimator.py: * src/taco/thingies/balls.py: - Rename SpriteAnimatorpy to sprite.py. More stuff is going to go in there soon. Sat Sep 24 14:50:21 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Add support for snap-to-grid on a per-object basis. Sat Sep 24 14:34:52 PDT 2005 Christian Hammond A src/taco/thingies/walls.py: * src/taco/Thingie.py: * src/taco/ui/MainWindow.py: - Add a very basic brick wall. Sat Sep 24 14:28:17 PDT 2005 Christian Hammond A src/taco/thingies/balls.py: D src/taco/thingies/Ball.py: D src/taco/thingies/BowlingBall.py: * src/taco/ui/MainWindow.py: - Merge Ball and BowlingBall into balls.py. Sat Sep 24 13:07:27 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Use happy mouse cursors when hovering over a selectable object. Sat Sep 24 12:50:53 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - taco.ui.Rectangle now inherits gtk.gdk.Rectangle and gains super powers, like an already written union() and intersect(). Sat Sep 24 12:42:52 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Added Rectangle.union(). - draw() now takes a rectangle instead of x, y, width, height. Sat Sep 24 12:38:45 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Switch to using a Rectangle to keep the bounds of objects. Sat Sep 24 03:18:28 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Yay being sleepy. So, of course we were drawing from the first object in the list (index 0) to the last object. When raising, we went up the list, and when lowering, we went down. That actually places it lower in the z-order. We want it higher. All fixed now. Sat Sep 24 03:16:35 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - Add some z-order reordering functions. What's odd is that visually, the order doesn't appear correct, but the debug output says it's all correct. Good sign that it's bed time. Sat Sep 24 02:33:34 PDT 2005 Christian Hammond * src/taco/Slot.py: * src/taco/Thingie.py: * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - Objects on a canvas are now grouped into layers. There are four layers predefined: background, thingies, connectors, and overlay. - The Selection object is now on the overlay layer, and isn't treated as a special object from that regard. - Objects and layers can mark whether they're allowed to be selected. - Canvas.getObject() now takes a flag specifying if the resulting object must be selectable. Sat Sep 24 01:07:43 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Draw a white background on the canvas. Fri Sep 23 01:28:57 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: - Fix up the selection drawing so that it's actually clipped to the region it should be clipped to. It seems that stroking a path doesn't keep the stroke within the region given, so this is needed. Also use fill_reserve() instead of fill() so that we can re-use the rectangle for the stroke. Fri Sep 23 01:16:52 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - Allow dragging of items on the canvas. Fri Sep 23 00:54:58 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - Added an add() function to the canvas. All objects now have signals attached and the canvas updates the regions when things change. Fri Sep 23 00:42:09 PDT 2005 Christian Hammond * src/taco/ui/canvas.py: * src/taco/ui/MainWindow.py: - canvas.Object subclasses GObject now, and has bounds_changed and visibility_changed signals. The selection pays attention to these and updates appropriately. Fri Sep 23 00:10:40 PDT 2005 Christian Hammond A src/taco/ui/canvas.py: D src/taco/ui/CanvasElement.py: D src/taco/ui/Canvas.py: D src/taco/ui/CanvasSelection.py: * src/taco/Thingie.py: * src/taco/ui/MainWindow.py: - Consolidate ui/Canvas*.py into ui/canvas.py. Thu Sep 22 23:49:34 PDT 2005 Christian Hammond * src/main.py: * src/taco/Thingie.py: * src/taco/thingies/BowlingBall.py: * src/taco/ui/CanvasElement.py: * src/taco/ui/CanvasSelection.py: * src/taco/ui/MainWindow.py: - Thingie now depends on CanvasElement. Wed Sep 21 23:48:07 PDT 2005 Christian Hammond * src/taco/thingies/BowlingBall.py: A src/taco/SpriteAnimator.py: - Added a SpriteAnimator. It actually worked first try! I rock. Yeah.. - The bowling ball now has the "oh no!" holes. If you resize the window, you'll see it spin. It's spiffy. Wed Sep 21 23:22:55 PDT 2005 Christian Hammond * src/taco/ui/Canvas.py: - Save and restore the cairo state when drawing an element. This ensures that one element's settings don't leak to other drawing operations. Wed Sep 21 23:19:55 PDT 2005 Christian Hammond * src/taco/thingies/BowlingBall.py: * src/taco/ui/Canvas.py: * src/taco/ui/CanvasSelection.py: - Translate the offsets for an element before drawing it. Elements should now draw at 0, 0. Wed Sep 21 22:18:21 PDT 2005 Christian Hammond * src/taco/thingies/BowlingBall.py: - Bowling ball! Wed Sep 21 22:08:59 PDT 2005 Christian Hammond * src/taco/Thingie.py: * src/taco/thingies/BowlingBall.py: * src/taco/ui/CanvasElement.py: A src/taco/ui/CanvasSelection.py: * src/taco/ui/Canvas.py: * src/taco/ui/MainWindow.py: A src/taco/ui/PartsNotebook.py: - Added a PartsNotebook widget. - Added a canvas selection. - Did.. stuff.. I forgot. Wed Sep 21 02:20:42 PDT 2005 Christian Hammond A src/taco/Connector.py: A src/taco/Slot.py: A src/taco/ui/CanvasElement.py: * src/main.py: * src/taco/Thingie.py: * src/taco/thingies/BowlingBall.py: * src/taco/ui/Canvas.py: * src/taco/ui/MainWindow.py: - Port some classes from the original taco. Set up some simple drawing. Yay! I should not be up. Tue Sep 20 22:28:12 PDT 2005 Christian Hammond A src/main.py: A src/taco: A src/taco/__init__.py: A src/taco/Thingie.py: A src/taco/thingies: A src/taco/thingies/Ball.py: A src/taco/thingies/BowlingBall.py: A src/taco/thingies/__init__.py: A src/taco/ui: A src/taco/ui/Canvas.py: A src/taco/ui/__init__.py: A src/taco/ui/MainWindow.py: - Added the beginnings of Taco, Large Snake Edition.