void CMLuaOptions::OnScriptListClick(CCtrlListView::TEventInfo *evt) { LVITEM lvi = { 0 }; lvi.iItem = evt->nmlvia->iItem; if (lvi.iItem == -1) return; lvi.pszText = (LPTSTR)mir_calloc(MAX_PATH * sizeof(TCHAR)); lvi.cchTextMax = MAX_PATH; lvi.mask = LVIF_GROUPID | LVIF_TEXT | LVIF_PARAM; evt->treeviewctrl->GetItem(&lvi); lvi.iSubItem = evt->nmlvia->iSubItem; CMLuaScript* script = (CMLuaScript*)lvi.lParam; switch (lvi.iSubItem) { case 1: ShellExecute(m_hwnd, _T("Open"), script->GetFilePath(), NULL, NULL, SW_SHOWNORMAL); break; case 2: //m_scripts.DeleteItem(evt->nmlvia->iItem); script->Unload(); script->Load(); lvi.mask = LVIF_IMAGE; lvi.iSubItem = 0; lvi.iImage = script->GetStatus() - 1; ListView_SetItem(m_scripts.GetHwnd(), &lvi); m_scripts.Update(evt->nmlvia->iItem); break; } mir_free(lvi.pszText); }
void CMLua::Unload() { Log("Unloading lua engine"); while (int last = Scripts.getCount()) { CMLuaScript* script = g_mLua->Scripts[last - 1]; Scripts.remove(script); script->Unload(); delete script; } ::KillModuleScheduleTasks(); ::KillModuleMBButtons(); ::KillModuleTTBButton(); ::KillModuleIcons(hLangpack); ::KillModuleSounds(hLangpack); ::KillModuleMenus(hLangpack); ::KillModuleHotkeys(hLangpack); ::KillObjectEventHooks(L); ::KillObjectServices(L); lua_close(L); }