void ChatPanel::SetChannel(Channel* chan) { ASSERT_LOGIC(this, "this==null"); ASSERT_LOGIC(m_type == CPT_Channel, "Not of type channel"); if ((chan == 0) && (m_channel != 0)) { m_channel->uidata.panel = 0; } if (m_nicklist != nullptr) { m_nicklist->ClearUsers(); UpdateUserCountLabel(); } if (chan != 0) { chan->uidata.panel = this; if (chan != m_channel) { SetLogFile(TowxString(chan->GetName())); } } m_channel = chan; //set back to false so when we rejoin this channel SetTopic doesn;t update the chan icon if (!m_channel) m_topic_set = false; }
void ChatPanel::Parted(User& who, const wxString& message) { // assert( m_type == CPT_Channel || m_type == CPT_Server || m_type == CPT_Battle || m_type == CPT_User ); const bool me_parted = m_channel && &who == &m_channel->GetMe(); const wxString nick = TowxString(who.GetNick()); const bool wasactive = m_active_users.erase(nick) > 0; if (m_display_joinitem || (wasactive && !who.IsBot())) { OutputLine(_T( "** " ) + wxString::Format(_("%s left %s (%s)."), nick.c_str(), GetChatTypeStr().c_str(), message.c_str()), sett().GetChatColorJoinPart()); } if (m_type == CPT_Channel) { if (m_channel == 0) return; if (me_parted) { m_channel->panel = nullptr; SetChannel(0); return; } if (m_display_joinitem) { // change the image of the tab to show new events SetIconHighlight(highlight_join_leave); } } else if (m_type == CPT_Server && me_parted) return; if (m_show_nick_list && (m_nicklist != nullptr)) { m_nicklist->RemoveUser(who); UpdateUserCountLabel(); } // Also remove the User from the TextCompletionDatabase textcompletiondatabase.Delete_Mapping(TowxString(who.GetNick())); }
void ChatPanel::OnChannelJoin(User& who) { // assert( m_type == CPT_Channel || m_type == CPT_Server || m_type == CPT_Battle || m_type == CPT_User ); if (m_show_nick_list && (m_nicklist != nullptr)) { m_nicklist->AddUser(who); UpdateUserCountLabel(); } if (m_display_joinitem) { OutputLine(_T( "** " ) + wxString::Format(_("%s joined %s."), TowxString(who.GetNick()).c_str(), GetChatTypeStr().c_str()), sett().GetChatColorJoinPart()); } // Also add the User to the TextCompletionDatabase textcompletiondatabase.Insert_Mapping(TowxString(who.GetNick()), TowxString(who.GetNick())); }
void ChatPanel::SetServer(IServer* serv) { ASSERT_LOGIC(m_type == CPT_Server, "Not of type server"); if (m_nicklist != nullptr) { m_nicklist->ClearUsers(); UpdateUserCountLabel(); } if (serv != 0) { SetLogFile(_T("server")); serv->uidata.panel = this; if (m_server != nullptr) { m_server->uidata.panel = 0; } m_server = serv; } }
void ChatPanel::Joined(User& who) { if (m_display_joinitem) { // change the image of the tab to show new events if (m_type == CPT_Channel) { SetIconHighlight(highlight_join_leave); } OutputLine(_T( "** " ) + wxString::Format(_("%s joined %s."), TowxString(who.GetNick()).c_str(), GetChatTypeStr().c_str()), sett().GetChatColorJoinPart()); } if (m_show_nick_list && (m_nicklist != nullptr)) { m_nicklist->AddUser(who); UpdateUserCountLabel(); } // Also add the User to the TextCompletionDatabase textcompletiondatabase.Insert_Mapping(TowxString(who.GetNick()), TowxString(who.GetNick())); }
void ChatPanel::OnLogin(wxCommandEvent& /*data*/) { switch (m_type) { case CPT_Channel: if (m_channel) { m_channel->Rejoin(); } break; case CPT_Server: m_nicklist->SetUsers(m_server->GetUserList().GetUsers()); UpdateUserCountLabel(); case CPT_Battle: case CPT_User: case CPT_Debug: break; } }
void ChatPanel::OnFilterUsers(wxCommandEvent& /*unused*/) { m_nicklist->SetUsersFilterString(m_nick_filter->GetValue()); UpdateUserCountLabel(); }
void ChatPanel::CreateControls() { // Creating sizers m_main_sizer = new wxBoxSizer(wxHORIZONTAL); m_chat_sizer = new wxBoxSizer(wxVERTICAL); m_say_sizer = new wxBoxSizer(wxHORIZONTAL); if (m_show_nick_list) { m_splitter = new wxSplitterWindow(this, -1, wxDefaultPosition, wxDefaultSize, wxSP_3D); m_splitter->SetSashGravity(0.9); m_nick_panel = new wxPanel(m_splitter, -1); m_chat_panel = new wxPanel(m_splitter, -1); m_nick_sizer = new wxBoxSizer(wxVERTICAL); m_usercount_label = new wxStaticText(m_nick_panel, wxID_ANY, wxEmptyString); m_showPlayerOnlyCheck = new wxCheckBox(m_nick_panel, SHOW_PLAYERS_ONLY_CHECK, _("Hide bots")); wxBoxSizer* nickListHeaderSizer = new wxBoxSizer(wxVERTICAL); nickListHeaderSizer->Add(m_usercount_label, 0, wxEXPAND); nickListHeaderSizer->Add(m_showPlayerOnlyCheck, 0, wxEXPAND); UpdateUserCountLabel(); CreatePopup(); //ensures m_popup_menu is constructed //SL_GENERIC::UserMenu<ChatPanelMenu>* usermenu = m_popup_menu->GetUserMenu(); m_nicklist = new NickDataViewCtrl(_T("NickDataViewCtrl_ChatPanel"), m_nick_panel, true, m_popup_menu); // m_nick_filter = new wxComboBox( m_nick_panel, -1, _("Show all"), wxDefaultPosition, wxSize(80,CONTROL_HEIGHT), 0, 0, wxCB_READONLY ); // m_nick_filter->Disable(); m_nick_filter = new wxTextCtrl(m_nick_panel, FILTER_USERS); m_nick_sizer->Add(m_nicklist, 1, wxEXPAND); m_nick_sizer->Add(nickListHeaderSizer, 0, wxEXPAND); m_nick_sizer->Add(m_nick_filter, 0, wxEXPAND); // m_nick_sizer->Add( m_nick_filter, 0, wxEXPAND | wxTOP, 2 ); m_nick_panel->SetSizer(m_nick_sizer); m_nicklist->UserFilterShowPlayersOnly(m_ShowPlayersOnlyFlag); m_showPlayerOnlyCheck->SetValue(m_ShowPlayersOnlyFlag); } else { m_chat_panel = this; m_nick_sizer = 0; m_nicklist = 0; m_splitter = 0; m_nick_filter = 0; } // Creating ui elements m_chatlog_text = new wxTextCtrl(m_chat_panel, CHAT_LOG, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH | wxTE_AUTO_URL); m_chan_opts_button = NULL; if (m_type == CPT_Channel) { m_chatlog_text->SetToolTip(_("right click for options (like autojoin)")); } wxBitmap ico; if (m_type == CPT_User && (m_user != NULL)) { ico = IconsCollection::Instance()->GetUserBattleStateBmp(m_user->GetStatus()); } else { ico = IconsCollection::Instance()->BMP_CHANNEL_OPTIONS; } m_chan_opts_button = new wxBitmapButton(m_chat_panel, CHAT_CHAN_OPTS, ico, wxDefaultPosition, wxSize(CONTROL_HEIGHT, CONTROL_HEIGHT)); m_say_text = new wxTextCtrlHist( textcompletiondatabase, m_chat_panel, CHAT_TEXT, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB); m_say_button = new wxButton(m_chat_panel, CHAT_SEND, _("Send"), wxDefaultPosition, wxSize(80, CONTROL_HEIGHT)); // Adding elements to sizers if (m_chan_opts_button != NULL) m_say_sizer->Add(m_chan_opts_button); m_say_sizer->Add(m_say_text, 1, wxEXPAND); m_say_sizer->Add(m_say_button); m_chat_sizer->Add(m_chatlog_text, 1, wxEXPAND); m_chat_sizer->Add(m_say_sizer, 0, wxEXPAND | wxTOP, 2); if (m_show_nick_list) { m_chat_panel->SetSizer(m_chat_sizer); m_splitter->SplitVertically(m_chat_panel, m_nick_panel, 100); m_splitter->SetMinimumPaneSize(MINIMUM_PANE_SIZE); m_main_sizer->Add(m_splitter, 1, wxEXPAND | wxALL, 2); } else { m_main_sizer->Add(m_chat_sizer, 4, wxEXPAND | wxALL, 2); } // Assign sizer to panel SetSizer(m_main_sizer); if (m_show_nick_list) { wxSize s = m_splitter->GetSize(); m_splitter->SetSashPosition(s.GetWidth() - MINIMUM_PANE_SIZE, true); } m_chatlog_text->ShowPosition(m_chatlog_text->GetLastPosition()); m_chatlog_text->SetBackgroundColour(sett().GetChatColorBackground()); m_say_text->SetBackgroundColour(sett().GetChatColorBackground()); m_say_text->SetForegroundColour(sett().GetChatColorNormal()); // Fill up TextCompletionDatabase textcompletiondatabase.Insert_Mapping(_T("DLDK"), _T("Der Lockruf des Kaos")); textcompletiondatabase.Insert_Mapping(_T("lol"), _T("Laughing out loud")); textcompletiondatabase.Insert_Mapping(_T("wb"), _T("Welcome back")); textcompletiondatabase.Insert_Mapping(_T("hf"), _T("Have Fun!")); textcompletiondatabase.Insert_Mapping(_T("glhf"), _T("Good luck, have Fun!")); textcompletiondatabase.Insert_Mapping(_T("kaot"), _T("Have Fun!")); textcompletiondatabase.Insert_Mapping(_T("kaot_H"), _T("Der Kaot aus der HĂślle.")); }
void ChatPanel::OnShowPlayerOnlyCheck(wxCommandEvent& event) { m_nicklist->UserFilterShowPlayersOnly(event.IsChecked()); UpdateUserCountLabel(); }