diff options
| author | deva <deva> | 2010-08-13 10:07:22 +0000 | 
|---|---|---|
| committer | deva <deva> | 2010-08-13 10:07:22 +0000 | 
| commit | 51122d8689f6fbb1061ee0b19f885ad8851dfd50 (patch) | |
| tree | c0513a8df0eda183226909fccc8b38e3f6e79185 | |
| parent | c4ecebb7a1f33acb38d51a82788b071186ff3c19 (diff) | |
Clear lua when reopening a macro window.
| -rw-r--r-- | client/lua.cc | 18 | ||||
| -rw-r--r-- | client/lua.h | 2 | ||||
| -rw-r--r-- | client/macrowindow.cc | 22 | ||||
| -rw-r--r-- | client/macrowindow.h | 2 | 
4 files changed, 20 insertions, 24 deletions
| diff --git a/client/lua.cc b/client/lua.cc index 7dbdf75..3dd5381 100644 --- a/client/lua.cc +++ b/client/lua.cc @@ -75,6 +75,19 @@ LUA::LUA(Widget **rootwidget)  {    this->rootwidget = rootwidget; +  L = NULL; +  clear(); +} + +LUA::~LUA() +{ +  lua_close(L); +} + +void LUA::clear() +{ +  if(L) lua_close(L); +    L = luaL_newstate();    if(L == NULL) {      error("Could not create LUA state."); @@ -91,11 +104,6 @@ LUA::LUA(Widget **rootwidget)    register_widget(L);  } -LUA::~LUA() -{ -  lua_close(L); -} -  QString LUA::runParser(QString program)  {    if(L == NULL) { diff --git a/client/lua.h b/client/lua.h index d10aeb2..d94bd15 100644 --- a/client/lua.h +++ b/client/lua.h @@ -47,6 +47,8 @@ public:    Widget *getWidget(QString name); +  void clear(); +  private:    lua_State *L;    Widget **rootwidget; diff --git a/client/macrowindow.cc b/client/macrowindow.cc index 649f323..5a6760e 100644 --- a/client/macrowindow.cc +++ b/client/macrowindow.cc @@ -47,7 +47,7 @@ MacroWindow::MacroWindow(NetCom &n, QDomNode &xml_doc, QString templ,    : Collapser(), netcom(n)  {    mainwidget = NULL; -  this->lua = new LUA(&mainwidget); +  lua = new LUA(&mainwidget);    waschanged = false; @@ -65,7 +65,6 @@ MacroWindow::MacroWindow(NetCom &n, QDomNode &xml_doc, QString templ,  MacroWindow::~MacroWindow()  {    clear(); -  delete lua;  }  void MacroWindow::update(QDomNode &node) @@ -101,7 +100,7 @@ void MacroWindow::initMacro(QDomNode &node)    } else if(xml_elem.tagName() == "script") {      if(xml_elem.attribute("language", "lua") == "lua") { -      this->lua->runScript(xml_elem.text(), NULL, "preload"); +      lua->runScript(xml_elem.text(), NULL, "preload");      }    } else if(xml_elem.tagName() == "widgets") { @@ -118,15 +117,6 @@ void MacroWindow::initMacro(QDomNode &node)      mainwidget = window;      mainwidget->setValues(); -    /* -    QDomNodeList children = node.childNodes(); - -    // Insert their values (this must be done last for scripts to work properly) -    for (int i=0; i<children.count();i++) { -      QDomNode child = children.at(i); -      setValues(child, mainwidget); -    } -    */      if(waschanged == true) macroChanged(); @@ -188,8 +178,6 @@ void MacroWindow::expandWrapper()  {    if(!isCollapsed()) return; -  //  clear(); -    waschanged = false;    QDomDocument xml_doc = netcom.send(templ, macro); @@ -300,11 +288,11 @@ void MacroWindow::setActive(bool active)  void MacroWindow::clear()  { -  if(mainwidget) mainwidget->deleteLater(); +  if(mainwidget) delete mainwidget;    mainwidget = NULL; -  setExpandedWidget(NULL); +  lua->clear(); -  luaprograms.clear(); +  setExpandedWidget(NULL);  } diff --git a/client/macrowindow.h b/client/macrowindow.h index 3bc02f2..02370dd 100644 --- a/client/macrowindow.h +++ b/client/macrowindow.h @@ -44,8 +44,6 @@ public:                bool collapsed = true, bool compact = false);    ~MacroWindow(); -  QVector< QString > luaprograms; -                    LUA *lua;    void update(QDomNode &xml_doc); | 
