The player database

With glGo 0.0.5.5 comes a new player database which is implemented in Python and used as a sort of "plugin" (embedded python, to be exact) within glGo. Right now it offers the friends/bozo list known from the Java gGo, the possibility to edit and assign custom flags and write a comments about a player. Additionally directories can be scanned for SGF files and all games of a certain player be looked up in the playermanager.

Why as Python plugin, you ask? Such stuff like database access is much easier to do in Python than in C++, and the possibility to access Python code from within a C/C++ program makes integration into glGo painless. The idea of a player database has been around and suggested for the gGo Java development since a year ago, but I never implemented it because it seemed a quite complex task. With Python such things are easier and faster to write. The only disadvantage I can see is, on Linux you need Python 2.3 runtime installed. But Python ships with all Linux distributions, so it should not be a big deal. Type "apt-get install python" or whatever your distribution offers and you are set. Windows users don't need to bother, the glGo Windows installer comes with all required libraries.

There are several ways to access and edit the player database. From within glGo you can assign friend or bozo status to a player from a dialog, the playertable popup or the playerinfo dialog - just like in the Java gGo client. I do not plan to add much more to glGo itself. Instead there is a seperate application which will allow to edit and access the database in more detail, which is written in Python. Both glGo and the standalone GUI access the same database, you can edit it with the GUI while running glGo without problem as glGo will automatically detect if the database has been changed. There is also a simple Python commandline interface for the database, which might be useful for the terminal fans out there.

The GUI allows you to define customized flags, like "Escaper" or "Cool dude", and then assign these flags to a player both in glGo and the playermanager. Go to "Edit flags" in the playermanager to define up to 5 flags. You will then see checkboxes for each custom flag in the playerinfo dialogs of glGo and Playermanager. Please note a flag is stored as its number (1-5) in a player, so if you for example assign flag #1 as "Escaper" and set flag #1 in a player, then change flag #1 to "Cool dude", all players formerly flagged as "Escaper" are now "Cool dudes". You can use the filter choicebox in the first playermanager tab to get all players with certain flags set listed if you want to do some cleanups.

You can write a short comment about each player, this feature can be accessed from both glGo and Playermanager.

You can cleanup the player database, which will remove all players which are not friend or bozo, have no flags and no comment set.

If you use the autosave feature in glGo (or have a game collection on your disk from whatever source), you can create an index of SGF games within a directory with the "Scan directory" menuitem in the playermanager. The SGF game headers are parsed and the information written in to an index file. When you open the player info dialog in playermanager, you get a list of games with this player. Double-clicking on a table row opens the SGF in glGo if the glGo localserver mechanism is enabled.

The Cleanup games menuitem will remove all game entries from the index where no SGF file was found. This is useful if you manually deleted SGF files from a previously scanned directory.

The SGF index is in no way as sophisticated as Kombilo. The idea is simply to find all games a certain player has played. For more extensive studying I strongly recommand the usage of Kombilo, excellent program.

Both the Python GUI and commandline applications are bundled in the glGo installation, see the "pm" directory in the glGo installation directory, but (!) these require Python and wxPython installed (wxPython for the GUI, commandline runs without wxPython). I am aware most users won't have wxPython available. Most Linux users will have Python (you need it anyways to run glGo), but probably not wxPython. Windows users will in most cases have neither. There are standalone installers for both Windows and Linux available for download with the GUI and commandline tools which bundle Python and wxPython. See it as an add-on for glGo. I made it an extra download because it is quite large and I don't want to bloat your system if you might already have the require Python installed, and this way I can release glGo or the database GUI seperately when I change things. The Python scripts which are already included in glGo are small files and exactly the same as the standalone installer, so if you have wxPython installed, use those and you don't need the extra installer.