Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 350 → Rev 351

/Misc Projects/PcMarlinInterface/MainWindow.cpp
7,49 → 7,6
centralWidget = new QWidget();
setCentralWidget(centralWidget);
 
// Serial connection UI
groupSerialInit = new QGroupBox("Initialization");
btnSerialConnect = new QPushButton("&Connect");
btnSerialRefresh = new QPushButton("&Refresh");
labelSerialPort = new QLabel("Serial Port:");
labelSerialSpeed = new QLabel("Baud Rate:");
labelSerialDataBits = new QLabel("Data:");
labelSerialStopBits = new QLabel("Stop:");
labelSerialParity = new QLabel("Parity Bit:");
labelSerialFlowControl = new QLabel("Flow Control:");
cboxSerialPort = new QComboBox();
cboxSerialPort->setMinimumWidth(80);
cboxSerialSpeed = new QComboBox();
cboxSerialSpeed->setEditable(true);
cboxSerialSpeed->setValidator(new QIntValidator(0, 100000000, this));
cboxSerialDataBits = new QComboBox();
cboxSerialDataBits->setMaximumWidth(60);
cboxSerialStopBits = new QComboBox();
cboxSerialStopBits->setMaximumWidth(60);
cboxSerialParity = new QComboBox();
cboxSerialFlowControl = new QComboBox();
cboxSerialFlowControl->setMinimumWidth(70);
 
QGridLayout *serialSettingsLayout = new QGridLayout();
serialSettingsLayout->addWidget(btnSerialConnect, 0, 0);
serialSettingsLayout->addWidget(labelSerialPort, 0, 1);
serialSettingsLayout->addWidget(cboxSerialPort, 0, 2);
serialSettingsLayout->addWidget(labelSerialDataBits, 0, 3);
serialSettingsLayout->addWidget(cboxSerialDataBits, 0, 4);
serialSettingsLayout->addWidget(labelSerialParity, 0, 5);
serialSettingsLayout->addWidget(cboxSerialParity, 0, 6);
 
serialSettingsLayout->addWidget(btnSerialRefresh, 1, 0);
serialSettingsLayout->addWidget(labelSerialSpeed, 1, 1);
serialSettingsLayout->addWidget(cboxSerialSpeed, 1, 2);
serialSettingsLayout->addWidget(labelSerialStopBits, 1, 3);
serialSettingsLayout->addWidget(cboxSerialStopBits, 1, 4);
serialSettingsLayout->addWidget(labelSerialFlowControl, 1, 5);
serialSettingsLayout->addWidget(cboxSerialFlowControl, 1, 6);
 
groupSerialInit->setLayout(serialSettingsLayout);
groupSerialInit->setFixedSize(groupSerialInit->sizeHint());
 
// Serial data UI
groupSerialData = new QGroupBox("Data");
textSerialData = new QTextEdit();
71,7 → 28,6
serialDataLayout->addLayout(serialTransmitLayout);
groupSerialData->setLayout(serialDataLayout);
 
 
// Macro controller
groupMacro = new QGroupBox("Other");
btnMacro = new QPushButton("&Macros");
78,36 → 34,17
QHBoxLayout *macroLayout = new QHBoxLayout();
macroLayout->addWidget(btnMacro);
groupMacro->setLayout(macroLayout);
// groupMacro->setFixedSize(groupMacro->sizeHint());
 
 
// Main layout
QGridLayout *mainLayout = new QGridLayout();
mainLayout->addWidget(groupSerialInit, 0, 0, 1, 1, Qt::AlignLeft);
mainLayout->addWidget(groupMacro, 0, 1, 1, 1, Qt::AlignLeft);
mainLayout->addWidget(groupSerialData, 1, 0, 1, 2);
mainLayout->setColumnStretch(0, 0);
mainLayout->setColumnStretch(1, 1);
centralWidget->setLayout(mainLayout);
 
// Initialize thread for connection to serial port
serialThread = new QThread();
// Initialize serial controller
serialController = new SerialController();
serialController->moveToThread(serialThread);
connect(this, SIGNAL(Serial_QueryParameters()), serialController, SLOT(Serial_QueryParameters()));
connect(this, SIGNAL(Serial_Connect(QString,QString,QString,QString,QString,QString)),
serialController, SLOT(Serial_Connect(QString,QString,QString,QString,QString,QString)));
connect(this, SIGNAL(Serial_Disconnect()), serialController, SLOT(Serial_Disconnect()));
connect(this, SIGNAL(Serial_TransmitString(QString)), serialController, SLOT(Serial_TransmitString(QString)));
connect(serialController, SIGNAL(Serial_UpdateParameters(QStringList,QStringList,QStringList,QStringList,QStringList,QStringList)),
this, SLOT(Serial_UpdateParameters(QStringList,QStringList,QStringList,QStringList,QStringList,QStringList)));
connect(serialController, SIGNAL(Serial_ReceivedString(QString)), this, SLOT(Serial_ReceivedString(QString)));
connect(serialController, SIGNAL(Serial_Connected()), this, SLOT(Serial_Connected()));
connect(serialController, SIGNAL(Serial_Disconnected()), this, SLOT(Serial_Disconnected()));
connect(serialThread, SIGNAL(finished()), serialController, SLOT(deleteLater()));
serialThread->start();
groupSerialInit = new QGroupBox("Serial Connection");
QGridLayout *serialInitLayout = new QGridLayout();
serialInitLayout->setContentsMargins(0, 0, 0, 0);
serialInitLayout->addWidget(serialController);
groupSerialInit->setLayout(serialInitLayout);
connect(serialController, SIGNAL(UpdateStatus(QString)), this, SLOT(UpdateSerialStatus(QString)));
 
