Compare commits
No commits in common. "master" and "v0.3.5" have entirely different histories.
9
.gitignore
vendored
9
.gitignore
vendored
@ -1,8 +1 @@
|
|||||||
RepRaptor
|
./RepRaptor
|
||||||
Makefile
|
|
||||||
*.user
|
|
||||||
*.o
|
|
||||||
ui_*.h
|
|
||||||
moc_*
|
|
||||||
qrc_*
|
|
||||||
*~
|
|
||||||
26
.travis.yml
26
.travis.yml
@ -1,26 +0,0 @@
|
|||||||
language: cpp
|
|
||||||
compiler: gcc
|
|
||||||
sudo: require
|
|
||||||
dist: trusty
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y
|
|
||||||
- sudo apt-get update -qq
|
|
||||||
|
|
||||||
install:
|
|
||||||
- sudo apt-get -y install qt58base qt58serialport qt58tools
|
|
||||||
- source /opt/qt58/bin/qt58-env.sh
|
|
||||||
|
|
||||||
script:
|
|
||||||
- qmake PREFIX=/usr
|
|
||||||
- make -j4
|
|
||||||
- sudo make INSTALL_ROOT=appdir install ; sudo chown -R $USER appdir ; find appdir/
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
|
|
||||||
- chmod a+x linuxdeployqt*.AppImage
|
|
||||||
- unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
|
|
||||||
- ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs
|
|
||||||
- ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -appimage
|
|
||||||
- find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq
|
|
||||||
- curl --upload-file ./RepRaptor*.AppImage https://transfer.sh/RepRaptor-git.$(git rev-parse --short HEAD)-x86_64.AppImage
|
|
||||||
13
README.md
13
README.md
@ -1,5 +1,5 @@
|
|||||||

|

|
||||||
# RepRaptor [](https://travis-ci.org/NeoTheFox/RepRaptor)
|
# RepRaptor
|
||||||
A Qt RepRap gcode sender/host controller aimed to be fast and minimalistic.
|
A Qt RepRap gcode sender/host controller aimed to be fast and minimalistic.
|
||||||
|
|
||||||
Right now the project is in early stage. This means some features are still absent, but it is already usable.
|
Right now the project is in early stage. This means some features are still absent, but it is already usable.
|
||||||
@ -18,7 +18,7 @@ sudo apt-get install repraptor
|
|||||||
## Building on Ubuntu 14.04
|
## Building on Ubuntu 14.04
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt-get install qt5-default libqt5serialport libqt5serialport5-dev git build-essential libudev-dev
|
sudo apt-get install libqt5serialport5-dev git build-essential
|
||||||
|
|
||||||
git clone https://github.com/NeoTheFox/RepRaptor && cd RepRaptor
|
git clone https://github.com/NeoTheFox/RepRaptor && cd RepRaptor
|
||||||
|
|
||||||
@ -26,15 +26,10 @@ qmake RepRaptor.pro
|
|||||||
|
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
And if you want to install system-wide
|
|
||||||
```
|
|
||||||
sudo make install
|
|
||||||
```
|
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
- [Binary release downloads (Windows, Linux)](https://github.com/NeoTheFox/RepRaptor/releases)
|
- [Binary release downloads](https://github.com/NeoTheFox/RepRaptor/releases)
|
||||||
- [RepRap wiki](http://reprap.org/wiki/RepRaptor)
|
- [RepRap wiki](http://reprap.org/wiki/RepRaptor)
|
||||||
- [AUR](https://aur.archlinux.org/packages/repraptor-git/)
|
- [Windows dev builds](http://reprap.org/wiki/File:RepRaptor-000-windows.zip)
|
||||||
|
|
||||||
[](https://gratipay.com/NeoTheFox/)
|
[](https://gratipay.com/NeoTheFox/)
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=RepRaptor
|
Name=RepRaptor
|
||||||
Comment=A Qt RepRap gcode sender/host controller aimed to be fast and minimalistic.
|
Comment=A Qt RepRap gcode sender/host controller aimed to be fast and minimalistic.
|
||||||
Exec=RepRaptor
|
Exec=/usr/bin/RepRaptor
|
||||||
Icon=repraptor
|
Icon=/usr/share/icons/repraptor.png
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Utility;Application;
|
Categories=Utility;Application;
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
|
|
||||||
QT += core gui serialport
|
QT += core gui serialport concurrent
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
@ -44,8 +44,7 @@ SOURCES += main.cpp\
|
|||||||
erroricon.cpp \
|
erroricon.cpp \
|
||||||
sdwindow.cpp \
|
sdwindow.cpp \
|
||||||
eepromwindow.cpp \
|
eepromwindow.cpp \
|
||||||
parser.cpp \
|
parser.cpp
|
||||||
sender.cpp
|
|
||||||
|
|
||||||
HEADERS += mainwindow.h \
|
HEADERS += mainwindow.h \
|
||||||
settingswindow.h \
|
settingswindow.h \
|
||||||
@ -55,8 +54,7 @@ HEADERS += mainwindow.h \
|
|||||||
sdwindow.h \
|
sdwindow.h \
|
||||||
repraptor.h \
|
repraptor.h \
|
||||||
eepromwindow.h \
|
eepromwindow.h \
|
||||||
parser.h \
|
parser.h
|
||||||
sender.h
|
|
||||||
|
|
||||||
FORMS += mainwindow.ui \
|
FORMS += mainwindow.ui \
|
||||||
settingswindow.ui \
|
settingswindow.ui \
|
||||||
@ -71,5 +69,4 @@ RESOURCES += \
|
|||||||
DISTFILES += \
|
DISTFILES += \
|
||||||
LICENCE \
|
LICENCE \
|
||||||
README.md \
|
README.md \
|
||||||
RepRaptor.desktop \
|
RepRaptor.desktop
|
||||||
.travis.yml
|
|
||||||
|
|||||||
@ -6,11 +6,6 @@ AboutWindow::AboutWindow(QWidget *parent) :
|
|||||||
ui(new Ui::AboutWindow)
|
ui(new Ui::AboutWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
QString info;
|
|
||||||
info += "RepRaptor v" + qApp->applicationVersion() + ", ";
|
|
||||||
info += "built with Qt " + QString(QT_VERSION_STR) + " on ";
|
|
||||||
info += QString(__DATE__) + ", " + QString(__TIME__);
|
|
||||||
ui->versionLabel->setText(info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AboutWindow::~AboutWindow()
|
AboutWindow::~AboutWindow()
|
||||||
|
|||||||
@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
#include "repraptor.h"
|
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class AboutWindow;
|
class AboutWindow;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,16 +6,10 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>359</width>
|
<width>424</width>
|
||||||
<height>363</height>
|
<height>308</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>About RepRaptor</string>
|
<string>About RepRaptor</string>
|
||||||
</property>
|
</property>
|
||||||
@ -24,7 +18,7 @@
|
|||||||
<normaloff>:/icons/about.png</normaloff>:/icons/about.png</iconset>
|
<normaloff>:/icons/about.png</normaloff>:/icons/about.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="3" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
@ -34,7 +28,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QTextBrowser" name="textBrowser">
|
<widget class="QTextBrowser" name="textBrowser">
|
||||||
<property name="acceptDrops">
|
<property name="acceptDrops">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
@ -45,8 +39,8 @@
|
|||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
|
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||||
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/icons/logo.png" /></p>
|
<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/icons/logo.png" /></p>
|
||||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"> RepRaptor</span> is free and open source software for controlling RepRap and similar machines. This software is distributed by terms of <a href="https://www.gnu.org/licenses/gpl-2.0.html"><span style=" text-decoration: underline; color:#0000ff;">GPL v2 licence.</span></a> Some graphical images (Fugue Icons) are distributed by terms of <a href="https://creativecommons.org/licenses/by/3.0/deed.ru"><span style=" text-decoration: underline; color:#0000ff;">Creative Commons 3 licence</span></a>.</p>
|
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"> RepRaptor</span> is a free and open source software for controlling RepRap and similar mashines. This software is distributed by terms of <a href="https://www.gnu.org/licenses/gpl-2.0.html"><span style=" text-decoration: underline; color:#0000ff;">GPL v2 licence.</span></a> Some graphical images (Fugue Icons) are distributed by terms of <a href="https://creativecommons.org/licenses/by/3.0/deed.ru"><span style=" text-decoration: underline; color:#0000ff;">Creative Commons 3 licence</span></a>.</p>
|
||||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> RepRaptor's main goal is to be as simple as possible and fast, yet functional. This software is being developed as a primary host software for <span style=" font-weight:600;">MGTU MIREA</span> university's 3D printing laboratory by</p>
|
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> RepRaptor's main goal is to be as simple as possible and fast, yet functional. This software is being developed as a primary host software for <span style=" font-weight:600;">MGTU MIREA</span> university's 3D printing labratory by</p>
|
||||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="mailto:repraptor-dev@repraptor.33mail.com"><span style=" text-decoration: underline; color:#0000ff;">Nickolay (aka &quot;NeoTheFox&quot;) Mardanov.</span></a></p>
|
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="mailto:repraptor-dev@repraptor.33mail.com"><span style=" text-decoration: underline; color:#0000ff;">Nickolay (aka &quot;NeoTheFox&quot;) Mardanov.</span></a></p>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/NeoTheFox/RepRaptor"><span style=" text-decoration: underline; color:#0000ff;">GitHub</span></a></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/NeoTheFox/RepRaptor"><span style=" text-decoration: underline; color:#0000ff;">GitHub</span></a></p>
|
||||||
@ -62,13 +56,6 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="versionLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Build info</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
@ -64,7 +64,7 @@ EEPROMWindow::EEPROMWindow(QStringList eepromLines, QWidget *parent) :
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(edit, &QLineEdit::textChanged, this, &EEPROMWindow::lineChanged);
|
connect(edit, SIGNAL(textChanged(QString)), this, SLOT(lineChanged(QString)));
|
||||||
|
|
||||||
line->addWidget(label);
|
line->addWidget(label);
|
||||||
line->addWidget(edit);
|
line->addWidget(edit);
|
||||||
|
|||||||
@ -4,18 +4,16 @@ ErrorIcon::ErrorIcon(QWidget *parent) : QWidget(parent)
|
|||||||
{
|
{
|
||||||
framenum = 0;
|
framenum = 0;
|
||||||
frame = ":icons/error_a.png";
|
frame = ":icons/error_a.png";
|
||||||
animation = new QTimer(this);
|
animation.setInterval(300);
|
||||||
animation->setInterval(300);
|
animation.start();
|
||||||
animation->start();
|
|
||||||
|
|
||||||
connect(animation, &QTimer::timeout, this, &ErrorIcon::changeFrame);
|
connect(&animation, SIGNAL(timeout()), this, SLOT(changeFrame()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ErrorIcon::paintEvent(QPaintEvent *)
|
void ErrorIcon::paintEvent(QPaintEvent *pe)
|
||||||
{
|
{
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
QPixmap pframe(frame);
|
painter.drawPixmap(0,0,128,87,QPixmap(frame));
|
||||||
painter.drawPixmap(0,0,pframe.width(),pframe.height(),pframe);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ErrorIcon::changeFrame()
|
void ErrorIcon::changeFrame()
|
||||||
@ -35,6 +33,6 @@ void ErrorIcon::changeFrame()
|
|||||||
|
|
||||||
ErrorIcon::~ErrorIcon()
|
ErrorIcon::~ErrorIcon()
|
||||||
{
|
{
|
||||||
animation->stop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,12 +11,12 @@ class ErrorIcon : public QWidget
|
|||||||
public:
|
public:
|
||||||
explicit ErrorIcon(QWidget *parent = 0);
|
explicit ErrorIcon(QWidget *parent = 0);
|
||||||
~ErrorIcon();
|
~ErrorIcon();
|
||||||
QTimer *animation;
|
QTimer animation;
|
||||||
QString frame;
|
QString frame;
|
||||||
int framenum;
|
int framenum;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void paintEvent(QPaintEvent *);
|
virtual void paintEvent(QPaintEvent *pe);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
|
|||||||
@ -1,29 +1,11 @@
|
|||||||
#include "errorwindow.h"
|
#include "errorwindow.h"
|
||||||
#include "ui_errorwindow.h"
|
#include "ui_errorwindow.h"
|
||||||
|
|
||||||
using namespace RepRaptor;
|
ErrorWindow::ErrorWindow(QWidget *parent, QString errorText) :
|
||||||
|
|
||||||
ErrorWindow::ErrorWindow(QWidget *parent, QString errorText, int errType):
|
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::ErrorWindow)
|
ui(new Ui::ErrorWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
switch(errType)
|
|
||||||
{
|
|
||||||
case SerialPortError:
|
|
||||||
ui->label->setText(tr("Serial port error:"));
|
|
||||||
break;
|
|
||||||
case OpenFileError:
|
|
||||||
ui->label->setText(tr("File open error:"));
|
|
||||||
break;
|
|
||||||
case HardwareFailure:
|
|
||||||
ui->label->setText(tr("Hardware failure:"));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ui->label->setText(tr("Unknown error type:"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->errorlabel->setText(errorText);
|
ui->errorlabel->setText(errorText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,6 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
#include "erroricon.h"
|
#include "erroricon.h"
|
||||||
#include "repraptor.h"
|
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class ErrorWindow;
|
class ErrorWindow;
|
||||||
@ -15,7 +14,7 @@ class ErrorWindow : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ErrorWindow(QWidget *parent = 0, QString errorText = "Unknown error", int errType = 0);
|
explicit ErrorWindow(QWidget *parent = 0, QString errorText = "Unknown error");
|
||||||
~ErrorWindow();
|
~ErrorWindow();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
5
main.cpp
5
main.cpp
@ -1,16 +1,15 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "repraptor.h"
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
|
|
||||||
//Set some props in order to fetch and save QSettings
|
|
||||||
QCoreApplication::setOrganizationName("NeoTheFox");
|
QCoreApplication::setOrganizationName("NeoTheFox");
|
||||||
QCoreApplication::setOrganizationDomain("https://github.com/NeoTheFox");
|
QCoreApplication::setOrganizationDomain("https://github.com/NeoTheFox");
|
||||||
QCoreApplication::setApplicationName("RepRaptor");
|
QCoreApplication::setApplicationName("RepRaptor");
|
||||||
QCoreApplication::setApplicationVersion(REPRAPTOR_VERSION);
|
|
||||||
|
QThread::currentThread()->setPriority(QThread::HighestPriority);
|
||||||
|
|
||||||
MainWindow w;
|
MainWindow w;
|
||||||
w.show();
|
w.show();
|
||||||
|
|||||||
789
mainwindow.cpp
789
mainwindow.cpp
File diff suppressed because it is too large
Load Diff
74
mainwindow.h
74
mainwindow.h
@ -3,16 +3,16 @@
|
|||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QSystemTrayIcon>
|
|
||||||
#include <QtSerialPort/QtSerialPort>
|
#include <QtSerialPort/QtSerialPort>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QThread>
|
#include <QFuture>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
#include <QtConcurrent/QtConcurrent>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
|
#include <QMessageBox>
|
||||||
#include <QRegExp>
|
#include <QRegExp>
|
||||||
#include <QMap>
|
|
||||||
|
|
||||||
#include "settingswindow.h"
|
#include "settingswindow.h"
|
||||||
#include "aboutwindow.h"
|
#include "aboutwindow.h"
|
||||||
@ -21,7 +21,6 @@
|
|||||||
#include "repraptor.h"
|
#include "repraptor.h"
|
||||||
#include "eepromwindow.h"
|
#include "eepromwindow.h"
|
||||||
#include "parser.h"
|
#include "parser.h"
|
||||||
#include "sender.h"
|
|
||||||
|
|
||||||
using namespace RepRaptor;
|
using namespace RepRaptor;
|
||||||
|
|
||||||
@ -37,52 +36,45 @@ public:
|
|||||||
explicit MainWindow(QWidget *parent = 0);
|
explicit MainWindow(QWidget *parent = 0);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
|
||||||
Parser *parserWorker;
|
Parser *parser;
|
||||||
Sender *senderWorker;
|
|
||||||
QThread *parserThread;
|
QThread *parserThread;
|
||||||
QThread *senderThread;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QMap <QString, QString> macros;
|
|
||||||
QFile gfile;
|
QFile gfile;
|
||||||
QVector<QString> gcode;
|
QVector<QString> gcode;
|
||||||
QQueue <QString> userCommands;
|
QQueue <QString> userCommands;
|
||||||
QTimer *progressSDTimer;
|
QTimer sendTimer;
|
||||||
QTimer *statusTimer;
|
QTimer progressSDTimer;
|
||||||
QSystemTrayIcon *trayIcon;
|
QTimer statusTimer;
|
||||||
QMenu *recentMenu;
|
QElapsedTimer sinceLastTemp;
|
||||||
QMenu *trayIconMenu;
|
QElapsedTimer sinceLastSDStatus;
|
||||||
QElapsedTimer *sinceLastTemp;
|
|
||||||
QElapsedTimer *sinceLastSDStatus;
|
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
QStringList recentFiles;
|
QStringList recentFiles;
|
||||||
QStringList EEPROMSettings;
|
QStringList EEPROMSettings;
|
||||||
QStringList userHistory;
|
QStringList userHistory;
|
||||||
QSerialPortInfo printerinfo;
|
QMenu *recentMenu;
|
||||||
QTextCursor terminalCursor;
|
|
||||||
|
|
||||||
void closeEvent(QCloseEvent *event);
|
|
||||||
bool eventFilter(QObject *target, QEvent *event);
|
bool eventFilter(QObject *target, QEvent *event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
|
|
||||||
QString lastDir;
|
QSerialPort printer;
|
||||||
bool opened;
|
QSerialPortInfo printerinfo;
|
||||||
bool firstrun;
|
bool firstrun;
|
||||||
bool autolock;
|
bool autolock;
|
||||||
bool printing;
|
|
||||||
bool sending;
|
bool sending;
|
||||||
bool paused;
|
bool paused;
|
||||||
bool checkingTemperature;
|
bool checkingTemperature;
|
||||||
|
bool readingFiles;
|
||||||
bool sdprinting;
|
bool sdprinting;
|
||||||
bool echo;
|
bool echo;
|
||||||
|
bool sendingChecksum;
|
||||||
bool chekingSDStatus;
|
bool chekingSDStatus;
|
||||||
bool trayIconEnabled;
|
|
||||||
bool supressWait;
|
|
||||||
int firmware;
|
int firmware;
|
||||||
int feedrate;
|
long int currentLine;
|
||||||
int extruderFeedrate;
|
unsigned long int lastRecieved;
|
||||||
|
int readyRecieve;
|
||||||
int userHistoryPos;
|
int userHistoryPos;
|
||||||
unsigned long int sdBytes;
|
unsigned long int sdBytes;
|
||||||
|
|
||||||
@ -90,11 +82,14 @@ private slots:
|
|||||||
void open();
|
void open();
|
||||||
void serialconnect();
|
void serialconnect();
|
||||||
void serialupdate();
|
void serialupdate();
|
||||||
void updatesettings();
|
bool sendLine(QString line);
|
||||||
void readSerial(QByteArray data);
|
void readSerial();
|
||||||
void printMsg(QString text);
|
void printMsg(QString text);
|
||||||
|
void printMsg(const char* text);
|
||||||
|
void sendNext();
|
||||||
void checkStatus();
|
void checkStatus();
|
||||||
void updateRecent();
|
void updateRecent();
|
||||||
|
void injectCommand(QString command);
|
||||||
void initSDprinting(QStringList sdFiles);
|
void initSDprinting(QStringList sdFiles);
|
||||||
void selectSDfile(QString file);
|
void selectSDfile(QString file);
|
||||||
void checkSDStatus();
|
void checkSDStatus();
|
||||||
@ -103,15 +98,14 @@ private slots:
|
|||||||
void openEEPROMeditor();
|
void openEEPROMeditor();
|
||||||
void sendEEPROMsettings(QStringList changes);
|
void sendEEPROMsettings(QStringList changes);
|
||||||
void updateTemperature(TemperatureReadings r);
|
void updateTemperature(TemperatureReadings r);
|
||||||
void EEPROMSettingReceived(QString esetting);
|
void EEPROMSettingRecieved(QString esetting);
|
||||||
void receivedError();
|
void recievedOkNum(int num);
|
||||||
void receivedSDDone();
|
void recievedWait();
|
||||||
void receivedNotSDPrinting();
|
void recievedError();
|
||||||
|
void recievedSDDone();
|
||||||
|
void recievedResend(int num);
|
||||||
void parseFile(QString filename);
|
void parseFile(QString filename);
|
||||||
void recentClicked();
|
void recentClicked();
|
||||||
void updateFileProgress(FileProgress);
|
|
||||||
void baudrateSetFailed(int b);
|
|
||||||
void trayIconClicked(QSystemTrayIcon::ActivationReason reason);
|
|
||||||
|
|
||||||
void xplus();
|
void xplus();
|
||||||
void yplus();
|
void yplus();
|
||||||
@ -159,17 +153,9 @@ private slots:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sdReady();
|
void sdReady();
|
||||||
|
void eepromReady();
|
||||||
|
void recievedData(QByteArray);
|
||||||
void startedReadingEEPROM();
|
void startedReadingEEPROM();
|
||||||
|
|
||||||
void openPort(QSerialPortInfo i);
|
|
||||||
void closePort();
|
|
||||||
void startPrinting();
|
|
||||||
void stopPrinting();
|
|
||||||
void pause(bool p);
|
|
||||||
void setBaudrate(int b);
|
|
||||||
void setFile(QVector <QString> f);
|
|
||||||
void injectCommand(QString command);
|
|
||||||
void flushInjectionBuffer();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|||||||
139
mainwindow.ui
139
mainwindow.ui
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>791</width>
|
<width>761</width>
|
||||||
<height>514</height>
|
<height>456</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -43,6 +43,13 @@
|
|||||||
<string>Serial</string>
|
<string>Serial</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QPushButton" name="portsBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>Ports</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QComboBox" name="serialBox">
|
<widget class="QComboBox" name="serialBox">
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
@ -51,23 +58,6 @@
|
|||||||
<height>16777215</height>
|
<height>16777215</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="editable">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QComboBox" name="baudbox">
|
|
||||||
<property name="editable">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QPushButton" name="portsBtn">
|
|
||||||
<property name="text">
|
|
||||||
<string>Ports</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
@ -77,6 +67,9 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="baudbox"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -150,15 +143,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="1" column="4">
|
<item row="1" column="4">
|
||||||
<widget class="QPushButton" name="ezerobtn">
|
<widget class="QPushButton" name="ezerobtn">
|
||||||
<property name="toolTip">
|
|
||||||
<string>this is tool tip e0</string>
|
|
||||||
</property>
|
|
||||||
<property name="statusTip">
|
|
||||||
<string>this is status e0</string>
|
|
||||||
</property>
|
|
||||||
<property name="whatsThis">
|
|
||||||
<string>this is e0</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>E0</string>
|
<string>E0</string>
|
||||||
</property>
|
</property>
|
||||||
@ -180,9 +164,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="1" column="6">
|
<item row="1" column="6">
|
||||||
<widget class="QPushButton" name="homeybtn">
|
<widget class="QPushButton" name="homeybtn">
|
||||||
<property name="whatsThis">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>H Y</string>
|
<string>H Y</string>
|
||||||
</property>
|
</property>
|
||||||
@ -212,7 +193,7 @@
|
|||||||
<item row="3" column="3" colspan="4">
|
<item row="3" column="3" colspan="4">
|
||||||
<widget class="QPushButton" name="releasebtn">
|
<widget class="QPushButton" name="releasebtn">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Motors off</string>
|
<string>Release</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -225,9 +206,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="6" column="2" colspan="2">
|
<item row="6" column="2" colspan="2">
|
||||||
<widget class="QSpinBox" name="etmpspin">
|
<widget class="QSpinBox" name="etmpspin">
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>500</number>
|
<number>500</number>
|
||||||
</property>
|
</property>
|
||||||
@ -236,22 +214,19 @@
|
|||||||
<item row="6" column="6">
|
<item row="6" column="6">
|
||||||
<widget class="QPushButton" name="etmpoff">
|
<widget class="QPushButton" name="etmpoff">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Off</string>
|
<string>OFF</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="4">
|
<item row="6" column="4">
|
||||||
<widget class="QPushButton" name="etmpset">
|
<widget class="QPushButton" name="etmpset">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Set</string>
|
<string>SET</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="2" colspan="2">
|
<item row="7" column="2" colspan="2">
|
||||||
<widget class="QSpinBox" name="btmpspin">
|
<widget class="QSpinBox" name="btmpspin">
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>500</number>
|
<number>500</number>
|
||||||
</property>
|
</property>
|
||||||
@ -260,14 +235,14 @@
|
|||||||
<item row="7" column="4">
|
<item row="7" column="4">
|
||||||
<widget class="QPushButton" name="btmpset">
|
<widget class="QPushButton" name="btmpset">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Set</string>
|
<string>SET</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="6">
|
<item row="7" column="6">
|
||||||
<widget class="QPushButton" name="btmpoff">
|
<widget class="QPushButton" name="btmpoff">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Off</string>
|
<string>OFF</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -276,12 +251,6 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>100</string>
|
<string>100</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxLength">
|
|
||||||
<number>3</number>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="clearButtonEnabled">
|
<property name="clearButtonEnabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
@ -306,26 +275,15 @@
|
|||||||
<item row="8" column="5" colspan="2">
|
<item row="8" column="5" colspan="2">
|
||||||
<widget class="QPushButton" name="speedsetbtn">
|
<widget class="QPushButton" name="speedsetbtn">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Set</string>
|
<string>SET</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="2">
|
<item row="9" column="2">
|
||||||
<widget class="QLineEdit" name="flowedit">
|
<widget class="QLineEdit" name="flowedit">
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>9</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>100</string>
|
<string>100</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxLength">
|
|
||||||
<number>3</number>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="clearButtonEnabled">
|
<property name="clearButtonEnabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
@ -350,35 +308,35 @@
|
|||||||
<item row="9" column="5" colspan="2">
|
<item row="9" column="5" colspan="2">
|
||||||
<widget class="QPushButton" name="flowbutton">
|
<widget class="QPushButton" name="flowbutton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Set</string>
|
<string>SET</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="2" colspan="2">
|
<item row="10" column="2" colspan="2">
|
||||||
<widget class="QPushButton" name="fanonbtn">
|
<widget class="QPushButton" name="fanonbtn">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Fan On</string>
|
<string>FAN ON</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="4" colspan="3">
|
<item row="10" column="4" colspan="3">
|
||||||
<widget class="QPushButton" name="fanoffbtn">
|
<widget class="QPushButton" name="fanoffbtn">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Fan Off</string>
|
<string>FAN OFF</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="2" colspan="2">
|
<item row="11" column="2" colspan="2">
|
||||||
<widget class="QPushButton" name="atxonbtn">
|
<widget class="QPushButton" name="atxonbtn">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>ATX On</string>
|
<string>ATX ON</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="4" colspan="3">
|
<item row="11" column="4" colspan="3">
|
||||||
<widget class="QPushButton" name="atxoffbtn">
|
<widget class="QPushButton" name="atxoffbtn">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>ATX Off</string>
|
<string>ATX OFF</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -418,6 +376,19 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="0" colspan="2">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>15</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Step</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="5" column="0" colspan="3">
|
<item row="5" column="0" colspan="3">
|
||||||
<widget class="QDoubleSpinBox" name="stepspin">
|
<widget class="QDoubleSpinBox" name="stepspin">
|
||||||
<property name="locale">
|
<property name="locale">
|
||||||
@ -444,7 +415,7 @@
|
|||||||
<item row="7" column="0" colspan="2">
|
<item row="7" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Bed tmp</string>
|
<string>B tmp</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -897,19 +868,6 @@ STOP</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0" colspan="3">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>16777215</width>
|
|
||||||
<height>15</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Step Increment</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -931,13 +889,6 @@ STOP</string>
|
|||||||
<string>Console</string>
|
<string>Console</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QPushButton" name="sendbtn">
|
|
||||||
<property name="text">
|
|
||||||
<string>Send</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QTextBrowser" name="terminal">
|
<widget class="QTextBrowser" name="terminal">
|
||||||
<property name="acceptDrops">
|
<property name="acceptDrops">
|
||||||
@ -958,6 +909,13 @@ STOP</string>
|
|||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLineEdit" name="sendtext"/>
|
<widget class="QLineEdit" name="sendtext"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QPushButton" name="sendbtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>Send</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -1056,7 +1014,7 @@ STOP</string>
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Temperature</string>
|
<string>Status</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_5">
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
@ -1092,7 +1050,7 @@ STOP</string>
|
|||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>0</width>
|
||||||
<height>15</height>
|
<height>14</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
@ -1129,7 +1087,7 @@ STOP</string>
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>791</width>
|
<width>761</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -1220,9 +1178,6 @@ STOP</string>
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Open...</string>
|
<string>Open...</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconText">
|
|
||||||
<string>Open File</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut">
|
<property name="shortcut">
|
||||||
<string>Ctrl+O</string>
|
<string>Ctrl+O</string>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
58
parser.cpp
58
parser.cpp
@ -3,17 +3,15 @@
|
|||||||
Parser::Parser(QObject *parent):
|
Parser::Parser(QObject *parent):
|
||||||
QObject(parent)
|
QObject(parent)
|
||||||
{
|
{
|
||||||
//Init regexp
|
this->setParent(parent);
|
||||||
temperatureRegxp.setCaseSensitivity(Qt::CaseInsensitive);
|
temperatureRegxp.setCaseSensitivity(Qt::CaseInsensitive);
|
||||||
temperatureRegxp.setPatternSyntax(QRegExp::RegExp);
|
temperatureRegxp.setPatternSyntax(QRegExp::RegExp);
|
||||||
temperatureRegxp.setPattern("\\d+\\.\\d+"); // Find float in string
|
temperatureRegxp.setPattern("\\d+\\.\\d+"); // Find float in string
|
||||||
|
|
||||||
//Init values
|
|
||||||
readingFiles = false;
|
readingFiles = false;
|
||||||
readingEEPROM = false;
|
readingEEPROM = false;
|
||||||
EEPROMReadingStarted = false;
|
EEPROMReadingStarted = false;
|
||||||
|
|
||||||
//Load settings
|
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
firmware = settings.value("printer/firmware").toInt();
|
firmware = settings.value("printer/firmware").toInt();
|
||||||
}
|
}
|
||||||
@ -25,26 +23,26 @@ Parser::~Parser()
|
|||||||
|
|
||||||
void Parser::parse(QByteArray data)
|
void Parser::parse(QByteArray data)
|
||||||
{
|
{
|
||||||
if(!data.isEmpty()) //Dont need to process empty strings
|
if(!data.isEmpty())
|
||||||
{
|
{
|
||||||
if(readingFiles) //SD files list reading mode
|
if(readingFiles)
|
||||||
{
|
{
|
||||||
if(!data.contains("End file list")) SDFilesList.append(data.remove(data.size()-2, 2));
|
if(!data.contains("End file list")) SDFilesList.append(data);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
readingFiles = false;
|
readingFiles = false;
|
||||||
emit receivedSDFilesList(SDFilesList);
|
emit recievedSDFilesList(SDFilesList);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(readingEEPROM) // EEPROM reading mode
|
if(readingEEPROM)
|
||||||
{
|
{
|
||||||
if(firmware == Repetier)
|
if(firmware == Repetier)
|
||||||
{
|
{
|
||||||
if(data.startsWith("EPR"))
|
if(data.startsWith("EPR"))
|
||||||
{
|
{
|
||||||
emit receivedEEPROMLine(QString(data));
|
emit recievedEEPROMLine(QString(data));
|
||||||
EEPROMReadingStarted = true;
|
EEPROMReadingStarted = true;
|
||||||
}
|
}
|
||||||
else if(EEPROMReadingStarted)
|
else if(EEPROMReadingStarted)
|
||||||
@ -57,38 +55,48 @@ void Parser::parse(QByteArray data)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if(data.startsWith("ok"))
|
if(data.startsWith("ok"))
|
||||||
{
|
{
|
||||||
QStringList tmp = QString(data).split(' ');
|
QStringList tmp = QString(data).split(' ');
|
||||||
if(tmp.size() > 1)
|
if(tmp.size() > 1)
|
||||||
emit receivedOkNum(tmp.at(1).toInt());
|
emit recievedOkNum(tmp.at(1).toInt());
|
||||||
else emit receivedOkNum(0);
|
else emit recievedOkNum(0);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
else if(data.contains("T:"))
|
else if(data.startsWith("T:"))
|
||||||
{
|
{
|
||||||
TemperatureReadings r;
|
TemperatureReadings r;
|
||||||
|
|
||||||
if(temperatureRegxp.indexIn(QString(data)) != -1)
|
if(temperatureRegxp.indexIn(QString(data)) != -1)
|
||||||
r.e = temperatureRegxp.cap(0).toDouble();
|
r.e = temperatureRegxp.cap(0).toDouble();
|
||||||
else r.e = 0;
|
else return;
|
||||||
if(temperatureRegxp.indexIn(QString(data), temperatureRegxp.matchedLength()) != -1)
|
if(temperatureRegxp.indexIn(QString(data), temperatureRegxp.matchedLength()) != -1)
|
||||||
r.b = temperatureRegxp.cap(0).toDouble();
|
r.b = temperatureRegxp.cap(0).toDouble();
|
||||||
else r.b = 0;
|
else return;
|
||||||
|
|
||||||
r.raw = QString(data);
|
r.raw = QString(data);
|
||||||
|
|
||||||
emit receivedTemperature(r);
|
emit recievedTemperature(r);
|
||||||
}
|
}
|
||||||
//else if(data.startsWith("wait")) emit receivedOkWait();
|
//else if(data.startsWith("wait")) emit recievedOkWait();
|
||||||
else if(data.startsWith("rs") || data.toLower().startsWith("resend"))
|
else if(data.startsWith("rs") || data.startsWith("Resend"))
|
||||||
emit receivedResend(data.split(':').at(1).toInt());
|
emit recievedResend(data.split(' ').at(0).toInt());
|
||||||
else if(data.startsWith("!!")) emit receivedError();
|
else if(data.startsWith("!!")) emit recievedError();
|
||||||
else if(data.startsWith("Done")) emit receivedSDDone();
|
else if(data.startsWith("Done")) emit recievedSDDone();
|
||||||
else if(data.startsWith("start")) emit receivedStart();
|
else if(data.startsWith("start")) emit recievedStart();
|
||||||
else if(data.startsWith("SD pr"))
|
else if(data.startsWith("SD pr"))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
QString tmp;
|
||||||
|
QString fragment = data.split(' ').at(3);
|
||||||
|
for(int i = 0; fragment.at(i) != '/'; ++i)
|
||||||
|
{
|
||||||
|
tmp += fragment.at(i);
|
||||||
|
}
|
||||||
|
emit recievedSDUpdate(tmp.toDouble());
|
||||||
|
*/
|
||||||
SDProgress p;
|
SDProgress p;
|
||||||
QRegExp rxp("\\d+/\\d+");
|
QRegExp rxp("\\d+/\\d+");
|
||||||
QStringList tmp;
|
QStringList tmp;
|
||||||
@ -102,17 +110,17 @@ void Parser::parse(QByteArray data)
|
|||||||
}
|
}
|
||||||
else return;
|
else return;
|
||||||
|
|
||||||
emit receivedSDUpdate(p);
|
emit recievedSDUpdate(p);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(data.startsWith("Not SD ")) emit receivedNotSDPrinting();
|
else if(data.startsWith("Not SD "));
|
||||||
else if(data.contains("Begin file list"))
|
else if(data.contains("Begin file list"))
|
||||||
{
|
{
|
||||||
SDFilesList.clear();
|
SDFilesList.clear();
|
||||||
readingFiles = true; //start reading files from SD
|
readingFiles = true; //start reading files from SD
|
||||||
}
|
}
|
||||||
//else if(data.contains("REPETIER")) emit receivedFirmware(Repetier);
|
//else if(data.contains("REPETIER")) emit recievedFirmware(Repetier);
|
||||||
//else if(data.contains("MARLIN")) emit receivedFirmware(Marlin);
|
//else if(data.contains("MARLIN")) emit recievedFirmware(Marlin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
25
parser.h
25
parser.h
@ -19,26 +19,25 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
QByteArray data;
|
QByteArray data;
|
||||||
QStringList SDFilesList;
|
QStringList SDFilesList;
|
||||||
QRegExp temperatureRegxp;
|
|
||||||
int firmware;
|
int firmware;
|
||||||
bool readingFiles;
|
bool readingFiles;
|
||||||
bool readingEEPROM;
|
bool readingEEPROM;
|
||||||
bool EEPROMReadingStarted;
|
bool EEPROMReadingStarted;
|
||||||
|
QRegExp temperatureRegxp;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void receivedTemperature(TemperatureReadings);
|
void recievedTemperature(TemperatureReadings);
|
||||||
void receivedSDUpdate(SDProgress);
|
void recievedSDUpdate(SDProgress);
|
||||||
void receivedNotSDPrinting();
|
void recievedEEPROMLine(QString);
|
||||||
void receivedEEPROMLine(QString);
|
|
||||||
void recievingEEPROMDone();
|
void recievingEEPROMDone();
|
||||||
void receivedSDFilesList(QStringList);
|
void recievedSDFilesList(QStringList);
|
||||||
void receivedOkWait();
|
void recievedOkWait();
|
||||||
void receivedOkNum(int);
|
void recievedOkNum(int);
|
||||||
void receivedStart();
|
void recievedStart();
|
||||||
void receivedResend(int);
|
void recievedResend(int);
|
||||||
void receivedError();
|
void recievedError();
|
||||||
void receivedFirmware(int);
|
void recievedFirmware(int);
|
||||||
void receivedSDDone();
|
void recievedSDDone();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void parse(QByteArray data);
|
void parse(QByteArray data);
|
||||||
|
|||||||
20
repraptor.h
20
repraptor.h
@ -1,13 +1,7 @@
|
|||||||
/////////////////////////////////////////////////
|
|
||||||
//This file contains RepRaptor - specific stuff//
|
|
||||||
/////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#ifndef REPRAPTOR_H
|
#ifndef REPRAPTOR_H
|
||||||
#define REPRAPTOR_H
|
#define REPRAPTOR_H
|
||||||
|
|
||||||
#ifndef REPRAPTOR_VERSION
|
#include <QString>
|
||||||
#define REPRAPTOR_VERSION "0.3.9"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace RepRaptor
|
namespace RepRaptor
|
||||||
{
|
{
|
||||||
@ -24,13 +18,6 @@ namespace RepRaptor
|
|||||||
OtherFirmware
|
OtherFirmware
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ErrorType
|
|
||||||
{
|
|
||||||
SerialPortError,
|
|
||||||
OpenFileError,
|
|
||||||
HardwareFailure
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int T, P;
|
int T, P;
|
||||||
@ -41,11 +28,6 @@ namespace RepRaptor
|
|||||||
{
|
{
|
||||||
unsigned long int progress, total;
|
unsigned long int progress, total;
|
||||||
} SDProgress;
|
} SDProgress;
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned int T, P;
|
|
||||||
} FileProgress;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // REPRAPTOR_H
|
#endif // REPRAPTOR_H
|
||||||
|
|||||||
12
sdwindow.cpp
12
sdwindow.cpp
@ -7,13 +7,7 @@ SDWindow::SDWindow(QStringList files, QWidget *parent) :
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
ui->fileslist->setSelectionMode(QListView::SingleSelection);
|
|
||||||
|
|
||||||
if(!files.isEmpty())
|
|
||||||
{
|
|
||||||
ui->fileslist->addItems(files);
|
ui->fileslist->addItems(files);
|
||||||
ui->fileslist->setCurrentItem(ui->fileslist->itemAt(0,0));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SDWindow::~SDWindow()
|
SDWindow::~SDWindow()
|
||||||
@ -23,11 +17,11 @@ SDWindow::~SDWindow()
|
|||||||
|
|
||||||
void SDWindow::on_buttonBox_accepted()
|
void SDWindow::on_buttonBox_accepted()
|
||||||
{
|
{
|
||||||
if(ui->fileslist->count() > 0) emit fileSelected(ui->fileslist->currentItem()->text());
|
emit fileSelected(ui->fileslist->currentItem()->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDWindow::on_fileslist_doubleClicked(const QModelIndex &)
|
void SDWindow::on_fileslist_doubleClicked(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
if(ui->fileslist->count() > 0) emit fileSelected(ui->fileslist->currentItem()->text());
|
emit fileSelected(ui->fileslist->currentItem()->text());
|
||||||
this->close();
|
this->close();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ signals:
|
|||||||
private slots:
|
private slots:
|
||||||
void on_buttonBox_accepted();
|
void on_buttonBox_accepted();
|
||||||
|
|
||||||
void on_fileslist_doubleClicked(const QModelIndex &);
|
void on_fileslist_doubleClicked(const QModelIndex &index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SDWindow *ui;
|
Ui::SDWindow *ui;
|
||||||
|
|||||||
20
sdwindow.ui
20
sdwindow.ui
@ -6,16 +6,10 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>274</width>
|
<width>249</width>
|
||||||
<height>302</height>
|
<height>246</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Print from SD</string>
|
<string>Print from SD</string>
|
||||||
</property>
|
</property>
|
||||||
@ -27,7 +21,7 @@
|
|||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Select file:</string>
|
<string>Print file:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -46,14 +40,8 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QListWidget" name="fileslist">
|
<widget class="QListWidget" name="fileslist">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="autoScroll">
|
<property name="autoScroll">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
224
sender.cpp
224
sender.cpp
@ -1,224 +0,0 @@
|
|||||||
#include "sender.h"
|
|
||||||
|
|
||||||
Sender::Sender(QObject *parent) : QObject(parent)
|
|
||||||
{
|
|
||||||
//Initial values
|
|
||||||
currentLine=0;
|
|
||||||
totalLineNum=0;
|
|
||||||
baudrate=115200;
|
|
||||||
resendNum = 0;
|
|
||||||
resending = false;
|
|
||||||
sendingChecksum=false;
|
|
||||||
paused=false;
|
|
||||||
sending=false;
|
|
||||||
readyReceive = false;
|
|
||||||
printer = new QSerialPort(this);
|
|
||||||
sendTimer = new QTimer(this);
|
|
||||||
|
|
||||||
//Fetch settings
|
|
||||||
QSettings settings(this);
|
|
||||||
sendTimer->setInterval(settings.value("core/senderinterval", 2).toInt());
|
|
||||||
sendingChecksum = settings.value("core/checksums", 0).toBool();
|
|
||||||
dtr = settings.value("core/dtr", 1).toBool();
|
|
||||||
flowcontrol = settings.value("core/flowcontrol", 0).toInt();
|
|
||||||
|
|
||||||
sendTimer->start();
|
|
||||||
|
|
||||||
connect(printer, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(receivedError(QSerialPort::SerialPortError)));
|
|
||||||
connect(printer, &QSerialPort::readyRead, this, &Sender::receivedData);
|
|
||||||
connect(sendTimer, &QTimer::timeout, this, &Sender::sendNext);
|
|
||||||
}
|
|
||||||
|
|
||||||
Sender::~Sender()
|
|
||||||
{
|
|
||||||
closePort();
|
|
||||||
sendTimer->stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Mainloop of sending
|
|
||||||
void Sender::sendNext()
|
|
||||||
{
|
|
||||||
if(printer->isWritable() && readyReceive)
|
|
||||||
{
|
|
||||||
//Checksums
|
|
||||||
if(sendingChecksum && resending)
|
|
||||||
{
|
|
||||||
if(resendNum < sentCommands.size())
|
|
||||||
{
|
|
||||||
sendLine(sentCommands.at(resendNum));
|
|
||||||
resendNum++;
|
|
||||||
}
|
|
||||||
else if(resendNum == sentCommands.size())
|
|
||||||
{
|
|
||||||
resending = false;
|
|
||||||
resendNum = 0;
|
|
||||||
}
|
|
||||||
else if(resendNum > sentCommands.size())
|
|
||||||
{
|
|
||||||
sendLine("M110 N0");
|
|
||||||
totalLineNum = 0;
|
|
||||||
resendNum = 0;
|
|
||||||
sentCommands.clear();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(!userCommands.isEmpty()) //Inject user command
|
|
||||||
{
|
|
||||||
sendLine(userCommands.dequeue());
|
|
||||||
readyReceive = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(sending && !paused) //Send line of gcode
|
|
||||||
{
|
|
||||||
FileProgress p;
|
|
||||||
if(currentLine >= gcode.size()) //check if we are at the end of array
|
|
||||||
{
|
|
||||||
sending = false;
|
|
||||||
currentLine = 0;
|
|
||||||
if(sendingChecksum) sendLine("M110 N0");
|
|
||||||
|
|
||||||
p.P = gcode.size();
|
|
||||||
p.T = gcode.size();
|
|
||||||
emit reportProgress(p);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sendLine(gcode.at(currentLine));
|
|
||||||
currentLine++;
|
|
||||||
readyReceive=false;
|
|
||||||
|
|
||||||
p.P = currentLine;
|
|
||||||
p.T = gcode.size();
|
|
||||||
emit reportProgress(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Sender::sendLine(QString line)
|
|
||||||
{
|
|
||||||
sentCommands.clear();
|
|
||||||
if(printer->isOpen())
|
|
||||||
{
|
|
||||||
if(sendingChecksum)
|
|
||||||
{
|
|
||||||
if(line.contains("M110")) totalLineNum = 0;
|
|
||||||
sentCommands.append(line);
|
|
||||||
//Checksum algorithm from RepRap wiki
|
|
||||||
line = "N"+QString::number(totalLineNum)+line+"*";
|
|
||||||
int cs = 0;
|
|
||||||
for(int i = 0; line.at(i) != '*'; i++) cs = cs ^ line.at(i).toLatin1();
|
|
||||||
cs &= 0xff;
|
|
||||||
line += QString::number(cs);
|
|
||||||
totalLineNum++;
|
|
||||||
}
|
|
||||||
if(printer->write(line.toUtf8()+'\n')) return true;
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::openPort(QSerialPortInfo i)
|
|
||||||
{
|
|
||||||
printer->setPort(i);
|
|
||||||
|
|
||||||
if(!printer->isOpen() && printer->open(QIODevice::ReadWrite))
|
|
||||||
{
|
|
||||||
//Moved here to be compatible with Qt 5.2.1
|
|
||||||
printer->setDataTerminalReady(dtr);
|
|
||||||
if(!printer->setBaudRate(baudrate))
|
|
||||||
emit baudrateSetFailed(baudrate);
|
|
||||||
printer->setFlowControl(static_cast<QSerialPort::FlowControl>(flowcontrol));
|
|
||||||
}
|
|
||||||
|
|
||||||
readyReceive = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::closePort()
|
|
||||||
{
|
|
||||||
if(printer->isOpen()) printer->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::startPrinting()
|
|
||||||
{
|
|
||||||
currentLine = 0;
|
|
||||||
paused = false;
|
|
||||||
sending = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::stopPrinting()
|
|
||||||
{
|
|
||||||
currentLine = 0;
|
|
||||||
paused = false;
|
|
||||||
sending = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::pause(bool p)
|
|
||||||
{
|
|
||||||
paused = p;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::setBaudrate(int b)
|
|
||||||
{
|
|
||||||
baudrate = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::setFile(QVector <QString> f)
|
|
||||||
{
|
|
||||||
gcode = f;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::injectCommand(QString command)
|
|
||||||
{
|
|
||||||
if(!userCommands.contains(command)) userCommands.enqueue(command);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::receivedOkWait()
|
|
||||||
{
|
|
||||||
readyReceive = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::receivedOkNum(int)
|
|
||||||
{
|
|
||||||
readyReceive = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::receivedStart()
|
|
||||||
{
|
|
||||||
readyReceive = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::flushInjectionBuffer()
|
|
||||||
{
|
|
||||||
userCommands.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::receivedResend(int r)
|
|
||||||
{
|
|
||||||
if(sendingChecksum)
|
|
||||||
{
|
|
||||||
resending = true;
|
|
||||||
resendNum = r;
|
|
||||||
}
|
|
||||||
else currentLine--;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::receivedData()
|
|
||||||
{
|
|
||||||
if(printer->canReadLine())
|
|
||||||
{
|
|
||||||
QByteArray data = printer->readLine();
|
|
||||||
if(data == "") return;
|
|
||||||
emit dataReceived(data);
|
|
||||||
//Yeah, yeah, I know. This class is called "Sender", but checking this here is faster.
|
|
||||||
if(data.startsWith("ok") || data.startsWith("wait")) readyReceive=true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Sender::receivedError(QSerialPort::SerialPortError error)
|
|
||||||
{
|
|
||||||
if(error > 0)
|
|
||||||
{
|
|
||||||
closePort();
|
|
||||||
emit errorReceived(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
71
sender.h
71
sender.h
@ -1,71 +0,0 @@
|
|||||||
#ifndef SENDER_H
|
|
||||||
#define SENDER_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QSerialPort>
|
|
||||||
#include <QSerialPortInfo>
|
|
||||||
#include <QQueue>
|
|
||||||
#include <QTimer>
|
|
||||||
#include <QSettings>
|
|
||||||
#include <QVector>
|
|
||||||
|
|
||||||
#include "repraptor.h"
|
|
||||||
|
|
||||||
using namespace RepRaptor;
|
|
||||||
|
|
||||||
class Sender : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit Sender(QObject *parent = 0);
|
|
||||||
~Sender();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
QSerialPort *printer;
|
|
||||||
QTimer *sendTimer;
|
|
||||||
long int currentLine;
|
|
||||||
long int totalLineNum;
|
|
||||||
long int resendNum;
|
|
||||||
long int baudrate;
|
|
||||||
long int flowcontrol;
|
|
||||||
bool paused;
|
|
||||||
bool sending;
|
|
||||||
bool dtr;
|
|
||||||
bool readyReceive;
|
|
||||||
bool sendingChecksum;
|
|
||||||
bool resending;
|
|
||||||
QQueue <QString> userCommands;
|
|
||||||
QStringList sentCommands;
|
|
||||||
QVector <QString> gcode;
|
|
||||||
|
|
||||||
bool sendLine(QString s);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void errorReceived(QSerialPort::SerialPortError error);
|
|
||||||
void dataReceived(QByteArray data);
|
|
||||||
void reportProgress(FileProgress p);
|
|
||||||
void baudrateSetFailed(int b);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void openPort(QSerialPortInfo i);
|
|
||||||
void closePort();
|
|
||||||
void startPrinting();
|
|
||||||
void stopPrinting();
|
|
||||||
void pause(bool p);
|
|
||||||
void setBaudrate(int b);
|
|
||||||
void setFile(QVector <QString> f);
|
|
||||||
void injectCommand(QString);
|
|
||||||
void flushInjectionBuffer();
|
|
||||||
|
|
||||||
void receivedOkWait();
|
|
||||||
void receivedOkNum(int);
|
|
||||||
void receivedStart();
|
|
||||||
void receivedResend(int r);
|
|
||||||
|
|
||||||
void sendNext();
|
|
||||||
|
|
||||||
void receivedData();
|
|
||||||
void receivedError(QSerialPort::SerialPortError error);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // SENDER_H
|
|
||||||
@ -6,27 +6,17 @@ SettingsWindow::SettingsWindow(QWidget *parent) :
|
|||||||
ui(new Ui::SettingsWindow)
|
ui(new Ui::SettingsWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->flowcontrolbox->addItem(tr("No control"));
|
|
||||||
ui->flowcontrolbox->addItem(tr("Hardware control"));
|
|
||||||
ui->flowcontrolbox->addItem(tr("Software control"));
|
|
||||||
|
|
||||||
//bool firstrun = !settings.value("core/firstrun").toBool(); //firstrun is inverted!
|
//bool firstrun = !settings.value("core/firstrun").toBool(); //firstrun is inverted!
|
||||||
|
|
||||||
settings.setParent(this);
|
ui->senderbox->setValue(settings.value("core/senderinterval", 2).toFloat());
|
||||||
ui->flowcontrolbox->setCurrentIndex(settings.value("core/flowcontrol", 0).toInt());
|
ui->echobox->setChecked(settings.value("core/echo", 0).toBool());
|
||||||
ui->senderbox->setValue(settings.value("core/senderinterval", 2).toInt());
|
|
||||||
ui->traybox->setChecked(settings.value("core/trayiconenabled", 1).toBool());
|
|
||||||
ui->statusbox->setValue(settings.value("core/statusinterval", 2000).toInt());
|
ui->statusbox->setValue(settings.value("core/statusinterval", 2000).toInt());
|
||||||
ui->bedxbox->setValue(settings.value("printer/bedx", 200).toInt());
|
ui->bedxbox->setValue(settings.value("printer/bedx", 200).toInt());
|
||||||
ui->bedybox->setValue(settings.value("printer/bedy", 200).toInt());
|
ui->bedybox->setValue(settings.value("printer/bedy", 200).toInt());
|
||||||
ui->feedrateBox->setValue(settings.value("printer/feedrate", 1500).toInt());
|
|
||||||
ui->extruderFeedrateBox->setValue(settings.value("printer/extruderfeedrate", 200).toInt());
|
|
||||||
ui->lockbox->setChecked(settings.value("core/lockcontrols", 0).toBool());
|
ui->lockbox->setChecked(settings.value("core/lockcontrols", 0).toBool());
|
||||||
ui->checksumbox->setChecked(settings.value("core/checksums", 0).toBool());
|
ui->checksumbox->setChecked(settings.value("core/checksums", 0).toBool());
|
||||||
ui->sdbox->setChecked(settings.value("core/checksdstatus", 1).toBool());
|
ui->sdbox->setChecked(settings.value("core/checksdstatus", 1).toBool());
|
||||||
ui->dtrbox->setChecked(settings.value("core/dtr", 1).toBool());
|
|
||||||
ui->supresswaitbox->setChecked(settings.value("user/supresswait").toBool());
|
|
||||||
ui->bufferbox->setValue(settings.value("core/logbuffersize", 1000).toInt());
|
|
||||||
|
|
||||||
ui->firmwarecombo->addItem("Marlin"); //0
|
ui->firmwarecombo->addItem("Marlin"); //0
|
||||||
ui->firmwarecombo->addItem("Repetier"); //1
|
ui->firmwarecombo->addItem("Repetier"); //1
|
||||||
@ -49,21 +39,13 @@ SettingsWindow::~SettingsWindow()
|
|||||||
|
|
||||||
void SettingsWindow::on_buttonBox_accepted()
|
void SettingsWindow::on_buttonBox_accepted()
|
||||||
{
|
{
|
||||||
settings.setValue("core/flowcontrol", ui->flowcontrolbox->currentIndex());
|
|
||||||
settings.setValue("core/trayiconenabled", ui->traybox->isChecked());
|
|
||||||
settings.setValue("core/senderinterval", ui->senderbox->value());
|
settings.setValue("core/senderinterval", ui->senderbox->value());
|
||||||
settings.setValue("core/statusinterval", ui->statusbox->value());
|
settings.setValue("core/statusinterval", ui->statusbox->value());
|
||||||
settings.setValue("printer/bedy", ui->bedybox->value());
|
settings.setValue("printer/bedy", ui->bedybox->value());
|
||||||
settings.setValue("printer/bedx", ui->bedxbox->value());
|
settings.setValue("printer/bedx", ui->bedxbox->value());
|
||||||
settings.setValue("printer/feedrate", ui->feedrateBox->value());
|
settings.setValue("core/echo", ui->echobox->isChecked());
|
||||||
settings.setValue("printer/extruderfeedrate", ui->extruderFeedrateBox->value());
|
|
||||||
settings.setValue("core/lockcontrols", ui->lockbox->isChecked());
|
settings.setValue("core/lockcontrols", ui->lockbox->isChecked());
|
||||||
settings.setValue("core/checksums", ui->checksumbox->isChecked());
|
settings.setValue("core/checksums", ui->checksumbox->isChecked());
|
||||||
settings.setValue("core/checksdstatus", ui->sdbox->isChecked());
|
settings.setValue("core/checksdstatus", ui->sdbox->isChecked());
|
||||||
settings.setValue("core/dtr", ui->dtrbox->isChecked());
|
|
||||||
settings.setValue("printer/firmware", ui->firmwarecombo->currentIndex());
|
settings.setValue("printer/firmware", ui->firmwarecombo->currentIndex());
|
||||||
settings.setValue("user/supresswait", ui->supresswaitbox->isChecked());
|
|
||||||
settings.setValue("core/logbuffersize", ui->bufferbox->value());
|
|
||||||
|
|
||||||
emit updatesettings();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,10 +27,6 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsWindow *ui;
|
Ui::SettingsWindow *ui;
|
||||||
|
|
||||||
signals:
|
|
||||||
void updatesettings();
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SETTINGSWINDOW_H
|
#endif // SETTINGSWINDOW_H
|
||||||
|
|||||||
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>603</width>
|
<width>253</width>
|
||||||
<height>491</height>
|
<height>386</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -18,224 +18,8 @@
|
|||||||
<normaloff>:/icons/settings.png</normaloff>:/icons/settings.png</iconset>
|
<normaloff>:/icons/settings.png</normaloff>:/icons/settings.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>200</width>
|
|
||||||
<height>400</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="currentIndex">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<widget class="QWidget" name="tab_general">
|
|
||||||
<attribute name="title">
|
|
||||||
<string>General</string>
|
|
||||||
</attribute>
|
|
||||||
<layout class="QFormLayout" name="formLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QGroupBox" name="internalGroup">
|
|
||||||
<property name="title">
|
|
||||||
<string>Internal</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="senderbox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>A good default is 2, lower = fater, higher = less CPU load. 0 would execute as soon as possible.</string>
|
|
||||||
</property>
|
|
||||||
<property name="toolTipDuration">
|
|
||||||
<number>-1</number>
|
|
||||||
</property>
|
|
||||||
<property name="locale">
|
|
||||||
<locale language="English" country="UnitedStates"/>
|
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<double>0.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<double>999.990000000000009</double>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<double>1.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>2.000000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QSpinBox" name="statusbox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>A good default is 5000. More = less interruptions, less = better temperature monitoring</string>
|
|
||||||
</property>
|
|
||||||
<property name="toolTipDuration">
|
|
||||||
<number>-1</number>
|
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1500</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>99999</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>Status</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="10" column="0">
|
|
||||||
<widget class="QCheckBox" name="checksumbox">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Checksums</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="9" column="0" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="sdbox">
|
|
||||||
<property name="text">
|
|
||||||
<string>Check SD printing status</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" colspan="3">
|
|
||||||
<widget class="QLabel" name="label_7">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>28</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>This settings are applied after restart</string>
|
|
||||||
</property>
|
|
||||||
<property name="textFormat">
|
|
||||||
<enum>Qt::AutoText</enum>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
|
||||||
<widget class="QLabel" name="label_11">
|
|
||||||
<property name="text">
|
|
||||||
<string>Flow control</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="0">
|
|
||||||
<widget class="QCheckBox" name="dtrbox">
|
|
||||||
<property name="text">
|
|
||||||
<string>DTR</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="2">
|
|
||||||
<widget class="QLabel" name="label_4">
|
|
||||||
<property name="text">
|
|
||||||
<string>ms</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="text">
|
|
||||||
<string>ms</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Sender</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="1" colspan="2">
|
|
||||||
<widget class="QComboBox" name="flowcontrolbox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="8" column="0" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="lockbox">
|
|
||||||
<property name="text">
|
|
||||||
<string>Lock controls when printing</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="0">
|
|
||||||
<widget class="QCheckBox" name="traybox">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Show tray icon</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Tray icon</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="11" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="supresswaitbox">
|
|
||||||
<property name="text">
|
|
||||||
<string>Supress "wait" responce</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QLabel" name="label_12">
|
|
||||||
<property name="text">
|
|
||||||
<string>Log buffer</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QSpinBox" name="bufferbox">
|
|
||||||
<property name="maximum">
|
|
||||||
<number>100000</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>1000</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="tab_network">
|
|
||||||
<attribute name="title">
|
|
||||||
<string>Network</string>
|
|
||||||
</attribute>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="tab_hardware">
|
|
||||||
<attribute name="title">
|
|
||||||
<string>Hardware</string>
|
|
||||||
</attribute>
|
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>20</y>
|
|
||||||
<width>249</width>
|
|
||||||
<height>171</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@ -290,50 +74,10 @@
|
|||||||
<item row="0" column="1" colspan="3">
|
<item row="0" column="1" colspan="3">
|
||||||
<widget class="QComboBox" name="firmwarecombo"/>
|
<widget class="QComboBox" name="firmwarecombo"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_9">
|
|
||||||
<property name="text">
|
|
||||||
<string>Feedrate</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1" colspan="2">
|
|
||||||
<widget class="QSpinBox" name="feedrateBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Speed of axis movements (only affect buttons)</string>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>99999</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QLabel" name="label_10">
|
|
||||||
<property name="text">
|
|
||||||
<string>Extruder
|
|
||||||
feedrate</string>
|
|
||||||
</property>
|
|
||||||
<property name="margin">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1" colspan="2">
|
|
||||||
<widget class="QSpinBox" name="extruderFeedrateBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Extruder speed (only affect buttons)</string>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>99999</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
@ -346,6 +90,140 @@ feedrate</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QGroupBox" name="internalGroup">
|
||||||
|
<property name="title">
|
||||||
|
<string>Internal</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="3" column="0" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="echobox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Show every sent command in console</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Echo commands</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="senderbox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>A good default is 2, lower = fater, higher = less CPU load. 0 would execute as soon as possible.</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTipDuration">
|
||||||
|
<number>-1</number>
|
||||||
|
</property>
|
||||||
|
<property name="locale">
|
||||||
|
<locale language="English" country="UnitedStates"/>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>0.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>999.990000000000009</double>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>2.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>ms</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Status</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QSpinBox" name="statusbox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>A good default is 5000. More = less interruptions, less = better temperature monitoring</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTipDuration">
|
||||||
|
<number>-1</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1500</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>99999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Sender</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="lockbox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Lock controls when printing</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>ms</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QCheckBox" name="checksumbox">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Checksums</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="3">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>28</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>This settings are applied after restart</string>
|
||||||
|
</property>
|
||||||
|
<property name="textFormat">
|
||||||
|
<enum>Qt::AutoText</enum>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="margin">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="sdbox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Check SD printing status</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user