Spaces:
Sleeping
Sleeping
| --[[ | |
| ReaSpeechMain.lua - ReaSpeech main class | |
| ]]-- | |
| ctx = nil | |
| app = nil | |
| ReaSpeechMain = {} | |
| function ReaSpeechMain:main() | |
| if not self:check_imgui() then return end | |
| reaper.atexit(function () self:onexit() end) | |
| ctx = ImGui.CreateContext(ReaSpeechUI.TITLE, ReaSpeechUI.config_flags()) | |
| Fonts:load() | |
| app = ReaSpeechUI.new() | |
| reaper.defer(self:loop()) | |
| end | |
| function ReaSpeechMain:loop() | |
| local visible, open = false, false | |
| return function() | |
| ImGui.PushFont(ctx, Fonts.main) | |
| app:trap(function() | |
| Theme():push(ctx) | |
| app:trap(function() | |
| if ReaSpeechUI.METRICS then | |
| ImGui.ShowMetricsWindow(ctx) | |
| end | |
| ImGui.SetNextWindowSize(ctx, app.WIDTH, app.HEIGHT, ImGui.Cond_FirstUseEver()) | |
| visible, open = ImGui.Begin(ctx, ReaSpeechUI.TITLE, true) | |
| if visible then | |
| app:trap(function() | |
| app:react() | |
| end) | |
| ImGui.End(ctx) | |
| end | |
| end) | |
| Theme():pop(ctx) | |
| end) | |
| ImGui.PopFont(ctx) | |
| if open then | |
| reaper.defer(self:loop()) | |
| end | |
| end | |
| end | |
| function ReaSpeechMain:check_imgui() | |
| if ImGui.CreateContext then | |
| return true | |
| else | |
| reaper.MB( | |
| "This script requires the ReaImGui API, which can be installed from:\n\n" | |
| .. "Extensions > ReaPack > Browse packages...", | |
| "ReaImGui required", | |
| 0 | |
| ) | |
| return false | |
| end | |
| end | |
| function ReaSpeechMain:onexit() | |
| Tempfile:remove_all() | |
| end | |