// Initialize macro widget
// Initialize macro controller
macroDockWidget = new QDockWidget("Macro Controller", this);
macroController = new MacroController(macroDockWidget);
macroDockWidget->setWidget(macroController);
119,35 → 56,31
connect(serialController, SIGNAL(Serial_Disconnected()), macroController, SLOT(Macro_DisableTransmit()));
 
// Connect local widgets
connect(btnSerialConnect, SIGNAL(clicked()), this, SLOT(Serial_ConnectToggleBtn()));
connect(btnSerialRefresh, SIGNAL(clicked()), this, SIGNAL(Serial_QueryParameters()));
connect(btnSerialTransmit, SIGNAL(clicked()), this, SLOT(Serial_PrepareTransmit()));
connect(textSerialTransmit, SIGNAL(returnPressed()), btnSerialTransmit, SIGNAL(clicked()));
connect(btnSerialClear, SIGNAL(clicked()), this, SLOT(Serial_ClearBtn()));
connect(btnMacro, SIGNAL(clicked()), macroDockWidget->toggleViewAction(), SLOT(trigger()));
 
emit Serial_QueryParameters();
Serial_Disconnected();
// Main layout
QGridLayout *mainLayout = new QGridLayout();
mainLayout->addWidget(groupSerialInit, 0, 0, 1, 1, Qt::AlignLeft);
mainLayout->addWidget(groupMacro, 0, 1, 1, 1, Qt::AlignLeft);
mainLayout->addWidget(groupSerialData, 1, 0, 1, 2);
mainLayout->setColumnStretch(0, 0);
mainLayout->setColumnStretch(1, 1);
centralWidget->setLayout(mainLayout);
 
setWindowTitle("Marlin Controller");
setWindowIcon(QIcon(":/External/Resources/Icon_16.bmp"));
 
statusSerial = new QLabel("Serial Status: Disconnected");
statusSerial->setMinimumWidth(300);
statusBar()->addPermanentWidget(statusSerial);
}
 
MainWindow::~MainWindow()
{
serialThread->quit();
}
 
void MainWindow::Serial_ConnectToggleBtn()
{
if (serialController->connected) {
emit Serial_Disconnect();
} else {
if (cboxSerialPort->currentText() != "" && cboxSerialSpeed->currentText() != "") {
emit Serial_Connect(cboxSerialPort->currentText(), cboxSerialSpeed->currentText(), cboxSerialDataBits->currentText(),
cboxSerialStopBits->currentText(), cboxSerialParity->currentText(), cboxSerialFlowControl->currentText());
}
}
}
 
void MainWindow::Serial_PrepareTransmit(QString string)
170,41 → 103,6
textSerialData->clear();
}
 
void MainWindow::Serial_UpdateParameters(QStringList ports, QStringList speeds, QStringList dataBits,
QStringList stopBits, QStringList parity, QStringList flowControl)
{
QString currPort = cboxSerialPort->currentText();
cboxSerialPort->clear();
cboxSerialPort->addItems(ports);
if (currPort != "" && ports.contains(currPort))
cboxSerialPort->setCurrentText(currPort);
 
QString currSpeed = cboxSerialSpeed->currentText();
cboxSerialSpeed->clear();
cboxSerialSpeed->addItems(speeds);
if (currSpeed != "") cboxSerialSpeed->setCurrentText(currSpeed);
 
int currData = cboxSerialDataBits->currentIndex();
cboxSerialDataBits->clear();
cboxSerialDataBits->addItems(dataBits);
if (currData >= 0) cboxSerialDataBits->setCurrentIndex(currData);
 
int currStop = cboxSerialStopBits->currentIndex();
cboxSerialStopBits->clear();
cboxSerialStopBits->addItems(stopBits);
if (currStop >= 0) cboxSerialStopBits->setCurrentIndex(currStop);
 
int currParity = cboxSerialParity->currentIndex();
cboxSerialParity->clear();
cboxSerialParity->addItems(parity);
if (currParity >= 0) cboxSerialParity->setCurrentIndex(currParity);
 
int currFlow = cboxSerialFlowControl->currentIndex();
cboxSerialFlowControl->clear();
cboxSerialFlowControl->addItems(flowControl);
if (currFlow >= 0) cboxSerialFlowControl->setCurrentIndex(currFlow);
}
 
void MainWindow::Serial_ReceivedString(QString string)
{
textSerialData->setTextColor(Qt::darkRed);
211,30 → 109,12
textSerialData->append("RX: " + string);
}
 
void MainWindow::Serial_Connected()
void MainWindow::UpdateStatus(QString string)
{
btnSerialConnect->setText("&Disconnect");
cboxSerialPort->setEnabled(false);
cboxSerialSpeed->setEnabled(false);
cboxSerialDataBits->setEnabled(false);
cboxSerialStopBits->setEnabled(false);
cboxSerialParity->setEnabled(false);
cboxSerialFlowControl->setEnabled(false);
btnSerialRefresh->setEnabled(false);
textSerialTransmit->setEnabled(true);
btnSerialTransmit->setEnabled(true);
statusBar()->showMessage(string, STATUS_TIMEOUT_MS);
}
 
void MainWindow::Serial_Disconnected()
void MainWindow::UpdateSerialStatus(QString string)
{
btnSerialConnect->setText("&Connect");
cboxSerialPort->setEnabled(true);
cboxSerialSpeed->setEnabled(true);
cboxSerialDataBits->setEnabled(true);
cboxSerialStopBits->setEnabled(true);
cboxSerialParity->setEnabled(true);
cboxSerialFlowControl->setEnabled(true);
btnSerialRefresh->setEnabled(true);
textSerialTransmit->setEnabled(false);
btnSerialTransmit->setEnabled(false);
statusSerial->setText(string);
}