MeOS version 3.5.880 Update 1

This commit is contained in:
Erik Melin 2018-05-23 21:50:19 +02:00
parent 383eb286ce
commit 00906d29ea
172 changed files with 2449 additions and 2485 deletions

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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);

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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();
}

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<wstring> &split)
@ -617,7 +617,7 @@ void RunnerDB::canonizeSplitName(const wstring &name, vector<wstring> &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);

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
#include <vector>
#include <map>
@ -27,7 +27,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<wstring> &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<wstring> &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<wstring> &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<wstring> &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);
}

View File

@ -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 <http://www.gnu.org/licenses/>.
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;

View File

@ -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

View File

@ -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
//

View File

@ -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 <http://www.gnu.org/licenses/>.
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<PrintResultMachine*>(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<wstring, wstring> > 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<int> clsUnused;
vector< pair<wstring, size_t> > 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<int>::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() != '/')

View File

@ -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 <http://www.gnu.org/licenses/>.
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;
};

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<int, int> >::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 (restart<rope) {
gdi.alert("Repdragningstiden måste ligga före omstartstiden.");
gdi.alert("Repdragningstiden måste ligga före omstartstiden.");
return 0;
}
gdi.addString("", 0, L"Sätter reptid (X) och omstartstid (Y) för:#" +
gdi.addString("", 0, L"Sätter reptid (X) och omstartstid (Y) för:#" +
oe->getAbsTime(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<int> 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<int> 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<wstring, size_t> > bibOptions;
vector< pair<wstring, size_t> > 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<wstring, size_t> > 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<pc.getNumStages(); k++)
gdi.addItem("Leg", lang.tl("Sträcka X#" + itos(k+1)), k);
gdi.addItem("Leg", lang.tl("Sträcka X#" + itos(k+1)), k);
gdi.selectFirstItem("Leg");
}
@ -3360,7 +3360,7 @@ void TabClass::drawDialog(gdioutput &gdi, DrawMethod method, const oClass &pc) {
gdi.fillRight();
gdi.addCheckbox("HandleBibs", "Tilldela nummerlappar:", ClassesCB, lastHandleBibs).setSynchData(&lastHandleBibs);
gdi.dropLine(-0.2);
gdi.addInput("Bib", L"", 10, 0, L"", L"Mata in första nummerlappsnummer, eller blankt för att ta bort nummerlappar");
gdi.addInput("Bib", L"", 10, 0, L"", L"Mata in första nummerlappsnummer, eller blankt för att ta bort nummerlappar");
gdi.setInputStatus("Bib", lastHandleBibs);
gdi.fillDown();
gdi.dropLine(2.5);
@ -3379,8 +3379,8 @@ void TabClass::drawDialog(gdioutput &gdi, DrawMethod method, const oClass &pc) {
gdi.addButton("DoDraw", "Tilldela", ClassesCB, "Tilldela starttider");
if (method == DMRandom || method == DMSOFT) {
gdi.addButton("DoDrawBefore", "Ej lottade, före", ClassesCB, "Lotta löpare som saknar starttid");
gdi.addButton("DoDrawAfter", "Ej lottade, efter", ClassesCB, "Lotta löpare som saknar starttid");
gdi.addButton("DoDrawBefore", "Ej lottade, före", ClassesCB, "Lotta löpare som saknar starttid");
gdi.addButton("DoDrawAfter", "Ej lottade, efter", ClassesCB, "Lotta löpare som saknar starttid");
}
gdi.addButton("DoDeleteStart", "Radera starttider", ClassesCB);
@ -3420,7 +3420,7 @@ void TabClass::setMultiDayClass(gdioutput &gdi, bool hasMulti, DrawMethod defaul
if (hasMulti) {
gdi.addItem("Method", lang.tl("Jaktstart"), DMPursuit);
gdi.addItem("Method", lang.tl("Omvänd jaktstart"), DMReversePursuit);
gdi.addItem("Method", lang.tl("Omvänd jaktstart"), DMReversePursuit);
}
else if (defaultMethod > 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; k<cls.size(); k++) {
@ -3512,8 +3512,8 @@ void TabClass::pursuitDialog(gdioutput &gdi) {
gdi.dropLine();
gdi.fillRight();
gdi.addButton("SelectAllNoneP", "Välj alla", ClassesCB).setExtra(1);
gdi.addButton("SelectAllNoneP", "Välj ingen", ClassesCB).setExtra(0);
gdi.addButton("SelectAllNoneP", "Välj alla", ClassesCB).setExtra(1);
gdi.addButton("SelectAllNoneP", "Välj ingen", ClassesCB).setExtra(0);
gdi.popX();
gdi.dropLine(3);
RECT rc;
@ -3523,15 +3523,15 @@ void TabClass::pursuitDialog(gdioutput &gdi) {
gdi.setCX(rc.left + gdi.scaleLength(10));
gdi.setCY(rc.top + gdi.scaleLength(10));
gdi.addButton("DoPursuit", "Jaktstart", ClassesCB).setDefault().setExtra(1);
gdi.addButton("DoPursuit", "Omvänd jaktstart", ClassesCB).setExtra(2);
gdi.addButton("DoPursuit", "Omvänd jaktstart", ClassesCB).setExtra(2);
rc.right = gdi.getCX() + gdi.scaleLength(5);
gdi.addRectangle(rc, colorLightGreen);
gdi.setCX(rc.right + gdi.scaleLength(10));
gdi.addButton("SavePursuit", "Spara starttider", ClassesCB, "Spara inmatade tider i tävlingen utan att tilldela starttider.");
gdi.addButton("SavePursuit", "Spara starttider", ClassesCB, "Spara inmatade tider i tävlingen utan att tilldela starttider.");
gdi.addButton("CancelPursuit", "Återgå", ClassesCB).setCancel();
gdi.addButton("CancelPursuit", "Återgå", ClassesCB).setCancel();
gdi.refresh();
}
@ -3545,20 +3545,20 @@ void TabClass::showClassSelection(gdioutput &gdi, int &bx, int &by, GUICALLBACK
gdi.fillRight();
gdi.pushX();
gdi.addButton("SelectAll", "Välj allt", ClassesCB,
"Välj alla klasser").isEdit(true);
gdi.addButton("SelectAll", "Välj allt", ClassesCB,
"Välj alla klasser").isEdit(true);
gdi.addButton("SelectMisses", "Saknad starttid", ClassesCB,
"Välj klasser där någon löpare saknar starttid").isEdit(true);
"Välj klasser där någon löpare saknar starttid").isEdit(true);
gdi.dropLine(2.3);
gdi.popX();
gdi.addButton("SelectUndrawn", "Ej lottade", ClassesCB,
"Välj klasser där alla löpare saknar starttid").isEdit(true);
"Välj klasser där alla löpare saknar starttid").isEdit(true);
gdi.fillDown();
gdi.addButton("SelectNone", "Välj inget", ClassesCB,
gdi.addButton("SelectNone", "Välj inget", ClassesCB,
"Avmarkera allt").isEdit(true);
gdi.popX();
@ -3579,8 +3579,8 @@ void TabClass::showClassSelection(gdioutput &gdi, int &bx, int &by, GUICALLBACK
}
wstring name = it->first;
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<wstring,size_t> > 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<wstring, size_t> > TabClass::getPairOptions() {
vector< pair<wstring, size_t> > 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> 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> 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<wstring, size_t> > 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());

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<string> 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.");

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

File diff suppressed because it is too large Load Diff

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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);

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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);

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<wstring, size_t> > 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<cnf.legNStart.size(); k++) {
if (cnf.legNStart[k].size() > 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<int, vector<int> >::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<oListParam> &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);

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
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 <Deltar ej>?")) {
if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till <Deltar ej>?")) {
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 <Deltar ej>?"))
if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till <Deltar ej>?"))
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 <Deltar ej>?"))
if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till <Deltar ej>?"))
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<pRunner> 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 <Ej Start>", RunnerCB);
gdi.addButton("SetDNS", "Sätt okända löpare utan registrering till <Ej Start>", RunnerCB);
gdi.fillDown();
gdi.addButton("SetUnknown", "Återställ löpare <Ej Start> med registrering till <Status Okänd>", RunnerCB);
gdi.addButton("SetUnknown", "Återställ löpare <Ej Start> med registrering till <Status Okänd>", 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 <Ej Start> till <Status Okänd>");
gdi.setTextTranslate(bi.id, L"Återställ <Ej Start> till <Status Okänd>");
}
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<InputInfo &>(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();
}

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
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<int> 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<string> 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;i<sic.nPunch; i++)
pc->addControl(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<wstring, size_t> > 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 <Enter> för att spara#" +
gdi.setText("EntryInfo", lang.tl(L"X: Y. Tryck <Enter> 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<size_t, int> hashCount;
vector< pair<size_t, SICard *> > 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++) {

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
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<TabSpeaker &>(*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<TabSpeaker &>(*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; k<stages.size(); k++) {
gdi.addItem("Leg", lang.tl("Sträcka X#" + itos(stages[k].second)), stages[k].first);
gdi.addItem("Leg", lang.tl("Sträcka X#" + itos(stages[k].second)), stages[k].first);
}
if (multiDay) {
for (size_t k=0; k<stages.size(); k++) {
gdi.addItem("Leg", lang.tl("Sträcka X (total)#" + itos(stages[k].second)), 1000 + stages[k].first);
gdi.addItem("Leg", lang.tl("Sträcka X (total)#" + itos(stages[k].second)), 1000 + stages[k].first);
}
}
}
@ -826,7 +826,7 @@ void TabSpeaker::generateControlList(gdioutput &gdi, int classId)
gdi.fillDown();
char bf[16];
sprintf_s(bf, "ctrl%d", oPunch::PunchFinish);
gdi.addButton(cx, cy, bw, bf, "Mål", tabSpeakerCB, "", false, false).setExtra(previousControl);
gdi.addButton(cx, cy, bw, bf, "Mål", tabSpeakerCB, "", false, false).setExtra(previousControl);
if (selectedControl[classId].getControl() == -1) {
// Default control
@ -945,13 +945,13 @@ bool TabSpeaker::loadPage(gdioutput &gdi)
int db = 0;
if (classesToWatch.empty()) {
gdi.addString("", boldLarge, "Speakerstöd");
gdi.addString("", boldLarge, "Speakerstöd");
gdi.dropLine();
cy=gdi.getCY();
cx=gdi.getCX();
}
else {
gdi.addButton(cx+db, cy, bw-2, "Events", "Händelser", tabSpeakerCB, "Löpande information om viktiga händelser i tävlingen", false, false);
gdi.addButton(cx+db, cy, bw-2, "Events", "Händelser", tabSpeakerCB, "Löpande information om viktiga händelser i tävlingen", false, false);
if (++cb>nbtn) {
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<string, wstring> &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");

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
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 <Deltar ej>?")) {
if (gdi.ask(L"Vill du sätta resultatet från tidigare etapper till <Deltar ej>?")) {
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<wstring, wstring> > 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<int> 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<pRunner> 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<InputInfo &>(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();
}

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
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<empty.size(); k++) {
if (!empty[k] && wcscmp(Titles[k].name, id.c_str()) != 0 && wcscmp(Titles[k].name, mod.c_str()) != 0)
columns.push_back(k);

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
#include <vector>
#include "gdioutput.h"

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
class AutoCompleteInfo;
class gdioutput;

View File

@ -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 <http://www.gnu.org/licenses/>.
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<gdioutput *> &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<gdioutput *> &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<gdioutput *> &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();

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<SICard
return true;
}
/*
void csvparser::parse(const wstring &file, list< vector<string> > &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<char *> 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 <bf_size-3; k++) {
bf[k] = bf[k+3];
}
}
else if (bf[0] == -1 && bf[1] == -2) {
isUnicode = true;
for (int k = 0; k < bf_size-2; k++) {
bf[k] = bf[k+2];
}
}
}
if (isUnicode) {
int len = 0;
if (bf[len] == 0 && bf[len+1] != 0)
len++;
wideString.clear();
while ((bf[len] != 0 || bf[len+1] != 0) && len < (bf_size -2)) {
wchar_t &c = *(wchar_t *)&bf[len];
wideString.push_back(c);
len+=2;
}
if (wideString.length() > 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<string>());
data.back().resize(sp.size());
for (size_t k = 0; k < sp.size(); k++) {
data.back()[k] = sp[k];
}
}
}
if (isUTF8) {
list< vector<string> > dataCopy;
for (list< vector<string> >::iterator it = data.begin(); it != data.end(); ++it) {
vector<string> &de = *it;
dataCopy.push_back(vector<string>());
vector<string> &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<wstring> > &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<wstring> > &data)
fin.read((char *)&bf[0], len);
vector<wstring> 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<wstring> > &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<wstring> > &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<wstring> > &data) {
bool firstLine = true;
vector<wchar_t *> sp;
vector<wchar_t> 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<wstring> > &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<string> 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<wstring, int> &classNameToNumber,
vector<TeamLineup> &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<wstring, int>::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());

View File

@ -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 <http://www.gnu.org/licenses/>.
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<string> > &dataOutput);
static void convertUTF(const wstring &file);
void parse(const wstring &file, list< vector<wstring> > &dataOutput);
void importTeamLineup(const wstring &file,

View File

@ -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 <http://www.gnu.org/licenses/>.
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).");

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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())

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -1,4 +1,4 @@
#include "stdafx.h"
#include "stdafx.h"
#include "image.h"
#include "png/png.h"
#include <vector>

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
#include <map>
#include <vector>

View File

@ -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 <http://www.gnu.org/licenses/>.
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<string, size_t> > &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<wstring, size_t> > &types, bool exportFilter) {
@ -85,7 +85,7 @@ void ImportFormats::getOECSVLanguage(vector< pair<wstring, size_t> > &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;

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<int, vector<LegInfo> > 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<int, vector<LegInfo> > 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<int, vector<LegInfo> > 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);

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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<MetaListPost> &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;

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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"

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/
#include <map>

View File

@ -66,6 +66,7 @@
#include "restserver.h"
#include "autocomplete.h"
#include "image.h"
#include "csvparser.h"
int defaultCodePage = 1252;
@ -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<wstring> 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;

View File

@ -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_

View File

@ -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 <http://www.gnu.org/licenses/>.
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<wstring> &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);
}

View File

@ -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 <http://www.gnu.org/licenses/>.
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<wstring> &supp);
void getSupporters(vector<wstring> &supp, vector<wstring> developSupp);
int countWords(const wchar_t *p);

View File

@ -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 <http://www.gnu.org/licenses/>.
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 <cassert>
#include <typeinfo>
#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;
}

View File

@ -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 <http://www.gnu.org/licenses/>.
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)

View File

@ -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,

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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

View File

@ -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 <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -1,10 +1,10 @@
// 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.";

View File

@ -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
//

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
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"

View File

@ -133,6 +133,9 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Release/meos.bsc</OutputFile>
</Bscmake>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
@ -189,6 +192,9 @@
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Debug/meos.bsc</OutputFile>
</Bscmake>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='test|Win32'">
<Midl>

View File

@ -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<wstring> &supp)
void getSupporters(vector<wstring> &supp, vector<wstring> 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());
}

View File

@ -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 <http://www.gnu.org/licenses/>.
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< pair<wstring, si
continue;
if (it->second.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));
}

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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();
}

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
/************************************************************************
MeOS - Orienteering Software
@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
Melin Software HB - software@melin.nu - www.melin.nu
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
Eksoppsvägen 16, SE-75646 UPPSALA, Sweden
************************************************************************/

View File

@ -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 <http://www.gnu.org/licenses/>.
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();

Some files were not shown because too many files have changed in this diff Show More