LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
qtbridge.cpp File Reference
#include "lua/qtbridge.h"
#include "luaqobject.h"
#include "luainterface.h"
Include dependency graph for qtbridge.cpp:

Go to the source code of this file.

Namespaces

 LuaIntf
 

Functions

void luaOpenQtBridge (lua_State *L)
 
void addQtBaseBindings (lua_State *L)
 
void addQtWindowBindings (lua_State *L)
 
void addQtLayoutBindings (lua_State *L)
 
void addQtWidgetsBindings (lua_State *L)
 
void addLCBindings (lua_State *L)
 
void addQtMetaTypes ()
 

Function Documentation

void addLCBindings ( lua_State *  L)

Definition at line 175 of file qtbridge.cpp.

175  {
176  LuaIntf::LuaBinding(L)
177 
178  .beginModule("lc")
179  .beginExtendClass<CadMdiChild, QWidget>("CadMdiChild")
180  .addFactory([]() {
181  return new CadMdiChild;
182  })
183  .addFunction("getSnapManager", &CadMdiChild::getSnapManager)
184  .addFunction("cursor", &CadMdiChild::cursor)
185  .addFunction("document", &CadMdiChild::document)
186  .addFunction("saveFile", &CadMdiChild::saveFile)
187  .addProperty("id", &CadMdiChild::id, &CadMdiChild::setId)
188  .addFunction("openFile", &CadMdiChild::openFile)
189  .addFunction("selection", &CadMdiChild::selection)
190  .addFunction("newDocument", &CadMdiChild::newDocument)
191  .addFunction("setDestroyCallback", &CadMdiChild::setDestroyCallback)
192  .addFunction("tempEntities", &CadMdiChild::tempEntities)
193  .addFunction("undoManager", &CadMdiChild::undoManager)
194  .addFunction("viewer", &CadMdiChild::viewer)
195  .addFunction("activeLayer", &CadMdiChild::activeLayer)
196  .addFunction("metaInfoManager", &CadMdiChild::metaInfoManager)
197  .endClass()
198 
199  .beginClass<LCViewer::Cursor>("Cursor")
200  .addFunction("position", &LCViewer::Cursor::position)
201  .endClass()
202 
203  .beginExtendClass<LCViewer::LCADViewer, QWidget>("LCADViewer")
204  .addFunction("x", &LCViewer::LCADViewer::x)
205  .addFunction("y", &LCViewer::LCADViewer::y)
206  .addFunction("autoScale", &LCViewer::LCADViewer::autoScale)
207  .addFunction("setOperationActive", &LCViewer::LCADViewer::setOperationActive)
208  .addFunction("docCanvas", &LCViewer::LCADViewer::docCanvas)
209  .endClass()
210 
211  .beginClass<LuaInterface>("LuaInterface")
212  .addFunction("luaConnect", &LuaInterface::luaConnect)
213  .addFunction("connect", &LuaInterface::qtConnect)
214  .addFunction("pluginList", &LuaInterface::pluginList)
215  .addFunction("operation", &LuaInterface::operation)
216  .addFunction("setOperation", &LuaInterface::setOperation)
217  .addFunction("registerEvent", &LuaInterface::registerEvent)
218  .addFunction("deleteEvent", &LuaInterface::deleteEvent)
219  .addFunction("triggerEvent", &LuaInterface::triggerEvent)
220  .endClass()
221 
222  .beginExtendClass<LuaScript, QDockWidget>("LuaScript")
223  .addConstructor(LUA_ARGS(QMdiArea*, CliCommand*))
224  .endClass()
225 
226  .beginClass<LCViewer::DocumentCanvas>("DocumentCanvas")
227  .addFunction("autoScale", &LCViewer::DocumentCanvas::autoScale)
228  .addFunction("selectPoint", &LCViewer::DocumentCanvas::selectPoint)
229  .endClass()
230 
231  .beginExtendClass<CliCommand, QDockWidget>("CliCommand")
232  .addConstructor(LUA_SP(std::shared_ptr<CliCommand>), LUA_ARGS(LuaIntf::_opt<QWidget*>))
233  .addFunction("addCommand", &CliCommand::addCommand)
234  .addFunction("write", &CliCommand::write, LUA_ARGS(const char*))
235  .addFunction("returnText", &CliCommand::returnText)
236  .endClass()
237 
238  .beginExtendClass<Toolbar, QDockWidget>("Toolbar")
239  .addConstructor(LUA_SP(std::shared_ptr<Toolbar>), LUA_ARGS(LuaIntf::_opt<QWidget*>))
240  .addFunction("addTab", &Toolbar::addTab)
241  .addFunction("removeTab", &Toolbar::removeTab)
242  .addFunction("tabByName", &Toolbar::tabByName)
243  .endClass()
244 
245  .beginExtendClass<ToolbarTab, QDockWidget>("ToolbarTab")
246  .addFactory([]() {
247  return new ToolbarTab();
248  })
249  .addFunction("addButton", &ToolbarTab::addButton, LUA_ARGS(QGroupBox*,
250  const char*,
251  LuaIntf::_opt<int>,
252  LuaIntf::_opt<int>,
253  LuaIntf::_opt<int>,
254  LuaIntf::_opt<int>))
255  .addFunction("addWidget", &ToolbarTab::addWidget, LUA_ARGS(QGroupBox*,
256  QWidget*,
257  LuaIntf::_opt<int>,
258  LuaIntf::_opt<int>,
259  LuaIntf::_opt<int>,
260  LuaIntf::_opt<int>))
261  .addFunction("addGroup", &ToolbarTab::addGroup)
262  .addFunction("buttonByText", &ToolbarTab::buttonByText)
263  .addFunction("groupByName", &ToolbarTab::groupByName)
264  .addFunction("removeGroup", &ToolbarTab::removeGroup)
265  .endClass()
266 
267  .beginClass<LCViewer::TempEntities>("TempEntities")
268  .addFunction("addEntity", &LCViewer::TempEntities::addEntity)
269  .addFunction("removeEntity", &LCViewer::TempEntities::removeEntity)
270  .endClass()
271 
272  .beginClass<lc::ui::MetaInfoManager>("MetaInfoManager")
273  .addFunction("metaInfo", &lc::ui::MetaInfoManager::metaInfo)
274  .endClass()
275 
276  .beginExtendClass<Layers, QDockWidget>("Layers")
277  .addFactory([]() {
278  return new Layers();
279  })
280  .addFunction("setMdiChild", &Layers::setMdiChild, LUA_ARGS(LuaIntf::_opt<CadMdiChild*>))
281  .endClass()
282 
283  .beginClass<LCViewer::SnapManagerImpl>("SnapManager")
284  .addFunction("setGridSnappable", &LCViewer::SnapManagerImpl::setGridSnappable)
285  .endClass()
286 
287  .beginExtendClass<LinePatternManager, QDialog>("LinePatternManager")
288  .addFactory([](lc::Document_SPtr document){
289  return new LinePatternManager(document);
290  })
291  .addFunction("setDocument", &LinePatternManager::setDocument)
292  .endClass()
293 
294  .beginExtendClass<lc::ui::LinePatternSelect, QComboBox>("LinePatternSelect")
295  .addFactory([](QWidget* parent, bool showByLayer, bool showByBlock){
296  return new lc::ui::LinePatternSelect(nullptr, parent, showByLayer, showByBlock);
297  })
298  .addFunction("setMdiChild", &lc::ui::LinePatternSelect::setMdiChild, LUA_ARGS(LuaIntf::_opt<CadMdiChild*>))
299  .endClass()
300 
301  .beginExtendClass<lc::ui::LineWidthSelect, QComboBox>("LineWidthSelect")
302  .addFactory([](QWidget* parent, bool showByLayer, bool showByBlock){
303  return new lc::ui::LineWidthSelect(nullptr, parent, showByLayer, showByBlock);
304  })
305  .addFunction("setMetaInfoManager",
307  LUA_ARGS(LuaIntf::_opt<lc::ui::MetaInfoManager_SPtr>)
308  )
309  .endClass()
310 
311  .beginExtendClass<lc::ui::ColorSelect, QComboBox>("ColorSelect")
312  .addFactory([](QWidget* parent, bool showByLayer, bool showByBlock){
313  return new lc::ui::ColorSelect(nullptr, parent, showByLayer, showByBlock);
314  })
315  .addFunction("setMetaInfoManager",
317  LUA_ARGS(LuaIntf::_opt<lc::ui::MetaInfoManager_SPtr>)
318  )
319  .endClass()
320 
321  .endModule();
322 }
void removeTab(QWidget *page)
Remove a tab.
Definition: toolbar.cpp:21
lc::ui::MetaInfoManager_SPtr metaInfoManager() const
Get the MetaInfo manager.
void addTab(const char *name, ToolbarTab *page)
Add a new tab.
Definition: toolbar.cpp:17
QGroupBox * addGroup(const char *name)
Add new group.
Definition: toolbartab.cpp:22
void addWidget(QGroupBox *groupBox, QWidget *widget, int x=0, int y=0, int w=0, int h=1)
Add new widget.
Definition: toolbartab.cpp:39
bool addCommand(std::string name)
Add a new command.
Definition: clicommand.cpp:33
void saveFile()
Widget used as tab for toolbar containing buttons.
Definition: toolbartab.h:19
void autoScale() const
Definition: lcadviewer.h:72
Command line widget.
Definition: clicommand.h:20
void setMdiChild(CadMdiChild *mdiChild=nullptr)
Set the window on which line pattern is applied.
LuaIntf::LuaRef operation(unsigned int windowID)
Dropdown select for line widths. Line widths are hardcoded in the constructor.
void removeGroup(QGroupBox *group)
Remove group.
Definition: toolbartab.cpp:82
std::shared_ptr< LCViewer::Cursor > cursor() const
void write(QString message)
Write a message in the logs.
Definition: clicommand.cpp:45
const LCViewer::SnapManagerImpl_SPtr & getSnapManager() const
LCViewer::LCADViewer * viewer() const
Definition: cadmdichild.h:73
void setId(unsigned int id)
Set window ID.
Widget that allows to enter and run Lua code. This widget runs the code on the selected window in Cad...
Definition: luascript.h:19
Toolbar widget, displays only ToolbarTabs.
Definition: toolbar.h:13
Create a new window which shows a list of line patterns.
bool openFile()
Load existing file.
lc::UndoManager_SPtr undoManager() const
const std::shared_ptr< DocumentCanvas > & docCanvas() const
Definition: lcadviewer.cpp:306
QPushButton * addButton(QGroupBox *groupBox, const char *buttonName, int x=0, int y=0, int w=1, int h=1)
Create a new button and add it to the page.
Definition: toolbartab.cpp:31
bool luaConnect(QObject *sender, std::string signalName, LuaIntf::LuaRef slot)
Connect Qt signal with Lua function.
LCViewer::TempEntities_SPtr tempEntities()
Get container of temporary entities.
ToolbarTab * tabByName(const char *name)
Get existing tab.
Definition: toolbar.cpp:30
std::vector< lc::entity::CADEntity_CSPtr > selection()
Get selected entities.
unsigned int id()
Get window ID.
void triggerEvent(const std::string &event, LuaIntf::LuaRef args)
bool qtConnect(QObject *sender, std::string signalName, QObject *receiver, std::string slotName)
Connect Qt signal with Qt slot.
void setOperation(unsigned int windowID, LuaIntf::LuaRef)
Widget which shows a list of layers.
Definition: layers.h:22
void setMdiChild(CadMdiChild *mdiChild=nullptr)
Set new document.
Definition: layers.cpp:29
Lua initializer.
Definition: luainterface.h:29
void newDocument()
Create a new document.
Definition: cadmdichild.cpp:74
void setDocument(lc::Document_SPtr document)
Set a new document and update the list of line patterns. Document can be set to nullptr to clear the ...
void setMetaInfoManager(lc::ui::MetaInfoManager_SPtr metaInfoManager=nullptr)
Set the MetaInfo manager.
Definition: colorselect.cpp:86
void registerEvent(const std::string &event, LuaIntf::LuaRef callback)
MetaInfo_CSPtr metaInfo()
Generate new pointer to MetaInfo.
Dropdown select for DxfLinePatterns.
std::shared_ptr< lc::Document > document() const
QPushButton * buttonByText(QGroupBox *groupBox, const char *buttonText)
Get existing button.
Definition: toolbartab.cpp:68
void returnText(bool returnText)
Return raw text to Lua.
Definition: clicommand.cpp:198
void setOperationActive(bool operationActive)
Definition: lcadviewer.cpp:246
void setDestroyCallback(LuaIntf::LuaRef callback)
Give function to call when window is destroyed.
void deleteEvent(const std::string &event, LuaIntf::LuaRef callback)
std::vector< std::string > pluginList(const char *path)
Return a list of plugins.
void setMetaInfoManager(lc::ui::MetaInfoManager_SPtr metaInfoManager)
Set the MetaInfo manager.
lc::Layer_CSPtr activeLayer() const
Get the selected layer.
QGroupBox * groupByName(const char *groupName)
Get existing group.
Definition: toolbartab.cpp:54
void addQtBaseBindings ( lua_State *  L)

