1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:37:45 +00:00

IRC client setttings, Terminal settings, more WM settings

This commit is contained in:
Christopher Dumas 2019-05-25 16:43:15 -07:00 committed by Andreas Kling
parent 63486b8438
commit e3f81bce49
13 changed files with 89 additions and 53 deletions

View file

@ -52,12 +52,14 @@ void IRCAppWindow::setup_client()
m_client.join_channel("#test");
};
GInputBox input_box("Enter server:", "Connect to server", this);
auto result = input_box.exec();
if (result == GInputBox::ExecCancel)
::exit(0);
if (m_client.hostname() == "none") {
GInputBox input_box("Enter server:", "Connect to server", this);
auto result = input_box.exec();
if (result == GInputBox::ExecCancel)
::exit(0);
m_client.set_server(input_box.text_value(), 6667);
m_client.set_server(input_box.text_value(), 6667);
}
update_title();
bool success = m_client.connect();
ASSERT(success);

View file

@ -31,8 +31,12 @@ IRCClient::IRCClient()
: m_nickname("seren1ty")
, m_client_window_list_model(IRCWindowListModel::create(*this))
, m_log(IRCLogBuffer::create())
, m_config(CConfigFile::get_for_app("IRCClient"))
{
m_socket = new CTCPSocket(this);
m_nickname = m_config->read_entry("User", "Nickname", "seren1ty");
m_hostname = m_config->read_entry("Connection", "Server", "chat.freenode.net");
m_port = m_config->read_num_entry("Connection", "Port", 6667);
}
IRCClient::~IRCClient()
@ -53,8 +57,16 @@ void IRCClient::on_socket_connected()
send_user();
send_nick();
if (on_connect)
if (on_connect) {
auto channel_str = m_config->read_entry("Connection", "AutoJoinChannels", "#test");
dbgprintf("IRCClient: Channels to autojoin: %s\n", channel_str.characters());
auto channels = channel_str.split(',');
for (auto channel : channels) {
join_channel(channel);
dbgprintf("IRCClient: Auto joining channel: %s\n", channel.characters());
}
on_connect();
}
}
bool IRCClient::connect()

View file

@ -5,6 +5,7 @@
#include <AK/CircularQueue.h>
#include <AK/Function.h>
#include <LibCore/CTCPSocket.h>
#include <LibCore/CConfigFile.h>
#include "IRCLogBuffer.h"
#include "IRCWindow.h"
@ -111,7 +112,7 @@ private:
void on_socket_connected();
String m_hostname;
String m_hostname { "none" };
int m_port { 6667 };
CTCPSocket* m_socket { nullptr };
@ -127,4 +128,5 @@ private:
Retained<IRCWindowListModel> m_client_window_list_model;
Retained<IRCLogBuffer> m_log;
Retained<CConfigFile> m_config;
};

View file

@ -17,21 +17,30 @@
//#define TERMINAL_DEBUG
Terminal::Terminal(int ptm_fd)
Terminal::Terminal(int ptm_fd, RetainPtr<CConfigFile> config)
: m_ptm_fd(ptm_fd)
, m_notifier(ptm_fd, CNotifier::Read)
, m_config(config)
{
set_frame_shape(FrameShape::Container);
set_frame_shadow(FrameShadow::Sunken);
set_frame_thickness(2);
m_cursor_blink_timer.set_interval(500);
dbgprintf("Terminal: Load config file from %s\n", m_config->file_name().characters());
m_cursor_blink_timer.set_interval(m_config->read_num_entry("Text",
"CursorBlinkInterval",
500));
m_cursor_blink_timer.on_timeout = [this] {
m_cursor_blink_state = !m_cursor_blink_state;
update_cursor();
};
set_font(Font::default_fixed_width_font());
auto font_entry = m_config->read_entry("Text", "Font", "default");
if (font_entry == "default")
set_font(Font::default_fixed_width_font());
else
set_font(Font::load_from_file(font_entry));
m_notifier.on_ready_to_read = [this]{
byte buffer[BUFSIZ];
ssize_t nread = read(m_ptm_fd, buffer, sizeof(buffer));
@ -53,7 +62,8 @@ Terminal::Terminal(int ptm_fd)
m_line_height = font().glyph_height() + m_line_spacing;
set_size(80, 25);
set_size(m_config->read_num_entry("Window", "Width", 80),
m_config->read_num_entry("Window", "Height", 25));
}
Terminal::Line::Line(word columns)

View file

@ -8,12 +8,13 @@
#include <LibGUI/GFrame.h>
#include <LibCore/CNotifier.h>
#include <LibCore/CTimer.h>
#include <LibCore/CConfigFile.h>
class Font;
class Terminal final : public GFrame {
public:
explicit Terminal(int ptm_fd);
explicit Terminal(int ptm_fd, RetainPtr<CConfigFile> config);
virtual ~Terminal() override;
void create_window();
@ -26,6 +27,8 @@ public:
void set_opacity(float);
RetainPtr<CConfigFile> config() const { return m_config; }
private:
typedef Vector<unsigned, 4> ParamVector;
@ -42,6 +45,7 @@ private:
void invalidate_cursor();
void set_window_title(const String&);
void inject_string(const String&);
void unimplemented_escape();
void unimplemented_xterm_escape();
@ -165,4 +169,5 @@ private:
int m_glyph_width { 0 };
CTimer m_cursor_blink_timer;
RetainPtr<CConfigFile> m_config;
};

View file

@ -94,7 +94,8 @@ int main(int argc, char** argv)
window->set_double_buffering_enabled(false);
window->set_should_exit_event_loop_on_close(true);
Terminal terminal(ptm_fd);
RetainPtr<CConfigFile> config = CConfigFile::get_for_app("Terminal");
Terminal terminal(ptm_fd, config);
window->set_has_alpha_channel(true);
window->set_main_widget(&terminal);
window->move_to(300, 300);
@ -119,6 +120,9 @@ int main(int argc, char** argv)
slider->set_range(0, 100);
slider->set_value(100);
auto new_opacity = config->read_num_entry("Window", "Opacity", 255);
terminal.set_opacity((float)new_opacity / 255.0);
auto menubar = make<GMenuBar>();
auto app_menu = make<GMenu>("Terminal");
@ -136,6 +140,9 @@ int main(int argc, char** argv)
GFontDatabase::the().for_each_fixed_width_font([&] (const String& font_name) {
font_menu->add_action(GAction::create(font_name, [&terminal] (const GAction& action) {
terminal.set_font(GFontDatabase::the().get_by_name(action.text()));
auto metadata = GFontDatabase::the().get_metadata_by_name(action.text());
terminal.config()->write_entry("Text", "Font", metadata.path);
terminal.config()->sync();
terminal.force_repaint();
}));
});
@ -149,5 +156,6 @@ int main(int argc, char** argv)
app.set_menubar(move(menubar));
config->sync();
return app.exec();
}