diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-04-07 20:18:10 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-04-07 20:18:10 -0400 |
commit | 61cde0f7e173379b97823919899171c0ccac2353 (patch) | |
tree | 12ff41baeeb6e65350d80a5c19466cddfac272b8 | |
parent | a9399873fd048e0457c9de06c8b303aac8849099 (diff) | |
download | abaddon-portaudio-61cde0f7e173379b97823919899171c0ccac2353.tar.gz abaddon-portaudio-61cde0f7e173379b97823919899171c0ccac2353.zip |
fix more menu stuff
also reformat
-rw-r--r-- | src/windows/mainwindow.cpp | 226 | ||||
-rw-r--r-- | src/windows/mainwindow.hpp | 72 |
2 files changed, 154 insertions, 144 deletions
diff --git a/src/windows/mainwindow.cpp b/src/windows/mainwindow.cpp index 89e89f0..8eae9a3 100644 --- a/src/windows/mainwindow.cpp +++ b/src/windows/mainwindow.cpp @@ -12,113 +12,6 @@ MainWindow::MainWindow() add_accel_group(m_accels); - m_menu_discord.set_label("Discord"); - m_menu_discord.set_submenu(m_menu_discord_sub); - m_menu_discord_connect.set_label("Connect"); - m_menu_discord_connect.set_sensitive(false); - m_menu_discord_disconnect.set_label("Disconnect"); - m_menu_discord_disconnect.set_sensitive(false); - m_menu_discord_set_token.set_label("Set Token"); - m_menu_discord_join_guild.set_label("Accept Invite"); - m_menu_discord_join_guild.set_sensitive(false); - m_menu_discord_set_status.set_label("Set Status"); - m_menu_discord_set_status.set_sensitive(false); - m_menu_discord_add_recipient.set_label("Add user to DM"); - m_menu_discord_sub.append(m_menu_discord_connect); - m_menu_discord_sub.append(m_menu_discord_disconnect); - m_menu_discord_sub.append(m_menu_discord_set_token); - m_menu_discord_sub.append(m_menu_discord_join_guild); - m_menu_discord_sub.append(m_menu_discord_set_status); - m_menu_discord_sub.append(m_menu_discord_add_recipient); - m_menu_discord_sub.signal_popped_up().connect(sigc::mem_fun(*this, &MainWindow::OnDiscordSubmenuPopup)); // this gets called twice for some reason - m_menu_discord.set_submenu(m_menu_discord_sub); - - m_menu_file.set_label("File"); - m_menu_file.set_submenu(m_menu_file_sub); - m_menu_file_reload_css.set_label("Reload CSS"); - m_menu_file_clear_cache.set_label("Clear file cache"); - m_menu_file_sub.append(m_menu_file_reload_css); - m_menu_file_sub.append(m_menu_file_clear_cache); - - m_menu_view.set_label("View"); - m_menu_view.set_submenu(m_menu_view_sub); - m_menu_view_friends.set_label("Friends"); - m_menu_view_pins.set_label("Pins"); - m_menu_view_threads.set_label("Threads"); - m_menu_view_mark_guild_as_read.set_label("Mark Server as Read"); - m_menu_view_mark_guild_as_read.add_accelerator("activate", m_accels, GDK_KEY_Escape, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE); - m_menu_view_mark_all_as_read.set_label("Mark All as Read"); - m_menu_view_sub.append(m_menu_view_friends); - m_menu_view_sub.append(m_menu_view_pins); - m_menu_view_sub.append(m_menu_view_threads); - m_menu_view_sub.append(m_menu_view_mark_guild_as_read); - m_menu_view_sub.append(m_menu_view_mark_all_as_read); - m_menu_view_sub.signal_popped_up().connect(sigc::mem_fun(*this, &MainWindow::OnViewSubmenuPopup)); - - m_menu_bar.append(m_menu_file); - m_menu_bar.append(m_menu_discord); - m_menu_bar.append(m_menu_view); - m_menu_bar.show_all(); - - m_menu_discord_connect.signal_activate().connect([this] { - m_signal_action_connect.emit(); - }); - - m_menu_discord_disconnect.signal_activate().connect([this] { - m_signal_action_disconnect.emit(); - }); - - m_menu_discord_set_token.signal_activate().connect([this] { - m_signal_action_set_token.emit(); - }); - - m_menu_discord_join_guild.signal_activate().connect([this] { - m_signal_action_join_guild.emit(); - }); - - m_menu_file_reload_css.signal_activate().connect([this] { - m_signal_action_reload_css.emit(); - }); - - m_menu_discord_set_status.signal_activate().connect([this] { - m_signal_action_set_status.emit(); - }); - - m_menu_file_clear_cache.signal_activate().connect([] { - Abaddon::Get().GetImageManager().ClearCache(); - }); - - m_menu_discord_add_recipient.signal_activate().connect([this] { - m_signal_action_add_recipient.emit(GetChatActiveChannel()); - }); - - m_menu_view_friends.signal_activate().connect([this] { - UpdateChatActiveChannel(Snowflake::Invalid); - m_members.UpdateMemberList(); - m_content_stack.set_visible_child("friends"); - }); - - m_menu_view_pins.signal_activate().connect([this] { - m_signal_action_view_pins.emit(GetChatActiveChannel()); - }); - - m_menu_view_threads.signal_activate().connect([this] { - m_signal_action_view_threads.emit(GetChatActiveChannel()); - }); - - m_menu_view_mark_guild_as_read.signal_activate().connect([this] { - auto &discord = Abaddon::Get().GetDiscordClient(); - const auto channel_id = GetChatActiveChannel(); - const auto channel = discord.GetChannel(channel_id); - if (channel.has_value() && channel->GuildID.has_value()) { - discord.MarkGuildAsRead(*channel->GuildID, NOOP_CALLBACK); - } - }); - - m_menu_view_mark_all_as_read.signal_activate().connect([] { - Abaddon::Get().GetDiscordClient().MarkAllAsRead(NOOP_CALLBACK); - }); - m_content_box.set_hexpand(true); m_content_box.set_vexpand(true); m_content_box.show(); @@ -171,6 +64,8 @@ MainWindow::MainWindow() m_content_members_paned.show(); add(m_main_box); + + SetupMenu(); } void MainWindow::UpdateComponents() { @@ -247,7 +142,7 @@ void MainWindow::UpdateChatReactionRemove(Snowflake id, const Glib::ustring &par m_chat.UpdateReactions(id); } -void MainWindow::OnDiscordSubmenuPopup(const Gdk::Rectangle *flipped_rect, const Gdk::Rectangle *final_rect, bool flipped_x, bool flipped_y) { +void MainWindow::OnDiscordSubmenuPopup() { auto &discord = Abaddon::Get().GetDiscordClient(); auto channel_id = GetChatActiveChannel(); m_menu_discord_add_recipient.set_visible(false); @@ -267,7 +162,7 @@ void MainWindow::OnDiscordSubmenuPopup(const Gdk::Rectangle *flipped_rect, const m_menu_discord_set_status.set_sensitive(discord_active); } -void MainWindow::OnViewSubmenuPopup(const Gdk::Rectangle *flipped_rect, const Gdk::Rectangle *final_rect, bool flipped_x, bool flipped_y) { +void MainWindow::OnViewSubmenuPopup() { auto &discord = Abaddon::Get().GetDiscordClient(); const bool discord_active = discord.IsStarted(); @@ -298,6 +193,119 @@ MemberList *MainWindow::GetMemberList() { return &m_members; } +void MainWindow::SetupMenu() { + m_menu_discord.set_label("Discord"); + m_menu_discord.set_submenu(m_menu_discord_sub); + m_menu_discord_connect.set_label("Connect"); + m_menu_discord_connect.set_sensitive(false); + m_menu_discord_disconnect.set_label("Disconnect"); + m_menu_discord_disconnect.set_sensitive(false); + m_menu_discord_set_token.set_label("Set Token"); + m_menu_discord_join_guild.set_label("Accept Invite"); + m_menu_discord_join_guild.set_sensitive(false); + m_menu_discord_set_status.set_label("Set Status"); + m_menu_discord_set_status.set_sensitive(false); + m_menu_discord_add_recipient.set_label("Add user to DM"); + m_menu_discord_sub.append(m_menu_discord_connect); + m_menu_discord_sub.append(m_menu_discord_disconnect); + m_menu_discord_sub.append(m_menu_discord_set_token); + m_menu_discord_sub.append(m_menu_discord_join_guild); + m_menu_discord_sub.append(m_menu_discord_set_status); + m_menu_discord_sub.append(m_menu_discord_add_recipient); + m_menu_discord.set_submenu(m_menu_discord_sub); + + m_menu_file.set_label("File"); + m_menu_file.set_submenu(m_menu_file_sub); + m_menu_file_reload_css.set_label("Reload CSS"); + m_menu_file_clear_cache.set_label("Clear file cache"); + m_menu_file_sub.append(m_menu_file_reload_css); + m_menu_file_sub.append(m_menu_file_clear_cache); + + m_menu_view.set_label("View"); + m_menu_view.set_submenu(m_menu_view_sub); + m_menu_view_friends.set_label("Friends"); + m_menu_view_pins.set_label("Pins"); + m_menu_view_threads.set_label("Threads"); + m_menu_view_mark_guild_as_read.set_label("Mark Server as Read"); + m_menu_view_mark_guild_as_read.add_accelerator("activate", m_accels, GDK_KEY_Escape, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE); + m_menu_view_mark_all_as_read.set_label("Mark All as Read"); + m_menu_view_sub.append(m_menu_view_friends); + m_menu_view_sub.append(m_menu_view_pins); + m_menu_view_sub.append(m_menu_view_threads); + m_menu_view_sub.append(m_menu_view_mark_guild_as_read); + m_menu_view_sub.append(m_menu_view_mark_all_as_read); + + m_menu_bar.append(m_menu_file); + m_menu_bar.append(m_menu_discord); + m_menu_bar.append(m_menu_view); + m_menu_bar.show_all(); + + m_menu_bar.signal_event().connect([this](GdkEvent *ev) -> bool { + OnViewSubmenuPopup(); + OnDiscordSubmenuPopup(); + return false; + }); + + m_menu_discord_connect.signal_activate().connect([this] { + m_signal_action_connect.emit(); + }); + + m_menu_discord_disconnect.signal_activate().connect([this] { + m_signal_action_disconnect.emit(); + }); + + m_menu_discord_set_token.signal_activate().connect([this] { + m_signal_action_set_token.emit(); + }); + + m_menu_discord_join_guild.signal_activate().connect([this] { + m_signal_action_join_guild.emit(); + }); + + m_menu_file_reload_css.signal_activate().connect([this] { + m_signal_action_reload_css.emit(); + }); + + m_menu_discord_set_status.signal_activate().connect([this] { + m_signal_action_set_status.emit(); + }); + + m_menu_file_clear_cache.signal_activate().connect([] { + Abaddon::Get().GetImageManager().ClearCache(); + }); + + m_menu_discord_add_recipient.signal_activate().connect([this] { + m_signal_action_add_recipient.emit(GetChatActiveChannel()); + }); + + m_menu_view_friends.signal_activate().connect([this] { + UpdateChatActiveChannel(Snowflake::Invalid); + m_members.UpdateMemberList(); + m_content_stack.set_visible_child("friends"); + }); + + m_menu_view_pins.signal_activate().connect([this] { + m_signal_action_view_pins.emit(GetChatActiveChannel()); + }); + + m_menu_view_threads.signal_activate().connect([this] { + m_signal_action_view_threads.emit(GetChatActiveChannel()); + }); + + m_menu_view_mark_guild_as_read.signal_activate().connect([this] { + auto &discord = Abaddon::Get().GetDiscordClient(); + const auto channel_id = GetChatActiveChannel(); + const auto channel = discord.GetChannel(channel_id); + if (channel.has_value() && channel->GuildID.has_value()) { + discord.MarkGuildAsRead(*channel->GuildID, NOOP_CALLBACK); + } + }); + + m_menu_view_mark_all_as_read.signal_activate().connect([] { + Abaddon::Get().GetDiscordClient().MarkAllAsRead(NOOP_CALLBACK); + }); +} + MainWindow::type_signal_action_connect MainWindow::signal_action_connect() { return m_signal_action_connect; } diff --git a/src/windows/mainwindow.hpp b/src/windows/mainwindow.hpp index 5e48f8a..465564e 100644 --- a/src/windows/mainwindow.hpp +++ b/src/windows/mainwindow.hpp @@ -28,40 +28,9 @@ public: ChatWindow *GetChatWindow(); MemberList *GetMemberList(); -public: - typedef sigc::signal<void> type_signal_action_connect; - typedef sigc::signal<void> type_signal_action_disconnect; - typedef sigc::signal<void> type_signal_action_set_token; - typedef sigc::signal<void> type_signal_action_reload_css; - typedef sigc::signal<void> type_signal_action_join_guild; - typedef sigc::signal<void> type_signal_action_set_status; - // this should probably be removed - typedef sigc::signal<void, Snowflake> type_signal_action_add_recipient; // channel id - typedef sigc::signal<void, Snowflake> type_signal_action_view_pins; // channel id - typedef sigc::signal<void, Snowflake> type_signal_action_view_threads; // channel id - - type_signal_action_connect signal_action_connect(); - type_signal_action_disconnect signal_action_disconnect(); - type_signal_action_set_token signal_action_set_token(); - type_signal_action_reload_css signal_action_reload_css(); - type_signal_action_join_guild signal_action_join_guild(); - type_signal_action_set_status signal_action_set_status(); - type_signal_action_add_recipient signal_action_add_recipient(); - type_signal_action_view_pins signal_action_view_pins(); - type_signal_action_view_threads signal_action_view_threads(); - -protected: - type_signal_action_connect m_signal_action_connect; - type_signal_action_disconnect m_signal_action_disconnect; - type_signal_action_set_token m_signal_action_set_token; - type_signal_action_reload_css m_signal_action_reload_css; - type_signal_action_join_guild m_signal_action_join_guild; - type_signal_action_set_status m_signal_action_set_status; - type_signal_action_add_recipient m_signal_action_add_recipient; - type_signal_action_view_pins m_signal_action_view_pins; - type_signal_action_view_threads m_signal_action_view_threads; +private: + void SetupMenu(); -protected: Gtk::Box m_main_box; Gtk::Box m_content_box; Gtk::Paned m_chan_content_paned; @@ -85,7 +54,7 @@ protected: Gtk::MenuItem m_menu_discord_join_guild; Gtk::MenuItem m_menu_discord_set_status; Gtk::MenuItem m_menu_discord_add_recipient; // move me somewhere else some day - void OnDiscordSubmenuPopup(const Gdk::Rectangle *flipped_rect, const Gdk::Rectangle *final_rect, bool flipped_x, bool flipped_y); + void OnDiscordSubmenuPopup(); Gtk::MenuItem m_menu_file; Gtk::Menu m_menu_file_sub; @@ -99,5 +68,38 @@ protected: Gtk::MenuItem m_menu_view_threads; Gtk::MenuItem m_menu_view_mark_guild_as_read; Gtk::MenuItem m_menu_view_mark_all_as_read; - void OnViewSubmenuPopup(const Gdk::Rectangle *flipped_rect, const Gdk::Rectangle *final_rect, bool flipped_x, bool flipped_y); + void OnViewSubmenuPopup(); + +public: + typedef sigc::signal<void> type_signal_action_connect; + typedef sigc::signal<void> type_signal_action_disconnect; + typedef sigc::signal<void> type_signal_action_set_token; + typedef sigc::signal<void> type_signal_action_reload_css; + typedef sigc::signal<void> type_signal_action_join_guild; + typedef sigc::signal<void> type_signal_action_set_status; + // this should probably be removed + typedef sigc::signal<void, Snowflake> type_signal_action_add_recipient; // channel id + typedef sigc::signal<void, Snowflake> type_signal_action_view_pins; // channel id + typedef sigc::signal<void, Snowflake> type_signal_action_view_threads; // channel id + + type_signal_action_connect signal_action_connect(); + type_signal_action_disconnect signal_action_disconnect(); + type_signal_action_set_token signal_action_set_token(); + type_signal_action_reload_css signal_action_reload_css(); + type_signal_action_join_guild signal_action_join_guild(); + type_signal_action_set_status signal_action_set_status(); + type_signal_action_add_recipient signal_action_add_recipient(); + type_signal_action_view_pins signal_action_view_pins(); + type_signal_action_view_threads signal_action_view_threads(); + +private: + type_signal_action_connect m_signal_action_connect; + type_signal_action_disconnect m_signal_action_disconnect; + type_signal_action_set_token m_signal_action_set_token; + type_signal_action_reload_css m_signal_action_reload_css; + type_signal_action_join_guild m_signal_action_join_guild; + type_signal_action_set_status m_signal_action_set_status; + type_signal_action_add_recipient m_signal_action_add_recipient; + type_signal_action_view_pins m_signal_action_view_pins; + type_signal_action_view_threads m_signal_action_view_threads; }; |