|
@@ -15,6 +15,7 @@
|
|
|
#include <LibGUI/GRadioButton.h>
|
|
|
#include <LibGUI/GWidget.h>
|
|
|
#include <LibGUI/GWindow.h>
|
|
|
+#include <LibGUI/GGroupBox.h>
|
|
|
#include <LibGUI/GMenuBar.h>
|
|
|
#include <LibGUI/GAction.h>
|
|
|
#include <LibGUI/GFontDatabase.h>
|
|
@@ -80,14 +81,41 @@ static void make_shell(int ptm_fd)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-GWindow* create_opacity_settings_window(Terminal& terminal, RetainPtr<CConfigFile> config)
|
|
|
+GWindow* create_settings_window(Terminal& terminal, RetainPtr<CConfigFile> config)
|
|
|
{
|
|
|
- auto* opacity_adjustment_window = new GWindow;
|
|
|
- opacity_adjustment_window->set_title("Adjust opacity");
|
|
|
- opacity_adjustment_window->set_rect(50, 50, 200, 100);
|
|
|
+ auto* window = new GWindow;
|
|
|
+ window->set_title("Terminal Settings");
|
|
|
+ window->set_rect(50, 50, 200, 140);
|
|
|
+
|
|
|
+
|
|
|
+ auto* settings = new GWidget;
|
|
|
+ window->set_main_widget(settings);
|
|
|
+ settings->set_fill_with_background_color(true);
|
|
|
+ settings->set_layout(make<GBoxLayout>(Orientation::Vertical));
|
|
|
+ settings->layout()->set_margins({ 4, 4, 4, 4 });
|
|
|
+
|
|
|
+ auto* radio_container = new GGroupBox("Bell Mode", settings);
|
|
|
+ radio_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
|
|
|
+ radio_container->layout()->set_margins({ 6, 16, 6, 6 });
|
|
|
+ radio_container->set_fill_with_background_color(true);
|
|
|
+ radio_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
|
|
|
+ radio_container->set_preferred_size({ 100, 70 });
|
|
|
+
|
|
|
+ auto* sysbell_radio = new GRadioButton("Use (Audible) System Bell", radio_container);
|
|
|
+ auto* visbell_radio = new GRadioButton("Use (Visual) Terminal Bell", radio_container);
|
|
|
+ sysbell_radio->set_checked(terminal.should_beep());
|
|
|
+ visbell_radio->set_checked(!terminal.should_beep());
|
|
|
+ sysbell_radio->on_checked = [&terminal] (const bool checked) {
|
|
|
+ terminal.set_should_beep(checked);
|
|
|
+ };
|
|
|
|
|
|
- auto* slider = new GSlider(nullptr);
|
|
|
- opacity_adjustment_window->set_main_widget(slider);
|
|
|
+ auto* slider_container = new GGroupBox("Background Opacity", settings);
|
|
|
+ slider_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
|
|
|
+ slider_container->layout()->set_margins({ 6, 16, 6, 6 });
|
|
|
+ slider_container->set_fill_with_background_color(true);
|
|
|
+ slider_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
|
|
|
+ slider_container->set_preferred_size({ 100, 50 });
|
|
|
+ auto* slider = new GSlider(slider_container);
|
|
|
slider->set_fill_with_background_color(true);
|
|
|
slider->set_background_color(Color::LightGray);
|
|
|
|
|
@@ -99,29 +127,7 @@ GWindow* create_opacity_settings_window(Terminal& terminal, RetainPtr<CConfigFil
|
|
|
slider->set_range(0, 100);
|
|
|
slider->set_value(terminal.opacity() * 100.0);
|
|
|
|
|
|
- return opacity_adjustment_window;
|
|
|
-}
|
|
|
-
|
|
|
-GWindow* create_beep_choice_window(Terminal& terminal, RetainPtr<CConfigFile> config)
|
|
|
-{
|
|
|
- auto* beep_choice_window = new GWindow;
|
|
|
- beep_choice_window->set_title("Terminal beep settings");
|
|
|
- beep_choice_window->set_rect(50, 50, 200, 100);
|
|
|
-
|
|
|
- auto* radio_buttons = new GWidget;
|
|
|
- beep_choice_window->set_main_widget(radio_buttons);
|
|
|
- radio_buttons->set_fill_with_background_color(true);
|
|
|
- radio_buttons->set_layout(make<GBoxLayout>(Orientation::Vertical));
|
|
|
- radio_buttons->layout()->set_margins({ 4, 4, 4, 4 });
|
|
|
-
|
|
|
- auto* sysbell_radio = new GRadioButton("Use (Audible) System Bell", radio_buttons);
|
|
|
- auto* visbell_radio = new GRadioButton("Use (Visual) Terminal Bell", radio_buttons);
|
|
|
- sysbell_radio->set_checked(terminal.should_beep());
|
|
|
- visbell_radio->set_checked(!terminal.should_beep());
|
|
|
- sysbell_radio->on_checked = [&terminal] (const bool res) {
|
|
|
- terminal.set_should_beep(res);
|
|
|
- };
|
|
|
- return beep_choice_window;
|
|
|
+ return window;
|
|
|
}
|
|
|
|
|
|
int main(int argc, char** argv)
|
|
@@ -152,13 +158,9 @@ int main(int argc, char** argv)
|
|
|
terminal.apply_size_increments_to_window(*window);
|
|
|
window->show();
|
|
|
window->set_icon_path("/res/icons/16x16/app-terminal.png");
|
|
|
- terminal.set_should_beep(config->read_num_entry("Window", "AudibleBeep", 1) == 1);
|
|
|
+ terminal.set_should_beep(config->read_bool_entry("Window", "AudibleBeep", true));
|
|
|
|
|
|
- WeakPtr<GWindow> opacity_adjustment_window =
|
|
|
- create_opacity_settings_window(terminal, config)->make_weak_ptr();
|
|
|
-
|
|
|
- WeakPtr<GWindow> beep_choice_window =
|
|
|
- create_beep_choice_window(terminal, config)->make_weak_ptr();
|
|
|
+ WeakPtr<GWindow> settings_window;
|
|
|
|
|
|
auto new_opacity = config->read_num_entry("Window", "Opacity", 255);
|
|
|
terminal.set_opacity((float)new_opacity / 255.0);
|
|
@@ -166,19 +168,12 @@ int main(int argc, char** argv)
|
|
|
auto menubar = make<GMenuBar>();
|
|
|
|
|
|
auto app_menu = make<GMenu>("Terminal");
|
|
|
- app_menu->add_action(GAction::create("Adjust opacity...",
|
|
|
- [&opacity_adjustment_window, &terminal, &config] (const GAction&) {
|
|
|
- if (!opacity_adjustment_window)
|
|
|
- opacity_adjustment_window =
|
|
|
- create_opacity_settings_window(terminal, config)->make_weak_ptr();
|
|
|
- opacity_adjustment_window->show();
|
|
|
- }));
|
|
|
- app_menu->add_action(GAction::create("Change audio output...",
|
|
|
- [&beep_choice_window, &terminal, &config] (const GAction&) {
|
|
|
- if (!beep_choice_window)
|
|
|
- beep_choice_window =
|
|
|
- create_beep_choice_window(terminal, config)->make_weak_ptr();
|
|
|
- beep_choice_window->show();
|
|
|
+ app_menu->add_action(GAction::create("Settings...",
|
|
|
+ [&settings_window, &terminal, &config] (const GAction&) {
|
|
|
+ if (!settings_window)
|
|
|
+ settings_window =
|
|
|
+ create_settings_window(terminal, config)->make_weak_ptr();
|
|
|
+ settings_window->show();
|
|
|
}));
|
|
|
app_menu->add_action(GAction::create("Quit", { Mod_Alt, Key_F4 }, [] (const GAction&) {
|
|
|
dbgprintf("Terminal: Quit menu activated!\n");
|