Commit c38aa5ef authored by Xavier de Blas's avatar Xavier de Blas

treeview_stats have a combo for selection of multiple combination of rows in...

treeview_stats have a combo for selection of multiple combination of rows in gui/stats.cs, and when no rows selected, graphs and report cannot be done

treeview_stats combo can select male or female in all stats

if there are problems for accessing to /dev/ttyS0, now changes to 'simulated' automatically. Future: show a errorWindow
parent 525d7f3e
CHANGELOG:
5 des 2005
TODO: errorWindow in auto changing to simulated
treeview_stats have a combo for selection of multiple combination of
rows in gui/stats.cs, and when no rows selected, graphs and report
cannot be done
treeview_stats combo can select male or female in all stats
if there are problems for accessing to /dev/ttyS0, now changes to
'simulated' automatically. Future: show a errorWindow
30 nov 2005
fixed bug in printed report (some persons doesn't shown, and order was
not correct)
......
No preview for this file type
No preview for this file type
......@@ -43,8 +43,11 @@ public class Chronopic {
public Chronopic(string disp)
{
Console.WriteLine("1");
this.serial_fd=this.Open(disp);
try {
this.serial_fd=this.Open(disp);
} catch{
Console.WriteLine("catched!!");
}
Console.WriteLine("2");
}
......
This diff is collapsed.
CHRONOJUMP ROADMAP
chronojump 0.4
--------------
TODO:
update the web, add print directory and all it's files
repair links of images and articles, add a variable urlSite, and use
it instead of the :::imageLink:::, :::articleLink:::
TODO:
add a printed from in the print pages (without the "print" directory)
add a little image in the print
remaining:
- solve nplot with new mono/ubuntu
- solve installation of chronojump_logo.png and the css
- update pot & es.po, about
- integrate help (finishing manual)
chronojump 0.5
--------------
......@@ -27,7 +13,7 @@ chronojump 0.5
- show realtime graph of some different color lights depending on the value respect previous jumps
- add conditions for finishing a jump or run ("when Q index is under x three times" ...)
- edit reactive jump and intervalic run
- stats checkboxes selectable by an outside combo with (all, none, invert, man, woman, ...)
- stats checkboxes selectable by an outside combo with (all, none, invert, man, woman, ...) DONE!
chronojump 0.6
--------------
......
......@@ -38,6 +38,7 @@ class Test {
//-- Crear objeto chronopic, para acceder al chronopic
Chronopic cp = new Chronopic("/dev/ttyS0");
//Chronopic cp = new Chronopic("/dev/ttyUSB0");
//-- Obtener el estado inicial de la plataforma
......
......@@ -321,24 +321,34 @@ public class ChronoJump
Console.WriteLine ( Catalog.GetString ("change variable using 'sqlite ~/.chronojump/chronojump.db' and") );
Console.WriteLine ( Catalog.GetString ("'update preferences set value=\"True\" where name=\"simulated\";'") );
cp = new Chronopic("/dev/ttyS0");
//-- Read initial state of platform
respuesta=cp.Read_platform(out platformState);
switch(respuesta) {
case Chronopic.Respuesta.Error:
Console.WriteLine(Catalog.GetString("Error comunicating with Chronopic"));
break;
case Chronopic.Respuesta.Timeout:
Console.WriteLine(Catalog.GetString("Chronopic in not responding"));
break;
default:
Console.WriteLine(Catalog.GetString("Chronopic OK"));
break;
try {
Console.WriteLine("J1");
cp = new Chronopic("/dev/ttyS0");
Console.WriteLine("J2");
//-- Read initial state of platform
respuesta=cp.Read_platform(out platformState);
switch(respuesta) {
case Chronopic.Respuesta.Error:
Console.WriteLine(Catalog.GetString("Error comunicating with Chronopic"));
break;
case Chronopic.Respuesta.Timeout:
Console.WriteLine(Catalog.GetString("Chronopic in not responding"));
break;
default:
Console.WriteLine(Catalog.GetString("Chronopic OK"));
break;
}
Console.Write(Catalog.GetString("Plataform state: "));
Console.WriteLine("{0}", platformState);
} catch {
Console.WriteLine("Problems connecting to serial port, changed platform to 'Simulated'");
//TODO: raise a error window
//this will raise on_radiobutton_simulated_ativate and
//will put cpRunning to false, and simulated to true and cp.Close()
menuitem_simulated.Active = true;
}
Console.Write(Catalog.GetString("Plataform state: "));
Console.WriteLine("{0}", platformState);
}
private void loadPreferences ()
......@@ -1197,6 +1207,7 @@ public class ChronoJump
if(cpRunning) {
cp.Close();
}
cpRunning = false;
}
void on_radiobutton_serial_port_activate (object o, EventArgs args)
......@@ -1445,13 +1456,13 @@ public class ChronoJump
} else {
currentJump.ManageFall(o, args);
}
currentJump.FalseButtonFinished.Clicked += new EventHandler(on_jump_finished);
currentJump.FakeButtonFinished.Clicked += new EventHandler(on_jump_finished);
}
}
private void on_jump_finished (object o, EventArgs args)
{
currentJump.FalseButtonFinished.Clicked -= new EventHandler(on_jump_finished);
currentJump.FakeButtonFinished.Clicked -= new EventHandler(on_jump_finished);
if ( ! currentJump.Cancel ) {
lastEventWasJump = true;
......@@ -1589,14 +1600,14 @@ public class ChronoJump
}
else {
currentJumpRj.Manage(o, args);
currentJumpRj.FalseButtonFinished.Clicked += new EventHandler(on_jump_rj_finished);
currentJumpRj.FakeButtonFinished.Clicked += new EventHandler(on_jump_rj_finished);
}
}
private void on_jump_rj_finished (object o, EventArgs args)
{
currentJumpRj.FalseButtonFinished.Clicked -= new EventHandler(on_jump_rj_finished);
currentJumpRj.FakeButtonFinished.Clicked -= new EventHandler(on_jump_rj_finished);
if ( ! currentJumpRj.Cancel ) {
lastEventWasJump = true;
......@@ -1738,13 +1749,13 @@ public class ChronoJump
}
else {
currentRun.Manage(o, args);
currentRun.FalseButtonFinished.Clicked += new EventHandler(on_run_finished);
currentRun.FakeButtonFinished.Clicked += new EventHandler(on_run_finished);
}
}
private void on_run_finished (object o, EventArgs args)
{
currentRun.FalseButtonFinished.Clicked -= new EventHandler(on_run_finished);
currentRun.FakeButtonFinished.Clicked -= new EventHandler(on_run_finished);
if ( ! currentRun.Cancel ) {
lastEventWasJump = false;
......@@ -1875,13 +1886,13 @@ public class ChronoJump
}
else {
currentRunInterval.Manage(o, args);
currentRunInterval.FalseButtonFinished.Clicked += new EventHandler(on_run_interval_finished);
currentRunInterval.FakeButtonFinished.Clicked += new EventHandler(on_run_interval_finished);
}
}
private void on_run_interval_finished (object o, EventArgs args)
{
currentRunInterval.FalseButtonFinished.Clicked -= new EventHandler(on_run_interval_finished);
currentRunInterval.FakeButtonFinished.Clicked -= new EventHandler(on_run_interval_finished);
if ( ! currentRunInterval.Cancel ) {
lastEventWasJump = false;
......
......@@ -56,6 +56,7 @@ public class StatsWindow {
[Widget] Gtk.SpinButton spin_stats_jumps_person_bests;
[Widget] Gtk.RadioButton radiobutton_stats_jumps_person_average;
[Widget] Gtk.Button button_graph;
[Widget] Gtk.Button button_add_to_report;
[Widget] Gtk.TextView textview_enunciate;
[Widget] Gtk.ScrolledWindow scrolledwindow_enunciate;
......@@ -64,6 +65,9 @@ public class StatsWindow {
[Widget] Gtk.Box hbox_mark_consecutives;
[Widget] Gtk.CheckButton checkbutton_mark_consecutives;
[Widget] Gtk.SpinButton spinbutton_mark_consecutives;
[Widget] Gtk.Box hbox_combo_select_checkboxes;
[Widget] Gtk.Combo combo_select_checkboxes;
int prefsDigitsNumber;
bool heightPreferred;
......@@ -104,6 +108,15 @@ public class StatsWindow {
Constants.IeIndexFormula,
Constants.IubIndexFormula
};
private static string [] comboCheckboxesOptions = {
Catalog.GetString("All"),
Catalog.GetString("None"),
Catalog.GetString("Invert"),
Catalog.GetString("Selected"),
Catalog.GetString("Male"),
Catalog.GetString("Female")
};
ArrayList sendSelectedSessions;
......@@ -131,12 +144,15 @@ public class StatsWindow {
//myStat = new Stat(); //create and instance of myStat
myStatType = new StatType();
createComboSelectCheckboxes();
createComboStatsType();
createComboStatsSubType();
createComboStatsApplyTo();
updateComboStats();
//textview_enunciate.Hide();
//scrolledwindow_enunciate.Hide();
......@@ -219,6 +235,42 @@ public class StatsWindow {
combo_stats_stat_apply_to.Sensitive = true;
}
private void createComboSelectCheckboxes() {
combo_select_checkboxes = new Combo ();
combo_select_checkboxes.PopdownStrings = comboCheckboxesOptions;
//combo_select_checkboxes.DisableActivate ();
combo_select_checkboxes.Entry.Changed += new EventHandler (on_combo_select_checkboxes_changed);
hbox_combo_select_checkboxes.PackStart(combo_select_checkboxes, false, false, 0);
hbox_combo_select_checkboxes.ShowAll();
combo_select_checkboxes.Sensitive = true;
}
private void on_combo_select_checkboxes_changed(object o, EventArgs args) {
string myText = combo_select_checkboxes.Entry.Text;
if (myText != "" & myText != Catalog.GetString("Selected")) {
try {
//if selected 'male' or 'female', showSex and redo the treeview if needed
if (myText == Catalog.GetString("Male") ||
myText == Catalog.GetString("Female")) {
if( ! checkbutton_stats_sex.Active) {
//this will redo the treeview
checkbutton_stats_sex.Active = true;
//put another time the value Male or Female in combo_select_checkboxes
combo_select_checkboxes.Entry.Text = myText;
}
}
myStatType.MarkSelected(myText);
} catch {
Console.WriteLine("Do later!!");
}
}
}
private void updateComboStats() {
string [] nullOptions = { "-" };
if(combo_stats_stat_type.Entry.Text == Catalog.GetString("Global") )
......@@ -362,6 +414,11 @@ public class StatsWindow {
markedRows = myStatType.MarkedRows;
}
//if we change combo_type, subtype, or others, always, show button_graph & add_to_report,
//if there's no data, they will be hided, later
button_graph.Sensitive = true;
button_add_to_report.Sensitive = true;
myStatType = new StatType(
statisticType,
statisticSubType,
......@@ -379,8 +436,28 @@ public class StatsWindow {
graph,
toReport //always false in this class
);
bool allFine = myStatType.ChooseStat();
myStatType.FakeButtonRowCheckedUnchecked.Clicked +=
new EventHandler(on_fake_button_row_checked_clicked);
myStatType.FakeButtonRowsSelected.Clicked +=
new EventHandler(on_fake_button_rows_selected_clicked);
myStatType.FakeButtonNoRowsSelected.Clicked +=
new EventHandler(on_fake_button_no_rows_selected_clicked);
//useful for not showing button_graph & add_to_report when there are no rows
try {
if(myStatType.MarkedRows.Count == 0) {
button_graph.Sensitive = false;
button_add_to_report.Sensitive = false;
}
} catch {
Console.WriteLine("Do markedRows stuff later");
}
//every time a stat is created, all rows should be checked (except AVG & SD)
combo_select_checkboxes.Entry.Text = Catalog.GetString("All");
//show enunciate of the stat in textview_enunciate
TextBuffer tb = new TextBuffer (new TextTagTable());
......@@ -395,6 +472,28 @@ public class StatsWindow {
}
}
//changes the combo_select_checkboxes to "Selected" if any row in the treeview is checked or unchecked
private void on_fake_button_row_checked_clicked (object o, EventArgs args) {
Console.WriteLine("fakeButtonRowCheckedUnchecked in gui/stats.cs !!");
combo_select_checkboxes.Entry.Text = Catalog.GetString("Selected");
}
private void on_fake_button_rows_selected_clicked (object o, EventArgs args) {
Console.WriteLine("fakeButtonRowsSelected in gui/stats.cs !!");
button_graph.Sensitive = true;
button_add_to_report.Sensitive = true;
}
private void on_fake_button_no_rows_selected_clicked (object o, EventArgs args) {
Console.WriteLine("fakeButtonNoRowsSelected in gui/stats.cs !!");
button_graph.Sensitive = false;
button_add_to_report.Sensitive = false;
//put none in combo
combo_select_checkboxes.Entry.Text = Catalog.GetString("None");
}
//called from chronojump.cs for showing or hiding some widgets
//when a person is created or loaded
......
......@@ -58,7 +58,7 @@ public class Jump
protected int pDN;
//for raise a signal and manage it on chronojump.cs
protected Gtk.Button falseButtonFinished;
protected Gtk.Button fakeButtonFinished;
//for cancelling from chronojump.cs
protected bool cancel;
......@@ -91,7 +91,7 @@ public class Jump
hasFall = false;
}
falseButtonFinished = new Gtk.Button();
fakeButtonFinished = new Gtk.Button();
}
//after inserting database (SQL)
......@@ -247,7 +247,7 @@ public class Jump
if(cancel) {
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
}
}
......@@ -258,7 +258,7 @@ public class Jump
Console.Write("dying");
//event will be raised, and managed in chronojump.cs
//falseButtonFinished.Click();
//fakeButtonFinished.Click();
//Now called on write(), now work in mono1.1.6
return false;
......@@ -293,7 +293,7 @@ public class Jump
weight, "", ""); //weight, limited, description
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
//put max value in progressBar. This makes the thread in Pulse() stop
progressBar.Fraction = 1;
......@@ -304,15 +304,15 @@ public class Jump
private void cancel_jump(object o, EventArgs args)
{
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
cancel = true;
}
public Gtk.Button FalseButtonFinished
public Gtk.Button FakeButtonFinished
{
get {
return falseButtonFinished;
return fakeButtonFinished;
}
}
......@@ -443,7 +443,7 @@ public class JumpRj : Jump
hasFall = false;
}
falseButtonFinished = new Gtk.Button();
fakeButtonFinished = new Gtk.Button();
}
//after inserting database (SQL)
......@@ -590,7 +590,7 @@ public class JumpRj : Jump
if ( ! jumpsLimited && limitAsDouble != -1) {
double myPb = Util.GetTotalTime (tcString, tvString) / limitAsDouble ;
//if(myPb > 1.0) { myPb = 1.0; }
//don't allow progressBar be 1.0 before falseButtonClick is called
//don't allow progressBar be 1.0 before fakeButtonClick is called
if(myPb >= 1.0) { myPb = 0.99; }
progressBar.Fraction = myPb;
}
......@@ -611,7 +611,7 @@ public class JumpRj : Jump
else {
//change the progressBar percent
//progressBar.Fraction = (tcCount + tvCount) / limitAsDouble ;
//don't allow progressBar be 1.0 before falseButtonClick is called
//don't allow progressBar be 1.0 before fakeButtonClick is called
double myPb = (tcCount + tvCount) / limitAsDouble ;
if(myPb >= 1.0) { myPb = 0.99; }
progressBar.Fraction = myPb;
......@@ -676,7 +676,7 @@ public class JumpRj : Jump
}
if(cancel || finish) {
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
}
}
......@@ -720,7 +720,7 @@ public class JumpRj : Jump
appbar.Push( myStringPush );
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
//put max value in progressBar. This makes the thread in Pulse() stop
progressBar.Fraction = 1;
......
......@@ -54,7 +54,7 @@ public class Run
protected bool metersSecondsPreferred;
//for raise a signal and manage it on chronojump.cs
protected Gtk.Button falseButtonFinished;
protected Gtk.Button fakeButtonFinished;
//for cancelling from chronojump.cs
protected bool cancel;
......@@ -81,7 +81,7 @@ public class Run
this.pDN = pDN;
this.metersSecondsPreferred = metersSecondsPreferred;
falseButtonFinished = new Gtk.Button();
fakeButtonFinished = new Gtk.Button();
}
//after inserting database (SQL)
......@@ -186,7 +186,7 @@ public class Run
if(cancel) {
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
}
}
......@@ -197,7 +197,7 @@ public class Run
Console.Write("dying");
//event will be raised, and managed in chronojump.cs
//falseButtonFinished.Click();
//fakeButtonFinished.Click();
//Now called on write(), now work in mono1.1.6
return false;
......@@ -222,17 +222,17 @@ public class Run
type, distance, time, ""); //type, distance, time, description
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
//put max value in progressBar. This makes the thread in Pulse() stop
progressBar.Fraction = 1;
}
public Gtk.Button FalseButtonFinished
public Gtk.Button FakeButtonFinished
{
get {
return falseButtonFinished;
return fakeButtonFinished;
}
}
......@@ -351,7 +351,7 @@ public class RunInterval : Run
this.pDN = pDN;
falseButtonFinished = new Gtk.Button();
fakeButtonFinished = new Gtk.Button();
}
......@@ -471,7 +471,7 @@ public class RunInterval : Run
if ( ! tracksLimited && limitAsDouble != -1) {
double myPb = Util.GetTotalTime (intervalTimesString) / limitAsDouble ;
//if(myPb > 1.0) { myPb = 1.0; }
//don't allow progressBar be 1.0 before falseButtonClick is called
//don't allow progressBar be 1.0 before fakeButtonClick is called
if(myPb >= 1.0) { myPb = 0.99; }
progressBar.Fraction = myPb;
}
......@@ -554,7 +554,7 @@ public class RunInterval : Run
}
if(cancel || finish) {
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
}
}
......@@ -602,7 +602,7 @@ public class RunInterval : Run
//event will be raised, and managed in chronojump.cs
falseButtonFinished.Click();
fakeButtonFinished.Click();
//put max value in progressBar. This makes the thread in Pulse() stop
progressBar.Fraction = 1;
......
......@@ -88,6 +88,14 @@ public class StatType {
StatTypeStruct myStatTypeStruct;
//used for know when a row is checked in treeview, and change then the combo_selected_rows in gui/stats.cs
public Gtk.Button fakeButtonRowCheckedUnchecked;
//used for know when no rows are selected in treeview,
//and make the graph, add_to_report buttons not sensitive in gui/stats.cs
public Gtk.Button fakeButtonRowsSelected;
public Gtk.Button fakeButtonNoRowsSelected;
//comes from gui/stats.cs (initialization)
public StatType () {
}
......@@ -119,7 +127,6 @@ public class StatType {
this.graph = graph;
this.toReport = toReport;
myStatTypeStruct = new StatTypeStruct (
statisticApplyTo,
sendSelectedSessions, prefsDigitsNumber, sex_active,
......@@ -129,8 +136,27 @@ public class StatType {
toReport);
myStat = new Stat(); //create and instance of myStat
fakeButtonRowCheckedUnchecked = new Gtk.Button();
fakeButtonRowsSelected = new Gtk.Button();
fakeButtonNoRowsSelected = new Gtk.Button();
}
private void on_fake_button_row_checked_clicked (object o, EventArgs args) {
Console.WriteLine("fakeButtonRowCheckedUnchecked in statType.cs");
fakeButtonRowCheckedUnchecked.Click();
}
private void on_fake_button_rows_selected_clicked (object o, EventArgs args) {
Console.WriteLine("fakeButtonRowsSelected in statType.cs");
fakeButtonRowsSelected.Click();
}
private void on_fake_button_no_rows_selected_clicked (object o, EventArgs args) {
Console.WriteLine("fakeButtonNoRowsSelected in statType.cs");
fakeButtonNoRowsSelected.Click();
}
//comes from report.cs
public StatType (string statisticType, string statisticSubType, string statisticApplyTo,
ArrayList sendSelectedSessions, int prefsDigitsNumber, bool sex_active,
......@@ -309,6 +335,13 @@ public class StatType {
}
}
}
myStat.FakeButtonRowCheckedUnchecked.Clicked +=
new EventHandler(on_fake_button_row_checked_clicked);
myStat.FakeButtonRowsSelected.Clicked +=
new EventHandler(on_fake_button_rows_selected_clicked);
myStat.FakeButtonNoRowsSelected.Clicked +=
new EventHandler(on_fake_button_no_rows_selected_clicked);
myStat.PrepareData();
......@@ -336,6 +369,11 @@ public class StatType {
//there will be always a png with chronojump_logo
writer.WriteLine("<img src=\"" + directoryName + "/" + (pngs.Length -1).ToString() + ".png\">");
}
public void MarkSelected(string selected) {
myStat.MarkSelected(selected);
}
public string Enunciate {
get { return myStat.ToString(); }
......@@ -343,10 +381,21 @@ public class StatType {
public ArrayList MarkedRows {
get {
return myStat.MarkedRows;
}
get { return myStat.MarkedRows; }
}
public Gtk.Button FakeButtonRowCheckedUnchecked {
get { return fakeButtonRowCheckedUnchecked; }
}
public Gtk.Button FakeButtonRowsSelected {
get { return fakeButtonRowsSelected; }
}
public Gtk.Button FakeButtonNoRowsSelected {
get { return fakeButtonNoRowsSelected; }
}
~StatType() {}
}
......@@ -78,12 +78,21 @@ public class Stat
protected string avgValuesString = "Avg values of each jumper";
protected int numContinuous; //for stats rj evolution
//for raise a signal and manage it on src/gui/stats.cs
//signal will be catched first in src/statType.cs and there a equal signal will be raised
public Gtk.Button fakeButtonRowCheckedUnchecked;
public Gtk.Button fakeButtonRowsSelected;
public Gtk.Button fakeButtonNoRowsSelected;
//private bool selectedMakeAVGSD;
//if this is not present i have problems like (No overload for method `xxx' takes `0' arguments) with some inherited classes
public Stat ()
{
fakeButtonRowCheckedUnchecked = new Gtk.Button();
fakeButtonRowsSelected = new Gtk.Button();
fakeButtonNoRowsSelected = new Gtk.Button();
}
protected void completeConstruction (StatTypeStruct myStatTypeStruct, Gtk.TreeView treeview)
......@@ -127,6 +136,9 @@ public class Stat
}
void ItemToggled(object o, ToggledArgs args) {
Console.WriteLine("Fake button will be pressed");
fakeButtonRowCheckedUnchecked.Click();
Console.WriteLine("Toggled");
GLib.Object cellRendererToggle = (GLib.Object) o;
......@@ -138,66 +150,38 @@ public class Stat
bool val = (bool) store.GetValue (iter, column);
Console.WriteLine ("toggled {0} with value {1}", args.Path, !val);
if(args.Path == "0") {
if (store.GetIterFirst(out iter)) {
val = (bool) store.GetValue (iter, column);
store.SetValue (iter, column, !val);
//delete all from ArrayList markedRows if have to be activated we add the later
//markedRows = new ArrayList();
markedRows.RemoveRange(0,markedRows.Count);
// ALL/NONE should not be in markedRows
/*
if(!val) {
markedRows.Add("0");
}
*/
int count = 1;
while ( store.IterNext(ref iter) ){
//except AVG and SD
string avgOrSD = (string) store.GetValue (iter, 1);
if(avgOrSD != Catalog.GetString("AVG") &&
avgOrSD != Catalog.GetString("SD")) {
store.SetValue (iter, column, !val);
//if (!val) means was false, and now has changed to true.
//all rows have to be activated
if(!val) {
markedRows.Add(count.ToString());
}
//if this row is not AVG or SD
string avgOrSD = (string) store.GetValue (iter, 1);
if(avgOrSD != Catalog.GetString("AVG") && avgOrSD != Catalog.GetString("SD"))
{
//change the checkbox value
store.SetValue (iter, column, !val);
//add or delete from ArrayList markedRows
//if (val) means was true, and now has changed to false. Has been deactivated
if(val) {
int i = 0;
foreach(string myRow in markedRows) {
if(myRow == args.Path) {
markedRows.RemoveAt(i);
Console.WriteLine("deleted from markedRows row:{0}", args.Path);
break;
}
count ++;
i++;
}
} else {
markedRows.Add(args.Path);
Console.WriteLine("Added to markedRows row:{0}", args.Path);
}
}
if (isThereAnyRowSelected(store)) {
fakeButtonRowsSelected.Click();
} else {
//if this row is not AVG or SD
string avgOrSD = (string) store.GetValue (iter, 1);
if(avgOrSD != Catalog.GetString("AVG") && avgOrSD != Catalog.GetString("SD"))
{
//change the checkbox value
store.SetValue (iter, column, !val);
//add or delete from ArrayList markedRows
//if (val) means was true, and now has changed to false. Has been deactivated
if(val) {
int i = 0;