diff --git a/src/browser_app.cc b/src/browser_app.cc index de96dfc..8304e67 100644 --- a/src/browser_app.cc +++ b/src/browser_app.cc @@ -56,24 +56,22 @@ Browser::Browser() : Gtk::Box(Gtk::Orientation::VERTICAL) { throw ex; } - // Get the GtkBuilder-instantiated nav and header: - header = Gtk::manage(ref_builder->get_widget("header_bar")); - // Get the GtkBuilder-instantiated browser_scroller, and connect WebKitWebView with home site loaded - web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); auto web_view_widget {Glib::wrap(GTK_WIDGET(web_view))}; g_object_ref_sink(web_view_widget->gobj()); web_view_widget->set_name("browser_webview"); web_view_widget->set_vexpand(true); - // Get the GtkBuilder-instantiated buttons, and connect a signal handler - back_button = ref_builder->get_widget("back_button"); + // Get the GtkBuilder-instantiated widgets + header = Gtk::manage(ref_builder->get_widget("header_bar")); + back_button = ref_builder->get_widget("back_button"); forward_button = ref_builder->get_widget("forward_button"); - home_button = ref_builder->get_widget("home_button"); - reload_button = ref_builder->get_widget("reload_button"); - uri_entry = ref_builder->get_widget("header_entry"); - enter_button = ref_builder->get_widget("enter_button"); - menu_button = ref_builder->get_widget("header_menu"); + home_button = ref_builder->get_widget("home_button"); + reload_button = ref_builder->get_widget("reload_button"); + uri_entry = ref_builder->get_widget("header_entry"); + enter_button = ref_builder->get_widget("enter_button"); + menu_button = ref_builder->get_widget("header_menu"); // Add Callbacks if(back_button) [[likely]] diff --git a/src/chat_app.cc b/src/chat_app.cc index f93dcab..be940aa 100644 --- a/src/chat_app.cc +++ b/src/chat_app.cc @@ -8,8 +8,11 @@ #include -Session::Session(const std::string &host, unsigned port) - : host(host), port(port), send_timer(std::make_unique(ioc)), socket(ioc) { +Session::Session(const std::string &host, unsigned port) : + host (host), + port (port), + send_timer (std::make_unique(ioc)), + socket (ioc) { if ( port > 65535 ) { std::cerr << "Port out of bounds (0-65535)" << std::endl; throw std::out_of_range("Port out of bounds (0-65535)"); @@ -120,12 +123,14 @@ void Session::set_poster(std::function message_poster) void Session::set_disconnecter(std::function new_disconnecter) { disconnecter = std::move(new_disconnecter); } -Server::Client::Client(asio::io_context& ioc, unsigned id) - : socket(ioc), timer(ioc), nickname("User" + std::to_string(id)) +Server::Client::Client(asio::io_context& ioc, unsigned id) : + socket (ioc), + timer (ioc), + nickname ("User" + std::to_string(id)) { timer.expires_at(asio::steady_timer::time_point::min()); } -Server::Server(unsigned port) - : acceptor(ioc, tcp::endpoint(tcp::v4(), static_cast(port))) { +Server::Server(unsigned port) : + acceptor(ioc, tcp::endpoint(tcp::v4(), static_cast(port))) { asio::co_spawn(ioc, accept_loop(), asio::detached); ioc_thread = std::thread([this](){ ioc.run(); }); std::cout << "[server] listening on port " << port << "\n"; @@ -145,7 +150,7 @@ Server::~Server() noexcept { std::cout << "[server] stopped\n"; } -void Server::broadcast(const std::string& line, Client* origin = nullptr) { +void Server::broadcast(const std::string& line, Client* origin) { for (auto& client : clients) { if (client.get() == origin) continue; client->buf += line; @@ -250,17 +255,17 @@ Chat::Chat() : Gtk::Box(Gtk::Orientation::VERTICAL) { // Get the GtkBuilder-instantiated objects: auto header {Gtk::manage(ref_builder->get_widget("header_box"))}; - home_button = ref_builder->get_widget("home_button"); - connect_button = ref_builder->get_widget("connect_button"); - message_button = ref_builder->get_widget("message_button"); + home_button = ref_builder->get_widget("home_button"); + connect_button = ref_builder->get_widget("connect_button"); + message_button = ref_builder->get_widget("message_button"); - ip_entry = ref_builder->get_widget("ip_entry"); - port_entry = ref_builder->get_widget("port_entry"); - message_entry = ref_builder->get_widget("message_entry"); + ip_entry = ref_builder->get_widget("ip_entry"); + port_entry = ref_builder->get_widget("port_entry"); + message_entry = ref_builder->get_widget("message_entry"); - chat_scrolled = Gtk::manage(ref_builder->get_widget("chat_scrolled")); - chat_box = Gtk::manage(ref_builder->get_widget("chat_box")); - footer_box = Gtk::manage(ref_builder->get_widget("footer_box")); + chat_scrolled = Gtk::manage(ref_builder->get_widget("chat_scrolled")); + chat_box = Gtk::manage(ref_builder->get_widget("chat_box")); + footer_box = Gtk::manage(ref_builder->get_widget("footer_box")); // Add Callbacks if(home_button) [[likely]] @@ -306,7 +311,7 @@ inline void Chat::session_connection() { // Disconnect if connected if (!connect_button->get_label().compare("Disconnect")) { session = nullptr; - server = nullptr; + server = nullptr; std::cout << "\n[disconnected from server due to user request]\n"; connect_button->set_label("Connect"); diff --git a/src/fractal_app.cc b/src/fractal_app.cc index 9ab8914..8d76825 100644 --- a/src/fractal_app.cc +++ b/src/fractal_app.cc @@ -30,15 +30,26 @@ int julia(double cr, double ci, int max_iter, const std::vector consts return max_iter; } -void FractalArea::set_selection(const std::string new_selection) { selection = new_selection; queue_draw(); } -void FractalArea::set_max_iter(int iter) { max_iter = iter; queue_draw(); } -void FractalArea::set_consts(double cr, double ci) { const_r = cr; const_i = ci; queue_draw(); } +void FractalArea::set_selection(const std::string new_selection) + { selection = new_selection; queue_draw(); } -void FractalArea::set_r(double min, double max) { r_lower_level = min/100; r_upper_level = max/100; queue_draw(); } -void FractalArea::set_g(double min, double max) { g_lower_level = min/100; g_upper_level = max/100; queue_draw(); } -void FractalArea::set_b(double min, double max) { b_lower_level = min/100; b_upper_level = max/100; queue_draw(); } +void FractalArea::set_max_iter(int iter) + { max_iter = iter; queue_draw(); } -void FractalArea::reset() { cx = -0.5; cy = 0.0; range = 3.5; queue_draw(); } +void FractalArea::set_consts(double cr, double ci) + { const_r = cr; const_i = ci; queue_draw(); } + +void FractalArea::set_r(double min, double max) + { r_lower_level = min/100; r_upper_level = max/100; queue_draw(); } + +void FractalArea::set_g(double min, double max) + { g_lower_level = min/100; g_upper_level = max/100; queue_draw(); } + +void FractalArea::set_b(double min, double max) + { b_lower_level = min/100; b_upper_level = max/100; queue_draw(); } + +void FractalArea::reset() + { cx = -0.5; cy = 0.0; range = 3.5; queue_draw(); } void FractalArea::iter_to_rgb(int iter, int max_iter, uint8_t &r, uint8_t &g, uint8_t &b) { if (iter == max_iter) { r = g = b = 0; return; } @@ -55,12 +66,16 @@ void FractalArea::iter_to_rgb(int iter, int max_iter, uint8_t &r, uint8_t &g, ui } -FractalArea::FractalArea(const std::string selection) : Gtk::DrawingArea(), - cx{-0.5}, cy{0}, range{3.5}, - drag_start_cx{}, drag_start_cy{}, - surface{}, selection{selection}, - fractal_map{ { "Julia", julia }, { "Mandelbrot", mandelbrot } - } { +FractalArea::FractalArea(const std::string selection) : + Gtk::DrawingArea(), + selection (selection), + cx (-0.5), + cy (0.0), + range (3.5), + drag_start_cx (), + drag_start_cy (), + surface (), + fractal_map ({ { "Julia", julia }, { "Mandelbrot", mandelbrot } }) { set_expand(true); set_draw_func(sigc::mem_fun(*this, &FractalArea::on_draw)); @@ -157,15 +172,15 @@ FractalBox::FractalBox() : Gtk::Box(Gtk::Orientation::HORIZONTAL) { } // Get the GtkBuilder-instantiated nav and header: - menu = Gtk::manage(ref_builder->get_widget("menu_bar")); + menu = Gtk::manage(ref_builder->get_widget("menu_bar")); // Get the GtkBuilder-instantiated buttons, and connect a signal handler - reset_button = ref_builder->get_widget("reset_button"); - save_button = ref_builder->get_widget("save_button"); + reset_button = ref_builder->get_widget("reset_button"); + save_button = ref_builder->get_widget("save_button"); fractal_dropdown = ref_builder->get_widget("fractal_dropdown"); - consts_box = ref_builder->get_widget("consts_box"); + consts_box = ref_builder->get_widget("consts_box"); - fractal_area = Gtk::manage(new FractalArea()); + fractal_area = Gtk::manage(new FractalArea()); // Add Callbacks if(reset_button) [[likely]] @@ -203,6 +218,7 @@ FractalBox::FractalBox() : Gtk::Box(Gtk::Orientation::HORIZONTAL) { }); fractal_area->set_max_iter(static_cast(iter_scale->get_value())); } + r_min_scale = ref_builder->get_widget("r_scale_min"); r_max_scale = ref_builder->get_widget("r_scale_max"); if(r_min_scale && r_max_scale) [[likely]] { @@ -213,6 +229,7 @@ FractalBox::FractalBox() : Gtk::Box(Gtk::Orientation::HORIZONTAL) { r_max_scale->signal_value_changed().connect(r_change); fractal_area->set_r(r_min_scale->get_value(), r_max_scale->get_value()); } + g_min_scale = ref_builder->get_widget("g_scale_min"); g_max_scale = ref_builder->get_widget("g_scale_max"); if(g_min_scale && g_max_scale) [[likely]] { @@ -223,6 +240,7 @@ FractalBox::FractalBox() : Gtk::Box(Gtk::Orientation::HORIZONTAL) { g_max_scale->signal_value_changed().connect(g_change); fractal_area->set_g(g_min_scale->get_value(), g_max_scale->get_value()); } + b_min_scale = ref_builder->get_widget("b_scale_min"); b_max_scale = ref_builder->get_widget("b_scale_max"); if(b_min_scale && b_max_scale) [[likely]] { @@ -233,6 +251,7 @@ FractalBox::FractalBox() : Gtk::Box(Gtk::Orientation::HORIZONTAL) { b_max_scale->signal_value_changed().connect(b_change); fractal_area->set_b(b_min_scale->get_value(), b_max_scale->get_value()); } + const_r_scale = ref_builder->get_widget("const_r_scale"); const_i_scale = ref_builder->get_widget("const_i_scale"); if(const_r_scale && const_i_scale) [[likely]] { diff --git a/src/include/browser_app.hpp b/src/include/browser_app.hpp index 8c981b2..acdf327 100644 --- a/src/include/browser_app.hpp +++ b/src/include/browser_app.hpp @@ -16,15 +16,17 @@ class Browser : public Gtk::Box { friend class BrowserTest; friend class BrowserTest_BrowserFunctionalTest_Test; - WebKitWebView *web_view{}; - Gtk::Box *header{}; - Gtk::Button *back_button{}, *forward_button{}, - *home_button{}, *reload_button{}, - *enter_button{}; - Gtk::Entry *uri_entry{}; - Gtk::MenuButton *menu_button{}; + Gtk::Label *status_label{}; - Gtk::Label *status_label{}; + WebKitWebView *web_view{}; + Gtk::Box *header{}; + Gtk::Button *back_button{}; + Gtk::Button *forward_button{}; + Gtk::Button *home_button{}; + Gtk::Button *reload_button{}; + Gtk::Button *enter_button{}; + Gtk::Entry *uri_entry{}; + Gtk::MenuButton *menu_button{}; /** * @brief Removes initial http(s)?:// and www. substrings from uri. diff --git a/src/include/chat_app.hpp b/src/include/chat_app.hpp index d594467..dee61a3 100644 --- a/src/include/chat_app.hpp +++ b/src/include/chat_app.hpp @@ -114,13 +114,13 @@ class Server { asio::io_context ioc; tcp::acceptor acceptor; - std::thread ioc_thread; + std::thread ioc_thread{}; unsigned current_id{}; std::list> clients{}; /* Queue line for every client except origin, then wake their sender. */ - void broadcast(const std::string&, Client*); + void broadcast(const std::string&, Client* = nullptr); /** * @brief Sender function to run so the session sends data. diff --git a/src/include/fractal_app.hpp b/src/include/fractal_app.hpp index cf89b18..924b2fb 100644 --- a/src/include/fractal_app.hpp +++ b/src/include/fractal_app.hpp @@ -18,7 +18,8 @@ * * @return Number of iterations until the value diverges. */ -int mandelbrot(double cr, double ci, int max_iter, const std::vector = {}); + +int mandelbrot(double, double, int, const std::vector = {}); /** * @brief Julia Fractal algorithm * @@ -45,17 +46,24 @@ class FractalArea : public Gtk::DrawingArea { friend class FractalTest; friend class FractalTest_FractalFunctionalTest_Test; - double cx{}, cy{}, range{}, - drag_start_cx{}, drag_start_cy{}, - const_r{}, const_i{}, - r_lower_level{}, r_upper_level{}, - g_lower_level{}, g_upper_level{}, - b_lower_level{}, b_upper_level{}; - int max_iter{}; + std::string selection; + double cx{}; + double cy{}; + double range{}; + double drag_start_cx{}; + double drag_start_cy{}; + double const_r{}; + double const_i{}; + double r_lower_level{}; + double r_upper_level{}; + double g_lower_level{}; + double g_upper_level{}; + double b_lower_level{}; + double b_upper_level{}; + int max_iter{}; Cairo::RefPtr surface; - std::string selection; std::unordered_map)>> fractal_map; /** @@ -80,6 +88,16 @@ class FractalArea : public Gtk::DrawingArea { */ FractalArea(const std::string selection = "Julia"); + /** + * @brief Draws the fractal needed into the Cairo Context. + * + * Whenever the drawing area needs to redraw, this slot will be called. + * It will draw the fractal using the current settings into the provided Cairo Context with threading support. + * + * @param[in] cr: Cairo Context to draw to. + * @param[in] w: Width of the drawing area. + * @param[in] h: Height of the drawing area. + */ void on_draw(const Cairo::RefPtr&, int, int); /** @@ -90,12 +108,14 @@ class FractalArea : public Gtk::DrawingArea { * @param[in] new_selection: New fractal algorithm selection to use next. */ void set_selection(const std::string new_selection); + /** * @brief Sets the max_iter variable for fractal rsolution. * * @param[in] iter: New max_iter to use in the fractal algorithms. */ void set_max_iter(int iter); + /** * @brief Sets ranges for the blue channel in the iter_to_rgb function. * @@ -103,6 +123,7 @@ class FractalArea : public Gtk::DrawingArea { * @param[in] max: New upper limit on the R spectrum to use. */ void set_r(double min, double max); + /** * @brief Sets ranges for the blue channel in the iter_to_rgb function. * @@ -110,6 +131,7 @@ class FractalArea : public Gtk::DrawingArea { * @param[in] max: New upper limit on the G spectrum to use. */ void set_g(double min, double max); + /** * @brief Sets ranges for the blue channel in the iter_to_rgb function. * @@ -117,6 +139,7 @@ class FractalArea : public Gtk::DrawingArea { * @param[in] max: New upper limit on the B spectrum to use. */ void set_b(double min, double max); + /** * @brief Sets the Julia algorithm constants. * @@ -145,18 +168,23 @@ class FractalBox : public Gtk::Box { friend class FractalTest; friend class FractalTest_FractalFunctionalTest_Test; - Gtk::Box *menu{}, *consts_box{}; - Gtk::Button *reset_button{}, *save_button{}; + std::string selection{}; + Gtk::Box *menu{}; + Gtk::Box *consts_box{}; + Gtk::Button *reset_button{}; + Gtk::Button *save_button{}; Gtk::DropDown *fractal_dropdown{}; - FractalArea *fractal_area{}; - Gtk::Label *status_label{}; - Gtk::Scale *iter_scale{}, - *const_r_scale{}, *const_i_scale{}, - *r_min_scale{}, *r_max_scale{}, - *g_min_scale{}, *g_max_scale{}, - *b_min_scale{}, *b_max_scale{}; - - std::string selection{}; + FractalArea *fractal_area{}; + Gtk::Label *status_label{}; + Gtk::Scale *iter_scale{}; + Gtk::Scale *const_r_scale{}; + Gtk::Scale *const_i_scale{}; + Gtk::Scale *r_min_scale{}; + Gtk::Scale *r_max_scale{}; + Gtk::Scale *g_min_scale{}; + Gtk::Scale *g_max_scale{}; + Gtk::Scale *b_min_scale{}; + Gtk::Scale *b_max_scale{}; /** * @brief Get Main Application status label. diff --git a/src/include/main_application.hpp b/src/include/main_application.hpp index b6d8f9f..534eee2 100644 --- a/src/include/main_application.hpp +++ b/src/include/main_application.hpp @@ -39,11 +39,12 @@ class MainApplication : public Gtk::Application { void on_activate() override; public: + Gtk::Label *status_label{}; + /** * @brief Creates RefPtr using class constructor. * * @return New MainApplication object RefPtr. */ static Glib::RefPtr create(); - Gtk::Label *status_label{}; }; diff --git a/src/main_application.cc b/src/main_application.cc index 3c4dd81..aacbac6 100644 --- a/src/main_application.cc +++ b/src/main_application.cc @@ -15,7 +15,6 @@ Glib::RefPtr MainApplication::create() { } void MainApplication::on_activate() { - // The application has been started, so let's show a window. create_window()->present(); } @@ -37,10 +36,11 @@ Gtk::ApplicationWindow* MainApplication::create_window() { status_label = Gtk::manage(ref_builder->get_widget("main_status_label")); - main_window = Gtk::manage(ref_builder->get_widget("main_window")); + main_window = Gtk::manage(ref_builder->get_widget("main_window")); auto main_notebook {Gtk::manage(ref_builder->get_widget("main_notebook"))}; - auto main_box {Gtk::manage(ref_builder->get_widget("Chat"))}; + auto main_box {Gtk::manage(ref_builder->get_widget("Chat"))}; + selected_app = Gtk::manage(new Chat()); main_box->append(*selected_app); diff --git a/tests/browser_app_tests.cc b/tests/browser_app_tests.cc index 279ebb8..c3c7792 100644 --- a/tests/browser_app_tests.cc +++ b/tests/browser_app_tests.cc @@ -6,11 +6,17 @@ #include -BrowserTest::BrowserTest() : browser (Gtk::manage(new Browser())), - web_view {browser->web_view}, header {browser->header}, back_button {browser->back_button}, - forward_button {browser->forward_button}, home_button {browser->home_button}, - reload_button {browser->reload_button}, enter_button {browser->enter_button}, - uri_entry {browser->uri_entry}, menu_button {browser->menu_button} {}; +BrowserTest::BrowserTest() : + browser (Gtk::manage(new Browser())), + web_view (browser->web_view), + header (browser->header), + back_button (browser->back_button), + forward_button (browser->forward_button), + home_button (browser->home_button), + reload_button (browser->reload_button), + enter_button (browser->enter_button), + uri_entry (browser->uri_entry), + menu_button (browser->menu_button) {}; TEST_F(BrowserTest, BrowserStructuralTest) { ASSERT_THAT(browser, ::testing::NotNull()); diff --git a/tests/chat_app_tests.cc b/tests/chat_app_tests.cc index 4497608..22cfab3 100644 --- a/tests/chat_app_tests.cc +++ b/tests/chat_app_tests.cc @@ -6,12 +6,18 @@ #include -ChatTest::ChatTest() : chat (Gtk::manage(new Chat())), - home_button{chat->home_button}, connect_button{chat->connect_button}, - message_button{chat->message_button}, ip_entry{chat->ip_entry}, - port_entry{chat->port_entry}, message_entry{chat->message_entry}, - chat_box{chat->chat_box}, footer_box{chat->footer_box}, - chat_scrolled{chat->chat_scrolled}, status_label{chat->status_label} {}; +ChatTest::ChatTest() : + chat (Gtk::manage(new Chat())), + home_button (chat->home_button), + connect_button (chat->connect_button), + message_button (chat->message_button), + ip_entry (chat->ip_entry), + port_entry (chat->port_entry), + message_entry (chat->message_entry), + chat_box (chat->chat_box), + footer_box (chat->footer_box), + chat_scrolled (chat->chat_scrolled), + status_label (chat->status_label) {}; TEST_F(ChatTest, ChatStructuralTest) { ASSERT_THAT(chat, ::testing::NotNull()); diff --git a/tests/fractal_app_tests.cc b/tests/fractal_app_tests.cc index a828a96..a0b7822 100644 --- a/tests/fractal_app_tests.cc +++ b/tests/fractal_app_tests.cc @@ -8,15 +8,23 @@ FractalTest::FractalTest() : fractal (Gtk::manage(new FractalBox())), - menu{fractal->menu}, consts_box{fractal->consts_box}, - reset_button{fractal->reset_button}, save_button{fractal->save_button}, - fractal_dropdown{fractal->fractal_dropdown}, fractal_area{fractal->fractal_area}, - status_label{fractal->status_label}, iter_scale{fractal->iter_scale}, - const_r_scale{fractal->const_r_scale}, const_i_scale{fractal->const_i_scale}, - r_min_scale{fractal->r_min_scale}, r_max_scale{fractal->r_max_scale}, - g_min_scale{fractal->g_min_scale}, g_max_scale{fractal->g_max_scale}, - b_min_scale{fractal->b_min_scale}, b_max_scale{fractal->b_max_scale}, - selection{fractal->selection} {}; + menu (fractal->menu), + consts_box (fractal->consts_box), + reset_button (fractal->reset_button), + save_button (fractal->save_button), + fractal_dropdown (fractal->fractal_dropdown), + fractal_area (fractal->fractal_area), + status_label (fractal->status_label), + iter_scale (fractal->iter_scale), + const_r_scale (fractal->const_r_scale), + const_i_scale (fractal->const_i_scale), + r_min_scale (fractal->r_min_scale), + r_max_scale (fractal->r_max_scale), + g_min_scale (fractal->g_min_scale), + g_max_scale (fractal->g_max_scale), + b_min_scale (fractal->b_min_scale), + b_max_scale (fractal->b_max_scale), + selection (fractal->selection) {}; TEST_F(FractalTest, FractalStructuralTest) { ASSERT_THAT(fractal, ::testing::NotNull()); diff --git a/tests/include/tests.hpp b/tests/include/tests.hpp index 0c1be18..dad9a6a 100644 --- a/tests/include/tests.hpp +++ b/tests/include/tests.hpp @@ -44,13 +44,15 @@ class BrowserTest : public testing::Test { * */ BrowserTest(); - Browser *browser{}; - WebKitWebView *web_view{}; - Gtk::Box *header{}; - Gtk::Button *back_button{},*forward_button{}, - *home_button{}, *reload_button{}, - *enter_button{}; - Gtk::Entry *uri_entry{}; + Browser *browser{}; + WebKitWebView *web_view{}; + Gtk::Box *header{}; + Gtk::Button *back_button{}; + Gtk::Button *forward_button{}; + Gtk::Button *home_button{}; + Gtk::Button *reload_button{}; + Gtk::Button *enter_button{}; + Gtk::Entry *uri_entry{}; Gtk::MenuButton *menu_button{}; }; @@ -70,17 +72,23 @@ class FractalTest : public testing::Test { * */ FractalTest(); - FractalBox *fractal{}; - Gtk::Box *menu{}, *consts_box{}; - Gtk::Button *reset_button{}, *save_button{}; + FractalBox *fractal{}; + Gtk::Box *menu{}; + Gtk::Box *consts_box{}; + Gtk::Button *reset_button{}; + Gtk::Button *save_button{}; Gtk::DropDown *fractal_dropdown{}; - FractalArea *fractal_area{}; - Gtk::Label *status_label{}; - Gtk::Scale *iter_scale{}, - *const_r_scale{}, *const_i_scale{}, - *r_min_scale{}, *r_max_scale{}, - *g_min_scale{}, *g_max_scale{}, - *b_min_scale{}, *b_max_scale{}; + FractalArea *fractal_area{}; + Gtk::Label *status_label{}; + Gtk::Scale *iter_scale{}; + Gtk::Scale *const_r_scale{}; + Gtk::Scale *const_i_scale{}; + Gtk::Scale *r_min_scale{}; + Gtk::Scale *r_max_scale{}; + Gtk::Scale *g_min_scale{}; + Gtk::Scale *g_max_scale{}; + Gtk::Scale *b_min_scale{}; + Gtk::Scale *b_max_scale{}; std::string selection{}; }; @@ -103,9 +111,14 @@ class ChatTest : public testing::Test { Chat *chat{}; - Gtk::Button *home_button{}, *connect_button{}, *message_button{}; - Gtk::Entry *ip_entry{}, *port_entry{}, *message_entry{}; - Gtk::Box *chat_box{}, *footer_box{}; + Gtk::Button *home_button{}; + Gtk::Button *connect_button{}; + Gtk::Button *message_button{}; + Gtk::Entry *ip_entry{}; + Gtk::Entry *port_entry{}; + Gtk::Entry *message_entry{}; + Gtk::Box *chat_box{}; + Gtk::Box *footer_box{}; Gtk::ScrolledWindow *chat_scrolled{}; - Gtk::Label *status_label{}; + Gtk::Label *status_label{}; };