Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 344 → Rev 345

/Misc Projects/PcMarlinInterface/MacroController.cpp
0,0 → 1,147
#include "MacroController.h"
 
MacroController::MacroController(QWidget *parent) : QWidget(parent)
{
sigMapper = new QSignalMapper();
 
btnExport = new QPushButton("&Export");
btnImport = new QPushButton("&Import");
btnIncreaseMacro = new QPushButton("&Add");
btnDecreaseMacro = new QPushButton("&Remove");
 
mainLayout = new QGridLayout();
 
macroCount = 0;
connected = false;
 
ioLayout = new QHBoxLayout();
ioLayout->addStretch();
ioLayout->addWidget(btnIncreaseMacro);
ioLayout->addWidget(btnDecreaseMacro);
ioLayout->addWidget(btnExport);
ioLayout->addWidget(btnImport);
mainLayout->addLayout(ioLayout, 0, 0, 1, 2);
 
for (int i = 0; i < MACRO_DEFAULT_COUNT; i++) {
Macro_AddEntry();
}
 
setLayout(mainLayout);
this->resize(this->minimumSizeHint());
 
connect(btnIncreaseMacro, SIGNAL(clicked()), this, SLOT(Macro_AddEntry()));
connect(btnDecreaseMacro, SIGNAL(clicked()), this, SLOT(Macro_RemoveEntry()));
connect(btnExport, SIGNAL(clicked()), this, SLOT(Macro_WriteToFile()));
connect(btnImport, SIGNAL(clicked()), this, SLOT(Macro_ReadFromFile()));
connect(sigMapper, SIGNAL(mapped(QWidget*)), this, SLOT(Macro_InitTransmit(QWidget*)));
 
setWindowTitle("Macro Settings");
}
 
MacroController::~MacroController()
{
 
}
 
void MacroController::Macro_EnableTransmit()
{
connected = true;
for (int i = 0; i < macroBtnList.size(); i++) {
macroBtnList[i]->setEnabled(true);
}
}
 
void MacroController::Macro_DisableTransmit()
{
connected = false;
for (int i = 0; i < macroBtnList.size(); i++) {
macroBtnList[i]->setEnabled(false);
}
}
 
void MacroController::Macro_InitTransmit(QWidget *t)
{
QTextEdit *text = qobject_cast<QTextEdit*>(t);
emit Macro_TransmitText(text->toPlainText());
}
 
void MacroController::Macro_AddEntry()
{
macroCount++;
 
// Create new layout/widgets
QLineEdit *lineEdit = new QLineEdit(QString("Macro %1").arg(macroCount));
lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
lineEdit->setAlignment(Qt::AlignCenter | Qt::AlignTop);
macroNameList.append(lineEdit);
 
QTextEdit *textEdit = new QTextEdit();
textEdit->setMinimumHeight(50);
textEdit->setWordWrapMode(QTextOption::NoWrap);
textEdit->setFont(QFont("Consolas", 8));
textEdit->setAcceptRichText(false);
macroValueList.append(textEdit);
 
QPushButton *pushButton = new QPushButton("Send Macro");
pushButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
pushButton->setEnabled(connected);
macroBtnList.append(pushButton);
 
QVBoxLayout *tmpLayout = new QVBoxLayout();
tmpLayout->addWidget(lineEdit);
tmpLayout->addWidget(pushButton);
 
// Add layout/widgets to main layout
mainLayout->addLayout(tmpLayout, macroCount, 0);
mainLayout->addWidget(textEdit, macroCount, 1);
mainLayout->setColumnStretch(1, 1);
 
// Associate PushButton with its corresponding TextEdit
sigMapper->setMapping(pushButton, textEdit);
connect(pushButton, SIGNAL(clicked()), sigMapper, SLOT(map()));
 
QLayoutItem *item = mainLayout->itemAtPosition(1, 1);
int height = item->widget()->height();
this->resize(this->width(), this->height() + height + 8);
 
btnDecreaseMacro->setEnabled(true);
}
 
void MacroController::Macro_RemoveEntry()
{
 
// Remove and delete layout/widgets at last macro slot
QLayoutItem *item = mainLayout->itemAtPosition(macroCount, 0);
while(!item->isEmpty())
delete item->layout()->takeAt(0)->widget();
delete item;
 
item = mainLayout->itemAtPosition(macroCount, 1);
int height = item->widget()->height();
delete item->widget();
 
// Unmap and remove widgets from lists
QPushButton *pushButton = macroBtnList.back();
sigMapper->removeMappings(pushButton);
 
macroNameList.pop_back();
macroValueList.pop_back();
macroBtnList.pop_back();
 
macroCount--;
 
this->resize(this->width(), this->height() - height - 8);
 
if (macroCount == 1)
btnDecreaseMacro->setEnabled(false);
}
 
void MacroController::Macro_WriteToFile()
{
 
}
 
void MacroController::Macro_ReadFromFile()
{
 
}