forked from zapmaker/GrblHoming
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathoptions.cpp
More file actions
127 lines (101 loc) · 5.11 KB
/
options.cpp
File metadata and controls
127 lines (101 loc) · 5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/****************************************************************
* options.cpp
* GrblHoming - zapmaker fork on github
*
* 15 Nov 2012
* GPL License (see LICENSE file)
* Software is provided AS-IS
****************************************************************/
#include "options.h"
#include "ui_options.h"
Options::Options(QWidget *parent) :
QDialog(parent),
ui(new Ui::Options)
{
ui->setupUi(this);
connect(ui->checkBoxUseMmManualCmds,SIGNAL(toggled(bool)),this,SLOT(toggleUseMm(bool)));
connect(ui->chkLimitZRate,SIGNAL(toggled(bool)),this,SLOT(toggleLimitZRate(bool)));
QSettings settings;
QString invX = settings.value(SETTINGS_INVERSE_X, "false").value<QString>();
QString invY = settings.value(SETTINGS_INVERSE_Y, "false").value<QString>();
QString invZ = settings.value(SETTINGS_INVERSE_Z, "false").value<QString>();
ui->chkInvX->setChecked(invX == "true");
ui->chkInvY->setChecked(invY == "true");
ui->chkInvZ->setChecked(invZ == "true");
// enable logging by default
QString enDebugLog = settings.value(SETTINGS_ENABLE_DEBUG_LOG, "true").value<QString>();
// default aggressive preload behavior to 'true'!
QString enAggressivePreload = settings.value(SETTINGS_USE_AGGRESSIVE_PRELOAD, "true").value<QString>();
QString useMmManualCmds = settings.value(SETTINGS_USE_MM_FOR_MANUAL_CMDS, "true").value<QString>();
ui->checkBoxEnableDebugLog->setChecked(enDebugLog == "true");
ui->chkAggressivePreload->setChecked(enAggressivePreload == "true");
ui->checkBoxUseMmManualCmds->setChecked(useMmManualCmds == "true");
int waitTime = settings.value(SETTINGS_RESPONSE_WAIT_TIME, DEFAULT_WAIT_TIME_SEC).value<int>();
ui->spinResponseWaitSec->setValue(waitTime);
double zJogRate = settings.value(SETTINGS_Z_JOG_RATE, DEFAULT_Z_JOG_RATE).value<double>();
ui->doubleSpinZJogRate->setValue(zJogRate);
QString zRateLimit = settings.value(SETTINGS_Z_RATE_LIMIT, "false").value<QString>();
ui->chkLimitZRate->setChecked(zRateLimit == "true");
double zRateLimitAmount = settings.value(SETTINGS_Z_RATE_LIMIT_AMOUNT, DEFAULT_Z_LIMIT_RATE).value<double>();
ui->doubleSpinZRateLimit->setValue(zRateLimitAmount);
double xyRateAmount = settings.value(SETTINGS_XY_RATE_AMOUNT, DEFAULT_XY_RATE).value<double>();
ui->doubleSpinXYRate->setValue(xyRateAmount);
if (!ui->chkLimitZRate->isChecked())
{
ui->doubleSpinZRateLimit->setEnabled(false);
ui->doubleSpinXYRate->setEnabled(false);
}
QString ffCmd = settings.value(SETTINGS_FILTER_FILE_COMMANDS, "false").value<QString>();
ui->chkFilterFileCommands->setChecked(ffCmd == "true");
QString rPrecision = settings.value(SETTINGS_REDUCE_PREC_FOR_LONG_LINES, "false").value<QString>();
ui->checkBoxReducePrecForLongLines->setChecked(rPrecision == "true");
ui->spinBoxGrblLineBufferSize->setValue(settings.value(SETTINGS_GRBL_LINE_BUFFER_LEN, DEFAULT_GRBL_LINE_BUFFER_LEN).value<int>());
}
Options::~Options()
{
delete ui;
}
void Options::accept()
{
QSettings settings;
settings.setValue(SETTINGS_INVERSE_X, ui->chkInvX->isChecked());
settings.setValue(SETTINGS_INVERSE_Y, ui->chkInvY->isChecked());
settings.setValue(SETTINGS_INVERSE_Z, ui->chkInvZ->isChecked());
settings.setValue(SETTINGS_ENABLE_DEBUG_LOG, ui->checkBoxEnableDebugLog->isChecked());
settings.setValue(SETTINGS_USE_AGGRESSIVE_PRELOAD, ui->chkAggressivePreload->isChecked());
settings.setValue(SETTINGS_USE_MM_FOR_MANUAL_CMDS, ui->checkBoxUseMmManualCmds->isChecked());
settings.setValue(SETTINGS_RESPONSE_WAIT_TIME, ui->spinResponseWaitSec->value());
settings.setValue(SETTINGS_Z_JOG_RATE, ui->doubleSpinZJogRate->value());
settings.setValue(SETTINGS_Z_RATE_LIMIT, ui->chkLimitZRate->isChecked());
settings.setValue(SETTINGS_Z_RATE_LIMIT_AMOUNT, ui->doubleSpinZRateLimit->value());
settings.setValue(SETTINGS_XY_RATE_AMOUNT, ui->doubleSpinXYRate->value());
settings.setValue(SETTINGS_FILTER_FILE_COMMANDS, ui->chkFilterFileCommands->isChecked());
settings.setValue(SETTINGS_REDUCE_PREC_FOR_LONG_LINES, ui->checkBoxReducePrecForLongLines->isChecked());
settings.setValue(SETTINGS_GRBL_LINE_BUFFER_LEN, ui->spinBoxGrblLineBufferSize->value());
connect(this, SIGNAL(setSettings()), parentWidget(), SLOT(setSettings()));
emit setSettings();
this->close();
}
void Options::toggleUseMm(bool useMm)
{
double zJogRate = ui->doubleSpinZJogRate->value();
double zRateLimit = ui->doubleSpinZRateLimit->value();
double xyRate = ui->doubleSpinXYRate->value();
if (useMm)
{
ui->doubleSpinZJogRate->setValue(zJogRate * MM_IN_AN_INCH);
ui->doubleSpinZRateLimit->setValue(zRateLimit * MM_IN_AN_INCH);
ui->doubleSpinXYRate->setValue(xyRate * MM_IN_AN_INCH);
}
else
{
ui->doubleSpinZJogRate->setValue(zJogRate / MM_IN_AN_INCH);
ui->doubleSpinZRateLimit->setValue(zRateLimit / MM_IN_AN_INCH);
ui->doubleSpinXYRate->setValue(xyRate / MM_IN_AN_INCH);
}
}
void Options::toggleLimitZRate(bool limitZ)
{
ui->doubleSpinZRateLimit->setEnabled(limitZ);
ui->doubleSpinXYRate->setEnabled(limitZ);
}