Go to the documentation of this file.00001
00002 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00003 #pragma implementation
00004 #endif
00005
00006
00007
00008
00009
00010
00011 #include "vgui_debug_tableau.h"
00012 #include <vcl_iostream.h>
00013 #include <vgui/vgui_event.h>
00014
00015
00016
00017
00018 vgui_debug_tableau::vgui_debug_tableau(vgui_tableau_sptr const& child_tableau):
00019 vgui_wrapper_tableau(child_tableau)
00020 {
00021 verbosity = 1;
00022 }
00023
00024
00025
00026 vgui_debug_tableau::~vgui_debug_tableau()
00027 {
00028 }
00029
00030
00031 static void print_tableau(vcl_ostream& s, vcl_string indent, vgui_tableau_sptr t)
00032 {
00033 s << indent << t->pretty_name() << vcl_endl;
00034
00035
00036 vcl_vector<vgui_tableau_sptr> children;
00037 t->get_children(&children);
00038
00039 if (children.size() > 1)
00040 indent += " ";
00041 else
00042 indent += " ";
00043
00044 for (unsigned int i = 0; i < children.size(); ++i)
00045 print_tableau(s, indent, children[i]);
00046 }
00047
00048
00049 static void print_tableau(vgui_tableau_sptr t)
00050 {
00051 print_tableau(vcl_cerr, __FILE__ ": ", t);
00052 }
00053
00054
00055
00056 bool vgui_debug_tableau::handle(const vgui_event& e)
00057 {
00058 vgui_event e_in = e;
00059
00060
00061 bool handled = child && child->handle(e);
00062
00063
00064 bool print = (verbosity > 0);
00065 if (e.type == vgui_MOTION)
00066 print = (verbosity > 1);
00067 if (print)
00068 vcl_cerr << __FILE__ ": " << (handled ? "TOOK" : "left") << ": " << e << vcl_endl;
00069
00070 if (!(e == e_in))
00071 vcl_cerr << __FILE__ ": The event changed !!!\n";
00072
00073
00074
00075
00076 if (e.type == vgui_KEY_PRESS)
00077 switch (e.key) {
00078 case 'v':
00079 if (++verbosity > 2) verbosity = 0;
00080 vcl_cerr << __FILE__ ": verbosity = " << verbosity << vcl_endl;
00081 break;
00082 case 'p':
00083 print_tableau(this);
00084 break;
00085 default:
00086 break;
00087 }
00088
00089 return handled;
00090 }