From 8221fd5451f094defa9866f98026b74a969f7693 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Mon, 8 Mar 2021 14:46:19 -0500 Subject: resizable widgets, default widget implementation for some functions, reimplementing meminfo in raleigh --- src/user/meminfo/meminfo.c | 31 --------------------------- src/user/meminfo/meminfo.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 31 deletions(-) delete mode 100644 src/user/meminfo/meminfo.c create mode 100644 src/user/meminfo/meminfo.cpp (limited to 'src/user/meminfo') diff --git a/src/user/meminfo/meminfo.c b/src/user/meminfo/meminfo.c deleted file mode 100644 index 3c3c45b..0000000 --- a/src/user/meminfo/meminfo.c +++ /dev/null @@ -1,31 +0,0 @@ -#include - -#include - -static const struct key_packet meminfo_quits[] = { - { .key_id = KEY_ESCAPE, .modifiers = NO_MODS }, - { .key_id = KEY_F5, .modifiers = NO_MODS }, - { .key_id = 0 } -}; - -void main() { - struct popup p; -redo: - info_popupf(&p, - "kernel memory free: %uk\n" - "userspace memory free: %uk / %uk\n" - "Escape to quit, F5 to refresh.", - (_pixel_t){.r = 0, .g = 0, .b = 0}, - (_pixel_t){.r = 0xbf, .g = 0xbf, .b = 0xbf}, - _kernel_dynamic_area_left() * 4, - _total_userspace_left() * 4, - _total_userspace_size() * 4 - ); - //hacky, i should really make info_popup take an arg - p.quit_binds = meminfo_quits; - make_modal(&p); - if (p.quit_as.key_id == KEY_F5) - //i should make popups have changable text - //(make a new pixbuf but reuse the window) - goto redo; -} \ No newline at end of file diff --git a/src/user/meminfo/meminfo.cpp b/src/user/meminfo/meminfo.cpp new file mode 100644 index 0000000..2b035a4 --- /dev/null +++ b/src/user/meminfo/meminfo.cpp @@ -0,0 +1,51 @@ +#include +#include +#include + +#include +#include + +#include +#include +#include + +using namespace raleigh; + +label *kmem; +label *umem; + +void refresh(window &w) { + char *const kstr = format("kernel memory free: %uk", _kernel_dynamic_area_left() * 4); + char *const ustr = format("userspace memory free: %uk / %uk", _total_userspace_left() * 4, _total_userspace_size() * 4); + + kmem->change_value(kstr); + umem->change_value(ustr); + + free_block(kstr); + free_block(ustr); +} + +void main() { + kmem = new label(""); + umem = new label(""); + label msg("press Alt+F4 to quit, or F5 to refresh"); + + padding pkmem(*kmem, 1); + padding pumem(*umem, 1); + padding pmsg(msg, 1); + + dllist ll; + ll.add_front(pmsg); + ll.add_front(pumem); + ll.add_front(pkmem); + vbox box(ll); + + padding pbox(box, 3); + window w(pbox, RGB(bf, bf, bf), (bool (*)(window &))&__pcrt_quit); + w.add_keybind((struct key_packet){.key_id = key_packet::KEY_F5, .modifiers = key_packet::NO_MODS}, &refresh); + + refresh(w); + + w.show(); + start_runtime(); +} \ No newline at end of file -- cgit v1.2.3