]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
*** empty log message ***
authorvsr <vsr@opencascade.com>
Fri, 10 Aug 2007 12:27:15 +0000 (12:27 +0000)
committervsr <vsr@opencascade.com>
Fri, 10 Aug 2007 12:27:15 +0000 (12:27 +0000)
28 files changed:
src/CAF/CAF_Application.cxx
src/CAF/CAF_Study.h
src/CAM/CAM_Application.cxx
src/Qtx/Qtx.cxx
src/Qtx/Qtx.h
src/Qtx/QtxActionMgr.h
src/Qtx/QtxColorScale.cxx
src/Qtx/QtxComboBox.cxx
src/Qtx/QtxMRUAction.cxx
src/Qtx/QtxPathDialog.h
src/Qtx/QtxPathListEdit.cxx
src/Qtx/QtxPreferenceMgr.h
src/Qtx/QtxResourceMgr.cxx
src/Qtx/QtxResourceMgr.h
src/Qtx/QtxSplash.cxx
src/Qtx/QtxSplash.h
src/Qtx/QtxTable.cxx
src/Qtx/QtxWorkstack.cxx
src/Qtx/QtxWorkstack.h
src/STD/STD_Application.cxx
src/STD/STD_Application.h
src/SUIT/SUIT_Application.cxx
src/SUIT/SUIT_Operation.cxx
src/SUIT/SUIT_Operation.h
src/SUIT/SUIT_ResourceMgr.h
src/SUIT/SUIT_SelectionMgr.h
src/SUIT/SUIT_Study.h
src/SUIT/SUIT_ViewWindow.cxx

index 8a5b2a3594dfebf87d078e4b7ad87a2b15b5b168..e553490c012a689e0234369235278bde40c9a83b 100755 (executable)
@@ -105,7 +105,7 @@ Handle( TDocStd_Application ) CAF_Application::stdApp() const
 QString CAF_Application::getFileFilter() const
 {
   if ( stdApp().IsNull() )
-    return QString::null;
+    return QString();
 
   TColStd_SequenceOfExtendedString formats;
   stdApp()->Formats( formats );
@@ -135,7 +135,7 @@ QString CAF_Application::getFileFilter() const
   }
 
   if ( wildCards.isEmpty() )
-    return QString::null;
+    return QString();
 
   QStringList filters;
   for ( QMap<QString, QStringList>::ConstIterator it = wildCards.begin(); it != wildCards.end(); ++it )
index ccde84d357174ff24921389a302322ab9145c877..f56d7bd490a6a9f1588eab968ab9922d89f1c8a3 100755 (executable)
@@ -69,7 +69,7 @@ protected:
   virtual bool                openTransaction();
   virtual bool                abortTransaction();
   virtual bool                hasTransaction() const;
-  virtual bool                commitTransaction( const QString& = QString::null );
+  virtual bool                commitTransaction( const QString& = QString() );
 
   virtual void                setStdDoc( Handle(TDocStd_Document)& );
 
index 2089441d54122c68b37b3e872bc3bc6a7ccb3d56..ce462811cab376cd6263d358ed5daaf287dfb1c5 100755 (executable)
@@ -562,7 +562,7 @@ void CAM_Application::readModuleList()
     }
   }
   if ( modList.isEmpty() ) {
-    QString mods = resMgr->stringValue( "launch", "modules", QString::null );
+    QString mods = resMgr->stringValue( "launch", "modules", QString() );
     modList = mods.split( ",", QString::SkipEmptyParts );
   }
 
@@ -572,7 +572,7 @@ void CAM_Application::readModuleList()
     if ( modName.isEmpty() )
       continue;
 
-    QString modTitle = resMgr->stringValue( *it, "name", QString::null );
+    QString modTitle = resMgr->stringValue( *it, "name", QString() );
     if ( modTitle.isEmpty() )
       {
        printf( "****************************************************************\n" );
@@ -582,9 +582,9 @@ void CAM_Application::readModuleList()
        continue;
       }
 
-    QString modIcon = resMgr->stringValue( *it, "icon", QString::null );
+    QString modIcon = resMgr->stringValue( *it, "icon", QString() );
 
-    QString modLibrary = resMgr->stringValue( *it, "library", QString::null ).trimmed();
+    QString modLibrary = resMgr->stringValue( *it, "library", QString() ).trimmed();
     if ( !modLibrary.isEmpty() )
     {
       modLibrary = SUIT_Tools::file( modLibrary.trimmed() );
index be51ce08a95eba741c32a94158690920793fa451..a5b3ea2e2e2478259102c9d5d38d89db453d0387 100755 (executable)
@@ -33,6 +33,9 @@
 #include <QCompleter>
 #include <QApplication>
 #include <QDesktopWidget>
+#include <QLinearGradient>
+#include <QRadialGradient>
+#include <QConicalGradient>
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -879,3 +882,376 @@ QPixmap Qtx::composite( const QPixmap& pix, const int x, const int y, const QPix
 
   return res;
 }
+
+/*!
+  \brief Convert color to the string representation.
+  
+  The resulting string is in the one of two possible formats
+  (\c RR, \c GG, \c BB and \c AA value represent red, green, blue
+  and alpha components of the color):
+  - if color has alpha channel : "#RR,#GG,#BB,#AA"
+  - if color does not have alpha channel : "#RRGGBB" 
+
+  If color is invalid, null string is returned.
+
+  Backward conversion can be done with stringToColor() method.
+
+  \param color color to be converted
+  \return string representation of the color
+
+  \sa stringToColor()
+*/
+QString Qtx::colorToString( const QColor& color )
+{
+  QString str;
+  if ( color.isValid() )
+  {
+    if ( color.alpha() != 255 )
+    {
+      QStringList vals;
+      vals << QString( "#%1" ).arg( color.red(),   0, 16 );
+      vals << QString( "#%1" ).arg( color.green(), 0, 16 );
+      vals << QString( "#%1" ).arg( color.blue(),  0, 16 );
+      vals << QString( "#%1" ).arg( color.alpha(), 0, 16 );
+      str = vals.join( "," );
+    }
+    else
+    {
+      str = color.name();
+    }
+  }
+  return str;
+}
+
+/*!
+  \brief Create color from the string representation.
+  
+  The parameter \a str must be in the one of following formats
+  (\c RR, \c GG, \c BB and \c AA value represent red, green, blue
+  and alpha components of the color):
+  - "#RR,#GG,#BB[,#AA]" or "#RR #GG #BB[ #AA]" (\c RR, \c GG, \c BB
+  and optional \c AA values represent red, green, blue and alpha
+  components of the color in hexadecimal form)
+  - "RR,GG,BB[,AA]" or "RR GG BB[ AA]" (\c RR, \c GG, \c BB
+  and optional \c AA values represent red, green, blue and alpha
+  components of the color in decimal form)
+  - #RRGGBB" - (\c RR, \c GG and \c BB values represent red, green and blue
+  components of the color in hexadecimal form)
+  - an integer value representing packed color components (see rgbSet())
+  - a name from the list of colors defined in the list of SVG color keyword names
+  provided by the World Wide Web Consortium; for example, "steelblue" or "gainsboro".
+
+  Backward conversion can be done with colorToString() method.
+
+  \param str string representation of the color
+  \param color resulting color value
+  \return \c true if the conversion is successful and \c false otherwise
+
+  \sa colorToString(), rgbSet()
+*/
+bool Qtx::stringToColor( const QString& str, QColor& color )
+{
+  bool res = true;
+  QStringList vals = str.split( QRegExp( "[\\s|,]" ), QString::SkipEmptyParts );
+
+  QIntList nums;
+  for ( QStringList::const_iterator it = vals.begin(); it != vals.end() && res; ++it )
+  {
+    int num = 0;
+    if ( (*it).startsWith( "#" ) )
+      num = (*it).mid( 1 ).toInt( &res, 16 );
+    else
+      num = (*it).toInt( &res, 10 );
+    if ( res )
+      nums.append( num );
+  }
+
+  res = res && nums.count() >= 3;
+  if ( res )
+    color.setRgb( nums[0], nums[1], nums[2] );
+
+  if ( !res )
+  {
+    int pack = str.toInt( &res );
+    if ( res )
+      color = Qtx::rgbSet( pack );
+  }
+
+  if ( !res )
+  {
+    color = QColor( str );
+    res = color.isValid();
+  }
+
+  return res;
+}
+
+/*!
+  \brief Dump linear gradient to the string description.
+  \param gradient linear gradient to be converted
+  \return string representation of the linear gradient
+  \sa stringToLinearGradient()
+*/
+QString Qtx::gradientToString( const QLinearGradient& gradient )
+{
+  QStringList data;
+  data << "linear";
+  data << QString::number( gradient.start().x() );
+  data << QString::number( gradient.start().y() );
+  data << QString::number( gradient.finalStop().x() );
+  data << QString::number( gradient.finalStop().y() );
+  switch( gradient.spread() ) 
+  {
+  case QGradient::PadSpread:
+    data << "pad";
+    break;
+  case QGradient::RepeatSpread:
+    data << "repeat";
+    break;
+  case QGradient::ReflectSpread:
+    data << "reflect";
+    break;
+  default:
+    break;
+  }
+  QGradientStops stops = gradient.stops();
+  QGradientStop stop;
+  foreach ( stop, stops ) 
+  {
+    data << QString::number( stop.first );
+    data << colorToString( stop.second );
+  }
+  return data.join( "|" );
+}
+
+/*!
+  \brief Dump radial gradient to the string description.
+  \param gradient radial gradient to be converted
+  \return string representation of the radial gradient
+  \sa stringToRadialGradient()
+*/
+QString Qtx::gradientToString( const QRadialGradient& gradient )
+{
+  QStringList data;
+  data << "radial";
+  data << QString::number( gradient.center().x() );
+  data << QString::number( gradient.center().y() );
+  data << QString::number( gradient.radius() );
+  data << QString::number( gradient.focalPoint().x() );
+  data << QString::number( gradient.focalPoint().y() );
+  switch( gradient.spread() ) 
+  {
+  case QGradient::PadSpread:
+    data << "pad";
+    break;
+  case QGradient::RepeatSpread:
+    data << "repeat";
+    break;
+  case QGradient::ReflectSpread:
+    data << "reflect";
+    break;
+  default:
+    break;
+  }
+  QGradientStops stops = gradient.stops();
+  QGradientStop stop;
+  foreach ( stop, stops ) 
+  {
+    data << QString::number( stop.first );
+    data << colorToString( stop.second );
+  }
+  return data.join( "|" );
+}
+
+/*!
+  \brief Dump conical gradient to the string description.
+  \param gradient conical gradient to be converted
+  \return string representation of the conical gradient
+  \sa stringToConicalGradient()
+*/
+QString Qtx::gradientToString( const QConicalGradient& gradient )
+{
+  QStringList data;
+  data << "conical";
+  data << QString::number( gradient.center().x() );
+  data << QString::number( gradient.center().y() );
+  data << QString::number( gradient.angle() );
+  switch( gradient.spread() ) 
+  {
+  case QGradient::PadSpread:
+    data << "pad";
+    break;
+  case QGradient::RepeatSpread:
+    data << "repeat";
+    break;
+  case QGradient::ReflectSpread:
+    data << "reflect";
+    break;
+  default:
+    break;
+  }
+  QGradientStops stops = gradient.stops();
+  QGradientStop stop;
+  foreach ( stop, stops ) 
+  {
+    data << QString::number( stop.first );
+    data << colorToString( stop.second );
+  }
+  return data.join( "|" );
+}
+
+/*!
+  \brief Create linear gradient from its string representation.
+  \param str string representation of the linear gradient
+  \param gradient resulting linear gradient object
+  \return \c true if the conversion is successful and \c false otherwise
+  \sa gradientToString()
+*/
+bool Qtx::stringToLinearGradient( const QString& str, QLinearGradient& gradient )
+{
+  bool success = false;
+  QStringList vals = str.split( "|", QString::SkipEmptyParts );
+  if ( vals.count() > 4 && ( vals[0] == "linear" || vals[0] == "lg" ) )
+  {
+    // start and end points 
+    double x1, y1, x2, y2;
+    bool bOk1, bOk2, bOk3, bOk4;
+    x1 = vals[1].toDouble( &bOk1 );
+    y1 = vals[2].toDouble( &bOk2 );
+    x2 = vals[3].toDouble( &bOk3 );
+    y2 = vals[4].toDouble( &bOk4 );
+    if ( bOk1 && bOk2 && bOk3 && bOk4 )
+    {
+      gradient = QLinearGradient( x1, y1, x2, y2 );
+      // spread type
+      if ( vals.count() > 5 )
+      {
+       if ( vals[ 5 ] == "pad" || vals[ 5 ] == "0" )
+         gradient.setSpread( QGradient::PadSpread );
+       else if ( vals[ 5 ] == "repeat" || vals[ 5 ] == "2" )
+         gradient.setSpread( QGradient::RepeatSpread );
+       else if ( vals[ 5 ] == "reflect" || vals[ 5 ] == "1" )
+         gradient.setSpread( QGradient::ReflectSpread );
+      }
+      // stop points
+      QGradientStops stops;
+      for ( int i = 6; i < vals.count(); i+=2 )
+      {
+       bool bOk5, bOk6 = false;
+       QColor c;
+       double stop = vals[i].toDouble( &bOk5 );
+       if ( i+1 < vals.count() )
+         bOk6 = stringToColor( vals[ i+1 ], c );
+       if ( bOk5 && stop >= 0.0 && stop <= 1.0 && bOk6 && c.isValid() )
+         stops.append( QGradientStop( stop, c ) );
+      }
+      gradient.setStops( stops );
+      success = true;
+    }
+  }
+  return success;
+}
+
+/*!
+  \brief Create radial gradient from its string representation.
+  \param str string representation of the radial gradient
+  \param gradient resulting radial gradient object
+  \return \c true if the conversion is successful and \c false otherwise
+  \sa gradientToString()
+*/
+bool Qtx::stringToRadialGradient( const QString& str, QRadialGradient& gradient )
+{
+  bool success = false;
+  QStringList vals = str.split( "|", QString::SkipEmptyParts );
+  if ( vals.count() > 5 && vals[0] == "radial" || vals[0] == "rg" ) 
+  {
+    // center, radius and focal point
+    double cx, cy, r, fx, fy;
+    bool bOk1, bOk2, bOk3, bOk4, bOk5;
+    cx = vals[1].toDouble( &bOk1 );
+    cy = vals[2].toDouble( &bOk2 );
+    r  = vals[3].toDouble( &bOk3 );
+    fx = vals[4].toDouble( &bOk4 );
+    fy = vals[5].toDouble( &bOk5 );
+    if ( bOk1 && bOk2 && bOk3 && bOk4 && bOk5 )
+    {
+      gradient = QRadialGradient( cx, cy, r, fx, fy );
+      // spread type
+      if ( vals.count() > 6 )
+      {
+       if ( vals[ 6 ] == "pad" || vals[ 6 ] == "0" )
+         gradient.setSpread( QGradient::PadSpread );
+       else if ( vals[ 6 ] == "repeat" || vals[ 6 ] == "2" )
+         gradient.setSpread( QGradient::RepeatSpread );
+       else if ( vals[ 6 ] == "reflect" || vals[ 6 ] == "1" )
+         gradient.setSpread( QGradient::ReflectSpread );
+      }
+      // stop points
+      QGradientStops stops;
+      for ( int i = 7; i < vals.count(); i+=2 )
+      {
+       bool bOk7, bOk8 = false;
+       QColor c;
+       double stop = vals[i].toDouble( &bOk7 );
+       if ( i+1 < vals.count() )
+         bOk8 = stringToColor( vals[ i+1 ], c );
+       if ( bOk7 && stop >= 0.0 && stop <= 1.0 && bOk8 && c.isValid() )
+         stops.append( QGradientStop( stop, c ) );
+      }
+      gradient.setStops( stops );
+      success = true;
+    }
+  }
+  return success;
+}
+
+/*!
+  \brief Create conical gradient from its string representation.
+  \param str string representation of the conical gradient
+  \param gradient resulting conical gradient object
+  \return \c true if the conversion is successful and \c false otherwise
+  \sa gradientToString()
+*/
+bool Qtx::stringToConicalGradient( const QString& str, QConicalGradient& gradient )
+{
+  bool success = false;
+  QStringList vals = str.split( "|", QString::SkipEmptyParts );
+  if ( vals.count() > 3 && vals[0] == "conical" || vals[0] == "cg" ) 
+  {
+    // center and angle
+    double cx, cy, a;
+    bool bOk1, bOk2, bOk3;
+    cx = vals[1].toDouble( &bOk1 );
+    cy = vals[2].toDouble( &bOk2 );
+    a = vals[3].toDouble( &bOk3 );
+    if ( bOk1 && bOk2 && bOk3 )
+    {
+      gradient = QConicalGradient( cx, cy, a );
+      // spread type
+      if ( vals.count() > 4 )
+      {
+       if ( vals[ 4 ] == "pad" || vals[ 4 ] == "0" )
+         gradient.setSpread( QGradient::PadSpread );
+       else if ( vals[ 4 ] == "repeat" || vals[ 4 ] == "2" )
+         gradient.setSpread( QGradient::RepeatSpread );
+       else if ( vals[ 4 ] == "reflect" || vals[ 4 ] == "1" )
+         gradient.setSpread( QGradient::ReflectSpread );
+      }
+      // stop points
+      QGradientStops stops;
+      for ( int i = 5; i < vals.count(); i+=2 )
+      {
+       bool bOk4, bOk5 = false;
+       QColor c;
+       double stop = vals[i].toDouble( &bOk4 );
+       if ( i+1 < vals.count() )
+         bOk5 = stringToColor( vals[ i+1 ], c );
+       if ( bOk4 && stop >= 0.0 && stop <= 1.0 && bOk5 && c.isValid() )
+         stops.append( QGradientStop( stop, c ) );
+      }
+      gradient.setStops( stops );
+      success = true;
+    }
+  }
+  return success;
+}
index 90a79b30e4438b7218cf5d4dc959f996ca24671b..e13edd2814604fef689c0e4ebfb4cfea64cee8df 100755 (executable)
@@ -47,6 +47,9 @@
 class QObject;
 class QWidget;
 class QCompleter;
+class QLinearGradient;
+class QRadialGradient;
+class QConicalGradient;
 
 typedef QList<int>    QIntList;       //!< list of int values
 typedef QList<short>  QShortList;     //!< list of short int values
@@ -135,6 +138,16 @@ public:
   static QImage      transparentImage( const int, const int, const int = -1 );
   static QPixmap     transparentPixmap( const int, const int, const int = -1 );
   static QPixmap     composite( const QPixmap&, const int, const int, const QPixmap& = QPixmap() );
+
+  static QString     colorToString( const QColor& );
+  static bool        stringToColor( const QString&, QColor& );
+
+  static QString     gradientToString( const QLinearGradient& );
+  static QString     gradientToString( const QRadialGradient& );
+  static QString     gradientToString( const QConicalGradient& );
+  static bool        stringToLinearGradient( const QString&, QLinearGradient& );
+  static bool        stringToRadialGradient( const QString&, QRadialGradient& );
+  static bool        stringToConicalGradient( const QString&, QConicalGradient& );
 };
 
 #endif
index 98d99e3c6f6c392a54897b2d915fab080a459ca8..d7c4d6a6d93ff7c794510e298f1e3f72b2b1e4ea 100644 (file)
@@ -118,7 +118,7 @@ public:
 protected:
   static int     intValue( const ItemAttributes&, const QString&, const int );
   static QString strValue( const ItemAttributes&, const QString&,
-                          const QString& = QString::null );
+                          const QString& = QString() );
 private:
   QtxActionMgr::Reader*  myReader;  //!< actions reader
 };
@@ -130,7 +130,7 @@ public:
   virtual ~Reader();
 
   QStringList    options() const;
-  QString        option( const QString&, const QString& = QString::null ) const;
+  QString        option( const QString&, const QString& = QString() ) const;
   void           setOption( const QString&, const QString& );
 
   virtual bool   read( const QString&, Creator& ) const = 0;
index 97b61a2b30d624380e53998f266422fa61356a4f..b7dbf558a743ce56542765eb7cf9dda112c752c0 100755 (executable)
@@ -269,7 +269,7 @@ void QtxColorScale::setRange( const double min, const double max )
   myMin = min;
   myMax = max;
   
-  myPrecise = QString::null;
+  myPrecise = QString();
 
   if ( colorMode() == Auto || labelMode() == Auto )
     updateScale();
@@ -299,7 +299,7 @@ void QtxColorScale::setFormat( const QString& format )
     return;
 
   myFormat = format;
-  myPrecise = QString::null;
+  myPrecise = QString();
   if ( colorMode() == Auto )
     updateScale();
 }
@@ -314,7 +314,7 @@ void QtxColorScale::setIntervalsNumber( const int num )
     return;
   
   myInterval = num;
-  myPrecise = QString::null;
+  myPrecise = QString();
   
   updateScale();
 }
index eaffefbdf00dfb2f0a07feb8f85b91813e881ded..817138c962739be4dc96e5db7d62a85c3ca3a860 100755 (executable)
@@ -187,7 +187,7 @@ void QtxComboBox::paintClear( QPaintEvent* e )
   setUpdatesEnabled( false );
     
   setItemIcon( curIndex, QIcon() );
-  setItemText( curIndex, QString::null );
+  setItemText( curIndex, QString() );
 
   QComboBox::paintEvent( e );
     
index 6f1b81844c5502c4acfda21e48ac13b493244e86..c78b0c6de41474ce0a672bd42a21bf339cbf09d9 100755 (executable)
@@ -261,7 +261,7 @@ void QtxMRUAction::loadLinks( QtxResourceMgr* resMgr, const QString& section, co
     if ( !(*it).startsWith( itemPrefix ) )
       continue;
 
-    QString link = resMgr->stringValue( section, *it, QString::null );
+    QString link = resMgr->stringValue( section, *it, QString() );
     if ( link.isEmpty() || map.contains( link ) )
       continue;
 
@@ -299,7 +299,7 @@ void QtxMRUAction::saveLinks( QtxResourceMgr* resMgr, const QString& section, co
     if ( !(*it).startsWith( itemPrefix ) )
       continue;
 
-    QString link = resMgr->stringValue( section, *it, QString::null );
+    QString link = resMgr->stringValue( section, *it, QString() );
     if ( !link.isEmpty() && !map.contains( link ) )
     {
       lst.append( link );
index 57b887756196191abab3cdcd11c759a9a90c16c9..29dbac051b55bfa45d0d8a5354b496212b5a61cd 100755 (executable)
@@ -94,7 +94,7 @@ private:
   QStringList        prepareFilters( const QString& ) const;
        bool               hasVisibleChildren( QWidget* ) const;
   QStringList        filterWildCards( const QString& ) const;
-  QString            autoExtension( const QString&, const QString& = QString::null ) const;
+  QString            autoExtension( const QString&, const QString& = QString() ) const;
 
 protected:
   enum { OpenFile, SaveFile, OpenDir, SaveDir, NewDir };
index dee61a3892de940dc20f00d32a942d3d4361bf10..0c3adfedee9c4d662a3c4a0aba038231bc76cae3 100644 (file)
@@ -516,7 +516,7 @@ bool QtxPathListEdit::validate( const bool quietMode )
          if ( !quietMode && QMessageBox::information(this, 
                                                      tr("Warning"),
                                                      tr("%1\n\nThe directory doesn't exist.\nAdd directory anyway?").arg(dir.absPath()),
-                                                     tr("Yes"), tr("No"), QString::null, 1, 1) == 1) {
+                                                     tr("Yes"), tr("No"), QString(), 1, 1) == 1) {
            myEdit->setFocus();
             return false;
          }
index 50fc3241667db0ad1bd29bc97a3b302d8330581e..cc3b2d9139d168b3622a368c65f8c33669c92c3b 100644 (file)
@@ -94,7 +94,7 @@ protected:
   bool                      getBoolean( const bool = false ) const;
   QColor                    getColor( const QColor& = QColor() ) const;
   QFont                     getFont( const QFont& = QFont() ) const;
-  QString                   getString( const QString& = QString::null ) const;
+  QString                   getString( const QString& = QString() ) const;
 
   void                      setInteger( const int );
   void                      setDouble( const double );
index 2741e835264c96b1391e34c5763d91a038c33496..45f5a26097de009b5b9ce5ee535855d3cddee4a1 100644 (file)
@@ -269,7 +269,7 @@ QString QtxResourceMgr::Resources::path( const QString& sec, const QString& pref
   if ( !filePath.isEmpty() )
   {
     if ( !QFileInfo( filePath ).exists() )
-      filePath = QString::null;
+      filePath = QString();
   }
   return filePath;
 }
@@ -451,7 +451,7 @@ QTranslator* QtxResourceMgr::Resources::loadTranslator( const QString& sect, con
 */
 QString QtxResourceMgr::Resources::environmentVariable( const QString& str, int& start, int& len ) const
 {
-  QString varName = QString::null;
+  QString varName;
   len = 0;
 
   QRegExp rx( "(^\\$\\{|[^\\$]\\$\\{)([a-zA-Z]+[a-zA-Z0-9_]*)(\\})|(^\\$\\(|[^\\$]\\$\\()([a-zA-Z]+[a-zA-Z0-9_]*)(\\))|(^\\$|[^\\$]\\$)([a-zA-Z]+[a-zA-Z0-9_]*)|(^%|[^%]%)([a-zA-Z]+[a-zA-Z0-9_]*)(%[^%]|%$)" );
@@ -1383,39 +1383,7 @@ bool QtxResourceMgr::value( const QString& sect, const QString& name, QColor& cV
   if ( !value( sect, name, val, true ) )
     return false;
 
-  bool res = true;
-  QStringList vals = val.split( QRegExp( "[\\s|,]" ), QString::SkipEmptyParts );
-
-  QIntList nums;
-  for ( QStringList::const_iterator it = vals.begin(); it != vals.end() && res; ++it )
-  {
-    int num = 0;
-    if ( (*it).startsWith( "#" ) )
-      num = (*it).mid( 1 ).toInt( &res, 16 );
-    else
-      num = (*it).toInt( &res, 10 );
-    if ( res )
-      nums.append( num );
-  }
-
-  res = res && nums.count() >= 3;
-  if ( res )
-    cVal.setRgb( nums[0], nums[1], nums[2] );
-
-  if ( !res )
-  {
-    int pack = val.toInt( &res );
-    if ( res )
-      cVal = Qtx::rgbSet( pack );
-  }
-
-  if ( !res )
-  {
-    cVal = QColor( val );
-    res = cVal.isValid();
-  }
-
-  return res;
+  return Qtx::stringToColor( val, cVal );
 }
 
 /*!
@@ -1499,6 +1467,57 @@ bool QtxResourceMgr::value( const QString& sect, const QString& name, QByteArray
   return !baVal.isEmpty();
 }
 
+/*!
+  \brief Get linear gradient parameter value.
+  \param sect section name
+  \param name parameter name
+  \param gVal parameter to return resulting linear gradient value value
+  \return \c true if parameter is found and \c false if parameter is not found
+          (in this case \a gVal value is undefined)
+*/
+bool QtxResourceMgr::value( const QString& sect, const QString& name, QLinearGradient& gVal ) const
+{
+  QString val;
+  if ( !value( sect, name, val, true ) )
+    return false;
+
+  return Qtx::stringToLinearGradient( val, gVal );
+}
+
+/*!
+  \brief Get radial gradient parameter value.
+  \param sect section name
+  \param name parameter name
+  \param gVal parameter to return resulting radial gradient value value
+  \return \c true if parameter is found and \c false if parameter is not found
+          (in this case \a gVal value is undefined)
+*/
+bool QtxResourceMgr::value( const QString& sect, const QString& name, QRadialGradient& gVal ) const
+{
+  QString val;
+  if ( !value( sect, name, val, true ) )
+    return false;
+
+  return Qtx::stringToRadialGradient( val, gVal );
+}
+
+/*!
+  \brief Get conical gradient parameter value.
+  \param sect section name
+  \param name parameter name
+  \param gVal parameter to return resulting conical gradient value value
+  \return \c true if parameter is found and \c false if parameter is not found
+          (in this case \a gVal value is undefined)
+*/
+bool QtxResourceMgr::value( const QString& sect, const QString& name, QConicalGradient& gVal ) const
+{
+  QString val;
+  if ( !value( sect, name, val, true ) )
+    return false;
+
+  return Qtx::stringToConicalGradient( val, gVal );
+}
+
 /*!
   \brief Get string parameter value (native format).
   \param sect section name
@@ -1659,6 +1678,60 @@ QByteArray QtxResourceMgr::byteArrayValue( const QString& sect, const QString& n
   return val;
 }
 
+/*!
+  \brief Get linear gradient parameter value.
+
+  If the specified parameter is not found, the specified default value is returned instead.
+
+  \param sect section name
+  \param name parameter name
+  \param def default value
+  \return parameter value (or default value if parameter is not found)
+*/
+QLinearGradient QtxResourceMgr::linearGradientValue( const QString& sect, const QString& name, const QLinearGradient& def ) const
+{
+  QLinearGradient val;
+  if ( !value( sect, name, val ) )
+    val = def;
+  return val;
+}
+
+/*!
+  \brief Get radial gradient parameter value.
+
+  If the specified parameter is not found, the specified default value is returned instead.
+
+  \param sect section name
+  \param name parameter name
+  \param def default value
+  \return parameter value (or default value if parameter is not found)
+*/
+QRadialGradient QtxResourceMgr::radialGradientValue( const QString& sect, const QString& name, const QRadialGradient& def ) const
+{
+  QRadialGradient val;
+  if ( !value( sect, name, val ) )
+    val = def;
+  return val;
+}
+
+/*!
+  \brief Get conical gradient parameter value.
+
+  If the specified parameter is not found, the specified default value is returned instead.
+
+  \param sect section name
+  \param name parameter name
+  \param def default value
+  \return parameter value (or default value if parameter is not found)
+*/
+QConicalGradient QtxResourceMgr::conicalGradientValue( const QString& sect, const QString& name, const QConicalGradient& def ) const
+{
+  QConicalGradient val;
+  if ( !value( sect, name, val ) )
+    val = def;
+  return val;
+}
+
 /*!
   \brief Check parameter existence.
   \param sect section name
@@ -1749,7 +1822,7 @@ void QtxResourceMgr::setValue( const QString& sect, const QString& name, const Q
   if ( checkExisting() && value( sect, name, res ) && res == val )
     return;
 
-  setResource( sect, name, val.isValid() ? val.name() : QString() );
+  setResource( sect, name, Qtx::colorToString( val ) );
 }
 
 /*!
@@ -1814,6 +1887,51 @@ void QtxResourceMgr::setValue( const QString& sect, const QString& name, const Q
   setResource( sect, name, lst.join( " " ) );
 }
 
+/*!
+  \brief Set linear gradient parameter value.
+  \param sect section name
+  \param name parameter name
+  \param val parameter value
+*/
+void QtxResourceMgr::setValue( const QString& sect, const QString& name, const QLinearGradient& val )
+{
+  QLinearGradient res;
+  if ( checkExisting() && value( sect, name, res ) && res == val )
+    return;
+
+  setResource( sect, name, Qtx::gradientToString( val ) );
+}
+
+/*!
+  \brief Set radial gradient parameter value.
+  \param sect section name
+  \param name parameter name
+  \param val parameter value
+*/
+void QtxResourceMgr::setValue( const QString& sect, const QString& name, const QRadialGradient& val )
+{
+  QRadialGradient res;
+  if ( checkExisting() && value( sect, name, res ) && res == val )
+    return;
+
+  setResource( sect, name, Qtx::gradientToString( val ) );
+}
+
+/*!
+  \brief Set conical gradient parameter value.
+  \param sect section name
+  \param name parameter name
+  \param val parameter value
+*/
+void QtxResourceMgr::setValue( const QString& sect, const QString& name, const QConicalGradient& val )
+{
+  QConicalGradient res;
+  if ( checkExisting() && value( sect, name, res ) && res == val )
+    return;
+
+  setResource( sect, name, Qtx::gradientToString( val ) );
+}
+
 /*!
   \brief Remove resources section.
   \param sect section name
index b70caa2c545ac4b3c0fc9f412046ada4cf010bf4..9e5ba171665bb315bddefeec8765ccba360ef426 100644 (file)
@@ -35,6 +35,9 @@
 #include <QPixmap>
 #include <QByteArray>
 #include <QStringList>
+#include <QLinearGradient>
+#include <QRadialGradient>
+#include <QConicalGradient>
 
 class QTranslator;
 
@@ -58,101 +61,110 @@ public:
 #endif
 
 public:
-  QtxResourceMgr( const QString&, const QString& = QString::null );
+  QtxResourceMgr( const QString&, const QString& = QString() );
   virtual ~QtxResourceMgr();
 
-  QString         appName() const;
-  QStringList     dirList() const;
-
-  bool            checkExisting() const;
-  virtual void    setCheckExisting( const bool );
-
-  bool            isPixmapCached() const;
-  void            setIsPixmapCached( const bool );
-
-  void            clear();
-
-  void            setIgnoreUserValues( const bool = true );
-  bool            ignoreUserValues() const;
-
-  bool            value( const QString&, const QString&, int& ) const;
-  bool            value( const QString&, const QString&, double& ) const;
-  bool            value( const QString&, const QString&, bool& ) const;
-  bool            value( const QString&, const QString&, QColor& ) const;
-  bool            value( const QString&, const QString&, QFont& ) const;  
-  bool            value( const QString&, const QString&, QByteArray& ) const;  
-  bool            value( const QString&, const QString&, QString&, const bool = true ) const;
-
-  int             integerValue( const QString&, const QString&, const int = 0 ) const;
-  double          doubleValue( const QString&, const QString&, const double = 0 ) const;
-  bool            booleanValue( const QString&, const QString&, const bool = false ) const;
-  QFont           fontValue( const QString&, const QString&, const QFont& = QFont() ) const;
-  QColor          colorValue( const QString&, const QString&, const QColor& = QColor() ) const;
-  QString         stringValue( const QString&, const QString&, const QString& = QString::null ) const;
-  QByteArray      byteArrayValue( const QString&, const QString&, const QByteArray& = QByteArray() ) const;
-
-  bool            hasSection( const QString& ) const;
-  bool            hasValue( const QString&, const QString& ) const;
-
-  void            setValue( const QString&, const QString&, const int );
-  void            setValue( const QString&, const QString&, const double );
-  void            setValue( const QString&, const QString&, const bool );
-  void            setValue( const QString&, const QString&, const QFont& );
-  void            setValue( const QString&, const QString&, const QColor& );
-  void            setValue( const QString&, const QString&, const QString& );
-  void            setValue( const QString&, const QString&, const QByteArray& );
-
-  void            remove( const QString& );
-  void            remove( const QString&, const QString& );
-
-  QString         currentFormat() const;
-  void            setCurrentFormat( const QString& );
-
-  Format*         format( const QString& ) const;
-  void            installFormat( Format* );
-  void            removeFormat( Format* );
-
-  QStringList     options() const;
-  QString         option( const QString& ) const;
-  void            setOption( const QString&, const QString& );
-
-  QPixmap         defaultPixmap() const;
-  virtual void    setDefaultPixmap( const QPixmap& );
-
-  QString         resSection() const;
-  QString         langSection() const;
-
-  QPixmap         loadPixmap( const QString&, const QString& ) const;
-  QPixmap         loadPixmap( const QString&, const QString&, const bool ) const;
-  QPixmap         loadPixmap( const QString&, const QString&, const QPixmap& ) const;
-  void            loadLanguage( const QString& = QString::null, const QString& = QString::null );
-
-  void            raiseTranslators( const QString& );
-  void            removeTranslators( const QString& );
-  void            loadTranslator( const QString&, const QString& );
-  void            loadTranslators( const QString&, const QStringList& );
-
-  QString         path( const QString&, const QString&, const QString& ) const;
-
-  bool            load();
-  bool            import( const QString& );
-  bool            save();
-
-  QStringList     sections() const;
-  QStringList     parameters( const QString& ) const;
-
-  void            refresh();
+  QString          appName() const;
+  QStringList      dirList() const;
+
+  bool             checkExisting() const;
+  virtual void     setCheckExisting( const bool );
+
+  bool             isPixmapCached() const;
+  void             setIsPixmapCached( const bool );
+
+  void             clear();
+
+  void             setIgnoreUserValues( const bool = true );
+  bool             ignoreUserValues() const;
+
+  bool             value( const QString&, const QString&, int& ) const;
+  bool             value( const QString&, const QString&, double& ) const;
+  bool             value( const QString&, const QString&, bool& ) const;
+  bool             value( const QString&, const QString&, QColor& ) const;
+  bool             value( const QString&, const QString&, QFont& ) const;  
+  bool             value( const QString&, const QString&, QByteArray& ) const;  
+  bool             value( const QString&, const QString&, QLinearGradient& ) const;  
+  bool             value( const QString&, const QString&, QRadialGradient& ) const;  
+  bool             value( const QString&, const QString&, QConicalGradient& ) const;  
+  bool             value( const QString&, const QString&, QString&, const bool = true ) const;
+
+  int              integerValue( const QString&, const QString&, const int = 0 ) const;
+  double           doubleValue( const QString&, const QString&, const double = 0 ) const;
+  bool             booleanValue( const QString&, const QString&, const bool = false ) const;
+  QFont            fontValue( const QString&, const QString&, const QFont& = QFont() ) const;
+  QColor           colorValue( const QString&, const QString&, const QColor& = QColor() ) const;
+  QString          stringValue( const QString&, const QString&, const QString& = QString() ) const;
+  QByteArray       byteArrayValue( const QString&, const QString&, const QByteArray& = QByteArray() ) const;
+  QLinearGradient  linearGradientValue( const QString&, const QString&, const QLinearGradient& = QLinearGradient() ) const;
+  QRadialGradient  radialGradientValue( const QString&, const QString&, const QRadialGradient& = QRadialGradient() ) const;
+  QConicalGradient conicalGradientValue( const QString&, const QString&, const QConicalGradient& = QConicalGradient() ) const;
+
+  bool             hasSection( const QString& ) const;
+  bool             hasValue( const QString&, const QString& ) const;
+
+  void             setValue( const QString&, const QString&, const int );
+  void             setValue( const QString&, const QString&, const double );
+  void             setValue( const QString&, const QString&, const bool );
+  void             setValue( const QString&, const QString&, const QFont& );
+  void             setValue( const QString&, const QString&, const QColor& );
+  void             setValue( const QString&, const QString&, const QString& );
+  void             setValue( const QString&, const QString&, const QByteArray& );
+  void             setValue( const QString&, const QString&, const QLinearGradient& );
+  void             setValue( const QString&, const QString&, const QRadialGradient& );
+  void             setValue( const QString&, const QString&, const QConicalGradient& );
+
+  void             remove( const QString& );
+  void             remove( const QString&, const QString& );
+
+  QString          currentFormat() const;
+  void             setCurrentFormat( const QString& );
+
+  Format*          format( const QString& ) const;
+  void             installFormat( Format* );
+  void             removeFormat( Format* );
+
+  QStringList      options() const;
+  QString          option( const QString& ) const;
+  void             setOption( const QString&, const QString& );
+
+  QPixmap          defaultPixmap() const;
+  virtual void     setDefaultPixmap( const QPixmap& );
+
+  QString          resSection() const;
+  QString          langSection() const;
+
+  QPixmap          loadPixmap( const QString&, const QString& ) const;
+  QPixmap          loadPixmap( const QString&, const QString&, const bool ) const;
+  QPixmap          loadPixmap( const QString&, const QString&, const QPixmap& ) const;
+  void             loadLanguage( const QString& = QString(), const QString& = QString() );
+
+  void             raiseTranslators( const QString& );
+  void             removeTranslators( const QString& );
+  void             loadTranslator( const QString&, const QString& );
+  void             loadTranslators( const QString&, const QStringList& );
+
+  QString          path( const QString&, const QString&, const QString& ) const;
+
+  bool             load();
+  bool             import( const QString& );
+  bool             save();
+
+  QStringList      sections() const;
+  QStringList      parameters( const QString& ) const;
+
+  void             refresh();
 
 protected:
-  virtual void    setDirList( const QStringList& );
-  virtual void    setResource( const QString&, const QString&, const QString& );
+  virtual void     setDirList( const QStringList& );
+  virtual void     setResource( const QString&, const QString&, const QString& );
 
-  virtual QString userFileName( const QString&, const bool = true ) const;
-  virtual QString globalFileName( const QString& ) const;
+  virtual QString  userFileName( const QString&, const bool = true ) const;
+  virtual QString  globalFileName( const QString& ) const;
 
 private:
-  void            initialize( const bool = true ) const;
-  QString         substMacro( const QString&, const QMap<QChar, QString>& ) const;
+  void             initialize( const bool = true ) const;
+  QString          substMacro( const QString&, const QMap<QChar, QString>& ) const;
 
 private:
   typedef QList<Resources*>        ResList;
@@ -162,17 +174,17 @@ private:
   typedef QMap<QString, TransList> TransListMap;
 
 private:
-  QString         myAppName;                 //!< application name
-  QStringList     myDirList;                 //!< list of resources directories
-  FormatList      myFormats;                 //!< list of formats
-  OptionsMap      myOptions;                 //!< options map
-  ResList         myResources;               //!< resources list
-  bool            myCheckExist;              //!< "check existance" flag
-  TransListMap    myTranslator;              //!< map of loaded translators
-  QPixmap*        myDefaultPix;              //!< default icon
-  bool            myIsPixmapCached;          //!< "cached pixmaps" flag
-
-  bool            myIsIgnoreUserValues;      //!< "ignore user values" flag
+  QString          myAppName;                 //!< application name
+  QStringList      myDirList;                 //!< list of resources directories
+  FormatList       myFormats;                 //!< list of formats
+  OptionsMap       myOptions;                 //!< options map
+  ResList          myResources;               //!< resources list
+  bool             myCheckExist;              //!< "check existance" flag
+  TransListMap     myTranslator;              //!< map of loaded translators
+  QPixmap*         myDefaultPix;              //!< default icon
+  bool             myIsPixmapCached;          //!< "cached pixmaps" flag
+
+  bool             myIsIgnoreUserValues;      //!< "ignore user values" flag
 
   friend class QtxResourceMgr::Format;
 };
index c954e9b0c5e27e85d59717a1a319e07883f619b9..db4d6afa19e094fc33f0e9ad5334028af799256a 100644 (file)
@@ -21,6 +21,7 @@
 //
 
 #include "QtxSplash.h"
+#include "QtxResourceMgr.h"
 
 #include <QApplication>
 #include <QPainter>
@@ -651,6 +652,42 @@ QString QtxSplash::constantInfo() const
   return myInfo;
 }
 
+/*!
+  \brief Set constant information option value.
+
+  The option is a part of the constant information text,
+  which is replaced at the time of the displaying.
+
+  The following options are supported:
+  - %A - could be used as application name
+  - %V - could be used as application version
+  - %L - could be used as application license information
+  - %C - could be used as application copyright information
+
+  \param name option name
+  \param option value
+  \sa option()
+*/
+void QtxSplash::setOption( const QString& name, const QString& value )
+{
+  myOptions[ name ] = value;
+  repaint();
+}
+
+/*!
+  \brief Get constant information option value.
+  \param name option name
+  \return option value or empty string if option is not set
+  \sa setOption()
+*/
+QString QtxSplash::option( const QString& name ) const
+{
+  QString val;
+  if ( myOptions.contains( name ) )
+    val = myOptions[ name ];
+  return val;
+}
+
 /*!
   \brief Get current status message.
   \return status message
@@ -705,6 +742,115 @@ void QtxSplash::repaint()
   QApplication::flush();
 }
 
+/*!
+  \brief Read splash settings from the resources manager.
+  \param resMgr resources manager
+  \param section resources file section name (if empty, the default name is used).
+*/
+void QtxSplash::readSettings( QtxResourceMgr* resMgr, const QString& section )
+{
+  QString resSection = section.isEmpty() ? "splash" : section;
+  
+  // pixmap
+  QString pxname;
+  if ( resMgr->value( resSection, "image", pxname ) ) {
+    QPixmap px( pxname );
+    if ( !px.isNull() )
+      setPixmap( px );
+  }
+
+  // hide-on-click
+#ifdef _DEBUG_
+  setHideOnClick( true );
+#else
+  bool bHide;
+  if ( resMgr->value( resSection, "hide_on_click", bHide ) ) {
+    setHideOnClick( bHide );
+  }
+#endif
+
+  // margin
+  int m;
+  if ( resMgr->value( resSection, "margin", m ) ) {
+    setMargin( m );
+  }
+
+  // progress bar width
+  int pw;
+  if ( resMgr->value( resSection, "progress_width", pw ) ) {
+    setProgressWidth( pw );
+  }
+
+  // progress bar position and direction
+  int pf;
+  if ( resMgr->value( resSection, "progress_flags", pf ) ) {
+    setProgressFlags( pf );
+  }
+  
+  // opacity
+  double op;
+  if ( resMgr->value( resSection, "opacity", op ) ) {
+    setOpacity( op );
+  }
+
+  // font
+  QFont f;
+  if ( resMgr->value( resSection, "font", f ) ) {
+    setFont( f );
+  }
+
+  // text alignment
+  int al;
+  if ( resMgr->value( resSection, "alignment", al ) ) {
+    setTextAlignment( al );
+  }
+
+  // progress color(s)
+  QString pc;
+  QLinearGradient grad;
+  if ( resMgr->value( resSection, "progress_gradient", grad ) ) {
+    // gradient-colored progress bar
+    setProgressGradient( grad );
+  }
+  else if ( resMgr->value( resSection, "progress_color",  pc ) || 
+           resMgr->value( resSection, "progress_colors", pc ) ) {
+    // one/two-colored progress bar
+    QStringList colors = pc.split( "|", QString::SkipEmptyParts );
+    QColor c1, c2;
+    QtxSplash::GradientType gradType = QtxSplash::Vertical;
+    if ( colors.count() > 0 ) c1 = QColor( colors[0] );
+    if ( colors.count() > 1 ) c2 = QColor( colors[1] );
+    int gt;
+    bool bOk;
+    if ( colors.count() > 2 ) {
+      gt = colors[2].toInt( &bOk );
+      if ( bOk && gt >= QtxSplash::Horizontal && gt <= QtxSplash::Vertical )
+       gradType = (QtxSplash::GradientType)gt;
+    }
+    setProgressColors( c1, c2, gradType );
+  }
+
+  // text color(s)
+  QString tc;
+  if ( resMgr->value( resSection, "text_color",  tc ) || 
+       resMgr->value( resSection, "text_colors", tc ) ) {
+    QStringList colors = tc.split( "|", QString::SkipEmptyParts );
+    QColor c1, c2;
+    if ( colors.count() > 0 )
+      c1 = QColor( colors[0] );
+    if ( colors.count() > 1 )
+      c2 = QColor( colors[1] );
+    setTextColors( c1, c2 );
+  }
+
+  // const info
+  QString cinfo;
+  if ( resMgr->value( resSection, "constant_info", cinfo, false ) ||
+       resMgr->value( resSection, "info", cinfo, false ) ) {
+    setConstantInfo( cinfo.split( "|", QString::KeepEmptyParts ).join( "\n" ) );
+  }
+}
+
 /*!
   \brief Set status message for the splash screen and define its color 
   and aligment flags.
@@ -742,7 +888,7 @@ void QtxSplash::setMessage( const QString& msg )
 */
 void QtxSplash::clear()
 {
-  myMessage = QString::null;
+  myMessage.clear();
   repaint();
 }
 
@@ -971,8 +1117,15 @@ void QtxSplash::setError( const int code )
 QString QtxSplash::fullMessage() const
 {
   QStringList info;
-  if ( !myInfo.isEmpty() )
-    info << myInfo;
+
+  QString cinfo = myInfo;
+  cinfo = cinfo.replace( QRegExp( "%A" ), option( "%A" ) );
+  cinfo = cinfo.replace( QRegExp( "%V" ), option( "%V" ) );
+  cinfo = cinfo.replace( QRegExp( "%L" ), option( "%L" ) );
+  cinfo = cinfo.replace( QRegExp( "%C" ), option( "%C" ) );
+
+  if ( !cinfo.isEmpty() )
+    info << cinfo;
   if ( !myMessage.isEmpty() )
     info << myMessage;
   return info.join( "\n" );
index 280851166f7415c5cb30a9b4be1caa6f69f52e06..1d92e70fb2d102a9021b5342515636a8a0007787 100644 (file)
 #include <QWidget>
 #include <QPixmap>
 #include <QLinearGradient>
+#include <QMap>
 
 #ifdef WIN32
 #pragma warning( disable:4251 )
 #endif
 
+class QtxResourceMgr;
+
 class QTX_EXPORT QtxSplash : public QWidget
 {
   Q_OBJECT
@@ -62,7 +65,7 @@ public:
   static QtxSplash* splash( const QPixmap& = QPixmap() );
   
   static void       setStatus( const QString&, const int = -1 );
-  static void       setError( const QString&, const QString& = QString::null, const int = -1 );
+  static void       setError( const QString&, const QString& = QString(), const int = -1 );
   
   void              setPixmap( const QPixmap& );
   QPixmap           pixmap() const;
@@ -108,6 +111,9 @@ public:
   void              setConstantInfo( const QString& info );
   QString           constantInfo() const;
 
+  void              setOption( const QString&, const QString& );
+  QString           option( const QString& ) const;
+
   QString           message() const;
   
   int               error() const;
@@ -115,6 +121,8 @@ public:
   void              finish( QWidget* );
   void              repaint();
   
+  void              readSettings( QtxResourceMgr*, const QString& = QString() );
+
 public slots:
   void              setMessage( const QString&, 
                                const int,
@@ -137,6 +145,9 @@ private:
   void              setError( const int );
   QString           fullMessage() const;
 
+private:
+  typedef QMap<QString, QString> OptMap;
+      
 private:
   static QtxSplash* mySplash;
   
@@ -159,6 +170,7 @@ private:
   double            myOpacity;          //!< progress bar / status message opacity
   int               myError;            //!< error code
   bool              myGradientUsed;     //!< 'use custom gradient color scale' flag
+  OptMap            myOptions;          //!< constant info options
 };
 
 #endif
index 1f7c0be558ff993ee1af7d6127c0624467f3df1f..1add707755440661a480850ee9b71810e949541b 100644 (file)
@@ -260,12 +260,12 @@ void QtxTable::endHeaderEdit( const bool accept )
   if ( !isHeaderEditing() )
     return;
 
-  QString oldTxt = myEditedHeader ? myEditedHeader->label( myEditedSection ) : QString::null;
+  QString oldTxt = myEditedHeader ? myEditedHeader->label( myEditedSection ) : QString();
 
   if ( accept && myEditedHeader )
     setHeaderContentFromEditor( myEditedHeader, myEditedSection, myHeaderEditor );
 
-  QString newTxt = myEditedHeader ? myEditedHeader->label( myEditedSection ) : QString::null;
+  QString newTxt = myEditedHeader ? myEditedHeader->label( myEditedSection ) : QString();
 
   int sec = myEditedSection;
   QHeader* hdr = myEditedHeader;
index aaec1636c1748f0ea8b5d97457daf2334da23018..a2f57321369b328ae2f2356fc84bdd2b2d408288 100644 (file)
@@ -34,6 +34,7 @@
 #include <QApplication>
 #include <QInputDialog>
 #include <QStackedWidget>
+#include <QAbstractButton>
 #include <QPainter>
 #include <QStyleOption>
 
@@ -240,64 +241,119 @@ void QtxWorkstackDrag::startDrawRect()
 }
 
 
-QtxWorkstackAreaTitleButton::QtxWorkstackAreaTitleButton(QWidget *widget)
-: QAbstractButton(widget)
+/*
+  \class CloseButton
+  \brief Workstack area close button.
+  \internal
+*/
+class CloseButton : public QAbstractButton
+{
+public:
+  CloseButton( QWidget* );
+
+  QSize        sizeHint() const;
+  QSize        minimumSizeHint() const;
+
+  void enterEvent( QEvent* );
+  void leaveEvent( QEvent* );
+  void paintEvent( QPaintEvent* );
+};
+
+/*!
+  \brief Constructor
+  \internal
+  \param parent parent widget
+*/
+CloseButton::CloseButton( QWidget* parent )
+: QAbstractButton( parent )
 {
- setFocusPolicy(Qt::NoFocus);
+ setFocusPolicy( Qt::NoFocus );
 }
 
-QSize QtxWorkstackAreaTitleButton::sizeHint() const
+/*!
+  \brief Get appropriate size for the button.
+  \internal
+  \return size value
+*/
+QSize CloseButton::sizeHint() const
 {
   ensurePolished();
   int dim = 0;
-  if( !icon().isNull() ) {
+  if( !icon().isNull() ) 
+  {
     const QPixmap pm = icon().pixmap( style()->pixelMetric( QStyle::PM_SmallIconSize ),
                                       QIcon::Normal );
-    dim = qMax(pm.width(), pm.height());
+    dim = qMax( pm.width(), pm.height() );
   }
   return QSize( dim + 4, dim + 4 );
 }
-void QtxWorkstackAreaTitleButton::enterEvent( QEvent *event )
+
+/*!
+  \brief Get minimum appropriate size for the button.
+  \internal
+  \return minimum size value
+*/
+QSize CloseButton::minimumSizeHint() const
+{ 
+  return sizeHint(); 
+}
+
+/*!
+  \brief Process mouse enter event.
+  \internal
+  \param event mouse enter event
+*/
+void CloseButton::enterEvent( QEvent *event )
 {
   if ( isEnabled() )
     update();
   QAbstractButton::enterEvent( event );
 }
 
-void QtxWorkstackAreaTitleButton::leaveEvent( QEvent *event )
+/*!
+  \brief Process mouse leave event.
+  \internal
+  \param event mouse leave event
+*/
+void CloseButton::leaveEvent( QEvent *event )
 {
   if( isEnabled() )
     update();
   QAbstractButton::leaveEvent( event );
 }
 
-void QtxWorkstackAreaTitleButton::paintEvent( QPaintEvent* )
+/*!
+  \brief Process paint event.
+  \internal
+  \param event paint event
+*/
+void CloseButton::paintEvent( QPaintEvent* )
 {
-  QPainter p(this);
+  QPainter p( this );
 
   QRect r = rect();
   QStyleOption opt;
-  opt.init(this);
+  opt.init( this );
   opt.state |= QStyle::State_AutoRaise;
-  if (isEnabled() && underMouse() && !isChecked() && !isDown())
+  if ( isEnabled() && underMouse() && !isChecked() && !isDown() )
     opt.state |= QStyle::State_Raised;
-  if (isChecked())
+  if ( isChecked() )
     opt.state |= QStyle::State_On;
-  if (isDown())
+  if ( isDown() )
     opt.state |= QStyle::State_Sunken;
-  style()->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, &p, this);
+  style()->drawPrimitive( QStyle::PE_PanelButtonTool, &opt, &p, this );
 
-  int shiftHorizontal = opt.state & QStyle::State_Sunken ? style()->pixelMetric(QStyle::PM_ButtonShiftHorizontal, &opt, this) : 0;
-  int shiftVertical = opt.state & QStyle::State_Sunken ? style()->pixelMetric(QStyle::PM_ButtonShiftVertical, &opt, this) : 0;
+  int shiftHorizontal = opt.state & QStyle::State_Sunken ? style()->pixelMetric( QStyle::PM_ButtonShiftHorizontal, &opt, this ) : 0;
+  int shiftVertical = opt.state & QStyle::State_Sunken ? style()->pixelMetric( QStyle::PM_ButtonShiftVertical, &opt, this ) : 0;
 
-  r.adjust(2, 2, -2, -2);
-  r.translate(shiftHorizontal, shiftVertical);
+  r.adjust( 2, 2, -2, -2 );
+  r.translate( shiftHorizontal, shiftVertical );
 
   QPixmap pm = icon().pixmap( style()->pixelMetric( QStyle::PM_SmallIconSize ), isEnabled() ?
                               underMouse() ? QIcon::Active : QIcon::Normal
-                                           : QIcon::Disabled,
-                              isDown() ? QIcon::On : QIcon::Off);
-  style()->drawItemPixmap(&p, r, Qt::AlignCenter, pm);
+                             : QIcon::Disabled,
+                              isDown() ? QIcon::On : QIcon::Off );
+  style()->drawItemPixmap( &p, r, Qt::AlignCenter, pm );
 }
 
 /*!
@@ -328,7 +384,7 @@ QtxWorkstackArea::QtxWorkstackArea( QWidget* parent )
   myBar = new QtxWorkstackTabBar( top );
   tl->addWidget( myBar, 1 );
 
-  QtxWorkstackAreaTitleButton* close = new QtxWorkstackAreaTitleButton( top );
+  CloseButton* close = new CloseButton( top );
   close->setIcon( style()->standardIcon( QStyle::SP_TitleBarCloseButton ) );
   myClose = close;
   tl->addWidget( myClose );
index d2ee2b10eb990e16d640d9353fee713495588802..e4ae553813057059574cc2453c9d38e259ccd001 100644 (file)
 #include <QTabBar>
 #include <QEvent>
 #include <QMap>
-#include <QAbstractButton>
 
 class QAction;
 class QSplitter;
 class QStackedWidget;
 class QRubberBand;
+class QAbstractButton;
 
 class QtxWorkstackArea;
 class QtxWorkstackDrag;
@@ -155,25 +155,6 @@ private:
   friend class QtxWorkstackDrag;
 };
 
-/*
-  Tool window title
-*/
-class QtxWorkstackAreaTitleButton : public QAbstractButton
-{
-  Q_OBJECT
-
-public:
-  QtxWorkstackAreaTitleButton(QWidget *widget);
-
-  QSize sizeHint() const;
-  inline QSize minimumSizeHint() const
-  { return sizeHint(); }
-
-  void enterEvent(QEvent *event);
-  void leaveEvent(QEvent *event);
-  void paintEvent(QPaintEvent *event);
-};
-
 class QtxWorkstackArea : public QFrame
 {
   Q_OBJECT
index c7fc077e1a408454c598a3489443c517d154190d..cc889eec697c14a02dde75c4201170e0ffc4e58d 100755 (executable)
@@ -302,7 +302,7 @@ bool STD_Application::onNewDoc( const QString& name )
 void STD_Application::onOpenDoc()
 {
   // It is preferrable to use OS-specific file dialog box here !!!
-  QString aName = getFileName( true, QString::null, getFileFilter(), QString::null, 0 );
+  QString aName = getFileName( true, QString(), getFileFilter(), QString(), 0 );
   if ( aName.isNull() )
     return;
 
@@ -499,7 +499,7 @@ bool STD_Application::onSaveAsDoc()
   bool isOk = false;
   while ( !isOk )
   {
-    QString aName = getFileName( false, study->studyName(), getFileFilter(), QString::null, 0 );
+    QString aName = getFileName( false, study->studyName(), getFileFilter(), QString(), 0 );
     if ( aName.isNull() )
       return false;
 
@@ -815,7 +815,7 @@ QString STD_Application::getFileName( bool open, const QString& initial, const Q
                                                   SUIT_MessageBox::Yes | SUIT_MessageBox::No | SUIT_MessageBox::Cancel, SUIT_MessageBox::Yes );
          if ( aAnswer == SUIT_MessageBox::Cancel )
           {     // cancelled
-            aName = QString::null;
+            aName = QString();
            isOk = true;
           }
          else if ( aAnswer == SUIT_MessageBox::No ) // not save to this file
index 9ea5b736d346345c8383725891db41e58a1242a4..73cbacfc08b63376b7dcc03f3de9733f0a3f60d0 100755 (executable)
@@ -82,7 +82,7 @@ public:
   void                  viewManagers( ViewManagerList& ) const;
   void                  viewManagers( const QString&, ViewManagerList& ) const;
 
-  virtual QString       getFileFilter() const { return QString::null; }
+  virtual QString       getFileFilter() const { return QString(); }
   virtual QString       getFileName( bool open, const QString& initial, const QString& filters, 
                                                             const QString& caption, QWidget* parent );
   QString               getDirectory( const QString& initial, const QString& caption, QWidget* parent );
index f07565b4e7c94eca6e682d48edc12a720ad62029..d841f3e63fee397eb454d17c4b88310218db1249 100755 (executable)
@@ -94,7 +94,7 @@ SUIT_Study* SUIT_Application::activeStudy() const
 */
 QString SUIT_Application::applicationVersion() const
 {
-  return QString::null;
+  return QString();
 }
 
 /*!
@@ -195,7 +195,7 @@ void SUIT_Application::onInfoClear()
   bool changed = !myStatusLabel->text().isEmpty();
   myStatusLabel->clear();
   if ( changed )
-    emit infoChanged( QString::null );
+    emit infoChanged( QString() );
 }
 
 /*!
index 31ff40f8f2fa6bac0a9a7298f66b9c87a606414a..73ab85cc2a8401f0c961a627d7914fe5d1cd82bb 100755 (executable)
@@ -154,7 +154,7 @@ bool SUIT_Operation::testFlags( const int f ) const
 */
 QString SUIT_Operation::operationName() const
 {
-  return QString::null;
+  return QString();
 }
 
 /*!
index 6a1785e2a4756051ea2f1e3a8042f7b5e3908ba6..cf29007d7ea85ee1d5108c1697f2f159f16494d8 100755 (executable)
@@ -140,7 +140,7 @@ protected:
   virtual bool      openTransaction();
   virtual bool      abortTransaction();
   virtual bool      hasTransaction() const;
-  virtual bool      commitTransaction( const QString& = QString::null );
+  virtual bool      commitTransaction( const QString& = QString() );
 
   void              setExecStatus( const int );
 
index db0eda7119c5881d9053fc69c2f687bf741b5e5f..2717de2c4e7f1ee16358921d17d4788c1a177173 100755 (executable)
@@ -26,7 +26,7 @@
 class SUIT_EXPORT SUIT_ResourceMgr : public QtxResourceMgr
 {
 public:
-  SUIT_ResourceMgr( const QString&, const QString& = QString::null );
+  SUIT_ResourceMgr( const QString&, const QString& = QString() );
   virtual ~SUIT_ResourceMgr();
 
   virtual QString version() const;
index 7f308273779e9f58f4891da26da3969fee9f6f2b..ec2ecb9fa3ccb36820b9390ec2eeb56fae5835c9 100755 (executable)
@@ -40,14 +40,14 @@ public:
   virtual ~SUIT_SelectionMgr();
 
   void            clearSelected();
-  virtual void    selected( SUIT_DataOwnerPtrList&, const QString& = QString::null ) const;
+  virtual void    selected( SUIT_DataOwnerPtrList&, const QString& = QString() ) const;
   virtual void    setSelected( const SUIT_DataOwnerPtrList&, const bool = false );
 
   void            selectors( QList<SUIT_Selector*>& ) const;
   void            selectors( const QString&, QList<SUIT_Selector*>& ) const;
 
 
-  void            setEnabled( const bool, const QString& = QString::null );
+  void            setEnabled( const bool, const QString& = QString() );
 
 
   bool            hasSelectionMode( const int ) const;
index 6ebf2bcad4f04e926bf5231266f9fd0f2668dba1..97e12f493e4ba6bd104b01798ba37cfed14ef97f 100755 (executable)
@@ -93,7 +93,7 @@ protected:
   virtual bool      openTransaction();
   virtual bool      abortTransaction();
   virtual bool      hasTransaction() const;
-  virtual bool      commitTransaction( const QString& = QString::null );
+  virtual bool      commitTransaction( const QString& = QString() );
 
 private:
   typedef QList<SUIT_Operation*> Operations;
index 7ab233d84fa070e30bff5d0e8a3dbc237cea90f5..689a3a786c7374f24cfc2e9f753b0df3fb2023fb 100755 (executable)
@@ -167,7 +167,7 @@ bool SUIT_ViewWindow::event( QEvent* e )
 
       // get file name
       SUIT_Application* app = myManager->study()->application();
-      QString fileName = app->getFileName( false, QString::null, filter(), tr( "TLT_DUMP_VIEW" ), 0 );
+      QString fileName = app->getFileName( false, QString(), filter(), tr( "TLT_DUMP_VIEW" ), 0 );
       if ( !fileName.isEmpty() )
       {
              QString fmt = SUIT_Tools::extension( fileName ).toUpper();