pump.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. #include "qt/input/pump.hpp"
  2. QtInputPump::QtInputPump(QtInputData* d,Pump* p){
  3. data=d;
  4. pump=(p==nullptr)?data->addPump():p;
  5. init_groupbox=new QGroupBox("Initial values");
  6. amplitude_init_widget=new QWidget;
  7. left_right_init_widget=new QWidget;
  8. bottom_top_init_widget=new QWidget;
  9. final_groupbox=new QGroupBox("Final values");
  10. amplitude_final_widget=new QWidget;
  11. left_right_final_widget=new QWidget;
  12. bottom_top_final_widget=new QWidget;
  13. init_final_widget=new QWidget;
  14. main_layout=new QVBoxLayout;
  15. init_final_layout=new QHBoxLayout;
  16. init_layout=new QVBoxLayout;
  17. final_layout=new QVBoxLayout;
  18. amplitude_init_layout=new QHBoxLayout;
  19. left_right_init_layout=new QHBoxLayout;
  20. bottom_top_init_layout=new QHBoxLayout;
  21. amplitude_final_layout=new QHBoxLayout;
  22. left_right_final_layout=new QHBoxLayout;
  23. bottom_top_final_layout=new QHBoxLayout;
  24. amplitude_init_label=new QLabel("Amplitude: ");
  25. amplitude_init_input=new QLineEdit();
  26. amplitude_init_layout->addWidget(amplitude_init_label);
  27. amplitude_init_layout->addWidget(amplitude_init_input);
  28. amplitude_init_widget->setLayout(amplitude_init_layout);
  29. left_init_label=new QLabel("Left: ");
  30. delta_left_init_label=new QLabel(" Left delta: ");
  31. left_init_input=new QLineEdit();
  32. delta_left_init_input=new QLineEdit();
  33. right_init_label=new QLabel(" Right: ");
  34. delta_right_init_label=new QLabel(" Right delta: ");
  35. right_init_input=new QLineEdit();
  36. delta_right_init_input=new QLineEdit();
  37. left_right_init_layout->addWidget(left_init_label);
  38. left_right_init_layout->addWidget(left_init_input,1);
  39. left_right_init_layout->addWidget(delta_left_init_label);
  40. left_right_init_layout->addWidget(delta_left_init_input,1);
  41. left_right_init_layout->addWidget(right_init_label);
  42. left_right_init_layout->addWidget(right_init_input,1);
  43. left_right_init_layout->addWidget(delta_right_init_label);
  44. left_right_init_layout->addWidget(delta_right_init_input,1);
  45. left_right_init_widget->setLayout(left_right_init_layout);
  46. bottom_init_label=new QLabel("Bottom: ");
  47. delta_bottom_init_label=new QLabel(" Bottom delta: ");
  48. bottom_init_input=new QLineEdit();
  49. delta_bottom_init_input=new QLineEdit();
  50. top_init_label=new QLabel(" Top: ");
  51. delta_top_init_label=new QLabel(" Top delta: ");
  52. top_init_input=new QLineEdit();
  53. delta_top_init_input=new QLineEdit();
  54. bottom_top_init_layout->addWidget(bottom_init_label);
  55. bottom_top_init_layout->addWidget(bottom_init_input,1);
  56. bottom_top_init_layout->addWidget(delta_bottom_init_label);
  57. bottom_top_init_layout->addWidget(delta_bottom_init_input,1);
  58. bottom_top_init_layout->addWidget(top_init_label);
  59. bottom_top_init_layout->addWidget(top_init_input,1);
  60. bottom_top_init_layout->addWidget(delta_top_init_label);
  61. bottom_top_init_layout->addWidget(delta_top_init_input,1);
  62. bottom_top_init_widget->setLayout(bottom_top_init_layout);
  63. init_layout->addWidget(amplitude_init_widget);
  64. init_layout->addWidget(left_right_init_widget);
  65. init_layout->addWidget(bottom_top_init_widget);
  66. init_groupbox->setLayout(init_layout);
  67. amplitude_final_label=new QLabel("Amplitude: ");
  68. amplitude_final_input=new QLineEdit();
  69. amplitude_final_layout->addWidget(amplitude_final_label);
  70. amplitude_final_layout->addWidget(amplitude_final_input);
  71. amplitude_final_widget->setLayout(amplitude_final_layout);
  72. left_final_label=new QLabel("Left: ");
  73. delta_left_final_label=new QLabel(" Left delta: ");
  74. left_final_input=new QLineEdit();
  75. delta_left_final_input=new QLineEdit();
  76. right_final_label=new QLabel(" Right: ");
  77. delta_right_final_label=new QLabel(" Right delta: ");
  78. right_final_input=new QLineEdit();
  79. delta_right_final_input=new QLineEdit();
  80. left_right_final_layout->addWidget(left_final_label);
  81. left_right_final_layout->addWidget(left_final_input,1);
  82. left_right_final_layout->addWidget(delta_left_final_label);
  83. left_right_final_layout->addWidget(delta_left_final_input,1);
  84. left_right_final_layout->addWidget(right_final_label);
  85. left_right_final_layout->addWidget(right_final_input,1);
  86. left_right_final_layout->addWidget(delta_right_final_label);
  87. left_right_final_layout->addWidget(delta_right_final_input,1);
  88. left_right_final_widget->setLayout(left_right_final_layout);
  89. bottom_final_label=new QLabel("Bottom: ");
  90. delta_bottom_final_label=new QLabel(" Bottom delta: ");
  91. bottom_final_input=new QLineEdit();
  92. delta_bottom_final_input=new QLineEdit();
  93. top_final_label=new QLabel(" Top: ");
  94. delta_top_final_label=new QLabel(" Top delta: ");
  95. top_final_input=new QLineEdit();
  96. delta_top_final_input=new QLineEdit();
  97. bottom_top_final_layout->addWidget(bottom_final_label);
  98. bottom_top_final_layout->addWidget(bottom_final_input,1);
  99. bottom_top_final_layout->addWidget(delta_bottom_final_label);
  100. bottom_top_final_layout->addWidget(delta_bottom_final_input,1);
  101. bottom_top_final_layout->addWidget(top_final_label);
  102. bottom_top_final_layout->addWidget(top_final_input,1);
  103. bottom_top_final_layout->addWidget(delta_top_final_label);
  104. bottom_top_final_layout->addWidget(delta_top_final_input,1);
  105. bottom_top_final_widget->setLayout(bottom_top_final_layout);
  106. final_layout->addWidget(amplitude_final_widget);
  107. final_layout->addWidget(left_right_final_widget);
  108. final_layout->addWidget(bottom_top_final_widget);
  109. final_groupbox->setLayout(final_layout);
  110. init_final_layout->addWidget(init_groupbox);
  111. init_final_layout->addWidget(final_groupbox);
  112. init_final_widget->setLayout(init_final_layout);
  113. remove_button=new QPushButton("Remove",this);
  114. main_layout->addWidget(init_final_widget);
  115. main_layout->addWidget(remove_button);
  116. double_validator=new QDoubleValidator;
  117. double_amplitude_validator=new QDoubleValidator;
  118. double_validator->setBottom(0);
  119. double_validator->setTop(1);
  120. amplitude_init_input->setValidator(double_amplitude_validator);
  121. left_init_input->setValidator(double_validator);
  122. right_init_input->setValidator(double_validator);
  123. bottom_init_input->setValidator(double_validator);
  124. top_init_input->setValidator(double_validator);
  125. delta_left_init_input->setValidator(double_validator);
  126. delta_right_init_input->setValidator(double_validator);
  127. delta_bottom_init_input->setValidator(double_validator);
  128. delta_top_init_input->setValidator(double_validator);
  129. amplitude_final_input->setValidator(double_amplitude_validator);
  130. left_final_input->setValidator(double_validator);
  131. right_final_input->setValidator(double_validator);
  132. bottom_final_input->setValidator(double_validator);
  133. top_final_input->setValidator(double_validator);
  134. delta_left_final_input->setValidator(double_validator);
  135. delta_right_final_input->setValidator(double_validator);
  136. delta_bottom_final_input->setValidator(double_validator);
  137. delta_top_final_input->setValidator(double_validator);
  138. setLayout(main_layout);
  139. setFrameShape(QFrame::Box);
  140. connect(remove_button,&QPushButton::clicked,this,&QtInputPump::emitRemove);
  141. if(p==nullptr){
  142. pump->bottom_init*=data->factor;
  143. pump->top_init*=data->factor;
  144. pump->delta_bottom_init*=data->factor;
  145. pump->delta_top_init*=data->factor;
  146. pump->bottom_final*=data->factor;
  147. pump->top_final*=data->factor;
  148. pump->delta_bottom_final*=data->factor;
  149. pump->delta_top_final*=data->factor;
  150. }
  151. getPump();
  152. }
  153. QWidget*
  154. QtInputPump::validate(){
  155. if(not amplitude_init_input->hasAcceptableInput()) return amplitude_init_input;
  156. if(not left_init_input->hasAcceptableInput()) return left_init_input;
  157. if(not right_init_input->hasAcceptableInput()) return right_init_input;
  158. if(not bottom_init_input->hasAcceptableInput()) return bottom_init_input;
  159. if(not top_init_input->hasAcceptableInput()) return top_init_input;
  160. if(not delta_left_init_input->hasAcceptableInput()) return delta_left_init_input;
  161. if(not delta_right_init_input->hasAcceptableInput()) return delta_right_init_input;
  162. if(not delta_bottom_init_input->hasAcceptableInput()) return delta_bottom_init_input;
  163. if(not delta_top_init_input->hasAcceptableInput()) return delta_top_init_input;
  164. if(not amplitude_final_input->hasAcceptableInput()) return amplitude_final_input;
  165. if(not left_final_input->hasAcceptableInput()) return left_final_input;
  166. if(not right_final_input->hasAcceptableInput()) return right_final_input;
  167. if(not bottom_final_input->hasAcceptableInput()) return bottom_final_input;
  168. if(not top_final_input->hasAcceptableInput()) return top_final_input;
  169. if(not delta_left_final_input->hasAcceptableInput()) return delta_left_final_input;
  170. if(not delta_right_final_input->hasAcceptableInput()) return delta_right_final_input;
  171. if(not delta_bottom_final_input->hasAcceptableInput()) return delta_bottom_final_input;
  172. if(not delta_top_final_input->hasAcceptableInput()) return delta_top_final_input;
  173. double li,lf,ri,rf,ti,tf,bi,bf;
  174. li=left_init_input->text().toDouble();
  175. lf=left_final_input->text().toDouble();
  176. ri=right_init_input->text().toDouble();
  177. rf=right_final_input->text().toDouble();
  178. ti=top_init_input->text().toDouble();
  179. tf=top_final_input->text().toDouble();
  180. bi=bottom_init_input->text().toDouble();
  181. bf=bottom_final_input->text().toDouble();
  182. if(li>=ri) return right_init_input;
  183. if(bi>=ti) return top_init_input;
  184. if(lf>=rf) return right_final_input;
  185. if(bf>=tf) return top_final_input;
  186. setPump();
  187. return nullptr;
  188. }
  189. void
  190. QtInputPump::setPump(){
  191. double li,lf,ri,rf,ti,tf,bi,bf;
  192. li=left_init_input->text().toDouble();
  193. lf=left_final_input->text().toDouble();
  194. ri=right_init_input->text().toDouble();
  195. rf=right_final_input->text().toDouble();
  196. ti=top_init_input->text().toDouble();
  197. tf=top_final_input->text().toDouble();
  198. bi=bottom_init_input->text().toDouble();
  199. bf=bottom_final_input->text().toDouble();
  200. pump->left_init=li;
  201. pump->right_init=ri;
  202. pump->top_init=ti*data->factor;
  203. pump->bottom_init=bi*data->factor;
  204. pump->left_final=lf;
  205. pump->right_final=rf;
  206. pump->top_final=tf*data->factor;
  207. pump->bottom_final=bf*data->factor;
  208. pump->amplitude_init=amplitude_init_input->text().toDouble();
  209. pump->amplitude_final=amplitude_final_input->text().toDouble();
  210. pump->delta_left_init=delta_left_init_input->text().toDouble();
  211. pump->delta_right_init=delta_right_init_input->text().toDouble();
  212. pump->delta_top_init=delta_top_init_input->text().toDouble()*data->factor;
  213. pump->delta_bottom_init=delta_bottom_init_input->text().toDouble()*data->factor;
  214. pump->delta_left_final=delta_left_final_input->text().toDouble();
  215. pump->delta_right_final=delta_right_final_input->text().toDouble();
  216. pump->delta_top_final=delta_top_final_input->text().toDouble()*data->factor;
  217. pump->delta_bottom_final=delta_bottom_final_input->text().toDouble()*data->factor;
  218. }
  219. void
  220. QtInputPump::getPump(){
  221. double factor_inv=1/data->factor;
  222. amplitude_init_input->setText(QString::number(pump->amplitude_init));
  223. left_init_input->setText(QString::number(pump->left_init));
  224. right_init_input->setText(QString::number(pump->right_init));
  225. top_init_input->setText(QString::number(pump->top_init*factor_inv));
  226. bottom_init_input->setText(QString::number(pump->bottom_init*factor_inv));
  227. delta_left_init_input->setText(QString::number(pump->delta_left_init));
  228. delta_right_init_input->setText(QString::number(pump->delta_right_init));
  229. delta_top_init_input->setText(QString::number(pump->delta_top_init*factor_inv));
  230. delta_bottom_init_input->setText(QString::number(pump->delta_bottom_init*factor_inv));
  231. amplitude_final_input->setText(QString::number(pump->amplitude_final));
  232. left_final_input->setText(QString::number(pump->left_final));
  233. right_final_input->setText(QString::number(pump->right_final));
  234. top_final_input->setText(QString::number(pump->top_final*factor_inv));
  235. bottom_final_input->setText(QString::number(pump->bottom_final*factor_inv));
  236. delta_left_final_input->setText(QString::number(pump->delta_left_final));
  237. delta_right_final_input->setText(QString::number(pump->delta_right_final));
  238. delta_top_final_input->setText(QString::number(pump->delta_top_final*factor_inv));
  239. delta_bottom_final_input->setText(QString::number(pump->delta_bottom_final*factor_inv));
  240. }