mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 08:27:46 +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:
parent
2850bb881a
commit
5c8962b8f1
4 changed files with 52 additions and 53 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue