LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
LuaScript Class Reference

Widget that allows to enter and run Lua code. This widget runs the code on the selected window in CadMdiChild and display the output in the command line. More...

#include <luascript.h>

Inheritance diagram for LuaScript:
Collaboration diagram for LuaScript:

Public Member Functions

 LuaScript (QMdiArea *mdiArea, CliCommand *cliCommand)
 Create widget. More...
 
virtual ~LuaScript ()
 

Private Slots

void on_luaRun_clicked ()
 Run script. More...
 
void on_open_clicked ()
 Open file. More...
 
void on_save_clicked ()
 Save file. More...
 

Private Attributes

Ui::LuaScript * ui
 
QMdiArea * _mdiArea
 
CliCommand_cliCommand
 

Detailed Description

Widget that allows to enter and run Lua code. This widget runs the code on the selected window in CadMdiChild and display the output in the command line.

Definition at line 19 of file luascript.h.

Constructor & Destructor Documentation

LuaScript::LuaScript ( QMdiArea *  mdiArea,
CliCommand cliCommand 
)
explicit

Create widget.

Parameters
mdiAreaPointer to QMdiArea
cliCommandPointer to CliCommand

Definition at line 7 of file luascript.cpp.

7  :
8  ui(new Ui::LuaScript),
9  _mdiArea(mdiArea),
10  _cliCommand(cliCommand) {
11  ui->setupUi(this);
12 }
CliCommand * _cliCommand
Definition: luascript.h:50
QMdiArea * _mdiArea
Definition: luascript.h:49
Ui::LuaScript * ui
Definition: luascript.h:48
LuaScript::~LuaScript ( )
virtual

Definition at line 14 of file luascript.cpp.

14  {
15  delete ui;
16 }
Ui::LuaScript * ui
Definition: luascript.h:48

Member Function Documentation

void LuaScript::on_luaRun_clicked ( )
privateslot

Run script.

Definition at line 19 of file luascript.cpp.

19  {
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 }
static FILE * openFileDialog(bool isOpening, const char *description, const char *mode)
CliCommand * _cliCommand
Definition: luascript.h:50
void write(QString message)
Write a message in the logs.
Definition: clicommand.cpp:45
QMdiArea * _mdiArea
Definition: luascript.h:49
Ui::LuaScript * ui
Definition: luascript.h:48
std::shared_ptr< lc::Document > document() const
void LuaScript::on_open_clicked ( )
privateslot

Open file.

Definition at line 36 of file luascript.cpp.

36  {
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 }
Ui::LuaScript * ui
Definition: luascript.h:48
void LuaScript::on_save_clicked ( )
privateslot

Save file.

Definition at line 56 of file luascript.cpp.

56  {
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 }
Ui::LuaScript * ui
Definition: luascript.h:48

Member Data Documentation

CliCommand* LuaScript::_cliCommand
private

Definition at line 50 of file luascript.h.

QMdiArea* LuaScript::_mdiArea
private

Definition at line 49 of file luascript.h.

Ui::LuaScript* LuaScript::ui
private

Definition at line 48 of file luascript.h.


The documentation for this class was generated from the following files: