RE: [ROOT] Update on the state of Windows GUIs

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon May 12 2003 - 21:23:15 MEST


Hi James,

On Mon, 12 May 2003, James Peachey wrote:

> Hello All,
> 
> First, many thanks for the detailed answers from Rene, Fons and
> Valeri. One thing is still not quite clear. What I would like to
> do is to install the root win32gdk version from source code. If I
> install from the standard source tar file, I will get the "old"
> WIN32 API, correct? I see binaries for the win32gdk version, but
> can I build this version myself from source, and if so, how?

You can install the win32gdk from the CVS source. Use the CYGWIN
environment and ./configure win32gdk.

> 
> Further, just to make sure I Fons' response, at some point in
> the not-too-distant future, the plan is for the win32gdk version
> to become the standard version -- for both Unix and Windows?.

Yes, this is our intention. The win32gdk and the X11 version have the 
same look&feel and are consistent with TVirtualX. Code calling the TG..
classes will produce the same result and same behavior with X11 and 
win32gdk.

We also hope that in a not too far away future the Qt version will also
be consistent with this picture. It should not matter which backend you 
use (Qt, X11 or gdk). The API will be the same and also the graphics,

Rene Brun

> 
> With thanks again for the information,
> James
> 
> On Sat, 10 May 2003, Faine, Valeri wrote:
> 
> > Hello  folks,
> > 
> > It seems to me I have to clarify a few extra things.
> > 
> > Rene mentioned two implementations of TVirtualX in a row.
> > 
> >   However I've to say the goals of the projects are completely
> > different:
> > 
> >   1. win32gdk (started 3 years ago, correct me if I am wrong) 
> >      is to replace the existent implementation of TVirtualX class 
> >      for Windows based on the WIN32 API with another implementation
> > based 
> >      on win32gdk
> >      (see: http://root.cern.ch/root/win32progress/Win32GUI.html )
> > 
> >     One needed this because the original implementation based on WIN32
> > API 
> >     was written before any ROOT GUI class emerged. As result some
> > methods 
> >     of TVirtualX interface introduced later got no implementation for
> >     Windows and the ROOT GUI TG classes were left with no low-level
> > support 
> >     on Windows platform. There were two ways to do that. 
> >     First was to complete the existent WIN32 API based code and another 
> >     one was to do everything from scratch. The second approach was
> > chosen.
> > 
> >     -----------
> >     The goal of the project is to allow the Windows user 
> >     to use ROOT TG classes to build GUI applications. 
> >     -----------
> > 
> >     The approach still requires TWO separate implementations of
> > TVirtualX 
> >     classes for WIN32 and X11. Any prospected platform, one will want 
> >     to port ROOT to, requires the separate implementation  (maintains) 
> >     also.
> > 
> >   2. "Qt project" was started 1.2 year ago.
> >     -----------
> >      The main goal is to develop a plug-in DLL/ share libraries those 
> >      to allow ROOT user to use non-ROOT Qt-provided external widgets. 
> > 
> >      The idea was to provide a capability to switch from the 
> >     "standard implementation" to Qt with no recompilation, 
> >      and no change of the ROOT and the end-user code.
> >     -----------
> >     (See:  http://root.bnl.gov/QtRoot/QtRoot.html#switch  
> >            http://root.bnl.gov/QtRoot/QtRoot.html#publications )
> > 
> >      The concrete target was the Event Display package for STAR
> > experiment.
> > 
> >      Its primary target platform was very UNIX (not Windows) 
> > 
> >      What about WIN32.  At the same time, thanks Qt cross platform
> >      implementation, the Qt-edition of TVirtualX class can
> > "automatically"  
> >      be used just on both platforms in question, namely UNIX and Windows
> > 
> >      from one source code.
> > 
> >     The project requires ONE single code for any existent platform and 
> >     any future platforms as well.
> > 
> > 
> >   The MAIN goal of the Qt project has been achieved:
> >  
> > First version of STAR "Event Display" works (see: 
> > http://www-conf.slac.stanford.edu/chep03/register/report/abstract.asp?ai
> > d=444 
> >  and one can use the 
> >   Qt library to build the complex GUI using ROOT and Qt widgets.
> > 
> >   It was already shown one and the same code works properly on X11 and 
> >   WIN32 based platforms. (see: FAQ on http://root.bnl.gov )
> > 
> >   So the more simple part of the job was done.
> > 
> > The code is available via CVS repository. 
> > http://root.bnl.gov/QtRoot/QtRoot.html#source
> > The binary for Linux/Sun can be found on AFS, and Windows version can be
> > installed with "one click" from the BNL Web site. (see:
> > http://root.bnl.gov/QtRoot/downloads/new.exe )
> > 
> >   However the new implementation still lacks of the full support for TG
> >   classes. One can use non-ROOT classes to build the ROOT-based 
> >   implementation but can not use the "native" one :-(
> > 
> > I was asked by ROOT team whether it is possible to create the Qt-edition
> > that is TG class compliant. I believe it is possible.
> > To complete things I need some help from the ROOT team. 
> > I asked them to add a few simple corrections to the ROOT code that would
> > have allowed me to share Qt-based activity with other people and save me
> > some time I have to spend to synchronize my version of ROOT with the
> > official one.
> > 
> > I was told the ROOT team must evaluate the corrections and got the
> > promised it will be done quickly. 
> > 
> > What about the precise date I think no serious professional can expect
> > the solid answer of such sort of question. The only question to be asked
> > serious what should be done to speed this work up.
> > 
> > I believe the number of the lines of the code will no grow. The code has
> > been written but it doesn't work yet :-(((. To make it up one has to
> > "read" (not write) the ROOT GUI code.
> > 
> > For example:
> > STAR experiment several times asked whether somebody from ROOT team can
> > attend BNL for a couple of weeks to help with the interface. Alas people
> > are busy and could not find the time.
> > 
> > None can say precisely how long it would take to learn one's 40K lines
> > long non-documented code and provide the precise implementation of the
> > low-level interface this code assumes. My estimation it is about 200-300
> > man-hours
> > For example I have to admit last weeks I was able to devote very few
> > hours of my spare time to deal with Qt. 
> > 
> > I am willing to collaborate with any people / organization interesting
> > to complete this job as soon as possible. You are welcome. Just send me
> > a message.
> > 
> > Coming back to the original question of the thread
> >     "Update on the state of Windows GUIs"
> > let me make a remark:
> > STAR experiment did not wait for any "Update of Windows GUIs". It just
> > allocated some resource to make the job done ( for STAR of course ).
> > That was enough to achieve the STAR goals but it was not enough to make
> > all people on the Earth happy.
> > 
> > 
> >                 My best regards, Valeri
> > 
> > > -----Original Message-----
> > > From: owner-roottalk@pcroot.cern.ch
> > [mailto:owner-roottalk@pcroot.cern.ch]
> > > On Behalf Of Rene Brun
> > > Sent: Thursday, May 08, 2003 3:54 PM
> > > To: James Peachey
> > > Cc: roottalk@pcroot.cern.ch
> > > Subject: Re: [ROOT] Update on the state of Windows GUIs
> > > 
> > > Hi James,
> > > 
> > > Some complementary information to the answers by Valeri and Fons:
> > > 
> > > For many years, we had only one version under Windows. This version
> > > was originally developed by Valeri. The graphics classes drawing in
> > > the canvas were identical with the Unix version, but the GUI was based
> > > on a native WIN32 interface. The fact that the GUI classes were
> > > different from the Unix classes had become more and more difficult
> > > to maintain.
> > > 
> > > Two years ago, Bertrand Bellenot started the win32gdk version.
> > > The GUI classes (TGWin32gdk) are fully compliant with the Unix
> > > version TGX11, being derived from our abstract interface TVirtualX.
> > > It has always been our intention to make the win32gdk version
> > > the default version under Windows. However, for many months, this
> > > version had been too slow to pretend replacing the original win32
> > > version. WE are just about to introduce the version 3.05/05.
> > > This version is at least twice faster than the previous version.
> > > We are currently working on speed improvements to make this version
> > > as fast as the Unix/X11 version (see some numbers below).
> > > This version will replace the win32 version in the coming weeks.
> > > When you take this version, you do not need additional libraries.
> > > Everything is provided in our binary or source distrbutions.
> > > 
> > > Two years ago, Valeri started the development of the ROOT version
> > based
> > > on Qt. The idea is to have a fully compliant TVirtualX implementation.
> > > The version that Valeri is currently distributing IS NOT TVirtualX
> > > compliant. For example, the Root Browser is different and the
> > TreeViewer
> > > is based on the very first and old implementation.
> > > Valeri expects to make his version fully compliant with TVirtualX.
> > > It has to be 100% compliant, not just 99%. The remaining 1% seems
> > > to take more time than expected. It is up to Valeri to comment on
> > > a precise date when he believes that he will have a working version.
> > > The Qt version requires the Qt libraries (commercial under Windows).
> > > You can use the executable modules for free, but you need a
> > development
> > > license as soon as you want to build a GUI application.
> > > 
> > > This summer, we are planning to make a serious upgrade of many
> > > ROOT widgets (TAttFill, Line, Text, Marker, the editor, etc).
> > > This upgrade will assume a TVirtualX interface only.
> > > 
> > > I also want to mention a very recent addition to the list of Windows
> > > version by Axel Naumann. Axel is working on the win32gcc version
> > > that requires the CYGWIN ennvironment. This version looks like Linux,
> > > based on gcc3.2 and X11. I have been playing with this version in
> > > the past few weeks and it looks to be an interesting option for
> > > Windows users. Of course, this version is compatible with Linux.
> > > We will build the win32gcc binary tar file with the coming 3.05/05.
> > > 
> > > Coming back on the speed issue, I have run the 4 versions on my
> > laptop.
> > > Here are the results:
> > >  - original win32 version     : 678 Rootmarks with benchmarks.C
> > >  - Valeri new Root/Qt version : 389 Rootmarks
> > >  - Axel win32gcc              : 415 Rootmarks
> > >  - new win32gdk               : 267 Rootmarks
> > > 
> > > For the non-graphics benchmarks, the 3 versions compiled with VC++
> > > (win32, win32gdk, Qt) show a similar performance.
> > > The win32gcc show a much better performance with the tests like
> > > stress and bench (up to a factor 2 better than VC++).
> > > 
> > > Rene Brun
> > > 
> > > On
> > > Thu,
> > > 8
> > > May 2003, James Peachey wrote:
> > > 
> > > > Hello,
> > > >
> > > > I'm just writing to find out the latest news on portable Root
> > > > GUIs. Specifically, I understand at one time there was an effort
> > > > to develop a common Root source tree which builds on Unix and
> > > > Windows, which offers a full implementation of the Root GUI
> > > > classes (TG*) on both architectures, and which does not require
> > > > any other proprietary software (other than the Visual Studio
> > > > compiler to build it.)
> > > >
> > > > Is this in fact the case? If so, what is the timescale for its
> > > > completion? If not, are some other developments in the works
> > > > to support Root GUIs on Windows?
> > > >
> > > > Thanks,
> > > > James
> > > >
> > > > PS: Apologies if there was a recent thread on this subject which I
> > > > somehow missed when I searched the archives...
> > > >
> > 
> 
> 



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET