- Converted undo to use TextView.
This commit is contained in:
Paul Beckingham 2011-05-12 00:34:34 -04:00
parent 9e3e40c3a9
commit e5555b579d
2 changed files with 56 additions and 87 deletions

View file

@ -40,7 +40,7 @@
#include "TDB.h" #include "TDB.h"
#include "Directory.h" #include "Directory.h"
#include "File.h" #include "File.h"
#include "Table.h" #include "ViewText.h"
#include "Timer.h" #include "Timer.h"
#include "Color.h" #include "Color.h"
#include "main.h" #include "main.h"
@ -756,24 +756,12 @@ void TDB::undo ()
// Attributes are all there is, so figure the different attribute names // Attributes are all there is, so figure the different attribute names
// between before and after. // between before and after.
Table table; ViewText view;
table.setTableWidth (context.getWidth ()); view.width (context.getWidth ());
table.setTableIntraPadding (2); view.intraPadding (2);
table.addColumn (" "); view.add (Column::factory ("string", ""));
table.addColumn ("Prior Values"); view.add (Column::factory ("string", "Prior Values"));
table.addColumn ("Current Values"); view.add (Column::factory ("string", "Current Values"));
if (context.color () && context.config.getBoolean ("fontunderline"))
{
table.setColumnUnderline (1);
table.setColumnUnderline (2);
}
else
table.setTableDashedUnderline ();
table.setColumnWidth (0, Table::minimum);
table.setColumnWidth (1, Table::flexible);
table.setColumnWidth (2, Table::flexible);
Task after (current); Task after (current);
@ -796,10 +784,9 @@ void TDB::undo ()
int row; int row;
foreach (name, beforeOnly) foreach (name, beforeOnly)
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, *name); view.set (row, 0, *name);
table.addCell (row, 1, renderAttribute (*name, before.get (*name))); view.set (row, 1, renderAttribute (*name, before.get (*name)), color_red);
table.setCellColor (row, 1, color_red);
} }
foreach (name, before) foreach (name, before)
@ -809,25 +796,20 @@ void TDB::undo ()
if (currentValue != "") if (currentValue != "")
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, name->first); view.set (row, 0, name->first);
table.addCell (row, 1, renderAttribute (name->first, priorValue)); view.set (row, 1, renderAttribute (name->first, priorValue),
table.addCell (row, 2, renderAttribute (name->first, currentValue)); (priorValue != currentValue ? color_red : Color ()));
view.set (row, 2, renderAttribute (name->first, currentValue),
if (priorValue != currentValue) (priorValue != currentValue ? color_green : Color ()));
{
table.setCellColor (row, 1, color_red);
table.setCellColor (row, 2, color_green);
}
} }
} }
foreach (name, afterOnly) foreach (name, afterOnly)
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, *name); view.set (row, 0, *name);
table.addCell (row, 2, renderAttribute (*name, after.get (*name))); view.set (row, 2, renderAttribute (*name, after.get (*name)), color_green);
table.setCellColor (row, 2, color_green);
} }
} }
else else
@ -835,15 +817,14 @@ void TDB::undo ()
int row; int row;
foreach (name, after) foreach (name, after)
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, name->first); view.set (row, 0, name->first);
table.addCell (row, 2, renderAttribute (name->first, after.get (name->first))); view.set (row, 2, renderAttribute (name->first, after.get (name->first)), color_green);
table.setCellColor (row, 2, color_green);
} }
} }
std::cout << "\n" std::cout << "\n"
<< table.render () << view.render ()
<< "\n"; << "\n";
} }
@ -870,27 +851,21 @@ void TDB::undo ()
Task after (current); Task after (current);
// Generate table header. // Generate table header.
Table table; ViewText view;
table.setTableWidth (context.getWidth ()); view.width (context.getWidth ());
table.setTableIntraPadding (2); view.intraPadding (2);
table.addColumn (" "); view.add (Column::factory ("string", ""));
table.addColumn (" "); view.add (Column::factory ("string", ""));
table.setColumnWidth (0, Table::minimum);
table.setColumnWidth (1, Table::flexible);
table.setColumnJustification (0, Table::right);
table.setColumnJustification (1, Table::left);
int row = table.addRow (); int row = view.addRow ();
table.addCell (row, 0, "--- previous state"); view.set (row, 0, "--- previous state", color_red);
table.addCell (row, 1, "Undo will restore this state"); view.set (row, 1, "Undo will restore this state", color_red);
table.setRowColor (row, color_red);
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "+++ current state "); // Note trailing space. view.set (row, 0, "+++ current state ", color_green); // Note trailing space.
table.addCell (row, 1, "Change made " + lastChange.toString (context.config.get ("dateformat"))); view.set (row, 1, "Change made " + lastChange.toString (context.config.get ("dateformat")), color_green);
table.setRowColor (row, color_green);
table.addRow (); view.addRow ();
// Add rows to table showing diffs. // Add rows to table showing diffs.
std::vector <std::string> all; std::vector <std::string> all;
@ -928,55 +903,49 @@ void TDB::undo ()
{ {
// Show nothing - no point displaying that which did not change. // Show nothing - no point displaying that which did not change.
// row = table.addRow (); // row = view.addRow ();
// table.addCell (row, 0, *a + ":"); // view.set (row, 0, *a + ":");
// table.addCell (row, 1, before_att); // view.set (row, 1, before_att);
} }
// Attribute deleted. // Attribute deleted.
else if (before_att != "" && after_att == "") else if (before_att != "" && after_att == "")
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "-" + *a + ":"); view.set (row, 0, "-" + *a + ":", color_red);
table.addCell (row, 1, before_att); view.set (row, 1, before_att, color_red);
table.setRowColor (row, color_red);
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "+" + *a + ":"); view.set (row, 0, "+" + *a + ":", color_green);
table.setRowColor (row, color_green);
} }
// Attribute added. // Attribute added.
else if (before_att == "" && after_att != "") else if (before_att == "" && after_att != "")
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "-" + *a + ":"); view.set (row, 0, "-" + *a + ":", color_red);
table.setRowColor (row, color_red);
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "+" + *a + ":"); view.set (row, 0, "+" + *a + ":", color_green);
table.addCell (row, 1, after_att); view.set (row, 1, after_att, color_green);
table.setRowColor (row, color_green);
} }
// Attribute changed. // Attribute changed.
else else
{ {
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "-" + *a + ":"); view.set (row, 0, "-" + *a + ":", color_red);
table.addCell (row, 1, before_att); view.set (row, 1, before_att, color_red);
table.setRowColor (row, color_red);
row = table.addRow (); row = view.addRow ();
table.addCell (row, 0, "+" + *a + ":"); view.set (row, 0, "+" + *a + ":", color_green);
table.addCell (row, 1, after_att); view.set (row, 1, after_att, color_green);
table.setRowColor (row, color_green);
} }
} }
} }
std::cout << "\n" std::cout << "\n"
<< table.render () << view.render ()
<< "\n"; << "\n";
} }

View file

@ -121,7 +121,7 @@ sub report
$data{'TDB::loadCompleted'} || 0, $data{'TDB::loadCompleted'} || 0,
$data{'TDB::gc'}, $data{'TDB::gc'},
$data{'TDB::commit'}, $data{'TDB::commit'},
$data{'Table::render'}; $data{'View::render'};
diag ($out); diag ($out);
} }