diff options
| author | s-ol <s+removethis@s-ol.nu> | 2025-08-05 10:21:13 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2025-08-05 10:57:37 +0000 |
| commit | d8516f04fb045375335a18b122ee8a4bbc3e43d4 (patch) | |
| tree | ad1ca1869e434dc38c8bc4e945d45158aff8fa8a | |
| parent | lib/glsl-view: add freeze and step! (diff) | |
| download | alive-d8516f04fb045375335a18b122ee8a4bbc3e43d4.tar.gz alive-d8516f04fb045375335a18b122ee8a4bbc3e43d4.zip | |
copilot/fltk, wx: small fixes and alignment
| -rw-r--r-- | alv/copilot/fltk.moon | 13 | ||||
| -rw-r--r-- | alv/copilot/wx.moon | 63 |
2 files changed, 49 insertions, 27 deletions
diff --git a/alv/copilot/fltk.moon b/alv/copilot/fltk.moon index a4e3d08..403c5d9 100644 --- a/alv/copilot/fltk.moon +++ b/alv/copilot/fltk.moon @@ -18,7 +18,9 @@ class FLTKLogger extends Logger else error "invalid time '#{time}'" put: (message) => - @output.browser\add message + for line in message\gmatch "[^\r\n]+" + @output.browser\add line + if true or @output.sticky.value @output.browser.bottomline = @output.browser.nitems @@ -83,12 +85,17 @@ visit #{version.web} for more information." update_status: => @paused = not @menubar\menuitem_value @runcode + @window.label = if @active_module + "#{@active_module\name!} - alv copilot" + else + "alv copilot" + @status.value = if not @active_module "no script" elseif @paused - "paused | #{@active_module\name!}" + "paused" else - "running | #{@active_module\name!}" + "running" @window\redraw! eval: (dirty) => diff --git a/alv/copilot/wx.moon b/alv/copilot/wx.moon index 9e2ad93..f61897d 100644 --- a/alv/copilot/wx.moon +++ b/alv/copilot/wx.moon @@ -7,11 +7,11 @@ import parse_args, Copilot from require 'alv.copilot.base' require 'wx' import - wxID_ABOUT, wxID_OPEN, wxID_EXIT, wxID_ANY, wxVERTICAL, + wxID_ABOUT, wxID_OPEN, wxID_EXIT, wxID_CLEAR, wxID_STOP, wxID_ANY, wxVERTICAL, wxFrame, wxMenuBar, wxMenu, wxPanel, wxBoxSizer, wxTextCtrl, wxSplitterWindow from wx -STARTSTOP = 100 +AUTO_CLEAR = 100 class WXLogger extends Logger new: (level, @eval_ctrl, @run_ctrl) => @@ -34,17 +34,23 @@ class WXCopilot extends Copilot @app.VendorName = 'alive' @app.AppName = 'alive wxCopilot' - fileMenu = wxMenu { - { wxID_ABOUT, '&About', 'About alive wxCopilot' } - { wxID_OPEN, '&Open\tCtrl-O', 'Open Script' } - { } - { wxID_EXIT, 'E&xit\tCtrl-Q', 'Exit Program' } - } - runMenu = wxMenu { - { STARTSTOP, '&Start/Stop\tCtrl-P', 'Start/Stop Script Execution' } - } + fileMenu = with wxMenu! + \Append wxID_ABOUT, '&About', 'About alive wxCopilot' + \Append wxID_OPEN, '&Open\tCtrl-O', 'Open Script' + \AppendSeparator! + \Append wxID_EXIT, 'E&xit\tCtrl-Q', 'Exit Program' + + editMenu = with wxMenu! + \Append wxID_CLEAR, 'C&lear Logs\tCtrl-L' + @autoclear = \AppendCheckItem AUTO_CLEAR, '&Auto-Clear on eval' + @autoclear\Check true + + runMenu = with wxMenu! + \Append wxID_STOP, '&Start/Stop\tCtrl-P' + @menuBar = with wxMenuBar! \Append fileMenu, '&File' + \Append editMenu, '&Edit' \Append runMenu, '&Run' @frame = wxFrame wx.NULL, wxID_ANY, @app\GetAppName! @@ -56,10 +62,9 @@ class WXCopilot extends Copilot splitter = wxSplitterWindow @frame, wx.wxID_ANY eval, @eval_ctrl = @mkPanel splitter, 'eval-time messages' - run, @run_ctrl = @mkPanel splitter, 'run-time messages' - splitter\SetMinimumPaneSize 60 + splitter\SetMinimumPaneSize 100 splitter\SplitHorizontally eval, run, 0 sizer = with wxBoxSizer wx.wxVERTICAL @@ -72,7 +77,8 @@ class WXCopilot extends Copilot @frame\Connect wxID_ABOUT, wx.wxEVT_COMMAND_MENU_SELECTED, @\do_about @frame\Connect wxID_OPEN, wx.wxEVT_COMMAND_MENU_SELECTED, @\do_open @frame\Connect wxID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED, -> @frame\Close! - @frame\Connect STARTSTOP, wx.wxEVT_COMMAND_MENU_SELECTED, @\do_startstop + @frame\Connect wxID_STOP, wx.wxEVT_COMMAND_MENU_SELECTED, @\do_startstop + @frame\Connect wxID_CLEAR, wx.wxEVT_COMMAND_MENU_SELECTED, @\clear @frame\Connect wxID_ANY, wx.wxEVT_IDLE, @\do_idle do_about: => @@ -96,26 +102,25 @@ built using #{wxlua.wxLUA_VERSION_STRING} on #{wx.wxVERSION_STRING}", dialog\Destroy! do_startstop: (event) => - if @file + if @active_module @paused = not @paused @update_status! do_idle: (event) => + event\RequestMore true if not @paused - event\RequestMore true @tick! update_status: => - startstop = @menuBar\FindItem STARTSTOP - if not @file - @status\SetStatusText "No script loaded." + startstop = @menuBar\FindItem wxID_STOP + if not @active_module + @frame\SetTitle @app\GetAppName! startstop\Enable false + @status\SetStatusText "No script loaded." else + @frame\SetTitle "#{@active_module\name!} - #{@app\GetAppName!}" startstop\Enable true - if @paused - @status\SetStatusText "Paused." - else - @status\SetStatusText "Running." + @status\SetStatusText if @paused then "Paused." else "Running." mkPanel: (parent, name) => panel = wxPanel parent, wxID_ANY @@ -129,8 +134,18 @@ built using #{wxlua.wxLUA_VERSION_STRING} on #{wx.wxVERSION_STRING}", panel, log + eval: (dirty) => + if @autoclear\IsChecked! + @clear! + + super dirty + + clear: => + @eval_ctrl\Clear! + @run_ctrl\Clear! + run: => - WXLogger\init @args.log, copilot.eval_ctrl, copilot.run_ctrl + WXLogger\init @args.log, @eval_ctrl, @run_ctrl @app\MainLoop! { |
