GAMGI new
New developments in code, documentation and website are reported here.
GAMGI 0.13.13
13th May 2009
Improved, tested, cleaned the polytope code and redesigned the way data is stored to increase maintenance and readibility. Added speedups to make the code more efficient. This code builds a 3D convex hull for 50,000 atoms under 3 seconds on my desktop system. Moved the corresponding graphic interface from Cell->Link to Group->Create. Added new options (Autonomy) and defaults (color, neighbour elements, number of neighbours). Removed (GTK 1) GTK_OBJECT casts for all g_signal_connect calls.

### What is new:

- Removed the GTK_OBJECT () cast (from GTK 1) in g_signal_connect calls, in all src/*/*c and src/*/*/*c files (but not in g_signal_connect_after and g_signal_connect_swapped calls).
- Removed Polytope code from Cell->Link (this is now in Group->Create).
- In the polytope code, added error checks to see if: 1) the selected atom is outside the current object selection; 2) Global mode is wrongly used with unrestricted neighbour distance.
- Added parameter autonomy to Group objects, as in Planes and Directions. Autonomy All and None are now working fine for Groups created by the Polytope code.
- When building polytopes, use central atom default color, when neighbour element is undefined and default neighbour color cannot be used.
- The central atom is now added, in first place, to new 1d-, 2d- and 3d- polytopes, just before the neighbour atoms.
- Found and removed a bug in the polytope code: each new Group object should belong to the first parent above the corresponding central Atom that is at least a Group object, not to the current selection.
- Redesigned the interface for Group->Create: it looks clean and functional now.
- The polytope code is now available from Group->Create.
- The polytope code is now working fine for a cube with 50,000 atoms! (screenshot soon...). It looks fast also (about 2-3 seconds on my 2 year old system).
- Found and removed a bug in the speedup code.
- Added speedup code to accelerate search for conflicts and edges in arrays.
- Debugged polytope code with new data structures.
- Changed policy for types and macros: from now on, these will be local when usage is local, instead of being defined in global headers, as before.
- Redesigned data structures for faces, edges and vertices in polytope code. The new structures are much easier to maintain and understand.

### What is next:

- Rewrite Group->Modify, to include Polytopes and upgraded Atoms mode.
- Complete the 3D polytope code, including documentation.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Rewrite the About dialog, in the notebook form, to include pages for Developers, Contributors, Supporters.
- Add a task id to operactions involving multiple scans to guarantee that there is no flag corruption when bonds are created between different molecules.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.12
28th April 2009
The polytope code seems to be working fine now, in 1D (automatically producing a range of atomic directions), 2D ((automatically producing a range of atomic planes) and 3D conditions (automatically producing a range of polyhedra atomic groups). In the last case, the array-based (for speed) 3D convex hull incremental algorithm, with conflict lists, is still operating with restrictions (the code to handle and merge coplanar faces is still switched off). Moreover, no documentation is currently avalable. The code is temporarily available from Cell->Link and then Link Polytope (though we plan to move it to Group->Create instead). This functionality is very important to describe crystallographic structures such as minerals, superconductors, etc. but also to analyse glasses, liquids, etc. We are now getting close to GAMGI 0.14.

### What is new:

- The planar polytope code, building atomic planes, is working.
- The linear polytope code, building atomic directions, is working.
- The topology arrays (faces, edges, vertices) should be replaced by structures containing arrays, to improve maintenance.
- Testing the polytope code: seems to be working fine!
- Decreasing tolerance to 1.0E-10 fixed numerical problems with the incremental algorithm in the polytope code (coplanar code switched off).
- the same conflict might be retrieved from both faces around the visible edge: we have now a simple solution to this bug: use a unique identifier everytime we get conflicts for a new face.
- Solved the realloc bugs due to outdated array memory addresses.
- Debugging the core polytope code (currently without coplanar faces) is doing good progress.
- Simplified the code handling the initial polytope.
- Simplified,reviewed the polytope code handling faces,vertices arrays.
- Completed and tested the polytope code related with conflict lists.

### What is next:

- Complete the 3D polytope code, including documentation.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Add a task id to operactions involving multiple scans to guarantee that there is no flag corruption when bonds are created between different molecules.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.11
29th March 2009
All the GTK 1 menus have now been replaced by GTK 2 Combo boxes. Wrote the GTK interface (currently only in Cell->Link) to build 3D and 2D polytopes around central atoms. Improved polytope code and wrote the remaining sampling code needed to get polytope neighbours. Debugged and tested all the polytope sampling, starting, exporting code, except the core incremental algorithm code. Fixed a bug in the XML code importing crystallographic directions with centered nodes.

### What is new:

- Improved static_group and static_cluster in gamgi_io_x3d.c
- Updated gamgi_mesa_scan and gamgi_io_x3d for group objects.
- The polytope code is now building the initial tetrahedron for all central atoms. All users options are working fine, including lights.
- Centering polytope groups is now working fine (rotations, scaling).
- The code building the initial tetrahedron, for the polytope incremental algorithm, is working fine. The final exporting code is also working fine.
- The default color for Planes and Directions (in XML, GTK interfaces), can now be configured from GAMGI XML files.
- Found and removed a bug in the gamgi_expat_import_object.c: o4 node coordinates were not properly imported for Directions, resulting in a error.
- Inverted the distance-ordered neihbours, so farthest atoms are added first in the polytope incremental algorithm, thus potentially removing closer atoms and decreasing the number of expensive polyhedra recalculations.
- Simplified the polytope code: removed array xyz (using array neighbours instead), removed routines static_visible, static_coplanar, static_mix, static_valid_tetrahedron (using new routine static_mix instead), removed variable t_neighbours (using n_vertices instead).
- Wrote the polytope code to build the initial tetrahedron, orientated counter-clockwise.
- Fixed a name conflict between Random and Polytope Link methods.
- Fixed a bug when measuring notebook size: in some cases, this size is given by tag size. Solution: hide tags when measuring size.
- Added View (Style, Color) parameters to Polytope Cell->Link interface.
- The routines to create,reset,free topology arrays in the polytope code are running fine.
- The routines to scan neighbours in the polytope code are now working fine.
- Wrote all the (cell based) scanning code needed to find the closest neighbours for each central atom in the polytope building code.
- Implemented a dialog to build arbitrary polytopes from Cell->Link dialogs.
- Converted the last GTK 1 Option Menus (Cell Type) in Cell Create and Cell Modify to GTK 2 Combo Boxes.
- Converted Borders GTK 1 option_menu to GTK 2 combo box, in gamgi_gtk_cell_create.c and gamgi_gtk_cell_modify.c.
- Converted Faces, Nodes GTK 1 option_menus to GTK 2 combo boxes, in gamgi_gtk_cell_modify.c.
- Fixed the X3D bond child scaling code (Tiago Farto).

### What is next:

- Replace GtkFileSelection by GtkFileChooserWidget.
- Add a task id to operactions involving multiple scans to guarantee that there is no flag corruption when bonds are created between different molecules.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.10
7th January 2009
Fixed a few copyright issues raised by the Debian legal team. This release includes most of the code needed to implement a fast, sophisticated 3D convex hull incremental algorithm. This is array-based (to be faster), with arrays of cell lists (to speed up sampling), conflict lists (to be NlogN), can handle coplanar issues, arbitrarily large faces, periodic boundary conditions, etc. It will be useful to describe arbitrary sets of arbitrary polyhedra defined by atoms, such as in superconductors, silicates, glasses, etc.

### What is new:

- Wrote, cleaned, redesigned segments of the 3D convex hull code.
- Finnished most of the (3D convex hull) code to build arbitrary polytopes.
- Updated the Group object, to receive the new polytope functionality.
- Redesigned the new chemical polytope code.
- Morten Kjeldgaard (Ubuntu) pointed my attention to GL2PS: an OpenGL to PostScript printing library. This looks very, very interesting for the future.
- Improved the Postscript header. GAMGI now understands and accepts both .ps and .eps name extensions.
- Fixed the legal issues regarding Mark Kilgard's green book code. Many thanks to Mark Kilgard, for clarifying the issues raised by Michael Banck.
- Anonymous ftp.gamgi.org is working fine again.
- Fixed the legal copyrights and notices in gamgi_io_file and gamgi_mesa_area covering Mark Kilgard's code explained in the book: OpenGL programming for the X Window System.
- Fixed the legal copyrights and notices in gamgi_mesa_text and gamgi_io_x3d_render files covering OGLFT and GLE libraries. Thanks to Morten Kjeldgaard (Ubuntu) and Michael Banck (Debian) for raising these issues.
- Moved www.gamgi.org to a new computer. Everything is working fine except anonymous ftp. Hopefully this will be back soon.
- The hard core of the array-based 3D convex hull algorithm, with conflict lists and coplanar handling, is now in place, but has not been tested yet.
- Started implementing a fast (NlogN) 3D convex hull algorithm, (using arrays to be faster, as in the Voronoi code). This will allow users to generate arbitrary polytopes with GAMGI. This is particularly useful in Crystallography (silicates, superconductors, etc.) to represent tetrahedrons, octahedrons, etc. A 2D convex hull algorithm has been already implemented in order to describe polygonal planes.

### What is next:

- Replace GtkFileSelection by GtkFileChooserWidget.
- Add a task id to operactions involving multiple scans to guarantee that there is no flag corruption when bonds are created between different molecules.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.9
30th October 2008
This release merges all the X3D (the new XML version of VRML) code developed by Tiago Farto, after extensive cleaning. This includes code to describe all the objects currently supported by GAMGI, as layers, cells, clusters, molecules, groups, planes, directions, atoms, bonds and texts. As X3D handles a single 3D space (while GAMGI handles multiple 3D spaces through layers), only objects in the current layer are exported, the other layers are ignored.

### What is new:

- Cleaned and tested cylinder bonds code in static_bond in gamgi_io_x3d.c.
- Cleaned and tested line bonds code in static_bond in gamgi_io_x3d.c.
- Cleaned gamgi_io_x3d.c: static_scale, static_unscale, static_text, static_orbital, static_atom, static_direction, static_plane, static_group, static_molecule, static_cluster, static_cell, static_assembly, static_layer.
- Merged all the X3D (the new XML version of VRML) code developed by Tiago Farto, after cleaning (files gamgi_io_x3d.c and gamgi_io_x3d_render.c.). This includes code to describe all the objects currently supported by GAMGI, as layers, cells, clusters, molecules, groups, planes, directions, atoms, bonds and texts. Thanks Tiago, for this very nice work!.
- Replaced h_addr by h_addr_list[0] in gamgi_io_socket.c, as suggested by Morten Kjeldgaard (Ubuntu), as h_addr has been deprecated in version 2.8 of libc6, that will be used in Ubuntu 8.10. Thanks Morten!.
- Removed file dat/cell/polymers/polyethylene_sulfide.cif, that is not used at all by GAMGI and cannot be distributed, from both my latest distribution and GAMGI 0.13.8, released a few weeks ago. Thanks to Morten Kjeldgaard (Ubuntu), for noticing this.

### What is next:

- Replace GtkFileSelection by GtkFileChooserWidget.
- Add a task id to operactions involving multiple scans to guarantee that there is no flag corruption when bonds are created between different molecules.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.8
3rd August 2008
This is a bug fix release. Several new and old bugs, simple but puzzling and affecting productivity, were clarified and removed. Converted Cell Align option menus (Gtk 1) to combo boxes (Gtk 2).

### What is new:

- Fixed a simple but old and relevant bug in the Expat code: conventional axes were exported when they should be primitive.
- Fixed a bug with Gtk 2.0 code: the window bottom bar must be hidden after showing the window, otherwise this does not work properly when coming from XML files.
- Replaced all the GTK 1 option menus in gamgi_gtk_cell_align by GTK 2 combo boxes and cleaned the code.
- Fixed a Gtk warning in Atom->Config: Charge entry is not there.
- Changed sligthly the mass, radius, charge defaults policy: all atoms must now have valid mass, radius, charge. For Dummy atoms the default mass and radius is 1.0. Elements without a known radius get radius from the lower element that has one. For all elements default charge is 0.0
- Reorganized all the atomic mass, radius, color data in Gamgi: all this data is now stored in arrays in gamgi_chem_property.c.
- Synced mass, radius atomic defaults with the new mass, radius data.
- Fixed a bug in Gtk code: when pressing with the mouse on the ruler and move,rotate,scale mode was off, garbage messages would show up.
- Fixed the mathematical algorithm to solve systems of two linear Diophantine equations: we were missing some solutions because we were not taking into account all the infinite intermediate solutions.

### What is next:

- Replace GtkFileSelection by GtkFileChooserWidget.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.7
8th July 2008
Added mass data for most important isotopes, including isotope abundance and half-life (source: wikipedia). Added radius data including natural half-distances, effective and calculated atomic radius, effective and calculated (2008) covalent radius, Van der Waals radius (webelements). Added the widely used Shannon ionic radius, depending of valence and coordination (Acta Cryst. paper). Cleaned and replaced option menus by combo boxes in Cell->Link, Cell->Create and Cell->Modify. Added new screenshots. Improved Help information for exported type formats, Atom->Create and Atom->Modify. Many thanks to Pedro Isidoro and Luis Veiros, who contributed to this release (providing the Shannon original papers and collecting atomic data).

### What is new:

- Fixed warnings in gamgi_phys_cell_link due to discarded attributes.
- From now on, for ALL atoms, including Dummy (Du), atomic mass and radius must always be positive and charge can take any real value.
- Updated Cell->Link, Atom->Create, Atom->Modify Help documentation.
- Added mass, radius information to documentation covering Atom->Create and Atom->Modify.
- Cleaned the interface and behaviour of Cell->Link.
- Replaced all option menus (GTK 1) in Cell->Link by combo boxes (GTK 2).
- Changed Atom->Create and Atom->Modify Help documentation for notebook style. Updated Help->Current and Help->Topic accordingly.
- Added 5 new screenshots, to represent the 0.13 series.
- Simplified notation for mass and radius data, available from Atom->Create and Atom->Modify.
- The 2008 covalent radius are now fully working on Gamgi.
- Grabed from WebElements the new (2008) calculated covalent radius, available for Z <= 96.
- Updated effective and calculated atomic radius data, from WebElements.
- The complete ionic Shannon (1976) radius are now fully working on Gamgi.
- The atomic radius information for all elements, including half-distance in natural state, atomic effective, atomic calculated, covalent and Van der Waals radius, is now working.
- The isotopic information for all elements, including isotope abundance, half-life and excited states, is now working.
- Replaced the option menu (GTK 1) Scope, in Cell->Remove, by a combo box (GTK 2).
- Added a new size, GAMGI_ENGINE_STRING, currently 50, for pair values.
- Replaced option menu (GTK 1) Borders, in Object->Measure dialogs by combo box (GTK 2).
- Added main introduction file main.html to Help->Current.
- Added JPEG, PNG, TIFF, PPM, PS, XYZ files to Help->Topic->Introduction.
- Added Interfaces, Formats files to Help->Topic. Cleaned headers.
- The XML Cell parameter "o_vectors" is now "origin_vectors".
- In Cell->Create and Cell->Modify, improved the Origin page interface and behaviour.
- Replaced option menus (GTK 1) origin vectors, axes, axes vectors, in Cell->Create and Cell->Modify by combo boxes (GTK 2).
- In Gtk Combo Boxes, the renderer should be added AFTER the tree store. In Gtk Tree Views the renderer should be added BEFORE the tree store. All Combo Boxes and Tree Views now follow this rule.
- Replaced o4 option menus (GTK 1) by combo boxes (GTK 2) in Cell->Create, Cell->Modify.
- Replaced o4 option menus (GTK 1) by combo boxes (GTK 2) in Plane->Create, Plane->Modify, Direction->Create, Direction->Modify.
- Fixed a little offset bug when handling the reference combo box in Direction->Modify, in static_autonomy (introduced in GAMGI 0.13.5).
- Updated the make_local file: the default configuration should work fine for Fedora 8.0, Ubunty 7.10, Suse 10.3, Mandriva 2008 on xf86 machines. The commented configuration for the same distributions on amd64 is exactly the same, except lib is replaced everywhere by lib64.
- Updated the users mailling list address in Help->Start.
- Added second level dialogs to show atomic mass, radius and charge, from Atom->Create, Atom->Config and Atom->Config.
- We have now clear ideias on how to implement general, powerful polytopes in GAMGI to describe atomic structures. Each polytope will be created as an independent Group object, from Group->Link, Molecule->Link, Cluster->Link or Cell->Link, entering the number of neighbours or the desired neighbour shell thickness. Each procedure will create just one or all the equivalent polytopes. From the math point of view, an incremental algorithm, with conflicting information, a O(n) algorithm, will be used to calculate the arbitrarily complex 3D convex hulls we need to build.

### What is next:

- Replace everywhere GtkCombo and GtkOptionMenu by GtkComboBox.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.6
4th June 2008
Redesigned entirely Atom->Create, Atom->Modify and Atom->Config, as notebook dialogs, including new parameters: element number, atom temperature and occupancy (to handle diffraction data). This is also ready to merge detailed mass, radius and charge information. Replaced most dynamic Option Menus (GTK 1) by ComboBoxes (GTK 2). Removed a simple bug in Light->Modify (added in the previous release), that turned this dialog almost unnusable. Used the icons made by Jakub to show a favicon at www.gamgi.org. The code by Tiago Farto to export to X3D format is almost finished.

### What is new:

- Updated gamgi_expat_import_help.c, to support the CSS attributes image/png and icon, introduced to indicate the favicon image.
- Updated the Authors page.
- Atom new config attribute, temperature, can now be imported,exported to XML files.
- Atom new attributes, temperature and occupancy, can now be imported,exported to XML files.
- Redesigned Atom->Config according to the notebook style and added new functionality: atom temperature, element number.
- Fixed a bug in Light->Modify: essentially a typo, resulting in Error messages when trying to modify even simple lights.
- Redesigned Atom->Modify according to the notebook style and added new functionality: atom temperature, occupancy, element number.
- Added a favicon (actually gamgi16.png) to www.gamgi.org (and doc/ documentation).
- Synced doc/ and www.gamgi.org/ documentation.
- Redesigned Atom->Create according to the notebook style and added new functionality: atom temperature, occupancy, element number.
- Replaced Option Menus by Combo Boxes in Group->Remove, Molecule->Remove, Cluster->Link.
- Played with favicons for www.gamgi.org.
- Replaced Option Menus by Combo Boxes in Group->Link, Molecule->Link, Cluster->Link.
- Replaced Option Menus by Combo Boxes in Assembly->Link, Assembly->Remove.
- Replaced Option Menus by Combo Boxes in Plane->Link, Direction->Link.
- Replaced Option Menus by Combo Boxes in Plane->Remove, Direction->Remove.
- Replaced dynamic Option Menus in Text->Create, Text->Modify, Text->Config by dynamic Option Boxes.
- Replaced Option Menus by Combo Boxes in Text->Remove, Bond->Remove, Atom->Remove, Light->Remove, Layer->Remove, Window->Remove.
- Replaced Option Menus by Combo Boxes in Text->Link, Bond->Link, Atom->Link, Light->Link, Layer->Link, Window->Link.

### What is next:

- Replace everywhere GtkCombo and GtkOptionMenu by GtkComboBox.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.5
12th May 2008
Replaced Combos (GTK 1) by ComboBoxEntries (GTK 2). Replaced most static Option Menus (GTK 1) by ComboBoxes (GTK 2). Fullscreen mode is working again, in Enlightenment, Gnome, KDE, XFCE, BlackBox, IceWM, etc. Topics in Help->Topic and Help->Tutorial can now be selected with double click. Fixed the window size in Select and File dialogs. GAMGI comes now with its own Tango! icons, beatifully created by Jakub Szypulka!. Renewed gamgi.org until September 2015.

### What is new:

- Replaced the two Property option menus in Atom->Measure, by Combo Boxes.
- Replaced all eight gtk_combo_box_entry_new_text constructions by gtk_combo_box_entry_new, which is lower-level, more flexible.
- Replaced the four Method option menus in Group->Measure, Molecule->Measure, Cluster->Measure, Cell->Measure by Combo Boxes.
- Replaced the Light Type option Menu in Light->Modify by a Combo Box.
- Replaced the seven Projection, Type, Reference and Instance Option Menus in Plane->Modify and Direction->Modify by Combo Boxes.
- Replaced the four Vector Option Menus in Plane->Create, Plane->Modify, Direction->Create, Direction->Modify, by Combo Boxes.
- Replaced the four Autonomy Option Menus in Plane->Create, Plane->Modify, Direction->Create, Direction->Modify, by Combo Boxes.
- Replaced all gtk_combo_box_new_text by gtk_combo_box_new, which is the same, but with much more control.
- We have a working model to replace dynamic option menus, with variable options and sensitivities.
- Cleaned mesa_gamgi_text: simplified static_extrusion and removed extruded->extra (these vertices are now saved in extruded->vertices).
- Updated fullscreen mode, including Page_Up and Page_Down. This works now on all Linux tested environments: Enlightenment, Gnome, KDE, BlackBox, IceWm, XFCE.
- Double-click now works in both Help->Topic and Help->Tutorial.
- Increased the size for File->Import and File->Export dialogs.
- Changed x,y,x and r,g,b labels to X,Y,Z and R,G,B, to be consistent with the general rule that the first letter in labels is uppercase.
- Replaced OptionMenu by ComboBox for Projection, Visibility_in, Visibility_out and Axes menus in Layer->Modify.
- Replaced OptionMenu by ComboBox for Style and Color menus in Bond->Create, Bond->Modify, Bond->Config and Text->Config.
- Fullscreen mode is working again, with GTK-2.0. Tested on Enlightenment, IceWM, BlackBox, KDE, Gnome, XFCE.
- GAMGI has now its own Tango! icons icons, beatifully desined by Jakub Szypulka!
- Replaced deprecated gdk functions, so GAMGI now compiles fine with -DGDK_DISABLE_DEPRECATED flag.
- Increased size for Object->Select dialogs.
- Fixed a visual bug in Plane->Measure: the dialog changed size when the selected option changed.
- Fixed size in Cell->Link and Help->Config and clarified the entry sizes globally.
- Fixed a few calls to set button state: toogle buttons should use gtk_toggle_button_set_active, radio buttons should use gtk_button_clicked.
- Replaced OptionMenu by ComboBox for Style menus in Text->Create and Text->Modify.
- We have a working model to replace static GTK 1 OptionMenus by GTK 2 ComboBoxes.
- Replaced GtkCombo by GtkComboBox in Atom->Config, Atom->Create and Atom->Modify.
- Replaced GtkCombo by GtkComboBox in Bond->Config, Bond->Create and Bond->Modify.
- Renewed gamgi.org for another 5 years, so it is available until September 2015.
- Replaced everywhere direct checks on GTK_TOGGLE_BUTTON (button)->active by calls to function gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)).
- We have a simple working model for Gtk 2.0 ComboBox, to replace Gtk 1.0 Combo widgets.
- Replaced gtk_radio_button_group() by gtk_radio_button_get_group() everywhere.

### What is next:

- Replace everywhere GtkCombo and GtkOptionMenu by GtkComboBox.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.4
1st April 2008
Replaced GtkClists in Cell dialogs Systems, Lattices, Groups, plus Help->Tutorial, for GtkTreeview with GtkListstores. Replaced GtkCTrees in Help->Topic plus all GtkCTrees in Object->Select dialogs by GtkTreeview with GtkTreestores. Simplified recursive object selection code that crashed GAMGI, at the -O3 level of optimization. Replaced more Gtk-1.0 by Gtk-2.0 functions. We are much closer to have a completely Gtk-2.0 based GAMGI now.

### What is new:

- Replaced everywhere gtk_timeout_remove by g_source_remove.
- Replaced everywhere gtk_timeout_add by g_timeout_add.
- Replaced everywhere gtk_container_border_width by gtk_container_set_border_width.
- Found and removed a crashing bug in gamgi_mesa_select.c, when compiling with -O3. Simplifying the code eliminates the problem.
- Replaced GtkCTree by GtkTreeview in all Object->Select dialogs. This means that all Gtk 1.0 GtkCTrees and GtkClists have now been replaced by Gtk 2.0 GtkTreeviews.
- >Replaced GtkCTree by GtkTreeview in Help->Topic and improved Help->Tutorial: the model is now almost the same for these List and Tree Help dialogs.
- Aligned pages in Help Tutorial.
- The model for building Trees with GtkTreeView seems clear now.
- Replaced GtkClist by GtkTreeview in Cell Symmetry second level dialogs: Systems, Lattices and Groups. So all deprecated GtkClists in GAMGI have now been replaced by GtkTreeview widgets.
- Replaced GtkClist by GtkTreeview in Help->Tutorial.
- We have now working models to replace all GtkClists by GtkTreeviews.

### What is next:

- Replace everywhere GtkCombo and GtkOptionMenu by GtkComboBox.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.3
23th March 2008
Replaced GtkText by GtkTextview everywhere in GAMGI, so GTK_ENABLE_BROKEN is no longer needed to compile with Gtk-2.0. Fixed bugs in locale, Ctr-C, atomic radius, dialogs size and widget focus. Updated documentation to reflect the change to Gtk-2.0/GtkGLext-1.0 libraries. Improved man page and icons.

### What is new:

- Replaced gtk_style_unref() by g_object_unref() everywhere.
- Problems with gtk_widget_modify_fg|bg|base.c: moved back to style calls.
- Updated documentation: all the Installation files.
- Updated documentation: Requirements (front page, installation, project technical) and Formats Attributes (manuals introduction).
- Updated cell/create_symmetry.html and cell/modify_symmetry documentation.
- All Help documentation is now shown with Gtk 2.0 GtkTextView instead of Gtk 1.2 GtkText. #define GTK_ENABLE_BROKEN is no longer needed.
- Help->Start and all sorts of Group/Molecule/Cluster/Cell reports are now working fine with Gtk 2.0 GtkTextView instead of Gtk 1.2 GtkText.
- Replaced Gtk 1.2 style code in gamgi_gtk_dialog.c by Gtk 2.0 gtk_widget_modify_[base|fg|bg].c calls.
- Replaced everywhere gtk_widget_grab_default by gtk_widget_grab_focus .
- Replaced GtkText by GtkTextView in Text->Create and Text->Modify.
- Fixed a bug in decimal number separator: when LC_ALL=french or other comma-based country, everything worked with commas, but data files (dot-based) could not be imported. For the time being everything will work in dots. We will come to this again when GAMGI interfaces get translated to other non-english languages. This is explained in the man page.
- Fixed a bug in gamgi_expat_export_object: when atomic radius is -1 (not defined), it should not be exported.
- Fixed the sizes for dialog Help->Tutorial, and Cell second level dialogs System, Lattice, Group.
- Solved the accelerator group bug (Ctr-C not working): "key_realease_event" was handled before the accelerator. Solution: use g_signal_connect_after for keys.
- GAMGI has now its own icon. Still needs some expert work. Tiago Farto, thanks for the transparency!
- Made clear in the documentation that monoclinic base-centered cells in GAMGI always use cell choice 1 (with unique axis b).

### What is next:

- Replace GtkTrees and GtkClists by GtkTreeviews.
- Replace GtkFileSelection by GtkFileChooserWidget.
- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.2
5th March 2008
Ported GAMGI to GTK 2.0/GTKGLext 1.0. Apart from very minor details everything seems to be working fine. This was essential to guarantee the GAMGI future. Some widgets still need to be replaced but the main issues are solved. Added a man page, images for icons, instructions for distributions. Fixed light, plane, direction bugs.

### What is new:

- Remove a warning and fixed a bug in both gamgi_gtk_plane_modify and gamgi_gtk_direction_modify.
- Added a DISTROS file with instructions for distributions.
- Fixed a simple, just introduced, crashing bug in gamgi_gtk_light_create: a g_object_set_data function was removed by mistake when porting to GTK 2.0.
- Replaced Gtkglarea by Gtkglext library and modified the code in gamgi_mesa_area, gamgi_mesa_select and gamgi_global_main accordingly. GAMGI is now running apparently fine with Gtkglext, with multiple drawing areas, shared pre-compiled lists and window-independent OpenGL resources.
- We have only one show stopper bug now, in gtkglarea code, crashing GAMGI with GTK 2.0 on exit.
- Removed an resulting in lots of warnings when starting a top window (GTK complaining about NULL pointers to functions in callbacks).
- Reduced the number of const char * issues to only two.
- Fixed combo boxes entry size in gamgi_gtk_bond_create and gamgi_gtk_bond_modify.
- replaced gtk_signal_connect_while_alive by g_signal_connect calls.
- Fixed problemas in window statusbar, with gtk_statusbar_set_has_resize_grip (statusbar, FALSE).
- First and second level dialogs seem to be working fine.
- Top menus are now working fine, but position, width should be improved.
- Replaced gtk_object_set_data, gtk_object_get_data, by g_object_set_data, g_object_get_data. Replaced GTK_OBJECT by G_OBJECT.
- Gamgi is linking and running, sort of, on GTK 2.0, with #define GTK_ENABLE_BROKEN.
- Replaced gtk_entry_new_with_max_length and gtk_widget_set_usize by gtk_entry_new, gtk_entry_set_width_chars, gtk_entry_set_max_length.
- Created a man page for Gamgi, with all the basic surviving skills.
- Started the process to create an icon for Gamgi: http://www.gamgi.org/icon/.
- Changed gtk_widget_set_usize to gtk_widget_set_size_request functions.
- Commented gtk_accel_group_new Ctr-C acceleration.
- Commented gtk_signal_connect_while_alive functions.
- Changed gtk_signal_connect_object to g_signal_connect_swapped functions.
- Changed all GTK_SIGNAL_FUNC to G_CALLBACK macros.
- Changed all gtk_signal_connect to g_signal_connect functions.
- Added DISABLE_DEPRECATED cflags to make_rules.
- Added library GtkGLArea 2.0. GAMGI is now compiling (but not linking yet) with GTK 2.0 and GtkGLArea 2.0.
- Replaced all char *name by const char *name, in gtk_entry_get_text commands, to avoid warnings.
- Commented all gtk_widget_set_usize commands, to compile.
- Started a new development branch, to move GAMGI to GTK 2. Updated the make_rules file accordingly.
- Found and removed a light bug: exporting shininess with 2 decimal figures resulted in parameter loss. Increased to 4 decimal figures.

### What is next:

- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI 0.13.1
14th February 2008
Analysed, cleaned, removed all issues generating warnings when compiling with -O3 added to default gcc -g -Wall -ansi, in both xf86 and xf86_64 architectures, with gcc 3.3.4 (Suse 10.0) and gcc 4.1.2 (Fedora 8), plus pointer_to_int and int_to_pointer conversions in non-32 bit machines. Found and removed 4 actual bugs in the process.

### What is new:

- Cleaned array addressing in gamgi_phys_wigner (static_orthorhombic_c, static_orthorhombic_f, static_orthorhombic_i_high, static_orthorhombic_i_low, static_rhombohedral_high and static_rhombohedral_low).
- gcc 4.1.2 on xf86_64: cleaned all issues generating warnings when compiling with -O3 added to default gcc -g -Wall -ansi.
- gcc 4.1.2 on xf86_64: cleaned all int-to-pointer and pointer-to-int conversions generating warnings in chem/ and expat/ code when compiling with default gcc -g -Wall -ansi.
- gcc 4.1.2 on xf86_64: cleaned all int-to-pointer and pointer-to-int conversions generating warnings in mesa/ code when compiling with default gcc -g -Wall -ansi.
- gcc 4.1.2 on xf86_64: cleaned all int-to-pointer and pointer-to-int conversions generating warnings in gtk/ code when compiling with default gcc -g -Wall -ansi.
- gcc 4.1.2 on xf86_64: cleaned all int-to-pointer and pointer-to-int conversions generating warnings in engine/ code when compiling with default gcc -g -Wall -ansi. These conversions are now handled by properly designed macros, which are also easily found with grep.
- gcc 3.3.4 on xf86: cleaned all issues in phys/ code generating warnings when compiling with -O3 added to default gcc -g -Wall -ansi.
- gcc 3.3.4 on xf86: cleaned all issues in gtk/ code generating warnings when compiling (gcc 3.3.4 on xf86) with -O3 added to default gcc -g -Wall -ansi (one real bug found in gamgi_gtk_cell_modify.c: one truely missing initialization).
- gcc 3.3.4 on xf86: cleaned all issues in chem/ code generating warnings when compiling with -O3 added to default gcc -g -Wall -ansi (two real bugs found in gamgi_chem_symmetry.c: one truely missing initialization and two code lines wrongly exchanged).
- gcc 3.3.4 on xf86: cleaned all issues in math/ and mesa/ code generating warnings when compiling with -O3 added to default gcc -g -Wall -ansi.
- gcc 3.3.4 on xf86: cleaned all issues in engine/ and expat/ code generating warnings when compiling with -O3 added to default gcc -g -Wall -ansi (one real bug found in gamgi_expat_import_object.c: a variable depending on the order of function argument handling, which is implementation dependent).

### What is next:

- Redesign Atom->Create and Atom->Modify, according with the new notebook style, with more properties, including a wide range of atomic radius.
- Add a bond angle, which is useful to control double bonds in solid mode.
- Add plane area and direction length to Plane->Measure and Direction->Measure.
- Write tutorials about crystalographic and atomic Plane,Direction usage.
- Port GAMGI to GTK 2.* or (3.*).
- Replace set/get_data functions by structures defined in gtk/gamgi_object.h headers.
- Implement dynamic text objects, to measure distances, angles, etc. on real time.
- Improve selection dialogs, including list selection methods.
- Implement multiple object picking, including a dynamic frame with moving ants and dragging anchors, to select multiple objects and images from the screen.

GAMGI old
Changelogs for older releases can be found here.

- GAMGI 0.12.1 - GAMGI 0.13
- GAMGI 0.11.1 - GAMGI 0.12
- GAMGI 0.10.1 - GAMGI 0.11
- GAMGI 0.09.1 - GAMGI 0.10
- GAMGI 0.08.1 - GAMGI 0.09
- GAMGI 0.07.18 - GAMGI 0.08

Home