PSQt/include/GUAxes.h

Go to the documentation of this file.
00001 #ifndef GUAXES_H
00002 #define GUAXES_H
00003 
00004 #include <PSQt/GURuler.h>
00005 
00006 #include <string>
00007 #include <QWidget>
00008 #include <QGraphicsView>
00009 #include <QTransform>
00010 #include <QGraphicsScene>
00011 
00012 //#include <QPoint>
00013 //#include <QPainterPath>
00014 //#include <QPen>
00015 //#include <QBrash>
00016 
00017 namespace PSQt {
00018 
00019 //--------------------------
00020 
00021 /**
00022  *  @ingroup PSQt
00023  * 
00024  *  @brief Inherits from QGraphicsView and displays window with axes.
00025  * 
00026  *  @code
00027  *  @endcode
00028  *
00029  *  This software was developed for the LCLS project.  If you use all or 
00030  *  part of it, please give an appropriate acknowledgment.
00031  *
00032  *  @see GURuler, WdgRadHist, WdgSpecHist
00033  *
00034  *  @version $Id: GUAxes.h 9841 2015-03-26 18:35:44Z dubrovin@SLAC.STANFORD.EDU $
00035  *
00036  *  @author Mikhail Dubrovin
00037  */
00038 
00039 //--------------------------
00040 
00041 class GUAxes : public QGraphicsView
00042 {
00043   Q_OBJECT // macro is needed for connection of signals and slots
00044 
00045 public:
00046 
00047   GUAxes( QWidget *parent=0
00048           , const float& xmin      = 0
00049           , const float& xmax      = 100
00050           , const float& ymin      = 0
00051           , const float& ymax      = 100 
00052           , const unsigned& nxdiv1 = 4
00053           , const unsigned& nydiv1 = 4
00054           , const unsigned& nxdiv2 = 2
00055           , const unsigned& nydiv2 = 2
00056           , const unsigned pbits   = 0); // 0177777
00057 
00058   virtual ~GUAxes ();
00059 
00060   void setLimits( const float& xmin = 0
00061                 , const float& xmax = 100
00062                 , const float& ymin = 0
00063                 , const float& ymax = 100
00064                 , const unsigned& nxdiv1 = 4
00065                 , const unsigned& nydiv1 = 4
00066                 , const unsigned& nxdiv2 = 2
00067                 , const unsigned& nydiv2 = 2);
00068 
00069   void updateTransform();
00070   void setAxes();
00071   void setPen(const QPen& pen) { m_pen=pen; }
00072   void setFont(const QFont& font) { m_font=font; }
00073   void setColor(const QColor& color) { m_color=color; }
00074   void printMemberData();
00075   void printTransform();
00076 
00077   QTransform  transform()  { return pview()->transform(); }
00078   QGraphicsScene * pscene(){ return pview()->scene(); }
00079   QGraphicsView *  pview() { return this; }
00080   QGraphicsView &  rview() { return *this; }
00081 
00082 
00083  signals :
00084     void pressOnAxes(QMouseEvent*, QPointF) ;
00085     void releaseOnAxes(QMouseEvent*, QPointF) ;
00086     void moveOnAxes(QMouseEvent*, QPointF) ;
00087 
00088  public slots:
00089     void testSignalPressOnAxes(QMouseEvent*, QPointF) ;
00090     void testSignalReleaseOnAxes(QMouseEvent*, QPointF) ;
00091     void testSignalMoveOnAxes(QMouseEvent*, QPointF) ;
00092 
00093  protected:
00094     void closeEvent(QCloseEvent *event = 0) ;
00095     void resizeEvent(QResizeEvent *event = 0) ;
00096     void mousePressEvent(QMouseEvent *event = 0) ;
00097     void mouseReleaseEvent(QMouseEvent *event = 0) ;
00098     void mouseMoveEvent(QMouseEvent *event = 0) ;
00099 
00100 private:
00101 
00102   //QGraphicsView&  m_view;
00103     float           m_xmin;
00104     float           m_xmax;
00105     float           m_ymin;
00106     float           m_ymax;
00107     unsigned        m_nxdiv1;
00108     unsigned        m_nydiv1;
00109     unsigned        m_nxdiv2;
00110     unsigned        m_nydiv2;
00111     unsigned        m_pbits;
00112     QColor          m_color;
00113     QPen            m_pen;
00114     QFont           m_font;
00115 
00116     QGraphicsScene* m_scene; 
00117     QRectF          m_scene_rect;
00118 
00119     PSQt::GURuler* m_ruler_hd; 
00120     PSQt::GURuler* m_ruler_hu; 
00121     PSQt::GURuler* m_ruler_vl; 
00122     PSQt::GURuler* m_ruler_vr; 
00123 
00124     inline const char* _name_(){return "GUAxes";}
00125     QPointF pointOnAxes(QMouseEvent *e);
00126     void connectForTest(); 
00127     void message(QMouseEvent *e, const QPointF& sp, const char* cmt="");
00128 };
00129 
00130 //--------------------------
00131 } // namespace PSQt
00132 
00133 #endif // GUAXES_H

Generated on 19 Dec 2016 for PSANAmodules by  doxygen 1.4.7