1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 06:17:35 +00:00

TerminalSettings: Set window modified state

This commit is contained in:
Sam Atkins 2022-05-11 17:43:18 +01:00 committed by Andreas Kling
parent 17b41f0d61
commit af01c6be0c

View file

@ -43,36 +43,40 @@ TerminalSettingsMainWidget::TerminalSettingsMainWidget()
switch (m_bell_mode) { switch (m_bell_mode) {
case VT::TerminalWidget::BellMode::Visible: case VT::TerminalWidget::BellMode::Visible:
visual_bell_radio.set_checked(true); visual_bell_radio.set_checked(true, GUI::AllowCallback::No);
break; break;
case VT::TerminalWidget::BellMode::AudibleBeep: case VT::TerminalWidget::BellMode::AudibleBeep:
beep_bell_radio.set_checked(true); beep_bell_radio.set_checked(true, GUI::AllowCallback::No);
break; break;
case VT::TerminalWidget::BellMode::Disabled: case VT::TerminalWidget::BellMode::Disabled:
no_bell_radio.set_checked(true); no_bell_radio.set_checked(true, GUI::AllowCallback::No);
break; break;
} }
beep_bell_radio.on_checked = [this](bool) { beep_bell_radio.on_checked = [this](bool) {
m_bell_mode = VT::TerminalWidget::BellMode::AudibleBeep; m_bell_mode = VT::TerminalWidget::BellMode::AudibleBeep;
Config::write_string("Terminal", "Window", "Bell", stringify_bell(m_bell_mode)); Config::write_string("Terminal", "Window", "Bell", stringify_bell(m_bell_mode));
set_modified(true);
}; };
visual_bell_radio.on_checked = [this](bool) { visual_bell_radio.on_checked = [this](bool) {
m_bell_mode = VT::TerminalWidget::BellMode::Visible; m_bell_mode = VT::TerminalWidget::BellMode::Visible;
Config::write_string("Terminal", "Window", "Bell", stringify_bell(m_bell_mode)); Config::write_string("Terminal", "Window", "Bell", stringify_bell(m_bell_mode));
set_modified(true);
}; };
no_bell_radio.on_checked = [this](bool) { no_bell_radio.on_checked = [this](bool) {
m_bell_mode = VT::TerminalWidget::BellMode::Disabled; m_bell_mode = VT::TerminalWidget::BellMode::Disabled;
Config::write_string("Terminal", "Window", "Bell", stringify_bell(m_bell_mode)); Config::write_string("Terminal", "Window", "Bell", stringify_bell(m_bell_mode));
set_modified(true);
}; };
m_max_history_size = Config::read_i32("Terminal", "Terminal", "MaxHistorySize"); m_max_history_size = Config::read_i32("Terminal", "Terminal", "MaxHistorySize");
m_original_max_history_size = m_max_history_size; m_original_max_history_size = m_max_history_size;
auto& history_size_spinbox = *find_descendant_of_type_named<GUI::SpinBox>("history_size_spinbox"); auto& history_size_spinbox = *find_descendant_of_type_named<GUI::SpinBox>("history_size_spinbox");
history_size_spinbox.set_value(m_max_history_size); history_size_spinbox.set_value(m_max_history_size, GUI::AllowCallback::No);
history_size_spinbox.on_change = [this](int value) { history_size_spinbox.on_change = [this](int value) {
m_max_history_size = value; m_max_history_size = value;
Config::write_i32("Terminal", "Terminal", "MaxHistorySize", static_cast<i32>(m_max_history_size)); Config::write_i32("Terminal", "Terminal", "MaxHistorySize", static_cast<i32>(m_max_history_size));
set_modified(true);
}; };
m_show_scrollbar = Config::read_bool("Terminal", "Terminal", "ShowScrollBar", true); m_show_scrollbar = Config::read_bool("Terminal", "Terminal", "ShowScrollBar", true);
@ -81,8 +85,9 @@ TerminalSettingsMainWidget::TerminalSettingsMainWidget()
show_scrollbar_checkbox.on_checked = [&](bool show_scrollbar) { show_scrollbar_checkbox.on_checked = [&](bool show_scrollbar) {
m_show_scrollbar = show_scrollbar; m_show_scrollbar = show_scrollbar;
Config::write_bool("Terminal", "Terminal", "ShowScrollBar", show_scrollbar); Config::write_bool("Terminal", "Terminal", "ShowScrollBar", show_scrollbar);
set_modified(true);
}; };
show_scrollbar_checkbox.set_checked(m_show_scrollbar); show_scrollbar_checkbox.set_checked(m_show_scrollbar, GUI::AllowCallback::No);
m_confirm_close = Config::read_bool("Terminal", "Terminal", "ConfirmClose", true); m_confirm_close = Config::read_bool("Terminal", "Terminal", "ConfirmClose", true);
m_orignal_confirm_close = m_confirm_close; m_orignal_confirm_close = m_confirm_close;
@ -90,8 +95,9 @@ TerminalSettingsMainWidget::TerminalSettingsMainWidget()
confirm_close_checkbox.on_checked = [&](bool confirm_close) { confirm_close_checkbox.on_checked = [&](bool confirm_close) {
m_confirm_close = confirm_close; m_confirm_close = confirm_close;
Config::write_bool("Terminal", "Terminal", "ConfirmClose", confirm_close); Config::write_bool("Terminal", "Terminal", "ConfirmClose", confirm_close);
set_modified(true);
}; };
confirm_close_checkbox.set_checked(m_confirm_close); confirm_close_checkbox.set_checked(m_confirm_close, GUI::AllowCallback::No);
} }
TerminalSettingsViewWidget::TerminalSettingsViewWidget() TerminalSettingsViewWidget::TerminalSettingsViewWidget()
@ -105,6 +111,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget()
slider.on_change = [this](int value) { slider.on_change = [this](int value) {
m_opacity = value; m_opacity = value;
Config::write_i32("Terminal", "Window", "Opacity", static_cast<i32>(m_opacity)); Config::write_i32("Terminal", "Window", "Opacity", static_cast<i32>(m_opacity));
set_modified(true);
}; };
m_color_scheme = Config::read_string("Terminal", "Window", "ColorScheme"); m_color_scheme = Config::read_string("Terminal", "Window", "ColorScheme");
@ -128,6 +135,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget()
color_scheme_combo.on_change = [&](auto&, const GUI::ModelIndex& index) { color_scheme_combo.on_change = [&](auto&, const GUI::ModelIndex& index) {
m_color_scheme = index.data().as_string(); m_color_scheme = index.data().as_string();
Config::write_string("Terminal", "Window", "ColorScheme", m_color_scheme); Config::write_string("Terminal", "Window", "ColorScheme", m_color_scheme);
set_modified(true);
}; };
auto& font_button = *find_descendant_of_type_named<GUI::Button>("terminal_font_button"); auto& font_button = *find_descendant_of_type_named<GUI::Button>("terminal_font_button");
@ -147,6 +155,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget()
font_text.set_text(m_font->human_readable_name()); font_text.set_text(m_font->human_readable_name());
font_text.set_font(m_font); font_text.set_font(m_font);
Config::write_string("Terminal", "Text", "Font", m_font->qualified_name()); Config::write_string("Terminal", "Text", "Font", m_font->qualified_name());
set_modified(true);
} }
}; };
@ -166,10 +175,12 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget()
: Gfx::FontDatabase::the().get_by_name(font_name); : Gfx::FontDatabase::the().get_by_name(font_name);
Config::write_string("Terminal", "Text", "Font", m_font->qualified_name()); Config::write_string("Terminal", "Text", "Font", m_font->qualified_name());
} }
set_modified(true);
}; };
// The "use default font" setting is not stored itself - we automatically set it if the actually present font is the default, // The "use default font" setting is not stored itself - we automatically set it if the actually present font is the default,
// whether that was filled in by the above defaulting code or by the user. // whether that was filled in by the above defaulting code or by the user.
use_default_font_button.set_checked(m_font == Gfx::FontDatabase::the().default_fixed_width_font()); use_default_font_button.set_checked(m_font == Gfx::FontDatabase::the().default_fixed_width_font(), GUI::AllowCallback::No);
font_selection.set_enabled(!use_default_font_button.is_checked());
} }
VT::TerminalWidget::BellMode TerminalSettingsMainWidget::parse_bell(StringView bell_string) VT::TerminalWidget::BellMode TerminalSettingsMainWidget::parse_bell(StringView bell_string)