Definition at line 19 of file qtbridge.cpp.

19  {
20  LuaIntf::LuaBinding(L)
21 
22  .beginModule("qt")
23  .addFunction("loadUi", &LuaInterface::loadUiFile)
24 
25  .beginClass<QObject>("QObject")
26  .addConstructor(LUA_ARGS())
27  .addFunction("findChild", [](QObject* object, std::string name) {
28  return LuaQObject::findChild(object, name);
29  })
30  .addStaticFunction("tr", &QObject::tr, LUA_ARGS(const char*, LuaIntf::_opt<const char*>, LuaIntf::_opt<int>))
31  .endClass()
32 
33  .beginExtendClass<QWidget, QObject>("QWidget")
34  .addConstructor(LUA_ARGS())
35  .addFunction("addAction", &QWidget::addAction)
36  .addFunction("setWindowTitle", &QWidget::setWindowTitle)
37  .addFunction("show", &QWidget::show)
38  .addFunction("showMaximized", &QWidget::showMaximized)
39  .endClass()
40 
41  .beginClass<QString>("QString")
42  .addConstructor(LUA_ARGS(const char*))
43  .addFunction("isEmpty", &QString::isEmpty)
44  .addFunction("toStdString", &QString::toStdString)
45  .endClass()
46 
47  .beginExtendClass<QAction, QObject>("QAction")
48  .addConstructor(LUA_ARGS(LuaIntf::_opt<QObject*>))
49  .addFunction("setText", &QAction::setText)
50  .addFunction("setIcon", &QAction::setIcon)
51  .endClass()
52 
53  .beginClass<QIcon>("QIcon")
54  .addConstructor(LUA_ARGS(QString))
55  .endClass()
56 
57  .beginClass<QSize>("QSize")
58  .addConstructor(LUA_ARGS(int, int))
59  .endClass()
60  .endModule();
61 }
static std::shared_ptr< QWidget > loadUiFile(const char *fileName)
Load Qt widget from .ui file.
QObject * findChild(std::string name)
Find children by name.
Definition: luaqobject.cpp:86
void addQtLayoutBindings ( lua_State *  L)

