GUI
New classes
- TGSplitFrame: Horizontally or vertically splittable composite frame. Once split, each part will contain a new TGSplitFrame, separated by a TGSplitter.
- TGShapedFrame: TGCompositeFrame on which a custom shape is applied, starting from a picture file, by taking its transparency mask, and then applying the picture as background.
- TGEventHandler: Base Event Handler class allowing to delegate event handling (base class for GL event handlers).
These classes have been primarily developed to be used in EVE.
To see an example of how to use them, see tutorials/eve/SplitGLView.C (this macro is used as a plugin by tutorials/eve/alice_esd_split.C)
(see screenshot in Eve paragraph)
Changes in TGListTree
- TGListTreeItem is now a base class and TGListTreeItemStd is the standard implementation (modification required by EVE)
- Switched the icon and checkbox position in TGListTreeItem.
- Added custom user control flags, with their getters and setters (required by EVE)
- fUserControlled: flag to take over the control
- fEventHandled: flag to tell TGListTree that the current event has been processed by user.
And a few signals have been added:
- MouseOver(TGListTreeItem *entry)
- MouseOver(TGListTreeItem *entry, UInt_t mask)
- Clicked(TGListTreeItem *entry, Int_t btn, UInt_t mask, Int_t x, Int_t y)
allowing alltogether to have better control on TGListTree behaviour.
- Added DrawOutline(), allowing to draw colored outline around a list tree item (following the mouse by default).
- Implemented correct keyboard navigation.
- Improvements for creation of list trees containing large number of items (i.e. 1 million).
GUI HTML
- Implemented controls handling (text buttons, radio buttons and check buttons)
- Implemented signals for these controls:
- ButtonClicked(const char *name, const char *val)
- SubmitClicked(const char *val)
- CheckToggled(const char *name, Bool_t on, const char *val)
- RadioChanged(const char *name, const char *val)
GUI BUILDER
- Robustness has been improved and several bugs fixed.
Context Menus
The context menu of ROOT classes can be created with hierarchical sub-menus, which are more convenient and offer better organization. This makes possible to access more class methods from the context menu (without having the menu becoming larger than the screen). The next is an example of the hierarchihal submenu structure shown below.
void SetLevelOne(EPaletteType palette = pal3); // *MENU={Hierarchy="Candidates/SetLevelOne"}*
void SetPalette(EPaletteType palette = pal3); // *SUBMENU={Hierarchy="Candidates/SetPalette"}*
void SetCatalog(const char * = "HESS") { } // *MENU={Hierarchy="Candidates/SetCatalog"}*
void AddCatalog(const char * = "HESS") { } // *MENU={Hierarchy="Candidates/AddCatalog"}*
void RemoveCatalog(const char * = "HESS") { } // *MENU={Hierarchy="Candidates/RemoveCatalog"}*
void AddCandidate(const char * = "NAME") { } // *MENU={Hierarchy="Candidates/AddCandidate"}*
EPaletteType fPalette; //*OPTION={GetMethod="GetPalette";SetMethod="SetPalette";Items=(PrettyPalette="PrettyPalette",SchlenkPalette="Schlenk",pal3="Pal3",pal4="Pal4")}*