LOGT StrToLogFlags(const std::string &str) { LOGT out = LOGT::ZERO; wxString wstr = wxstrstd(str); wxStringTokenizer tkz(wstr, wxT(",\t\r\n "), wxTOKEN_STRTOK); while (tkz.HasMoreTokens()) { wxString token = tkz.GetNextToken(); if (token == wxT("all")) { out |= LOGT::GROUP_ALL; } else if (token == wxT("error")) { out |= LOGT::GROUP_ERR; } else if (token == wxT("err")) { out |= LOGT::GROUP_ERR; } else if (token == wxT("def")) { out |= LOGT::GROUP_LOGWINDEF; } else if (token == wxT("default")) { out |= LOGT::GROUP_LOGWINDEF; } else { std::string stdtoken = stdstrwx(token); for (unsigned int i = 0; i < sizeof(logflagsstrings) / sizeof(logflagsstrings[0]); i++) { if (stdtoken == logflagsstrings[i]) { out |= flag_wrap<LOGT>(1 << i); break; } } } } return out; }
bool retcon::OnInit() { raii_set rs; //wxApp::OnInit(); //don't call this, it just calls the default command line processor SetAppName(appname); InitWxLogger(); rs.add([&]() { DeInitWxLogger(); }); ::wxInitAllImageHandlers(); srand((unsigned int) time(nullptr)); datadir = stdstrwx(wxStandardPaths::Get().GetUserDataDir()); cmdlineproc(argv, argc); if(terms_requested) return false; if(!globallogwindow) new log_window(nullptr, LOGT::GROUP_LOGWINDEF, false); if(!datadir.empty() && datadir.back() == '/') datadir.pop_back(); wxString wxdatadir = wxstrstd(datadir); if(!::wxDirExists(wxdatadir)) { ::wxMkdir(wxdatadir, 0700); } InitCFGDefaults(); SetTermSigHandler(); sm.InitMultiIOHandler(); rs.add([&]() { sm.DeInitMultiIOHandler(); }); bool res = DBC_Init(datadir + "/retcondb.sqlite3"); if(!res) return false; rs.add([&]() { DBC_DeInit(); }); if(terms_requested) return false; pool.reset(new ThreadPool::Pool(gc.threadpoollimit)); InitGlobalFilters(); RestoreWindowLayout(); if(mainframelist.empty()) { mainframe *mf = new mainframe( appversionname, wxPoint(50, 50), wxSize(450, 340)); if(alist.empty() && ad.tpanels.empty()) { //everything is empty, maybe new user //make 3 basic auto tpanels to make things more obvious auto flags = TPF::AUTO_ALLACCS | TPF::DELETEONWINCLOSE; auto tpt = tpanel::MkTPanel("", "", flags | TPF::AUTO_TW, 0); tpt->MkTPanelWin(mf, true); auto tpm = tpanel::MkTPanel("", "", flags | TPF::AUTO_MN, 0); tpm->MkTPanelWin(mf, false); auto tpd = tpanel::MkTPanel("", "", flags | TPF::AUTO_DM, 0); tpd->MkTPanelWin(mf, false); } } if(terms_requested) return false; mainframelist[0]->Show(true); for(auto it=alist.begin(); it!=alist.end(); ++it) { (*it)->Setup(); (*it)->CalcEnabled(); (*it)->Exec(); } if(terms_requested) return false; rs.cancel(); return true; }
void logevt_handler::OnThreadLogMsg(wxCommandEvent &event) { LogMsg(flag_wrap<LOGT>(event.GetExtraLong()), stdstrwx(event.GetString())); }
void Redirector_wxLog::DoLogString(const wxChar *msg, time_t timestamp) { TSLogMsg(last_loglevel <= wxLOG_Message ? LOGT::WXLOG : LOGT::WXVERBOSE, stdstrwx(msg)); }