The physics is quite rough, at the moment, but I have some ideas to make it more realistic. Inside the code you will find a nice animation system, which allows simple graphical effects to be implemented very easily. There are already a couple of text animations that appear when you "level up" (i.e. you get an additional red ball to avoid). I hope to be able to move the game to kdereview soon, so that it has a chance to be included in the KDE 4.0 release.
Issue 54
15th April 2007 by Danny AllenThis Week...
The physics is quite rough, at the moment, but I have some ideas to make it more realistic. Inside the code you will find a nice animation system, which allows simple graphical effects to be implemented very easily. There are already a couple of text animations that appear when you "level up" (i.e. you get an additional red ball to avoid). I hope to be able to move the game to kdereview soon, so that it has a chance to be included in the KDE 4.0 release.
This initially posed a number of technical problems, however, such as how to add an overlay to the game area in a way that were independent of the painting strategy employed by the particular game. The initial idea was to exploit the new Qt painting system, which automatically propagates widget content to their children, so that transparent widgets actually "show what's behind". I've rapidly implemented KWelcomeScreen using this overlay widget approach, using a container widget which stacks another one (just a transparent black overlay in this case, parent of the buttons) on top of the game-specific stuff. Every added element (like buttons) is a QWidget. This is a screenshot of the first real result I obtained with the first approach:
So I worked on a test implementation for KBattleShip, the game that Paolo Capriotti and myself are rewriting from scratch, and I managed to realize a working prototype for the game. The main problem was essentially its lack of flexibility: any graphical effect one could have wished to add would have resulted in useless X window calls and repaints, and ultimately in noticeable flickering and sluggishness. The only way we had to remove the flickering was to use a composite manager. And it wasn't still possible to add any kind of animations.
Therefore, Paolo started a refactoring of the class (while I was implementing some other cool graphic effects) which moved the whole painting and inputting logic in a separate class. This class can be used to adapt the painting mechanism to the specific game graphic framework (whether it is a simple QPainter-based approach, QGV, KGameCanvas or whatever) with very little work, or alternatively can be employed by a transparent widget just like in the original approach. The drawback is that it does not reuse the standard widget inputting and layouting system, but includes a simplified custom algorithm to compute button positions and implement mouse tracking. That shouldn't create any pain to the final application developer, though.
We now have the basis to implement in real life the faboulous concept that Johann presented in his blog. It will hopefully become a major feature in KDEGames 4, and could be easily used in other apps as well, maybe instead of modal dialogs (it is much nicer and way less annoying). We made all this all in just 5 days. We still need to finish the animations and improve the graphic (read: beauty; I will take care of this, as I'm also an Oxygen artist), and fine tune a bit more the API, but the class it's already at a really good point.
- Configuration with KConfig XT.
- Introduction of themes (installable in $KDEHOME/share/apps/bovo/themes), configurable on-the-fly from the GUI.
- Four Bovo themes are now in SVN (all four in need of artists), they are Scribble, Spacy, High Contrast and Gomoku.
- Theme names and comments are translatable in the same way as .desktop files.
- Undo Move
- Gameplay Hints
- Demo mode, where two AI battle each other, demonstrating how the game is played
- Auto saving unfinished game at exit, and restoring that next time bovo is started. If no auto saved game is found, demo mode is launched.
- Statistics of wins and losses are saved from session to session.
- Everything on the board is now painted with svg elements from the themes, and everything is animated (configurable from GUI and configuration file).
- Bovo is more user-friendly now that it highlights the coordinate the mouse pointer hovers (if the coordinate is a legal move, i.e. not already in use). This is very important in Gomoku with its reversed grid background.
- And some more things I think I might have forgotten...
It is about time, we do the next step on the KDE 3.5 series:
releasing KDE 3.5.7.
I put the following dates into the 3.5 Release Schedule:
- April 16th: Message and documentation freeze
- April 30th: Tagging
- May 8th: Expected release date
Thanks, Stephan
Akademy is the annual KDE World Conference for both users and developers. As an annual event, the previous conference is not concluded before planning for the next event has begun. A call for proposals for Akademy 2008 has been made, the perfect opportunity for enthusiastic and dedicated local groups to bring a slice of KDE to their home region. Malága, Dublin, Glasgow - your city can also become a strong part of the KDE history and identity!
The projects span a wide range of areas, but all have one thing in common - all will advance the KDE desktop, with the improvements lifting KDE 4 to greater heights.
As the Summer of Code gets up to full speed, the Digest will feature weekly introductions and updates directly from the developers about their projects as they follow through to completion.
Statistics
Commits | 2552 by 221 developers, 5466 lines modified, 1051 new files |
Open Bugs | 13303 |
Open Wishes | 12458 |
Bugs Opened | 249 in the last 7 days |
Bugs Closed | 207 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/KDE |
738
|
/branches/stable |
415
|
/trunk/playground |
302
|
/trunk/extragear |
231
|
/trunk/l10n |
168
|
/trunk/kdesupport |
138
|
/branches/work |
130
|
/branches/KDE |
109
|
/trunk/www |
106
|
/trunk/koffice |
91
|
Lines | Developer | Commits |
279
|
Laurent Montel |
132
|
85
|
Thanomsub Noppaburana |
85
|
281
|
Aron Boström |
76
|
138
|
Pino Toscano |
66
|
77
|
Gilles Caulier |
51
|
118
|
David Faure |
49
|
119
|
Paolo Capriotti |
47
|
144
|
Allen Winter |
42
|
76
|
Justin Karneges |
38
|
121
|
Thomas Zander |
36
|
Internationalization (i18n) Status
Language | Percentage Complete |
Portuguese (pt) |
99.99%
|
Dutch (nl) |
96.62%
|
Estonian (et) |
93.86%
|
French (fr) |
92.79%
|
Polish (pl) |
86.47%
|
British English (en_GB) |
86.26%
|
Galician (gl) |
85.66%
|
Turkish (tr) |
83.84%
|
Russian (ru) |
82.09%
|
Catalan (ca) |
78.43%
|
Bug Killers and Buzz
Person | Bugs Closed |
Tommi Tervo |
29
|
Oswald Buddenhagen |
29
|
Christophe Thommeret |
27
|
Thomas McGuire |
23
|
Mark Kretschmann |
11
|
Bram Schoenmakers |
11
|
Andrew Walker |
10
|
Gilles Caulier |
6
|
Pino Toscano |
6
|
Kevin Funk |
5
|
Program | Buzz |
Amarok |
5135
|
K3B |
4124
|
KMail |
3030
|
Kate |
2960
|
Kopete |
2553
|
KDevelop |
2521
|
Kaffeine |
1536
|
Kicker |
1510
|
Kontact |
1446
|
Ark |
1424
|
Person | Buzz |
David Faure |
964
|
Allen Winter |
582
|
Stephan Kulow |
556
|
Adriaan de Groot |
518
|
Waldo Bastian |
436
|
Aaron J. Seigo |
426
|
Albert Astals Cid |
372
|
Jonathan Riddell |
371
|
Thomas Zander |
283
|
George Staikos |
282
|
Commit Countries
Commit Demographics
Sex
Age
Contents
Bug Fixes | Features | Optimization | Security | Other | |
---|---|---|---|---|---|
Accessibility | |||||
Development Tools | [] | [] | [] | ||
Educational | [] | [] | |||
Graphics | [] | [] | [] | [] | |
KDE Base | [] | [] | [] | ||
KDE-PIM | [] | [] | [] | ||
Office | [] | [] | |||
Konqueror | |||||
Multimedia | [] | [] | [] | ||
Networking Tools | [] | [] | |||
User Interface | [] | [] | |||
Utilities | [] | [] | |||
Games | [] | [] | |||
Other | [] | [] |
There are 132 selections this week
Bug Fixes
Development Tools
deep-copy all strings before giving them from the background-parser to the foreground, this hopefully fixes the crashes some people are seeing with the new c++-parsing features
Substitute shell variables with real values. Note: The shell variables need to be set when starting KDevelop
Also fix a small bug along the way wrt. opening include( foobar.pri ).
Graphics
Remove the need for restart when changing album thumbnail size in setup:
- add method to set thumbnail size in AlbumThumbnailLoader (clean cache etc.)
- add signal from AlbumThumbnailLoader signalling the need to reload all thumbnails
- connect to this signal in the relevant classes
(bug is now really fixed)
Fixed a precision problem that produced some artifacts when zooming images in the preview and canvas since a wrong tile was chosen when painting.
Limit the border width of an ellipse so it doesn't extend beyond its own edge
Make legend respect font color
Correctly handle 'advance one screen' when in 'read to end' mode
handle superscript or subscript at start of label
KDE Base
More checking to avoid potential crashes. Could happen in case of bad timing, the device is already gone when the model is asked info about it.
Make encoding detection engine public (KEncodingDetector) part of kdecore.
Now, together with structurized KCodecAction, it can be used in any app to provide encoding detection magic to the average user.
(this, however, mainly defines interface, and the actual heuristics is subject for the improvement)
Integrate this feature into katepart and back into khtmlpart.
Now go to katepart open/save configuration page and make you choice!
Improve detection heuristics for Cyrillic and Western European (almost 100%!) along the way
TODO: It already checks for html and xml tags, so check also for \usepackage[utf8]{inputenc}
Maybe it will take advantage of 150kb libenca someday, when its cyr detection heuristics become more sophisticated and the humans get terabytes of RAM in their brains^Whomes
Fixing anlog the way palindromic bug 55355
- added some entities
- removed the entities used in url kde-look.org since here "KDE" doesn't need extra accentuation
There are no global entities for IceWM or deKorator, so I left them at that.
Thanks Natalie for the report.
Fix focus with RMB/Put Into Run Dialog. I didn't even know K-Menu could do this.
work around solaris < 10 PAM breakage. will backport immediately.
give the hack a few seconds to exit.
KDE-PIM
Make KMail remember the SMTP password.
Thanks for the patch Luigi.
Bug 144040: Prevent pre-alarm actions being executed multiple times when alarm is triggered
Multimedia
Set the lame encoding to VBR/ABR when choosing a quality level.
Features
Educational
A search bar for KWordQuiz
Don't bother trying to be clever about the order that functions/constats are loaded in (see bug 143747); instead just reparse everything once everything is loaded. This solves complex dependencies such as constants being defined in terms of functions, etc etc.
New Earth Satellite tracks!
The display shows a curve across the sky, which is the path of a satellite over the next hour from the current location. The color of the curve can be modified, and you can toggle whether satellite tracks are drawn in the Solar System tab of the Options window.
TODO:
+ Right now, only three satellites are included: HST, ISS, and UARS. Many more are available, these are just for testing the feature.
+ Need to add satellite data to the Get New Stuff mechanism
+ Add tickmarks to the tracks, indicating the time of the passage
+ The path should be darkened where the satellite is in Earth's shadow (this information is already available, it's just a matter of using it).
+ Make thickness of the line proportional to brightness of the satellite?
Graphics
Add an option to force the printing of the page rasterized as image instead of converting PDF commands to PS commands.
This "decreases" printing quality as the thing you print is no longer vectorial, but it is useful for printing files that would fail otherwise because our PDF->PS converter is not as perfect as it should be.
rewrite the pdf analyxer using poppler-qt4 frontend
Splash screen messages:
Remove messages for every single plugin - no one can read them anyway, they are displayed to fast.
(for KIPI plugins, they are emitted when the actions are plugged, not when the plugins are loaded - very fast. For image plugins, we could have messages when loading - slower, but they are still too fast)
Do not display "Reading database" when in fact KIPI plugins are loaded.
Introducing the CollectionManager.
This is the first step to support a collection spread over multiple locations
(multiple library paths in current wording).
The CollectionManager implementation is mostly a fake though, only one location is supported.
A real implemenation requires a database table, and the KDE4 Solid API.
These are the places where new albums are created.
When the user chooses to create a new album under root, in the future, there are two possibilities:
(1) ask under which album root path to create
(2) have one default path
Currently, CollectionManager::oneAlbumRoot() is used, which is option (2).
KDE Base
Added start of a todo for 2DView and KML support.
Add fancy date format option to formatDate() and formatDateTime().
The old forms of these methods are marked as deprecated, to give time to convert the rest of KDE. The deprecated methods will be removed next Monday.
Use a splitter so that the user can resize the output window/treeview. Patch by Shane Richards
fix #144021: show free space in GB instead of used space in percent
Some work on the indexless indexreader.
Add the ability to analyze mpeg video files.
Renamed OntologyLoader to OntologyManager.
Reimplemented the OntologyLoader as a replacement statement reader:
* The NepomukOntologyLoader reads ontologies from the RDF store
* The DesktopOntologyLoader parses ontologies from RDF/S/NRL files installed in KDEDIRS/share/apps/knepomuk/ontologies
* The FileOntologyLoader reads an ontology from one specific file.
Using libKonto to compare used resource types. Thus, now two resources can have the same identifier if they have different types. Different types, however, means that the types are not in the same branch of the type hirarchy.
Example: Resource( "test", "nie:File" ) == Resource( "test", "nie:File" ) != Resource( "test", "nao:Tag" ) == Tag( Test" )
add support for OLE property streams. currently we only extract the string fields, its easy to do more though
add support for extracting images from microsoft powerpoint files.
Improve look of font thumbnails.
KDE-PIM
Issue/1530 - make preferred form of forwarding configurable. Right now, works only with the context menu from the header view. Needs more work if the same is need for readerwin and mainwidget.
Ported to KSystemTrayIcon. Only unsolved details is popup menu with notes list - right now it shows at fixed position because i have no idea how to get on-screen coordinates of tray icon.
kiosk-like setting for admins to prevent a too small imap mailcheck interval
<a href="https://intevation.de/roundup/kolab/issue1640">https://intevation.de/roundup/kolab/issue1640</a>
Allow the user to cancel kmail connection attempts when the account settings are incorrect (Novell bug 247903).
Office
Change inheritance to inherit QComboBox after all
- was needed to get the painting right
- and allows the code to be much simple
- unfortunately it also exposes the api of QComboBox which is now defunct
Also changed the popup behaviour so that the slider knob now appears right below the mouse when it pops up.
Refactor saving to account for text frames and groups/layers inheritance.
This merges the design from many months ago with what was in svn.
I also added rudementary saving in kword for testing purposes as well as a silly tag in the TextShape.
Fixed various bugs in the saving of shape data as well.
A text shape is always enclosed in a draw:frame in ODF, so lets write one out if the one calling us has not done so. (yeah! I now save valid ODF that you can load again! ;)
Introducing a new KoCopyController.
The idea here is to enhance the normal KAction generated with KStandardAction::Copy to also work for flake.
I added signals / slots for applications (like krita) that have a selection outside flake.
In KWord I added this and I now see the copy action on the toolbar and it interacts with the flake text plugin perfectly.
Add framework for copying the selection to the clipboard.
What I'm placing on the clipboard is currently just the odf stream with 'text:p' tags etc. Not sure where to find what the actual accepted format is specified.
Multimedia
add opaque overlay support to phonon-xine
work on the new collection browser to make it use the new Collection/QueryMaker architecture
*it crashes when you try to expand a second level item, so don't try that unless you want to fix them:)
*i have no idea why the local collection is shown twice...
Networking Tools
Preliminary optional support for XDamage, checked both at compile and run time.Uses less cpu than Qt approach, but visually sucks. I suspect there are too many updates sent to the client, I need to group the rects and create a bigger one when sending the event to the client.
User Interface
Utilities
Games
State of Terror: a new KGoldrunner game ... just when you thought you were safe ...
extend playing board from 14x14 squares to 22x22
Refactor: Game and AI now communicates with each other entirely with slots/signals, which makes it very extendable. Someone could write a networking interface and plug it right in where the AI is now, and it would work the same. Also, one could let two AI's battle each other (demo mode).
Start of high score group support
Speedup artificial delay in AI. (The delay is needed, because the AI is too fast for Qt's signal/slot system -- I don't know why, but without a delay every thing just hangs --, but it obviously only has to be a few millis, not hundreds of millis)
- Move all rendering code to one place - KReversiRenderer
- Add support for background.
Johann, please take a look.
Currently I draw board on top of background with opacity 0.5
Perhaps the board svg needs to be adjusted somehow now that we have a nice background.
And what about cases when window is non square - then plates with balls start to look like ellipses ;)
...tap tap, is this thing on?
Introducing themes!
* changes alignment and background drawing in the QGV to allow themes with bg color other than white.
* clean up ugly code in Scene (width()/width() is rather silly)
* Finally, only use one QSvgRenderer!
* change theme file format to only use one svg
* centralizes theme handling code to One Single Spot(tm) in the ctor of Scene
* introduce new theme "spacy"
default theme is the old "scribble", to change run "bovo -theme spacy"
* The server moves first.
* Playing against someone using the old (patched) client finally works!
Finally, KScoreDialog has got proper support for score groups. It's always had the ability to save your scores in different groups but if you wanted to view them all you couldn't. Now we've got a tabbed dialog without breaking anything (or even changing the API :D). It's not that pretty yet but if you all try it out and give me feedback, I'll do my best to sort it out. Enjoy!
* Added short delay between sent messages.
* kbs is finally compatible with the old versions.
Import of KWelcomeScreen, a new class for games, still in embrional state. It will be a major usability improvement for KDE Games, and will be developed in this branch for a while, until it will be mature enough to live in libkdegames.
It will provide an overlay transparent widget and some buttons, so that the user can easily start a game, without having to browse through all the menus.
This is more or less the idea: <a href="/issues/2007-04-15/files/start-menu.png">http://johann.pwsp.net/wp-content/uploads/2007/04/start-menu.png</a>
Add support for l10n of Theme name in themerc with
Name[de]=
Name[nl]=
Name[pt_BR]=
and so on...
Other
Optimization
Development Tools
Do not update the framestack widget when it is not visible.This makes stepping over/in in the debugger much faster.
Graphics
some intial work on having optimization of the distortion parameters (it works somehow, but it seems I have been wrong in thinking that I could ignore both scale and rotation change :/ )
DB::MemberMap::hasPath(..): Try to avoid recalculating member map closure.
This could make a big difference in database loading time.
Optimize Utilities::shuffle(..) and generalize it by making it templated.
Old version was slow when shuffling large string lists, because it did O(n) times random access operation (namely list[index]), which is linear time. => Total complexity O(n^2).
New version uses array instead of list. This makes random access constant time. => Total complexity O(n).
Other
Development Tools
drop support of ancient umbrello files
Educational
Use the new QSvgGenerator from Qt 4.3 for exporting to SVG. This means that kmplot is now qt3 free!
Graphics
Merge /branches/work/~dang/kdegraphics/kolourpaint/ -<a href="http://websvn.kde.org/?rev=651305">r651305</a>(last merged upto):651355 to be up-to-date.
The changes are critical and fix the last 3 months worth of regressions due to KDE 4 kdelibs changes.
If you now update kdelibs for my KColorCells fixes, KolourPaint should work as well (or as badly) as it did back then.
* Make kpColorCells a reasonable size again after KColorCells API changes
* Restore the Tool Box icons: Rename icons from "crystalsvg" to "hicolor" so that they are picked up by the new default KDE 4 theme "oxygen", which inherits from "hicolor". I think this is the correct long-term solution as it works even when the icon theme is changed (please correct me if I'm wrong).
From strace, I found that KDE isn't even looking in the "crystalsvg" folder.
The "icons in koffice" thread on the koffice-devel mailinglist is informative.
* Make Tool Box button size reflect icon size - corrects and clears 'revision 649443, Mon Apr 2 17:07:04 2007 UTC'
* Fight KColorCells selecting cells - now clicking a color cell does not make it turn violet.
Remove the code in the disabled paintCells() that did that for the pre-KDE4 version of KColorCells.
* Minor changes
Branch Kst for v1.5. New work will be done in the branch, and bugfixing with review requirements will remain for trunk. 1.4.1 will be cut from trunk.
KDE Base
Autoresize the "places" item sizes as discussed with Ellen.
We want to fit as many items as possible on screen, while keeping them as big as possible.
Allow the user to hide less used places as discussed with Ellen.
They're shown again dynamically when the user enters ine if the hidden places. We also allow to show them all using the context menu.
Don't use long for 32 bit types on LP64 platforms.
Now Konqueror can use e.g. flashplugin on x86_64 with nspluginwrapper :-)
more code dupe. whee =) but at least this way we can ship those three tarballs of kdebase.
OK, we can wait 3mn before deleting a tempfile, if it helps with apps that fork on startup like OOo or amarok.
Thanks to Jonathan Marten for the idea and patch.
Now that is really incredible what a fantastic commit Erik landed today in kjsembed.
Man, you fixed _all_ known segfaults within the unittest. More then a lot of thanks!
Committing the first version of a manifesto for Marble
A new branch of KMainWindow <> xmlgui decoupling
KDE-PIM
scrubbing, indenting, styling.
this code was especially messy
Office
Never use contracted words; so replace "Don't" with "Do not".
Also remove the Never use contracted words; so replace "Don't" with "Do not".
Also remove the & as the kdelibs will auto add them, so no need unless there is a special need to choose one key. as the kdelibs will auto add them, so no need unless there is a special need to choose one key.
Creating branch for change tracking development
Multimedia
Changed the order of the main toolbar items around, so that it's easier to reach the important controls (Fitt's law).
Networking Tools
Tonight on The English Breakfast Network, your favourite saga of code, love and intrigue: Krazy decides that the includes had better take their place, or else. Will The Programmer help Krazy with getting those headers to move?
And will the Developers stand by idly as the fearsome Lady Autotools forces them to rebuild much, if not all, of their Application?
This and more after a short message from our sponsors...
User Interface
Added a cute script for exporting PNGs from SVGs in kdelibs. Must be runned from kdelibs/pics/oxygen/scalable.
Utilities
Hi Richard, this is the Italian translator of the Katapult docs.
Sorry for stomping on your turf, but I found that the Katapult docs did not comply with checkXML for reasons trivial enough that I decided to fix them myself. Two problems:
1- There are two couples of date/release tags; probably you just forgot to push Ctrl+S just before finishing or something like that.
2- I took the liberty of inserting your name and mail's entity into the file directly. There is a very good reason for this: Katapult should compile with KDE 3.4 (as according to docs), but those entities are not present in that version. This is a problem typical of packages released independently of kdelibs (KOffice and extragear), that they cannot rely on kdelibs being sufficiently up to date and containing the author entities. In my KDE 3.5.5 your entity is missing, and therefore any compilation attempt would fail at doc-generation time for any KDE <=3.5.5.
Cheers!
Games
Behavior changes:
Now you can advance to the next level only after you've completed all the previous.
But there's still a possibility to navigate between levels without restriction:
launch katomic with "--hackmode" command line option (as discussed with Johann)
Removed that ugly scrollbar from top, added "Previous Level", "Next Level" actions to game menu
Other
Add patch 0166. Contents:
Update QtDBus to that found in Qt 4.3 snapshot 20070414. This is a major update and, fortunately, all source- and binary-compatible.
It includes a couple of bugfixes and introduces two front-end features:
* multi-threading capability
* QDBusArgument created by the user
No regressions are expected, but report any problems you find after updating.