November 2005 Writing selected variables to XML now falls back to those in current plot. Modified main build system to work on Windows. October 2005 (Michael) Redesigned the menu management system. Instead of manually creating menus for things like the modes on the fly, I employed the GtkUIManager that allows one to merge and unmerge UI elements specified as XML and driven by GtkActions. This makes things a little cleaner, even though some menus like "Display" and the "Edges" scatterplot menu are still manually constructed. Now that the actions are factored nicely it would be easy to express them in ways besides menus, like toolbars. This also makes the radio indicators show up in the menus on my system (they were missing in the original GTK2 build). I'm running the latest version of GTK. Redesigned the splot layout mechanism. The original version required specifying the dimensions of an splot. In the case of displays with multiple plots, this required explicitly resizing plots when the number of plots or the size of the window changed. This design was not really in the "spirit" of the GTK layout paradigm and required the use of deprecated functions (they were deprecated in an effort to discourage such schemes). The new design gives a default size to a display and then just lets GTK handle the sizing of the component plots. This seems to work great. It prevents ugly things like being able to shrink a display so that the menubar is no longer visible and greatly simplifies the layout of multiple plots. All text rendering is now anti-aliased and based on UTF8 (via Pango). I was successful in translating the variables in a dataset to Korean and the Korean script was correctly displayed throughout GGobi. The GUI is now much more easily navigable from the keyboard. Most buttons, labeled entries, notebook tabs, etc now have mnemonics. Added the imode and pmode to the display tree. The display tree is now based on a columned tree widget and has columns for the display name, dataset and modes. The modes are not kept in sync yet, due to the lack of events for changing them. These events will be added when ggobi is tweaked for better embedding (ie Rggobi2). Ideally we could allow the user to set the modes from the display tree by using a combo box. The variable manipulation tool was reimplemented using a single GtkTreeModel aligned with the dataset. By using filters and sort proxy models the single model drives both the 'real' and 'categorical' tree views. Sorting is now completely transparent. Given the tree structure, the categorical levels are now children of their corresponding variable. There are some questions I have about the tool. How does rescaling work with categorical variables? How does one create a new categorical variable? File load and save dialogs are now based on the GtkFileChooser dialog. This is a lot cleaner than GtkFileSelection in that it is an actual GtkDialog and it has a nicer file list and supports configurable bookmarks. I added the input plugin selection widget to it, as well as a button that pops up a dialog for entering a location with automatic completion (the GtkFileChooser does not have a path entry in the main GUI, go figure). Many of the user actions now have associated stock icons. These are only those available by default in GTK. Hadley might make some new icons for GGobi specific actions. The rulers now work in GTK2, except there is some issue with the pan functionality when dragging on a ruler. Accelerators now work in displays. Before the key handlers were blocking the signal so that the accelerators never responded. Most menus and comboboxes now have tearoff items that allow one to tear off the menu as a toplevel window. This emulates a toolbar. Overall, all deprecated widgets were replaced with GTK2 equivalents. Result: GGobi now compiles sans warnings with the GTK_DISABLE_DEPRECATED cflag. Known issues: The GTK2 combo box does not allow one to set its active element without emitting the 'changed' signal. The only problem I've seen this cause is that all plots have the 'hand' mouse icon for manual manipulation of a tour. This happens when a display is activated and its cpanels are reconfigured from the display's state. Since the default state includes active manual manipulation, the cursor is changed for the plot, even though the tour is not the active viewmode. One possible fix for this is to reconfigure the panels when the corresponding view mode / imode is set. Maybe a nicer fix would be to create an API separate from the GUI for manipulating the tour's state. Then have the combobox callback call the API function and that function could check whether the tour is the current view mode before changing the cursor. There would also need to be a signal for setting the pmode which would set the cursor correctly when the tour became active. The plugins have not been converted yet. Actually a couple have been (partially) converted. I would like to know which plugins we are deciding to maintain. Then I could just convert those. Right now I *think* GGobi only requires GTK 2.4, which was released a couple of years ago. I haven't tested this though. The only major reason for moving to 2.6 would be the about dialog, but the existing about dialog has a certain charm to it. GTK 2.8 would allow us to draw some things using cairo (vector graphics). I think cairo would be too slow to use for the actual plotting though. I am not sure. It would allow us to do cool things like alpha-blending of the colors to deal with overplotting. This is not supported through the GDK X11 backend, since most X servers do not support compositing yet. September 2005 For all displays, restored the option that allows the View and Interaction Menus to be radio buttons; the default is still false, but we may change it to true (set in ggobi.c). (The ggobirc "preference" is <useRadioMenuItems on="true" /> ) Treating the Options like the Reset items, so that now tour menus also appear in the display menubar as appropriate. Removed the Reset menus for Brush and Scale from the main menubar. Now when a display is in Brush or Scale mode, a menu with the interaction mode name appears in the menubar of the display. Moving the brushing option from the display Options menu to the Brush menu. Fixed a bug: the 'Show axes' option wasn't working on the barchart display Options menu. Removed the DisplayTree item from the main menubar; added a "Show DisplayTree" item to the bottom of the Display menu. When a new display is opened, its initial variables are now chosen based on the variables displayed in the display that was current when the new one was initialized. Added alt-t/p accelerators to toggle between persistent and transient brushing; transient brush now drawn as a dotted line. (One tester says it doesn't work on the Mac.) Corrected a bug in the behavior of the "linkby" notebook on the brushing panel, and improved its behavior (I hope) so that only the relevant tab in the notebook is sensitive for each display. (One tester says this isn't working; it works for the author.) Split the ViewMode menu into a View menu (representing projection), as needed, and an Interaction menu. This involved changes to over 60 files. July 2005 Fixed a bug in linking brushing by variable that was causing the wrong variable to be designated the linking variable. Fixed a (very recent) bug in the GraphLayout and ggvis plugins which caused new windows to be imperfectly linked to the brethren. Added new graphviz layout algorithms to the GraphLayout plugin. New signal added for the creation of a new displayd object. This is emitted after the display is fully constructed and is being registered. We will miss a display if it is constructed separately and not explicitly added to the collection of known displays. But that currently never happens and will be rare even when we instantiate the classes outside of the ggobi control panel, e.g. in RGtk. The 'PlotMenu' plug-in provides the infrastructure for adding pop-menus for splot's, i.e. panels on displays. These are potentially contentious, but are convenient at least for sophisticated users. As plugins, they work well as an optional add-on. We can add functionality to this module and splot's as desired. Drag and drop for parallel coordinates displays. One can drag a "panel" onto another panel and currently they get swapped in position. Different strategies for inserting the initial panel beside the target one and moving those in between is easily done also. Two routines added to the "API": ggobi_data_set_var_type and ggobi_data_set_time_var to allow for users to specify the type of a variable and whether it is a time variable or not. Menu item added to each display to bring the associated control panel to the foreground. Option to use check menu items for the interactive modes for a display, i.e. Scale, Brush, Identify, ... This gives a visual display of what is the currently active mode and also a way to turn it off directly rather than requiring to switch to a different, display-dependent mode, e.g. XYPlot. In ggobirc as <useRadioMenuItems on="true" /> Internal changes removed (ifdef'ed away) the calls to display_add() for each of the display types. These resulted in display_add being called twice: there and via the extended_display_open_cb. This fixes the message about "Display has already been added...." appearing. Information about mismatching structure sizes for plugins and "modules" (i.e. Rggobi) announce which module is complaining. (Added the GGobiPluginDetails to the call to checkGGobiStructSizes().) June 2005 Paused tours were causing problems with consuming large amount of cycles. This seems to be fixed now. time variables In the XML files, one can specify that a variable can be used as a time variable using an attribute time. The value of the attribute should be "yes" or "true". (No upper case!) Such variables can then be identified when creating a time series plot. statusbar is now non-editable by the user. parcoords_new and tsplot_new become *_with_vars and the original versions take an exta argument - displayd. windowDisplayd has an field that allows the constructor to specify that we don't want a window. The creation code then honors this and leaves the display to be managed by the creator. scatmat_new now takes a display argument and has changes to allow the lack of a window. Pass NULL for the display argument and it will create the basic display. Added --home as an argument for ggobi and ggobi-config to compute the location of the "installed" GGobi files. GGobi home directory displayed on the spash screen Configuration now supports --enable-local. Getting the names of the data modes (getDataModeNames) now computes these from the plugins by querying them dynamically. The caller should free the resulting array of strings, but not the strings themselves. The return type of the routine no longer refers to a constant array. Added CSV to the DataModeNames since the enums and this list were out of synch. This should be removed very soon. Changed the order of initialization so that default plugins (input plugins) are done in ggobiInit() as is the initialization of the session options (initSessionOptions). Fixed the error in addVariableInternal which made all variables categorical. Switch on the number of levels. Moved from built-in data formats/modes to extensible plugins and a uniform framework. Each plugin lists its set of supported mode names. Implications for Rggobi. Read Excel files directly via --datamode=excel and ExcelReader plugin on Windows. Support for reading CSV files (either using the CSV or the ExcelReader plugin.) Input plugins can have multiple modeName tags within a modeNames tag. Input plugin modeName used as the target for --datamode=<name> "About plugins" display window separates the general and input plugins into separate pages. Select input plugin/mode from the File selection menu when opening a file. Added an item `New' to the File menu Added an item `About plugins' to the Help menu Added the ability to read an initialization file -init, GGOBIRC, ~/.ggobirc Added the plugin mechanism, registered in the initialization file. Added a plugin for viewing data (See the Data menu beside the Help assuming the plugin is found.)
Generated by dwww version 1.15 on Wed May 22 21:42:34 CEST 2024.