1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 14:57:34 +00:00

LibVT+TerminalSettings: Move settings parsing functions to LibVT

This change moves the automark and bell settings parsing functions to
LibVT, so that they can be shared between Terminal and TerminalSettings.
This commit is contained in:
Tim Ledbetter 2024-02-07 06:05:16 +00:00 committed by Ali Mohammad Pur
parent 2850bb881a
commit 5c8962b8f1
4 changed files with 52 additions and 53 deletions

View file

@ -43,10 +43,10 @@ ErrorOr<void> MainWidget::setup()
auto& automark_off_radio = *find_descendant_of_type_named<GUI::RadioButton>("automark_off");
auto& automark_on_interactive_prompt_radio = *find_descendant_of_type_named<GUI::RadioButton>("automark_on_interactive_prompt");
m_bell_mode = parse_bell(Config::read_string("Terminal"sv, "Window"sv, "Bell"sv)).value_or(VT::TerminalWidget::BellMode::Visible);
m_bell_mode = VT::TerminalWidget::parse_bell(Config::read_string("Terminal"sv, "Window"sv, "Bell"sv)).value_or(VT::TerminalWidget::BellMode::Visible);
m_original_bell_mode = m_bell_mode;
m_automark_mode = parse_automark_mode(Config::read_string("Terminal"sv, "Terminal"sv, "AutoMark"sv)).value_or(VT::TerminalWidget::AutoMarkMode::MarkInteractiveShellPrompt);
m_automark_mode = VT::TerminalWidget::parse_automark_mode(Config::read_string("Terminal"sv, "Terminal"sv, "AutoMark"sv)).value_or(VT::TerminalWidget::AutoMarkMode::MarkInteractiveShellPrompt);
m_original_automark_mode = m_automark_mode;
switch (m_bell_mode) {
@ -63,17 +63,17 @@ ErrorOr<void> MainWidget::setup()
beep_bell_radio.on_checked = [this](bool) {
m_bell_mode = VT::TerminalWidget::BellMode::AudibleBeep;
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, stringify_bell(m_bell_mode));
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, VT::TerminalWidget::stringify_bell(m_bell_mode));
set_modified(true);
};
visual_bell_radio.on_checked = [this](bool) {
m_bell_mode = VT::TerminalWidget::BellMode::Visible;
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, stringify_bell(m_bell_mode));
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, VT::TerminalWidget::stringify_bell(m_bell_mode));
set_modified(true);
};
no_bell_radio.on_checked = [this](bool) {
m_bell_mode = VT::TerminalWidget::BellMode::Disabled;
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, stringify_bell(m_bell_mode));
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, VT::TerminalWidget::stringify_bell(m_bell_mode));
set_modified(true);
};
@ -88,12 +88,12 @@ ErrorOr<void> MainWidget::setup()
automark_off_radio.on_checked = [this](bool) {
m_automark_mode = VT::TerminalWidget::AutoMarkMode::MarkNothing;
Config::write_string("Terminal"sv, "Terminal"sv, "AutoMark"sv, stringify_automark_mode(m_automark_mode));
Config::write_string("Terminal"sv, "Terminal"sv, "AutoMark"sv, VT::TerminalWidget::stringify_automark_mode(m_automark_mode));
set_modified(true);
};
automark_on_interactive_prompt_radio.on_checked = [this](bool) {
m_automark_mode = VT::TerminalWidget::AutoMarkMode::MarkInteractiveShellPrompt;
Config::write_string("Terminal"sv, "Terminal"sv, "AutoMark"sv, stringify_automark_mode(m_automark_mode));
Config::write_string("Terminal"sv, "Terminal"sv, "AutoMark"sv, VT::TerminalWidget::stringify_automark_mode(m_automark_mode));
set_modified(true);
};
@ -109,46 +109,6 @@ ErrorOr<void> MainWidget::setup()
return {};
}
Optional<VT::TerminalWidget::BellMode> MainWidget::parse_bell(StringView bell_string)
{
if (bell_string == "AudibleBeep")
return VT::TerminalWidget::BellMode::AudibleBeep;
if (bell_string == "Visible")
return VT::TerminalWidget::BellMode::Visible;
if (bell_string == "Disabled")
return VT::TerminalWidget::BellMode::Disabled;
return {};
}
ByteString MainWidget::stringify_bell(VT::TerminalWidget::BellMode bell_mode)
{
if (bell_mode == VT::TerminalWidget::BellMode::AudibleBeep)
return "AudibleBeep";
if (bell_mode == VT::TerminalWidget::BellMode::Disabled)
return "Disabled";
if (bell_mode == VT::TerminalWidget::BellMode::Visible)
return "Visible";
VERIFY_NOT_REACHED();
}
Optional<VT::TerminalWidget::AutoMarkMode> MainWidget::parse_automark_mode(StringView automark_mode)
{
if (automark_mode == "MarkNothing")
return VT::TerminalWidget::AutoMarkMode::MarkNothing;
if (automark_mode == "MarkInteractiveShellPrompt")
return VT::TerminalWidget::AutoMarkMode::MarkInteractiveShellPrompt;
return {};
}
ByteString MainWidget::stringify_automark_mode(VT::TerminalWidget::AutoMarkMode automark_mode)
{
if (automark_mode == VT::TerminalWidget::AutoMarkMode::MarkNothing)
return "MarkNothing";
if (automark_mode == VT::TerminalWidget::AutoMarkMode::MarkInteractiveShellPrompt)
return "MarkInteractiveShellPrompt";
VERIFY_NOT_REACHED();
}
void MainWidget::apply_settings()
{
m_original_bell_mode = m_bell_mode;
@ -158,7 +118,7 @@ void MainWidget::apply_settings()
void MainWidget::write_back_settings() const
{
Config::write_bool("Terminal"sv, "Terminal"sv, "ConfirmClose"sv, m_orignal_confirm_close);
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, stringify_bell(m_original_bell_mode));
Config::write_string("Terminal"sv, "Window"sv, "Bell"sv, VT::TerminalWidget::stringify_bell(m_original_bell_mode));
}
void MainWidget::cancel_settings()

View file

@ -28,11 +28,6 @@ private:
ErrorOr<void> setup();
void write_back_settings() const;
static Optional<VT::TerminalWidget::BellMode> parse_bell(StringView bell_string);
static Optional<VT::TerminalWidget::AutoMarkMode> parse_automark_mode(StringView automark_mode);
static ByteString stringify_bell(VT::TerminalWidget::BellMode bell_mode);
static ByteString stringify_automark_mode(VT::TerminalWidget::AutoMarkMode automark_mode);
VT::TerminalWidget::BellMode m_bell_mode { VT::TerminalWidget::BellMode::Disabled };
VT::TerminalWidget::AutoMarkMode m_automark_mode { VT::TerminalWidget::AutoMarkMode::MarkInteractiveShellPrompt };
bool m_confirm_close { true };