///////////////////////////////////////////////////////////////////////////////// // // This file is part of SACAMOS, cable models for EMI simulations in SPICE. // It was developed by the University of Nottingham and the Netherlands Aerospace // Centre (NLR) for ESA under contract number 4000112765/14/NL/HK. // // Copyright (C) 2015 - 2018 University of Nottingham // // SACAMOS is free software: you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the Free Software // Foundation, either version 3 of the License, or (at your option) any later // version. // // SACAMOS is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // A copy of the GNU General Public License version 3 can be found in the // file GNU_GPL_v3 in the root or at . // // wxWidgets is currently licenced under the "wxWindows Library Licence". // A copy of the wxWindows Library Licence, Version 3.1 can be found in the file // wxWindows_Library_Licence_v3-1 in the root or at: // // // // The University of Nottingham can be contacted at: ggiemr@nottingham.ac.uk // // File Contents: // // NAME // SW1_GUIApp.cpp // // DESCRIPTIONbre // Main application GUI for SACAMOS // // AUTHOR(S) // Steve Greedy // ///////////////////////////////////////////////////////////////////////////////// #include "SW1_GUIApp.h" //(*AppHeaders #include "SW1_GUIMain.h" #include //*) IMPLEMENT_APP(SW1_GUIApp); bool SW1_GUIApp::OnInit() { wxTextFile BuildFile; wxString systeminfo, buildtext, guiversion, cmdversion; wxDateTime DateToday = wxDateTime::Now(); wxString str = DateToday.Format(wxT("%d-%m-%y"), wxDateTime::Local ); string Date = str.ToStdString(); string updatemessage; Logger::instance().log(Date, Logger::kLogLevelHeader); Logger::instance().log("", Logger::kLogLevelHeader); Logger::instance().log("SACAMOS STARTED", Logger::kLogLevelHeader); Logger::instance().log("===============", Logger::kLogLevelHeader); Logger::instance().log("Host Information:", Logger::kLogLevelHeader); Logger::instance().log("", Logger::kLogLevelHeader); systeminfo = wxGetHostName(); Logger::instance().log(systeminfo.ToStdString(), Logger::kLogLevelHeader); systeminfo = wxPlatformInfo::Get().GetOperatingSystemDescription(); Logger::instance().log(systeminfo.ToStdString(), Logger::kLogLevelHeader); Logger::instance().log("", Logger::kLogLevelHeader); Logger::instance().log("SACAMOS Build:", Logger::kLogLevelHeader); if (BuildFile.Open("resources/Build")) { for (int i = 0; i<8; i++) { buildtext = BuildFile[i]; if (i==1) guiversion = BuildFile[i]; if (i==5) cmdversion = BuildFile[i]; Logger::instance().log(buildtext.ToStdString(), Logger::kLogLevelHeader); } } BuildFile.Close(); // Compare current version against latest release version Logger::instance().log("Checking for Software Update...", Logger::kLogLevelHeader); wxHTTP checkupdate; wxInputStream *latest_versioninfo; wxString version_temp = ""; wxStringOutputStream out_stream(&version_temp); checkupdate.SetHeader(_T("Content-type"), _T("text/html; charset=utf-8")); std::string latest_version,latest_version_number, latest_version_date; std::string current_version,current_version_number, current_version_date; if (checkupdate.Connect(_T("128.243.70.77"))) // only the server, no pages here yet ... { Logger::instance().log("Connected to SACAMOS Repository", Logger::kLogLevelInfo); latest_versioninfo = checkupdate.GetInputStream(_T("/UoN/SACAMOS/raw/master/version_information.inc")); latest_versioninfo->Read(out_stream); latest_version = version_temp.ToStdString(); wxDELETE(latest_versioninfo); } else { //fail silently & log event Logger::instance().log("Could not connect to SACAMOS Repository", Logger::kLogLevelError); } checkupdate.Close(); std::istringstream stream{latest_version}; if (latest_version != "") { std::getline(stream, latest_version_number); if (latest_version_number != SACAMOS_V_NUMBER) { size_t pos; string latest_version_number_trimmed; pos = latest_version_number.find("="); latest_version_number_trimmed = latest_version_number.substr(pos+2); latest_version_number_trimmed = latest_version_number_trimmed.substr(0,latest_version_number_trimmed.size()-1); string current_version_number_trimmed; pos = SACAMOS_V_NUMBER.find("="); current_version_number_trimmed = SACAMOS_V_NUMBER.substr(pos+2); current_version_number_trimmed = current_version_number_trimmed.substr(0,latest_version_number_trimmed.size()); updatemessage = "You are running SACAMOS " + current_version_number_trimmed + "\n\n"; updatemessage+= "The latest version is " + latest_version_number_trimmed + "\n\n"; updatemessage+= "Please visit www.sacamos.org to download the latest version."; wxString myString(updatemessage); wxMessageBox(updatemessage,"Please Update"); } } // Display splash screen wxBitmap splashimage; wxImage::AddHandler(new wxPNGHandler); splashimage.LoadFile(_T("resources/Sacamos_About.png"), wxBITMAP_TYPE_PNG); wxSplashScreen *splashscrn = new wxSplashScreen(splashimage, wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT, 0, NULL, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxSTAY_ON_TOP); wxYield(); wxSleep(2); splashscrn->Destroy(); //(*AppInitialize bool wxsOK = true; wxInitAllImageHandlers(); if ( wxsOK ) { SW1_GUIFrame* Frame = new SW1_GUIFrame(0); Frame->Show(); SetTopWindow(Frame); } //*) return wxsOK; }