Statusbar::Statusbar(wxWindow* parent) : wxStatusBar(parent, wxNewId()) , m_addMessageSink(this, &GetStatusEventSender(UiEvents::addStatusMessage)) , m_removeMessageSink(this, &GetStatusEventSender(UiEvents::removeStatusMessage)) { int w[3] = {460, -1, 120}; SetFieldsCount(3, w); PushStatusText(TowxString(GetSpringlobbyAgent()), 1); taskBar = new TaskBar(this); }
bool ChatPanel::Say(const wxString& message) //FIXME: remove all parsing / tokenizing / ... to dedicated file { static const unsigned int flood_threshold = 5; slLogDebugFunc(""); wxStringTokenizer lines(message, _T('\n')); if (lines.CountTokens() > flood_threshold) { PasteDialog dl(this, wxString::Format(_("Are you sure you want to paste %d lines?"), lines.CountTokens())); switch (dl.ShowModal()) { case wxID_NO: return true; case PasteDialog::pasteButtonReturnCode: { wxString url = Paste2Pastebin(message); if (url != wxEmptyString && wxStringTokenizer(url, _T('\n')).CountTokens() <= flood_threshold) { Say(url); return true; } else { customMessageBoxModal(SL_MAIN_ICON, wxString::Format(_("Failed to post to %s"), _T("paste.springfiles.com"))); return false; } } default: break; } } while (lines.HasMoreTokens()) { wxString line = lines.GetNextToken(); wxLogDebug(_T( "line: %s" ), line.c_str()); if (line == "/help") { ui().ConsoleHelp(); return true; } if (line == "/channels") { ui().mw().ShowChannelChooser(); return true; } if (line == _T( "/ver" )) { //!this instance is not replaced with GetAppname for sake of help/debug online OutputLine(wxString::Format(_("You have %s."), GetSpringlobbyAgent()), sett().GetChatColorNormal()); return true; } if (line == _T( "/clear" )) { m_chatlog_text->SetValue(wxEmptyString); return true; } if (m_type == CPT_Channel) { if (m_channel == 0) { OutputError(_("You are not in channel or channel does not exist.")); return true; } if (line.StartsWith(_T( "/" ))) { if (m_channel->ExecuteSayCommand(STD_STRING(line))) return true; if (m_channel->GetServer().ExecuteSayCommand(STD_STRING(line))) return true; OutputError(wxString::Format(_("Command (%s) does not exist, use /help for a list of available commands."), line.c_str())); return true; } m_channel->Say(STD_STRING(line)); } else if (m_type == CPT_Battle) { if (m_battle == 0) { OutputError(_("You are not in battle or battle does not exist, use /help for a list of available commands.")); return true; } if (line.StartsWith(_T( "/" ))) { if (m_battle->ExecuteSayCommand(STD_STRING(line))) return true; if (m_battle->GetServer().ExecuteSayCommand(STD_STRING(line))) return true; OutputError(wxString::Format(_("Command (%s) does not exist, use /help for a list of available commands."), line.c_str())); return true; } m_battle->Say(STD_STRING(line)); } else if (m_type == CPT_User) { if (m_user == 0) { OutputError(_("User is offline.")); return true; } if (line.StartsWith(_T( "/" ))) { if (m_user->ExecuteSayCommand(STD_STRING(line))) return true; if (m_user->GetServer().ExecuteSayCommand(STD_STRING(line))) return true; OutputError(wxString::Format(_("Command (%s) does not exist, use /help for a list of available commands."), line.c_str())); return true; } m_user->Say(STD_STRING(line)); } else if (m_type == CPT_Server) { if (m_server == 0) { OutputError(_("Not connected to server")); return true; } if (line.StartsWith(_T( "/" ))) { if (m_server->ExecuteSayCommand(STD_STRING(line))) return true; OutputError(wxString::Format(_("Command (%s) does not exist, use /help for a list of available commands."), line.c_str())); return true; } m_server->SendCmd(STD_STRING(line), ""); OutputLine(_("Sent: \"") + line + _T("\""), sett().GetChatColorNormal()); } } return true; }
//! @brief Initializes the application. //! //! It will open the main window and connect default to server or open the connect window. bool SpringLobbyApp::OnInit() { wxSetEnv(_T("UBUNTU_MENUPROXY"), _T("0")); //this triggers the Cli Parser amongst other stuff if (!wxApp::OnInit()) return false; SetAppName(m_appname); #if wxUSE_ON_FATAL_EXCEPTION wxHandleFatalExceptions(!m_crash_handle_disable); #else try { #endif const wxString m_log_file_path = SlPaths::GetLobbyWriteDir() + "springlobby.log"; //initialize all loggers, we'll use the returned pointer to set correct parent window later wxLogWindow* loggerwin = Logger::InitializeLoggingTargets(0, m_log_console, m_log_file_path, m_log_window_show, m_log_verbosity); wxLogMessage(_T("%s started"), TowxString(GetSpringlobbyAgent()).c_str()); //this needs to called _before_ mainwindow instance is created wxInitAllImageHandlers(); wxFileSystem::AddHandler(new wxZipFSHandler); wxSocketBase::Initialize(); m_translationhelper = new wxTranslationHelper(GetAppName().Lower(), getLocalePath()); const std::string configdir = SlPaths::GetConfigfileDir(); wxLogMessage("Config dir: %s", configdir.c_str()); SlPaths::mkDir(configdir); if (cfg().ReadBool(_T("/ResetLayout"))) { wxLogMessage("Resetting Layout..."); //we do this early on and reset the config var a little later so we can save a def. perps once mw is created sett().RemoveLayouts(); cfg().Write(_T( "/ResetLayout" ), false); ui().mw().SavePerspectives(_T("SpringLobby-default")); } if (SlPaths::IsPortableMode()) { // change write path for downloader if in portable mode fileSystem->setWritePath(SlPaths::GetExecutableFolder()); } else { // only search if not in portable mode SlPaths::SetSpringBinary(SlPaths::GetCurrentUsedSpringIndex(), SlPaths::GetSpringBinary()); SlPaths::SetUnitSync(SlPaths::GetCurrentUsedSpringIndex(), SlPaths::GetUnitSync()); } wxLogMessage("Configuring Unitsync..."); // configure unitsync paths before trying to load SlPaths::ReconfigureUnitsync(); sett().Setup(m_translationhelper); notificationManager(); //needs to be initialized too wxLogMessage("Showing Main Window"); ui().ShowMainWindow(); SetTopWindow(&ui().mw()); ui().mw().SetLogWin(loggerwin); //unitsync first load, FIXME move to a thread! wxLogMessage("Refreshing Spring Version List..."); SlPaths::RefreshSpringVersionList(); if (LSL::usync().ReloadUnitSyncLib()) { GlobalEventManager::Instance()->Send(GlobalEventManager::OnUnitsyncReloaded); } else { wxLogWarning("Couldn't load unitsync"); } wxLogWarning("%s", TowxString(GetSpringlobbyInfo()).c_str()); ui().OnInit(); #if !wxUSE_ON_FATAL_EXCEPTION } catch (std::exception& ex) { wxLogError(_T("Error had happened: " + wxString(ex.what()))); } #endif return true; }