Warning, file /education/khipu/src/plotsbuilder.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /************************************************************************************* 0002 * Copyright (C) 2012 by Percy Camilo T. Aucahuasi <percy.camilo.ta@gmail.com> * 0003 * * 0004 * This program is free software; you can redistribute it and/or * 0005 * modify it under the terms of the GNU General Public License * 0006 * as published by the Free Software Foundation; either version 2 * 0007 * of the License, or (at your option) any later version. * 0008 * * 0009 * This program is distributed in the hope that it will be useful, * 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0012 * GNU General Public License for more details. * 0013 * * 0014 * You should have received a copy of the GNU General Public License * 0015 * along with this program; if not, write to the Free Software * 0016 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * 0017 *************************************************************************************/ 0018 0019 #include "plotsbuilder.h" 0020 #include "ui_plotsbuilder.h" 0021 0022 PlotsBuilder::PlotsBuilder(QWidget* parent): QWidget(parent), 0023 m_currentTyppe(None) 0024 { 0025 m_widget = new Ui::PlotsBuilderWidget; 0026 m_widget->setupUi(this); 0027 0028 // Setting up Mousetracking and Event-filter for all types of plots 0029 this->setMouseTracking(true); 0030 this->installEventFilter(this); 0031 0032 // can be done also by enter event and leave event using underMouse(); 0033 m_widget->buildCartesianGraphCurve->setIcon(QIcon::fromTheme("newfunction")); 0034 m_widget->buildCartesianGraphCurve->setMouseTracking(true); 0035 m_widget->buildCartesianGraphCurve->installEventFilter(this); 0036 0037 m_widget->buildCartesianImplicitCurve->setIcon(QIcon::fromTheme("newimplicit")); 0038 m_widget->buildCartesianImplicitCurve->setMouseTracking(true); 0039 m_widget->buildCartesianImplicitCurve->installEventFilter(this); 0040 0041 m_widget->buildCartesianParametricCurve2D->setIcon(QIcon::fromTheme("newparametric")); 0042 m_widget->buildCartesianParametricCurve2D->setMouseTracking(true); 0043 m_widget->buildCartesianParametricCurve2D->installEventFilter(this); 0044 0045 m_widget->buildPolarGraphCurve->setIcon(QIcon::fromTheme("newpolar")); 0046 m_widget->buildPolarGraphCurve->setMouseTracking(true); 0047 m_widget->buildPolarGraphCurve->installEventFilter(this); 0048 0049 m_widget->buildCartesianParametricCurve3D->setIcon(QIcon::fromTheme("newparametric3d")); 0050 m_widget->buildCartesianParametricCurve3D->setMouseTracking(true); 0051 m_widget->buildCartesianParametricCurve3D->installEventFilter(this); 0052 0053 m_widget->buildCartesianGraphSurface->setIcon(QIcon::fromTheme("newfunction3d")); 0054 m_widget->buildCartesianGraphSurface->setMouseTracking(true); 0055 m_widget->buildCartesianGraphSurface->installEventFilter(this); 0056 0057 m_widget->buildCartesianImplicitSurface->setIcon(QIcon::fromTheme("draw-square-inverted-corners")); 0058 m_widget->buildCartesianImplicitSurface->setMouseTracking(true); 0059 m_widget->buildCartesianImplicitSurface->installEventFilter(this); 0060 0061 m_widget->buildCartesianParametricSurface->setIcon(QIcon::fromTheme("draw-donut")); 0062 m_widget->buildCartesianParametricSurface->setMouseTracking(true); 0063 m_widget->buildCartesianParametricSurface->installEventFilter(this); 0064 0065 m_widget->buildCylindricalGraphSurface->setIcon(QIcon::fromTheme("newcylindrical")); 0066 m_widget->buildCylindricalGraphSurface->setMouseTracking(true); 0067 m_widget->buildCylindricalGraphSurface->installEventFilter(this); 0068 0069 m_widget->buildSphericalGraphSurface->setIcon(QIcon::fromTheme("newspherical")); 0070 m_widget->buildSphericalGraphSurface->setMouseTracking(true); 0071 m_widget->buildSphericalGraphSurface->installEventFilter(this); 0072 } 0073 0074 bool PlotsBuilder::eventFilter(QObject *object, QEvent *event) 0075 { 0076 if (event->type() == QEvent::MouseMove) 0077 { 0078 if(object==m_widget->buildCartesianGraphCurve) 0079 m_currentTyppe=CartesianGraphCurve; 0080 0081 else if(object==m_widget->buildCartesianImplicitCurve) 0082 m_currentTyppe=CartesianImplicitCurve; 0083 0084 else if(object==m_widget->buildCartesianParametricCurve2D) 0085 m_currentTyppe=CartesianParametricCurve2D; 0086 0087 else if(object==m_widget->buildPolarGraphCurve) 0088 m_currentTyppe=PolarGraphCurve; 0089 0090 else if(object==m_widget->buildCartesianParametricCurve3D) 0091 m_currentTyppe=CartesianParametricCurve3D; 0092 0093 else if(object==m_widget->buildCartesianGraphSurface) 0094 m_currentTyppe=CartesianGraphSurface; 0095 0096 else if(object==m_widget->buildCartesianImplicitSurface) 0097 m_currentTyppe=CartesianImplicitSurface; 0098 0099 else if(object==m_widget->buildCartesianParametricSurface) 0100 m_currentTyppe=CartesianParametricSurface; 0101 0102 else if(object==m_widget->buildCylindricalGraphSurface) 0103 m_currentTyppe=CylindricalGraphSurface; 0104 0105 else if(object==m_widget->buildSphericalGraphSurface) 0106 m_currentTyppe=SphericalGraphSurface; 0107 0108 else { 0109 m_currentTyppe=None; 0110 return false; 0111 } 0112 } 0113 return false; 0114 } 0115 0116 PlotsBuilder::~PlotsBuilder() 0117 { 0118 delete m_widget; 0119 } 0120 0121 void PlotsBuilder::setupTypes(PlotsBuilder::PlotTypes t) 0122 { 0123 m_types = t; 0124 setupTypes(); 0125 } 0126 0127 void PlotsBuilder::mapConnection(PlotsBuilder::PlotType pt, QObject* recvr, const char* slot) 0128 { 0129 #define caseType(tname) case tname : connect(m_widget->build##tname , SIGNAL(clicked(bool)), recvr, slot); break; 0130 0131 switch (pt) 0132 { 0133 //2D 0134 caseType(CartesianGraphCurve) 0135 caseType(CartesianImplicitCurve) 0136 caseType(CartesianParametricCurve2D) 0137 caseType(PolarGraphCurve) 0138 //3D 0139 caseType(CartesianParametricCurve3D) 0140 caseType(CartesianGraphSurface) 0141 caseType(CartesianImplicitSurface) 0142 caseType(CartesianParametricSurface) 0143 caseType(CylindricalGraphSurface) 0144 caseType(SphericalGraphSurface) 0145 case(None): break; 0146 } 0147 } 0148 0149 void PlotsBuilder::showAllTypes() 0150 { 0151 #define showType(tname) m_widget->build##tname->show(); 0152 0153 //2D 0154 showType(CartesianGraphCurve) 0155 showType(CartesianGraphCurve) 0156 showType(CartesianImplicitCurve) 0157 showType(CartesianParametricCurve2D) 0158 showType(PolarGraphCurve) 0159 //3D 0160 showType(CartesianParametricCurve3D) 0161 showType(CartesianGraphSurface) 0162 showType(CartesianImplicitSurface) 0163 showType(CartesianParametricSurface) 0164 showType(CylindricalGraphSurface) 0165 showType(SphericalGraphSurface) 0166 0167 m_widget->cartesianCurvesLinks->show(); 0168 m_widget->polarCurvesLinks->show(); 0169 m_widget->spaceCurvesLinks->show(); 0170 m_widget->cartesianCurvesLinks->show(); 0171 m_widget->cylindricalSurfacesLinks->show(); 0172 m_widget->sphericalSurfacesLinks->show(); 0173 } 0174 0175 void PlotsBuilder::hideAllTypes() 0176 { 0177 #define hideType(tname) m_widget->build##tname->hide(); 0178 0179 //2D 0180 hideType(CartesianGraphCurve) 0181 hideType(CartesianGraphCurve) 0182 hideType(CartesianImplicitCurve) 0183 hideType(CartesianParametricCurve2D) 0184 hideType(PolarGraphCurve) 0185 //3D 0186 hideType(CartesianParametricCurve3D) 0187 hideType(CartesianGraphSurface) 0188 hideType(CartesianImplicitSurface) 0189 hideType(CartesianParametricSurface) 0190 hideType(CylindricalGraphSurface) 0191 hideType(SphericalGraphSurface) 0192 0193 m_widget->cartesianCurvesLinks->hide(); 0194 m_widget->polarCurvesLinks->hide(); 0195 m_widget->spaceCurvesLinks->hide(); 0196 m_widget->cartesianCurvesLinks->hide(); 0197 m_widget->cylindricalSurfacesLinks->hide(); 0198 m_widget->sphericalSurfacesLinks->hide(); 0199 } 0200 0201 void PlotsBuilder::setupTypes() 0202 { 0203 #define testType(tname) if (m_types.testFlag( tname )) m_widget->build##tname->show(); else m_widget->build##tname->hide(); 0204 0205 //2D 0206 testType(CartesianGraphCurve) 0207 testType(CartesianGraphCurve) 0208 testType(CartesianImplicitCurve) 0209 testType(CartesianParametricCurve2D) 0210 testType(PolarGraphCurve) 0211 //3D 0212 testType(CartesianParametricCurve3D) 0213 testType(CartesianGraphSurface) 0214 testType(CartesianImplicitSurface) 0215 testType(CartesianParametricSurface) 0216 testType(CylindricalGraphSurface) 0217 testType(SphericalGraphSurface) 0218 0219 if (m_types.testFlag(CartesianGraphCurve) || m_types.testFlag(CartesianImplicitCurve) || m_types.testFlag(CartesianParametricCurve2D)) 0220 m_widget->cartesianCurvesLinks->show(); 0221 else 0222 m_widget->cartesianCurvesLinks->hide(); 0223 0224 if (m_types.testFlag(PolarGraphCurve)) 0225 m_widget->polarCurvesLinks->show(); 0226 else 0227 m_widget->polarCurvesLinks->hide(); 0228 0229 if (m_types.testFlag(CartesianParametricCurve3D)) 0230 m_widget->spaceCurvesLinks->show(); 0231 else 0232 m_widget->spaceCurvesLinks->hide(); 0233 0234 if (m_types.testFlag(CartesianGraphSurface) || m_types.testFlag(CartesianImplicitSurface) || m_types.testFlag(CartesianParametricSurface)) 0235 m_widget->cartesianSurfacesLinks->show(); 0236 else 0237 m_widget->cartesianSurfacesLinks->hide(); 0238 0239 if (m_types.testFlag(CylindricalGraphSurface)) 0240 m_widget->cylindricalSurfacesLinks->show(); 0241 else 0242 m_widget->cylindricalSurfacesLinks->hide(); 0243 0244 if (m_types.testFlag(SphericalGraphSurface)) 0245 m_widget->sphericalSurfacesLinks->show(); 0246 else 0247 m_widget->sphericalSurfacesLinks->hide(); 0248 }