LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
luascript.cpp
Go to the documentation of this file.
1 #include "luascript.h"
2 #include "ui_luascript.h"
3 
4 #include <lclua.h>
5 #include <luainterface.h>
6 
7 LuaScript::LuaScript(QMdiArea* mdiArea, CliCommand* cliCommand) :
8  ui(new Ui::LuaScript),
9  _mdiArea(mdiArea),
10  _cliCommand(cliCommand) {
11  ui->setupUi(this);
12 }
13 
15  delete ui;
16 }
17 
18 
20  if (QMdiSubWindow* activeSubWindow = _mdiArea->activeSubWindow()) {
21  CadMdiChild* mdiChild = qobject_cast<CadMdiChild*>(activeSubWindow->widget());
22 
23  auto luaState = LuaIntf::LuaState::newState();
24  auto lcLua = lc::LCLua(luaState);
25  lcLua.setF_openFileDialog(&LuaInterface::openFileDialog);
26  lcLua.addLuaLibs();
27  lcLua.importLCKernel();
28  lcLua.setDocument(mdiChild->document());
29 
30  auto out = lcLua.runString(ui->luaInput->toPlainText().toStdString().c_str());
31 
32  _cliCommand->write(QString::fromStdString(out));
33  }
34 }
35 
37  auto fileName = QFileDialog::getOpenFileName(
38  0,
39  tr("Open File"),
40  QString(),
41  tr("Lua (*.lua)")
42  );
43 
44  if(!fileName.isEmpty()) {
45  QFile file(fileName);
46 
47  file.open(QFile::ReadOnly | QFile::Text);
48  QTextStream stream(&file);
49 
50  ui->luaInput->setPlainText(stream.readAll());
51 
52  file.close();
53  }
54 }
55 
57  auto fileName = QFileDialog::getSaveFileName(
58  0,
59  tr("Save File"),
60  QString(),
61  tr("Lua (*.lua)")
62  );
63 
64  if(!fileName.isEmpty()) {
65  QFile file(fileName);
66 
67  file.open(QFile::WriteOnly | QFile::Text);
68  QTextStream stream(&file);
69 
70  stream << ui->luaInput->toPlainText();
71 
72  file.close();
73  }
74 }
static FILE * openFileDialog(bool isOpening, const char *description, const char *mode)
void on_save_clicked()
Save file.
Definition: luascript.cpp:56
Command line widget.
Definition: clicommand.h:20
CliCommand * _cliCommand
Definition: luascript.h:50
void on_luaRun_clicked()
Run script.
Definition: luascript.cpp:19
void write(QString message)
Write a message in the logs.
Definition: clicommand.cpp:45
virtual ~LuaScript()
Definition: luascript.cpp:14
Widget that allows to enter and run Lua code. This widget runs the code on the selected window in Cad...
Definition: luascript.h:19
QMdiArea * _mdiArea
Definition: luascript.h:49
Ui::LuaScript * ui
Definition: luascript.h:48
LuaScript(QMdiArea *mdiArea, CliCommand *cliCommand)
Create widget.
Definition: luascript.cpp:7
std::shared_ptr< lc::Document > document() const
void on_open_clicked()
Open file.
Definition: luascript.cpp:36