RE: [ROOT] ROOT 4.01/04

From: Faine, Valeri (fine@bnl.gov)
Date: Sat Nov 20 2004 - 00:18:15 MET


Hello Jacek,

I have just a comment about Qt related staff.

> Hi,


> For example the FedoraCore2 binary distribution contains Qt related
> libraries (libGQt.so, libQtRoot.so), which are missing in some other
> distributions (for example in the SLC3 based one).

I did not know about that. I think "qt" is still the optional component for
people who wants to embed the ROOT widget into the custom Qt application.
Including the Qt portion into the binary distribution with no actually Qt
itself implies ROOT team knows what the local Qt version is.

  
> Would it be possible that you build "all" libraries on "all" systems?
> (Well, of course if they can actually be built on a particular system.)
 
Of course, I would have been happy if one could find the viable solution for
that.
The only reliable one is to include "libqt_mt.so" in to the ROOT binary 

-rwxr-xr-x    1 jeromel  rhstar    9523089 Jul 27 15:19 libqt-mt.so

For example, the binary ROOT distribution for Windows from BNL Web site does
include Qt 3.3 and Coin3D DLLs. 

As soon as SLC3 is concern, it comes with Qt 3.1. It is very old version and
it is not what I personally advice the ROOT user to work with.  As soon as
the latest Qt version (it is Qt 3.3 at the moment, Qt 4 is coming) if freely
available for X11 and Mac platforms I see no advantage to stick with Qt 3.1.

The idea of Qt layer is to provide the facility for the Qt user to embed the
ROOT widget into his/her Qt-based interactive Qt-based application or add
some nice Qt widget to the existent ROOT application. If you work with just
ROOT you may not care how it is implemented internally.

The later implies the Qt-bound ROOT user (or ROOT bound Qt user) does work
with Qt of his /her choice and I suspect this user tends to use the latest
Qt version rather that included into the OS distribution and will remain
there for a while.  

Using the old version of Qt means one has to create, write, debug some
feature that the newer Qt version may have provided for free (for the cost
to get and install it)


> Then, I would like to report a "problem" on FedoraCore2/i386 running
> g++ (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7).
> While compiling a piece of C++ code I get :
> -------------------------------------------
> In file included from PaletteWindow.cc:73:
> /ROOT/v4.01.04/include/TGButton.h: In member function `
>    virtual void TGButton::SetOn(bool, bool)':
> /ROOT/v4.01.04/include/TGButton.h:116: error: syntax
>    error before `;' token
> /ROOT/v4.01.04/include/TGButton.h: In member function `
>    virtual void TGButton::Toggle(bool)':
> /ROOT/v4.01.04/include/TGButton.h:119: error: syntax
>    error before `;' token
> /ROOT/v4.01.04/include/TGButton.h: In member function `
>    virtual void TGCheckButton::SetState(EButtonState, bool)':
> /ROOT/v4.01.04/include/TGButton.h:251: error: syntax
>    error before `;' token
> /ROOT/v4.01.04/include/TGButton.h: In member function `
>    virtual void TGRadioButton::SetState(EButtonState, bool)':
> /ROOT/v4.01.04/include/TGButton.h:296: error: syntax
>    error before `;' token
> -------------------------------------------
> I have found that if I modify these lines replacing "emit" with "xemit" :
> -------------------------------------------
> ...
>    virtual void         SetOn(Bool_t on = kTRUE,  Bool_t xemit = kFALSE) {
> SetDown(on, xemit); }
> ...
>    virtual void         Toggle(Bool_t xemit = kFALSE) { SetDown(IsDown() ?
> kFALSE : kTRUE, xemit); }
> ...
>    virtual void   SetState(EButtonState state, Bool_t xemit = kFALSE) {
> PSetState(fPrevState = state, xemit); }
> ...
>    virtual void SetState(EButtonState state, Bool_t xemit = kFALSE) {
> PSetState(fPrevState = state, xemit); }
> ...
> -------------------------------------------
> everything works fine ...
> No idea where this "bug" comes from ...

Interesting  . . . "emit" is a CPP macro defined by Qt 

grep emit qobjectdefs.h
#define emit                                    // emit signal

but . . . the ROOT source in question should not include any Qt header files
. . .


  Thank you, 
                Valeri
> 
> Best regards,
> Jacek.



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET