X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FQtx%2FQtx.cxx;h=9036354bcd14060a56b51e02bee345c7add06567;hb=6d65790643dc7cf96f87440dca90fd0d76e7e379;hp=90dfb5620c79232b82ee39c8d2c7430ae64a7ef2;hpb=e07448c48ea5b2127e34fc7b8c3427d01c7ce17b;p=modules%2Fgui.git diff --git a/src/Qtx/Qtx.cxx b/src/Qtx/Qtx.cxx index 90dfb5620..9036354bc 100755 --- a/src/Qtx/Qtx.cxx +++ b/src/Qtx/Qtx.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -391,7 +391,7 @@ QString Qtx::file( const QString& path, bool withExt ) if ( withExt ) return QFileInfo( fPath ).fileName(); else - return QFileInfo( fPath ).baseName(); + return QFileInfo( fPath ).completeBaseName(); } /*! @@ -1991,7 +1991,83 @@ void Qtx::BackgroundData::setGradient( const QGradient& grad ) myGradient = grad; setMode( Qtx::CustomGradientBackground ); } + +/*! + \brief Convert string representation of version identifier to the numerical value. + Resulting value can be used for comparison of different versions (lower, higher, equal). + + String representation of the version consists of zero or more components: + + [major[.minor[.release[patchid]]]] + + where + - major is version major number + - minor is version minor number + - release is version release number + - patchid is a version dev identifier which is one of the following + * 1 letter optionally followed by 1 or 2 digits, e.g. "a" for "alpha", "b1" for "beta 1" + * "rc" optionally followed by 1 or 2 digits, e.g. "rc1" for "release candidate 1" + * "dev" for development version (note: 7.4.0dev > 7.4.0, 7.4.0dev < 7.4.1, 7.4.0dev < 7.4.0a1) + + If version string does not include any component or has invalid format, the function returns 0. + + Examples: + 1.0 - version 1.0 + 1.2.3a - version 1.2.3 alpha + 3.3.3b1 - version 3.3.3 beta 1 + 7.4.0rc1 - version 7.4.0 release candidate 1 + 7.4.0dev - dev version, i.e. future version 7.4.1 (or 7.5.0) + + \param version string representation of version + \return numerical identifier of the version +*/ +long Qtx::versionToId( const QString& version ) +{ + long id = 0; + + QRegExp vers_exp( "^([0-9]+)([A-Z]|RC|DEV)?([0-9]{0,2})$", Qt::CaseInsensitive ); + + QStringList vers = version.split( ".", QString::SkipEmptyParts ); + int major=0, minor=0; + int release = 0, dev1 = 0, dev2 = 0; + if ( vers.count() > 0 ) major = vers[0].toInt(); + if ( vers.count() > 1 ) minor = vers[1].toInt(); + if ( vers.count() > 2 ) { + if ( vers_exp.indexIn( vers[2] ) != -1 ) { + release = vers_exp.cap( 1 ).toInt(); + QString tag = vers_exp.cap( 2 ).toLower(); + if ( !tag.isEmpty() ) { + // patchid is subtracted from version number + // a = 55 --> -(55 * 100) + patch number --> 4500..4599, e.g. 7.4.1a1 -> 704004501 + // b = 54 --> -(54 * 100) + patch number --> 4600..4699, e.g. 7.4.1b1 -> 704004601 + // c = 53 --> -(53 * 100) + patch number --> 4700..4799, e.g. 7.4.1c1 -> 704004701 + // ... + // z = 30 --> -( 1 * 100) + patch number --> 7000..7099, e.g. 7.4.1z1 -> 704007001 + // rc = 1 --> -( 1 * 100) + patch number --> 9900..9999, e.g. 7.4.1rc1 -> 704009901 + // dev = -1 --> +( 1 * 100) + patch number --> 0100..0199, e.g. 7.4.1dev -> 704010100 + // --- + // i.e. "a" < "b" < ... < "z" < "rc" < [stable] < "dev" + if ( tag == "rc" ) + dev1 = 1; + else if ( tag == "dev" ) + dev1 = -1; + else + dev1 = (int)( QChar('z').toLatin1() ) - (int)( tag[ 0 ].toLatin1() ) + 30; + } + if ( !vers_exp.cap( 3 ).isEmpty() ) + dev2 = vers_exp.cap( 3 ).toInt(); + } + } + int dev = dev1*100-dev2; + id = major; + id*=100; id+=minor; + id*=100; id+=release; + id*=10000; + id-=dev; + + return id; +} #ifndef WIN32 @@ -2041,6 +2117,7 @@ Qt::HANDLE Qtx::getVisual() GLX_RGBA, // Needs to support OpenGL GLX_DEPTH_SIZE, 16, // Needs to support a 16 bit depth buffer GLX_DOUBLEBUFFER, // Needs to support double-buffering + GLX_STENCIL_SIZE, 1, None // end of list };