Definition at line 127 of file qtbridge.cpp.

127  {
128  LuaIntf::LuaBinding(L)
129 
130  .beginModule("qt")
131  .beginExtendClass<QLayout, QWidget>("QLayout")
132  .addFunction("addWidget", &QLayout::addWidget)
133  .addFunction("count", &QLayout::count)
134  .endClass()
135 
136  .beginExtendClass<QBoxLayout, QLayout>("QBoxLayout")
137  .endClass()
138 
139  .beginExtendClass<QHBoxLayout, QBoxLayout>("QHBoxLayout")
140  .addConstructor(LUA_ARGS())
141  .endClass()
142 
143  .beginExtendClass<QVBoxLayout, QBoxLayout>("QVBoxLayout")
144  .addConstructor(LUA_ARGS())
145  .endClass()
146 
147  .beginExtendClass<QGroupBox, QWidget>("QGroupBox")
148  .endClass()
149  .endModule();
150 }
void addQtMetaTypes ( )

Definition at line 325 of file qtbridge.cpp.

325  {
326  qRegisterMetaType<lc::geo::Coordinate>();
327 }
void addQtWidgetsBindings ( lua_State *  L)

Definition at line 152 of file qtbridge.cpp.

152  {
153  LuaIntf::LuaBinding(L)
154 
155  .beginModule("qt")
156  .beginExtendClass<QAbstractButton, QWidget>("QAbstractButton")
157  .addFunction("setIcon", &QAbstractButton::setIcon)
158  .addFunction("setIconSize", &QAbstractButton::setIconSize)
159  .addFunction("setCheckable", &QAbstractButton::setCheckable)
160  .endClass()
161 
162  .beginExtendClass<QComboBox, QWidget>("QComboBox")
163  .endClass()
164 
165  .beginExtendClass<QPushButton, QAbstractButton>("QPushButton")
166  .addFactory([](QString name) {
167  return new QPushButton(name);
168  })
169  .addFunction("setFlat", &QPushButton::setFlat)
170  .addFunction("setMenu", &QPushButton::setMenu)
171  .endClass()
172  .endModule();
173 }
void addQtWindowBindings ( lua_State *  L)

