From 861ccf77f4a419641bbfb2c667b9602bb8a1146c Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 29 Jul 2017 23:38:22 +0200 Subject: Incorporating table number jump constant into hard-coded value in BWS query --- Aktywator/Bws.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 553e91d..9d2ef81 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -364,7 +364,7 @@ namespace Aktywator } else { - d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Table`<=100"); + d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Table`<=" + SKOK_STOLOW); } while (d.Read()) -- cgit v1.2.3 From daeb4826264484305141f443f37df7e6ba9ac6e9 Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 29 Jul 2017 23:39:19 +0200 Subject: Abort/Retry/Ignore dialog makes no sense if Rerty option is not handled, switching warning to Continue? Yes/No --- Aktywator/Bws.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 9d2ef81..4a7ec16 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -425,9 +425,10 @@ namespace Aktywator if (ee.ErrorCode == -2147467259) { DialogResult dr = MessageBox.Show("W bws-ie jest para/team (" + ns + " albo " + ew - + "), który nie istnieje w wybranym turnieju. Może to nie ten turniej?", - "Zły turniej", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Warning); - if (dr == DialogResult.Abort) return; + + "), który nie istnieje w wybranym turnieju. Może to nie ten turniej?" + + "\n\n" + "Kontynuować wczytywanie?", + "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (dr == DialogResult.No) return; } else { -- cgit v1.2.3 From ae2d439f7d67404590e78d0bb8cf6b858bca7d0c Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 00:05:58 +0200 Subject: Fixed control flow on names sync abort - MySQL data reader was not closed properly if user chose not to continue syncing on first warning. Also, the same choice (Continue? Yes/No) is offered on any other MySQL error --- Aktywator/Bws.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 4a7ec16..6a3b394 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -396,6 +396,8 @@ namespace Aktywator } mydata n = tournament.mysql.select(query.ToString()); + DialogResult dr = DialogResult.None; + try { n.Read(); @@ -424,23 +426,27 @@ namespace Aktywator { if (ee.ErrorCode == -2147467259) { - DialogResult dr = MessageBox.Show("W bws-ie jest para/team (" + ns + " albo " + ew + dr = MessageBox.Show("W bws-ie jest para/team (" + ns + " albo " + ew + "), który nie istnieje w wybranym turnieju. Może to nie ten turniej?" + "\n\n" + "Kontynuować wczytywanie?", "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (dr == DialogResult.No) return; } else { - MessageBox.Show(ee.Message, "Błąd MySQL", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Warning); + dr = MessageBox.Show(ee.Message + "\n\n" + "Kontynuować?", + "Błąd MySQL", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); } } } - try + finally { - n.Close(); + try + { + n.Close(); + } + catch (Exception) { } } - catch (Exception) { } + if (dr == DialogResult.No) break; } if (interactive) { -- cgit v1.2.3 From f14238e95bf1a10789585bf7632c5506daecc630 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 00:55:33 +0200 Subject: Refactoring Tournament as MySQLTournament --- Aktywator/Aktywator.csproj | 2 +- Aktywator/Bws.cs | 2 +- Aktywator/ChooseTournament.cs | 10 ++-- Aktywator/MainForm.cs | 6 +-- Aktywator/MySQLTournament.cs | 105 ++++++++++++++++++++++++++++++++++++++++++ Aktywator/Tournament.cs | 105 ------------------------------------------ 6 files changed, 115 insertions(+), 115 deletions(-) create mode 100644 Aktywator/MySQLTournament.cs delete mode 100644 Aktywator/Tournament.cs (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Aktywator.csproj b/Aktywator/Aktywator.csproj index edee3c0..97fa090 100644 --- a/Aktywator/Aktywator.csproj +++ b/Aktywator/Aktywator.csproj @@ -107,7 +107,7 @@ - + ChooseTournament.cs diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 6a3b394..24e707c 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -344,7 +344,7 @@ namespace Aktywator else return 0; } - public void syncNames(Tournament tournament, bool interactive, string startRounds) + public void syncNames(MySQLTournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; data d; diff --git a/Aktywator/ChooseTournament.cs b/Aktywator/ChooseTournament.cs index 2bc2ded..155624b 100644 --- a/Aktywator/ChooseTournament.cs +++ b/Aktywator/ChooseTournament.cs @@ -10,8 +10,8 @@ namespace Aktywator { public partial class ChooseTournament : Form { - private Tournament[] turns; - public Tournament chosenTournament; + private MySQLTournament[] turns; + public MySQLTournament chosenTournament; public ChooseTournament() { @@ -20,10 +20,10 @@ namespace Aktywator private void ChooseTournament_Load(object sender, EventArgs e) { - List list = Tournament.getTournaments(); - turns = new Tournament[list.Count]; + List list = MySQLTournament.getTournaments(); + turns = new MySQLTournament[list.Count]; int c = 0; - foreach (Tournament t in list) + foreach (MySQLTournament t in list) { turns[c++] = t; listBox.Items.Add(t.ToString()); diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 55e2f53..96d965b 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -15,7 +15,7 @@ namespace Aktywator public string date = "28.06.2017"; private Bws bws; - private Tournament tournament; + private MySQLTournament tournament; public MainForm() { @@ -181,7 +181,7 @@ namespace Aktywator } } - private void updateTournamentInfo(Tournament tournament) + private void updateTournamentInfo(MySQLTournament tournament) { if (tournament != null) { @@ -194,7 +194,7 @@ namespace Aktywator bSync.Enabled = true; bAutoSync.Enabled = true; eInterval.Enabled = true; - if (tournament.type == Tournament.TYPE_TEAMY) + if (tournament.type == MySQLTournament.TYPE_TEAMY) { lSkok.Visible = true; lNazwyTeamow.Visible = true; diff --git a/Aktywator/MySQLTournament.cs b/Aktywator/MySQLTournament.cs new file mode 100644 index 0000000..54f3f7b --- /dev/null +++ b/Aktywator/MySQLTournament.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Text; +using MySql.Data.MySqlClient; +using data = MySql.Data.MySqlClient.MySqlDataReader; + +namespace Aktywator +{ + public class MySQLTournament + { + public const int TYPE_PARY = 1; + public const int TYPE_TEAMY = 2; + public const int TYPE_UNKNOWN = 0; + + private string _name; + public string name + { + get { return _name; } + } + + private int _type; // 0-unknown, 1-Pary, 2-Teamy + public int type + { + get { return _type; } + } + + public MySQL mysql; + + public MySQLTournament(string name) + { + this._name = name; + mysql = new MySQL(name); + recognizeType(); + } + + private void recognizeType() + { + if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") + && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") + && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) + _type = MySQLTournament.TYPE_PARY; + else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") + && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") + && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) + _type = MySQLTournament.TYPE_TEAMY; + else _type = MySQLTournament.TYPE_UNKNOWN; + } + + public override string ToString() + { + return this.name + " [" + (this.type == MySQLTournament.TYPE_PARY ? 'P' : 'T') + "]"; + } + + public static List getTournaments() + { + List list = new List(); + MySQL c = new MySQL(""); + data dbs = c.select("SHOW DATABASES;"); + while (dbs.Read()) + { + MySQLTournament t = new MySQLTournament(dbs.GetString(0)); + if (t.type > MySQLTournament.TYPE_UNKNOWN) + list.Add(t); + t.mysql.close(); + } + return list; + } + + public string getSectionsNum() + { + if (type == MySQLTournament.TYPE_PARY) + return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); + else + return "1"; + } + + public string getTablesNum() + { + if (type == MySQLTournament.TYPE_PARY) + return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); + else + return mysql.selectOne("SELECT teamcnt FROM admin;"); + } + + + internal void setup() + { + if (this.mysql != null) + { + this.mysql.close(); + this.mysql.connect(); + } + } + + internal string getName() + { + return this.name; + } + + internal string getTypeLabel() + { + return this._type == MySQLTournament.TYPE_PARY ? "Pary" : "Teamy"; + } + } +} diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs deleted file mode 100644 index ec45c15..0000000 --- a/Aktywator/Tournament.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using MySql.Data.MySqlClient; -using data = MySql.Data.MySqlClient.MySqlDataReader; - -namespace Aktywator -{ - public class Tournament - { - public const int TYPE_PARY = 1; - public const int TYPE_TEAMY = 2; - public const int TYPE_UNKNOWN = 0; - - private string _name; - public string name - { - get { return _name; } - } - - private int _type; // 0-unknown, 1-Pary, 2-Teamy - public int type - { - get { return _type; } - } - - public MySQL mysql; - - public Tournament(string name) - { - this._name = name; - mysql = new MySQL(name); - recognizeType(); - } - - private void recognizeType() - { - if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") - && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") - && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) - _type = Tournament.TYPE_PARY; - else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") - && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") - && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) - _type = Tournament.TYPE_TEAMY; - else _type = Tournament.TYPE_UNKNOWN; - } - - public override string ToString() - { - return this.name + " [" + (this.type == Tournament.TYPE_PARY ? 'P' : 'T') + "]"; - } - - public static List getTournaments() - { - List list = new List(); - MySQL c = new MySQL(""); - data dbs = c.select("SHOW DATABASES;"); - while (dbs.Read()) - { - Tournament t = new Tournament(dbs.GetString(0)); - if (t.type > Tournament.TYPE_UNKNOWN) - list.Add(t); - t.mysql.close(); - } - return list; - } - - public string getSectionsNum() - { - if (type == Tournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); - else - return "1"; - } - - public string getTablesNum() - { - if (type == Tournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); - else - return mysql.selectOne("SELECT teamcnt FROM admin;"); - } - - - internal void setup() - { - if (this.mysql != null) - { - this.mysql.close(); - this.mysql.connect(); - } - } - - internal string getName() - { - return this.name; - } - - internal string getTypeLabel() - { - return this._type == Tournament.TYPE_PARY ? "Pary" : "Teamy"; - } - } -} -- cgit v1.2.3 From cfe97d223573c4792e5d42a4443c139fd8c87381 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 01:44:48 +0200 Subject: Refactoring MySQL tournament names: generalization --- Aktywator/Aktywator.csproj | 3 ++ Aktywator/Bws.cs | 4 +-- Aktywator/ChooseTournament.cs | 10 ++++++- Aktywator/MainForm.cs | 7 +++-- Aktywator/MySQLTournament.cs | 65 +++++++++++++++---------------------------- Aktywator/ParyTournament.cs | 30 ++++++++++++++++++++ Aktywator/TeamyTournament.cs | 30 ++++++++++++++++++++ Aktywator/Tournament.cs | 36 ++++++++++++++++++++++++ 8 files changed, 136 insertions(+), 49 deletions(-) create mode 100644 Aktywator/ParyTournament.cs create mode 100644 Aktywator/TeamyTournament.cs create mode 100644 Aktywator/Tournament.cs (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Aktywator.csproj b/Aktywator/Aktywator.csproj index 97fa090..e1b78f1 100644 --- a/Aktywator/Aktywator.csproj +++ b/Aktywator/Aktywator.csproj @@ -99,6 +99,7 @@ MysqlSettings.cs + @@ -108,6 +109,8 @@ + + ChooseTournament.cs diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 24e707c..41717b2 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -344,7 +344,7 @@ namespace Aktywator else return 0; } - public void syncNames(MySQLTournament tournament, bool interactive, string startRounds) + public void syncNames(Tournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; data d; @@ -394,7 +394,7 @@ namespace Aktywator query.Append(ew); query.Append(" UNION ALL SELECT ' '; "); } - mydata n = tournament.mysql.select(query.ToString()); + mydata n = ((MySQLTournament)tournament).mysql.select(query.ToString()); DialogResult dr = DialogResult.None; diff --git a/Aktywator/ChooseTournament.cs b/Aktywator/ChooseTournament.cs index 155624b..734b191 100644 --- a/Aktywator/ChooseTournament.cs +++ b/Aktywator/ChooseTournament.cs @@ -34,7 +34,15 @@ namespace Aktywator { if (listBox.SelectedIndex >= 0) { - chosenTournament = turns[listBox.SelectedIndex]; + switch (turns[listBox.SelectedIndex].type) + { + case Tournament.TYPE_PARY: + chosenTournament = new ParyTournament(turns[listBox.SelectedIndex].name); + break; + case Tournament.TYPE_TEAMY: + chosenTournament = new TeamyTournament(turns[listBox.SelectedIndex].name); + break; + } Close(); } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 96d965b..e2e87db 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -15,7 +15,7 @@ namespace Aktywator public string date = "28.06.2017"; private Bws bws; - private MySQLTournament tournament; + private Tournament tournament; public MainForm() { @@ -181,7 +181,7 @@ namespace Aktywator } } - private void updateTournamentInfo(MySQLTournament tournament) + private void updateTournamentInfo(Tournament tournament) { if (tournament != null) { @@ -194,7 +194,7 @@ namespace Aktywator bSync.Enabled = true; bAutoSync.Enabled = true; eInterval.Enabled = true; - if (tournament.type == MySQLTournament.TYPE_TEAMY) + if (tournament.GetType().Equals(typeof(TeamyTournament))) { lSkok.Visible = true; lNazwyTeamow.Visible = true; @@ -209,6 +209,7 @@ namespace Aktywator { lSkok.Visible = false; lNazwyTeamow.Visible = false; + } } diff --git a/Aktywator/MySQLTournament.cs b/Aktywator/MySQLTournament.cs index 54f3f7b..ff3258a 100644 --- a/Aktywator/MySQLTournament.cs +++ b/Aktywator/MySQLTournament.cs @@ -6,24 +6,8 @@ using data = MySql.Data.MySqlClient.MySqlDataReader; namespace Aktywator { - public class MySQLTournament + public class MySQLTournament : Tournament { - public const int TYPE_PARY = 1; - public const int TYPE_TEAMY = 2; - public const int TYPE_UNKNOWN = 0; - - private string _name; - public string name - { - get { return _name; } - } - - private int _type; // 0-unknown, 1-Pary, 2-Teamy - public int type - { - get { return _type; } - } - public MySQL mysql; public MySQLTournament(string name) @@ -38,17 +22,17 @@ namespace Aktywator if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'dnazwa'") == "dnazwa") && (mysql.selectOne("SHOW TABLES LIKE 'zawodnicy'") == "zawodnicy")) - _type = MySQLTournament.TYPE_PARY; + _type = Tournament.TYPE_PARY; else if ((mysql.selectOne("SHOW TABLES LIKE 'admin'") == "admin") && (mysql.selectOne("SHOW FIELDS IN admin LIKE 'teamcnt'") == "teamcnt") && (mysql.selectOne("SHOW TABLES LIKE 'players'") == "players")) - _type = MySQLTournament.TYPE_TEAMY; - else _type = MySQLTournament.TYPE_UNKNOWN; + _type = Tournament.TYPE_TEAMY; + else _type = Tournament.TYPE_UNKNOWN; } public override string ToString() { - return this.name + " [" + (this.type == MySQLTournament.TYPE_PARY ? 'P' : 'T') + "]"; + return this.name + " [" + (this.type == Tournament.TYPE_PARY ? 'P' : 'T') + "]"; } public static List getTournaments() @@ -59,31 +43,14 @@ namespace Aktywator while (dbs.Read()) { MySQLTournament t = new MySQLTournament(dbs.GetString(0)); - if (t.type > MySQLTournament.TYPE_UNKNOWN) + if (t.type > Tournament.TYPE_UNKNOWN) list.Add(t); t.mysql.close(); } return list; } - public string getSectionsNum() - { - if (type == MySQLTournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); - else - return "1"; - } - - public string getTablesNum() - { - if (type == MySQLTournament.TYPE_PARY) - return mysql.selectOne("SELECT COUNT(*) FROM sektory;"); - else - return mysql.selectOne("SELECT teamcnt FROM admin;"); - } - - - internal void setup() + override internal void setup() { if (this.mysql != null) { @@ -92,14 +59,26 @@ namespace Aktywator } } - internal string getName() + override internal string getName() { return this.name; } - internal string getTypeLabel() + override public string getSectionsNum() + { + throw new NotImplementedException("Don't call this method on generic class instance"); + } + + override public string getTablesNum() { - return this._type == MySQLTournament.TYPE_PARY ? "Pary" : "Teamy"; + throw new NotImplementedException("Don't call this method on generic class instance"); } + + override internal string getTypeLabel() + { + throw new NotImplementedException("Don't call this method on generic class instance"); + } + } } + diff --git a/Aktywator/ParyTournament.cs b/Aktywator/ParyTournament.cs new file mode 100644 index 0000000..8d80d9f --- /dev/null +++ b/Aktywator/ParyTournament.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aktywator +{ + class ParyTournament: MySQLTournament + { + public ParyTournament(string name) + : base(name) + { + } + + override internal string getTypeLabel() + { + return "Pary"; + } + + override public string getSectionsNum() + { + return this.mysql.selectOne("SELECT COUNT(DISTINCT seknum) FROM sektory;"); + } + + override public string getTablesNum() + { + return this.mysql.selectOne("SELECT COUNT(*) FROM sektory;"); + } + + } +} diff --git a/Aktywator/TeamyTournament.cs b/Aktywator/TeamyTournament.cs new file mode 100644 index 0000000..34908be --- /dev/null +++ b/Aktywator/TeamyTournament.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aktywator +{ + class TeamyTournament : MySQLTournament + { + public TeamyTournament(string name) + : base(name) + { + } + + override internal string getTypeLabel() + { + return "Teamy"; + } + + override public string getSectionsNum() + { + return "1"; + } + + override public string getTablesNum() + { + return this.mysql.selectOne("SELECT teamcnt FROM admin;"); + } + + } +} diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs new file mode 100644 index 0000000..fdeb323 --- /dev/null +++ b/Aktywator/Tournament.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aktywator +{ + abstract public class Tournament + { + public const int TYPE_PARY = 1; + public const int TYPE_TEAMY = 2; + public const int TYPE_UNKNOWN = 0; + + protected string _name; + public string name + { + get { return _name; } + } + + protected int _type; // 0-unknown, 1-Pary, 2-Teamy + public int type + { + get { return _type; } + } + + abstract internal void setup(); + + abstract internal string getName(); + + abstract public string getSectionsNum(); + + abstract public string getTablesNum(); + + abstract internal string getTypeLabel(); + + } +} -- cgit v1.2.3 From 14f684cee81e45ebaea0dd0abb60c5039a7ed467 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 02:28:57 +0200 Subject: Loading names from MySQL tournaments generalized as a dataset --- Aktywator/Bws.cs | 147 ++++++++++++++++++++----------------------- Aktywator/ParyTournament.cs | 25 ++++++++ Aktywator/TeamyTournament.cs | 16 +++++ Aktywator/Tournament.cs | 4 ++ 4 files changed, 114 insertions(+), 78 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 41717b2..5302454 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -3,9 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.Windows.Forms; -using MySql.Data.MySqlClient; -using mydata = MySql.Data.MySqlClient.MySqlDataReader; -using data = System.Data.OleDb.OleDbDataReader; +using System.Data.OleDb; namespace Aktywator { @@ -111,7 +109,7 @@ namespace Aktywator try { string s; - data d = sql.select("SELECT DISTINCT `Section` FROM " + table + " ORDER BY 1"); + OleDbDataReader d = sql.select("SELECT DISTINCT `Section` FROM " + table + " ORDER BY 1"); d.Read(); s = d[0].ToString(); while (d.Read()) @@ -347,10 +345,10 @@ namespace Aktywator public void syncNames(Tournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; - data d; + OleDbDataReader d; startRounds = startRounds.Trim(); - if (tournament.type == 1) + if (tournament.type == Tournament.TYPE_PARY) { if (startRounds.Length > 0) { @@ -367,94 +365,87 @@ namespace Aktywator d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Table`<=" + SKOK_STOLOW); } - while (d.Read()) + try { - string section = d.GetInt32(0).ToString(); - string table = d.GetInt32(1).ToString(); - string ns = d.GetInt32(2).ToString(); - string ew = d.GetInt32(3).ToString(); + Dictionary> names = tournament.getNameList(); - StringBuilder query = new StringBuilder(); - if (tournament.type == 1) - { - query.Append("SELECT CONCAT(SUBSTR(imie,1,1),'.',nazw) name FROM zawodnicy WHERE idp="); - query.Append(ns); - query.Append(" OR idp="); - query.Append(ew); - query.Append(" ORDER BY idp "); - if (int.Parse(ew) < int.Parse(ns)) - query.Append("DESC"); - } - else + while (d.Read()) { - query.Append("SELECT fullname NAME FROM teams WHERE id="); - query.Append(ns); - query.Append(" UNION ALL SELECT ' ' UNION ALL"); - query.Append(" SELECT fullname NAME FROM teams WHERE id="); - query.Append(ew); - query.Append(" UNION ALL SELECT ' '; "); - } - mydata n = ((MySQLTournament)tournament).mysql.select(query.ToString()); - - DialogResult dr = DialogResult.None; + string section = d.GetInt32(0).ToString(); + string table = d.GetInt32(1).ToString(); + int ns = d.GetInt32(2); + int ew = d.GetInt32(3); - try - { - n.Read(); - countNew += updateName(section, table, "N", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", n.IsDBNull(0) ? "" : n.GetString(0)); - n.Read(); - countNew += updateName(section, table, "S", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", n.IsDBNull(0) ? "" : n.GetString(0)); - n.Read(); - countNew += updateName(section, table, "E", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", n.IsDBNull(0) ? "" : n.GetString(0)); - n.Read(); - countNew += updateName(section, table, "W", n.IsDBNull(0) ? "" : n.GetString(0)); - if (tournament.type == 2) - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", n.IsDBNull(0) ? "" : n.GetString(0)); - - if (tournament.type == 1) count += 4; - else count += 8; - } - catch (MySqlException ee) - { - if (interactive) + try { - if (ee.ErrorCode == -2147467259) + if (!names.ContainsKey(ns)) { - dr = MessageBox.Show("W bws-ie jest para/team (" + ns + " albo " + ew - + "), który nie istnieje w wybranym turnieju. Może to nie ten turniej?" - + "\n\n" + "Kontynuować wczytywanie?", - "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + throw new KeyNotFoundException(ns.ToString()); } - else + countNew += updateName(section, table, "N", names[ns][0]); + countNew += updateName(section, table, "S", names[ns][1]); + count += 2; + if (tournament.type == Tournament.TYPE_TEAMY) { - dr = MessageBox.Show(ee.Message + "\n\n" + "Kontynuować?", - "Błąd MySQL", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", names[ns][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", names[ns][1]); + count += 2; + } + } + catch (KeyNotFoundException keyE) + { + if (interactive) + { + DialogResult dr = MessageBox.Show("W bws-ie jest para/team (" + keyE.Message + ")" + + ", który nie istnieje w wybranym turnieju." + + "Może to nie ten turniej?" + "\n\n" + "Kontynuować wczytywanie?", + "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (dr == DialogResult.No) break; } } - } - finally - { try { - n.Close(); + if (!names.ContainsKey(ew)) + { + throw new KeyNotFoundException(ew.ToString()); + } + countNew += updateName(section, table, "E", names[ew][0]); + countNew += updateName(section, table, "W", names[ew][1]); + count += 2; + if (tournament.type == Tournament.TYPE_TEAMY) + { + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", names[ew][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", names[ew][1]); + count += 2; + } + } + catch (KeyNotFoundException keyE) + { + if (interactive) + { + DialogResult dr = MessageBox.Show("W bws-ie jest para/team (" + keyE.Message + ")" + + ", który nie istnieje w wybranym turnieju." + + "Może to nie ten turniej?" + "\n\n" + "Kontynuować wczytywanie?", + "Zły turniej", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (dr == DialogResult.No) break; + } } - catch (Exception) { } } - if (dr == DialogResult.No) break; + if (interactive) + { + MessageBox.Show("Synchronizacja zakończona!\nPrzejrzanych nazwisk: " + count + "\nZmienionych: " + countNew, + "Synchronizacja nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Information); + if (sql.selectOne("SELECT BM2ShowPlayerNames FROM Settings") != "1") + MessageBox.Show("Pamiętaj żeby włączyć opcję \"pokazuj nazwiska\"!", "Brakujące ustawienie", + MessageBoxButtons.OK, MessageBoxIcon.Information); + } } - if (interactive) + catch (Exception ee) { - MessageBox.Show("Synchronizacja zakończona!\nPrzejrzanych nazwisk: " + count + "\nZmienionych: " + countNew, - "Synchronizacja nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Information); - if (sql.selectOne("SELECT BM2ShowPlayerNames FROM Settings") != "1") - MessageBox.Show("Pamiętaj żeby włączyć opcję \"pokazuj nazwiska\"!", "Brakujące ustawienie", - MessageBoxButtons.OK, MessageBoxIcon.Information); + if (interactive) + { + MessageBox.Show(ee.Message, "Błąd wczytywania nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } } diff --git a/Aktywator/ParyTournament.cs b/Aktywator/ParyTournament.cs index 8d80d9f..a5d9ff2 100644 --- a/Aktywator/ParyTournament.cs +++ b/Aktywator/ParyTournament.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using MySql.Data.MySqlClient; namespace Aktywator { @@ -26,5 +27,29 @@ namespace Aktywator return this.mysql.selectOne("SELECT COUNT(*) FROM sektory;"); } + override internal Dictionary> getNameList() + { + Dictionary> pairs = new Dictionary>(); + MySqlDataReader dbData = this.mysql.select("SELECT idp, CONCAT(SUBSTR(imie,1,1),'.',nazw) name FROM zawodnicy"); + while (dbData.Read()) + { + int pairNo = dbData.GetInt32(0); + if (!pairs.ContainsKey(pairNo)) + { + pairs.Add(pairNo, new List()); + } + pairs[pairNo].Add(dbData.IsDBNull(1) ? "" : dbData.GetString(1)); + } + foreach (KeyValuePair> pair in pairs) + { + while (pair.Value.Count < 2) + { + pair.Value.Add(""); + } + } + dbData.Close(); + return pairs; + } + } } diff --git a/Aktywator/TeamyTournament.cs b/Aktywator/TeamyTournament.cs index 34908be..3b83c8b 100644 --- a/Aktywator/TeamyTournament.cs +++ b/Aktywator/TeamyTournament.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using MySql.Data.MySqlClient; namespace Aktywator { @@ -26,5 +27,20 @@ namespace Aktywator return this.mysql.selectOne("SELECT teamcnt FROM admin;"); } + override internal Dictionary> getNameList() + { + Dictionary> teams = new Dictionary>(); + MySqlDataReader dbData = this.mysql.select("SELECT id, fullname NAME FROM teams"); + while (dbData.Read()) + { + List names = new List(); + names.Add(dbData.IsDBNull(1) ? "" : dbData.GetString(1)); + names.Add(""); + teams.Add(dbData.GetInt32(0), names); + } + dbData.Close(); + return teams; + } + } } diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index fdeb323..70fe268 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -32,5 +32,9 @@ namespace Aktywator abstract internal string getTypeLabel(); + virtual internal Dictionary> getNameList() + { + return new Dictionary>(); + } } } -- cgit v1.2.3 From 6c056322e96ab0ebbf52c3f35ec8b0a51f1b5f8d Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 03:36:29 +0200 Subject: Universal pairs data reading from BWS (independent on tournament type and integer type used in BWS) --- Aktywator/Bws.cs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 5302454..7f8a899 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -342,15 +342,27 @@ namespace Aktywator else return 0; } + private int getBWSNumber(OleDbDataReader reader, int index) + { + switch (Type.GetTypeCode(reader.GetFieldType(index))) + { + case TypeCode.Int16: + return reader.GetInt16(index); + case TypeCode.Int32: + return reader.GetInt32(index); + } + throw new InvalidCastException("Unable to read numeric value from BWS field"); + } + public void syncNames(Tournament tournament, bool interactive, string startRounds) { int count = 0, countNew = 0, SKOK_STOLOW = 100; OleDbDataReader d; startRounds = startRounds.Trim(); - if (tournament.type == Tournament.TYPE_PARY) + if (tournament.type != Tournament.TYPE_TEAMY) { - if (startRounds.Length > 0) + if (tournament.type == Tournament.TYPE_PARY && startRounds.Length > 0) { d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE NSPair>0 AND `Round` in (" + startRounds + ")"); } @@ -371,10 +383,10 @@ namespace Aktywator while (d.Read()) { - string section = d.GetInt32(0).ToString(); - string table = d.GetInt32(1).ToString(); - int ns = d.GetInt32(2); - int ew = d.GetInt32(3); + string section = this.getBWSNumber(d, 0).ToString(); + string table = this.getBWSNumber(d, 1).ToString(); + int ns = this.getBWSNumber(d, 2); + int ew = this.getBWSNumber(d, 3); try { -- cgit v1.2.3 From ea9027a8e624cc6d0ef193189bf1d7b1e0e13724 Mon Sep 17 00:00:00 2001 From: emkael Date: Sun, 30 Jul 2017 14:24:30 +0200 Subject: Adding names to BWS if no player numbers are provided in Bridgemates --- Aktywator/Bws.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 7f8a899..e1921a8 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -331,15 +331,24 @@ namespace Aktywator name = Common.bezOgonkow(name); if (name.Length > 18) name = name.Substring(0, 18); - string actual = sql.selectOne("SELECT Name FROM PlayerNumbers WHERE `Section`=" + section + " AND `Table`=" + table - + " AND `Direction`='" + direction + "'"); - if (actual != name) + try + { + string actual = sql.selectOne("SELECT Name FROM PlayerNumbers WHERE `Section`=" + section + " AND `Table`=" + table + + " AND `Direction`='" + direction + "'", true); + if (actual != name) + { + sql.query("UPDATE PlayerNumbers SET Name='" + name + "', Updated=TRUE WHERE `Section`=" + section + " AND `Table`=" + table + + " AND `Direction`='" + direction + "'"); + return 1; + } + else return 0; + } + catch (OleDbRowMissingException) { - sql.query("UPDATE PlayerNumbers SET Name='" + name + "', Updated=TRUE WHERE `Section`=" + section + " AND `Table`=" + table - + " AND `Direction`='" + direction + "'"); + sql.query("INSERT INTO PlayerNumbers(`Section`, `Table`, Direction, Name, Updated) VALUES(" + + section + ", " + table + ", '" + direction + "', '" + name + "', TRUE)"); return 1; } - else return 0; } private int getBWSNumber(OleDbDataReader reader, int index) -- cgit v1.2.3 From 0d2b00ca675fdb80a944a4ba403d078d728fa087 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 22 Aug 2017 14:35:03 +0200 Subject: Convert BWS and add all required fields silently Fixes #15 --- Aktywator/Bws.cs | 27 +-------------------------- Aktywator/MainForm.cs | 5 +---- Aktywator/Setting.cs | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 30 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 4bc107f..5c318f0 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -159,24 +159,6 @@ namespace Aktywator System.Diagnostics.Process.Start(app, param); } - public bool isBm2() - { - if (!sql.checkFieldExists("Settings", "BM2PINcode")) - return false; - if (!sql.checkFieldExists("PlayerNames", "Name")) - return false; - if (!sql.checkFieldExists("PlayerNumbers", "Name")) - return false; - if (!sql.checkFieldExists("Settings", "BM2ViewHandrecord")) - return false; - if (!sql.checkTableExists("HandRecord")) - return false; - if (!sql.checkTableExists("HandEvaluation")) - return false; - - return true; - } - public void convert() { List settings = new List(); @@ -209,14 +191,7 @@ namespace Aktywator foreach (Setting s in settings) { - try - { - sql.query(s.getAddColumnSql()); - sql.query(s.getSetDefaultSql()); - } - catch (OleDbException) - { - } + s.createField(sql, false); } try diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 01c7e19..85ec29f 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -63,10 +63,7 @@ namespace Aktywator } bws = new Bws(filename, this); - if (!bws.isBm2()) - if (MessageBox.Show("Ten BWS nie jest przygotowany dla BM2. Przekonwertować?", "Konwersja do BM2", - MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - bws.convert(); + bws.convert(); labelFilename.Text = filename; // cloning Setting List returned from Bws, because we're going to extend it for version tracking purposes diff --git a/Aktywator/Setting.cs b/Aktywator/Setting.cs index d31a452..e981328 100644 --- a/Aktywator/Setting.cs +++ b/Aktywator/Setting.cs @@ -135,5 +135,26 @@ namespace Aktywator } return str.ToString(); } + + public void createField(Sql sql, bool setDefault = true) + { + try + { + sql.query(this.getAddColumnSql()); + } + catch (OleDbException) + { + } + if (setDefault) + { + try + { + sql.query(this.getSetDefaultSql()); + } + catch (OleDbException) + { + } + } + } } } -- cgit v1.2.3 From dbbe1080a30785fd09d04d65ddb81a0cbc261327 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 22 Aug 2017 20:15:01 +0200 Subject: When silently converting, only set default values for settings that are not configurable --- Aktywator/Bws.cs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 5c318f0..674867c 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -162,7 +162,6 @@ namespace Aktywator public void convert() { List settings = new List(); - settings.Add(new Setting("BM2PINcode", "text(4)", "'5431'")); settings.Add(new Setting("BM2ConfirmNP", "bit", "true")); settings.Add(new Setting("BM2RemainingBoards", "bit", "false")); settings.Add(new Setting("BM2NextSeatings", "bit", "true")); @@ -171,29 +170,36 @@ namespace Aktywator settings.Add(new Setting("BM2ScoreCorrection", "bit", "false")); settings.Add(new Setting("BM2AutoBoardNumber", "bit", "false")); settings.Add(new Setting("BM2ResultsOverview", "integer", "1")); - settings.Add(new Setting("BM2ShowPlayerNames", "integer", "0")); - settings.Add(new Setting("BM2Ranking", "integer", "0")); - settings.Add(new Setting("BM2GameSummary", "bit", "false")); - settings.Add(new Setting("BM2SummaryPoints", "integer", "0")); - settings.Add(new Setting("BM2PairNumberEntry", "integer", "0")); settings.Add(new Setting("BM2ResetFunctionKey", "bit", "false")); - settings.Add(new Setting("BM2ShowHands", "bit", "false")); - settings.Add(new Setting("BM2NumberValidation", "integer", "0")); - settings.Add(new Setting("BM2NameSource", "integer", "2")); settings.Add(new Setting("BM2ViewHandrecord", "bit", "false")); - settings.Add(new Setting("BM2EnterHandrecord", "bit", "false")); settings.Add(new Setting("BM2RecordBidding", "bit", "false")); settings.Add(new Setting("BM2RecordPlay", "bit", "false")); settings.Add(new Setting("BM2ValidateLeadCard", "bit", "false")); - - settings.Add(new Setting("Name", "text(18)", "''", "PlayerNumbers")); - settings.Add(new Setting("Updated", "bit", "false", "PlayerNumbers")); + settings.Add(new Setting("BM2ShowPlayerNames", "integer", "0")); foreach (Setting s in settings) { s.createField(sql, false); } + List defaultSettings = new List(); + defaultSettings.Add(new Setting("BM2PINcode", "text(4)", "'5431'")); + defaultSettings.Add(new Setting("BM2Ranking", "integer", "0")); + defaultSettings.Add(new Setting("BM2GameSummary", "bit", "false")); + defaultSettings.Add(new Setting("BM2SummaryPoints", "integer", "0")); + defaultSettings.Add(new Setting("BM2PairNumberEntry", "integer", "0")); + defaultSettings.Add(new Setting("BM2ShowHands", "bit", "false")); + defaultSettings.Add(new Setting("BM2NumberValidation", "integer", "0")); + defaultSettings.Add(new Setting("BM2NameSource", "integer", "2")); + defaultSettings.Add(new Setting("BM2EnterHandrecord", "bit", "false")); + defaultSettings.Add(new Setting("Name", "text(18)", "''", "PlayerNumbers")); + defaultSettings.Add(new Setting("Updated", "bit", "false", "PlayerNumbers")); + + foreach (Setting s in defaultSettings) + { + s.createField(sql); + } + try { sql.query("CREATE TABLE PlayerNames (ID integer, Name text(18));"); -- cgit v1.2.3 From b806ab2d43746a2c5af4a9db50924db93fc7242a Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 22 Aug 2017 20:17:21 +0200 Subject: 2.2.1 firmware options regarding player names implemented as a fix to #9 --- Aktywator/Bws.cs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 674867c..e1bc061 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -192,6 +192,8 @@ namespace Aktywator defaultSettings.Add(new Setting("BM2NumberValidation", "integer", "0")); defaultSettings.Add(new Setting("BM2NameSource", "integer", "2")); defaultSettings.Add(new Setting("BM2EnterHandrecord", "bit", "false")); + defaultSettings.Add(new Setting("BM2NumberEntryEachRound", "integer", "0")); + defaultSettings.Add(new Setting("BM2NumberEntryPreloadValues", "integer", "0")); defaultSettings.Add(new Setting("Name", "text(18)", "''", "PlayerNumbers")); defaultSettings.Add(new Setting("Updated", "bit", "false", "PlayerNumbers")); @@ -441,6 +443,13 @@ namespace Aktywator } } } + List settings = new List(); + settings.Add(new Setting("BM2NumberEntryEachRound", "integer", (tournament.type == Tournament.TYPE_TEAMY) ? "1" : "0")); + settings.Add(new Setting("BM2NumberEntryPreloadValues", "integer", "1")); + foreach (Setting s in settings) + { + s.createField(sql); + } if (interactive) { MessageBox.Show("Synchronizacja zakończona!\nPrzejrzanych nazwisk: " + count + "\nZmienionych: " + countNew, -- cgit v1.2.3 From 47be743fb185ee2468c6b41128a466c87d4d8dc6 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 12:51:41 +0200 Subject: Hand records tab redesigned to be consistent with the settings tab --- Aktywator/Bws.cs | 6 +- Aktywator/MainForm.Designer.cs | 125 +++++++++++++++-------------------------- Aktywator/MainForm.cs | 5 -- Aktywator/MainForm.resx | 68 +++++++++++++++++++++- 4 files changed, 114 insertions(+), 90 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index e1bc061..822d39f 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -27,10 +27,10 @@ namespace Aktywator sql = new Sql(filename); this.main = main; string[] sections = this.getSections().Split(','); - main.lWczytywane.Text = this.getBoardRangeText(sections); foreach (string section in sections) { - main.cblSections.Items.Add(this.sectorNumberToLetter(Int16.Parse(section))); + int sectionNumber = Int16.Parse(section); + main.cblSections.Items.Add("sektor " + this.sectorNumberToLetter(sectionNumber) + " (rozdania " + this.lowBoard(section) + "-" + this.highBoard(section) + ")"); } for (int i = 0; i < main.cblSections.Items.Count; i++) { @@ -40,7 +40,7 @@ namespace Aktywator private int sectorLetterToNumber(string sector) { - return sector[0] - 'A' + 1; + return sector.ToUpper()[0] - 'A' + 1; } private string sectorNumberToLetter(int sector) diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index e19875a..c2eea27 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -108,15 +108,12 @@ this.bMySQLTournament = new System.Windows.Forms.Button(); this.label3 = new System.Windows.Forms.Label(); this.tabPage3 = new System.Windows.Forms.TabPage(); - this.bClearHands = new System.Windows.Forms.Button(); + this.toolStrip3 = new System.Windows.Forms.ToolStrip(); + this.bLoadHands = new System.Windows.Forms.ToolStripButton(); + this.bClearHands = new System.Windows.Forms.ToolStripButton(); this.lRecordSections = new System.Windows.Forms.Label(); this.cblSections = new System.Windows.Forms.CheckedListBox(); - this.label14 = new System.Windows.Forms.Label(); - this.label13 = new System.Windows.Forms.Label(); - this.lWczytywane = new System.Windows.Forms.Label(); - this.label12 = new System.Windows.Forms.Label(); this.label11 = new System.Windows.Forms.Label(); - this.bLoadHands = new System.Windows.Forms.Button(); this.timer = new System.Windows.Forms.Timer(this.components); this.openPBN = new System.Windows.Forms.OpenFileDialog(); this.toolStrip1 = new System.Windows.Forms.ToolStrip(); @@ -137,6 +134,7 @@ this.groupBox2.SuspendLayout(); this.tabPage2.SuspendLayout(); this.tabPage3.SuspendLayout(); + this.toolStrip3.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -952,15 +950,10 @@ // // tabPage3 // - this.tabPage3.Controls.Add(this.bClearHands); + this.tabPage3.Controls.Add(this.toolStrip3); this.tabPage3.Controls.Add(this.lRecordSections); this.tabPage3.Controls.Add(this.cblSections); - this.tabPage3.Controls.Add(this.label14); - this.tabPage3.Controls.Add(this.label13); - this.tabPage3.Controls.Add(this.lWczytywane); - this.tabPage3.Controls.Add(this.label12); this.tabPage3.Controls.Add(this.label11); - this.tabPage3.Controls.Add(this.bLoadHands); this.tabPage3.Location = new System.Drawing.Point(4, 22); this.tabPage3.Name = "tabPage3"; this.tabPage3.Padding = new System.Windows.Forms.Padding(3); @@ -969,22 +962,47 @@ this.tabPage3.Text = "Rozkłady"; this.tabPage3.UseVisualStyleBackColor = true; // + // toolStrip3 + // + this.toolStrip3.BackColor = System.Drawing.Color.White; + this.toolStrip3.GripMargin = new System.Windows.Forms.Padding(0); + this.toolStrip3.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip3.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bLoadHands, + this.bClearHands}); + this.toolStrip3.Location = new System.Drawing.Point(3, 3); + this.toolStrip3.Name = "toolStrip3"; + this.toolStrip3.Size = new System.Drawing.Size(563, 25); + this.toolStrip3.TabIndex = 9; + this.toolStrip3.Text = "toolStrip3"; + // + // bLoadHands + // + this.bLoadHands.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.bLoadHands.Image = ((System.Drawing.Image)(resources.GetObject("bLoadHands.Image"))); + this.bLoadHands.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bLoadHands.Name = "bLoadHands"; + this.bLoadHands.Size = new System.Drawing.Size(122, 22); + this.bLoadHands.Text = "Wczytaj rozkłady"; + this.bLoadHands.Click += new System.EventHandler(this.bLoadHands_Click); + // // bClearHands // - this.bClearHands.Location = new System.Drawing.Point(334, 336); + this.bClearHands.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.bClearHands.Image = ((System.Drawing.Image)(resources.GetObject("bClearHands.Image"))); + this.bClearHands.ImageTransparentColor = System.Drawing.Color.Magenta; this.bClearHands.Name = "bClearHands"; - this.bClearHands.Size = new System.Drawing.Size(223, 23); - this.bClearHands.TabIndex = 8; + this.bClearHands.Size = new System.Drawing.Size(230, 22); this.bClearHands.Text = "Usuń rozkłady dla wszystkich sektorów"; - this.bClearHands.UseVisualStyleBackColor = true; this.bClearHands.Click += new System.EventHandler(this.bClearHands_Click); // // lRecordSections // this.lRecordSections.AutoSize = true; - this.lRecordSections.Location = new System.Drawing.Point(23, 150); + this.lRecordSections.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.lRecordSections.Location = new System.Drawing.Point(6, 138); this.lRecordSections.Name = "lRecordSections"; - this.lRecordSections.Size = new System.Drawing.Size(46, 13); + this.lRecordSections.Size = new System.Drawing.Size(54, 13); this.lRecordSections.TabIndex = 7; this.lRecordSections.Text = "Sektory:"; // @@ -993,69 +1011,19 @@ this.cblSections.BorderStyle = System.Windows.Forms.BorderStyle.None; this.cblSections.CheckOnClick = true; this.cblSections.FormattingEnabled = true; - this.cblSections.Location = new System.Drawing.Point(26, 178); - this.cblSections.MultiColumn = true; + this.cblSections.Location = new System.Drawing.Point(9, 162); this.cblSections.Name = "cblSections"; - this.cblSections.Size = new System.Drawing.Size(456, 105); + this.cblSections.Size = new System.Drawing.Size(546, 285); this.cblSections.TabIndex = 6; - this.cblSections.SelectedIndexChanged += new System.EventHandler(this.cblSections_SelectedIndexChanged); - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(6, 315); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(247, 13); - this.label14.TabIndex = 5; - this.label14.Text = "to także należy ręcznie zrobić Upload (patrz wyżej)."; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(6, 293); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(476, 13); - this.label13.TabIndex = 4; - this.label13.Text = "Jeżeli Server->Show hand records w BCS nie pokazuje rozkładów (i/lub nie pokazują" + - " ich pierniczki)"; - // - // lWczytywane - // - this.lWczytywane.AutoSize = true; - this.lWczytywane.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.lWczytywane.Location = new System.Drawing.Point(218, 84); - this.lWczytywane.Name = "lWczytywane"; - this.lWczytywane.Size = new System.Drawing.Size(139, 13); - this.lWczytywane.TabIndex = 3; - this.lWczytywane.Text = "Wczytywane rozkłady: "; - // - // label12 - // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(6, 36); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(408, 13); - this.label12.TabIndex = 2; - this.label12.Text = "W przeciwnym razie trzeba w BCS wybrać: Session->Upload hand records->Upload..."; // // label11 // this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(6, 14); + this.label11.Location = new System.Drawing.Point(6, 49); this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(280, 13); + this.label11.Size = new System.Drawing.Size(479, 78); this.label11.TabIndex = 1; - this.label11.Text = "Rozkłady muszą zostać wczytane przed \"Uruchom BCS\"."; - // - // bLoadHands - // - this.bLoadHands.Location = new System.Drawing.Point(26, 84); - this.bLoadHands.Name = "bLoadHands"; - this.bLoadHands.Size = new System.Drawing.Size(149, 42); - this.bLoadHands.TabIndex = 0; - this.bLoadHands.Text = "Wczytaj rozkłady"; - this.bLoadHands.UseVisualStyleBackColor = true; - this.bLoadHands.Click += new System.EventHandler(this.bLoadHands_Click); + this.label11.Text = resources.GetString("label11.Text"); // // timer // @@ -1150,6 +1118,8 @@ this.tabPage2.PerformLayout(); this.tabPage3.ResumeLayout(false); this.tabPage3.PerformLayout(); + this.toolStrip3.ResumeLayout(false); + this.toolStrip3.PerformLayout(); this.toolStrip1.ResumeLayout(false); this.toolStrip1.PerformLayout(); this.ResumeLayout(false); @@ -1216,13 +1186,8 @@ public System.Windows.Forms.ComboBox xResultsOverview; public System.Windows.Forms.CheckBox xViewHandrecord; private System.Windows.Forms.TabPage tabPage3; - private System.Windows.Forms.Button bLoadHands; - private System.Windows.Forms.Label label12; private System.Windows.Forms.Label label11; - public System.Windows.Forms.Label lWczytywane; private System.Windows.Forms.OpenFileDialog openPBN; - private System.Windows.Forms.Label label14; - private System.Windows.Forms.Label label13; private System.Windows.Forms.Label label9; private System.Windows.Forms.TextBox eOomRounds; public System.Windows.Forms.CheckBox xCollectPlay; @@ -1230,7 +1195,6 @@ public System.Windows.Forms.CheckBox xCheckLeadCard; public System.Windows.Forms.CheckedListBox cblSections; private System.Windows.Forms.Label lRecordSections; - private System.Windows.Forms.Button bClearHands; private System.Windows.Forms.Button bRRBTournament; private System.Windows.Forms.GroupBox groupBox6; private System.Windows.Forms.GroupBox groupBox7; @@ -1252,6 +1216,9 @@ private System.Windows.Forms.ToolStripStatusLabel lRequiredFirmware; private System.Windows.Forms.ToolStripButton bLoad; private System.Windows.Forms.ToolStripButton bSave; + private System.Windows.Forms.ToolStrip toolStrip3; + private System.Windows.Forms.ToolStripButton bLoadHands; + private System.Windows.Forms.ToolStripButton bClearHands; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 57794cf..37a482a 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -466,11 +466,6 @@ namespace Aktywator } } - private void cblSections_SelectedIndexChanged(object sender, EventArgs e) - { - this.lWczytywane.Text = bws.getBoardRangeText(bws.getSelectedSections()); - } - private void bClearHands_Click(object sender, EventArgs e) { try diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index e102f5f..b1edfed 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -157,6 +157,68 @@ 0OgbEMfg7dp6aLU5QpCZ5k8+faqHrydtGC0JzZlGRd2mhlHN9ColwTvjsoTg30OSvgNCVjq+glI0hgAA AABJRU5ErkJggg== + + + 133, 56 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ0SURBVDhPvZJZSNRRHEb/Dz30kkVmJEKSJWLBYGBI9RBi + RLlSrqDkQrlSZijmuDTjrrO4TqloMy6NOlpZimGFUCgSoeVCialZUFSKqaGS22mcEcnyIQj64IPLvfcc + flyu8F+SUVztJC3Qci2nkiyVjkSZJmnt6O8SFKvCM0IRsLq+lFBhlqqXxaWrvQNjixEaa/J89eX3ttZl + KQz0JokQl7h5RSnwiMg3CBjq0zA/1WDoj0kti+NqdJUKmmrSUteYDfGMVOIRXoBrWBFCQ5WSucnaDfDy + 5xIWB2KovZVDdWkm6uJUyvJTuCkXU5Qdz5rHmDqNjLmvmnV4RQ8zJIaBsE37h+B2eTbfP5Wtw22NMkMf + 6nJp1mZzrzoTnToNbZmUStV1KgqSKFWKUckSjLLqskxm3hcaxh7tkNBUq2R5VApj6Rv7Tr83kgiDsfA6 + it56H6KD3asEtSqN6eEc+CDnfp2Crkdy46VfR38VCN1eLHW6MP/YkbdVIkLPO05fueB2SCgvkPDtjZSx + zmSatHJWRiTQH24Ee0P0oB9LXe7Mt59ipvU4E42HkUZY4+dkmm94gxJlMhN9CdypkdHzTD/JYIxecBF6 + Alh5fpaFp2eYbTvBZJM9X+ps6c7Ygb+LFfY222wMAlWumP72FO7W5MJwCrzUj/vCm4UOV2afODLV7MC4 + TsRHzQEG5KZIwvZjd9C8xQCvpjArnobKHAYeRNKdJ6y3S76F9uyttKRupz7JDHW8BTeuWuLvvG/Fwc7S + eQ0XhLz0OPIkoWQlBJF42ZfoEHeCfU5y7vRRnI6JOCKyxtbKgr3mu9i904Q9piYb/8G/RRB+Attu5QF5 + RgSyAAAAAElFTkSuQmCC + + + + + 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 + + + + Rozkłady muszą zostać wczytane przed "Uruchom BCS". + +W przeciwnym razie trzeba w BCS wybrać: Session->Upload hand records->Upload... + +Jeżeli Server->Show hand records w BCS nie pokazuje rozkładów (i/lub nie pokazują ich pierniczki), +to także należy ręcznie zrobić Upload. 527, 17 @@ -183,13 +245,13 @@ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPYxj8YPrOP/9BuH/Tt//Ny9/+L5v1+H9W/63/ UGlUULvid3D5/I+r/eqvS0GFwAZ0bPj/v2zRr/+Jfc/+u5WdnQqVQgWVi37qtKz6cyq1/8l/s6RNd6DC DD3rv/wvmPftf0zfx/9uFbf/2+YeP2KefEATKo0AFUu+TahY/O2/c/7p/6pBc99BhRlqF774H9Z6779z - zs1PFtkX/hsn7fuvG72pByqNAFVLP17Imf7+v2ny/v+6kevnQoUZcifd+W+fdzrHqfTSNNu8c//1Yrb9 - 1w1beh4qjQCN8z99Tp/69r9xwt7/BjE7rEBiaWlnWJM6roADLKz1jnVw0z2wAYpesz+DxFBAGdCAtKnv + 9s1PFtkX/hsn7fuvG72pByqNAFVLP17Imf7+v2ny/v+6kevnQoUZcifd+W+fdzrHqfTSNNu8c//1Yrb9 + 1w1beh4qjQCN8z99Tp/69r9xwt7/BjE7rEBiaWlnWJM6roADLKz1jnVw0z2wAfJesz+DxFBACdCAtKnv /pul7ocbgAyyZr6zSZvy5r9h3C7sBlQs+Hghdcrb//a5p/9bpR+ZCRWGg5plv+dlTPvwXz9mx3+dkCUX oMIIkD31ZV9879P/XlU3/vtW3HybOvHFnDygreULv9k0rP47v3z59/fBzff/64av+q8VtmIiVBsCRDTd 1g6svXrUo+zKf9/aO//jep//z5z27n/ezI//c2Z9+g/SrBe9+b9m6JLTGmFrdaDaUIFr8QVfu+xjR43j d//XjdkKxqBA04vZAgz55UDNi07rhS0NhirHDgxjd2nqhK3p0wyYe1HJb8oXENYKnH1JN3TJJPWQlbpQ - ZYMGMDAAAFzIDh1JAY8rAAAAAElFTkSuQmCC + ZYMGMDAAAE5bDhZeNnGYAAAAAElFTkSuQmCC -- cgit v1.2.3 From afb51932b3676288bac5923eb3aef3f8779eca8b Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 13:54:39 +0200 Subject: After section labels changed, some metadata need to be saved for checkbox list items --- Aktywator/Bws.cs | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 822d39f..40ac680 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -21,6 +21,28 @@ namespace Aktywator public bool settingsChanged = false; private static string applicationPath = Common.ProgramFilesx86() + "\\Bridgemate Pro\\"; + private class SectionCheckBox + { + private string section; + private string label; + + public SectionCheckBox(string section, string label) + { + this.section = section; + this.label = label; + } + + override public string ToString() + { + return this.label; + } + + public string getSection() + { + return this.section; + } + } + public Bws(string filename, MainForm main) { this._filename = filename; @@ -29,8 +51,8 @@ namespace Aktywator string[] sections = this.getSections().Split(','); foreach (string section in sections) { - int sectionNumber = Int16.Parse(section); - main.cblSections.Items.Add("sektor " + this.sectorNumberToLetter(sectionNumber) + " (rozdania " + this.lowBoard(section) + "-" + this.highBoard(section) + ")"); + SectionCheckBox item = new SectionCheckBox(section, "sektor " + this.sectorNumberToLetter(Int16.Parse(section)) + " (rozdania " + this.lowBoard(section) + "-" + this.highBoard(section) + ")"); + main.cblSections.Items.Add(item); } for (int i = 0; i < main.cblSections.Items.Count; i++) { @@ -49,29 +71,12 @@ namespace Aktywator return character.ToString(); } - public string getBoardRangeText(string[] sectors) - { - StringBuilder sb = new StringBuilder(); - sb.Append("Wczytywane rozkłady:"); - foreach (string sector in sectors) - { - sb.Append("\n "); - sb.Append(this.lowBoard(sector)); - sb.Append("-"); - sb.Append(this.highBoard(sector)); - sb.Append(" (sektor "); - sb.Append(this.sectorNumberToLetter(Int16.Parse(sector))); - sb.Append(")"); - } - return sb.ToString(); - } - public string[] getSelectedSections() { List sections = new List(); - foreach (string section in main.cblSections.CheckedItems) + foreach (SectionCheckBox section in main.cblSections.CheckedItems) { - sections.Add(this.sectorLetterToNumber(section).ToString()); + sections.Add(section.getSection()); } return sections.ToArray(); } -- cgit v1.2.3 From 9768f0f8ec287b3fe76707e15946fdff9f832f6b Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 14:45:12 +0200 Subject: Redundant import removed --- Aktywator/Bws.cs | 1 - 1 file changed, 1 deletion(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 40ac680..e111a4b 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.Windows.Forms; -using System.Data.OleDb; namespace Aktywator { -- cgit v1.2.3 From 0c84fc21f0b7af4468603b10f35da47f13910bcf Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 17:14:37 +0200 Subject: Loading pair numbers for first round in Teamy tournaments to avoid warning flood in case wrong tournament is selected --- Aktywator/Bws.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index e111a4b..31686c9 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -363,7 +363,7 @@ namespace Aktywator int count = 0, countNew = 0, SKOK_STOLOW = 100; OleDbDataReader d; startRounds = startRounds.Trim(); - + string fromRound = sql.selectOne("SELECT min(`Round`) FROM RoundData WHERE NSPair>0"); if (tournament.type != Tournament.TYPE_TEAMY) { if (tournament.type == Tournament.TYPE_PARY && startRounds.Length > 0) @@ -372,13 +372,12 @@ namespace Aktywator } else { - string fromRound = sql.selectOne("SELECT min(`Round`) FROM RoundData WHERE NSPair>0"); d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Round`=" + fromRound); } } else { - d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Table`<=" + SKOK_STOLOW); + d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Round`=" + fromRound + " AND `Table`<=" + SKOK_STOLOW); } try -- cgit v1.2.3 From 7a496566f759a5aac8b56d46c1b9eb36bdcb3f52 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 17:18:38 +0200 Subject: Editor for BWS names --- Aktywator/Bws.cs | 4 +- Aktywator/MainForm.Designer.cs | 310 +++++++++++++++++++++++++---------------- Aktywator/MainForm.cs | 25 +++- Aktywator/MainForm.resx | 214 ++++++++++++++-------------- Aktywator/Tournament.cs | 89 ++++++++++++ 5 files changed, 416 insertions(+), 226 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 31686c9..4400272 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -358,7 +358,7 @@ namespace Aktywator throw new InvalidCastException("Unable to read numeric value from BWS field"); } - public void syncNames(Tournament tournament, bool interactive, string startRounds) + public void syncNames(Tournament tournament, bool interactive, string startRounds, DataGridView grid) { int count = 0, countNew = 0, SKOK_STOLOW = 100; OleDbDataReader d; @@ -382,7 +382,7 @@ namespace Aktywator try { - Dictionary> names = tournament.getNameList(); + Dictionary> names = tournament.getBWSNames(grid); while (d.Read()) { diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index eb5cf5f..50830b6 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -84,6 +84,22 @@ this.xShowPlayerNames = new System.Windows.Forms.CheckBox(); this.label1 = new System.Windows.Forms.Label(); this.tabPage2 = new System.Windows.Forms.TabPage(); + this.namesPanel = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.namesGridView = new System.Windows.Forms.DataGridView(); + this.Number = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.NorthSouth = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.EastWest = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lTournament = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lType = new System.Windows.Forms.Label(); + this.lNazwyTeamow = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.lSkok = new System.Windows.Forms.Label(); + this.lSections = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.lTables = new System.Windows.Forms.Label(); this.syncToolStrip = new System.Windows.Forms.ToolStrip(); this.bSync = new System.Windows.Forms.ToolStripButton(); this.bAutoSync = new System.Windows.Forms.ToolStripButton(); @@ -98,17 +114,6 @@ this.bMysqlSettings = new System.Windows.Forms.ToolStripButton(); this.bForceSync = new System.Windows.Forms.ToolStripButton(); this.bTruncate = new System.Windows.Forms.ToolStripButton(); - this.lNazwyTeamow = new System.Windows.Forms.Label(); - this.lSkok = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.lTables = new System.Windows.Forms.Label(); - this.lSections = new System.Windows.Forms.Label(); - this.lType = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.lTournament = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); this.tabPage3 = new System.Windows.Forms.TabPage(); this.toolStrip3 = new System.Windows.Forms.ToolStrip(); this.bLoadHands = new System.Windows.Forms.ToolStripButton(); @@ -122,6 +127,7 @@ this.labelFilename = new System.Windows.Forms.ToolStripLabel(); this.bLaunch = new System.Windows.Forms.ToolStripButton(); this.bUpdateSession = new System.Windows.Forms.ToolStripButton(); + this.namesTimer = new System.Windows.Forms.Timer(this.components); this.statusStrip1.SuspendLayout(); this.groupBox1.SuspendLayout(); this.tabControl1.SuspendLayout(); @@ -135,6 +141,8 @@ this.groupBox3.SuspendLayout(); this.groupBox2.SuspendLayout(); this.tabPage2.SuspendLayout(); + this.namesPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.namesGridView)).BeginInit(); this.syncToolStrip.SuspendLayout(); this.toolStrip4.SuspendLayout(); this.tabPage3.SuspendLayout(); @@ -704,19 +712,9 @@ // // tabPage2 // + this.tabPage2.Controls.Add(this.namesPanel); this.tabPage2.Controls.Add(this.syncToolStrip); this.tabPage2.Controls.Add(this.toolStrip4); - this.tabPage2.Controls.Add(this.lNazwyTeamow); - this.tabPage2.Controls.Add(this.lSkok); - this.tabPage2.Controls.Add(this.label8); - this.tabPage2.Controls.Add(this.lTables); - this.tabPage2.Controls.Add(this.lSections); - this.tabPage2.Controls.Add(this.lType); - this.tabPage2.Controls.Add(this.label6); - this.tabPage2.Controls.Add(this.label5); - this.tabPage2.Controls.Add(this.label4); - this.tabPage2.Controls.Add(this.lTournament); - this.tabPage2.Controls.Add(this.label3); this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); @@ -725,9 +723,163 @@ this.tabPage2.Text = "Nazwiska"; this.tabPage2.UseVisualStyleBackColor = true; // + // namesPanel + // + this.namesPanel.Controls.Add(this.label3); + this.namesPanel.Controls.Add(this.namesGridView); + this.namesPanel.Controls.Add(this.lTournament); + this.namesPanel.Controls.Add(this.label4); + this.namesPanel.Controls.Add(this.lType); + this.namesPanel.Controls.Add(this.lNazwyTeamow); + this.namesPanel.Controls.Add(this.label5); + this.namesPanel.Controls.Add(this.lSkok); + this.namesPanel.Controls.Add(this.lSections); + this.namesPanel.Controls.Add(this.label8); + this.namesPanel.Controls.Add(this.label6); + this.namesPanel.Controls.Add(this.lTables); + this.namesPanel.Location = new System.Drawing.Point(3, 31); + this.namesPanel.Name = "namesPanel"; + this.namesPanel.Size = new System.Drawing.Size(562, 449); + this.namesPanel.TabIndex = 29; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(16, 18); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(42, 13); + this.label3.TabIndex = 0; + this.label3.Text = "Turniej:"; + // + // namesGridView + // + this.namesGridView.AllowUserToAddRows = false; + this.namesGridView.AllowUserToDeleteRows = false; + this.namesGridView.AllowUserToResizeColumns = false; + this.namesGridView.AllowUserToResizeRows = false; + this.namesGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.namesGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.namesGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Number, + this.NorthSouth, + this.EastWest}); + this.namesGridView.Location = new System.Drawing.Point(2, 112); + this.namesGridView.Name = "namesGridView"; + this.namesGridView.Size = new System.Drawing.Size(557, 318); + this.namesGridView.TabIndex = 28; + this.namesGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.namesGridView_CellValueChanged); + // + // Number + // + this.Number.HeaderText = "Nr"; + this.Number.Name = "Number"; + this.Number.ReadOnly = true; + // + // NorthSouth + // + this.NorthSouth.FillWeight = 300F; + this.NorthSouth.HeaderText = "NS"; + this.NorthSouth.Name = "NorthSouth"; + // + // EastWest + // + this.EastWest.FillWeight = 300F; + this.EastWest.HeaderText = "EW"; + this.EastWest.Name = "EastWest"; + // + // lTournament + // + this.lTournament.AutoSize = true; + this.lTournament.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.lTournament.Location = new System.Drawing.Point(64, 18); + this.lTournament.Name = "lTournament"; + this.lTournament.Size = new System.Drawing.Size(0, 16); + this.lTournament.TabIndex = 2; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(30, 40); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(28, 13); + this.label4.TabIndex = 3; + this.label4.Text = "Typ:"; + // + // lType + // + this.lType.AutoSize = true; + this.lType.Location = new System.Drawing.Point(64, 40); + this.lType.Name = "lType"; + this.lType.Size = new System.Drawing.Size(0, 13); + this.lType.TabIndex = 6; + // + // lNazwyTeamow + // + this.lNazwyTeamow.AutoSize = true; + this.lNazwyTeamow.Location = new System.Drawing.Point(30, 66); + this.lNazwyTeamow.Name = "lNazwyTeamow"; + this.lNazwyTeamow.Size = new System.Drawing.Size(227, 13); + this.lNazwyTeamow.TabIndex = 20; + this.lNazwyTeamow.Text = "w piernikach będą wyświetlane nazwy teamów"; + this.lNazwyTeamow.Visible = false; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(410, 18); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(55, 13); + this.label5.TabIndex = 4; + this.label5.Text = "Sektorów:"; + // + // lSkok + // + this.lSkok.AutoSize = true; + this.lSkok.Location = new System.Drawing.Point(52, 84); + this.lSkok.Name = "lSkok"; + this.lSkok.Size = new System.Drawing.Size(188, 13); + this.lSkok.TabIndex = 19; + this.lSkok.Text = "mam nadzieję, że skok stołów = 100 :)"; + this.lSkok.Visible = false; + // + // lSections + // + this.lSections.AutoSize = true; + this.lSections.Location = new System.Drawing.Point(471, 18); + this.lSections.Name = "lSections"; + this.lSections.Size = new System.Drawing.Size(0, 13); + this.lSections.TabIndex = 7; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(0, 433); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(291, 13); + this.label8.TabIndex = 12; + this.label8.Text = "Do serwerka wysyłane są tylko nazwiska, które się zmieniły."; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(421, 40); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(44, 13); + this.label6.TabIndex = 5; + this.label6.Text = "Stołów:"; + // + // lTables + // + this.lTables.AutoSize = true; + this.lTables.Location = new System.Drawing.Point(471, 40); + this.lTables.Name = "lTables"; + this.lTables.Size = new System.Drawing.Size(0, 13); + this.lTables.TabIndex = 8; + // // syncToolStrip // this.syncToolStrip.BackColor = System.Drawing.Color.White; + this.syncToolStrip.Dock = System.Windows.Forms.DockStyle.Bottom; this.syncToolStrip.GripMargin = new System.Windows.Forms.Padding(0); this.syncToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.syncToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -737,7 +889,7 @@ this.eOomRounds, this.lOomLabel, this.toolStripButton2}); - this.syncToolStrip.Location = new System.Drawing.Point(3, 28); + this.syncToolStrip.Location = new System.Drawing.Point(3, 483); this.syncToolStrip.Name = "syncToolStrip"; this.syncToolStrip.Size = new System.Drawing.Size(563, 25); this.syncToolStrip.TabIndex = 27; @@ -878,104 +1030,6 @@ this.bTruncate.Text = "Usuń nazwiska z BWS"; this.bTruncate.Click += new System.EventHandler(this.bTruncate_Click); // - // lNazwyTeamow - // - this.lNazwyTeamow.AutoSize = true; - this.lNazwyTeamow.Location = new System.Drawing.Point(25, 121); - this.lNazwyTeamow.Name = "lNazwyTeamow"; - this.lNazwyTeamow.Size = new System.Drawing.Size(227, 13); - this.lNazwyTeamow.TabIndex = 20; - this.lNazwyTeamow.Text = "w piernikach będą wyświetlane nazwy teamów"; - this.lNazwyTeamow.Visible = false; - // - // lSkok - // - this.lSkok.AutoSize = true; - this.lSkok.Location = new System.Drawing.Point(47, 139); - this.lSkok.Name = "lSkok"; - this.lSkok.Size = new System.Drawing.Size(188, 13); - this.lSkok.TabIndex = 19; - this.lSkok.Text = "mam nadzieję, że skok stołów = 100 :)"; - this.lSkok.Visible = false; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(126, 161); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(291, 13); - this.label8.TabIndex = 12; - this.label8.Text = "Do serwerka wysyłane są tylko nazwiska, które się zmieniły."; - // - // lTables - // - this.lTables.AutoSize = true; - this.lTables.Location = new System.Drawing.Point(423, 97); - this.lTables.Name = "lTables"; - this.lTables.Size = new System.Drawing.Size(0, 13); - this.lTables.TabIndex = 8; - // - // lSections - // - this.lSections.AutoSize = true; - this.lSections.Location = new System.Drawing.Point(423, 70); - this.lSections.Name = "lSections"; - this.lSections.Size = new System.Drawing.Size(0, 13); - this.lSections.TabIndex = 7; - // - // lType - // - this.lType.AutoSize = true; - this.lType.Location = new System.Drawing.Point(59, 97); - this.lType.Name = "lType"; - this.lType.Size = new System.Drawing.Size(0, 13); - this.lType.TabIndex = 6; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(373, 97); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(44, 13); - this.label6.TabIndex = 5; - this.label6.Text = "Stołów:"; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(362, 70); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(55, 13); - this.label5.TabIndex = 4; - this.label5.Text = "Sektorów:"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(25, 97); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(28, 13); - this.label4.TabIndex = 3; - this.label4.Text = "Typ:"; - // - // lTournament - // - this.lTournament.AutoSize = true; - this.lTournament.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.lTournament.Location = new System.Drawing.Point(59, 70); - this.lTournament.Name = "lTournament"; - this.lTournament.Size = new System.Drawing.Size(0, 16); - this.lTournament.TabIndex = 2; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(11, 70); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(42, 13); - this.label3.TabIndex = 0; - this.label3.Text = "Turniej:"; - // // tabPage3 // this.tabPage3.Controls.Add(this.toolStrip3); @@ -1104,6 +1158,11 @@ this.bUpdateSession.ToolTipText = "Update ustawień w trakcie sesji"; this.bUpdateSession.Click += new System.EventHandler(this.updateSession_Click); // + // namesTimer + // + this.namesTimer.Interval = 500; + this.namesTimer.Tick += new System.EventHandler(this.namesTimer_Tick); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1144,6 +1203,9 @@ this.groupBox2.PerformLayout(); this.tabPage2.ResumeLayout(false); this.tabPage2.PerformLayout(); + this.namesPanel.ResumeLayout(false); + this.namesPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.namesGridView)).EndInit(); this.syncToolStrip.ResumeLayout(false); this.syncToolStrip.PerformLayout(); this.toolStrip4.ResumeLayout(false); @@ -1253,6 +1315,12 @@ private System.Windows.Forms.ToolStripTextBox eOomRounds; private System.Windows.Forms.ToolStripLabel lOomLabel; private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.DataGridView namesGridView; + private System.Windows.Forms.DataGridViewTextBoxColumn Number; + private System.Windows.Forms.DataGridViewTextBoxColumn NorthSouth; + private System.Windows.Forms.DataGridViewTextBoxColumn EastWest; + private System.Windows.Forms.Panel namesPanel; + private System.Windows.Forms.Timer namesTimer; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 3cf660a..4eec352 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -73,6 +73,7 @@ namespace Aktywator bindSettingChanges(); bws.loadSettings(); syncToolStrip.Visible = false; + namesPanel.Visible = false; this.WindowState = FormWindowState.Normal; } @@ -339,6 +340,11 @@ namespace Aktywator lSections.Text = tournament.getSectionsNum(); lTables.Text = tournament.getTablesNum(); syncToolStrip.Visible = true; + namesPanel.Visible = true; + tournament.clearCellLocks(namesGridView); + tournament.displayNameList(namesGridView); + tournament.clearCellLocks(namesGridView); + namesTimer.Enabled = true; if (tournament.GetType().Equals(typeof(TeamyTournament))) { lSkok.Visible = true; @@ -361,7 +367,7 @@ namespace Aktywator { try { - bws.syncNames(tournament, true, eOomRounds.Text); + bws.syncNames(tournament, true, eOomRounds.Text, namesGridView); } catch (Exception ee) { @@ -416,7 +422,7 @@ namespace Aktywator private void timer_Tick(object sender, EventArgs e) { - bws.syncNames(tournament, false, eOomRounds.Text); + bws.syncNames(tournament, false, eOomRounds.Text, namesGridView); } private void bForceSync_Click(object sender, EventArgs e) @@ -497,5 +503,20 @@ namespace Aktywator lOomLabel.Enabled = toolStripButton2.Checked; } + private void namesGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex > -1 && e.ColumnIndex > 0) + { + DataGridViewCell cell = namesGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]; + cell.Tag = true; + cell.Style.BackColor = Color.Yellow; + } + } + + private void namesTimer_Tick(object sender, EventArgs e) + { + tournament.displayNameList(namesGridView); + } + } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 4b74fb3..089c663 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -158,6 +158,15 @@ AABJRU5ErkJggg== + + True + + + True + + + True + 343, 21 @@ -178,12 +187,12 @@ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPYyAG8CryqumkqZRDuSQACwZOIMmlGaoY0/G1 8L+wNp8pRIIAkPUUD/eeb7ch9VjY3ewL0fdLbyQ+7/5W+j9yvedZoDQrRBV2wGTVqDev7HnC/9YfOf87 /+f/b/6T8b/4VfT/xBs+/yOuOf+XTxRuhqrFBGZVupOKnsf8D97o+Nhmou4uix6tDV4bja/G3nL773Xc - 7L/1fvX/KvPFPzNwMUhAtSCAsAGfaeBO+4/i9kI5QK4IRJSBQT5etCLgluV/k6VKX6VSeJaySDJYA4VZ + 7L/1fvX/8vPFPzNwMUhAtSCAsAGfaeBO+4/i9kI5QK4IRJSBQT5etCLgluV/k6VKX6VSeJaySDJYA4VZ ILJIQNZXPIFbmt0ByoUD9Xap9XIpgvNYBRj0oEI4ASOURgVcDJJQFmmAU5ZTileX1wLKRQWCDPxQFibg - 0OSQ1yyWbwreb/9SPlCyESoMAyxKlWJTuTWZXaB8BOASYZBUL5Lr99pl9Dbpmvf/1Jv+//lNOQOBdglw - 6jLISCcIhdpv1TlpOFn2BlA5B0QXEuBWZNULOmn7P+6i+//YKy7/Ux8CDbnn/inhqtfL2Kvun2Pvu/63 - 36Tyi0WcwRyqBRMoxkk2Rj2w/5/62Ot/5c/Y/9V/Ev4XvA/7H3Hd6b8B0GZmOWYnqFKcgM1lvcHZqt9x - /807NDYYVassVM+Rms1ny5kOlIOnDbyA15DDMvK6/VegL+WgQqQDXkM2XyAFyokEAAMDANzCm1l1mttC + 0OSQ1yyWbwreb/9SPlCyESoMAyxKlWJTuTWZXaB8BOASYZBUL5Lr99pl+Dbpmvf/1Jv+//lNOQOBdglw + 6jLISCcIhdpv1TlpOFn2BlA5B0QXEuBWZNULOmn7P+6i+//YKy7/Ux8CDbnn8inhqtfL2Kvun2Pvu/63 + 3yT3i0WcwRyqBRMoxkk2Rj2w/5/62Ot/5c/Y/9V/Ev4XvA/7H3Hd6b8B0GZmOWYnqFKcgM1lvcHZqt9x + /807NDYYVassVM+Rms1ny5kOlIOnDbyA15DDMvK6/VegL+WgQqQDXkM2XyAFyokEAAMDAMMSm0rf6i8H AAAAAElFTkSuQmCC @@ -243,22 +252,22 @@ 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 @@ -275,57 +284,57 @@ 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 - QmCC + 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 + gg== @@ -351,35 +360,35 @@ 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 @@ -424,6 +433,9 @@ to także należy ręcznie zrobić Upload. ZYMGMDAAAE5bDhZeNnGYAAAAAElFTkSuQmCC + + 343, 21 + 43 diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index cbe9bf9..87fa759 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Text; +using System.Windows.Forms; +using System.Drawing; namespace Aktywator { @@ -38,6 +40,77 @@ namespace Aktywator return new Dictionary>(); } + virtual public void displayNameList(DataGridView grid) + { + Dictionary> names = this.getNameList(); + foreach (KeyValuePair> item in names) { + if (!this.updateNameListRow(grid, item.Key, item.Value)) + { + this.addNameListRow(grid, item.Key, item.Value); + } + } + List toDelete = new List(); + foreach (DataGridViewRow row in grid.Rows) + { + if (!names.ContainsKey(Int32.Parse(row.Cells[0].Value.ToString()))) + { + toDelete.Add(row); + } + } + foreach (DataGridViewRow r in toDelete) + { + grid.Rows.Remove(r); + } + } + + virtual internal bool updateNameListRow(DataGridView grid, int pairNumber, List names) + { + foreach (DataGridViewRow row in grid.Rows) + { + if (Int32.Parse(row.Cells[0].Value.ToString()) == pairNumber) + { + for (int i = 1; i < 3; i++) + { + if (!(bool)row.Cells[i].Tag) + { + row.Cells[i].Value = names[i - 1]; + row.Cells[i].Tag = false; + row.Cells[i].Style.BackColor = Color.White; + } + } + return true; + } + } + return false; + } + + virtual internal void addNameListRow(DataGridView grid, int pairNumber, List names) + { + DataGridViewRow row = new DataGridViewRow(); + row.Cells.Add(new DataGridViewTextBoxCell()); + row.Cells[0].Value = pairNumber.ToString(); + foreach (string name in names) + { + DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell(); + cell.Value = name; + cell.Tag = false; + row.Cells.Add(cell); + } + grid.Rows.Add(row); + } + + virtual internal void clearCellLocks(DataGridView grid) + { + foreach (DataGridViewRow row in grid.Rows) + { + for (int i = 1; i < 3; i++) + { + row.Cells[i].Tag = false; + row.Cells[i].Style.BackColor = Color.White; + } + } + } + virtual internal string shortenNameToBWS(string name) { if ("pauza".Equals(name.Trim())) @@ -54,5 +127,21 @@ namespace Aktywator return String.Join(" ", nameParts); } } + + virtual public Dictionary> getBWSNames(DataGridView grid) + { + Dictionary> dict = new Dictionary>(); + foreach (DataGridViewRow row in grid.Rows) + { + List names = new List(); + for (int i = 1; i < 3; i++) + { + names.Add(this.shortenNameToBWS(row.Cells[i].Value.ToString())); + } + dict.Add(Int32.Parse(row.Cells[0].Value.ToString()), names); + } + return dict; + } + } } -- cgit v1.2.3 From e163f07d1c39f122a12fcb503fe75dd15aabe0ae Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 17:26:29 +0200 Subject: Configurable table offset for Teamy tournaments --- Aktywator/Bws.cs | 2 +- Aktywator/MainForm.Designer.cs | 41 +++++---- Aktywator/MainForm.cs | 6 +- Aktywator/MainForm.resx | 197 +++++++++++++++++++++-------------------- 4 files changed, 128 insertions(+), 118 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 4400272..e292f2d 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -360,7 +360,7 @@ namespace Aktywator public void syncNames(Tournament tournament, bool interactive, string startRounds, DataGridView grid) { - int count = 0, countNew = 0, SKOK_STOLOW = 100; + int count = 0, countNew = 0, SKOK_STOLOW = Convert.ToInt32(main.numTeamsTableOffset.Value); OleDbDataReader d; startRounds = startRounds.Trim(); string fromRound = sql.selectOne("SELECT min(`Round`) FROM RoundData WHERE NSPair>0"); diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index 50830b6..8f61d25 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -85,6 +85,7 @@ this.label1 = new System.Windows.Forms.Label(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.namesPanel = new System.Windows.Forms.Panel(); + this.numTeamsTableOffset = new System.Windows.Forms.NumericUpDown(); this.label3 = new System.Windows.Forms.Label(); this.namesGridView = new System.Windows.Forms.DataGridView(); this.Number = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -93,7 +94,6 @@ this.lTournament = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.lType = new System.Windows.Forms.Label(); - this.lNazwyTeamow = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.lSkok = new System.Windows.Forms.Label(); this.lSections = new System.Windows.Forms.Label(); @@ -142,6 +142,7 @@ this.groupBox2.SuspendLayout(); this.tabPage2.SuspendLayout(); this.namesPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numTeamsTableOffset)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.namesGridView)).BeginInit(); this.syncToolStrip.SuspendLayout(); this.toolStrip4.SuspendLayout(); @@ -725,12 +726,12 @@ // // namesPanel // + this.namesPanel.Controls.Add(this.numTeamsTableOffset); this.namesPanel.Controls.Add(this.label3); this.namesPanel.Controls.Add(this.namesGridView); this.namesPanel.Controls.Add(this.lTournament); this.namesPanel.Controls.Add(this.label4); this.namesPanel.Controls.Add(this.lType); - this.namesPanel.Controls.Add(this.lNazwyTeamow); this.namesPanel.Controls.Add(this.label5); this.namesPanel.Controls.Add(this.lSkok); this.namesPanel.Controls.Add(this.lSections); @@ -742,6 +743,23 @@ this.namesPanel.Size = new System.Drawing.Size(562, 449); this.namesPanel.TabIndex = 29; // + // numTeamsTableOffset + // + this.numTeamsTableOffset.Location = new System.Drawing.Point(110, 61); + this.numTeamsTableOffset.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.numTeamsTableOffset.Name = "numTeamsTableOffset"; + this.numTeamsTableOffset.Size = new System.Drawing.Size(53, 20); + this.numTeamsTableOffset.TabIndex = 29; + this.numTeamsTableOffset.Value = new decimal(new int[] { + 100, + 0, + 0, + 0}); + // // label3 // this.label3.AutoSize = true; @@ -813,16 +831,6 @@ this.lType.Size = new System.Drawing.Size(0, 13); this.lType.TabIndex = 6; // - // lNazwyTeamow - // - this.lNazwyTeamow.AutoSize = true; - this.lNazwyTeamow.Location = new System.Drawing.Point(30, 66); - this.lNazwyTeamow.Name = "lNazwyTeamow"; - this.lNazwyTeamow.Size = new System.Drawing.Size(227, 13); - this.lNazwyTeamow.TabIndex = 20; - this.lNazwyTeamow.Text = "w piernikach będą wyświetlane nazwy teamów"; - this.lNazwyTeamow.Visible = false; - // // label5 // this.label5.AutoSize = true; @@ -835,11 +843,11 @@ // lSkok // this.lSkok.AutoSize = true; - this.lSkok.Location = new System.Drawing.Point(52, 84); + this.lSkok.Location = new System.Drawing.Point(30, 63); this.lSkok.Name = "lSkok"; - this.lSkok.Size = new System.Drawing.Size(188, 13); + this.lSkok.Size = new System.Drawing.Size(74, 13); this.lSkok.TabIndex = 19; - this.lSkok.Text = "mam nadzieję, że skok stołów = 100 :)"; + this.lSkok.Text = "skok stołów ="; this.lSkok.Visible = false; // // lSections @@ -1205,6 +1213,7 @@ this.tabPage2.PerformLayout(); this.namesPanel.ResumeLayout(false); this.namesPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numTeamsTableOffset)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.namesGridView)).EndInit(); this.syncToolStrip.ResumeLayout(false); this.syncToolStrip.PerformLayout(); @@ -1267,7 +1276,6 @@ private System.Windows.Forms.Label label8; private System.Windows.Forms.Timer timer; private System.Windows.Forms.Label lSkok; - private System.Windows.Forms.Label lNazwyTeamow; public System.Windows.Forms.ComboBox xResultsOverview; public System.Windows.Forms.CheckBox xViewHandrecord; private System.Windows.Forms.TabPage tabPage3; @@ -1321,6 +1329,7 @@ private System.Windows.Forms.DataGridViewTextBoxColumn EastWest; private System.Windows.Forms.Panel namesPanel; private System.Windows.Forms.Timer namesTimer; + public System.Windows.Forms.NumericUpDown numTeamsTableOffset; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 4eec352..a359dbb 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -348,18 +348,18 @@ namespace Aktywator if (tournament.GetType().Equals(typeof(TeamyTournament))) { lSkok.Visible = true; - lNazwyTeamow.Visible = true; + numTeamsTableOffset.Visible = true; } else { lSkok.Visible = false; - lNazwyTeamow.Visible = false; + numTeamsTableOffset.Visible = false; } } else { lSkok.Visible = false; - lNazwyTeamow.Visible = false; + numTeamsTableOffset.Visible = false; } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 089c663..cb89a09 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -191,8 +191,8 @@ ILJIQNZXPIFbmt0ByoUD9Xap9XIpgvNYBRj0oEI4ASOURgVcDJJQFmmAU5ZTileX1wLKRQWCDPxQFibg 0OSQ1yyWbwreb/9SPlCyESoMAyxKlWJTuTWZXaB8BOASYZBUL5Lr99pl+Dbpmvf/1Jv+//lNOQOBdglw 6jLISCcIhdpv1TlpOFn2BlA5B0QXEuBWZNULOmn7P+6i+//YKy7/Ux8CDbnn8inhqtfL2Kvun2Pvu/63 - 3yT3i0WcwRyqBRMoxkk2Rj2w/5/62Ot/5c/Y/9V/Ev4XvA/7H3Hd6b8B0GZmOWYnqFKcgM1lvcHZqt9x - /807NDYYVassVM+Rms1ny5kOlIOnDbyA15DDMvK6/VegL+WgQqQDXkM2XyAFyokEAAMDAMMSm0rf6i8H + 3yT7i0WcwRyqBRMoxkk2Rj2w/5/62Ot/5c/Y/9V/Ev4XvA/7H3Hd6b8B0GZmOWYnqFKcgM1lvcHZqt9x + /807NDYYVassVM+Rms1ny5kOlIOnDbyA15DDMvK6/VegL+WgQqQDXkM2XyAFyokEAAMDAMH8m0kqILe/ AAAAAElFTkSuQmCC @@ -252,22 +252,23 @@ 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 + gg== @@ -284,57 +285,57 @@ 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 - gg== + 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 + YII= @@ -360,35 +361,35 @@ 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 -- cgit v1.2.3 From bbf238ffe5a7cd27a6e1162f2731bea9b17bc526 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 20:56:59 +0200 Subject: Separate settings for separate sections --- Aktywator/Bws.cs | 36 +++++--- Aktywator/MainForm.Designer.cs | 63 ++++++++++---- Aktywator/MainForm.cs | 14 +++ Aktywator/MainForm.resx | 191 +++++++++++++++++++++-------------------- Aktywator/Setting.cs | 28 +++++- 5 files changed, 202 insertions(+), 130 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index e292f2d..5793417 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -64,7 +64,7 @@ namespace Aktywator return sector.ToUpper()[0] - 'A' + 1; } - private string sectorNumberToLetter(int sector) + internal string sectorNumberToLetter(int sector) { char character = (char)('A' - 1 + sector); return character.ToString(); @@ -270,12 +270,18 @@ namespace Aktywator public void loadSettings() { + if (settings == null) + { + return; + } + main.lFirstSectorSettings.Visible = false; + string section = "*".Equals(main.cbSettingsSection.Text) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text).ToString(); StringBuilder errors = new StringBuilder(); foreach (Setting s in settings) { try { - s.load(); + s.load(section); } catch (OleDbException) { @@ -283,13 +289,18 @@ namespace Aktywator errors.Append(s.name); } } - main.xShowContract.Checked = (Setting.load("ShowContract", this, errors) == "0"); - main.xShowPlayerNames.Checked = (Setting.load("BM2ShowPlayerNames", this, errors) != "0"); - main.xPINcode.Text = Setting.load("BM2PINcode", this, errors); + main.xShowContract.Checked = (Setting.load("ShowContract", this, errors, section) == "0"); + main.xShowPlayerNames.Checked = (Setting.load("BM2ShowPlayerNames", this, errors, section) != "0"); + main.xPINcode.Text = Setting.load("BM2PINcode", this, errors, section); int resultsOverview = 0; - int.TryParse(Setting.load("BM2ResultsOverview", this, errors), out resultsOverview); + int.TryParse(Setting.load("BM2ResultsOverview", this, errors, section), out resultsOverview); main.xResultsOverview.SelectedIndex = resultsOverview; + if (section == null && main.cbSettingsSection.Items.Count > 2) + { + main.lFirstSectorSettings.Visible = true; + } + if (errors.Length > 0) { MessageBox.Show("Nie można uzyskać dostępu do pól: \n" + errors.ToString() + ".\nPrawdopodobnie te pola nie istnieją.", @@ -299,12 +310,13 @@ namespace Aktywator public void saveSettings() { + string section = "*".Equals(main.cbSettingsSection.Text) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text).ToString(); StringBuilder errors = new StringBuilder(); foreach (Setting s in settings) { try { - s.save(); + s.save(section); } catch (OleDbException) { @@ -312,11 +324,11 @@ namespace Aktywator errors.Append(s.name); } } - Setting.save("ShowContract", main.xShowContract.Checked ? "0" : "1", this, errors); - Setting.save("BM2ShowPlayerNames", main.xShowPlayerNames.Checked ? "1" : "0", this, errors); - Setting.save("BM2NameSource", "2", this, errors); - Setting.save("BM2PINcode", "'" + main.xPINcode.Text + "'", this, errors); - Setting.save("BM2ResultsOverview", main.xResultsOverview.SelectedIndex.ToString(), this, errors); + Setting.save("ShowContract", main.xShowContract.Checked ? "0" : "1", this, errors, section); + Setting.save("BM2ShowPlayerNames", main.xShowPlayerNames.Checked ? "1" : "0", this, errors, section); + Setting.save("BM2NameSource", "2", this, errors, section); + Setting.save("BM2PINcode", "'" + main.xPINcode.Text + "'", this, errors, section); + Setting.save("BM2ResultsOverview", main.xResultsOverview.SelectedIndex.ToString(), this, errors, section); this.loadSettings(); } diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index 3ecf440..c9624a3 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -38,6 +38,9 @@ this.groupBox1 = new System.Windows.Forms.GroupBox(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); + this.lFirstSectorSettings = new System.Windows.Forms.Label(); + this.cbSettingsSection = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); this.statusStrip2 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.lRequiredVersion = new System.Windows.Forms.ToolStripStatusLabel(); @@ -82,7 +85,6 @@ this.xShowPairNumbers = new System.Windows.Forms.CheckBox(); this.xMemberNumbersNoBlankEntry = new System.Windows.Forms.CheckBox(); this.xShowPlayerNames = new System.Windows.Forms.CheckBox(); - this.label1 = new System.Windows.Forms.Label(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.namesPanel = new System.Windows.Forms.Panel(); this.button1 = new System.Windows.Forms.Button(); @@ -217,6 +219,9 @@ // // tabPage1 // + this.tabPage1.Controls.Add(this.lFirstSectorSettings); + this.tabPage1.Controls.Add(this.cbSettingsSection); + this.tabPage1.Controls.Add(this.label1); this.tabPage1.Controls.Add(this.statusStrip2); this.tabPage1.Controls.Add(this.toolStrip2); this.tabPage1.Controls.Add(this.groupBox7); @@ -225,7 +230,6 @@ this.tabPage1.Controls.Add(this.groupBox4); this.tabPage1.Controls.Add(this.groupBox3); this.tabPage1.Controls.Add(this.groupBox2); - this.tabPage1.Controls.Add(this.label1); this.tabPage1.Location = new System.Drawing.Point(4, 22); this.tabPage1.Name = "tabPage1"; this.tabPage1.Padding = new System.Windows.Forms.Padding(3); @@ -234,6 +238,37 @@ this.tabPage1.Text = "Ustawienia"; this.tabPage1.UseVisualStyleBackColor = true; // + // lFirstSectorSettings + // + this.lFirstSectorSettings.AutoSize = true; + this.lFirstSectorSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.lFirstSectorSettings.Location = new System.Drawing.Point(119, 39); + this.lFirstSectorSettings.Name = "lFirstSectorSettings"; + this.lFirstSectorSettings.Size = new System.Drawing.Size(263, 13); + this.lFirstSectorSettings.TabIndex = 49; + this.lFirstSectorSettings.Text = "załadowano ustawienia z pierwszego sektora"; + // + // cbSettingsSection + // + this.cbSettingsSection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbSettingsSection.FormattingEnabled = true; + this.cbSettingsSection.Items.AddRange(new object[] { + "*"}); + this.cbSettingsSection.Location = new System.Drawing.Point(59, 36); + this.cbSettingsSection.Name = "cbSettingsSection"; + this.cbSettingsSection.Size = new System.Drawing.Size(53, 21); + this.cbSettingsSection.TabIndex = 48; + this.cbSettingsSection.SelectedIndexChanged += new System.EventHandler(this.cbSettingsSection_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 39); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 13); + this.label1.TabIndex = 47; + this.label1.Text = "Sektor:"; + // // statusStrip2 // this.statusStrip2.BackColor = System.Drawing.Color.White; @@ -461,7 +496,7 @@ this.groupBox5.Controls.Add(this.xCheckLeadCard); this.groupBox5.Controls.Add(this.xLeadCard); this.groupBox5.Controls.Add(this.xViewHandrecord); - this.groupBox5.Location = new System.Drawing.Point(1, 355); + this.groupBox5.Location = new System.Drawing.Point(4, 355); this.groupBox5.Name = "groupBox5"; this.groupBox5.Size = new System.Drawing.Size(257, 121); this.groupBox5.TabIndex = 42; @@ -592,7 +627,7 @@ this.groupBox3.Controls.Add(this.xIntermediateResults); this.groupBox3.Controls.Add(this.xAutoBoardNumber); this.groupBox3.Controls.Add(this.xCollectBidding); - this.groupBox3.Location = new System.Drawing.Point(1, 209); + this.groupBox3.Location = new System.Drawing.Point(3, 209); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(257, 140); this.groupBox3.TabIndex = 40; @@ -655,9 +690,9 @@ this.groupBox2.Controls.Add(this.xShowPairNumbers); this.groupBox2.Controls.Add(this.xMemberNumbersNoBlankEntry); this.groupBox2.Controls.Add(this.xShowPlayerNames); - this.groupBox2.Location = new System.Drawing.Point(1, 65); + this.groupBox2.Location = new System.Drawing.Point(5, 65); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(257, 138); + this.groupBox2.Size = new System.Drawing.Size(256, 138); this.groupBox2.TabIndex = 39; this.groupBox2.TabStop = false; this.groupBox2.Text = "Rozstawienie"; @@ -705,18 +740,6 @@ this.xShowPlayerNames.Text = "pokazuj nazwiska"; this.xShowPlayerNames.UseVisualStyleBackColor = true; // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.label1.ForeColor = System.Drawing.SystemColors.WindowText; - this.label1.Location = new System.Drawing.Point(89, 37); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(398, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Te same ustawienia są ustawiane dla wszystkich sektorów, przynajmniej na razie :-" + - ")"; - // // tabPage2 // this.tabPage2.Controls.Add(this.namesPanel); @@ -1335,7 +1358,6 @@ public System.Windows.Forms.CheckBox xShowResults; public System.Windows.Forms.TabPage tabPage2; public System.Windows.Forms.CheckBox xConfirmNP; - public System.Windows.Forms.Label label1; public System.Windows.Forms.CheckBox xShowPlayerNames; public System.Windows.Forms.CheckBox xAutoBoardNumber; public System.Windows.Forms.CheckBox xScoreCorrection; @@ -1414,6 +1436,9 @@ private System.Windows.Forms.Button button1; private System.Windows.Forms.NumericUpDown numNamesRefreshInterval; private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label1; + public System.Windows.Forms.Label lFirstSectorSettings; + public System.Windows.Forms.ComboBox cbSettingsSection; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 712a104..0187e84 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -67,6 +67,7 @@ namespace Aktywator bws.convert(); labelFilename.Text = filename; + this.fillSectionSelector(bws.getSections()); // cloning Setting List returned from Bws, because we're going to extend it for version tracking purposes this.bwsSettings = new List(bws.initSettings()); this.bwsSettings.Add(new Setting("BM2ShowPlayerNames", this.xShowPlayerNames, bws, new Version(2, 0, 0), new Version(1, 3, 1))); @@ -77,6 +78,14 @@ namespace Aktywator this.WindowState = FormWindowState.Normal; } + private void fillSectionSelector(string sections) + { + cbSettingsSection.SelectedIndex = 0; + foreach (string section in sections.Split(',')) { + cbSettingsSection.Items.Add(bws.sectorNumberToLetter(Int32.Parse(section.Trim()))); + } + } + private void bindSettingChanges() { foreach (Setting s in this.bwsSettings) @@ -538,5 +547,10 @@ namespace Aktywator } } + private void cbSettingsSection_SelectedIndexChanged(object sender, EventArgs e) + { + bws.loadSettings(); + } + } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 30e33ef..766bdc0 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -266,22 +266,22 @@ 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 @@ -298,56 +298,57 @@ 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 + gg== @@ -373,35 +374,35 @@ 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 diff --git a/Aktywator/Setting.cs b/Aktywator/Setting.cs index e981328..a5540d6 100644 --- a/Aktywator/Setting.cs +++ b/Aktywator/Setting.cs @@ -26,23 +26,33 @@ namespace Aktywator this.fwV = firmwareVersion; } - public void load() + public void load(string section = null) { StringBuilder str = new StringBuilder(); str.Append("SELECT "); str.Append(this.name); str.Append(" FROM Settings"); + if (section != null) + { + str.Append(" WHERE `Section` = "); + str.Append(section); + } field.Checked = false; string a = bws.sql.selectOne(str.ToString()); field.Checked = a.ToUpper() == "TRUE" ? true : false; } - public static string load(string name, Bws bws, StringBuilder errors) + public static string load(string name, Bws bws, StringBuilder errors, string section = null) { StringBuilder str = new StringBuilder(); str.Append("SELECT "); str.Append(name); str.Append(" FROM Settings"); + if (section != null) + { + str.Append(" WHERE `Section` = "); + str.Append(section); + } try { return bws.sql.selectOne(str.ToString()); @@ -55,23 +65,33 @@ namespace Aktywator } } - public void save() + public void save(string section = null) { StringBuilder str = new StringBuilder(); str.Append("UPDATE Settings SET "); str.Append(this.name); if (field.Checked) str.Append("=true"); else str.Append("=false"); + if (section != null) + { + str.Append(" WHERE `Section` = "); + str.Append(section); + } bws.sql.query(str.ToString()); } - public static void save(string name, string value, Bws bws, StringBuilder errors) + public static void save(string name, string value, Bws bws, StringBuilder errors, string section = null) { StringBuilder str = new StringBuilder(); str.Append("UPDATE Settings SET "); str.Append(name); str.Append("="); str.Append(value); + if (section != null) + { + str.Append(" WHERE `Section` = "); + str.Append(section); + } try { bws.sql.query(str.ToString()); -- cgit v1.2.3 From adba6472ce5bfc3b6d95db2cb511db2025641665 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 23 Aug 2017 21:49:32 +0200 Subject: Results grouping for sections setting supported --- Aktywator/Bws.cs | 22 ++++- Aktywator/MainForm.Designer.cs | 5 +- Aktywator/MainForm.resx | 191 ++++++++++++++++++++--------------------- 3 files changed, 118 insertions(+), 100 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 5793417..13067cf 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -86,7 +86,7 @@ namespace Aktywator settings.Add(new Setting("ShowResults", main.xShowResults, this, new Version(2, 0, 0), new Version(1, 3, 1))); settings.Add(new Setting("RepeatResults", main.xRepeatResults, this, null, null)); settings.Add(new Setting("ShowPercentage", main.xShowPercentage, this, null, null)); - //settings.Add(new Setting("GroupSections", main.xGroupSections, this, null, null)); + settings.Add(new Setting("GroupSections", main.xGroupSections, this, new Version(2, 1, 10), new Version(1, 3, 1))); settings.Add(new Setting("ShowPairNumbers", main.xShowPairNumbers, this, null, null)); settings.Add(new Setting("IntermediateResults", main.xIntermediateResults, this, null, new Version(1, 4, 1))); settings.Add(new Setting("ShowContract", main.xShowContract, this, null, null)); @@ -295,6 +295,7 @@ namespace Aktywator int resultsOverview = 0; int.TryParse(Setting.load("BM2ResultsOverview", this, errors, section), out resultsOverview); main.xResultsOverview.SelectedIndex = resultsOverview; + main.xGroupSections.Checked = this.getSectionGroupCount() <= 1; if (section == null && main.cbSettingsSection.Items.Count > 2) { @@ -308,6 +309,17 @@ namespace Aktywator } } + private int getSectionGroupCount() + { + OleDbDataReader rows = sql.select("SELECT DISTINCT `Group` FROM Tables"); + int count = 0; + while (rows.Read()) + { + count++; + } + return count; + } + public void saveSettings() { string section = "*".Equals(main.cbSettingsSection.Text) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text).ToString(); @@ -329,6 +341,14 @@ namespace Aktywator Setting.save("BM2NameSource", "2", this, errors, section); Setting.save("BM2PINcode", "'" + main.xPINcode.Text + "'", this, errors, section); Setting.save("BM2ResultsOverview", main.xResultsOverview.SelectedIndex.ToString(), this, errors, section); + if (main.xGroupSections.Checked) + { + sql.query("UPDATE Tables SET `Group` = 1;"); + } + else + { + sql.query("UPDATE Tables SET `Group` = `Section`;"); + } this.loadSettings(); } diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index c9624a3..2fcf1fa 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -552,12 +552,11 @@ // xGroupSections // this.xGroupSections.AutoSize = true; - this.xGroupSections.Enabled = false; this.xGroupSections.Location = new System.Drawing.Point(34, 89); this.xGroupSections.Name = "xGroupSections"; - this.xGroupSections.Size = new System.Drawing.Size(215, 17); + this.xGroupSections.Size = new System.Drawing.Size(227, 17); this.xGroupSections.TabIndex = 4; - this.xGroupSections.Text = "oddzielne maksowanie każdego sektora"; + this.xGroupSections.Text = "wspólne maksowanie wszystkich sektorów"; this.xGroupSections.UseVisualStyleBackColor = true; // // xShowResults diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 766bdc0..053a7ff 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -266,22 +266,22 @@ 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 @@ -298,57 +298,56 @@ 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 - gg== + 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 @@ -374,35 +373,35 @@ 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 -- cgit v1.2.3 From 39a139c8634c180d91d8da195f60b61b4c5c6a27 Mon Sep 17 00:00:00 2001 From: emkael Date: Thu, 24 Aug 2017 22:35:58 +0200 Subject: A bit of formatting for section selector --- Aktywator/Bws.cs | 4 +- Aktywator/MainForm.Designer.cs | 48 +++++------ Aktywator/MainForm.cs | 2 +- Aktywator/MainForm.resx | 190 ++++++++++++++++++++--------------------- 4 files changed, 122 insertions(+), 122 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 13067cf..ab15670 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -275,7 +275,7 @@ namespace Aktywator return; } main.lFirstSectorSettings.Visible = false; - string section = "*".Equals(main.cbSettingsSection.Text) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text).ToString(); + string section = "*".Equals(main.cbSettingsSection.Text.Trim()) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text.Trim()).ToString(); StringBuilder errors = new StringBuilder(); foreach (Setting s in settings) { @@ -322,7 +322,7 @@ namespace Aktywator public void saveSettings() { - string section = "*".Equals(main.cbSettingsSection.Text) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text).ToString(); + string section = "*".Equals(main.cbSettingsSection.Text.Trim()) ? null : this.sectorLetterToNumber(main.cbSettingsSection.Text.Trim()).ToString(); StringBuilder errors = new StringBuilder(); foreach (Setting s in settings) { diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index 5cec66a..4ac7f37 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -95,6 +95,9 @@ this.numTeamsTableOffset = new System.Windows.Forms.NumericUpDown(); this.label3 = new System.Windows.Forms.Label(); this.namesGridView = new System.Windows.Forms.DataGridView(); + this.Number = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.NorthSouth = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.EastWest = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.lTournament = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.lType = new System.Windows.Forms.Label(); @@ -132,9 +135,6 @@ this.bLaunch = new System.Windows.Forms.ToolStripButton(); this.bUpdateSession = new System.Windows.Forms.ToolStripButton(); this.namesTimer = new System.Windows.Forms.Timer(this.components); - this.Number = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.NorthSouth = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.EastWest = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.statusStrip1.SuspendLayout(); this.groupBox1.SuspendLayout(); this.tabControl1.SuspendLayout(); @@ -242,7 +242,7 @@ // this.lFirstSectorSettings.AutoSize = true; this.lFirstSectorSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.lFirstSectorSettings.Location = new System.Drawing.Point(119, 39); + this.lFirstSectorSettings.Location = new System.Drawing.Point(107, 39); this.lFirstSectorSettings.Name = "lFirstSectorSettings"; this.lFirstSectorSettings.Size = new System.Drawing.Size(263, 13); this.lFirstSectorSettings.TabIndex = 49; @@ -253,10 +253,10 @@ this.cbSettingsSection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbSettingsSection.FormattingEnabled = true; this.cbSettingsSection.Items.AddRange(new object[] { - "*"}); + " * "}); this.cbSettingsSection.Location = new System.Drawing.Point(59, 36); this.cbSettingsSection.Name = "cbSettingsSection"; - this.cbSettingsSection.Size = new System.Drawing.Size(53, 21); + this.cbSettingsSection.Size = new System.Drawing.Size(42, 21); this.cbSettingsSection.TabIndex = 48; this.cbSettingsSection.SelectedIndexChanged += new System.EventHandler(this.cbSettingsSection_SelectedIndexChanged); // @@ -887,6 +887,24 @@ this.namesGridView.CellMouseEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.namesGridView_CellMouseEnter); this.namesGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.namesGridView_CellValueChanged); // + // Number + // + this.Number.HeaderText = "Nr"; + this.Number.Name = "Number"; + this.Number.ReadOnly = true; + // + // NorthSouth + // + this.NorthSouth.FillWeight = 300F; + this.NorthSouth.HeaderText = "N lub E"; + this.NorthSouth.Name = "NorthSouth"; + // + // EastWest + // + this.EastWest.FillWeight = 300F; + this.EastWest.HeaderText = "S lub W"; + this.EastWest.Name = "EastWest"; + // // lTournament // this.lTournament.AutoSize = true; @@ -1253,24 +1271,6 @@ this.namesTimer.Interval = 3000; this.namesTimer.Tick += new System.EventHandler(this.namesTimer_Tick); // - // Number - // - this.Number.HeaderText = "Nr"; - this.Number.Name = "Number"; - this.Number.ReadOnly = true; - // - // NorthSouth - // - this.NorthSouth.FillWeight = 300F; - this.NorthSouth.HeaderText = "N lub E"; - this.NorthSouth.Name = "NorthSouth"; - // - // EastWest - // - this.EastWest.FillWeight = 300F; - this.EastWest.HeaderText = "S lub W"; - this.EastWest.Name = "EastWest"; - // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 0187e84..fb8501b 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -82,7 +82,7 @@ namespace Aktywator { cbSettingsSection.SelectedIndex = 0; foreach (string section in sections.Split(',')) { - cbSettingsSection.Items.Add(bws.sectorNumberToLetter(Int32.Parse(section.Trim()))); + cbSettingsSection.Items.Add(" " + bws.sectorNumberToLetter(Int32.Parse(section.Trim())) + " "); } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 467cbf5..8c49ae7 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -266,22 +266,22 @@ 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 @@ -298,56 +298,56 @@ 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 @@ -373,35 +373,35 @@ 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 -- cgit v1.2.3 From 28553070697536a2a987d203f19ca92fe2619d4c Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 25 Aug 2017 14:16:34 +0200 Subject: Adding Group field to Tables table on convert (single-section BWS files from Pary did not generate it) --- Aktywator/Bws.cs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index ab15670..3906ed9 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -206,6 +206,14 @@ namespace Aktywator s.createField(sql); } + try + { + sql.query("ALTER TABLE Tables ADD COLUMN `Group` integer;"); + } + catch (OleDbException) + { + } + try { sql.query("CREATE TABLE PlayerNames (ID integer, Name text(18));"); -- cgit v1.2.3 From e2f9413e05d4565e16eff21cb3bb25f5a0b509d4 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 29 Aug 2017 01:31:03 +0200 Subject: Sometimes default value for BM2ShowPlayerNames is empty, this should parse to disabled option, too. --- Aktywator/Bws.cs | 3 ++- Aktywator/Resources/BuildDate.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 3906ed9..d7b5552 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -298,7 +298,8 @@ namespace Aktywator } } main.xShowContract.Checked = (Setting.load("ShowContract", this, errors, section) == "0"); - main.xShowPlayerNames.Checked = (Setting.load("BM2ShowPlayerNames", this, errors, section) != "0"); + string playerNames = Setting.load("BM2ShowPlayerNames", this, errors, section); + main.xShowPlayerNames.Checked = !("".Equals(playerNames) || "0".Equals(playerNames)); main.xPINcode.Text = Setting.load("BM2PINcode", this, errors, section); int resultsOverview = 0; int.TryParse(Setting.load("BM2ResultsOverview", this, errors, section), out resultsOverview); diff --git a/Aktywator/Resources/BuildDate.txt b/Aktywator/Resources/BuildDate.txt index b1e2ab1..a485840 100644 --- a/Aktywator/Resources/BuildDate.txt +++ b/Aktywator/Resources/BuildDate.txt @@ -1 +1 @@ -2017-08-25 +2017-08-29 -- cgit v1.2.3 From 616b4d11f37fc4ad2cecb1a14a2d2cdc6b8486b9 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 12 Sep 2017 18:42:01 +0200 Subject: Warning about inability to update section grouping during active session --- Aktywator/Bws.cs | 10 ++ Aktywator/MainForm.Designer.cs | 94 +++++++++-------- Aktywator/MainForm.cs | 11 ++ Aktywator/MainForm.resx | 208 ++++++++++++++++++++------------------ Aktywator/Resources/BuildDate.txt | 2 +- 5 files changed, 188 insertions(+), 137 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index d7b5552..763b11d 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -309,6 +309,7 @@ namespace Aktywator if (section == null && main.cbSettingsSection.Items.Count > 2) { main.lFirstSectorSettings.Visible = true; + this.sectionGroupWarning(); } if (errors.Length > 0) @@ -318,6 +319,15 @@ namespace Aktywator } } + public void sectionGroupWarning() + { + main.lGroupSectionsWarning.Visible = false; + if (main.xShowResults.Checked) + { + main.lGroupSectionsWarning.Visible = true; + } + } + private int getSectionGroupCount() { OleDbDataReader rows = sql.select("SELECT DISTINCT `Group` FROM Tables"); diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index 77036c5..8e96207 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -39,6 +39,9 @@ this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.panel1 = new System.Windows.Forms.Panel(); + this.toolStrip2 = new System.Windows.Forms.ToolStrip(); + this.bLoad = new System.Windows.Forms.ToolStripButton(); + this.bSave = new System.Windows.Forms.ToolStripButton(); this.statusStrip2 = new System.Windows.Forms.StatusStrip(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.lRequiredVersion = new System.Windows.Forms.ToolStripStatusLabel(); @@ -77,6 +80,7 @@ this.xLeadCard = new System.Windows.Forms.CheckBox(); this.xViewHandrecord = new System.Windows.Forms.CheckBox(); this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.lGroupSectionsWarning = new System.Windows.Forms.Label(); this.xGroupSections = new System.Windows.Forms.CheckBox(); this.xShowResults = new System.Windows.Forms.CheckBox(); this.xRepeatResults = new System.Windows.Forms.CheckBox(); @@ -133,14 +137,12 @@ this.bLaunch = new System.Windows.Forms.ToolStripButton(); this.bUpdateSession = new System.Windows.Forms.ToolStripButton(); this.namesTimer = new System.Windows.Forms.Timer(this.components); - this.toolStrip2 = new System.Windows.Forms.ToolStrip(); - this.bLoad = new System.Windows.Forms.ToolStripButton(); - this.bSave = new System.Windows.Forms.ToolStripButton(); this.statusStrip1.SuspendLayout(); this.groupBox1.SuspendLayout(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.panel1.SuspendLayout(); + this.toolStrip2.SuspendLayout(); this.statusStrip2.SuspendLayout(); this.groupBox7.SuspendLayout(); this.groupBox2.SuspendLayout(); @@ -158,7 +160,6 @@ this.tabPage3.SuspendLayout(); this.toolStrip3.SuspendLayout(); this.toolStrip1.SuspendLayout(); - this.toolStrip2.SuspendLayout(); this.SuspendLayout(); // // open @@ -250,6 +251,40 @@ this.panel1.Size = new System.Drawing.Size(563, 502); this.panel1.TabIndex = 29; // + // toolStrip2 + // + this.toolStrip2.BackColor = System.Drawing.Color.White; + this.toolStrip2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip2.GripMargin = new System.Windows.Forms.Padding(0); + this.toolStrip2.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bLoad, + this.bSave}); + this.toolStrip2.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; + this.toolStrip2.Location = new System.Drawing.Point(0, 455); + this.toolStrip2.Name = "toolStrip2"; + this.toolStrip2.Size = new System.Drawing.Size(563, 25); + this.toolStrip2.TabIndex = 51; + this.toolStrip2.Text = "toolStrip2"; + // + // bLoad + // + this.bLoad.Image = ((System.Drawing.Image)(resources.GetObject("bLoad.Image"))); + this.bLoad.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bLoad.Name = "bLoad"; + this.bLoad.Size = new System.Drawing.Size(216, 22); + this.bLoad.Text = "Ponownie wczytaj ustawienia z BWS"; + // + // bSave + // + this.bSave.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.bSave.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.bSave.Image = ((System.Drawing.Image)(resources.GetObject("bSave.Image"))); + this.bSave.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bSave.Name = "bSave"; + this.bSave.Size = new System.Drawing.Size(108, 22); + this.bSave.Text = "Zapisz do BWS"; + // // statusStrip2 // this.statusStrip2.BackColor = System.Drawing.Color.White; @@ -633,6 +668,7 @@ // // groupBox4 // + this.groupBox4.Controls.Add(this.lGroupSectionsWarning); this.groupBox4.Controls.Add(this.xGroupSections); this.groupBox4.Controls.Add(this.xShowResults); this.groupBox4.Controls.Add(this.xRepeatResults); @@ -646,6 +682,17 @@ this.groupBox4.TabStop = false; this.groupBox4.Text = "Protokół"; // + // lGroupSectionsWarning + // + this.lGroupSectionsWarning.Cursor = System.Windows.Forms.Cursors.Help; + this.lGroupSectionsWarning.Image = ((System.Drawing.Image)(resources.GetObject("lGroupSectionsWarning.Image"))); + this.lGroupSectionsWarning.Location = new System.Drawing.Point(9, 87); + this.lGroupSectionsWarning.Name = "lGroupSectionsWarning"; + this.lGroupSectionsWarning.Size = new System.Drawing.Size(22, 18); + this.lGroupSectionsWarning.TabIndex = 29; + this.lGroupSectionsWarning.Visible = false; + this.lGroupSectionsWarning.Click += new System.EventHandler(this.lGroupSectionsWarning_Click); + // // xGroupSections // this.xGroupSections.AutoSize = true; @@ -1255,40 +1302,6 @@ this.namesTimer.Interval = 3000; this.namesTimer.Tick += new System.EventHandler(this.namesTimer_Tick); // - // toolStrip2 - // - this.toolStrip2.BackColor = System.Drawing.Color.White; - this.toolStrip2.Dock = System.Windows.Forms.DockStyle.Bottom; - this.toolStrip2.GripMargin = new System.Windows.Forms.Padding(0); - this.toolStrip2.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; - this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.bLoad, - this.bSave}); - this.toolStrip2.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; - this.toolStrip2.Location = new System.Drawing.Point(0, 455); - this.toolStrip2.Name = "toolStrip2"; - this.toolStrip2.Size = new System.Drawing.Size(563, 25); - this.toolStrip2.TabIndex = 51; - this.toolStrip2.Text = "toolStrip2"; - // - // bLoad - // - this.bLoad.Image = ((System.Drawing.Image)(resources.GetObject("bLoad.Image"))); - this.bLoad.ImageTransparentColor = System.Drawing.Color.Magenta; - this.bLoad.Name = "bLoad"; - this.bLoad.Size = new System.Drawing.Size(216, 22); - this.bLoad.Text = "Ponownie wczytaj ustawienia z BWS"; - // - // bSave - // - this.bSave.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.bSave.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.bSave.Image = ((System.Drawing.Image)(resources.GetObject("bSave.Image"))); - this.bSave.ImageTransparentColor = System.Drawing.Color.Magenta; - this.bSave.Name = "bSave"; - this.bSave.Size = new System.Drawing.Size(108, 22); - this.bSave.Text = "Zapisz do BWS"; - // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1313,6 +1326,8 @@ this.tabPage1.ResumeLayout(false); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); + this.toolStrip2.ResumeLayout(false); + this.toolStrip2.PerformLayout(); this.statusStrip2.ResumeLayout(false); this.statusStrip2.PerformLayout(); this.groupBox7.ResumeLayout(false); @@ -1344,8 +1359,6 @@ this.toolStrip3.PerformLayout(); this.toolStrip1.ResumeLayout(false); this.toolStrip1.PerformLayout(); - this.toolStrip2.ResumeLayout(false); - this.toolStrip2.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -1459,6 +1472,7 @@ private System.Windows.Forms.ToolStrip toolStrip2; private System.Windows.Forms.ToolStripButton bLoad; private System.Windows.Forms.ToolStripButton bSave; + public System.Windows.Forms.Label lGroupSectionsWarning; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 11718a7..1942dd2 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -280,12 +280,18 @@ namespace Aktywator xRepeatResults.Enabled = true; xShowPercentage.Enabled = true; xResultsOverview.Enabled = true; + xGroupSections.Enabled = true; } else { xRepeatResults.Enabled = false; xShowPercentage.Enabled = false; xResultsOverview.Enabled = false; + xGroupSections.Enabled = false; + } + if (cbSettingsSection.Items.Count > 2) + { + bws.sectionGroupWarning(); } } @@ -557,5 +563,10 @@ namespace Aktywator namesTimer.Enabled = checkBox1.Checked; } + private void lGroupSectionsWarning_Click(object sender, EventArgs e) + { + MessageBox.Show("Opcja grupowania zapisów w sektorach (albo osobnego maksowania sektorów) nie może być zaktualizowana w trakcie trwania sesji!", "Ustawienia grupowania zapisów w sektorach", MessageBoxButtons.OK, MessageBoxIcon.Question); + } + } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 9399911..a776a07 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -158,6 +158,23 @@ 343, 56 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 + JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsQAAALEAGtI711AAACaklE + QVQ4T6WRX0hTYRjGdxMkikcqmeWURbeamAg60pVK82KgppIzCh3WNvwzRtjCuahhCYabyzRrFcQyVEbQ + hSj+YaKrkCBnDpuSTsu55lEXG1mG29PZuRiunau6+MH3PTzPw/u9HwvAf8EoBlmcKOa+GTi7p68ndrsV + xGEmTxBGMcjbgfz5JfvN3/MzSn9HLTHI5AnCKFr68oTzU5f9vp9PsbnWCNsID50NxEkmb4QQ5P3rQvLz + chdUzTUQiYpgGZOht4XjYvJGCGYjX2mflvibVFdgMpmg0WiQyEmAdTADulpC8rc/7EItLurjkHA3OLqo + shw6nQ5SqRRsNgFyqRovNfG/qIUe2J8JKxh/ntO3sqCm3v4MzepqKBQK5PLPQFGfg+2vcixbTge0MsK4 + PxM6WPrzkuyTInpxvh0DzGY1Ss+XIj0tBeahKnhWrmJroQyjj7gB6mu5EQVmY67V/U27Rxd49XA7WyAQ + nIKoPBO2dxXY/FRCUYTVMY5fX0fYwgqGDDy+Y0YWoMO+Tni3W7G6qIThQTG62gVYmy3DxgceNqx8uKa4 + GNTGBNqlscJQgaU/3+3beUKN/pgOf3erqLEluFhZguzsLOg1KSDnCkDOFsA1mYQvw1HoUhBeuuBVR4bS + 6bgN7w9DKOxZk2PVVgVhYTrSUo9hcSIL7ulUuCzHsT7BhnM0GuaH0YG74thelrYhOeDx9mCLbAuFtx1i + emHk3Dlq9Oyw8Po4AefIQQzrY3BPGk+yeho5U93XT8BwIxnd1xJp7suPQleXQNNaE09zR3wEty4domm6 + EAdVRRzaJOwXoV/4N8D6AwpMvVRjyTFwAAAAAElFTkSuQmCC + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -266,22 +283,22 @@ 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 @@ -298,57 +315,56 @@ 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 - gg== + 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 @@ -374,35 +390,35 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAaLSURBVFhHtVcJUFNXFMXuy7SdrtNOO12m03ZqO22tg4gQ - PopIhhABERDIBgRUQCSA4h4R0LpBBFkEgViN7CIVEAgakC1hHRUVpci+QyCgAlK4fe/zdaBsoeqZOTOZ - n/fvufe+e999X+N5oz0ubn/LuXPtNRLJw8bE5J1LTZzf0hAKX6L+frFok8RL6mNjB3uys6ErLQ2QI1Ar - Fvdej4jgEgT3jRfqSKtEEtseFfVoQFECg+WlMFCGqYCuzEyQhYeN3Qk+0Zbn629Op295/bk70iwWn25F - 4ip5MSk6UIqokCOWwIAcsxhaU5Kh0t9vtGiPz/04J6c1pCMaGosmLDwDmmJiTrVg8ZKiaaL4maoYsxBU - RQUk6/4Ug9TObljCc3AxNGS9TZn5f2iIPB3WHCQewobnElUVXgNVwTXoL8iH/mv50IcYZ2HRsdLY4SvK - 1MJRHxkpagwKGiKNzyuaN8F8GWIedFVW9ogt1nXorWUvocwtDPfDwgIbkHhffv40UVLwiSgpiJh3lWQf - Yq9CMXjJ0/NhBEGoaAzOMsqk+vg7NOQYcmAYG1NLVHYF+q5i5kJfVdVQjlA4IHHmwxFNzUFdY5YWZVY9 - 1IpER+pCgoexUbVFr2BKob6ifFQaHqiMd3OBIFPToUNaWql6JjxNyvT8uCcS+dcKhcNKZGx2USRGikon - mJtDUlUqh9KEBGXiFleId3WBUCPDjl1a2r4Eg/UzZX5u3Dt+dJ8cifdKs9UW7UNrlXg92qaarMvKJHc3 - SEDRx7luhoPaS3rpdGsDGpP1DSUxO2oOH95398jhkd7srFnT+19RZU4WSbxFd/Lz+lIEWyGRcuAky3bE - T0szGqdfl27/MSUzM27/cXDv7UMBIz1ZmTOLSqeLKrMvk8RrmwsK+tO2e0Py1i2A039+kzMEGaxs1zfh - GqxY6/ADOahmQ/VBf59b/gdGujPT5410sjApjtbUo3bL2LMLUjzcAac/HqVeuHjxP24b7Fk0E97vhInN - R5aWli9TclNR7efrWS0UPu7OuDQp2rlFnxI97ywqepB7KAAuoNTj6JNQ9EJjo/FjbPu9eiZsbYJu98Vi - S8vXKLmpuL57p+tN4d7H3ZfSFiZMsbu8bEh2QjSW6ukBFzwmHIgxN4VIGxsJzZijt5LO+ZZK/fRBVOrj - ueS673bVYEXFAK72hQhj1stLRhXRUaNpXgJIFXiQ6T+7wQqizM3lNCZvlZ4x+8dldLt3Zx3Hld4euTXo - pGoKD1X137jRis93dYQxM0WB47LkpJG/vD3hIo4epT+Oy4YohnGnHpNnqMvk/LJ8jeMHs+57uYcHrcrL - q6sxWARNJ4OhKewkKIsK78pksrGZBCezG023qtTUofRt3oCjxw4kOvEhiG44ZGrKY+Kiwy1HEMQrlNx0 - VHi51VUFHh1qRsLN4aHQEhEGLafCoetiat1DtCW4HmYSV6JTsaGwYDhzx3bA0WMHUlC/44rnW9pb4X4n - jLmfLl3q/ColNTPKvD1u3Q86PiEcGQGtmFGnoO10JHScj1b2V1e34Fk+RRydDc1y+XD2vj1waZsX6UAq - KrpYghjzZfHcCCZ3+SoG5/NZK34yigVbN8rQi42hIdCKRNuio6At5jS0Y8ZGQ8cZMQxUld3DW0IeSKhI - WxTyR7n+fpCODhvsQBpKvdCMOR6ywfaQLpOrQ5hyvyYvo+pcvfDCDIGAU8LljtYFHiNF28Ux0IF5JhY6 - 0FWqE7EnPb22S6FoqMvOapb67ocMn22QTkUvsVwHMVZWabombEKPwfuOunKpee9DrYFfCHF01Zfx+aob - vsIpwp1nzzxlB6J0907IROIZVPRxttYQw2DU6KJjVofJ+Wn1auf3Fn77RS8sX7/+Tb41/3uZi1NdocB9 - woFJ4pgNqDYuo6Ijo0cOxHNYEG60pk+fwTZCBfebgRn7w1nbTQ0swldmXLnSzZuzfO05423i6CkO3BQF - Aq567ECioz0IVxGPzcx4proM7lJtc9Ync7abusBtgwdGhqtroNDGarwRdccTB4oD/Mj0J290Ittto4Wd - Db7f0YzsPpu33RYCnEZdhu37qe4Cx1hb69EaXJxoS3J27YAkBx4I9fXGA9bbej0ZMNTHxnMGqgs0u98J - 5G+iZTvzGxItzCDB3PzB2fVm1QfWmgtoxrwVuN1w7aDVz/6lMyOo4sSHig7D/ld8wOAbLf6tY8L+kmy3 - BVf8wrEIn2h4muGhgol/P9vHpobGv7SAXyCW2XZWAAAAAElFTkSuQmCC + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAaLSURBVFhHtVcJTFRXFMXuS9qma9q06ZKmbWqbtpYoIgwf + F2TCMAKyCcwGDqiAyACK+xdBrRsgyCLrWB3ZRcoiMOiAbDOsUVFRiuw7DAyogFRu3/t8DRSQoepJTjL5 + 8/49995377vvazxvdMTF7Ws9e7ajViK535SYvEPT2OktDZJ8if77xaJdEi9piI0d6s3Jge60NECOQJ1Y + 3Hc1PJxPEPw3XqgjbRJJbEdk5INBRSkMVZTBYDmmArqzskAWFvroVtCJ9nwfPzMmc/Prz92RFrE4qg2J + q+QllOhgGaJCjlgKg3LMEmhLSYYqP9+x4t3ed+McHVdTjmhoLJiw8Axojok51YrFS4unieJnqhLMIlAV + F1Ks/1MMUju7EYnAwdnAgPM2beb/oTEiKrQlQDyMDT9NVFV0BVSFV2CgsAAGrhRAP2KcuXnnciOHr2hT + 80dDRERgU0DAMGV8TtH8CRbIEPOhu6qqV2y+tlNvDXcRbW5+uBsa6t+IxPsLCqaJUoKPRSlBxPzLFPsR + +xSKoXQPj/vhBKFisHhLaJPq4++Q4GPIgRFsTC1R2SXov4yZB/3V1cO5JDkocRLCkcWLh3SNOFq0WfVQ + Fxh4pD44aAQbVVv0EqYUGiorxqRh/sp4V2cIMDEZPqSllapnLFhMm54bdwID/epIckSJjM0uisQoUekE + 83IpqsrkUJaQoEzc7ALxLs4QYmjQuVNL24dgcX6mzT8dd44f3StH4n3SHLVF+9FaJV6Ptqk2+6Iyyc0V + ElD0cS6b4KD2oj4m03olg835hpaYHbWHD++9feTwaF9O9qzp/a+oMjebIt6iWwX5/SmiLZBIO3CSYzvq + q7U4Gqdfl2n/MS0zM27+cXDPzUMHRnuzs2YWlU4XVeZcpIjXthQWDqRt84LkLZsBp//cRicIWLm8Q9+Y + v3LZGocfqEE1G2oO+nnf8Ns/2pOVMWekk4UpcbSmAbVb5u6dkOLuBjj98Sj15MKF/7ius+cwjAW/E8Y2 + H1laWr5My01Fja+PRw1JPuzJTJ8U7dNFnxA97youvpd36ACcR6nH0Seh6Ekjw/FjXPs9esZcbYJp98VC + S8vXaLmpuLprh8t1cs/DnvS0+QnT7KkoH5adCHyU6uEO590nHIgxM4EIGxsJw4int5zJ+5ZO/fRBVObt + seiqzzbVUGXlIK72+QhjNshLxxTRkWNpniJIFblT6T+zzgoizczkDLZghZ4R98clTLt3Zx3HVV7uebXo + pGoOC1ENXLvWhs93dYQxM/yPjcuSk0b/8vKACzh6lP44PhciWUZdemyBgS6b98vS1es/mHXfK9zdGdWe + nt1NQYHQfDIImkNPgrK46LZMJns0k+Bk9qDpVp2aOpyx1Qtw9NiBREchBDANhk1MBGxcdLjlCIJ4hZab + jkpP1/pq/6PDLUi4JSwEWsNDofVUGHRfSK2/j7YE18NM4kp0KjYWFY5kbd8GOHrsQArqd1zxQkt7K9zv + hBH/U01Np1dpqZlR7uV+427A8QnhiHBow4w8Be1REdB5Llo5UFPTimf5FHF0NrTI5SM5e3dD+lZPyoFU + VHSxBPHIhyNwJdj8pStYvM9nrfjJKBFt2SBDLzaFBEMbEm2PjoT2mCjowIyNhs7TYhisLr+Dt4Q6kFCR + tirkD/L8fCEDHTbYgTSUetKUPR68zvaQLpuvQ5jwv6Yuo+pcvfDCTJGIV8rnj9X7H6NEO8Qx0Il5OhY6 + 0VWqC7E3I6OuW6ForM/JbpH67INM762QQUcvsVwLMVZWabrGXEKPJfiOvnKpee9DrYFfCF7voi8TClXX + fMgpwl1nTj9hJ6J01w7IQuKZdPRxttYQw2LV6qJjVofN+2nVKqf35n/7RS8stbB4U2gt/F7m7FhfJHKb + cGCSOGYjqo2LqOio6JED8TwOhBmu7tdncQ1Rwf220pT74aztpgYW4Cszrlzppk3ZpD1vvF0cPcWB64H+ + gKseO5C43h7IFcRDU1OBiS6Lr6ltxvnkqe2mLnDb4IGR6eLiT9pYjTeh7njsQMkBXyr9yRscqXbbYG5n + g+93DEO7z+Zst/kAp1GXZft+qptofayt9VgtLk60Jbk7t0OSgwBIfb3xAxa2no8HDP2x8ZyB6gLN7nf8 + hRsZOU7CxkRzU0gwM7t3xsK0Zv8aMxHDSLAMtxuuHbT62b90ZgRdnPhQ0WHZ/4oPGHyjxb91jLlfUu02 + 74qfPxbgEw1PMzxUMPHvZ/vY1ND4F4YeXxijvm3PAAAAAElFTkSuQmCC diff --git a/Aktywator/Resources/BuildDate.txt b/Aktywator/Resources/BuildDate.txt index a485840..5463401 100644 --- a/Aktywator/Resources/BuildDate.txt +++ b/Aktywator/Resources/BuildDate.txt @@ -1 +1 @@ -2017-08-29 +2017-09-12 -- cgit v1.2.3 From a9f5093df64222395f6b0de21e6afee954c7a9a2 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 19 Sep 2017 19:35:01 +0200 Subject: Writing and sanitizing additional info for Teamy tournaments --- Aktywator/Bws.cs | 12 ++++++++---- Aktywator/TeamyTournament.cs | 4 ++-- Aktywator/Tournament.cs | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 763b11d..580b08f 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -453,8 +453,10 @@ namespace Aktywator count += 2; if (tournament.type == Tournament.TYPE_TEAMY) { - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", names[ns][0]); - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", names[ns][1]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "E", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ns + TeamNamesSettings.OpenClosedDiff][0] : names[ns][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "W", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ns + TeamNamesSettings.OpenClosedDiff][1] : names[ns][1]); count += 2; } } @@ -480,8 +482,10 @@ namespace Aktywator count += 2; if (tournament.type == Tournament.TYPE_TEAMY) { - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", names[ew][0]); - countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", names[ew][1]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "N", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ew + TeamNamesSettings.OpenClosedDiff][0] : names[ew][0]); + countNew += updateName(section, (int.Parse(table) + SKOK_STOLOW).ToString(), "S", + names.ContainsKey(ns + TeamNamesSettings.OpenClosedDiff) ? names[ew + TeamNamesSettings.OpenClosedDiff][1] : names[ew][1]); count += 2; } } diff --git a/Aktywator/TeamyTournament.cs b/Aktywator/TeamyTournament.cs index bd6b619..990583f 100644 --- a/Aktywator/TeamyTournament.cs +++ b/Aktywator/TeamyTournament.cs @@ -31,12 +31,12 @@ namespace Aktywator override internal Dictionary> getNameList() { Dictionary> teams = new Dictionary>(); - MySqlDataReader dbData = this.mysql.select("SELECT id, fullname NAME FROM teams"); + MySqlDataReader dbData = this.mysql.select(MainForm.teamNames.getQuery()); while (dbData.Read()) { List names = new List(); names.Add(dbData.IsDBNull(1) ? " " : dbData.GetString(1)); - names.Add(" "); + names.Add(dbData.IsDBNull(2) ? " " : dbData.GetString(2)); teams.Add(dbData.GetInt32(0), names); } dbData.Close(); diff --git a/Aktywator/Tournament.cs b/Aktywator/Tournament.cs index 33ecd26..fd6fec1 100644 --- a/Aktywator/Tournament.cs +++ b/Aktywator/Tournament.cs @@ -120,7 +120,7 @@ namespace Aktywator } else { - if (this._type != Tournament.TYPE_TEAMY) + if (this._type != Tournament.TYPE_TEAMY || MainForm.teamNames.arePlayerNamesDisplayed()) { string[] nameParts = name.Trim().Split(' '); if (nameParts.Length > 0) @@ -152,5 +152,6 @@ namespace Aktywator return dict; } + } } -- cgit v1.2.3 From 9f8e0908356a7ccdf5fac95aed77a77f7ffa047c Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 19 Sep 2017 19:41:20 +0200 Subject: Handling prolonged loading situations in main window UI --- Aktywator/Bws.cs | 2 ++ Aktywator/MainForm.cs | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 580b08f..525faa1 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -278,6 +278,7 @@ namespace Aktywator public void loadSettings() { + main.startLoading(); if (settings == null) { return; @@ -317,6 +318,7 @@ namespace Aktywator MessageBox.Show("Nie można uzyskać dostępu do pól: \n" + errors.ToString() + ".\nPrawdopodobnie te pola nie istnieją.", "Brakuje pól w tabeli Settings", MessageBoxButtons.OK, MessageBoxIcon.Warning); } + main.stopLoading(); } public void sectionGroupWarning() diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index e254f9a..10fa819 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -310,6 +310,7 @@ namespace Aktywator private void bMySQLTournament_Click(object sender, EventArgs e) { + startLoading(); try { ChooseTournament choose = new ChooseTournament(); @@ -324,10 +325,12 @@ namespace Aktywator { MessageBox.Show(ee.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Stop); } + stopLoading(); } private void bRRBTournament_Click(object sender, EventArgs e) { + startLoading(); try { OpenFileDialog fDialog = new OpenFileDialog(); @@ -344,6 +347,7 @@ namespace Aktywator { MessageBox.Show(ee.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Stop); } + stopLoading(); } private void updateTournamentInfo(Tournament tournament) @@ -579,5 +583,17 @@ namespace Aktywator { teamNames.ShowDialog(); } + + internal void startLoading() + { + tabControl1.Enabled = false; + this.Cursor = Cursors.WaitCursor; + } + + internal void stopLoading() + { + tabControl1.Enabled = true; + this.Cursor = Cursors.Default; + } } } -- cgit v1.2.3 From 4de0ed6cf29dcbe0d0be002feeeed35941b9785d Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 20 Sep 2017 18:59:10 +0200 Subject: Adding Section field to Settings if it's missing (some Teamy BWS files suffered) --- Aktywator/Bws.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 525faa1..1b96159 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -200,6 +200,7 @@ namespace Aktywator defaultSettings.Add(new Setting("BM2NumberEntryPreloadValues", "integer", "0")); defaultSettings.Add(new Setting("Name", "text(18)", "''", "PlayerNumbers")); defaultSettings.Add(new Setting("Updated", "bit", "false", "PlayerNumbers")); + defaultSettings.Add(new Setting("`Section`", "integer", "1")); foreach (Setting s in defaultSettings) { -- cgit v1.2.3 From d881985658c2df2f10ed855c71f67c4b993845f0 Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 27 Sep 2017 13:40:15 +0200 Subject: Preview hand records present in BWS Fixes #2 --- Aktywator/Aktywator.csproj | 9 + Aktywator/Bws.cs | 210 ++++++++++-- Aktywator/HandRecordPreview.Designer.cs | 554 ++++++++++++++++++++++++++++++++ Aktywator/HandRecordPreview.cs | 39 +++ Aktywator/HandRecordPreview.resx | 120 +++++++ Aktywator/MainForm.Designer.cs | 167 ++++++++-- Aktywator/MainForm.cs | 19 ++ Aktywator/MainForm.resx | 194 +++++------ Aktywator/Resources/BuildDate.txt | 2 +- 9 files changed, 1173 insertions(+), 141 deletions(-) create mode 100644 Aktywator/HandRecordPreview.Designer.cs create mode 100644 Aktywator/HandRecordPreview.cs create mode 100644 Aktywator/HandRecordPreview.resx (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Aktywator.csproj b/Aktywator/Aktywator.csproj index 2e4c4ac..bdcdba6 100644 --- a/Aktywator/Aktywator.csproj +++ b/Aktywator/Aktywator.csproj @@ -86,6 +86,12 @@ + + Form + + + HandRecordPreview.cs + Form @@ -121,6 +127,9 @@ ChooseTournament.cs + + HandRecordPreview.cs + MainForm.cs diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 1b96159..2662b88 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.Windows.Forms; +using System.Drawing; namespace Aktywator { @@ -20,43 +21,183 @@ namespace Aktywator public bool settingsChanged = false; private static string applicationPath = Common.ProgramFilesx86() + "\\Bridgemate Pro\\"; - private class SectionCheckBox + class HandInfo { - private string section; - private string label; + public List record; + public bool analysis = false; + } + + public Bws(string filename, MainForm main) + { + this._filename = filename; + sql = new Sql(filename); + this.main = main; + string[] sections = this.getSections().Split(','); + this.displaySectionBoardsInfo(sections); + } - public SectionCheckBox(string section, string label) + private void displaySectionBoardsInfo(string[] sections) + { + main.gwSections.Columns.Add(new DataGridViewCheckBoxColumn { Frozen = true, Width = 20, DefaultCellStyle = { ForeColor = Color.White, Alignment = DataGridViewContentAlignment.MiddleCenter } }); + foreach (string section in sections) + { + DataGridViewRow row = new DataGridViewRow(); + row.Height = 20; + row.HeaderCell.Value = this.sectorNumberToLetter(Int16.Parse(section)); + main.gwSections.Rows.Add(row); + } + Dictionary> boards = this.loadSectionBoards(sections); + foreach (KeyValuePair> boardList in boards) + { + main.gwSections.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = boardList.Key.ToString(), Width = 22, DefaultCellStyle = { ForeColor = Color.White, Alignment = DataGridViewContentAlignment.MiddleCenter } }); + foreach (DataGridViewRow row in main.gwSections.Rows) + { + if (boardList.Value.Contains(row.HeaderCell.Value.ToString())) + { + row.Cells[row.Cells.Count - 1].Style.BackColor = Color.White; + } + else + { + row.Cells[row.Cells.Count - 1].Style.BackColor = Color.Gray; + } + row.Cells[row.Cells.Count - 1].ReadOnly = true; + } + } + foreach (DataGridViewRow row in main.gwSections.Rows) { - this.section = section; - this.label = label; + row.Cells[0].Value = true; + ((DataGridViewCheckBoxCell)row.Cells[0]).TrueValue = true; + ((DataGridViewCheckBoxCell)row.Cells[0]).FalseValue = false; } + this.displayHandRecordInfo(boards); + } - override public string ToString() + private Dictionary> loadSectionBoards(string[] sections) { + Dictionary> boards = new Dictionary>(); + foreach (string section in sections) { - return this.label; + string sectionLetter = this.sectorNumberToLetter(Int16.Parse(section)); + int lowBoard = this.lowBoard(section); + int highBoard = this.highBoard(section); + for (int board = lowBoard; board <= highBoard; board++) + { + if (!boards.ContainsKey(board)) + { + boards.Add(board, new List()); + } + boards[board].Add(sectionLetter); + } } + return boards; + } - public string getSection() + private void displayHandRecordInfo(Dictionary> boards) + { + Dictionary> handInfo = this.loadHandRecordInfo(); + foreach (KeyValuePair> board in boards) { - return this.section; + if (handInfo.ContainsKey(board.Key)) + { + foreach (string section in board.Value) + { + this.setHandRecordInfo(board.Key, section, (board.Value.Contains(section) && handInfo[board.Key].ContainsKey(section)) ? handInfo[board.Key][section].record : null, handInfo[board.Key].ContainsKey(section) && handInfo[board.Key][section].analysis); + } + } + else + { + this.setHandRecordInfo(board.Key); + } } } - public Bws(string filename, MainForm main) + private void setHandRecordInfo(int board, string section = null, List layout = null, bool analysis = false) { - this._filename = filename; - sql = new Sql(filename); - this.main = main; - string[] sections = this.getSections().Split(','); - foreach (string section in sections) + foreach (DataGridViewColumn column in main.gwSections.Columns) { - SectionCheckBox item = new SectionCheckBox(section, "sektor " + this.sectorNumberToLetter(Int16.Parse(section)) + " (rozdania " + this.lowBoard(section) + "-" + this.highBoard(section) + ")"); - main.cblSections.Items.Add(item); + if (column.HeaderText.Equals(board.ToString())) + { + foreach (DataGridViewRow row in main.gwSections.Rows) + { + if (row.HeaderCell.Value.Equals(section) || section == null) + { + if (row.Cells[column.Index].Style.BackColor != Color.Gray) + { + if (layout != null) + { + row.Cells[column.Index].Style.BackColor = Color.LimeGreen; + row.Cells[column.Index].Tag = new HandRecord(String.Join(" ", layout.ToArray())); + row.Cells[column.Index].Value = analysis ? "A" : ""; + row.Cells[column.Index].ToolTipText = "Dwukliknij, by podejrzeć rozkład"; + } + else + { + row.Cells[column.Index].Style.BackColor = Color.Crimson; + row.Cells[column.Index].Tag = null; + row.Cells[column.Index].Value = ""; + row.Cells[column.Index].ToolTipText = ""; + } + } + } + } + } + } + } + + private Dictionary> loadHandRecordInfo() + { + Dictionary> info = new Dictionary>(); + try + { + OleDbDataReader handData = sql.select("SELECT `Section`, Board, NorthSpades, NorthHearts, NorthDiamonds, NorthClubs, EastSpades, EastHearts, EastDiamonds, EastClubs, SouthSpades, SouthHearts, SouthDiamonds, SouthClubs, WestSpades, WestHearts, WestDiamonds, WestClubs FROM HandRecord"); + while (handData.Read()) + { + int boardNumber = Int16.Parse(handData[1].ToString()); + if (!info.ContainsKey(boardNumber)) + { + info.Add(boardNumber, new Dictionary()); + } + string section = this.sectorNumberToLetter(Int16.Parse(handData[0].ToString())); + info[boardNumber].Add(section, new HandInfo { record = new List(), analysis = false }); + for (int i = 0; i < 4; i++) + { + StringBuilder singleHand = new StringBuilder(); + for (int j = 0; j < 4; j++) + { + singleHand.Append(handData[2 + i * 4 + j].ToString()); + if (j != 3) + { + singleHand.Append('.'); + } + } + info[boardNumber][section].record.Add(singleHand.ToString().Trim()); + } + } + handData.Close(); } - for (int i = 0; i < main.cblSections.Items.Count; i++) + catch (OleDbException) + { + } + try { - main.cblSections.SetItemChecked(i, true); + OleDbDataReader handData = sql.select("SELECT `Section`, Board FROM HandEvaluation"); + while (handData.Read()) + { + int boardNumber = Int16.Parse(handData[1].ToString()); + string section = this.sectorNumberToLetter(Int16.Parse(handData[0].ToString())); + try + { + info[boardNumber][section].analysis = true; + } + catch (KeyNotFoundException) + { + } + } + handData.Close(); } + catch (OleDbException) + { + } + return info; } private int sectorLetterToNumber(string sector) @@ -73,9 +214,12 @@ namespace Aktywator public string[] getSelectedSections() { List sections = new List(); - foreach (SectionCheckBox section in main.cblSections.CheckedItems) + foreach (DataGridViewRow row in main.gwSections.Rows) { - sections.Add(section.getSection()); + if (Convert.ToBoolean(row.Cells[0].Value)) + { + sections.Add(this.sectorLetterToNumber(row.HeaderCell.Value.ToString()).ToString()); + } } return sections.ToArray(); } @@ -585,20 +729,29 @@ namespace Aktywator string sections = this.sectionsForHandRecords(); if (sections != null) { - foreach (string section in this.sectionsForHandRecords().Split(',')) + string[] sectionLetters = sections.Split(','); + for (int i = 0; i < sectionLetters.Length; i++) + { + sectionLetters[i] = sectionLetters[i].Trim(); + } + foreach (string section in sectionLetters) { - this.clearRecords(section.Trim()); + this.clearRecords(section); } + this.displayHandRecordInfo(this.loadSectionBoards(sectionLetters)); } } public int loadHandRecords(PBN pbn) { int count = 0; - foreach (string section in this.getSelectedSections()) + string[] sections = this.getSelectedSections(); + Dictionary> boards = new Dictionary>(); + foreach (string section in sections) { this.clearRecords(section); for (int i = this.lowBoard(section.Trim()); i <= this.highBoard(section.Trim()); i++) + { if (pbn.handRecords[i] != null) { HandRecord b = pbn.handRecords[i]; @@ -611,6 +764,11 @@ namespace Aktywator str.Append(String.Join("','", b.south)); str.Append("','"); str.Append(String.Join("','", b.west)); str.Append("')"); sql.query(str.ToString()); + if (!boards.ContainsKey(i)) + { + boards.Add(i, new List()); + } + boards[i].Add(this.sectorNumberToLetter(Int16.Parse(section))); int[,] ddTable = pbn.ddTables[i].GetDDTable(); if (ddTable != null) { @@ -639,7 +797,9 @@ namespace Aktywator } count++; } + } } + this.displayHandRecordInfo(this.loadSectionBoards(sections)); return count; } } diff --git a/Aktywator/HandRecordPreview.Designer.cs b/Aktywator/HandRecordPreview.Designer.cs new file mode 100644 index 0000000..83c58fb --- /dev/null +++ b/Aktywator/HandRecordPreview.Designer.cs @@ -0,0 +1,554 @@ +namespace Aktywator +{ + partial class HandRecordPreview + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.lNorthSpades = new System.Windows.Forms.Label(); + this.lNorthHearts = new System.Windows.Forms.Label(); + this.lNorthDiamonds = new System.Windows.Forms.Label(); + this.lNorthClubs = new System.Windows.Forms.Label(); + this.lEastSpades = new System.Windows.Forms.Label(); + this.lEastHearts = new System.Windows.Forms.Label(); + this.lEastDiamonds = new System.Windows.Forms.Label(); + this.lEastClubs = new System.Windows.Forms.Label(); + this.lSouthSpades = new System.Windows.Forms.Label(); + this.lSouthHearts = new System.Windows.Forms.Label(); + this.lSouthDiamonds = new System.Windows.Forms.Label(); + this.lSouthClubs = new System.Windows.Forms.Label(); + this.lWestClubs = new System.Windows.Forms.Label(); + this.lWestDiamonds = new System.Windows.Forms.Label(); + this.lWestHearts = new System.Windows.Forms.Label(); + this.lWestSpades = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 6; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 6.845966F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 26.48737F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 6.845966F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 26.48737F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 6.845966F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 26.48737F)); + this.tableLayoutPanel1.Controls.Add(this.label1, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.label2, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.label3, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.label4, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.label5, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.label6, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.label7, 0, 6); + this.tableLayoutPanel1.Controls.Add(this.label8, 0, 7); + this.tableLayoutPanel1.Controls.Add(this.label9, 2, 8); + this.tableLayoutPanel1.Controls.Add(this.label10, 2, 9); + this.tableLayoutPanel1.Controls.Add(this.label11, 2, 10); + this.tableLayoutPanel1.Controls.Add(this.label12, 2, 11); + this.tableLayoutPanel1.Controls.Add(this.label13, 4, 4); + this.tableLayoutPanel1.Controls.Add(this.label14, 4, 5); + this.tableLayoutPanel1.Controls.Add(this.label15, 4, 6); + this.tableLayoutPanel1.Controls.Add(this.label16, 4, 7); + this.tableLayoutPanel1.Controls.Add(this.lNorthSpades, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.lNorthHearts, 3, 1); + this.tableLayoutPanel1.Controls.Add(this.lNorthDiamonds, 3, 2); + this.tableLayoutPanel1.Controls.Add(this.lNorthClubs, 3, 3); + this.tableLayoutPanel1.Controls.Add(this.lEastSpades, 5, 4); + this.tableLayoutPanel1.Controls.Add(this.lEastHearts, 5, 5); + this.tableLayoutPanel1.Controls.Add(this.lEastDiamonds, 5, 6); + this.tableLayoutPanel1.Controls.Add(this.lEastClubs, 5, 7); + this.tableLayoutPanel1.Controls.Add(this.lSouthSpades, 3, 8); + this.tableLayoutPanel1.Controls.Add(this.lSouthHearts, 3, 9); + this.tableLayoutPanel1.Controls.Add(this.lSouthDiamonds, 3, 10); + this.tableLayoutPanel1.Controls.Add(this.lSouthClubs, 3, 11); + this.tableLayoutPanel1.Controls.Add(this.lWestClubs, 1, 7); + this.tableLayoutPanel1.Controls.Add(this.lWestDiamonds, 1, 6); + this.tableLayoutPanel1.Controls.Add(this.lWestHearts, 1, 5); + this.tableLayoutPanel1.Controls.Add(this.lWestSpades, 1, 4); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 12; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 8.333332F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(292, 265); + this.tableLayoutPanel1.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label1.Location = new System.Drawing.Point(99, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(13, 22); + this.label1.TabIndex = 0; + this.label1.Text = "♠"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label2.ForeColor = System.Drawing.Color.Red; + this.label2.Location = new System.Drawing.Point(99, 22); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(13, 22); + this.label2.TabIndex = 1; + this.label2.Text = "♥"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label3.ForeColor = System.Drawing.Color.Red; + this.label3.Location = new System.Drawing.Point(99, 44); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(13, 22); + this.label3.TabIndex = 2; + this.label3.Text = "♦"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Dock = System.Windows.Forms.DockStyle.Fill; + this.label4.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label4.Location = new System.Drawing.Point(99, 66); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(13, 22); + this.label4.TabIndex = 3; + this.label4.Text = "♣"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Dock = System.Windows.Forms.DockStyle.Fill; + this.label5.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label5.Location = new System.Drawing.Point(3, 88); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(13, 22); + this.label5.TabIndex = 4; + this.label5.Text = "♠"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Dock = System.Windows.Forms.DockStyle.Fill; + this.label6.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label6.ForeColor = System.Drawing.Color.Red; + this.label6.Location = new System.Drawing.Point(3, 110); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(13, 22); + this.label6.TabIndex = 5; + this.label6.Text = "♥"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Dock = System.Windows.Forms.DockStyle.Fill; + this.label7.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label7.ForeColor = System.Drawing.Color.Red; + this.label7.Location = new System.Drawing.Point(3, 132); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(13, 22); + this.label7.TabIndex = 6; + this.label7.Text = "♦"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Dock = System.Windows.Forms.DockStyle.Fill; + this.label8.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label8.Location = new System.Drawing.Point(3, 154); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(13, 22); + this.label8.TabIndex = 7; + this.label8.Text = "♣"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Dock = System.Windows.Forms.DockStyle.Fill; + this.label9.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label9.Location = new System.Drawing.Point(99, 176); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(13, 22); + this.label9.TabIndex = 8; + this.label9.Text = "♠"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Dock = System.Windows.Forms.DockStyle.Fill; + this.label10.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label10.ForeColor = System.Drawing.Color.Red; + this.label10.Location = new System.Drawing.Point(99, 198); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(13, 22); + this.label10.TabIndex = 9; + this.label10.Text = "♥"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Dock = System.Windows.Forms.DockStyle.Fill; + this.label11.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label11.ForeColor = System.Drawing.Color.Red; + this.label11.Location = new System.Drawing.Point(99, 220); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(13, 22); + this.label11.TabIndex = 10; + this.label11.Text = "♦"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Dock = System.Windows.Forms.DockStyle.Fill; + this.label12.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label12.Location = new System.Drawing.Point(99, 242); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(13, 23); + this.label12.TabIndex = 11; + this.label12.Text = "♣"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Dock = System.Windows.Forms.DockStyle.Fill; + this.label13.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label13.Location = new System.Drawing.Point(195, 88); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(13, 22); + this.label13.TabIndex = 12; + this.label13.Text = "♠"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Dock = System.Windows.Forms.DockStyle.Fill; + this.label14.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label14.ForeColor = System.Drawing.Color.Red; + this.label14.Location = new System.Drawing.Point(195, 110); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(13, 22); + this.label14.TabIndex = 13; + this.label14.Text = "♥"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Dock = System.Windows.Forms.DockStyle.Fill; + this.label15.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label15.ForeColor = System.Drawing.Color.Red; + this.label15.Location = new System.Drawing.Point(195, 132); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(13, 22); + this.label15.TabIndex = 14; + this.label15.Text = "♦"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Dock = System.Windows.Forms.DockStyle.Fill; + this.label16.Font = new System.Drawing.Font("Lucida Sans Unicode", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.label16.Location = new System.Drawing.Point(195, 154); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(13, 22); + this.label16.TabIndex = 15; + this.label16.Text = "♣"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lNorthSpades + // + this.lNorthSpades.AutoSize = true; + this.lNorthSpades.Dock = System.Windows.Forms.DockStyle.Fill; + this.lNorthSpades.Location = new System.Drawing.Point(118, 0); + this.lNorthSpades.Name = "lNorthSpades"; + this.lNorthSpades.Size = new System.Drawing.Size(71, 22); + this.lNorthSpades.TabIndex = 16; + this.lNorthSpades.Text = "N-S"; + this.lNorthSpades.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lNorthHearts + // + this.lNorthHearts.AutoSize = true; + this.lNorthHearts.Dock = System.Windows.Forms.DockStyle.Fill; + this.lNorthHearts.Location = new System.Drawing.Point(118, 22); + this.lNorthHearts.Name = "lNorthHearts"; + this.lNorthHearts.Size = new System.Drawing.Size(71, 22); + this.lNorthHearts.TabIndex = 17; + this.lNorthHearts.Text = "N-H"; + this.lNorthHearts.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lNorthDiamonds + // + this.lNorthDiamonds.AutoSize = true; + this.lNorthDiamonds.Dock = System.Windows.Forms.DockStyle.Fill; + this.lNorthDiamonds.Location = new System.Drawing.Point(118, 44); + this.lNorthDiamonds.Name = "lNorthDiamonds"; + this.lNorthDiamonds.Size = new System.Drawing.Size(71, 22); + this.lNorthDiamonds.TabIndex = 18; + this.lNorthDiamonds.Text = "N-D"; + this.lNorthDiamonds.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lNorthClubs + // + this.lNorthClubs.AutoSize = true; + this.lNorthClubs.Dock = System.Windows.Forms.DockStyle.Fill; + this.lNorthClubs.Location = new System.Drawing.Point(118, 66); + this.lNorthClubs.Name = "lNorthClubs"; + this.lNorthClubs.Size = new System.Drawing.Size(71, 22); + this.lNorthClubs.TabIndex = 19; + this.lNorthClubs.Text = "N-C"; + this.lNorthClubs.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lEastSpades + // + this.lEastSpades.AutoSize = true; + this.lEastSpades.Dock = System.Windows.Forms.DockStyle.Fill; + this.lEastSpades.Location = new System.Drawing.Point(214, 88); + this.lEastSpades.Name = "lEastSpades"; + this.lEastSpades.Size = new System.Drawing.Size(75, 22); + this.lEastSpades.TabIndex = 20; + this.lEastSpades.Text = "E-S"; + this.lEastSpades.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lEastHearts + // + this.lEastHearts.AutoSize = true; + this.lEastHearts.Dock = System.Windows.Forms.DockStyle.Fill; + this.lEastHearts.Location = new System.Drawing.Point(214, 110); + this.lEastHearts.Name = "lEastHearts"; + this.lEastHearts.Size = new System.Drawing.Size(75, 22); + this.lEastHearts.TabIndex = 21; + this.lEastHearts.Text = "E-H"; + this.lEastHearts.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lEastDiamonds + // + this.lEastDiamonds.AutoSize = true; + this.lEastDiamonds.Dock = System.Windows.Forms.DockStyle.Fill; + this.lEastDiamonds.Location = new System.Drawing.Point(214, 132); + this.lEastDiamonds.Name = "lEastDiamonds"; + this.lEastDiamonds.Size = new System.Drawing.Size(75, 22); + this.lEastDiamonds.TabIndex = 22; + this.lEastDiamonds.Text = "E-D"; + this.lEastDiamonds.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lEastClubs + // + this.lEastClubs.AutoSize = true; + this.lEastClubs.Dock = System.Windows.Forms.DockStyle.Fill; + this.lEastClubs.Location = new System.Drawing.Point(214, 154); + this.lEastClubs.Name = "lEastClubs"; + this.lEastClubs.Size = new System.Drawing.Size(75, 22); + this.lEastClubs.TabIndex = 23; + this.lEastClubs.Text = "E-C"; + this.lEastClubs.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lSouthSpades + // + this.lSouthSpades.AutoSize = true; + this.lSouthSpades.Dock = System.Windows.Forms.DockStyle.Fill; + this.lSouthSpades.Location = new System.Drawing.Point(118, 176); + this.lSouthSpades.Name = "lSouthSpades"; + this.lSouthSpades.Size = new System.Drawing.Size(71, 22); + this.lSouthSpades.TabIndex = 24; + this.lSouthSpades.Text = "S-S"; + this.lSouthSpades.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lSouthHearts + // + this.lSouthHearts.AutoSize = true; + this.lSouthHearts.Dock = System.Windows.Forms.DockStyle.Fill; + this.lSouthHearts.Location = new System.Drawing.Point(118, 198); + this.lSouthHearts.Name = "lSouthHearts"; + this.lSouthHearts.Size = new System.Drawing.Size(71, 22); + this.lSouthHearts.TabIndex = 25; + this.lSouthHearts.Text = "S-H"; + this.lSouthHearts.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lSouthDiamonds + // + this.lSouthDiamonds.AutoSize = true; + this.lSouthDiamonds.Dock = System.Windows.Forms.DockStyle.Fill; + this.lSouthDiamonds.Location = new System.Drawing.Point(118, 220); + this.lSouthDiamonds.Name = "lSouthDiamonds"; + this.lSouthDiamonds.Size = new System.Drawing.Size(71, 22); + this.lSouthDiamonds.TabIndex = 26; + this.lSouthDiamonds.Text = "S-D"; + this.lSouthDiamonds.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lSouthClubs + // + this.lSouthClubs.AutoSize = true; + this.lSouthClubs.Dock = System.Windows.Forms.DockStyle.Fill; + this.lSouthClubs.Location = new System.Drawing.Point(118, 242); + this.lSouthClubs.Name = "lSouthClubs"; + this.lSouthClubs.Size = new System.Drawing.Size(71, 23); + this.lSouthClubs.TabIndex = 27; + this.lSouthClubs.Text = "S-C"; + this.lSouthClubs.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lWestClubs + // + this.lWestClubs.AutoSize = true; + this.lWestClubs.Dock = System.Windows.Forms.DockStyle.Fill; + this.lWestClubs.Location = new System.Drawing.Point(22, 154); + this.lWestClubs.Name = "lWestClubs"; + this.lWestClubs.Size = new System.Drawing.Size(71, 22); + this.lWestClubs.TabIndex = 28; + this.lWestClubs.Text = "W-C"; + this.lWestClubs.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lWestDiamonds + // + this.lWestDiamonds.AutoSize = true; + this.lWestDiamonds.Dock = System.Windows.Forms.DockStyle.Fill; + this.lWestDiamonds.Location = new System.Drawing.Point(22, 132); + this.lWestDiamonds.Name = "lWestDiamonds"; + this.lWestDiamonds.Size = new System.Drawing.Size(71, 22); + this.lWestDiamonds.TabIndex = 29; + this.lWestDiamonds.Text = "W-D"; + this.lWestDiamonds.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lWestHearts + // + this.lWestHearts.AutoSize = true; + this.lWestHearts.Dock = System.Windows.Forms.DockStyle.Fill; + this.lWestHearts.Location = new System.Drawing.Point(22, 110); + this.lWestHearts.Name = "lWestHearts"; + this.lWestHearts.Size = new System.Drawing.Size(71, 22); + this.lWestHearts.TabIndex = 30; + this.lWestHearts.Text = "W-H"; + this.lWestHearts.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lWestSpades + // + this.lWestSpades.AutoSize = true; + this.lWestSpades.Dock = System.Windows.Forms.DockStyle.Fill; + this.lWestSpades.Location = new System.Drawing.Point(22, 88); + this.lWestSpades.Name = "lWestSpades"; + this.lWestSpades.Size = new System.Drawing.Size(71, 22); + this.lWestSpades.TabIndex = 31; + this.lWestSpades.Text = "W-S"; + this.lWestSpades.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // HandRecordPreview + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 265); + this.Controls.Add(this.tableLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "HandRecordPreview"; + this.ShowInTaskbar = false; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label lNorthSpades; + private System.Windows.Forms.Label lNorthHearts; + private System.Windows.Forms.Label lNorthDiamonds; + private System.Windows.Forms.Label lNorthClubs; + private System.Windows.Forms.Label lEastSpades; + private System.Windows.Forms.Label lEastHearts; + private System.Windows.Forms.Label lEastDiamonds; + private System.Windows.Forms.Label lEastClubs; + private System.Windows.Forms.Label lSouthSpades; + private System.Windows.Forms.Label lSouthHearts; + private System.Windows.Forms.Label lSouthDiamonds; + private System.Windows.Forms.Label lSouthClubs; + private System.Windows.Forms.Label lWestClubs; + private System.Windows.Forms.Label lWestDiamonds; + private System.Windows.Forms.Label lWestHearts; + private System.Windows.Forms.Label lWestSpades; + } +} \ No newline at end of file diff --git a/Aktywator/HandRecordPreview.cs b/Aktywator/HandRecordPreview.cs new file mode 100644 index 0000000..d5e8446 --- /dev/null +++ b/Aktywator/HandRecordPreview.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace Aktywator +{ + public partial class HandRecordPreview : Form + { + public HandRecordPreview() + { + InitializeComponent(); + } + + internal HandRecordPreview(HandRecord record, string boardNo) : this() + { + lNorthSpades.Text = record.north[0]; + lNorthHearts.Text = record.north[1]; + lNorthDiamonds.Text = record.north[2]; + lNorthClubs.Text = record.north[3]; + lEastSpades.Text = record.east[0]; + lEastHearts.Text = record.east[1]; + lEastDiamonds.Text = record.east[2]; + lEastClubs.Text = record.east[3]; + lSouthSpades.Text = record.south[0]; + lSouthHearts.Text = record.south[1]; + lSouthDiamonds.Text = record.south[2]; + lSouthClubs.Text = record.south[3]; + lWestSpades.Text = record.north[0]; + lWestHearts.Text = record.north[1]; + lWestDiamonds.Text = record.north[2]; + lWestClubs.Text = record.west[3]; + this.Text = "ROZDANIE " + boardNo; + } + } +} diff --git a/Aktywator/HandRecordPreview.resx b/Aktywator/HandRecordPreview.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/Aktywator/HandRecordPreview.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index 6c5dc8e..11af8cb 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -30,6 +30,7 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); this.open = new System.Windows.Forms.OpenFileDialog(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.status1 = new System.Windows.Forms.ToolStripStatusLabel(); @@ -125,11 +126,19 @@ this.bForceSync = new System.Windows.Forms.ToolStripButton(); this.bTruncate = new System.Windows.Forms.ToolStripButton(); this.tabPage3 = new System.Windows.Forms.TabPage(); + this.label17 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.gwSections = new System.Windows.Forms.DataGridView(); this.toolStrip3 = new System.Windows.Forms.ToolStrip(); this.bLoadHands = new System.Windows.Forms.ToolStripButton(); this.bClearHands = new System.Windows.Forms.ToolStripButton(); this.lRecordSections = new System.Windows.Forms.Label(); - this.cblSections = new System.Windows.Forms.CheckedListBox(); this.label11 = new System.Windows.Forms.Label(); this.timer = new System.Windows.Forms.Timer(this.components); this.openPBN = new System.Windows.Forms.OpenFileDialog(); @@ -159,6 +168,7 @@ this.syncToolStrip.SuspendLayout(); this.toolStrip4.SuspendLayout(); this.tabPage3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gwSections)).BeginInit(); this.toolStrip3.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.SuspendLayout(); @@ -1188,9 +1198,17 @@ // // tabPage3 // + this.tabPage3.Controls.Add(this.label17); + this.tabPage3.Controls.Add(this.label18); + this.tabPage3.Controls.Add(this.label15); + this.tabPage3.Controls.Add(this.label16); + this.tabPage3.Controls.Add(this.label13); + this.tabPage3.Controls.Add(this.label14); + this.tabPage3.Controls.Add(this.label12); + this.tabPage3.Controls.Add(this.label10); + this.tabPage3.Controls.Add(this.gwSections); this.tabPage3.Controls.Add(this.toolStrip3); this.tabPage3.Controls.Add(this.lRecordSections); - this.tabPage3.Controls.Add(this.cblSections); this.tabPage3.Controls.Add(this.label11); this.tabPage3.Location = new System.Drawing.Point(4, 22); this.tabPage3.Name = "tabPage3"; @@ -1200,15 +1218,129 @@ this.tabPage3.Text = "Rozkłady"; this.tabPage3.UseVisualStyleBackColor = true; // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(458, 460); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(71, 13); + this.label17.TabIndex = 18; + this.label17.Text = "brak rozdania"; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.BackColor = System.Drawing.SystemColors.ControlDark; + this.label18.Location = new System.Drawing.Point(432, 456); + this.label18.MinimumSize = new System.Drawing.Size(20, 20); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(20, 20); + this.label18.TabIndex = 17; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(322, 460); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(104, 13); + this.label15.TabIndex = 16; + this.label15.Text = "rozkład niewczytany"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.BackColor = System.Drawing.Color.Crimson; + this.label16.Location = new System.Drawing.Point(296, 456); + this.label16.MinimumSize = new System.Drawing.Size(20, 20); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(20, 20); + this.label16.TabIndex = 15; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(156, 460); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(134, 13); + this.label13.TabIndex = 14; + this.label13.Text = "rozkład wczytany z analizą"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.BackColor = System.Drawing.Color.LimeGreen; + this.label14.ForeColor = System.Drawing.Color.White; + this.label14.Location = new System.Drawing.Point(130, 456); + this.label14.MinimumSize = new System.Drawing.Size(20, 20); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(20, 20); + this.label14.TabIndex = 13; + this.label14.Text = "A"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(34, 460); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(90, 13); + this.label12.TabIndex = 12; + this.label12.Text = "rozkład wczytany"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.BackColor = System.Drawing.Color.LimeGreen; + this.label10.Location = new System.Drawing.Point(8, 456); + this.label10.MinimumSize = new System.Drawing.Size(20, 20); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(20, 20); + this.label10.TabIndex = 11; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // gwSections + // + this.gwSections.AllowUserToAddRows = false; + this.gwSections.AllowUserToDeleteRows = false; + this.gwSections.AllowUserToResizeColumns = false; + this.gwSections.AllowUserToResizeRows = false; + this.gwSections.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.Disable; + this.gwSections.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Sunken; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.gwSections.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + this.gwSections.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.gwSections.Location = new System.Drawing.Point(9, 118); + this.gwSections.MultiSelect = false; + this.gwSections.Name = "gwSections"; + this.gwSections.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders; + this.gwSections.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.gwSections.ShowCellErrors = false; + this.gwSections.ShowEditingIcon = false; + this.gwSections.ShowRowErrors = false; + this.gwSections.Size = new System.Drawing.Size(554, 335); + this.gwSections.TabIndex = 10; + this.gwSections.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gwSections_CellDoubleClick); + this.gwSections.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gwSections_CellDoubleClick); + this.gwSections.CurrentCellDirtyStateChanged += new System.EventHandler(this.gwSections_CurrentCellDirtyStateChanged); + // // toolStrip3 // this.toolStrip3.BackColor = System.Drawing.Color.White; + this.toolStrip3.Dock = System.Windows.Forms.DockStyle.Bottom; this.toolStrip3.GripMargin = new System.Windows.Forms.Padding(0); this.toolStrip3.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.toolStrip3.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.bLoadHands, this.bClearHands}); - this.toolStrip3.Location = new System.Drawing.Point(3, 3); + this.toolStrip3.Location = new System.Drawing.Point(3, 483); this.toolStrip3.Name = "toolStrip3"; this.toolStrip3.Size = new System.Drawing.Size(563, 25); this.toolStrip3.TabIndex = 9; @@ -1220,8 +1352,8 @@ this.bLoadHands.Image = ((System.Drawing.Image)(resources.GetObject("bLoadHands.Image"))); this.bLoadHands.ImageTransparentColor = System.Drawing.Color.Magenta; this.bLoadHands.Name = "bLoadHands"; - this.bLoadHands.Size = new System.Drawing.Size(122, 22); - this.bLoadHands.Text = "Wczytaj rozkłady"; + this.bLoadHands.Size = new System.Drawing.Size(274, 22); + this.bLoadHands.Text = "Wczytaj rozkłady do zaznaczonych sektorów"; this.bLoadHands.Click += new System.EventHandler(this.bLoadHands_Click); // // bClearHands @@ -1238,26 +1370,16 @@ // this.lRecordSections.AutoSize = true; this.lRecordSections.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.lRecordSections.Location = new System.Drawing.Point(6, 138); + this.lRecordSections.Location = new System.Drawing.Point(6, 102); this.lRecordSections.Name = "lRecordSections"; this.lRecordSections.Size = new System.Drawing.Size(54, 13); this.lRecordSections.TabIndex = 7; this.lRecordSections.Text = "Sektory:"; // - // cblSections - // - this.cblSections.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.cblSections.CheckOnClick = true; - this.cblSections.FormattingEnabled = true; - this.cblSections.Location = new System.Drawing.Point(9, 162); - this.cblSections.Name = "cblSections"; - this.cblSections.Size = new System.Drawing.Size(546, 285); - this.cblSections.TabIndex = 6; - // // label11 // this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(6, 49); + this.label11.Location = new System.Drawing.Point(6, 12); this.label11.Name = "label11"; this.label11.Size = new System.Drawing.Size(479, 78); this.label11.TabIndex = 1; @@ -1374,6 +1496,7 @@ this.toolStrip4.PerformLayout(); this.tabPage3.ResumeLayout(false); this.tabPage3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gwSections)).EndInit(); this.toolStrip3.ResumeLayout(false); this.toolStrip3.PerformLayout(); this.toolStrip1.ResumeLayout(false); @@ -1436,7 +1559,6 @@ public System.Windows.Forms.CheckBox xCollectPlay; public System.Windows.Forms.CheckBox xCollectBidding; public System.Windows.Forms.CheckBox xCheckLeadCard; - public System.Windows.Forms.CheckedListBox cblSections; private System.Windows.Forms.Label lRecordSections; private System.Windows.Forms.GroupBox groupBox6; private System.Windows.Forms.GroupBox groupBox7; @@ -1493,6 +1615,15 @@ public System.Windows.Forms.Label lGroupSectionsWarning; internal System.Windows.Forms.Button bTeamsNamesSettings; public System.Windows.Forms.Timer namesTimer; + public System.Windows.Forms.DataGridView gwSections; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label12; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 10fa819..602a260 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -595,5 +595,24 @@ namespace Aktywator tabControl1.Enabled = true; this.Cursor = Cursors.Default; } + + private void gwSections_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex > -1 && e.ColumnIndex > 0 && gwSections.Rows[e.RowIndex].Cells[e.ColumnIndex].Tag != null) + { + HandRecordPreview preview = new HandRecordPreview((HandRecord)gwSections.Rows[e.RowIndex].Cells[e.ColumnIndex].Tag, gwSections.Rows[e.RowIndex].HeaderCell.Value + "-" + gwSections.Columns[e.ColumnIndex].HeaderCell.Value); + preview.ShowDialog(); + } + } + + private void gwSections_CurrentCellDirtyStateChanged(object sender, EventArgs e) + { + DataGridView grid = (DataGridView)sender; + if (grid.IsCurrentCellDirty) + { + grid.CommitEdit(DataGridViewDataErrorContexts.Commit); + } + } + } } diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index da61849..652834c 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -178,7 +178,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 - JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsPAAALDwGS+QOlAAACOUlE + JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsMAAALDAE/QCLIAAACOUlE QVQ4T6WN30tTYRjHz1/QRRdddG8ZERlkYEKCRDDJYsOpFYgNnRkS5jLdYgqGo2CRpZCVNldqls62RGds beZmg3A/zM1xrJ3J6mJhaoOgdnTn23vO8BebEfTA933Oed/n83koAP+VlAvHiAZvDS0w6pTkd/tbugiH 6V0QwzY/dHcuYCXah5/Rx4gEtGhpKIfe+B66YQcZ20FgnJgjPVlPHygQ8rcj4GqKBewVbNX5EwiFwsJb @@ -299,22 +299,22 @@ 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 @@ -331,56 +331,56 @@ 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 gg== @@ -407,35 +407,35 @@ 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 @@ -484,7 +484,7 @@ to także należy ręcznie zrobić Upload. 343, 21 - 43 + 55 diff --git a/Aktywator/Resources/BuildDate.txt b/Aktywator/Resources/BuildDate.txt index c915427..6d547b9 100644 --- a/Aktywator/Resources/BuildDate.txt +++ b/Aktywator/Resources/BuildDate.txt @@ -1 +1 @@ -2017-09-21 +2017-09-27 -- cgit v1.2.3 From fcff84144c5a8871cfcb3983784133f412b31ed8 Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 30 Sep 2017 12:46:05 +0200 Subject: Automatically detecting MySQL database for player names from Teamy BWS files --- Aktywator/Bws.cs | 13 +++++++++++++ Aktywator/MainForm.cs | 24 ++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 2662b88..700969c 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -802,5 +802,18 @@ namespace Aktywator this.displayHandRecordInfo(this.loadSectionBoards(sections)); return count; } + + internal string getMySQLDatabaseForSection() + { + try + { + string dbString = this.sql.selectOne("SELECT custom_MySQL FROM `Section` WHERE ID = 1"); + return dbString.Split(',')[3]; + } + catch (Exception ee) + { + return null; + } + } } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 602a260..40ebb2d 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -74,11 +74,31 @@ namespace Aktywator this.bwsSettings.Add(new Setting("BM2ShowPlayerNames", this.xShowPlayerNames, bws, new Version(2, 0, 0), new Version(1, 3, 1))); bindSettingChanges(); bws.loadSettings(); - syncToolStrip.Visible = false; - namesPanel.Visible = false; + + tournament = this.detectTeamyTournament(); + if (tournament != null) + { + updateTournamentInfo(tournament); + } + else + { + syncToolStrip.Visible = false; + namesPanel.Visible = false; + } + this.WindowState = FormWindowState.Normal; } + private Tournament detectTeamyTournament() + { + string name = bws.getMySQLDatabaseForSection(); + if (name != null) + { + return new TeamyTournament(name); + } + return null; + } + private void fillSectionSelector(string sections) { cbSettingsSection.SelectedIndex = 0; -- cgit v1.2.3 From 83ceead92009ae29981b54de7e85d91e68673e11 Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 30 Sep 2017 15:43:31 +0200 Subject: Loading names into specified sections, detecting sections for Teamy tournaments --- Aktywator/Bws.cs | 37 ++++++++-- Aktywator/MainForm.Designer.cs | 143 ++++++++++++++++++++++++-------------- Aktywator/MainForm.cs | 23 ++++++- Aktywator/MainForm.resx | 153 +++++++++++++++++++++-------------------- 4 files changed, 221 insertions(+), 135 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 700969c..05fcb83 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -200,7 +200,7 @@ namespace Aktywator return info; } - private int sectorLetterToNumber(string sector) + internal int sectorLetterToNumber(string sector) { return sector.ToUpper()[0] - 'A' + 1; } @@ -556,26 +556,32 @@ namespace Aktywator throw new InvalidCastException("Unable to read numeric value from BWS field"); } - public void syncNames(Tournament tournament, bool interactive, string startRounds, DataGridView grid) + public void syncNames(Tournament tournament, bool interactive, string startRounds, string section, DataGridView grid) { int count = 0, countNew = 0, SKOK_STOLOW = Convert.ToInt32(main.numTeamsTableOffset.Value); OleDbDataReader d; startRounds = startRounds.Trim(); string fromRound = sql.selectOne("SELECT min(`Round`) FROM RoundData WHERE NSPair>0"); + string sectionCondition = ""; + if (!("*".Equals(section))) + { + section = this.sectorLetterToNumber(section).ToString(); + sectionCondition = " AND `Section` = " + section; + } if (tournament.type != Tournament.TYPE_TEAMY) { if (tournament.type == Tournament.TYPE_PARY && startRounds.Length > 0) { - d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE NSPair>0 AND `Round` in (" + startRounds + ")"); + d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE NSPair>0 AND `Round` in (" + startRounds + ")" + sectionCondition); } else { - d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Round`=" + fromRound); + d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Round`=" + fromRound + sectionCondition); } } else { - d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Round`=" + fromRound + " AND `Table`<=" + SKOK_STOLOW); + d = sql.select("SELECT `Section`, `Table`, NSPair, EWPair FROM RoundData WHERE `Round`=" + fromRound + " AND `Table`<=" + SKOK_STOLOW + sectionCondition); } try @@ -584,7 +590,10 @@ namespace Aktywator while (d.Read()) { - string section = this.getBWSNumber(d, 0).ToString(); + if ("*".Equals(section)) + { + section = this.getBWSNumber(d, 0).ToString(); + } string table = this.getBWSNumber(d, 1).ToString(); int ns = this.getBWSNumber(d, 2); int ew = this.getBWSNumber(d, 3); @@ -815,5 +824,21 @@ namespace Aktywator return null; } } + + internal string detectTeamySection(string databaseName) + { + OleDbDataReader sections = this.sql.select("SELECT ID, custom_MySQL FROM `Section` WHERE custom_MySQL LIKE '%," + databaseName + ",%'"); + string section = null; + while (sections.Read()) { + string[] dbString = sections.GetString(1).Split(','); + if (dbString[3].Trim().Equals(databaseName)) + { + section = this.sectorNumberToLetter(this.getBWSNumber(sections, 0)); + break; + } + } + sections.Close(); + return section; + } } } diff --git a/Aktywator/MainForm.Designer.cs b/Aktywator/MainForm.Designer.cs index 11af8cb..c5ac4ad 100644 --- a/Aktywator/MainForm.Designer.cs +++ b/Aktywator/MainForm.Designer.cs @@ -89,6 +89,12 @@ this.xShowContract = new System.Windows.Forms.CheckBox(); this.xResultsOverview = new System.Windows.Forms.ComboBox(); this.tabPage2 = new System.Windows.Forms.TabPage(); + this.sectionToolStrip = new System.Windows.Forms.ToolStrip(); + this.eOomRounds = new System.Windows.Forms.ToolStripTextBox(); + this.lOomLabel = new System.Windows.Forms.ToolStripLabel(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.cbNamesSection = new System.Windows.Forms.ToolStripComboBox(); this.namesPanel = new System.Windows.Forms.Panel(); this.bTeamsNamesSettings = new System.Windows.Forms.Button(); this.checkBox1 = new System.Windows.Forms.CheckBox(); @@ -113,11 +119,8 @@ this.lTables = new System.Windows.Forms.Label(); this.syncToolStrip = new System.Windows.Forms.ToolStrip(); this.bSync = new System.Windows.Forms.ToolStripButton(); - this.bAutoSync = new System.Windows.Forms.ToolStripButton(); this.eInterval = new System.Windows.Forms.ToolStripTextBox(); - this.eOomRounds = new System.Windows.Forms.ToolStripTextBox(); - this.lOomLabel = new System.Windows.Forms.ToolStripLabel(); - this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.bAutoSync = new System.Windows.Forms.ToolStripButton(); this.toolStrip4 = new System.Windows.Forms.ToolStrip(); this.toolStripSplitButton1 = new System.Windows.Forms.ToolStripSplitButton(); this.bMySQLTournament = new System.Windows.Forms.ToolStripMenuItem(); @@ -161,6 +164,7 @@ this.groupBox5.SuspendLayout(); this.groupBox4.SuspendLayout(); this.tabPage2.SuspendLayout(); + this.sectionToolStrip.SuspendLayout(); this.namesPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numNamesRefreshInterval)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numTeamsTableOffset)).BeginInit(); @@ -374,7 +378,7 @@ this.cbSettingsSection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbSettingsSection.FormattingEnabled = true; this.cbSettingsSection.Items.AddRange(new object[] { - " * "}); + "*"}); this.cbSettingsSection.Location = new System.Drawing.Point(50, 7); this.cbSettingsSection.Name = "cbSettingsSection"; this.cbSettingsSection.Size = new System.Drawing.Size(42, 21); @@ -779,6 +783,7 @@ // // tabPage2 // + this.tabPage2.Controls.Add(this.sectionToolStrip); this.tabPage2.Controls.Add(this.namesPanel); this.tabPage2.Controls.Add(this.syncToolStrip); this.tabPage2.Controls.Add(this.toolStrip4); @@ -790,6 +795,70 @@ this.tabPage2.Text = "Nazwiska"; this.tabPage2.UseVisualStyleBackColor = true; // + // sectionToolStrip + // + this.sectionToolStrip.BackColor = System.Drawing.Color.White; + this.sectionToolStrip.Dock = System.Windows.Forms.DockStyle.Bottom; + this.sectionToolStrip.GripMargin = new System.Windows.Forms.Padding(0); + this.sectionToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.sectionToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.eOomRounds, + this.lOomLabel, + this.toolStripButton2, + this.toolStripLabel1, + this.cbNamesSection}); + this.sectionToolStrip.Location = new System.Drawing.Point(3, 458); + this.sectionToolStrip.Name = "sectionToolStrip"; + this.sectionToolStrip.Size = new System.Drawing.Size(563, 25); + this.sectionToolStrip.TabIndex = 30; + this.sectionToolStrip.Text = "toolStrip5"; + // + // eOomRounds + // + this.eOomRounds.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.eOomRounds.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.eOomRounds.Enabled = false; + this.eOomRounds.Name = "eOomRounds"; + this.eOomRounds.Size = new System.Drawing.Size(80, 25); + this.eOomRounds.ToolTipText = "Jeśli nie wiesz do czego to jest, to nic nie wpisuj!"; + // + // lOomLabel + // + this.lOomLabel.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.lOomLabel.Enabled = false; + this.lOomLabel.Name = "lOomLabel"; + this.lOomLabel.Size = new System.Drawing.Size(92, 22); + this.lOomLabel.Text = "Rundy dla OOM"; + this.lOomLabel.ToolTipText = "Jeśli nie wiesz do czego to jest, to nic nie wpisuj!"; + // + // toolStripButton2 + // + this.toolStripButton2.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton2.BackColor = System.Drawing.Color.Transparent; + this.toolStripButton2.CheckOnClick = true; + this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(23, 22); + this.toolStripButton2.Text = "‎✔"; + this.toolStripButton2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.toolStripButton2.ToolTipText = "Jeśli nie wiesz do czego to jest, to nic nie wpisuj!"; + this.toolStripButton2.CheckedChanged += new System.EventHandler(this.toolStripButton2_CheckedChanged); + // + // toolStripLabel1 + // + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(43, 22); + this.toolStripLabel1.Text = "Sektor:"; + // + // cbNamesSection + // + this.cbNamesSection.BackColor = System.Drawing.Color.White; + this.cbNamesSection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbNamesSection.DropDownWidth = 75; + this.cbNamesSection.Name = "cbNamesSection"; + this.cbNamesSection.Size = new System.Drawing.Size(75, 25); + // // namesPanel // this.namesPanel.Controls.Add(this.bTeamsNamesSettings); @@ -812,7 +881,7 @@ this.namesPanel.Controls.Add(this.lTables); this.namesPanel.Location = new System.Drawing.Point(3, 31); this.namesPanel.Name = "namesPanel"; - this.namesPanel.Size = new System.Drawing.Size(562, 449); + this.namesPanel.Size = new System.Drawing.Size(562, 425); this.namesPanel.TabIndex = 29; // // bTeamsNamesSettings @@ -884,7 +953,7 @@ // label9 // this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(1, 418); + this.label9.Location = new System.Drawing.Point(3, 389); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(499, 13); this.label9.TabIndex = 31; @@ -940,7 +1009,7 @@ this.EastWest}); this.namesGridView.Location = new System.Drawing.Point(2, 98); this.namesGridView.Name = "namesGridView"; - this.namesGridView.Size = new System.Drawing.Size(557, 318); + this.namesGridView.Size = new System.Drawing.Size(557, 287); this.namesGridView.TabIndex = 28; this.namesGridView.CellMouseEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.namesGridView_CellMouseEnter); this.namesGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.namesGridView_CellValueChanged); @@ -1019,7 +1088,7 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(1, 432); + this.label8.Location = new System.Drawing.Point(5, 406); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(323, 13); this.label8.TabIndex = 12; @@ -1050,11 +1119,8 @@ this.syncToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.syncToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.bSync, - this.bAutoSync, this.eInterval, - this.eOomRounds, - this.lOomLabel, - this.toolStripButton2}); + this.bAutoSync}); this.syncToolStrip.Location = new System.Drawing.Point(3, 483); this.syncToolStrip.Name = "syncToolStrip"; this.syncToolStrip.Size = new System.Drawing.Size(563, 25); @@ -1071,8 +1137,16 @@ this.bSync.Text = "Synchronizuj teraz"; this.bSync.Click += new System.EventHandler(this.bSync_Click); // + // eInterval + // + this.eInterval.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.eInterval.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.eInterval.Name = "eInterval"; + this.eInterval.Size = new System.Drawing.Size(50, 25); + // // bAutoSync // + this.bAutoSync.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; this.bAutoSync.Image = ((System.Drawing.Image)(resources.GetObject("bAutoSync.Image"))); this.bAutoSync.ImageTransparentColor = System.Drawing.Color.Magenta; this.bAutoSync.Margin = new System.Windows.Forms.Padding(30, 1, 0, 2); @@ -1081,44 +1155,6 @@ this.bAutoSync.Text = "Synchronizuj co:"; this.bAutoSync.Click += new System.EventHandler(this.bAutoSync_Click); // - // eInterval - // - this.eInterval.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.eInterval.Name = "eInterval"; - this.eInterval.Size = new System.Drawing.Size(50, 25); - // - // eOomRounds - // - this.eOomRounds.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.eOomRounds.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.eOomRounds.Enabled = false; - this.eOomRounds.Name = "eOomRounds"; - this.eOomRounds.Size = new System.Drawing.Size(80, 25); - this.eOomRounds.ToolTipText = "Jeśli nie wiesz do czego to jest, to nic nie wpisuj!"; - // - // lOomLabel - // - this.lOomLabel.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.lOomLabel.Enabled = false; - this.lOomLabel.Name = "lOomLabel"; - this.lOomLabel.Size = new System.Drawing.Size(92, 22); - this.lOomLabel.Text = "Rundy dla OOM"; - this.lOomLabel.ToolTipText = "Jeśli nie wiesz do czego to jest, to nic nie wpisuj!"; - // - // toolStripButton2 - // - this.toolStripButton2.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - this.toolStripButton2.BackColor = System.Drawing.Color.Transparent; - this.toolStripButton2.CheckOnClick = true; - this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton2.Name = "toolStripButton2"; - this.toolStripButton2.Size = new System.Drawing.Size(23, 22); - this.toolStripButton2.Text = "‎✔"; - this.toolStripButton2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.toolStripButton2.ToolTipText = "Jeśli nie wiesz do czego to jest, to nic nie wpisuj!"; - this.toolStripButton2.CheckedChanged += new System.EventHandler(this.toolStripButton2_CheckedChanged); - // // toolStrip4 // this.toolStrip4.BackColor = System.Drawing.Color.White; @@ -1485,6 +1521,8 @@ this.groupBox4.PerformLayout(); this.tabPage2.ResumeLayout(false); this.tabPage2.PerformLayout(); + this.sectionToolStrip.ResumeLayout(false); + this.sectionToolStrip.PerformLayout(); this.namesPanel.ResumeLayout(false); this.namesPanel.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numNamesRefreshInterval)).EndInit(); @@ -1624,6 +1662,9 @@ private System.Windows.Forms.Label label13; private System.Windows.Forms.Label label14; private System.Windows.Forms.Label label12; + private System.Windows.Forms.ToolStrip sectionToolStrip; + private System.Windows.Forms.ToolStripLabel toolStripLabel1; + private System.Windows.Forms.ToolStripComboBox cbNamesSection; } } diff --git a/Aktywator/MainForm.cs b/Aktywator/MainForm.cs index 8f8bba0..cd3f3f2 100644 --- a/Aktywator/MainForm.cs +++ b/Aktywator/MainForm.cs @@ -69,6 +69,12 @@ namespace Aktywator labelFilename.Text = filename; this.fillSectionSelector(bws.getSections()); + cbNamesSection.Items.Clear(); + foreach (object i in cbSettingsSection.Items) + { + cbNamesSection.Items.Add(i); + } + // cloning Setting List returned from Bws, because we're going to extend it for version tracking purposes this.bwsSettings = new List(bws.initSettings()); this.bwsSettings.Add(new Setting("BM2ShowPlayerNames", this.xShowPlayerNames, bws, new Version(2, 0, 0), new Version(1, 3, 1))); @@ -107,7 +113,7 @@ namespace Aktywator { cbSettingsSection.SelectedIndex = 0; foreach (string section in sections.Split(',')) { - cbSettingsSection.Items.Add(" " + bws.sectorNumberToLetter(Int32.Parse(section.Trim())) + " "); + cbSettingsSection.Items.Add(bws.sectorNumberToLetter(Int32.Parse(section.Trim()))); } } @@ -392,12 +398,23 @@ namespace Aktywator teamNames = new TeamNamesSettings(); teamNames.initTournament((TeamyTournament)tournament, this); bTeamsNamesSettings.Text = teamNames.getLabel(); + cbNamesSection.Items.Remove("*"); + string sectionForTournament = bws.detectTeamySection(tournament.getName()); + if (sectionForTournament != null) + { + cbNamesSection.SelectedItem = sectionForTournament; + } + else + { + cbNamesSection.SelectedItem = cbNamesSection.Items[0]; + } } else { lSkok.Visible = false; numTeamsTableOffset.Visible = false; bTeamsNamesSettings.Visible = false; + cbNamesSection.SelectedIndex = 0; } syncToolStrip.Visible = true; namesPanel.Visible = true; @@ -417,7 +434,7 @@ namespace Aktywator { try { - bws.syncNames(tournament, true, eOomRounds.Text, namesGridView); + bws.syncNames(tournament, true, eOomRounds.Text, cbNamesSection.SelectedItem.ToString(), namesGridView); } catch (Exception ee) { @@ -472,7 +489,7 @@ namespace Aktywator private void timer_Tick(object sender, EventArgs e) { - bws.syncNames(tournament, false, eOomRounds.Text, namesGridView); + bws.syncNames(tournament, false, eOomRounds.Text, cbNamesSection.SelectedItem.ToString(), namesGridView); } private void bForceSync_Click(object sender, EventArgs e) diff --git a/Aktywator/MainForm.resx b/Aktywator/MainForm.resx index 652834c..7bcd39e 100644 --- a/Aktywator/MainForm.resx +++ b/Aktywator/MainForm.resx @@ -175,6 +175,9 @@ EAdVRRzaJOwXoV/4N8D6AwpMvVRjyTFwAAAAAElFTkSuQmCC + + 564, 33 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 @@ -331,56 +334,56 @@ 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 gg== @@ -408,34 +411,34 @@ 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 -- cgit v1.2.3 From dbea367027d809f130e007caebd50f611d68474c Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 30 Sep 2017 20:10:45 +0200 Subject: On BWS convert, fill Settings table with records for separate sections --- Aktywator/Bws.cs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 05fcb83..fd24418 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -351,6 +351,8 @@ namespace Aktywator s.createField(sql); } + this.convertSettingsPerSection(); + try { sql.query("ALTER TABLE Tables ADD COLUMN `Group` integer;"); @@ -416,6 +418,37 @@ namespace Aktywator } } + private void convertSettingsPerSection() + { + string sectionString = this.getSections(); + string[] sections = sectionString.Split(','); + OleDbDataReader defaultSettings = sql.select("SELECT * FROM `Settings`"); + if (defaultSettings.Read()) + { + object[] values = new object[100]; + int columns = defaultSettings.GetValues(values); + Dictionary objects = new Dictionary(); + for (int i = 0; i < columns; i++) + { + objects.Add(defaultSettings.GetName(i), values[i]); + } + defaultSettings.Close(); + foreach (string section in sections) + { + try + { + string sectionData = sql.selectOne("SELECT `Section` FROM `Settings` WHERE `Section` = " + section, true); + } + catch (OleDbRowMissingException e) + { + objects["Section"] = section; + sql.insert("Settings", objects); + } + } + sql.query("DELETE FROM `Settings` WHERE `Section` NOT IN (" + sectionString + ")"); + } + } + public void updateSettings() { sql.query("UPDATE Tables SET UpdateFromRound=997;"); @@ -426,6 +459,7 @@ namespace Aktywator main.startLoading(); if (settings == null) { + main.stopLoading(); return; } main.lFirstSectorSettings.Visible = false; -- cgit v1.2.3 From 45550ac5edd1967c3cbaf8a2c396e6a8bc83ca05 Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 30 Sep 2017 20:36:32 +0200 Subject: Force-setting name-related settings on names loading --- Aktywator/Bws.cs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index fd24418..cde192a 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -691,15 +691,21 @@ namespace Aktywator } } } + StringBuilder errors = new StringBuilder(); List settings = new List(); settings.Add(new Setting("BM2NumberEntryEachRound", "integer", (tournament.type == Tournament.TYPE_TEAMY) ? "1" : "0")); settings.Add(new Setting("BM2NumberEntryPreloadValues", "integer", "1")); foreach (Setting s in settings) { s.createField(sql); + Setting.save(s.name, s.defaultStr, this, errors); } if (interactive) { + if (errors.Length > 0) + { + MessageBox.Show(errors.ToString(), "Błąd ustawiania opcji BWS", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } MessageBox.Show("Synchronizacja zakończona!\nPrzejrzanych nazwisk: " + count + "\nZmienionych: " + countNew, "Synchronizacja nazwisk", MessageBoxButtons.OK, MessageBoxIcon.Information); if (sql.selectOne("SELECT BM2ShowPlayerNames FROM Settings") != "1") -- cgit v1.2.3 From a1ff38c72ff67fd980e7354645ed51159d10575e Mon Sep 17 00:00:00 2001 From: emkael Date: Fri, 10 Nov 2017 15:15:45 +0100 Subject: Ordering columns by board number in hand records grid. Fixes #3 --- Aktywator/Bws.cs | 8 ++++---- Aktywator/Resources/BuildDate.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'Aktywator/Bws.cs') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index cde192a..9dedb84 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -46,7 +46,7 @@ namespace Aktywator row.HeaderCell.Value = this.sectorNumberToLetter(Int16.Parse(section)); main.gwSections.Rows.Add(row); } - Dictionary> boards = this.loadSectionBoards(sections); + SortedDictionary> boards = this.loadSectionBoards(sections); foreach (KeyValuePair> boardList in boards) { main.gwSections.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = boardList.Key.ToString(), Width = 22, DefaultCellStyle = { ForeColor = Color.White, Alignment = DataGridViewContentAlignment.MiddleCenter } }); @@ -72,8 +72,8 @@ namespace Aktywator this.displayHandRecordInfo(boards); } - private Dictionary> loadSectionBoards(string[] sections) { - Dictionary> boards = new Dictionary>(); + private SortedDictionary> loadSectionBoards(string[] sections) { + SortedDictionary> boards = new SortedDictionary>(); foreach (string section in sections) { string sectionLetter = this.sectorNumberToLetter(Int16.Parse(section)); @@ -91,7 +91,7 @@ namespace Aktywator return boards; } - private void displayHandRecordInfo(Dictionary> boards) + private void displayHandRecordInfo(SortedDictionary> boards) { Dictionary> handInfo = this.loadHandRecordInfo(); foreach (KeyValuePair> board in boards) diff --git a/Aktywator/Resources/BuildDate.txt b/Aktywator/Resources/BuildDate.txt index 19d5ac5..3649349 100644 --- a/Aktywator/Resources/BuildDate.txt +++ b/Aktywator/Resources/BuildDate.txt @@ -1 +1 @@ -2017-10-17 +2017-11-10 -- cgit v1.2.3