2 - added "clean" theme with experimental alpha support
3 - added pngs missing in "gray" theme
4 - added various checks for required style information
5 - added "down_offset" style for shifting button contents when clicked
6 - added support for PGU_THEME environment variable
7 - added code for handling widgets that need alpha blending
8 - bug fix in basic.is_color
9 - bug fix in basic.Label.set_font
12 - fixed a python3 compatibility problem with setup.py
13 - module html.py now working under python3
14 - added an "activate" signal to text input box
15 - removed some obsolete files
16 - removed html5.py example
19 - fixed the documentation generator script so it works with the new docstrings
20 - various fixes to make PGU compatible with python3
21 - better error handling in various places
24 - replaced use of __setattr__ with property and setter functions
27 - fixed: removed string exceptions
28 - fixed: converted docstrings to standard python format
29 - fixed: table properly expands vertically
30 - fixed: Widget.get_abs_rect now reporting correct rect
31 - fixed: unicode and font problems with button and label widgets
32 - fixed: various problems with handling of colors and alpha value
35 - active development and maintanence taken over by Peter Rogers
36 - bug fixes for pygame 1.8.1
39 - added: gui.TextArea - thanks to Clint Herron for this really nice widget!
42 - fixed: python 2.5 compat issue
43 - fixed: mouse wheel doesn't send CLICK events anymore.
44 - fixed: reduced number of copy() operations (which was causing a bit of a memory leak)
45 - fixed: made ScrollArea creation work for more pixel perfect kinds of cases...
46 - fixed: added needed style info into style for dialog
49 - added: support for style loading .ini files
56 - changed: filedialog now uses the dialog class for most all of its
57 parts. main style change is that
58 filedialog.title.label => dialog.title.label
59 and all other filedialog items are gone, except for
61 - changed: filedialog style requirements to be much simpler. in general
62 it just uses dialog and default labels, etc now.
63 - fixed: some excessive repaints going on due to use of chsize() before a paint().
64 now chsize() doesn't do anything until after the widget is painted at least once.
65 - fixed: some code in VScroll, HScroll that was causing extra resizes within tables
66 for no particularily good reason.
67 - fixed: menu not working bugs
68 - changed: menu so that the cls of a menu doesn't change, it just keeps
69 the down pcls while down.
70 - fixed: bug where get_abs_rect() was wrong due to theme stuff... kind of a HACK
71 - added: shift-TAB for previous support
72 - fixed: bug where TAB could cause a crash if no non-container widget
73 was in focus at the time.
74 - changed: added support for width,height scaling for Image widgets
75 - changed: improved caching of style data so that complex screens repaint much quicker (removed .cache() method from style object)
76 - changed: misc changes to add better keyboard / nav support to many widgets (selects, sliders, etc)
77 - added: ability to move between widgets via arrow keys .. to stop this behaviour, make sure the
78 widget that has focus returns True to say that it "already used the event"
79 - changed: after an event() handler, user should return try if they used
80 the event. otherwise a container may use the TABS, arrow keys, etc for
81 navigation or other purposes. somewhat optional, will only impact
82 widgets that use tabs/arrow keys ATM.
83 - added: a Link widget
84 - fixed: bug where pygame would crash if full screen was toggled
85 - fixed: some style issue in the select widget
86 - fixed: some rendering issues with sliders being off by a few pixels
87 - fixed: some icon styling bugs due to incorrect init order.. but i'll still probably
88 deprecate it anyways! ha!
89 - fixed: backgrounds of widgets that are getting repainted, etc.
90 - fixed: disabled backgrounds that didn't appear correctly
93 - fixed: bug in dialog.py -- directories with '!' at beginning were being sorted after '..'
94 thanks Jason Liu for this patch
95 - fixed: bug in high.py
96 - fixed: scrollbars scroller not the right size
99 - added: gui16.py and gui17.py some new fun gui examples.
100 - fixed: isovid doesn't work when using run_codes 'cause it gets
101 width and height from the wrong thing!
102 - change: PIL support removed from tileedit, the code is still in there if someone
103 wants to troubleshoot it
104 - fixed: in tileedit, line 109 should be assert mode in ("RGB", "RGBA"), not assert mode in "RGB", "RGBA"
105 - fixed: when the scroll area is really short, etc, having 3
106 scroll arrows can take up too much room. so now it only shows as many magic scroll
107 buttons as it can fit neatly.
108 - fixed: using app.paint() with custom event loop skips chsize related stuff
109 - fixed: install script error, where Vera.ttf was not installed
110 - fixed: timer.py bug where the first frame is really long sometimes
111 i think this is due to some kind of a pygame bug
112 also, when FPS are set to 0, the timer is now set to
113 go at "full rate" instead of give a div by zero error
114 - fixed: ScrollArea / SlideBox.widget = x doesn't work.
117 - fixed: gui11, when everything is removed scroll bar is removed
119 - fixed: gui11, graphical crud shows up after removing stuff, sometimes
120 - fixed: Select can drop below window sometimes, and it looks bad.
121 now Selects that are at the bottom of the screen may go upwards.
122 - added: ProgressBar widget & documentation.
123 - fixed: if the widget in the scroll doesn't fill it up,
124 doing any scrolling causes a crash
125 - fixed: gui.Menus not working due to focus related fixes
126 - added: widget.connect gets *values, not just value to pass on
127 so that you can have multi-param methods. See widget.connect
128 documentation for details.
129 - added: widget.send can send the event and the widget to
130 the reciever if the receiving fnc has the params named
131 _widget or _event or _code. See widget.connect documentation.
132 - fixed: disabled items in scrollarea don't get alpha-ized due to
133 alpha image that is being drawn to.
134 - fixed: scrollers don't scroll quite like normal scrollers do...
135 - fixed: slider size can get too small
136 - added: scrollbars added in arrows, so that they are scrollbars
137 instead of just sliders.
138 - fixed: sliders & scrollbars inconsistent, and don't look good
139 - fixed: weird border in scrollarea, sometimes...
140 - fixed: internal cleanup of ScrollBox, etc. the scollers will
141 automatically appear when the sub-widget gets bigger, smaller, etc.
142 - fixed: when you click on a disabled widget,
143 the click can slip to a non-disabled widget
144 - added: .disabled, .focusable attributes to widgets,
145 see widget.widget documentation
146 - fixed: .add, .remove for Container, Table, Document so they
147 all work properly. gui14.py adjusted to demo accordingly
148 - fixed: select to work, by adding an improper use of resize ;)
149 - fixed: a number of improper uses of resize()
150 - fixed: gui.Table to only resize() something a second time
151 if it _really_ needs to
152 - fixed: gui.Table to clear() out old rows properly
153 - fixed: gui.Widget so that chsize() would work a lot faster (thus
154 the gui13.py example is very nice and smooth now, doesn't feel like
155 it is lagging anymore.)
156 - fixed: ScrollBox a lot faster by using double buffering
157 this will, however, require a lot of memory for large buffers
158 but hopefully that won't be a problem, it makes examples/gui12.py blaze
159 during scrolling, whereas before it was quite slow even on my 2x3 GHz machine.
160 - fixed: "calling Button.event() before Button.paint() causes crash"
161 - fixed: "container.remove makes a widget stop working but not disappear"
162 - fixed: some docs about a bug whereby container.add(w) won't work
163 after the app is running
166 - fixed setup.py to work on my system when installing pgu
172 - added in new documentation -- HTML only now.
174 - added jhofmann's tiled preview widget to tileedit
175 also included PIL support
177 - removed gui/background.py -- merged contents into Theme. Made theme interface more cleanly seperated Widget.py
178 jhofmann: added tiled preview widget to tileedit
180 - zx64: in tilevid4,5 examples -- removed bold so that they work on more systems
182 2005-12-10 - 0.10-alpha-ludumdare-7-full-combat-version
184 I've released this one just hours before LD #7 so that you (and I) can both benefit from
185 some nice time saving features!
187 All this stuff is alpha and subject to change before a real release!
189 - fonts.py -- functions for loading bitmap based fonts (useful when TTF just doesn't cut it!)
190 - algo.py -- functions for path finding (useful for guards, etc in games)
191 - ani.py -- functions to help load animations into your vid objects (just plain useful)
194 - levelfancy -- a script for taking a basic level and fancying it up -- try this in
195 examples: ../scripts/levelfancy map.tga level.tga fancy.tga
196 then view each of those tgas with leveledit to see what is going on...
199 I removed tganew ages ago, but I'm putting it back. I like it.
201 During this contest I will be available in #ludumdare and #pygame for questions
202 related to using pgu. Have fun in the contest! If you find any bugs or anything I'll be
203 glad to fix 'em and release a mid-contest version of pgu!
207 I added INSTALL.txt with some install instructions, as well as instructions
208 for distributing pgu with your game/application.
210 **** Minor API Update ****************************************************
211 Sorry about this, but I realized after releasing 0.8 that the new theme loading
212 API wasn't very good... (And had some bugs to boot!)
214 This update will be in comparison to 0.7, since I don't think many people
217 For using the default theme, the API remains the same (do nothing special).
219 For using an custom theme:
222 gui.theme.load("gray")
225 theme = gui.Theme("gray")
226 app = gui.App(theme=theme)
228 Also you can use your own fully custom theme (oooh!)
229 theme = CustomTheme()
230 app = gui.App(theme=theme)
231 **************************************************************************
236 phil: fixed tileedit and leveledit to use new theme loading API
237 phil: fixed tabbing bug where last item would not get tabbed to
238 phil: fixed setup.py to install pgu.gui
239 phil: fixed pgu.gui to import pygame.locals
241 **** Minor API Update ***************************************************
242 The API for loading a custom theme has been changed...
245 gui.theme.load("gray")
249 app.theme.load("gray")
251 Also you can use your own fully custom theme (oooh!)
253 app = gui.App(theme=theme)
254 *************************************************************************
256 Cthulhu32: found bug in leveledit where file name isn't picked correctly
260 **** Crazy API Update ****************************************************
261 Theme decorations are now seperate from the Widgets. Thus:
263 * Widget._resize() was removed
264 * Widget.getspacing() was removed
265 * Widget.resize() returns None was changed to Widget.resize() returns w,h.
266 The container is responsible to do this:
267 widget.rect.w,widget.rect.h = widget.resize()
268 * Widget.chsize() was added, it requests that a widget be re-resize()ed --
269 similar to Widget.repaint()
270 * To disable the theme decorations on a widget:
271 widget = Widget(decorate=False)
273 **************************************************************************
275 - phil - added chsize() method which requests that a widget be re-size()ed. (similar to repaint() or reupdate() except for the resize() method
276 - added default font (Vera)
277 - removed non-working hide,show calls
278 - fdarling - added a new table class that works a bit cleaner. should
279 not have any noticiable API breaks.
280 - fdarling - reorganized pgu.gui to be a package
282 - added input type='file' to pgu.html
283 - fixed Toolbox bug (Toolbox.value = x wasn't working right)
284 - create circles in tileedit
285 - flip bkgr/tiles in leveledit
287 - tileedit / leveledit - illume added a feature where by you can check
288 a box to "auto-save" your tiles when you blur the window. leveledit
289 will auto-reload those changes.
291 - since the getwidths() feature was broken anyways, it has been removed
292 - when you create your main container for your app you _may_ need to
293 add align=-1, valign=-1 to get it in the top right corner the way
296 - phil -- added Vera.ttf to theme, did some cleanup
297 - gal koren -- added a FileDialog, List, misc patches, etc, added gui11, gui12 as demos of new features
298 - fdarling -- fixed some UI issues in Menu
299 - gal koren -- fixed a focus bug
300 - exampes, gui9 - -save/saveas are broken -- fname is set to a widget
303 - gal koren -- submitted an excellent ScrollArea widget to pgu.gui -- see it demoed
305 - added default size to HSlider, VSlider in the theme
308 - fixed you can select a tile outside of the tile area by using the up arrow once ..
310 - fdarling -- fixed some UI issues with menus and sliders and did some general code cleanup
311 - fdarling -- use None instead of 0 for nulls throughout the code
313 - added to leveledit/tileedit: "are you sure you want to quit" / "you still have files unsaved..." for before "quit" or "open" or "new"...
314 - added open/new/saveas/save, etc to tileedit/leveledit
315 - removed tganew. update docs to reflect removal of this artifact
317 - fixed gui CLICK events so that they only occur when hovering over the widget
318 - fixed gui hovering so that when a mouse button is down, the mouse won't hover over widgets that aren't in focus
319 - fixed gui so that tabbing works a bit better
320 - fixed gui so that QUIT event is only sent when no (modal) windows are being displayed.
322 - added isovid, hexvid support to scripts/leveledit
326 - added pgu.timer.Speedometer
328 - fixed gui.Button so that width,height works
329 - fixed html so that valign=middle (not center) works
330 - added better css for labels throughout gui, see new config.txt
332 - added shift+arrows to leveledit to move view by 1/8 screen
333 - added ctrl+arrows to leveledit to move view by 1 screen
334 - add scrollbars to leveledit
335 - fixed tutorial docs in gui10
336 - fixed bug where sprite wouldn't work without an ishape
339 - fixed leveleditor so it displays backgroud / grid
343 - fixed do_br in html
344 - fixed rendertrim in html (no longer modifies the passed in rect)
345 - removed some debugging prints from html
346 - engine no longer requires screen for Game.run()
347 - ColorPicker in examples now works faster (doesn't repaint whole screen)
348 - fixed most of the crashes related to widgets going outside of their parent surface (when a widget is placed partly (or totaly) out of the screen: crash!) - input should move to the left when you max it out (gui.Input.paint)
349 - explain in tutorial/docs how to use tileedit and leveledit under windows
350 - fix .txt files so that they work under windows notepad
351 - fix tileedit, leveledit to work with new gui module
352 - make pcls work correctly for tool, input, keysym
353 - some not-so-standard-ascii characters make gui crash when inputted (gui.Input.event)
354 - when you tab after the final widget (at least in ReciPy): crash! (gui.Container.next)
355 - when you add something to a select (after it is already displayed): crash! (probably needs a resize)
356 - tab to next widget doesn't always work
357 - cleaned up the tiles.tga for the tilevid examples
360 - change container.resize to give out proper width/height depending on
361 the widgets contained, or style.width/height if appropriate
362 - refine the table auto-sizing algorithm a bit more
363 - make document work with resizing sub widgets
364 - h1,h2,h3 css in themes
368 - in Tables, use .td() instead of .add() except when you want to add an object
369 as a "table cell" (it will be expanded to fill the cell)
371 - widgets are not given a size in __init__, they are given a size by resize(), and their rect_margin, etc are created using _resize()
372 - now you can set up margins, borders, padding, just like in CSS2 (more or less). You may also
373 assign whole groups by omitting the _top/_right/_bottom/_left
374 e = Widget(style={'border_left':2,'border_color':(255,0,0),'margin':4})
375 - backgrounds respond to .pcls
376 - Box (background) widget removed and replaced with a CSS2 Box widget. The Box widget is used
378 - Background widget created to replace old Box widget.
379 - some style parameters like padding_* must now be passed via the style dict:
380 e = Widget(style={'padding_left':4})
381 - change getsizes api to getwidths()
382 - clean up table API -- colspan, rowspan, row, cols, etc.
383 - make table sizing work such that:
384 - table.style.width, height force that min/max size
385 - suggested width/height only _offers_ it to be that big
386 - td.cell_width/height force min/max size, unless the min is greater
387 than that size, then it will have to be bigger
390 - add default palette to tileedit code
391 - add #s for default codes in leveledit
393 - add a leveledit / tileedit / tganew documentation page
394 - rename tilecollide class -- merged into tilevid class
395 - finish doc generation
396 - make sure theme loading works in all cases ./$theme ../data/themes/$theme /usr/share/pgu/$theme
397 - gui - make event, not _event work with tut10
398 - get rid of /docs/tiles-samples and use the space shooter stuff
399 - write documentation
400 - update tutorials to use my ## format
401 - get text wrapping to work with paragraph breaks
403 - move /docs/examples to /examples
406 - combined PGU, PGL and KJV into one package
408 2004-07-23 - "pgu" 1.1
409 - command line interface improved considerably
410 - use .ini files for init