mirror of https://github.com/odrling/Aegisub
Auto4: Autoreload scripts on export, correctly save loaded scripts to subs file, make io and os libs available to scripts
Originally committed to SVN as r842.
This commit is contained in:
parent
329821ed7c
commit
91f0533a67
|
@ -198,6 +198,8 @@ namespace Automation4 {
|
|||
lua_pushcfunction(L, luaopen_string); lua_call(L, 0, 0);
|
||||
lua_pushcfunction(L, luaopen_table); lua_call(L, 0, 0);
|
||||
lua_pushcfunction(L, luaopen_math); lua_call(L, 0, 0);
|
||||
lua_pushcfunction(L, luaopen_io); lua_call(L, 0, 0);
|
||||
lua_pushcfunction(L, luaopen_os); lua_call(L, 0, 0);
|
||||
_stackcheck.check(0);
|
||||
// dofile and loadfile are replaced with include
|
||||
lua_pushnil(L);
|
||||
|
|
|
@ -186,7 +186,7 @@ void DialogAutomation::OnAdd(wxCommandEvent &evt)
|
|||
catchall.RemoveLast();
|
||||
}
|
||||
if (factories.size() > 1) {
|
||||
fnfilter = _T("All script formats|") + catchall + _T("|") + fnfilter;
|
||||
fnfilter = _T("All supported scripts|") + catchall + _T("|") + fnfilter;
|
||||
}
|
||||
|
||||
wxString fname = wxFileSelector(_("Add Automation script"), Options.AsText(_T("Last open automation path")), wxEmptyString, wxEmptyString, fnfilter, wxOPEN|wxFILE_MUST_EXIST, this);
|
||||
|
@ -272,13 +272,13 @@ void DialogAutomation::OnInfo(wxCommandEvent &evt)
|
|||
}
|
||||
|
||||
if (ei) {
|
||||
info += wxString::Format(_("\nScript info:\nName: %s\nDescription: %s\nAuthor: %s\nVersion: %s\nFull path: %s\nCorrectly initialised: %s"),
|
||||
info += wxString::Format(_("\nScript info:\nName: %s\nDescription: %s\nAuthor: %s\nVersion: %s\nFull path: %s\nState: %s"),
|
||||
ei->script->GetName().c_str(),
|
||||
ei->script->GetDescription().c_str(),
|
||||
ei->script->GetAuthor().c_str(),
|
||||
ei->script->GetVersion().c_str(),
|
||||
ei->script->GetFilename().c_str(),
|
||||
ei->script->GetLoadedState() ? _("Yes") : _("No"));
|
||||
ei->script->GetLoadedState() ? _("Correctly loaded") : _("Failed to load"));
|
||||
}
|
||||
|
||||
wxMessageBox(info, _("Automation Script Info"));
|
||||
|
|
|
@ -564,6 +564,11 @@ DialogOptions::DialogOptions(wxWindow *parent)
|
|||
control = new wxComboBox(autoPage,-1,_T(""),wxDefaultPosition,wxDefaultSize,3,prio_choices,wxCB_READONLY|wxCB_DROPDOWN);
|
||||
Bind(control, _T("Automation Thread Priority"));
|
||||
autoSizer2->Add(control, 1, wxEXPAND);
|
||||
autoSizer2->Add(new wxStaticText(autoPage,-1,_("Autoreload on Export: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10);
|
||||
wxString reload_choices[4] = { _("No scripts"), _("Subtitle-local scripts"), _("Global autoload scripts"), _("All scripts") };
|
||||
control = new wxComboBox(autoPage,-1,_T(""),wxDefaultPosition,wxDefaultSize,4,reload_choices,wxCB_READONLY|wxCB_DROPDOWN);
|
||||
Bind(control, _T("Automation Autoreload Mode"));
|
||||
autoSizer2->Add(control, 1, wxEXPAND);
|
||||
|
||||
// Sizers
|
||||
autoSizer1->Add(autoSizer2,1,wxEXPAND | wxALL,5);
|
||||
|
|
|
@ -972,7 +972,7 @@ void FrameMain::SynchronizeProject(bool fromSubs) {
|
|||
|
||||
scripts_string += scriptfn;
|
||||
}
|
||||
subs->SetScriptInfo(_T("Automation 4 Scripts"), scripts_string);
|
||||
subs->SetScriptInfo(_T("Automation Scripts"), scripts_string);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -730,10 +730,27 @@ void FrameMain::OnNewSubtitles(wxCommandEvent& WXUNUSED(event)) {
|
|||
////////////////////
|
||||
// Export subtitles
|
||||
void FrameMain::OnExportSubtitles(wxCommandEvent & WXUNUSED(event)) {
|
||||
//wxString filename = wxFileSelector(_T("Export subtitles file"),_T(""),_T(""),_T(""),_T("Advanced Substation Alpha (*.ass)|*.ass"),wxSAVE | wxOVERWRITE_PROMPT);
|
||||
//if (!filename.empty()) {
|
||||
// AssFile::top->Export(filename);
|
||||
//}
|
||||
int autoreload = Options.AsInt(_T("Automation Autoreload Mode"));
|
||||
if (autoreload & 1) {
|
||||
// Local scripts
|
||||
const std::vector<Automation4::Script*> scripts = local_scripts->GetScripts();
|
||||
for (size_t i = 0; i < scripts.size(); ++i) {
|
||||
try {
|
||||
scripts[i]->Reload();
|
||||
}
|
||||
catch (const wchar_t *e) {
|
||||
wxLogError(e);
|
||||
}
|
||||
catch (...) {
|
||||
wxLogError(_T("An unknown error occurred reloading Automation script '%s'."), scripts[i]->GetName().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (autoreload & 1) {
|
||||
// Global scripts
|
||||
wxGetApp().global_scripts->Reload();
|
||||
}
|
||||
|
||||
DialogExport exporter(this);
|
||||
exporter.ShowModal();
|
||||
}
|
||||
|
|
|
@ -176,6 +176,7 @@ void OptionsManager::LoadDefaults() {
|
|||
SetText(_T("Automation Autoload Path"), AegisubApp::folderName + _T("automation/autoload/"));
|
||||
SetInt(_T("Automation Trace Level"), 3);
|
||||
SetInt(_T("Automation Thread Priority"), 1); // "below normal"
|
||||
SetInt(_T("Automation Autoreload Mode"), 0); // never
|
||||
|
||||
// Generate colors
|
||||
wxColour tempCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
|
||||
|
|
Loading…
Reference in New Issue