]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
0004010: External 20836 News syntax for script ggs
authorouv <oleg.uvarov@opencascade.com>
Thu, 10 Nov 2016 12:08:57 +0000 (15:08 +0300)
committerouv <oleg.uvarov@opencascade.com>
Thu, 10 Nov 2016 12:08:57 +0000 (15:08 +0300)
Point 1: XLABEL_FORMAT, YLABEL_FORMAT.

src/Plot2d/Plot2d_ViewFrame.cxx
src/Plot2d/Plot2d_ViewFrame.h

index 749b0218b0c5c5483977f7cbfba1b1302223fedd..edaf43c3127759766d4de5a9ff009a4285e3a47a 100755 (executable)
@@ -2229,12 +2229,22 @@ Plot2d_Plot2d::Plot2d_Plot2d( QWidget* parent )
 
   defaultPicker();
 
+  // custom scale draws allowing to specify the label format
+  for( int anAxisId = QwtPlot::yLeft; anAxisId < QwtPlot::axisCnt; anAxisId++ )
+  {
+    if( QwtScaleDraw* aScale = axisScaleDraw( anAxisId ) )
+    {
+      QwtScaleDraw* aCustomScale = new Plot2d_ScaleDraw();
+      setAxisScaleDraw( anAxisId, aCustomScale );
+    }
+  }
+
   // auto scaling by default
   setAxisAutoScale( QwtPlot::yLeft );
   setAxisAutoScale( QwtPlot::yRight );
   setAxisAutoScale( QwtPlot::xBottom );
 
-// grid
+  // grid
   myGrid = new QwtPlotGrid();
   QPen aMajPen = myGrid->majPen();
   aMajPen.setStyle( Qt::DashLine );
@@ -2576,6 +2586,15 @@ void Plot2d_Plot2d::polish()
   myIsPolished = true;
 }
 
+/*!
+  Sets the custom label format for the specified axis.
+*/
+void Plot2d_Plot2d::setLabelFormat( const int theAxisId, const QString& theFormat )
+{
+  if( QwtScaleDraw* aScale = axisScaleDraw( theAxisId ) )
+    if( Plot2d_ScaleDraw* aCustomScale = dynamic_cast<Plot2d_ScaleDraw*>( aScale ) )
+      aCustomScale->setLabelFormat( theFormat );
+}
 
 /*!
   Creates presentation of object
@@ -3097,3 +3116,29 @@ bool Plot2d_ViewFrame::isTimeColorization()
     return true;
   return false;
 }
+
+/*!
+  Convert a numerical value to a text label using the custom format (if it is defined)
+*/
+QwtText Plot2d_ScaleDraw::label( double theValue ) const
+{
+  if( !myLabelFormat.isEmpty() )
+    return QString().sprintf( myLabelFormat.toLatin1().constData(), theValue );
+  return QwtScaleDraw::label( theValue );
+}
+
+/*!
+  Sets the label format
+*/
+void Plot2d_ScaleDraw::setLabelFormat( const QString& theFormat )
+{
+  myLabelFormat = theFormat;
+}
+
+/*!
+  Gets the label format
+*/
+const QString& Plot2d_ScaleDraw::labelFormat() const
+{
+  return myLabelFormat;
+}
index d8570b457dbf334c3d968d4344089d11636a7af7..4ad6f70573ec134ed7b8f6af4aa97671cd3152d2 100755 (executable)
@@ -26,6 +26,7 @@
 #include <QList>
 #include <qwt_symbol.h>
 #include <qwt_plot_curve.h>
+#include <qwt_scale_draw.h>
 
 class Plot2d_Plot2d;
 class Plot2d_Prs;
@@ -296,6 +297,8 @@ public:
 
   static bool         closeColors( const QColor& color1, const QColor& color2 );
 
+  PLOT2D_EXPORT void  setLabelFormat( const int theAxisId, const QString& theFormat );
+
 public slots:
   virtual void polish();
 
@@ -358,4 +361,25 @@ private:
   QColor  myInactiveColor;
 };
 
+//! The class is derived from QwtScaleDraw.
+/*!
+  The class is derived from QwtScaleDraw. Its main purpose is redefining 
+  label() virtual method in order to provide possibility to customize 
+  the numerical format of the Plot2d axis labels.
+*/
+
+class Plot2d_ScaleDraw : public QwtScaleDraw
+{
+public:
+  Plot2d_ScaleDraw() : QwtScaleDraw() {}
+
+  virtual QwtText label( double theValue ) const;
+
+  void            setLabelFormat( const QString& theFormat );
+  const QString&  labelFormat() const;
+
+private:
+  QString         myLabelFormat;
+};
+
 #endif