Go to the documentation of this file.00001
00002
00003 #include "vgui_shell_tableau.h"
00004
00005 #include <vgui/vgui.h>
00006 #include <vgui/vgui_adaptor.h>
00007 #include <vgui/vgui_event.h>
00008 #include <vgui/vgui_menu.h>
00009 #include <vgui/vgui_clear_tableau.h>
00010 #include <vgui/vgui_tview_launcher_tableau.h>
00011 #include <vcl_iostream.h>
00012
00013 vgui_event_condition vgui_shell_tableau_bindings::default_quit = vgui_event_condition( vgui_key('q'), vgui_ALT );
00014 vgui_event_condition vgui_shell_tableau_bindings::default_close = vgui_event_condition( vgui_key('w'), vgui_ALT );
00015 vgui_event_condition vgui_shell_tableau_bindings::default_graph = vgui_event_condition( vgui_key('g'), vgui_SHIFT );
00016
00017
00018 vgui_shell_tableau::vgui_shell_tableau(vgui_tableau_sptr const &t0)
00019 {
00020 init();
00021 vgui_composite_tableau::add(t0);
00022 }
00023
00024 vgui_shell_tableau::vgui_shell_tableau(vgui_tableau_sptr const &t0,
00025 vgui_tableau_sptr const &t1)
00026 {
00027 init();
00028 vgui_composite_tableau::add(t0);
00029 vgui_composite_tableau::add(t1);
00030 }
00031
00032 vgui_shell_tableau::vgui_shell_tableau(vgui_tableau_sptr const &t0,
00033 vgui_tableau_sptr const &t1,
00034 vgui_tableau_sptr const &t2)
00035 {
00036 init();
00037 vgui_composite_tableau::add(t0);
00038 vgui_composite_tableau::add(t1);
00039 vgui_composite_tableau::add(t2);
00040 }
00041
00042 vgui_shell_tableau::vgui_shell_tableau(vgui_tableau_sptr const &t0,
00043 vgui_tableau_sptr const &t1,
00044 vgui_tableau_sptr const &t2,
00045 vgui_tableau_sptr const &t3)
00046 {
00047 init();
00048 vgui_composite_tableau::add(t0);
00049 vgui_composite_tableau::add(t1);
00050 vgui_composite_tableau::add(t2);
00051 vgui_composite_tableau::add(t3);
00052 }
00053
00054 void vgui_shell_tableau::init()
00055 {
00056 clear = vgui_clear_tableau_new();
00057 graph = vgui_tview_launcher_tableau_new();
00058
00059 vgui_composite_tableau::add(clear);
00060 vgui_composite_tableau::add(graph);
00061
00062 set_quit( true );
00063 set_enable_key_bindings( false );
00064 }
00065
00066 vgui_shell_tableau::~vgui_shell_tableau()
00067 {
00068 vgui_composite_tableau::remove(graph);
00069 vgui_composite_tableau::remove(clear);
00070 }
00071
00072
00073
00074 #include <vgui/vgui_text_graph.h>
00075
00076 bool vgui_shell_tableau::handle(vgui_event const &e)
00077 {
00078 if ( bindings.quit(e) ) {
00079 e.origin->post_destroy();
00080 vgui::quit();
00081 }
00082
00083 if ( bindings.close(e) ) {
00084 e.origin->post_destroy();
00085 }
00086
00087 if ( bindings.graph(e) ) {
00088 vgui_text_graph(vcl_cerr);
00089 }
00090
00091
00092 if ( e.type==vgui_DRAW || e.type==vgui_DRAW_OVERLAY ) {
00093 bool retv = true;
00094
00095 for ( unsigned i=0; i<children.size(); ++i ) {
00096
00097 #ifdef DEBUG
00098 vcl_cerr << "DRAW";
00099 #endif
00100 if ( active[i] && children[i] )
00101 if ( !children[i]->handle(e) )
00102 retv=false;
00103 }
00104 return retv;
00105 }
00106
00107
00108 for ( unsigned i=0; i < children.size(); ++i ) {
00109 if (active[i] && children[i])
00110 if ( children[i]->handle(e) )
00111 return true;
00112 }
00113
00114
00115 return false;
00116 }
00117
00118 void vgui_shell_tableau::get_popup(vgui_popup_params const ¶ms, vgui_menu &menu)
00119 {
00120
00121 clear->get_popup(params, menu);
00122
00123
00124 graph->get_popup(params, menu);
00125
00126 menu.separator();
00127
00128
00129 for (unsigned i=2; i<children.size(); ++i)
00130 children[i]->get_popup(params, menu);
00131 }
00132
00133
00134
00135
00136
00137 void vgui_shell_tableau::set_quit(bool on)
00138 {
00139 do_quit = on;
00140 if ( do_quit ) {
00141 bindings.set_quit( key_bindings_type::default_quit );
00142 bindings.set_close( key_bindings_type::default_close );
00143 }
00144 else {
00145 bindings.set_quit( vgui_event_condition() );
00146 bindings.set_close( vgui_event_condition() );
00147 }
00148 }
00149
00150
00151 void vgui_shell_tableau::set_enable_key_bindings(bool on)
00152 {
00153 enable_key_bindings = on;
00154 if ( enable_key_bindings ) {
00155 bindings.set_graph( key_bindings_type::default_graph );
00156
00157 this->set_quit( do_quit );
00158 }
00159 else {
00160
00161 bindings.set_quit( vgui_event_condition() );
00162 bindings.set_close( vgui_event_condition() );
00163 bindings.set_graph( vgui_event_condition() );
00164 }
00165 }