This commit is contained in:
Miguel Diaz 2023-09-13 19:58:15 +00:00 committed by GitHub
commit 398a7a5506
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 2 deletions

View File

@ -268,6 +268,7 @@ namespace Config {
{"lowcolor", false},
{"show_detailed", false},
{"proc_filtering", false},
{"is_maximized", false},
};
unordered_flat_map<std::string_view, bool> boolsTmp;
@ -521,6 +522,20 @@ namespace Config {
return true;
}
void restore(const string& boxes) {
current_boxes.clear();
current_boxes = ssplit(boxes);
Config::set("shown_boxes", boxes);
Config::set("is_maximized", false);
}
void maximize_box(const string& box) {
current_boxes.clear();
current_boxes.push_back(box);
Config::set("shown_boxes", box);
Config::set("is_maximized", true);
}
void toggle_box(const string& box) {
auto old_boxes = current_boxes;
auto box_pos = rng::find(current_boxes, box);
@ -543,6 +558,7 @@ namespace Config {
}
Config::set("shown_boxes", new_boxes);
ssplit(new_boxes).size() == 1 ? Config::set("is_maximized", true) : Config::set("is_maximized", false);
}
void load(const fs::path& conf_file, vector<string>& load_warnings) {

View File

@ -57,6 +57,12 @@ namespace Config {
//* Toggle box and update config string shown_boxes
void toggle_box(const string& box);
//* Maximize box and update config string shown_boxes
void maximize_box(const string& box);
//* Restore boxes and update config string shown_boxes
void restore(const string& boxes);
//* Parse and setup config value presets
bool presetsValid(const string& presets);

View File

@ -22,6 +22,7 @@ tab-size = 4
#include <thread>
#include <mutex>
#include <signal.h>
#include <ctype.h>
#include "btop_input.hpp"
#include "btop_tools.hpp"
@ -260,11 +261,29 @@ namespace Input {
Menu::show(Menu::Menus::Options);
return;
}
else if (is_in(key, "1", "2", "3", "4")) {
else if (is_in(key, "1", "2", "3", "4", "!", "@", "#", "$")) {
atomic_wait(Runner::active);
Config::current_preset = -1;
static const array<string, 4> boxes = {"cpu", "mem", "net", "proc"};
Config::toggle_box(boxes.at(std::stoi(key) - 1));
if (std::isdigit(key[0]))
Config::toggle_box(boxes.at(std::stoi(key) - 1));
else {
static const unordered_flat_map<string, string> binding = {
{"!", boxes.at(0)},
{"@", boxes.at(1)},
{"#", boxes.at(2)},
{"$", boxes.at(3)},
};
if (Config::getB("is_maximized") && Config::getS("shown_boxes") == binding.at(key)) {
string str_boxes;
for (const auto& b : boxes) str_boxes += b + ' ';
str_boxes.pop_back();
Config::restore(str_boxes);
}
else
Config::maximize_box(binding.at(key));
}
Draw::calcSizes();
Runner::run("all", false, true);
return;