ROOT Graphical User Interface Ilka Antcheva Bertrand Bellenot
ROOT Graphical User Interface Ilka Antcheva, Bertrand Bellenot, Valeri Fine, Valeriy Onuchin, Fons Rademakers LCG AA Internal Review 30 March 2005
Overview • • • Main Goals TVirtual. X Interface ROOT and Qt Application Example GUI Widgets Graphics Editor GUI Builder Tree Viewer Undo/Redo Tools LCG AA Internal Review 30 March 2005 2
Main Goals • Cross-platform GUIs – consistent look everywhere • All machine dependent low graphics calls abstracted via TVirtual. X • X 11 • Win 32 GDK • Qt layer - standard ROOT “plug-in” share library, allows to be turned on/off at run time with no changes of the user’s code • No needs to implement specific code for each platform – that simplifies the code maintenance LCG AA Internal Review 30 March 2005 3
TVirtual. X Interface • Concrete versions of TVirtual. X: • X 11 (Fons Rademakers) • Win 32 GDK (Bertrand Bellenot, Valeriy Onuchin) – solved the problem with not thread safe gdk environment • Qt (Valeri Fine) – gives access to a rich set of ready-to-use GUI Qt-based widgets • The benefit of applications running on different platforms is obvious - it increases the program’s robustness, makes their maintenance easier and improves the reusability of the code. LCG AA Internal Review 30 March 2005 4
ROOT and Qt ROOT as Framework or Toolkit ROOT event loop • ROOT controls the event loop via TApplication: : Run() • Transformed QEvent into Event_t structure allows event piping LCG AA Internal Review Qt event loop • Qt controls the event loop via QApplication: : exec() • TQt. Widget class provides the embedded ROOT canvas 30 March 2005 5
GUI Widgets (1) Current Status • Based on the XClass library from Hector Peraza • Provide standard components for application environment with windows ‘look and feel’ • Object-oriented, eventdriven programming model LCG AA Internal Review 30 March 2005 6
GUI Widgets (3) Next Steps • Not finished GUI tasks • Keyboard navigation • Menu hot keys: + F = pops up File menu S = Save, pops up a submenu P should create c 1. ps • Dialogs: Enter = OK, Esc = Cancel • Combo boxes: Up/Down arrows, Home, End, Pg. Up, Pg. Dn • List view improvements, etc. Alt • Cleanup tools LCG AA Internal Review 30 March 2005 7
GUI Widgets (2) • Containers - use of ROOT container classes for fast object look up • Any widgets can be extended via inheritance • Layout managers • Signals/slots communication - uses dictionary information and interpreter to connect signals to slots LCG AA Internal Review 30 March 2005 8
Application Example (1) • Data acquisition display LCG AA Internal Review 30 March 2005 9
Application Example (2) • Statistics on the last 30 min of acquisition LCG AA Internal Review 30 March 2005 10
Application Example (3) • Temperature evolution on the last 30 min LCG AA Internal Review 30 March 2005 11
GUI Widgets (4) • Code optimization • Layout algorithms • GUI Dialogs • Qt layer • Validation tests of interaction with ROOT GUI classes with the same ‘look and feel’ • To solve problems with so-called "popup widgets", like menus, drop down combo boxes, etc. and actions that require full-scale X 11 - like mouse pointer grabbing • To complete the reference documentation of GUI classes LCG AA Internal Review 30 March 2005 12
Graphics Editor (1) • ROOT graphics editor can be: • Embedded – connected only with the canvas in the application window • Global – has own application window and can be connected to any created canvas (under development) LCG AA Internal Review 30 March 2005 13
Graphics Editor (2) • Modular – it loads the corresponding object editor xxx. Editor according to the selected object xxx in the canvas respecting the class inheritance. • Can be extended easily by any user-defined object editor - this makes GUI design easier and adaptive to the users’ profiles • This way the GUI complexity is reduced by hiding some interface elements and revealing them when necessary. • Rules to follow: • Derive in the code the object editor from the base class TGed. Frame • Correct naming • Register the object editor in the list TClass: : f. Class. Editors LCG AA Internal Review 30 March 2005 14
Graphics Editor (3) • Different object editors LCG AA Internal Review 30 March 2005 15
Graphics Editor (4) Next Steps • To include ROOT commands in tool tips of the GUI widgets • Help • Global graphics editor • To show the related canvas title • Close button • Hide/Show objects in a canvas • New object editors development • Style manager – summer student project • Fit Panel GUI LCG AA Internal Review root[9] g. Pad->Set. Logy(1); 30 March 2005 16
GUI Builder (1) • GUI Builder greatly simplifies the process of designing GUIs based on ROOT widgets’ classes. • Using Ctrl+S or Save. As dialog, users can generate C++ code in a macro that can be edited and executed via the CINT interpreter: root[0]. x example. C // transient frame TGTransient. Frame *frame 2 = new TGTransient. Frame(g. Client->Get. Root(), 760, 590); // group frame TGGroup. Frame *frame 3 = new TGGroup. Frame(frame 2, "curve"); TGRadio. Button *frame 4 = new TGRadio. Button(frame 3, "gaus", 10); frame 3 ->Add. Frame(frame 4); frame 2 ->Set. Window. Name(“Fit Panel"); frame 2 ->Map. Subwindows(); frame 2 ->Resize(frame 2 ->Get. Default. Size()); frame 2 ->Map. Window(); } LCG AA Internal Review 30 March 2005 17
GUI Builder (2) Current status • Tests and validation of the current version • Layout a GUI quickly by dragging widgets, setting layout managers, changing options in the right-click context menus. • Final design can be saved as a C++ macro Next steps • To complete the GUI widgets’ palette with combo/list boxes, double sliders, list view, list tree, shutters, button group, etc. • To develop tools for signals/ slots mechanism of communication. • To provide examples for several basic types of GUIs (as tutorials) LCG AA Internal Review 30 March 2005 18
Tree Viewer • Tree Viewer improvements to adapt the user interface to latest TTree developments LCG AA Internal Review 30 March 2005 19
Undo/Redo Tools • Allow users to recover from mistakes - very important part of GUI that will provide: • A stack of states/actions to go back • Confirmation of destructive actions: overwrite, delete, etc. • Main idea: all editing in an application is done by creating instances of so-called command objects • Tests and validation of already implemented classes: • TQCommand – each command knows how to undo its changes to bring the edited object back to its previous state. • TQCommand. History • TQUndo. Manager – recorder of undo and redo operations; it is the command history list which can be traversed backwards and upwards performing undo/redo operations. LCG AA Internal Review 30 March 2005 20
- Slides: 20