public void MarkSelected(string selected)
{
Gtk.TreeIter iter;
bool okIter = store.GetIterFirst(out iter);
if(okIter) {
if(selected == Catalog.GetString("All")) {
do {
if(isNotAVGOrSD(iter)) {
store.SetValue (iter, 0, true);
addRowToMarkedRows(treeview.Model.GetPath(iter).ToString());
}
} while ( store.IterNext(ref iter) );
} else if(selected == Catalog.GetString("None")) {
do {
store.SetValue (iter, 0, false);
deleteRowFromMarkedRows(treeview.Model.GetPath(iter).ToString());
} while ( store.IterNext(ref iter) );
} else if(selected == Catalog.GetString("Invert")) {
do {
if(isNotAVGOrSD(iter)) {
bool val = (bool) store.GetValue (iter, 0);
store.SetValue (iter, 0, !val);
if(val)
deleteRowFromMarkedRows(treeview.Model.GetPath(iter).ToString());
else
addRowToMarkedRows(treeview.Model.GetPath(iter).ToString());
}
} while ( store.IterNext(ref iter) );
} else if(selected == Catalog.GetString("Male")) {
do {
if(isNotAVGOrSD(iter)) {
string nameAndSex = (string) store.GetValue (iter, 1);
string [] stringFull = nameAndSex.Split(new char[] {'.'});
if(stringFull.Length > 1 && stringFull[1].StartsWith("M")) {
store.SetValue (iter, 0, true);
addRowToMarkedRows(treeview.Model.GetPath(iter).ToString());
} else {
store.SetValue (iter, 0, false);
deleteRowFromMarkedRows(treeview.Model.GetPath(iter).ToString());
}
}
} while ( store.IterNext(ref iter) );
} else if(selected == Catalog.GetString("Female")) {
do {
if(isNotAVGOrSD(iter)) {
string nameAndSex = (string) store.GetValue (iter, 1);
string [] stringFull = nameAndSex.Split(new char[] {'.'});
if(stringFull.Length > 1 && stringFull[1].StartsWith("F")) {
store.SetValue (iter, 0, true);
addRowToMarkedRows(treeview.Model.GetPath(iter).ToString());
} else {
store.SetValue (iter, 0, false);
deleteRowFromMarkedRows(treeview.Model.GetPath(iter).ToString());
}
}
} while ( store.IterNext(ref iter) );
} else {
//a person is selected
do {
if(isNotAVGOrSD(iter)) {
string nameWithMoreData = (string) store.GetValue (iter, 1);
string onlyName = fetchNameOnStatsData(nameWithMoreData);
/*
//probably name has a jumpType like:
//myName (CMJ), or myName.F (CMJ)
//int parenthesesPos = nameWithMoreData.LastIndexOf('(');
//it can have two parentheses, like:
//myName (Rj(j))
int parenthesesPos = nameWithMoreData.IndexOf('(');
string nameWithoutJumpType;
if(parenthesesPos == -1)
nameWithoutJumpType = nameWithMoreData;
else
nameWithoutJumpType = nameWithMoreData.Substring(0, parenthesesPos-1);
//probably name has sex like:
//myName.F, or myName.F (CMJ)
string [] onlyName = nameWithoutJumpType.Split(new char[] {'.'});
*/
//if(onlyName[0] == selected) {
if(onlyName == selected) {
store.SetValue (iter, 0, true);
addRowToMarkedRows(treeview.Model.GetPath(iter).ToString());
} else {
store.SetValue (iter, 0, false);
deleteRowFromMarkedRows(treeview.Model.GetPath(iter).ToString());
}
}
} while ( store.IterNext(ref iter) );
}
//check rows selected and raise a signal if noone is selected
if (isThereAnyRowSelected(store)) {
fakeButtonRowsSelected.Click();
} else {
fakeButtonNoRowsSelected.Click();
}
} else {
//if we cannot access the treeview, also don't allow to graph or report
fakeButtonNoRowsSelected.Click();
}
}