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

From: Faine, Valeri (fine@bnl.gov)
Date: Sat May 10 2003 - 06:10:23 MEST


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