Virtualization: better presentation
This commit is contained in:
@@ -370,10 +370,24 @@ void system_info_gui(Gui_Layout_Grid *grid)
|
|||||||
gui_text_aligned(grid->rect_at({4,0}, {2,1}), uptime, GUI_ALIGN_RIGHT);
|
gui_text_aligned(grid->rect_at({4,0}, {2,1}), uptime, GUI_ALIGN_RIGHT);
|
||||||
|
|
||||||
|
|
||||||
|
Rect r;
|
||||||
|
Gui_Layout_Grid layout;
|
||||||
|
|
||||||
|
|
||||||
|
// Window reserved for future system info
|
||||||
|
r = grid->rect_at({0,1}, {2,3});
|
||||||
|
layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, 3, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
|
style_select(ctx, system_info.status);
|
||||||
|
gui_window_start(r, 0xabc23401);
|
||||||
|
style_select(ctx, SECTION_STATUS_NONE);
|
||||||
|
|
||||||
|
gui_window_end();
|
||||||
|
|
||||||
|
|
||||||
// Window with cpu n., load, ram
|
// Window with cpu n., load, ram
|
||||||
Rect r = grid->rect_at({4,1}, {2,3});
|
r = grid->rect_at({4,1}, {2,3});
|
||||||
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, 3, 0.2*engine.gui_scaling);
|
layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, 3, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
style_select(ctx, system_info.status);
|
style_select(ctx, system_info.status);
|
||||||
gui_window_start(r, 0xabcdef01);
|
gui_window_start(r, 0xabcdef01);
|
||||||
@@ -398,8 +412,8 @@ void network_gui(Gui_Layout_Grid *grid)
|
|||||||
{
|
{
|
||||||
Gui_Context *ctx = &global_gui_state.default_context;
|
Gui_Context *ctx = &global_gui_state.default_context;
|
||||||
|
|
||||||
Rect r = grid->rect_at({0,4}, {3,13});
|
Rect r = grid->rect_at({0,5}, {2,grid->max_cells_count.y - 5});
|
||||||
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 3, 13, 0.2*engine.gui_scaling);
|
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, grid->max_cells_count.y - 5, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
style_select(ctx, network_info.status);
|
style_select(ctx, network_info.status);
|
||||||
gui_window_start(r, 0xabcdef02);
|
gui_window_start(r, 0xabcdef02);
|
||||||
@@ -409,7 +423,7 @@ void network_gui(Gui_Layout_Grid *grid)
|
|||||||
layout.row();
|
layout.row();
|
||||||
|
|
||||||
r = layout.rect_at({0,1}, layout.max_cells_count - v2s{0,1});
|
r = layout.rect_at({0,1}, layout.max_cells_count - v2s{0,1});
|
||||||
layout = gui_layout_grid_create_by_divisions(r.position, r.size, 3, 3, 0.2*engine.gui_scaling);
|
layout = gui_layout_grid_create_by_divisions(r.position, r.size, layout.max_cells_count.x, layout.max_cells_count.y/3, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
for(s32 i = 0; i < network_info.device_count; i++)
|
for(s32 i = 0; i < network_info.device_count; i++)
|
||||||
{
|
{
|
||||||
@@ -521,66 +535,74 @@ void vm_gui(Gui_Layout_Grid *grid)
|
|||||||
{
|
{
|
||||||
Gui_Context *ctx = &global_gui_state.default_context;
|
Gui_Context *ctx = &global_gui_state.default_context;
|
||||||
|
|
||||||
Rect r = grid->rect_at({0,17}, {4,5});
|
Rect r = grid->rect_at({2,5}, {2,grid->max_cells_count.y - 5});
|
||||||
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 4, 5, 0.2*engine.gui_scaling);
|
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, grid->max_cells_count.y - 5, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
style_select(ctx, virt_info.status);
|
style_select(ctx, virt_info.status);
|
||||||
gui_window_start(r, 0xabcdef03);
|
gui_window_start(r, 0xabcdef03);
|
||||||
style_select(ctx, SECTION_STATUS_NONE);
|
style_select(ctx, SECTION_STATUS_NONE);
|
||||||
|
|
||||||
|
gui_text_aligned(layout.cell(GUI_LAYOUT_MAX_CELLS), "Virtual machines", GUI_ALIGN_CENTER);
|
||||||
|
layout.row();
|
||||||
|
|
||||||
|
r = layout.rect_at({0,1}, layout.max_cells_count - v2s{0,1});
|
||||||
|
layout = gui_layout_grid_create_by_divisions(r.position, r.size, layout.max_cells_count.x, layout.max_cells_count.y/4, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Gui_Style old_style = ctx->style;
|
|
||||||
for(s32 i = 0; i < virt_info.domain_count; i++)
|
for(s32 i = 0; i < virt_info.domain_count; i++)
|
||||||
{
|
{
|
||||||
Virt_Domain *domain = &virt_info.domains[i];
|
Virt_Domain *domain = &virt_info.domains[i];
|
||||||
|
|
||||||
// Name and state
|
// Status
|
||||||
|
Section_Status status = SECTION_STATUS_NONE;
|
||||||
switch(domain->state)
|
switch(domain->state)
|
||||||
{
|
{
|
||||||
case VIR_DOMAIN_NOSTATE:
|
case VIR_DOMAIN_NOSTATE:
|
||||||
ctx->style.button_color = old_style.button_color;
|
status = SECTION_STATUS_NONE;
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_RUNNING:
|
case VIR_DOMAIN_RUNNING:
|
||||||
ctx->style.button_color = v4{0,1,0,1};
|
status = SECTION_STATUS_OK;
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_BLOCKED:
|
case VIR_DOMAIN_BLOCKED:
|
||||||
case VIR_DOMAIN_SHUTOFF:
|
case VIR_DOMAIN_SHUTOFF:
|
||||||
case VIR_DOMAIN_CRASHED:
|
case VIR_DOMAIN_CRASHED:
|
||||||
ctx->style.button_color = v4{1,0,0,1};
|
status = SECTION_STATUS_ERROR;
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_SHUTDOWN:
|
case VIR_DOMAIN_SHUTDOWN:
|
||||||
ctx->style.button_color = v4{0,.6,0,1};
|
status = SECTION_STATUS_ERROR;
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_PAUSED:
|
case VIR_DOMAIN_PAUSED:
|
||||||
case VIR_DOMAIN_PMSUSPENDED:
|
case VIR_DOMAIN_PMSUSPENDED:
|
||||||
ctx->style.button_color = v4{.7,.7,0,1};
|
status = SECTION_STATUS_WARNING;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ctx->style.button_color = old_style.button_color;
|
status = SECTION_STATUS_NONE;
|
||||||
}
|
}
|
||||||
gui_button(layout.cell(), domain->name);
|
|
||||||
|
|
||||||
gui_id_stack_push(ctx, gui_id_from_pointer(ctx, domain->name));
|
Rect r = layout.cell();
|
||||||
|
style_select(ctx, status);
|
||||||
|
gui_panel(r);
|
||||||
|
style_select(ctx, SECTION_STATUS_NONE);
|
||||||
|
|
||||||
ctx->style = old_style;
|
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(r.position, r.size, 2, 4, 0.1*engine.gui_scaling);
|
||||||
|
|
||||||
|
gui_text(layout.cell(2), domain->name);
|
||||||
|
|
||||||
// CPU usage
|
|
||||||
char cpu[128]; snprintf(cpu, 128, "%.2f%%", domain->cpu_usage * 100);
|
|
||||||
gui_button(layout.cell(), cpu);
|
|
||||||
|
|
||||||
char ram[128]; snprintf(ram, 128, "%.2f GB", domain->ram_total / (1024.0*1024.0*1024.0));
|
char ram[128]; snprintf(ram, 128, "%.2f GB", domain->ram_total / (1024.0*1024.0*1024.0));
|
||||||
gui_button(layout.cell(), ram);
|
gui_text(layout.cell(1), ram);
|
||||||
|
|
||||||
char cpu_count[128]; snprintf(cpu_count, 128, "%hd vCPU", domain->vcpus);
|
char cpu_count[128]; snprintf(cpu_count, 128, "%hd vCPU", domain->vcpus);
|
||||||
gui_button(layout.cell(), cpu_count);
|
gui_text(layout.cell(1), cpu_count);
|
||||||
|
|
||||||
|
layout.row(2);
|
||||||
|
char cpu[128]; snprintf(cpu, 128, "CPU: %.2f%%", domain->cpu_usage * 100);
|
||||||
|
gui_text(layout.cell(2), cpu);
|
||||||
|
|
||||||
gui_id_stack_pop(ctx);
|
|
||||||
layout.row();
|
layout.row();
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->style = old_style;
|
|
||||||
|
|
||||||
gui_window_end();
|
gui_window_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -589,13 +611,19 @@ void fs_gui(Gui_Layout_Grid *grid)
|
|||||||
{
|
{
|
||||||
Gui_Context *ctx = &global_gui_state.default_context;
|
Gui_Context *ctx = &global_gui_state.default_context;
|
||||||
|
|
||||||
Rect r = grid->rect_at({4,4}, {2,18});
|
Rect r = grid->rect_at({4,5}, {2,grid->max_cells_count.y - 5});
|
||||||
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, 18, 0.2*engine.gui_scaling);
|
Gui_Layout_Grid layout = gui_layout_grid_create_by_divisions(v2{0,0}, r.size, 2, grid->max_cells_count.y - 5, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
style_select(ctx, fs_info.status);
|
style_select(ctx, fs_info.status);
|
||||||
gui_window_start(r, 0xabcdef04);
|
gui_window_start(r, 0xabcdef04);
|
||||||
style_select(ctx, SECTION_STATUS_NONE);
|
style_select(ctx, SECTION_STATUS_NONE);
|
||||||
|
|
||||||
|
gui_text_aligned(layout.cell(GUI_LAYOUT_MAX_CELLS), "Storage", GUI_ALIGN_CENTER);
|
||||||
|
layout.row();
|
||||||
|
|
||||||
|
r = layout.rect_at({0,1}, layout.max_cells_count - v2s{0,1});
|
||||||
|
layout = gui_layout_grid_create_by_divisions(r.position, r.size, layout.max_cells_count.x, layout.max_cells_count.y/1, 0.2*engine.gui_scaling);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for(s32 i = 0; i < fs_info.fs_count; i++)
|
for(s32 i = 0; i < fs_info.fs_count; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user