Skip to content

Make extended canvas more configurable #60

@pyroscope

Description

@pyroscope

Tasks

  • ✅ Update all documentation (description of default columns, new commands)

  • ✅ Clean up code

    • deprecate "ui.style.ratio" and "ui.style.progress"
  • ✅ Catch errors thrown by render methods, show error indicator (e.what()).

  • 💡 Add ui.render.cycle = ‹speed›, ‹cmd1›, ‹cmd2›, … to rotate through alternate display values

    • driven by a tick value (increased per canvas refresh)
    • ‹speed› is measured in ticks
    • ui.tick and private ui.tick.bump command
    • this means Ctrl-L can be used to cycle manually (bump tick count artificially in the key binding)

final canvas

  • ✅ Add a multi-method for column rendering: ui.column.render

    • Call those methods, order is determined by keys as usual
    • Keys encode column title + length sort:[?]len[coldef]:title, with optional parts for sacrificial headers (?) and colorization
    • Chop rendered contents to the length of the header
  • ✅ Make chopping of columns UTF8-aware!

  • ✅ Start out with one of the new fields in Include more columns on collapsed view #29 to make @chros73 happy

  • ✅ X-position (column) must be made dynamic in the code (advance by header length)

  • ✅ Add colouring support (needed for remaining columns)

    • ✅ New ui.color.custom1…9 commands
    • ✅ New private ui.color.*.index commands
    • ✅ New ui.canvas_color[.set] command
    • ✅ Static color definitions in column index (Cidx/len): "180:2C2/2: ↻"
    • ✅ Custom colors moved to index 1…9
    • ✅ System colors – dynamically mapped color index values, starting at index 90
  • ❌ Existing columns might be factored into commands, to make everything configurable (d.‹name›.render)

  • ✅ Move "tagged" to its own column

  • ✅ Add convert.magnitude command (used in scrape columns)

  • ✅ Add string.map=text,{from,to},… (for throttle names)

  • ✅ Add event.view.hide/show multi command, and call them on view changes

    • method.set_key = event.view.hide, ~log, ((print, ((ui.current_view)), " → ", ((argument.0))))

Example

Custom columns with custom colors (subject to change):

ui.color.custom1.set = 242
ui.color.custom2.set = 105
ui.color.custom3.set =  51

method.set_key = ui.column.render, "910:4C15/3C21/1: ✇  "
method.set_key = ui.column.render, "910:4C3/3C2/1: ✇  ", \
    ((convert.human_size, ((d.size_bytes)) ))

method.set_key = ui.column.render, "900:4C24/3C21/1: Σ⇈ "
method.insert = _pyro.middot_custom, private|simple, \
    "branch=d.up.total=,ui.canvas_color.set=C24/3C2/1,ui.canvas_color.set=C2/4 ; cat=\"  · \""
method.set_key = ui.column.render, "900:4C24/3C2/1: Σ⇈ ", \
    ((if, ((d.up.total)), \
        ((convert.human_size, ((d.up.total)), (value, 10) )), \
        ((_pyro.middot_custom)) \
    ))

preview

Metadata

Metadata

Assignees

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions