00001 /*-------------------------------------------------------------------- 00002 * src_viewer.h 00003 * 00004 * The "src_viewer" displays source code of the currently selected object. 00005 */ 00006 00007 #ifndef SRC_VIEWER_H 00008 #define SRC_VIEWER_H 00009 00010 #include "base_viewer.h" 00011 #include "code_tree.h" 00012 00013 class src_viewer : public text_base_viewer { 00014 typedef text_base_viewer inherited; 00015 00016 FileBlock* current_file_block; 00017 String current_file_name; 00018 vmessage* infobar; 00019 column_id annote_column; 00020 code_tree* stree; 00021 list<code_tree*>* stree_cache; 00022 00023 static const String no_source_file; 00024 00025 virtual void create_file_menu(); 00026 virtual void update_infobar(); 00027 00028 virtual void clear(); 00029 virtual void refresh(); 00030 00031 virtual void clear_cache(); 00032 virtual void build_stree(); 00033 00034 virtual bool print_source(); 00035 virtual void show( vnode *vn ); 00036 00037 virtual void annotate_src(); 00038 void annotate_src_helper(code_fragment* f ); 00039 00040 static void create_src_links(SuifObject* z, src_viewer* viewer ); 00041 static code_range map_tree_node(SuifObject* z, src_viewer* viewer ); 00042 static void do_close( event& e, src_viewer* viewer ); 00043 00044 public: 00045 src_viewer(); 00046 virtual ~src_viewer(); 00047 00048 virtual void create_window(); 00049 virtual char* class_name() { return "Source Viewer"; } 00050 virtual void handle_event( event& e ); 00051 00052 virtual String get_source_file_name() { 00053 return current_file_name; 00054 } 00055 00056 virtual void view(FileBlock* file, String = String()); 00057 virtual void view(SuifObject* tn, bool select = true); 00058 00059 static window* constructor() { 00060 return new src_viewer; 00061 } 00062 00063 }; 00064 00065 #endif // SRC_VIEWER_H