Definition at line 63 of file qtbridge.cpp.

63  {
64  LuaIntf::LuaBinding(L)
65 
66  .beginModule("qt")
67  .beginExtendClass<QMainWindow, QWidget>("QMainWindow")
68  .addConstructor(LUA_ARGS())
69  .addFunction("addDockWidget", static_cast<void (QMainWindow::*)(Qt::DockWidgetArea, QDockWidget *)>(&QMainWindow::addDockWidget))
70  .addFunction("menuBar", &QMainWindow::menuBar)
71  .addFunction("centralWidget", &QMainWindow::centralWidget)
72  .addFunction("setCentralWidget", &QMainWindow::setCentralWidget)
73  .addFunction("setUnifiedTitleAndToolBarOnMac", &QMainWindow::setUnifiedTitleAndToolBarOnMac)
74  .endClass()
75 
76  .beginExtendClass<QMenuBar, QWidget>("QMenuBar")
77  .addFunction("clear", &QMenuBar::clear)
78  .addFunction("addMenu", static_cast<QAction* (QMenuBar::*)(QMenu*)>(&QMenuBar::addMenu))
79  .addFunction("addMenuStr", static_cast<QMenu* (QMenuBar::*)(const QString&)>(&QMenuBar::addMenu))
80  .endClass()
81 
82  .beginExtendClass<QMenu, QWidget>("QMenu")
83  .addFactory([]() {
84  return new QMenu();
85  })
86  .addFunction("setTitle", &QMenu::setTitle)
87  .addFunction("addActionStr", static_cast<QAction* (QMenu::*)(const QString&)>(&QMenu::addAction))
88  .endClass()
89 
90  .beginExtendClass<QFrame, QWidget>("QFrame")
91  .endClass()
92 
93  .beginExtendClass<QAbstractScrollArea, QFrame>("QAbstractScrollArea")
94  .addFunction("setHorizontalScrollBarPolicy", &QAbstractScrollArea::setHorizontalScrollBarPolicy)
95  .addFunction("setVerticalScrollBarPolicy", &QAbstractScrollArea::setVerticalScrollBarPolicy)
96  .endClass()
97 
98  .beginExtendClass<QMdiArea, QAbstractScrollArea>("QMdiArea")
99  .addFunction("activeSubWindow", &QMdiArea::activeSubWindow)
100  .addFunction("addSubWindow", [](QMdiArea* mdiArea, QWidget* subWindow) {
101  return mdiArea->addSubWindow(subWindow);
102  })
103  .addFunction("subWindowList", &QMdiArea::subWindowList)
104  .endClass()
105 
106  .beginExtendClass<QMdiSubWindow, QWidget>("QMdiSubWindow")
107  .addFunction("widget", &QMdiSubWindow::widget)
108  .endClass()
109 
110  .beginExtendClass<QDialog, QWidget>("QDialog")
111  .endClass()
112 
113  .beginExtendClass<QFileDialog, QDialog>("QFileDialog")
114  .addStaticFunction("getOpenFileName", [](QWidget *parent, QString& caption, QString& dir, QString& filter) {
115  return QFileDialog::getOpenFileName(parent, caption, dir, filter);
116  })
117  .addStaticFunction("getSaveFileName", [](QWidget *parent, QString& caption, QString& dir, QString& filter) {
118  return QFileDialog::getSaveFileName(parent, caption, dir, filter);
119  })
120  .endClass()
121 
122  .beginExtendClass<QDockWidget, QWidget>("QDockWidget")
123  .endClass()
124  .endModule();
125 }
void luaOpenQtBridge ( lua_State *  L)

Definition at line 10 of file qtbridge.cpp.

10  {
15  addLCBindings(L);
17 }
void addLCBindings(lua_State *L)
Definition: qtbridge.cpp:175
void addQtMetaTypes()
Definition: qtbridge.cpp:325
void addQtWindowBindings(lua_State *L)
Definition: qtbridge.cpp:63
void addQtBaseBindings(lua_State *L)
Definition: qtbridge.cpp:19
void addQtLayoutBindings(lua_State *L)
Definition: qtbridge.cpp:127
void addQtWidgetsBindings(lua_State *L)
Definition: qtbridge.cpp:152