1 #ifndef WIDGET_H 2 #define WIDGET_H 3 4 #include <QDockWidget> 5 #include <QMainWindow> 6 #include "ui_widget.h" 7 #include <cassert> 8 namespace Ui { 9 class Widget; 10 } 11 12 // Defines the bounds (more than 1 object use them) 13 enum {MIN_SAMPFREQ = 1, MAX_SAMPFREQ = 30, DEF_SAMPFREQ = 5}; 14 enum {MIN_SCANWIDTH = 1, MAX_SCANWIDTH = 100, DEF_SCANWIDTH = 100}; 15 enum {MIN_NUMSAMPLE = 2, MAX_NUMSAMPLE = 250, DEF_NUMSAMPLE = 250}; 16 17 class Widget : public QDockWidget { 18 Q_OBJECT 19 public: QDockWidget(parent)20 Widget(QWidget *parent=0) : QDockWidget(parent), ui(new Ui::Widget){ 21 assert( parent!=0 ); 22 ui->setupUi(this); 23 setFloating(false); 24 setAllowedAreas(Qt::RightDockWidgetArea); 25 ((QMainWindow*) parent)->addDockWidget( Qt::RightDockWidgetArea, this ); 26 show(); 27 28 // Init the UI 29 init_ui(); 30 31 // Inherit the control variables 32 sampfreq = ui->dial_freq->value(); 33 scanwidth = ui->dial_width->value(); 34 numsample = ui->dial_numsamples->value(); 35 36 } ~Widget()37 ~Widget(){ 38 delete ui; 39 } 40 // Accessers getSampfreq()41 int getSampfreq(){ return sampfreq; } getScanwidth()42 int getScanwidth(){ return scanwidth; } getNumsample()43 int getNumsample(){ return numsample; } getDrawLineFlag()44 bool getDrawLineFlag() {return ui->drawLineCheckBox->isChecked(); } 45 46 signals: 47 void laser_parameter_updated(); 48 void scan_requested(); 49 void save_requested(); 50 51 private: 52 Ui::Widget *ui; 53 54 int sampfreq; // lines/sec [1..30], def 5 55 int scanwidth; // %-bbox diagonal [0..100], def 20 56 int numsample; // [2..100], def 10 57 init_ui()58 void init_ui(){ 59 // Frequency 60 ui->dial_freq->setMinimum(MIN_SAMPFREQ); 61 ui->dial_freq->setMaximum(MAX_SAMPFREQ); 62 ui->dial_freq->setValue(DEF_SAMPFREQ); 63 ui->sbox_freq->setMinimum(MIN_SAMPFREQ); 64 ui->sbox_freq->setMaximum(MAX_SAMPFREQ); 65 ui->dial_freq->setValue(DEF_SAMPFREQ); 66 // numsamples 67 ui->dial_numsamples->setMinimum(MIN_NUMSAMPLE); 68 ui->dial_numsamples->setMaximum(MAX_NUMSAMPLE); 69 ui->dial_numsamples->setValue(DEF_NUMSAMPLE); 70 ui->sbox_numsamples->setMinimum(MIN_NUMSAMPLE); 71 ui->sbox_numsamples->setMaximum(MAX_NUMSAMPLE); 72 ui->sbox_numsamples->setValue(DEF_NUMSAMPLE); 73 74 // scanwidth 75 ui->dial_width->setMinimum(MIN_SCANWIDTH); 76 ui->dial_width->setMaximum(MAX_SCANWIDTH); 77 ui->dial_width->setValue(DEF_SCANWIDTH); 78 ui->sbox_width->setMinimum(MIN_SCANWIDTH); 79 ui->sbox_width->setMaximum(MAX_SCANWIDTH); 80 ui->sbox_width->setValue(DEF_SCANWIDTH); 81 } 82 83 private slots: on_sbox_numsamples_valueChanged(int val)84 void on_sbox_numsamples_valueChanged(int val){ 85 numsample = qBound((int)MIN_NUMSAMPLE, val, (int)MAX_NUMSAMPLE); 86 emit laser_parameter_updated(); 87 } on_sbox_width_valueChanged(int val)88 void on_sbox_width_valueChanged(int val){ 89 scanwidth = qBound((int)MIN_SCANWIDTH, val, (int)MAX_SCANWIDTH); 90 emit laser_parameter_updated(); 91 } on_sbox_freq_valueChanged(int val)92 void on_sbox_freq_valueChanged(int val){ 93 sampfreq = qBound((int)MIN_SAMPFREQ, val, (int)MAX_SAMPFREQ); 94 emit laser_parameter_updated(); 95 } on_scanbutton_released()96 void on_scanbutton_released(){ 97 emit scan_requested(); 98 } on_saveButton_released()99 void on_saveButton_released(){ 100 emit save_requested(); 101 } 102 }; 103 #endif // WIDGET_H 104