From 00906d29ea90249e5596d67bcbcf00ca8d355c91 Mon Sep 17 00:00:00 2001 From: Erik Melin <31467290+erikmelin@users.noreply.github.com> Date: Wed, 23 May 2018 21:50:19 +0200 Subject: [PATCH] MeOS version 3.5.880 Update 1 --- code/HTMLWriter.cpp | 6 +- code/MeOSFeatures.cpp | 6 +- code/MeOSFeatures.h | 4 +- code/Printer.h | 4 +- code/RestService.cpp | 14 +- code/RestService.h | 4 +- code/RunnerDB.cpp | 18 +- code/RunnerDB.h | 4 +- code/SportIdent.cpp | 23 +- code/SportIdent.h | 4 +- code/StdAfx.cpp | 2 +- code/StdAfx.h | 2 +- code/TabAuto.cpp | 106 ++-- code/TabAuto.h | 12 +- code/TabBase.cpp | 6 +- code/TabBase.h | 4 +- code/TabClass.cpp | 298 +++++------ code/TabClass.h | 4 +- code/TabClub.cpp | 70 +-- code/TabClub.h | 4 +- code/TabCompetition.cpp | 471 ++++++++--------- code/TabCompetition.h | 4 +- code/TabControl.cpp | 42 +- code/TabControl.h | 4 +- code/TabCourse.cpp | 60 +-- code/TabCourse.h | 4 +- code/TabList.cpp | 152 +++--- code/TabList.h | 4 +- code/TabMulti.cpp | 4 +- code/TabMulti.h | 4 +- code/TabRunner.cpp | 146 +++--- code/TabRunner.h | 4 +- code/TabSI.cpp | 176 +++---- code/TabSI.h | 4 +- code/TabSpeaker.cpp | 60 +-- code/TabSpeaker.h | 4 +- code/TabTeam.cpp | 94 ++-- code/TabTeam.h | 4 +- code/Table.cpp | 20 +- code/Table.h | 4 +- code/TimeStamp.cpp | 4 +- code/TimeStamp.h | 4 +- code/animationdata.cpp | 4 +- code/animationdata.h | 4 +- code/autocomplete.cpp | 4 +- code/autocomplete.h | 2 +- code/autocompletehandler.h | 2 +- code/autotask.cpp | 14 +- code/autotask.h | 4 +- code/classconfiginfo.cpp | 4 +- code/classconfiginfo.h | 4 +- code/csvparser.cpp | 161 ++---- code/csvparser.h | 8 +- code/download.cpp | 14 +- code/download.h | 4 +- code/gdiconstants.h | 4 +- code/gdifonts.h | 4 +- code/gdiimpl.h | 4 +- code/gdioutput.cpp | 54 +- code/gdioutput.h | 4 +- code/gdistructures.h | 4 +- code/generalresult.cpp | 4 +- code/generalresult.h | 4 +- code/guihandler.h | 4 +- code/image.cpp | 2 +- code/image.h | 2 +- code/importformats.cpp | 10 +- code/importformats.h | 4 +- code/infoserver.cpp | 4 +- code/infoserver.h | 4 +- code/inthashmap.h | 4 +- code/iof30interface.cpp | 28 +- code/iof30interface.h | 4 +- code/listeditor.cpp | 62 +-- code/listeditor.h | 4 +- code/liveresult.cpp | 4 +- code/liveresult.h | 4 +- code/localizer.cpp | 4 +- code/localizer.h | 4 +- code/meos.cpp | 15 +- code/meos.h | 2 +- code/meos_util.cpp | 134 ++--- code/meos_util.h | 6 +- code/meosdb/MeosSQL.cpp | 20 +- code/meosdb/MeosSQL.h | 4 +- code/meosdb/dllmain.cpp | 2 +- code/meosdb/meosdb.cpp | 4 +- code/meosdb/meosdb.h | 4 +- code/meosdb/sqltypes.h | 4 +- code/meosdb/stdafx.cpp | 6 +- code/meosdb/stdafx.h | 2 +- code/meosdb/targetver.h | 4 +- code/meosexception.h | 4 +- code/meosvc15.vcxproj | 6 + code/meosversion.cpp | 248 ++++----- code/metalist.cpp | 6 +- code/metalist.h | 4 +- code/methodeditor.cpp | 24 +- code/methodeditor.h | 4 +- code/mysqldaemon.cpp | 10 +- code/newcompetition.cpp | 44 +- code/oBase.cpp | 4 +- code/oBase.h | 4 +- code/oCard.cpp | 18 +- code/oCard.h | 4 +- code/oClass.cpp | 34 +- code/oClass.h | 4 +- code/oClub.cpp | 22 +- code/oClub.h | 4 +- code/oControl.cpp | 18 +- code/oControl.h | 4 +- code/oCourse.cpp | 18 +- code/oCourse.h | 4 +- code/oDataContainer.cpp | 38 +- code/oDataContainer.h | 4 +- code/oEvent.cpp | 176 +++---- code/oEvent.h | 6 +- code/oEventDraw.cpp | 34 +- code/oEventDraw.h | 4 +- code/oEventResult.cpp | 4 +- code/oEventSQL.cpp | 20 +- code/oEventSpeaker.cpp | 72 +-- code/oFreeImport.cpp | 38 +- code/oFreeImport.h | 4 +- code/oFreePunch.cpp | 12 +- code/oFreePunch.h | 4 +- code/oImportExport.cpp | 48 +- code/oListInfo.cpp | 56 +-- code/oListInfo.h | 4 +- code/oPunch.cpp | 10 +- code/oPunch.h | 4 +- code/oReport.cpp | 76 +-- code/oRunner.cpp | 50 +- code/oRunner.h | 4 +- code/oTeam.cpp | 24 +- code/oTeam.h | 4 +- code/oTeamEvent.cpp | 12 +- code/onlineinput.cpp | 32 +- code/onlineinput.h | 4 +- code/onlineresults.cpp | 32 +- code/onlineresults.h | 4 +- code/ospeaker.h | 4 +- code/parser.cpp | 4 +- code/parser.h | 4 +- code/pdfwriter.cpp | 4 +- code/pdfwriter.h | 4 +- code/prefseditor.cpp | 10 +- code/prefseditor.h | 4 +- code/printer.cpp | 4 +- code/progress.cpp | 4 +- code/progress.h | 4 +- code/qualification_final.cpp | 4 +- code/qualification_final.h | 4 +- code/random.cpp | 4 +- code/random.h | 4 +- code/recorder.cpp | 4 +- code/recorder.h | 4 +- code/resource.h | 2 +- code/restserver.cpp | 4 +- code/restserver.h | 4 +- code/socket.cpp | 4 +- code/socket.h | 4 +- code/speakermonitor.cpp | 60 +-- code/speakermonitor.h | 4 +- code/subcommand.h | 4 +- code/testmeos.cpp | 6 +- code/testmeos.h | 4 +- code/toolbar.cpp | 4 +- code/toolbar.h | 4 +- code/xmlparser.cpp | 4 +- code/xmlparser.h | 6 +- code/zip.cpp | 948 +++++++++++++++++------------------ 172 files changed, 2449 insertions(+), 2485 deletions(-) diff --git a/code/HTMLWriter.cpp b/code/HTMLWriter.cpp index 630683e..843e87f 100644 --- a/code/HTMLWriter.cpp +++ b/code/HTMLWriter.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -520,4 +520,4 @@ bool gdioutput::writeTableHTML(ostream &fout, fout << "\n"; return true; -} \ No newline at end of file +} diff --git a/code/MeOSFeatures.cpp b/code/MeOSFeatures.cpp index c5e2469..5b40255 100644 --- a/code/MeOSFeatures.cpp +++ b/code/MeOSFeatures.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -40,7 +40,7 @@ MeOSFeatures::MeOSFeatures(void) add(Network, L"NW", "Several MeOS Clients in a network"); addHead("MeOS Features"); - add(Speaker, L"SP", "Använd speakerstöd"); + add(Speaker, L"SP", "Använd speakerstöd"); add(SeveralStages, L"ST", "Several stages"); add(Economy, L"EC", "Economy and fees").require(EditClub).require(Clubs); add(Vacancy, L"VA", "Vacancies and entry cancellations").require(DrawStartList); diff --git a/code/MeOSFeatures.h b/code/MeOSFeatures.h index 6c723c8..d6bff2d 100644 --- a/code/MeOSFeatures.h +++ b/code/MeOSFeatures.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/Printer.h b/code/Printer.h index a654262..b1cc09b 100644 --- a/code/Printer.h +++ b/code/Printer.h @@ -1,4 +1,4 @@ -// printer.h: printing utilities. +// printer.h: printing utilities. #pragma once @@ -20,7 +20,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/RestService.cpp b/code/RestService.cpp index 49a2797..a4389c8 100644 --- a/code/RestService.cpp +++ b/code/RestService.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "RestService.h" #include "meos_util.h" #include "restserver.h" @@ -42,7 +42,7 @@ void RestService::settings(gdioutput &gdi, oEvent &oe, bool created) { if (!server) gdi.addInput("Port", itow(port), 10, 0, L"Port:", L"#http://localhost:[PORT]/meos"); else - gdi.addString("", 0, "Server startad på X#" + itos(port)); + gdi.addString("", 0, "Server startad pÃ¥ X#" + itos(port)); gdi.popX(); gdi.addString("", 10, "help:rest"); @@ -53,13 +53,13 @@ void RestService::status(gdioutput &gdi) { gdi.addString("", 1, name); if (server) { - gdi.addString("", 0, "Server startad på X#" + itos(port)); + gdi.addString("", 0, "Server startad pÃ¥ X#" + itos(port)); RestServer::Statistics rs; server->getStatistics(rs); - gdi.addString("", 0, "Antal förfrågningar: X.#" + itos(rs.numRequests)); + gdi.addString("", 0, "Antal förfrÃ¥gningar: X.#" + itos(rs.numRequests)); gdi.addString("", 0, "Genomsnittlig svarstid: X ms.#" + itos(rs.averageResponseTime)); - gdi.addString("", 0, "Längsta svarstid: X ms.#" + itos(rs.maxResponseTime)); + gdi.addString("", 0, "Längsta svarstid: X ms.#" + itos(rs.maxResponseTime)); gdi.dropLine(0.6); gdi.addButton("Update", "Uppdatera").setHandler(this); @@ -72,7 +72,7 @@ void RestService::status(gdioutput &gdi) { gdi.fillRight(); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("InfoService", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("InfoService", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } @@ -92,4 +92,4 @@ void RestService::handle(gdioutput &gdi, BaseInfo &info, GuiEventType type) { wstring url = L"http://localhost:" + itow(port) + L"/meos"; ShellExecute(NULL, L"open", url.c_str(), NULL, NULL, SW_SHOWNORMAL); } -} \ No newline at end of file +} diff --git a/code/RestService.h b/code/RestService.h index 6327f40..fd65e97 100644 --- a/code/RestService.h +++ b/code/RestService.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/RunnerDB.cpp b/code/RunnerDB.cpp index 0391c87..acbbce1 100644 --- a/code/RunnerDB.cpp +++ b/code/RunnerDB.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -579,7 +579,7 @@ void RunnerDB::setupCNHash() const static bool isVowel(int c) { return c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='y' || - c=='å' || c=='ä' || c=='ö'; + c=='Ã¥' || c=='ä' || c=='ö'; } void RunnerDB::canonizeSplitName(const wstring &name, vector &split) @@ -617,7 +617,7 @@ void RunnerDB::canonizeSplitName(const wstring &name, vector &split) } if (outp>4 && out[outp-1]=='s') - out[outp-1] = 0; // Identify Linköping och Linköpings + out[outp-1] = 0; // Identify Linköping och Linköpings split.push_back(out); } while(cname[k] == ' ') @@ -1206,7 +1206,7 @@ void RunnerDB::releaseTables() { Table *RunnerDB::getRunnerTB()//Table mode { if (runnerTable == 0) { - Table *table=new Table(oe, 20, L"Löpardatabasen", "runnerdb"); + Table *table=new Table(oe, 20, L"Löpardatabasen", "runnerdb"); table->addColumn("Index", 70, true, true); table->addColumn("Id", 70, true, true); @@ -1214,9 +1214,9 @@ Table *RunnerDB::getRunnerTB()//Table mode table->addColumn("Klubb", 200, false); table->addColumn("SI", 70, true, true); table->addColumn("Nationalitet", 70, false, true); - table->addColumn("Kön", 50, false, true); - table->addColumn("Födelseår", 70, true, true); - table->addColumn("Anmäl", 70, false, true); + table->addColumn("Kön", 50, false, true); + table->addColumn("FödelseÃ¥r", 70, true, true); + table->addColumn("Anmäl", 70, false, true); table->setTableProp(Table::CAN_INSERT|Table::CAN_DELETE|Table::CAN_PASTE); table->setClearOnHide(false); @@ -1292,7 +1292,7 @@ Table *RunnerDB::getClubTB()//Table mode Table *table = new Table(oe, 20, L"Klubbdatabasen", "clubdb"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 200, false); oClub::buildTableCol(oe, table); diff --git a/code/RunnerDB.h b/code/RunnerDB.h index cf96b1e..56f4ecb 100644 --- a/code/RunnerDB.h +++ b/code/RunnerDB.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/SportIdent.cpp b/code/SportIdent.cpp index 8d6d89f..0897284 100644 --- a/code/SportIdent.cpp +++ b/code/SportIdent.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -1768,7 +1768,7 @@ void SICard::analyseHour12Time(DWORD zeroTime) { void SIPunch::analyseHour12Time(DWORD zeroTime) { if (Code != -1 && Time>=0 && Time <=12*3600) { if (zeroTime < 12 * 3600) { - //Förmiddag + //Förmiddag if (Time < zeroTime) Time += 12 * 3600; //->Eftermiddag } @@ -1896,7 +1896,6 @@ void SportIdent::addCard(const SICard &sic) void SportIdent::addPunch(DWORD Time, int Station, int Card, int Mode) { SICard sic(ConvertedTimeStatus::Hour24); - memset(&sic, 0, sizeof(sic)); sic.CardNumber=Card; sic.StartPunch.Code = -1; sic.CheckPunch.Code = -1; @@ -2115,8 +2114,8 @@ void SportIdent::getInfoString(const wstring &com, vector &infov) info += makeDash(L"-") + itow(k+1); const SI_StationData &da = si->data[k]; - if (da.extended) info+=lang.tl(L": Utökat protokoll. "); - else info+=lang.tl(L": Äldre protokoll. "); + if (da.extended) info+=lang.tl(L": Utökat protokoll. "); + else info+=lang.tl(L": Äldre protokoll. "); switch(da.stationMode){ case 2: @@ -2124,16 +2123,16 @@ void SportIdent::getInfoString(const wstring &com, vector &infov) info+=lang.tl(L"Kontrol"); break; case 4: - info+=lang.tl(L"Mål"); + info+=lang.tl(L"MÃ¥l"); break; case 3: info+=lang.tl(L"Start"); break; case 5: - info+=lang.tl(L"Läs brickor"); + info+=lang.tl(L"Läs brickor"); break; case 7: - info+=lang.tl(L"Töm"); + info+=lang.tl(L"Töm"); break; case 10: info+=lang.tl(L"Check"); @@ -2142,7 +2141,7 @@ void SportIdent::getInfoString(const wstring &com, vector &infov) info+=lang.tl(L"SRR Dongle ") + (da.radioChannel == 0? lang.tl(L"red channel.") : lang.tl(L"blue channel.")); break; default: - info+=lang.tl(L"Okänd funktion"); + info+=lang.tl(L"Okänd funktion"); } if (da.stationNumber) { @@ -2152,9 +2151,9 @@ void SportIdent::getInfoString(const wstring &com, vector &infov) } info += lang.tl(L" Kommunikation: "); - if (da.autoSend) info+=lang.tl(L"skicka stämplar."); + if (da.autoSend) info+=lang.tl(L"skicka stämplar."); else if (da.handShake) info+=lang.tl(L"handskakning."); - else info+=lang.tl(L"[VARNING] ingen/okänd."); + else info+=lang.tl(L"[VARNING] ingen/okänd."); infov.push_back(info); } diff --git a/code/SportIdent.h b/code/SportIdent.h index 9fe9570..358842f 100644 --- a/code/SportIdent.h +++ b/code/SportIdent.h @@ -1,4 +1,4 @@ -// SportIdent.h: interface for the SportIdent class. +// SportIdent.h: interface for the SportIdent class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ const BYTE STX=0x02; diff --git a/code/StdAfx.cpp b/code/StdAfx.cpp index 254f6ec..ed1181b 100644 --- a/code/StdAfx.cpp +++ b/code/StdAfx.cpp @@ -1,4 +1,4 @@ -// stdafx.cpp : source file that includes just the standard includes +// stdafx.cpp : source file that includes just the standard includes //meos.pch will be the pre-compiled header //stdafx.obj will contain the pre-compiled type information diff --git a/code/StdAfx.h b/code/StdAfx.h index db921f9..e3ab47f 100644 --- a/code/StdAfx.h +++ b/code/StdAfx.h @@ -1,4 +1,4 @@ -// stdafx.h : include file for standard system include files, +// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // diff --git a/code/TabAuto.cpp b/code/TabAuto.cpp index b40f030..d44b991 100644 --- a/code/TabAuto.cpp +++ b/code/TabAuto.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -169,7 +169,7 @@ void TabAuto::syncCallback(gdioutput &gdi) msg = gdi.widen(ex.what()); } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) { gdi.alert(msg); @@ -240,7 +240,7 @@ int TabAuto::processButton(gdioutput &gdi, const ButtonInfo &bu) int nRunner=gdi.getTextNo("nRunner"); if (nRunner>0 && - gdi.ask(L"Vill du dumpa aktuellt tävling och skapa en testtävling?")) { + gdi.ask(L"Vill du dumpa aktuellt tävling och skapa en testtävling?")) { oe->generateTestCompetition(nClass, nRunner, gdi.isChecked("UseRelay")); gdi.getTabs().get(TCmpTab)->loadPage(gdi); return 0; @@ -328,7 +328,7 @@ int TabAuto::processButton(gdioutput &gdi, const ButtonInfo &bu) int t=convertAbsoluteTimeMS(minute); if (t<2 || t>7200) { - gdi.alert("Intervallet måste anges på formen MM:SS."); + gdi.alert("Intervallet mÃ¥ste anges pÃ¥ formen MM:SS."); } else { PrintResultMachine *prm=dynamic_cast(getMachine(bu.getExtraInt())); @@ -385,7 +385,7 @@ int TabAuto::processButton(gdioutput &gdi, const ButtonInfo &bu) } if (file.empty()) { - throw meosException("Filnamnet får inte vara tomt"); + throw meosException("Filnamnet fÃ¥r inte vara tomt"); } //Try exporting. @@ -508,7 +508,7 @@ int TabAuto::processButton(gdioutput &gdi, const ButtonInfo &bu) else if ( bu.id == "BrowseSplits") { int index=0; vector< pair > ext; - ext.push_back(make_pair(L"Sträcktider", L"*.xml")); + ext.push_back(make_pair(L"Sträcktider", L"*.xml")); wstring wf = gdi.browseForSave(ext, L"xml", index); @@ -599,22 +599,22 @@ bool TabAuto::loadPage(gdioutput &gdi) gdi.addString("", 10, "help:10000"); gdi.dropLine(); - gdi.addString("", fontMediumPlus, "Tillgängliga automater").setColor(colorDarkBlue); + gdi.addString("", fontMediumPlus, "Tillgängliga automater").setColor(colorDarkBlue); gdi.dropLine(); gdi.fillRight(); gdi.pushX(); gdi.addButton("Result", "Resultatutskrift / export", AutomaticCB, "tooltip:resultprint"); - gdi.addButton("OnlineResults", "Resultat online", AutomaticCB, "Publicera resultat direkt på nätet"); - gdi.addButton("OnlineInput", "Inmatning online", AutomaticCB, "Hämta stämplingar m.m. från nätet"); + gdi.addButton("OnlineResults", "Resultat online", AutomaticCB, "Publicera resultat direkt pÃ¥ nätet"); + gdi.addButton("OnlineInput", "Inmatning online", AutomaticCB, "Hämta stämplingar m.m. frÃ¥n nätet"); gdi.popX(); gdi.dropLine(2.5); - gdi.addButton("SaveBackup", "Säkerhetskopiering", AutomaticCB); + gdi.addButton("SaveBackup", "Säkerhetskopiering", AutomaticCB); gdi.addButton("InfoService", "Informationsserver", AutomaticCB); - gdi.addButton("Punches", "Stämplingstest", AutomaticCB, "Simulera inläsning av stämplar"); + gdi.addButton("Punches", "Stämplingstest", AutomaticCB, "Simulera inläsning av stämplar"); gdi.popX(); gdi.dropLine(2.5); - gdi.addButton("Splits", "Sträcktider (WinSplits)", AutomaticCB, "Spara sträcktider till en fil för automatisk synkronisering med WinSplits"); - gdi.addButton("Prewarning", "Förvarningsröst", AutomaticCB, "tooltip:voice"); + gdi.addButton("Splits", "Sträcktider (WinSplits)", AutomaticCB, "Spara sträcktider till en fil för automatisk synkronisering med WinSplits"); + gdi.addButton("Prewarning", "Förvarningsröst", AutomaticCB, "tooltip:voice"); gdi.fillDown(); @@ -704,7 +704,7 @@ void PrintResultMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.fillRight(); gdi.addCheckbox("DoPrint", "Skriv ut", AutomaticCB, doPrint); gdi.dropLine(-0.5); - gdi.addButton("PrinterSetup", "Skrivare...", AutomaticCB, "Välj skrivare...").setExtra(getId()); + gdi.addButton("PrinterSetup", "Skrivare...", AutomaticCB, "Välj skrivare...").setExtra(getId()); gdi.dropLine(4); gdi.popX(); @@ -713,16 +713,16 @@ void PrintResultMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { int cx = gdi.getCX(); gdi.addInput("ExportFile", exportFile, 32, 0, L"Fil att exportera till:"); gdi.dropLine(0.7); - gdi.addButton("BrowseFile", "Bläddra...", AutomaticCB); + gdi.addButton("BrowseFile", "Bläddra...", AutomaticCB); gdi.setCX(cx); gdi.dropLine(2.3); gdi.addCheckbox("StructuredExport", "Strukturerat exportformat", 0, structuredExport); gdi.addCheckbox("HTMLRefresh", "HTML med AutoRefresh", 0, htmlRefresh != 0); gdi.dropLine(1.2); gdi.setCX(cx); - gdi.addInput("ExportScript", exportScript, 32, 0, L"Skript att köra efter export:"); + gdi.addInput("ExportScript", exportScript, 32, 0, L"Skript att köra efter export:"); gdi.dropLine(0.7); - gdi.addButton("BrowseScript", "Bläddra...", AutomaticCB); + gdi.addButton("BrowseScript", "Bläddra...", AutomaticCB); gdi.dropLine(3); gdi.popX(); @@ -763,7 +763,7 @@ void PrintResultMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { else gdi.selectItemByData("ListType", listInfo.getListCode()); - gdi.addSelection("LegNumber", 140, 300, 0, L"Sträcka:"); + gdi.addSelection("LegNumber", 140, 300, 0, L"Sträcka:"); set clsUnused; vector< pair > out; oe.fillLegNumbers(clsUnused, listInfo.isTeamList(), true, out); @@ -772,20 +772,20 @@ void PrintResultMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.addCheckbox("PageBreak", "Sidbrytning mellan klasser", 0, pageBreak); gdi.addCheckbox("ShowInterResults", "Visa mellantider", 0, showInterResult, - "Mellantider visas för namngivna kontroller."); - gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", 0, splitAnalysis); + "Mellantider visas för namngivna kontroller."); + gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", 0, splitAnalysis); - gdi.addCheckbox("OnlyChanged", "Skriv endast ut ändade sidor", 0, po.onlyChanged); + gdi.addCheckbox("OnlyChanged", "Skriv endast ut ändade sidor", 0, po.onlyChanged); gdi.popX(); - gdi.addButton("SelectAll", "Välj allt", AutomaticCB, "").setExtra(L"Classes"); + gdi.addButton("SelectAll", "Välj allt", AutomaticCB, "").setExtra(L"Classes"); gdi.popX(); - gdi.addButton("SelectNone", "Välj inget", AutomaticCB, "").setExtra(L"Classes"); + gdi.addButton("SelectNone", "Välj inget", AutomaticCB, "").setExtra(L"Classes"); } else { gdi.fillDown(); gdi.addString("", 1, L"Lista av typ 'X'#" + listInfo.getName()); - gdi.addCheckbox("OnlyChanged", "Skriv endast ut ändade sidor", 0, po.onlyChanged); + gdi.addCheckbox("OnlyChanged", "Skriv endast ut ändade sidor", 0, po.onlyChanged); } } @@ -848,7 +848,7 @@ void PrintResultMachine::status(gdioutput &gdi) gdi.dropLine(); if (doExport) { gdi.popX(); - gdi.addString("", 0, "Målfil: "); + gdi.addString("", 0, "MÃ¥lfil: "); gdi.addStringUT(0, exportFile).setColor(colorRed); gdi.dropLine(); } @@ -866,12 +866,12 @@ void PrintResultMachine::status(gdioutput &gdi) gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.addButton("PrintNow", "Exportera nu", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("Result", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("Result", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } void PrewarningMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { - settingsTitle(gdi, "Förvarningsröst"); + settingsTitle(gdi, "Förvarningsröst"); startCancelInterval(gdi, "StartPrewarning", created, IntervalNone, L""); gdi.addString("", 10, "help:computer_voice"); @@ -882,7 +882,7 @@ void PrewarningMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.fillDown(); gdi.dropLine(); - gdi.addButton("WaveBrowse", "Bläddra...", AutomaticCB); + gdi.addButton("WaveBrowse", "Bläddra...", AutomaticCB); gdi.popX(); gdi.addListBox("Controls", 100, 200, 0, L"", L"", true); @@ -893,7 +893,7 @@ void PrewarningMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.addItem("Controls", d); gdi.setSelection("Controls", controls); gdi.popX(); - gdi.addButton("SelectAll", "Välj alla", AutomaticCB, "").setExtra(L"Controls"); + gdi.addButton("SelectAll", "Välj alla", AutomaticCB, "").setExtra(L"Controls"); gdi.popX(); } @@ -906,11 +906,11 @@ void PrewarningMachine::status(gdioutput &gdi) { gdi.addString("", 1, name); - string info="Förvarning på (SI-kod): "; + string info="Förvarning pÃ¥ (SI-kod): "; bool first=true; if (controls.empty()) - info+="alla stämplingar"; + info+="alla stämplingar"; else { for (set::iterator it=controlsSI.begin();it!=controlsSI.end();++it) { char bf[32]; @@ -929,14 +929,14 @@ void PrewarningMachine::status(gdioutput &gdi) gdi.popX(); gdi.dropLine(0.3); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); - gdi.addButton("TestVoice", "Testa rösten", AutomaticCB).setExtra(getId()); + gdi.addButton("TestVoice", "Testa rösten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("Prewarning", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("Prewarning", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } void PunchMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { - settingsTitle(gdi, "Test av stämplingsinläsningar"); + settingsTitle(gdi, "Test av stämplingsinläsningar"); wstring time=created ? L"10" : itow(interval); startCancelInterval(gdi, "StartPunch", created, IntervalSecond, time); @@ -953,13 +953,13 @@ void PunchMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.fillDown(); gdi.popX(); gdi.dropLine(5); - gdi.addString("", 1, "Generera testtävling"); + gdi.addString("", 1, "Generera testtävling"); gdi.fillRight(); - gdi.addInput("nRunner", L"100", 10, 0, L"Antal löpare"); + gdi.addInput("nRunner", L"100", 10, 0, L"Antal löpare"); gdi.addInput("nClass", L"10", 10, 0, L"Antal klasser"); gdi.dropLine(); gdi.addCheckbox("UseRelay", "Med stafettklasser"); - gdi.addButton("GenerateCMP", "Generera testtävling", AutomaticCB); + gdi.addButton("GenerateCMP", "Generera testtävling", AutomaticCB); } void PunchMachine::status(gdioutput &gdi) @@ -968,7 +968,7 @@ void PunchMachine::status(gdioutput &gdi) gdi.fillRight(); gdi.pushX(); if (interval>0){ - gdi.addString("", 0, "Stämplar om: "); + gdi.addString("", 0, "Stämplar om: "); gdi.addTimer(gdi.getCY(), gdi.getCX(), timerIgnoreSign|timeSeconds, (GetTickCount()-timeout)/1000); gdi.addString("", 0, "(sekunder)"); } @@ -979,7 +979,7 @@ void PunchMachine::status(gdioutput &gdi) gdi.dropLine(2); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("Punches", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("Punches", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } @@ -1040,11 +1040,11 @@ void SplitsMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { else if (created) time = L"30"; - settingsTitle(gdi, "Sträcktider / WinSplits"); + settingsTitle(gdi, "Sträcktider / WinSplits"); startCancelInterval(gdi, "StartSplits", created, IntervalSecond, time); - gdi.addString("", 0, "Intervall (sekunder). Lämna blankt för att uppdatera när " - "tävlingsdata ändras."); + gdi.addString("", 0, "Intervall (sekunder). Lämna blankt för att uppdatera när " + "tävlingsdata ändras."); gdi.dropLine(); gdi.addString("", 10, "help:winsplits_auto"); @@ -1054,7 +1054,7 @@ void SplitsMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.fillRight(); gdi.addInput("FileName", file, 30, 0, L"Filnamn:"); gdi.dropLine(0.9); - gdi.addButton("BrowseSplits", "Bläddra...", AutomaticCB); + gdi.addButton("BrowseSplits", "Bläddra...", AutomaticCB); gdi.popX(); gdi.dropLine(2); @@ -1072,13 +1072,13 @@ void SplitsMachine::status(gdioutput &gdi) if (interval>0){ gdi.popX(); gdi.dropLine(1); - gdi.addString("", 0, "Skriver sträcktider om: "); + gdi.addString("", 0, "Skriver sträcktider om: "); gdi.addTimer(gdi.getCY(), gdi.getCX(), timerIgnoreSign|timeSeconds, (GetTickCount()-timeout)/1000); gdi.addString("", 0, "(sekunder)"); } else { gdi.dropLine(1); - gdi.addString("", 0, "Skriver sträcktider när tävlingsdata ändras."); + gdi.addString("", 0, "Skriver sträcktider när tävlingsdata ändras."); } gdi.popX(); @@ -1086,7 +1086,7 @@ void SplitsMachine::status(gdioutput &gdi) gdi.dropLine(2); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("Splits", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("Splits", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } @@ -1109,7 +1109,7 @@ void SaveMachine::status(gdioutput &gdi) { if (interval>0){ gdi.popX(); gdi.dropLine(1); - gdi.addString("", 0, "Säkerhetskopierar om: "); + gdi.addString("", 0, "Säkerhetskopierar om: "); gdi.addTimer(gdi.getCY(), gdi.getCX(), timerIgnoreSign, (GetTickCount()-timeout)/1000); } @@ -1118,7 +1118,7 @@ void SaveMachine::status(gdioutput &gdi) { gdi.dropLine(2); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("SaveBackup", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("SaveBackup", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } @@ -1133,14 +1133,14 @@ void SaveMachine::process(gdioutput &gdi, oEvent *oe, AutoSyncType ast) { } void SaveMachine::settings(gdioutput &gdi, oEvent &oe, bool created) { - settingsTitle(gdi, "Säkerhetskopiering"); + settingsTitle(gdi, "Säkerhetskopiering"); wstring time=created ? L"10:00" : getTimeMS(interval); startCancelInterval(gdi, "StartBackup", created, IntervalMinute, time); int cx = gdi.getCX(); gdi.addInput("BaseFile", baseFile, 32, 0, L"Mapp:"); gdi.dropLine(0.7); - gdi.addButton("BrowseFolder", "Bläddra...", AutomaticCB).setExtra(L"BaseFile"); + gdi.addButton("BrowseFolder", "Bläddra...", AutomaticCB).setExtra(L"BaseFile"); gdi.setCX(cx); } @@ -1150,11 +1150,11 @@ void SaveMachine::saveSettings(gdioutput &gdi) { int t=convertAbsoluteTimeMS(minute); if (t<2 || t>7200) { - throw meosException("Intervallet måste anges på formen MM:SS."); + throw meosException("Intervallet mÃ¥ste anges pÃ¥ formen MM:SS."); } wstring f = gdi.getText("BaseFile"); if (f.empty()) { - throw meosException("Filnamnet får inte vara tomt"); + throw meosException("Filnamnet fÃ¥r inte vara tomt"); } if (*f.rbegin() != '\\' && *f.rbegin() != '/') diff --git a/code/TabAuto.h b/code/TabAuto.h index 92867c4..6072d2e 100644 --- a/code/TabAuto.h +++ b/code/TabAuto.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -160,7 +160,7 @@ public: void settings(gdioutput &gdi, oEvent &oe, bool created); void saveSettings(gdioutput &gdi); - SaveMachine():AutoMachine("Säkerhetskopiera") , saveIter(0) { + SaveMachine():AutoMachine("Säkerhetskopiera") , saveIter(0) { } }; @@ -177,7 +177,7 @@ public: PrewarningMachine *clone() const {return new PrewarningMachine(*this);} void status(gdioutput &gdi); void process(gdioutput &gdi, oEvent *oe, AutoSyncType ast); - PrewarningMachine():AutoMachine("Förvarningsröst") {} + PrewarningMachine():AutoMachine("Förvarningsröst") {} friend class TabAuto; }; @@ -212,7 +212,7 @@ public: void settings(gdioutput &gdi, oEvent &oe, bool created); void status(gdioutput &gdi); void process(gdioutput &gdi, oEvent *oe, AutoSyncType ast); - PunchMachine():AutoMachine("Stämplingsautomat"), radio(0) {} + PunchMachine():AutoMachine("Stämplingsautomat"), radio(0) {} friend class TabAuto; }; @@ -228,7 +228,7 @@ public: void settings(gdioutput &gdi, oEvent &oe, bool created); void status(gdioutput &gdi); void process(gdioutput &gdi, oEvent *oe, AutoSyncType ast); - SplitsMachine() : AutoMachine("Sträcktider/WinSplits"), leg(-1) {} + SplitsMachine() : AutoMachine("Sträcktider/WinSplits"), leg(-1) {} friend class TabAuto; }; diff --git a/code/TabBase.cpp b/code/TabBase.cpp index 664bd7a..706d07e 100644 --- a/code/TabBase.cpp +++ b/code/TabBase.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -208,4 +208,4 @@ bool TabObject::loadPage(gdioutput &gdi) if (tab) return tab->loadPage(gdi); else return false; -} \ No newline at end of file +} diff --git a/code/TabBase.h b/code/TabBase.h index 8d65d63..ccb0d32 100644 --- a/code/TabBase.h +++ b/code/TabBase.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabClass.cpp b/code/TabClass.cpp index ffe45f0..74ef54d 100644 --- a/code/TabClass.cpp +++ b/code/TabClass.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -220,7 +220,7 @@ int TabClass::multiCB(gdioutput &gdi, int type, void *data) for (size_t k = 0; k < allR.size(); k++) { if (allR[k]->getCourseId() != 0) { if (!doClear) { - if (gdi.ask(L"Vill du nollställa alla manuellt tilldelade banor?")) + if (gdi.ask(L"Vill du nollställa alla manuellt tilldelade banor?")) doClear = true; else break; @@ -322,9 +322,9 @@ int TabClass::multiCB(gdioutput &gdi, int type, void *data) if (j == 0) ctrl += lang.tl("Start"); else if (j + 1 == forks[k].size()) - ctrl += lang.tl("Mål"); + ctrl += lang.tl("MÃ¥l"); else - ctrl += lang.tl("Växel"); + ctrl += lang.tl("Växel"); } int next = -100; if (j + 1 < forks[k].size()) { @@ -355,14 +355,14 @@ int TabClass::multiCB(gdioutput &gdi, int type, void *data) for (set< pair >::const_iterator p = unfairLegs.begin(); p != unfairLegs.end(); ++p) { - wstring f = p->first > 0 ? itow(p->first) : lang.tl("Växel"); - wstring s = p->second > 0 ? itow(p->second) : lang.tl("Växel"); + wstring f = p->first > 0 ? itow(p->first) : lang.tl("Växel"); + wstring s = p->second > 0 ? itow(p->second) : lang.tl("Växel"); gdi_new->addStringUT(0, makeDash(f + L" - " + s)); } } gdi_new->dropLine(); - gdi_new->addButton("CloseWindow", "Stäng", ClassesCB); + gdi_new->addButton("CloseWindow", "Stäng", ClassesCB); gdi_new->refresh(); } else if (bi.id == "OneCourse") { @@ -462,7 +462,7 @@ int TabClass::multiCB(gdioutput &gdi, int type, void *data) oe->adjustTeamMultiRunners(pc); } else { - gdi.alert("Antalet sträckor måste vara ett heltal mellan 0 och 40."); + gdi.alert("Antalet sträckor mÃ¥ste vara ett heltal mellan 0 och 40."); } } else if (bi.id.substr(0, 7)=="@Course") { @@ -637,7 +637,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.addInput("Restart", oe->getAbsTime(t+600), 6, 0, L"Omstartstid"); gdi.dropLine(0.9); gdi.addButton("DoRestart","OK", ClassesCB); - gdi.addButton("Cancel","Stäng", ClassesCB); + gdi.addButton("Cancel","Stäng", ClassesCB); gdi.fillDown(); gdi.dropLine(3); gdi.popX(); @@ -661,11 +661,11 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) return 0; } if (restartgetAbsTime(rope) + L"#" + oe->getAbsTime(restart)); for (it=cls.begin(); it!=cls.end(); ++it) { @@ -822,7 +822,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.addString("", boldLarge, "Lotta flera klasser"); gdi.dropLine(0.5); - gdi.addString("", 0, "Importerar lottningsinställningar..."); + gdi.addString("", 0, "Importerar lottningsinställningar..."); set classes; for (auto &ds : DrawSettingsCSV::read(gdi, *oe, fn)) { pClass pc = oe->getClass(ds.classId); @@ -891,7 +891,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) oe->addAutoBib(); clearPage(gdi, false); - gdi.addButton("Cancel", "Återgå", ClassesCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB); oListParam par; oListInfo info; @@ -904,7 +904,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.refresh(); } else if (bi.id == "RemoveVacant") { - if (gdi.ask(L"Vill du radera alla vakanser från tävlingen?")) { + if (gdi.ask(L"Vill du radera alla vakanser frÃ¥n tävlingen?")) { oe->removeVacanies(0); gdi.disableInput(bi.id.c_str()); } @@ -955,7 +955,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.pushX(); gdi.fillRight(); - gdi.addInput("FirstStart", oe->getAbsTime(3600), 10, 0, L"Första (ordinarie) start:"); + gdi.addInput("FirstStart", oe->getAbsTime(3600), 10, 0, L"Första (ordinarie) start:"); gdi.addInput("MinInterval", L"2:00", 10, 0, L"Minsta startintervall:"); gdi.fillDown(); gdi.addInput("Vacances", L"5%", 10, 0, L"Andel vakanser:"); @@ -967,7 +967,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.selectItemByData("Method", getDefaultMethod({ DMRandom, DMSOFT })); gdi.fillDown(); - gdi.addCheckbox("LateBefore", "Efteranmälda före ordinarie"); + gdi.addCheckbox("LateBefore", "Efteranmälda före ordinarie"); gdi.dropLine(); gdi.popX(); @@ -981,7 +981,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) if (multiDay) gdi.addButton("Pursuit", "Hantera jaktstart", ClassesCB); - gdi.addButton("Cancel", "Återgå", ClassesCB).setCancel(); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB).setCancel(); gdi.dropLine(3); @@ -1083,7 +1083,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) oe->generateListInfo(par, gdi.getLineHeight(), info); oe->generateList(gdi, false, info, true); gdi.dropLine(); - gdi.addButton("Cancel", "Återgå", ClassesCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB); gdi.refresh(); } else if (bi.id.substr(0,5) == "PLUse") { @@ -1111,7 +1111,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) lateBefore, useSoft, pairSize); oe->addAutoBib(); gdi.scrollToBottom(); - gdi.addButton("Cancel", "Återgå", ClassesCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB); } else if (bi.id == "SelectMisses") { set lst; @@ -1224,12 +1224,12 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdioutput *gdi_new = getExtraWindow("help", true); if (!gdi_new) - gdi_new = createExtraWindow("help", makeDash(L"MeOS - " + lang.tl(L"Hjälp")), gdi.scaleLength(640)); + gdi_new = createExtraWindow("help", makeDash(L"MeOS - " + lang.tl(L"Hjälp")), gdi.scaleLength(640)); gdi_new->clearPage(true); gdi_new->addString("", boldLarge, "Lotta flera klasser"); gdi_new->addString("", 10, "help_draw"); gdi_new->dropLine(); - gdi_new->addButton("CloseWindow", "Stäng", ClassesCB); + gdi_new->addButton("CloseWindow", "Stäng", ClassesCB); } else if (bi.id == "CloseWindow") { gdi.closeWindow(); @@ -1243,7 +1243,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.restore("ReadyToDistribute"); /* gdi.addButton("Cancel", "Avbryt", ClassesCB).setCancel(); - gdi.addButton("HelpDraw", "Hjälp...", ClassesCB, ""); + gdi.addButton("HelpDraw", "Hjälp...", ClassesCB, ""); gdi.dropLine(3); */ @@ -1268,12 +1268,12 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) throw meosException("Ogiltigt maximalt intervall. "); if (drawInfo.minClassInterval < drawInfo.baseInterval) { - throw meosException("Startintervallet får inte vara kortare än basintervallet."); + throw meosException("Startintervallet fÃ¥r inte vara kortare än basintervallet."); } if (drawInfo.minClassInterval % drawInfo.baseInterval != 0 || drawInfo.maxClassInterval % drawInfo.baseInterval != 0) { - throw meosException("Ett startintervall måste vara en multipel av basintervallet."); + throw meosException("Ett startintervall mÃ¥ste vara en multipel av basintervallet."); } gdi.enableEditControls(false); @@ -1306,16 +1306,16 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdioutput *gdi_new = getExtraWindow(visualDrawWindow, true); if (!gdi_new) - gdi_new = createExtraWindow(visualDrawWindow, makeDash(L"MeOS - " + lang.tl(L"Visualisera startfältet")), gdi.scaleLength(1000)); + gdi_new = createExtraWindow(visualDrawWindow, makeDash(L"MeOS - " + lang.tl(L"Visualisera startfältet")), gdi.scaleLength(1000)); gdi_new->clearPage(false); - gdi_new->addString("", boldLarge, "Visualisera startfältet"); + gdi_new->addString("", boldLarge, "Visualisera startfältet"); gdi_new->dropLine(); - gdi_new->addString("", 0, "För muspekaren över en markering för att få mer information."); + gdi_new->addString("", 0, "För muspekaren över en markering för att fÃ¥ mer information."); gdi_new->dropLine(); visualizeField(*gdi_new); gdi_new->dropLine(); - gdi_new->addButton("CloseWindow", "Stäng", ClassesCB); + gdi_new->addButton("CloseWindow", "Stäng", ClassesCB); gdi_new->registerEvent("CloseWindow", 0).setHandler(&handleCloseWindow); gdi_new->refresh(); gdi.refreshFast(); @@ -1402,7 +1402,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) int t=oe->getRelativeTime(time); if (t<=0) - throw std::exception("Ogiltig första starttid. Måste vara efter nolltid."); + throw std::exception("Ogiltig första starttid. MÃ¥ste vara efter nolltid."); oEvent::DrawType dtype(oEvent::drawAll); @@ -1470,7 +1470,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) sg.push_back(val); } if (invalid || sg.empty()) - throw meosException(L"Ogiltig storlek på seedningsgrupper X.#" + seedGroups); + throw meosException(L"Ogiltig storlek pÃ¥ seedningsgrupper X.#" + seedGroups); bool noClubNb = gdi.isChecked("PreventClubNb"); bool reverse = gdi.isChecked("ReverseSeedning"); @@ -1490,7 +1490,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) // Clear input gdi.restore("", false); - gdi.addButton("Cancel", "Återgå", ClassesCB).setCancel(); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB).setCancel(); gdi.dropLine(); @@ -1558,7 +1558,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) bool multiDay = oe->hasPrevStage(); if (multiDay) { - gdi.addCheckbox("HandleMultiDay", "Använd funktioner för fleretappsklass", ClassesCB, true); + gdi.addCheckbox("HandleMultiDay", "Använd funktioner för fleretappsklass", ClassesCB, true); } gdi.addSelection("Method", 200, 200, ClassesCB, L"Metod:"); @@ -1621,7 +1621,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) vector< pair > bibOptions; vector< pair > bibTeamOptions; bibOptions.push_back(make_pair(lang.tl("Manuell"), AutoBibManual)); - bibOptions.push_back(make_pair(lang.tl("Löpande"), AutoBibConsecutive)); + bibOptions.push_back(make_pair(lang.tl("Löpande"), AutoBibConsecutive)); bibOptions.push_back(make_pair(lang.tl("Ingen"), AutoBibNone)); bibOptions.push_back(make_pair(lang.tl("Automatisk"), AutoBibExplicit)); @@ -1638,8 +1638,8 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) if (pc->getNumDistinctRunners() > 1 || pc->getQualificationFinal()) { bibTeamOptions.push_back(make_pair(lang.tl("Oberoende"), BibFree)); bibTeamOptions.push_back(make_pair(lang.tl("Samma"), BibSame)); - bibTeamOptions.push_back(make_pair(lang.tl("Ökande"), BibAdd)); - bibTeamOptions.push_back(make_pair(lang.tl("Sträcka"), BibLeg)); + bibTeamOptions.push_back(make_pair(lang.tl("Ökande"), BibAdd)); + bibTeamOptions.push_back(make_pair(lang.tl("Sträcka"), BibLeg)); gdi.addSelection("BibTeam", 80, 100, 0, L"Lagmedlem:", L"Ange relation mellan lagets och deltagarnas nummerlappar."); gdi.addItem("BibTeam", bibTeamOptions); gdi.selectItemByData("BibTeam", pc->getBibMode()); @@ -1701,7 +1701,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.restore("bib", false); gdi.dropLine(); - gdi.addButton("Cancel", "Återgå", ClassesCB).setDefault(); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB).setDefault(); oListParam par; par.selection.insert(cid); @@ -1774,7 +1774,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) pc->splitClass(ClassSplitMethod(lbi.data), parts, outClass); clearPage(gdi, true); - gdi.addButton("Cancel", "Återgå", ClassesCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB); oListParam par; par.selection.insert(outClass.begin(), outClass.end()); @@ -1824,17 +1824,17 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) } } if (cls.empty()) - throw std::exception("En klass kan inte slås ihop med sig själv."); + throw std::exception("En klass kan inte slÃ¥s ihop med sig själv."); clearPage(gdi, true); - gdi.addString("", boldLarge, L"Slå ihop klass: X (denna klass behålls)#" + pc->getName()); + gdi.addString("", boldLarge, L"SlÃ¥ ihop klass: X (denna klass behÃ¥lls)#" + pc->getName()); gdi.dropLine(); gdi.addString("", 10, "help:12138"); gdi.dropLine(2); gdi.pushX(); gdi.fillRight(); - gdi.addSelection("Class", 150, 300, 0, L"Klass att slå ihop:"); + gdi.addSelection("Class", 150, 300, 0, L"Klass att slÃ¥ ihop:"); gdi.addItem("Class", cls); if (def != -1) gdi.selectItemByData("Class", def); @@ -1842,7 +1842,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.selectFirstItem("Class"); gdi.dropLine(); - gdi.addButton("DoMergeAsk", "Slå ihop", ClassesCB).setDefault(); + gdi.addButton("DoMergeAsk", "SlÃ¥ ihop", ClassesCB).setDefault(); gdi.addButton("Cancel", "Avbryt", ClassesCB).setCancel(); gdi.dropLine(3); gdi.popX(); @@ -1861,9 +1861,9 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) throw std::exception("Ingen klass vald."); if (mergeClass->getId() == ClassId) - throw std::exception("En klass kan inte slås ihop med sig själv."); + throw std::exception("En klass kan inte slÃ¥s ihop med sig själv."); - if (gdi.ask(L"Vill du flytta löpare från X till Y och ta bort Z?#" + if (gdi.ask(L"Vill du flytta löpare frÃ¥n X till Y och ta bort Z?#" + mergeClass->getName() + L"#" + pc->getName() + L"#" + mergeClass->getName())) { bi.id = "DoMerge"; return classCB(gdi, type, &bi); @@ -1885,12 +1885,12 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) throw std::exception("Ingen klass vald."); if (lbi.data==ClassId) - throw std::exception("En klass kan inte slås ihop med sig själv."); + throw std::exception("En klass kan inte slÃ¥s ihop med sig själv."); pc->mergeClass(lbi.data); clearPage(gdi, true); - gdi.addButton("Cancel", "Återgå", ClassesCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClassesCB); oListParam par; par.selection.insert(ClassId); @@ -1911,7 +1911,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) wstring name = gdi.getText("Name"); pClass c = oe->getClass(ClassId); if (!name.empty() && c && c->getName() != name) { - if (gdi.ask(L"Vill du lägga till klassen 'X'?#" + name)) { + if (gdi.ask(L"Vill du lägga till klassen 'X'?#" + name)) { c = oe->addClass(name); ClassId = c->getId(); save(gdi, false); @@ -1935,7 +1935,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) DWORD cid=ClassId; if (oe->isClassUsed(cid)) - gdi.alert("Klassen används och kan inte tas bort."); + gdi.alert("Klassen används och kan inte tas bort."); else oe->removeClass(cid); @@ -1974,7 +1974,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) gdi.setText("SplitInput", L"2"); } else { - gdi.setTextTranslate("TypeDesc", L"Löpare per klass:", true); + gdi.setTextTranslate("TypeDesc", L"Löpare per klass:", true); gdi.setText("SplitInput", L"100"); } } @@ -1994,7 +1994,7 @@ int TabClass::classCB(gdioutput &gdi, int type, void *data) if (ClassId>0) save(gdi, true); if (EditChanged) { - if (gdi.ask(L"Spara ändringar?")) + if (gdi.ask(L"Spara ändringar?")) gdi.sendCtrlMessage("Save"); } return true; @@ -2160,8 +2160,8 @@ void TabClass::showClassSettings(gdioutput &gdi) gdi.dropLine(); y = gdi.getCY(); - gdi.addString("", y, xp, 1, "Sammanställning, klasser:"); - gdi.addString("", y, xp+300, 0, "Första start:"); + gdi.addString("", y, xp, 1, "Sammanställning, klasser:"); + gdi.addString("", y, xp+300, 0, "Första start:"); gdi.addString("", y, xp+300+width, 0, "Intervall:"); gdi.addString("", y, xp+300+width*2, 0, "Vakanser:"); gdi.addString("", y, xp+300+width*3, 0, "Reserverade:"); @@ -2218,21 +2218,21 @@ void TabClass::showClassSettings(gdioutput &gdi) gdi.fillRight(); - gdi.addButton("VisualizeDraw", "Visualisera startfältet...", ClassesCB); + gdi.addButton("VisualizeDraw", "Visualisera startfältet...", ClassesCB); gdi.addButton("SaveDrawSettings", "Spara starttider", ClassesCB, - "Spara inmatade tider i tävlingen utan att tilldela starttider."); + "Spara inmatade tider i tävlingen utan att tilldela starttider."); gdi.addButton("ExportDrawSettings", "Exportera...", ClassesCB, - "Exportera ett kalkylblad med lottningsinställningar som du kan redigera och sedan läsa in igen."); + "Exportera ett kalkylblad med lottningsinställningar som du kan redigera och sedan läsa in igen."); - gdi.addButton("DrawAllAdjust", "Ändra inställningar", ClassesCB, - "Ändra grundläggande inställningar och gör en ny fördelning").setExtra(13); + gdi.addButton("DrawAllAdjust", "Ändra inställningar", ClassesCB, + "Ändra grundläggande inställningar och gör en ny fördelning").setExtra(13); if (!cInfo.empty()) { - gdi.addButton("DrawAdjust", "Uppdatera fördelning", ClassesCB, - "Uppdatera fördelningen av starttider med hänsyn till manuella ändringar ovan"); + gdi.addButton("DrawAdjust", "Uppdatera fördelning", ClassesCB, + "Uppdatera fördelningen av starttider med hänsyn till manuella ändringar ovan"); gdi.disableInput("DrawAdjust"); } @@ -2257,13 +2257,13 @@ void TabClass::showClassSettings(gdioutput &gdi) gdi.selectItemByData("Method", getDefaultMethod({DMRandom, DMSOFT})); - gdi.addSelection("PairSize", 150, 200, 0, L"Tillämpa parstart:"); + gdi.addSelection("PairSize", 150, 200, 0, L"Tillämpa parstart:"); gdi.addItem("PairSize", getPairOptions()); gdi.selectItemByData("PairSize", 1); gdi.dropLine(0.9); - gdi.addButton("DoDrawAll", "Utför lottning", ClassesCB); + gdi.addButton("DoDrawAll", "Utför lottning", ClassesCB); rc.right = gdi.getCX() + gdi.scaleLength(5); gdi.addRectangle(rc, colorLightGreen); @@ -2452,7 +2452,7 @@ void TabClass::legSetup(gdioutput &gdi) gdi.addString("", 10, "help:relaysetup"); gdi.dropLine(); - gdi.addSelection("Predefined", 150, 200, MultiCB, L"Fördefinierade tävlingsformer:").ignore(true); + gdi.addSelection("Predefined", 150, 200, MultiCB, L"Fördefinierade tävlingsformer:").ignore(true); oe->fillPredefinedCmp(gdi, "Predefined"); if (storedPredefined == oEvent::PredefinedTypes(-1)) { bool hasPatrol = oe->getMeOSFeatures().hasFeature(MeOSFeatures::Patrol); @@ -2468,7 +2468,7 @@ void TabClass::legSetup(gdioutput &gdi) gdi.selectItemByData("Predefined", storedPredefined); gdi.fillRight(); - gdi.addInput("NStage", storedNStage, 4, MultiCB, L"Antal sträckor:").ignore(true); + gdi.addInput("NStage", storedNStage, 4, MultiCB, L"Antal sträckor:").ignore(true); gdi.addInput("StartTime", storedStart, 6, MultiCB, L"Starttid (HH:MM:SS):"); gdi.popX(); @@ -2480,7 +2480,7 @@ void TabClass::legSetup(gdioutput &gdi) gdi.fillRight(); gdi.dropLine(3); - gdi.addButton("SetNStage", "Verkställ", MultiCB); + gdi.addButton("SetNStage", "Verkställ", MultiCB); gdi.fillDown(); gdi.addButton("Cancel", "Avbryt", ClassesCB); @@ -2522,7 +2522,7 @@ void TabClass::multiCourse(gdioutput &gdi, int nLeg) { } else { gdi.addString("", 2, "Flera banor / stafett / patrull / banpool"); - gdi.addString("", 0, "Låt klassen ha mer än en bana eller sträcka"); + gdi.addString("", 0, "LÃ¥t klassen ha mer än en bana eller sträcka"); gdi.dropLine(); } gdi.setRestorePoint("RelaySetup"); @@ -2548,10 +2548,10 @@ void TabClass::multiCourse(gdioutput &gdi, int nLeg) { gdi.fillDown(); gdi.popX(); gdi.dropLine(2); - gdi.addCheckbox("CoursePool", "Använd banpool", MultiCB, false, - "Knyt löparna till banor från en pool vid målgång."); + gdi.addCheckbox("CoursePool", "Använd banpool", MultiCB, false, + "Knyt löparna till banor frÃ¥n en pool vid mÃ¥lgÃ¥ng."); - gdi.addButton("OneCourse", "Endast en bana", MultiCB, "Använd endast en bana i klassen"); + gdi.addButton("OneCourse", "Endast en bana", MultiCB, "Använd endast en bana i klassen"); gdi.setRestorePoint("Courses"); selectCourses(gdi, 0); @@ -2565,7 +2565,7 @@ void TabClass::multiCourse(gdioutput &gdi, int nLeg) { else { gdi.pushX(); gdi.fillRight(); - gdi.addButton("ChangeLeg", "Ändra klassinställningar...", MultiCB, "Starta en guide som hjälper dig göra klassinställningar"); + gdi.addButton("ChangeLeg", "Ändra klassinställningar...", MultiCB, "Starta en guide som hjälper dig göra klassinställningar"); gdi.fillDown(); gdi.popX(); @@ -2635,11 +2635,11 @@ void TabClass::multiCourse(gdioutput &gdi, int nLeg) { if (k==0) { //Add headers gdi.addString("", headYPos, headXPos[0], 0, "Str."); - gdi.addString("", headYPos, headXPos[1], 0, "Sträcktyp:"); + gdi.addString("", headYPos, headXPos[1], 0, "Sträcktyp:"); gdi.addString("", headYPos, headXPos[2], 0, "Starttyp:"); gdi.addString("", headYPos, headXPos[3], 0, "Starttid:"); if (multipleRaces) - gdi.addString("", headYPos, headXPos[4], 0, "Löpare:"); + gdi.addString("", headYPos, headXPos[4], 0, "Löpare:"); if (hasRelay) { gdi.addString("", headYPos, headXPos[5], 0, "Rep:"); gdi.addString("", headYPos, headXPos[6], 0, "Omstart:"); @@ -2649,12 +2649,12 @@ void TabClass::multiCourse(gdioutput &gdi, int nLeg) { gdi.pushX(); gdi.fillRight(); - gdi.addCheckbox("CoursePool", "Använd banpool", MultiCB, false, - "Knyt löparna till banor från en pool vid målgång."); - gdi.addCheckbox("Unordered", "Oordnade parallella sträckor", MultiCB, false, - "Tillåt löpare inom en parallell grupp att springa gruppens banor i godtycklig ordning."); - gdi.addCheckbox("LockForking", "Lås gafflingar", MultiCB, false, - "Markera för att förhindra oavsiktlig ändring av gafflingsnycklar."); + gdi.addCheckbox("CoursePool", "Använd banpool", MultiCB, false, + "Knyt löparna till banor frÃ¥n en pool vid mÃ¥lgÃ¥ng."); + gdi.addCheckbox("Unordered", "Oordnade parallella sträckor", MultiCB, false, + "TillÃ¥t löpare inom en parallell grupp att springa gruppens banor i godtycklig ordning."); + gdi.addCheckbox("LockForking", "LÃ¥s gafflingar", MultiCB, false, + "Markera för att förhindra oavsiktlig ändring av gafflingsnycklar."); gdi.popX(); gdi.fillRight(); @@ -2704,7 +2704,7 @@ void TabClass::save(gdioutput &gdi, bool skipReload) return; if (name.empty()) - throw std::exception("Klassen måste ha ett namn."); + throw std::exception("Klassen mÃ¥ste ha ett namn."); bool create=false; @@ -2894,9 +2894,9 @@ bool TabClass::loadPage(gdioutput &gdi) const int button_w=gdi.scaleLength(90); string switchMode; - switchMode=tableMode ? "Formulärläge" : "Tabelläge"; + switchMode=tableMode ? "Formulärläge" : "Tabelläge"; gdi.addButton(2, 2, button_w, "SwitchMode", switchMode, - ClassesCB, "Välj vy", false, false).fixedCorner(); + ClassesCB, "Välj vy", false, false).fixedCorner(); if (tableMode) { Table *tbl=oe->getClassTB(); @@ -2978,19 +2978,19 @@ bool TabClass::loadPage(gdioutput &gdi) gdi.popX(); gdi.dropLine(3.5); - gdi.addCheckbox("AllowQuickEntry", "Tillåt direktanmälan", 0); + gdi.addCheckbox("AllowQuickEntry", "TillÃ¥t direktanmälan", 0); gdi.addCheckbox("NoTiming", "Utan tidtagning", 0); if (showAdvanced) { gdi.dropLine(2); gdi.popX(); - gdi.addCheckbox("FreeStart", "Fri starttid", 0, false, "Klassen lottas inte, startstämpling"); - gdi.addCheckbox("IgnoreStart", "Ignorera startstämpling", 0, false, "Uppdatera inte starttiden vid startstämpling"); + gdi.addCheckbox("FreeStart", "Fri starttid", 0, false, "Klassen lottas inte, startstämpling"); + gdi.addCheckbox("IgnoreStart", "Ignorera startstämpling", 0, false, "Uppdatera inte starttiden vid startstämpling"); gdi.dropLine(2); gdi.popX(); - gdi.addCheckbox("DirectResult", "Resultat vid målstämpling", 0, false, + gdi.addCheckbox("DirectResult", "Resultat vid mÃ¥lstämpling", 0, false, "help:DirectResult"); } gdi.dropLine(2); @@ -3007,7 +3007,7 @@ bool TabClass::loadPage(gdioutput &gdi) } } if (hasCF) { - gdi.addCheckbox("LockStartList", "Lås startlista", 0, false, + gdi.addCheckbox("LockStartList", "LÃ¥s startlista", 0, false, "help:LockStartList"); gdi.dropLine(2); @@ -3046,16 +3046,16 @@ bool TabClass::loadPage(gdioutput &gdi) } if (unlockedClass) { - func.push_back(ButtonData("LockAllForks", "Lås gafflingar", true)); + func.push_back(ButtonData("LockAllForks", "LÃ¥s gafflingar", true)); } if (lockedClass) { - func.push_back(ButtonData("UnLockAllForks", "Tillåt gafflingsändringar", true)); + func.push_back(ButtonData("UnLockAllForks", "TillÃ¥t gafflingsändringar", true)); } } } if (showAdvanced) { - func.push_back(ButtonData("Merge", "Slå ihop klasser...", false)); + func.push_back(ButtonData("Merge", "SlÃ¥ ihop klasser...", false)); func.push_back(ButtonData("Split", "Dela klassen...", false)); } @@ -3074,7 +3074,7 @@ bool TabClass::loadPage(gdioutput &gdi) func.push_back(ButtonData("RemoveVacant", "Radera vakanser", true)); } - func.push_back(ButtonData("QuickSettings", "Snabbinställningar", true)); + func.push_back(ButtonData("QuickSettings", "Snabbinställningar", true)); if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::MultipleRaces)) func.push_back(ButtonData("QualificationFinal", "Kval-Final-Schema", false)); @@ -3212,7 +3212,7 @@ void TabClass::saveClassSettingsTable(gdioutput &gdi) { void TabClass::prepareForDrawing(gdioutput &gdi) { clearPage(gdi, false); - gdi.addString("", 2, "Klassinställningar"); + gdi.addString("", 2, "Klassinställningar"); int baseLine = gdi.getCY(); gdi.addString("", 10, "help:59395"); gdi.pushX(); @@ -3297,7 +3297,7 @@ void TabClass::drawDialog(gdioutput &gdi, DrawMethod method, const oClass &pc) { gdi.dropLine(1); gdi.pushX(); gdi.fillRight(); - ListBoxInfo &seedmethod = gdi.addSelection("SeedMethod", 120, 100, 0, L"Seedningskälla:"); + ListBoxInfo &seedmethod = gdi.addSelection("SeedMethod", 120, 100, 0, L"Seedningskälla:"); vector< pair > methods; oClass::getSeedingMethods(methods); gdi.addItem("SeedMethod", methods); @@ -3312,9 +3312,9 @@ void TabClass::drawDialog(gdioutput &gdi, DrawMethod method, const oClass &pc) { gdi.fillDown(); gdi.popX(); gdi.dropLine(3); - gdi.addCheckbox("PreventClubNb", "Hindra att deltagare från samma klubb startar på angränsande tider", + gdi.addCheckbox("PreventClubNb", "Hindra att deltagare frÃ¥n samma klubb startar pÃ¥ angränsande tider", 0, lastSeedPreventClubNb).setSynchData(&lastSeedPreventClubNb); - gdi.addCheckbox("ReverseSeedning", "Låt de bästa start först", 0, lastSeedReverse). + gdi.addCheckbox("ReverseSeedning", "LÃ¥t de bästa start först", 0, lastSeedReverse). setSynchData(&lastSeedReverse); } else { @@ -3325,17 +3325,17 @@ void TabClass::drawDialog(gdioutput &gdi, DrawMethod method, const oClass &pc) { if (method == DMRandom || method == DMSOFT || method == DMPursuit || method == DMReversePursuit || method == DMSeeded) { - gdi.addSelection("PairSize", 150, 200, 0, L"Tillämpa parstart:").setSynchData(&lastPairSize); + gdi.addSelection("PairSize", 150, 200, 0, L"Tillämpa parstart:").setSynchData(&lastPairSize); gdi.addItem("PairSize", getPairOptions()); gdi.selectItemByData("PairSize", pairSize); } gdi.fillRight(); - gdi.addInput("FirstStart", oe->getAbsTime(firstStart), 10, 0, L"Första start:").setSynchData(&lastFirstStart); + gdi.addInput("FirstStart", oe->getAbsTime(firstStart), 10, 0, L"Första start:").setSynchData(&lastFirstStart); if (method == DMPursuit || method == DMReversePursuit) { - gdi.addInput("MaxAfter", lastMaxAfter, 10, 0, L"Maxtid efter:", L"Maximal tid efter ledaren för att delta i jaktstart").setSynchData(&lastMaxAfter); - gdi.addInput("TimeRestart", oe->getAbsTime(firstStart + 3600), 8, 0, L"Första omstartstid:"); + gdi.addInput("MaxAfter", lastMaxAfter, 10, 0, L"Maxtid efter:", L"Maximal tid efter ledaren för att delta i jaktstart").setSynchData(&lastMaxAfter); + gdi.addInput("TimeRestart", oe->getAbsTime(firstStart + 3600), 8, 0, L"Första omstartstid:"); gdi.addInput("ScaleFactor", lastScaleFactor, 8, 0, L"Tidsskalning:").setSynchData(&lastScaleFactor); } @@ -3346,9 +3346,9 @@ void TabClass::drawDialog(gdioutput &gdi, DrawMethod method, const oClass &pc) { gdi.addInput("Vacanses", itow(vac), 10, 0, L"Antal vakanser:").setSynchData(&lastNumVac); if ((method == DMRandom || method == DMSOFT || method == DMSeeded) && pc.getNumStages() > 1 && pc.getClassType() != oClassPatrol) { - gdi.addSelection("Leg", 90, 100, 0, L"Sträcka:", L"Sträcka att lotta"); + gdi.addSelection("Leg", 90, 100, 0, L"Sträcka:", L"Sträcka att lotta"); for (unsigned k = 0; k 10) defaultMethod = DMSOFT; @@ -3458,9 +3458,9 @@ void TabClass::pursuitDialog(gdioutput &gdi) { gdi.fillRight(); - gdi.addInput("MaxAfter", formatTime(pSavedDepth), 10, 0, L"Maxtid efter:", L"Maximal tid efter ledaren för att delta i jaktstart"); - gdi.addInput("TimeRestart", L"+" + formatTime(pFirstRestart), 8, 0, L"Första omstartstid:", L"Ange tiden relativt klassens första start"); - gdi.addInput("Interval", formatTime(pInterval), 8, 0, L"Startintervall:", L"Ange startintervall för minutstart"); + gdi.addInput("MaxAfter", formatTime(pSavedDepth), 10, 0, L"Maxtid efter:", L"Maximal tid efter ledaren för att delta i jaktstart"); + gdi.addInput("TimeRestart", L"+" + formatTime(pFirstRestart), 8, 0, L"Första omstartstid:", L"Ange tiden relativt klassens första start"); + gdi.addInput("Interval", formatTime(pInterval), 8, 0, L"Startintervall:", L"Ange startintervall för minutstart"); wchar_t bf[32]; swprintf_s(bf, L"%f", pTimeScaling); gdi.addInput("ScaleFactor", bf, 8, 0, L"Tidsskalning:"); @@ -3469,8 +3469,8 @@ void TabClass::pursuitDialog(gdioutput &gdi) { gdi.popX(); gdi.fillDown(); //xxx - //gdi.addCheckbox("Pairwise", "Tillämpa parstart", 0, false); - gdi.addSelection("PairSize", 150, 200, 0, L"Tillämpa parstart:"); + //gdi.addCheckbox("Pairwise", "Tillämpa parstart", 0, false); + gdi.addSelection("PairSize", 150, 200, 0, L"Tillämpa parstart:"); gdi.addItem("PairSize", getPairOptions()); gdi.selectItemByData("PairSize", 1); @@ -3481,8 +3481,8 @@ void TabClass::pursuitDialog(gdioutput &gdi) { const int len40 = gdi.scaleLength(30); const int len200 = gdi.scaleLength(200); - gdi.addString("", cy, cx, 1, "Välj klasser"); - gdi.addString("", cy, cx + len200 + len40, 1, "Första starttid"); + gdi.addString("", cy, cx, 1, "Välj klasser"); + gdi.addString("", cy, cx + len200 + len40, 1, "Första starttid"); cy += gdi.getLineHeight()*2; for (size_t k = 0; kfirst; if (name.empty()) - name = lang.tl(L"övriga"); - gdi.addButton("SelectStart", L"Välj X#" + name, ClassesCB, L"").isEdit(true).setExtra(it->second); + name = lang.tl(L"övriga"); + gdi.addButton("SelectStart", L"Välj X#" + name, ClassesCB, L"").isEdit(true).setExtra(it->second); cnt++; } gdi.dropLine(2.5); @@ -3650,7 +3650,7 @@ const wchar_t *TabClass::getCourseLabel(bool pool) { if (pool) return L"Banpool:"; else - return L"Sträckans banor:"; + return L"Sträckans banor:"; } void TabClass::selectCourses(gdioutput &gdi, int legNo) { @@ -3671,12 +3671,12 @@ void TabClass::selectCourses(gdioutput &gdi, int legNo) { bool simpleView = pc->getNumStages() == 1; if (!simpleView) { - swprintf_s(bf, lang.tl("Banor för %s, sträcka %d").c_str(), pc->getName().c_str(), legNo+1); + swprintf_s(bf, lang.tl("Banor för %s, sträcka %d").c_str(), pc->getName().c_str(), legNo+1); gdi.addStringUT(1, bf); - ButtonInfo &bi1 = gdi.addButton("@Course" + itos(legNo-1), "<< Föregående", MultiCB); + ButtonInfo &bi1 = gdi.addButton("@Course" + itos(legNo-1), "<< FöregÃ¥ende", MultiCB); if (legNo<=0) gdi.disableInput(bi1.id.c_str()); - ButtonInfo &bi2 = gdi.addButton("@Course" + itos(legNo+1), "Nästa >>", MultiCB); + ButtonInfo &bi2 = gdi.addButton("@Course" + itos(legNo+1), "Nästa >>", MultiCB); if (unsigned(legNo + 1) >= pc->getNumStages()) gdi.disableInput(bi2.id.c_str()); gdi.popX(); @@ -3698,7 +3698,7 @@ void TabClass::selectCourses(gdioutput &gdi, int legNo) { gdi.setCX(x2); gdi.fillDown(); - gdi.addButton("MAdd", "<< Lägg till", MultiCB); + gdi.addButton("MAdd", "<< Lägg till", MultiCB); gdi.setCX(x1); gdi.refresh(); if (pc->getNumStages() > 1) @@ -3838,7 +3838,7 @@ void TabClass::getClassSettingsTable(gdioutput &gdi, GUICALLBACK cb) { if (useBibs) { gdi.addString("", yp, e, 1, "Nummerlapp"); bibOptions.push_back(make_pair(lang.tl("Manuell"), 0)); - bibOptions.push_back(make_pair(lang.tl("Löpande"), 1)); + bibOptions.push_back(make_pair(lang.tl("Löpande"), 1)); bibOptions.push_back(make_pair(lang.tl("Ingen"), 2)); int bibW = gdi.scaleLength(100); @@ -3848,8 +3848,8 @@ void TabClass::getClassSettingsTable(gdioutput &gdi, GUICALLBACK cb) { bibTeamOptions.push_back(make_pair(lang.tl("Oberoende"), BibFree)); bibTeamOptions.push_back(make_pair(lang.tl("Samma"), BibSame)); - bibTeamOptions.push_back(make_pair(lang.tl("Ökande"), BibAdd)); - bibTeamOptions.push_back(make_pair(lang.tl("Sträcka"), BibLeg)); + bibTeamOptions.push_back(make_pair(lang.tl("Ökande"), BibAdd)); + bibTeamOptions.push_back(make_pair(lang.tl("Sträcka"), BibLeg)); bibW += gdi.scaleLength(85); } @@ -3857,7 +3857,7 @@ void TabClass::getClassSettingsTable(gdioutput &gdi, GUICALLBACK cb) { g += bibW; } - gdi.addString("", yp, f, 1, "Direktanmälan"); + gdi.addString("", yp, f, 1, "Direktanmälan"); vector< pair > arg; oe->fillCourses(arg, true); @@ -3893,7 +3893,7 @@ void TabClass::getClassSettingsTable(gdioutput &gdi, GUICALLBACK cb) { } if (useBibs) { - gdi.addCombo(e, cyp, "Bib" + id, 90, 100, 0, L"", L"Ange löpande numrering eller första nummer i klassen."); + gdi.addCombo(e, cyp, "Bib" + id, 90, 100, 0, L"", L"Ange löpande numrering eller första nummer i klassen."); gdi.addItem("Bib" + id, bibOptions); wstring bib = it->getDCI().getString("Bib"); @@ -4111,7 +4111,7 @@ vector< pair > TabClass::getPairOptions() { vector< pair > res; res.push_back(make_pair(lang.tl("Ingen parstart"), 1)); - res.push_back(make_pair(lang.tl("Parvis (två och två)"), 2)); + res.push_back(make_pair(lang.tl("Parvis (tvÃ¥ och tvÃ¥)"), 2)); for (int j = 3; j <= 10; j++) { res.push_back(make_pair(lang.tl("X och Y[N by N]#" + itos(j) + "#" + itos(j)), j)); } @@ -4288,7 +4288,7 @@ vector DrawSettingsCSV::read(gdioutput &gdi, const oEvent &oe, try { if (row.size() <= 7) - throw wstring(L"Rad X är ogiltig#" + itow(lineNo) + L": " + row[0] + L"..."); + throw wstring(L"Rad X är ogiltig#" + itow(lineNo) + L": " + row[0] + L"..."); pClass pc = oe.getClass(cid); if (!pc || (!row[1].empty() && !compareClassName(pc->getName(), row[1]))) { @@ -4300,7 +4300,7 @@ vector DrawSettingsCSV::read(gdioutput &gdi, const oEvent &oe, if (!pc) throw wstring(L"Hittar inte klass X#" + row[0] + L"/" + row[1]); else if (usedId.count(pc->getId())) - throw wstring(L"Klassen X är listad flera gånger#" + row[0] + L"/" + row[1]); + throw wstring(L"Klassen X är listad flera gÃ¥nger#" + row[0] + L"/" + row[1]); usedId.insert(pc->getId()); dl.classId = pc->getId(); @@ -4333,12 +4333,12 @@ void TabClass::loadBasicDrawSetup(gdioutput &gdi, int &bx, int &by, const wstrin gdi.setSelection("Classes", clsId); - gdi.addString("", 1, "Grundinställningar"); + gdi.addString("", 1, "Grundinställningar"); gdi.pushX(); gdi.fillRight(); - gdi.addInput("FirstStart", firstStart, 10, 0, L"Första start:"); + gdi.addInput("FirstStart", firstStart, 10, 0, L"Första start:"); gdi.addInput("nFields", L"10", 10, 0, L"Max parallellt startande:"); gdi.popX(); gdi.dropLine(3); @@ -4348,7 +4348,7 @@ void TabClass::loadBasicDrawSetup(gdioutput &gdi, int &bx, int &by, const wstrin vector< pair > items; items.push_back(make_pair(lang.tl("Inga"), 1)); - items.push_back(make_pair(lang.tl("Första kontrollen"), 2)); + items.push_back(make_pair(lang.tl("Första kontrollen"), 2)); for (int k = 2; k<10; k++) items.push_back(make_pair(lang.tl("X kontroller#" + itos(k)), k + 1)); items.push_back(make_pair(lang.tl("Hela banan"), 1000)); @@ -4358,7 +4358,7 @@ void TabClass::loadBasicDrawSetup(gdioutput &gdi, int &bx, int &by, const wstrin gdi.popX(); gdi.dropLine(4); gdi.fillDown(); - gdi.addCheckbox("AllowNeighbours", "Tillåt samma bana inom basintervall", 0, oe->getPropertyInt("DrawInterlace", 1) == 0); + gdi.addCheckbox("AllowNeighbours", "TillÃ¥t samma bana inom basintervall", 0, oe->getPropertyInt("DrawInterlace", 1) == 0); gdi.addCheckbox("CoursesTogether", "Lotta klasser med samma bana gemensamt", 0, false); gdi.dropLine(0.5); @@ -4367,19 +4367,19 @@ void TabClass::loadBasicDrawSetup(gdioutput &gdi, int &bx, int &by, const wstrin gdi.fillRight(); gdi.addInput("BaseInterval", L"1:00", 10, 0, L"Basintervall (min):"); gdi.addInput("MinInterval", minInterval, 10, 0, L"Minsta intervall i klass:"); - gdi.addInput("MaxInterval", minInterval, 10, 0, L"Största intervall i klass:"); + gdi.addInput("MaxInterval", minInterval, 10, 0, L"Största intervall i klass:"); gdi.popX(); gdi.dropLine(4); gdi.fillDown(); - gdi.addString("", 1, "Vakanser och efteranmälda"); + gdi.addString("", 1, "Vakanser och efteranmälda"); gdi.dropLine(0.4); gdi.fillRight(); gdi.popX(); gdi.addInput("Vacances", vacances, 6, 0, L"Andel vakanser:"); gdi.addInput("VacancesMin", L"1", 6, 0, L"Min. vakanser (per klass):"); gdi.addInput("VacancesMax", L"10", 6, 0, L"Max. vakanser (per klass):"); - gdi.addInput("Extra", L"0%", 6, 0, L"Förväntad andel efteranmälda:"); + gdi.addInput("Extra", L"0%", 6, 0, L"Förväntad andel efteranmälda:"); gdi.dropLine(4); gdi.fillDown(); @@ -4396,13 +4396,13 @@ void TabClass::loadReadyToDistribute(gdioutput &gdi, int &bx, int &by) { rcPrepare.top = gdi.getCY(); gdi.setCX(gdi.getCX() + gdi.getLineHeight()); gdi.dropLine(); - gdi.addString("", fontMediumPlus, "Förbered lottning"); + gdi.addString("", fontMediumPlus, "Förbered lottning"); gdi.dropLine(2.2); gdi.popX(); gdi.setCX(gdi.getCX() + gdi.getLineHeight()); - gdi.addButton("PrepareDrawAll", "Fördela starttider...", ClassesCB).isEdit(true); + gdi.addButton("PrepareDrawAll", "Fördela starttider...", ClassesCB).isEdit(true); gdi.addButton("EraseStartAll", "Radera starttider...", ClassesCB).isEdit(true).setExtra(0); - gdi.addButton("LoadSettings", "Hämta inställningar från föregående lottning", ClassesCB).isEdit(true); + gdi.addButton("LoadSettings", "Hämta inställningar frÃ¥n föregÃ¥ende lottning", ClassesCB).isEdit(true); enableLoadSettings(gdi); gdi.dropLine(3); @@ -4417,12 +4417,12 @@ void TabClass::loadReadyToDistribute(gdioutput &gdi, int &bx, int &by) { gdi.setCX(gdi.getCX() + gdi.getLineHeight()); gdi.dropLine(); - gdi.addString("", fontMediumPlus, "Efteranmälningar"); + gdi.addString("", fontMediumPlus, "Efteranmälningar"); gdi.dropLine(2.2); gdi.popX(); gdi.setCX(gdi.getCX() + gdi.getLineHeight()); - gdi.addButton("DrawAllBefore", "Efteranmälda (före ordinarie)", ClassesCB).isEdit(true); - gdi.addButton("DrawAllAfter", "Efteranmälda (efter ordinarie)", ClassesCB).isEdit(true); + gdi.addButton("DrawAllBefore", "Efteranmälda (före ordinarie)", ClassesCB).isEdit(true); + gdi.addButton("DrawAllAfter", "Efteranmälda (efter ordinarie)", ClassesCB).isEdit(true); gdi.dropLine(3); rcPrepare.bottom = gdi.getCY(); @@ -4432,7 +4432,7 @@ void TabClass::loadReadyToDistribute(gdioutput &gdi, int &bx, int &by) { gdi.popX(); gdi.addButton("Cancel", "Avbryt", ClassesCB).setCancel(); - gdi.addButton("HelpDraw", "Hjälp...", ClassesCB, ""); + gdi.addButton("HelpDraw", "Hjälp...", ClassesCB, ""); gdi.dropLine(3); by = max(by, gdi.getCY()); diff --git a/code/TabClass.h b/code/TabClass.h index 5bad167..a7a3ef9 100644 --- a/code/TabClass.h +++ b/code/TabClass.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabClub.cpp b/code/TabClub.cpp index 8d02e72..3a06979 100644 --- a/code/TabClub.cpp +++ b/code/TabClub.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Stigbergsvägen 11, SE-75242 UPPSALA, Sweden + Stigbergsvägen 11, SE-75242 UPPSALA, Sweden ************************************************************************/ @@ -122,7 +122,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) if (bi.id=="Save") { } else if (bi.id == "EraseClubs") { - if (gdi.ask(L"Vill du ta bort alla klubbar från tävlingen? Alla deltagare blir klubblösa.")) { + if (gdi.ask(L"Vill du ta bort alla klubbar frÃ¥n tävlingen? Alla deltagare blir klubblösa.")) { oClub::clearClubs(*oe); } } @@ -144,7 +144,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) pc->generateInvoice(gdi, pay, paid, dpm, ppm); } gdi.addButton(gdi.getWidth()+20, 15, gdi.scaleLength(120), - "Cancel", "Återgå", ClubsCB, "", true, false); + "Cancel", "Ã…tergÃ¥", ClubsCB, "", true, false); gdi.addButton(gdi.getWidth()+20, 45, gdi.scaleLength(120), "Print", "Skriv ut...", ClubsCB, "Skriv ut fakturan", true, false); @@ -174,7 +174,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) gdi.pushX(); gdi.addButton("DoAllInvoice", "Skapa fakturor", ClubsCB); #ifdef _DEBUG - gdi.addButton("ImportAnswer", "Hämta svar om elektroniska fakturor", ClubsCB); + gdi.addButton("ImportAnswer", "Hämta svar om elektroniska fakturor", ClubsCB); #endif gdi.addButton("Cancel", "Avbryt", ClubsCB); gdi.refresh(); @@ -190,7 +190,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) oe->printInvoices(gdi, oEvent::InvoicePrintType(lbi.data), path, false); gdi.addButton(gdi.getWidth()+20, 15, gdi.scaleLength(120), - "Cancel", "Återgå", ClubsCB, "", true, false); + "Cancel", "Ã…tergÃ¥", ClubsCB, "", true, false); if (lbi.data>10) { // To file gdi.addButton(gdi.getWidth()+20, 45, gdi.scaleLength(120), @@ -249,7 +249,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) wstring nn; oe->printInvoices(gdi, oEvent::IPTAllPrint, nn, true); gdi.addButton(gdi.getWidth()+20, 15, gdi.scaleLength(120), "Cancel", - "Återgå", ClubsCB, "", true, false); + "Ã…tergÃ¥", ClubsCB, "", true, false); gdi.addButton(gdi.getWidth()+20, 45, gdi.scaleLength(120), "Print", "Skriv ut...", ClubsCB, "Skriv ut fakturan", true, false); @@ -260,7 +260,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) pClub pc = oe->getClub(ClubId); if (pc) { gdi.clearPage(false); - gdi.addString("", boldText, "Slå ihop klubb"); + gdi.addString("", boldText, "SlÃ¥ ihop klubb"); wchar_t bf[256]; swprintf_s(bf, lang.tl("help:12352").c_str(), pc->getName().c_str(), pc->getId()); @@ -274,7 +274,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) gdi.pushX(); gdi.fillRight(); - gdi.addButton("DoMerge", "Slå ihop", ClubsCB); + gdi.addButton("DoMerge", "SlÃ¥ ihop", ClubsCB); gdi.addButton("Cancel", "Avbryt", ClubsCB); gdi.fillDown(); gdi.popX(); @@ -290,7 +290,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) pClub pc2 = oe->getClub(gdi.getSelectedItem("NewClub").first); if (pc1==pc2) - throw std::exception("En klubb kan inte slås ihop med sig själv."); + throw std::exception("En klubb kan inte slÃ¥s ihop med sig själv."); if (pc1 && pc2) oe->mergeClub(pc2->getId(), pc1->getId()); @@ -298,16 +298,16 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) } else if (bi.id == "InvoiceSettings") { gdi.clearPage(true); - gdi.addString("", boldLarge, "Fakturainställningar"); + gdi.addString("", boldLarge, "Fakturainställningar"); gdi.dropLine(); firstInvoice = oClub::getFirstInvoiceNumber(*oe); if (firstInvoice == 0) firstInvoice = oe->getPropertyInt("FirstInvoice", 1000); - gdi.addInput("FirstInvoice", itow(firstInvoice), 5, 0, L"Första fakturanummer:"); + gdi.addInput("FirstInvoice", itow(firstInvoice), 5, 0, L"Första fakturanummer:"); gdi.dropLine(); - gdi.addString("", boldText, "Organisatör"); + gdi.addString("", boldText, "Organisatör"); vector fields; gdi.pushY(); @@ -327,8 +327,8 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) gdi.pushX(); gdi.fillRight(); - gdi.addString("", normalText, "Avgifter och valuta ställer du in under"); - gdi.addString("CmpSettings", normalText, "Tävlingsinställningar.", ClubsCB); + gdi.addString("", normalText, "Avgifter och valuta ställer du in under"); + gdi.addString("CmpSettings", normalText, "Tävlingsinställningar.", ClubsCB); gdi.fillDown(); gdi.dropLine(2); gdi.popX(); @@ -336,7 +336,7 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) gdi.addString("", boldText, "Formatering"); gdi.fillRight(); - gdi.addString("", 0, "Koordinater (mm) för adressfält:"); + gdi.addString("", 0, "Koordinater (mm) för adressfält:"); wstring xc = oe->getPropertyString("addressxpos", L"125"); wstring yc = oe->getPropertyString("addressypos", L"50"); gdi.addStringUT(0, "x:"); @@ -415,19 +415,19 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) int px = gdi.getCX(); gdi.addInput("BaseFee", oe->formatCurrency(baseFee), 8, 0, L"Avgift:"); - gdi.addInput("FirstDate", firstDate, 10, 0, L"Undre datumgräns:", L"ÅÅÅÅ-MM-DD"); - gdi.addInput("LastDate", lastDate, 10, 0, L"Övre datumgräns:", L"ÅÅÅÅ-MM-DD"); + gdi.addInput("FirstDate", firstDate, 10, 0, L"Undre datumgräns:", L"Ã…Ã…Ã…Ã…-MM-DD"); + gdi.addInput("LastDate", lastDate, 10, 0, L"Övre datumgräns:", L"Ã…Ã…Ã…Ã…-MM-DD"); manualFees(gdi, useManualFee); gdi.setCX(px); gdi.dropLine(4); gdi.fillRight(); - gdi.addCheckbox("FilterAge", "Åldersfilter:", ClubsCB, filterAge); + gdi.addCheckbox("FilterAge", "Ã…ldersfilter:", ClubsCB, filterAge); gdi.dropLine(-1); - gdi.addInput("LowLimit", lowAge > 0 ? itow(lowAge) : L"", 5, 0, L"Undre gräns (år):"); - gdi.addInput("HighLimit", highAge > 0 ? itow(highAge) : L"", 5, 0, L"Övre gräns (år):"); + gdi.addInput("LowLimit", lowAge > 0 ? itow(lowAge) : L"", 5, 0, L"Undre gräns (Ã¥r):"); + gdi.addInput("HighLimit", highAge > 0 ? itow(highAge) : L"", 5, 0, L"Övre gräns (Ã¥r):"); ageFilter(gdi, filterAge, useManualFee); gdi.popX(); @@ -441,9 +441,9 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) gdi.addButton("ShowFiltered", "Visa valda deltagare", ClubsCB); gdi.addButton("DoFees", "Tilldela avgifter", ClubsCB); - gdi.addButton("ClearFees", "Nollställ avgifter", ClubsCB); + gdi.addButton("ClearFees", "Nollställ avgifter", ClubsCB); - gdi.addButton("Cancel", "Återgå", ClubsCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ClubsCB); gdi.popX(); gdi.fillDown(); gdi.dropLine(2); @@ -538,11 +538,11 @@ int TabClub::clubCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); if (count == 0) - gdi.addString("", 1, "Ingen deltagare matchar sökkriteriet").setColor(colorRed); + gdi.addString("", 1, "Ingen deltagare matchar sökkriteriet").setColor(colorRed); else if (op == 0 || op == 2) - gdi.addString("", 1, "Ändrade avgift för X deltagare#" + itos(modified)).setColor(colorGreen); + gdi.addString("", 1, "Ändrade avgift för X deltagare#" + itos(modified)).setColor(colorGreen); else if (op == 1) - gdi.addString("", 1, "Nollställde avgift för X deltagare#" + itos(modified)).setColor(colorGreen); + gdi.addString("", 1, "Nollställde avgift för X deltagare#" + itos(modified)).setColor(colorGreen); gdi.refresh(); } @@ -626,11 +626,11 @@ bool TabClub::loadPage(gdioutput &gdi) gdi.addSelection("Clubs", 200, 300, ClubsCB); oe->fillClubs(gdi, "Clubs"); gdi.selectItemByData("Clubs", ClubId); - gdi.addButton("Merge", "Ta bort / slå ihop...", ClubsCB); + gdi.addButton("Merge", "Ta bort / slÃ¥ ihop...", ClubsCB); if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Economy)) gdi.addButton("Invoice", "Faktura", ClubsCB); if (oe->useRunnerDb()) - gdi.addButton("Update", "Uppdatera", ClubsCB, "Uppdatera klubbens uppgifter med data från löpardatabasen/distriktsregistret"); + gdi.addButton("Update", "Uppdatera", ClubsCB, "Uppdatera klubbens uppgifter med data frÃ¥n löpardatabasen/distriktsregistret"); if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Economy)) { gdi.popX(); @@ -640,10 +640,10 @@ bool TabClub::loadPage(gdioutput &gdi) gdi.popX(); gdi.dropLine(1.5); gdi.addButton("Fees", "Avgifter...", ClubsCB); - gdi.addButton("InvoiceSettings", "Fakturainställningar...", ClubsCB); + gdi.addButton("InvoiceSettings", "Fakturainställningar...", ClubsCB); gdi.addButton("AllInvoice", "Skapa fakturor...", ClubsCB); - gdi.addButton("Summary", "Sammanställning", ClubsCB); + gdi.addButton("Summary", "Sammanställning", ClubsCB); } gdi.popX(); @@ -654,10 +654,10 @@ bool TabClub::loadPage(gdioutput &gdi) gdi.popX(); gdi.dropLine(1.5); if (oe->useRunnerDb()) { - gdi.addButton("UpdateAll", "Uppdatera alla klubbar", ClubsCB, "Uppdatera klubbarnas uppgifter med data från löpardatabasen/distriktsregistret"); - gdi.addButton("UpdateAllRunners", "Uppdatera klubbar && löpare", ClubsCB, "Uppdatera klubbarnas och löparnas uppgifter med data från löpardatabasen/distriktsregistret"); + gdi.addButton("UpdateAll", "Uppdatera alla klubbar", ClubsCB, "Uppdatera klubbarnas uppgifter med data frÃ¥n löpardatabasen/distriktsregistret"); + gdi.addButton("UpdateAllRunners", "Uppdatera klubbar && löpare", ClubsCB, "Uppdatera klubbarnas och löparnas uppgifter med data frÃ¥n löpardatabasen/distriktsregistret"); } - gdi.addButton("EraseClubs", "Radera alla klubbar", ClubsCB, "Radera alla klubbar och ta bort klubbtillhörighet"); + gdi.addButton("EraseClubs", "Radera alla klubbar", ClubsCB, "Radera alla klubbar och ta bort klubbtillhörighet"); gdi.popX(); gdi.fillDown(); @@ -672,7 +672,7 @@ bool TabClub::loadPage(gdioutput &gdi) void TabClub::importAcceptedInvoice(gdioutput &gdi, const wstring &file) { - gdi.addString("", boldLarge, "Hämta svar om elektroniska fakturor"); + gdi.addString("", boldLarge, "Hämta svar om elektroniska fakturor"); gdi.fillDown(); gdi.dropLine(2); @@ -694,7 +694,7 @@ void TabClub::importAcceptedInvoice(gdioutput &gdi, const wstring &file) { hasAccepted[id].second += L", " + (*it)[2]; } else - gdi.addString("", 0, "Okänd klubb med id X#" + itos(id)).setColor(colorRed); + gdi.addString("", 0, "Okänd klubb med id X#" + itos(id)).setColor(colorRed); } else throw meosException("Bad file format."); diff --git a/code/TabClub.h b/code/TabClub.h index 2ebf1a0..cbe9c23 100644 --- a/code/TabClub.h +++ b/code/TabClub.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabCompetition.cpp b/code/TabCompetition.cpp index 6530d32..b6cb7bd 100644 --- a/code/TabCompetition.cpp +++ b/code/TabCompetition.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -91,7 +91,7 @@ bool TabCompetition::save(gdioutput &gdi, bool write) wstring name=gdi.getText("Name"); if (name.empty()) { - gdi.alert("Tävlingen måste ha ett namn"); + gdi.alert("Tävlingen mÃ¥ste ha ett namn"); return 0; } @@ -104,7 +104,7 @@ bool TabCompetition::save(gdioutput &gdi, bool write) int newZT = convertAbsoluteTimeHMS(zt, -1); if (newZT < 0) - throw meosException(L"Felaktigt tidsformat 'X' (Använd TT:MM:SS)#" + zt); + throw meosException(L"Felaktigt tidsformat 'X' (Använd TT:MM:SS)#" + zt); int oldZT = convertAbsoluteTimeHMS(oe->getZeroTime(), -1); bool oldLT = oe->useLongTimes(); @@ -215,9 +215,9 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) wstring client = oe->getPropertyString("Client", oe->getClientName()); gdi.fillRight(); - gdi.addInput("Server", defaultServer, 16, 0, L"MySQL Server / IP-adress:", L"IP-adress eller namn på en MySQL-server"); - gdi.addInput("UserName", defaultName, 7, 0, L"Användarnamn:"); - gdi.addInput("PassWord", defaultPwd, 9, 0, L"Lösenord:").setPassword(true); + gdi.addInput("Server", defaultServer, 16, 0, L"MySQL Server / IP-adress:", L"IP-adress eller namn pÃ¥ en MySQL-server"); + gdi.addInput("UserName", defaultName, 7, 0, L"Användarnamn:"); + gdi.addInput("PassWord", defaultPwd, 9, 0, L"Lösenord:").setPassword(true); gdi.addInput("Port", defaultPort, 4, 0, L"Port:"); if (defaultServer.empty()) @@ -246,11 +246,11 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) gdi.dropLine(2); gdi.addInput("ClientName", oe->getClientName(), 16, 0, L"Klientnamn:"); gdi.dropLine(); - gdi.addButton("SaveClient", "Ändra", CompetitionCB); + gdi.addButton("SaveClient", "Ändra", CompetitionCB); gdi.dropLine(2.5); gdi.popX(); - gdi.addString("", 1, "Öppnad tävling:"); + gdi.addString("", 1, "Öppnad tävling:"); if (oe->empty()) gdi.addString("", 1, "Ingen").setColor(colorRed); @@ -258,7 +258,7 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) gdi.addStringUT(1, oe->getName()).setColor(colorGreen); if (oe->isClient()) - gdi.addString("", 1, "(på server)"); + gdi.addString("", 1, "(pÃ¥ server)"); else gdi.addString("", 1, "(lokalt)"); @@ -268,14 +268,14 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) gdi.fillRight(); if (!oe->isClient()) - gdi.addButton("UploadCmp", "Ladda upp öppnad tävling på server",CompetitionCB); + gdi.addButton("UploadCmp", "Ladda upp öppnad tävling pÃ¥ server",CompetitionCB); if (oe->empty()) { gdi.disableInput("UploadCmp"); } else { - gdi.addButton("CloseCmp", "Stäng tävlingen", CompetitionCB); - gdi.addButton("Delete", "Radera tävlingen", CompetitionCB); + gdi.addButton("CloseCmp", "Stäng tävlingen", CompetitionCB); + gdi.addButton("Delete", "Radera tävlingen", CompetitionCB); } gdi.dropLine(2); gdi.popX(); @@ -296,13 +296,13 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) oe->fillCompetitions(gdi, "LocalCmp", 1); gdi.selectItemByData("LocalCmp", oe->getPropertyInt("LastCompetition", 0)); - gdi.addCheckbox("UseDirectSocket", "Skicka och ta emot snabb förhandsinformation om stämplingar och resultat", + gdi.addCheckbox("UseDirectSocket", "Skicka och ta emot snabb förhandsinformation om stämplingar och resultat", 0, oe->getPropertyInt("UseDirectSocket", true) != 0); gdi.dropLine(); gdi.fillRight(); - gdi.addButton("OpenCmp", "Öppna tävling", CompetitionCB).setDefault(); - gdi.addButton("Repair", "Reparera vald tävling", CompetitionCB); + gdi.addButton("OpenCmp", "Öppna tävling", CompetitionCB).setDefault(); + gdi.addButton("Repair", "Reparera vald tävling", CompetitionCB); gdi.setInputStatus("Repair", gdi.getSelectedItem("ServerCmp").second, true); } @@ -418,13 +418,13 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) else if (bi.id=="Setup") { gdi.clearPage(false); - gdi.addString("", boldLarge, "Inställningar MeOS"); + gdi.addString("", boldLarge, "Inställningar MeOS"); gdi.dropLine(); gdi.addString("", 10, "help:29191"); gdi.dropLine(); wchar_t FileNamePath[260]; getUserFile(FileNamePath, L""); - gdi.addStringUT(0, lang.tl(L"MeOS lokala datakatalog är: ") + FileNamePath); + gdi.addStringUT(0, lang.tl(L"MeOS lokala datakatalog är: ") + FileNamePath); gdi.dropLine(); gdi.addCombo("EventorServer", 320, 100, eventorServer, L"Eventor server:"); @@ -448,15 +448,15 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.fillRight(); gdi.pushX(); gdi.dropLine(); - gdi.addInput("Source", bf, 40, 0, L"Källkatalog:"); + gdi.addInput("Source", bf, 40, 0, L"Källkatalog:"); gdi.dropLine(0.8); - gdi.addButton("SourceBrowse", "Bläddra...", CompetitionCB); + gdi.addButton("SourceBrowse", "Bläddra...", CompetitionCB); gdi.dropLine(4); gdi.popX(); gdi.fillRight(); gdi.addButton("DoSetup", "Installera", CompetitionCB); gdi.addButton("ExportSetup", "Exportera", CompetitionCB); - gdi.addButton("Cancel", "Stäng", CompetitionCB); + gdi.addButton("Cancel", "Stäng", CompetitionCB); gdi.dropLine(2); gdi.refresh(); } @@ -469,7 +469,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) wstring source = gdi.getText("Source"); if (SetCurrentDirectory(source.c_str())) { Setup(true, true); - gdi.alert("Tillgängliga filer installerades. Starta om MeOS."); + gdi.alert("Tillgängliga filer installerades. Starta om MeOS."); exit(0); } else @@ -482,13 +482,13 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) else if (bi.id=="ExportSetup") { gdi.clearPage(false); - gdi.addString("", boldLarge, "Exportera inställningar och löpardatabaser"); + gdi.addString("", boldLarge, "Exportera inställningar och löpardatabaser"); gdi.dropLine(); gdi.addString("", 10, "help:15491"); gdi.dropLine(); wchar_t FileNamePath[260]; getUserFile(FileNamePath, L""); - gdi.addStringUT(0, lang.tl(L"MeOS lokala datakatalog är: ") + FileNamePath); + gdi.addStringUT(0, lang.tl(L"MeOS lokala datakatalog är: ") + FileNamePath); gdi.dropLine(); @@ -499,7 +499,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); gdi.addInput("Source", bf, 40, 0, L"Destinationskatalog:"); gdi.dropLine(0.8); - gdi.addButton("SourceBrowse", "Bläddra...", CompetitionCB); + gdi.addButton("SourceBrowse", "Bläddra...", CompetitionCB); gdi.dropLine(4); gdi.popX(); gdi.fillRight(); @@ -512,7 +512,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) wstring source = gdi.getText("Source"); if (SetCurrentDirectory(source.c_str())) { exportSetup(); - gdi.alert("Inställningarna har exporterats."); + gdi.alert("Inställningarna har exporterats."); } } else if (bi.id == "SaveTest") { @@ -529,7 +529,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) oe->clear(); gdi.selectTab(tabId); tm.publish(gdi); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.refresh(); } else if (bi.id == "RunSpecificTest") { @@ -539,11 +539,11 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } else if (bi.id == "LocalSettings") { gdi.clearPage(false); - gdi.addString("", boldLarge, "Ändra MeOS lokala systemegenskaper"); + gdi.addString("", boldLarge, "Ändra MeOS lokala systemegenskaper"); gdi.dropLine(0.5); - gdi.addString("", 0, "Vissa inställningar kräver omstart av MeOS för att ha effekt."); + gdi.addString("", 0, "Vissa inställningar kräver omstart av MeOS för att ha effekt."); gdi.dropLine(0.5); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.dropLine(); if (prefsEditor.empty()) @@ -570,7 +570,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) oe->generateCompetitionReport(gdi); gdi.addButton(gdi.getWidth()+20, 15, gdi.scaleLength(120), "Cancel", - "Återgå", CompetitionCB, "", true, false); + "Ã…tergÃ¥", CompetitionCB, "", true, false); gdi.addButton(gdi.getWidth()+20, 18+gdi.getButtonHeight(), gdi.scaleLength(120), "Print", "Skriv ut...", CompetitionCB, "Skriv ut rapporten", true, false); gdi.refresh(); @@ -595,7 +595,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) saveSettings(gdi); vector< pair > modes; oe->getPayModes(modes); - oe->setPayMode(modes.size(), lang.tl(L"Betalsätt")); + oe->setPayMode(modes.size(), lang.tl(L"Betalsätt")); loadSettings(gdi); } else if (bi.id == "RemovePayMode") { @@ -614,7 +614,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) wchar_t fn[MAX_PATH]; getMeOSFile(fn, lang.tl(L"documentation").c_str()); if (_waccess(fn, 0)==-1) { - gdi.alert(wstring(L"Hittar inte hjälpfilen, X#") + fn); + gdi.alert(wstring(L"Hittar inte hjälpfilen, X#") + fn); return 0; } @@ -622,7 +622,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } else if (bi.id=="Browse") { vector< pair > ext; - ext.push_back(make_pair(lang.tl(L"Databaskälla"), L"*.xml;*.csv")); + ext.push_back(make_pair(lang.tl(L"Databaskälla"), L"*.xml;*.csv")); wstring f = gdi.browseForOpen(ext, L"xml"); string id; @@ -633,7 +633,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } else if (bi.id=="DBaseIn") { gdi.clearPage(true); - gdi.addString("", boldLarge, "Importera löpare och klubbar / distriktsregister"); + gdi.addString("", boldLarge, "Importera löpare och klubbar / distriktsregister"); gdi.dropLine(); gdi.addString("", 10, "help:runnerdatabase"); gdi.dropLine(2); @@ -641,17 +641,17 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.fillRight(); gdi.addInput("ClubFile", L"", 40, 0, L"Filnamn IOF (xml) med klubbar"); gdi.dropLine(); - gdi.addButton("Browse", "Bläddra...", CompetitionCB).setExtra(L"ClubFile"); + gdi.addButton("Browse", "Bläddra...", CompetitionCB).setExtra(L"ClubFile"); gdi.popX(); gdi.dropLine(3); - gdi.addInput("CmpFile", L"", 40, 0, L"Filnamn IOF (xml) eller OE (csv) med löpare"); + gdi.addInput("CmpFile", L"", 40, 0, L"Filnamn IOF (xml) eller OE (csv) med löpare"); gdi.dropLine(); - gdi.addButton("Browse", "Bläddra...", CompetitionCB).setExtra(L"CmpFile"); + gdi.addButton("Browse", "Bläddra...", CompetitionCB).setExtra(L"CmpFile"); gdi.popX(); gdi.dropLine(3); gdi.popX(); - gdi.addCheckbox("Clear", "Nollställ databaser", 0, true); + gdi.addCheckbox("Clear", "Nollställ databaser", 0, true); gdi.dropLine(3); gdi.popX(); @@ -680,24 +680,24 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if (cmpCsv) { if (!club.empty()) - throw meosException("Klubbfil får inte anges vid CSV import."); + throw meosException("Klubbfil fÃ¥r inte anges vid CSV import."); oe->importOECSV_Data(cmp, clear); } else { if (clubCsv) - throw meosException("Klubbfil får inte anges vid CSV import."); + throw meosException("Klubbfil fÃ¥r inte anges vid CSV import."); oe->importXML_IOF_Data(club, cmp, clear); } gdi.dropLine(); - gdi.addButton("CancelRunnerDatabase", "Återgå", CompetitionCB); + gdi.addButton("CancelRunnerDatabase", "Ã…tergÃ¥", CompetitionCB); gdi.refresh(); gdi.setWaitCursor(false); } else if (bi.id=="Reset") { - if (gdi.ask(L"Vill då återställa inställningar och skriva över egna databaser?")) + if (gdi.ask(L"Vill dÃ¥ Ã¥terställa inställningar och skriva över egna databaser?")) Setup(true, true); } else if (bi.id=="ConnectMySQL") @@ -738,13 +738,13 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if ( gdi.getSelectedItem("ServerCmp", lbi) ) id=lbi.data; else - throw meosException("Ingen tävling vald."); + throw meosException("Ingen tävling vald."); wstring nameId = oe->getNameId(id); vector output; repairTables(gdi.narrow(nameId), output); gdi.clearPage(true); - gdi.addString("", boldLarge, "Reparerar tävlingsdatabasen"); + gdi.addString("", boldLarge, "Reparerar tävlingsdatabasen"); gdi.dropLine(); for (size_t k = 0; k < output.size(); k++) { gdi.addStringUT(0, output[k]); @@ -779,7 +779,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(3); gdi.fillDown(); gdi.addString("", 1, "Skapar ny etapp").setColor(colorGreen); - gdi.addString("", 0, "Överför anmälda"); + gdi.addString("", 0, "Överför anmälda"); gdi.refreshFast(); wstring ne = oe->cloneCompetition(true, false, false, false, true); @@ -790,7 +790,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) getUserFile(bf, L""); oe->enumerateCompetitions(bf, L"*.meos"); oe->updateTabs(true); - gdi.addButton("MultiEvent", "Återgå", CompetitionCB); + gdi.addButton("MultiEvent", "Ã…tergÃ¥", CompetitionCB); gdi.refresh(); } else if (bi.id == "SaveMulti") { @@ -851,10 +851,10 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) ListBoxInfo lbi; gdi.getSelectedItem("PostEvent", lbi); if (int(lbi.data) == -2) - throw std::exception("Nästa etapp är odefinierad."); + throw std::exception("Nästa etapp är odefinierad."); gdi.clearPage(true); - gdi.addString("", boldLarge, "Överför resultat till nästa etapp"); + gdi.addString("", boldLarge, "Överför resultat till nästa etapp"); gdi.setData("PostEvent", lbi.data); gdi.dropLine(); selectTransferClasses(gdi, false); @@ -903,7 +903,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.enableEditControls(false); gdi.dropLine(3); gdi.fillDown(); - gdi.addString("", 1, L"Överför resultat till X#" + nextStage.getName()); + gdi.addString("", 1, L"Överför resultat till X#" + nextStage.getName()); gdi.refreshFast(); vector changedClass, changedClassNoResult, assignedVacant,newEntries,notTransfered, failedTarget; @@ -916,14 +916,14 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if (!changedClass.empty()) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare har bytt klass:"); + gdi.addString("", 1, "Följande deltagare har bytt klass:"); displayRunners(gdi, changedClass); } if (!changedClassNoResult.empty()) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare har bytt klass (inget totalresultat):"); + gdi.addString("", 1, "Följande deltagare har bytt klass (inget totalresultat):"); displayRunners(gdi, changedClassNoResult); } @@ -931,34 +931,34 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if (!assignedVacant.empty()) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare har tilldelats en vakant plats:"); + gdi.addString("", 1, "Följande deltagare har tilldelats en vakant plats:"); displayRunners(gdi, assignedVacant); } if (!newEntries.empty()) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare är nyanmälda:"); + gdi.addString("", 1, "Följande deltagare är nyanmälda:"); displayRunners(gdi, newEntries); } if (!notTransfered.empty() && transferNoCompet) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare deltar ej:"); + gdi.addString("", 1, "Följande deltagare deltar ej:"); displayRunners(gdi, notTransfered); } else if (!notTransfered.empty()) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare överfördes ej:"); + gdi.addString("", 1, "Följande deltagare överfördes ej:"); displayRunners(gdi, notTransfered); } if (!failedTarget.empty()) { fixedProblem = true; gdi.dropLine(); - gdi.addString("", 1, "Följande deltagare är anmälda till nästa etapp men inte denna:"); + gdi.addString("", 1, "Följande deltagare är anmälda till nästa etapp men inte denna:"); displayRunners(gdi, failedTarget); } @@ -978,13 +978,13 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); gdi.fillRight(); - gdi.addButton("MultiEvent", "Återgå", CompetitionCB); + gdi.addButton("MultiEvent", "Ã…tergÃ¥", CompetitionCB); gdi.scrollToBottom(); gdi.refresh(); } else - throw std::exception("Kunde inte lokalisera nästa etapp"); + throw std::exception("Kunde inte lokalisera nästa etapp"); } else if (bi.id == "UseEventor") { if (gdi.isChecked("UseEventor")) @@ -998,7 +998,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) //DWORD d; //if (gdi.getData("ClearPage", d)) gdi.clearPage(true); - gdi.addString("", boldLarge, "Nyckel för Eventor"); + gdi.addString("", boldLarge, "Nyckel för Eventor"); gdi.dropLine(); gdi.addString("", 10, "help:eventorkey"); gdi.dropLine(); @@ -1021,11 +1021,11 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if (clubId > 0) { gdi.restore("APIKey", false); gdi.fillDown(); - gdi.addString("", 1, "Godkänd API-nyckel").setColor(colorGreen); + gdi.addString("", 1, "Godkänd API-nyckel").setColor(colorGreen); gdi.addString("", 0, L"Klubb: X#" + eventor.name); gdi.addStringUT(0, eventor.city); gdi.dropLine(); - gdi.addButton("APIKeyOK", "Fortsätt", CompetitionCB); + gdi.addButton("APIKeyOK", "Fortsätt", CompetitionCB); gdi.refresh(); } else { @@ -1054,7 +1054,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } else if (bi.id == "EventorUpdateDB") { gdi.clearPage(false); - gdi.addString("", boldLarge, "Uppdatera löpardatabasen"); + gdi.addString("", boldLarge, "Uppdatera löpardatabasen"); gdi.setData("UpdateDB", 1); bi.id = "EventorImport"; return competitionCB(gdi, type, &bi); @@ -1066,21 +1066,21 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.clearPage(true); //gdi.setData("EventorId", (int)oe->getExtIdentifier()); //gdi.setData("UpdateDB", 1); - gdi.addString("", boldLarge, "Utbyt tävlingsdata med Eventor"); + gdi.addString("", boldLarge, "Utbyt tävlingsdata med Eventor"); gdi.dropLine(); ClassConfigInfo cnf; oe->getClassConfigurationInfo(cnf); gdi.fillRight(); - gdi.addButton("EventorEntries", "Hämta efteranmälningar", CompetitionCB); - gdi.addButton("EventorUpdateDB", "Uppdatera löpardatabasen", CompetitionCB); - gdi.addButton("EventorStartlist", "Publicera startlista", CompetitionCB, "Publicera startlistan på Eventor"); + gdi.addButton("EventorEntries", "Hämta efteranmälningar", CompetitionCB); + gdi.addButton("EventorUpdateDB", "Uppdatera löpardatabasen", CompetitionCB); + gdi.addButton("EventorStartlist", "Publicera startlista", CompetitionCB, "Publicera startlistan pÃ¥ Eventor"); if (!cnf.hasStartTimes()) gdi.disableInput("EventorStartlist"); - gdi.addButton("EventorResult", "Publicera resultat", CompetitionCB, "Publicera resultat och sträcktider på Eventor och WinSplits online"); + gdi.addButton("EventorResult", "Publicera resultat", CompetitionCB, "Publicera resultat och sträcktider pÃ¥ Eventor och WinSplits online"); if (!cnf.hasResults()) gdi.disableInput("EventorResult"); @@ -1095,7 +1095,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) ClassConfigInfo cnf; oe->getClassConfigurationInfo(cnf); if (cnf.hasResults()) { - if (!gdi.ask(L"Tävlingen har redan resultat. Vill du verkligen hämta anmälningar?")) + if (!gdi.ask(L"Tävlingen har redan resultat. Vill du verkligen hämta anmälningar?")) return 0; } gdi.enableEditControls(false); @@ -1145,7 +1145,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) catch (std::exception &ex) { error = gdi.widen(ex.what()); if (error.empty()) - error = L"Okänt fel"; + error = L"Okänt fel"; } if (!error.empty()) { @@ -1156,7 +1156,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(2); gdi.popX(); gdi.addButton("Cancel", "Avbryt", CompetitionCB); - gdi.addButton(bi.id, "Försök igen", CompetitionCB); + gdi.addButton(bi.id, "Försök igen", CompetitionCB); removeTempFile(startlist); removeTempFile(zipped); gdi.refresh(); @@ -1177,23 +1177,23 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.fillRight(); gdi.pushX(); gdi.dropLine(); - gdi.addString("", 0, "Länk till startlistan:"); + gdi.addString("", 0, "Länk till startlistan:"); gdi.addString("link", 0, url, CompetitionCB).setColor(colorRed); } } gdi.dropLine(3); gdi.popX(); - gdi.addButton("CopyLink", "Kopiera länken till urklipp", CompetitionCB); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("CopyLink", "Kopiera länken till urklipp", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.refresh(); } else if (bi.id == "EventorResult") { ClassConfigInfo cnf; oe->getClassConfigurationInfo(cnf); if (cnf.hasPatrol()) { - if (!gdi.ask(L"När denna version av MeOS släpptes kunde Eventor " - "inte hantera resultat från patrullklasser. Vill du försöka ändå?")) + if (!gdi.ask(L"När denna version av MeOS släpptes kunde Eventor " + "inte hantera resultat frÃ¥n patrullklasser. Vill du försöka ändÃ¥?")) return loadPage(gdi); } @@ -1239,7 +1239,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) catch (std::exception &ex) { error = gdi.widen(ex.what()); if (error.empty()) - error = L"Okänt fel"; + error = L"Okänt fel"; } if (!error.empty()) { @@ -1250,7 +1250,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(2); gdi.popX(); gdi.addButton("Cancel", "Avbryt", CompetitionCB); - gdi.addButton(bi.id, "Försök igen", CompetitionCB); + gdi.addButton(bi.id, "Försök igen", CompetitionCB); removeTempFile(resultlist); removeTempFile(zipped); gdi.refresh(); @@ -1271,15 +1271,15 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.fillRight(); gdi.pushX(); gdi.dropLine(); - gdi.addString("", 0, "Länk till resultatlistan:"); + gdi.addString("", 0, "Länk till resultatlistan:"); gdi.addString("link", 0, url, CompetitionCB).setColor(colorRed); } } gdi.dropLine(3); gdi.popX(); - gdi.addButton("CopyLink", "Kopiera länken till urklipp", CompetitionCB); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("CopyLink", "Kopiera länken till urklipp", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.refresh(); } else if (bi.id == "Eventor") { @@ -1292,14 +1292,14 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) getEventorCompetitions(gdi, convertSystemDate(st), events); gdi.clearPage(true); - gdi.addString("", boldLarge, "Hämta data från Eventor"); + gdi.addString("", boldLarge, "Hämta data frÃ¥n Eventor"); gdi.dropLine(); - gdi.addButton("EventorAPI", "Anslutningsinställningar...", CompetitionCB); + gdi.addButton("EventorAPI", "Anslutningsinställningar...", CompetitionCB); gdi.dropLine(); gdi.fillRight(); gdi.pushX(); - gdi.addCheckbox("EventorCmp", "Hämta tävlingsdata", CompetitionCB, true); + gdi.addCheckbox("EventorCmp", "Hämta tävlingsdata", CompetitionCB, true); gdi.addSelection("EventorSel", 300, 200); sort(events.begin(), events.end()); st.wYear++; // Restore current time @@ -1316,11 +1316,11 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(3); gdi.popX(); - gdi.addCheckbox("EventorDb", "Uppdatera löpardatabasen", CompetitionCB, true); + gdi.addCheckbox("EventorDb", "Uppdatera löpardatabasen", CompetitionCB, true); gdi.dropLine(3); gdi.popX(); gdi.addButton("Cancel", "Avbryt", CompetitionCB); - gdi.addButton("EventorNext", "Nästa >>", CompetitionCB); + gdi.addButton("EventorNext", "Nästa >>", CompetitionCB); } else if (bi.id == "EventorCmp") { gdi.setInputStatus("EventorSel", gdi.isChecked(bi.id)); @@ -1344,7 +1344,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if (cmp && ci) { gdi.setData("EventIndex", lbi.data); gdi.setData("EventorId", ci->Id); - gdi.addString("", boldLarge, L"Hämta tävlingsdata för X#" + ci->Name); + gdi.addString("", boldLarge, L"Hämta tävlingsdata för X#" + ci->Name); gdi.dropLine(0.5); gdi.fillRight(); @@ -1352,22 +1352,22 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) int tt = convertAbsoluteTimeHMS(ci->firstStart, -1); wstring ttt = tt>0 ? ci->firstStart : L""; - gdi.addInput("FirstStart", ttt, 10, 0, L"Första ordinarie starttid:", L"Skriv första starttid på formen HH:MM:SS"); + gdi.addInput("FirstStart", ttt, 10, 0, L"Första ordinarie starttid:", L"Skriv första starttid pÃ¥ formen HH:MM:SS"); gdi.addSelection("StartType", 200, 150, 0, L"Startmetod", L"help:startmethod"); gdi.addItem("StartType", lang.tl("Gemensam start"), SMCommon); gdi.addItem("StartType", lang.tl("Lottad startlista"), SMDrawn); gdi.addItem("StartType", lang.tl("Fria starttider"), SMFree); - gdi.addItem("StartType", lang.tl("Jag sköter lottning själv"), SMCustom); + gdi.addItem("StartType", lang.tl("Jag sköter lottning själv"), SMCustom); gdi.selectFirstItem("StartType"); gdi.fillDown(); gdi.popX(); gdi.dropLine(3); - gdi.addInput("LastEntryDate", ci->lastNormalEntryDate, 10, 0, L"Sista ordinarie anmälningsdatum:"); + gdi.addInput("LastEntryDate", ci->lastNormalEntryDate, 10, 0, L"Sista ordinarie anmälningsdatum:"); if (oe->getNumRunners() > 0) { - gdi.addCheckbox("RemoveRemoved", "Ta bort eventuella avanmälda deltagare", 0, true); + gdi.addCheckbox("RemoveRemoved", "Ta bort eventuella avanmälda deltagare", 0, true); } gdi.addString("", boldText, "Importera banor"); @@ -1377,10 +1377,10 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.addInput("FileName", L"", 48, 0, L"Filnamn (OCAD banfil):"); gdi.dropLine(); gdi.fillDown(); - gdi.addButton("BrowseCourse", "Bläddra...", CompetitionCB); + gdi.addButton("BrowseCourse", "Bläddra...", CompetitionCB); } else { - gdi.addString("", boldLarge, "Hämta löpardatabasen"); + gdi.addString("", boldLarge, "Hämta löpardatabasen"); gdi.dropLine(0.5); bi.id = "EventorImport"; @@ -1392,7 +1392,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.setRestorePoint("DoEventor"); gdi.fillRight(); gdi.addButton("Cancel", "Avbryt", CompetitionCB).setCancel(); - gdi.addButton("EventorImport", "Hämta data från Eventor", CompetitionCB).setDefault(); + gdi.addButton("EventorImport", "Hämta data frÃ¥n Eventor", CompetitionCB).setDefault(); gdi.fillDown(); gdi.popX(); } @@ -1457,7 +1457,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) catch (std::exception &ex) { error = gdi.widen(ex.what()); if (error.empty()) - error = L"Okänt fel"; + error = L"Okänt fel"; } if (!error.empty()) { @@ -1465,7 +1465,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); gdi.fillDown(); gdi.addString("", 0, wstring(L"Fel: X#") + error).setColor(colorRed); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.refresh(); return 0; } @@ -1474,10 +1474,10 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); if (db != 0) { - gdi.addString("", 1, "Behandlar löpardatabasen").setColor(colorGreen); + gdi.addString("", 1, "Behandlar löpardatabasen").setColor(colorGreen); vector extractedFiles; gdi.fillRight(); - gdi.addString("", 0 , "Packar upp löpardatabas..."); + gdi.addString("", 0 , "Packar upp löpardatabas..."); gdi.refreshFast(); unzip(tRunnerDB.c_str(), 0, extractedFiles); gdi.addString("", 0 , "OK"); @@ -1500,12 +1500,12 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) if (id > 0) { gdi.dropLine(); - gdi.addString("", 1, "Behandlar tävlingsdata").setColor(colorGreen); + gdi.addString("", 1, "Behandlar tävlingsdata").setColor(colorGreen); set noFilter; string noType; if (createNew && id>0) { - gdi.addString("", 1, "Skapar ny tävling"); + gdi.addString("", 1, "Skapar ny tävling"); oe->newCompetition(L"New"); oe->importXML_EntryData(gdi, tEvent, false, false, noFilter, noType); oe->setZeroTime(formatTimeHMS(zeroTime)); @@ -1607,7 +1607,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.fillRight(); if (id > 0) gdi.addButton("StartIndividual", "Visa startlistan", ListsCB); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.refreshFast(); } @@ -1624,7 +1624,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } else if (bi.id=="FreeImport") { gdi.clearPage(true); - gdi.addString("", 2, "Fri anmälningsimport"); + gdi.addString("", 2, "Fri anmälningsimport"); gdi.addString("", 10, "help:33940"); gdi.dropLine(0.5); gdi.addInputBox("EntryText", 550, 280, entryText, 0, L""); @@ -1673,7 +1673,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) oe->getFreeImporter(fi); entryText=gdi.getText("EntryText"); gdi.clearPage(false); - gdi.addString("", 2, "Förhandsgranskning, import"); + gdi.addString("", 2, "Förhandsgranskning, import"); gdi.dropLine(0.5); wchar_t *bf=new wchar_t[entryText.length()+1]; wcscpy_s(bf, entryText.length()+1, entryText.c_str()); @@ -1701,8 +1701,8 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) fi.showEntries(gdi, entries); gdi.fillRight(); gdi.dropLine(1); - gdi.addButton("DoFreeImport", "Spara anmälningar", CompetitionCB); - gdi.addButton("FreeImport", "Ändra", CompetitionCB); + gdi.addButton("DoFreeImport", "Spara anmälningar", CompetitionCB); + gdi.addButton("FreeImport", "Ändra", CompetitionCB); gdi.addButton("Cancel", "Avbryt", CompetitionCB); gdi.scrollToBottom(); @@ -1871,7 +1871,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } else if (bi.id=="Duplicate") { oe->duplicate(); - gdi.alert("Skapade en lokal kopia av tävlingen."); + gdi.alert("Skapade en lokal kopia av tävlingen."); } else if (bi.id=="Import") { //Import complete competition @@ -1900,7 +1900,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.setWaitCursor(false); } else if (bi.id=="Delete" && - gdi.ask(L"Vill du verkligen radera tävlingen?")) { + gdi.ask(L"Vill du verkligen radera tävlingen?")) { if (oe->isClient()) oe->dropDatabase(); @@ -1919,7 +1919,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) return 0; } - oe->newCompetition(lang.tl(L"Ny tävling")); + oe->newCompetition(lang.tl(L"Ny tävling")); gdi.setWindowTitle(L""); if (useEventor()) { @@ -1949,7 +1949,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) else id=lbi.data; if (id==0) - throw meosException("Ingen tävling vald."); + throw meosException("Ingen tävling vald."); openCompetition(gdi, id); @@ -2097,7 +2097,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) else if (bi.id == "ExportRunnerDB") { xmlparser xml; vector< pair > ext; - ext.push_back(make_pair(L"IOF Löpardatabas, version 3.0 (xml)", L"*.xml")); + ext.push_back(make_pair(L"IOF Löpardatabas, version 3.0 (xml)", L"*.xml")); int ix; wstring fileName = gdi.browseForSave(ext, L"xml", ix); if (fileName.empty()) @@ -2242,7 +2242,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) wstring name; rdb.getName(name); - gdi.addString("", boldLarge, L"Anmäl X#" + name); + gdi.addString("", boldLarge, L"Anmäl X#" + name); gdi.setData("RunnerIx", ix); gdi.dropLine(); gdi.addSelection("Classes", 200, 300, 0, L"Klasser:"); @@ -2255,7 +2255,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); gdi.fillRight(); - gdi.addButton("DBEntry", "Anmäl", CompetitionCB).setDefault(); + gdi.addButton("DBEntry", "Anmäl", CompetitionCB).setDefault(); gdi.addButton("CancelEntry", "Avbryt", CompetitionCB).setCancel(); gdi.refresh(); } @@ -2283,7 +2283,7 @@ void TabCompetition::openCompetition(gdioutput &gdi, int id) { wstring err; try { if (!oe->open(id)) { - gdi.alert("Kunde inte öppna tävlingen."); + gdi.alert("Kunde inte öppna tävlingen."); return; } } @@ -2309,12 +2309,12 @@ int TabCompetition::restoreCB(gdioutput &gdi, int type, void *data) { if (ti.id == "") { wstring fi(bi.FullPath); if (!oe->open(fi, false)) { - gdi.alert("Kunde inte öppna tävlingen."); + gdi.alert("Kunde inte öppna tävlingen."); } else { const wstring &name = oe->getName(); if (name.find_last_of(L"}") != name.length()-1) - oe->setName(name + L" {" + lang.tl(L"återställd") + L"}"); + oe->setName(name + L" {" + lang.tl(L"Ã¥terställd") + L"}"); oe->restoreBackup(); @@ -2325,7 +2325,7 @@ int TabCompetition::restoreCB(gdioutput &gdi, int type, void *data) { } } else if (ti.id == "EraseBackup") { - if (gdi.ask(L"Vill du ta bort alla säkerhetskopior på X?#" + bi.Name)) { + if (gdi.ask(L"Vill du ta bort alla säkerhetskopior pÃ¥ X?#" + bi.Name)) { gdi.setWaitCursor(true); oe->deleteBackups(bi); listBackups(gdi); @@ -2341,10 +2341,10 @@ void TabCompetition::listBackups(gdioutput &gdi) { gdi.clearPage(false); oe->enumerateBackups(bf); - gdi.addString("", boldLarge|Capitalize, "Lagrade säkerhetskopior"); + gdi.addString("", boldLarge|Capitalize, "Lagrade säkerhetskopior"); gdi.addString("", 0, "help:restore_backup"); gdi.dropLine(0.4); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.dropLine(); oe->listBackups(gdi, ::restoreCB); gdi.scrollTo(0, yo); @@ -2356,12 +2356,12 @@ void TabCompetition::copyrightLine(gdioutput &gdi) const gdi.pushX(); gdi.fillRight(); - gdi.addButton("Help", "Hjälp", CompetitionCB, ""); + gdi.addButton("Help", "Hjälp", CompetitionCB, ""); gdi.addButton("About", "Om MeOS...", CompetitionCB); gdi.dropLine(0.4); gdi.fillDown(); - gdi.addString("", 0, makeDash(L"#Copyright © 2007-2018 Melin Software HB")); + gdi.addString("", 0, makeDash(L"#Copyright © 2007-2018 Melin Software HB")); gdi.dropLine(1); gdi.popX(); @@ -2374,7 +2374,7 @@ void TabCompetition::loadAboutPage(gdioutput &gdi) const gdi.clearPage(false); gdi.addString("", 2, makeDash(L"Om MeOS - ett Mycket Enkelt OrienteringsSystem")).setColor(colorDarkBlue); gdi.dropLine(2); - gdi.addStringUT(1, makeDash(L"Copyright © 2007-2018 Melin Software HB")); + gdi.addStringUT(1, makeDash(L"Copyright © 2007-2018 Melin Software HB")); gdi.dropLine(); gdi.addStringUT(10, "The database connection used is MySQL++\nCopyright " "(c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by MySQL AB," @@ -2388,19 +2388,20 @@ void TabCompetition::loadAboutPage(gdioutput &gdi) const "\n\nCzech Translation by Marek Kustka"); gdi.dropLine(); - gdi.addString("", 0, "Det här programmet levereras utan någon som helst garanti. Programmet är "); - gdi.addString("", 0, "fritt att använda och du är välkommen att distribuera det under vissa villkor,"); + gdi.addString("", 0, "Det här programmet levereras utan nÃ¥gon som helst garanti. Programmet är "); + gdi.addString("", 0, "fritt att använda och du är välkommen att distribuera det under vissa villkor,"); gdi.addString("", 0, "se license.txt som levereras med programmet."); gdi.dropLine(); - gdi.addString("", 1, "Vi stöder MeOS"); + gdi.addString("", 1, "Vi stöder MeOS"); vector supp; - getSupporters(supp); + vector developSupp; + getSupporters(supp, developSupp); for (size_t k = 0; kempty()) { - gdi.addString("", 2, "Välkommen till MeOS"); + gdi.addString("", 2, "Välkommen till MeOS"); gdi.addString("", 1, makeDash(L"#- ")+ lang.tl("ett Mycket Enkelt OrienteringsSystem")).setColor(colorDarkBlue); gdi.dropLine(); @@ -2434,7 +2435,7 @@ bool TabCompetition::loadPage(gdioutput &gdi) gdi.fillRight(); gdi.pushX(); - gdi.addSelection("CmpSel", 300, 400, CompetitionCB, L"Välj tävling:"); + gdi.addSelection("CmpSel", 300, 400, CompetitionCB, L"Välj tävling:"); wchar_t bf[260]; getUserFile(bf, L""); @@ -2447,21 +2448,21 @@ bool TabCompetition::loadPage(gdioutput &gdi) gdi.selectItemByData("CmpSel", lastCmp); gdi.dropLine(); - gdi.addButton("OpenCmp", "Öppna", CompetitionCB, "Öppna vald tävling").setDefault(); + gdi.addButton("OpenCmp", "Öppna", CompetitionCB, "Öppna vald tävling").setDefault(); gdi.dropLine(4); gdi.popX(); - gdi.addButton("NewCmp", "Ny tävling", CompetitionCB, "Skapa en ny, tom, tävling"); + gdi.addButton("NewCmp", "Ny tävling", CompetitionCB, "Skapa en ny, tom, tävling"); if (useEventor()) - gdi.addButton("Eventor", "Tävling från Eventor...", CompetitionCB, "Skapa en ny tävling med data från Eventor"); + gdi.addButton("Eventor", "Tävling frÃ¥n Eventor...", CompetitionCB, "Skapa en ny tävling med data frÃ¥n Eventor"); gdi.addButton("ConnectMySQL", "Databasanslutning...", CompetitionCB, "Anslut till en server"); gdi.popX(); gdi.dropLine(2.5); - gdi.addButton("Import", "Importera tävling...", CompetitionCB, "Importera en tävling från fil"); - gdi.addButton("Restore", "Återställ säkerhetskopia...", CompetitionCB, "Visa tillgängliga säkerhetskopior"); - gdi.addButton("LocalSettings", "Ändra lokala inställningar...", CompetitionCB); + gdi.addButton("Import", "Importera tävling...", CompetitionCB, "Importera en tävling frÃ¥n fil"); + gdi.addButton("Restore", "Ã…terställ säkerhetskopia...", CompetitionCB, "Visa tillgängliga säkerhetskopior"); + gdi.addButton("LocalSettings", "Ändra lokala inställningar...", CompetitionCB); gdi.popX(); gdi.dropLine(3); @@ -2507,7 +2508,7 @@ bool TabCompetition::loadPage(gdioutput &gdi) gdi.pushX(); gdi.fillRight(); - gdi.addInput("Name", oe->getName(), 24, 0, L"Tävlingsnamn:"); + gdi.addInput("Name", oe->getName(), 24, 0, L"Tävlingsnamn:"); gdi.fillDown(); gdi.addInput("Annotation", oe->getAnnotation(), 20, 0, L"Kommentar / version:") @@ -2520,7 +2521,7 @@ bool TabCompetition::loadPage(gdioutput &gdi) gdi.fillDown(); gdi.dropLine(1.2); - gdi.addCheckbox("LongTimes", "Aktivera stöd för tider över 24 timmar", CompetitionCB, oe->useLongTimes()); + gdi.addCheckbox("LongTimes", "Aktivera stöd för tider över 24 timmar", CompetitionCB, oe->useLongTimes()); if (false && oe->isClient()) { gdi.popX(); @@ -2543,10 +2544,10 @@ bool TabCompetition::loadPage(gdioutput &gdi) gdi.dropLine(); if (oe->getExtIdentifier() > 0 && useEventor()) { - gdi.addButton("SynchEventor", "Eventorkoppling", CompetitionCB, "Utbyt tävlingsdata med Eventor"); + gdi.addButton("SynchEventor", "Eventorkoppling", CompetitionCB, "Utbyt tävlingsdata med Eventor"); } - gdi.addButton("Settings", "Tävlingsinställningar", CompetitionCB); + gdi.addButton("Settings", "Tävlingsinställningar", CompetitionCB); gdi.addButton("Features", "MeOS Funktioner", CompetitionCB); #ifdef _DEBUG @@ -2560,11 +2561,11 @@ bool TabCompetition::loadPage(gdioutput &gdi) //gdi.fillRight(); //gdi.addCheckbox("UseEconomy", "Hantera klubbar och ekonomi", CompetitionCB, oe->useEconomy()); - //gdi.addCheckbox("UseSpeaker", "Använd speakerstöd", CompetitionCB, oe->getDCI().getInt("UseSpeaker")!=0); + //gdi.addCheckbox("UseSpeaker", "Använd speakerstöd", CompetitionCB, oe->getDCI().getInt("UseSpeaker")!=0); //gdi.popX(); //gdi.dropLine(2); - //gdi.addCheckbox("UseRunnerDb", "Använd löpardatabasen", CompetitionCB, oe->useRunnerDb()); + //gdi.addCheckbox("UseRunnerDb", "Använd löpardatabasen", CompetitionCB, oe->useRunnerDb()); //gdi.popX(); //gdi.dropLine(2); @@ -2578,7 +2579,7 @@ bool TabCompetition::loadPage(gdioutput &gdi) gdi.addButton("Duplicate", "Duplicera", CompetitionCB, "help:duplicate"); gdi.addButton("Delete", "Radera", CompetitionCB); - gdi.addButton("CloseCmp", "Stäng", CompetitionCB); + gdi.addButton("CloseCmp", "Stäng", CompetitionCB); gdi.dropLine(2.5); gdi.popX(); @@ -2601,33 +2602,33 @@ bool TabCompetition::loadPage(gdioutput &gdi) rc.left = gdi.getCX() - gdi.scaleLength(30); int bw = gdi.scaleLength(150); - gdi.addString("", 1, "Importera tävlingsdata"); - gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "Entries", "Anmälningar", + gdi.addString("", 1, "Importera tävlingsdata"); + gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "Entries", "Anmälningar", CompetitionCB, "", false, false); - gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "FreeImport", "Fri anmälningsimport", + gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "FreeImport", "Fri anmälningsimport", CompetitionCB, "", false, false); gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "Courses", "Banor", CompetitionCB, "", false, false); gdi.dropLine(); - gdi.addString("", 1, "Exportera tävlingsdata"); + gdi.addString("", 1, "Exportera tävlingsdata"); gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "Startlist", "Startlista", - CompetitionCB, "Exportera startlista på fil", false, false); - gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "Splits", "Resultat && sträcktider", - CompetitionCB, "Exportera resultat på fil", false, false); + CompetitionCB, "Exportera startlista pÃ¥ fil", false, false); + gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "Splits", "Resultat && sträcktider", + CompetitionCB, "Exportera resultat pÃ¥ fil", false, false); gdi.dropLine(); gdi.addString("", 1, "Funktioner"); if (oe->useRunnerDb()) { - gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "RunnerDatabase", "Löpardatabasen", - CompetitionCB, "Visa och hantera löpardatabasen", false, false); + gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "RunnerDatabase", "Löpardatabasen", + CompetitionCB, "Visa och hantera löpardatabasen", false, false); } if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::SeveralStages)) { gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "MultiEvent", "Hantera flera etapper", CompetitionCB, "", false, false); } - gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "SaveAs", "Säkerhetskopiera", + gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "SaveAs", "Säkerhetskopiera", CompetitionCB, "", false, false); if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Network)) { gdi.addButton(gdi.getCX(), gdi.getCY(), bw, "ConnectMySQL", "Databasanslutning", @@ -2663,7 +2664,7 @@ void TabCompetition::textSizeControl(gdioutput &gdi) const gdi.setCX(x); - gdi.addString("", 1, "Programinställningar"); + gdi.addString("", 1, "Programinställningar"); gdi.dropLine(2); gdi.setCX(x); //gdi.addString("", 0, "Textstorlek:"); @@ -2671,12 +2672,12 @@ void TabCompetition::textSizeControl(gdioutput &gdi) const gdi.addSelection(id, 90, 200, CompetitionCB, L"Textstorlek:"); gdi.addItem(id, lang.tl("Normal"), 0); gdi.addItem(id, lang.tl("Stor"), 1); - gdi.addItem(id, lang.tl("Större"), 2); - gdi.addItem(id, lang.tl("Störst"), 3); + gdi.addItem(id, lang.tl("Större"), 2); + gdi.addItem(id, lang.tl("Störst"), 3); gdi.selectItemByData(id, s); id = "Language"; - gdi.addSelection(id, 150, 300, CompetitionCB, L"Språk:"); + gdi.addSelection(id, 150, 300, CompetitionCB, L"SprÃ¥k:"); vector ln = lang.get().getLangResource(); wstring current = oe->getPropertyString("Language", L"Svenska"); int ix = -1; @@ -2690,14 +2691,14 @@ void TabCompetition::textSizeControl(gdioutput &gdi) const if (oe->empty()) { gdi.setCX(gdi.getCX()+gdi.getLineHeight()*2); gdi.dropLine(); - gdi.addButton("Setup", "Inställningar...", CompetitionCB); + gdi.addButton("Setup", "Inställningar...", CompetitionCB); rc.right = gdi.getCX() + gdi.scaleLength(15); gdi.setCX(x); gdi.dropLine(3); - gdi.addCheckbox("UseEventor", "Använd Eventor", CompetitionCB, + gdi.addCheckbox("UseEventor", "Använd Eventor", CompetitionCB, useEventor(), "eventor:help"); rc.bottom = gdi.getCY() + gdi.scaleLength(25); @@ -2881,14 +2882,14 @@ void TabCompetition::getEventorCompetitions(gdioutput &gdi, xmlList entryBreaks; xmlEvents[k].getObjects("EntryBreak", entryBreaks); /* Mats Troeng explains Entry Break 2011-04-03: - Efteranmälan i detta fall är satt som en tilläggsavgift (+50%) på ordinarie avgift. - Tilläggsavgiften är aktiv 2011-04-13 -- 2011-04-20, medan den ordinarie avgiften är aktiv -- 2011-04-20. Man kan också - definiera enligt ditt andra exempel i Eventor om man vill, men då måste man sätta ett fixt belopp i stället för en - procentsats för efteranmälan eftersom det inte finns något belopp att beräkna procentsatsen på. + Efteranmälan i detta fall är satt som en tilläggsavgift (+50%) pÃ¥ ordinarie avgift. + Tilläggsavgiften är aktiv 2011-04-13 -- 2011-04-20, medan den ordinarie avgiften är aktiv -- 2011-04-20. Man kan ocksÃ¥ + definiera enligt ditt andra exempel i Eventor om man vill, men dÃ¥ mÃ¥ste man sätta ett fixt belopp i stället för en + procentsats för efteranmälan eftersom det inte finns nÃ¥got belopp att beräkna procentsatsen pÃ¥. - För att få ut anmälningsstoppen för en tävling tittar man alltså på unionen av alla (ValidFromDate - 1 sekund) - samt ValidToDate. I normalfallet är det två stycken, varav det första är ordinarie anmälningsstopp. - För t ex O-Ringen som har flera anmälningsstopp blir det mer än två EntryBreaks. + För att fÃ¥ ut anmälningsstoppen för en tävling tittar man alltsÃ¥ pÃ¥ unionen av alla (ValidFromDate - 1 sekund) + samt ValidToDate. I normalfallet är det tvÃ¥ stycken, varav det första är ordinarie anmälningsstopp. + För t ex O-Ringen som har flera anmälningsstopp blir det mer än tvÃ¥ EntryBreaks. */ for (size_t k = 0; k 0) { - gdi.addString("", 0, "Hämtar tävling..."); + gdi.addString("", 0, "Hämtar tävling..."); gdi.refreshFast(); dwl.downloadFile(eventorBase + L"export/event?eventId=" + itow(id) + iofExportVersion, eventFile, key); dwl.createDownloadThread(); @@ -2963,7 +2964,7 @@ void TabCompetition::getEventorCmpData(gdioutput &gdi, int id, gdi.popX(); gdi.dropLine(); - gdi.addString("", 0, "Hämtar klasser..."); + gdi.addString("", 0, "Hämtar klasser..."); gdi.refreshFast(); dwl.downloadFile(eventorBase + L"export/classes?eventId=" + itow(id) + iofExportVersion, classFile, key); dwl.createDownloadThread(); @@ -2981,7 +2982,7 @@ void TabCompetition::getEventorCmpData(gdioutput &gdi, int id, gdi.dropLine(); - gdi.addString("", 0, "Hämtar anmälda..."); + gdi.addString("", 0, "Hämtar anmälda..."); gdi.refreshFast(); dwl.downloadFile(eventorBase + L"export/entries?eventId=" + itow(id) + iofExportVersion, entryFile, key); dwl.createDownloadThread(); @@ -2999,7 +3000,7 @@ void TabCompetition::getEventorCmpData(gdioutput &gdi, int id, } - gdi.addString("", 0, "Hämtar klubbar..."); + gdi.addString("", 0, "Hämtar klubbar..."); gdi.refreshFast(); dwl.downloadFile(eventorBase + L"export/clubs?" + iofExportVersion, clubFile, key); dwl.createDownloadThread(); @@ -3016,7 +3017,7 @@ void TabCompetition::getEventorCmpData(gdioutput &gdi, int id, gdi.dropLine(); if (dbFile.length() > 0) { - gdi.addString("", 0, "Hämtar löpardatabasen..."); + gdi.addString("", 0, "Hämtar löpardatabasen..."); gdi.refreshFast(); dwl.downloadFile(eventorBase + L"export/cachedcompetitors?organisationIds=1&includePreselectedClasses=false&zip=true" + iofExportVersion, dbFile, key); dwl.createDownloadThread(); @@ -3048,7 +3049,7 @@ void TabCompetition::saveMultiEvent(gdioutput &gdi) { wstring nameIdPre = oe->getNameId(idPre); wstring nameId = oe->getNameId(0); if (nameIdPost == nameId || nameIdPre == nameId || (nameIdPost == nameIdPre && !nameIdPost.empty())) - throw meosException("Ogiltig föregående/efterföljande etapp."); + throw meosException("Ogiltig föregÃ¥ende/efterföljande etapp."); if (idPost == -2) oe->getDI().setString("PostEvent", L""); @@ -3078,20 +3079,20 @@ void TabCompetition::loadMultiEvent(gdioutput &gdi) { wstring preEvent = oe->getDCI().getString("PreEvent"); wstring postEvent = oe->getDCI().getString("PostEvent"); - gdi.addSelection("PreEvent", 300, 200, CompetitionCB, L"Föregående etapp:", L"Välj den etapp som föregår denna tävling"); + gdi.addSelection("PreEvent", 300, 200, CompetitionCB, L"FöregÃ¥ende etapp:", L"Välj den etapp som föregÃ¥r denna tävling"); wchar_t bf[260]; getUserFile(bf, L""); oe->enumerateCompetitions(bf, L"*.meos"); oe->fillCompetitions(gdi, "PreEvent", 1, preEvent); - gdi.addItem("PreEvent", lang.tl("Ingen / okänd"), -2); + gdi.addItem("PreEvent", lang.tl("Ingen / okänd"), -2); bool hasPre = !gdi.getText("PreEvent").empty(); if (!hasPre) gdi.selectItemByData("PreEvent", -2); - gdi.addSelection("PostEvent", 300, 200, CompetitionCB, L"Nästa etapp:", L"Välj den etapp som kommer efter denna tävling"); + gdi.addSelection("PostEvent", 300, 200, CompetitionCB, L"Nästa etapp:", L"Välj den etapp som kommer efter denna tävling"); oe->fillCompetitions(gdi, "PostEvent", 1, postEvent); - gdi.addItem("PostEvent", lang.tl("Ingen / okänd"), -2); + gdi.addItem("PostEvent", lang.tl("Ingen / okänd"), -2); bool hasPost = !gdi.getText("PostEvent").empty(); if (!hasPost) @@ -3125,16 +3126,16 @@ void TabCompetition::loadMultiEvent(gdioutput &gdi) { gdi.fillRight(); gdi.dropLine(2); - gdi.addButton("OpenPre", "Öppna föregående", CompetitionCB, "Öppna nästa etapp"); - gdi.addButton("OpenPost", "Öppna nästa", CompetitionCB, "Öppna föregående etapp"); + gdi.addButton("OpenPre", "Öppna föregÃ¥ende", CompetitionCB, "Öppna nästa etapp"); + gdi.addButton("OpenPost", "Öppna nästa", CompetitionCB, "Öppna föregÃ¥ende etapp"); gdi.dropLine(3); gdi.popX(); gdi.addButton("SaveMulti", "Spara", CompetitionCB); - gdi.addButton("CloneCmp", "Lägg till ny etapp...", CompetitionCB); - gdi.addButton("TransferData", "Överför resultat till nästa etapp", CompetitionCB); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("CloneCmp", "Lägg till ny etapp...", CompetitionCB); + gdi.addButton("TransferData", "Överför resultat till nästa etapp", CompetitionCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.setInputStatus("OpenPre", hasPre); gdi.setInputStatus("OpenPost", hasPost); @@ -3147,7 +3148,7 @@ void TabCompetition::loadMultiEvent(gdioutput &gdi) { void TabCompetition::loadRunnerDB(gdioutput &gdi, int tableToShow, bool updateTableOnly) { if (!updateTableOnly) { gdi.clearPage(false); - gdi.addString("", boldLarge, "Löpardatabasen"); + gdi.addString("", boldLarge, "Löpardatabasen"); gdi.setRestorePoint("DBHeader"); } @@ -3157,13 +3158,13 @@ void TabCompetition::loadRunnerDB(gdioutput &gdi, int tableToShow, bool updateTa gdi.dropLine(); gdi.pushX(); gdi.fillRight(); - gdi.addButton("RunnerDB", "Personer", CompetitionCB, "Visa löpardatabasen"); + gdi.addButton("RunnerDB", "Personer", CompetitionCB, "Visa löpardatabasen"); gdi.addButton("ClubDB", "Klubbar", CompetitionCB, "Visa klubbdatabasen"); gdi.addButton("DBaseIn", "Importera", CompetitionCB, "Importera IOF (xml)"); if (useEventor()) - gdi.addButton("EventorUpdateDB", "Uppdatera", CompetitionCB, "Uppdatera från Eventor"); - gdi.addButton("ExportSetup", "Exportera", CompetitionCB, "Exportera på fil"); - gdi.addButton("Cancel", "Återgå", CompetitionCB); + gdi.addButton("EventorUpdateDB", "Uppdatera", CompetitionCB, "Uppdatera frÃ¥n Eventor"); + gdi.addButton("ExportSetup", "Exportera", CompetitionCB, "Exportera pÃ¥ fil"); + gdi.addButton("Cancel", "Ã…tergÃ¥", CompetitionCB); gdi.dropLine(3); gdi.popX(); @@ -3172,7 +3173,7 @@ void TabCompetition::loadRunnerDB(gdioutput &gdi, int tableToShow, bool updateTa gdi.fillRight(); gdi.addButton("ExportRunnerDB", "Exportera personer (IOF-XML)", CompetitionCB); gdi.addButton("ExportClubDB", "Exportera klubbar (IOF-XML)", CompetitionCB); - gdi.addButton("ClearDB", "Töm databasen", CompetitionCB); + gdi.addButton("ClearDB", "Töm databasen", CompetitionCB); gdi.dropLine(3); gdi.popX(); @@ -3207,12 +3208,12 @@ void TabCompetition::welcomeToMeOS(gdioutput &gdi) { gdi.dropLine(5); gdi.setCX(gdi.getCX() + 5*gdi.getLineHeight()); - gdi.addString("", 2, "Välkommen till MeOS"); + gdi.addString("", 2, "Välkommen till MeOS"); gdi.addString("", 1, makeDash(L"#- ")+ lang.tl("ett Mycket Enkelt OrienteringsSystem")).setColor(colorDarkBlue); gdi.dropLine(); gdi.addString("", 0, getMeosFullVersion()); gdi.dropLine(2); - gdi.addStringUT(0, "Välj språk / Preferred language / Sprache"); + gdi.addStringUT(0, "Välj sprÃ¥k / Preferred language / Sprache"); gdi.dropLine(); gdi.fillRight(); const char *id = "Language"; @@ -3246,34 +3247,34 @@ void TabCompetition::selectTransferClasses(gdioutput &gdi, bool expand) { gdi.fillDown(); gdi.addSelection("ChangeClassType", 300, 400, 0, L"Hantera deltagare som bytt klass:"); - gdi.addItem("ChangeClassType", lang.tl("Byt till vakansplats i rätt klass (om möjligt)"), oEvent::ChangeClassVacant); - gdi.addItem("ChangeClassType", lang.tl("Byt till rätt klass (behåll eventuell starttid)"), oEvent::ChangeClass); - gdi.addItem("ChangeClassType", lang.tl("Tillåt ny klass, inget totalresultat"), oEvent::TransferNoResult); - gdi.addItem("ChangeClassType", lang.tl("Tillåt ny klass, behåll resultat från annan klass"), oEvent::TransferAnyway); + gdi.addItem("ChangeClassType", lang.tl("Byt till vakansplats i rätt klass (om möjligt)"), oEvent::ChangeClassVacant); + gdi.addItem("ChangeClassType", lang.tl("Byt till rätt klass (behÃ¥ll eventuell starttid)"), oEvent::ChangeClass); + gdi.addItem("ChangeClassType", lang.tl("TillÃ¥t ny klass, inget totalresultat"), oEvent::TransferNoResult); + gdi.addItem("ChangeClassType", lang.tl("TillÃ¥t ny klass, behÃ¥ll resultat frÃ¥n annan klass"), oEvent::TransferAnyway); gdi.selectItemByData("ChangeClassType", lastChangeClassType); if (expand) { gdi.fillDown(); - gdi.addListBox("ClassNewEntries", 200, 400, 0, L"Klasser där nyanmälningar ska överföras:", L"", true); + gdi.addListBox("ClassNewEntries", 200, 400, 0, L"Klasser där nyanmälningar ska överföras:", L"", true); oe->fillClasses(gdi, "ClassNewEntries", oEvent::extraNone, oEvent::filterNone); gdi.setSelection("ClassNewEntries", allTransfer); gdi.pushX(); gdi.fillRight(); - gdi.addButton("SelectAll", "Välj allt", CompetitionCB); + gdi.addButton("SelectAll", "Välj allt", CompetitionCB); gdi.fillDown(); - gdi.addButton("SelectNone", "Välj inget", CompetitionCB); + gdi.addButton("SelectNone", "Välj inget", CompetitionCB); gdi.popX(); - gdi.addCheckbox("TransferEconomy", "Överför nya deltagare i ej valda klasser med status \"deltar ej\""); + gdi.addCheckbox("TransferEconomy", "Överför nya deltagare i ej valda klasser med status \"deltar ej\""); gdi.fillRight(); } else { gdi.fillRight(); - gdi.addButton("ExpandTResults", "Välj klasser med nya anmälningar", CompetitionCB); + gdi.addButton("ExpandTResults", "Välj klasser med nya anmälningar", CompetitionCB); } - gdi.addButton("DoTransferData", "Överför resultat", CompetitionCB); - gdi.addButton("MultiEvent", "Återgå", CompetitionCB); + gdi.addButton("DoTransferData", "Överför resultat", CompetitionCB); + gdi.addButton("MultiEvent", "Ã…tergÃ¥", CompetitionCB); gdi.popX(); gdi.dropLine(); gdi.refresh(); @@ -3385,10 +3386,10 @@ void TabCompetition::saveMeosFeatures(gdioutput &gdi, bool write) { void TabCompetition::entryForm(gdioutput &gdi, bool isGuide) { if (isGuide) { gdi.dropLine(1); - gdi.addString("", fontMediumPlus, "Importera tävlingsdata"); + gdi.addString("", fontMediumPlus, "Importera tävlingsdata"); } else - gdi.addString("", 2, "Importera tävlingsdata"); + gdi.addString("", 2, "Importera tävlingsdata"); gdi.dropLine(0.5); gdi.addString("", 10, "help:import_entry_data"); @@ -3397,40 +3398,40 @@ void TabCompetition::entryForm(gdioutput &gdi, bool isGuide) { gdi.pushX(); gdi.fillRight(); - gdi.addInput("FileNameCmp", L"", 48, 0, L"Tävlingsinställningar (IOF, xml)"); + gdi.addInput("FileNameCmp", L"", 48, 0, L"Tävlingsinställningar (IOF, xml)"); gdi.dropLine(); - gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameCmp"); + gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameCmp"); gdi.popX(); gdi.dropLine(2.5); gdi.addInput("FileNameCls", L"", 48, 0, L"Klasser (IOF, xml)"); gdi.dropLine(); - gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameCls"); + gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameCls"); gdi.popX(); gdi.dropLine(2.5); gdi.addInput("FileNameClb", L"", 48, 0, L"Klubbar (IOF, xml)"); gdi.dropLine(); - gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameClb"); + gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameClb"); gdi.popX(); gdi.dropLine(2.5); - gdi.addInput("FileName", L"", 48, 0, L"Anmälningar (IOF (xml) eller OE-CSV)"); + gdi.addInput("FileName", L"", 48, 0, L"Anmälningar (IOF (xml) eller OE-CSV)"); gdi.dropLine(); - gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileName"); + gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileName"); gdi.popX(); gdi.dropLine(3.2); if (!isGuide && oe->getNumRunners() > 0) { - gdi.addCheckbox("RemoveRemoved", "Ta bort eventuella avanmälda deltagare", 0, true); + gdi.addCheckbox("RemoveRemoved", "Ta bort eventuella avanmälda deltagare", 0, true); } gdi.popX(); gdi.dropLine(2.5); gdi.addInput("FileNameRank", L"", 48, 0, L"Ranking (IOF, xml)"); gdi.dropLine(); - gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameRank"); + gdi.addButton("BrowseEntries", "Bläddra...", CompetitionCB).setExtra(L"FileNameRank"); gdi.popX(); gdi.fillDown(); gdi.dropLine(3); @@ -3464,7 +3465,7 @@ TabCompetition::FlowOperation TabCompetition::saveEntries(gdioutput &gdi, bool r if (csv.importOE_CSV(*oe, File)) { gdi.addString("", 0, "Klart. X deltagare importerade.#" + itos(csv.nimport)); } - else gdi.addString("", 0, "Försöket misslyckades."); + else gdi.addString("", 0, "Försöket misslyckades."); } else if (type==2) { gdi.addString("", 0, "Importerar OS2003 csv-fil..."); @@ -3473,7 +3474,7 @@ TabCompetition::FlowOperation TabCompetition::saveEntries(gdioutput &gdi, bool r if (csv.importOS_CSV(*oe, File)) { gdi.addString("", 0, "Klart. X lag importerade.#" + itos(csv.nimport)); } - else gdi.addString("", 0, "Försöket misslyckades."); + else gdi.addString("", 0, "Försöket misslyckades."); } else if (type==3) { gdi.addString("", 0, "Importerar RAID patrull csv-fil..."); @@ -3481,7 +3482,7 @@ TabCompetition::FlowOperation TabCompetition::saveEntries(gdioutput &gdi, bool r if (csv.importRAID(*oe, File)) { gdi.addString("", 0, "Klart. X patruller importerade.#" + itos(csv.nimport)); } - else gdi.addString("", 0, "Försöket misslyckades."); + else gdi.addString("", 0, "Försöket misslyckades."); } } @@ -3559,10 +3560,10 @@ TabCompetition::FlowOperation TabCompetition::checkStageFilter(gdioutput & gdi, if (stageFilter) { gdi.dropLine(0.5); - gdi.addString("", 0, "Det finns anmälningsdata för flera etapper."); + gdi.addString("", 0, "Det finns anmälningsdata för flera etapper."); gdi.dropLine(0.5); gdi.fillRight(); - gdi.addSelection("Stage", 150, 200, stageInfoCB, L"Välj etapp att importera:"); + gdi.addSelection("Stage", 150, 200, stageInfoCB, L"Välj etapp att importera:"); gdi.addItem("Stage", lang.tl("Alla"), 0); for (int sn : scanFilter) { if (sn > 0) @@ -3581,10 +3582,10 @@ TabCompetition::FlowOperation TabCompetition::checkStageFilter(gdioutput & gdi, gdi.dropLine(2); } gdi.dropLine(0.5); - gdi.addString("", 0, "Det finns multiplia Id-nummer för personer"); + gdi.addString("", 0, "Det finns multiplia Id-nummer för personer"); gdi.dropLine(0.5); gdi.fillRight(); - gdi.addSelection("IdType", 150, 200, stageInfoCB, L"Välj vilken typ du vill importera:"); + gdi.addSelection("IdType", 150, 200, stageInfoCB, L"Välj vilken typ du vill importera:"); int i = 0; for (string &sn : idProviders) { gdi.addItem("IdType", gdi.widen(sn), i++); @@ -3658,9 +3659,9 @@ void TabCompetition::selectStartlistOptions(gdioutput &gdi) { gdi.setSelection("ClassNewEntries", allTransfer); gdi.pushX(); gdi.fillRight(); - gdi.addButton("SelectAll", "Välj allt", CompetitionCB); + gdi.addButton("SelectAll", "Välj allt", CompetitionCB); gdi.fillDown(); - gdi.addButton("SelectNone", "Välj inget", CompetitionCB); + gdi.addButton("SelectNone", "Välj inget", CompetitionCB); gdi.popX(); gdi.newColumn(); @@ -3687,17 +3688,17 @@ void TabCompetition::selectStartlistOptions(gdioutput &gdi) { oe->getClassConfigurationInfo(cnf); if (oe->hasTeam()) { - gdi.addCheckbox("ExportTeam", "Exportera individuella lopp istället för lag", 0, false); + gdi.addCheckbox("ExportTeam", "Exportera individuella lopp istället för lag", 0, false); } if (oe->hasMultiRunner() || oe->getStageNumber() > 0) - gdi.addCheckbox("IncludeRaceNumber", "Inkludera information om flera lopp per löpare", 0, true); + gdi.addCheckbox("IncludeRaceNumber", "Inkludera information om flera lopp per löpare", 0, true); setExportOptionsStatus(gdi, format); gdi.addInput("Filename", L"", 48, CompetitionCB, L"Filnamn:").setExtra(L"DoSaveStartlist"); gdi.fillRight(); gdi.dropLine(); - gdi.addButton("BrowseExport", "Bläddra...", CompetitionCB); + gdi.addButton("BrowseExport", "Bläddra...", CompetitionCB); gdi.addButton("DoSaveStartlist", "Exportera", CompetitionCB).setDefault(); gdi.addButton("Cancel", "Avbryt", CompetitionCB).setCancel(); gdi.disableInput("DoSaveStartlist"); @@ -3706,7 +3707,7 @@ void TabCompetition::selectStartlistOptions(gdioutput &gdi) { void TabCompetition::selectExportSplitOptions(gdioutput &gdi) { gdi.clearPage(false); - gdi.addString("", boldLarge, "Export av resultat/sträcktider"); + gdi.addString("", boldLarge, "Export av resultat/sträcktider"); gdi.dropLine(); gdi.pushY(); gdi.addListBox("ClassNewEntries", 250, 400, 0, L"Klassval:", L"", true); @@ -3715,9 +3716,9 @@ void TabCompetition::selectExportSplitOptions(gdioutput &gdi) { gdi.setSelection("ClassNewEntries", allTransfer); gdi.pushX(); gdi.fillRight(); - gdi.addButton("SelectAll", "Välj allt", CompetitionCB); + gdi.addButton("SelectAll", "Välj allt", CompetitionCB); gdi.fillDown(); - gdi.addButton("SelectNone", "Välj inget", CompetitionCB); + gdi.addButton("SelectNone", "Välj inget", CompetitionCB); gdi.popX(); gdi.newColumn(); gdi.popY(); @@ -3748,10 +3749,10 @@ void TabCompetition::selectExportSplitOptions(gdioutput &gdi) { gdi.addSelection("LegType", 300, 100, 0, L"Exportval, IOF-XML"); gdi.addItem("LegType", lang.tl("Totalresultat"), 1); gdi.addItem("LegType", lang.tl("Alla lopp som individuella"), 3); - gdi.addItem("LegType", lang.tl("Alla sträckor/lopp i separata filer"), 2); + gdi.addItem("LegType", lang.tl("Alla sträckor/lopp i separata filer"), 2); int legMax = cnf.getNumLegsTotal(); for (int k = 0; khasMultiRunner() || oe->getStageNumber() > 0) - gdi.addCheckbox("IncludeRaceNumber", "Inkludera information om flera lopp per löpare", 0, true); + gdi.addCheckbox("IncludeRaceNumber", "Inkludera information om flera lopp per löpare", 0, true); setExportOptionsStatus(gdi, format); gdi.addInput("Filename", L"", 48, CompetitionCB, L"Filnamn:").setExtra(L"DoSaveSplits"); gdi.fillRight(); gdi.dropLine(); - gdi.addButton("BrowseExportResult", "Bläddra...", CompetitionCB); + gdi.addButton("BrowseExportResult", "Bläddra...", CompetitionCB); gdi.addButton("DoSaveSplits", "Exportera", CompetitionCB).setDefault(); gdi.addButton("Cancel", "Avbryt", CompetitionCB).setCancel(); @@ -3808,7 +3809,7 @@ void TabCompetition::clearCompetitionData() { void TabCompetition::loadSettings(gdioutput &gdi) { gdi.clearPage(false); - gdi.addString("", boldLarge, "Tävlingsinställningar"); + gdi.addString("", boldLarge, "Tävlingsinställningar"); gdi.dropLine(0.5); vector fields; gdi.pushY(); @@ -3864,7 +3865,7 @@ void TabCompetition::loadSettings(gdioutput &gdi) { gdi.popX(); gdi.dropLine(3); - gdi.addString("", 1, "Åldersgränser, reducerad anmälningsavgift"); + gdi.addString("", 1, "Ã…ldersgränser, reducerad anmälningsavgift"); fields.clear(); fields.push_back("YouthAge"); fields.push_back("SeniorAge"); @@ -3886,14 +3887,14 @@ void TabCompetition::loadSettings(gdioutput &gdi) { gdi.popX(); gdi.dropLine(3); - gdi.addCheckbox("PreSymbol", "Valutasymbol före", 0, + gdi.addCheckbox("PreSymbol", "Valutasymbol före", 0, oe->getDCI().getInt("CurrencyPreSymbol") == 1); gdi.popX(); gdi.dropLine(2.5); bool useFrac = oe->getDCI().getInt("CurrencyFactor") == 100; - gdi.addCheckbox("UseFraction", "Tillåt decimaler", CompetitionCB, - useFrac, "Tillåt valutauttryck med decimaler"); + gdi.addCheckbox("UseFraction", "TillÃ¥t decimaler", CompetitionCB, + useFrac, "TillÃ¥t valutauttryck med decimaler"); fields.clear(); gdi.dropLine(-1); @@ -3907,7 +3908,7 @@ void TabCompetition::loadSettings(gdioutput &gdi) { gdi.dropLine(3); gdi.fillDown(); - gdi.addString("", 1, "Tävlingsregler"); + gdi.addString("", 1, "Tävlingsregler"); fields.clear(); gdi.fillRight(); gdi.pushX(); @@ -3944,7 +3945,7 @@ void TabCompetition::loadSettings(gdioutput &gdi) { if (k == 0) gdi.addButton(gdi.getCX(), gdi.getCY(), gdi.scaleLength(20), "AddPayMode", "+", CompetitionCB, - "Lägg till", false, false); + "Lägg till", false, false); gdi.dropLine(2.5); gdi.popX(); @@ -4065,7 +4066,7 @@ void TabCompetition::checkReadyForResultExport(gdioutput &gdi, const set &c if (numVacant > 0) { if (gdi.ask(L"ask:hasVacant")) { - if (gdi.ask(L"Vill du radera alla vakanser från tävlingen?")) { + if (gdi.ask(L"Vill du radera alla vakanser frÃ¥n tävlingen?")) { if (classFilter.empty()) oe->removeVacanies(0); else { diff --git a/code/TabCompetition.h b/code/TabCompetition.h index 87f18df..a170f5c 100644 --- a/code/TabCompetition.h +++ b/code/TabCompetition.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabControl.cpp b/code/TabControl.cpp index 0f08ace..ad4223e 100644 --- a/code/TabControl.cpp +++ b/code/TabControl.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -81,12 +81,12 @@ void TabControl::selectControl(gdioutput &gdi, pControl pc) wstring info; if (numVisit > 0) { - info = L"Antal besökare X, genomsnittlig bomtid Y, största bomtid Z#" + + info = L"Antal besökare X, genomsnittlig bomtid Y, största bomtid Z#" + itow(numVisit) + L" (" + itow(numVisitExp) + L")#" + getTimeMS(pc->getMissedTimeTotal() / numVisit) + L"#" + getTimeMS(pc->getMissedTimeMax()); } else if (numVisitExp > 0) { - info = L"Förväntat antal besökare: X#" + itow(numVisitExp); + info = L"Förväntat antal besökare: X#" + itow(numVisitExp); } gdi.setText("ControlID", itow(pc->getId()), true); @@ -159,7 +159,7 @@ void TabControl::save(gdioutput &gdi) throw std::exception("Internal error"); if (pc->getStatus() != oControl::StatusFinish && pc->getStatus() != oControl::StatusStart) { if (!pc->setNumbers(gdi.getText("Code"))) - gdi.alert("Kodsiffran måste vara ett heltal. Flera kodsiffror måste separeras med komma."); + gdi.alert("Kodsiffran mÃ¥ste vara ett heltal. Flera kodsiffror mÃ¥ste separeras med komma."); pc->setStatus(oControl::ControlStatus(gdi.getSelectedItem("Status").first)); pc->setTimeAdjust(gdi.getText("TimeAdjust")); @@ -337,7 +337,7 @@ int TabControl::controlCB(gdioutput &gdi, int type, void *data) } if (oe->isControlUsed(cid)) - gdi.alert("Kontrollen används och kan inte tas bort."); + gdi.alert("Kontrollen används och kan inte tas bort."); else oe->removeControl(cid); @@ -358,23 +358,23 @@ int TabControl::controlCB(gdioutput &gdi, int type, void *data) Table *table=new Table(oe, 20, L"Kontroll X#" + itow(controlId), "controlvisitor"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 150, false); table->addColumn("Bana", 70, false); - table->addColumn("På banan", 70, false); + table->addColumn("PÃ¥ banan", 70, false); table->addColumn("Bricka", 70, true, true); table->addColumn("Tidpunkt", 70, false); - table->addColumn("Stämpelkod", 70, true); - table->addColumn("Föregående kontroll", 70, false); + table->addColumn("Stämpelkod", 70, true); + table->addColumn("FöregÃ¥ende kontroll", 70, false); table->setGenerator(::visitorTable, this); table->setTableProp(0); table->update(); gdi.clearPage(false); int xp=gdi.getCX(); gdi.fillDown(); - gdi.addButton("Show", "Återgå", ControlsCB); + gdi.addButton("Show", "Ã…tergÃ¥", ControlsCB); gdi.addTable(table, xp, gdi.getCY()); gdi.refresh(); } @@ -382,10 +382,10 @@ int TabControl::controlCB(gdioutput &gdi, int type, void *data) Table *table=new Table(oe, 20, L"Kontroll X#" + itow(controlId), "controlcourse"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Bana", 70, false, true); - table->addColumn("Förekomst", 70, true, true); + table->addColumn("Förekomst", 70, true, true); table->addColumn("Antal deltagare", 70, true, true); table->setGenerator(::courseTable, this); @@ -394,7 +394,7 @@ int TabControl::controlCB(gdioutput &gdi, int type, void *data) gdi.clearPage(false); int xp=gdi.getCX(); gdi.fillDown(); - gdi.addButton("Show", "Återgå", ControlsCB); + gdi.addButton("Show", "Ã…tergÃ¥", ControlsCB); gdi.addTable(table, xp, gdi.getCY()); gdi.refresh(); } @@ -440,9 +440,9 @@ bool TabControl::loadPage(gdioutput &gdi) const int button_w=gdi.scaleLength(90); string switchMode; - switchMode=tableMode ? "Formulärläge" : "Tabelläge"; + switchMode=tableMode ? "Formulärläge" : "Tabelläge"; gdi.addButton(2, 2, button_w, "SwitchMode", switchMode, - ControlsCB, "Välj vy", false, false).fixedCorner(); + ControlsCB, "Välj vy", false, false).fixedCorner(); if (tableMode) { Table *tbl=oe->getControlTB(); @@ -475,12 +475,12 @@ bool TabControl::loadPage(gdioutput &gdi) gdi.fillRight(); gdi.addInput("Name", L"", 16, 0, L"Kontrollnamn:"); - gdi.addSelection("Status", 150, 100, ControlsCB, L"Status:", L"Ange om kontrollen fungerar och hur den ska användas."); + gdi.addSelection("Status", 150, 100, ControlsCB, L"Status:", L"Ange om kontrollen fungerar och hur den ska användas."); oe->fillControlStatus(gdi, "Status"); gdi.addInput("TimeAdjust", L"", 6, 0, L"Tidsjustering:"); gdi.fillDown(); - gdi.addInput("MinTime", L"", 6, 0, L"Minsta sträcktid:"); + gdi.addInput("MinTime", L"", 6, 0, L"Minsta sträcktid:"); gdi.popX(); gdi.dropLine(0.5); @@ -489,10 +489,10 @@ bool TabControl::loadPage(gdioutput &gdi) gdi.fillRight(); gdi.dropLine(0.5); - gdi.addInput("Code", L"", 16, 0, L"Stämpelkod(er):"); + gdi.addInput("Code", L"", 16, 0, L"Stämpelkod(er):"); if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Rogaining)) { - gdi.addInput("Point", L"", 6, 0, L"Rogaining-poäng:"); + gdi.addInput("Point", L"", 6, 0, L"Rogaining-poäng:"); } gdi.popX(); gdi.dropLine(3.5); @@ -503,7 +503,7 @@ bool TabControl::loadPage(gdioutput &gdi) gdi.addButton("Remove", "Radera", ControlsCB); gdi.disableInput("Remove"); gdi.addButton("Courses", "Banor...", ControlsCB); - gdi.addButton("Visitors", "Besökare...", ControlsCB); + gdi.addButton("Visitors", "Besökare...", ControlsCB); gdi.addButton("Add", "Ny kontroll", ControlsCB); gdi.dropLine(2.5); diff --git a/code/TabControl.h b/code/TabControl.h index 64656f8..db56c31 100644 --- a/code/TabControl.h +++ b/code/TabControl.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabCourse.cpp b/code/TabCourse.cpp index 6929c76..7395097 100644 --- a/code/TabCourse.cpp +++ b/code/TabCourse.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -232,7 +232,7 @@ void TabCourse::save(gdioutput &gdi, int canSwitchViewMode) wstring name=gdi.getText("Name"); if (name.empty()) { - gdi.alert("Banan måste ha ett namn."); + gdi.alert("Banan mÃ¥ste ha ett namn."); return; } @@ -274,7 +274,7 @@ void TabCourse::save(gdioutput &gdi, int canSwitchViewMode) if (gdi.isChecked("WithLoops")) { int cc = gdi.getTextNo("CommonControl"); if (cc == 0) - throw meosException("Ange en varvningskontroll för banan"); + throw meosException("Ange en varvningskontroll för banan"); pc->setCommonControl(cc); } else @@ -345,20 +345,20 @@ int TabCourse::courseCB(gdioutput &gdi, int type, void *data) return 0; } gdi.clearPage(false); - gdi.addString("", boldLarge, L"Redigera sträcklängder för X#" + pc->getName()); + gdi.addString("", boldLarge, L"Redigera sträcklängder för X#" + pc->getName()); gdi.dropLine(); int w = gdi.scaleLength(120); int xp = gdi.getCX() + w; int yp = gdi.getCY(); - gdi.addString("", 1, "Sträcka:"); - gdi.addString("", yp, xp, 1, "Längd:"); + gdi.addString("", 1, "Sträcka:"); + gdi.addString("", yp, xp, 1, "Längd:"); for (int i = 0; i <= pc->getNumControls(); i++) { int len = pc->getLegLength(i); pControl cbegin = pc->getControl(i-1); wstring begin = i == 0 ? lang.tl("Start") : (cbegin ? cbegin->getName() : L""); pControl cend = pc->getControl(i); - wstring end = i == pc->getNumControls() ? lang.tl("Mål") : (cend ? cend->getName() : L""); + wstring end = i == pc->getNumControls() ? lang.tl("MÃ¥l") : (cend ? cend->getName() : L""); gdi.pushX(); gdi.fillRight(); gdi.addStringUT(0, begin + makeDash(L" - ") + end + L":").xlimit = w-10; @@ -493,7 +493,7 @@ int TabCourse::courseCB(gdioutput &gdi, int type, void *data) clsNames += cls[k]->getName(); } if (courseDrawClasses.empty()) - throw meosException("Ingen klass använder banan."); + throw meosException("Ingen klass använder banan."); gdi.clearPage(false); gdi.addString("", boldLarge, L"Lotta klasser med banan X#" + crs->getName()); @@ -505,7 +505,7 @@ int TabCourse::courseCB(gdioutput &gdi, int type, void *data) int firstStart = 3600; int interval = 2*60; int vac = 1; - gdi.addInput("FirstStart", oe->getAbsTime(firstStart), 10, 0, L"Första start:"); + gdi.addInput("FirstStart", oe->getAbsTime(firstStart), 10, 0, L"Första start:"); gdi.addInput("Interval", formatTime(interval), 10, 0, L"Startintervall (min):"); gdi.addInput("Vacances", itow(vac), 10, 0, L"Antal vakanser:"); gdi.fillDown(); @@ -554,7 +554,7 @@ int TabCourse::courseCB(gdioutput &gdi, int type, void *data) oe->addAutoBib(); gdi.clearPage(false); - gdi.addButton("Cancel", "Återgå", CourseCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", CourseCB); oListParam par; oListInfo info; @@ -581,7 +581,7 @@ int TabCourse::courseCB(gdioutput &gdi, int type, void *data) else name += L" 2"; } - if (gdi.ask(L"Vill du lägga till banan 'X' (Y)?#" + name + L"#" + ctrl)) { + if (gdi.ask(L"Vill du lägga till banan 'X' (Y)?#" + name + L"#" + ctrl)) { pc = oe->addCourse(name); courseId = pc->getId(); gdi.setText("Name", name); @@ -604,7 +604,7 @@ int TabCourse::courseCB(gdioutput &gdi, int type, void *data) throw meosException("Ingen bana vald."); if (oe->isCourseUsed(cid)) - gdi.alert("Banan används och kan inte tas bort."); + gdi.alert("Banan används och kan inte tas bort."); else oe->removeCourse(cid); @@ -723,7 +723,7 @@ bool TabCourse::loadPage(gdioutput &gdi) { gdi.addString("", boldText, "Funktioner"); gdi.dropLine(); gdi.fillRight(); - gdi.addButton("ImportCourses", "Importera från fil...", CourseCB); + gdi.addButton("ImportCourses", "Importera frÃ¥n fil...", CourseCB); gdi.addButton("ExportCourses", "Exportera...", CourseCB); gdi.popX(); gdi.dropLine(2.5); @@ -761,17 +761,17 @@ bool TabCourse::loadPage(gdioutput &gdi) { gdi.fillRight(); gdi.addInput("Climb", L"", 8, 0, L"Climb (m):"); - gdi.addInput("Length", L"", 8, 0, L"Längd (m):"); + gdi.addInput("Length", L"", 8, 0, L"Längd (m):"); gdi.dropLine(0.9); gdi.fillDown(); - gdi.addButton("LegLengths", "Redigera sträcklängder...", CourseCB).isEdit(true); + gdi.addButton("LegLengths", "Redigera sträcklängder...", CourseCB).isEdit(true); gdi.dropLine(0.5); gdi.popX(); gdi.fillRight(); - gdi.addCheckbox("FirstAsStart", "Använd första kontrollen som start", CourseCB); + gdi.addCheckbox("FirstAsStart", "Använd första kontrollen som start", CourseCB); gdi.fillDown(); - gdi.addCheckbox("LastAsFinish", "Använd sista kontrollen som mål", CourseCB); + gdi.addCheckbox("LastAsFinish", "Använd sista kontrollen som mÃ¥l", CourseCB); gdi.popX(); gdi.fillRight(); @@ -780,7 +780,7 @@ bool TabCourse::loadPage(gdioutput &gdi) { gdi.addString("", 0, "Varvningskontroll:"); gdi.fillDown(); gdi.dropLine(-0.2); - gdi.addSelection("CommonControl", 50, 200, 0, L"", L"En bana med slingor tillåter deltagaren att ta slingorna i valfri ordning"); + gdi.addSelection("CommonControl", 50, 200, 0, L"", L"En bana med slingor tillÃ¥ter deltagaren att ta slingorna i valfri ordning"); gdi.dropLine(0.2); gdi.popX(); @@ -809,20 +809,20 @@ bool TabCourse::loadPage(gdioutput &gdi) { gdi.fillRight(); gdi.addSelection("Rogaining", 120, 80, CourseCB); gdi.addItem("Rogaining", lang.tl("Ingen rogaining"), 0); - gdi.addItem("Rogaining", lang.tl("Tidsgräns"), 1); - gdi.addItem("Rogaining", lang.tl("Poänggräns"), 2); + gdi.addItem("Rogaining", lang.tl("Tidsgräns"), 1); + gdi.addItem("Rogaining", lang.tl("Poänggräns"), 2); gdi.setCX(gdi.getCX()+gdi.scaleLength(20)); gdi.dropLine(-0.8); int cx = gdi.getCX(); - gdi.addInput("PointLimit", L"", 8, 0, L"Poänggräns:").isEdit(false); - gdi.addInput("TimeLimit", L"", 8, 0, L"Tidsgräns:").isEdit(false); - gdi.addInput("PointReduction", L"", 8, 0, L"Poängavdrag (per minut):").isEdit(false); + gdi.addInput("PointLimit", L"", 8, 0, L"Poänggräns:").isEdit(false); + gdi.addInput("TimeLimit", L"", 8, 0, L"Tidsgräns:").isEdit(false); + gdi.addInput("PointReduction", L"", 8, 0, L"Poängavdrag (per minut):").isEdit(false); gdi.dropLine(3.5); rc.right = gdi.getCX() + 5; gdi.setCX(cx); gdi.fillDown(); - gdi.addCheckbox("ReductionPerMinute", "Poängavdrag per påbörjad minut"); + gdi.addCheckbox("ReductionPerMinute", "Poängavdrag per pÃ¥börjad minut"); rc.bottom = gdi.getCY() + 5; gdi.addRectangle(rc, colorLightBlue, true); @@ -997,13 +997,13 @@ void TabCourse::setupCourseImport(gdioutput& gdi, GUICALLBACK cb) { gdi.addInput("FileName", L"", 48, 0, L"Filnamn:"); gdi.dropLine(); gdi.fillDown(); - gdi.addButton("BrowseCourse", "Bläddra...", CourseCB); + gdi.addButton("BrowseCourse", "Bläddra...", CourseCB); gdi.dropLine(0.5); gdi.popX(); gdi.fillDown(); - gdi.addCheckbox("AddClasses", "Lägg till klasser", 0, true); + gdi.addCheckbox("AddClasses", "Lägg till klasser", 0, true); gdi.dropLine(); gdi.fillRight(); @@ -1132,7 +1132,7 @@ wstring TabCourse::encodeCourse(const wstring &in, bool firstStart, bool lastFin out += dash + formatControl(newC[i], bf); if (newC.size() == 1) { - out += dash + lang.tl("Mål"); + out += dash + lang.tl("MÃ¥l"); break; } continue; @@ -1145,9 +1145,9 @@ wstring TabCourse::encodeCourse(const wstring &in, bool firstStart, bool lastFin out = lang.tl("Start") + dash; } if (lastFinish) - out += lang.tl("Mål") + L"(" + itow(newC[i]) + L")"; + out += lang.tl("MÃ¥l") + L"(" + itow(newC[i]) + L")"; else - out += formatControl(newC[i], bf) + dash + lang.tl("Mål"); + out += formatControl(newC[i], bf) + dash + lang.tl("MÃ¥l"); } else { out += formatControl(newC[i], bf); diff --git a/code/TabCourse.h b/code/TabCourse.h index 7085946..faa8b0e 100644 --- a/code/TabCourse.h +++ b/code/TabCourse.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabList.cpp b/code/TabList.cpp index b6b03d8..36ddf0a 100644 --- a/code/TabList.cpp +++ b/code/TabList.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -151,12 +151,12 @@ int ListsCB(gdioutput *gdi, int type, void *data) int TabList::baseButtons(gdioutput &gdi, int extraButtons) { gdi.addButton(gdi.getWidth()+20, 15, gdi.scaleLength(120), - "Cancel", ownWindow ? "Stäng" : "Återgå", ListsCB, "", true, false); + "Cancel", ownWindow ? "Stäng" : "Ã…tergÃ¥", ListsCB, "", true, false); gdi.addButton(gdi.getWidth()+20, 18+gdi.getButtonHeight(), gdi.scaleLength(120), "Print", "Skriv ut...", ListsCB, "Skriv ut listan.", true, false); gdi.addButton(gdi.getWidth()+20, 21+2*gdi.getButtonHeight(), gdi.scaleLength(120), - "HTML", "Webb...", ListsCB, "Spara för webben.", true, false); + "HTML", "Webb...", ListsCB, "Spara för webben.", true, false); gdi.addButton(gdi.getWidth()+20, 24+3*gdi.getButtonHeight(), gdi.scaleLength(120), "PDF", "PDF...", ListsCB, "Spara som PDF.", true, false); gdi.addButton(gdi.getWidth()+20, 27+4*gdi.getButtonHeight(), gdi.scaleLength(120), @@ -182,11 +182,11 @@ void TabList::generateList(gdioutput &gdi, bool forceUpdate) int baseY = 15; if (!gdi.isFullScreen()) { gdi.addButton(gdi.getWidth() + 20, baseY, gdi.scaleLength(120), - "Cancel", ownWindow ? "Stäng" : "Återgå", ListsCB, "", true, false); + "Cancel", ownWindow ? "Stäng" : "Ã…tergÃ¥", ListsCB, "", true, false); baseY += 3 + gdi.getButtonHeight(); gdi.addButton(gdi.getWidth() + 20, baseY, gdi.scaleLength(120), - "FullScreenLive", "Fullskärm", ListsCB, "Visa listan i fullskärm", true, false); + "FullScreenLive", "Fullskärm", ListsCB, "Visa listan i fullskärm", true, false); } SelectedList = "GeneralList"; return; @@ -249,7 +249,7 @@ void TabList::generateList(gdioutput &gdi, bool forceUpdate) if (!ownWindow) { gdi.addButton(gdi.getWidth()+20, baseY, gdi.scaleLength(120), - "Window", "Eget fönster", ListsCB, "Öppna i ett nytt fönster.", true, false); + "Window", "Eget fönster", ListsCB, "Öppna i ett nytt fönster.", true, false); gdi.addButton(gdi.getWidth()+20, baseY + 3 + 1*gdi.getButtonHeight(), gdi.scaleLength(120), "Automatic", "Automatisera", ListsCB, "Skriv ut eller exportera listan automatiskt.", true, false); @@ -262,16 +262,16 @@ void TabList::generateList(gdioutput &gdi, bool forceUpdate) baseY += 3 + gdi.getButtonHeight(); gdi.addButton(gdi.getWidth()+20, baseY, gdi.scaleLength(120), - "FullScreen", "Fullskärm", ListsCB, "Visa listan i fullskärm", true, false); + "FullScreen", "Fullskärm", ListsCB, "Visa listan i fullskärm", true, false); */ baseY += 3 + gdi.getButtonHeight(); gdi.addButton(gdi.getWidth() + 20, baseY, gdi.scaleLength(120), - "ListDesign", "Utseende...", ListsCB, "Justera visningsinställningar", true, false); + "ListDesign", "Utseende...", ListsCB, "Justera visningsinställningar", true, false); if (!currentList.getParam().saved && !oe->isReadOnly()) { baseY += 3 + gdi.getButtonHeight(); gdi.addButton(gdi.getWidth()+20, baseY, gdi.scaleLength(120), - "Remember", "Kom ihåg listan", ListsCB, "Spara den här listan som en favoritlista", true, false); + "Remember", "Kom ihÃ¥g listan", ListsCB, "Spara den här listan som en favoritlista", true, false); } } @@ -363,7 +363,7 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) else if (bi.id == "ListDesign") { gdioutput *gdi_settings = getExtraWindow("list_settings", true); if (!gdi_settings) { - gdi_settings = createExtraWindow("list_settings", lang.tl("Inställningar"), gdi.scaleLength(600), gdi.scaleLength(400)); + gdi_settings = createExtraWindow("list_settings", lang.tl("Inställningar"), gdi.scaleLength(600), gdi.scaleLength(400)); } if (gdi_settings) { loadSettings(*gdi_settings, gdi.getTag()); @@ -427,13 +427,13 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) if (gdi.getSelectedItem("SavedInstance", lbi)) { const oListParam &par = oe->getListContainer().getParam(lbi.data); gdi.clearPage(true); - gdi.addString("", boldLarge, L"Döp om X#" + par.getName()); + gdi.addString("", boldLarge, L"Döp om X#" + par.getName()); gdi.setData("ParamIx", lbi.data); gdi.dropLine(); gdi.fillRight(); gdi.addInput("Name", par.getName(), 36); gdi.setInputFocus("Name", true); - gdi.addButton("DoRenameSaved", "Döp om", ListsCB); + gdi.addButton("DoRenameSaved", "Döp om", ListsCB); gdi.addButton("Cancel", "Avbryt", ListsCB); gdi.dropLine(3); } @@ -451,16 +451,16 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) //oe->getListContainer().mergeParam(0, lbi.data); const oListParam &par = oe->getListContainer().getParam(lbi.data); gdi.clearPage(true); - gdi.addString("", boldLarge, L"Slå ihop X#" + par.getName()); + gdi.addString("", boldLarge, L"SlÃ¥ ihop X#" + par.getName()); gdi.setData("ParamIx", lbi.data); gdi.dropLine(); - gdi.addListBox("Merge", 350, 250, 0, L"Slå ihop med:"); + gdi.addListBox("Merge", 350, 250, 0, L"SlÃ¥ ihop med:"); vector < pair > cand; oe->getListContainer().getMergeCandidates(lbi.data, cand); gdi.addItem("Merge", cand); gdi.addCheckbox("ShowTitle", "Visa rubrik mellan listorna", 0, false); gdi.fillRight(); - gdi.addButton("DoMerge", "Slå ihop", ListsCB); + gdi.addButton("DoMerge", "SlÃ¥ ihop", ListsCB); gdi.addButton("Cancel", "Avbryt", ListsCB); gdi.dropLine(3); } @@ -1004,12 +1004,12 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) gdi.clearPage(false); - gdi.addString("", boldLarge, "Tillgängliga listor"); + gdi.addString("", boldLarge, "Tillgängliga listor"); int xx = gdi.getCX() + gdi.scaleLength(360); int bx = gdi.getCX(); if (!installedLists.empty()) { gdi.dropLine(); - gdi.addString("", 1, "Listor i tävlingen"); + gdi.addString("", 1, "Listor i tävlingen"); gdi.fillRight(); gdi.pushX(); for (size_t k = 0; k < installedLists.size(); k++) { @@ -1039,7 +1039,7 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) gdi.addStringUT(0, lists[k].first, 0); if (!installedId.count(lists[k].second.first)) { gdi.setCX(xx); - gdi.addString("CustomList", 0, "Lägg till", ListsCB).setColor(colorDarkGreen).setExtra(k); + gdi.addString("CustomList", 0, "Lägg till", ListsCB).setColor(colorDarkGreen).setExtra(k); gdi.addString("RemoveList", 0, "Radera permanent", ListsCB).setColor(colorDarkRed).setExtra(k); } gdi.dropLine(); @@ -1058,8 +1058,8 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) gdi.dropLine(2); gdi.fillRight(); - gdi.addButton("BrowseList", "Bläddra...", ListsCB); - gdi.addButton("Cancel", "Återgå", ListsCB).setCancel(); + gdi.addButton("BrowseList", "Bläddra...", ListsCB); + gdi.addButton("Cancel", "Ã…tergÃ¥", ListsCB).setCancel(); gdi.refresh(); } else if (bi.id == "BrowseList") { @@ -1234,7 +1234,7 @@ void TabList::enableFromTo(oEvent &oe, gdioutput &gdi, bool from, bool to) { if (to) { gdi.enableInput("ResultSpecialTo"); gdi.addItem("ResultSpecialTo", d); - gdi.addItem("ResultSpecialTo", lang.tl("Mål"), 0); + gdi.addItem("ResultSpecialTo", lang.tl("MÃ¥l"), 0); if (!gdi.selectItemByData("ResultSpecialTo", oe.getPropertyInt("ControlTo", 0))) { gdi.selectItemByData("ResultSpecialTo", 0); // Fallback } @@ -1296,8 +1296,8 @@ void TabList::makeClassSelection(gdioutput &gdi) { gdi.fillRight(); gdi.dropLine(0.5); - gdi.addButton("SelectAll", "Välj allt", ListsCB); - gdi.addButton("SelectNone", "Välj inget", ListsCB); + gdi.addButton("SelectAll", "Välj allt", ListsCB); + gdi.addButton("SelectNone", "Välj inget", ListsCB); gdi.popX(); } @@ -1320,9 +1320,9 @@ void TabList::loadGeneralList(gdioutput &gdi) gdi.fillDown(); gdi.addCheckbox("PageBreak", "Sidbrytning mellan klasser / klubbar", ListsCB, oe->getPropertyInt("pagebreak", 0)!=0); - gdi.addCheckbox("ShowInterResults", "Visa mellantider", ListsCB, oe->getPropertyInt("intertime", 1)!=0, "Mellantider visas för namngivna kontroller."); - gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", ListsCB, oe->getPropertyInt("splitanalysis", 1)!=0); - gdi.addCheckbox("UseLargeSize", "Använd stor font", 0, lastLargeSize); + gdi.addCheckbox("ShowInterResults", "Visa mellantider", ListsCB, oe->getPropertyInt("intertime", 1)!=0, "Mellantider visas för namngivna kontroller."); + gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", ListsCB, oe->getPropertyInt("splitanalysis", 1)!=0); + gdi.addCheckbox("UseLargeSize", "Använd stor font", 0, lastLargeSize); if (lastLimitPer == -1) { lastLimitPer = oe->getPropertyInt("classlimit", 0); @@ -1331,13 +1331,13 @@ void TabList::loadGeneralList(gdioutput &gdi) if (lastLimitPer > 0) lastClassLimit = itow(lastLimitPer); - gdi.addInput("ClassLimit", lastClassLimit, 5, 0, L"Begränsa antal per klass:"); + gdi.addInput("ClassLimit", lastClassLimit, 5, 0, L"Begränsa antal per klass:"); gdi.dropLine(); makeFromTo(gdi); /*gdi.fillRight(); gdi.pushX(); - gdi.addSelection("ResultSpecialFrom", 140, 300, ListsCB, "Från kontroll:"); + gdi.addSelection("ResultSpecialFrom", 140, 300, ListsCB, "FrÃ¥n kontroll:"); gdi.disableInput("ResultSpecialFrom"); gdi.addSelection("ResultSpecialTo", 140, 300, ListsCB, "Till kontroll:"); @@ -1347,10 +1347,10 @@ void TabList::loadGeneralList(gdioutput &gdi) gdi.popX(); gdi.dropLine(3); */ - gdi.addSelection("LegNumber", 140, 300, ListsCB, L"Sträcka:"); + gdi.addSelection("LegNumber", 140, 300, ListsCB, L"Sträcka:"); gdi.disableInput("LegNumber"); - gdi.addInput("InputNumber", lastInputNumber, 5, 0, L"Listparameter:", L"Ett värde vars tolkning beror på listan."); + gdi.addInput("InputNumber", lastInputNumber, 5, 0, L"Listparameter:", L"Ett värde vars tolkning beror pÃ¥ listan."); gdi.disableInput("InputNumber"); gdi.popX(); @@ -1386,7 +1386,7 @@ void TabList::makeFromTo(gdioutput &gdi) { gdi.fillRight(); gdi.pushX(); - gdi.addSelection("ResultSpecialFrom", 140, 300, ListsCB, L"Från kontroll:"); + gdi.addSelection("ResultSpecialFrom", 140, 300, ListsCB, L"FrÃ¥n kontroll:"); gdi.disableInput("ResultSpecialFrom"); gdi.addSelection("ResultSpecialTo", 140, 300, ListsCB, L"Till kontroll:"); @@ -1445,7 +1445,7 @@ static void addAnimationSettings(gdioutput &gdi, oListParam &dst) { gdi.pushX(); gdi.fillRight(); gdi.addInput("Time", itow(dst.timePerPage), 5, 0, L"Visningstid:"); - gdi.addSelection("NPage", 70, 200, 0, L"Sidor per skärm:"); + gdi.addSelection("NPage", 70, 200, 0, L"Sidor per skärm:"); for (int i = 1; i <= 8; i++) gdi.addItem("NPage", itow(i), i); if (dst.nColumns == 0) @@ -1470,12 +1470,12 @@ void TabList::loadSettings(gdioutput &gdi, string targetTag) { gdi.setColorMode(RGB(242, 240, 250)); gdi.setData("target", targetTag); settingsTarget = targetTag; - gdi.addString("", fontMediumPlus, L"Visningsinställningar för 'X'#" + currentList.getName()); + gdi.addString("", fontMediumPlus, L"Visningsinställningar för 'X'#" + currentList.getName()); gdi.dropLine(0.5); gdi.addSelection("Background", 200, 100, 0, L"Bakgrund:").setHandler(&settingsClass); gdi.addItem("Background", lang.tl("Standard"), 0); - gdi.addItem("Background", lang.tl("Färg"), 1); + gdi.addItem("Background", lang.tl("Färg"), 1); //gdi.addItem("Background", lang.tl("Bild"), 2); tmpSettingsParam = currentList.getParam(); int bgColor = currentList.getParam().bgColor; @@ -1484,18 +1484,18 @@ void TabList::loadSettings(gdioutput &gdi, string targetTag) { gdi.selectItemByData("Background", useColor ? 1 : 0); gdi.pushX(); gdi.fillRight(); - gdi.addButton("BGColor", "Bakgrundsfärg...").setHandler(&settingsClass).setExtra(bgColor); + gdi.addButton("BGColor", "Bakgrundsfärg...").setHandler(&settingsClass).setExtra(bgColor); gdi.setInputStatus("BGColor", useColor); - gdi.addButton("FGColor", "Textfärg...").setHandler(&settingsClass).setExtra(fgColor); + gdi.addButton("FGColor", "Textfärg...").setHandler(&settingsClass).setExtra(fgColor); gdi.popX(); gdi.dropLine(3); gdi.addSelection("Mode", 200, 100, 0, L"Visning:").setHandler(&settingsClass); - gdi.addItem("Mode", lang.tl("Fönster"), 0); - gdi.addItem("Mode", lang.tl("Fönster (rullande)"), 3); - gdi.addItem("Mode", lang.tl("Fullskärm (sidvis)"), 1); - gdi.addItem("Mode", lang.tl("Fullskärm (rullande)"), 2); + gdi.addItem("Mode", lang.tl("Fönster"), 0); + gdi.addItem("Mode", lang.tl("Fönster (rullande)"), 3); + gdi.addItem("Mode", lang.tl("Fullskärm (sidvis)"), 1); + gdi.addItem("Mode", lang.tl("Fullskärm (rullande)"), 2); gdi.selectItemByData("Mode", tmpSettingsParam.screenMode); gdi.popX(); gdi.dropLine(3); @@ -1504,7 +1504,7 @@ void TabList::loadSettings(gdioutput &gdi, string targetTag) { gdi.setData("ymode", gdi.getCY()); gdi.dropLine(3); - gdi.addButton("ApplyList", "Verkställ").setHandler(&settingsClass); + gdi.addButton("ApplyList", "Verkställ").setHandler(&settingsClass); if (tmpSettingsParam.screenMode == 1) addAnimationSettings(gdi, tmpSettingsParam); @@ -1668,7 +1668,7 @@ void TabList::settingsResultList(gdioutput &gdi) oe->sanityCheck(gdi, true); gdi.fillDown(); gdi.clearPage(false); - gdi.addString("", boldLarge, makeDash(L"Resultatlista - inställningar")); + gdi.addString("", boldLarge, makeDash(L"Resultatlista - inställningar")); //gdi.addSelection("ListType", 200, 300, ListsCB, "Lista"); //oe->fillListTypes(gdi, "ListType", 0); @@ -1679,8 +1679,8 @@ void TabList::settingsResultList(gdioutput &gdi) gdi.dropLine(0.5); gdi.fillRight(); - gdi.addButton("SelectAll", "Välj allt", ListsCB); - gdi.addButton("SelectNone", "Välj inget", ListsCB); + gdi.addButton("SelectAll", "Välj allt", ListsCB); + gdi.addButton("SelectNone", "Välj inget", ListsCB); gdi.popY(); gdi.setCX(gdi.scaleLength(250)); @@ -1714,13 +1714,13 @@ void TabList::settingsResultList(gdioutput &gdi) if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Relay)) { lists.push_back(make_pair(lang.tl(L"Stafett - total"), 3)); - lists.push_back(make_pair(lang.tl(L"Stafett - sammanställning"), 4)); + lists.push_back(make_pair(lang.tl(L"Stafett - sammanställning"), 4)); - lists.push_back(make_pair(lang.tl(L"Stafett - sträcka"), + lists.push_back(make_pair(lang.tl(L"Stafett - sträcka"), getListIx(tag2ListIx, usedListIx, "legresult", 5))); } - lists.push_back(make_pair(lang.tl(L"Allmänna resultat"), 6)); + lists.push_back(make_pair(lang.tl(L"Allmänna resultat"), 6)); size_t startIx = lists.size(); for (size_t k = 0; k < dlists.size(); k++) { @@ -1747,13 +1747,13 @@ void TabList::settingsResultList(gdioutput &gdi) gdi.pushX(); gdi.addCheckbox("PageBreak", "Sidbrytning mellan klasser", ListsCB, oe->getPropertyInt("pagebreak", 0)!=0); gdi.addCheckbox("ShowInterResults", "Visa mellantider", 0, lastInterResult, - "Mellantider visas för namngivna kontroller."); - gdi.addCheckbox("ShowSplits", "Lista med sträcktider", 0, lastSplitState); - gdi.addCheckbox("UseLargeSize", "Använd stor font", 0, lastLargeSize); + "Mellantider visas för namngivna kontroller."); + gdi.addCheckbox("ShowSplits", "Lista med sträcktider", 0, lastSplitState); + gdi.addCheckbox("UseLargeSize", "Använd stor font", 0, lastLargeSize); gdi.fillRight(); gdi.popX(); - gdi.addString("", 0, "Topplista, N bästa:"); + gdi.addString("", 0, "Topplista, N bästa:"); gdi.dropLine(-0.2); if (lastLimitPer == -1) { @@ -1768,14 +1768,14 @@ void TabList::settingsResultList(gdioutput &gdi) gdi.dropLine(2); gdi.addString("", 0, "Listparameter:"); gdi.dropLine(-0.2); - gdi.addInput("InputNumber", lastInputNumber, 5, 0, L"", L"Ett värde vars tolkning beror på listan."); + gdi.addInput("InputNumber", lastInputNumber, 5, 0, L"", L"Ett värde vars tolkning beror pÃ¥ listan."); gdi.disableInput("InputNumber"); gdi.popX(); gdi.dropLine(2); makeFromTo(gdi); - gdi.addSelection("LegNumber", 140, 300, ListsCB, L"Sträcka:"); + gdi.addSelection("LegNumber", 140, 300, ListsCB, L"Sträcka:"); gdi.disableInput("LegNumber"); gdi.popX(); @@ -1841,7 +1841,7 @@ bool TabList::loadPage(gdioutput &gdi) oListInfo li; oe->getListType(EStdNone, li); - gdi.addString("", boldLarge, "Listor och sammanställningar"); + gdi.addString("", boldLarge, "Listor och sammanställningar"); gdi.addString("", 10, "help:30750"); @@ -1868,7 +1868,7 @@ bool TabList::loadPage(gdioutput &gdi) } if (cnf.hasRelay()) { checkWidth(gdi); - gdi.addButton("TeamStartList", "Stafett (sammanställning)", ListsCB); + gdi.addButton("TeamStartList", "Stafett (sammanställning)", ListsCB); } if (cnf.hasPatrol()) { checkWidth(gdi); @@ -1877,7 +1877,7 @@ bool TabList::loadPage(gdioutput &gdi) for (size_t k = 0; k 0) { checkWidth(gdi); - gdi.addButton("LegNStart", "Sträcka X#" + itos(k+1), ListsCB).setExtra(k); + gdi.addButton("LegNStart", "Sträcka X#" + itos(k+1), ListsCB).setExtra(k); } } @@ -1903,7 +1903,7 @@ bool TabList::loadPage(gdioutput &gdi) checkWidth(gdi); } - gdi.addButton("ResultIndSplit", "Sträcktider", ListsCB); + gdi.addButton("ResultIndSplit", "Sträcktider", ListsCB); checkWidth(gdi); gdi.addButton("Result:latestresult", "Latest Results", ListsCB).setExtra(1); @@ -1921,18 +1921,18 @@ bool TabList::loadPage(gdioutput &gdi) if (cnf.raceNRes[k].size() > 0) { checkWidth(gdi); gdi.addButton("RaceNRes", "Lopp X#" + itos(k+1), ListsCB, - "Resultat för ett visst lopp.").setExtra(k); + "Resultat för ett visst lopp.").setExtra(k); hasMulti = true; } } if (hasMulti) { checkWidth(gdi); - gdi.addButton("MultiResults", "Alla lopp", ListsCB, "Individuell resultatlista, sammanställning av flera lopp."); + gdi.addButton("MultiResults", "Alla lopp", ListsCB, "Individuell resultatlista, sammanställning av flera lopp."); } if (cnf.hasRelay()) { checkWidth(gdi); - gdi.addButton("TeamResults", "Stafett (sammanställning)", ListsCB); + gdi.addButton("TeamResults", "Stafett (sammanställning)", ListsCB); } if (cnf.hasPatrol()) { checkWidth(gdi); @@ -1940,7 +1940,7 @@ bool TabList::loadPage(gdioutput &gdi) } for (map >::const_iterator it = cnf.legResult.begin(); it != cnf.legResult.end(); ++it) { checkWidth(gdi); - gdi.addButton("LegNResult", "Sträcka X#" + itos(it->first+1), ListsCB).setExtra(it->first); + gdi.addButton("LegNResult", "Sträcka X#" + itos(it->first+1), ListsCB).setExtra(it->first); } if (cnf.hasRogaining()) { @@ -1990,8 +1990,8 @@ bool TabList::loadPage(gdioutput &gdi) gdi.autoGrow("SavedInstance"); gdi.selectFirstItem("SavedInstance"); gdi.addButton("ShowSaved", "Visa", ListsCB); - gdi.addButton("RenameSaved", "Döp om", ListsCB); - gdi.addButton("MergeSaved", "Slå ihop...", ListsCB); + gdi.addButton("RenameSaved", "Döp om", ListsCB); + gdi.addButton("MergeSaved", "SlÃ¥ ihop...", ListsCB); gdi.addButton("SplitSaved", "Dela upp...", ListsCB); bool split = oe->getListContainer().canSplit(savedParams[0].second); @@ -2012,7 +2012,7 @@ bool TabList::loadPage(gdioutput &gdi) if (cnf.hasIndividual()) { gdi.addButton("PriceList", "Prisutdelningslista", ListsCB); } - gdi.addButton("PreReport", "Kör kontroll inför tävlingen...", ListsCB); + gdi.addButton("PreReport", "Kör kontroll inför tävlingen...", ListsCB); checkWidth(gdi); if (cnf.hasMultiCourse) { @@ -2021,7 +2021,7 @@ bool TabList::loadPage(gdioutput &gdi) if (cnf.hasTeamClass()) { gdi.addButton("GenLst:courseteamtable", "Gafflingar i tabellformat", ListsCB, - "Från den här listan kan man skapa etiketter att klistra på kartor"); + "FrÃ¥n den här listan kan man skapa etiketter att klistra pÃ¥ kartor"); checkWidth(gdi); } } @@ -2043,7 +2043,7 @@ bool TabList::loadPage(gdioutput &gdi) checkWidth(gdi); } - gdi.addButton("GenLst:courseusage", "Bananvändning", ListsCB); + gdi.addButton("GenLst:courseusage", "Bananvändning", ListsCB); checkWidth(gdi); gdi.addButton("GenLst:controloverview", "Kontroller", ListsCB); @@ -2059,12 +2059,12 @@ bool TabList::loadPage(gdioutput &gdi) gdi.dropLine(3); gdi.addCheckbox("PageBreak", "Sidbrytning mellan klasser / klubbar", ListsCB, oe->getPropertyInt("pagebreak", 0)!=0); - gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", ListsCB, oe->getPropertyInt("splitanalysis", 1)!=0); + gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", ListsCB, oe->getPropertyInt("splitanalysis", 1)!=0); gdi.popX(); gdi.fillRight(); gdi.dropLine(2); - gdi.addString("", 0, "Begränsning, antal visade per klass: "); + gdi.addString("", 0, "Begränsning, antal visade per klass: "); gdi.dropLine(-0.2); gdi.addSelection("ClassLimit", 70, 350, ListsCB); gdi.addItem("ClassLimit", lang.tl("Ingen"), 0); @@ -2116,16 +2116,16 @@ void TabList::splitPrintSettings(oEvent &oe, gdioutput &gdi, bool setupPrinter, gdi.clearPage(false); gdi.fillDown(); if (type == Splits) - gdi.addString("", boldLarge, "Inställningar sträcktidsutskrift"); + gdi.addString("", boldLarge, "Inställningar sträcktidsutskrift"); else - gdi.addString("", boldLarge, "Inställningar startbevis"); + gdi.addString("", boldLarge, "Inställningar startbevis"); gdi.dropLine(); gdi.fillRight(); gdi.pushX(); if (setupPrinter) { - gdi.addButton("PrinterSetup", "Skrivare...", ListsCB, "Skrivarinställningar"); + gdi.addButton("PrinterSetup", "Skrivare...", ListsCB, "Skrivarinställningar"); gdi.dropLine(0.3); } @@ -2135,7 +2135,7 @@ void TabList::splitPrintSettings(oEvent &oe, gdioutput &gdi, bool setupPrinter, bool withSpeed = (oe.getDCI().getInt("Analysis") & 2) == 0; bool withResult = (oe.getDCI().getInt("Analysis") & 4) == 0; - gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", 0, withSplitAnalysis); + gdi.addCheckbox("SplitAnalysis", "Med sträcktidsanalys", 0, withSplitAnalysis); gdi.addCheckbox("Speed", "Med km-tid", 0, withSpeed); gdi.addCheckbox("Results", "Med resultat", 0, withResult); @@ -2147,7 +2147,7 @@ void TabList::splitPrintSettings(oEvent &oe, gdioutput &gdi, bool setupPrinter, if (type == Splits) { const bool wideFormat = oe.getPropertyInt("WideSplitFormat", 0) == 1; - gdi.addCheckbox("WideFormat", "Sträcktider i kolumner (för standardpapper)", ListsCB, wideFormat); + gdi.addCheckbox("WideFormat", "Sträcktider i kolumner (för standardpapper)", ListsCB, wideFormat); if (returnMode == TSITab) { int printLen = oe.getPropertyInt("NumSplitsOnePage", 3); @@ -2159,7 +2159,7 @@ void TabList::splitPrintSettings(oEvent &oe, gdioutput &gdi, bool setupPrinter, gdi.selectItemByData("NumPerPage", printLen); int maxWait = oe.getPropertyInt("SplitPrintMaxWait", 60); - gdi.addInput("MaxWaitTime", itow(maxWait), 8, 0, L"Längsta tid i sekunder att vänta med utskrift"); + gdi.addInput("MaxWaitTime", itow(maxWait), 8, 0, L"Längsta tid i sekunder att vänta med utskrift"); enableWideFormat(gdi, wideFormat); } @@ -2483,7 +2483,7 @@ void TabList::getPublicLists(oEvent &oe, vector &lists) { getResultClub(lists.back(), cnf); } - //gdi.addButton("ResultIndSplit", "Sträcktider", ListsCB); + //gdi.addButton("ResultIndSplit", "Sträcktider", ListsCB); if (cnf.isMultiStageEvent()) { //gdi.addButton("Result:stageresult", "Etappresultat", ListsCB); diff --git a/code/TabList.h b/code/TabList.h index 2254789..dd48f0d 100644 --- a/code/TabList.h +++ b/code/TabList.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "tabbase.h" diff --git a/code/TabMulti.cpp b/code/TabMulti.cpp index 9fe8f24..ff78fdd 100644 --- a/code/TabMulti.cpp +++ b/code/TabMulti.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TabMulti.h b/code/TabMulti.h index 2b11446..3f0a836 100644 --- a/code/TabMulti.h +++ b/code/TabMulti.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "tabbase.h" diff --git a/code/TabRunner.cpp b/code/TabRunner.cpp index a9041ec..8c48adc 100644 --- a/code/TabRunner.cpp +++ b/code/TabRunner.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -493,7 +493,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { wstring name=gdi.getText("Name"); if (name.empty()) - throw std::exception("Alla deltagare måste ha ett namn."); + throw std::exception("Alla deltagare mÃ¥ste ha ett namn."); int cardNo = gdi.getTextNo("CardNo"); @@ -544,7 +544,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { if (cardNoChanged && cardNo>0) { pRunner warnCardDupl = warnDuplicateCard(cardNo, r); if (warnCardDupl) { - gdi.alert(L"Varning: Brickan X används redan av Y.#" + itow(cardNo) + L"#" + warnCardDupl->getCompleteIdentification()); + gdi.alert(L"Varning: Brickan X används redan av Y.#" + itow(cardNo) + L"#" + warnCardDupl->getCompleteIdentification()); } } @@ -563,7 +563,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { bool noSetStatus = false; if (cardNo > 0 && r->getCard() && r->getCard()->getCardNo() != cardNo && r->getCardNo() != cardNo) { - if (gdi.ask(L"Vill du koppla isär X från inläst bricka Y?#" + r->getName() + + if (gdi.ask(L"Vill du koppla isär X frÃ¥n inläst bricka Y?#" + r->getName() + L"#" + r->getCard()->getCardNoString())) { r->setStatus(StatusUnknown, true, false, false); r->setCard(0); @@ -575,7 +575,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { } if (cardNo > 0 && cardNo != r->getCardNo() && oe->hasNextStage()) { - if (gdi.ask(L"Vill du använda den nya brickan till alla etapper?")) { + if (gdi.ask(L"Vill du använda den nya brickan till alla etapper?")) { r->setTransferCardNoNextStage(true); } } @@ -621,7 +621,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { pClass pNewCls = oe->getClass(classId); if (pNewCls && pNewCls->getClassType() == oClassRelay) { if (!r->getTeam()) { - gdi.alert("För att delta i en lagklass måste deltagaren ingå i ett lag."); + gdi.alert("För att delta i en lagklass mÃ¥ste deltagaren ingÃ¥ i ett lag."); classId = 0; } else if (r->getTeam()->getClassId(true) != classId && r->getClassId(true) != classId) { @@ -632,7 +632,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { bool readStatusIn = true; if (r->getClassId(true) != classId && r->getInputStatus() != StatusNotCompetiting && r->hasInputData()) { - if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till ?")) { + if (gdi.ask(L"Vill du sätta resultatet frÃ¥n tidigare etapper till ?")) { r->resetInputData(); readStatusIn = false; } @@ -656,7 +656,7 @@ pRunner TabRunner::save(gdioutput &gdi, int runnerId, bool willExit) { } if (checkStatus && sIn != r->getStatus()) - gdi.alert("Status matchar inte data i löparbrickan."); + gdi.alert("Status matchar inte data i löparbrickan."); if (gdi.hasField("StatusIn") && readStatusIn) { r->setInputStatus(RunnerStatus(gdi.getSelectedItem("StatusIn").first)); @@ -712,7 +712,7 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) gdi.selectItemByData("Runners", r->getId()); } else - gdi.alert("Löparen hittades inte"); + gdi.alert("Löparen hittades inte"); } else if (bi.id == "ShowAll") { fillRunnerList(gdi); @@ -861,7 +861,7 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) showInForestList(gdi); } else if (bi.id == "RemoveVacant") { - if (gdi.ask(L"Vill du radera alla vakanser från tävlingen?")) { + if (gdi.ask(L"Vill du radera alla vakanser frÃ¥n tävlingen?")) { oe->removeVacanies(0); gdi.disableInput(bi.id.c_str()); } @@ -912,7 +912,7 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) wstring name = gdi.getText("Name"); pRunner r = oe->getRunner(runnerId, 0); if (!name.empty() && r && r->getName() != name && r->getNameRaw() != name) { - if (gdi.ask(L"Vill du lägga till deltagaren 'X'?#" + name)) { + if (gdi.ask(L"Vill du lägga till deltagaren 'X'?#" + name)) { r = oe->addRunner(name, 0, 0, 0,0, false); runnerId = r->getId(); } @@ -940,9 +940,9 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) if (!runnerId) return 0; - if (gdi.ask(L"Vill du verkligen ta bort löparen?")) { + if (gdi.ask(L"Vill du verkligen ta bort löparen?")) { if (oe->isRunnerUsed(runnerId)) - gdi.alert("Löparen ingår i ett lag och kan inte tas bort."); + gdi.alert("Löparen ingÃ¥r i ett lag och kan inte tas bort."); else { pRunner r = oe->getRunner(runnerId, 0); if (r) @@ -969,7 +969,7 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) pRunner r = oe->getRunner(runnerId, 0); r = r->getMultiRunner(0); - if (r && gdi.ask(L"Bekräfta att deltagaren har lämnat återbud.")) { + if (r && gdi.ask(L"Bekräfta att deltagaren har lämnat Ã¥terbud.")) { if (r->getStartTime()>0) { pRunner newRunner = oe->addRunnerVacant(r->getClassId(true)); newRunner->cloneStartTime(r); @@ -1009,7 +1009,7 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) gdi.fillDown(); gdi.dropLine(2); gdi.popX(); - gdi.addString("", 0, "Välj en vakant plats nedan."); + gdi.addString("", 0, "Välj en vakant plats nedan."); oe->generateVacancyList(gdi, RunnerCB); @@ -1289,13 +1289,13 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) return -1; wchar_t bf[1024]; - swprintf_s(bf, lang.tl("Bekräfta att %s byter klass till %s.").c_str(), + swprintf_s(bf, lang.tl("Bekräfta att %s byter klass till %s.").c_str(), r->getName().c_str(), vacancy->getClass(true).c_str()); if (gdi.ask(wstring(L"#") + bf)) { vacancy->synchronize(); if (!vacancy->isVacant()) - throw meosException("Starttiden är upptagen."); + throw meosException("Starttiden är upptagen."); oRunner temp(oe, 0); temp.setTemporary(); @@ -1314,7 +1314,7 @@ int TabRunner::runnerCB(gdioutput &gdi, int type, void *data) r->setStartNo(vacancy->getStartNo(), false); if (oe->hasPrevStage()) { - if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till ?")) + if (gdi.ask(L"Vill du sätta resultatet frÃ¥n tidigare etapper till ?")) r->resetInputData(); } @@ -1341,7 +1341,7 @@ void TabRunner::showCardsList(gdioutput &gdi) currentMode = 3; gdi.clearPage(false); gdi.dropLine(0.5); - gdi.addString("", boldLarge, "Hantera löparbrickor"); + gdi.addString("", boldLarge, "Hantera löparbrickor"); gdi.addString("", 10, "help:14343"); addToolbar(gdi); gdi.dropLine(); @@ -1380,12 +1380,12 @@ int TabRunner::vacancyCB(gdioutput &gdi, int type, void *data) r->synchronize(); if (!r->isVacant()) - throw std::exception("Starttiden är upptagen."); + throw std::exception("Starttiden är upptagen."); wstring name = gdi.getText("Name"); if (name.empty()) - throw std::exception("Alla deltagare måste ha ett namn."); + throw std::exception("Alla deltagare mÃ¥ste ha ett namn."); int cardNo = gdi.getTextNo("CardNo"); @@ -1446,7 +1446,7 @@ int TabRunner::vacancyCB(gdioutput &gdi, int type, void *data) } if (oe->hasPrevStage()) { - if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till ?")) + if (gdi.ask(L"Vill du sätta resultatet frÃ¥n tidigare etapper till ?")) r->resetInputData(); } @@ -1530,10 +1530,10 @@ void TabRunner::showRunnerReport(gdioutput &gdi) if (!oe->isReadOnly()) { if (!ownWindow) { gdi.addButton("Kiosk", "Resultatkiosk", RunnerCB); - gdi.addButton("Window", "Eget fönster", RunnerCB, "Öppna i ett nytt fönster."); + gdi.addButton("Window", "Eget fönster", RunnerCB, "Öppna i ett nytt fönster."); } gdi.dropLine(0.2); - gdi.addCheckbox("ListenReadout", "Visa senast inlästa deltagare", RunnerCB, listenToPunches); + gdi.addCheckbox("ListenReadout", "Visa senast inlästa deltagare", RunnerCB, listenToPunches); } gdi.dropLine(3); @@ -1679,7 +1679,7 @@ void TabRunner::runnerReport(gdioutput &gdi, int id, bool compact) { gdi.addString("", fontMedium, L"Starttid: X #" + r->getStartTimeCompact()); if (r->getFinishTime() > 0) - gdi.addString("", fontMedium, L"Måltid: X #" + r->getFinishTimeS()); + gdi.addString("", fontMedium, L"MÃ¥ltid: X #" + r->getFinishTimeS()); const wstring &after = oe->formatListString(lRunnerTimeAfter, r); if (!after.empty()) { @@ -1745,7 +1745,7 @@ void TabRunner::runnerReport(gdioutput &gdi, int id, bool compact) { if (after[k] > 0) split += L" (" + itow(place[k]) + L", +" + getTimeMS(after[k]) + L")"; else if (place[k] == 1) - split += lang.tl(" (sträckseger)"); + split += lang.tl(" (sträckseger)"); else if (place[k] > 0) split += L" " + itow(place[k]); @@ -1876,8 +1876,8 @@ void TabRunner::showVacancyList(gdioutput &gdi, const string &method, int classI gdi.fillRight(); gdi.pushX(); - gdi.addButton("VacancyAdd", "Tillsätt ytterligare vakans", VacancyCB); - //gdi.addButton("Cancel", "Återgå", VacancyCB); + gdi.addButton("VacancyAdd", "Tillsätt ytterligare vakans", VacancyCB); + //gdi.addButton("Cancel", "Ã…tergÃ¥", VacancyCB); gdi.popX(); gdi.fillDown(); gdi.dropLine(2); @@ -1895,7 +1895,7 @@ void TabRunner::showVacancyList(gdioutput &gdi, const string &method, int classI } else if (method == "add") { gdi.dropLine(0.5); - gdi.addString("", boldLarge, "Tillsätt vakans"); + gdi.addString("", boldLarge, "Tillsätt vakans"); addToolbar(gdi); gdi.dropLine(); @@ -1956,13 +1956,13 @@ void TabRunner::showVacancyList(gdioutput &gdi, const string &method, int classI gdi.dropLine(2.8); gdi.popX(); - gdi.addCheckbox("StartInfo", "Skriv ut startbevis", SportIdentCB, tsi.hasPrintStartInfo(), "Skriv ut startbevis för deltagaren"); + gdi.addCheckbox("StartInfo", "Skriv ut startbevis", SportIdentCB, tsi.hasPrintStartInfo(), "Skriv ut startbevis för deltagaren"); if (oe->hasNextStage()) - gdi.addCheckbox("AllStages", "Anmäl till efterföljande etapper", 0, tsi.storedInfo.allStages); + gdi.addCheckbox("AllStages", "Anmäl till efterföljande etapper", 0, tsi.storedInfo.allStages); gdi.dropLine(-0.2); - gdi.addButton("PrinterSetup", "Skrivarinställningar...", VacancyCB, "Skrivarinställningar för sträcktider och startbevis"); + gdi.addButton("PrinterSetup", "Skrivarinställningar...", VacancyCB, "Skrivarinställningar för sträcktider och startbevis"); gdi.setCX(gdi.getCX() + gdi.scaleLength(40)); gdi.addButton("CancelVacant", "Avbryt", VacancyCB); @@ -1975,7 +1975,7 @@ void TabRunner::showVacancyList(gdioutput &gdi, const string &method, int classI gdi.pushX(); gdi.dropLine(); - gdi.addString("", fontMediumPlus, "Välj klass och starttid nedan"); + gdi.addString("", fontMediumPlus, "Välj klass och starttid nedan"); oe->generateVacancyList(gdi, VacancyCB); gdi.setInputFocus("CardNo"); } @@ -2006,7 +2006,7 @@ void TabRunner::showInForestList(gdioutput &gdi) gdi.dropLine(); gdi.pushX(); gdi.fillRight(); - gdi.addButton("Import", "Importera stämplingar...", SportIdentCB).setExtra(1); + gdi.addButton("Import", "Importera stämplingar...", SportIdentCB).setExtra(1); if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Vacancy)) { vector rr; @@ -2022,9 +2022,9 @@ void TabRunner::showInForestList(gdioutput &gdi) gdi.addButton("RemoveVacant", "Radera vakanser", RunnerCB); } } - gdi.addButton("SetDNS", "Sätt okända löpare utan registrering till ", RunnerCB); + gdi.addButton("SetDNS", "Sätt okända löpare utan registrering till ", RunnerCB); gdi.fillDown(); - gdi.addButton("SetUnknown", "Återställ löpare med registrering till ", RunnerCB); + gdi.addButton("SetUnknown", "Ã…terställ löpare med registrering till ", RunnerCB); gdi.dropLine(); gdi.popX(); @@ -2035,14 +2035,14 @@ void TabRunner::showInForestList(gdioutput &gdi) if (!unknown.empty()) { gdi.dropLine(); gdi.dropLine(0.5); - gdi.addString("", 1, "Löpare, Status Okänd, som saknar registrering"); + gdi.addString("", 1, "Löpare, Status Okänd, som saknar registrering"); listRunners(gdi, unknown, true); } else { if (hasDNS) { BaseInfo &bi = gdi.getBaseInfo("SetDNS"); bi.id = "UndoSetDNS"; - gdi.setTextTranslate(bi.id, L"Återställ till "); + gdi.setTextTranslate(bi.id, L"Ã…terställ till "); } else { gdi.disableInput("SetDNS"); @@ -2051,14 +2051,14 @@ void TabRunner::showInForestList(gdioutput &gdi) if (!known.empty()) { gdi.dropLine(); - gdi.addString("", 1, "Löpare, Status Okänd, med registrering (kvar-i-skogen)"); + gdi.addString("", 1, "Löpare, Status Okänd, med registrering (kvar-i-skogen)"); gdi.dropLine(0.5); listRunners(gdi, known, false); } if (!known_dns.empty()) { gdi.dropLine(); - gdi.addString("", 1, "Löpare, Ej Start, med registrering (kvar-i-skogen!?)"); + gdi.addString("", 1, "Löpare, Ej Start, med registrering (kvar-i-skogen!?)"); gdi.dropLine(0.5); listRunners(gdi, known_dns, false); } @@ -2149,12 +2149,12 @@ void TabRunner::cellAction(gdioutput &gdi, DWORD id, oBase *obj) gdi.popX(); gdi.fillRight(); gdi.addInput("SearchText", L"", 15).setBgColor(colorLightCyan); - gdi.addButton("Search", "Sök deltagare", RunnerCB, "Sök på namn, bricka eller startnummer."); + gdi.addButton("Search", "Sök deltagare", RunnerCB, "Sök pÃ¥ namn, bricka eller startnummer."); gdi.popX(); gdi.dropLine(3); gdi.addButton("Pair", "Para ihop", RunnerCB).setExtra(c->getId()); - gdi.addButton("Unpair", "Sätt som oparad", RunnerCB).setExtra(c->getId()); + gdi.addButton("Unpair", "Sätt som oparad", RunnerCB).setExtra(c->getId()); gdi.addButton("Cancel", "Avbryt", RunnerCB); gdi.fillDown(); gdi.popX(); @@ -2171,7 +2171,7 @@ void disablePunchCourseAdd(gdioutput &gdi) } const wstring &TabRunner::getSearchString() const { - return lang.tl(L"Sök (X)#Ctrl+F"); + return lang.tl(L"Sök (X)#Ctrl+F"); } void disablePunchCourseChange(gdioutput &gdi) @@ -2210,7 +2210,7 @@ int TabRunner::punchesCB(gdioutput &gdi, int type, void *data) pRunner r=oe->getRunner(rid, 0); if (!r){ - gdi.alert("Deltagaren måste sparas innan stämplingar kan hanteras."); + gdi.alert("Deltagaren mÃ¥ste sparas innan stämplingar kan hanteras."); return 0; } @@ -2413,10 +2413,10 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.registerEvent("SearchRunnerBack", runnerSearchCB).setKeyCommand(KC_FINDBACK); gdi.addInput("SearchText", getSearchString(), 13, runnerSearchCB, L"", - L"Sök på namn, bricka eller startnummer.").isEdit(false) + L"Sök pÃ¥ namn, bricka eller startnummer.").isEdit(false) .setBgColor(colorLightCyan).ignore(true); gdi.dropLine(-0.2); - //gdi.addButton("Search", "Sök", RunnerCB, "Sök på namn, bricka eller startnummer."); + //gdi.addButton("Search", "Sök", RunnerCB, "Sök pÃ¥ namn, bricka eller startnummer."); gdi.addButton("ShowAll", "Visa alla", RunnerCB).isEdit(false); gdi.dropLine(2); gdi.popX(); @@ -2429,7 +2429,7 @@ bool TabRunner::loadPage(gdioutput &gdi) if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Vacancy)) { gdi.fillRight(); gdi.addButton("Move", "Klassbyte", RunnerCB); - gdi.addButton("NoStart", "Återbud", RunnerCB); + gdi.addButton("NoStart", "Ã…terbud", RunnerCB); } gdi.newColumn(); @@ -2486,7 +2486,7 @@ bool TabRunner::loadPage(gdioutput &gdi) if (oe->hasMultiRunner()) { gdi.fillRight(); gdi.popX(); - gdi.addString("", 0, "Välj lopp:"); + gdi.addString("", 0, "Välj lopp:"); gdi.fillDown(); gdi.dropLine(-0.2); gdi.addSelection("MultiR", 160, 100, RunnerCB); @@ -2530,7 +2530,7 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.popX(); gdi.addInput("Start", L"", 8, 0, L"Starttid:"); - gdi.addInput("Finish", L"", 8, 0, L"Måltid:"); + gdi.addInput("Finish", L"", 8, 0, L"MÃ¥ltid:"); const bool timeAdjust = oe->getMeOSFeatures().hasFeature(MeOSFeatures::TimeAdjust); const bool pointAdjust = oe->getMeOSFeatures().hasFeature(MeOSFeatures::PointAdjust); @@ -2539,10 +2539,10 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.dropLine(3); gdi.popX(); if (timeAdjust) { - gdi.addInput("TimeAdjust", L"", 8, 0, L"Tidstillägg:"); + gdi.addInput("TimeAdjust", L"", 8, 0, L"Tidstillägg:"); } if (pointAdjust) { - gdi.addInput("PointAdjust", L"", 8, 0, L"Poängavdrag:"); + gdi.addInput("PointAdjust", L"", 8, 0, L"Poängavdrag:"); } } gdi.dropLine(3); @@ -2552,7 +2552,7 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.disableInput("Time"); if (oe->hasRogaining()) { - gdi.addInput("Points", L"", 5, 0, L"Poäng:").isEdit(false).ignore(true); + gdi.addInput("Points", L"", 5, 0, L"Poäng:").isEdit(false).ignore(true); gdi.disableInput("Points"); } @@ -2577,7 +2577,7 @@ bool TabRunner::loadPage(gdioutput &gdi) int dx = int(gdi.getLineHeight()*0.7); int ccx = xx + dx; gdi.setCX(ccx); - gdi.addString("", 1, "Resultat från tidigare etapper"); + gdi.addString("", 1, "Resultat frÃ¥n tidigare etapper"); gdi.dropLine(0.3); gdi.fillRight(); @@ -2590,7 +2590,7 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.dropLine(3); gdi.addInput("TimeIn", L"", 5, 0, L"Tid:"); if (oe->hasRogaining()) { - gdi.addInput("PointIn", L"", 5, 0, L"Poäng:"); + gdi.addInput("PointIn", L"", 5, 0, L"Poäng:"); } gdi.dropLine(3); RECT rc; @@ -2608,7 +2608,7 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.fillRight(); gdi.addButton("Save", "Spara", RunnerCB, "help:save").setDefault(); - gdi.addButton("Undo", "Ångra", RunnerCB); + gdi.addButton("Undo", "Ã…ngra", RunnerCB); gdi.dropLine(2.2); gdi.popX(); gdi.addButton("Remove", "Radera", RunnerCB); @@ -2622,12 +2622,12 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.setCX(hx + gdi.scaleLength(5)); gdi.dropLine(2.5); - gdi.addListBox("Punches", 150, 300, PunchesCB, L"Stämplingar:").ignore(true); - gdi.addButton("RemoveC", "Ta bort stämpling >>", RunnerCB); + gdi.addListBox("Punches", 150, 300, PunchesCB, L"Stämplingar:").ignore(true); + gdi.addButton("RemoveC", "Ta bort stämpling >>", RunnerCB); gdi.pushX(); gdi.fillRight(); - gdi.addInput("PTime", L"", 8, 0, L"", L"Stämplingstid"); + gdi.addInput("PTime", L"", 8, 0, L"", L"Stämplingstid"); gdi.fillDown(); gdi.addButton("SaveC", "Spara tid", PunchesCB); gdi.popX(); @@ -2639,8 +2639,8 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.dropLine(2.5); gdi.fillDown(); gdi.addListBox("Course", 140, 300, PunchesCB, L"Banmall:").ignore(true); - gdi.addButton("AddC", "<< Lägg till stämpling", PunchesCB); - gdi.addButton("AddAllC", "<< Lägg till alla", PunchesCB); + gdi.addButton("AddC", "<< Lägg till stämpling", PunchesCB); + gdi.addButton("AddAllC", "<< Lägg till alla", PunchesCB); gdi.synchronizeListScroll("Punches", "Course"); disablePunchCourse(gdi); @@ -2652,14 +2652,14 @@ bool TabRunner::loadPage(gdioutput &gdi) gdi.dropLine(0.2); gdi.fillRight(); gdi.addButton(gdi.getCX(), gdi.getCY(), gdi.scaleLength(120), "SplitPrint", - "Skriv ut sträcktider", RunnerCB, "", false, false).isEdit(true).setExtra(0); - gdi.addButton("PrintSettings", "...", RunnerCB, "Inställningar").isEdit(true).setExtra(0); + "Skriv ut sträcktider", RunnerCB, "", false, false).isEdit(true).setExtra(0); + gdi.addButton("PrintSettings", "...", RunnerCB, "Inställningar").isEdit(true).setExtra(0); gdi.dropLine(2.5); gdi.setCX(contX); gdi.addButton(gdi.getCX(), gdi.getCY(), gdi.scaleLength(120), "SplitPrint", "Skriv ut startbevis", RunnerCB, "", false, false).isEdit(true).setExtra(1); - gdi.addButton("PrintSettings", "...", RunnerCB, "Inställningar").isEdit(true).setExtra(1); + gdi.addButton("PrintSettings", "...", RunnerCB, "Inställningar").isEdit(true).setExtra(1); gdi.pushY(); int by = gdi.getHeight(); @@ -2691,12 +2691,12 @@ void TabRunner::addToolbar(gdioutput &gdi) { int dx = 2; gdi.addButton(dx, 2, button_w, "FormMode", - "Formulärläge", RunnerCB, "", false, true).fixedCorner(); + "Formulärläge", RunnerCB, "", false, true).fixedCorner(); gdi.check("FormMode", currentMode==0); dx += button_w; gdi.addButton(dx, 2, button_w, "TableMode", - "Tabelläge", RunnerCB, "", false, true).fixedCorner(); + "Tabelläge", RunnerCB, "", false, true).fixedCorner(); gdi.check("TableMode", currentMode==1); dx += button_w; @@ -2720,7 +2720,7 @@ void TabRunner::addToolbar(gdioutput &gdi) { } gdi.addButton(dx, 2 ,button_w, "ReportMode", - "Rapportläge", RunnerCB, "", false, true).fixedCorner(); + "Rapportläge", RunnerCB, "", false, true).fixedCorner(); gdi.check("ReportMode", currentMode==5); dx += button_w; @@ -2791,7 +2791,7 @@ void TabRunner::warnDuplicateCard(gdioutput &gdi, int cno, pRunner r) { InputInfo &cardNo = dynamic_cast(gdi.getBaseInfo("CardNo")); if (warnCardDupl) { cardNo.setBgColor(colorLightRed); - gdi.updateToolTip("CardNo", L"Brickan används av X.#" + warnCardDupl->getCompleteIdentification()); + gdi.updateToolTip("CardNo", L"Brickan används av X.#" + warnCardDupl->getCompleteIdentification()); cardNo.refresh(); } else { @@ -2875,7 +2875,7 @@ void TabRunner::EconomyHandler::init(oRunner &r) { oRunner &TabRunner::EconomyHandler::getRunner() const { pRunner p = oe->getRunner(runnerId, 0); if (!p) - throw meosException("Löpare saknas"); + throw meosException("Löpare saknas"); return *p; } @@ -2949,9 +2949,9 @@ void TabRunner::loadEconomy(gdioutput &gdi, oRunner &r) { auto h = getEconomyHandler(r); gdi.fillRight(); - gdi.addInput("EntryDate", r.getEntryDate(true), 10, 0, L"Anmälningsdatum:"); + gdi.addInput("EntryDate", r.getEntryDate(true), 10, 0, L"Anmälningsdatum:"); gdi.fillDown(); - gdi.addInput("EntryTime", formatTime(r.getDCI().getInt("EntryTime")), 10, 0, L"Anmälningstid:"); + gdi.addInput("EntryTime", formatTime(r.getDCI().getInt("EntryTime")), 10, 0, L"Anmälningstid:"); gdi.setInputStatus("EntryDate", r.getTeam() == 0); gdi.setInputStatus("EntryTime", r.getTeam() == 0); @@ -2995,8 +2995,8 @@ void TabRunner::loadEconomy(gdioutput &gdi, oRunner &r) { gdi.disableInput("ModCls"); gdi.fillRight(); - gdi.addButton("Cancel", "Ångra").setHandler(h); - gdi.addButton("Close", "Stäng").setHandler(h); + gdi.addButton("Cancel", "Ã…ngra").setHandler(h); + gdi.addButton("Close", "Stäng").setHandler(h); gdi.addButton("Save", "Spara").setHandler(h); gdi.refresh(); } diff --git a/code/TabRunner.h b/code/TabRunner.h index 2b4988e..cd8af21 100644 --- a/code/TabRunner.h +++ b/code/TabRunner.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "tabbase.h" diff --git a/code/TabSI.cpp b/code/TabSI.cpp index 26c42e8..539e50e 100644 --- a/code/TabSI.cpp +++ b/code/TabSI.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -154,10 +154,10 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) if (gSI->openComListen(port.c_str(), gdi.getTextNo("BaudRate"))) { gSI->startMonitorThread(port.c_str()); loadPage(gdi); - gdi.addString("", 1, L"Lyssnar på X.#"+port).setColor(colorDarkGreen); + gdi.addString("", 1, L"Lyssnar pÃ¥ X.#"+port).setColor(colorDarkGreen); } else - gdi.addString("", 1, "FEL: Porten kunde inte öppnas").setColor(colorRed); + gdi.addString("", 1, "FEL: Porten kunde inte öppnas").setColor(colorRed); gdi.dropLine(); gdi.refresh(); } @@ -187,7 +187,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) if (gSI->isPortOpen(port)) { gSI->closeCom(port.c_str()); - gdi.addStringUT(0, lang.tl(L"Kopplar ifrån SportIdent på ") + port + lang.tl(L"... OK")); + gdi.addStringUT(0, lang.tl(L"Kopplar ifrÃ¥n SportIdent pÃ¥ ") + port + lang.tl(L"... OK")); gdi.popX(); gdi.dropLine(); refillComPorts(gdi); @@ -199,7 +199,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); gdi.pushX(); gdi.fillRight(); - gdi.addInput("tcpPortNo", L"10000", 8,0, L"Port för TCP:"); + gdi.addInput("tcpPortNo", L"10000", 8,0, L"Port för TCP:"); gdi.dropLine(); gdi.addButton("StartTCP", "Starta", SportIdentCB); gdi.addButton("CancelTCP", "Avbryt", SportIdentCB); @@ -212,11 +212,11 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) return 0; } - gdi.addStringUT(0, lang.tl(L"Startar SI på ") + port + L"..."); + gdi.addStringUT(0, lang.tl(L"Startar SI pÃ¥ ") + port + L"..."); gdi.refresh(); if (gSI->openCom(port.c_str())){ gSI->startMonitorThread(port.c_str()); - gdi.addStringUT(0, lang.tl(L"SI på ")+ port + L": "+lang.tl(L"OK")); + gdi.addStringUT(0, lang.tl(L"SI pÃ¥ ")+ port + L": "+lang.tl(L"OK")); printSIInfo(gdi, port); SI_StationInfo *si = gSI->findStation(port); @@ -228,7 +228,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) Sleep(300); if (gSI->openCom(port.c_str())) { gSI->startMonitorThread(port.c_str()); - gdi.addStringUT(0, lang.tl(L"SI på ") + port + L": " + lang.tl(L"OK")); + gdi.addStringUT(0, lang.tl(L"SI pÃ¥ ") + port + L": " + lang.tl(L"OK")); printSIInfo(gdi, port); SI_StationInfo *si = gSI->findStation(port); @@ -237,7 +237,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) } else { gdi.setRestorePoint(); - gdi.addStringUT(1, lang.tl(L"SI på ") + port + L": " + lang.tl(L"FEL, inget svar.")).setColor(colorRed); + gdi.addStringUT(1, lang.tl(L"SI pÃ¥ ") + port + L": " + lang.tl(L"FEL, inget svar.")).setColor(colorRed); gdi.dropLine(); gdi.refresh(); @@ -280,7 +280,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) else swprintf_s(bf, 64, L"COM%d", lbi.data); gdi.fillDown(); - gdi.addStringUT(0, lang.tl(L"Hämtar information om ") + wstring(bf)+ L"."); + gdi.addStringUT(0, lang.tl(L"Hämtar information om ") + wstring(bf)+ L"."); printSIInfo(gdi, bf); gdi.refresh(); } @@ -288,7 +288,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) else if (bi.id=="AutoDetect") { gdi.fillDown(); - gdi.addString("", 0, "Söker efter SI-enheter... "); + gdi.addString("", 0, "Söker efter SI-enheter... "); gdi.refresh(); list ports; if (!gSI->autoDetect(ports)) { @@ -305,11 +305,11 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) char bfn[128]; sprintf_s(bfn, 128, "COM%d", p); - gdi.addString((string("SIInfo")+bfn).c_str(), 0, L"#" + lang.tl(L"Startar SI på ") + wstring(bf) + L"..."); + gdi.addString((string("SIInfo")+bfn).c_str(), 0, L"#" + lang.tl(L"Startar SI pÃ¥ ") + wstring(bf) + L"..."); gdi.refresh(); if (gSI->openCom(bf)) { gSI->startMonitorThread(bf); - gdi.addStringUT(0, lang.tl(L"SI på ") + wstring(bf) + L": " + lang.tl(L"OK")); + gdi.addStringUT(0, lang.tl(L"SI pÃ¥ ") + wstring(bf) + L": " + lang.tl(L"OK")); printSIInfo(gdi, bf); SI_StationInfo *si = gSI->findStation(bf); @@ -318,14 +318,14 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) } else if (gSI->openCom(bf)) { gSI->startMonitorThread(bf); - gdi.addStringUT(0, lang.tl(L"SI på ") + wstring(bf) + L": " + lang.tl(L"OK")); + gdi.addStringUT(0, lang.tl(L"SI pÃ¥ ") + wstring(bf) + L": " + lang.tl(L"OK")); printSIInfo(gdi, bf); SI_StationInfo *si = gSI->findStation(bf); if (si && !si->extended()) gdi.addString("", boldText, "warn:notextended").setColor(colorDarkRed); } - else gdi.addStringUT(0, lang.tl(L"SI på ") + wstring(bf) + L": " +lang.tl(L"FEL, inget svar")); + else gdi.addStringUT(0, lang.tl(L"SI pÃ¥ ") + wstring(bf) + L": " +lang.tl(L"FEL, inget svar")); gdi.refresh(); gdi.popX(); @@ -393,7 +393,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) csv.importPunches(*oe, file.c_str(), punches); if (!punches.empty()) { gdi.dropLine(2); - gdi.addString("", 1, "Inlästa stämplar"); + gdi.addString("", 1, "Inlästa stämplar"); set dates; showReadPunches(gdi, punches, dates); @@ -434,14 +434,14 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) gdi.pushX(); gdi.dropLine(3); - gdi.addString("", 1, "Inlästa brickor"); + gdi.addString("", 1, "Inlästa brickor"); showReadCards(gdi, cards); gdi.dropLine(); gdi.fillDown(); if (interactiveReadout) - gdi.addString("", 0, "Välj Spara för att lagra brickorna. Interaktiv inläsning är aktiverad."); + gdi.addString("", 0, "Välj Spara för att lagra brickorna. Interaktiv inläsning är aktiverad."); else - gdi.addString("", 0, "Välj Spara för att lagra brickorna. Interaktiv inläsning är INTE aktiverad."); + gdi.addString("", 0, "Välj Spara för att lagra brickorna. Interaktiv inläsning är INTE aktiverad."); gdi.fillRight(); gdi.pushX(); @@ -583,7 +583,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) wstring club=gdi.getText("Club", true); if (name.length()==0){ - gdi.alert("Alla deltagare måste ha ett namn."); + gdi.alert("Alla deltagare mÃ¥ste ha ett namn."); return 0; } @@ -652,7 +652,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) club = noClub->getName(); } else - club=lang.tl("Klubblös"); + club=lang.tl("Klubblös"); } int year = 0; @@ -710,7 +710,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) gdi.getSelectedItem("Classes", lbi); if (lbi.data==0 || lbi.data==-1) { - gdi.alert("Du måste välja en klass"); + gdi.alert("Du mÃ¥ste välja en klass"); return 0; } pClass pc = oe->getClass(lbi.data); @@ -720,7 +720,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) wstring club = gdi.getText("Club", true); if (club.empty() && oe->getMeOSFeatures().hasFeature(MeOSFeatures::Clubs)) - club = lang.tl("Klubblös"); + club = lang.tl("Klubblös"); int year = 0; pRunner r=gEvent->addRunner(gdi.getText("Runners"), club, @@ -795,7 +795,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) if (lbi.data==0 || lbi.data==-1) { - gdi.alert("Du måste välja en klass"); + gdi.alert("Du mÃ¥ste välja en klass"); return 0; } @@ -804,7 +804,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) if (gdi.getData("RunnerId", rid) && rid>0) r = gEvent->getRunner(rid, 0); - else r = gEvent->addRunner(lang.tl(L"Oparad bricka"), lang.tl("Okänd"), 0, 0, 0, false); + else r = gEvent->addRunner(lang.tl(L"Oparad bricka"), lang.tl("Okänd"), 0, 0, 0, false); r->setClassId(lbi.data, true); @@ -820,7 +820,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) wstring name=gdi.getText("Name"); if (name.empty()) { - gdi.alert("Alla deltagare måste ha ett namn."); + gdi.alert("Alla deltagare mÃ¥ste ha ett namn."); return 0; } int rid = bi.getExtraInt(); @@ -829,7 +829,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) pRunner cardRunner = oe->getRunnerByCardNo(cardNo, 0, true); if (cardNo>0 && cardRunner!=0 && cardRunner!=r) { - gdi.alert(L"Bricknummret är upptaget (X).#" + cardRunner->getName() + L", " + cardRunner->getClass(true)); + gdi.alert(L"Bricknummret är upptaget (X).#" + cardRunner->getName() + L", " + cardRunner->getClass(true)); return 0; } @@ -841,7 +841,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) gdi.alert(L"Ingen klass vald"); return 0; } - pClass pc = oe->getClassCreate(0, lang.tl(L"Öppen klass")); + pClass pc = oe->getClassCreate(0, lang.tl(L"Öppen klass")); lbi.data = pc->getId(); pc->setAllowQuickEntry(true); pc->synchronize(); @@ -937,7 +937,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) info+=bib; if (updated) - info += lang.tl(L" [Uppdaterad anmälan]"); + info += lang.tl(L" [Uppdaterad anmälan]"); gdi.pushX(); gdi.fillRight(); @@ -965,7 +965,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) } else if (bi.id == "ManualOK") { if (runnerMatchedId == -1) - throw meosException("Löparen hittades inte"); + throw meosException("Löparen hittades inte"); bool useNow = gdi.getExtraInt("FinishTime") == 1; wstring time = useNow ? getLocalTimeOnly() : gdi.getText("FinishTime"); @@ -979,10 +979,10 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) pRunner r = oe->getRunner(runnerMatchedId, 0); if (r==0) - throw meosException("Löparen hittades inte"); + throw meosException("Löparen hittades inte"); if (r->getStatus() != StatusUnknown) { - if (!gdi.ask(L"X har redan ett resultat. Vi du fortsätta?#" + r->getCompleteIdentification())) + if (!gdi.ask(L"X har redan ett resultat. Vi du fortsätta?#" + r->getCompleteIdentification())) return 0; } @@ -1008,7 +1008,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) gdi.check("StatusOK", !dnf); } else if (bi.id == "CCSClear") { - if (gdi.ask(L"Vill du göra om avbockningen från början igen?")) { + if (gdi.ask(L"Vill du göra om avbockningen frÃ¥n början igen?")) { checkedCardFlags.clear(); gdi.restore("CCSInit", false); showCheckCardStatus(gdi, "fillrunner"); @@ -1069,7 +1069,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) wcscpy_s(bf, L"TCP"); if (gSI->isPortOpen(bf)) - gdi.setText("StartSI", lang.tl("Koppla ifrån")); + gdi.setText("StartSI", lang.tl("Koppla ifrÃ¥n")); else gdi.setText("StartSI", lang.tl("Aktivera")); } @@ -1099,7 +1099,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) gdi.enableInput("PrintSplits"); gdi.enableInput("UseManualInput"); gdi.fillDown(); - gdi.addButton("Import", "Importera från fil...", SportIdentCB); + gdi.addButton("Import", "Importera frÃ¥n fil...", SportIdentCB); if (gdi.isChecked("UseManualInput")) showManualInput(gdi); @@ -1452,7 +1452,7 @@ void TabSI::refillComPorts(gdioutput &gdi) if (active){ gdi.selectItemByData("ComPort", active); - gdi.setText("StartSI", lang.tl("Koppla ifrån")); + gdi.setText("StartSI", lang.tl("Koppla ifrÃ¥n")); } else{ gdi.selectItemByData("ComPort", inactive); @@ -1552,7 +1552,7 @@ bool TabSI::loadPage(gdioutput &gdi) { gdi.dropLine(-1.4); gdi.setCX(gdi.getCX()-gdi.getLineHeight()); - gdi.addInput("Finish", oe->getAbsTime(f), 6, 0, L"Mål"); + gdi.addInput("Finish", oe->getAbsTime(f), 6, 0, L"MÃ¥l"); gdi.addSelection("NC", 45, 200, SportIdentCB, L"NC"); const int src[11] = {33, 34, 45, 50, 36, 38, 59, 61, 62, 67, 100}; @@ -1582,7 +1582,7 @@ bool TabSI::loadPage(gdioutput &gdi) { gdi.addButton("Save", "Bricka", SportIdentCB); gdi.fillDown(); - gdi.addButton("SaveP", "Stämpling", SportIdentCB); + gdi.addButton("SaveP", "Stämpling", SportIdentCB); gdi.popX(); #endif gdi.addString("", boldLarge, "SportIdent"); @@ -1596,8 +1596,8 @@ bool TabSI::loadPage(gdioutput &gdi) { refillComPorts(gdi); - gdi.addButton("AutoDetect", "Sök och starta automatiskt...", SportIdentCB); - gdi.addButton("PrinterSetup", "Skrivarinställningar...", SportIdentCB, "Skrivarinställningar för sträcktider och startbevis"); + gdi.addButton("AutoDetect", "Sök och starta automatiskt...", SportIdentCB); + gdi.addButton("PrinterSetup", "Skrivarinställningar...", SportIdentCB, "Skrivarinställningar för sträcktider och startbevis"); gdi.popX(); gdi.fillDown(); @@ -1612,10 +1612,10 @@ bool TabSI::loadPage(gdioutput &gdi) { gdi.setCY(yb + gdi.scaleLength(10)); gdi.addString("", fontMediumPlus, "Funktion:"); gdi.addSelection("ReadType", 200, 200, SportIdentCB); - gdi.addItem("ReadType", lang.tl("Avläsning/radiotider"), ModeReadOut); + gdi.addItem("ReadType", lang.tl("Avläsning/radiotider"), ModeReadOut); gdi.addItem("ReadType", lang.tl("Tilldela hyrbrickor"), ModeAssignCards); - gdi.addItem("ReadType", lang.tl("Avstämning hyrbrickor"), ModeCheckCards); - gdi.addItem("ReadType", lang.tl("Anmälningsläge"), ModeEntry); + gdi.addItem("ReadType", lang.tl("Avstämning hyrbrickor"), ModeCheckCards); + gdi.addItem("ReadType", lang.tl("Anmälningsläge"), ModeEntry); gdi.addItem("ReadType", lang.tl("Print card data"), ModeCardData); gdi.selectItemByData("ReadType", mode); @@ -1627,15 +1627,15 @@ bool TabSI::loadPage(gdioutput &gdi) { } if (!oe->empty()) - gdi.addCheckbox("Interactive", "Interaktiv inläsning", SportIdentCB, interactiveReadout); + gdi.addCheckbox("Interactive", "Interaktiv inläsning", SportIdentCB, interactiveReadout); if (oe->empty() || oe->useRunnerDb()) - gdi.addCheckbox("Database", "Använd löpardatabasen", SportIdentCB, useDatabase); + gdi.addCheckbox("Database", "Använd löpardatabasen", SportIdentCB, useDatabase); - gdi.addCheckbox("PrintSplits", "Sträcktidsutskrift[check]", SportIdentCB, printSplits); + gdi.addCheckbox("PrintSplits", "Sträcktidsutskrift[check]", SportIdentCB, printSplits); if (!oe->empty()) { - gdi.addCheckbox("StartInfo", "Startbevis", SportIdentCB, printStartInfo, "Skriv ut startbevis för deltagaren"); + gdi.addCheckbox("StartInfo", "Startbevis", SportIdentCB, printStartInfo, "Skriv ut startbevis för deltagaren"); if (mode != ModeEntry) gdi.disableInput("StartInfo"); } @@ -1653,7 +1653,7 @@ bool TabSI::loadPage(gdioutput &gdi) { gdi.setRestorePoint("SIPageLoaded"); if (mode == ModeReadOut) { - gdi.addButton("Import", "Importera från fil...", SportIdentCB); + gdi.addButton("Import", "Importera frÃ¥n fil...", SportIdentCB); gdi.setRestorePoint("Help"); gdi.addString("", 10, "help:471101"); @@ -1737,7 +1737,7 @@ void TabSI::insertSICard(gdioutput &gdi, SICard &sic) msg = gdi.widen(ex.what()); } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) @@ -1765,7 +1765,7 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) if (mode==ModeAssignCards) { if (!pageLoaded) { CardQueue.push_back(sic); - gdi.addInfoBox("SIREAD", L"Inläst bricka ställd i kö"); + gdi.addInfoBox("SIREAD", L"Inläst bricka ställd i kö"); } else assignCard(gdi, sic); return; @@ -1773,7 +1773,7 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) else if (mode==ModeEntry) { if (!pageLoaded) { CardQueue.push_back(sic); - gdi.addInfoBox("SIREAD", L"Inläst bricka ställd i kö"); + gdi.addInfoBox("SIREAD", L"Inläst bricka ställd i kö"); } else entryCard(gdi, sic); return; @@ -1781,7 +1781,7 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) if (mode==ModeCheckCards) { if (!pageLoaded) { CardQueue.push_back(sic); - gdi.addInfoBox("SIREAD", L"Inläst bricka ställd i kö"); + gdi.addInfoBox("SIREAD", L"Inläst bricka ställd i kö"); } else checkCard(gdi, sic, true); @@ -1886,7 +1886,7 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) processUnmatched(gdi, sic, true); } else - gdi.addInfoBox("SIREAD", L"Brickan redan inläst.", 0, SportIdentCB); + gdi.addInfoBox("SIREAD", L"Brickan redan inläst.", 0, SportIdentCB); } return; } @@ -1919,7 +1919,7 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) wchar_t bf[256]; if (interactiveReadout) { - swprintf_s(bf, L"SI X är redan inläst. Ska den läsas in igen?#%d", sic.CardNumber); + swprintf_s(bf, L"SI X är redan inläst. Ska den läsas in igen?#%d", sic.CardNumber); if (!gdi.ask(bf)) { if (printSplits) { @@ -1942,7 +1942,7 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) } gdi.dropLine(); - swprintf_s(bf, L"SI X är redan inläst. Använd interaktiv inläsning om du vill läsa brickan igen.#%d", sic.CardNumber); + swprintf_s(bf, L"SI X är redan inläst. Använd interaktiv inläsning om du vill läsa brickan igen.#%d", sic.CardNumber); gdi.addString("", 0, bf).setColor(colorRed); gdi.dropLine(); gdi.scrollToBottom(); @@ -1971,10 +1971,10 @@ void TabSI::insertSICardAux(gdioutput &gdi, SICard &sic) gdi.dropLine(); gdi.addString("", 1, "Skapar saknad klass").setColor(colorGreen); gdi.dropLine(); - pCourse pc=gEvent->addCourse(lang.tl("Okänd klass")); + pCourse pc=gEvent->addCourse(lang.tl("Okänd klass")); for(unsigned i=0;iaddControl(sic.Punch[i].Code); - gEvent->addClass(lang.tl(L"Okänd klass"), pc->getId())->setType(L"tmp"); + gEvent->addClass(lang.tl(L"Okänd klass"), pc->getId())->setType(L"tmp"); } // Assign a class if not already done @@ -2006,7 +2006,7 @@ void TabSI::startInteractive(gdioutput &gdi, const SICard &sic, pRunner r, pRunn gdi.fillDown(); gdi.dropLine(); char bf[256]; - sprintf_s(bf, 256, "SI X inläst. Brickan är inte knuten till någon löpare (i skogen).#%d", sic.CardNumber); + sprintf_s(bf, 256, "SI X inläst. Brickan är inte knuten till nÃ¥gon löpare (i skogen).#%d", sic.CardNumber); gdi.dropLine(); gdi.addString("", 1, bf); @@ -2057,7 +2057,7 @@ void TabSI::startInteractive(gdioutput &gdi, const SICard &sic, pRunner r, pRunn gdi.setRestorePoint(); wchar_t bf[256]; - swprintf_s(bf, 256, L"SI X inläst. Brickan tillhör Y som saknar klass.#%d#%s", + swprintf_s(bf, 256, L"SI X inläst. Brickan tillhör Y som saknar klass.#%d#%s", sic.CardNumber, r->getName().c_str()); gdi.dropLine(); @@ -2128,7 +2128,7 @@ bool TabSI::processUnmatched(gdioutput &gdi, const SICard &csic, bool silent) card->setCardNo(csic.CardNumber); - wstring info=lang.tl(L"Okänd bricka ") + itow(sic.CardNumber) + L"."; + wstring info=lang.tl(L"Okänd bricka ") + itow(sic.CardNumber) + L"."; wstring warnings; // Write read card to log @@ -2149,7 +2149,7 @@ bool TabSI::processUnmatched(gdioutput &gdi, const SICard &csic, bool silent) if (sic.FinishPunch.Code!=-1) card->addPunch(oPunch::PunchFinish, sic.FinishPunch.Time, 0); else - warnings+=lang.tl("Målstämpling saknas."); + warnings+=lang.tl("MÃ¥lstämpling saknas."); //Update to SQL-source card->synchronize(); @@ -2189,7 +2189,7 @@ void TabSI::rentCardInfo(gdioutput &gdi, int width) rc.bottom=rc.top+gdi.getLineHeight()+5; gdi.addRectangle(rc, colorYellow, true); - gdi.addString("", rc.top+2, rc.left+width/2, 1|textCenter, "Vänligen återlämna hyrbrickan."); + gdi.addString("", rc.top+2, rc.left+width/2, 1|textCenter, "Vänligen Ã¥terlämna hyrbrickan."); } bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool silent) @@ -2206,7 +2206,7 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool runner->synchronize(); if (!runner->getClassId(false)) - runner->setClassId(gEvent->addClass(lang.tl(L"Okänd klass"))->getId(), true); + runner->setClassId(gEvent->addClass(lang.tl(L"Okänd klass"))->getId(), true); // Choose course from pool pClass cls = runner->getClassRef(false); @@ -2240,7 +2240,7 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool wchar_t msg[256]; - swprintf_s(msg, lang.tl(L"Skapade en bana för klassen %s med %d kontroller från brickdata (SI-%d)").c_str(), + swprintf_s(msg, lang.tl(L"Skapade en bana för klassen %s med %d kontroller frÃ¥n brickdata (SI-%d)").c_str(), pclass->getName().c_str(), csic.nPunch, csic.CardNumber); if (silent) @@ -2250,7 +2250,7 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool } else { if (!(pclass && pclass->hasDirectResult())) { - const wchar_t *msg=L"Löpare saknar klass eller bana"; + const wchar_t *msg=L"Löpare saknar klass eller bana"; if (silent) gdi.addInfoBox("SIINFO", msg, 15000); @@ -2311,7 +2311,7 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool } if (!hasFinish) - warnings+=lang.tl(L"Målstämpling saknas."); + warnings+=lang.tl(L"MÃ¥lstämpling saknas."); card->synchronize(); runner->addPunches(card, MP); @@ -2463,12 +2463,12 @@ void TabSI::processPunchOnly(gdioutput &gdi, const SICard &csic) //gEvent->getRunnerByCard(sic.CardNumber); if (r) { - wstring str = r->getName() + lang.tl(" stämplade vid ") + ofp->getSimpleString(); + wstring str = r->getName() + lang.tl(" stämplade vid ") + ofp->getSimpleString(); gdi.addStringUT(0, str); gdi.dropLine(); } else { - wstring str=L"SI " + itow(sic.CardNumber) + lang.tl(" (okänd) stämplade vid ") + ofp->getSimpleString(); + wstring str=L"SI " + itow(sic.CardNumber) + lang.tl(" (okänd) stämplade vid ") + ofp->getSimpleString(); gdi.addStringUT(0, str); gdi.dropLine(0.3); } @@ -2568,7 +2568,7 @@ void TabSI::assignCard(gdioutput &gdi, const SICard &sic) return; } if (r->getCardNo()==0 || - gdi.ask(L"Skriv över existerande bricknummer?")) { + gdi.ask(L"Skriv över existerande bricknummer?")) { r->setCardNo(sic.CardNumber, false); r->getDI().setInt("CardFee", oe->getDI().getInt("CardFee")); @@ -2603,7 +2603,7 @@ void TabSI::generateEntryLine(gdioutput &gdi, pRunner r) if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Clubs)) { gdi.addCombo("Club", 180, 200, 0, L"Klubb:", - L"Skriv första bokstaven i klubbens namn och tryck pil-ner för att leta efter klubben") + L"Skriv första bokstaven i klubbens namn och tryck pil-ner för att leta efter klubben") .setHandler(&directEntryGUI); oe->fillClubs(gdi, "Club"); if (storedInfo.storedClub.empty()) @@ -2619,7 +2619,7 @@ void TabSI::generateEntryLine(gdioutput &gdi, pRunner r) vector< pair > d; oe->fillClasses(d, oEvent::extraNumMaps, oEvent::filterOnlyDirect); if (d.empty() && oe->getNumClasses() > 0) { - gdi.alert(L"Inga klasser tillåter direktanmälan. På sidan klasser kan du ändra denna egenskap."); + gdi.alert(L"Inga klasser tillÃ¥ter direktanmälan. PÃ¥ sidan klasser kan du ändra denna egenskap."); } gdi.addItem("Class", d); } @@ -2664,7 +2664,7 @@ void TabSI::generateEntryLine(gdioutput &gdi, pRunner r) gdi.addCheckbox("RentCard", "Hyrbricka", SportIdentCB, storedInfo.rentState); if (oe->hasNextStage()) - gdi.addCheckbox("AllStages", "Anmäl till efterföljande etapper", SportIdentCB, storedInfo.allStages); + gdi.addCheckbox("AllStages", "Anmäl till efterföljande etapper", SportIdentCB, storedInfo.allStages); if (r!=0) { if (r->getCardNo()>0) @@ -2744,7 +2744,7 @@ void TabSI::updateEntryInfo(gdioutput &gdi) else method = lang.tl(L"Faktureras"); - gdi.setText("EntryInfo", lang.tl(L"X: Y. Tryck för att spara#" + + gdi.setText("EntryInfo", lang.tl(L"X: Y. Tryck för att spara#" + method + L"#" + oe->formatCurrency(fee)), true); } else { @@ -2836,10 +2836,10 @@ void TabSI::showManualInput(gdioutput &gdi) { gdi.pushX(); gdi.dropLine(); gdi.addInput("Manual", L"", 20, SportIdentCB, L"Nummerlapp, SI eller Namn:"); - gdi.addInput("FinishTime", lang.tl("Aktuell tid"), 8, SportIdentCB, L"Måltid:").setFgColor(colorGreyBlue).setExtra(1); + gdi.addInput("FinishTime", lang.tl("Aktuell tid"), 8, SportIdentCB, L"MÃ¥ltid:").setFgColor(colorGreyBlue).setExtra(1); gdi.dropLine(1.2); - gdi.addCheckbox("StatusOK", "Godkänd", SportIdentCB, true); - gdi.addCheckbox("StatusDNF", "Utgått", SportIdentCB, false); + gdi.addCheckbox("StatusOK", "Godkänd", SportIdentCB, true); + gdi.addCheckbox("StatusDNF", "UtgÃ¥tt", SportIdentCB, false); gdi.dropLine(-0.3); gdi.addButton("ManualOK", "OK", SportIdentCB).setDefault(); gdi.fillDown(); @@ -2870,7 +2870,7 @@ void TabSI::tieCard(gdioutput &gdi) { return; if (r->getCardNo() > 0 && r->getCardNo() != card) { - if (!gdi.ask(L"X har redan bricknummer Y. Vill du ändra det?#" + r->getName() + L"#" + itow(r->getCardNo()))) + if (!gdi.ask(L"X har redan bricknummer Y. Vill du ändra det?#" + r->getName() + L"#" + itow(r->getCardNo()))) return; } @@ -2893,7 +2893,7 @@ void TabSI::tieCard(gdioutput &gdi) { gdi.addStringUT(0, L"(" + r->getClub() + L")", 0); gdi.addStringUT(1, itos(r->getCardNo()), 0).setColor(colorDarkGreen); - gdi.addString("EditAssign", 0, "Ändra", SportIdentCB).setExtra(r->getId()); + gdi.addString("EditAssign", 0, "Ändra", SportIdentCB).setExtra(r->getId()); gdi.dropLine(1.5); gdi.popX(); @@ -2910,11 +2910,11 @@ void TabSI::showAssignCard(gdioutput &gdi, bool showHelp) { gdi.fillDown(); if (interactiveReadout) { if (showHelp) - gdi.addString("", 10, L"Avmarkera 'X' för att hantera alla bricktildelningar samtidigt.#" + lang.tl("Interaktiv inläsning")); + gdi.addString("", 10, L"Avmarkera 'X' för att hantera alla bricktildelningar samtidigt.#" + lang.tl("Interaktiv inläsning")); } else { if (showHelp) - gdi.addString("", 10, L"Markera 'X' för att hantera deltagarna en och en.#" + lang.tl("Interaktiv inläsning")); + gdi.addString("", 10, L"Markera 'X' för att hantera deltagarna en och en.#" + lang.tl("Interaktiv inläsning")); gEvent->assignCardInteractive(gdi, SportIdentCB); gdi.refresh(); return; @@ -2936,7 +2936,7 @@ void TabSI::showAssignCard(gdioutput &gdi, bool showHelp) { gdi.addInput("RunnerId", L"", 20, SportIdentCB, L"Nummerlapp, lopp-id eller namn:"); gdi.addInput("CardNo", L"", 8, SportIdentCB, L"Bricknr:"); gdi.dropLine(1.2); - gdi.addCheckbox("AutoTie", "Knyt automatiskt efter inläsning", SportIdentCB, oe->getPropertyInt("AutoTie", 1) != 0); + gdi.addCheckbox("AutoTie", "Knyt automatiskt efter inläsning", SportIdentCB, oe->getPropertyInt("AutoTie", 1) != 0); gdi.addCheckbox("RentCardTie", "Hyrd", SportIdentCB, oe->getPropertyInt("RentCard", 0) != 0); gdi.dropLine(-0.3); @@ -3130,7 +3130,7 @@ void TabSI::printCard(gdioutput &gdi, int cardId, bool forPrinter) const { gdi.addString("", 1, "Bricka X#" + itos(c.CardNumber)); if (!forPrinter && name.empty()) - name = lang.tl("Okänd"); + name = lang.tl("Okänd"); if (!name.empty()) { if (!clubName.empty()) @@ -3177,7 +3177,7 @@ void TabSI::printCard(gdioutput &gdi, int cardId, bool forPrinter) const { } if (c.FinishPunch.Code != -1) { int cy = gdi.getCY(); - gdi.addString("", cy, xp, 0, "Mål"); + gdi.addString("", cy, xp, 0, "MÃ¥l"); gdi.addStringUT(cy, xp3, 0, formatTimeHMS(c.FinishPunch.Time % (24*3600))); if (start != NOTIME) { @@ -3251,7 +3251,7 @@ void TabSI::printProtected(gdioutput &gdi, gdioutput &gdiprint) { } void TabSI::createCompetitionFromCards(gdioutput &gdi) { - oe->newCompetition(lang.tl(L"Ny tävling")); + oe->newCompetition(lang.tl(L"Ny tävling")); gdi.setWindowTitle(L""); map hashCount; vector< pair > cards; @@ -3442,8 +3442,8 @@ void TabSI::showCheckCardStatus(gdioutput &gdi, const string &cmd) { gdi.fillRight(); gdi.pushX(); gdi.addButton("CCSReport", "Rapport", SportIdentCB); - gdi.addButton("CCSClear", "Nollställ", SportIdentCB, - "Nollställ minnet; markera alla brickor som icke avbockade"); + gdi.addButton("CCSClear", "Nollställ", SportIdentCB, + "Nollställ minnet; markera alla brickor som icke avbockade"); gdi.addButton("CCSPrint", "Skriv ut...", SportIdentCB); gdi.popX(); @@ -3477,7 +3477,7 @@ void TabSI::showCheckCardStatus(gdioutput &gdi, const string &cmd) { oe->getRunners(0, 0, r); stable_sort(r.begin(), r.end(), compareCardNo); gdi.dropLine(); - string msg = "Brickor markerade som både uthyrda och egna: X#" + itos(count[CNFCheckedRentAndNotRent] + count[CNFRentAndNotRent]); + string msg = "Brickor markerade som bÃ¥de uthyrda och egna: X#" + itos(count[CNFCheckedRentAndNotRent] + count[CNFRentAndNotRent]); gdi.addString("", 1, msg).setColor(colorDarkRed); gdi.dropLine(0.5); for (size_t k = 0; k < r.size(); k++) { diff --git a/code/TabSI.h b/code/TabSI.h index c202f7f..e8efacf 100644 --- a/code/TabSI.h +++ b/code/TabSI.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "tabbase.h" diff --git a/code/TabSpeaker.cpp b/code/TabSpeaker.cpp index 8bb31a6..9820b00 100644 --- a/code/TabSpeaker.cpp +++ b/code/TabSpeaker.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -118,7 +118,7 @@ int TabSpeaker::processButton(gdioutput &gdi, const ButtonInfo &bu) gdi.restore("settings"); gdi.unregisterEvent("DataUpdate"); gdi.fillDown(); - gdi.addString("", boldLarge, "Speakerstöd"); + gdi.addString("", boldLarge, "Speakerstöd"); gdi.addString("", 0, "help:speaker_setup"); gdi.dropLine(1); gdi.addCheckbox("ShortNames", "Use initials in names", 0, oe->getPropertyInt("SpeakerShortNames", false) != 0); @@ -183,7 +183,7 @@ int TabSpeaker::processButton(gdioutput &gdi, const ButtonInfo &bu) } else if (bu.id == "PunchTable") { gdi.clearPage(false); - gdi.addButton("Cancel", "Stäng", tabSpeakerCB); + gdi.addButton("Cancel", "Stäng", tabSpeakerCB); gdi.dropLine(); gdi.addTable(oe->getPunchesTB(), gdi.getCX(), gdi.getCY()); gdi.refresh(); @@ -196,9 +196,9 @@ int TabSpeaker::processButton(gdioutput &gdi, const ButtonInfo &bu) gdi.fillRight(); gdi.pushX(); gdi.addString("", 0, "Klass:"); - gdi.addSelection("Class", 200, 200, tabSpeakerCB, L"", L"Välj klass"); + gdi.addSelection("Class", 200, 200, tabSpeakerCB, L"", L"Välj klass"); oe->fillClasses(gdi, "Class", oEvent::extraNone, oEvent::filterNone); - gdi.addButton("ClosePri", "Stäng", tabSpeakerCB); + gdi.addButton("ClosePri", "Stäng", tabSpeakerCB); gdi.dropLine(2); gdi.popX(); gdi.refresh(); @@ -256,7 +256,7 @@ int TabSpeaker::processButton(gdioutput &gdi, const ButtonInfo &bu) else if (bu.id == "Window") { oe->setupTimeLineEvents(0); - gdioutput *gdi_new = createExtraWindow(uniqueTag("speaker"), makeDash(L"MeOS - Speakerstöd"), gdi.getWidth() + 64 + gdi.scaleLength(120)); + gdioutput *gdi_new = createExtraWindow(uniqueTag("speaker"), makeDash(L"MeOS - Speakerstöd"), gdi.getWidth() + 64 + gdi.scaleLength(120)); if (gdi_new) { TabSpeaker &tl = dynamic_cast(*gdi_new->getTabs().get(TSpeakerTab)); tl.ownWindow = true; @@ -293,9 +293,9 @@ int TabSpeaker::processButton(gdioutput &gdi, const ButtonInfo &bu) loadSettings(speakerSettings); if (speakerSettings.empty()) - throw meosException("Inställningarna är ogiltiga"); + throw meosException("Inställningarna är ogiltiga"); for (size_t k = 1; k < speakerSettings.size(); k++) { - gdioutput *gdi_new = createExtraWindow(uniqueTag("speaker"), makeDash(L"MeOS - Speakerstöd"), gdi.getWidth() + 64 + gdi.scaleLength(120)); + gdioutput *gdi_new = createExtraWindow(uniqueTag("speaker"), makeDash(L"MeOS - Speakerstöd"), gdi.getWidth() + 64 + gdi.scaleLength(120)); if (gdi_new) { TabSpeaker &tl = dynamic_cast(*gdi_new->getTabs().get(TSpeakerTab)); tl.ownWindow = true; @@ -388,9 +388,9 @@ void TabSpeaker::drawTimeLine(gdioutput &gdi) { gdi.dropLine(-0.2); gdi.addSelection("DetailLevel", 160, 100, tabSpeakerCB); gdi.setCX(gdi.getCX() + gdi.getLineHeight()*2); - gdi.addItem("DetailLevel", lang.tl("Alla händelser"), oTimeLine::PLow); - gdi.addItem("DetailLevel", lang.tl("Viktiga händelser"), oTimeLine::PMedium); - gdi.addItem("DetailLevel", lang.tl("Avgörande händelser"), oTimeLine::PHigh); + gdi.addItem("DetailLevel", lang.tl("Alla händelser"), oTimeLine::PLow); + gdi.addItem("DetailLevel", lang.tl("Viktiga händelser"), oTimeLine::PMedium); + gdi.addItem("DetailLevel", lang.tl("Avgörande händelser"), oTimeLine::PHigh); gdi.selectItemByData("DetailLevel", watchLevel); gdi.dropLine(0.2); @@ -416,7 +416,7 @@ void TabSpeaker::drawTimeLine(gdioutput &gdi) { } } gdi.fillDown(); - gdi.addString("", 1, L"Bevakar händelser i X#" + cls); + gdi.addString("", 1, L"Bevakar händelser i X#" + cls); gdi.dropLine(); gdi.setRestorePoint("TimeLine"); @@ -736,11 +736,11 @@ void TabSpeaker::generateControlList(gdioutput &gdi, int classId) if (stages.size() > 1) { for (size_t k=0; knbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight()+4; @@ -961,7 +961,7 @@ bool TabSpeaker::loadPage(gdioutput &gdi) gdi.addButton(cx+db, cy, bw/5, "ZoomOut", makeDash(L"-"), tabSpeakerCB, L"Zooma ut (Ctrl + '-')", false, false); db += bw/5+2; } - gdi.addButton(cx+db, cy, bw-2, "Settings", "Inställningar...", tabSpeakerCB, "Välj vilka klasser och kontroller som bevakas", false, false); + gdi.addButton(cx+db, cy, bw-2, "Settings", "Inställningar...", tabSpeakerCB, "Välj vilka klasser och kontroller som bevakas", false, false); if (++cb>nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight()+4; @@ -972,13 +972,13 @@ bool TabSpeaker::loadPage(gdioutput &gdi) cy += gdi.getButtonHeight()+4; } else db += bw; - gdi.addButton(cx+db, cy, bw-2, "PunchTable", "Stämplingar", tabSpeakerCB, "Visa en tabell över alla stämplingar", false, false); + gdi.addButton(cx+db, cy, bw-2, "PunchTable", "Stämplingar", tabSpeakerCB, "Visa en tabell över alla stämplingar", false, false); if (++cb>nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight()+4; } else db += bw; - gdi.addButton(cx+db, cy, bw-2, "LiveResult", "Liveresultat", tabSpeakerCB, "Visa rullande tider mellan kontroller i helskärmsläge", false, false); + gdi.addButton(cx+db, cy, bw-2, "LiveResult", "Liveresultat", tabSpeakerCB, "Visa rullande tider mellan kontroller i helskärmsläge", false, false); if (++cb>nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight()+4; @@ -986,14 +986,14 @@ bool TabSpeaker::loadPage(gdioutput &gdi) if (!ownWindow) { - gdi.addButton(cx+db, cy, bw-2, "Priority", "Prioritering", tabSpeakerCB, "Välj löpare att prioritera bevakning för", false, false); + gdi.addButton(cx+db, cy, bw-2, "Priority", "Prioritering", tabSpeakerCB, "Välj löpare att prioritera bevakning för", false, false); if (++cb>nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight()+4; } else db += bw; - gdi.addButton(cx+db, cy, bw-2, "Window", "Nytt fönster", tabSpeakerCB, "", false, false); + gdi.addButton(cx+db, cy, bw-2, "Window", "Nytt fönster", tabSpeakerCB, "", false, false); if (++cb>nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight()+4; @@ -1003,7 +1003,7 @@ bool TabSpeaker::loadPage(gdioutput &gdi) if (getExtraWindows().size() == 1) { wstring sf = getSpeakerSettingsFile(); if (fileExist(sf.c_str())) { - gdi.addButton(cx + db, cy, bw - 2, "LoadWindows", "Återskapa", tabSpeakerCB, "Återskapa tidigare sparade fönster- och speakerinställningar", false, false); + gdi.addButton(cx + db, cy, bw - 2, "LoadWindows", "Ã…terskapa", tabSpeakerCB, "Ã…terskapa tidigare sparade fönster- och speakerinställningar", false, false); if (++cb > nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight() + 4; @@ -1012,7 +1012,7 @@ bool TabSpeaker::loadPage(gdioutput &gdi) } } else { - gdi.addButton(cx + db, cy, bw - 2, "SaveWindows", "Spara", tabSpeakerCB, "Spara fönster- och speakerinställningar på datorn", false, false); + gdi.addButton(cx + db, cy, bw - 2, "SaveWindows", "Spara", tabSpeakerCB, "Spara fönster- och speakerinställningar pÃ¥ datorn", false, false); if (++cb > nbtn) { cb = 1, cx = basex, db = 0; cy += gdi.getButtonHeight() + 4; @@ -1063,7 +1063,7 @@ void TabSpeaker::manualTimePage(gdioutput &gdi) const gdi.fillRight(); gdi.pushX(); gdi.addInput("Control", lastControl, 5, 0, L"Kontroll"); - gdi.addInput("Runner", L"", 6, 0, L"Löpare"); + gdi.addInput("Runner", L"", 6, 0, L"Löpare"); gdi.addInput("Time", L"", 8, 0, L"Tid"); gdi.dropLine(); gdi.addButton("StoreTime", "Spara", tabSpeakerCB).setDefault(); @@ -1084,7 +1084,7 @@ void TabSpeaker::storeManualTime(gdioutput &gdi) int punch=gdi.getTextNo("Control"); if (punch<=0) - throw std::exception("Kontrollnummer måste anges."); + throw std::exception("Kontrollnummer mÃ¥ste anges."); lastControl=gdi.getText("Control"); const wstring &r_str=gdi.getText("Runner"); @@ -1110,7 +1110,7 @@ void TabSpeaker::storeManualTime(gdioutput &gdi) sino = r->getCardNo(); } else - Name = lang.tl("Okänd"); + Name = lang.tl("Okänd"); if (sino <= 0) { sprintf_s(bf, "Ogiltigt bricknummer.#%d", sino); @@ -1120,7 +1120,7 @@ void TabSpeaker::storeManualTime(gdioutput &gdi) oe->addFreePunch(itime, punch, sino, true); gdi.restore("manual", false); - gdi.addString("", 0, L"Löpare: X, kontroll: Y, kl Z#" + Name + L"#" + oPunch::getType(punch) + L"#" + oe->getAbsTime(itime)); + gdi.addString("", 0, L"Löpare: X, kontroll: Y, kl Z#" + Name + L"#" + oPunch::getType(punch) + L"#" + oe->getAbsTime(itime)); manualTimePage(gdi); } @@ -1284,7 +1284,7 @@ void TabSpeaker::importSettings(gdioutput &gdi, multimap &setti settings.find("right") == settings.end() || settings.find("top") == settings.end() || settings.find("bottom") == settings.end()) - throw meosException("Inställningarna är ogiltiga"); + throw meosException("Inställningarna är ogiltiga"); rc.left = get(settings, "left"); rc.right = get(settings, "right"); diff --git a/code/TabSpeaker.h b/code/TabSpeaker.h index d085418..82262ff 100644 --- a/code/TabSpeaker.h +++ b/code/TabSpeaker.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "tabbase.h" diff --git a/code/TabTeam.cpp b/code/TabTeam.cpp index 33fe3b4..2df6381 100644 --- a/code/TabTeam.cpp +++ b/code/TabTeam.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -284,7 +284,7 @@ bool TabTeam::save(gdioutput &gdi, bool dontReloadTeams) { wstring name=gdi.getText("Name"); if (name.empty()) { - gdi.alert("Alla lag måste ha ett namn."); + gdi.alert("Alla lag mÃ¥ste ha ett namn."); return 0; } @@ -365,7 +365,7 @@ bool TabTeam::save(gdioutput &gdi, bool dontReloadTeams) { bool readStatusIn = true; if (newClass && t->getInputStatus() != StatusNotCompetiting && t->hasInputData()) { - if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till ?")) { + if (gdi.ask(L"Vill du sätta resultatet frÃ¥n tidigare etapper till ?")) { t->resetInputData(); readStatusIn = false; } @@ -468,7 +468,7 @@ bool TabTeam::save(gdioutput &gdi, bool dontReloadTeams) { t->setTeamNoStart(true, sIn); if (t->checkValdParSetup()) { - gdi.alert("Laguppställningen hade fel, som har rättats"); + gdi.alert("Laguppställningen hade fel, som har rättats"); } if (t->getRunner(0)) @@ -569,8 +569,8 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) gdi.restore("DirectEntry", false); gdi.fillDown(); gdi.dropLine(); - gdi.addString("", boldText, "Direktanmälan"); - gdi.addString("", 0, "Du kan använda en SI-enhet för att läsa in bricknummer."); + gdi.addString("", boldText, "Direktanmälan"); + gdi.addString("", 0, "Du kan använda en SI-enhet för att läsa in bricknummer."); gdi.dropLine(0.2); int leg = bi.getExtraInt(); @@ -619,7 +619,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) pRunner old = oe->getRunnerByCardNo(card, 0, true, true); if (old && r != old) { - throw meosException(L"Brickan används av X.#" + old->getName() ); + throw meosException(L"Brickan används av X.#" + old->getName() ); } @@ -665,7 +665,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) else if (bi.id == "Browse") { const wchar_t *target = bi.getExtra(); vector< pair > ext; - ext.push_back(make_pair(L"Laguppställning", L"*.csv;*.txt")); + ext.push_back(make_pair(L"Laguppställning", L"*.csv;*.txt")); wstring fileName = gdi.browseForOpen(ext, L"csv"); if (!fileName.empty()) gdi.setText(target, fileName); @@ -691,7 +691,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) gdi.selectItemByData("ForkKey", currentKey); gdi.dropLine(0.9); - gdi.addButton("SaveKey", "Ändra", TeamCB); + gdi.addButton("SaveKey", "Ändra", TeamCB); gdi.refreshFast(); } else if (bi.id == "SaveKey") { @@ -762,14 +762,14 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) gdi.dropLine(); gdi.fillDown(); - gdi.addString("", fontMediumPlus, L"Välj löpare för sträcka X#" + pc->getLegNumber(leg)); + gdi.addString("", fontMediumPlus, L"Välj löpare för sträcka X#" + pc->getLegNumber(leg)); gdi.setData("Leg", leg); gdi.setRestorePoint("DirectEntry"); gdi.addString("", 0, "help:teamwork"); gdi.dropLine(0.5); - gdi.addButton("DirectEntry", "Direktanmälan...", TeamCB).setExtra(leg); + gdi.addButton("DirectEntry", "Direktanmälan...", TeamCB).setExtra(leg); set presented; gdi.pushX(); gdi.fillRight(); @@ -794,7 +794,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) } } } - showRunners(gdi, "Från laget", rToList, limit, usedR); + showRunners(gdi, "FrÃ¥n laget", rToList, limit, usedR); vector clsR; oe->getRunners(0, 0, clsR, true); rToList.clear(); @@ -814,7 +814,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) rToList.insert( make_pair(clsR[i]->getName(), clsR[i]->getId())); } - showRunners(gdi, "Från klassen", rToList, limit, usedR); + showRunners(gdi, "FrÃ¥n klassen", rToList, limit, usedR); rToList.clear(); for (size_t i = 0; i < clsR.size(); i++) { @@ -826,7 +826,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) continue; rToList.insert( make_pair(clsR[i]->getName(), clsR[i]->getId())); } - showRunners(gdi, "Från klubben", rToList, limit, usedR); + showRunners(gdi, "FrÃ¥n klubben", rToList, limit, usedR); } @@ -848,7 +848,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) } gdi.fillDown(); if (!otherR.empty()) { - gdi.addString("", 1, "Övriga"); + gdi.addString("", 1, "Övriga"); gdi.fillRight(); gdi.addSelection("SelectR", 250, 400, TeamCB); gdi.addButton("SelectRunner", "OK", TeamCB).setExtra(leg); @@ -880,7 +880,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) wstring name = gdi.getText("Name"); pTeam t = oe->getTeam(teamId); if (!name.empty() && t && t->getName() != name) { - if (gdi.ask(L"Vill du lägga till laget 'X'?#" + name)) { + if (gdi.ask(L"Vill du lägga till laget 'X'?#" + name)) { t = oe->addTeam(name); teamId = t->getId(); } @@ -1221,7 +1221,7 @@ void TabTeam::loadTeamMembers(gdioutput &gdi, int ClassId, int ClubId, pTeam t) if (pc->getLegRunner(i)==i) { gdi.addInput(xp + dx[0], yp, bf, L"", 18, TeamCB);//Name - gdi.addButton(xp + dx[1], yp-2, gdi.scaleLength(28), "DR" + itos(i), "<>", TeamCB, "Knyt löpare till sträckan.", false, false); // Change + gdi.addButton(xp + dx[1], yp-2, gdi.scaleLength(28), "DR" + itos(i), "<>", TeamCB, "Knyt löpare till sträckan.", false, false); // Change sprintf_s(bf_si, "SI%d", i); hasSI = true; gdi.addInput(xp + dx[2], yp, bf_si, L"", 5, TeamCB).setExtra(i); //Si @@ -1302,7 +1302,7 @@ void TabTeam::loadTeamMembers(gdioutput &gdi, int ClassId, int ClubId, pTeam t) if (hasCrs) { gdi.dropLine(0.5); gdi.setRestorePoint("ChangeKey"); - gdi.addButton("ChangeKey", "Ändra lagets gaffling", TeamCB); + gdi.addButton("ChangeKey", "Ändra lagets gaffling", TeamCB); } } gdi.refresh(); @@ -1340,7 +1340,7 @@ bool TabTeam::loadPage(gdioutput &gdi) gdi.registerEvent("SearchRunner", teamSearchCB).setKeyCommand(KC_FIND); gdi.registerEvent("SearchRunnerBack", teamSearchCB).setKeyCommand(KC_FINDBACK); - gdi.addInput("SearchText", L"", 17, teamSearchCB, L"", L"Sök på namn, bricka eller startnummer.").isEdit(false).setBgColor(colorLightCyan).ignore(true); + gdi.addInput("SearchText", L"", 17, teamSearchCB, L"", L"Sök pÃ¥ namn, bricka eller startnummer.").isEdit(false).setBgColor(colorLightCyan).ignore(true); gdi.dropLine(-0.2); gdi.addButton("ShowAll", "Visa alla", TeamCB).isEdit(false); @@ -1392,7 +1392,7 @@ bool TabTeam::loadPage(gdioutput &gdi) gdi.fillRight(); gdi.addInput("Start", L"", 8, 0, L"Starttid:"); - gdi.addInput("Finish", L"", 8, 0, L"Måltid:"); + gdi.addInput("Finish", L"", 8, 0, L"MÃ¥ltid:"); const bool timeAdjust = oe->getMeOSFeatures().hasFeature(MeOSFeatures::TimeAdjust); const bool pointAdjust = oe->getMeOSFeatures().hasFeature(MeOSFeatures::PointAdjust); @@ -1401,18 +1401,18 @@ bool TabTeam::loadPage(gdioutput &gdi) gdi.dropLine(3); gdi.popX(); if (timeAdjust) { - gdi.addInput("TimeAdjust", L"", 8, 0, L"Tidstillägg:"); + gdi.addInput("TimeAdjust", L"", 8, 0, L"Tidstillägg:"); } if (pointAdjust) { - gdi.addInput("PointAdjust", L"", 8, 0, L"Poängavdrag:"); + gdi.addInput("PointAdjust", L"", 8, 0, L"Poängavdrag:"); } } /*if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::TimeAdjust)) { - gdi.addInput("TimeAdjust", "", 5, 0, "Tidstillägg:"); + gdi.addInput("TimeAdjust", "", 5, 0, "Tidstillägg:"); } if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::PointAdjust)) { - gdi.addInput("PointAdjust", "", 5, 0, "Poängavdrag:"); + gdi.addInput("PointAdjust", "", 5, 0, "Poängavdrag:"); }*/ gdi.fillDown(); @@ -1444,7 +1444,7 @@ bool TabTeam::loadPage(gdioutput &gdi) int dx = int(gdi.getLineHeight()*0.7); int ccx = xx + dx; gdi.setCX(ccx); - gdi.addString("", 1, "Resultat från tidigare etapper"); + gdi.addString("", 1, "Resultat frÃ¥n tidigare etapper"); gdi.dropLine(0.3); gdi.fillRight(); @@ -1457,7 +1457,7 @@ bool TabTeam::loadPage(gdioutput &gdi) gdi.dropLine(3); gdi.addInput("TimeIn", L"", 5, 0, L"Tid:"); if (oe->hasRogaining()) { - gdi.addInput("PointIn", L"", 5, 0, L"Poäng:"); + gdi.addInput("PointIn", L"", 5, 0, L"Poäng:"); } gdi.dropLine(3); RECT rc; @@ -1474,7 +1474,7 @@ bool TabTeam::loadPage(gdioutput &gdi) gdi.fillRight(); gdi.addButton("Save", "Spara", TeamCB, "help:save"); gdi.disableInput("Save"); - gdi.addButton("Undo", "Ångra", TeamCB); + gdi.addButton("Undo", "Ã…ngra", TeamCB); gdi.disableInput("Undo"); gdi.popX(); @@ -1497,8 +1497,8 @@ bool TabTeam::loadPage(gdioutput &gdi) gdi.addString("", 1, "Verktyg"); gdi.dropLine(0.3); gdi.fillRight(); - gdi.addButton("ImportTeams", "Importera laguppställningar", TeamCB); - gdi.addButton("AddTeamMembers", "Skapa anonyma lagmedlemmar", TeamCB, "Fyll obesatta sträckor i alla lag med anonyma tillfälliga lagmedlemmar (N.N.)"); + gdi.addButton("ImportTeams", "Importera laguppställningar", TeamCB); + gdi.addButton("AddTeamMembers", "Skapa anonyma lagmedlemmar", TeamCB, "Fyll obesatta sträckor i alla lag med anonyma tillfälliga lagmedlemmar (N.N.)"); rc.right = gdi.getCX() + gdi.getLineHeight(); gdi.dropLine(1.5); rc.bottom = gdi.getHeight(); @@ -1523,7 +1523,7 @@ void TabTeam::fillTeamList(gdioutput &gdi) { const wstring &TabTeam::getSearchString() const { - return lang.tl(L"Sök (X)#Ctrl+F"); + return lang.tl(L"Sök (X)#Ctrl+F"); } void TabTeam::addToolbar(gdioutput &gdi) const { @@ -1531,18 +1531,18 @@ void TabTeam::addToolbar(gdioutput &gdi) const { const int button_w=gdi.scaleLength(130); gdi.addButton(2+0*button_w, 2, button_w, "FormMode", - "Formulärläge", TeamCB, "", false, true).fixedCorner(); + "Formulärläge", TeamCB, "", false, true).fixedCorner(); gdi.check("FormMode", currentMode==0); gdi.addButton(2+1*button_w, 2, button_w, "TableMode", - "Tabelläge", TeamCB, "", false, true).fixedCorner(); + "Tabelläge", TeamCB, "", false, true).fixedCorner(); gdi.check("TableMode", currentMode==1); } void TabTeam::showTeamImport(gdioutput &gdi) { gdi.clearPage(false); - gdi.addString("", boldLarge, "Importera laguppställningar"); + gdi.addString("", boldLarge, "Importera laguppställningar"); gdi.addString("", 10, "help:teamlineup"); gdi.dropLine(); @@ -1552,12 +1552,12 @@ void TabTeam::showTeamImport(gdioutput &gdi) { gdi.fillRight(); gdi.addInput("FileName", L"", 40, 0, L"Filnamn:"); gdi.dropLine(0.9); - gdi.addButton("Browse", "Bläddra", TeamCB).setExtra(L"FileName"); + gdi.addButton("Browse", "Bläddra", TeamCB).setExtra(L"FileName"); gdi.dropLine(3); gdi.popX(); gdi.fillDown(); - gdi.addCheckbox("OnlyExisting", "Använd befintliga deltagare", 0, false, - "Knyt redan anmälda deltagare till laget (identifiera genom namn och/eller bricka)"); + gdi.addCheckbox("OnlyExisting", "Använd befintliga deltagare", 0, false, + "Knyt redan anmälda deltagare till laget (identifiera genom namn och/eller bricka)"); gdi.fillRight(); gdi.addButton("DoImportTeams", "Importera", TeamCB).setDefault(); gdi.addButton("Cancel", "Avbryt", TeamCB).setCancel(); @@ -1634,8 +1634,8 @@ void TabTeam::doTeamImport(gdioutput &gdi) { gdi.dropLine(); } gdi.fillRight(); - gdi.addButton("ImportTeams", "<< Bakåt", TeamCB); - gdi.addButton("SaveTeams", "Spara laguppställningar", TeamCB).setDefault().setExtra(useExisting); + gdi.addButton("ImportTeams", "<< BakÃ¥t", TeamCB); + gdi.addButton("SaveTeams", "Spara laguppställningar", TeamCB).setDefault().setExtra(useExisting); gdi.addButton("Cancel", "Avbryt", TeamCB).setCancel(); gdi.refresh(); } @@ -1713,7 +1713,7 @@ pRunner TabTeam::findRunner(const wstring &name, int cardNo) const { void TabTeam::showAddTeamMembers(gdioutput &gdi) { gdi.clearPage(false); - gdi.addString("", boldLarge, "Tillsätt tillfälliga anonyma lagmedlemmar"); + gdi.addString("", boldLarge, "Tillsätt tillfälliga anonyma lagmedlemmar"); gdi.addString("", 10, "help:anonymous_team"); gdi.dropLine(); @@ -1722,11 +1722,11 @@ void TabTeam::showAddTeamMembers(gdioutput &gdi) { gdi.fillDown(); gdi.addInput("Name", lang.tl("N.N."), 24, 0, L"Anonymt namn:"); gdi.fillDown(); - gdi.addCheckbox("OnlyRequired", "Endast på obligatoriska sträckor", 0, true); - gdi.addCheckbox("WithFee", "Med anmälningsavgift (lagets klubb)", 0, true); + gdi.addCheckbox("OnlyRequired", "Endast pÃ¥ obligatoriska sträckor", 0, true); + gdi.addCheckbox("WithFee", "Med anmälningsavgift (lagets klubb)", 0, true); gdi.fillRight(); - gdi.addButton("DoAddTeamMembers", "Tillsätt", TeamCB).setDefault(); + gdi.addButton("DoAddTeamMembers", "Tillsätt", TeamCB).setDefault(); gdi.addButton("Cancel", "Avbryt", TeamCB).setCancel(); gdi.refresh(); @@ -1825,16 +1825,16 @@ void TabTeam::processChangeRunner(gdioutput &gdi, pTeam t, int leg, pRunner r) { } else if (oldR) { if (r->getTeam()) { - ans = gdi.askCancel(L"Vill du att X och Y byter sträcka?#" + + ans = gdi.askCancel(L"Vill du att X och Y byter sträcka?#" + r->getName() + L"#" + oldR->getName()); } else { - ans = gdi.askCancel(L"Vill du att X tar sträckan istället för Y?#" + + ans = gdi.askCancel(L"Vill du att X tar sträckan istället för Y?#" + r->getName() + L"#" + oldR->getName()); } } else { - ans = gdi.askCancel(L"Vill du att X går in i laget?#" + r->getName()); + ans = gdi.askCancel(L"Vill du att X gÃ¥r in i laget?#" + r->getName()); } if (ans == gdioutput::AnswerNo) @@ -1929,7 +1929,7 @@ bool TabTeam::warnDuplicateCard(gdioutput &gdi, string id, int cno, pRunner r, v InputInfo &cardNo = dynamic_cast(gdi.getBaseInfo(id.c_str())); if (warnCardDupl) { cardNo.setBgColor(colorLightRed); - gdi.updateToolTip(id, L"Brickan används av X.#" + warnCardDupl->getCompleteIdentification()); + gdi.updateToolTip(id, L"Brickan används av X.#" + warnCardDupl->getCompleteIdentification()); cardNo.refresh(); return warnCardDupl->getTeam() == r->getTeam(); } diff --git a/code/TabTeam.h b/code/TabTeam.h index 5fc2b98..bb07ace 100644 --- a/code/TabTeam.h +++ b/code/TabTeam.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "tabbase.h" diff --git a/code/Table.cpp b/code/Table.cpp index 694a3ad..56e5280 100644 --- a/code/Table.cpp +++ b/code/Table.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -776,7 +776,7 @@ bool Table::deleteSelection(gdioutput &gdi) { int r1, r2; getRowRange(r1, r2); if (r1 != -1 && r2 != -1 && r1<=r2) { - if (!gdi.ask(L"Vill du radera X rader från tabellen?#" + itow(r2-r1+1))) + if (!gdi.ask(L"Vill du radera X rader frÃ¥n tabellen?#" + itow(r2-r1+1))) return false; gdi.setWaitCursor(true); int failed = deleteRows(r1, r2); @@ -1979,7 +1979,7 @@ void Table::exportClipboard(gdioutput &gdi) void Table::importClipboard(gdioutput &gdi) { if (!canPaste()) - throw std::exception("Operationen stöds ej"); + throw std::exception("Operationen stöds ej"); wstring str; if (OpenClipboard(gdi.getHWNDMain()) != false) { @@ -2041,7 +2041,7 @@ void Table::importClipboard(gdioutput &gdi) tw = max(tw, table[k].size()); if (tw > columns.size()) - throw std::exception("Antalet columner i urklippet är större än antalet kolumner i tabellen."); + throw std::exception("Antalet columner i urklippet är större än antalet kolumner i tabellen."); if (upperRow == -1) { if (!gdi.ask(L"Vill du klistra in X nya rader i tabellen?#"+itow(table.size()))) @@ -2055,10 +2055,10 @@ void Table::importClipboard(gdioutput &gdi) getRowRange(row1, row2); if ( (row1 + table.size()) > sortIndex.size() ) - throw std::exception("Antalet rader i urklipp får inte plats i selektionen."); + throw std::exception("Antalet rader i urklipp fÃ¥r inte plats i selektionen."); if ( (col1 + tw) > columns.size() ) - throw std::exception("Antalet kolumner i urklipp får inte plats i selektionen."); + throw std::exception("Antalet kolumner i urklipp fÃ¥r inte plats i selektionen."); bool wrongSize = false; @@ -2149,7 +2149,7 @@ void Table::importClipboard(gdioutput &gdi) int Table::deleteRows(int row1, int row2) { if (!canDelete()) - throw std::exception("Operationen stöds ej"); + throw std::exception("Operationen stöds ej"); int failed = 0; for (size_t k = row1; k<=size_t(row2); k++) { @@ -2173,7 +2173,7 @@ int Table::deleteRows(int row1, int row2) void Table::insertRow(gdioutput &gdi) { if (!canInsert()) - throw std::exception("Operationen stöds ej"); + throw std::exception("Operationen stöds ej"); TableUpdateInfo tui; tui.doAdd = true; @@ -2284,7 +2284,7 @@ void Table::autoSelectColumns() { if (nonEmpty > 1) { columns.clear(); wstring id = lang.tl("Id"); - wstring mod = lang.tl("Ändrad"); + wstring mod = lang.tl("Ändrad"); for (size_t k = 0; k. Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TimeStamp.cpp b/code/TimeStamp.cpp index 7249a9f..e65ec82 100644 --- a/code/TimeStamp.cpp +++ b/code/TimeStamp.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/TimeStamp.h b/code/TimeStamp.h index 016ab1f..48a4ac1 100644 --- a/code/TimeStamp.h +++ b/code/TimeStamp.h @@ -1,4 +1,4 @@ -// TimeStamp.h: interface for the TimeStamp class. +// TimeStamp.h: interface for the TimeStamp class. // ////////////////////////////////////////////////////////////////////// @@ -26,7 +26,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/animationdata.cpp b/code/animationdata.cpp index 1a15a7f..37107ab 100644 --- a/code/animationdata.cpp +++ b/code/animationdata.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/animationdata.h b/code/animationdata.h index 7909c35..198ce73 100644 --- a/code/animationdata.h +++ b/code/animationdata.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/autocomplete.cpp b/code/autocomplete.cpp index 35bd819..72fb40c 100644 --- a/code/autocomplete.cpp +++ b/code/autocomplete.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/autocomplete.h b/code/autocomplete.h index 5c896a4..a821ecd 100644 --- a/code/autocomplete.h +++ b/code/autocomplete.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include "gdioutput.h" diff --git a/code/autocompletehandler.h b/code/autocompletehandler.h index db3d911..7363a40 100644 --- a/code/autocompletehandler.h +++ b/code/autocompletehandler.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once class AutoCompleteInfo; class gdioutput; diff --git a/code/autotask.cpp b/code/autotask.cpp index 00c0f2e..27177e8 100644 --- a/code/autotask.cpp +++ b/code/autotask.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -74,14 +74,14 @@ void AutoTask::autoSave() { msg = gdi.widen(ex.what()); } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) { gdi.alert(msg); } else - gdi.addInfoBox("", L"Tävlingsdata har sparats.", 10); + gdi.addInfoBox("", L"Tävlingsdata har sparats.", 10); gdi.setWaitCursor(false); @@ -127,7 +127,7 @@ void AutoTask::interfaceTimeout(const vector &windows) { msg = gdi.widen(ex.what()); } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) { gdi.alert(msg); @@ -279,7 +279,7 @@ bool AutoTask::synchronizeImpl(const vector &windows) { msg = gdi.widen(ex.what()); } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } } } @@ -298,7 +298,7 @@ bool AutoTask::synchronizeImpl(const vector &windows) { msg = gdi.widen(ex.what()); } catch (...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } currentRevision = oe.getRevision(); diff --git a/code/autotask.h b/code/autotask.h index d4f1763..1621d38 100644 --- a/code/autotask.h +++ b/code/autotask.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/classconfiginfo.cpp b/code/classconfiginfo.cpp index edbadcc..c135008 100644 --- a/code/classconfiginfo.cpp +++ b/code/classconfiginfo.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" diff --git a/code/classconfiginfo.h b/code/classconfiginfo.h index c895c7a..e25f08e 100644 --- a/code/classconfiginfo.h +++ b/code/classconfiginfo.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/csvparser.cpp b/code/csvparser.cpp index 46dcaa4..afc70de 100644 --- a/code/csvparser.cpp +++ b/code/csvparser.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -564,7 +564,7 @@ bool csvparser::importOCAD_CSV(oEvent &event, const wstring &file, bool addClass } if (wtoi(sp[firstIndex])<30 || wtoi(sp[firstIndex])>1000) { - wstring str = L"Ogiltig banfil. Kontroll förväntad på position X, men hittade 'Y'.#" + wstring str = L"Ogiltig banfil. Kontroll förväntad pÃ¥ position X, men hittade 'Y'.#" + itow(firstIndex+1) + L"#" + sp[firstIndex]; throw meosException(str.c_str()); } @@ -625,7 +625,7 @@ bool csvparser::importOCAD_CSV(oEvent &event, const wstring &file, bool addClass if (ctrl >= 30 && ctrl < 1000) pc->addControl(wtoi(sp[k])); else { - wstring str = L"Oväntad kontroll 'X' i bana Y.#" + ctrlStr + L"#" + pc->getName(); + wstring str = L"Oväntad kontroll 'X' i bana Y.#" + ctrlStr + L"#" + pc->getName(); throw meosException(str); } } @@ -1155,110 +1155,12 @@ bool csvparser::importCards(const oEvent &oe, const wstring &file, vector > &data) { - data.clear(); - - fin.open(file); - const size_t bf_size = 4096; - char bf[4096]; - if (!fin.good()) - throw meosException("Failed to read file"); - - bool isUTF8 = false; - bool isUnicode = false; - bool firstLine = true; - wstring wideString; - vector sp; - - while(!fin.eof()) { - memset(bf, 0, bf_size); - fin.getline(bf, bf_size); - if (firstLine) { - if (bf[0] == -17 && bf[1] == -69 && bf[2] == -65) { - isUTF8 = true; - for (int k = 0; k 0) { - int untranslated; - WideCharToMultiByte(CP_ACP, 0, wideString.c_str(), wideString.length(), bf, bf_size-2, "?", &untranslated); - bf[wideString.length()-1] = 0; - } - else { - bf[0] = 0; - } - } - - firstLine = false; - split(bf, sp); - - if (!sp.empty()) { - data.push_back(vector()); - data.back().resize(sp.size()); - for (size_t k = 0; k < sp.size(); k++) { - data.back()[k] = sp[k]; - } - } - } - - if (isUTF8) { - list< vector > dataCopy; - for (list< vector >::iterator it = data.begin(); it != data.end(); ++it) { - vector &de = *it; - dataCopy.push_back(vector()); - vector &out = dataCopy.back(); - - wchar_t buff[buff_pre_alloc]; - char outstr[buff_pre_alloc]; - for (size_t k = 0; k < de.size(); k++) { - if (de[k].empty()) { - out.push_back(""); - continue; - } - int len = de[k].size(); - len = min(min(len+1, 1024), buff_pre_alloc-10); - - int wlen = MultiByteToWideChar(CP_UTF8, 0, de[k].c_str(), len, buff, buff_pre_alloc); - buff[wlen-1] = 0; - - BOOL untranslated = false; - WideCharToMultiByte(CP_ACP, 0, buff, wlen, outstr, buff_pre_alloc, "?", &untranslated); - outstr[wlen-1] = 0; - out.push_back(outstr); - } - } - data.swap(dataCopy); - } - - fin.close(); -}*/ - void csvparser::parseUnicode(const wstring &file, list< vector > &data) { fin.open(file, ifstream::in | ifstream::binary); fin.seekg(0, ios_base::end); - size_t len = int(fin.tellg())-2; - if (len == 0) + int len = int(fin.tellg())-2; + if (len <= 0) return; fin.seekg(2); // BOM assert(len % 2 == 0); @@ -1266,7 +1168,7 @@ void csvparser::parseUnicode(const wstring &file, list< vector > &data) fin.read((char *)&bf[0], len); vector rows; int spp = 0; - for (size_t k = 0; k < len / 2; k++) { + for (int k = 0; k < len / 2; k++) { if (bf[spp] == '\r') spp++; if (bf[k] == '\n') { @@ -1278,7 +1180,7 @@ void csvparser::parseUnicode(const wstring &file, list< vector > &data) rows.push_back(r); } } - if (size_t(spp + 1) < len / 2) { + if (spp + 1 < len / 2) { wstring r = &bf[spp]; rows.push_back(r); } @@ -1303,7 +1205,7 @@ void csvparser::parse(const wstring &file, list< vector > &data) { fin.open(file); fin.seekg(0, ios_base::end); - auto len = fin.tellg(); + auto flen = fin.tellg(); fin.seekg(0); string rbf; @@ -1315,7 +1217,7 @@ void csvparser::parse(const wstring &file, list< vector > &data) { bool firstLine = true; vector sp; vector wbf_a; - wbf_a.resize(size_t(len)); + wbf_a.resize(size_t(flen)+1); wchar_t *wbf = &wbf_a[0]; wstring w; while(std::getline(fin, rbf)) { @@ -1358,6 +1260,43 @@ void csvparser::parse(const wstring &file, list< vector > &data) { fin.close(); } +void csvparser::convertUTF(const wstring &file) { + ifstream fin; + fin.open(file); + string rbf; + + if (!fin.good()) + throw meosException("Failed to read file"); + + bool isUTF8 = false; + bool firstLine = true; + wstring w; + vector out; + while (std::getline(fin, rbf)) { + const char *bf = rbf.c_str(); + if (firstLine) { + if (rbf.length() > 3 && rbf[0] == -17 && rbf[1] == -69 && rbf[2] == -65) { + isUTF8 = true; + bf += 3; + return; // Done + } + } + w = gdi_main->recodeToWide(bf); + out.push_back(gdi_main->toUTF8(w)); + } + + fin.close(); + _wrename(file.c_str(), (file + L"_").c_str()); + + ofstream fout; + fout.open(file); + fout.put(-17); + fout.put(-69); + fout.put(-65); + for (string &line : out) + fout << line << endl; +} + void csvparser::importTeamLineup(const wstring &file, const map &classNameToNumber, vector &teams) { @@ -1372,13 +1311,13 @@ void csvparser::importTeamLineup(const wstring &file, if (!line.empty()) { if (membersToRead == 0) { if (line.size() < 2 || line.size() > 3) - throw meosException(L"Ogiltigt lag på rad X.#" + itow(lineNo) + L": " + line[0]); + throw meosException(L"Ogiltigt lag pÃ¥ rad X.#" + itow(lineNo) + L": " + line[0]); const wstring cls = trim(line[0]); map::const_iterator res = classNameToNumber.find(cls); if (res == classNameToNumber.end()) - throw meosException(L"Okänd klass på rad X.#" + itow(lineNo) + L": " + cls); + throw meosException(L"Okänd klass pÃ¥ rad X.#" + itow(lineNo) + L": " + cls); if (res->second <= 1) - throw meosException(L"Klassen X är individuell.#" + cls); + throw meosException(L"Klassen X är individuell.#" + cls); membersToRead = res->second; teams.push_back(TeamLineup()); diff --git a/code/csvparser.h b/code/csvparser.h index e55cddb..9caba9c 100644 --- a/code/csvparser.h +++ b/code/csvparser.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -107,7 +107,9 @@ protected: wstring &processedTime, wstring &date); public: - //void parse(const wstring &file, list< vector > &dataOutput); + + static void convertUTF(const wstring &file); + void parse(const wstring &file, list< vector > &dataOutput); void importTeamLineup(const wstring &file, diff --git a/code/download.cpp b/code/download.cpp index c54c28f..678c3dd 100644 --- a/code/download.cpp +++ b/code/download.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -182,13 +182,13 @@ void Download::downloadFile(const wstring &url, const wstring &file, const vecto sprintf_s(bf, "HTTP Error 401: The requested resource requires user authentication."); break; case HTTP_STATUS_FORBIDDEN: - sprintf_s(bf, "HTTP Error 403: Åtkomst nekad (access is denied)."); + sprintf_s(bf, "HTTP Error 403: Ã…tkomst nekad (access is denied)."); break; case HTTP_STATUS_NOT_FOUND: sprintf_s(bf, "HTTP Error 404: Resursen kunde ej hittas (not found)."); break; case HTTP_STATUS_NOT_SUPPORTED: - sprintf_s(bf, "HTTP Error 501: Förfrågan stöds ej (not supported)."); + sprintf_s(bf, "HTTP Error 501: FörfrÃ¥gan stöds ej (not supported)."); break; case HTTP_STATUS_SERVER_ERROR: sprintf_s(bf, "HTTP Error 500: Internt serverfel (server error)."); @@ -310,7 +310,7 @@ void Download::postFile(const wstring &url, const wstring &file, const wstring & wstring error = errorCode != 0 ? getErrorMessage(errorCode) : L""; if (error.empty()) - error = L"Ett okänt fel inträffade."; + error = L"Ett okänt fel inträffade."; throw meosException(error); } } @@ -425,13 +425,13 @@ bool Download::httpSendReqEx(HINTERNET hConnect, const wstring &dest, sprintf_s(bf, "HTTP Error 401: The requested resource requires user authentication."); break; case HTTP_STATUS_FORBIDDEN: - sprintf_s(bf, "HTTP Error 403: Åtkomst nekad (access is denied)."); + sprintf_s(bf, "HTTP Error 403: Ã…tkomst nekad (access is denied)."); break; case HTTP_STATUS_NOT_FOUND: sprintf_s(bf, "HTTP Error 404: Resursen kunde ej hittas (not found)."); break; case HTTP_STATUS_NOT_SUPPORTED: - sprintf_s(bf, "HTTP Error 501: Förfrågan stöds ej (not supported)."); + sprintf_s(bf, "HTTP Error 501: FörfrÃ¥gan stöds ej (not supported)."); break; case HTTP_STATUS_SERVER_ERROR: sprintf_s(bf, "HTTP Error 500: Internt serverfel (server error)."); diff --git a/code/download.h b/code/download.h index f538253..27f6f72 100644 --- a/code/download.h +++ b/code/download.h @@ -1,4 +1,4 @@ -// Download.h: interface for the Download class. +// Download.h: interface for the Download class. // ////////////////////////////////////////////////////////////////////// @@ -23,7 +23,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/gdiconstants.h b/code/gdiconstants.h index 860fbb5..44ab1fc 100644 --- a/code/gdiconstants.h +++ b/code/gdiconstants.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/gdifonts.h b/code/gdifonts.h index 6a8f359..e3c3b73 100644 --- a/code/gdifonts.h +++ b/code/gdifonts.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2012 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/gdiimpl.h b/code/gdiimpl.h index da3d076..576b60a 100644 --- a/code/gdiimpl.h +++ b/code/gdiimpl.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/gdioutput.cpp b/code/gdioutput.cpp index 5210b8a..1a0b9cf 100644 --- a/code/gdioutput.cpp +++ b/code/gdioutput.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -174,7 +174,7 @@ void gdioutput::constructor(double _scale) void gdioutput::setFont(int size, const wstring &font) { //setEncoding(enc); - double s = 1+size*sqrt(double(size))*0.2; + double s = 1 + double(size)*0.25;// 1 + size * sqrt(double(size))*0.2; initCommon(s, font); } @@ -759,7 +759,7 @@ void CALLBACK gdiTimerProc(HWND hWnd, UINT a, UINT_PTR ptr, DWORD b) { catch(std::exception &ex) { string2Wide(ex.what(), msg); if (msg.empty()) - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } catch(...) { msg = L"Unexpected error"; @@ -1960,10 +1960,10 @@ LRESULT gdioutput::ProcessMsg(UINT iMessage, LPARAM lParam, WPARAM wParam) catch(std::exception &ex) { msg=widen(ex.what()); if (msg.empty()) - msg=L"Ett okänt fel inträffade."; + msg=L"Ett okänt fel inträffade."; } catch(...) { - msg=L"Ett okänt fel inträffade."; + msg=L"Ett okänt fel inträffade."; } if (!msg.empty()) { @@ -2170,10 +2170,10 @@ void gdioutput::keyCommand(KeyCommandCode code) { catch(std::exception &ex) { msg = widen(ex.what()); if (msg.empty()) - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) @@ -2704,10 +2704,10 @@ void gdioutput::enter() catch(std::exception &ex) { msg = widen(ex.what()); if (msg.empty()) - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) @@ -2764,10 +2764,10 @@ bool gdioutput::upDown(int direction) catch(std::exception &ex) { msg = widen(ex.what()); if (msg.empty()) - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) @@ -2806,10 +2806,10 @@ void gdioutput::escape() catch(std::exception &ex) { msg = widen(ex.what()); if (msg.empty()) - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) @@ -5548,9 +5548,9 @@ void gdioutput::tableCB(ButtonInfo &bu, Table *t) restore("tblRestore"); int ybase = Tables.back().yp; - addString("", ybase, 20, boldLarge, "Välj kolumner"); + addString("", ybase, 20, boldLarge, "Välj kolumner"); ybase += scaleLength(30); - addString("", ybase, 20, 0, L"Välj kolumner för tabellen X.#"+ t->getTableName()); + addString("", ybase, 20, 0, L"Välj kolumner för tabellen X.#"+ t->getTableName()); ybase += getLineHeight()*2; addListBox(20, ybase, "tblColSel", 180, 450, 0, L"", L"", true); @@ -5565,9 +5565,9 @@ void gdioutput::tableCB(ButtonInfo &bu, Table *t) } setSelection("tblColSel", sel); int xp = scaleLength(220); - addButton(xp, ybase+btnHeight*0, "tblAll", "Välj allt", gdiTableCB); - addButton(xp, ybase+btnHeight*1, "tblNone", "Välj inget", gdiTableCB); - addButton(xp, ybase+btnHeight*2, "tblAuto", "Välj automatiskt", gdiTableCB).setExtra(t->getTableId()); + addButton(xp, ybase+btnHeight*0, "tblAll", "Välj allt", gdiTableCB); + addButton(xp, ybase+btnHeight*1, "tblNone", "Välj inget", gdiTableCB); + addButton(xp, ybase+btnHeight*2, "tblAuto", "Välj automatiskt", gdiTableCB).setExtra(t->getTableId()); addButton(xp, ybase+btnHeight*4, "tblOK", "OK", gdiTableCB).setExtra(t->getTableId()); addButton(xp, ybase+btnHeight*5, "tblCancel", "Avbryt", gdiTableCB); @@ -5654,17 +5654,17 @@ void gdioutput::enableTables() string tname = string("table") + itos(t->canDelete()) + itos(t->canInsert()) + itos(t->canPaste()); if (!toolbar->isLoaded(tname)) { toolbar->reset(); - toolbar->addButton("tblColumns", 1, 2, "Välj vilka kolumner du vill visa"); + toolbar->addButton("tblColumns", 1, 2, "Välj vilka kolumner du vill visa"); toolbar->addButton("tblPrint", 0, STD_PRINT, "Skriv ut tabellen (X)#Ctrl+P"); - toolbar->addButton("tblUpdate", 1, 0, "Uppdatera alla värden i tabellen (X)#F5"); - toolbar->addButton("tblReset", 1, 4, "Återställ tabeldesignen och visa allt"); + toolbar->addButton("tblUpdate", 1, 0, "Uppdatera alla värden i tabellen (X)#F5"); + toolbar->addButton("tblReset", 1, 4, "Ã…terställ tabeldesignen och visa allt"); toolbar->addButton("tblCopy", 0, STD_COPY, "Kopiera selektionen till urklipp (X)#Ctrl+C"); if (t->canPaste()) - toolbar->addButton("tblPaste", 0, STD_PASTE, "Klistra in data från urklipp (X)#Ctrl+V"); + toolbar->addButton("tblPaste", 0, STD_PASTE, "Klistra in data frÃ¥n urklipp (X)#Ctrl+V"); if (t->canDelete()) - toolbar->addButton("tblRemove", 1, 1, "Ta bort valda rader från tabellen (X)#Del"); + toolbar->addButton("tblRemove", 1, 1, "Ta bort valda rader frÃ¥n tabellen (X)#Del"); if (t->canInsert()) - toolbar->addButton("tblInsert", 1, 3, "Lägg till en ny rad i tabellen (X)#Ctrl+I"); + toolbar->addButton("tblInsert", 1, 3, "Lägg till en ny rad i tabellen (X)#Ctrl+I"); toolbar->createToolbar(tname, L"Tabellverktyg"); } else { @@ -5695,10 +5695,10 @@ void gdioutput::processToolbarMessage(const string &id, void *data) { catch(std::exception &ex) { msg = widen(ex.what()); if (msg.empty()) - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } catch(...) { - msg = L"Ett okänt fel inträffade."; + msg = L"Ett okänt fel inträffade."; } if (!msg.empty()) diff --git a/code/gdioutput.h b/code/gdioutput.h index 2997051..2cca323 100644 --- a/code/gdioutput.h +++ b/code/gdioutput.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/gdistructures.h b/code/gdistructures.h index a33f49b..74d47d9 100644 --- a/code/gdistructures.h +++ b/code/gdistructures.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/generalresult.cpp b/code/generalresult.cpp index 9f861d0..4876659 100644 --- a/code/generalresult.cpp +++ b/code/generalresult.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" diff --git a/code/generalresult.h b/code/generalresult.h index 1d56448..b89dd03 100644 --- a/code/generalresult.h +++ b/code/generalresult.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/guihandler.h b/code/guihandler.h index ded74ab..3d23e25 100644 --- a/code/guihandler.h +++ b/code/guihandler.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/image.cpp b/code/image.cpp index feec954..29548bc 100644 --- a/code/image.cpp +++ b/code/image.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "image.h" #include "png/png.h" #include diff --git a/code/image.h b/code/image.h index 490c0b1..9f2bae9 100644 --- a/code/image.h +++ b/code/image.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include diff --git a/code/importformats.cpp b/code/importformats.cpp index f3d55e5..7893ce2 100644 --- a/code/importformats.cpp +++ b/code/importformats.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -38,7 +38,7 @@ void ImportFormats::getImportFormats(vector< pair > &formats) { } int ImportFormats::getDefault(oEvent &oe) { - return oe.getPropertyString("Language", "English") == "Français" ? FrenchFederationMapping : Default; + return oe.getPropertyString("Language", "English") == "Français" ? FrenchFederationMapping : Default; } */ void ImportFormats::getExportFormats(vector< pair > &types, bool exportFilter) { @@ -85,7 +85,7 @@ void ImportFormats::getOECSVLanguage(vector< pair > &typeLangua typeLanguages.push_back(make_pair(L"Svenska", 2)); typeLanguages.push_back(make_pair(L"Deutsch", 3)); typeLanguages.push_back(make_pair(L"Dansk", 4)); - typeLanguages.push_back(make_pair(L"Français", 5)); + typeLanguages.push_back(make_pair(L"Français", 5)); typeLanguages.push_back(make_pair(L"Russian", 6)); } @@ -101,7 +101,7 @@ int ImportFormats::getDefaultCSVLanguage(oEvent &oe) { defaultLanguageType = 3; else if (currentLanguage == "Dansk") defaultLanguageType = 4; - else if (currentLanguage == "Français") + else if (currentLanguage == "Français") defaultLanguageType = 5; else if (currentLanguage == "Russian(ISO 8859 - 5)") defaultLanguageType = 6; diff --git a/code/importformats.h b/code/importformats.h index d01d8f1..7b1fa82 100644 --- a/code/importformats.h +++ b/code/importformats.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2017 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/infoserver.cpp b/code/infoserver.cpp index ba2ce74..c4b4862 100644 --- a/code/infoserver.cpp +++ b/code/infoserver.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/infoserver.h b/code/infoserver.h index 942e77b..d762cc4 100644 --- a/code/infoserver.h +++ b/code/infoserver.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/inthashmap.h b/code/inthashmap.h index 6add57a..4c4be99 100644 --- a/code/inthashmap.h +++ b/code/inthashmap.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/iof30interface.cpp b/code/iof30interface.cpp index d89042a..0614252 100644 --- a/code/iof30interface.cpp +++ b/code/iof30interface.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -50,7 +50,7 @@ void IOF30Interface::readCourseData(gdioutput &gdi, const xmlobject &xo, bool up string ver; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); courseCount = 0; failed = 0; xmlList xl; @@ -70,7 +70,7 @@ void IOF30Interface::readCourseData(gdioutput &gdi, const xmlobject &xo, bool up } } if (ix == -1) - throw meosException("Filen innehåller flera uppsättningar banor, men ingen har samma etappnummer som denna etapp (X).#" + itos(nr)); + throw meosException("Filen innehÃ¥ller flera uppsättningar banor, men ingen har samma etappnummer som denna etapp (X).#" + itos(nr)); else xRaceCourses = xl[ix]; } @@ -91,7 +91,7 @@ void IOF30Interface::readCourseData(gdioutput &gdi, const xmlobject &xo, bool up if (pc) { courseCount++; if (courses.count(pc->getName())) - gdi.addString("", 0, L"Varning: Banan 'X' förekommer flera gånger#" + pc->getName()); + gdi.addString("", 0, L"Varning: Banan 'X' förekommer flera gÃ¥nger#" + pc->getName()); courses[pc->getName()] = pc; @@ -460,7 +460,7 @@ void IOF30Interface::assignTeamCourse(gdioutput &gdi, oTeam &team, xmlList &xAss } } else - gdi.addString("", 0, L"Bantilldelning för 'X' hänvisar till en sträcka som inte finns#" + team.getClass(false)).setColor(colorRed); + gdi.addString("", 0, L"Bantilldelning för 'X' hänvisar till en sträcka som inte finns#" + team.getClass(false)).setColor(colorRed); } else { wstring name; @@ -683,7 +683,7 @@ void IOF30Interface::readCompetitorList(gdioutput &gdi, const xmlobject &xo, int string ver; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); xmlList xl; xo.getObjects(xl); @@ -705,7 +705,7 @@ void IOF30Interface::readClubList(gdioutput &gdi, const xmlobject &xo, int &club string ver; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); xmlList xl; xo.getObjects(xl); @@ -741,7 +741,7 @@ void IOF30Interface::readEntryList(gdioutput &gdi, xmlobject &xo, bool removeNon entRemoved = 0; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); xmlobject xEvent = xo.getObject("Event"); map > teamClassConfig; @@ -969,7 +969,7 @@ void IOF30Interface::readStartList(gdioutput &gdi, xmlobject &xo, int &entRead, string ver; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); map > teamClassConfig; @@ -1075,7 +1075,7 @@ void IOF30Interface::readClassList(gdioutput &gdi, xmlobject &xo, int &entRead, string ver; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); map > teamClassConfig; @@ -1113,7 +1113,7 @@ void IOF30Interface::readEventList(gdioutput &gdi, xmlobject &xo) { string ver; xo.getObjectString("iofVersion", ver); if (!ver.empty() && ver > "3.0") - gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); + gdi.addString("", 0, "Varning, okänd XML-version X#" + ver); xmlList xl; xo.getObjects(xl); @@ -3388,9 +3388,9 @@ bool IOF30Interface::readControl(const xmlobject &xControl) { if (num == 0 && finish.length()>0) num = int(finish[finish.length()-1])-'0'; if (num > 0 && num<10) - finish = lang.tl(L"Mål ") + itow(num); + finish = lang.tl(L"MÃ¥l ") + itow(num); else - finish = lang.tl(L"Mål"); + finish = lang.tl(L"MÃ¥l"); pc = oe.getControl(getFinishIndex(num), true); pc->setNumbers(L""); pc->setName(finish); diff --git a/code/iof30interface.h b/code/iof30interface.h index 7f34ba8..6a270ee 100644 --- a/code/iof30interface.h +++ b/code/iof30interface.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/listeditor.cpp b/code/listeditor.cpp index 5163bf0..695c3f9 100644 --- a/code/listeditor.cpp +++ b/code/listeditor.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" @@ -100,8 +100,8 @@ void ListEditor::show(gdioutput &gdi) { gdi.addButton("EditList", "Egenskaper", editListCB); gdi.setCX(gdi.getCX() + gdi.scaleLength(32)); - gdi.addButton("OpenFile", "Öppna fil", editListCB); - gdi.addButton("OpenInside", "Öppna från aktuell tävling", editListCB); + gdi.addButton("OpenFile", "Öppna fil", editListCB); + gdi.addButton("OpenInside", "Öppna frÃ¥n aktuell tävling", editListCB); if (savedFileName.empty()) gdi.addButton("SaveFile", "Spara som fil", editListCB); @@ -110,11 +110,11 @@ void ListEditor::show(gdioutput &gdi) { gdi.addButton("SaveFileCopy", "Spara som...", editListCB); } - gdi.addButton("SaveInside", "Spara i aktuell tävling", editListCB); + gdi.addButton("SaveInside", "Spara i aktuell tävling", editListCB); gdi.addButton("NewList", "Ny lista", editListCB); - gdi.addButton("RemoveInside", "Radera", editListCB, "Radera listan från aktuell tävling"); + gdi.addButton("RemoveInside", "Radera", editListCB, "Radera listan frÃ¥n aktuell tävling"); gdi.setInputStatus("RemoveInside", currentIndex != -1); - gdi.addButton("Close", "Stäng", editListCB); + gdi.addButton("Close", "Stäng", editListCB); gdi.dropLine(2); @@ -160,7 +160,7 @@ void ListEditor::show(gdioutput &gdi) { gdi.dropLine(buttonDrop); } gdi.fillDown(); - gdi.addButton("AddLine0", "Lägg till rad", editListCB); + gdi.addButton("AddLine0", "Lägg till rad", editListCB); gdi.dropLine(0.5); gdi.addString("", 1, "Underrubrik"); @@ -174,7 +174,7 @@ void ListEditor::show(gdioutput &gdi) { gdi.dropLine(buttonDrop); } gdi.fillDown(); - gdi.addButton("AddLine1", "Lägg till rad", editListCB); + gdi.addButton("AddLine1", "Lägg till rad", editListCB); gdi.dropLine(0.5); gdi.addString("", 1, "Huvudlista"); @@ -188,7 +188,7 @@ void ListEditor::show(gdioutput &gdi) { gdi.dropLine(buttonDrop); } gdi.fillDown(); - gdi.addButton("AddLine2", "Lägg till rad", editListCB); + gdi.addButton("AddLine2", "Lägg till rad", editListCB); gdi.dropLine(0.5); gdi.addString("", 1, "Underlista"); @@ -202,7 +202,7 @@ void ListEditor::show(gdioutput &gdi) { gdi.dropLine(buttonDrop); } gdi.fillDown(); - gdi.addButton("AddLine3", "Lägg till rad", editListCB); + gdi.addButton("AddLine3", "Lägg till rad", editListCB); gdi.setRestorePoint("EditList"); @@ -256,7 +256,7 @@ void ListEditor::showLine(gdioutput &gdi, const vector &line, int addButton(gdi, line[k], gdi.getCX(), gdi.getCY(), ix, k); } - gdi.addButton("AddPost" + itos(ix), "Lägg till ny", editListCB); + gdi.addButton("AddPost" + itos(ix), "Lägg till ny", editListCB); } ButtonInfo &ListEditor::addButton(gdioutput &gdi, const MetaListPost &mlp, int x, int y, int lineIx, int ix) const { @@ -414,7 +414,7 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { wstring str = gdi.getText("Text"); if (ptype != lString) { if (!str.empty() && str.find_first_of('X') == string::npos && str[0]!='@') { - throw meosException("Texten ska innehålla tecknet X, som byts ut mot tävlingsspecifik data"); + throw meosException("Texten ska innehÃ¥lla tecknet X, som byts ut mot tävlingsspecifik data"); } } @@ -440,12 +440,12 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { if (newType == lResultModuleNumber || newType == lResultModuleTime || newType == lResultModuleNumberTeam || newType == lResultModuleTimeTeam) { if (leg < 0 || leg > 1000) - throw meosException("X är inget giltigt index#" + itos(leg)); + throw meosException("X är inget giltigt index#" + itos(leg)); mlp.setLeg(leg); } else { if (leg < 1 || leg > 1000) - throw meosException("X är inget giltigt sträcknummer#" + itos(leg)); + throw meosException("X är inget giltigt sträcknummer#" + itos(leg)); mlp.setLeg(leg - 1); } } @@ -623,13 +623,13 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { reverse(lists.begin(), lists.end()); gdi.fillRight(); - gdi.addSelection("OpenList", 250, 400, editListCB, L"Välj lista:"); + gdi.addSelection("OpenList", 250, 400, editListCB, L"Välj lista:"); gdi.addItem("OpenList", lists); gdi.selectFirstItem("OpenList"); gdi.dropLine(); - gdi.addButton("DoOpen", "Öppna", editListCB); + gdi.addButton("DoOpen", "Öppna", editListCB); gdi.addButton("DoOpenCopy", "Open a Copy", editListCB); enableOpen(gdi); @@ -687,7 +687,7 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { if (lastSaved == SavedInside) lastSaved = NotSaved; - gdi.alert("Listan togs bort från tävlingen."); + gdi.alert("Listan togs bort frÃ¥n tävlingen."); makeDirty(gdi, MakeDirty, NoTouch); gdi.setInputStatus("RemoveInside", false); } @@ -816,8 +816,8 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.addString("", boldLarge, "Listpost").setColor(colorDarkGrey); gdi.setCX(gdi.getCX() + gdi.scaleLength(20)); - gdi.addButton("MoveLeft", "<< Flytta vänster", editListCB); - gdi.addButton("MoveRight", "Flytta höger >>", editListCB); + gdi.addButton("MoveLeft", "<< Flytta vänster", editListCB); + gdi.addButton("MoveRight", "Flytta höger >>", editListCB); gdi.dropLine(3); gdi.popX(); @@ -846,7 +846,7 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.addSelection("Type", 290, 500, editListCB, L"Typ:"); gdi.addItem("Type", types); gdi.selectItemByData("Type", currentType); - gdi.addInput("Text", mlp.getText(), 16, 0, L"Egen text:", L"Använd symbolen X där MeOS ska fylla i typens data."); + gdi.addInput("Text", mlp.getText(), 16, 0, L"Egen text:", L"Använd symbolen X där MeOS ska fylla i typens data."); int boxX = gdi.getCX(); gdi.popX(); gdi.fillRight(); @@ -895,7 +895,7 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.dropLine(2); if (ix>0) { gdi.popX(); - gdi.addCheckbox("MergeText", "Slå ihop text med föregående", 0, mlp.isMergePrevious()); + gdi.addCheckbox("MergeText", "SlÃ¥ ihop text med föregÃ¥ende", 0, mlp.isMergePrevious()); gdi.dropLine(2); } int maxY = gdi.getCY(); @@ -922,15 +922,15 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.dropLine(3); gdi.addSelection("TextAdjust", 150, 100, 0, L"Textjustering:"); - gdi.addItem("TextAdjust", lang.tl("Vänster"), 0); - gdi.addItem("TextAdjust", lang.tl("Höger"), textRight); + gdi.addItem("TextAdjust", lang.tl("Vänster"), 0); + gdi.addItem("TextAdjust", lang.tl("Höger"), textRight); gdi.addItem("TextAdjust", lang.tl("Centrera"), textCenter); gdi.selectItemByData("TextAdjust", mlp.getTextAdjustNum()); //gdi.popX(); //gdi.dropLine(2); gdi.dropLine(); - gdi.addButton("Color", "Färg...", editListCB).setExtra(mlp.getColorValue()); + gdi.addButton("Color", "Färg...", editListCB).setExtra(mlp.getColorValue()); maxX = max(maxX, gdi.getCX()); @@ -970,7 +970,7 @@ const wchar_t *ListEditor::getIndexDescription(EPostType type) { else if (type == lResultModuleNumber || type == lResultModuleNumberTeam) return L"Index in X[index]#OutputNumbers"; else - return L"Applicera för specifik sträcka:"; + return L"Applicera för specifik sträcka:"; } void ListEditor::editListProp(gdioutput &gdi, bool newList) { @@ -1022,7 +1022,7 @@ void ListEditor::editListProp(gdioutput &gdi, bool newList) { gdi.autoGrow("BaseType"); list.getResultModule(*oe, types, currentType); - gdi.addSelection("ResultType", 150, 400, editListCB, L"Resultatuträkning:"); + gdi.addSelection("ResultType", 150, 400, editListCB, L"Resultatuträkning:"); gdi.addItem("ResultType", types); gdi.autoGrow("ResultType"); gdi.selectItemByData("ResultType", currentType); @@ -1035,7 +1035,7 @@ void ListEditor::editListProp(gdioutput &gdi, bool newList) { gdi.selectItemByData("SortOrder", currentType); list.getSubType(types, currentType); - gdi.addSelection("SubType", 150, 400, editListCB, L"Sekundär typ:"); + gdi.addSelection("SubType", 150, 400, editListCB, L"Sekundär typ:"); gdi.addItem("SubType", types); gdi.selectItemByData("SubType", currentType); oListInfo::EBaseType subType = oListInfo::EBaseType(currentType); @@ -1117,9 +1117,9 @@ void ListEditor::editListProp(gdioutput &gdi, bool newList) { gdi.setCX(gdi.getCX()+20); int f = list.getFontFaceFactor(k); wstring ff = f == 0 ? L"100 %" : itow(f) + L" %"; - gdi.addInput("FontFactor" + itos(k), ff, 4, 0, L"Skalfaktor", L"Relativ skalfaktor för typsnittets storlek i procent"); + gdi.addInput("FontFactor" + itos(k), ff, 4, 0, L"Skalfaktor", L"Relativ skalfaktor för typsnittets storlek i procent"); f = list.getExtraSpace(k); - gdi.addInput("ExtraSpace" + itos(k), itow(f), 4, 0, L"Avstånd", L"Extra avstånd ovanför textblock"); + gdi.addInput("ExtraSpace" + itos(k), itow(f), 4, 0, L"AvstÃ¥nd", L"Extra avstÃ¥nd ovanför textblock"); if (k == 1) { gdi.dropLine(3); gdi.popX(); @@ -1184,7 +1184,7 @@ void ListEditor::makeDirty(gdioutput &gdi, DirtyFlag inside, DirtyFlag outside) bool ListEditor::checkSave(gdioutput &gdi) { if (dirtyInt || dirtyExt) { - gdioutput::AskAnswer answer = gdi.askCancel(L"Vill du spara ändringar?"); + gdioutput::AskAnswer answer = gdi.askCancel(L"Vill du spara ändringar?"); if (answer == gdioutput::AnswerCancel) return false; diff --git a/code/listeditor.h b/code/listeditor.h index 087158a..8e20c4e 100644 --- a/code/listeditor.h +++ b/code/listeditor.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/liveresult.cpp b/code/liveresult.cpp index 8332a1c..ac57f5d 100644 --- a/code/liveresult.cpp +++ b/code/liveresult.cpp @@ -1,4 +1,4 @@ -/********************i**************************************************** +/********************i**************************************************** MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/liveresult.h b/code/liveresult.h index 7dd915e..a5dafc6 100644 --- a/code/liveresult.h +++ b/code/liveresult.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "oListInfo.h" diff --git a/code/localizer.cpp b/code/localizer.cpp index 7b80725..2e84ba9 100644 --- a/code/localizer.cpp +++ b/code/localizer.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/localizer.h b/code/localizer.h index 9b0761b..ced2f4e 100644 --- a/code/localizer.h +++ b/code/localizer.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include diff --git a/code/meos.cpp b/code/meos.cpp index 8027e20..f61586c 100644 --- a/code/meos.cpp +++ b/code/meos.cpp @@ -66,6 +66,7 @@ #include "restserver.h" #include "autocomplete.h" #include "image.h" +#include "csvparser.h" int defaultCodePage = 1252; @@ -196,7 +197,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; // Store instance handle in our global variable - + atexit(dumpLeaks); // _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); @@ -214,7 +215,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, ShowWindow(hSplash, SW_SHOW); UpdateWindow(hSplash); } - DWORD splashStart = GetTickCount(); for (int k = 0; k < 100; k++) { @@ -234,6 +234,17 @@ int APIENTRY WinMain(HINSTANCE hInstance, StringCache::getInstance().init(); GetCurrentDirectory(MAX_PATH, programPath); + bool utfRecode = false; + if (utfRecode) { + vector dyn; + + expandDirectory(L".", L"*.cpp", dyn); + expandDirectory(L".", L"*.h", dyn); + expandDirectory(L"./meosdb", L"*.cpp", dyn); + expandDirectory(L"./meosdb", L"*.h", dyn); + for (auto &f : dyn) + csvparser::convertUTF(f); + } GetModuleFileName(NULL, exePath, MAX_PATH); int lastDiv = -1; diff --git a/code/meos.h b/code/meos.h index 2a26408..e1a81ca 100644 --- a/code/meos.h +++ b/code/meos.h @@ -1,4 +1,4 @@ -#if !defined(AFX_MEOS_H__7F8E5F23_ADD4_45AB_9626_7378FEA38D49__INCLUDED_) +#if !defined(AFX_MEOS_H__7F8E5F23_ADD4_45AB_9626_7378FEA38D49__INCLUDED_) #define AFX_MEOS_H__7F8E5F23_ADD4_45AB_9626_7378FEA38D49__INCLUDED_ diff --git a/code/meos_util.cpp b/code/meos_util.cpp index 91680dd..2d2358b 100644 --- a/code/meos_util.cpp +++ b/code/meos_util.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -1132,70 +1132,70 @@ int toLowerStripped(wchar_t c) { for (int i = 0; i < 65536; i++) map[i] = i; - setChar(map, L'Å', L'å'); - setChar(map, L'Ä', L'ä'); - setChar(map, L'Ö', L'ö'); + setChar(map, L'Ã…', L'Ã¥'); + setChar(map, L'Ä', L'ä'); + setChar(map, L'Ö', L'ö'); - setChar(map, L'É', L'e'); - setChar(map, L'é', L'e'); - setChar(map, L'è', L'e'); - setChar(map, L'È', L'e'); - setChar(map, L'ë', L'e'); - setChar(map, L'Ë', L'e'); - setChar(map, L'ê', L'e'); - setChar(map, L'Ê', L'e'); + setChar(map, L'É', L'e'); + setChar(map, L'é', L'e'); + setChar(map, L'è', L'e'); + setChar(map, L'È', L'e'); + setChar(map, L'ë', L'e'); + setChar(map, L'Ë', L'e'); + setChar(map, L'ê', L'e'); + setChar(map, L'Ê', L'e'); - setChar(map, L'û', L'u'); - setChar(map, L'Û', L'u'); - setChar(map, L'ü', L'u'); - setChar(map, L'Ü', L'u'); - setChar(map, L'ú', L'u'); - setChar(map, L'Ú', L'u'); - setChar(map, L'ù', L'u'); - setChar(map, L'Ù', L'u'); + setChar(map, L'û', L'u'); + setChar(map, L'Û', L'u'); + setChar(map, L'ü', L'u'); + setChar(map, L'Ü', L'u'); + setChar(map, L'ú', L'u'); + setChar(map, L'Ú', L'u'); + setChar(map, L'ù', L'u'); + setChar(map, L'Ù', L'u'); - setChar(map, L'ñ', L'n'); - setChar(map, L'Ñ', L'n'); + setChar(map, L'ñ', L'n'); + setChar(map, L'Ñ', L'n'); - setChar(map, L'á', L'a'); - setChar(map, L'Á', L'a'); - setChar(map, L'à', L'a'); - setChar(map, L'À', L'a'); - setChar(map, L'â', L'a'); - setChar(map, L'Â', L'a'); - setChar(map, L'ã', L'a'); - setChar(map, L'Ã', L'a'); + setChar(map, L'á', L'a'); + setChar(map, L'Ã', L'a'); + setChar(map, L'à', L'a'); + setChar(map, L'À', L'a'); + setChar(map, L'â', L'a'); + setChar(map, L'Â', L'a'); + setChar(map, L'ã', L'a'); + setChar(map, L'Ã', L'a'); - setChar(map, L'ï', L'i'); - setChar(map, L'Ï', L'i'); - setChar(map, L'î', L'i'); - setChar(map, L'Î', L'i'); - setChar(map, L'í', L'i'); - setChar(map, L'Í', L'i'); - setChar(map, L'ì', L'i'); - setChar(map, L'Ì', L'i'); + setChar(map, L'ï', L'i'); + setChar(map, L'Ã', L'i'); + setChar(map, L'î', L'i'); + setChar(map, L'ÃŽ', L'i'); + setChar(map, L'í', L'i'); + setChar(map, L'Ã', L'i'); + setChar(map, L'ì', L'i'); + setChar(map, L'ÃŒ', L'i'); - setChar(map, L'ó', L'o'); - setChar(map, L'Ó', L'o'); - setChar(map, L'ò', L'o'); - setChar(map, L'Ò', L'o'); - setChar(map, L'õ', L'o'); - setChar(map, L'Õ', L'o'); - setChar(map, L'ô', L'o'); - setChar(map, L'Ô', L'o'); + setChar(map, L'ó', L'o'); + setChar(map, L'Ó', L'o'); + setChar(map, L'ò', L'o'); + setChar(map, L'Ã’', L'o'); + setChar(map, L'õ', L'o'); + setChar(map, L'Õ', L'o'); + setChar(map, L'ô', L'o'); + setChar(map, L'Ô', L'o'); - setChar(map, L'ý', L'y'); - setChar(map, L'Ý', L'Y'); - setChar(map, L'ÿ', L'y'); + setChar(map, L'ý', L'y'); + setChar(map, L'Ã', L'Y'); + setChar(map, L'ÿ', L'y'); - setChar(map, L'Æ', L'ä'); - setChar(map, L'æ', L'ä'); + setChar(map, L'Æ', L'ä'); + setChar(map, L'æ', L'ä'); - setChar(map, L'Ø', L'ö'); - setChar(map, L'ø', L'ö'); + setChar(map, L'Ø', L'ö'); + setChar(map, L'ø', L'ö'); - setChar(map, L'Ç', L'c'); - setChar(map, L'ç', L'c'); + setChar(map, L'Ç', L'c'); + setChar(map, L'ç', L'c'); } int a = map[c]; return a; @@ -1395,7 +1395,7 @@ static void decomposeClassName(const wstring &name, vector &dec) { sort(dec.begin(), dec.end()); } -/** Matches H21 L with H21 Lång and H21L +/** Matches H21 L with H21 LÃ¥ng and H21L but not Violet with Violet Court, which is obviously wrong. */ bool compareClassName(const wstring &a, const wstring &b) @@ -1782,23 +1782,23 @@ wstring makeValidFileName(const wstring &input, bool strict) { if (b >= 'a' && b <= 'z') b = b; - else if ( b == L'ö') + else if ( b == L'ö') b = 'o'; - else if (b == L'ä' || b == L'å' || b== L'à' || b == L'á' || b == L'â' || b == L'ã' || b == L'æ') + else if (b == L'ä' || b == L'Ã¥' || b== L'à' || b == L'á' || b == L'â' || b == L'ã' || b == L'æ') b = 'a'; - else if (b == L'ç') + else if (b == L'ç') b = 'c'; - else if (b == L'è' || b == L'é' || b == L'ê' || b == L'ë') + else if (b == L'è' || b == L'é' || b == L'ê' || b == L'ë') b = 'e'; - else if (b == L'ð') + else if (b == L'ð') b = 't'; - else if (b == L'ï' || b == L'ì' || b == L'ï' || b == L'î' || b == L'í') + else if (b == L'ï' || b == L'ì' || b == L'ï' || b == L'î' || b == L'í') b = 'i'; - else if (b == L'ò' || b == L'ó' || b == L'ô' || b == L'õ' || b == L'ø') + else if (b == L'ò' || b == L'ó' || b == L'ô' || b == L'õ' || b == L'ø') b = 'o'; - else if (b == L'ù' || b == L'ú' || b == L'û' || b == L'ü') + else if (b == L'ù' || b == L'ú' || b == L'û' || b == L'ü') b = 'u'; - else if (b == L'ý') + else if (b == L'ý') b = 'y'; else b = '-'; @@ -2191,7 +2191,7 @@ void checkWriteAccess(const wstring &file) { wchar_t absPath[260]; _wfullpath(absPath, file.c_str(), 260); - throw meosException(wstring(L"Du saknar behörighet att skriva till 'X'.#") + absPath); + throw meosException(wstring(L"Du saknar behörighet att skriva till 'X'.#") + absPath); } CloseHandle(h); } diff --git a/code/meos_util.h b/code/meos_util.h index 2cfcb2e..39950a7 100644 --- a/code/meos_util.h +++ b/code/meos_util.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -160,7 +160,7 @@ wstring getMeosFullVersion(); wstring getMajorVersion(); wstring getMeosCompectVersion(); -void getSupporters(vector &supp); +void getSupporters(vector &supp, vector developSupp); int countWords(const wchar_t *p); diff --git a/code/meosdb/MeosSQL.cpp b/code/meosdb/MeosSQL.cpp index 60f2a87..ab6aa7d 100644 --- a/code/meosdb/MeosSQL.cpp +++ b/code/meosdb/MeosSQL.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -27,7 +27,6 @@ #include #include - #include "MeosSQL.h" #include "../oRunner.h" @@ -122,14 +121,15 @@ string C_START_noid(string name) string C_END() { - return " Modified TIMESTAMP, Counter INT UNSIGNED NOT NULL DEFAULT 0, " + return " Modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " + "Counter INT UNSIGNED NOT NULL DEFAULT 0, " "INDEX(Counter), INDEX(Modified), Removed BOOL NOT NULL DEFAULT 0) " "ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci"; } string C_END_noindex() { - return " Modified TIMESTAMP) " + return " Modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) " "ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci"; } @@ -175,7 +175,7 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { string serverInfo = con.server_info(); if (serverInfo < "5.0.3") { - errorMessage = "Minst MySQL X krävs. Du använder version Y.#5.0.3#" + serverInfo; + errorMessage = "Minst MySQL X krävs. Du använder version Y.#5.0.3#" + serverInfo; return false; } @@ -419,9 +419,9 @@ bool MeosSQL::openDB(oEvent *oe) try{ con.select_db("MeOSMain"); } - catch (const mysqlpp::Exception& er){ - alert(string(er.what()) + " MySQL Error. Select MeosMain"); + catch (const mysqlpp::Exception& er) { setDefaultDB(); + alert(string(er.what()) + " MySQL Error. Select MeosMain"); return 0; } monitorId=0; @@ -718,8 +718,8 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) //syncUpdate(queryset, "oEvent", oe, true); } catch (const mysqlpp::Exception& er){ - alert(string(er.what())+" [UPDATING oEvent]"); setDefaultDB(); + alert(string(er.what()) + " [UPDATING oEvent]"); return opStatusFail; } @@ -3723,4 +3723,4 @@ int MeosSQL::getModifiedMask(oEvent &oe) { catch(...) { } return -1; -} \ No newline at end of file +} diff --git a/code/meosdb/MeosSQL.h b/code/meosdb/MeosSQL.h index ccc456a..9dee2e2 100644 --- a/code/meosdb/MeosSQL.h +++ b/code/meosdb/MeosSQL.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2012 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #pragma warning( disable : 4251) diff --git a/code/meosdb/dllmain.cpp b/code/meosdb/dllmain.cpp index 8a4edd3..5832cba 100644 --- a/code/meosdb/dllmain.cpp +++ b/code/meosdb/dllmain.cpp @@ -1,4 +1,4 @@ -// dllmain.cpp : Defines the entry point for the DLL application. +// dllmain.cpp : Defines the entry point for the DLL application. #include "stdafx.h" BOOL APIENTRY DllMain( HMODULE hModule, diff --git a/code/meosdb/meosdb.cpp b/code/meosdb/meosdb.cpp index ca3ed8d..918ad6c 100644 --- a/code/meosdb/meosdb.cpp +++ b/code/meosdb/meosdb.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/meosdb/meosdb.h b/code/meosdb/meosdb.h index 3dc6b47..9d67b9a 100644 --- a/code/meosdb/meosdb.h +++ b/code/meosdb/meosdb.h @@ -1,4 +1,4 @@ -// The following ifdef block is the standard way of creating macros which make exporting +// The following ifdef block is the standard way of creating macros which make exporting // from a DLL simpler. All files within this DLL are compiled with the MEOSDB_EXPORTS // symbol defined on the command line. this symbol should not be defined on any project // that uses this DLL. This way any other project whose source files include this file see @@ -26,4 +26,4 @@ public: MEOSDB_API int fnmeosdb(void); -}*/ \ No newline at end of file +}*/ diff --git a/code/meosdb/sqltypes.h b/code/meosdb/sqltypes.h index 7c85797..34f9c63 100644 --- a/code/meosdb/sqltypes.h +++ b/code/meosdb/sqltypes.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/meosdb/stdafx.cpp b/code/meosdb/stdafx.cpp index 2b8d0d9..cbd1c35 100644 --- a/code/meosdb/stdafx.cpp +++ b/code/meosdb/stdafx.cpp @@ -1,14 +1,14 @@ -// stdafx.cpp : source file that includes just the standard includes +// stdafx.cpp : source file that includes just the standard includes // meosdb.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" -const string _NoClub="Klubblös"; +const string _NoClub="Klubblös"; const string _EmptyString=""; const string _VacantName="Vakant"; const string _UnkownName="N.N."; // TODO: reference any additional headers you need in STDAFX.H // and not in this file - \ No newline at end of file + diff --git a/code/meosdb/stdafx.h b/code/meosdb/stdafx.h index 87f2eec..8b80c19 100644 --- a/code/meosdb/stdafx.h +++ b/code/meosdb/stdafx.h @@ -1,4 +1,4 @@ -// stdafx.h : include file for standard system include files, +// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // diff --git a/code/meosdb/targetver.h b/code/meosdb/targetver.h index d6323ac..22ac54f 100644 --- a/code/meosdb/targetver.h +++ b/code/meosdb/targetver.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/meosexception.h b/code/meosexception.h index 3f16e99..8ecb9a8 100644 --- a/code/meosexception.h +++ b/code/meosexception.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "meos_util.h" diff --git a/code/meosvc15.vcxproj b/code/meosvc15.vcxproj index 59f7d9f..b9770ba 100644 --- a/code/meosvc15.vcxproj +++ b/code/meosvc15.vcxproj @@ -133,6 +133,9 @@ true .\Release/meos.bsc + + PerMonitorHighDPIAware + @@ -189,6 +192,9 @@ true .\Debug/meos.bsc + + PerMonitorHighDPIAware + diff --git a/code/meosversion.cpp b/code/meosversion.cpp index de978ae..a77f592 100644 --- a/code/meosversion.cpp +++ b/code/meosversion.cpp @@ -29,7 +29,7 @@ //V33: abcde //V35: abcdef int getMeosBuild() { - string revision("$Rev: 686 $"); + string revision("$Rev: 706 $"); return 174 + atoi(revision.substr(5, string::npos).c_str()); } @@ -41,12 +41,12 @@ int getMeosBuild() { //V33: abcdefghij //V34: abcdfge wstring getMeosDate() { - wstring date(L"$Date: 2018-04-17 21:45:35 +0200 (ti, 17 apr 2018) $"); + wstring date(L"$Date: 2018-05-20 12:07:24 +0200 (sö, 20 maj 2018) $"); return date.substr(7,10); } wstring getBuildType() { - return L""; // No parantheses (...) + return L"U1"; // No parantheses (...) } wstring getMajorVersion() { @@ -70,124 +70,128 @@ wstring getMeosCompectVersion() { return getMajorVersion() + L"." + itow(getMeosBuild()) + L" (" + getBuildType() + L")"; } -void getSupporters(vector &supp) +void getSupporters(vector &supp, vector developSupp) { - supp.push_back(L"Centrum OK"); - supp.push_back(L"Ove Persson, PiteÃ¥ IF"); - supp.push_back(L"OK Rodhen"); - supp.push_back(L"Täby Extreme Challenge"); - supp.push_back(L"Thomas Engberg, VK Uvarna"); - supp.push_back(L"Eilert Edin, Sidensjö IK"); - supp.push_back(L"Göran Nordh, Trollhättans SK"); - supp.push_back(L"Roger Gustavsson, OK Tisaren"); - supp.push_back(L"Sundsvalls OK"); - supp.push_back(L"OK Gipens OL-skytte"); - supp.push_back(L"Helsingborgs SOK"); - supp.push_back(L"OK Gipens OL-skytte"); - supp.push_back(L"Rune Thurén, Vallentuna-Össeby OL"); - supp.push_back(L"Roland Persson, Kalmar OK"); - supp.push_back(L"Robert Jessen, Främmestads IK"); - supp.push_back(L"Anders Platt, Järla Orientering"); - supp.push_back(L"Almby IK, Örebro"); - supp.push_back(L"Peter Rydesäter, Rehns BK"); - supp.push_back(L"IK Hakarpspojkarna"); - supp.push_back(L"Rydboholms SK"); - supp.push_back(L"IFK Kiruna"); - supp.push_back(L"Peter Andersson, Söders SOL"); - supp.push_back(L"Björkfors GoIF"); - supp.push_back(L"OK Ziemelkurzeme"); - supp.push_back(L"Big Foot Orienteers"); - supp.push_back(L"FIF Hillerød"); - supp.push_back(L"Anne Udd"); - supp.push_back(L"OK Orinto"); - supp.push_back(L"SOK Träff"); - supp.push_back(L"Gamleby OK"); - supp.push_back(L"Vänersborgs SK"); - supp.push_back(L"Henrik Ortman, VästerÃ¥s SOK"); - supp.push_back(L"Leif Olofsson, Sjuntorp"); - supp.push_back(L"Vallentuna/Össeby OL"); - supp.push_back(L"Oskarström OK"); - supp.push_back(L"Skogslöparna"); - supp.push_back(L"OK Milan"); - supp.push_back(L"Tjalve IF"); - supp.push_back(L"OK Skärmen"); - supp.push_back(L"Østkredsen"); - supp.push_back(L"OK Roskilde"); - supp.push_back(L"Holbæk Orienteringsklub"); - supp.push_back(L"Bodens BK"); - supp.push_back(L"OK Tyr, Karlstad"); - supp.push_back(L"Göteborg-Majorna OK"); - supp.push_back(L"OK Järnbärarna, Kopparberg"); - supp.push_back(L"FK Ã…sen"); - supp.push_back(L"Ballerup OK"); - supp.push_back(L"Olivier Benevello, Valbonne SAO"); - supp.push_back(L"Tommy WÃ¥hlin, OK Enen"); - supp.push_back(L"Hjobygdens OK"); - supp.push_back(L"Tisvilde Hegn OK"); - supp.push_back(L"Lindebygdens OK"); - supp.push_back(L"OK Flundrehof"); - supp.push_back(L"Vittjärvs IK"); - supp.push_back(L"Annebergs GIF"); - supp.push_back(L"Lars-Eric Gahlin, Östersunds OK"); - supp.push_back(L"Sundsvalls OK:s Veteraner"); - supp.push_back(L"OK Skogshjortarna"); - supp.push_back(L"Kinnaströms SK"); - supp.push_back(L"OK Pan Ã…rhus"); - supp.push_back(L"Jan Ernberg, Täby OK"); - supp.push_back(L"Stjärnorps SK"); - supp.push_back(L"Mölndal Outdoor IF"); - supp.push_back(L"Roland Elg, FjärÃ¥s AIK"); - supp.push_back(L"Tenhults SOK"); - supp.push_back(L"Järfälla OK"); - supp.push_back(L"Lars Jonasson"); - supp.push_back(L"Anders Larsson, OK Nackhe"); - supp.push_back(L"Hans Wilhelmsson"); - supp.push_back(L"Patrice Lavallee, Noyon Course d'Orientation"); - supp.push_back(L"IFK Linköpings OS"); - supp.push_back(L"Lars Ove Karlsson, VästerÃ¥s SOK"); - supp.push_back(L"OK Djerf"); - supp.push_back(L"OK Vivill"); - supp.push_back(L"IFK Mora OK"); - supp.push_back(L"Sonny Andersson, Huskvarna"); - supp.push_back(L"Hässleholms OK Skolorientering"); - supp.push_back(L"IBM-klubben Orientering"); - supp.push_back(L"OK Øst, Birkerød"); - supp.push_back(L"OK Klemmingen"); - supp.push_back(L"Hans Johansson"); - supp.push_back(L"KOB Kysak"); - supp.push_back(L"Per Ivarsson, Trollhättans SOK"); - supp.push_back(L"Sergio Yañez, ABC TRAIL"); - supp.push_back(L"Western Race Services"); - supp.push_back(L"IK Gandvik, Skara"); - supp.push_back(L"IK Stern"); - supp.push_back(L"OK Roslagen"); - supp.push_back(L"TSV Malente"); - supp.push_back(L"Emmaboda Verda OK"); - supp.push_back(L"KOB ATU KoÅ¡ice"); - supp.push_back(L"Gävle OK"); - supp.push_back(L"Kenneth Gattmalm, Jönköpings OK"); - supp.push_back(L"Søllerød OK"); - supp.push_back(L"O-travel"); - supp.push_back(L"Bengt Bengtsson"); - supp.push_back(L"OK Landehof"); - supp.push_back(L"OK Orinto"); - supp.push_back(L"Bredaryds SOK"); - supp.push_back(L"Thore Nilsson, Uddevalla OK"); - supp.push_back(L"TimrÃ¥ SOK"); - supp.push_back(L"Ã…ke Larsson, OK Hedströmmen"); - supp.push_back(L"Avesta OK"); - supp.push_back(L"Motionsorientering Göteborg"); - supp.push_back(L"OK MÃ¥sen"); - supp.push_back(L"IF Thor"); - supp.push_back(L"SOS JindÅ™ichův Hradec"); - supp.push_back(L"Mats Holmberg, OK Gränsen"); - supp.push_back(L"Christoffer Ohlsson, Uddevalla OK"); - supp.push_back(L"O-Ringen AB"); - supp.push_back(L"Hans Carlstedt, Sävedalens AIK"); - supp.push_back(L"Attunda OK"); - supp.push_back(L"Siguldas Takas, Latvia"); - supp.push_back(L"Eric Teutsch, Ottawa Orienteering Club, Canada"); - supp.push_back(L"Silkeborg OK, Denmark"); - supp.push_back(L"Erik Ivarsson Sandberg"); - supp.push_back(L"Stenungsunds OK"); + supp.emplace_back(L"Centrum OK"); + supp.emplace_back(L"Ove Persson, PiteÃ¥ IF"); + supp.emplace_back(L"OK Rodhen"); + supp.emplace_back(L"Täby Extreme Challenge"); + supp.emplace_back(L"Thomas Engberg, VK Uvarna"); + supp.emplace_back(L"Eilert Edin, Sidensjö IK"); + supp.emplace_back(L"Göran Nordh, Trollhättans SK"); + supp.emplace_back(L"Roger Gustavsson, OK Tisaren"); + supp.emplace_back(L"Sundsvalls OK"); + supp.emplace_back(L"OK Gipens OL-skytte"); + supp.emplace_back(L"Helsingborgs SOK"); + supp.emplace_back(L"OK Gipens OL-skytte"); + supp.emplace_back(L"Rune Thurén, Vallentuna-Össeby OL"); + supp.emplace_back(L"Roland Persson, Kalmar OK"); + supp.emplace_back(L"Robert Jessen, Främmestads IK"); + supp.emplace_back(L"Anders Platt, Järla Orientering"); + supp.emplace_back(L"Almby IK, Örebro"); + supp.emplace_back(L"Peter Rydesäter, Rehns BK"); + supp.emplace_back(L"IK Hakarpspojkarna"); + supp.emplace_back(L"Rydboholms SK"); + supp.emplace_back(L"IFK Kiruna"); + supp.emplace_back(L"Peter Andersson, Söders SOL"); + supp.emplace_back(L"Björkfors GoIF"); + supp.emplace_back(L"OK Ziemelkurzeme"); + supp.emplace_back(L"Big Foot Orienteers"); + supp.emplace_back(L"FIF Hillerød"); + supp.emplace_back(L"Anne Udd"); + supp.emplace_back(L"OK Orinto"); + supp.emplace_back(L"SOK Träff"); + supp.emplace_back(L"Gamleby OK"); + supp.emplace_back(L"Vänersborgs SK"); + supp.emplace_back(L"Henrik Ortman, VästerÃ¥s SOK"); + supp.emplace_back(L"Leif Olofsson, Sjuntorp"); + supp.emplace_back(L"Vallentuna/Össeby OL"); + supp.emplace_back(L"Oskarström OK"); + supp.emplace_back(L"Skogslöparna"); + supp.emplace_back(L"OK Milan"); + supp.emplace_back(L"Tjalve IF"); + supp.emplace_back(L"OK Skärmen"); + supp.emplace_back(L"Østkredsen"); + supp.emplace_back(L"OK Roskilde"); + supp.emplace_back(L"Holbæk Orienteringsklub"); + supp.emplace_back(L"Bodens BK"); + supp.emplace_back(L"OK Tyr, Karlstad"); + supp.emplace_back(L"Göteborg-Majorna OK"); + supp.emplace_back(L"OK Järnbärarna, Kopparberg"); + supp.emplace_back(L"FK Ã…sen"); + supp.emplace_back(L"Ballerup OK"); + supp.emplace_back(L"Olivier Benevello, Valbonne SAO"); + supp.emplace_back(L"Tommy WÃ¥hlin, OK Enen"); + supp.emplace_back(L"Hjobygdens OK"); + supp.emplace_back(L"Tisvilde Hegn OK"); + supp.emplace_back(L"Lindebygdens OK"); + supp.emplace_back(L"OK Flundrehof"); + supp.emplace_back(L"Vittjärvs IK"); + supp.emplace_back(L"Annebergs GIF"); + supp.emplace_back(L"Lars-Eric Gahlin, Östersunds OK"); + supp.emplace_back(L"Sundsvalls OK:s Veteraner"); + supp.emplace_back(L"OK Skogshjortarna"); + supp.emplace_back(L"Kinnaströms SK"); + supp.emplace_back(L"OK Pan Ã…rhus"); + supp.emplace_back(L"Jan Ernberg, Täby OK"); + supp.emplace_back(L"Stjärnorps SK"); + supp.emplace_back(L"Mölndal Outdoor IF"); + supp.emplace_back(L"Roland Elg, FjärÃ¥s AIK"); + supp.emplace_back(L"Tenhults SOK"); + supp.emplace_back(L"Järfälla OK"); + supp.emplace_back(L"Lars Jonasson"); + supp.emplace_back(L"Anders Larsson, OK Nackhe"); + supp.emplace_back(L"Hans Wilhelmsson"); + supp.emplace_back(L"Patrice Lavallee, Noyon Course d'Orientation"); + supp.emplace_back(L"IFK Linköpings OS"); + supp.emplace_back(L"Lars Ove Karlsson, VästerÃ¥s SOK"); + supp.emplace_back(L"OK Djerf"); + supp.emplace_back(L"OK Vivill"); + supp.emplace_back(L"IFK Mora OK"); + supp.emplace_back(L"Sonny Andersson, Huskvarna"); + supp.emplace_back(L"Hässleholms OK Skolorientering"); + supp.emplace_back(L"IBM-klubben Orientering"); + supp.emplace_back(L"OK Øst, Birkerød"); + supp.emplace_back(L"OK Klemmingen"); + supp.emplace_back(L"Hans Johansson"); + supp.emplace_back(L"KOB Kysak"); + supp.emplace_back(L"Per Ivarsson, Trollhättans SOK"); + supp.emplace_back(L"Sergio Yañez, ABC TRAIL"); + supp.emplace_back(L"Western Race Services"); + supp.emplace_back(L"IK Gandvik, Skara"); + supp.emplace_back(L"IK Stern"); + supp.emplace_back(L"OK Roslagen"); + supp.emplace_back(L"TSV Malente"); + supp.emplace_back(L"Emmaboda Verda OK"); + supp.emplace_back(L"KOB ATU KoÅ¡ice"); + supp.emplace_back(L"Gävle OK"); + supp.emplace_back(L"Kenneth Gattmalm, Jönköpings OK"); + supp.emplace_back(L"Søllerød OK"); + supp.emplace_back(L"O-travel"); + supp.emplace_back(L"Bengt Bengtsson"); + supp.emplace_back(L"OK Landehof"); + supp.emplace_back(L"OK Orinto"); + supp.emplace_back(L"Bredaryds SOK"); + supp.emplace_back(L"Thore Nilsson, Uddevalla OK"); + supp.emplace_back(L"TimrÃ¥ SOK"); + supp.emplace_back(L"Ã…ke Larsson, OK Hedströmmen"); + supp.emplace_back(L"Avesta OK"); + supp.emplace_back(L"Motionsorientering Göteborg"); + supp.emplace_back(L"OK MÃ¥sen"); + supp.emplace_back(L"IF Thor"); + supp.emplace_back(L"SOS JindÅ™ichův Hradec"); + supp.emplace_back(L"Mats Holmberg, OK Gränsen"); + supp.emplace_back(L"Christoffer Ohlsson, Uddevalla OK"); + supp.emplace_back(L"O-Ringen AB"); + supp.emplace_back(L"Hans Carlstedt, Sävedalens AIK"); + supp.emplace_back(L"Attunda OK"); + supp.emplace_back(L"Siguldas Takas, Latvia"); + supp.emplace_back(L"Eric Teutsch, Ottawa Orienteering Club, Canada"); + supp.emplace_back(L"Silkeborg OK, Denmark"); + supp.emplace_back(L"Erik Ivarsson Sandberg"); + supp.emplace_back(L"Stenungsunds OK"); + supp.emplace_back(L"OK Leipzig"); + supp.emplace_back(L"Degerfors OK"); + supp.emplace_back(L"OK Tjärnen"); + //reverse(supp.begin(), supp.end()); } diff --git a/code/metalist.cpp b/code/metalist.cpp index 4c141b5..55aaaf6 100644 --- a/code/metalist.cpp +++ b/code/metalist.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -2254,7 +2254,7 @@ void MetaListContainer::getMergeCandidates(int toMerge, vector< pairsecond.previousList == 0) { - wstring desc = L"Före X#" + it->second.getName(); + wstring desc = L"Före X#" + it->second.getName(); param.push_back(make_pair(lang.tl(desc), MAXLISTPARAMID + it->first)); } diff --git a/code/metalist.h b/code/metalist.h index 0790aa0..ef1714f 100644 --- a/code/metalist.h +++ b/code/metalist.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/methodeditor.cpp b/code/methodeditor.cpp index 76c862b..1c71ac0 100644 --- a/code/methodeditor.cpp +++ b/code/methodeditor.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" @@ -83,8 +83,8 @@ void MethodEditor::show(gdioutput &gdi) { gdi.dropLine(0.5); gdi.fillRight(); - gdi.addButton("OpenFile", "Importera från fil", methodCB); - gdi.addButton("OpenInside", "Öppna", methodCB); + gdi.addButton("OpenFile", "Importera frÃ¥n fil", methodCB); + gdi.addButton("OpenInside", "Öppna", methodCB); if (currentResult) { gdi.addButton("SaveFile", "Exportera till fil...", methodCB); @@ -95,7 +95,7 @@ void MethodEditor::show(gdioutput &gdi) { } gdi.addButton("NewRules", "New Result Module", methodCB); - gdi.addButton("Close", "Stäng", methodCB); + gdi.addButton("Close", "Stäng", methodCB); #ifdef _DEBUG gdi.addButton("WriteDoc", "#WriteDoc", methodCB); @@ -123,7 +123,7 @@ void MethodEditor::show(gdioutput &gdi) { wstring lists = oe->getListContainer().getList(listIx.front()).getListName(); if (listIx.size() > 1) lists += L", ..."; - gdi.addString("", 0, L"Resultatmodulen används i X.#" + lists); + gdi.addString("", 0, L"Resultatmodulen används i X.#" + lists); } wstring desc = currentResult->getDescription(); @@ -300,7 +300,7 @@ int MethodEditor::methodCb(gdioutput &gdi, int type, BaseInfo &data) { continue; if (utag == DynamicResult::undecorateTag(mtag)) { - doUpdate = gdi.ask(L"Vill du uppdatera resultatlistorna i den öppande tävlingen?"); + doUpdate = gdi.ask(L"Vill du uppdatera resultatlistorna i den öppande tävlingen?"); break; } } @@ -388,13 +388,13 @@ int MethodEditor::methodCb(gdioutput &gdi, int type, BaseInfo &data) { } sort(lists.begin(), lists.end()); gdi.fillRight(); - gdi.addSelection("OpenList", 350, 400, methodCB, L"Choose result module:", L"Rader markerade med (*) kommer från en lista i tävlingen."); + gdi.addSelection("OpenList", 350, 400, methodCB, L"Choose result module:", L"Rader markerade med (*) kommer frÃ¥n en lista i tävlingen."); gdi.addItem("OpenList", lists); gdi.autoGrow("OpenList"); gdi.selectFirstItem("OpenList"); gdi.dropLine(); - gdi.addButton("DoOpen", "Öppna", methodCB); + gdi.addButton("DoOpen", "Öppna", methodCB); gdi.addButton("DoOpenCopy", "Open a Copy", methodCB); if (!lists.empty()) { @@ -511,7 +511,7 @@ int MethodEditor::methodCb(gdioutput &gdi, int type, BaseInfo &data) { } gdi.fillDown(); if (tr.size() + rr.size() == 0) { - gdi.addString("", 1, "Tävlingen innehåller inga resultat").setColor(colorRed); + gdi.addString("", 1, "Tävlingen innehÃ¥ller inga resultat").setColor(colorRed); } else gdi.addString("", 1, "Applying rules to the current competition"); @@ -874,7 +874,7 @@ void MethodEditor::makeDirty(gdioutput &gdi, DirtyFlag inside) { bool MethodEditor::checkSave(gdioutput &gdi) { if (dirtyInt) { - gdioutput::AskAnswer answer = gdi.askCancel(L"Vill du spara ändringar?"); + gdioutput::AskAnswer answer = gdi.askCancel(L"Vill du spara ändringar?"); if (answer == gdioutput::AnswerCancel) return false; @@ -1063,6 +1063,6 @@ void MethodEditor::debug(gdioutput &gdi_in, int id, bool isTeam) { currentResult->debugDumpVariables(gdi, false); } - gdi.addButton("CloseWindow", "Stäng", methodCB); + gdi.addButton("CloseWindow", "Stäng", methodCB); gdi.refresh(); } diff --git a/code/methodeditor.h b/code/methodeditor.h index 1d57f96..5b3e9d7 100644 --- a/code/methodeditor.h +++ b/code/methodeditor.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/mysqldaemon.cpp b/code/mysqldaemon.cpp index 94abd64..79b998a 100644 --- a/code/mysqldaemon.cpp +++ b/code/mysqldaemon.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -109,7 +109,7 @@ void MySQLReconnect::process(gdioutput &gdi, oEvent *oe, AutoSyncType ast) interval = 10; } else { - gdi.addInfoBox("", L"Återansluten mot databasen, tävlingen synkroniserad.", 10000); + gdi.addInfoBox("", L"Ã…teransluten mot databasen, tävlingen synkroniserad.", 10000); timeReconnect = getLocalTime(); gdi.setDBErrorState(false); gdi.setWindowTitle(oe->getTitleName()); @@ -147,14 +147,14 @@ void MySQLReconnect::status(gdioutput &gdi) { if (interval>0){ gdi.addStringUT(1, timeError + L": " + lang.tl("DATABASE ERROR")).setColor(colorDarkRed); gdi.fillRight(); - gdi.addString("", 0, "Nästa försök:"); + gdi.addString("", 0, "Nästa försök:"); gdi.addTimer(gdi.getCY(), gdi.getCX()+10, timerCanBeNegative, (GetTickCount()-timeout)/1000); } else { gdi.addStringUT(0, timeError + L": " + lang.tl("DATABASE ERROR")).setColor(colorDarkGrey); gdi.fillRight(); gdi.addStringUT(0, timeReconnect + L":"); - gdi.addString("", 1, "Återansluten mot databasen, tävlingen synkroniserad.").setColor(colorDarkGreen); + gdi.addString("", 1, "Ã…teransluten mot databasen, tävlingen synkroniserad.").setColor(colorDarkGreen); gdi.dropLine(); gdi.fillDown(); gdi.popX(); diff --git a/code/newcompetition.cpp b/code/newcompetition.cpp index e59d2b1..4229d22 100644 --- a/code/newcompetition.cpp +++ b/code/newcompetition.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -103,7 +103,7 @@ int TabCompetition::newGuideCB(gdioutput &gdi, int type, void *data) createCompetition(gdi); gdi.clearPage(true); gdi.fillRight(); - gdi.addString("", fontMediumPlus, "Skapar tävling..."); + gdi.addString("", fontMediumPlus, "Skapar tävling..."); gdi.refresh(); Sleep(400); oe->getMeOSFeatures().useAll(*oe); @@ -129,7 +129,7 @@ int TabCompetition::newGuideCB(gdioutput &gdi, int type, void *data) saveMeosFeatures(gdi, true); gdi.clearPage(true); gdi.fillRight(); - gdi.addString("", fontMediumPlus, "Skapar tävling..."); + gdi.addString("", fontMediumPlus, "Skapar tävling..."); gdi.refresh(); Sleep(400); oe->updateTabs(true, false); @@ -150,7 +150,7 @@ int TabCompetition::newGuideCB(gdioutput &gdi, int type, void *data) gdi.clearPage(true); gdi.fillRight(); - gdi.addString("", fontMediumPlus, "Skapar tävling..."); + gdi.addString("", fontMediumPlus, "Skapar tävling..."); gdi.refresh(); Sleep(400); oe->updateTabs(true, false); @@ -172,7 +172,7 @@ int TabCompetition::newGuideCB(gdioutput &gdi, int type, void *data) gdi.clearPage(true); gdi.fillRight(); - gdi.addString("", fontMediumPlus, "Skapar tävling..."); + gdi.addString("", fontMediumPlus, "Skapar tävling..."); gdi.refresh(); Sleep(400); oe->updateTabs(true, false); @@ -197,7 +197,7 @@ int TabCompetition::newGuideCB(gdioutput &gdi, int type, void *data) gdi.clearPage(true); gdi.fillRight(); - gdi.addString("", fontMediumPlus, "Skapar tävling..."); + gdi.addString("", fontMediumPlus, "Skapar tävling..."); gdi.refresh(); Sleep(400); oe->updateTabs(true, false); @@ -229,7 +229,7 @@ int TabCompetition::newGuideCB(gdioutput &gdi, int type, void *data) long long stopT = absT + 23 * 3600; SYSTEMTIME start = Int64SecondToSystemTime(absT); SYSTEMTIME end = Int64SecondToSystemTime(stopT); - wstring s = L"Tävlingen måste avgöras mellan X och Y.#" + convertSystemTime(start) + L"#" + convertSystemTime(end); + wstring s = L"Tävlingen mÃ¥ste avgöras mellan X och Y.#" + convertSystemTime(start) + L"#" + convertSystemTime(end); gdi.setTextTranslate("AllowedInterval", s, true); } } @@ -244,7 +244,7 @@ void TabCompetition::newCompetitionGuide(gdioutput &gdi, int step) { if (step == 0) { oe->updateTabs(true, true); gdi.clearPage(false); - gdi.addString("", boldLarge, "Ny tävling"); + gdi.addString("", boldLarge, "Ny tävling"); gdi.dropLine(); gdi.setRestorePoint("newcmp"); @@ -257,13 +257,13 @@ void TabCompetition::newCompetitionGuide(gdioutput &gdi, int step) { gdi.addString("", fontMediumPlus, "Namn och tidpunkt"); gdi.dropLine(0.5); - gdi.addInput("Name", lang.tl("Ny tävling"), 34, 0, L"Tävlingens namn:"); + gdi.addInput("Name", lang.tl("Ny tävling"), 34, 0, L"Tävlingens namn:"); gdi.pushX(); gdi.fillRight(); - InputInfo &date = gdi.addInput("Date", getLocalDate(), 16, NewGuideCB, L"Datum (för första start):"); + InputInfo &date = gdi.addInput("Date", getLocalDate(), 16, NewGuideCB, L"Datum (för första start):"); - gdi.addInput("FirstStart", L"07:00:00", 12, NewGuideCB, L"Första tillåtna starttid:"); + gdi.addInput("FirstStart", L"07:00:00", 12, NewGuideCB, L"Första tillÃ¥tna starttid:"); gdi.popX(); gdi.fillDown(); @@ -289,7 +289,7 @@ void TabCompetition::newCompetitionGuide(gdioutput &gdi, int step) { gdi.addRectangle(rc, colorLightBlue, true); gdi.fillRight(); - gdi.addButton("BasicSetup", "<< Bakåt", NewGuideCB); + gdi.addButton("BasicSetup", "<< BakÃ¥t", NewGuideCB); gdi.addButton("DoImportEntries", "Importera", NewGuideCB); gdi.addButton("Cancel", "Avbryt", NewGuideCB).setCancel(); @@ -308,17 +308,17 @@ void TabCompetition::newCompetitionGuide(gdioutput &gdi, int step) { gdi.dropLine(0.5); gdi.addString("", 10, "newcmp:featuredesc"); gdi.dropLine(); - gdi.addString("", 1, "Välj vilka funktioner du vill använda"); + gdi.addString("", 1, "Välj vilka funktioner du vill använda"); gdi.dropLine(0.5); gdi.fillRight(); - gdi.addButton("FIndividual", "Individuell tävling", NewGuideCB); + gdi.addButton("FIndividual", "Individuell tävling", NewGuideCB); gdi.addButton("FForked", "Individuellt, gafflat", NewGuideCB); - gdi.addButton("FTeam", "Tävling med lag", NewGuideCB); + gdi.addButton("FTeam", "Tävling med lag", NewGuideCB); gdi.popX(); gdi.dropLine(2); - gdi.addButton("FBasic", "Endast grundläggande", NewGuideCB); + gdi.addButton("FBasic", "Endast grundläggande", NewGuideCB); gdi.addButton("FAll", "Alla funktioner", NewGuideCB); - gdi.addButton("FSelect", "Välj från lista...", NewGuideCB); + gdi.addButton("FSelect", "Välj frÃ¥n lista...", NewGuideCB); gdi.addButton("Cancel", "Avbryt", NewGuideCB).setCancel(); if (oe->hasTeam()) { @@ -354,8 +354,8 @@ void TabCompetition::newCompetitionGuide(gdioutput &gdi, int step) { gdi.dropLine(); gdi.setCY(gdi.getHeight()); gdi.fillRight(); - gdi.addButton("NoEntries", "<< Bakåt", NewGuideCB); - gdi.addButton("StoreFeatures", "Skapa tävlingen", NewGuideCB); + gdi.addButton("NoEntries", "<< BakÃ¥t", NewGuideCB); + gdi.addButton("StoreFeatures", "Skapa tävlingen", NewGuideCB); gdi.addButton("Cancel", "Avbryt", NewGuideCB).setCancel(); gdi.popX(); @@ -370,9 +370,9 @@ void TabCompetition::newCompetitionGuide(gdioutput &gdi, int step) { void TabCompetition::entryChoice(gdioutput &gdi) { gdi.fillRight(); gdi.pushX(); - gdi.addButton("ImportEntries", "Importera anmälda", NewGuideCB); + gdi.addButton("ImportEntries", "Importera anmälda", NewGuideCB); //gdi.addButton("FreeEntry", "Fri inmatning av deltagare", NewGuideCB); - gdi.addButton("NoEntries", "Anmäl inga deltagare nu", NewGuideCB); + gdi.addButton("NoEntries", "Anmäl inga deltagare nu", NewGuideCB); gdi.addButton("Cancel", "Avbryt", NewGuideCB).setCancel(); gdi.popX(); diff --git a/code/oBase.cpp b/code/oBase.cpp index 8a3099a..ac87d25 100644 --- a/code/oBase.cpp +++ b/code/oBase.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oBase.h b/code/oBase.h index e2bde3f..220a50f 100644 --- a/code/oBase.h +++ b/code/oBase.h @@ -1,4 +1,4 @@ -// oBase.h: interface for the oBase class. +// oBase.h: interface for the oBase class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oCard.cpp b/code/oCard.cpp index 22d1a11..02bafcc 100644 --- a/code/oCard.cpp +++ b/code/oCard.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -328,14 +328,14 @@ bool oCard::fillPunches(gdioutput &gdi, const string &name, pCourse crs) { } } - gdi.addItem(name, lang.tl("Mål")+L"\t-", -1); + gdi.addItem(name, lang.tl("MÃ¥l")+L"\t-", -1); } if (extra) { //Show punches that are not used. k=0; gdi.addItem(name, L"", -1); - gdi.addItem(name, lang.tl("Extra stämplingar"), -1); + gdi.addItem(name, lang.tl("Extra stämplingar"), -1); for (it=punches.begin(); it != punches.end(); ++it) { if (!it->isUsed && !(it->isFinish() && showFinish) && !(it->isStart() && showStart)) gdi.addItem(name, it->getString(), it->tCardIndex); @@ -391,7 +391,7 @@ void oCard::deletePunch(pPunch pp) wstring oCard::getInfo() const { wchar_t bf[128]; - swprintf_s(bf, lang.tl("Löparbricka %d").c_str(), cardNo); + swprintf_s(bf, lang.tl("Löparbricka %d").c_str(), cardNo); return bf; } @@ -569,14 +569,14 @@ Table *oEvent::getCardsTB() //Table mode Table *table=new Table(this, 20, L"Brickor", "cards"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Bricka", 120, true); table->addColumn("Deltagare", 200, false); table->addColumn("Starttid", 70, false); - table->addColumn("Måltid", 70, false); - table->addColumn("Stämplingar", 70, true); + table->addColumn("MÃ¥ltid", 70, false); + table->addColumn("Stämplingar", 70, true); table->setTableProp(Table::CAN_DELETE); table->update(); @@ -779,4 +779,4 @@ void oCard::adaptTimes(int startTime) { } updateChanged(); } -} \ No newline at end of file +} diff --git a/code/oCard.h b/code/oCard.h index dee38a8..5544285 100644 --- a/code/oCard.h +++ b/code/oCard.h @@ -1,4 +1,4 @@ -// oCard.h: interface for the oCard class. +// oCard.h: interface for the oCard class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oClass.cpp b/code/oClass.cpp index 4ca94a9..766033f 100644 --- a/code/oClass.cpp +++ b/code/oClass.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -760,7 +760,7 @@ void oClass::fillStartTypes(gdioutput &gdi, const string &name, bool firstLeg) gdi.addItem(name, lang.tl("Starttid"), STTime); if (!firstLeg) - gdi.addItem(name, lang.tl("Växling"), STChange); + gdi.addItem(name, lang.tl("Växling"), STChange); gdi.addItem(name, lang.tl("Tilldelad"), STDrawn); if (!firstLeg) gdi.addItem(name, lang.tl("Jaktstart"), STHunting); @@ -947,7 +947,7 @@ void oClass::setStartType(int leg, StartTypes st, bool throwError) updateChanged(); if (error && throwError) { - throw meosException("Ogiltig startmetod på sträcka X#" + itos(leg+1)); + throw meosException("Ogiltig startmetod pÃ¥ sträcka X#" + itos(leg+1)); } } @@ -972,7 +972,7 @@ void oClass::setLegType(int leg, LegTypes lt) } if (error) { - throw meosException("Ogiltig startmetod på sträcka X#" + itos(leg+1)); + throw meosException("Ogiltig startmetod pÃ¥ sträcka X#" + itos(leg+1)); } } @@ -1045,7 +1045,7 @@ void oClass::fillLegTypes(gdioutput &gdi, const string &name) types.push_back( make_pair(lang.tl("Valbar"), LTParallelOptional)); types.push_back( make_pair(lang.tl("Extra"), LTExtra)); types.push_back( make_pair(lang.tl("Summera"), LTSum)); - types.push_back( make_pair(lang.tl("Medlöpare"), LTIgnore)); + types.push_back( make_pair(lang.tl("Medlöpare"), LTIgnore)); types.push_back( make_pair(lang.tl("Gruppera"), LTGroup)); gdi.addItem(name, types); @@ -1866,13 +1866,13 @@ void oClass::mergeClass(int classIdSec) { void oClass::getSplitMethods(vector< pair > &methods) { methods.clear(); methods.push_back(make_pair(lang.tl("Dela klubbvis"), SplitClub)); - methods.push_back(make_pair(lang.tl("Dela slumpmässigt"), SplitRandom)); + methods.push_back(make_pair(lang.tl("Dela slumpmässigt"), SplitRandom)); methods.push_back(make_pair(lang.tl("Dela efter ranking"), SplitRank)); methods.push_back(make_pair(lang.tl("Dela efter placering"), SplitResult)); methods.push_back(make_pair(lang.tl("Dela efter tid"), SplitTime)); - methods.push_back(make_pair(lang.tl("Jämna klasser (ranking)"), SplitRankEven)); - methods.push_back(make_pair(lang.tl("Jämna klasser (placering)"), SplitResultEven)); - methods.push_back(make_pair(lang.tl("Jämna klasser (tid)"), SplitTimeEven)); + methods.push_back(make_pair(lang.tl("Jämna klasser (ranking)"), SplitRankEven)); + methods.push_back(make_pair(lang.tl("Jämna klasser (placering)"), SplitResultEven)); + methods.push_back(make_pair(lang.tl("Jämna klasser (tid)"), SplitTimeEven)); } class ClassSplit { @@ -2497,8 +2497,8 @@ void oEvent::getPredefinedClassTypes(map &types) const { types[L"Vuxen"] = ctNormal; types[L"Ungdom"] = ctYouth; types[L"Motion"] = ctExercise; - types[L"Öppen"] = ctOpen; - types[L"Träning"] = ctTraining; + types[L"Öppen"] = ctOpen; + types[L"Träning"] = ctTraining; } const vector< pair > &oEvent::fillClassTypes(vector< pair > &out) @@ -2553,7 +2553,7 @@ void oEvent::getStartBlocks(vector &blocks, vector &starts) const map::iterator v = bs.find(it->getBlock()); if (v!=bs.end() && v->first!=0 && v->second!=it->getStart()) { - wstring msg = L"Ett startblock spänner över flera starter: X/Y#" + it->getStart() + L"#" + v->second; + wstring msg = L"Ett startblock spänner över flera starter: X/Y#" + it->getStart() + L"#" + v->second; throw meosException(msg.c_str()); } bs[it->getBlock()] = it->getStart(); @@ -2588,7 +2588,7 @@ Table *oEvent::getClassTB()//Table mode Table *table=new Table(this, 20, L"Klasser", "classes"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 200, false); oe->oClassData->buildTableCol(table); @@ -3920,7 +3920,7 @@ void oClass::getSeedingMethods(vector< pair > &methods) { methods.push_back(make_pair(lang.tl("Resultat"), SeedResult)); methods.push_back(make_pair(lang.tl("Tid"), SeedTime)); methods.push_back(make_pair(lang.tl("Ranking"), SeedRank)); - methods.push_back(make_pair(lang.tl("Poäng"), SeedPoints)); + methods.push_back(make_pair(lang.tl("Poäng"), SeedPoints)); } void oClass::drawSeeded(ClassSeedMethod seed, int leg, int firstStart, @@ -4133,7 +4133,7 @@ void oClass::initClassId(oEvent &oe) { long long extId = cls[k]->getExtIdentifier(); if (extId > 0) { if (id2Cls.count(extId)) { - throw meosException(L"Klasserna X och Y har samma externa id. Använd tabelläget för att ändra id.#" + + throw meosException(L"Klasserna X och Y har samma externa id. Använd tabelläget för att ändra id.#" + id2Cls[extId] + L"#" + cls[k]->getName()); } id2Cls[extId] = cls[k]->getName(); @@ -4459,4 +4459,4 @@ vector> oClass::getAllFees() const { ff.emplace_back(oe->formatCurrency(*it), *it); return ff; -} \ No newline at end of file +} diff --git a/code/oClass.h b/code/oClass.h index 33d1c05..8620e41 100644 --- a/code/oClass.h +++ b/code/oClass.h @@ -1,4 +1,4 @@ -// oClass.h: interface for the oClass class. +// oClass.h: interface for the oClass class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oClub.cpp b/code/oClub.cpp index 9623af1..d57af11 100644 --- a/code/oClub.cpp +++ b/code/oClub.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -191,7 +191,7 @@ pClub oEvent::getClubCreate(int Id, const wstring &createName) if (createName.empty()) { int id = oe->getVacantClub(true); //Not found. Auto add... - return getClubCreate(id, lang.tl("Klubblös")); + return getClubCreate(id, lang.tl("Klubblös")); } else { oClubList::iterator it; @@ -296,7 +296,7 @@ Table *oEvent::getClubsTB()//Table mode Table *table=new Table(this, 20, L"Klubbar", TB_CLUBS); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 200, false); oe->oClubData->buildTableCol(table); @@ -456,7 +456,7 @@ void oEvent::viewClubMembers(gdioutput &gdi, int clubId) continue; if (it->getClubId() == clubId) { if (nr==0) - gdi.addString("", 1, "Löpare:"); + gdi.addString("", 1, "Löpare:"); gdi.addStringUT(0, it->getName() + L", " + it->getClass(true) ); nr++; } @@ -625,13 +625,13 @@ void oClub::generateInvoice(gdioutput &gdi, int &toPay, int &hasPaid, gdi.fillDown(); if (account.empty()) - gdi.addString("", 0, "Varning: Inget kontonummer angivet (Se tävlingsinställningar).").setColor(colorRed); + gdi.addString("", 0, "Varning: Inget kontonummer angivet (Se tävlingsinställningar).").setColor(colorRed); if (pdateI == 0) - gdi.addString("", 0, "Varning: Inget sista betalningsdatum angivet (Se tävlingsinställningar).").setColor(colorRed); + gdi.addString("", 0, "Varning: Inget sista betalningsdatum angivet (Se tävlingsinställningar).").setColor(colorRed); if (organizer.empty()) - gdi.addString("", 0, "Varning: Ingen organisatör/avsändare av fakturan angiven (Se tävlingsinställningar).").setColor(colorRed); + gdi.addString("", 0, "Varning: Ingen organisatör/avsändare av fakturan angiven (Se tävlingsinställningar).").setColor(colorRed); vector runners; oe->getClubRunners(getId(), runners); @@ -758,7 +758,7 @@ void oClub::generateInvoice(gdioutput &gdi, int &toPay, int &hasPaid, yp+=lh*2; - gdi.addStringUT(yp, xs, normalText, lang.tl(L"Vänligen betala senast ") + gdi.addStringUT(yp, xs, normalText, lang.tl(L"Vänligen betala senast ") + pdate + lang.tl(L" till ") + account + L"."); gdi.dropLine(2); //gdi.addStringUT(gdi.getCY()-1, 1, pageNewPage, blank, 0, 0); @@ -901,7 +901,7 @@ void oEvent::printInvoices(gdioutput &gdi, InvoicePrintType type, gdi.clearPage(true); k=0; gdi.dropLine(1); - gdi.addString("", boldLarge, "Sammanställning, ekonomi"); + gdi.addString("", boldLarge, "Sammanställning, ekonomi"); int yp = gdi.getCY() + 10; gdi.addString("", yp, 50, boldText, "Faktura nr"); @@ -1149,4 +1149,4 @@ bool oClub::operator<(const oClub &c) const { return CompareString(LOCALE_USER_DEFAULT, 0, name.c_str(), name.length(), c.name.c_str(), c.name.length()) == CSTR_LESS_THAN; -} \ No newline at end of file +} diff --git a/code/oClub.h b/code/oClub.h index b6c1fd3..3b72324 100644 --- a/code/oClub.h +++ b/code/oClub.h @@ -1,4 +1,4 @@ -// oClub.h: interface for the oClub class. +// oClub.h: interface for the oClub class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oControl.cpp b/code/oControl.cpp index ce5fdfa..b719889 100644 --- a/code/oControl.cpp +++ b/code/oControl.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -451,10 +451,10 @@ const vector< pair > &oEvent::fillControlTypes(vector< pairaddColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 150, false); table->addColumn("Status", 70, false); - table->addColumn("Stämpelkoder", 100, true); - table->addColumn("Antal löpare", 70, true, true); + table->addColumn("Stämpelkoder", 100, true); + table->addColumn("Antal löpare", 70, true, true); table->addColumn("Bomtid (max)", 70, true, true); table->addColumn("Bomtid (medel)", 70, true, true); table->addColumn("Bomtid (median)", 70, true, true); diff --git a/code/oControl.h b/code/oControl.h index 11c07d8..ae4c957 100644 --- a/code/oControl.h +++ b/code/oControl.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oCourse.cpp b/code/oCourse.cpp index 9f5f284..29fef57 100644 --- a/code/oCourse.cpp +++ b/code/oCourse.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -199,7 +199,7 @@ vector oCourse::getCourseReadable(int limit) const if (needFinish && !useLastAsFinish()) { if (!str.empty()) str += L"-"; - str += lang.tl("Mål").substr(0,1); + str += lang.tl("MÃ¥l").substr(0,1); } if (!str.empty()) { if (str.length()<5 && !res.empty()) @@ -246,7 +246,7 @@ pControl oCourse::doAddControl(int Id) return c; } else - throw meosException("För många kontroller."); + throw meosException("För mÃ¥nga kontroller."); } void oCourse::splitControls(const string &ctrls, vector &nr) { @@ -386,7 +386,7 @@ bool oCourse::fillCourse(gdioutput &gdi, const string &name) if (k == startIx) c += L" (" + lang.tl("Start") + L")"; else if (k == finishIx) - c += L" (" + lang.tl("Mål") + L")"; + c += L" (" + lang.tl("MÃ¥l") + L")"; int multi = Controls[k]->getNumMulti(); int submulti = 0; @@ -410,7 +410,7 @@ bool oCourse::fillCourse(gdioutput &gdi, const string &name) offset += submulti; } if (finishIx == -1) - gdi.addItem(name, lang.tl("Mål"), -1); + gdi.addItem(name, lang.tl("MÃ¥l"), -1); return true; } @@ -785,7 +785,7 @@ double oCourse::getPartOfCourse(int start, int end) const const wstring &oCourse::getControlOrdinal(int controlIndex) const { if ( (controlIndex + 1 == nControls && useLastAsFinish()) || controlIndex == nControls) - return lang.tl("Mål"); + return lang.tl("MÃ¥l"); if (oe->dataRevision != cacheDataRevision) clearCache(); @@ -896,7 +896,7 @@ wstring oCourse::getCourseProblems() const } if (max_p < min_point) { - return L"Banans kontroller ger för få poäng för att täcka poängkravet."; + return L"Banans kontroller ger för fÃ¥ poäng för att täcka poängkravet."; } } return L""; @@ -974,7 +974,7 @@ void oCourse::setCommonControl(int ctrlId) { found++; } if (found == 0) - throw meosException("Kontroll X finns inte på banan#" + itos(ctrlId)); + throw meosException("Kontroll X finns inte pÃ¥ banan#" + itos(ctrlId)); } getDI().setInt("CControl", ctrlId); } diff --git a/code/oCourse.h b/code/oCourse.h index ab15e36..5dc3c54 100644 --- a/code/oCourse.h +++ b/code/oCourse.h @@ -1,4 +1,4 @@ -// oCourse.h: interface for the oCourse class. +// oCourse.h: interface for the oCourse class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oDataContainer.cpp b/code/oDataContainer.cpp index 2f6cb11..28d3078 100644 --- a/code/oDataContainer.cpp +++ b/code/oDataContainer.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -658,32 +658,32 @@ bool oDataContainer::saveDataFields(oBase *ob, gdioutput &gdi) { string oDataContainer::C_INT64(const string &name) { - return " "+name+" BIGINT NOT NULL DEFAULT 0, "; + return " `"+name+"` BIGINT NOT NULL DEFAULT 0, "; } string oDataContainer::C_INT(const string &name) { - return " "+name+" INT NOT NULL DEFAULT 0, "; + return " `"+name+"` INT NOT NULL DEFAULT 0, "; } string oDataContainer::C_SMALLINT(const string &name) { - return " "+name+" SMALLINT NOT NULL DEFAULT 0, "; + return " `"+name+"` SMALLINT NOT NULL DEFAULT 0, "; } string oDataContainer::C_TINYINT(const string &name) { - return " "+name+" TINYINT NOT NULL DEFAULT 0, "; + return " `"+name+"` TINYINT NOT NULL DEFAULT 0, "; } string oDataContainer::C_SMALLINTU(const string &name) { - return " "+name+" SMALLINT UNSIGNED NOT NULL DEFAULT 0, "; + return " `"+name+"` SMALLINT UNSIGNED NOT NULL DEFAULT 0, "; } string oDataContainer::C_TINYINTU(const string &name) { - return " "+name+" TINYINT UNSIGNED NOT NULL DEFAULT 0, "; + return " `"+name+"` TINYINT UNSIGNED NOT NULL DEFAULT 0, "; } string oDataContainer::C_STRING(const string &name, int len) @@ -691,10 +691,10 @@ string oDataContainer::C_STRING(const string &name, int len) if (len>0) { char bf[16]; sprintf_s(bf, "%d", len); - return " "+name+" VARCHAR("+ bf +") NOT NULL DEFAULT '', "; + return " `"+name+"` VARCHAR("+ bf +") NOT NULL DEFAULT '', "; } else { - return " "+name+" MEDIUMTEXT NOT NULL, "; + return " `"+name+"` MEDIUMTEXT NOT NULL, "; } } @@ -848,47 +848,47 @@ string oDataContainer::generateSQLSet(const oBase *ob, bool forceSetAll) const { if (di.Type==oDTInt) { LPBYTE vd=LPBYTE(data)+di.Index; if (di.SubType == oIS8U) { - sprintf_s(bf, ", %s=%u", di.Name, (*((int *)vd))&0xFF); + sprintf_s(bf, ", `%s`=%u", di.Name, (*((int *)vd))&0xFF); sql+=bf; } else if (di.SubType == oIS16U) { - sprintf_s(bf, ", %s=%u", di.Name, (*((int *)vd))&0xFFFF); + sprintf_s(bf, ", `%s`=%u", di.Name, (*((int *)vd))&0xFFFF); sql+=bf; } else if (di.SubType == oIS8) { char r = (*((int *)vd))&0xFF; - sprintf_s(bf, ", %s=%d", di.Name, (int)r); + sprintf_s(bf, ", `%s`=%d", di.Name, (int)r); sql+=bf; } else if (di.SubType == oIS16) { short r = (*((int *)vd))&0xFFFF; - sprintf_s(bf, ", %s=%d", di.Name, (int)r); + sprintf_s(bf, ", `%s`=%d", di.Name, (int)r); sql+=bf; } else if (di.SubType != oIS64) { - sprintf_s(bf, ", %s=%d", di.Name, *((int *)vd)); + sprintf_s(bf, ", `%s`=%d", di.Name, *((int *)vd)); sql+=bf; } else { char tmp[32]; _i64toa_s(*((__int64 *)vd), tmp, 32, 10); - sprintf_s(bf, ", %s=%s", di.Name, tmp); + sprintf_s(bf, ", `%s`=%s", di.Name, tmp); sql+=bf; } } else if (di.Type==oDTString) { LPBYTE vd=LPBYTE(data)+di.Index; - sprintf_s(bf, ", %s='%s'", di.Name, SQL_quote((wchar_t *)vd).c_str()); + sprintf_s(bf, ", `%s`='%s'", di.Name, SQL_quote((wchar_t *)vd).c_str()); sql+=bf; } else if (di.Type==oDTStringDynamic) { const wstring &str = (*strptr)[0][di.Index]; - sprintf_s(bf, ", %s='%s'", di.Name, SQL_quote(str.c_str()).c_str()); + sprintf_s(bf, ", `%s`='%s'", di.Name, SQL_quote(str.c_str()).c_str()); sql+=bf; } else if (di.Type==oDTStringArray) { const wstring str = encodeArray((*strptr)[di.Index]); - sprintf_s(bf, ", %s='%s'", di.Name, SQL_quote(str.c_str()).c_str()); + sprintf_s(bf, ", `%s`='%s'", di.Name, SQL_quote(str.c_str()).c_str()); sql+=bf; } } diff --git a/code/oDataContainer.h b/code/oDataContainer.h index c39d1c1..197a18a 100644 --- a/code/oDataContainer.h +++ b/code/oDataContainer.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oEvent.cpp b/code/oEvent.cpp index bea65eb..fc21f89 100644 --- a/code/oEvent.cpp +++ b/code/oEvent.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -240,15 +240,15 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oEventData->addVariableCurrency("EliteFee", "Elitavgift"); oEventData->addVariableCurrency("EntryFee", "Normalavgift"); oEventData->addVariableCurrency("YouthFee", "Ungdomsavgift"); - oEventData->addVariableInt("YouthAge", oDataContainer::oIS8U, "Åldersgräns ungdom"); - oEventData->addVariableInt("SeniorAge", oDataContainer::oIS8U, "Åldersgräns äldre"); + oEventData->addVariableInt("YouthAge", oDataContainer::oIS8U, "Ã…ldersgräns ungdom"); + oEventData->addVariableInt("SeniorAge", oDataContainer::oIS8U, "Ã…ldersgräns äldre"); oEventData->addVariableString("Account", 30, "Konto"); oEventData->addVariableDate("PaymentDue", "Sista betalningsdatum"); - oEventData->addVariableDate("OrdinaryEntry", "Ordinarie anmälningsdatum"); - oEventData->addVariableString("LateEntryFactor", 6, "Avgiftshöjning (procent)"); + oEventData->addVariableDate("OrdinaryEntry", "Ordinarie anmälningsdatum"); + oEventData->addVariableString("LateEntryFactor", 6, "Avgiftshöjning (procent)"); - oEventData->addVariableString("Organizer", "Arrangör"); + oEventData->addVariableString("Organizer", "Arrangör"); oEventData->addVariableString("CareOf", 31, "c/o"); oEventData->addVariableString("Street", 32, "Adress"); @@ -262,8 +262,8 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oEventData->addVariableInt("SkipRunnerDb", oDataContainer::oIS8U, "Databas"); oEventData->addVariableInt("ExtId", oDataContainer::oIS64, "Externt Id"); - oEventData->addVariableInt("MaxTime", oDataContainer::oISTime, "Gräns för maxtid"); - oEventData->addVariableInt("DiffTime", oDataContainer::oISTime, "Stämplingsintervall, rogaining-patrull"); + oEventData->addVariableInt("MaxTime", oDataContainer::oISTime, "Gräns för maxtid"); + oEventData->addVariableInt("DiffTime", oDataContainer::oISTime, "Stämplingsintervall, rogaining-patrull"); oEventData->addVariableString("PreEvent", 64, ""); oEventData->addVariableString("PostEvent", 64, ""); @@ -274,7 +274,7 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oEventData->addVariableInt("CurrencyFactor", oDataContainer::oIS16, "Valutafaktor"); oEventData->addVariableString("CurrencySymbol", 5, "Valutasymbol"); oEventData->addVariableString("CurrencySeparator", 2, "Decimalseparator"); - oEventData->addVariableInt("CurrencyPreSymbol", oDataContainer::oIS8, "Symbolläge"); + oEventData->addVariableInt("CurrencyPreSymbol", oDataContainer::oIS8, "Symbolläge"); oEventData->addVariableString("CurrencyCode", 5, "Valutakod"); oEventData->addVariableInt("UTC", oDataContainer::oIS8, "UTC"); @@ -290,8 +290,8 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oEventData->addVariableString("EntryExtra", "Extra rader"); oEventData->addVariableInt("NumStages", oDataContainer::oIS8, "Antal etapper"); oEventData->addVariableInt("BibGap", oDataContainer::oIS8U, "Nummerlappshopp"); - oEventData->addVariableInt("LongTimes", oDataContainer::oIS8U, "Långa tider"); - oEventData->addVariableString("PayModes", "Betalsätt"); + oEventData->addVariableInt("LongTimes", oDataContainer::oIS8U, "LÃ¥nga tider"); + oEventData->addVariableString("PayModes", "Betalsätt"); oEventData->initData(this, dataSize); @@ -313,7 +313,7 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) vector< pair > eInvoice; eInvoice.push_back(make_pair(L"E", L"Elektronisk")); - eInvoice.push_back(make_pair(L"A", L"Elektronisk godkänd")); + eInvoice.push_back(make_pair(L"A", L"Elektronisk godkänd")); eInvoice.push_back(make_pair(L"P", L"Ej elektronisk")); eInvoice.push_back(make_pair(L"", makeDash(L"-"))); oClubData->addVariableEnum("Invoice", 1, "Faktura", eInvoice); @@ -325,9 +325,9 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oRunnerData->addVariableCurrency("Fee", "Anm. avgift"); oRunnerData->addVariableCurrency("CardFee", "Brickhyra"); oRunnerData->addVariableCurrency("Paid", "Betalat"); - oRunnerData->addVariableInt("PayMode", oDataContainer::oIS8U, "Betalsätt", &paymentMethod); + oRunnerData->addVariableInt("PayMode", oDataContainer::oIS8U, "Betalsätt", &paymentMethod); oRunnerData->addVariableCurrency("Taxable", "Skattad avgift"); - oRunnerData->addVariableInt("BirthYear", oDataContainer::oIS32, "Födelseår"); + oRunnerData->addVariableInt("BirthYear", oDataContainer::oIS32, "FödelseÃ¥r"); oRunnerData->addVariableString("Bib", 8, "Nummerlapp").zeroSortPadding = 5; oRunnerData->addVariableInt("Rank", oDataContainer::oIS16U, "Ranking"); //oRunnerData->addVariableInt("VacRank", oDataContainer::oIS16U, "Vak. ranking"); @@ -341,7 +341,7 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) sex.push_back(make_pair(L"F", L"Kvinna")); sex.push_back(make_pair(L"", makeDash(L"-"))); - oRunnerData->addVariableEnum("Sex", 1, "Kön", sex); + oRunnerData->addVariableEnum("Sex", 1, "Kön", sex); oRunnerData->addVariableString("Nationality", 3, "Nationalitet"); oRunnerData->addVariableString("Country", 23, "Land"); oRunnerData->addVariableInt("ExtId", oDataContainer::oIS64, "Externt Id"); @@ -351,10 +351,10 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oRunnerData->addVariableInt("RaceId", oDataContainer::oIS32, "Lopp-id", &oRunner::raceIdFormatter); oRunnerData->addVariableInt("TimeAdjust", oDataContainer::oIS16, "Tidsjustering"); - oRunnerData->addVariableInt("PointAdjust", oDataContainer::oIS32, "Poängjustering"); - oRunnerData->addVariableInt("TransferFlags", oDataContainer::oIS32, "Överföring"); + oRunnerData->addVariableInt("PointAdjust", oDataContainer::oIS32, "Poängjustering"); + oRunnerData->addVariableInt("TransferFlags", oDataContainer::oIS32, "Överföring"); oRunnerData->addVariableInt("Shorten", oDataContainer::oIS8U, "Avkortning"); - oRunnerData->addVariableInt("EntrySource", oDataContainer::oIS32, "Källa"); + oRunnerData->addVariableInt("EntrySource", oDataContainer::oIS32, "Källa"); oRunnerData->addVariableInt("Heat", oDataContainer::oIS8U, "Heat"); oRunnerData->addVariableInt("Reference", oDataContainer::oIS32, "Referens"); @@ -366,7 +366,7 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oControlData->addVariableDecimal("latcrd", "Latitud", 6); oControlData->addVariableDecimal("longcrd", "Longitud", 6); - oControlData->addVariableInt("Rogaining", oDataContainer::oIS32, "Poäng"); + oControlData->addVariableInt("Rogaining", oDataContainer::oIS32, "Poäng"); oControlData->addVariableInt("Radio", oDataContainer::oIS8U, "Radio"); oCourseData=new oDataContainer(oCourse::dataSize); @@ -374,13 +374,13 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oCourseData->addVariableString("StartName", 16, "Start"); oCourseData->addVariableInt("Climb", oDataContainer::oIS16, "Stigning"); oCourseData->addVariableInt("StartIndex", oDataContainer::oIS32, "Startindex"); - oCourseData->addVariableInt("FinishIndex", oDataContainer::oIS32, "Målindex"); - oCourseData->addVariableInt("RPointLimit", oDataContainer::oIS32, "Poänggräns"); - oCourseData->addVariableInt("RTimeLimit", oDataContainer::oIS32, "Tidsgräns"); - oCourseData->addVariableInt("RReduction", oDataContainer::oIS32, "Poängreduktion"); + oCourseData->addVariableInt("FinishIndex", oDataContainer::oIS32, "MÃ¥lindex"); + oCourseData->addVariableInt("RPointLimit", oDataContainer::oIS32, "Poänggräns"); + oCourseData->addVariableInt("RTimeLimit", oDataContainer::oIS32, "Tidsgräns"); + oCourseData->addVariableInt("RReduction", oDataContainer::oIS32, "Poängreduktion"); oCourseData->addVariableInt("RReductionMethod", oDataContainer::oIS8U, "Reduktionsmetod"); - oCourseData->addVariableInt("FirstAsStart", oDataContainer::oIS8U, "Från första"); + oCourseData->addVariableInt("FirstAsStart", oDataContainer::oIS8U, "FrÃ¥n första"); oCourseData->addVariableInt("LastAsFinish", oDataContainer::oIS8U, "Till sista"); oCourseData->addVariableInt("CControl", oDataContainer::oIS16U, "Varvningskontroll"); //Common control index @@ -388,29 +388,29 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oClassData=new oDataContainer(oClass::dataSize); oClassData->addVariableInt("ExtId", oDataContainer::oIS64, "Externt Id"); - oClassData->addVariableString("LongName", 32, "Långt namn"); - oClassData->addVariableInt("LowAge", oDataContainer::oIS8U, "Undre ålder"); - oClassData->addVariableInt("HighAge", oDataContainer::oIS8U, "Övre ålder"); + oClassData->addVariableString("LongName", 32, "LÃ¥ngt namn"); + oClassData->addVariableInt("LowAge", oDataContainer::oIS8U, "Undre Ã¥lder"); + oClassData->addVariableInt("HighAge", oDataContainer::oIS8U, "Övre Ã¥lder"); oClassData->addVariableInt("HasPool", oDataContainer::oIS8U, "Banpool"); - oClassData->addVariableInt("AllowQuickEntry", oDataContainer::oIS8U, "Direktanmälan"); + oClassData->addVariableInt("AllowQuickEntry", oDataContainer::oIS8U, "Direktanmälan"); oClassData->addVariableString("ClassType", 40, "Klasstyp"); vector< pair > sexClass; - sexClass.push_back(make_pair(L"M", L"Män")); + sexClass.push_back(make_pair(L"M", L"Män")); sexClass.push_back(make_pair(L"F", L"Kvinnor")); sexClass.push_back(make_pair(L"B", L"Alla")); sexClass.push_back(make_pair(L"", makeDash(L"-"))); - oClassData->addVariableEnum("Sex", 1, "Kön", sexClass); + oClassData->addVariableEnum("Sex", 1, "Kön", sexClass); oClassData->addVariableString("StartName", 16, "Start"); oClassData->addVariableInt("StartBlock", oDataContainer::oIS8U, "Block"); oClassData->addVariableInt("NoTiming", oDataContainer::oIS8U, "Ej tidtagning"); oClassData->addVariableInt("FreeStart", oDataContainer::oIS8U, "Fri starttid"); - oClassData->addVariableInt("IgnoreStart", oDataContainer::oIS8U, "Ej startstämpling"); + oClassData->addVariableInt("IgnoreStart", oDataContainer::oIS8U, "Ej startstämpling"); firstStartDefiner = new RelativeTimeFormatter("FirstStart"); - oClassData->addVariableInt("FirstStart", oDataContainer::oIS32, "Första start", firstStartDefiner); + oClassData->addVariableInt("FirstStart", oDataContainer::oIS32, "Första start", firstStartDefiner); intervalDefiner = new AbsoluteTimeFormatter("StartInterval"); oClassData->addVariableInt("StartInterval", oDataContainer::oIS16, "Intervall", intervalDefiner); oClassData->addVariableInt("Vacant", oDataContainer::oIS8U, "Vakanser"); @@ -426,28 +426,28 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) vector< pair > statusClass; statusClass.push_back(make_pair(L"", L"OK")); - statusClass.push_back(make_pair(L"IR", L"Struken med återbetalning")); - statusClass.push_back(make_pair(L"I", L"Struken utan återbetalning")); + statusClass.push_back(make_pair(L"IR", L"Struken med Ã¥terbetalning")); + statusClass.push_back(make_pair(L"I", L"Struken utan Ã¥terbetalning")); oClassData->addVariableEnum("Status", 2, "Status", statusClass); - oClassData->addVariableInt("DirectResult", oDataContainer::oIS8, "Resultat vid målstämpling"); + oClassData->addVariableInt("DirectResult", oDataContainer::oIS8, "Resultat vid mÃ¥lstämpling"); oClassData->addVariableString("Bib", 8, "Nummerlapp"); vector< pair > bibMode; - bibMode.push_back(make_pair(L"", L"Från lag")); - bibMode.push_back(make_pair(L"A", L"Lag + sträcka")); + bibMode.push_back(make_pair(L"", L"FrÃ¥n lag")); + bibMode.push_back(make_pair(L"A", L"Lag + sträcka")); bibMode.push_back(make_pair(L"F", L"Fritt")); oClassData->addVariableEnum("BibMode", 1, "Nummerlappshantering", bibMode); oClassData->addVariableInt("Unordered", oDataContainer::oIS8U, "Oordnade parallella"); oClassData->addVariableInt("Heat", oDataContainer::oIS8U, "Heat"); - oClassData->addVariableInt("Locked", oDataContainer::oIS8U, "Låst gaffling"); + oClassData->addVariableInt("Locked", oDataContainer::oIS8U, "LÃ¥st gaffling"); oClassData->addVariableString("Qualification", "Kvalschema"); oTeamData = new oDataContainer(oTeam::dataSize); oTeamData->addVariableCurrency("Fee", "Anm. avgift"); oTeamData->addVariableCurrency("Paid", "Betalat"); - oTeamData->addVariableInt("PayMode", oDataContainer::oIS8U, "Betalsätt"); + oTeamData->addVariableInt("PayMode", oDataContainer::oIS8U, "Betalsätt"); oTeamData->addVariableCurrency("Taxable", "Skattad avgift"); oTeamData->addVariableDate("EntryDate", "Anm. datum"); oTeamData->addVariableInt("EntryTime", oDataContainer::oIS32, "Anm. tid", &atf); @@ -458,9 +458,9 @@ oEvent::oEvent(gdioutput &gdi):oBase(0), gdibase(gdi) oTeamData->addVariableInt("Priority", oDataContainer::oIS8U, "Prioritering"); oTeamData->addVariableInt("SortIndex", oDataContainer::oIS16, "Sortering"); oTeamData->addVariableInt("TimeAdjust", oDataContainer::oIS16, "Tidsjustering"); - oTeamData->addVariableInt("PointAdjust", oDataContainer::oIS32, "Poängjustering"); - oTeamData->addVariableInt("TransferFlags", oDataContainer::oIS32, "Överföring"); - oTeamData->addVariableInt("EntrySource", oDataContainer::oIS32, "Källa"); + oTeamData->addVariableInt("PointAdjust", oDataContainer::oIS32, "Poängjustering"); + oTeamData->addVariableInt("TransferFlags", oDataContainer::oIS32, "Överföring"); + oTeamData->addVariableInt("EntrySource", oDataContainer::oIS32, "Källa"); oTeamData->addVariableInt("Heat", oDataContainer::oIS8U, "Heat"); generalResults.push_back(GeneralResultCtr("atcontrol", L"Result at a control", new ResultAtControl())); @@ -1081,7 +1081,7 @@ bool oEvent::open(const wstring &file, bool Import) if (ver) { wstring vs = ver.wget(); if (vs > getMajorVersion()) { - // Tävlingen är skapad i MeOS X. Data kan gå förlorad om du öppnar tävlingen.\n\nVill du fortsätta? + // Tävlingen är skapad i MeOS X. Data kan gÃ¥ förlorad om du öppnar tävlingen.\n\nVill du fortsätta? bool cont = gdibase.ask(L"warn:opennewversion#" + vs); if (!cont) return false; @@ -1343,7 +1343,7 @@ bool oEvent::open(const xmlparser &xml) { xmlobject xList = xml.getObject("Lists"); if (xList) { if (!listContainer->load(MetaListContainer::ExternalList, xList, true)) { - err = L"Visa listor är gjorda i en senare version av MeOS och kunde inte laddas."; + err = L"Visa listor är gjorda i en senare version av MeOS och kunde inte laddas."; } } } @@ -1514,7 +1514,7 @@ bool oEvent::saveRunnerDatabase(const wchar_t *filename, bool onlyLocal) void oEvent::updateRunnerDatabase() { - if (Name==L"!TESTTÄVLING") + if (Name==L"!TESTTÄVLING") return; if (useRunnerDb()) { @@ -1937,14 +1937,14 @@ int oEvent::getVacantClub(bool returnNoClubClub) { if (pc != 0 && !pc->isRemoved()) return noClubId; } - pClub pc = getClub(L"Klubblös"); + pClub pc = getClub(L"Klubblös"); if (pc == 0) pc = getClub(L"No club"); //eng if (pc == 0) - pc = getClub(lang.tl("Klubblös")); //other lang? + pc = getClub(lang.tl("Klubblös")); //other lang? if (pc == 0) - pc=getClubCreate(cNoClubId, lang.tl("Klubblös")); + pc=getClubCreate(cNoClubId, lang.tl("Klubblös")); noClubId = pc->getId(); return noClubId; @@ -1979,11 +1979,11 @@ int oEvent::getVacantClubIfExist(bool returnNoClubClub) const } if (noClubId == -1) return 0; - pClub pc=getClub(L"Klubblös"); + pClub pc=getClub(L"Klubblös"); if (pc == 0) - pc = getClub(L"Klubblös"); + pc = getClub(L"Klubblös"); if (pc == 0) - pc = getClub(lang.tl(L"Klubblös")); //other lang? + pc = getClub(lang.tl(L"Klubblös")); //other lang? if (!pc) { noClubId = -1; @@ -2130,7 +2130,7 @@ void oEvent::setName(const wstring &m) { wstring tn = trim(m); if (tn.empty()) - throw meosException("Tomt namn är inte tillåtet."); + throw meosException("Tomt namn är inte tillÃ¥tet."); if (tn != getName()) { Name = tn; @@ -2150,9 +2150,9 @@ wstring oEvent::getTitleName() const { if (empty()) return L""; if (HasPendingDBConnection) - return getName() + lang.tl(L" (på server)") + lang.tl(L" DATABASE ERROR"); + return getName() + lang.tl(L" (pÃ¥ server)") + lang.tl(L" DATABASE ERROR"); else if (isClient()) - return getName() + lang.tl(L" (på server)"); + return getName() + lang.tl(L" (pÃ¥ server)"); else return getName() + lang.tl(L" (lokalt)"); } @@ -2162,7 +2162,7 @@ void oEvent::setDate(const wstring &m) if (m!=Date) { int d = convertDateYMS(m, true); if (d <= 0) - throw meosException(L"Felaktigt datumformat 'X' (Använd ÅÅÅÅ-MM-DD).#" + m); + throw meosException(L"Felaktigt datumformat 'X' (Använd Ã…Ã…Ã…Ã…-MM-DD).#" + m); Date = formatDate(d, true); updateChanged(); } @@ -2809,7 +2809,7 @@ void oEvent::generateVacancyList(gdioutput &gdi, GUICALLBACK cb) nRunner++; } if (nVac==0) - gdi.addString("", y, x, 0, "Inga vakanser tillgängliga. Vakanser skapas vanligen vid lottning."); + gdi.addString("", y, x, 0, "Inga vakanser tillgängliga. Vakanser skapas vanligen vid lottning."); gdi.updateScrollbars(); } @@ -2958,7 +2958,7 @@ void oEvent::generateInForestList(gdioutput &gdi, GUICALLBACK cb, GUICALLBACK cb for (size_t k = 0; k < rr.size(); k++) { if (rr[k]->getId() != it->getId()) { if (otherRunners.empty()) { - otherRunners = lang.tl("Bricka X används också av: #" + itos(it->getCardNo())); + otherRunners = lang.tl("Bricka X används ocksÃ¥ av: #" + itos(it->getCardNo())); } else { otherRunners += L", "; @@ -2978,12 +2978,12 @@ void oEvent::generateInForestList(gdioutput &gdi, GUICALLBACK cb, GUICALLBACK cb if (hasPunch) { if (otherRunners.empty()) { - RECT rc = gdi.addString("", y, x+dx[2], 0, "(har stämplat)", dx[3]-dx[2]-4).textRect; + RECT rc = gdi.addString("", y, x+dx[2], 0, "(har stämplat)", dx[3]-dx[2]-4).textRect; capitalize(punches); gdi.addToolTip("", L"#" + punches, 0, &rc); } else { - // Återanvänd bricka + // Ã…teranvänd bricka RECT rc = gdi.addString("", y, x+dx[2], 0, L"#(" + lang.tl("reused card") + L")", dx[3]-dx[2]-4).textRect; capitalize(punches); gdi.addToolTip("", L"#" + punches + L". " + otherRunners, 0, &rc); @@ -3489,7 +3489,7 @@ void oEvent::checkDB() #ifdef _DEBUG if (k>0) { wchar_t bf[256]; - swprintf_s(bf, L"Databasen innehåller %d osynkroniserade ändringar.", k); + swprintf_s(bf, L"Databasen innehÃ¥ller %d osynkroniserade ändringar.", k); wstring msg(bf); for(int i=0;i < min(err.size(), 10);i++) msg+=wstring(L"\n")+err[i]; @@ -4522,9 +4522,9 @@ const vector< pair > &oEvent::fillStatus(vector< pairaddControl(rand()%(99-32)+32); - pc->addControl(100)->setName(L"Förvarning"); + pc->addControl(100)->setName(L"Förvarning"); return pc; } @@ -5055,7 +5055,7 @@ pClass oEvent::generateTestClass(int nlegs, int nrunners, void oEvent::generateTestCompetition(int nClasses, int nRunners, bool generateTeams) { if (nClasses > 0) { - oe->newCompetition(L"!TESTTÄVLING"); + oe->newCompetition(L"!TESTTÄVLING"); oe->setZeroTime(L"05:00:00"); oe->getMeOSFeatures().useAll(*oe); } @@ -5158,7 +5158,7 @@ void oEvent::generateTestCompetition(int nClasses, int nRunners, drawList(spec, useSOFTMethod, 1, drawAll); } else - cls->Name += L" Öppen"; + cls->Name += L" Öppen"; } else { int dr=cls->getNumDistinctRunners(); @@ -5237,7 +5237,7 @@ void oEvent::fillFees(gdioutput &gdi, const string &name, bool withAuto) const { vector< pair > ff; if (withAuto) - ff.push_back(make_pair(lang.tl(L"Från klassen"), -1)); + ff.push_back(make_pair(lang.tl(L"FrÃ¥n klassen"), -1)); for (set::iterator it = fees.begin(); it != fees.end(); ++it) ff.push_back(make_pair(formatCurrency(*it), *it)); @@ -5283,7 +5283,7 @@ void oEvent::fillLegNumbers(const set &cls, out.reserve(legs.size() + 1); for (set< pair >::const_iterator it = legs.begin(); it != legs.end(); ++it) { if (it->second == 0) { - out.push_back( make_pair(lang.tl("Sträcka X#" + itos(it->first + 1)), it->first)); + out.push_back( make_pair(lang.tl("Sträcka X#" + itos(it->first + 1)), it->first)); } } if (includeSubLegs) { @@ -5293,16 +5293,16 @@ void oEvent::fillLegNumbers(const set &cls, int sub = it->second - 1000; char bf[64]; char symb = 'a' + sub; - sprintf_s(bf, "Sträcka X#%d%c", leg+1, symb); + sprintf_s(bf, "Sträcka X#%d%c", leg+1, symb); out.push_back( make_pair(lang.tl(bf), (leg + 1) * 10000 + sub)); } } } if (isTeamList) - out.push_back(make_pair(lang.tl("Sista sträckan"), 1000)); + out.push_back(make_pair(lang.tl("Sista sträckan"), 1000)); else - out.push_back(make_pair(lang.tl("Alla sträckor"), 1000)); + out.push_back(make_pair(lang.tl("Alla sträckor"), 1000)); } void oEvent::generateTableData(const string &tname, Table &table, TableUpdateInfo &tui) @@ -5493,7 +5493,7 @@ bool oEvent::checkCardUsed(gdioutput &gdi, oRunner &runnerToAssignCard, int card } if (pold) { - swprintf_s(bf, (L"#" + lang.tl("Bricka %d används redan av %s och kan inte tilldelas.")).c_str(), + swprintf_s(bf, (L"#" + lang.tl("Bricka %d används redan av %s och kan inte tilldelas.")).c_str(), cardNo, pold->getCompleteIdentification().c_str()); gdi.alert(bf); return true; @@ -5535,8 +5535,8 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { if (it->sName.empty()) { if (!warnNoName) { warnNoName = true; - gdi.alert("Varning: deltagare med blankt namn påträffad. MeOS " - "kräver att alla deltagare har ett namn, och tilldelar namnet 'N.N.'"); + gdi.alert("Varning: deltagare med blankt namn pÃ¥träffad. MeOS " + "kräver att alla deltagare har ett namn, och tilldelar namnet 'N.N.'"); } it->setName(lang.tl("N.N."), false); it->synchronize(); @@ -5559,7 +5559,7 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { else if (type == oClassRelay) { if (!warnNoTeam) { gdi.alert(L"Deltagaren 'X' deltar i stafettklassen 'Y' men saknar lag. Klassens start- " - L"och resultatlistor kan därmed bli felaktiga.#" + it->getName() + + L"och resultatlistor kan därmed bli felaktiga.#" + it->getName() + L"#" + it->getClass(false)); warnNoTeam = true; } @@ -5567,7 +5567,7 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { else if (type == oClassPatrol) { if (!warnNoPatrol) { gdi.alert(L"Deltagaren 'X' deltar i patrullklassen 'Y' men saknar patrull. Klassens start- " - L"och resultatlistor kan därmed bli felaktiga.#" + it->getName() + + L"och resultatlistor kan därmed bli felaktiga.#" + it->getName() + + L"#" + it->getClass(false)); warnNoPatrol = true; } @@ -5588,8 +5588,8 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { if (it->sName.empty()) { if (!warnNoName) { warnNoName = true; - gdi.alert("Varning: lag utan namn påträffat. " - "MeOS kräver att alla lag har ett namn, och tilldelar namnet 'N.N.'"); + gdi.alert("Varning: lag utan namn pÃ¥träffat. " + "MeOS kräver att alla lag har ett namn, och tilldelar namnet 'N.N.'"); } it->setName(lang.tl("N.N."), false); it->synchronize(); @@ -5607,7 +5607,7 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { if (type == oClassIndividual) { if (!warnIndividualTeam) { gdi.alert(L"Laget 'X' deltar i individuella klassen 'Y'. Klassens start- och resultatlistor " - L"kan därmed bli felaktiga.#" + it->getName() + L"#" + it->getClass(true)); + L"kan därmed bli felaktiga.#" + it->getName() + L"#" + it->getClass(true)); warnIndividualTeam = true; } } @@ -5615,7 +5615,7 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { if (expectResult && !hasResult) - gdi.alert("Tävlingen innehåller inga resultat."); + gdi.alert("Tävlingen innehÃ¥ller inga resultat."); bool warnBadStart = false; @@ -5638,12 +5638,12 @@ void oEvent::sanityCheck(gdioutput &gdi, bool expectResult, int onlyThisClass) { LegTypes lt = it->getLegType(k); if (k==0 && (st == STChange || st == STHunting) && !warnBadStart) { warnBadStart = true; - gdi.alert(L"Klassen 'X' har jaktstart/växling på första sträckan.#" + it->getName()); + gdi.alert(L"Klassen 'X' har jaktstart/växling pÃ¥ första sträckan.#" + it->getName()); } if (st == STTime && it->getStartData(k)<=0 && !warnBadStart && (lt == LTNormal || lt == LTSum)) { warnBadStart = true; - gdi.alert(L"Ogiltig starttid i 'X' på sträcka Y.#" + it->getName() + L"#" + itow(k+1)); + gdi.alert(L"Ogiltig starttid i 'X' pÃ¥ sträcka Y.#" + it->getName() + L"#" + itow(k+1)); } } } @@ -5716,7 +5716,7 @@ int oEvent::interpretCurrency(double val, const wstring &cur) { if (_wcsicmp(L"sek", cur.c_str()) == 0) setCurrency(1, L"kr", L",", false); else if (_wcsicmp(L"eur", cur.c_str()) == 0) - setCurrency(100, L"€", L".", false);//WCS + setCurrency(100, L"€", L".", false);//WCS return int(floor(val * tCurrencyFactor+0.5)); } @@ -6663,7 +6663,7 @@ void oEvent::setPayMode(int id, const wstring &mode) { } if (!valid) - throw meosException("Betalningsättet behövs och kan inte tas bort."); + throw meosException("Betalningsättet behövs och kan inte tas bort."); lines.erase(lines.begin() + k); k--; @@ -6709,7 +6709,7 @@ static void checkValid(oEvent &oe, int &time, int delta, const wstring &name) { if (time > 24 * 3600) time -= 24 * 3600; if (time < 0 || time > 22 * 3600) { - throw meosException(L"X har en tid (Y) som inte är kompatibel med förändringen.#" + name + L"#" + oe.getAbsTime(srcTime)); + throw meosException(L"X har en tid (Y) som inte är kompatibel med förändringen.#" + name + L"#" + oe.getAbsTime(srcTime)); } } diff --git a/code/oEvent.h b/code/oEvent.h index 1dacb9f..7e61bd7 100644 --- a/code/oEvent.h +++ b/code/oEvent.h @@ -1,4 +1,4 @@ -// oEvent.h: interface for the oEvent class. +// oEvent.h: interface for the oEvent class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -1311,4 +1311,4 @@ public: const gdioutput &gdiBase() const {return gdibase;} }; -#endif // !defined(AFX_OEVENT_H__CDA15578_CB62_4EAD_96B9_3037355F5D48__INCLUDED_) \ No newline at end of file +#endif // !defined(AFX_OEVENT_H__CDA15578_CB62_4EAD_96B9_3037355F5D48__INCLUDED_) diff --git a/code/oEventDraw.cpp b/code/oEventDraw.cpp index a17044b..72cd14b 100644 --- a/code/oEventDraw.cpp +++ b/code/oEventDraw.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -260,10 +260,10 @@ void oEvent::optimizeStartOrder(gdioutput &gdi, DrawInfo &di, vector vector< vector > > startField(di.nFields); optimizeStartOrder(startField, di, cInfo, opt.nControls, opt.alternator); - gdi.addString("", 0, "Identifierar X unika inledningar på banorna.#" + itos(di.numDistinctInit)); - gdi.addString("", 0, "Största gruppen med samma inledning har X platser.#" + itos(di.numRunnerSameInitMax)); - gdi.addString("", 0, "Antal löpare på vanligaste banan X.#" + itos(di.numRunnerSameCourseMax)); - gdi.addString("", 0, "Kortast teoretiska startdjup utan krockar är X minuter.#" + itos(di.minimalStartDepth/60)); + gdi.addString("", 0, "Identifierar X unika inledningar pÃ¥ banorna.#" + itos(di.numDistinctInit)); + gdi.addString("", 0, "Största gruppen med samma inledning har X platser.#" + itos(di.numRunnerSameInitMax)); + gdi.addString("", 0, "Antal löpare pÃ¥ vanligaste banan X.#" + itos(di.numRunnerSameCourseMax)); + gdi.addString("", 0, "Kortast teoretiska startdjup utan krockar är X minuter.#" + itos(di.minimalStartDepth/60)); gdi.dropLine(); //Find last starter int last = opt.last; @@ -428,7 +428,7 @@ void oEvent::optimizeStartOrder(vector< vector > > &StartField, D di.firstStart = 0; if (di.minClassInterval < di.baseInterval) { - throw meosException("Startintervallet får inte vara kortare än basintervallet."); + throw meosException("Startintervallet fÃ¥r inte vara kortare än basintervallet."); } map otherClasses; @@ -696,10 +696,10 @@ void oEvent::drawList(const vector &spec, throw std::exception("Klass saknas"); if (spec[k].vacances>0 && pc->getClassType()==oClassRelay) - throw std::exception("Vakanser stöds ej i stafett."); + throw std::exception("Vakanser stöds ej i stafett."); if (spec[k].vacances>0 && (spec[k].leg>0 || pc->getParentClass())) - throw std::exception("Det går endast att sätta in vakanser på sträcka 1."); + throw std::exception("Det gÃ¥r endast att sätta in vakanser pÃ¥ sträcka 1."); if (size_t(spec[k].leg) < pc->legInfo.size()) { pc->legInfo[spec[k].leg].startMethod = STDrawn; //Automatically change start method @@ -970,7 +970,7 @@ void oEvent::drawListClumped(int ClassID, int FirstStart, int Interval, int Vaca throw std::exception("Klass saknas"); if (Vacances>0 && pc->getClassType()!=oClassIndividual) - throw std::exception("Lottningsmetoden stöds ej i den här klassen."); + throw std::exception("Lottningsmetoden stöds ej i den här klassen."); oRunnerList::iterator it; int nRunners=0; @@ -1143,7 +1143,7 @@ void oEvent::automaticDrawAll(gdioutput &gdi, const wstring &firstStart, if (iFirstStart>0) gdi.addString("", 1, "Gemensam start"); else { - gdi.addString("", 1, "Nollställer starttider"); + gdi.addString("", 1, "Nollställer starttider"); iFirstStart = 0; } gdi.refreshFast(); @@ -1159,12 +1159,12 @@ void oEvent::automaticDrawAll(gdioutput &gdi, const wstring &firstStart, } if (baseInterval<1 || baseInterval>60*60) - throw std::exception("Felaktigt tidsformat för intervall"); + throw std::exception("Felaktigt tidsformat för intervall"); int iFirstStart = getRelativeTime(firstStart); if (iFirstStart<=0) - throw std::exception("Felaktigt tidsformat för första start"); + throw std::exception("Felaktigt tidsformat för första start"); double vacancy = _wtof(vacances.c_str())/100; @@ -1277,7 +1277,7 @@ void oEvent::automaticDrawAll(gdioutput &gdi, const wstring &firstStart, continue; gdi.dropLine(); - gdi.addStringUT(1, lang.tl(L"Optimerar startfördelning ") + start); + gdi.addStringUT(1, lang.tl(L"Optimerar startfördelning ") + start); gdi.refreshFast(); gdi.dropLine(); vector cInfo; @@ -1299,7 +1299,7 @@ void oEvent::automaticDrawAll(gdioutput &gdi, const wstring &firstStart, const ClassInfo &ci = cInfo[k]; if (getClass(ci.classId)->getClassType() == oClassRelay) { - gdi.addString("", 0, L"Hoppar över stafettklass: X#" + + gdi.addString("", 0, L"Hoppar över stafettklass: X#" + getClass(ci.classId)->getName()).setColor(colorRed); continue; } @@ -1324,7 +1324,7 @@ void oEvent::automaticDrawAll(gdioutput &gdi, const wstring &firstStart, if (it->hasFreeStart()) continue; - gdi.addStringUT(0, lang.tl(L"Lottar efteranmälda: ") + it->getName()); + gdi.addStringUT(0, lang.tl(L"Lottar efteranmälda: ") + it->getName()); vector spec; spec.push_back(ClassDrawSpecification(it->getId(), leg, 0, 0, 0)); @@ -1338,7 +1338,7 @@ void oEvent::automaticDrawAll(gdioutput &gdi, const wstring &firstStart, gdi.dropLine(); if (drawn==0) - gdi.addString("", 1, "Klart: inga klasser behövde lottas.").setColor(colorGreen); + gdi.addString("", 1, "Klart: inga klasser behövde lottas.").setColor(colorGreen); else gdi.addString("", 1, "Klart: alla klasser lottade.").setColor(colorGreen); // Relay classes? diff --git a/code/oEventDraw.h b/code/oEventDraw.h index 2a2bcd0..dc71e00 100644 --- a/code/oEventDraw.h +++ b/code/oEventDraw.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oEventResult.cpp b/code/oEventResult.cpp index febe9bc..b1dc0e1 100644 --- a/code/oEventResult.cpp +++ b/code/oEventResult.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oEventSQL.cpp b/code/oEventSQL.cpp index 08d1bbc..1e8902c 100644 --- a/code/oEventSQL.cpp +++ b/code/oEventSQL.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -145,7 +145,7 @@ bool oEvent::msSynchronize(oBase *ob) if (ret==1) { gdibase.RemoveFirstInfoBox("sqlwarning"); - gdibase.addInfoBox("sqlwarning", L"Varning: ändringar i X blev överskrivna#" + ob->getInfo(), 5000); + gdibase.addInfoBox("sqlwarning", L"Varning: ändringar i X blev överskrivna#" + ob->getInfo(), 5000); } return ret!=0; } @@ -502,14 +502,14 @@ bool oEvent::uploadSynchronize() if ( !msOpenDatabase(this) ){ char bf[256]; msGetErrorState(bf); - string error = string("Kunde inte öppna databasen (X).#") + bf; + string error = string("Kunde inte öppna databasen (X).#") + bf; throw std::exception(error.c_str()); } if ( !msSynchronizeUpdate(this) ) { char bf[256]; msGetErrorState(bf); - string error = string("Kunde inte ladda upp tävlingen (X).#") + bf; + string error = string("Kunde inte ladda upp tävlingen (X).#") + bf; throw std::exception(error.c_str()); } @@ -518,13 +518,13 @@ bool oEvent::uploadSynchronize() if (stat == opStatusFail) { char bf[256]; msGetErrorState(bf); - string error = string("Kunde inte ladda upp löpardatabasen (X).#") + bf; + string error = string("Kunde inte ladda upp löpardatabasen (X).#") + bf; throw meosException(error); } else if (stat == opStatusWarning) { char bf[256]; msGetErrorState(bf); - gdibase.addInfoBox("", wstring(L"Kunde inte ladda upp löpardatabasen (X).#") + gdibase.widen(bf), 5000); + gdibase.addInfoBox("", wstring(L"Kunde inte ladda upp löpardatabasen (X).#") + gdibase.widen(bf), 5000); } HasDBConnection=true; @@ -600,7 +600,7 @@ bool oEvent::readSynchronize(const CompetitionInfo &ci) char bf[256]; msGetErrorState(bf); - string err = string("Kunde inte öppna tävlingen (X)#") + bf; + string err = string("Kunde inte öppna tävlingen (X)#") + bf; throw std::exception(err.c_str()); } else if (ret == 1) { @@ -906,7 +906,7 @@ void oEvent::closeDBConnection() if (!oe->empty() && hadDB) { save(); - Name+=L" (Lokal kopia från: " + gdibase.widen(serverName) + L")"; + Name+=L" (Lokal kopia frÃ¥n: " + gdibase.widen(serverName) + L")"; wstring cn = currentNameId + L"." + gdibase.widen(serverName) + L".meos"; getUserFile(CurrentFile, cn.c_str()); serverName.clear(); @@ -972,7 +972,7 @@ void oEvent::dropDatabase() if (strlen(bf)>0) throw std::exception(bf); - throw std::exception("Operationen misslyckades. Orsak okänd."); + throw std::exception("Operationen misslyckades. Orsak okänd."); } clear(); } diff --git a/code/oEventSpeaker.cpp b/code/oEventSpeaker.cpp index 04469ff..354f1e8 100644 --- a/code/oEventSpeaker.cpp +++ b/code/oEventSpeaker.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -433,7 +433,7 @@ void renderRowSpeakerList(const oSpeakerObject &r, const oSpeakerObject *next_r, else if (type == 3) { if (r.status <= StatusOK) { if (r.priority < 0) { - row.push_back(SpeakerString(normalText, lang.tl(L"[Återställ]"))); + row.push_back(SpeakerString(normalText, lang.tl(L"[Ã…terställ]"))); row.back().moveKey = "M" + itos(ownerId); } else{ @@ -632,13 +632,13 @@ void oEvent::speakerList(gdioutput &gdi, int ClassId, int leg, int ControlId, } } if (stages.size()>1 && istage < stages.size()) - cname += lang.tl(L", Sträcka X#" + itow(stages[istage].second)); + cname += lang.tl(L", Sträcka X#" + itow(stages[istage].second)); if (ControlId != oPunch::PunchFinish && crs) { cname += L", " + crs->getRadioName(ControlId); } else { - cname += lang.tl(L", Mål"); + cname += lang.tl(L", MÃ¥l"); } int y=gdi.getCY()+5; @@ -738,7 +738,7 @@ void oEvent::speakerList(gdioutput &gdi, int ClassId, int leg, int ControlId, oSpeakerObject *so = toRender[k].first; if (so) { if (rendered == false) { - gdi.addString("", y+4, x, boldSmall, "Övriga"); + gdi.addString("", y+4, x, boldSmall, "Övriga"); y+=lh+5, rendered=true; } renderRowSpeakerList(gdi, 3, *so, x, y, toRender[k].second, dx); @@ -818,21 +818,21 @@ struct TimeRunner { wstring getOrder(int k) { wstring str; if (k==1) - str = L"första"; + str = L"första"; else if (k==2) str = L"andra"; else if (k==3) str = L"tredje"; else if (k==4) - str = L"fjärde"; + str = L"fjärde"; else if (k==5) str = L"femte"; else if (k==6) - str = L"sjätte"; + str = L"sjätte"; else if (k==7) str = L"sjunde"; else if (k==8) - str = L"åttonde"; + str = L"Ã¥ttonde"; else if (k==9) str = L"nionde"; else if (k==10) @@ -852,7 +852,7 @@ wstring getNumber(int k) { if (k==1) str = L"etta"; else if (k==2) - str = L"tvåa"; + str = L"tvÃ¥a"; else if (k==3) str = L"trea"; else if (k==4) @@ -864,7 +864,7 @@ wstring getNumber(int k) { else if (k==7) str = L"sjua"; else if (k==8) - str = L"åtta"; + str = L"Ã¥tta"; else if (k==9) str = L"nia"; else if (k==10) @@ -1165,13 +1165,13 @@ void getTimeAfterDetail(wstring &detail, int timeAfter, int deltaTime, bool wasA wstring aTimeS = getTimeDesc(timeAfter, 0); if (timeAfter > 0) { if (!wasAfter || deltaTime == 0) - detail = L"är X efter#" + aTimeS; + detail = L"är X efter#" + aTimeS; else { wstring deltaS = getTimeDesc(deltaTime, 0); if (deltaTime > 0) - detail = L"är X efter; har tappat Y#" + aTimeS + L"#" + deltaS; + detail = L"är X efter; har tappat Y#" + aTimeS + L"#" + deltaS; else - detail = L"är X efter; har tagit in Y#" + aTimeS + L"#" + deltaS; + detail = L"är X efter; har tagit in Y#" + aTimeS + L"#" + deltaS; } } else if (timeAfter < 0) { @@ -1181,7 +1181,7 @@ void getTimeAfterDetail(wstring &detail, int timeAfter, int deltaTime, bool wasA if (deltaTime > 0) detail = L"leder med X; har tappat Y.#" + aTimeS + L"#" + deltaS; else if (deltaTime < 0) - detail = L"leder med X; sprang Y snabbare än de jagande.#" + aTimeS + L"#" + deltaS; + detail = L"leder med X; sprang Y snabbare än de jagande.#" + aTimeS + L"#" + deltaS; else detail = L"leder med X#" + aTimeS; } @@ -1198,12 +1198,12 @@ void oEvent::timeLinePrognose(TempResultMap &results, TimeRunner &tr, int prelT, wstring msg; if (radioNumber > 0) { if (p == 1) - msg = L"väntas till X om någon minut, och kan i så fall ta ledningen.#" + rname; + msg = L"väntas till X om nÃ¥gon minut, och kan i sÃ¥ fall ta ledningen.#" + rname; else - msg = L"väntas till X om någon minut, och kan i så fall ta en Y plats.#" + rname + getOrder(p); + msg = L"väntas till X om nÃ¥gon minut, och kan i sÃ¥ fall ta en Y plats.#" + rname + getOrder(p); } else - msg = L"väntas till X om någon minut.#" + rname; + msg = L"väntas till X om nÃ¥gon minut.#" + rname; oTimeLine::Priority mp = oTimeLine::PMedium; if (p <= (3 + prio * 3)) @@ -1392,21 +1392,21 @@ int oEvent::setupTimeLineEvents(vector &started, const vector< pair &started, const vector< pair &expectedFinish = expectedAtNext.back(); @@ -1485,26 +1485,26 @@ int oEvent::setupTimeLineEvents(vector &started, const vector< pairgetCompleteIdentification() + L"#" + timeS; else - msg = locverb + L" på X plats med tiden Y.#" + + msg = locverb + L" pÃ¥ X plats med tiden Y.#" + getOrder(place) + L"#" + timeS; } else { - msg = locverb + L" på delad X plats med tiden Y.#" + getOrder(place) + + msg = locverb + L" pÃ¥ delad X plats med tiden Y.#" + getOrder(place) + L"#" + timeS; } } @@ -1547,9 +1547,9 @@ int oEvent::setupTimeLineEvents(vector &started, const vector< pair(t, tl)); wstring msg; if (r.getStatus() != StatusDQ) - msg = L"är inte godkänd."; + msg = L"är inte godkänd."; else - msg = L"är diskvalificerad."; + msg = L"är diskvalificerad."; tlit->second.setMessage(msg); } diff --git a/code/oFreeImport.cpp b/code/oFreeImport.cpp index 5410434..39d5a46 100644 --- a/code/oFreeImport.cpp +++ b/code/oFreeImport.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -1168,7 +1168,7 @@ void oFreeImport::init(const oRunnerList &r, const oClubList &clb, const oClassL swprintf_s(bf, L"%s%d K", clsPrefix[k], ages[j]); classDB.insert(bf); - swprintf_s(bf, L"%s%d Lång", clsPrefix[k], ages[j]); + swprintf_s(bf, L"%s%d LÃ¥ng", clsPrefix[k], ages[j]); classDB.insert(bf); swprintf_s(bf, L"%s%d Kort", clsPrefix[k], ages[j]); classDB.insert(bf); @@ -1188,7 +1188,7 @@ void oFreeImport::init(const oRunnerList &r, const oClubList &clb, const oClassL } } classDB.insert(L"L"); - classDB.insert(L"Lång"); + classDB.insert(L"LÃ¥ng"); classDB.insert(L"E"); classDB.insert(L"Elit"); classDB.insert(L"Elite"); @@ -1198,20 +1198,20 @@ void oFreeImport::init(const oRunnerList &r, const oClubList &clb, const oClassL classDB.insert(L"Insk."); classDB.insert(L"Inskolning"); classDB.insert(L"M"); - classDB.insert(L"ÖM"); + classDB.insert(L"ÖM"); classDB.insert(L"Motion"); classDB.insert(L"K"); classDB.insert(L"Kort"); classDB.insert(L"Mellan"); - classDB.insert(L"Svår"); - classDB.insert(L"Lätt"); - classDB.insert(L"Kortlätt"); - classDB.insert(L"Långsvår"); + classDB.insert(L"SvÃ¥r"); + classDB.insert(L"Lätt"); + classDB.insert(L"Kortlätt"); + classDB.insert(L"LÃ¥ngsvÃ¥r"); classDB.insert(L"km"); classDB.insert(L"Short"); classDB.insert(L"Long"); - classDB.insert(L"Öppen"); - classDB.insert(L"Ö"); + classDB.insert(L"Öppen"); + classDB.insert(L"Ö"); classDB.insert(L"Ungdom"); classDB.insert(L"Ung."); classDB.insert(L"U"); @@ -1221,11 +1221,11 @@ void oFreeImport::init(const oRunnerList &r, const oClubList &clb, const oClassL classDB.insert(L"U4"); for (int j=1;j<10;j++) { - swprintf_s(bf, L"Ö%d", j); + swprintf_s(bf, L"Ö%d", j); classDB.insert(bf); - swprintf_s(bf, L"Ö %d", j); + swprintf_s(bf, L"Ö %d", j); classDB.insert(bf); - swprintf_s(bf, L"Öppen %d", j); + swprintf_s(bf, L"Öppen %d", j); classDB.insert(bf); swprintf_s(bf, L"D%d", j); classDB.insert(bf); @@ -1238,11 +1238,11 @@ bool oFreeImport::isHeaderWord(const wstring &word) const { if (headerWords.empty()) { headerWords.insert(canonizeName(L"namn")); headerWords.insert(canonizeName(L"klass")); - headerWords.insert(canonizeName(L"ålder")); - headerWords.insert(canonizeName(L"anmälda")); - headerWords.insert(canonizeName(L"anmälningar")); + headerWords.insert(canonizeName(L"Ã¥lder")); + headerWords.insert(canonizeName(L"anmälda")); + headerWords.insert(canonizeName(L"anmälningar")); headerWords.insert(canonizeName(L"deltagare")); - headerWords.insert(canonizeName(L"löpare")); + headerWords.insert(canonizeName(L"löpare")); headerWords.insert(canonizeName(L"bricka")); headerWords.insert(canonizeName(L"starttid")); headerWords.insert(canonizeName(L"nummer")); @@ -1254,7 +1254,7 @@ bool oFreeImport::isHeaderWord(const wstring &word) const { headerWords.insert(canonizeName(L"pinne")); headerWords.insert(canonizeName(L"nummerlapp")); headerWords.insert(canonizeName(L"SI")); - headerWords.insert(canonizeName(L"förening")); + headerWords.insert(canonizeName(L"förening")); headerWords.insert(canonizeName(L"rank")); headerWords.insert(canonizeName(L"ranking")); headerWords.insert(canonizeName(L"nr-lapp")); diff --git a/code/oFreeImport.h b/code/oFreeImport.h index 8044a18..35dacf1 100644 --- a/code/oFreeImport.h +++ b/code/oFreeImport.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oFreePunch.cpp b/code/oFreePunch.cpp index ac97270..8b9a3f0 100644 --- a/code/oFreePunch.cpp +++ b/code/oFreePunch.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -150,13 +150,13 @@ bool oFreePunch::canRemove() const Table *oEvent::getPunchesTB()//Table mode { if (tables.count("punch") == 0) { - Table *table=new Table(this, 20, L"Stämplingar", "punches"); + Table *table=new Table(this, 20, L"Stämplingar", "punches"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 150, false); + table->addColumn("Ändrad", 150, false); table->addColumn("Bricka", 70, true); table->addColumn("Kontroll", 70, true); table->addColumn("Tid", 70, false); - table->addColumn("Löpare", 170, false); + table->addColumn("Löpare", 170, false); table->addColumn("Lag", 170, false); tables["punch"] = table; table->addOwnership(); @@ -254,7 +254,7 @@ bool oFreePunch::setType(const wstring &t, bool databaseUpdate) { else { if (t == lang.tl("Check")) ttype = oPunch::PunchCheck; - else if (t == lang.tl("Mål")) + else if (t == lang.tl("MÃ¥l")) ttype = oPunch::PunchFinish; if (t == lang.tl("Start")) ttype = oPunch::PunchStart; diff --git a/code/oFreePunch.h b/code/oFreePunch.h index 7200132..7a60dab 100644 --- a/code/oFreePunch.h +++ b/code/oFreePunch.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oImportExport.cpp b/code/oImportExport.cpp index 76cf348..5515c88 100644 --- a/code/oImportExport.cpp +++ b/code/oImportExport.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -131,22 +131,22 @@ bool oEvent::exportOECSV(const wchar_t *file, int languageTypeIndex, bool includ femaleString = "F"; break; case 2: // Svenska - csv.outputRow("Startnr;Bricka;Databas nr.;Efternamn;Förnamn;År;K;Block;ut;Start;Mål;Tid;Status;Klubb nr.;Namn;Ort;Land;Klass nr.;Kort;Lång;Num1;Num2;Num3;Text1;Text2;Text3;Adr. namn;Gata;Rad 2;Post nr.;Ort;Tel;Fax;E-post;Id/Club;Hyrd;Startavgift;Betalt;Bana nr.;Bana;km;Hm;Bana kontroller;Pl;Startstämpling;Målstämpling;Kontroll1;Stämplar1;Kontroll2;Stämplar2;Kontroll3;Stämplar3;Kontroll4;Stämplar4;Kontroll5;Stämplar5;Kontroll6;Stämplar6;Kontroll7;Stämplar7;Kontroll8;Stämplar8;Kontroll9;Stämplar9;Kontroll10;Stämplar10;(kan fortsätta).."); + csv.outputRow("Startnr;Bricka;Databas nr.;Efternamn;Förnamn;Ã…r;K;Block;ut;Start;MÃ¥l;Tid;Status;Klubb nr.;Namn;Ort;Land;Klass nr.;Kort;LÃ¥ng;Num1;Num2;Num3;Text1;Text2;Text3;Adr. namn;Gata;Rad 2;Post nr.;Ort;Tel;Fax;E-post;Id/Club;Hyrd;Startavgift;Betalt;Bana nr.;Bana;km;Hm;Bana kontroller;Pl;Startstämpling;MÃ¥lstämpling;Kontroll1;Stämplar1;Kontroll2;Stämplar2;Kontroll3;Stämplar3;Kontroll4;Stämplar4;Kontroll5;Stämplar5;Kontroll6;Stämplar6;Kontroll7;Stämplar7;Kontroll8;Stämplar8;Kontroll9;Stämplar9;Kontroll10;Stämplar10;(kan fortsätta).."); maleString = "M"; femaleString = "K"; break; case 3: // Deutsch - csv.outputRow("Stnr;Chip;Datenbank Id;Nachname;Vorname;Jg;G;Block;AK;Start;Ziel;Zeit;Wertung;Club-Nr.;Abk;Ort;Nat;Katnr;Kurz;Lang;Num1;Num2;Num3;Text1;Text2;Text3;Adr. Name;Straße;Zeile2;PLZ;Ort;Tel;Fax;EMail;Id/Verein;Gemietet;Startgeld;Bezahlt;Bahnnummer;Bahn;km;Hm;Bahn Posten;Pl;Startstempel;Zielstempel;Posten1;Stempel1;Posten2;Stempel2;Posten3;Stempel3;Posten4;Stempel4;Posten5;Stempel5;Posten6;Stempel6;Posten7;Stempel7;Posten8;Stempel8;Posten9;Stempel9;Posten10;Stempel10;(und weitere)..."); + csv.outputRow("Stnr;Chip;Datenbank Id;Nachname;Vorname;Jg;G;Block;AK;Start;Ziel;Zeit;Wertung;Club-Nr.;Abk;Ort;Nat;Katnr;Kurz;Lang;Num1;Num2;Num3;Text1;Text2;Text3;Adr. Name;Straße;Zeile2;PLZ;Ort;Tel;Fax;EMail;Id/Verein;Gemietet;Startgeld;Bezahlt;Bahnnummer;Bahn;km;Hm;Bahn Posten;Pl;Startstempel;Zielstempel;Posten1;Stempel1;Posten2;Stempel2;Posten3;Stempel3;Posten4;Stempel4;Posten5;Stempel5;Posten6;Stempel6;Posten7;Stempel7;Posten8;Stempel8;Posten9;Stempel9;Posten10;Stempel10;(und weitere)..."); maleString = "M"; femaleString = "W"; break; case 4: // Dansk - csv.outputRow("Stnr;Brik;Database ID;Efternavn;Fornavn;År;K;Blok;UFK;Start;Mål;Tid;Status;Klub nr.;Navn;Klub;Land;Klasse nr.;kort;Lang;Num1;Num2;Num3;Text1;Text2;Text3;Adr. navn;Gade;Linie2;Post nr.;Klub;Tlf.;Fax.;Email;Id/klub;Lejet;Startafgift;Betalt;Bane nr.;Bane;km;Hm;Poster på bane;Pl;Start-stempling;Mål-stempling;Post1;Klip1;Post2;Klip2;Post3;Klip3;Post4;Klip4;Post5;Klip5;Post6;Klip6;Post7;Klip7;Post8;Klip8;Post9;Klip9;Post10;Klip10;(måske mere)..."); + csv.outputRow("Stnr;Brik;Database ID;Efternavn;Fornavn;Ã…r;K;Blok;UFK;Start;MÃ¥l;Tid;Status;Klub nr.;Navn;Klub;Land;Klasse nr.;kort;Lang;Num1;Num2;Num3;Text1;Text2;Text3;Adr. navn;Gade;Linie2;Post nr.;Klub;Tlf.;Fax.;Email;Id/klub;Lejet;Startafgift;Betalt;Bane nr.;Bane;km;Hm;Poster pÃ¥ bane;Pl;Start-stempling;MÃ¥l-stempling;Post1;Klip1;Post2;Klip2;Post3;Klip3;Post4;Klip4;Post5;Klip5;Post6;Klip6;Post7;Klip7;Post8;Klip8;Post9;Klip9;Post10;Klip10;(mÃ¥ske mere)..."); maleString = "M"; femaleString = "K"; break; - case 5: // Français - csv.outputRow("N° dép.;Puce;Ident. base de données;Nom;Prénom;Né;S;Plage;nc;Départ;Arrivée;Temps;Evaluation;N° club;Nom;Ville;Nat;N° cat.;Court;Long;Num1;Num2;Num3;Text1;Text2;Text3;Adr. nom;Rue;Ligne2;Code Post.;Ville;Tél.;Fax;E-mail;Id/Club;Louée;Engagement;Payé;Circuit N°;Circuit;km;m;Postes du circuit;Pl;Poinçon de départ;Arrivée (P);Poste1;Poinçon1;Poste2;Poinçon2;Poste3;Poinçon3;Poste4;Poinçon4;Poste5;Poinçon5;Poste6;Poinçon6;Poste7;Poinçon7;Poste8;Poinçon8;Poste9;Poinçon9;Poste10;Poinçon10;(peut être plus) ..."); + case 5: // Français + csv.outputRow("N° dép.;Puce;Ident. base de données;Nom;Prénom;Né;S;Plage;nc;Départ;Arrivée;Temps;Evaluation;N° club;Nom;Ville;Nat;N° cat.;Court;Long;Num1;Num2;Num3;Text1;Text2;Text3;Adr. nom;Rue;Ligne2;Code Post.;Ville;Tél.;Fax;E-mail;Id/Club;Louée;Engagement;Payé;Circuit N°;Circuit;km;m;Postes du circuit;Pl;Poinçon de départ;Arrivée (P);Poste1;Poinçon1;Poste2;Poinçon2;Poste3;Poinçon3;Poste4;Poinçon4;Poste5;Poinçon5;Poste6;Poinçon6;Poste7;Poinçon7;Poste8;Poinçon8;Poste9;Poinçon9;Poste10;Poinçon10;(peut être plus) ..."); maleString = "H"; femaleString = "F"; break; @@ -312,7 +312,7 @@ void oEvent::importXML_EntryData(gdioutput &gdi, const wstring &file, if (xo) { - gdi.addString("", 0, "Importerar anmälningar (IOF, xml)"); + gdi.addString("", 0, "Importerar anmälningar (IOF, xml)"); gdi.refreshFast(); int ent = 0, fail = 0, removed = 0; @@ -372,7 +372,7 @@ void oEvent::importXML_EntryData(gdioutput &gdi, const wstring &file, if (xo) { - gdi.addString("", 0, "Importerar anmälningar (IOF, xml)"); + gdi.addString("", 0, "Importerar anmälningar (IOF, xml)"); gdi.refreshFast(); int ent = 0, fail = 0; @@ -566,13 +566,13 @@ void oEvent::importXML_EntryData(gdioutput &gdi, const wstring &file, xo=xml.getObject("EventList"); if (xo) { - gdi.addString("", 0, "Importerar tävlingsdata (IOF, xml)"); + gdi.addString("", 0, "Importerar tävlingsdata (IOF, xml)"); gdi.refreshFast(); if (xo.getAttrib("iofVersion")) { IOF30Interface reader(this, false); reader.readEventList(gdi, xo); - gdi.addString("", 0, L"Tävlingens namn: X#" + getName()); + gdi.addString("", 0, L"Tävlingens namn: X#" + getName()); gdi.dropLine(); gdi.refreshFast(); } @@ -585,7 +585,7 @@ void oEvent::importXML_EntryData(gdioutput &gdi, const wstring &file, for(it=xl.begin(); it != xl.end(); ++it){ if (it->is("Event")){ addXMLEvent(*it); - gdi.addString("", 0, L"Tävlingens namn: X#" + getName()); + gdi.addString("", 0, L"Tävlingens namn: X#" + getName()); gdi.dropLine(); gdi.refreshFast(); break; @@ -692,7 +692,7 @@ bool oEvent::addXMLCompetitorDB(const xmlobject &xentry, int clubId) bool oEvent::addOECSVCompetitorDB(const vector &row) { - // Ident. base de données;Puce;Nom;Prénom;Né;S;N° club;Nom;Ville;Nat;N° cat.;Court;Long;Num1;Num2;Num3;E_Mail;Texte1;Texte2;Texte3;Adr. nom;Rue;Ligne2;Code Post.;Ville;Tél.;Fax;E-mail;Id/Club;Louée + // Ident. base de données;Puce;Nom;Prénom;Né;S;N° club;Nom;Ville;Nat;N° cat.;Court;Long;Num1;Num2;Num3;E_Mail;Texte1;Texte2;Texte3;Adr. nom;Rue;Ligne2;Code Post.;Ville;Tél.;Fax;E-mail;Id/Club;Louée enum { OEid = 0, OEcard = 1, OEsurname = 2, OEfirstname = 3, OEbirth = 4, OEsex = 5, OEclubno = 6, OEclub = 7, OEclubcity = 8, OEnat = 9, OEclassno = 10, OEclassshort = 11, OEclasslong = 12 }; @@ -1131,12 +1131,12 @@ void oEvent::importOECSV_Data(const wstring &oecsvfile, bool clear) { csvparser cp; list< vector > data; - gdibase.addString("",0,"Läser löpare..."); + gdibase.addString("",0,"Läser löpare..."); gdibase.refresh(); cp.parse(oecsvfile, data); - gdibase.addString("", 0, "Behandlar löpardatabasen").setColor(colorGreen); + gdibase.addString("", 0, "Behandlar löpardatabasen").setColor(colorGreen); gdibase.refresh(); @@ -1163,13 +1163,13 @@ void oEvent::importOECSV_Data(const wstring &oecsvfile, bool clear) { if (stat == opStatusFail) { char bf[256]; msGetErrorState(bf); - string error = string("Kunde inte ladda upp löpardatabasen (X).#") + bf; + string error = string("Kunde inte ladda upp löpardatabasen (X).#") + bf; throw meosException(error); } else if (stat == opStatusWarning) { char bf[256]; msGetErrorState(bf); - gdibase.addInfoBox("", wstring(L"Kunde inte ladda upp löpardatabasen (X).#") + gdibase.widen(bf), 5000); + gdibase.addInfoBox("", wstring(L"Kunde inte ladda upp löpardatabasen (X).#") + gdibase.widen(bf), 5000); } gdibase.addString("", 0, "Klart"); @@ -1187,12 +1187,12 @@ void oEvent::importXML_IOF_Data(const wstring &clubfile, if (clear) runnerDB->clearClubs(); - gdibase.addString("",0,"Läser klubbar..."); + gdibase.addString("",0,"Läser klubbar..."); gdibase.refresh(); xml_club.read(clubfile); - gdibase.addString("",0,"Lägger till klubbar..."); + gdibase.addString("",0,"Lägger till klubbar..."); gdibase.refresh(); xmlobject xo = xml_club.getObject("ClubList"); @@ -1224,7 +1224,7 @@ void oEvent::importXML_IOF_Data(const wstring &clubfile, xmlparser xml_cmp; xml_cmp.setProgress(gdibase.getHWNDTarget()); gdibase.dropLine(); - gdibase.addString("",0,"Läser löpare..."); + gdibase.addString("",0,"Läser löpare..."); gdibase.refresh(); xml_cmp.read(competitorfile); @@ -1233,7 +1233,7 @@ void oEvent::importXML_IOF_Data(const wstring &clubfile, runnerDB->clearRunners(); } - gdibase.addString("",0,"Lägger till löpare..."); + gdibase.addString("",0,"Lägger till löpare..."); gdibase.refresh(); int personCount = 0; @@ -1278,13 +1278,13 @@ void oEvent::importXML_IOF_Data(const wstring &clubfile, if (stat == opStatusFail) { char bf[256]; msGetErrorState(bf); - string error = string("Kunde inte ladda upp löpardatabasen (X).#") + bf; + string error = string("Kunde inte ladda upp löpardatabasen (X).#") + bf; throw meosException(error); } else if (stat == opStatusWarning) { char bf[256]; msGetErrorState(bf); - gdibase.addInfoBox("", wstring(L"Kunde inte ladda upp löpardatabasen (X).#") + gdibase.widen(bf), 5000); + gdibase.addInfoBox("", wstring(L"Kunde inte ladda upp löpardatabasen (X).#") + gdibase.widen(bf), 5000); } gdibase.addString("", 0, "Klart"); @@ -1450,7 +1450,7 @@ bool oEvent::addXMLControl(const xmlobject &xcontrol, int type) if (num == 0 && finish.length()>0) num = int(finish[finish.length()-1])-'0'; if (num > 0) - finish = lang.tl("Mål ") + itow(num); + finish = lang.tl("MÃ¥l ") + itow(num); pControl pc = getControl(getFinishIndex(num), true); pc->setNumbers(L""); pc->setName(finish); diff --git a/code/oListInfo.cpp b/code/oListInfo.cpp index ceb565a..f65d27f 100644 --- a/code/oListInfo.cpp +++ b/code/oListInfo.cpp @@ -1,4 +1,4 @@ -/********************i**************************************************** +/********************i**************************************************** MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -139,7 +139,7 @@ bool oListInfo::needRegenerate(const oEvent &oe) const { static void generateNBestHead(const oListParam &par, oListInfo &li, int ypos) { if (par.filterMaxPer > 0) - li.addHead(oPrintPost(lString, lang.tl(L"Visar de X bästa#" + itow(par.filterMaxPer)), normalText, 0, ypos)); + li.addHead(oPrintPost(lString, lang.tl(L"Visar de X bästa#" + itow(par.filterMaxPer)), normalText, 0, ypos)); } extern gdioutput *gdi_main; @@ -186,7 +186,7 @@ static void getResultTitle(const oEvent &oe, const oListParam &lp, wstring &titl title = lang.tl(L"Resultat - %s") + L", " + lang.tl(L"vid kontroll X#" + toS.first); } else { - wstring fromS = lang.tl(L"Start"), toS = lang.tl(L"Mål"); + wstring fromS = lang.tl(L"Start"), toS = lang.tl(L"MÃ¥l"); if (lp.useControlIdResultTo>0) { toS = getControlName(oe, lp.useControlIdResultTo).first; } @@ -803,7 +803,7 @@ const wstring &oEvent::formatListStringAux(const oPrintPost &pp, const oListPara if (par.useControlIdResultTo > 0) wcscpy_s(wbf, getFullControlName(*this, par.useControlIdResultTo).c_str()); else - wsptr = &lang.tl(L"Mål"); + wsptr = &lang.tl(L"MÃ¥l"); break; case lClassLength: if (pc) { @@ -2161,7 +2161,7 @@ void oEvent::generateList(gdioutput &gdi, bool reEvaluate, const oListInfo &li, } if (li.lp.getLegNumberCoded() != -1) { - listname += lang.tl(L" Sträcka X#" + li.lp.getLegName()); + listname += lang.tl(L" Sträcka X#" + li.lp.getLegName()); } generateListInternal(gdi, li, addHead); @@ -2899,7 +2899,7 @@ void oEvent::getListTypes(map &listMap, int filterResul /*{ oListInfo li; - li.Name=lang.tl("Stafettresultat, sträcka (STOR)"); + li.Name=lang.tl("Stafettresultat, sträcka (STOR)"); li.supportClasses = true; li.supportLegs = true; li.largeSize = true; @@ -2918,7 +2918,7 @@ void oEvent::getListTypes(map &listMap, int filterResul { oListInfo li; - li.Name=lang.tl(L"Stafettresultat, delsträckor"); + li.Name=lang.tl(L"Stafettresultat, delsträckor"); li.listType=li.EBaseTypeTeam; li.supportClasses = true; li.supportLegs = false; @@ -2936,7 +2936,7 @@ void oEvent::getListTypes(map &listMap, int filterResul /* { oListInfo li; - li.Name=lang.tl("Stafettresultat, sträcka"); + li.Name=lang.tl("Stafettresultat, sträcka"); li.listType=li.EBaseTypeTeam; li.supportClasses = true; li.supportLegs = true; @@ -2954,7 +2954,7 @@ void oEvent::getListTypes(map &listMap, int filterResul } { oListInfo li; - li.Name=lang.tl(L"Startlista, stafett (sträcka)"); + li.Name=lang.tl(L"Startlista, stafett (sträcka)"); li.listType=li.EBaseTypeTeam; li.supportClasses = true; li.supportLegs = true; @@ -3035,7 +3035,7 @@ void oEvent::getListTypes(map &listMap, int filterResul if (!filterResults) { { oListInfo li; - li.Name=lang.tl(L"Tävlingsrapport"); + li.Name=lang.tl(L"Tävlingsrapport"); li.supportClasses = false; li.supportLegs = false; li.listType=li.EBaseTypeNone; @@ -3044,7 +3044,7 @@ void oEvent::getListTypes(map &listMap, int filterResul { oListInfo li; - li.Name=lang.tl(L"Kontroll inför tävlingen"); + li.Name=lang.tl(L"Kontroll inför tävlingen"); li.supportClasses = false; li.supportLegs = false; li.listType=li.EBaseTypeNone; @@ -3071,7 +3071,7 @@ void oEvent::getListTypes(map &listMap, int filterResul { oListInfo li; - li.Name=lang.tl(L"Ekonomisk sammanställning"); + li.Name=lang.tl(L"Ekonomisk sammanställning"); li.supportClasses = false; li.supportLegs = false; li.listType=li.EBaseTypeNone; @@ -3081,7 +3081,7 @@ void oEvent::getListTypes(map &listMap, int filterResul /* { oListInfo li; - li.Name=lang.tl("Först-i-mål, klassvis"); + li.Name=lang.tl("Först-i-mÃ¥l, klassvis"); li.supportClasses = false; li.supportLegs = false; li.listType=li.EBaseTypeNone; @@ -3090,7 +3090,7 @@ void oEvent::getListTypes(map &listMap, int filterResul { oListInfo li; - li.Name=lang.tl("Först-i-mål, gemensam"); + li.Name=lang.tl("Först-i-mÃ¥l, gemensam"); li.supportClasses = false; li.supportLegs = false; li.listType=li.EBaseTypeNone; @@ -3108,7 +3108,7 @@ void oEvent::getListTypes(map &listMap, int filterResul { oListInfo li; - li.Name=lang.tl(L"Händelser - tidslinje"); + li.Name=lang.tl(L"Händelser - tidslinje"); li.supportClasses = true; li.supportLegs = false; li.listType=li.EBaseTypeNone; @@ -3134,7 +3134,7 @@ void oEvent::getListTypes(map &listMap, int filterResul { oListInfo li; - li.Name=lang.tl(L"Stafettresultat, sträcka (STOR)"); + li.Name=lang.tl(L"Stafettresultat, sträcka (STOR)"); li.supportClasses = true; li.supportLegs = false; li.largeSize = true; @@ -3588,7 +3588,7 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, li.addSubHead(oPrintPost(lClassName, L"", boldText, 0, 10)); li.addSubHead(oPrintPost(lClassResultFraction, L"", boldText, pos.get("club"), 10)); li.addSubHead(oPrintPost(lString, lang.tl(L"Tid"), boldText, pos.get("status"), 10)); - li.addSubHead(oPrintPost(lString, lang.tl(L"Avgörs kl"), boldText, pos.get("info"), 10)); + li.addSubHead(oPrintPost(lString, lang.tl(L"Avgörs kl"), boldText, pos.get("info"), 10)); li.addListPost(oPrintPost(lRunnerPlace, L"", normalText, pos.get("place"), 0)); li.addListPost(oPrintPost(lPatrolNameNames, L"", normalText, pos.get("name"), 0)); @@ -3605,7 +3605,7 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, break; case EStdTeamResultList: - li.addHead(oPrintPost(lCmpName, makeDash(lang.tl(L"Resultatsammanställning - %s")), boldLarge, 0,0)); + li.addHead(oPrintPost(lCmpName, makeDash(lang.tl(L"Resultatsammanställning - %s")), boldLarge, 0,0)); li.addHead(oPrintPost(lCmpDate, L"", normalText, 0, 25)); generateNBestHead(par, li, 25+lh); @@ -3666,9 +3666,9 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, case unused_EStdTeamResultListLeg: { wchar_t title[256]; if (li.lp.getLegNumberCoded() != 1000) - swprintf_s(title, (lang.tl(L"Resultat efter sträcka X#" + li.lp.getLegName())+L" - %%s").c_str()); + swprintf_s(title, (lang.tl(L"Resultat efter sträcka X#" + li.lp.getLegName())+L" - %%s").c_str()); else - swprintf_s(title, (lang.tl(L"Resultat efter sträckan")+L" - %%s").c_str()); + swprintf_s(title, (lang.tl(L"Resultat efter sträckan")+L" - %%s").c_str()); pos.add("place", 25); pos.add("team", li.getMaxCharWidth(this, par.selection, lTeamName, L"", normalText)); @@ -3710,9 +3710,9 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, case unused_EStdTeamResultListLegLARGE: { wchar_t title[256]; if (li.lp.getLegNumberCoded() != 1000) - swprintf_s(title, (L"%%s - "+lang.tl(L"sträcka X#" + li.lp.getLegName())).c_str()); + swprintf_s(title, (L"%%s - "+lang.tl(L"sträcka X#" + li.lp.getLegName())).c_str()); else - swprintf_s(title, (L"%%s - "+lang.tl(L"slutsträckan")).c_str()); + swprintf_s(title, (L"%%s - "+lang.tl(L"slutsträckan")).c_str()); pos.add("place", 25); pos.add("team", min(120, li.getMaxCharWidth(this, par.selection, lTeamName, L"", normalText))); @@ -3824,9 +3824,9 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, case EStdTeamStartListLeg: { wchar_t title[256]; if (li.lp.getLegNumberCoded() == 1000) - throw std::exception("Ogiltigt val av sträcka"); + throw std::exception("Ogiltigt val av sträcka"); - swprintf_s(title, lang.tl(L"Startlista %%s - sträcka X#" + li.lp.getLegName()).c_str()); + swprintf_s(title, lang.tl(L"Startlista %%s - sträcka X#" + li.lp.getLegName()).c_str()); li.addHead(oPrintPost(lCmpName, makeDash(title), boldLarge, 0,0)); li.addHead(oPrintPost(lCmpDate, L"", normalText, 0, 25)); @@ -3852,7 +3852,7 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, } case EStdIndMultiStartListLeg: if (li.lp.getLegNumberCoded() == 1000) - throw std::exception("Ogiltigt val av sträcka"); + throw std::exception("Ogiltigt val av sträcka"); //sprintf_s(title, lang.tl("Startlista lopp %d - %%s").c_str(), li.lp.legNumber+1); ln=li.lp.getLegInfo(sampleClass); @@ -3922,7 +3922,7 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, case EStdIndMultiResultListLegLARGE: if (li.lp.getLegNumberCoded() == 1000) - throw std::exception("Ogiltigt val av sträcka"); + throw std::exception("Ogiltigt val av sträcka"); ln=li.lp.getLegInfo(sampleClass); @@ -4208,7 +4208,7 @@ void oEvent::generateListInfoAux(oListParam &par, int lineHeight, oListInfo &li, } li.addSubHead(oPrintPost(lClassName, L"", boldText, pos.get("place"), 10)); - li.addSubHead(oPrintPost(lString, lang.tl(L"Poäng"), boldText, pos.get("points"), 10)); + li.addSubHead(oPrintPost(lString, lang.tl(L"Poäng"), boldText, pos.get("points"), 10)); li.addSubHead(oPrintPost(lString, lang.tl(L"Tid"), boldText, pos.get("status"), 10)); li.listType=li.EBaseTypeRunner; diff --git a/code/oListInfo.h b/code/oListInfo.h index 4057012..60a8445 100644 --- a/code/oListInfo.h +++ b/code/oListInfo.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oPunch.cpp b/code/oPunch.cpp index 6a049d6..3b8347d 100644 --- a/code/oPunch.cpp +++ b/code/oPunch.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -53,7 +53,7 @@ oPunch::~oPunch() wstring oPunch::getInfo() const { - return L"Stämpling "+oe->gdiBase().widen(codeString()); + return L"Stämpling "+oe->gdiBase().widen(codeString()); } string oPunch::codeString() const @@ -103,7 +103,7 @@ wstring oPunch::getSimpleString() const if (Type==oPunch::PunchStart) return lang.tl(L"starten (X)#" + time); else if (Type==oPunch::PunchFinish) - return lang.tl(L"målet (X)#" + time); + return lang.tl(L"mÃ¥let (X)#" + time); else if (Type==oPunch::PunchCheck) return lang.tl(L"check (X)#" + time); else @@ -175,7 +175,7 @@ const wstring &oPunch::getType(int t) { if (t==oPunch::PunchStart) return lang.tl("Start"); else if (t==oPunch::PunchFinish) - return lang.tl("Mål"); + return lang.tl("MÃ¥l"); else if (t==oPunch::PunchCheck) return lang.tl("Check"); else if (t>10 && t<10000) { diff --git a/code/oPunch.h b/code/oPunch.h index 70ef19d..6d25a07 100644 --- a/code/oPunch.h +++ b/code/oPunch.h @@ -1,4 +1,4 @@ -// oPunch.h: interface for the oPunch class. +// oPunch.h: interface for the oPunch class. // ////////////////////////////////////////////////////////////////////// @@ -28,7 +28,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oReport.cpp b/code/oReport.cpp index cbe6406..6093e69 100644 --- a/code/oReport.cpp +++ b/code/oReport.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -54,7 +54,7 @@ void oEvent::generateCompetitionReport(gdioutput &gdi) { gdi.fillDown(); - gdi.addString("", boldLarge, "Tävlingsstatistik"); + gdi.addString("", boldLarge, "Tävlingsstatistik"); int lh = gdi.getLineHeight(); @@ -112,7 +112,7 @@ void oEvent::generateCompetitionReport(gdioutput &gdi) types.clear(); types.push_back(ctOpen); - gdi.addString("", boldText, "Öppna klasser, vuxna"); + gdi.addString("", boldText, "Öppna klasser, vuxna"); set adultFee; set youthFee; @@ -136,7 +136,7 @@ void oEvent::generateCompetitionReport(gdioutput &gdi) started_sum += started; fee_sum += fee; - gdi.addString("", boldText, "Öppna klasser, ungdom"); + gdi.addString("", boldText, "Öppna klasser, ungdom"); cfee = getDCI().getInt("YouthFee"); if (cfee > 0) @@ -147,7 +147,7 @@ void oEvent::generateCompetitionReport(gdioutput &gdi) started_sum_y += started; fee_sum_y += fee; - gdi.addString("", boldText, "Sammanställning"); + gdi.addString("", boldText, "Sammanställning"); gdi.dropLine(); int xp = gdi.getCX(); int yp = gdi.getCY(); @@ -157,7 +157,7 @@ void oEvent::generateCompetitionReport(gdioutput &gdi) gdi.addString("", yp, xp+400, textRight|fontMedium, "Totalt"); yp+=lh; - gdi.addString("", yp, xp+0, fontMedium, "Anmälda"); + gdi.addString("", yp, xp+0, fontMedium, "Anmälda"); gdi.addStringUT(yp, xp+200, textRight|fontMedium, itos(entries_sum)); gdi.addStringUT(yp, xp+300, textRight|fontMedium, itos(entries_sum_y)); gdi.addStringUT(yp, xp+400, textRight|boldText, itos(entries_sum+entries_sum_y)); @@ -181,22 +181,22 @@ void oEvent::generateCompetitionReport(gdioutput &gdi) gdi.addStringUT(yp, xp+400, textRight|boldText, itos(entries_sum*15+entries_sum_y*5)); yp+=lh*2; - gdi.addString("", yp, xp+0,fontMedium, "Underlag för tävlingsavgift:"); + gdi.addString("", yp, xp+0,fontMedium, "Underlag för tävlingsavgift:"); int baseFee = (fee_sum+fee_sum_y) - (entries_sum*15+5*entries_sum_y); gdi.addStringUT(yp, xp+200,fontMedium, itos(baseFee)); yp+=lh; - gdi.addString("", yp, xp+0,fontMedium, "Total tävlingsavgift:"); + gdi.addString("", yp, xp+0,fontMedium, "Total tävlingsavgift:"); int cmpFee = int((baseFee * .34 * (baseFee - 5800)) / (200000)); gdi.addStringUT(yp, xp+200, fontMedium, itos(cmpFee)); yp+=lh; - gdi.addString("", yp, xp, fontMedium, "Avrundad tävlingsavgift:"); + gdi.addString("", yp, xp, fontMedium, "Avrundad tävlingsavgift:"); gdi.addStringUT(yp, xp+200, boldText, itos(((cmpFee+50))/100)+"00"); gdi.dropLine(); - gdi.addString("", boldText, "Geografisk fördelning"); - gdi.addString("", fontSmall, "Anmälda per distrikt"); + gdi.addString("", boldText, "Geografisk fördelning"); + gdi.addString("", fontSmall, "Anmälda per distrikt"); gdi.dropLine(0.2); yp = gdi.getCY(); vector runners; @@ -235,7 +235,7 @@ void oEvent::generateStatisticsPart(gdioutput &gdi, const vector gdi.addString("", yp, xp+dx[0], fontSmall, "Klass"); gdi.addString("", yp, xp+dx[1], textRight|fontSmall, "Anm. avg."); gdi.addString("", yp, xp+dx[2], textRight|fontSmall, "Grund avg."); - gdi.addString("", yp, xp+dx[3], textRight|fontSmall, "Anmälda"); + gdi.addString("", yp, xp+dx[3], textRight|fontSmall, "Anmälda"); gdi.addString("", yp, xp+dx[4], textRight|fontSmall, "Avgift"); gdi.addString("", yp, xp+dx[5], textRight|fontSmall, "Startande"); yp+=lh; @@ -309,30 +309,30 @@ void oEvent::getDistricts(vector &districts) { districts.resize(24); int i=0; - districts[i++]="Övriga"; + districts[i++]="Övriga"; districts[i++]="Blekinge"; - districts[i++]="Bohuslän-Dal"; + districts[i++]="Bohuslän-Dal"; districts[i++]="Dalarna"; districts[i++]="Gotland"; - districts[i++]="Gästrikland"; - districts[i++]="Göteborg"; + districts[i++]="Gästrikland"; + districts[i++]="Göteborg"; districts[i++]="Halland"; - districts[i++]="Hälsingland"; - districts[i++]="Jämtland-Härjedalan"; + districts[i++]="Hälsingland"; + districts[i++]="Jämtland-Härjedalan"; districts[i++]="Medelpad"; districts[i++]="Norrbotten"; - districts[i++]="Örebro län"; - districts[i++]="Skåne"; - districts[i++]="Småland"; + districts[i++]="Örebro län"; + districts[i++]="SkÃ¥ne"; + districts[i++]="SmÃ¥land"; districts[i++]="Stockholm"; - districts[i++]="Södermanland"; + districts[i++]="Södermanland"; districts[i++]="Uppland"; - districts[i++]="Värmland"; - districts[i++]="Västerbotten"; - districts[i++]="Västergötland"; - districts[i++]="Västmanland"; - districts[i++]="Ångermanland"; - districts[i++]="Östergötland"; + districts[i++]="Värmland"; + districts[i++]="Västerbotten"; + districts[i++]="Västergötland"; + districts[i++]="Västmanland"; + districts[i++]="Ã…ngermanland"; + districts[i++]="Östergötland"; } @@ -359,7 +359,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { int x=gdi.getCX(); int lh=gdi.getLineHeight(); - gdi.addStringUT(2, lang.tl(L"Rapport inför: ") + getName()); + gdi.addStringUT(2, lang.tl(L"Rapport inför: ") + getName()); gdi.addStringUT(1, getDate()); gdi.dropLine(); @@ -459,7 +459,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { const string Ellipsis="[ ... ]"; - swprintf_s(bf, lang.tl("Löpare utan klass: %d.").c_str(), no_class.size()); + swprintf_s(bf, lang.tl("Löpare utan klass: %d.").c_str(), no_class.size()); gdi.addStringUT(1, bf); i=0; @@ -474,7 +474,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { if (!no_class.empty()) gdi.addStringUT(1, Ellipsis); gdi.dropLine(); - swprintf_s(bf, lang.tl("Löpare utan bana: %d.").c_str(), no_course.size()); + swprintf_s(bf, lang.tl("Löpare utan bana: %d.").c_str(), no_course.size()); gdi.addStringUT(1, bf); i=0; @@ -490,7 +490,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { if (oe->getMeOSFeatures().hasFeature(MeOSFeatures::Clubs)) { gdi.dropLine(); - swprintf_s(bf, lang.tl("Löpare utan klubb: %d.").c_str(), no_club.size()); + swprintf_s(bf, lang.tl("Löpare utan klubb: %d.").c_str(), no_club.size()); gdi.addStringUT(1, bf); i=0; @@ -503,7 +503,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { } gdi.dropLine(); - swprintf_s(bf, lang.tl("Löpare utan starttid: %d.").c_str(), no_start.size()); + swprintf_s(bf, lang.tl("Löpare utan starttid: %d.").c_str(), no_start.size()); gdi.addStringUT(1, bf); i=0; @@ -519,7 +519,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { if (!no_start.empty()) gdi.addStringUT(1, Ellipsis); gdi.dropLine(); - swprintf_s(bf, lang.tl("Löpare utan SI-bricka: %d.").c_str(), no_card.size()); + swprintf_s(bf, lang.tl("Löpare utan SI-bricka: %d.").c_str(), no_card.size()); gdi.addStringUT(1, bf); i=0; @@ -562,7 +562,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { if (r_it->getCardNo() > 0 && r_it->getCardNo() < 300000) { if (!header) { gdi.dropLine(); - gdi.addStringUT(1, "Gamla brickor utan stöd för långa tider"); + gdi.addStringUT(1, "Gamla brickor utan stöd för lÃ¥nga tider"); header = true; } @@ -600,7 +600,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { } gdi.dropLine(); - gdi.addString("", 1, "Löpare som förekommer i mer än ett lag:"); + gdi.addString("", 1, "Löpare som förekommer i mer än ett lag:"); bool any = false; for (r_it=Runners.begin(); r_it != Runners.end(); ++r_it){ if (r_it->_objectmarker>1) { @@ -672,7 +672,7 @@ void oEvent::generatePreReport(gdioutput &gdi) { } } else - gdi.addString("", 0, "Löpare saknas"); + gdi.addString("", 0, "Löpare saknas"); } } gdi.dropLine(); diff --git a/code/oRunner.cpp b/code/oRunner.cpp index 48fa8f7..9ad800d 100644 --- a/code/oRunner.cpp +++ b/code/oRunner.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -1275,7 +1275,7 @@ bool oRunner::evaluateCard(bool doApply, vector & MissingPunches, int point_limit = course->getMinimumRogainingPoints(); if (point_limit>0 && tRogainingPoints & MissingPunches, } else if (FinishTime<=0) { *refStatus=RunnerStatus(max(int(StatusDNF), int(tStatus))); - tProblemDescription = L"Måltid saknas."; + tProblemDescription = L"MÃ¥ltid saknas."; FinishTime=0; } @@ -1335,7 +1335,7 @@ bool oRunner::evaluateCard(bool doApply, vector & MissingPunches, *refStatus = StatusMAX; //Maxtime if (!MissingPunches.empty()) { - tProblemDescription = L"Stämplingar saknas: X#" + itow(MissingPunches[0]); + tProblemDescription = L"Stämplingar saknas: X#" + itow(MissingPunches[0]); for (unsigned j = 1; j<3; j++) { if (MissingPunches.size()>j) tProblemDescription += L", " + itow(MissingPunches[j]); @@ -1370,7 +1370,7 @@ bool oRunner::evaluateCard(bool doApply, vector & MissingPunches, if (overTime > 0) { tRogainingOvertime = overTime; tReduction = course->calculateReduction(overTime); - tProblemDescription = L"Tidsavdrag: X poäng.#" + itow(tReduction); + tProblemDescription = L"Tidsavdrag: X poäng.#" + itow(tReduction); tRogainingPoints = max(0, tRogainingPoints - tReduction); } } @@ -2226,7 +2226,7 @@ void oAbstractRunner::setName(const wstring &n, bool manualUpdate) { wstring tn = trim(n); if (tn.empty()) - throw std::exception("Tomt namn är inte tillåtet."); + throw std::exception("Tomt namn är inte tillÃ¥tet."); if (tn != sName){ sName.swap(tn); if (manualUpdate) @@ -2240,7 +2240,7 @@ void oRunner::setName(const wstring &in, bool manualUpdate) wstring n = trim(in); if (n.empty()) - throw std::exception("Tomt namn är inte tillåtet."); + throw std::exception("Tomt namn är inte tillÃ¥tet."); for (size_t k = 0; k < n.length(); k++) { if (iswspace(n[k])) n[k] = ' '; @@ -3058,7 +3058,7 @@ Table *oEvent::getRunnersTB()//Table mode Table *table=new Table(this, 20, L"Deltagare", "runners"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 200, false); table->addColumn("Klass", 120, false); @@ -3066,12 +3066,12 @@ Table *oEvent::getRunnersTB()//Table mode table->addColumn("Klubb", 120, false); table->addColumn("Lag", 120, false); - table->addColumn("Sträcka", 70, true); + table->addColumn("Sträcka", 70, true); table->addColumn("SI", 90, true, false); table->addColumn("Start", 70, false, true); - table->addColumn("Mål", 70, false, true); + table->addColumn("MÃ¥l", 70, false, true); table->addColumn("Status", 70, false); table->addColumn("Tid", 70, false, true); table->addColumn("Plac.", 70, true, true); @@ -3081,7 +3081,7 @@ Table *oEvent::getRunnersTB()//Table mode table->addColumn("Tid in", 70, false, true); table->addColumn("Status in", 70, false, true); - table->addColumn("Poäng in", 70, true); + table->addColumn("Poäng in", 70, true); table->addColumn("Placering in", 70, true); tables["runner"] = table; @@ -3194,7 +3194,7 @@ bool oRunner::inputData(int id, const wstring &input, return true; case TID_RUNNER: if (trim(input).empty()) - throw std::exception("Tomt namn inte tillåtet."); + throw std::exception("Tomt namn inte tillÃ¥tet."); if (sName != input && tRealName != input) { updateFromDB(input, getClubId(), getClassId(false), getCardNo(), getBirthYear()); @@ -3211,7 +3211,7 @@ bool oRunner::inputData(int id, const wstring &input, evaluateCard(true, mp); s=getStartTime(); if (s!=t) - throw std::exception("Starttiden är definerad genom klassen eller löparens startstämpling."); + throw std::exception("Starttiden är definerad genom klassen eller löparens startstämpling."); synchronize(true); output = getStartTimeS(); return true; @@ -3223,7 +3223,7 @@ bool oRunner::inputData(int id, const wstring &input, evaluateCard(true, mp); s=getFinishTime(); if (s!=t) - throw std::exception("För att ändra måltiden måste löparens målstämplingstid ändras."); + throw std::exception("För att ändra mÃ¥ltiden mÃ¥ste löparens mÃ¥lstämplingstid ändras."); synchronize(true); output = getStartTimeS(); return true; @@ -3262,7 +3262,7 @@ bool oRunner::inputData(int id, const wstring &input, int s = getStatus(); evaluateCard(true, mp); if (s!=getStatus()) - throw std::exception("Status matchar inte data i löparbrickan."); + throw std::exception("Status matchar inte data i löparbrickan."); synchronize(true); output = getStatusS(); } @@ -3321,7 +3321,7 @@ void oRunner::fillInput(int id, vector< pair > &out, size_t &se } else if (id==TID_CLUB) { oe->fillClubs(out); - out.push_back(make_pair(lang.tl(L"Klubblös"), 0)); + out.push_back(make_pair(lang.tl(L"Klubblös"), 0)); selected = getClubId(); } else if (id==TID_STATUS) { @@ -3913,7 +3913,7 @@ void oRunner::printSplits(gdioutput &gdi) const { gdi.addStringUT(bnormal, getName() + L", " + getClass(true)); gdi.addStringUT(normal, getClub()); gdi.dropLine(0.5); - gdi.addStringUT(normal, lang.tl("Start: ") + getStartTimeS() + lang.tl(", Mål: ") + getFinishTimeS()); + gdi.addStringUT(normal, lang.tl("Start: ") + getStartTimeS() + lang.tl(", MÃ¥l: ") + getFinishTimeS()); wstring statInfo = lang.tl("Status: ") + getStatusS() + lang.tl(", Tid: ") + getRunningTimeS(); if (withSpeed && pc && pc->getLength() > 0) { int kmt = (getRunningTime() * 1000) / pc->getLength(); @@ -4031,7 +4031,7 @@ void oRunner::printSplits(gdioutput &gdi) const { } } - gdi.addString("", cy, cx, fontSmall, "Mål"); + gdi.addString("", cy, cx, fontSmall, "MÃ¥l"); sp = getSplitTime(splitTimes.size(), false); if (sp>0) { gdi.addStringUT(cy, cx+c2, fontSmall|textRight, formatTime(sp)); @@ -4159,12 +4159,12 @@ void oRunner::printSplits(gdioutput &gdi) const { } if (count < 3) - gdi.addString("", normal, "Underlag saknas för bomanalys."); + gdi.addString("", normal, "Underlag saknas för bomanalys."); else gdi.addString("", normal, "Inga bommar registrerade."); } else { - wstring out = lang.tl("Tidsförluster (kontroll-tid): "); + wstring out = lang.tl("Tidsförluster (kontroll-tid): "); for (size_t k = 0; k (wideFormat ? 80u : (withSpeed ? 40u : 35u))) { gdi.addStringUT(normal, out); @@ -4269,7 +4269,7 @@ void oRunner::printStartInfo(gdioutput &gdi) const { else info = lang.tl("Faktureras"); - gdi.addStringUT(fontSmall, lang.tl("Anmälningsavgift: ") + itow(fee) + L" (" + info + L")"); + gdi.addStringUT(fontSmall, lang.tl("Anmälningsavgift: ") + itow(fee) + L" (" + info + L")"); } gdi.dropLine(1); @@ -5198,13 +5198,13 @@ void oEvent::selectRunners(const wstring &classType, int lowAge, if (!firstDate.empty()) { firstD = convertDateYMS(firstDate, true); if (firstD <= 0) - throw meosException(L"Felaktigt datumformat 'X' (Använd ÅÅÅÅ-MM-DD).#" + firstDate); + throw meosException(L"Felaktigt datumformat 'X' (Använd Ã…Ã…Ã…Ã…-MM-DD).#" + firstDate); } if (!lastDate.empty()) { lastD = convertDateYMS(lastDate, true); if (lastD <= 0) - throw meosException(L"Felaktigt datumformat 'X' (Använd ÅÅÅÅ-MM-DD).#" + lastDate); + throw meosException(L"Felaktigt datumformat 'X' (Använd Ã…Ã…Ã…Ã…-MM-DD).#" + lastDate); } @@ -5225,7 +5225,7 @@ void oEvent::selectRunners(const wstring &classType, int lowAge, int age = it->getBirthAge(); if (age > 0 && (lowAge > 0 || highAge > 0)) { if (lowAge > highAge) - throw meosException("Undre åldersgränsen är högre än den övre."); + throw meosException("Undre Ã¥ldersgränsen är högre än den övre."); if (age < lowAge || age > highAge) continue; diff --git a/code/oRunner.h b/code/oRunner.h index 611a4a2..43cf015 100644 --- a/code/oRunner.h +++ b/code/oRunner.h @@ -1,4 +1,4 @@ -// oRunner.h: interface for the oRunner class. +// oRunner.h: interface for the oRunner class. // ////////////////////////////////////////////////////////////////////// @@ -27,7 +27,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/oTeam.cpp b/code/oTeam.cpp index a9827fa..892bff5 100644 --- a/code/oTeam.cpp +++ b/code/oTeam.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -314,7 +314,7 @@ void oTeam::setRunnerInternal(int k, pRunner r) if (Runners[k]) { Runners[k]->tInTeam = this; Runners[k]->tLeg = k; - if (Class && Class->getLegType(k) != LTGroup) + if (Class && (Runners[k]->Class==nullptr || Class->getLegType(k) != LTGroup)) Runners[k]->setClassId(getClassId(false), false); } updateChanged(); @@ -931,6 +931,8 @@ bool oTeam::apply(bool sync, pRunner source, bool setTmpOnly) { if (Runners[i]) { pClass actualClass = Runners[i]->getClassRef(true); + if (actualClass == nullptr) + actualClass = Class; if (Runners[i]->tInTeam && Runners[i]->tInTeam!=this) { Runners[i]->tInTeam->correctRemove(Runners[i]); } @@ -989,7 +991,7 @@ bool oTeam::apply(bool sync, pRunner source, bool setTmpOnly) { if ((lt==LTParallel || lt==LTParallelOptional) && i==0) { pc->setLegType(0, LTNormal); - throw std::exception("Första sträckan kan inte vara parallell."); + throw std::exception("Första sträckan kan inte vara parallell."); } if (lt==LTIgnore || lt==LTExtra) { if (st != STDrawn) @@ -1789,14 +1791,14 @@ Table *oEvent::getTeamsTB() //Table mode Table *table=new Table(this, 20, L"Lag(flera)", "teams"); table->addColumn("Id", 70, true, true); - table->addColumn("Ändrad", 70, false); + table->addColumn("Ändrad", 70, false); table->addColumn("Namn", 200, false); table->addColumn("Klass", 120, false); table->addColumn("Klubb", 120, false); table->addColumn("Start", 70, false, true); - table->addColumn("Mål", 70, false, true); + table->addColumn("MÃ¥l", 70, false, true); table->addColumn("Status", 70, false); table->addColumn("Tid", 70, false, true); @@ -1804,7 +1806,7 @@ Table *oEvent::getTeamsTB() //Table mode table->addColumn("Start nr.", 70, true, false); for (unsigned k = 0; k < nRunnerMax; k++) { - table->addColumn("Sträcka X#" + itos(k+1), 200, false, false); + table->addColumn("Sträcka X#" + itos(k+1), 200, false, false); table->addColumn("Bricka X#" + itos(k+1), 70, true, true); } nRunnerMaxStored = nRunnerMax; @@ -1813,7 +1815,7 @@ Table *oEvent::getTeamsTB() //Table mode table->addColumn("Tid in", 70, false, true); table->addColumn("Status in", 70, false, true); - table->addColumn("Poäng in", 70, true); + table->addColumn("Poäng in", 70, true); table->addColumn("Placering in", 70, true); tables["team"] = table; @@ -1952,7 +1954,7 @@ bool oTeam::inputData(int id, const wstring &input, apply(false, 0, false); s=getStartTime(); if (s!=t) - throw std::exception("Starttiden är definerad genom klassen eller löparens startstämpling."); + throw std::exception("Starttiden är definerad genom klassen eller löparens startstämpling."); synchronize(true); output = getStartTimeS(); return true; @@ -2044,7 +2046,7 @@ void oTeam::fillInput(int id, vector< pair > &out, size_t &sele } else if (id==TID_CLUB) { oe->fillClubs(out); - out.push_back(make_pair(lang.tl(L"Klubblös"), 0)); + out.push_back(make_pair(lang.tl(L"Klubblös"), 0)); selected = getClubId(); } else if (id==TID_STATUS || id==TID_INPUTSTATUS) { @@ -2067,7 +2069,7 @@ void oTeam::removeRunner(gdioutput &gdi, bool askRemoveRunner, int i) { //No need to delete multi runners. Disappears when parent is gone. if (p_old && !oe->isRunnerUsed(p_old->getId())){ - if (!askRemoveRunner || gdi.ask(L"Ska X raderas från tävlingen?#" + p_old->getName())){ + if (!askRemoveRunner || gdi.ask(L"Ska X raderas frÃ¥n tävlingen?#" + p_old->getName())){ vector oldR; oldR.push_back(p_old->getId()); oe->removeRunner(oldR); diff --git a/code/oTeam.h b/code/oTeam.h index 605c4f4..039f963 100644 --- a/code/oTeam.h +++ b/code/oTeam.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "oBase.h" diff --git a/code/oTeamEvent.cpp b/code/oTeamEvent.cpp index 4bd9268..a5ede33 100644 --- a/code/oTeamEvent.cpp +++ b/code/oTeamEvent.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -315,9 +315,9 @@ void oEvent::fillPredefinedCmp(gdioutput &gdi, const string &name) const gdi.clearList(name); gdi.addItem(name, lang.tl("Endast en bana"), PNoMulti); - gdi.addItem(name, lang.tl("Utan inställningar"), PNoSettings); + gdi.addItem(name, lang.tl("Utan inställningar"), PNoSettings); if (hasForked) { - gdi.addItem(name, lang.tl("En gafflad sträcka"), PForking); + gdi.addItem(name, lang.tl("En gafflad sträcka"), PForking); gdi.addItem(name, lang.tl("Banpool, gemensam start"), PPool); gdi.addItem(name, lang.tl("Banpool, lottad startlista"), PPoolDrawn); } @@ -331,9 +331,9 @@ void oEvent::fillPredefinedCmp(gdioutput &gdi, const string &name) const if (hasRelay) gdi.addItem(name, lang.tl("Stafett"), PRelay); if (hasMulti) - gdi.addItem(name, lang.tl("Tvåmannastafett"), PTwinRelay); + gdi.addItem(name, lang.tl("TvÃ¥mannastafett"), PTwinRelay); if (hasRelay) - gdi.addItem(name, lang.tl("Extralöparstafett"), PYouthRelay); + gdi.addItem(name, lang.tl("Extralöparstafett"), PYouthRelay); } void oEvent::setupRelayInfo(PredefinedTypes type, bool &useNLeg, bool &useStart) diff --git a/code/onlineinput.cpp b/code/onlineinput.cpp index 37511e5..b2ab327 100644 --- a/code/onlineinput.cpp +++ b/code/onlineinput.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -92,7 +92,7 @@ int OnlineInput::processButton(gdioutput &gdi, ButtonInfo &bi) { } else { gdi.check("UseUnitId", false); - gdi.setTextTranslate("CmpID_label", L"Tävlingens ID-nummer:", true); + gdi.setTextTranslate("CmpID_label", L"Tävlingens ID-nummer:", true); useUnitId = false; } gdi.setInputStatus("UseUnitId", useROCProtocol); @@ -102,7 +102,7 @@ int OnlineInput::processButton(gdioutput &gdi, ButtonInfo &bi) { if (useUnitId) gdi.setTextTranslate("CmpID_label", L"Enhetens ID-nummer (MAC):", true); else - gdi.setTextTranslate("CmpID_label", L"Tävlingens ID-nummer:", true); + gdi.setTextTranslate("CmpID_label", L"Tävlingens ID-nummer:", true); } return 0; @@ -131,10 +131,10 @@ void OnlineInput::settings(gdioutput &gdi, oEvent &oe, bool created) { startCancelInterval(gdi, "Save", created, IntervalSecond, time); gdi.addInput("URL", url, 40, 0, L"URL:", L"Till exempel X#http://www.input.org/online.php"); - gdi.addCheckbox("UseROC", "Använd ROC-protokoll", OnlineCB, useROCProtocol).setExtra(getId()); - gdi.addCheckbox("UseUnitId", "Använd enhets-id istället för tävlings-id", OnlineCB, useROCProtocol & useUnitId).setExtra(getId()); + gdi.addCheckbox("UseROC", "Använd ROC-protokoll", OnlineCB, useROCProtocol).setExtra(getId()); + gdi.addCheckbox("UseUnitId", "Använd enhets-id istället för tävlings-id", OnlineCB, useROCProtocol & useUnitId).setExtra(getId()); gdi.setInputStatus("UseUnitId", useROCProtocol); - gdi.addInput("CmpID", itow(cmpId), 10, 0, L"Tävlingens ID-nummer:"); + gdi.addInput("CmpID", itow(cmpId), 10, 0, L"Tävlingens ID-nummer:"); gdi.dropLine(1); @@ -143,11 +143,11 @@ void OnlineInput::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.fillRight(); gdi.addInput("Code", L"", 4, 0, L"Kod:"); gdi.addSelection("Function", 80, 200, 0, L"Funktion:"); - gdi.addItem("Function", lang.tl("Mål"), oPunch::PunchFinish); + gdi.addItem("Function", lang.tl("MÃ¥l"), oPunch::PunchFinish); gdi.addItem("Function", lang.tl("Start"), oPunch::PunchStart); gdi.addItem("Function", lang.tl("Check"), oPunch::PunchCheck); gdi.dropLine(); - gdi.addButton("SaveMapping", "Lägg till", OnlineCB).setExtra(getId()); + gdi.addButton("SaveMapping", "Lägg till", OnlineCB).setExtra(getId()); gdi.popX(); gdi.dropLine(2); gdi.addListBox("Mappings", 150, 100, 0, L"Definierade mappningar:", L"", true); @@ -171,7 +171,7 @@ void OnlineInput::save(oEvent &oe, gdioutput &gdi) { unitId = gdi.getText("CmpID"); if (xurl.empty()) { - throw meosException("URL måste anges."); + throw meosException("URL mÃ¥ste anges."); } url = xurl; @@ -190,7 +190,7 @@ void OnlineInput::status(gdioutput &gdi) gdi.popX(); gdi.dropLine(1); - gdi.addString("", 0, "Antal hämtade uppdateringar X (Y kb)#" + + gdi.addString("", 0, "Antal hämtade uppdateringar X (Y kb)#" + itos(importCounter-1) + "#" + itos(bytesImported/1024)); gdi.popX(); gdi.fillDown(); @@ -204,7 +204,7 @@ void OnlineInput::status(gdioutput &gdi) gdi.dropLine(1); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("OnlineInput", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("OnlineInput", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } @@ -315,7 +315,7 @@ void OnlineInput::processPunches(oEvent &oe, const xmlList &punches) { card = r->getCardNo(); } else { - rname=lang.tl("Okänd"); + rname=lang.tl("Okänd"); } if (time < 0) { time = 0; @@ -323,7 +323,7 @@ void OnlineInput::processPunches(oEvent &oe, const xmlList &punches) { } oe.addFreePunch(time, code, card, true); - addInfo(L"Löpare: X, kontroll: Y, kl Z#" + rname + L"#" + oPunch::getType(code) + L"#" + oe.getAbsTime(time)); + addInfo(L"Löpare: X, kontroll: Y, kl Z#" + rname + L"#" + oPunch::getType(code) + L"#" + oe.getAbsTime(time)); } } @@ -348,7 +348,7 @@ void OnlineInput::processPunches(oEvent &oe, list< vector > &rocData) { card = r->getCardNo(); } else { - rname=lang.tl("Okänd"); + rname=lang.tl("Okänd"); } if (time < 0) { @@ -359,7 +359,7 @@ void OnlineInput::processPunches(oEvent &oe, list< vector > &rocData) { lastImportedId = max(lastImportedId, punchId); - addInfo(L"Löpare: X, kontroll: Y, kl Z#" + rname + L"#" + oPunch::getType(code) + L"#" + oe.getAbsTime(time)); + addInfo(L"Löpare: X, kontroll: Y, kl Z#" + rname + L"#" + oPunch::getType(code) + L"#" + oe.getAbsTime(time)); } else throw meosException("Onlineservern svarade felaktigt."); diff --git a/code/onlineinput.h b/code/onlineinput.h index 83fd77b..617d07b 100644 --- a/code/onlineinput.h +++ b/code/onlineinput.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/onlineresults.cpp b/code/onlineresults.cpp index bfed77b..ef2be8c 100644 --- a/code/onlineresults.cpp +++ b/code/onlineresults.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -139,7 +139,7 @@ void OnlineResults::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.addCheckbox("Zip", "Packa stora filer (zip)", 0, zipFile); if (oe.hasPrevStage()) { - gdi.addCheckbox("IncludeTotal", "Inkludera resultat från tidigare etapper", 0, includeTotal); + gdi.addCheckbox("IncludeTotal", "Inkludera resultat frÃ¥n tidigare etapper", 0, includeTotal); InfoCompetition &ic = getInfoServer(); gdi.check("IncludeTotal", ic.includeTotalResults()); gdi.setInputStatus("IncludeTotal", dataType == 1); @@ -154,8 +154,8 @@ void OnlineResults::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.addInput("URL", url, 40, 0, L"", L"Till exempel X#http://www.results.org/online.php"); gdi.dropLine(2.5); gdi.popX(); - gdi.addInput("CmpID", itow(cmpId), 10, 0, L"Tävlingens ID-nummer:"); - gdi.addInput("Password", passwd, 15, 0, L"Lösenord:").setPassword(true); + gdi.addInput("CmpID", itow(cmpId), 10, 0, L"Tävlingens ID-nummer:"); + gdi.addInput("Password", passwd, 15, 0, L"Lösenord:").setPassword(true); enableURL(gdi, sendToURL); @@ -163,12 +163,12 @@ void OnlineResults::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.dropLine(5); gdi.fillRight(); - gdi.addCheckbox("ToFile", "Spara på disk", OnlineCB, sendToFile).setExtra(getId()); + gdi.addCheckbox("ToFile", "Spara pÃ¥ disk", OnlineCB, sendToFile).setExtra(getId()); gdi.addString("", 0, "Mapp:"); gdi.pushX(); gdi.addInput("FolderName", file, 30); - gdi.addButton("BrowseFolder", "Bläddra...", OnlineCB).setExtra(getId()); + gdi.addButton("BrowseFolder", "Bläddra...", OnlineCB).setExtra(getId()); gdi.dropLine(2.5); gdi.popX(); @@ -176,9 +176,9 @@ void OnlineResults::settings(gdioutput &gdi, oEvent &oe, bool created) { gdi.dropLine(2.8); gdi.popX(); - gdi.addInput("ExportScript", exportScript, 32, 0, L"Skript att köra efter export:"); + gdi.addInput("ExportScript", exportScript, 32, 0, L"Skript att köra efter export:"); gdi.dropLine(0.8); - gdi.addButton("BrowseScript", "Bläddra...", AutomaticCB); + gdi.addButton("BrowseScript", "Bläddra...", AutomaticCB); gdi.setCY(gdi.getHeight()); gdi.setCX(basex); @@ -276,7 +276,7 @@ void OnlineResults::save(oEvent &oe, gdioutput &gdi) { gdi.getSelection("Classes", classes); if (sendToFile) { if (folder.empty()) { - throw meosException("Mappnamnet får inte vara tomt."); + throw meosException("Mappnamnet fÃ¥r inte vara tomt."); } if (*folder.rbegin() == '/' || *folder.rbegin() == '\\') @@ -290,7 +290,7 @@ void OnlineResults::save(oEvent &oe, gdioutput &gdi) { if (sendToURL) { if (xurl.empty()) { - throw meosException("URL måste anges."); + throw meosException("URL mÃ¥ste anges."); } url = xurl; } @@ -351,7 +351,7 @@ void OnlineResults::status(gdioutput &gdi) gdi.dropLine(2); gdi.addButton("Stop", "Stoppa automaten", AutomaticCB).setExtra(getId()); gdi.fillDown(); - gdi.addButton("OnlineResults", "Inställningar...", AutomaticCB).setExtra(getId()); + gdi.addButton("OnlineResults", "Inställningar...", AutomaticCB).setExtra(getId()); gdi.popX(); } @@ -492,11 +492,11 @@ void OnlineResults::process(gdioutput &gdi, oEvent *oe, AutoSyncType ast) { if (res) res.getObjectString("status", tmp); if (tmp == "BADCMP") - throw meosException("Onlineservern svarade: Felaktigt tävlings-id"); + throw meosException("Onlineservern svarade: Felaktigt tävlings-id"); if (tmp == "BADPWD") - throw meosException("Onlineservern svarade: Felaktigt lösenord"); + throw meosException("Onlineservern svarade: Felaktigt lösenord"); if (tmp == "NOZIP") - throw meosException("Onlineservern svarade: ZIP stöds ej"); + throw meosException("Onlineservern svarade: ZIP stöds ej"); if (tmp == "ERROR") throw meosException("Onlineservern svarade: Serverfel"); @@ -555,4 +555,4 @@ wstring OnlineResults::getExportFileName() const { wchar_t bf[260]; swprintf_s(bf, L"%s\\%s%04d.xml", file.c_str(), prefix.c_str(), exportCounter);//WCS return bf; -} \ No newline at end of file +} diff --git a/code/onlineresults.h b/code/onlineresults.h index 5e109fc..08e9d16 100644 --- a/code/onlineresults.h +++ b/code/onlineresults.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/ospeaker.h b/code/ospeaker.h index 0f5e8c3..df58e25 100644 --- a/code/ospeaker.h +++ b/code/ospeaker.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ class oRunner; diff --git a/code/parser.cpp b/code/parser.cpp index b2fcb71..ce91c49 100644 --- a/code/parser.cpp +++ b/code/parser.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" diff --git a/code/parser.h b/code/parser.h index 933bfe1..894db51 100644 --- a/code/parser.h +++ b/code/parser.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/pdfwriter.cpp b/code/pdfwriter.cpp index f9f7078..7370713 100644 --- a/code/pdfwriter.cpp +++ b/code/pdfwriter.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/pdfwriter.h b/code/pdfwriter.h index a58c8fa..b5e2d4c 100644 --- a/code/pdfwriter.h +++ b/code/pdfwriter.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/prefseditor.cpp b/code/prefseditor.cpp index 9bd2b40..1f54a3f 100644 --- a/code/prefseditor.cpp +++ b/code/prefseditor.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" @@ -69,7 +69,7 @@ void PrefsEditor::showPrefs(gdioutput &gdi) { gdi.addString("value" + prefs[k].first, y, valuePos, 0, L"#" + val, editPos - valuePos, 0, L"Consolas;1"). setColor(selectColor(rawVal, prefs[k].second)).setExtra(prefs[k].second); - gdi.addButton(editPos, y - gdi.getLineHeight()/4, "Edit_" + prefs[k].first, "Ändra").setHandler(this); + gdi.addButton(editPos, y - gdi.getLineHeight()/4, "Edit_" + prefs[k].first, "Ändra").setHandler(this); wstring dkey = L"prefs" + gdi.widen(prefs[k].first); wstring desc = lang.tl(dkey); @@ -99,7 +99,7 @@ void PrefsEditor::handle(gdioutput &gdi, BaseInfo &data, GuiEventType type) { PropertyType type = (PropertyType)gdi.getBaseInfo(("value" + pref).c_str()).getExtraInt(); gdi.setData("EditPrefs", type); gdi.dropLine(); - gdi.addString("", fontMediumPlus, "Ändra X#" + pref); + gdi.addString("", fontMediumPlus, "Ändra X#" + pref); wstring dkey = L"prefs" + gdi.widen(pref); wstring desc = lang.tl(dkey); gdi.dropLine(); @@ -119,7 +119,7 @@ void PrefsEditor::handle(gdioutput &gdi, BaseInfo &data, GuiEventType type) { } gdi.dropLine(); gdi.fillRight(); - gdi.addButton("Save_" + pref, "Ändra").setHandler(this); + gdi.addButton("Save_" + pref, "Ändra").setHandler(this); gdi.addButton("Cancel", "Avbryt").setHandler(this); gdi.dropLine(3); diff --git a/code/prefseditor.h b/code/prefseditor.h index c876267..1e6165b 100644 --- a/code/prefseditor.h +++ b/code/prefseditor.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/printer.cpp b/code/printer.cpp index a999424..18ac5e2 100644 --- a/code/printer.cpp +++ b/code/printer.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/progress.cpp b/code/progress.cpp index 680149e..85b3837 100644 --- a/code/progress.cpp +++ b/code/progress.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/progress.h b/code/progress.h index 0683485..ea38294 100644 --- a/code/progress.h +++ b/code/progress.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/qualification_final.cpp b/code/qualification_final.cpp index b2d92c8..4108938 100644 --- a/code/qualification_final.cpp +++ b/code/qualification_final.cpp @@ -1,4 +1,4 @@ -#include "StdAfx.h" +#include "StdAfx.h" #include "qualification_final.h" @@ -76,7 +76,7 @@ void QualificationFinal::import(const wstring &file) { wstring name; cls.getObjectString("Name", name); if (name.empty()) - throw meosException("Klassen måste ha ett namn."); + throw meosException("Klassen mÃ¥ste ha ett namn."); int classId = cls.getObjectInt("id"); if (!(classId>0)) throw meosException("Id must be a positive integer."); diff --git a/code/qualification_final.h b/code/qualification_final.h index 0ac5247..c0ec041 100644 --- a/code/qualification_final.h +++ b/code/qualification_final.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/random.cpp b/code/random.cpp index 264d26e..974521d 100644 --- a/code/random.cpp +++ b/code/random.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/random.h b/code/random.h index cb439ee..6f9f692 100644 --- a/code/random.h +++ b/code/random.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/recorder.cpp b/code/recorder.cpp index d377e0f..6233303 100644 --- a/code/recorder.cpp +++ b/code/recorder.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" diff --git a/code/recorder.h b/code/recorder.h index 37e940c..d24d248 100644 --- a/code/recorder.h +++ b/code/recorder.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/resource.h b/code/resource.h index e452ca0..223c4e9 100644 --- a/code/resource.h +++ b/code/resource.h @@ -1,4 +1,4 @@ -//{{NO_DEPENDENCIES}} +//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by meos.rc // diff --git a/code/restserver.cpp b/code/restserver.cpp index 38d620a..ef2cdcf 100644 --- a/code/restserver.cpp +++ b/code/restserver.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/restserver.h b/code/restserver.h index 1223d73..4323031 100644 --- a/code/restserver.h +++ b/code/restserver.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/socket.cpp b/code/socket.cpp index f5efcff..b6297fa 100644 --- a/code/socket.cpp +++ b/code/socket.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/socket.h b/code/socket.h index 31a36db..d642e0b 100644 --- a/code/socket.h +++ b/code/socket.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/speakermonitor.cpp b/code/speakermonitor.cpp index 89461f1..db9ae53 100644 --- a/code/speakermonitor.cpp +++ b/code/speakermonitor.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -457,9 +457,9 @@ void SpeakerMonitor::getMessage(const oEvent::ResultEvent &res, if (res.status != StatusOK) { if (res.status != StatusDQ) - msg = L"är inte godkänd."; + msg = L"är inte godkänd."; else - msg = L"är diskvalificerad."; + msg = L"är diskvalificerad."; return; } @@ -539,14 +539,14 @@ void SpeakerMonitor::getMessage(const oEvent::ResultEvent &res, } if (finish) { - location = L"i mål"; - locverb = L"går i mål"; - thelocation = lang.tl(L"målet") + L"#"; + location = L"i mÃ¥l"; + locverb = L"gÃ¥r i mÃ¥l"; + thelocation = lang.tl(L"mÃ¥let") + L"#"; } else if (changeover) { - location = L"vid växeln"; - locverb = L"växlar"; - thelocation = lang.tl(L"växeln") + L"#"; + location = L"vid växeln"; + locverb = L"växlar"; + thelocation = lang.tl(L"växeln") + L"#"; } else { thelocation = crs ? (crs->getRadioName(res.control) + L"#") : L"#"; @@ -558,31 +558,31 @@ void SpeakerMonitor::getMessage(const oEvent::ResultEvent &res, if (finish || changeover) { if (res.place == 1) { if ((ahead == 0 && behind == 0) || firstTimes[key] == res.time) - msg = L"är först " + location + L" med tiden X.#" + timeS; + msg = L"är först " + location + L" med tiden X.#" + timeS; else if (!sharedPlace) { msg = L"tar ledningen med tiden X.#" + timeS; if (behind && res.place>2) { wstring stime(getTimeDesc(behind->runTime, totTime)); - details.push_back(L"är X före Y#" + stime + L"#" + behind->r->getCompleteIdentification(false)); + details.push_back(L"är X före Y#" + stime + L"#" + behind->r->getCompleteIdentification(false)); } } else - msg = L"går upp i delad ledning med tiden X.#" + timeS; + msg = L"gÃ¥r upp i delad ledning med tiden X.#" + timeS; } else { if (firstTimes[key] == res.time) { - msg = L"var först " + location + L" med tiden X.#" + timeS; + msg = L"var först " + location + L" med tiden X.#" + timeS; if (!sharedPlace) { - details.push_front(L"är nu på X plats med tiden Y.#" + + details.push_front(L"är nu pÃ¥ X plats med tiden Y.#" + getOrder(res.place) + L"#" + timeS); if (ahead && res.place != 2) { wstring stime(getTimeDesc(ahead->runTime, totTime)); - details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); + details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); } } else { - details.push_back(L"är nu på delad X plats med tiden Y.#" + getOrder(res.place) + + details.push_back(L"är nu pÃ¥ delad X plats med tiden Y.#" + getOrder(res.place) + L"#" + timeS); wstring share; getSharedResult(res, share); @@ -590,15 +590,15 @@ void SpeakerMonitor::getMessage(const oEvent::ResultEvent &res, } } else if (!sharedPlace) { - msg = locverb + L" på X plats med tiden Y.#" + + msg = locverb + L" pÃ¥ X plats med tiden Y.#" + getOrder(res.place) + L"#" + timeS; if (ahead && res.place != 2) { wstring stime(getTimeDesc(ahead->runTime, totTime)); - details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); + details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); } } else { - msg = locverb + L" på delad X plats med tiden Y.#" + getOrder(res.place) + + msg = locverb + L" pÃ¥ delad X plats med tiden Y.#" + getOrder(res.place) + L"#" + timeS; wstring share; getSharedResult(res, share); @@ -630,31 +630,31 @@ void SpeakerMonitor::getMessage(const oEvent::ResultEvent &res, else { if (res.place == 1) { if ((ahead == 0 && behind == 0) || res.time == firstTimes[key]) - msg = L"är först vid X med tiden Y.#" + thelocation + timeS; + msg = L"är först vid X med tiden Y.#" + thelocation + timeS; else if (!sharedPlace) { msg = L"tar ledningen vid X med tiden Y.#" + thelocation + timeS; if (behind) { wstring stime(getTimeDesc(behind->runTime, totTime)); - details.push_back(L"är X före Y#" + stime + L"#" + behind->r->getCompleteIdentification(false)); + details.push_back(L"är X före Y#" + stime + L"#" + behind->r->getCompleteIdentification(false)); } } else - msg = L"går upp i delad ledning vid X med tiden Y.#" + thelocation + timeS; + msg = L"gÃ¥r upp i delad ledning vid X med tiden Y.#" + thelocation + timeS; } else { if (firstTimes[key] == res.time) { - msg = L"var först vid X med tiden Y.#" + thelocation + timeS; + msg = L"var först vid X med tiden Y.#" + thelocation + timeS; if (!sharedPlace) { - details.push_front(L"är nu på X plats med tiden Y.#" + + details.push_front(L"är nu pÃ¥ X plats med tiden Y.#" + getOrder(res.place) + L"#" + timeS); if (ahead) { wstring stime(getTimeDesc(ahead->runTime, totTime)); - details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); + details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); } } else { - details.push_back(L"är nu på delad X plats med tiden Y.#" + getOrder(res.place) + + details.push_back(L"är nu pÃ¥ delad X plats med tiden Y.#" + getOrder(res.place) + L"#" + timeS); wstring share; getSharedResult(res, share); @@ -662,16 +662,16 @@ void SpeakerMonitor::getMessage(const oEvent::ResultEvent &res, } } else if (!sharedPlace) { - msg = L"stämplar vid X som Y, på tiden Z.#" + + msg = L"stämplar vid X som Y, pÃ¥ tiden Z.#" + thelocation + getNumber(res.place) + L"#" + timeS; if (ahead && res.place>2) { wstring stime(getTimeDesc(ahead->runTime, totTime)); - details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); + details.push_back(L"är X efter Y#" + stime + L"#" + ahead->r->getCompleteIdentification(false)); } } else { - msg = L"stämplar vid X som delad Y med tiden Z.#" + thelocation + getNumber(res.place) + + msg = L"stämplar vid X som delad Y med tiden Z.#" + thelocation + getNumber(res.place) + L"#" + timeS; wstring share; getSharedResult(res, share); diff --git a/code/speakermonitor.h b/code/speakermonitor.h index d9447cc..5750836 100644 --- a/code/speakermonitor.h +++ b/code/speakermonitor.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -17,7 +17,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "oListInfo.h" diff --git a/code/subcommand.h b/code/subcommand.h index 82d0791..35fe16f 100644 --- a/code/subcommand.h +++ b/code/subcommand.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu -Eksoppsvägen 16, SE-75646 UPPSALA, Sweden +Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/testmeos.cpp b/code/testmeos.cpp index 5a30c96..9616940 100644 --- a/code/testmeos.cpp +++ b/code/testmeos.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ #include "stdafx.h" @@ -480,4 +480,4 @@ string TestMeOS::getTableText(int editRow, int editCol) const { void TestMeOS::registerSubCommand(const string &cmd) const { gdi_main->dbRegisterSubCommand(this, cmd); -} \ No newline at end of file +} diff --git a/code/testmeos.h b/code/testmeos.h index fd36764..1e5ccc7 100644 --- a/code/testmeos.h +++ b/code/testmeos.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once /************************************************************************ MeOS - Orienteering Software @@ -18,7 +18,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/toolbar.cpp b/code/toolbar.cpp index 71557da..06ba95c 100644 --- a/code/toolbar.cpp +++ b/code/toolbar.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/toolbar.h b/code/toolbar.h index fb3551d..ccc27a8 100644 --- a/code/toolbar.h +++ b/code/toolbar.h @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/xmlparser.cpp b/code/xmlparser.cpp index 21ee547..7523e1c 100644 --- a/code/xmlparser.cpp +++ b/code/xmlparser.cpp @@ -1,4 +1,4 @@ -/************************************************************************ +/************************************************************************ MeOS - Orienteering Software Copyright (C) 2009-2018 Melin Software HB @@ -16,7 +16,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ diff --git a/code/xmlparser.h b/code/xmlparser.h index b6d1c03..b2c3598 100644 --- a/code/xmlparser.h +++ b/code/xmlparser.h @@ -1,4 +1,4 @@ -// xmlparser.h: interface for the xmlparser class. +// xmlparser.h: interface for the xmlparser class. // ////////////////////////////////////////////////////////////////////// @@ -26,7 +26,7 @@ along with this program. If not, see . Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden + Eksoppsvägen 16, SE-75646 UPPSALA, Sweden ************************************************************************/ @@ -269,4 +269,4 @@ public: }; -#endif // !defined(AFX_XMLPARSER_H__87834E6D_6AB1_471C_8E1C_E65D67A4F98A__INCLUDED_) \ No newline at end of file +#endif // !defined(AFX_XMLPARSER_H__87834E6D_6AB1_471C_8E1C_E65D67A4F98A__INCLUDED_) diff --git a/code/zip.cpp b/code/zip.cpp index 43bd966..c57a284 100644 --- a/code/zip.cpp +++ b/code/zip.cpp @@ -1,474 +1,474 @@ -/* -Code is based on mini unzip, demo of unzip package. - -Ported to C++ and modified to suite MeOS. - -*/ - -#include "stdafx.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "meosexception.h" -#include "meos_util.h" -#include "minizip/unzip.h" -#include "minizip/zip.h" - -#define CASESENSITIVITY (0) -#define WRITEBUFFERSIZE (1024 * 256) -#define MAXFILENAME (260) - -#define USEWIN32IOAPI -#include "minizip/iowin32.h" - -const char *zipError = "Error processing zip-file"; - -/* change_file_date : change the date/time of a file -filename : the filename of the file where date/time must be modified -dosdate : the new date at the MSDos format (4 bytes) -tmu_date : the SAME new date at the tm_unz format */ -void change_file_date(const wchar_t *filename, uLong dosdate, tm_unz tmu_date) { - HANDLE hFile; - FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite; - - hFile = CreateFile(filename,GENERIC_READ | GENERIC_WRITE, - 0,NULL,OPEN_EXISTING,0,NULL); - GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite); - DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal); - LocalFileTimeToFileTime(&ftLocal,&ftm); - SetFileTime(hFile,&ftm,&ftLastAcc,&ftm); - CloseHandle(hFile); -} - - -/* mymkdir and change_file_date are not 100 % portable -As I don't know well Unix, I wait feedback for the unix portion */ - -int mymkdir(const wchar_t *dirname) -{ - int ret=0; - ret = _wmkdir(dirname); - return ret; -} - -int makedir (const wchar_t *newdir) -{ - int len = (int)wcslen(newdir); - - if (len <= 0) - return 0; - - wstring buffer = newdir; - - if (buffer[len-1] == '/') { - buffer = buffer.substr(0, len-1); - } - - if (mymkdir(buffer.c_str()) == 0) { - return 1; - } - - size_t index = 1; - while (index byteBuff; - byteBuff.resize(size_buf); - buf = (void *)&byteBuff[0]; - - p = filename_withoutpath = filename_inzip; - while ((*p) != '\0') { - if (((*p)=='/') || ((*p)=='\\')) - filename_withoutpath = p+1; - p++; - } - - if ((*filename_withoutpath)=='\0') { - if (createSubdir) { - string x(filename_inzip); - wstring wx(x.begin(), x.end()); - mymkdir(wx.c_str()); - } - } - else { - write_filename = baseDir; - if (createSubdir) { - string x(filename_inzip); - write_filename.insert(write_filename.begin() + write_filename.length(), x.begin(), x.end()); - } - else { - string x(filename_withoutpath); - write_filename.insert(write_filename.begin() + write_filename.length(), x.begin(), x.end()); - } - err = unzOpenCurrentFilePassword(uf,password); - if (err!=UNZ_OK) - throw std::exception(zipError); - - fout = fopen64(write_filename.c_str(),L"wb"); - - // some zipfile doesn't contain directory alone before file - if ((fout==NULL) && createSubdir && - (filename_withoutpath!=(char*)filename_inzip)) { - char c=*(filename_withoutpath-1); - *(filename_withoutpath-1)='\0'; - makedir(write_filename.c_str()); - *(filename_withoutpath-1)=c; - fout=fopen64(write_filename.c_str(),L"wb"); - } - - if (fout==NULL) { - wstring err = L"Error opening " + write_filename; - throw meosException(err); - } - - do { - err = unzReadCurrentFile(uf,buf,size_buf); - if (err<0) - throw std::exception(zipError); - - if (err>0) - if (fwrite(buf,err,1,fout)!=1) { - throw std::exception("Error writing extracted file."); - } - } - while (err>0); - - if (fout) - fclose(fout); - - change_file_date(write_filename.c_str(),file_info.dosDate, file_info.tmu_date); - - - err = unzCloseCurrentFile (uf); - if (err != UNZ_OK) - throw std::exception(zipError); - } - - return write_filename; -} - - -void do_extract(unzFile uf, const wchar_t *basePath, const char* password, vector &extractedFiles) -{ - uLong i; - unz_global_info64 gi; - int err; - - err = unzGetGlobalInfo64(uf,&gi); - if (err != UNZ_OK) - throw std::exception(zipError); - - for (i=0;i &extractedFiles) -{ - wstring wzfn(wzipfilename); - string zfn(wzfn.begin(), wzfn.end()); - extractedFiles.clear(); - zlib_filefunc64_def ffunc; - fill_win32_filefunc64W(&ffunc); - unzFile uf = unzOpen2_64(wzfn.c_str(),&ffunc); - - if (uf==NULL) - throw std::exception("Cannot open zip file"); - - wstring base = getTempPath(); - wchar_t end = base[base.length()-1]; - if (end != '\\' && end != '/') - base += L"\\"; - - int id = rand(); - wstring target; - do { - target = base + L"zip" + itow(id) + L"\\"; - id++; - } - while ( _waccess( target.c_str(), 0 ) == 0 ); - - if (CreateDirectory(target.c_str(), NULL) == 0) - throw std::exception("Failed to create temporary folder"); - - registerTempFile(target); - do_extract(uf, target.c_str(), password, extractedFiles); - - unzClose(uf); -} - - - -uLong filetime(const wchar_t *f, uLong *dt) { - int ret = 0; - FILETIME ftLocal; - HANDLE hFind; - WIN32_FIND_DATA ff32; - - hFind = FindFirstFile(f,&ff32); - if (hFind != INVALID_HANDLE_VALUE) - { - FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); - FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); - FindClose(hFind); - ret = 1; - } - return ret; -} - -int check_exist_file(const wchar_t* filename) -{ - FILE* ftestexist; - int ret = 1; - ftestexist = fopen64(filename,L"rb"); - if (ftestexist==NULL) - ret = 0; - else - fclose(ftestexist); - return ret; -} - -/* calculate the CRC32 of a file, because to encrypt a file, we need known the CRC32 of the file before */ -/*int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc) -{ - unsigned long calculate_crc=0; - int err=ZIP_OK; - FILE * fin = fopen64(filenameinzip,"rb"); - unsigned long size_read = 0; - unsigned long total_read = 0; - if (fin==NULL) - { - err = ZIP_ERRNO; - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n",filenameinzip); - err = ZIP_ERRNO; - } - - if (size_read>0) - calculate_crc = crc32(calculate_crc,buf,size_read); - total_read += size_read; - - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - *result_crc=calculate_crc; - printf("file %s crc %lx\n", filenameinzip, calculate_crc); - return err; -}*/ - -int isLargeFile(const wchar_t* filename) -{ - int largeFile = 0; - ZPOS64_T pos = 0; - FILE* pFile = fopen64(filename, L"rb"); - - if (pFile != NULL) { - fseeko64(pFile, 0, SEEK_END); - pos = ftello64(pFile); - if (pos >= 0xffffffff) - largeFile = 1; - fclose(pFile); - } - - return largeFile; -} - -int zip(const wchar_t *zipfilename, const char *password, const vector &files) { - int opt_compress_level= Z_BEST_COMPRESSION; - const int opt_exclude_path = 1; - wchar_t filename_try[MAXFILENAME+16]; - int err=0; - int size_buf=0; - wchar_t eb[256]; - - size_buf = WRITEBUFFERSIZE; - vector vbuff(size_buf, 0); - void * buf = (void*)&vbuff[0]; - - zipFile zf; - int errclose; - zlib_filefunc64_def ffunc; - fill_win32_filefunc64W(&ffunc); - //wstring wzipfn(zipfilename); - //string zipfn(wzipfn.begin(), wzipfn.end()); - wcscpy_s(filename_try, zipfilename); - zf = zipOpen2_64(filename_try, 0,NULL, &ffunc); - - if (zf == NULL) { - swprintf_s(eb, L"Error opening %s.",filename_try); - throw meosException(eb); - } - - for (size_t i=0; i < files.size(); i++) { - FILE * fin; - int size_read; - const wstring &wfn = files[i]; - //string asciiName(wfn.begin(), wfn.end()); - const wchar_t* filenameinzip = wfn.c_str(); - const wchar_t *savefilenameinzip; - zip_fileinfo zi; - unsigned long crcFile=0; - int zip64 = 0; - - zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = - zi.tmz_date.tm_mday = zi.tmz_date.tm_mon = zi.tmz_date.tm_year = 0; - zi.dosDate = 0; - zi.internal_fa = 0; - zi.external_fa = 0; - filetime(filenameinzip, &zi.dosDate); - -/* - if ((password != NULL) && (err==ZIP_OK)) - err = getFileCrc(filenameinzip,buf,size_buf,&crcFile); - */ - zip64 = isLargeFile(wfn.c_str()); - - /* The path name saved, should not include a leading slash. */ - /*if it did, windows/xp and dynazip couldn't read the zip file. */ - savefilenameinzip = filenameinzip; - while( savefilenameinzip[0] == '\\' || savefilenameinzip[0] == '/' ) { - savefilenameinzip++; - } - - /*should the zip file contain any path at all?*/ - if ( opt_exclude_path ) { - const wchar_t *tmpptr; - const wchar_t *lastslash = 0; - for( tmpptr = savefilenameinzip; *tmpptr; tmpptr++) { - if ( *tmpptr == '\\' || *tmpptr == '/') - lastslash = tmpptr; - } - if ( lastslash != NULL ) { - savefilenameinzip = lastslash+1; // base filename follows last slash. - } - } - - /**/ - wstring wn = savefilenameinzip; - string asciiName(wn.begin(), wn.end()); - err = zipOpenNewFileInZip3_64(zf, asciiName.c_str(),&zi, - NULL,0,NULL,0,NULL /* comment*/, - (opt_compress_level != 0) ? Z_DEFLATED : 0, - opt_compress_level,0, - /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */ - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - password,crcFile, zip64); - - if (err != ZIP_OK) { - swprintf_s(eb, L"Error opening %s in zipfile",filenameinzip); - throw meosException(eb); - } - else { - fin = fopen64(wfn.c_str(),L"rb"); - if (fin==NULL) { - swprintf_s(eb, L"Error opening %s for reading",filenameinzip); - throw meosException(eb); - } - } - - if (err == ZIP_OK) - do { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) { - if (feof(fin)==0) { - swprintf_s(eb, L"Error reading %s",filenameinzip); - throw meosException(eb); - } - } - - if (size_read > 0) { - err = zipWriteInFileInZip (zf,buf,size_read); - if (err<0) { - swprintf_s(eb, L"Error in writing %s in the zipfile",filenameinzip); - throw meosException(eb); - } - } - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - if (err<0) - err=ZIP_ERRNO; - else { - err = zipCloseFileInZip(zf); - if (err!=ZIP_OK) { - swprintf_s(eb, L"Error closing %s in the zipfile", filenameinzip); - throw meosException(eb); - } - } - } - - errclose = zipClose(zf,NULL); - if (errclose != ZIP_OK) { - swprintf_s(eb, L"Error closing %s",filename_try); - throw meosException(eb); - } - - return 0; -} +/* +Code is based on mini unzip, demo of unzip package. + +Ported to C++ and modified to suite MeOS. + +*/ + +#include "stdafx.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "meosexception.h" +#include "meos_util.h" +#include "minizip/unzip.h" +#include "minizip/zip.h" + +#define CASESENSITIVITY (0) +#define WRITEBUFFERSIZE (1024 * 256) +#define MAXFILENAME (260) + +#define USEWIN32IOAPI +#include "minizip/iowin32.h" + +const char *zipError = "Error processing zip-file"; + +/* change_file_date : change the date/time of a file +filename : the filename of the file where date/time must be modified +dosdate : the new date at the MSDos format (4 bytes) +tmu_date : the SAME new date at the tm_unz format */ +void change_file_date(const wchar_t *filename, uLong dosdate, tm_unz tmu_date) { + HANDLE hFile; + FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite; + + hFile = CreateFile(filename,GENERIC_READ | GENERIC_WRITE, + 0,NULL,OPEN_EXISTING,0,NULL); + GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite); + DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal); + LocalFileTimeToFileTime(&ftLocal,&ftm); + SetFileTime(hFile,&ftm,&ftLastAcc,&ftm); + CloseHandle(hFile); +} + + +/* mymkdir and change_file_date are not 100 % portable +As I don't know well Unix, I wait feedback for the unix portion */ + +int mymkdir(const wchar_t *dirname) +{ + int ret=0; + ret = _wmkdir(dirname); + return ret; +} + +int makedir (const wchar_t *newdir) +{ + int len = (int)wcslen(newdir); + + if (len <= 0) + return 0; + + wstring buffer = newdir; + + if (buffer[len-1] == '/') { + buffer = buffer.substr(0, len-1); + } + + if (mymkdir(buffer.c_str()) == 0) { + return 1; + } + + size_t index = 1; + while (index byteBuff; + byteBuff.resize(size_buf); + buf = (void *)&byteBuff[0]; + + p = filename_withoutpath = filename_inzip; + while ((*p) != '\0') { + if (((*p)=='/') || ((*p)=='\\')) + filename_withoutpath = p+1; + p++; + } + + if ((*filename_withoutpath)=='\0') { + if (createSubdir) { + string x(filename_inzip); + wstring wx(x.begin(), x.end()); + mymkdir(wx.c_str()); + } + } + else { + write_filename = baseDir; + if (createSubdir) { + string x(filename_inzip); + write_filename.insert(write_filename.begin() + write_filename.length(), x.begin(), x.end()); + } + else { + string x(filename_withoutpath); + write_filename.insert(write_filename.begin() + write_filename.length(), x.begin(), x.end()); + } + err = unzOpenCurrentFilePassword(uf,password); + if (err!=UNZ_OK) + throw std::exception(zipError); + + fout = fopen64(write_filename.c_str(),L"wb"); + + // some zipfile doesn't contain directory alone before file + if ((fout==NULL) && createSubdir && + (filename_withoutpath!=(char*)filename_inzip)) { + char c=*(filename_withoutpath-1); + *(filename_withoutpath-1)='\0'; + makedir(write_filename.c_str()); + *(filename_withoutpath-1)=c; + fout=fopen64(write_filename.c_str(),L"wb"); + } + + if (fout==NULL) { + wstring err = L"Error opening " + write_filename; + throw meosException(err); + } + + do { + err = unzReadCurrentFile(uf,buf,size_buf); + if (err<0) + throw std::exception(zipError); + + if (err>0) + if (fwrite(buf,err,1,fout)!=1) { + throw std::exception("Error writing extracted file."); + } + } + while (err>0); + + if (fout) + fclose(fout); + + change_file_date(write_filename.c_str(),file_info.dosDate, file_info.tmu_date); + + + err = unzCloseCurrentFile (uf); + if (err != UNZ_OK) + throw std::exception(zipError); + } + + return write_filename; +} + + +void do_extract(unzFile uf, const wchar_t *basePath, const char* password, vector &extractedFiles) +{ + uLong i; + unz_global_info64 gi; + int err; + + err = unzGetGlobalInfo64(uf,&gi); + if (err != UNZ_OK) + throw std::exception(zipError); + + for (i=0;i &extractedFiles) +{ + wstring wzfn(wzipfilename); + string zfn(wzfn.begin(), wzfn.end()); + extractedFiles.clear(); + zlib_filefunc64_def ffunc; + fill_win32_filefunc64W(&ffunc); + unzFile uf = unzOpen2_64(wzfn.c_str(),&ffunc); + + if (uf==NULL) + throw std::exception("Cannot open zip file"); + + wstring base = getTempPath(); + wchar_t end = base[base.length()-1]; + if (end != '\\' && end != '/') + base += L"\\"; + + int id = rand(); + wstring target; + do { + target = base + L"zip" + itow(id) + L"\\"; + id++; + } + while ( _waccess( target.c_str(), 0 ) == 0 ); + + if (CreateDirectory(target.c_str(), NULL) == 0) + throw std::exception("Failed to create temporary folder"); + + registerTempFile(target); + do_extract(uf, target.c_str(), password, extractedFiles); + + unzClose(uf); +} + + + +uLong filetime(const wchar_t *f, uLong *dt) { + int ret = 0; + FILETIME ftLocal; + HANDLE hFind; + WIN32_FIND_DATA ff32; + + hFind = FindFirstFile(f,&ff32); + if (hFind != INVALID_HANDLE_VALUE) + { + FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); + FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); + FindClose(hFind); + ret = 1; + } + return ret; +} + +int check_exist_file(const wchar_t* filename) +{ + FILE* ftestexist; + int ret = 1; + ftestexist = fopen64(filename,L"rb"); + if (ftestexist==NULL) + ret = 0; + else + fclose(ftestexist); + return ret; +} + +/* calculate the CRC32 of a file, because to encrypt a file, we need known the CRC32 of the file before */ +/*int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc) +{ + unsigned long calculate_crc=0; + int err=ZIP_OK; + FILE * fin = fopen64(filenameinzip,"rb"); + unsigned long size_read = 0; + unsigned long total_read = 0; + if (fin==NULL) + { + err = ZIP_ERRNO; + } + + if (err == ZIP_OK) + do + { + err = ZIP_OK; + size_read = (int)fread(buf,1,size_buf,fin); + if (size_read < size_buf) + if (feof(fin)==0) + { + printf("error in reading %s\n",filenameinzip); + err = ZIP_ERRNO; + } + + if (size_read>0) + calculate_crc = crc32(calculate_crc,buf,size_read); + total_read += size_read; + + } while ((err == ZIP_OK) && (size_read>0)); + + if (fin) + fclose(fin); + + *result_crc=calculate_crc; + printf("file %s crc %lx\n", filenameinzip, calculate_crc); + return err; +}*/ + +int isLargeFile(const wchar_t* filename) +{ + int largeFile = 0; + ZPOS64_T pos = 0; + FILE* pFile = fopen64(filename, L"rb"); + + if (pFile != NULL) { + fseeko64(pFile, 0, SEEK_END); + pos = ftello64(pFile); + if (pos >= 0xffffffff) + largeFile = 1; + fclose(pFile); + } + + return largeFile; +} + +int zip(const wchar_t *zipfilename, const char *password, const vector &files) { + int opt_compress_level= Z_BEST_COMPRESSION; + const int opt_exclude_path = 1; + wchar_t filename_try[MAXFILENAME+16]; + int err=0; + int size_buf=0; + wchar_t eb[256]; + + size_buf = WRITEBUFFERSIZE; + vector vbuff(size_buf, 0); + void * buf = (void*)&vbuff[0]; + + zipFile zf; + int errclose; + zlib_filefunc64_def ffunc; + fill_win32_filefunc64W(&ffunc); + //wstring wzipfn(zipfilename); + //string zipfn(wzipfn.begin(), wzipfn.end()); + wcscpy_s(filename_try, zipfilename); + zf = zipOpen2_64(filename_try, 0,NULL, &ffunc); + + if (zf == NULL) { + swprintf_s(eb, L"Error opening %s.",filename_try); + throw meosException(eb); + } + + for (size_t i=0; i < files.size(); i++) { + FILE * fin; + int size_read; + const wstring &wfn = files[i]; + //string asciiName(wfn.begin(), wfn.end()); + const wchar_t* filenameinzip = wfn.c_str(); + const wchar_t *savefilenameinzip; + zip_fileinfo zi; + unsigned long crcFile=0; + int zip64 = 0; + + zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = + zi.tmz_date.tm_mday = zi.tmz_date.tm_mon = zi.tmz_date.tm_year = 0; + zi.dosDate = 0; + zi.internal_fa = 0; + zi.external_fa = 0; + filetime(filenameinzip, &zi.dosDate); + +/* + if ((password != NULL) && (err==ZIP_OK)) + err = getFileCrc(filenameinzip,buf,size_buf,&crcFile); + */ + zip64 = isLargeFile(wfn.c_str()); + + /* The path name saved, should not include a leading slash. */ + /*if it did, windows/xp and dynazip couldn't read the zip file. */ + savefilenameinzip = filenameinzip; + while( savefilenameinzip[0] == '\\' || savefilenameinzip[0] == '/' ) { + savefilenameinzip++; + } + + /*should the zip file contain any path at all?*/ + if ( opt_exclude_path ) { + const wchar_t *tmpptr; + const wchar_t *lastslash = 0; + for( tmpptr = savefilenameinzip; *tmpptr; tmpptr++) { + if ( *tmpptr == '\\' || *tmpptr == '/') + lastslash = tmpptr; + } + if ( lastslash != NULL ) { + savefilenameinzip = lastslash+1; // base filename follows last slash. + } + } + + /**/ + wstring wn = savefilenameinzip; + string asciiName(wn.begin(), wn.end()); + err = zipOpenNewFileInZip3_64(zf, asciiName.c_str(),&zi, + NULL,0,NULL,0,NULL /* comment*/, + (opt_compress_level != 0) ? Z_DEFLATED : 0, + opt_compress_level,0, + /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */ + -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, + password,crcFile, zip64); + + if (err != ZIP_OK) { + swprintf_s(eb, L"Error opening %s in zipfile",filenameinzip); + throw meosException(eb); + } + else { + fin = fopen64(wfn.c_str(),L"rb"); + if (fin==NULL) { + swprintf_s(eb, L"Error opening %s for reading",filenameinzip); + throw meosException(eb); + } + } + + if (err == ZIP_OK) + do { + err = ZIP_OK; + size_read = (int)fread(buf,1,size_buf,fin); + if (size_read < size_buf) { + if (feof(fin)==0) { + swprintf_s(eb, L"Error reading %s",filenameinzip); + throw meosException(eb); + } + } + + if (size_read > 0) { + err = zipWriteInFileInZip (zf,buf,size_read); + if (err<0) { + swprintf_s(eb, L"Error in writing %s in the zipfile",filenameinzip); + throw meosException(eb); + } + } + } while ((err == ZIP_OK) && (size_read>0)); + + if (fin) + fclose(fin); + + if (err<0) + err=ZIP_ERRNO; + else { + err = zipCloseFileInZip(zf); + if (err!=ZIP_OK) { + swprintf_s(eb, L"Error closing %s in the zipfile", filenameinzip); + throw meosException(eb); + } + } + } + + errclose = zipClose(zf,NULL); + if (errclose != ZIP_OK) { + swprintf_s(eb, L"Error closing %s",filename_try); + throw meosException(eb); + } + + return 0; +}