ftvhelp.cpp

Go to the documentation of this file.
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   { "&nbsp;", "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 << "&nbsp;[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 



Generated on Mon Mar 31 10:58:38 2008 by  doxygen 1.5.1