aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2025-08-05 10:21:13 +0000
committers-ol <s+removethis@s-ol.nu>2025-08-05 10:57:37 +0000
commitd8516f04fb045375335a18b122ee8a4bbc3e43d4 (patch)
treead1ca1869e434dc38c8bc4e945d45158aff8fa8a
parentlib/glsl-view: add freeze and step! (diff)
downloadalive-d8516f04fb045375335a18b122ee8a4bbc3e43d4.tar.gz
alive-d8516f04fb045375335a18b122ee8a4bbc3e43d4.zip
copilot/fltk, wx: small fixes and alignment
-rw-r--r--alv/copilot/fltk.moon13
-rw-r--r--alv/copilot/wx.moon63
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!
{