00001 /****************************************************************************** 00002 * ftvhelp.cpp,v 1.0 2000/09/06 16:09:00 00003 * 00004 * Contributed by Kenney Wong <kwong@ea.com> 00005 * Modified by Dimitri van Heesch (c) 2003 00006 * 00007 * Folder Tree View for offline help on browsers that do not support HTML Help. 00008 */ 00009 00010 #include <stdio.h> 00011 #include <stdlib.h> 00012 #include <qlist.h> 00013 #include <qdict.h> 00014 #include <qfileinfo.h> 00015 00016 #include "ftvhelp.h" 00017 #include "config.h" 00018 #include "message.h" 00019 #include "doxygen.h" 00020 #include "language.h" 00021 00022 #define MAX_INDENT 1024 00023 00024 unsigned char ftv2blank_png[] = { 00025 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00026 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00027 0x01, 0x00, 0x00, 0x00, 0x01, 0x96, 0xd6, 0x11, 0x47, 0x00, 0x00, 0x00, 00028 0x02, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x01, 0x01, 0x94, 0xfd, 0xae, 0x00, 00029 0x00, 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 00030 0x61, 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 00031 0x32, 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 00032 0x25, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 00033 0x00, 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 00034 0x6d, 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 00035 0x72, 0x20, 0x32, 0x2e, 0x30, 0x21, 0xf8, 0xd7, 0x5e, 0x53, 0x00, 0x00, 00036 0x00, 0x14, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x38, 0xc0, 0x80, 00037 0x80, 0x1f, 0x30, 0xe0, 0x7f, 0x42, 0x90, 0x00, 0x02, 0x00, 0x78, 0x3c, 00038 0x32, 0xcb, 0x72, 0x8f, 0x7c, 0x12, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 00039 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00040 }; 00041 00042 unsigned char ftv2doc_png[] = { 00043 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00044 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16, 00045 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00, 00046 0x15, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 00047 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 00048 0x00, 0xff, 0xb3, 0xbd, 0xfb, 0xc8, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 00049 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 00050 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 00051 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 00052 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x76, 0x49, 0x44, 0x41, 00053 0x54, 0x78, 0xda, 0x63, 0x60, 0x60, 0x60, 0x60, 0x63, 0x60, 0x60, 0x64, 00054 0x00, 0x01, 0x27, 0x30, 0x62, 0x71, 0x01, 0xe2, 0x24, 0x06, 0x38, 0x60, 00055 0x71, 0x00, 0xca, 0x27, 0x33, 0x30, 0x30, 0x01, 0x31, 0xa3, 0x32, 0x03, 00056 0x0a, 0x70, 0x54, 0x32, 0x01, 0x53, 0x69, 0x60, 0x71, 0x27, 0x08, 0x15, 00057 0x1a, 0x1a, 0xca, 0x80, 0x01, 0x5c, 0x5c, 0xc0, 0x94, 0xa2, 0x90, 0x02, 00058 0x88, 0x52, 0x4b, 0x52, 0x05, 0x53, 0x69, 0xc8, 0x94, 0x18, 0x84, 0x52, 00059 0x52, 0x12, 0xc5, 0x69, 0x0a, 0x36, 0xe0, 0xa4, 0xa4, 0xa4, 0x68, 0x82, 00060 0xc4, 0x51, 0x82, 0x6b, 0x04, 0x71, 0x14, 0x4d, 0x61, 0x4e, 0x55, 0x04, 00061 0xf2, 0x60, 0x1c, 0x27, 0x45, 0x24, 0x19, 0x90, 0x01, 0x70, 0x19, 0x67, 00062 0x63, 0x20, 0x30, 0xc5, 0x6f, 0x23, 0x00, 0xf5, 0xd0, 0x11, 0xe0, 0x55, 00063 0x83, 0x47, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 00064 0x42, 0x60, 0x82 00065 }; 00066 00067 unsigned char ftv2folderclosed_png[] = { 00068 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00069 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16, 00070 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00, 00071 0x12, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 00072 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x42, 00073 0xee, 0x40, 0xe1, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 00074 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 00075 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 00076 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 00077 0x47, 0x0e, 0x00, 0x00, 0x00, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 00078 0x8d, 0x8e, 0xc1, 0x0a, 0x84, 0x30, 0x10, 0x43, 0x23, 0x8c, 0x77, 0x0f, 00079 0xfb, 0x03, 0x42, 0xbd, 0x2b, 0xf8, 0x01, 0x65, 0x6d, 0xef, 0xa2, 0xcd, 00080 0xff, 0xff, 0x8a, 0x33, 0xad, 0xee, 0x5a, 0xf6, 0xb0, 0x06, 0xda, 0xf0, 00081 0x86, 0xa6, 0x13, 0x00, 0x88, 0x40, 0x03, 0x53, 0x02, 0x82, 0x9a, 0xd7, 00082 0x51, 0x42, 0x25, 0xae, 0x7a, 0x76, 0xa0, 0xed, 0xea, 0x79, 0x79, 0x17, 00083 0x49, 0x73, 0xe1, 0xf2, 0x32, 0x14, 0x8f, 0x5f, 0x49, 0xb9, 0xed, 0x23, 00084 0x60, 0x20, 0xcd, 0x36, 0x66, 0xe4, 0x40, 0x4b, 0xb4, 0xdb, 0xdb, 0xe5, 00085 0x16, 0xee, 0x16, 0x78, 0x20, 0xf9, 0x96, 0x15, 0x6d, 0xc2, 0x8b, 0xa2, 00086 0x6e, 0xf9, 0x50, 0x64, 0xa6, 0x70, 0xb6, 0x50, 0x0a, 0xd3, 0x78, 0x86, 00087 0x98, 0xa6, 0xde, 0x5d, 0x9d, 0x25, 0xcd, 0xfe, 0xdf, 0xc6, 0x03, 0xa0, 00088 0x13, 0x15, 0x98, 0x60, 0xbd, 0x81, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x49, 00089 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00090 }; 00091 00092 unsigned char ftv2folderopen_png[] = { 00093 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00094 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16, 00095 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00, 00096 0x15, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 00097 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 00098 0x00, 0x80, 0x92, 0x32, 0x8c, 0xe5, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 00099 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 00100 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 00101 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 00102 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x7c, 0x49, 0x44, 0x41, 00103 0x54, 0x78, 0xda, 0x85, 0x8d, 0x41, 0x0e, 0x82, 0x30, 0x10, 0x45, 0x5f, 00104 0x08, 0xf5, 0x1e, 0x2d, 0x53, 0xd6, 0xc6, 0x18, 0xd7, 0x8d, 0x18, 0xd7, 00105 0x06, 0xd2, 0x1e, 0xa0, 0xb1, 0xde, 0xff, 0x08, 0x3a, 0x20, 0x21, 0x10, 00106 0xa2, 0x6f, 0xf3, 0xfe, 0xff, 0x8b, 0x19, 0x80, 0x0a, 0x6a, 0x14, 0x81, 00107 0x3c, 0x06, 0x2a, 0x61, 0xc5, 0xd3, 0x43, 0x69, 0xc1, 0xb4, 0xab, 0xf9, 00108 0x70, 0xac, 0x83, 0xca, 0xbb, 0xfb, 0xa4, 0x8b, 0xae, 0x26, 0x46, 0xb6, 00109 0x4c, 0x0f, 0xe8, 0xc3, 0x18, 0xfa, 0xb3, 0x7d, 0xa8, 0x1a, 0xeb, 0x17, 00110 0xa5, 0x46, 0x54, 0x46, 0x4e, 0x2a, 0xe2, 0xce, 0x95, 0x3d, 0xba, 0xb0, 00111 0x64, 0x93, 0x85, 0x9b, 0x0b, 0x73, 0x71, 0x83, 0x75, 0xd7, 0xf2, 0xa7, 00112 0x90, 0xf2, 0x20, 0x9d, 0xfb, 0x16, 0xd2, 0xeb, 0x43, 0xf9, 0xfd, 0xf2, 00113 0x0d, 0xa4, 0x29, 0x14, 0xcb, 0xda, 0x47, 0xac, 0x44, 0x00, 0x00, 0x00, 00114 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00115 }; 00116 00117 unsigned char ftv2lastnode_png[] = { 00118 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00119 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00120 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00, 00121 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 00122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00125 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00, 00126 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 00127 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 00128 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 00129 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26, 00130 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 00131 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d, 00132 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72, 00133 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00, 00134 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30, 00135 0xc0, 0x4f, 0x0c, 0x03, 0x04, 0xc8, 0x33, 0x1e, 0x00, 0x24, 0xa7, 0x00, 00136 0x88, 0x10, 0xca, 0x33, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 00137 0x44, 0xae, 0x42, 0x60, 0x82 00138 }; 00139 00140 unsigned char ftv2link_png[] = { 00141 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00142 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16, 00143 0x04, 0x03, 0x00, 0x00, 0x01, 0x5f, 0x54, 0x71, 0x2d, 0x00, 0x00, 0x00, 00144 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x80, 0x00, 0xff, 00145 0xff, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x00, 0x80, 0x80, 0x80, 00146 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00148 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0x9b, 0x08, 0x00, 0x00, 0x00, 00149 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 00150 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 00151 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 00152 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26, 00153 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 00154 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d, 00155 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72, 00156 0x20, 0x32, 0x2e, 0x30, 0x19, 0x02, 0xd9, 0x09, 0xe5, 0x4a, 0x00, 0x00, 00157 0x00, 0x90, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x7d, 0x8c, 0xb1, 0x0a, 00158 0xc2, 0x30, 0x14, 0x45, 0x6f, 0x33, 0xb4, 0x63, 0x7e, 0xa1, 0x53, 0x57, 00159 0x8b, 0x7e, 0x80, 0x6e, 0xae, 0x16, 0x5a, 0xb2, 0xbe, 0x3a, 0x64, 0x35, 00160 0xb8, 0x64, 0xec, 0x2f, 0x07, 0x05, 0x1d, 0x9f, 0x79, 0x8d, 0x21, 0x50, 00161 0xd0, 0x03, 0xc9, 0xcd, 0xe1, 0xbe, 0x17, 0x00, 0xa8, 0x00, 0x82, 0xe0, 00162 0x81, 0x66, 0x7d, 0xc0, 0x9e, 0x51, 0x70, 0x40, 0x1d, 0xcf, 0xad, 0x07, 00163 0x18, 0x1b, 0x74, 0x90, 0xdb, 0x1c, 0x62, 0x0f, 0xe2, 0x20, 0xc1, 0xcc, 00164 0x61, 0x3b, 0x06, 0x6a, 0xbb, 0x14, 0x3b, 0xe9, 0x68, 0xba, 0xac, 0x51, 00165 0x9d, 0x24, 0xec, 0xdc, 0x4b, 0x68, 0xed, 0xd2, 0x5e, 0x1b, 0x7e, 0xfd, 00166 0x92, 0xa8, 0x6d, 0x84, 0xb2, 0x28, 0x28, 0x38, 0xca, 0xd2, 0x4c, 0x46, 00167 0x2d, 0x59, 0xcc, 0x38, 0x5c, 0x8b, 0xcc, 0xe3, 0xfe, 0x2b, 0x71, 0xfa, 00168 0x79, 0xbc, 0x67, 0x79, 0x85, 0x07, 0x54, 0x69, 0xde, 0xde, 0x2f, 0xf8, 00169 0xcf, 0x07, 0x71, 0x95, 0x2b, 0xa1, 0x10, 0x78, 0xd0, 0xff, 0x00, 0x00, 00170 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00171 }; 00172 00173 unsigned char ftv2mlastnode_png[] = { 00174 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00175 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00176 0x02, 0x03, 0x00, 0x00, 0x01, 0xc3, 0xc3, 0xc4, 0x79, 0x00, 0x00, 0x00, 00177 0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x00, 00178 0x00, 0x00, 0x3c, 0x5e, 0xbb, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 00179 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 00180 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 00181 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 00182 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x23, 0x49, 0x44, 0x41, 00183 0x54, 0x78, 0xda, 0x63, 0x60, 0x20, 0x0b, 0x08, 0x08, 0x20, 0x10, 0x0a, 00184 0x60, 0x84, 0x11, 0x8c, 0xa1, 0xa1, 0x20, 0x06, 0x90, 0xc9, 0xa8, 0xb5, 00185 0x50, 0x10, 0xca, 0x02, 0x89, 0x61, 0x01, 0x00, 0x6d, 0x17, 0x02, 0xba, 00186 0xc0, 0xdc, 0x69, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 00187 0xae, 0x42, 0x60, 0x82 00188 }; 00189 00190 unsigned char ftv2mnode_png[] = { 00191 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00192 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00193 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00, 00194 0x24, 0x50, 0x4c, 0x54, 0x45, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 00195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00197 0x00, 0x00, 0x80, 0x80, 0x80, 0x53, 0xbe, 0x1e, 0x99, 0x00, 0x00, 0x00, 00198 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 00199 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 00200 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 00201 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x2a, 00202 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xa0, 0x2e, 0xe0, 0x06, 00203 0x42, 0x74, 0x02, 0xa7, 0x52, 0x54, 0x06, 0xf7, 0x6e, 0x20, 0x80, 0xf1, 00204 0xc1, 0x62, 0xdc, 0x4c, 0x4a, 0x4a, 0xdc, 0xdc, 0xdc, 0xc8, 0x22, 0x30, 00205 0x35, 0x98, 0xda, 0xd1, 0x19, 0x00, 0xb7, 0x79, 0x07, 0x27, 0xaa, 0xf7, 00206 0x96, 0x03, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 00207 0x60, 0x82 00208 }; 00209 00210 unsigned char ftv2node_png[] = { 00211 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00212 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00213 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00, 00214 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 00215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00218 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00, 00219 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 00220 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 00221 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 00222 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26, 00223 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 00224 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d, 00225 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72, 00226 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00, 00227 0x00, 0x15, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30, 00228 0xc0, 0x4f, 0x0c, 0x03, 0x04, 0x88, 0x56, 0x8c, 0xc2, 0x00, 0x00, 0x2e, 00229 0x52, 0x00, 0xe2, 0xfa, 0x45, 0x3a, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x49, 00230 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00231 }; 00232 00233 unsigned char ftv2plastnode_png[] = { 00234 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00235 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00236 0x02, 0x03, 0x00, 0x00, 0x01, 0xc3, 0xc3, 0xc4, 0x79, 0x00, 0x00, 0x00, 00237 0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x00, 00238 0x00, 0x00, 0x3c, 0x5e, 0xbb, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x74, 0x52, 00239 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 0x00, 0x16, 0x74, 00240 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 00241 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 0x2e, 0x34, 0x2e, 00242 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x49, 0x44, 0x41, 00243 0x54, 0x78, 0xda, 0x63, 0x60, 0x20, 0x0b, 0x08, 0x08, 0x30, 0x08, 0x81, 00244 0x11, 0x90, 0x81, 0x02, 0x18, 0x61, 0x04, 0x63, 0x68, 0x28, 0x90, 0x60, 00245 0x02, 0x32, 0x19, 0xb5, 0x16, 0x0a, 0x42, 0x59, 0x20, 0x31, 0x2c, 0x00, 00246 0x00, 0x6e, 0xc1, 0x02, 0xc2, 0xe5, 0xed, 0x75, 0xa7, 0x00, 0x00, 0x00, 00247 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00248 }; 00249 00250 unsigned char ftv2pnode_png[] = { 00251 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00252 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00253 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00, 00254 0x24, 0x50, 0x4c, 0x54, 0x45, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 00255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00257 0x00, 0x00, 0x80, 0x80, 0x80, 0x53, 0xbe, 0x1e, 0x99, 0x00, 0x00, 0x00, 00258 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 00259 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 00260 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 00261 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x30, 00262 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xa0, 0x2e, 0xe0, 0x06, 00263 0x42, 0x06, 0x6e, 0x26, 0x38, 0x01, 0xe2, 0xe2, 0x54, 0x8a, 0xca, 0xe0, 00264 0xde, 0x0d, 0x04, 0x10, 0x3e, 0x13, 0x44, 0x8c, 0x9b, 0x49, 0x49, 0x89, 00265 0x9b, 0x9b, 0x1b, 0x59, 0x04, 0xa6, 0x06, 0x53, 0x3b, 0x3a, 0x03, 0x00, 00266 0xba, 0x6b, 0x07, 0x2f, 0xaa, 0xcb, 0x1f, 0x6f, 0x00, 0x00, 0x00, 0x00, 00267 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 00268 }; 00269 00270 unsigned char ftv2vertline_png[] = { 00271 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 00272 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 00273 0x04, 0x03, 0x00, 0x00, 0x01, 0x4c, 0x83, 0x31, 0xd9, 0x00, 0x00, 0x00, 00274 0x30, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 00275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00276 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 00278 0x00, 0x00, 0x80, 0x80, 0x80, 0x18, 0xd3, 0xa0, 0x90, 0x00, 0x00, 0x00, 00279 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 0x00, 0x00, 00280 0x00, 0x16, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 00281 0x72, 0x65, 0x00, 0x67, 0x69, 0x66, 0x32, 0x70, 0x6e, 0x67, 0x20, 0x32, 00282 0x2e, 0x34, 0x2e, 0x32, 0xa3, 0x5e, 0x47, 0x0e, 0x00, 0x00, 0x00, 0x26, 00283 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 00284 0x55, 0x6c, 0x65, 0x61, 0x64, 0x20, 0x47, 0x49, 0x46, 0x20, 0x53, 0x6d, 00285 0x61, 0x72, 0x74, 0x53, 0x61, 0x76, 0x65, 0x72, 0x20, 0x56, 0x65, 0x72, 00286 0x20, 0x32, 0x2e, 0x30, 0x69, 0x01, 0x6f, 0x3f, 0xcd, 0x06, 0x00, 0x00, 00287 0x00, 0x0f, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x18, 0x30, 00288 0xc0, 0x4f, 0x5b, 0x06, 0x00, 0x21, 0x14, 0x00, 0xa6, 0xe5, 0x3c, 0xe8, 00289 0x3a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 00290 0x82 00291 }; 00292 00293 00294 FTVImageInfo image_info[] = 00295 { 00296 { " ", "ftv2blank.png",ftv2blank_png,174,16,22 }, 00297 { "*", "ftv2doc.png",ftv2doc_png,255,24,22 }, 00298 { "+", "ftv2folderclosed.png",ftv2folderclosed_png,259,24,22 }, 00299 { "-", "ftv2folderopen.png",ftv2folderopen_png,261,24,22 }, 00300 { "\\", "ftv2lastnode.png",ftv2lastnode_png,233,16,22 }, 00301 { "-", "ftv2link.png",ftv2link_png,358,24,22 }, 00302 { "\\", "ftv2mlastnode.png",ftv2mlastnode_png,160,16,22 }, 00303 { "o", "ftv2mnode.png",ftv2mnode_png,194,16,22 }, 00304 { "o", "ftv2node.png",ftv2node_png,235,16,22 }, 00305 { "\\", "ftv2plastnode.png",ftv2plastnode_png,165,16,22 }, 00306 { "o", "ftv2pnode.png",ftv2pnode_png,200,16,22 }, 00307 { "|", "ftv2vertline.png",ftv2vertline_png,229,16,22 }, 00308 { 0,0,0,0,0,0 } 00309 }; 00310 00311 struct FTVNode 00312 { 00313 FTVNode(bool dir,const char *r,const char *f,const char *a,const char *n) 00314 : isLast(TRUE), isDir(dir),ref(r),file(f),anchor(a),name(n), 00315 parent(0) { children.setAutoDelete(TRUE); } 00316 bool isLast; 00317 bool isDir; 00318 QCString ref; 00319 QCString file; 00320 QCString anchor; 00321 QCString name; 00322 QList<FTVNode> children; 00323 FTVNode *parent; 00324 }; 00325 00326 00327 //---------------------------------------------------------------------------- 00328 00329 FTVHelp *FTVHelp::m_theInstance = 0; 00330 00335 FTVHelp::FTVHelp() 00336 { 00337 /* initial depth */ 00338 //m_dc = 0; 00339 //m_cf = 0; 00340 m_indentNodes = new QList<FTVNode>[MAX_INDENT]; 00341 m_indentNodes[0].setAutoDelete(TRUE); 00342 m_indent=0; 00343 } 00344 00345 FTVHelp::~FTVHelp() 00346 { 00347 delete[] m_indentNodes; 00348 } 00349 00350 #if 0 00351 00353 FTVHelp *FTVHelp::getInstance() 00354 { 00355 if (m_theInstance==0) m_theInstance = new FTVHelp; 00356 return m_theInstance; 00357 } 00358 #endif 00359 00363 void FTVHelp::initialize() 00364 { 00365 } 00366 00371 void FTVHelp::finalize() 00372 { 00373 generateTreeView(); 00374 generateTreeViewImages(); 00375 delete m_theInstance; 00376 m_theInstance=0; 00377 } 00378 00383 void FTVHelp::incContentsDepth() 00384 { 00385 //int i; for (i=0;i<m_dc+1;i++) m_cts << " "; 00386 m_indent++; 00387 ASSERT(m_indent<MAX_INDENT); 00388 //return m_indent; 00389 } 00390 00395 void FTVHelp::decContentsDepth() 00396 { 00397 //int i; for (i=0;i<m_dc;i++) m_cts << " "; 00398 00399 ASSERT(m_indent>0); 00400 if (m_indent>0) 00401 { 00402 m_indent--; 00403 QList<FTVNode> *nl = &m_indentNodes[m_indent]; 00404 FTVNode *parent = nl->getLast(); 00405 QList<FTVNode> *children = &m_indentNodes[m_indent+1]; 00406 while (!children->isEmpty()) 00407 { 00408 parent->children.append(children->take(0)); 00409 } 00410 } 00411 //return m_indent; 00412 } 00413 00421 void FTVHelp::addContentsItem(bool isDir, 00422 const char *name, 00423 const char *ref, 00424 const char *file, 00425 const char *anchor 00426 ) 00427 { 00428 QList<FTVNode> *nl = &m_indentNodes[m_indent]; 00429 FTVNode *newNode = new FTVNode(isDir,ref,file,anchor,name); 00430 if (!nl->isEmpty()) 00431 { 00432 nl->getLast()->isLast=FALSE; 00433 } 00434 nl->append(newNode); 00435 if (m_indent>0) 00436 { 00437 QList<FTVNode> *pnl = &m_indentNodes[m_indent-1]; 00438 newNode->parent = pnl->getLast(); 00439 } 00440 00441 } 00442 00443 static int folderId=1; 00444 00445 void FTVHelp::generateIndent(QTextStream &t, FTVNode *n,int level) 00446 { 00447 if (n->parent) 00448 { 00449 generateIndent(t,n->parent,level+1); 00450 } 00451 // from the root up to node n do... 00452 if (level==0) // item before a dir or document 00453 { 00454 if (n->isLast) 00455 { 00456 if (n->isDir) 00457 { 00458 t << "<img " << FTV_IMGATTRIBS(plastnode) << "onclick=\"toggleFolder('folder" << folderId << "', this)\"/>"; 00459 } 00460 else 00461 { 00462 t << "<img " << FTV_IMGATTRIBS(lastnode) << "/>"; 00463 } 00464 } 00465 else 00466 { 00467 if (n->isDir) 00468 { 00469 t << "<img " << FTV_IMGATTRIBS(pnode) << "onclick=\"toggleFolder('folder" << folderId << "', this)\"/>"; 00470 } 00471 else 00472 { 00473 t << "<img " << FTV_IMGATTRIBS(node) << "/>"; 00474 } 00475 } 00476 } 00477 else // item at another level 00478 { 00479 if (n->isLast) 00480 { 00481 t << "<img " << FTV_IMGATTRIBS(blank) << "/>"; 00482 } 00483 else 00484 { 00485 t << "<img " << FTV_IMGATTRIBS(vertline) << "/>"; 00486 } 00487 } 00488 } 00489 00490 void FTVHelp::generateLink(QTextStream &t,FTVNode *n) 00491 { 00492 QCString *dest; 00493 //printf("FTVHelp::generateLink(ref=%s,file=%s,anchor=%s\n", 00494 // n->ref.data(),n->file.data(),n->anchor.data()); 00495 if (n->file.isEmpty()) // no link 00496 { 00497 t << "<b>" << n->name << "</b>"; 00498 } 00499 else // link into other frame 00500 { 00501 if (!n->ref.isEmpty()) // link to entity imported via tag file 00502 { 00503 t << "<a class=\"elRef\" "; 00504 t << "doxygen=\"" << n->ref << ":"; 00505 if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/"; 00506 t << "\" "; 00507 } 00508 else // local link 00509 { 00510 t << "<a class=\"el\" "; 00511 } 00512 t << "href=\""; 00513 if (!n->ref.isEmpty()) 00514 { 00515 if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/"; 00516 } 00517 t << n->file << Doxygen::htmlFileExtension; 00518 if (!n->anchor.isEmpty()) t << "#" << n->anchor; 00519 t << "\" target=\"basefrm\">"; 00520 t << n->name; 00521 t << "</a>"; 00522 if (!n->ref.isEmpty()) 00523 { 00524 t << " [external]"; 00525 } 00526 } 00527 } 00528 00529 void FTVHelp::generateTree(QTextStream &t, const QList<FTVNode> &nl,int level) 00530 { 00531 QCString spaces; 00532 spaces.fill(' ',level*2+8); 00533 QListIterator<FTVNode> nli(nl); 00534 FTVNode *n; 00535 for (nli.toFirst();(n=nli.current());++nli) 00536 { 00537 t << spaces << "<p>"; 00538 generateIndent(t,n,0); 00539 if (n->isDir) 00540 { 00541 t << "<img " << FTV_IMGATTRIBS(folderclosed) << "onclick=\"toggleFolder('folder" << folderId << "', this)\"/>"; 00542 generateLink(t,n); 00543 t << "</p>\n"; 00544 t << spaces << "<div id=\"folder" << folderId << "\">\n"; 00545 folderId++; 00546 generateTree(t,n->children,level+1); 00547 t << spaces << "</div>\n"; 00548 } 00549 else 00550 { 00551 t << "<img " << FTV_IMGATTRIBS(doc) << "/>"; 00552 generateLink(t,n); 00553 t << "</p>\n"; 00554 } 00555 } 00556 } 00557 00558 void FTVHelp::generateTreeViewImages() 00559 { 00560 static bool done=FALSE; 00561 if (done) return; 00562 done=TRUE; 00563 00564 // Generate tree view images 00565 FTVImageInfo *p = image_info; 00566 while (p->name) 00567 { 00568 QCString fileName=Config_getString("HTML_OUTPUT")+"/"+p->name; 00569 QFile f(fileName); 00570 if (f.open(IO_WriteOnly)) 00571 { 00572 f.writeBlock((char *)p->data,p->len); 00573 } 00574 else 00575 { 00576 fprintf(stderr,"Warning: Cannot open file %s for writing\n",fileName.data()); 00577 } 00578 f.close(); 00579 p++; 00580 } 00581 } 00582 00583 void FTVHelp::generateTreeView() 00584 { 00585 // Generate alternative index.html as a frame 00586 QCString fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension; 00587 QFile f; 00588 f.setName(fileName); 00589 if (!f.open(IO_WriteOnly)) 00590 { 00591 err("Cannot open file %s for writing!\n",fileName.data()); 00592 return; 00593 } 00594 else 00595 { 00596 QTextStream t(&f); 00597 #if QT_VERSION >= 200 00598 t.setEncoding(QTextStream::UnicodeUTF8); 00599 #endif 00600 t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\">\n"; 00601 t << "<html><head>"; 00602 t << "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">\n"; 00603 t << "<title>"; 00604 if (Config_getString("PROJECT_NAME").isEmpty()) 00605 { 00606 t << "Doxygen Documentation"; 00607 } 00608 else 00609 { 00610 t << Config_getString("PROJECT_NAME"); 00611 } 00612 t << "</title></head>" << endl; 00613 t << "<frameset cols=\"" << Config_getInt("TREEVIEW_WIDTH") << ",*\">" << endl; 00614 t << " <frame src=\"tree" << Doxygen::htmlFileExtension << "\" name=\"treefrm\">" << endl; 00615 t << " <frame src=\"main" << Doxygen::htmlFileExtension << "\" name=\"basefrm\">" << endl; 00616 t << " <noframes>" << endl; 00617 t << " <a href=\"main" << Doxygen::htmlFileExtension << "\">Frames are disabled. Click here to go to the main page.</a>" << endl; 00618 t << " </noframes>" << endl; 00619 t << "</frameset>" << endl; 00620 t << "</html>" << endl; 00621 f.close(); 00622 } 00623 00624 // Generate tree view frame 00625 fileName=Config_getString("HTML_OUTPUT")+"/tree"+Doxygen::htmlFileExtension; 00626 f.setName(fileName); 00627 if (!f.open(IO_WriteOnly)) 00628 { 00629 err("Cannot open file %s for writing!\n",fileName.data()); 00630 return; 00631 } 00632 else 00633 { 00634 QTextStream t(&f); 00635 t.setEncoding(QTextStream::UnicodeUTF8); 00636 t << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"; 00637 t << " <head>\n"; 00638 t << " <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\" />\n"; 00639 t << " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n"; 00640 t << " <meta http-equiv=\"Content-Language\" content=\"en\" />\n"; 00641 t << " <link rel=\"stylesheet\" href=\""; 00642 QCString cssname=Config_getString("HTML_STYLESHEET"); 00643 if (cssname.isEmpty()) 00644 { 00645 t << "doxygen.css"; 00646 } 00647 else 00648 { 00649 QFileInfo cssfi(cssname); 00650 if (!cssfi.exists()) 00651 { 00652 err("Error: user specified HTML style sheet file does not exist!\n"); 00653 } 00654 t << cssfi.fileName(); 00655 } 00656 t << "\">" << endl; 00657 t << " <title>TreeView</title>\n"; 00658 t << " <script type=\"text/javascript\">\n"; 00659 t << " <!-- // Hide script from old browsers\n"; 00660 t << " \n"; 00661 00662 /* User has clicked on a node (folder or +/-) in the tree */ 00663 t << " function toggleFolder(id, imageNode) \n"; 00664 t << " {\n"; 00665 t << " var folder = document.getElementById(id);\n"; 00666 t << " var l = imageNode.src.length;\n"; 00667 /* If the user clicks on the book icon, we move left one image so 00668 * the code (below) will also adjust the '+' icon. 00669 */ 00670 t << " if (imageNode.src.substring(l-20,l)==\"" FTV_ICON_FILE(folderclosed) "\" || \n"; 00671 t << " imageNode.src.substring(l-18,l)==\"" FTV_ICON_FILE(folderopen) "\")\n"; 00672 t << " {\n"; 00673 t << " imageNode = imageNode.previousSibling;\n"; 00674 t << " l = imageNode.src.length;\n"; 00675 t << " }\n"; 00676 t << " if (folder == null) \n"; 00677 t << " {\n"; 00678 t << " } \n"; 00679 /* Node controls a open section, we need to close it */ 00680 t << " else if (folder.style.display == \"block\") \n"; 00681 t << " {\n"; 00682 t << " if (imageNode != null) \n"; 00683 t << " {\n"; 00684 t << " imageNode.nextSibling.src = \"" FTV_ICON_FILE(folderclosed) "\";\n"; 00685 t << " if (imageNode.src.substring(l-13,l) == \"" FTV_ICON_FILE(mnode) "\")\n"; 00686 t << " {\n"; 00687 t << " imageNode.src = \"" FTV_ICON_FILE(pnode) "\";\n"; 00688 t << " }\n"; 00689 t << " else if (imageNode.src.substring(l-17,l) == \"" FTV_ICON_FILE(mlastnode) "\")\n"; 00690 t << " {\n"; 00691 t << " imageNode.src = \"" FTV_ICON_FILE(plastnode) "\";\n"; 00692 t << " }\n"; 00693 t << " }\n"; 00694 t << " folder.style.display = \"none\";\n"; 00695 t << " } \n"; 00696 t << " else \n"; /* section is closed, we need to open it */ 00697 t << " {\n"; 00698 t << " if (imageNode != null) \n"; 00699 t << " {\n"; 00700 t << " imageNode.nextSibling.src = \"" FTV_ICON_FILE(folderopen) "\";\n"; 00701 t << " if (imageNode.src.substring(l-13,l) == \"" FTV_ICON_FILE(pnode) "\")\n"; 00702 t << " {\n"; 00703 t << " imageNode.src = \"" FTV_ICON_FILE(mnode) "\";\n"; 00704 t << " }\n"; 00705 t << " else if (imageNode.src.substring(l-17,l) == \"" FTV_ICON_FILE(plastnode) "\")\n"; 00706 t << " {\n"; 00707 t << " imageNode.src = \"" FTV_ICON_FILE(mlastnode) "\";\n"; 00708 t << " }\n"; 00709 t << " }\n"; 00710 t << " folder.style.display = \"block\";\n"; 00711 t << " }\n"; 00712 t << " }\n"; 00713 t << "\n"; 00714 t << " // End script hiding --> \n"; 00715 t << " </script>\n"; 00716 t << " </head>\n"; 00717 t << "\n"; 00718 t << " <body class=\"ftvtree\">\n"; 00719 t << " <div class=\"directory\">\n"; 00720 t << " <h3>"; 00721 QCString &projName = Config_getString("PROJECT_NAME"); 00722 if (projName.isEmpty()) 00723 { 00724 t << "Root"; 00725 } 00726 else 00727 { 00728 t << projName; 00729 } 00730 t << "</h3>\n"; 00731 t << " <div style=\"display: block;\">\n"; 00732 00733 generateTree(t,m_indentNodes[0],0); 00734 00735 t << " </div>\n"; 00736 t << " </div>\n"; 00737 t << " </body>\n"; 00738 t << "</html>\n"; 00739 } 00740 generateTreeViewImages(); 00741 00742 } 00743