qrfcview-0.62/0000755000100300011300000000000010456624534014740 5ustar RomainHomeGateway00000000000000qrfcview-0.62/images/0000755000100300011300000000000010456624533016204 5ustar RomainHomeGateway00000000000000qrfcview-0.62/images/rfcview_org.ico0000644000100300011300000001307610360761657021226 0ustar RomainHomeGateway00000000000000@@((@zIƖgcxGA.>"iD`Nekò&#g:IGe}xj۫"xR׷ʔtMqeཫcT\[Cqhg74VIU{{lT{h('Fy؈T$yxs|C|ZY庖zTwV&cc̠nѨzuvӬӷF>Wחj{zt&vdrY{WJZʄZ||u\UUs賊gWxwZSfӞw($tȷ֧iIıb[xxhwkwvuqkdfXg Aȩpƨ//PŒȫ\Nʧ]c{˼!!{̰ԁN" \b[u|ͱiiؾ q޴|zb]rrżqrW##L"歄rd^^nds}|zzuJDX[Mbjitm{Zv{jv-*Jݤy[B2CǸU k~J!!TtqhsqpAvpBKɝ"!Cie{.'Hzx1.R \ ?uxxx6R1f}x_!ߠ1D}ux_0/Vcuuuuuuuuuuuuuuuuuux_0\qVұx_0.&`x``````V```V`V`V`V`VVV`VVVVVVVV%0.& +eұ*kkkpkppppppppppppIIII30.& ""A ±k*x*xx*x*xxxxxxx!0.& ""]ukuO0.& ""]HxkuO0.& ""]kO0.& ""]Hxk*xxxx0.& ""]Hxk*xxxU0.& ""]Jxxkuuuuuuu***0.& ""]}xxuuuuuuuu*u*u*O0.& ""]HI}xx*xxxxx_0.& ""]H,I}xxx*xxxM!0.& ""]H,uI}xxu!/.& ""]H,u*}xu***x*xxxx \& ""]H7**}xuۏV111111RR-: ""]HU**}xR1DDxxxŇ7?+"]HLu*}xxRBłrR11Dk111V7\AH,*u***}xx`BV1-ˋVۇ`\H=U**}xxDBŇBXXuuXuXK V:ǬU쬬U**}xDB11XXXX-DkVDuu*u**u******}xއBRXXXXkV-:xxxx**p}xB1BQXXXX*XX*K#VVUUUU**pxx1DBXXXXXXXX*ֆ#V:VUUUU**p}xDBDCXXXXXXXXֆ##V`**u***********p}xBRtjXXXֆ##TVUUUUU**p}xrBB8ؽC#K#Cj-:`UU*xp}xRYؽj###x-xx**p}xBGYؽCCCP{##j-xx*xp}xVBbnBBRfRRRR RR111NjT:U^(^Rk*xp}x1Dn<~wwwwςwwww#wwwwϡx|wW*p}xǂ5b l l# lސl l瀞kxD1RЊZZZZLۂD$zh m9w @y )wwww|2= m2wwwwDtzl l ll l펥d) ۱l xD:(m s V' w ;i u m SW m2 S2= iۇVl  lul ZZx2m F lxV` ; Vm mwwwwD~l m) x )l u S SS FLےl x9l ñl )u 2 ;uwl S޾cwwwwwLwwwwwwwwwc~7ѥuח:::ۤqrfcview-0.62/images/print.png0000755000100300011300000000330410360705007020037 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAܲ{IDATXíWiLTWv!b%R EIVMlihŲF,aQH$d"BYD@@}S6 $ b _Ϲ1/޼{s=yT.;/##.Hӫ%.VGFެMLj/6A+WJۍ|IiZhoGsL ӈ=뗉P 2ǑmXyc8dq[+F:`~!,шKKB%3 -IJ9"g(jGͨ(-1' N t;Tcu`gĎ:6 Hiꀄj lJhjꀯ+25D. pR1qPzahhx! PPPxxxLnڴivmcc+,,Lr\|իWFGG?IݍJ68p`u9r$O&Щ`C&}666s 0ykk(TY{Um VOU;aB*y`---ɓ'x1=z$Z gSىDsqJRwL ;`&H0n޼) [n߿ P8K?jΕK WLvv(d???899رci!&&HIIUEp01ϒCbpubqyxz 233 Bt]QdHOOXzLM yu21 4%+Wؼy+a7oj);c!"bsDy㜫 {KxMOO 5ǏG̹*9]pT[\3gЎi8;wJXwMEɹ~P߷hM }D4C idP?xaKs$N:jd}...s myS1DFНq}\WWc˖-rvE `mm=+97-᫩ 'O%|h6_|͚5fff#‰Rw=eس dQ|ޓ˗&55K֒TY~Ajžu֕ڵkw@vx- ŋմJ[vrI4Eoŕ*"u%<@[[qmVVV-۶m=ZYGG|aBOOOU@N(Ή+Y+h ,(D;ʕ+V^@Yp7" 5򵤘 ",Sre~TJGcIENDB`qrfcview-0.62/images/save.png0000755000100300011300000000224310360705007017642 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<5IDATX͏TE{n@FM4DHČL\.M\kXÎč΂htA\ =`PQ` ^` QVR{:ԩz~6>>]vN5ػ」;v<:̗7XSڠkg|p?0x.ory #ӟd}k@E@xp,#˲m00aP|#%"+Օs΃* ,I Iw:琷Ղv+m(r8 㯼IkFؽ{k놮ZVmQg5 ,# /#&|#!Я'aa%% 4M:ólc V_)Fara-р: TIO4/!g iXvj#wPE x:Tx3x$wh6h߱R^DM_ 8ňKvRPZ0}@Ű&WU.2p}Ʉ-Jsf+7QW?תd~')Ü wl 55Y1{X0+WVU!ѐS,-޸Wj'WڣU<_o|w__sl}5ځ?MKFIENDB`qrfcview-0.62/images/open.png0000755000100300011300000000403110360705007017642 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXíW[Pgb/nٛκ;{z:vTpuֶT mQB!@Hs$!grB GTx~0X}g/>ߗ]v uH W*e`[ '3">vH~Y2ϭB9DQ臆={XSR,::NI1>I,`]YSMM4 1y`Ż?ū)LOϮ׼tCO3@{=.4W S2^5C`\&K|H$8As''H׻ "U77N,V>V:q,k,'6?F}oY1~ Z{?0L(CF&e-,!4{Z;~m$~CF=5iu?PZlY]/sq 1% cbjC'ݼ-Ӱ;3&SXO!,CPF BBsZ*tȼE lϛ'Ào%Q(/bM$"R-BySt < ] /yƪԳs LŔbK˫#7G<<b~/=/-:C(QNܿ}3i 3Th58 X\3>GelAC'b ER$nPD΋J~ m['Ѡe")(Ȑx5 >c f]KcNzI1N[;|%jJ0("3 t.| J*qQF@7 jH7'@L{RE qAAͷ]lC(N#KQWHoXQG `4QɫgA@?noiқ*/ru)S)+vQŕky8n3cjs@"mDžPt +4X$ |J8aVU;:!z/]&o8=cn*F׃H:381 ^QO`+] 9g=JUmCeS@%`+njǩD9|6ZZ8/95j'zLIdnFڍv9,9=NrG ;Fc9=pOJnX,P(@!F.[! o<<5iEX?7Ǎ: !p5U!4[7*4nI:rsm$Jesp)>|c.2*\"]~M 6tvw䈶"I m2JxLKIõ.|me6Y\Q{ %&6ǝՂ^NEXx]\UPuTA/ rjQCO-H/5z-Wxܯ\u˯Ev2g`§ҩ;P 9 /"mak^2/f_=IENDB`qrfcview-0.62/images/forward.png0000755000100300011300000000161410360705007020351 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXYHTQF`mYQI&FRPhPd"3.RRFOeA %eYRM3J9c i#40{;ܙs~{2*/"3.ͧV8H` loDt7lzrJΖ \U .5 }czbCVfU %&?ޅL61CH L@i*u 5s / @Qd#P.&{ , %xM;%&J+oMwh#MU7ݨ <$3J/1Gx pR 1;9@1O) \bMO"zXW}/PFpExI=jqO^MEN%-oL5O]08];1&s<8Dw}2v6\,;tlq%FsNÃiZ*$j=LWNQC^S;[fMڨ@Z k$``d$d psCmDIr-CZ{,˳8Μ.Q`k-w^;/ c#M;>r]$Hy(E|҂g6lN tчg{jztȓEq)}8OQ,I7[,ۦg~dŞacfMގsl p¼ B(ixA:'\b Zz/ڿqqd>7D"ͷ8 osju} }gRk$>%_,g=@~#W`;"`uf1Tnll [ 9yw3dzR1K_!BnY~ml qfu/8^Og>{{Ncqv}0\m{L4M=Ɯ1c(xJ^~׼^11#QEvJ GL6Ԇ V9O7ާ-fl1/>K|G~jw-GU%g/*(8-/ot/<`^jj/[ ݫDXՉC|N d[% @P3O"q|$sٱx 0: oƊ*#:>G+QSӨT'LBinv8~"*Ąa߾Bh4%1YDw;ϟXXCZg\}ݠSG7J~ )ϼ܎eʯ]t%pQ6lߦK 2(D^ YCA0%'ǁW0]ܜ96,T hc4\KAln^yxLYogg81hHYw!\ՋH_m!$|ذd.ޥ3`}͎?(`9Xsof'Bx{\_HtO())XS$YQc,F8ɓg"aLDQ껵$va|?FԄiHxp3&H1u,t,-E Sf0q2CCq|HIq`[ېÓSx,`[Ge OwڕCد @ˣ^w+޿Z=RW= A@%xlB*85t eE`Оf#,(ZS\|f$Ѱ2r>Yh"n tur L")Z;i!D2+]hii vB"ܘo9:v|Ғbsv\H<%?>eTMfkS΅9X!&QoXD4/6Kj6X)#*'VҾ*ZZ0^BETK=~ |JLxo@c__(nHuwjksQ^ j[6M9”T~GJJ q$Ҽ{L3tբ  cEW`8*ߺ~ UL*A3pjԾ?ŋljlnjLQt"+=~}}G_$Y6WNEh8iƐ=BQnX%YnC͗$*8>=*"!hZ_!My_EܹГ YO@9Ml!s<\[Ĕ12{NP#y;+,,>A-#ecYy)3AZ`:b!R vRrcP"@,Z_Ce"l+_#_pLzF6{l#YŜGTf2ueLX谜~}u?$dkL[@T.9\wA%8ABq.#i ҺO0߭&rN ]?*mM FzX'!!) Sx=je,e bUzz-'ӈREF' :J1b>]\X^% 2nen#MFl#[]BS+FJz֘3]*ɂ(:oȹ-?@{{A. kCDPhiU;Z9ON3vw;nq&,,.JWpX#&eJ88.d%2LaǏ]؊46 JxGHj| ̩wY 8b2'(O-5Ad̚zf2֫4dGiFcef Vdorƹ$zFñcP{ 0<0ii2켩 'h*$c55B4P飱o_Ӊ } !11qTN=#혀{3Vm ld\Xoo?DŽ'l%wޜpyLDrά -^֌rp,TzL~"Tj(Va„T~R ƧJfЁj0C5R$9G=OOQ_G+VZA!8=}ƔYu:C6[6@||ʞwvv+aΓ- Dz<JvWYyYYx sg8uj+{99iOO%fRZno190+`2 #M[255{S,d dD0C8Ξ(UP{{y<99Jcػ;vQI!;scܚǀ@,S>1Y^L +2,dk][sstef澭ղ"ʂ ]^Ul B%kaJ%'-2TQ51@h޽ 1.oT2r22Pۉ!9Mzp+NV^cǶʿ0ih"{驦EEgwZ{$;84Ȝ ֙k${@_”0čR0xC6C{hvҍL=up]F_ԎsCUuV3 f$vz 0sct2f'=+;VAwS}e7AiR#+o o""RA8@sqĻOaϗ[nQ=$@I|7AyV88{ |}޹3=7s s0ߢL3|{%s{gD v1_8_?.-\w׫n-^&ET&$l0YB'rw'J,QٳR"[eoF[KO-X-!Q􁔮t7#7^57*X(:Ranm>H17Pqg}Mwwz;Z/v\1`GG+ɞ};`lS5GQ$ܙ!8gfYFRx^`bba_ 72FdRgaq3lzuI\7c{KsL??C,}e/1Eo4"z{;:R]k{ c6sw"[Vo #ʜ4EЕ`_Z&SkH|6eOMj؟7ZfF0G޲7¡h+nSj;8m@wg yp> ѿng%' Z]#nګ 9_ L',4a 6G^khց` 5EURc|Q̖N}ZEs55;_yURRoWWoZǩ5l-1HP7.=K[ 6 }_+sb5m$Yjj45Tg2@jp;3gx&jFj}?p r^_r|_-wUHIENDB`qrfcview-0.62/images/close.png0000755000100300011300000000150110360705007020005 0ustar RomainHomeGateway00000000000000PNG  IHDRĴl;gAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATH}KhSAo$BuQP㮵 %]Uka"tܨ JAETtXk5*Zl+VK<Fi@ѦK6zJktxD֠eI;5)m\޺x&7N׹¢i1ɺLr`_kh7=BbiIENDB`qrfcview-0.62/images/app.ico0000644000100300011300000004107610360712073017457 0ustar RomainHomeGateway00000000000000@@ (B(@ B  '/360 >m5WU77]>>V;;#mI,FzRV]c{zzzzddR>>L$FzUq`òzzI;;8FzU"(iyy? %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+EyU"CeAr=z]]EeLLpZDD}YCC~YBB~XAA~XAA~X@@~X@@~W??~V>>~V>>~V==~V<<~U<<~U;;~U;;~T::~T99~T99~T88~S77~S66~S66~R55~R55~R44~R33~Q33~Q22~P11~P00~BsU"Ce[|;vv%~~}}||{{zzyyxxvvttssrrqqoonnmmkkjjiihhggeeddccaaIU{U"CeCCz6Dз[rU"CeG"DnU"CeGYN DnU"CeGYN DnU"CeGYN DeU"CeGTS Dּ]vU"CeG" ?`oDfU"CeG"iyLDnU"CeG)ccLD_zU"CeG)̩ddLDR"CeG)̫eeLDVq"CeG)̫ggLIiYe!d(eG&̫hhL~ii_mmeeggiijjmmooqq^^#oAG&ʧոͬiiL !J66mxZZӀ^^``jj}}vvyyð¬__$y[H)ͬkkL8((GrSS~\\aa{{vvtthhjjvvͽ°~~~~hhjjhh'CH)ͭmmL[BB{XX~\\zzuucchgϿxxƵͿssyytt~"&̬̩ʧɥԵͭnnLmMM|YYeeuu~\\zsϸ¬IJzz˰ԹHϰ̬ͮ˩ʧԷͮppLmMM|YYoo``hdƧ̱ƶ̽ͮqqL mLL|YYnn||\\zmѫ߿̱İήssLaDDe{WWjj{{|WWs֨zڲֹ̰ŬIJԹӷѵвΰ̬ͮ˩ʧɤӵίttL@--zVVcc~[[jӝk٧xܲབʮٻӲè̼ʳؿ׼׻ֹշίuuLrQQ|YYcco_Б]לhڦtܮ໓ǬۻճίxxLW>>-|YYoott`[ɆUӏXיd٢p۪{߷ŧػӳ̫ţЬîؽ׻ֺոԶӵΰyyLtSS}ZZ\\wV́GՍSז`ٞjڧt߲¤ٻ׺Ѳ̬ţ뵏Ѹѷеϲΰ̫ͮ˩ʦɤӳΰzzLV>>|YYppxxd[x>рCՊOבZؙd٠nޮ濞շ޿ظӱͫǣ›ޱϱ||LoPPZ~[[aanOp2|>ԅH֍Sה\ؚfݨz滙аݽظԱάɤÝŲϱ}}LxWW]]~[[m7m,x7ӀBՇK֎Uו_ܢs巓̩ݿڼ׹ԵϯʨĢᅳ첌뭄|tΨеϲΰ̫ͮ˨ʦɤǢѱϱ~~L{ZZԍnnfZ` i&s0{:ԁDՇN֎Vܝk岎ƣ۹޼߽ۻۼۼۼںظֶӱϭ̨Ƣ›﯅}tۦǷӼؽ׻ֺոԶӳڿϲL]]~~vveNZdm*t3{<ԂEՇMۖd宇œֱصڸݺ޻޼޼޻ݺڸصֱӭΨʣŜyꩃϲL__ppdIT_h"n+t4{<ԁDّ[䩀ЩӭӮΩΫΫΩ̨˧ɤơÝ~zi˶ؿ׼ֺոԷӵӳбؼгL``rriBQ Yah#m*s3y9ֈQzʢ̥̥ŠŠŠŠÝ›ﱈŽÌ~hǰϲί̫ͭ˨ʦǤǢагLccttj>Q U [`f!i(m.ܓ[﵅ēΝСѣ΢͢ʡŝĜÛ×ŗΜΚ˗ǒĎkѿеLddvviMQ T U Wr0fǐ̙Нգצ٩ڬۭݮޯۭثۭۭګاեӡϝ͙ɔŏŠrѶLffmQP R bhƐʖϝԣب۬ݯްޱݯڬبեѡΜ˗ǒÍk±˳г̫ͮʨʦǤƢŠϯѶLeeҘ||qdO J~ƏɕΚӣبݮ߲ݮ٫֦ӢΜ˘ǒz̽ñϷѶϲ̭̫ʨɥǤƢаѷLggookkB}ďɕ̚Ҡקۮۭ߱بդОŽ֬ijӷLhhbmmrrlG{ÎȔ̙ўԤڭۭרդɳӸLkknnxjbŒǑ˘ѝԣت߲ް٫ب䯏ʻŵ͵LoovvǸrrzNďʖΜӡרܮްƔ̳ƶλпϼϻϺ͸̶̶˵˵˳ʲ@ooAss{qk̙ҟ֥߲۫㲖˼ƶİ$ss||~~hőԢةݯʶǷѹqZZN rr!xx||ȍlϞܬ߳ЦϳƷq\\N xxr{{ʺɑo֧Ӭϲ˻p]]O ||˼ͿΝۭͭϲʺ˻©m[[R Нĝཫɳʺ˻ëqqpƠϮƱʰɹʺ˻ì||}ֱĭ̱±ѯĮ˻ŵĮ~~}A৏ʹñɹů¨}aᬔǸǸƷŰưë}DõƲDzĭ}DdzʵŰ}DǵdzƲ}Aɷǵ{Ϳ̼̽˻˺ʸm qrfcview-0.62/images/copy.png0000755000100300011300000000247310360705007017663 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXõ]L[ewoI q&NpхDP+.&J'E2 s.5,0LAV=P]G[JK+P nqFp'>y??I$B L9Ol͟-(9kp0hF뱌I oܜG;662afxFdLRX %ܡ? H}M|!E4V"bbbQ EPP:;3].q3{Μ}9#qbC{U6k4M{ xA@DFpslKs22я5~nHtLKprZ,p2TUñbYȖ|n{ hxl-0HA‶W b`DFl~`_R Hnw^B88Ck8p  >QnLo8FtfWbDhjj FSN5gua,<|` C!lΒ]SPFR222B+emqbI ci6lLCXQ1 u4ay-|(F|W2 EQI ޽[,D X/M-4BM'pq&2>xEX0pߏT#K(~'1KV$*<4'Rs$χ,nGCC#qֶ}.$@tRp!H Mx;Pq'aIF$ 5Џގ-[ ''h5߿vߋ/BȸnF%,N0fǛDk,bO"pk2֊*htkM6eOKK3$F-IV烐|;!8Ud1'(i.HME Dsoo Lx H[ @KKKłhܘF#YG_| #g-J:04B c3;țGiϴf.2M frr0vx׆I-k>CV>0 fHJܰ\vX,4QgEQ5͉ٹy鐂 эV(+BYGtL͟3%ZBo{n4 ^qXq.9R"B)" ($pA<4m ?W͡) O+1Ϣؐaz(dE[5M[xu LįFoB`#_z0$$7iJpwK\93?|nƎwa[QQ6:u0~;ʜhDƮرeAVD}OZݐ0bA Q .K)B !Pf iky77^-\pvv~d /b=Q#t:.ŕu/mRt0[Mǚta@h4NAZo@@N:aT3' zB4hv[ZZ$h (|LLLD"={p7ۏ)Cˋaا#%j3.K7hRk2hF1u]jkkΟ?414\Ak>yd ɑdpx?A.UtrIENDB`qrfcview-0.62/images/backward.png0000755000100300011300000000161710360705007020466 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<!IDATX[HSq%>t.) QFDz L vv6 BzAԃՋ%t#PR&y)'2Sihyp>įѡS6O;4r68;3 S(/Er/].v'ֻ#!cQXR4<3lxv*A6xT`lLl 'é& Ko\}^CqE&+2? f~ =+0/*u YeAs˽o"X̏_O[:0RnmF֬J`^{ +pJ%&6pM`HeJg\u5/u75iIENDB`qrfcview-0.62/images/babe.ico0000644000100300011300000003107610360761657017603 0ustar RomainHomeGateway00000000000000@@(2(@0H"ɅQiiiiȉET*wD)r='@)2m:&kA7N#Z*zB%Y)|<͊Cbc͋Fa0{G)o9&i4%b0 M/mwS3/2/(ĿS.HܚUfhfɉEY-J*{F)4'1g\sF6O%`,K)t8͉?ߥQhhަWb0yC(l5%k4$h6$lEosy@!6/кX)r8͎M^c֑MvAa4D.i;/2 h^dg7%Z'|C&v<ʏVٙZehhYe2{G)q<&m6%xB)eywVLE:2)]/e7\|FЏMegg[m3P+vC({E'{iymSQA7M9AL:GU@RIGYIYyGdKi>h8[1Qp2Tu<@N[H\,n9&N+W-j4ł>ޞXe`ɈDh3O+N+Y,tͽyceJ$@$&QlqonhSBn9g6b(D^d6)Z*n7%t?'wC(S,m5ˊH֕K=i2R,wC(wB(zB%k^{s`cJ$N/-Qjs{}n^Lx:g8e9a`_myU(S(b/k4$m6%K*c1t7~;a.U,wA(m6%l6%u>'fRTkuaGV0)Q+'Q-*}~aj}o䂼}mQ@l9g?l,:QϑdžJ!R#Y*c0"k4#uA(W,h2g2R)wD)p;&n8%t@'V8ghprbdo=(Q,)O18gQ[_{u]Ht:g9g8Zyspyԗς5Ϗ@HP#W)c1%p:&Q+`.[-O+wD)wD)uA({E)z`UgikfqvC,b80`40Q=F̭olPKO_wx|iO@k!j09f.=q3/{R=kA4F1E+7NSfv愺ﴴ͑y5ɅM(0:LW,$p<(K*V+U+^.Y-{E)s<'wTFh^`__P7nYA?W4J*i(pp䗞M`w/=V&=[+Ik,Km-T{;W~\/?l+4{hg4r/-}$0)+ːy5={LJJ&(IP#a0#K*L+X-Y-R,J*I*L-rejghca]R?lYQ^N+W,|:I !E^}+X1[+Z-^5j9uBIsFY`0>YSbU8-;x#&'ёu5=|ƇzOsmC]P&$J!O'p>)G)V,^-Y-~H*yE)|F)[>cizhpmsgqwwjll`gy\UQP+S+}5R8`CHJOS^]Uneb4:Ǐ]^Q4z!&]c)Ӕy5=~njzeMs|ғY-4R&X,#o:%}F)].Z-M+xE)vD*vREzjqQvFuN^iVRU{R?S)U,=W A\Uklvwt|xro@FєXˋIoTXy8.ь5=ȍpxˉLʅe7;c3&zA'j7NjJÄAe2yD)r>(kPJxbczn1c=yhh_qvbzP/\.Lm! JLrj耻u6;Z9`#J(.\$O!9&ςˆ꣙̼ˊLʄq<4N+p:w·y;L+vK9t`amiv}Ev?qhheimOM`.Nk JFgrlo- ^(!e)/W"#m9"Љ=9dђˆL{ޅQWY.LJFqȄ@fHn[\q_cPBvnmfއ}]q]+E\ Ra~yN{vX`tVYe+4N Ҏ=ϒ'%%uޔ[W{F)_1ĄEڠP‚AsQmkiatvߧOGzpni]W+x<B`fRgg+#4Ҏ#΃՘뵞ŗ͉5wyFSg6$a1`.o<{Xukfdiaq:zEkllwyTvE6Z)/!|ՅLqd219ђғЕv!n'gɍlCIU K r3tB-p[[ybay^ZfY؟zS)lNkflwxjM=,3B !#3ޑ]o|QғmqE'ђ'gˌ掁XM;CN N a94qZ[zsc]U:{_4u4v\kece`V/g++1".&*Jq\r3)ԕ%9ғE7rˎ菋QIuyh\L A#-C5G[JU{REW5sr~mX7y%hD]i][WQ:{5IT24a,\0(n_K1s `AUb\[PJ:|V + 7y,nX"J $KR|]N|HA΋{yƘˈEj`B/7G5FG+5H=#?u7s%g+mCPRLA8z/o%f? #YgI|CrTXH4u3t5w8{3uQ M$Dv7q*Vym{rJwIw9b֚ЇE-o͎;`0A\3JiOoNx>d=eF1r1r:z>3sJE7\8kExItnYrhAo5`M֚ЇE-ǒdCCYBMhDj8],Q|/W?fPz6Y5XBuP`P%X[%S-Q5`)ClHtP}Q|xhDo2c,V֚ЇE-mˌ`77O!5Q,?\66M6;P5TvFw9eN}5_?g4Qv@fR`X!SJ$N*P:c"=l8bBoXjPV؟R)sБ簋^VjA##+!(?3Z~4HdLlah__١7=lTt%=` 8Y=`ZJXo5JjWZYRGtX:`+=e3JuiCn:XzxgOu剻r]Pt(De$?WZiғЊҐ!Tȅo9Q&s9V M= &   /":(@);S2HdAWs7Yy<\y@Vw;Ll0[(i2b/O'o1`& T Y PS O NMW ^% W `' V ^ ]<ܪ֚krIM!JKQ+ςoLғғEю}D#O$Z*H#l/a' X Z# MGMLKFGL _)X7ܭٰ֫Ҫ˟•t®hBQ$u6rDҎґғ1}՘bHx<v9k/d' Y C4 06 9 : Ho8"i?ԙm֭ܳר[BvcҒҎԖҒߝNV XK C J OW#n2F#c3tB͌UꮁƠԬթ՘1Ҏ`V^&  G^)_&Y c$E[)uEɌWꮁÝܴΣδf)_ғKAL    ; O O}8c0wDϐYꯃȢٰˠͼԖ`T}ҒsoZ'e+ ^% PT]\NtCؚ^뱇şٰܳÞޮT*Dz8 b! Qh) u4]+͍V뱄ΧܳݴݴխƧxH<g( a?N|EĞխԬխİΙs^}@Rr5d.V)חd̤ˣٶऋP=L'u1{IƘr{dW8@0????  >?qrfcview-0.62/images/find.png0000755000100300011300000000373310360705007017631 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<mIDATXõ[lT}Ι/=vڐ# m!$D&%Q>U[UK[m 5M\J rCC63syYk5|Q֧2XF~ZSk20 *po_jxO/OUJZkcEr҂4MjVZ~u<}[|Fkt]~-E AP`Z9?+]'6{s#O"bkgzq)Nw4!:IS@>-HZ~CeE>3C$p2=ru? 8̑1 Mey1]CߍFG'9q/Dh`+#"]j״@񞋄pjWc i$R;vo5}z3|'O~FΈ!a}aAjIg^Q~d +A"رv(++ټysݓO>YiӦ|̙3Q =, OuuV "ƅ+WHji;wۍvQ* mP"aBkTK&bS|r3*5 v0WGYe՘>QcSigsO_~g;Hj);<4J)X@lF][)[YG~rR$?S4M}cm۶8q@7cA-ӟ_"t:MotZ6Q\]E0TFnͲ ^4---@P hP`hhJ,#b0Rs=øeYD"P4hQ ~nD0L#">R_tww<0hRh!R04ԇPk,z\G6T]2b-XPvRFfeq,̙sj6Vё.={Bj7w(N:M4F9+W;w܂b;~A^||IRN,D6d2A۶}x1HZDk膴]vm bB 4st|xܕN8n*鍗  tqs->c~j2D@ĵ֮`ALK!b`Xb1qzT 7;dk(0)05;jF2Y k!y![@!Cn#wIH~ xۋҜ o;f냧GTw cil5!7yv$`hMy_j{K`Tw L]3[֮LMj-WƜX{.j/JEVVOz?:Xݎρ,J 30IENDB`qrfcview-0.62/images/new.png0000755000100300011300000000152410360705007017476 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATX՗Na5{q\\0&bXX ѝRHECey{QJ!Iޜ3MN"SsՐn==d 12<S(CfIkR׾TUNK޷’=Oޣqnl4kZS YoK|mu5e<7ɺx&oFh?B~Ql% wIENDB`qrfcview-0.62/images/babe.png0000644000100300011300000001612010360761657017606 0ustar RomainHomeGateway00000000000000PNG  IHDR@@% /tEXtCreation Timemar. 10 janv. 2006 17:26:31 +0100^ZtIME  g ! pHYs  ~gAMA aIDATxz]y=zyoz!gȡ8Dڱ%+6Z81@ Xv.-+V$QMlXgHΰL}z=M)*Y`/.{; |ވX}aۡ],;d=WFBRv'?u7p'9w3ww[Ϝz3m%NA=Yc÷G|~;bXղk֭N'4M,Ǝbw/>q WwCfUn_Liڊ씊 INQYh ɩ[kx[<"UFr<ώ;#o&% @ DVFq 3t p}rŜܓ?)pT7'Qڬ3ؗW$l=N;@v{0f8.8ek8v,`bhT4q\cߗ? jfؘ]9TDW_sj>'w NsD8F!Ёg{mA( @xO<%i~_7'M yҋ?]CHزQ%)d*EϸDd%Y ̪a9Ol ן#^2w=G%b'k{ o{/;qLvjUv<VX!h*w|cUSaq?#@hPQĿ<~Kۏcn (vG8?~JL V,om|Ss`{_~'vZEp1%i7 {Lan̞M|O8D^V?/`RG%&)h߬aʵC릱Q_0Ay{atDD#6v|8NQ9;O0a(Иm"M?p?p$V8yv.A#qhwM`plSh.x􋫬 X.eXd tIi"<6 "`;A!c[h:+۷n]5woZ&M@_wlbhLj휄P%$<<3`@q+>sTwf9lQtmNdR!t4ʇE6 )KE]lV+_F3L=8Ѓc̺6 m Rd+XO7cѽ/à+cS'g)'$[( (Y2]$e-7ˍj觷QɗJ":9s~trhO2ξ50k"&j(vɟW$iGD001ܙI-!(oDÜ|6" 7&qB4QN,>id$OPgEß+v!m(p~7Z*ɪ,~|]Z!Lu%]XI%y|{azd0Jt5sل@Q,M=y_` Q!s[E!0V ǧJAA ]yHӸ,;tHP #;@GN.J{3bdDŽ Bt`?0kZEhq qwJM1f[!Lx;WS$%$AK@Z89 AtW8|wmm8&C.ʥZHckjuӯv2(aM` P_ĽU|a$;㩎x2ӻ\A1,CvpN\>lk֦EαƜ}si0(Sg%ߔ9ܶ"1P|I.5xnJeĦGM=SALN!¢ԕh+_3g%_(f-tA#WxS8&PT"8$Ԓ=&)_S*YyS0'D0,BD_9["7 m{^ ӶQpn5m#{$tm}r eGl8$(9]/pg||59@_~j߻tx Yn&G`YQ<^mI (ϐ$DC]d ~zuar(.[2?`3&yoۥ1hjZ@#naź虾x$JwD=_}O 9<IJv +7io{0m݃4ҐF7ks&S$T{z4*KUf:^H !FBBU@OGXY&J1 fV "Dsq3Y#a}Ơ.ZC#qH,Hxf\ϩj*HR@ 1䋵jQ P(NOް]!Pu=\Drw3#C#|S0ӗ`xxc\(TΟhԓ=ݡ]4q$Hm Rٜ"ERg(;嫽X0 \_9.M/) @n7JEVXA(=+8fsѸFw׋T ?Wo @4EƑ:7^`ܲb#Nz98v{vq 0.Hu{[ˣ!8Gx61]up_CȦ3?~~\zE:bo1A po"&C1󒃃#|.L `B>tl`Ð({]nJ64;g>{ sO/sNm?daH=^! %Alq۽Op @t^F!hG|5fBx盶^PctM6;Hp<幐@9u}nB8lȄGgG0a%0+@&֏vzK4voӷ+t8yK|̧?8>957qlК_ThJekۮTQ$.uI1 f@R3 o}in}"bj`8APy8: A{^AnuTtnHG0~V +wOεh2]$x,5Mά_?l%+fǚ> zgZnު7Za;ZnoO!,cח8 @)I!@pC|qKy(69 0Ȭ14֮Ն`>M۶10=Ct|ITM4=zפ =2$ F3d(@@N$qG#Q{bbױ;fkOn|/}`:H}"z oRM+L=$ _e$dBl_w6 L: FÐhwbQqM,ފ/g|P_b$·4*=QBçJk|˯?O77$73Lԝ,ϖPyz9S >|9gSU&q2 +z ,  `ӳ_=_m*[N 6>h'J$W,Эb6w3".I$C u/ eϴ}Ks1^޽$ H`[xoe[Tk!ȌEɌq_LCr(#al|pP=U/-L.媹R\s=#g+ͅ]I"8[{d,`b(_jǮat@T!97ނg0r+w冔[ ^RR@cYlKh$ }a]G xӓIENDB`qrfcview-0.62/images/rfcview.ico0000644000100300011300000005355610360761657020366 0ustar RomainHomeGateway00000000000000@@ (B6  ^B hS(@ B  '/360 >m5WU77]>>V;;#mI,FzRV]c{zzzzddR>>L$FzUq`òzzI;;8FzU"(iyy? %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+EyU"CeAr=z]]EeLLpZDD}YCC~YBB~XAA~XAA~X@@~X@@~W??~V>>~V>>~V==~V<<~U<<~U;;~U;;~T::~T99~T99~T88~S77~S66~S66~R55~R55~R44~R33~Q33~Q22~P11~P00~BsU"Ce[|;vv%~~}}||{{zzyyxxvvttssrrqqoonnmmkkjjiihhggeeddccaaIU{U"CeCCz6Dз[rU"CeG"DnU"CeGYN DnU"CeGYN DnU"CeGYN DeU"CeGTS Dּ]vU"CeG" ?`oDfU"CeG"iyLDnU"CeG)ccLD_zU"CeG)̩ddLDR"CeG)̫eeLDVq"CeG)̫ggLIiYe!d(eG&̫hhL~ii_mmeeggiijjmmooqq^^#oAG&ʧոͬiiL !J66mxZZӀ^^``jj}}vvyyð¬__$y[H)ͬkkL8((GrSS~\\aa{{vvtthhjjvvͽ°~~~~hhjjhh'CH)ͭmmL[BB{XX~\\zzuucchgϿxxƵͿssyytt~"&̬̩ʧɥԵͭnnLmMM|YYeeuu~\\zsϸ¬IJzz˰ԹHϰ̬ͮ˩ʧԷͮppLmMM|YYoo``hdƧ̱ƶ̽ͮqqL mLL|YYnn||\\zmѫ߿̱İήssLaDDe{WWjj{{|WWs֨zڲֹ̰ŬIJԹӷѵвΰ̬ͮ˩ʧɤӵίttL@--zVVcc~[[jӝk٧xܲབʮٻӲè̼ʳؿ׼׻ֹշίuuLrQQ|YYcco_Б]לhڦtܮ໓ǬۻճίxxLW>>-|YYoott`[ɆUӏXיd٢p۪{߷ŧػӳ̫ţЬîؽ׻ֺոԶӵΰyyLtSS}ZZ\\wV́GՍSז`ٞjڧt߲¤ٻ׺Ѳ̬ţ뵏Ѹѷеϲΰ̫ͮ˩ʦɤӳΰzzLV>>|YYppxxd[x>рCՊOבZؙd٠nޮ濞շ޿ظӱͫǣ›ޱϱ||LoPPZ~[[aanOp2|>ԅH֍Sה\ؚfݨz滙аݽظԱάɤÝŲϱ}}LxWW]]~[[m7ҖgW|ZY|ZYzb]zb]zb]zb]ɝuv|uvuvuvuvıuvuvkwhghghg̠賊歄wwӬӷͱ|vdrcT\vdruvͱͱxw{ZZԍnnfZ` \NIq[MbxxKqb[u׷}Kq[Mb歄rw۫òȫIGe:iqq[:F>Wͱxw]]~~vveNZʄZ: ?۫B ?׷ƨ ? AŒr歄1.RBb[uȫ__ppdIT؈TB2C[zF>W \ʧF>Wih{{hȫtm{ii.'Hxw``rriBQ ؈T`N&#gWJZt($t[Mbxx&#gcT\{kF>W.'Hccttj>Q ؈TʄZ: ?庖::賊: ?ŒŒkòIGe qF>W74V ktZSfddvviMQ ԁN؈TA.>&#gJDX[֧JDX&#gzŒŒròqhs ?: .ffmQP ԁN؈Tu\&#g[Mbz($tWJZ&#gWJZƖŒhòK74VȫfXgty1eeҘ||qdO h{賊::Ѩ::׷֧B ?ƖŒz˼:::81ggookkBŒWJZ&#gJDXT[Mb qzŒӬòIGe kIGeP1ChhbmmrrlG{ŒŒt&#gWJZ|qhs&#gWJZ{ͱ \IGe kCkknnxjwŒƖƖ::JDX qZSfB AfXggcx{zb[uqk::B41 oovvǸrrʄZŒƖ֧cT\ \fXgT74Vi}ͱ}ndsfXgcT\ie{-11'ooAssxwwƖ֧z&#gq:F>W&#gF>W{jv[74Vss||}hƖ֧֧:T//Pı ?:::ӷrr!xx˼}ʔtʧ֧fXg('Fb[u kUUstuvjivu{zEEE17xxr{{Ǹʔt֧" \:('F!!{xs|ȷ&#gi74V \74VBp=||xx˼Ӟw֧"!C:ż:B ?:qpvpfXg:B:61НfU] qZSf kཫ[Mb kȫjiu0g9k1gnv" \IGe \F>W˼&#g74VȫB=1[W> A:ıBB"!C:ie{b[uvu{z{z74VK1O166A৏gcxy-*J:KǸie{[C9C6<1a|[[&#g//Pȫ;6PSH13D A!!T('F:9b51Dvu74Vy168?4mD##Lt q[ \B//P##Lq1.R1?91CkkC?6MA{y{y{yzxzw}wvpvo~uo~un}qjynetmds@;O.11111O1s111_1+Ϳ̼̽˻˺ʸm ???( @ (DZ -AR2Um5]8Igx[[>..*HdvxfY(@Q 8b{~y5--r"3>7**6,!!Q, R, R+R+R+R*R*R*R)R)R)R)R(R(R7`{"dVTKK 3>ϴγͱͰ̮˭ʪɨȦǤƢŠĞœU_{"d/?Zx1N`"ǩ{{"dL7J"ȫy{"dL;O"ʭk{"dL9<"˰u{"dLO2"˲f"dMO2ved/ͿŴilZT{vIFIF-*e>snpkđt('LGy.*.*wECB?ulh|ǵJEr>7v+*n1kvﮔ孂śvc]s~smew{o|ydšYQkfɽCBtNMA=EDv00|a f>wsxr˺,(ONr|x@zstp"!#"U;y|HKE|c\|:9|m_pkf"87][y[[!NM{JIIHVT\Z~urGDGCD@74vW0.oa i@5USRJEz(  @&Ig),)0y!'6~~j]]*k^^*l__*k]]*j\\*_TW*LNY*.D[AuTrry.FV dg<]r)d(yKz+dvXBCzfcttλsq[EElOG(}_^⸛Űİ\GG\S`^ѽhŢ۾еɵ]II\TKo_UѨѼʵߺ교˺ůiVVme|kJ&!A8(%JBVJ ~Ȯ+):7l_lvm|qKdJPFsʰJD+(vlL{63"!J><:('wp(&-+l*xڲ,*wqa[FDvme(&{A(aXKHykc54y~$$##A=hsqsp}ҿ|kd41{s32 s5v]%qrfcview-0.62/images/cut.png0000755000100300011300000000245310360705007017502 0ustar RomainHomeGateway00000000000000PNG  IHDR szzgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATXWkLW>#q2Te82f,[p0`.:N1[ X^f 1F-ܨji ܸ aٲ<}^J t (Dq+Fdf"LċGȡȎ;82a+A 0H.݀@2yMrhd^QGнM @t/2= ?H,1yK&B+6F\N 9c6 +A )*7G{̉@DT+, 6FHd*{.T74*TbR,XtzEUȠmts!sQ唃.ݯ˰>`y>^/'g`^3vshG .7wsaؽ^/fߩ6Bϥ-~mTk__sbrVNćԌ08@1~m%[ . $6{B o<ѽVw\Rz0L u5QdQD>v̴@O_~2 D"T*Jh K[9Sy,"džS)⠠ x`X@[^& -Sg L[{` b̄"P`ɹۧu.K)pjx)>+![cG&ؒrdo-- 8b\iF&2,3;3zb<{fO[5XCC=4442e<(6]*2x}.Zl1 %q/'_D Lh>u Ɩ1 f6m8h*>]XGZY Cɑ8 9!\ ϳ7ODIENDB`qrfcview-0.62/src/0000755000100300011300000000000010456624534015527 5ustar RomainHomeGateway00000000000000qrfcview-0.62/src/setdirectory_dlg.ui0000644000100300011300000000636110360705007021427 0ustar RomainHomeGateway00000000000000 directoryDialog 0 0 517 242 Set RFC directories 8 6 0 6 Add Remove Default Qt::Vertical 20 40 0 6 RFC site URL 0 6 Apply Cancel 9 9 453 161 510 20 87 159 qrfcview-0.62/src/TitleItem.cpp0000644000100300011300000000332610361674535020140 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include "TitleItem.h" CTitleItem::CTitleItem(const QString &qTitle, const QString &qAnchor, CTitleItem *parent) { parentItem = parent; m_qTitle= qTitle; m_qAnchor=qAnchor; } CTitleItem::~CTitleItem() { qDeleteAll(childItems); } void CTitleItem::appendChild(CTitleItem *item) { childItems.append(item); } CTitleItem *CTitleItem::child(int row) { return childItems.value(row); } int CTitleItem::childCount() const { return childItems.count(); } CTitleItem *CTitleItem::parent() { return parentItem; } int CTitleItem::row() const { if (parentItem) return parentItem->childItems.indexOf(const_cast(this)); return 0; } qrfcview-0.62/src/find_dlg.ui0000644000100300011300000001073310360705007017625 0ustar RomainHomeGateway00000000000000 findDialog 0 0 400 260 Dialog 8 6 Find 8 6 Text to find true 0 6 Regular expression Qt::Horizontal 40 20 Options 8 6 Whole words only Case sensitive From cursor Find backwards 0 6 Qt::Horizontal 131 31 Find Close closeButton clicked() findDialog close() 369 253 179 282 qrfcview-0.62/src/rfcloader.cpp0000644000100300011300000001305510361674535020201 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include #include #include "rfcloader.h" #include #include #include QRFCLoader::QRFCLoader(QObject *parent) : QObject(parent) { m_qHttp=new QHttp(this); connect(m_qHttp, SIGNAL( requestStarted(int) ), this, SLOT( startDownload(int) ) ); connect(m_qHttp, SIGNAL( requestFinished(int, bool) ), this, SLOT( fileDownload(int, bool) ) ); connect(m_qHttp, SIGNAL( responseHeaderReceived(QHttpResponseHeader) ), this, SLOT( receivedHeader(QHttpResponseHeader) ) ); //m_qDirList.append("."); m_iDefaultDir=0; m_qIETFSite="www.ietf.org"; m_iCurrentRequestID=-1; } QRFCLoader::~QRFCLoader() { delete m_qHttp; } void QRFCLoader::SetDirectories(QStringList &qDirList, uint8_t iDefaultDir) { int i; QDir qDirectory; m_qDirList.clear(); for (i=0;iopen(QIODevice::WriteOnly)) { delete sRFCDesc.pFile; QMessageBox::information(NULL, tr("RFCView"), tr("Unable to write RFC %1") .arg(iRFCNum)); return; } QString qUrl=m_qIETFPath+QString("/rfc%1.txt").arg(iRFCNum, 4, 10, QChar('0')); qDebug() << qUrl; m_qHttp->setHost(m_qIETFSite); iRequestID=m_qHttp->get( qUrl, sRFCDesc.pFile); m_RequestList.insert(iRequestID, sRFCDesc); m_iCurrentRequestID=-1; } void QRFCLoader::startDownload(int iRequestID) { //qDebug() << "startDownload="+QString::number(iRequestID); if ( m_RequestList.contains(iRequestID)) m_iCurrentRequestID=iRequestID; else m_iCurrentRequestID=-1; } void QRFCLoader::receivedHeader(const QHttpResponseHeader &qResponseHdr) { RFCDesc_t sRFCDesc; QString qFilename; //qDebug() << "HTTP status=" + QString::number(qResponseHdr.statusCode())+","+QString::number(m_iCurrentRequestID); if ( m_iCurrentRequestID!=-1 && qResponseHdr.statusCode() != 200 ) { sRFCDesc=m_RequestList.value(m_iCurrentRequestID); m_iCurrentRequestID=-1; QMessageBox::information(NULL, tr("RFCView"), tr("Unable to load RFC %1: ") .arg(sRFCDesc.iRFCNum)+ qResponseHdr.reasonPhrase() ) ; m_RequestList.remove(m_iCurrentRequestID); } else { sRFCDesc=m_RequestList.value(m_iCurrentRequestID); qFilename=m_qDirList.at(m_iDefaultDir) + "/rfc" + QString::number(sRFCDesc.iRFCNum) +".txt"; emit start( qFilename ); } } void QRFCLoader::fileDownload(int iRequestID, bool bError) { QString qFilename; RFCDesc_t sRFCDesc; //qDebug() << "fileDownload="+QString::number(iRequestID)+","+QString::number(m_iCurrentRequestID); if ( m_RequestList.contains(iRequestID) ) { sRFCDesc=m_RequestList.value(iRequestID); if (m_iCurrentRequestID==iRequestID) { qFilename=m_qDirList.at(m_iDefaultDir) + "/rfc" + QString::number(sRFCDesc.iRFCNum) +".txt"; sRFCDesc.pFile->close(); delete sRFCDesc.pFile; if (!bError) { qDebug() << "File downloaded: " << qFilename; emit done( qFilename ); } else QMessageBox::information(NULL, tr("RFCView"), tr("Unable to load RFC %1: ") .arg(sRFCDesc.iRFCNum)+ m_qHttp->errorString() ) ; m_RequestList.remove(iRequestID); } else { sRFCDesc.pFile->remove(); } } } qrfcview-0.62/src/qrfceditor.cpp0000644000100300011300000000700010361674535020373 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include "qrfceditor.h" QRFCEditor::QRFCEditor(QWidget *parent) : QTextBrowser(parent) { m_iCurrentPositionIdx=0; } QRFCEditor::~QRFCEditor() { } void QRFCEditor::setSource ( const QUrl & name ) { QRegExp qRegExpRFC("rfc([\\d]+).txt"); if (name.toString()[0]=='#') { //qDebug() << "setSource: " + name.toString().mid(1,-1); scrollToAnchor2(name.toString().mid(1,-1) ); } else if ( qRegExpRFC.indexIn(name.toString())!=-1) { //qDebug() << "RFC " + qRegExpRFC.cap(1) + " is required"; emit RFCReq( qRegExpRFC.cap(1).toUInt() ); } } void QRFCEditor::scrollToAnchor2 ( const QString & name ) { // Record the link //QTextCursor qTextCursor=textCursor(); QTextCursor qTextCursor=cursorForPosition(QPoint(0,0) ); qDebug() << qTextCursor.position() ; while (m_iCurrentPositionIdx != m_qPositionPath.size() ) // Remove the end of the list m_qPositionPath.removeLast(); // Save position at the end of the list m_qPositionPath.append(qTextCursor.position() ); m_iCurrentPositionIdx++; QTextEdit::scrollToAnchor(name); emit backwardAvailable(true); emit forwardAvailable(false); } void QRFCEditor::backward () { QTextCursor qTextCursor=cursorForPosition(QPoint(0,0) ); //uint32_t iPosition; if (m_iCurrentPositionIdx>0) { qDebug() << qTextCursor.position() ; if ( m_iCurrentPositionIdx == m_qPositionPath.size() ) m_qPositionPath.append(qTextCursor.position() ); m_iCurrentPositionIdx--; qTextCursor.movePosition( QTextCursor::End); setTextCursor(qTextCursor); qTextCursor.setPosition( m_qPositionPath[m_iCurrentPositionIdx] ); setTextCursor(qTextCursor); ensureCursorVisible (); if (m_iCurrentPositionIdx==0) emit backwardAvailable(false); emit forwardAvailable(true); } } void QRFCEditor::forward () { QTextCursor qTextCursor=textCursor(); if (m_iCurrentPositionIdx0); } bool QRFCEditor::isForwardAvailable () { return (m_iCurrentPositionIdx #include "TitleItem.h" #include "TitleModel.h" CTitleModel::CTitleModel(const QString &qRFCName, QObject *parent) : QAbstractItemModel(parent) { int iLevel; rootItem = new CTitleItem(qRFCName, 0); //setHeaderData(1, Qt::Horizontal, QString("Title"), Qt::DisplayRole); for (iLevel=0;iLevel(parent.internalPointer())->columnCount(); else return rootItem->columnCount(); } QVariant CTitleModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole) return QVariant(); CTitleItem *item = static_cast(index.internalPointer()); return item->GetTitle(); } Qt::ItemFlags CTitleModel::flags(const QModelIndex &index) const { if (!index.isValid()) return Qt::ItemIsEnabled; return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } QVariant CTitleModel::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation == Qt::Horizontal && role == Qt::DisplayRole) return QString("Title"); return QVariant(); } QModelIndex CTitleModel::index(int row, int column, const QModelIndex &parent) const { CTitleItem *parentItem; if (!parent.isValid()) parentItem = rootItem; else parentItem = static_cast(parent.internalPointer()); CTitleItem *childItem = parentItem->child(row); if (childItem) return createIndex(row, column, childItem); else return QModelIndex(); } QModelIndex CTitleModel::parent(const QModelIndex &index) const { if (!index.isValid()) return QModelIndex(); CTitleItem *childItem = static_cast(index.internalPointer()); CTitleItem *parentItem = childItem->parent(); if (parentItem == rootItem) return QModelIndex(); return createIndex(parentItem->row(), 0, parentItem); } int CTitleModel::rowCount(const QModelIndex &parent) const { CTitleItem *parentItem; if (!parent.isValid()) parentItem = rootItem; else parentItem = static_cast(parent.internalPointer()); return parentItem->childCount(); } bool CTitleModel::ParseTitle(const QString &qLevel, const QString &qTitle) { // Return true if title is valid int iLastDot=0,iNextDot; bool bOK; int iTitleLevel, iLevel; CTitleItem *pParentItem, *pChildItem; uint8_t iTitleNum[MAX_TITLE_LEVEL]; iTitleLevel=0; iLastDot=0; //qDebug() << qLevel+": "+qTitle; // Convert title level from ascii to binary (=>iTitleNum) while ( iTitleLevel=2) pParentItem=m_pCurrentTitleItem[iTitleLevel-2]; else pParentItem=rootItem; // Add a new item pChildItem=new CTitleItem(qLevel+" "+qTitle, "Title_"+qLevel, pParentItem ); pParentItem->appendChild(pChildItem); // Update the struture m_pCurrentTitleItem[iTitleLevel-1] = pChildItem; m_pCurrentTitleItem[iTitleLevel]=NULL; for (iLevel=0;iLevel CDialogFind::CDialogFind(QWidget *parent, QStringList *pPrevResearch, uint32_t iOptionFlags) : QDialog(parent) { m_ui.setupUi(this); connect(m_ui.findButton, SIGNAL(pressed()), this, SLOT(find() ) ); } CDialogFind::~CDialogFind() { } void CDialogFind::find() { // Add the search text to the combo if (m_ui.textComboBox->findText( m_ui.textComboBox->currentText() )==-1) m_ui.textComboBox->addItem(m_ui.textComboBox->currentText()); emit findnext(); } QString CDialogFind::GetTextToFind() { return m_ui.textComboBox->currentText(); } uint32_t CDialogFind::GetOptionFlags() { uint32_t iFlags=0; if (m_ui.regexpCheckBox->checkState() == Qt::Checked) iFlags|=FIND_OPTIONSFLAG_REGEXP; if (m_ui.wholeCheckBox->checkState() == Qt::Checked) iFlags|=FIND_OPTIONSFLAG_WHOLE; if (m_ui.caseCheckBox->checkState() == Qt::Checked) iFlags|=FIND_OPTIONSFLAG_CASE; if (m_ui.cursorCheckBox->checkState() == Qt::Checked) iFlags|=FIND_OPTIONSFLAG_CURSOR; if (m_ui.backwardCheckBox->checkState() == Qt::Checked) iFlags|=FIND_OPTIONSFLAG_BACKWARD; return iFlags; } void CDialogFind::SetOptionFlags(uint32_t iOptionFlags) { m_ui.regexpCheckBox->setCheckState((iOptionFlags&FIND_OPTIONSFLAG_REGEXP)?Qt::Checked:Qt::Unchecked); m_ui.wholeCheckBox->setCheckState((iOptionFlags&FIND_OPTIONSFLAG_WHOLE)?Qt::Checked:Qt::Unchecked); m_ui.caseCheckBox->setCheckState((iOptionFlags&FIND_OPTIONSFLAG_CASE)?Qt::Checked:Qt::Unchecked); m_ui.cursorCheckBox->setCheckState((iOptionFlags&FIND_OPTIONSFLAG_CURSOR)?Qt::Checked:Qt::Unchecked); m_ui.backwardCheckBox->setCheckState((iOptionFlags&FIND_OPTIONSFLAG_BACKWARD)?Qt::Checked:Qt::Unchecked); } qrfcview-0.62/src/cdialogsetdirectory.cpp0000644000100300011300000000677310361674535022314 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include "cdialogsetdirectory.h" CDialogSetDirectory::CDialogSetDirectory( QStringList *pDirectoryList, uint8_t iDefaultDirRow, QString &qRFCURL, QWidget *parent) : QDialog(parent) { int i; QListWidgetItem *newItem; m_ui.setupUi(this); connect(m_ui.addButton, SIGNAL(pressed()), this, SLOT(addDirectoryToList()) ); connect(m_ui.remButton, SIGNAL(pressed()), this, SLOT(remDirectoryFromList()) ); connect(m_ui.applyButton, SIGNAL(pressed()), this, SLOT(accept() ) ); connect(m_ui.cancelButton, SIGNAL(pressed()), this, SLOT(reject() ) ); connect(m_ui.defaultButton, SIGNAL(pressed()), this, SLOT(setDefaultDirectory() ) ); m_ui.urlLineEdit->setText(qRFCURL); if (pDirectoryList!=NULL) { for (i = 0; i < pDirectoryList->size(); i++) { newItem = new QListWidgetItem( pDirectoryList->at(i) ); if (i==iDefaultDirRow) { QFont qFont=newItem->font(); qFont.setBold(true); newItem->setFont( qFont ); } m_ui.directoryList->addItem(newItem); } } m_iDefaultDirRow=iDefaultDirRow; } CDialogSetDirectory::~CDialogSetDirectory() { } int CDialogSetDirectory::GetDirectoryList(QStringList *pDirectoryList) { int i; pDirectoryList->clear(); for (i=0;icount();i++) { pDirectoryList->append( m_ui.directoryList->item(i)->text() ); } return m_iDefaultDirRow; } void CDialogSetDirectory::addDirectoryToList() { QString qDirectoryName = QFileDialog::getExistingDirectory( this, "Choose a directory"); if (!qDirectoryName.isEmpty()) { QListWidgetItem *newItem = new QListWidgetItem(qDirectoryName); m_ui.directoryList->addItem(newItem); } } void CDialogSetDirectory::remDirectoryFromList() { QListWidgetItem *pCurrentItem=m_ui.directoryList->currentItem(); if (pCurrentItem!=NULL) { // Update the default index if (m_iDefaultDirRow>m_ui.directoryList->currentRow()) m_iDefaultDirRow--; m_ui.directoryList->takeItem(m_ui.directoryList->currentRow() ); delete pCurrentItem; } } void CDialogSetDirectory::setDefaultDirectory() { QListWidgetItem *pCurrentItem=m_ui.directoryList->currentItem(); QListWidgetItem *pPrevDefaultItem=m_ui.directoryList->item(m_iDefaultDirRow); if (pCurrentItem!=NULL) { QFont qFont=pCurrentItem->font(); pPrevDefaultItem->setFont( qFont ); qFont.setBold(true); pCurrentItem->setFont( qFont ); m_iDefaultDirRow=m_ui.directoryList->currentRow(); } } qrfcview-0.62/src/TitleItem.h0000644000100300011300000000316410361674535017605 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef TITLEITEM_H #define TITLEITEM_H #include #include class CTitleItem { public: CTitleItem(const QString &,const QString &, CTitleItem *parent=0); ~CTitleItem(); void appendChild(CTitleItem *child); CTitleItem *child(int row); int childCount() const; int columnCount() const {return 1;} QString GetTitle() {return m_qTitle;} int row() const; CTitleItem *parent(); QString GetAnchor() {return m_qAnchor;} private: QList childItems; QString m_qTitle; CTitleItem *parentItem; QString m_qAnchor; }; #endif qrfcview-0.62/src/rfcview.cpp0000644000100300011300000000304510361674535017703 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include #include #include "mainwindow.h" int main(int argc, char *argv[]) { Q_INIT_RESOURCE(rfcview); QApplication app(argc, argv); app.setWindowIcon(QIcon(":/images/rfcview.png")); MainWindow mainWin; mainWin.show(); if (argc>1) { if (QFile::exists(argv[1])) { mainWin.RFCReady(argv[1]); QFileInfo qFileInfo(argv[1]); mainWin.SetCurrentDir(qFileInfo.dir()); } } return app.exec(); } qrfcview-0.62/src/src.pro0000644000100300011300000000154210360765062017036 0ustar RomainHomeGateway00000000000000# File generated by kdevelop's qmake manager. # ------------------------------------------- # Subdir relative project main directory: ./src # Target is an application: ../bin/rfcview HEADERS += mainwindow.h \ mdichild.h \ TitleModel.h \ TitleItem.h \ qrfceditor.h \ cdialogsetdirectory.h \ rfcloader.h \ cdialogfind.h \ cprintdialog.h SOURCES += rfcview.cpp \ mainwindow.cpp \ mdichild.cpp \ TitleModel.cpp \ TitleItem.cpp \ qrfceditor.cpp \ cdialogsetdirectory.cpp \ rfcloader.cpp \ cdialogfind.cpp \ cprintdialog.cpp TARGET=../bin/qRFCView CONFIG += qt release QT += network RESOURCES += rfcview.qrc FORMS += setdirectory_dlg.ui find_dlg.ui win32 { RC_FILE = src.rc }qrfcview-0.62/src/rfcloader.h0000644000100300011300000000411210361674535017640 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef RFCLOADER_H #define RFCLOADER_H #include #include #include /** @author Romain Rollet */ class QHttp; class QUrl; class QHttpResponseHeader; class QFile; class QRFCLoader : public QObject { Q_OBJECT private: struct RFCDesc_t { uint32_t iRFCNum; QFile *pFile; }; public: QRFCLoader(QObject *parent = 0); ~QRFCLoader(); void SetDirectories(QStringList &qDirList, uint8_t iDefaultDir); void GetFile(uint32_t iRFCNum); QHttp *GetQHttp() {return m_qHttp;} void SetDownloadURL(QUrl &qURL); signals: void start(const QString &sFilename); void done(const QString &sFilename); private slots: void startDownload(int iRequestID); void fileDownload(int iRequestID, bool bError); void receivedHeader(const QHttpResponseHeader &qResponseHdr); private: QStringList m_qDirList; uint8_t m_iDefaultDir; QString m_qIETFSite, m_qIETFPath; int m_iCurrentRequestID; QMap m_RequestList; QHttp *m_qHttp; }; #endif qrfcview-0.62/src/TitleModel.h0000644000100300011300000000456310361674535017753 0ustar RomainHomeGateway00000000000000 /**************************************************************************** ** ** qRFCView, A smart IETF RFC viewer based on the Qt4 library. ** Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) ** Copyright (C) 2005-2005 Trolltech AS. All rights reserved. ** ** This file is part of the documentation of the Qt Toolkit. ** ** This file may be used under the terms of the GNU General Public ** License version 2.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of ** this file. Please review the following information to ensure GNU ** General Public Licensing requirements will be met: ** http://www.trolltech.com/products/qt/opensource.html ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://www.trolltech.com/products/qt/licensing.html or contact the ** sales department at sales@trolltech.com. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ****************************************************************************/ #ifndef TITLEMODEL_H #define TITLEMODEL_H #include #include #include #define MAX_TITLE_LEVEL 16 class CTitleItem; class CTitleModel : public QAbstractItemModel { Q_OBJECT public: CTitleModel(const QString &data, QObject *parent = 0); ~CTitleModel(); QVariant data(const QModelIndex &index, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex parent(const QModelIndex &index) const; int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; bool ParseTitle(const QString &qLevel, const QString &qTitle); private: uint8_t m_iCurrentValidTitleNum[MAX_TITLE_LEVEL]; uint8_t m_iCurrentValidTitleLevel; CTitleItem *m_pCurrentTitleItem[MAX_TITLE_LEVEL]; CTitleItem *rootItem; }; #endif qrfcview-0.62/src/qrfceditor.h0000644000100300011300000000320710361674535020045 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef QRFCEDITOR_H #define QRFCEDITOR_H #include class QStringList; /** @author Romain Rollet */ class QRFCEditor : public QTextBrowser { Q_OBJECT public: QRFCEditor(QWidget *parent = 0); ~QRFCEditor(); void setSource ( const QUrl & name ); void scrollToAnchor2 ( const QString & name ); bool isBackwardAvailable (); bool isForwardAvailable (); signals: void RFCReq(uint32_t); // Signal emitted when a new RFC is required public slots: void backward (); void forward (); private: QList m_qPositionPath; int m_iCurrentPositionIdx; }; #endif qrfcview-0.62/src/cdialogfind.h0000644000100300011300000000334010361674535020144 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef CDIALOGFIND_H #define CDIALOGFIND_H #include #include #define FIND_OPTIONSFLAG_REGEXP 0x01 #define FIND_OPTIONSFLAG_CASE 0x02 #define FIND_OPTIONSFLAG_WHOLE 0x04 #define FIND_OPTIONSFLAG_CURSOR 0x08 #define FIND_OPTIONSFLAG_BACKWARD 0x10 /** @author Romain Rollet */ class CDialogFind : public QDialog { Q_OBJECT public: CDialogFind( QWidget *parent = 0, QStringList *pPrevResearch=NULL, uint32_t iOptionFlags=0); ~CDialogFind(); QString GetTextToFind(); uint32_t GetOptionFlags(); void SetOptionFlags(uint32_t iOptionFlags); signals: void findnext(); private slots: void find(); private: Ui_findDialog m_ui; }; #endif qrfcview-0.62/src/cdialogsetdirectory.h0000644000100300011300000000333710361674535021752 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef CDIALOGSETDIRECTORY_H #define CDIALOGSETDIRECTORY_H #include #include /** @author Romain Rollet */ class CDialogSetDirectory : public QDialog { Q_OBJECT public: CDialogSetDirectory(QStringList *pDirectoryList, uint8_t iDefaultDir, QString &qRFCURL, QWidget *parent = 0); ~CDialogSetDirectory(); int GetDirectoryList(QStringList *pDirectoryList); uint8_t GetDefaultDir() {return m_iDefaultDirRow;} QString GetRFCURL() {return m_ui.urlLineEdit->text();} private slots: void addDirectoryToList(); void remDirectoryFromList(); void setDefaultDirectory(); private: Ui_directoryDialog m_ui; uint8_t m_iDefaultDirRow; }; #endif qrfcview-0.62/src/rfcview.qrc0000644000100300011300000000105510360705007017671 0ustar RomainHomeGateway00000000000000 ../images/copy.png ../images/cut.png ../images/new.png ../images/open.png ../images/paste.png ../images/save.png ../images/find.png ../images/forward.png ../images/backward.png ../images/rfcview.png ../images/load.png ../images/print.png ../images/close.png qrfcview-0.62/src/src.rc0000644000100300011300000000125510360765062016643 0ustar RomainHomeGateway00000000000000IDR_MAINFRAME ICON DISCARDABLE "..\\images\\rfcview.ico" 1 VERSIONINFO FILEVERSION 1, 0, 0, 0 PRODUCTVERSION 1, 0, 0, 0 FILEOS 4 FILETYPE 1 { BLOCK "StringFileInfo" { BLOCK "040904b0" { VALUE "FileDescription", "qRFCView" VALUE "OriginalFilename", "qrfcview.exe" VALUE "CompanyName", "Mitsubishi Electric ITE-TCL" VALUE "FileVersion", "0.62" VALUE "LegalCopyright", "..." VALUE "ProductName", "qRFCView" VALUE "ProductVersion", "0.62" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0409, 0x04B0 } }qrfcview-0.62/src/mainwindow.cpp0000644000100300011300000004662510361674535020425 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include #include #include #include #include "rfcloader.h" #include "mainwindow.h" #include "mdichild.h" #include "cdialogsetdirectory.h" #include "cdialogfind.h" #include "qrfceditor.h" #include "cprintdialog.h" MainWindow::MainWindow():m_qLastOpenDir(".") { m_qTabWidget = new QTabWidget(this); setCentralWidget(m_qTabWidget); connect(m_qTabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateMenus())); /* windowMapper = new QSignalMapper(this); connect(windowMapper, SIGNAL(mapped(QWidget *)), workspace, SLOT(setActiveWindow(QWidget *))); */ readSettings(); QUrl qURL(m_qRFCURL); m_pRFCLoader=new QRFCLoader(this); connect(m_pRFCLoader, SIGNAL(done(QString)),this, SLOT(RFCReady(QString))); connect(m_pRFCLoader, SIGNAL(start(QString)),this, SLOT(RFCStart(QString))); m_pRFCLoader->SetDownloadURL(qURL); m_pRFCLoader->SetDirectories(m_qDirectoryList, m_iDefaultDirectory); createActions(); createMenus(); createToolBars(); createStatusBar(); updateMenus(); //m_pDialogFind=NULL; m_pDialogFind=new CDialogFind( this); connect(m_pDialogFind, SIGNAL(findnext()), this, SLOT(findnext())); setWindowTitle(tr("qRFCView")); //m_pRFCLoader->GetFile(794); } void MainWindow::closeEvent(QCloseEvent *event) { //workspace->closeAllWindows(); /* if (activeMdiChild()) { event->ignore(); } else { writeSettings(); event->accept(); }*/ writeSettings(); event->accept(); } void MainWindow::open() { QString fileName = QFileDialog::getOpenFileName(this, QString(), m_qLastOpenDir.absolutePath() ); QFileInfo qFileInfo(fileName); if (!fileName.isEmpty()) { MdiChild *existing = findMdiChild(fileName); if (existing) { m_qTabWidget->setCurrentWidget(existing); return; } MdiChild *child = createMdiChild(qFileInfo.fileName()); child->setCurrentFont(m_qFont); if (child->loadFile(fileName)) { statusBar()->showMessage(tr("File loaded"), 2000); child->show(); m_qLastOpenDir=qFileInfo.dir(); } else { child->close(); } } } void MainWindow::close() { MdiChild *pMdiChild=activeMdiChild(); if (pMdiChild) { m_qTabWidget->removeTab(m_qTabWidget->currentIndex()); delete pMdiChild; } updateMenus(); } void MainWindow::getrfc() { // Load a RFC number bool bOK; int iRFCNum = QInputDialog::getInteger(this, tr("Please enter a RFC number"), tr("RFC#:"), 0, 1, 5000, 1, &bOK); if (bOK) RFCLoad( iRFCNum ); } void MainWindow::copy() { activeMdiChild()->copy(); } void MainWindow::findOpen() { m_pDialogFind->show(); m_pDialogFind->raise(); m_pDialogFind->activateWindow(); } void MainWindow::findnext() { bool bResult; uint32_t iOptionFlags; QString qTextToFind=m_pDialogFind->GetTextToFind(); iOptionFlags=m_pDialogFind->GetOptionFlags(); MdiChild *pMdiChild=activeMdiChild(); if (pMdiChild && !qTextToFind.isEmpty() ) { bResult=pMdiChild->FindText(qTextToFind, iOptionFlags ); if (!bResult) statusBar()->showMessage(tr("No more occurence"), 3000); else statusBar()->clearMessage(); iOptionFlags|=FIND_OPTIONSFLAG_CURSOR; m_pDialogFind->SetOptionFlags(iOptionFlags); } updateMenus(); } void MainWindow::findprev() { bool bResult; uint32_t iOptionFlags; QString qTextToFind=m_pDialogFind->GetTextToFind(); iOptionFlags=m_pDialogFind->GetOptionFlags(); MdiChild *pMdiChild=activeMdiChild(); if (pMdiChild && !qTextToFind.isEmpty() ) { iOptionFlags|=FIND_OPTIONSFLAG_CURSOR|FIND_OPTIONSFLAG_BACKWARD; bResult=pMdiChild->FindText(qTextToFind, iOptionFlags ); if (!bResult) statusBar()->showMessage(tr("No more occurence"), 3000); else statusBar()->clearMessage(); } } void MainWindow::forward() { MdiChild *pMdiChild=activeMdiChild(); if (pMdiChild) pMdiChild->m_pTextEdit->forward(); } void MainWindow::backward() { MdiChild *pMdiChild=activeMdiChild(); if (pMdiChild) pMdiChild->m_pTextEdit->backward(); } void MainWindow::setDirectories() { CDialogSetDirectory *pDialog=new CDialogSetDirectory(&m_qDirectoryList, m_iDefaultDirectory, m_qRFCURL, this); if (pDialog->exec()==QDialog::Accepted) { m_iDefaultDirectory=pDialog->GetDirectoryList(&m_qDirectoryList); m_qRFCURL=pDialog->GetRFCURL(); QUrl qURL(m_qRFCURL); m_pRFCLoader->SetDownloadURL(qURL); m_pRFCLoader->SetDirectories(m_qDirectoryList, m_iDefaultDirectory); } delete pDialog; } void MainWindow::setFont() { bool bOK; MdiChild *pMDIChild; QFont qFont=QFontDialog::getFont(&bOK, m_qFont, this ); m_qFont=qFont; if (bOK) { for (int i=0;icount();i++) { pMDIChild = qobject_cast(m_qTabWidget->widget(i)); pMDIChild->setCurrentFont(m_qFont); } } } void MainWindow::print() { MdiChild *pMdiChild=activeMdiChild(); if (pMdiChild) { QPrinter printer(QPrinter::PrinterResolution); printer.setFullPage(true); printer.setNumCopies(2); QPrintDialog dlg(&printer, this); //dlg.setPrintRange(QAbstractPrintDialog::PageRange); dlg.setMinMax(1, pMdiChild->GetNbPages() ); //dlg.setFromTo(1, 2); //dlg.setEnabledOptions(QAbstractPrintDialog::PrintPageRange); if (dlg.exec() == QDialog::Accepted) { pMdiChild->Print(&printer, dlg.printRange()==QAbstractPrintDialog::AllPages, dlg.fromPage(), dlg.toPage() ); //pMdiChild->Print(&printer, false, 4,6); } } } void MainWindow::about() { QMessageBox::about(this, tr("About qRFCView"), tr("qRFCView v0.62
A smart RFC Viewer using the Qt4 library.

Mitsubishi Electric, 2005")); } void MainWindow::updateMenus() { /* bool hasMdiChild = (activeMdiChild() != 0); closeAct->setEnabled(hasMdiChild); closeAllAct->setEnabled(hasMdiChild); tileAct->setEnabled(hasMdiChild); cascadeAct->setEnabled(hasMdiChild); nextAct->setEnabled(hasMdiChild); previousAct->setEnabled(hasMdiChild); separatorAct->setVisible(hasMdiChild); */ bool hasSelection = (activeMdiChild() && activeMdiChild()->hasSelection()); copyAct->setEnabled(hasSelection); findAct->setEnabled( activeMdiChild()!=NULL); printAct->setEnabled( activeMdiChild()!=NULL); findnextAct->setEnabled( activeMdiChild()!=NULL && (!m_pDialogFind->GetTextToFind().isEmpty()) ); findprevAct->setEnabled( activeMdiChild()!=NULL && (!m_pDialogFind->GetTextToFind().isEmpty()) ); forwardAct->setEnabled( activeMdiChild()!=NULL && activeMdiChild()->m_pTextEdit->isForwardAvailable() ); backwardAct->setEnabled( activeMdiChild()!=NULL && activeMdiChild()->m_pTextEdit->isBackwardAvailable() ); closeAct->setEnabled(activeMdiChild()!=NULL); } void MainWindow::updateWindowMenu() { /* windowMenu->clear(); windowMenu->addAction(closeAct); windowMenu->addAction(closeAllAct); windowMenu->addSeparator(); windowMenu->addAction(tileAct); windowMenu->addAction(cascadeAct); windowMenu->addSeparator(); windowMenu->addAction(nextAct); windowMenu->addAction(previousAct); windowMenu->addAction(separatorAct); QList windows = workspace->windowList(); separatorAct->setVisible(!windows.isEmpty()); for (int i = 0; i < windows.size(); ++i) { MdiChild *child = qobject_cast(windows.at(i)); QString text; if (i < 9) { text = tr("&%1. %2").arg(i + 1) .arg(child->userFriendlyCurrentFile()); } else { text = tr("%1. %2").arg(i + 1) .arg(child->userFriendlyCurrentFile()); } QAction *action = windowMenu->addAction(text); action->setCheckable(true); action ->setChecked(child == activeMdiChild()); connect(action, SIGNAL(triggered()), windowMapper, SLOT(map())); windowMapper->setMapping(action, child); }*/ } MdiChild *MainWindow::createMdiChild(const QString &qTitle) { MdiChild *child = new MdiChild(); m_qTabWidget->addTab(child, qTitle); connect(child, SIGNAL(copyAvailable(bool)), copyAct, SLOT(setEnabled(bool))); connect(child->m_pTextEdit, SIGNAL(RFCReq( uint32_t )), this, SLOT(RFCLoad( uint32_t )) ); connect(child->m_pTextEdit, SIGNAL(forwardAvailable(bool)), forwardAct, SLOT(setEnabled(bool)) ); connect(child->m_pTextEdit, SIGNAL(backwardAvailable(bool)), backwardAct, SLOT(setEnabled(bool)) ); m_qTabWidget->setCurrentWidget(child); return child; } void MainWindow::createActions() { openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); openAct->setShortcut(tr("Ctrl+O")); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(open())); loadAct = new QAction(QIcon(":/images/load.png"), tr("&Load RFC..."), this); loadAct->setShortcut(tr("Ctrl+L")); loadAct->setStatusTip(tr("Load a RFC from its number")); connect(loadAct, SIGNAL(triggered()), this, SLOT(getrfc())); closeAct = new QAction(QIcon(":/images/close.png"),tr("Cl&ose"), this); closeAct->setShortcut(tr("Ctrl+F4")); closeAct->setStatusTip(tr("Close the active window")); connect(closeAct, SIGNAL(triggered()), this, SLOT(close())); printAct = new QAction(QIcon(":/images/print.png"), tr("&Print..."), this); connect(printAct, SIGNAL(triggered()), this, SLOT(print())); exitAct = new QAction(tr("E&xit"), this); exitAct->setShortcut(tr("Ctrl+Q")); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this); copyAct->setShortcut(tr("Ctrl+C")); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), this, SLOT(copy())); setFontAct = new QAction(QIcon(), tr("&Set Font..."), this); connect(setFontAct, SIGNAL(triggered()), this, SLOT(setFont())); setDirectoriesAct = new QAction(QIcon(), tr("&Set Directories..."), this); connect(setDirectoriesAct, SIGNAL(triggered()), this, SLOT(setDirectories())); forwardAct = new QAction(QIcon(":/images/forward.png"), tr("&Forward"), this); connect(forwardAct, SIGNAL(triggered()), this, SLOT(forward())); backwardAct = new QAction(QIcon(":/images/backward.png"), tr("&Backward"), this); connect(backwardAct, SIGNAL(triggered()),this, SLOT(backward())); findAct = new QAction(QIcon(":/images/find.png"), tr("&Find..."), this); findAct->setShortcut(tr("Ctrl+F")); findAct->setStatusTip(tr("Find a string in the currently opened file")); connect(findAct, SIGNAL(triggered()), this, SLOT(findOpen())); findnextAct = new QAction(QIcon(), tr("&Find Next"), this); findnextAct->setShortcut(tr("F3")); connect(findnextAct, SIGNAL(triggered()), this, SLOT(findnext())); findprevAct = new QAction(QIcon(), tr("&Find Previous"), this); findprevAct->setShortcut(tr("Shift+F3")); connect(findprevAct, SIGNAL(triggered()), this, SLOT(findprev())); /* closeAllAct = new QAction(tr("Close &All"), this); closeAllAct->setStatusTip(tr("Close all the windows")); connect(closeAllAct, SIGNAL(triggered()), workspace, SLOT(closeAllWindows())); tileAct = new QAction(tr("&Tile"), this); tileAct->setStatusTip(tr("Tile the windows")); connect(tileAct, SIGNAL(triggered()), workspace, SLOT(tile())); cascadeAct = new QAction(tr("&Cascade"), this); cascadeAct->setStatusTip(tr("Cascade the windows")); connect(cascadeAct, SIGNAL(triggered()), workspace, SLOT(cascade())); nextAct = new QAction(tr("Ne&xt"), this); nextAct->setShortcut(tr("Ctrl+F6")); nextAct->setStatusTip(tr("Move the focus to the next window")); connect(nextAct, SIGNAL(triggered()), workspace, SLOT(activateNextWindow())); previousAct = new QAction(tr("Pre&vious"), this); previousAct->setShortcut(tr("Ctrl+Shift+F6")); previousAct->setStatusTip(tr("Move the focus to the previous " "window")); connect(previousAct, SIGNAL(triggered()), workspace, SLOT(activatePreviousWindow())); separatorAct = new QAction(this); separatorAct->setSeparator(true); */ aboutAct = new QAction(tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); aboutQtAct = new QAction(tr("About &Qt"), this); aboutQtAct->setStatusTip(tr("Show the Qt library's About box")); connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); } void MainWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(openAct); fileMenu->addAction(loadAct); fileMenu->addAction(closeAct); fileMenu->addAction(printAct); fileMenu->addSeparator(); fileMenu->addAction(exitAct); editMenu = menuBar()->addMenu(tr("&Edit")); editMenu->addAction(backwardAct); editMenu->addAction(forwardAct); editMenu->addAction(copyAct); editMenu->addAction(findAct); editMenu->addAction(findprevAct); editMenu->addAction(findnextAct); editMenu->addSeparator(); editMenu->addAction(setFontAct); editMenu->addAction(setDirectoriesAct); //windowMenu = menuBar()->addMenu(tr("&Window")); //connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowMenu())); //menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); } void MainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); fileToolBar->addAction(openAct); fileToolBar->addAction(loadAct); fileToolBar->addAction(closeAct); fileToolBar->addAction(printAct); editToolBar = addToolBar(tr("Edit")); editToolBar->addAction(copyAct); editToolBar->addAction(findAct); editToolBar->addAction(backwardAct); editToolBar->addAction(forwardAct); } void MainWindow::createStatusBar() { m_pProgressBar=new QProgressBar(); m_pProgressBar->setRange(0,100); m_pProgressBar->setValue(50); connect(m_pRFCLoader->GetQHttp(), SIGNAL(dataReadProgress(int,int)), this, SLOT( updateRFCProgress(int,int))); statusBar()->showMessage(tr("Ready")); //statusBar()->addWidget(m_pProgressBar, 0); //qProgressBar.show(); } void MainWindow::readSettings() { int i; QSettings settings("MELCO", "qRFCView"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); m_qFont.setFamily(settings.value("Font_family", m_qFont.family()).toString() ); m_qFont.setPointSize(settings.value("Font_size", m_qFont.pointSize()).toInt() ); m_qFont.setWeight(settings.value("Font_weight", m_qFont.weight()).toInt()); m_qFont.setItalic(settings.value("Font_italic", m_qFont.italic()).toBool()); m_qDirectoryList=settings.value("Directories", QStringList(QString(".") )).toStringList(); m_iDefaultDirectory=settings.value("DefaultDirectory", 0).toInt(); m_qRFCURL=settings.value("RFC_URL", QString("http://www.ietf.org/rfc/") ).toString(); move(pos); resize(size); for (i=0;i=m_qDirectoryList.size() ) m_iDefaultDirectory=0; //qDebug() << m_qDirectoryList.count(); m_qLastOpenDir=QDir( settings.value("LastOpenedDirectory", m_qDirectoryList[m_iDefaultDirectory]).toString() ); //m_qLastOpenDir=QDir(m_qDirectoryList[m_iDefaultDirectory]); } void MainWindow::writeSettings() { QSettings settings("MELCO", "qRFCView"); settings.setValue("pos", pos()); settings.setValue("size", size()); settings.setValue("Font_family", m_qFont.family()); settings.setValue("Font_size", m_qFont.pointSize()); settings.setValue("Font_weight", m_qFont.weight()); settings.setValue("Font_italic", m_qFont.italic()); settings.setValue("Directories", m_qDirectoryList); settings.setValue("DefaultDirectory", m_iDefaultDirectory); settings.setValue("RFC_URL", m_qRFCURL ); settings.setValue("LastOpenedDirectory", m_qLastOpenDir.absolutePath() ); } MdiChild *MainWindow::activeMdiChild() { return qobject_cast(m_qTabWidget->currentWidget()); } MdiChild *MainWindow::findMdiChild(const QString &fileName) { QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath(); for (int i=0;icount();i++) { MdiChild *mdiChild = qobject_cast(m_qTabWidget->widget(i)); if (mdiChild->currentFile() == canonicalFilePath) return mdiChild; } return 0; } void MainWindow::RFCLoad( uint32_t iRFCNum ) { QString qFilename=QString("rfc%1.txt").arg(iRFCNum); QFileInfo qFileInfo; // Check if the required RFC is not yet opened for (int i=0;icount();i++) { MdiChild *mdiChild = qobject_cast(m_qTabWidget->widget(i)); qFileInfo.setFile(mdiChild->currentFile()); if (qFileInfo.fileName() == qFilename) { m_qTabWidget->setCurrentWidget(mdiChild); return; } } m_pRFCLoader->GetFile(iRFCNum); } void MainWindow::RFCStart(const QString &qFilename) { // Start downloading a RFC file //statusBar()->showMessage(tr("Downloading ")+qFilename); statusBar()->clearMessage(); statusBar()->addWidget(m_pProgressBar); m_pProgressBar->show(); } void MainWindow::RFCReady(const QString &qFilename) { QFileInfo qFileInfo(qFilename); MdiChild *child = createMdiChild(qFileInfo.fileName()); child->setCurrentFont(m_qFont); if (child->loadFile(qFilename)) { child->show(); } else { child->close(); } statusBar()->showMessage(tr("Load ")+qFilename , 2000); statusBar()->removeWidget(m_pProgressBar); } void MainWindow::updateRFCProgress(int bytesRead, int totalBytes) { m_pProgressBar->setMaximum(totalBytes); m_pProgressBar->setValue(bytesRead); } qrfcview-0.62/src/mdichild.cpp0000644000100300011300000002766510361674535020031 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include #include #include #include "mdichild.h" #include "TitleModel.h" #include "TitleItem.h" #include "qrfceditor.h" #include "cdialogfind.h" MdiChild::MdiChild(QWidget *pParent):QSplitter(pParent) { m_pTreeView= new QTreeView; m_pTextEdit= new QRFCEditor; m_pTitleModel=NULL; m_iNbPages=0; addWidget(m_pTreeView); addWidget(m_pTextEdit); setStretchFactor(0, 0); setStretchFactor(1, 1); setAttribute(Qt::WA_DeleteOnClose); } MdiChild::~MdiChild() { if (m_pTitleModel) delete m_pTitleModel; delete m_pTreeView; delete m_pTextEdit; } bool MdiChild::loadFile(const QString &fileName) { QFile file(fileName); QString qText; if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("MDI"), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return false; } m_pTitleModel = new CTitleModel("RFC Bidule"); ParseRFCText(file, qText); file.close(); m_pTreeView->setModel(m_pTitleModel); m_pTreeView->show(); m_pTextEdit->setHtml(qText); m_pTextEdit->setReadOnly(true); //QApplication::restoreOverrideCursor(); connect(m_pTreeView, SIGNAL(activated(QModelIndex)), this, SLOT(goToTitle(QModelIndex))); disconnect(m_pTextEdit, SIGNAL(anchorClicked(QUrl)), 0 , 0 ); connect(m_pTextEdit, SIGNAL(anchorClicked(QUrl) ), this, SLOT(goToAnchor(QUrl))); setCurrentFile(fileName); return true; } QString MdiChild::userFriendlyCurrentFile() { return strippedName(curFile); } void MdiChild::closeEvent(QCloseEvent *event) { event->accept(); /* if (maybeSave()) { event->accept(); } else { event->ignore(); }*/ } void MdiChild::setCurrentFile(const QString &fileName) { curFile = QFileInfo(fileName).canonicalFilePath(); m_pTextEdit->document()->setModified(false); setWindowModified(false); setWindowTitle(userFriendlyCurrentFile() + "[*]"); m_qFileName=fileName; } QString MdiChild::strippedName(const QString &fullFileName) { return QFileInfo(fullFileName).fileName(); } void MdiChild::copy() { m_pTextEdit->copy(); } bool MdiChild::hasSelection() { return m_pTextEdit->textCursor().hasSelection(); } void MdiChild::goToTitle(const QModelIndex &qModelIndex) { CTitleItem *pChildItem = static_cast(qModelIndex.internalPointer()); m_pTextEdit->scrollToAnchor2(pChildItem->GetAnchor()); } void MdiChild::goToAnchor(const QUrl &qURL) { qDebug() << qURL.toString(); } void MdiChild::setCurrentFont(const QFont &qFont) { QTextCursor cursor(m_pTextEdit->textCursor()); m_pTextEdit->selectAll(); m_pTextEdit->setCurrentFont(qFont); cursor.clearSelection(); m_pTextEdit->setTextCursor(cursor); m_pTextEdit->document()->setDefaultFont(qFont); } bool MdiChild::ParseRFCText(const QFile &qFile, QString &qOutput) { QTextStream qInStream((QFile*)&qFile); QString qLine; //QRegExp qRegExpTitle("\\s*([\\d]+[\\d\\.]*)[\\s]+(\\w[-/+:;\\w\\s]*)"); QRegExp qRegExpTitle("^([\\d]+[\\d\\.]*)[\\s]+(.*)$"); QRegExp qRegExpBiblio("^\\s*\\[([\\d\\w]+)\\]\\s+"); QRegExp qRegExpReference("\\[([\\d\\w]+)\\]"); QRegExp qRegExpRFC("RFC\\s+([\\d]+)"); QRegExp qRegExpFooter("\\[Page\\s\\d+\\]"); QRegExp qRegExpSection("[Ss]ection\\s(\\d+[\\d\\.]*\\d+)"); uint8_t iState=PARSER_NORMALTEXT, iNextState=PARSER_NORMALTEXT; int iNextPos, iPrevPos=0; QString qLineOutput; m_iNbPages=1; qOutput="
";
  while( !qInStream.atEnd() )
  {
    qLine=qInStream.readLine();

    // Replace character
    qLine.replace(QChar('&'),QString("&") );
    qLine.replace(QChar('<'),QString("<") );
    qLine.replace(QChar('>'),QString(">") );
    qLine.replace(QChar('\"'),QString(""") );

    iNextState=iState;
    if (iState==PARSER_NORMALTEXT)
    {
      if ( (qRegExpTitle.indexIn(qLine, 0)) != -1)
      { // Is it a new title?
        // Check title num is correct
        if (m_pTitleModel->ParseTitle(qRegExpTitle.cap(1), qRegExpTitle.cap(2) ))
        { // Insert the HTML anchor
          qLine="

"+ qLine +"

";
          //bLineNotAdded=false;
        }
      }
      else if ( (qRegExpBiblio.indexIn(qLine, 0)) != -1)
      { // Is it a bib ref (shall be at the end of the document
        qLine=""+ qLine;
        iNextState=PARSER_BIBTEXT;
        //bLineNotAdded=false;
      }
      else if ( (qRegExpFooter.indexIn(qLine, 0)) != -1)
      { // Test if it is the footer line
        qLine=""+qLine+"";
      }
      else if (qLine.indexOf(QChar('\f'))!=-1)
      { // Test if it is the header line
        iNextState=PARSER_HEADER;
        qLine="
"; m_iNbPages++; } } else if (iState==PARSER_BIBTEXT) { if (qLine.trimmed().isEmpty()) { qLine=""; iNextState=PARSER_NORMALTEXT; } } else if (iState==PARSER_HEADER) { if (!qLine.isEmpty()) { qLine=qLine+"
"; iNextState=PARSER_NORMALTEXT; } } iPrevPos=0; if ( iNextState!=PARSER_BIBTEXT && (iNextPos=qRegExpReference.indexIn(qLine, iPrevPos)) != -1 ) { // Format biblio references: "[%d]" qLineOutput.clear(); do { // Insert a link to the reference //qDebug()<"+qRegExpReference.cap(0)+""; iPrevPos=iNextPos+qRegExpReference.matchedLength(); }while ( (iNextPos=qRegExpReference.indexIn(qLine, iPrevPos)) != -1 ); qLineOutput+=qLine.mid(iPrevPos,-1); qLine=qLineOutput; } iPrevPos=0; if ( iState!=PARSER_HEADER && (iNextPos=qRegExpRFC.indexIn(qLine, iPrevPos)) != -1 ) { // Format RFC references: "RFC %d" qLineOutput.clear(); do { // Insert a link to the reference //qDebug()<"+qRegExpRFC.cap(0)+""; iPrevPos=iNextPos+qRegExpRFC.matchedLength(); }while ( (iNextPos=qRegExpRFC.indexIn(qLine, iPrevPos)) != -1 ); qLineOutput+=qLine.mid(iPrevPos,-1); qLine=qLineOutput; } iPrevPos=0; if ( iState!=PARSER_HEADER && (iNextPos=qRegExpSection.indexIn(qLine, iPrevPos)) != -1 ) { qLineOutput.clear(); do { // Insert a link to the reference //qDebug()<"+qRegExpSection.cap(0)+""; iPrevPos=iNextPos+qRegExpSection.matchedLength(); }while ( (iNextPos=qRegExpSection.indexIn(qLine, iPrevPos)) != -1 ); qLineOutput+=qLine.mid(iPrevPos,-1); qLine=qLineOutput; } iState=iNextState; qOutput+=qLine+"\n"; } qOutput+="
"; return true; } bool MdiChild::FindText(QString &qTextToFind, uint32_t iOptionFlags) { QRegExp qRegExp; QTextDocument::FindFlags qFindFlags=0; if (iOptionFlags&FIND_OPTIONSFLAG_REGEXP) qRegExp=QRegExp(qTextToFind); if (iOptionFlags&FIND_OPTIONSFLAG_BACKWARD) qFindFlags|= QTextDocument::FindBackward; if (iOptionFlags&FIND_OPTIONSFLAG_CASE) qFindFlags|= QTextDocument::FindCaseSensitively; if (iOptionFlags&FIND_OPTIONSFLAG_WHOLE) qFindFlags|= QTextDocument::FindWholeWords; if (!(iOptionFlags&FIND_OPTIONSFLAG_CURSOR)) { // Set the cursor at the beginning QTextCursor cursor(m_pTextEdit->textCursor()); cursor.movePosition(QTextCursor::Start); m_pTextEdit->setTextCursor(cursor); } return m_pTextEdit->find(qTextToFind, qFindFlags); } void MdiChild::Print(QPrinter *qPrinter, bool bAll, int fromPage, int toPage) { QFile qFile(m_qFileName); if (!qFile.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("MDI"), tr("Cannot read file %1:\n%2.") .arg(m_qFileName) .arg(qFile.errorString())); return; } QTextStream qInStream((QFile*)&qFile); QString qLine; int yPos = 0; // y position for each line //QRegExp qRegExpTitle("\\s*([\\d]+[\\d\\.]*)[\\s]+(\\w[-/+:;\\w\\s]*)"); uint8_t iState=PARSER_NORMALTEXT; QRegExp qRegExpTitle("^([\\d]+[\\d\\.]*)[\\s]+(.*)$"); QRegExp qRegExpBiblio("^\\s*\\[([\\d\\w]+)\\]\\s+"); QRegExp qRegExpReference("\\[([\\d\\w]+)\\]"); QRegExp qRegExpRFC("RFC\\s([\\d]+)"); QRegExp qRegExpFooter("\\[Page\\s\\d+\\]"); QPainter p(qPrinter); const int dpiy = p.device()->logicalDpiY(); const int iMargin = (int) ((2/2.54)*dpiy); // 2 cm margins //QFont qFont = m_pTextEdit->document()->defaultFont(); QFont qFont = m_pTextEdit->currentFont(); p.setFont( qFont ); QFontMetrics fm = p.fontMetrics(); qreal iRatio= ( (qreal)p.device()->height() - 2*iMargin )/((qreal)60*fm.lineSpacing()); //p.scale(iRatio,iRatio); qDebug() << "Ratio=" + QString::number(qFont.pointSize()*iRatio); qFont.setPointSize((int)(qFont.pointSize()*iRatio)); //qFont.setPointSize(10); QFont qTitleFont=qFont; qTitleFont.setWeight(QFont::Bold); QFont qHeaderFont=qFont; qHeaderFont.setItalic(true); p.setFont( qFont ); fm = p.fontMetrics(); int iCurrentPage=1; if (bAll) { fromPage=0; toPage=1000000; } while( !qInStream.atEnd() ) { qLine=qInStream.readLine(); if ( iMargin + yPos > p.device()->height() - iMargin ) { if (iCurrentPage>=fromPage && iCurrentPagenewPage(); iCurrentPage++; yPos = 0; } // Change font if (iState==PARSER_NORMALTEXT) { if (qLine.indexOf(QChar('\f'))!=-1) { // Test if it is the header line p.setFont( qHeaderFont ); iState=PARSER_HEADER; yPos = 0; qLine="\n"; if (iCurrentPage>=fromPage && iCurrentPagenewPage(); } iCurrentPage++; } else if ( (qRegExpTitle.indexIn(qLine, 0)) != -1) { p.setFont( qTitleFont ); } else if ( (qRegExpFooter.indexIn(qLine, 0)) != -1) { // Test if it is the footer line p.setFont( qHeaderFont ); } } else if (iState==PARSER_HEADER) { if (!qLine.isEmpty()) { iState=PARSER_NORMALTEXT; } } if (iCurrentPage>=fromPage && iCurrentPage<=toPage) { p.drawText( iMargin, iMargin + yPos, p.device()->width(), fm.lineSpacing(), Qt::TextExpandTabs | Qt::TextDontClip, qLine ); yPos = yPos + fm.lineSpacing(); } if (iState==PARSER_NORMALTEXT) p.setFont( qFont ); } qFile.close(); } qrfcview-0.62/src/cprintdialog.cpp0000644000100300011300000000227010361674535020714 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #include CPrintDialog::CPrintDialog( QPrinter *p, QWidget *parent):QPrintDialog(p, parent) { setMinMax(1, 100); } CPrintDialog::~CPrintDialog() { } qrfcview-0.62/src/mainwindow.h0000644000100300011300000000642110361674535020060 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include class QAction; class QMenu; class QWorkspace; class MdiChild; class QSignalMapper; class QRFCLoader; class QProgressBar; class CDialogFind; class QTabWidget; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); void SetCurrentDir(QDir qCurrentDir) {m_qLastOpenDir=qCurrentDir;} protected: void closeEvent(QCloseEvent *event); public slots: void RFCLoad(uint32_t); void RFCReady(const QString &qFileName); private slots: void open(); void close(); void getrfc(); void copy(); void findOpen(); void findnext(); void findprev(); void about(); void setFont(); void setDirectories(); void updateMenus(); void updateWindowMenu(); MdiChild *createMdiChild(const QString &qTitle); void RFCStart(const QString &qFilename); void updateRFCProgress(int bytesRead, int totalBytes); void forward(); void backward(); void print(); private: void createActions(); void createMenus(); void createToolBars(); void createStatusBar(); void readSettings(); void writeSettings(); MdiChild *activeMdiChild(); MdiChild *findMdiChild(const QString &fileName); QTabWidget *m_qTabWidget; QSignalMapper *windowMapper; QMenu *fileMenu; QMenu *editMenu; QMenu *windowMenu; QMenu *helpMenu; QToolBar *fileToolBar; QToolBar *editToolBar; QAction *openAct, *printAct, *closeAct, *loadAct; QAction *exitAct; QAction *copyAct; QAction *setFontAct, *setDirectoriesAct; /* QAction *closeAct; QAction *closeAllAct; QAction *tileAct; QAction *cascadeAct; QAction *nextAct; QAction *previousAct; QAction *separatorAct;*/ QAction *aboutAct; QAction *aboutQtAct; QAction *backwardAct, *forwardAct; QAction *findAct, *findnextAct, *findprevAct; QProgressBar *m_pProgressBar; // Progress bar located in the status bar QFont m_qFont; // Font used for text display QStringList m_qDirectoryList; uint8_t m_iDefaultDirectory; QString m_qRFCURL; QRFCLoader *m_pRFCLoader; CDialogFind *m_pDialogFind; QDir m_qLastOpenDir; }; #endif qrfcview-0.62/src/mdichild.h0000644000100300011300000000502110361674535017454 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef MDICHILD_H #define MDICHILD_H #include #define PARSER_NORMALTEXT 0 #define PARSER_BIBTEXT 1 #define PARSER_HEADER 2 #define PARSER_TRAILER 3 class QTreeView; class QRFCEditor; class CTitleModel; class QModelIndex; class QFile; class QUrl; class QPrinter; class MdiChild : public QSplitter { Q_OBJECT public: MdiChild(QWidget *pParent=0); ~MdiChild(); bool loadFile(const QString &fileName); QString userFriendlyCurrentFile(); QString currentFile() { return curFile; } void copy(); bool hasSelection(); void setCurrentFont(const QFont &); bool FindText(QString &qTextToFind, uint32_t iOptionFlags); void Print(QPrinter *pPrinter, bool all, int fromPage, int toPage); uint32_t GetNbPages() {return m_iNbPages;} protected: void closeEvent(QCloseEvent *event); private: void setCurrentFile(const QString &fileName); QString strippedName(const QString &fullFileName); bool ParseRFCText(const QFile &qFile, QString &qOutput); public slots: void goToTitle(const QModelIndex &); void goToAnchor(const QUrl &qURL); public: QRFCEditor *m_pTextEdit; private: QTreeView *m_pTreeView; CTitleModel *m_pTitleModel; QString m_qFileName; QString curFile; bool isUntitled; uint32_t m_iNbPages; }; #endif qrfcview-0.62/src/cprintdialog.h0000644000100300011300000000240510361674535020361 0ustar RomainHomeGateway00000000000000/**************************************************************************** qRFCView, A smart IETF RFC viewer based on the Qt4 library. Copyright (C) 2005 Mitsubishi Electric ITE-TCL, R. Rollet (rollet@tcl.ite.mee.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *********************************************************************************/ #ifndef CPRINTDIALOG_H #define CPRINTDIALOG_H #include /** @author Romain Rollet */ class CPrintDialog : public QPrintDialog { Q_OBJECT public: CPrintDialog(QPrinter *p, QWidget *parent = 0); ~CPrintDialog(); }; #endif qrfcview-0.62/rfcview.kdevelop.pcs0000644000100300011300000020234210360705007020714 0ustar RomainHomeGateway00000000000000PCSZ/home/u1/Romain/src/rfcview/src/TitleItem.cppC`|V/home/u1/Romain/src/rfcview/src/TitleItem.hC`Ll\/home/u1/Romain/src/rfcview/src/TitleModel.cppC`rX/home/u1/Romain/src/rfcview/src/TitleModel.hC`*<^/home/u1/Romain/src/rfcview/src/cdialogfind.cppCi1:<Z/home/u1/Romain/src/rfcview/src/cdialogfind.hCi@n/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cppChHj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.hChIP`/home/u1/Romain/src/rfcview/src/cprintdialog.cppCo4^H\/home/u1/Romain/src/rfcview/src/cprintdialog.hCo1`\/home/u1/Romain/src/rfcview/src/mainwindow.cppd@X/home/u1/Romain/src/rfcview/src/mainwindow.h}0X/home/u1/Romain/src/rfcview/src/mdichild.cppCo`T/home/u1/Romain/src/rfcview/src/mdichild.h\/home/u1/Romain/src/rfcview/src/qrfceditor.cppCj6@X/home/u1/Romain/src/rfcview/src/qrfceditor.hCj47ښZ/home/u1/Romain/src/rfcview/src/rfcloader.cppV/home/u1/Romain/src/rfcview/src/rfcloader.hV/home/u1/Romain/src/rfcview/src/rfcview.cpp0V/home/u1/Romain/src/rfcview/src/rfcview.qrcN/home/u1/Romain/src/rfcview/src/src.proTZ/home/u1/Romain/src/rfcview/src/TitleItem.cppCTitleItemZ/home/u1/Romain/src/rfcview/src/TitleItem.cpp CTitleItemc.m qTitleconst QString&qAnchorconst QString& parentCTitleItem*appendChildZ/home/u1/Romain/src/rfcview/src/TitleItem.cppCTitleItemitemCTitleItem*void childZ/home/u1/Romain/src/rfcview/src/TitleItem.cppCTitleItemTrowintCTitleItem*childCountZ/home/u1/Romain/src/rfcview/src/TitleItem.cppCTitleItemint parentZ/home/u1/Romain/src/rfcview/src/TitleItem.cpp"CTitleItemCTitleItem*rowZ/home/u1/Romain/src/rfcview/src/TitleItem.cpp$*CTitleItemint~ CTitleItemZ/home/u1/Romain/src/rfcview/src/TitleItem.cpp CTitleItemV/home/u1/Romain/src/rfcview/src/TitleItem.hCTitleItemV/home/u1/Romain/src/rfcview/src/TitleItem.h CTitleItemV/home/u1/Romain/src/rfcview/src/TitleItem.h  ECTitleItemh.mconst QString&const QString& parentCTitleItem*GetAnchorV/home/u1/Romain/src/rfcview/src/TitleItem.h+CTitleItemnp.QStringGetTitleV/home/u1/Romain/src/rfcview/src/TitleItem.h)CTitleItemQStringappendChildV/home/u1/Romain/src/rfcview/src/TitleItem.h 'CTitleItemF childCTitleItem*void childV/home/u1/Romain/src/rfcview/src/TitleItem.hCTitleItemrowintCTitleItem*childCountV/home/u1/Romain/src/rfcview/src/TitleItem.hCTitleItem intcolumnCountV/home/u1/Romain/src/rfcview/src/TitleItem.h'CTitleItemM int parentV/home/u1/Romain/src/rfcview/src/TitleItem.hCTitleItemeveCTitleItem*rowV/home/u1/Romain/src/rfcview/src/TitleItem.hCTitleItem int~ CTitleItemV/home/u1/Romain/src/rfcview/src/TitleItem.h  CTitleItemGetAnchorV/home/u1/Romain/src/rfcview/src/TitleItem.h+CTitleItemnp.QStringGetTitleV/home/u1/Romain/src/rfcview/src/TitleItem.h)CTitleItemQStringcolumnCountV/home/u1/Romain/src/rfcview/src/TitleItem.h'CTitleItemM intchildItemsV/home/u1/Romain/src/rfcview/src/TitleItem.h!*QList< CTitleItem * >m_qAnchorV/home/u1/Romain/src/rfcview/src/TitleItem.h QStringm_qTitleV/home/u1/Romain/src/rfcview/src/TitleItem.h QStringparentItemV/home/u1/Romain/src/rfcview/src/TitleItem.hCTitleItem*\/home/u1/Romain/src/rfcview/src/TitleModel.cpp CTitleModel\/home/u1/Romain/src/rfcview/src/TitleModel.cpp CTitleModel.leqRFCNameconst QString& parentQObject*ParseTitle\/home/u1/Romain/src/rfcview/src/TitleModel.cppqCTitleModel qLevelconst QString& qTitleconst QString&boolcolumnCount\/home/u1/Romain/src/rfcview/src/TitleModel.cpp!'CTitleModel; parent$const QModelIndex&intdata\/home/u1/Romain/src/rfcview/src/TitleModel.cpp)3CTitleModelџ index$const QModelIndex&roleintQVariant flags\/home/u1/Romain/src/rfcview/src/TitleModel.cpp5;CTitleModel index$const QModelIndex&Qt::ItemFlagsheaderData\/home/u1/Romain/src/rfcview/src/TitleModel.cpp=DCTitleModelsectionintorientationQt::OrientationroleintQVariant index\/home/u1/Romain/src/rfcview/src/TitleModel.cppFUCTitleModel)(drowint columnint parent$const QModelIndex&QModelIndex parent\/home/u1/Romain/src/rfcview/src/TitleModel.cppWcCTitleModel index$const QModelIndex&QModelIndexrowCount\/home/u1/Romain/src/rfcview/src/TitleModel.cppeoCTitleModelcaf parent$const QModelIndex&int~ CTitleModel\/home/u1/Romain/src/rfcview/src/TitleModel.cppCTitleModelrX/home/u1/Romain/src/rfcview/src/TitleModel.hCTitleModelX/home/u1/Romain/src/rfcview/src/TitleModel.h #$QAbstractItemModel CTitleModelX/home/u1/Romain/src/rfcview/src/TitleModel.h9CTitleModel.ledataconst QString& parentQObject*ParseTitleX/home/u1/Romain/src/rfcview/src/TitleModel.h ACTitleModelӖ qLevelconst QString& qTitleconst QString&boolcolumnCountX/home/u1/Romain/src/rfcview/src/TitleModel.hDCTitleModelӭ  parent$const QModelIndex&intdataX/home/u1/Romain/src/rfcview/src/TitleModel.h ;CTitleModel/ index$const QModelIndex&roleintQVariant flagsX/home/u1/Romain/src/rfcview/src/TitleModel.h7CTitleModel@ index$const QModelIndex&Qt::ItemFlagsheaderDataX/home/u1/Romain/src/rfcview/src/TitleModel.h cCTitleModelN sectionintorientationQt::OrientationroleintQVariant indexX/home/u1/Romain/src/rfcview/src/TitleModel.hFCTitleModel7rowint columnint parent$const QModelIndex&QModelIndex parentX/home/u1/Romain/src/rfcview/src/TitleModel.h6CTitleModel. index$const QModelIndex&QModelIndexrowCountX/home/u1/Romain/src/rfcview/src/TitleModel.hACTitleModelՓ  parent$const QModelIndex&int~ CTitleModelX/home/u1/Romain/src/rfcview/src/TitleModel.hCTitleModel߀2m_iCurrentValidTitleLevelX/home/u1/Romain/src/rfcview/src/TitleModel.h %uint8_t.m_iCurrentValidTitleNumX/home/u1/Romain/src/rfcview/src/TitleModel.h 7uint8_t&m_pCurrentTitleItemX/home/u1/Romain/src/rfcview/src/TitleModel.h  7CTitleItem*rootItemX/home/u1/Romain/src/rfcview/src/TitleModel.h""CTitleItem*^/home/u1/Romain/src/rfcview/src/cdialogfind.cppCDialogFind^/home/u1/Romain/src/rfcview/src/cdialogfind.cppCDialogFinddni parentQWidget*pPrevResearchQStringList*iOptionFlagsuint32_tGetOptionFlags^/home/u1/Romain/src/rfcview/src/cdialogfind.cpp+CDialogFindҠuint32_tGetTextToFind^/home/u1/Romain/src/rfcview/src/cdialogfind.cppCDialogFindѿQStringSetOptionFlags^/home/u1/Romain/src/rfcview/src/cdialogfind.cpp-4CDialogFind_iOptionFlagsuint32_tvoidfind^/home/u1/Romain/src/rfcview/src/cdialogfind.cppCDialogFind׎void~ CDialogFind^/home/u1/Romain/src/rfcview/src/cdialogfind.cpp CDialogFind֥Z/home/u1/Romain/src/rfcview/src/cdialogfind.hCDialogFindZ/home/u1/Romain/src/rfcview/src/cdialogfind.h"QDialogCDialogFindZ/home/u1/Romain/src/rfcview/src/cdialogfind.h_CDialogFinddni parentQWidget*pPrevResearchQStringList*iOptionFlagsuint32_tGetOptionFlagsZ/home/u1/Romain/src/rfcview/src/cdialogfind.h CDialogFinduint32_tGetTextToFindZ/home/u1/Romain/src/rfcview/src/cdialogfind.h CDialogFind̀QStringSetOptionFlagsZ/home/u1/Romain/src/rfcview/src/cdialogfind.h .CDialogFindiOptionFlagsuint32_tvoidfindZ/home/u1/Romain/src/rfcview/src/cdialogfind.h CDialogFindvoidfindnextZ/home/u1/Romain/src/rfcview/src/cdialogfind.h CDialogFindvoid~ CDialogFindZ/home/u1/Romain/src/rfcview/src/cdialogfind.hCDialogFindgm_uiZ/home/u1/Romain/src/rfcview/src/cdialogfind.h  Ui_findDialogn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cpp&CDialogSetDirectoryn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cpp &CDialogSetDirectory.yrpDirectoryListQStringList*iDefaultDirRowuint8_tqRFCURLQString& parentQWidget* GetDirectoryListn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cpp'1&CDialogSetDirectorypDirectoryListQStringList*int$addDirectoryToListn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cpp3<&CDialogSetDirectoryqvoid(remDirectoryFromListn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cpp>F&CDialogSetDirectory$void&setDefaultDirectoryn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cppHU&CDialogSetDirectoryvoid*~ CDialogSetDirectoryn/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.cpp#%&CDialogSetDirectoryj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h&CDialogSetDirectoryj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h QDialog&CDialogSetDirectoryj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h  p&CDialogSetDirectory.yrpDirectoryListQStringList*iDefaultDiruint8_tqRFCURLQString& parentQWidget*GetDefaultDirj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h6&CDialogSetDirectory uint8_t GetDirectoryListj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h5&CDialogSetDirectorypDirectoryListQStringList*intGetRFCURLj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h:&CDialogSetDirectoryQString$addDirectoryToListj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h &CDialogSetDirectoryvoid(remDirectoryFromListj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h &CDialogSetDirectoryvoid&setDefaultDirectoryj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h &CDialogSetDirectoryvoid*~ CDialogSetDirectoryj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h&CDialogSetDirectorynGetDefaultDirj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h6&CDialogSetDirectory uint8_tGetRFCURLj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h:&CDialogSetDirectoryQString m_iDefaultDirRowj/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h uint8_tm_uij/home/u1/Romain/src/rfcview/src/cdialogsetdirectory.h$Ui_directoryDialog`/home/u1/Romain/src/rfcview/src/cprintdialog.cppCPrintDialog`/home/u1/Romain/src/rfcview/src/cprintdialog.cppCPrintDialogolapQPrinter* parentQWidget*~ CPrintDialog`/home/u1/Romain/src/rfcview/src/cprintdialog.cpp CPrintDialogl\/home/u1/Romain/src/rfcview/src/cprintdialog.hCPrintDialog\/home/u1/Romain/src/rfcview/src/cprintdialog.hQPrintDialogCPrintDialog\/home/u1/Romain/src/rfcview/src/cprintdialog.h  2CPrintDialogNpQPrinter* parentQWidget*~ CPrintDialog\/home/u1/Romain/src/rfcview/src/cprintdialog.h  CPrintDialog6\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindow\/home/u1/Romain/src/rfcview/src/mainwindow.cpp%EMainWindow.woRFCLoad\/home/u1/Romain/src/rfcview/src/mainwindow.cpp%7MainWindowiRFCNumuint32_tvoidRFCReady\/home/u1/Romain/src/rfcview/src/mainwindow.cppAMMainWindowqFilenameconst QString&voidRFCStart\/home/u1/Romain/src/rfcview/src/mainwindow.cpp9?MainWindowqFilenameconst QString&void about\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidactiveMdiChild\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowMdiChild*backward\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoid close\/home/u1/Romain/src/rfcview/src/mainwindow.cppnxMainWindowvoidcloseEvent\/home/u1/Romain/src/rfcview/src/mainwindow.cppGSMainWindow eventQCloseEvent*voidcopy\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidcreateActions\/home/u1/Romain/src/rfcview/src/mainwindow.cppOMainWindowvoidcreateMdiChild\/home/u1/Romain/src/rfcview/src/mainwindow.cppAMMainWindow qTitleconst QString&MdiChild*createMenus\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidcreateStatusBar\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidcreateToolBars\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidfindMdiChild\/home/u1/Romain/src/rfcview/src/mainwindow.cpp#MainWindowfileNameconst QString&MdiChild*findOpen\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidfindnext\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidfindprev\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidforward\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoid getrfc\/home/u1/Romain/src/rfcview/src/mainwindow.cppzMainWindowvoidopen\/home/u1/Romain/src/rfcview/src/mainwindow.cppVlMainWindowvoid print\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidreadSettings\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidsetDirectories\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidsetFont\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidupdateMenus\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoid"updateRFCProgress\/home/u1/Romain/src/rfcview/src/mainwindow.cppOSMainWindowbytesReadinttotalBytesintvoid updateWindowMenu\/home/u1/Romain/src/rfcview/src/mainwindow.cpp?MainWindowvoidwriteSettings\/home/u1/Romain/src/rfcview/src/mainwindow.cppMainWindowvoidX/home/u1/Romain/src/rfcview/src/mainwindow.hMainWindowX/home/u1/Romain/src/rfcview/src/mainwindow.haQMainWindowMainWindowX/home/u1/Romain/src/rfcview/src/mainwindow.hMainWindow.woRFCLoadX/home/u1/Romain/src/rfcview/src/mainwindow.h MainWindowuint32_tvoidRFCReadyX/home/u1/Romain/src/rfcview/src/mainwindow.h +MainWindow qFileNameconst QString&voidRFCStartX/home/u1/Romain/src/rfcview/src/mainwindow.h/ /+MainWindow ɂqFilenameconst QString&voidSetCurrentDirX/home/u1/Romain/src/rfcview/src/mainwindow.hFMainWindow qCurrentDirQDirvoid aboutX/home/u1/Romain/src/rfcview/src/mainwindow.h( (MainWindow ˂voidactiveMdiChildX/home/u1/Romain/src/rfcview/src/mainwindow.h= =MainWindow ˀMdiChild*backwardX/home/u1/Romain/src/rfcview/src/mainwindow.h2 2MainWindow Ȃvoid closeX/home/u1/Romain/src/rfcview/src/mainwindow.h" "MainWindow ΂voidcloseEventX/home/u1/Romain/src/rfcview/src/mainwindow.h 'MainWindow  eventQCloseEvent*voidcopyX/home/u1/Romain/src/rfcview/src/mainwindow.h$ $MainWindow ȂvoidcreateActionsX/home/u1/Romain/src/rfcview/src/mainwindow.h7 7MainWindow voidcreateMdiChildX/home/u1/Romain/src/rfcview/src/mainwindow.h- -3MainWindow  qTitleconst QString&MdiChild*createMenusX/home/u1/Romain/src/rfcview/src/mainwindow.h8 8MainWindowvoidcreateStatusBarX/home/u1/Romain/src/rfcview/src/mainwindow.h: :MainWindow ʀvoidcreateToolBarsX/home/u1/Romain/src/rfcview/src/mainwindow.h9 9MainWindow voidfindMdiChildX/home/u1/Romain/src/rfcview/src/mainwindow.h> >3MainWindow fileNameconst QString&MdiChild*findOpenX/home/u1/Romain/src/rfcview/src/mainwindow.h% %MainWindow voidfindnextX/home/u1/Romain/src/rfcview/src/mainwindow.h& &MainWindow voidfindprevX/home/u1/Romain/src/rfcview/src/mainwindow.h' 'MainWindowvoidforwardX/home/u1/Romain/src/rfcview/src/mainwindow.h1 1MainWindow void getrfcX/home/u1/Romain/src/rfcview/src/mainwindow.h# #MainWindowvoidopenX/home/u1/Romain/src/rfcview/src/mainwindow.h! !MainWindow ʂvoid printX/home/u1/Romain/src/rfcview/src/mainwindow.h3 3MainWindow voidreadSettingsX/home/u1/Romain/src/rfcview/src/mainwindow.h; ;MainWindow voidsetDirectoriesX/home/u1/Romain/src/rfcview/src/mainwindow.h* *MainWindowvoidsetFontX/home/u1/Romain/src/rfcview/src/mainwindow.h) )MainWindow voidupdateMenusX/home/u1/Romain/src/rfcview/src/mainwindow.h+ +MainWindow void"updateRFCProgressX/home/u1/Romain/src/rfcview/src/mainwindow.h0 09MainWindow ɂbytesReadinttotalBytesintvoid updateWindowMenuX/home/u1/Romain/src/rfcview/src/mainwindow.h, ,MainWindow ΂voidwriteSettingsX/home/u1/Romain/src/rfcview/src/mainwindow.h< <MainWindowvoidSetCurrentDirX/home/u1/Romain/src/rfcview/src/mainwindow.hFMainWindow qCurrentDirQDirvoidaboutActX/home/u1/Romain/src/rfcview/src/mainwindow.hU UQAction*aboutQtActX/home/u1/Romain/src/rfcview/src/mainwindow.hV VQAction*backwardActX/home/u1/Romain/src/rfcview/src/mainwindow.hW WQAction*closeActX/home/u1/Romain/src/rfcview/src/mainwindow.hI!I*QAction*copyActX/home/u1/Romain/src/rfcview/src/mainwindow.hK KQAction*editMenuX/home/u1/Romain/src/rfcview/src/mainwindow.hD D QMenu*editToolBarX/home/u1/Romain/src/rfcview/src/mainwindow.hH HQToolBar*exitActX/home/u1/Romain/src/rfcview/src/mainwindow.hJ JQAction*fileMenuX/home/u1/Romain/src/rfcview/src/mainwindow.hC C QMenu*fileToolBarX/home/u1/Romain/src/rfcview/src/mainwindow.hG GQToolBar*findActX/home/u1/Romain/src/rfcview/src/mainwindow.hX XQAction*findnextActX/home/u1/Romain/src/rfcview/src/mainwindow.hXX"QAction*findprevActX/home/u1/Romain/src/rfcview/src/mainwindow.hX$X0QAction*forwardActX/home/u1/Romain/src/rfcview/src/mainwindow.hWW%QAction*helpMenuX/home/u1/Romain/src/rfcview/src/mainwindow.hF F QMenu*loadActX/home/u1/Romain/src/rfcview/src/mainwindow.hI,I4QAction*&m_iDefaultDirectoryX/home/u1/Romain/src/rfcview/src/mainwindow.h\ \uint8_tm_pDialogFindX/home/u1/Romain/src/rfcview/src/mainwindow.h__CDialogFind*m_pProgressBarX/home/u1/Romain/src/rfcview/src/mainwindow.hYY QProgressBar*m_pRFCLoaderX/home/u1/Romain/src/rfcview/src/mainwindow.h^^QRFCLoader* m_qDirectoryListX/home/u1/Romain/src/rfcview/src/mainwindow.h[[ QStringListm_qFontX/home/u1/Romain/src/rfcview/src/mainwindow.hZ Z QFontm_qLastOpenDirX/home/u1/Romain/src/rfcview/src/mainwindow.h` `QDirm_qRFCURLX/home/u1/Romain/src/rfcview/src/mainwindow.h] ]QStringm_qTabWidgetX/home/u1/Romain/src/rfcview/src/mainwindow.h@@QTabWidget*openActX/home/u1/Romain/src/rfcview/src/mainwindow.hI IQAction*printActX/home/u1/Romain/src/rfcview/src/mainwindow.hIIQAction*"setDirectoriesActX/home/u1/Romain/src/rfcview/src/mainwindow.hLL+QAction*setFontActX/home/u1/Romain/src/rfcview/src/mainwindow.hL LQAction*windowMapperX/home/u1/Romain/src/rfcview/src/mainwindow.hAAQSignalMapper*windowMenuX/home/u1/Romain/src/rfcview/src/mainwindow.hE E QMenu*X/home/u1/Romain/src/rfcview/src/mdichild.cppFindTextX/home/u1/Romain/src/rfcview/src/mdichild.cpp3MdiChildqTextToFindQString&iOptionFlagsuint32_tboolMdiChildX/home/u1/Romain/src/rfcview/src/mdichild.cpp!-MdiChildpParentQWidget*ParseRFCTextX/home/u1/Romain/src/rfcview/src/mdichild.cppMdiChild埀 qFileconst QFile&qOutputQString&bool PrintX/home/u1/Romain/src/rfcview/src/mdichild.cpp6MdiChild\qPrinterQPrinter*bAllboolfromPageint toPageintvoidcloseEventX/home/u1/Romain/src/rfcview/src/mdichild.cpp[dMdiChild eventQCloseEvent*voidcopyX/home/u1/Romain/src/rfcview/src/mdichild.cppuxMdiChildvoidgoToAnchorX/home/u1/Romain/src/rfcview/src/mdichild.cppMdiChildqURLconst QUrl&voidgoToTitleX/home/u1/Romain/src/rfcview/src/mdichild.cppMdiChild:qModelIndex$const QModelIndex&voidhasSelectionX/home/u1/Romain/src/rfcview/src/mdichild.cppz}MdiChildUboolloadFileX/home/u1/Romain/src/rfcview/src/mdichild.cpp7SMdiChildpc.fileNameconst QString&boolsetCurrentFileX/home/u1/Romain/src/rfcview/src/mdichild.cppgnMdiChildfileNameconst QString&voidsetCurrentFontX/home/u1/Romain/src/rfcview/src/mdichild.cppMdiChild qFontconst QFont&voidstrippedNameX/home/u1/Romain/src/rfcview/src/mdichild.cpppsMdiChildfullFileNameconst QString&QString.userFriendlyCurrentFileX/home/u1/Romain/src/rfcview/src/mdichild.cppVYMdiChildQString~ MdiChildX/home/u1/Romain/src/rfcview/src/mdichild.cpp/5MdiChildT/home/u1/Romain/src/rfcview/src/mdichild.hMdiChildT/home/u1/Romain/src/rfcview/src/mdichild.h)PQSplitterFindTextT/home/u1/Romain/src/rfcview/src/mdichild.h6 6BMdiChildqTextToFindQString&iOptionFlagsuint32_tboolGetNbPagesT/home/u1/Romain/src/rfcview/src/mdichild.h882MdiChild.peuint32_tMdiChildT/home/u1/Romain/src/rfcview/src/mdichild.h..$MdiChildivmpParentQWidget*ParseRFCTextT/home/u1/Romain/src/rfcview/src/mdichild.h@ @?MdiChild qFileconst QFile&qOutputQString&bool PrintT/home/u1/Romain/src/rfcview/src/mdichild.h7 7JMdiChildpPrinterQPrinter*allboolfromPageint toPageintvoidcloseEventT/home/u1/Romain/src/rfcview/src/mdichild.h; ;+MdiChildp.e eventQCloseEvent*voidcopyT/home/u1/Romain/src/rfcview/src/mdichild.h3 3MdiChildvoidcurrentFileT/home/u1/Romain/src/rfcview/src/mdichild.h221MdiChild&QStringgoToAnchorT/home/u1/Romain/src/rfcview/src/mdichild.hD D)MdiChildnp.qURLconst QUrl&voidgoToTitleT/home/u1/Romain/src/rfcview/src/mdichild.hC C+MdiChildwen$const QModelIndex&voidhasSelectionT/home/u1/Romain/src/rfcview/src/mdichild.h4 4MdiChild.txboolloadFileT/home/u1/Romain/src/rfcview/src/mdichild.h0 0.MdiChild h.fileNameconst QString&boolsetCurrentFileT/home/u1/Romain/src/rfcview/src/mdichild.h> >4MdiChildɨfileNameconst QString&voidsetCurrentFontT/home/u1/Romain/src/rfcview/src/mdichild.h5 5*MdiChildx.nconst QFont&voidstrippedNameT/home/u1/Romain/src/rfcview/src/mdichild.h??9MdiChildopefullFileNameconst QString&QString.userFriendlyCurrentFileT/home/u1/Romain/src/rfcview/src/mdichild.h11)MdiChildQString~ MdiChildT/home/u1/Romain/src/rfcview/src/mdichild.h//MdiChild㶀GetNbPagesT/home/u1/Romain/src/rfcview/src/mdichild.h882MdiChild.peuint32_tcurrentFileT/home/u1/Romain/src/rfcview/src/mdichild.h221MdiChild&QStringcurFileT/home/u1/Romain/src/rfcview/src/mdichild.hLLQStringisUntitledT/home/u1/Romain/src/rfcview/src/mdichild.hM Mboolm_iNbPagesT/home/u1/Romain/src/rfcview/src/mdichild.hNNuint32_tm_pTextEditT/home/u1/Romain/src/rfcview/src/mdichild.hGGQRFCEditor*m_pTitleModelT/home/u1/Romain/src/rfcview/src/mdichild.hJJ CTitleModel*m_pTreeViewT/home/u1/Romain/src/rfcview/src/mdichild.hIIQTreeView*m_qFileNameT/home/u1/Romain/src/rfcview/src/mdichild.hKKQString\/home/u1/Romain/src/rfcview/src/qrfceditor.cppQRFCEditor\/home/u1/Romain/src/rfcview/src/qrfceditor.cppQRFCEditor.ro parentQWidget*backward\/home/u1/Romain/src/rfcview/src/qrfceditor.cpp2HQRFCEditorvoidforward\/home/u1/Romain/src/rfcview/src/qrfceditor.cppJYQRFCEditorvoid&isBackwardAvailable\/home/u1/Romain/src/rfcview/src/qrfceditor.cpp[^QRFCEditorbool$isForwardAvailable\/home/u1/Romain/src/rfcview/src/qrfceditor.cpp`cQRFCEditorboolscrollToAnchor2\/home/u1/Romain/src/rfcview/src/qrfceditor.cpp0QRFCEditornameconst QString&voidsetSource\/home/u1/Romain/src/rfcview/src/qrfceditor.cppQRFCEditornameconst QUrl&void~ QRFCEditor\/home/u1/Romain/src/rfcview/src/qrfceditor.cpp QRFCEditor 0X/home/u1/Romain/src/rfcview/src/qrfceditor.hQRFCEditorX/home/u1/Romain/src/rfcview/src/qrfceditor.h QTextBrowser QRFCEditorX/home/u1/Romain/src/rfcview/src/qrfceditor.h  #QRFCEditor.ro parentQWidget* RFCReqX/home/u1/Romain/src/rfcview/src/qrfceditor.h QRFCEditoruint32_tvoidbackwardX/home/u1/Romain/src/rfcview/src/qrfceditor.h QRFCEditorvoidforwardX/home/u1/Romain/src/rfcview/src/qrfceditor.h QRFCEditorLvoid&isBackwardAvailableX/home/u1/Romain/src/rfcview/src/qrfceditor.h QRFCEditorQbool$isForwardAvailableX/home/u1/Romain/src/rfcview/src/qrfceditor.h QRFCEditorQboolscrollToAnchor2X/home/u1/Romain/src/rfcview/src/qrfceditor.h 1QRFCEditor/nameconst QString&voidsetSourceX/home/u1/Romain/src/rfcview/src/qrfceditor.h (QRFCEditornameconst QUrl&void~ QRFCEditorX/home/u1/Romain/src/rfcview/src/qrfceditor.hQRFCEditor*m_iCurrentPositionIdxX/home/u1/Romain/src/rfcview/src/qrfceditor.hintm_qPositionPathX/home/u1/Romain/src/rfcview/src/qrfceditor.hQList< int >Z/home/u1/Romain/src/rfcview/src/rfcloader.cppGetFileZ/home/u1/Romain/src/rfcview/src/rfcloader.cpp<dQRFCLoaderriRFCNumuint32_tvoidQRFCLoaderZ/home/u1/Romain/src/rfcview/src/rfcloader.cppQRFCLoaderl parentQObject*SetDirectoriesZ/home/u1/Romain/src/rfcview/src/rfcloader.cpp4QRFCLoaderaqDirListQStringList&iDefaultDiruint8_tvoidSetDownloadURLZ/home/u1/Romain/src/rfcview/src/rfcloader.cpp6:QRFCLoaderdqURL QUrl&voidfileDownloadZ/home/u1/Romain/src/rfcview/src/rfcloader.cppQRFCLoaderaiRequestIDint bErrorboolvoidreceivedHeaderZ/home/u1/Romain/src/rfcview/src/rfcloader.cppoQRFCLoadersqResponseHdr4const QHttpResponseHeader&voidstartDownloadZ/home/u1/Romain/src/rfcview/src/rfcloader.cppfmQRFCLoaderriRequestIDintvoid~ QRFCLoaderZ/home/u1/Romain/src/rfcview/src/rfcloader.cppQRFCLoaderc.rV/home/u1/Romain/src/rfcview/src/rfcloader.hQRFCLoaderV/home/u1/Romain/src/rfcview/src/rfcloader.h2QObjectRFCDesc_tV/home/u1/Romain/src/rfcview/src/rfcloader.hQRFCLoaderiRFCNumV/home/u1/Romain/src/rfcview/src/rfcloader.huint32_t pFileV/home/u1/Romain/src/rfcview/src/rfcloader.h  QFile* GetFileV/home/u1/Romain/src/rfcview/src/rfcloader.h "QRFCLoaderiRFCNumuint32_tvoidGetQHttpV/home/u1/Romain/src/rfcview/src/rfcloader.h'QRFCLoader QHttp*QRFCLoaderV/home/u1/Romain/src/rfcview/src/rfcloader.h#QRFCLoaderH parentQObject*SetDirectoriesV/home/u1/Romain/src/rfcview/src/rfcloader.h CQRFCLoaderh.rqDirListQStringList&iDefaultDiruint8_tvoidSetDownloadURLV/home/u1/Romain/src/rfcview/src/rfcloader.h #QRFCLoaderBqURL QUrl&voiddoneV/home/u1/Romain/src/rfcview/src/rfcloader.h# #'QRFCLoadersFilenameconst QString&voidfileDownloadV/home/u1/Romain/src/rfcview/src/rfcloader.h' '2QRFCLoaderiRequestIDint bErrorboolvoidreceivedHeaderV/home/u1/Romain/src/rfcview/src/rfcloader.h( (@QRFCLoaderqResponseHdr4const QHttpResponseHeader&void startV/home/u1/Romain/src/rfcview/src/rfcloader.h" "(QRFCLoadersFilenameconst QString&voidstartDownloadV/home/u1/Romain/src/rfcview/src/rfcloader.h& &&QRFCLoaderiRequestIDintvoid~ QRFCLoaderV/home/u1/Romain/src/rfcview/src/rfcloader.hQRFCLoaderGetQHttpV/home/u1/Romain/src/rfcview/src/rfcloader.h'QRFCLoader QHttp*m_RequestListV/home/u1/Romain/src/rfcview/src/rfcloader.h00&,QMap< int, RFCDesc_t >&m_iCurrentRequestIDV/home/u1/Romain/src/rfcview/src/rfcloader.h..intm_iDefaultDirV/home/u1/Romain/src/rfcview/src/rfcloader.h, ,uint8_tm_qDirListV/home/u1/Romain/src/rfcview/src/rfcloader.h++QStringListm_qHttpV/home/u1/Romain/src/rfcview/src/rfcloader.h1 1 QHttp*m_qIETFPathV/home/u1/Romain/src/rfcview/src/rfcloader.h--$QStringm_qIETFSiteV/home/u1/Romain/src/rfcview/src/rfcloader.h- -QStringV/home/u1/Romain/src/rfcview/src/rfcview.cppmainV/home/u1/Romain/src/rfcview/src/rfcview.cppppcargcint argv[] char*intmainV/home/u1/Romain/src/rfcview/src/rfcview.cppppcargcint argv[] char*intV/home/u1/Romain/src/rfcview/src/rfcview.qrcN/home/u1/Romain/src/rfcview/src/src.proqrfcview-0.62/LICENSE0000644000100300011300000004313310360762106015741 0ustar RomainHomeGateway00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. qrfcview-0.62/Doxyfile0000644000100300011300000002371610360705007016444 0ustar RomainHomeGateway00000000000000# Doxyfile 1.4.1-KDevelop #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = rfcview.kdevelop PROJECT_NUMBER = 0.1 OUTPUT_DIRECTORY = CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = YES STRIP_FROM_PATH = /home/u1/Romain/src/testqt4/ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES SHOW_DIRECTORIES = YES FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = /home/u1/Romain/src/rfcview FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.dox \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM \ *.C \ *.H \ *.tlh \ *.diff \ *.patch \ *.moc \ *.xpm \ *.dox RECURSIVE = yes EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = YES LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = yes XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = rfcview.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO qrfcview-0.62/rfcview.pro0000644000100300011300000000003510360705007017112 0ustar RomainHomeGateway00000000000000TEMPLATE=subdirs SUBDIRS=src qrfcview-0.62/nsis-installer/0000755000100300011300000000000010456624533017706 5ustar RomainHomeGateway00000000000000qrfcview-0.62/nsis-installer/bin/0000755000100300011300000000000010456624533020456 5ustar RomainHomeGateway00000000000000qrfcview-0.62/nsis-installer/build-nsis.txt0000644000100300011300000000107210361141764022513 0ustar RomainHomeGateway00000000000000NSIS installer (made from similar doc by Christophe Gisquet) 1) Getting NSIS from http://nsis.sourceforge.net/ and install it 2) Make some folder inside qrfcview folder, like nsis-installer/. 3) Copy qrfcview.nsi to this folder 4) From your build of qRFCView and installation of Qt4, copy those files/folders, keeping the paths, to nssis-installer/: bin\mingwm10.dll bin\QtCore4.dll bin\QtDesignerComponents4.dll bin\QtGui4.dll bin\QtNetwork4.dll bin\qRFCView.exe 5) Double-click on the .nsi file and the installer will automatically be built. ====== qrfcview-0.62/nsis-installer/qrfcview.nsi0000644000100300011300000001021010361141764022234 0ustar RomainHomeGateway00000000000000;based on MUI Welcome/Finish Page Example Script written by Joost Verburg ;based on FFDShow install ;based on demexp installer by Christophe GISQUET !define MUI_COMPONENTSPAGE_SMALLDESC !define MUI_LANGDLL_ALWAYSSHOW !include "MUI.nsh" !include "Sections.nsh" !include "LogicLib.nsh" !include "StrFunc.nsh" ${StrStr} Name "qRFCView" !define QRFCVIEW_VERSION "0.62" ;General OutFile "qrfcview-${QRFCVIEW_VERSION}-setup.exe" !ifndef COMPRESSION !define COMPRESSION lzma !endif SetCompressor ${COMPRESSION} !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" !define MUI_LANGDLL_REGISTRY_KEY "SOFTWARE\MELCO\qrfcview" !define MUI_LANGDLL_REGISTRY_VALUENAME "lang" ;-------------------------------- ;Configuration !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE $(qrfcviewLicense) !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH !define MUI_ABORTWARNING ;Language !insertmacro MUI_LANGUAGE "English" LicenseLangString qrfcviewLicense ${LANG_ENGLISH} "..\LICENSE" LangString TITLE_qrfcview ${LANG_ENGLISH} "qRFCView" LangString DESC_qrfcview ${LANG_ENGLISH} "Installs qRFCView ${QRFCVIEW_VERSION}" ;Folder-selection page InstallDir "$PROGRAMFILES\qrfcview" ; Registry key to check for directory (so if you install again, it will ; overwrite the old one automatically) InstallDirRegKey HKLM SOFTWARE\MELCO\qrfcview "pth" AutoCloseWindow false ;-------------------------------- ;Installer Sections Section $(TITLE_qrfcview) Sec_qrfcview ; Set output path to the installation directory. SetOutPath $INSTDIR ; Put file there File "..\LICENSE" SetOutPath $INSTDIR\bin File "bin\mingwm10.dll" File "bin\QtCore4.dll" File "bin\QtDesignerComponents4.dll" File "bin\QtGui4.dll" File "bin\QtNetwork4.dll" File "bin\qRFCView.exe" ; Write the installation path into the registry WriteRegStr HKLM SOFTWARE\MELCO\qrfcview "pth" "$INSTDIR" ; Write the uninstall keys for Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qrfcview" "DisplayName" "qrfcview (remove only)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qrfcview" "UninstallString" '"$INSTDIR\uninstall.exe"' WriteUninstaller "uninstall.exe" ; Shortcuts SetShellVarContext all CreateDirectory "$SMPROGRAMS\qrfcview" CreateShortCut "$SMPROGRAMS\qrfcview\qrfcview.lnk" "$INSTDIR\bin\qrfcview.exe" "" "$INSTDIR\bin\qrfcview.exe" 0 CreateShortCut "$SMPROGRAMS\qrfcview\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 ;Write language to the registry (for the uninstaller) WriteRegStr HKLM SOFTWARE\MELCO\qrfcview "Installer Language" $LANGUAGE GetFullPathName /SHORT $SHORTINSTDIR $INSTDIR SectionEnd ;-------------------------------- ;Descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Sec_qrfcview} $(DESC_qrfcview) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ;Uninstaller Section Section "Uninstall" ; remove registry keys DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qrfcview" DeleteRegKey HKLM SOFTWARE\MELCO\qrfcview DeleteRegKey HKCU SOFTWARE\MELCO\qrfcview ; remove shortcuts, if any. SetShellVarContext all Delete "$SMPROGRAMS\qrfcview\*.*" RMDir "$SMPROGRAMS\qrfcview" ; remove files Delete "$INSTDIR\bin\mingwm10.dll" Delete "$INSTDIR\bin\QtCore4.dll" Delete "$INSTDIR\bin\QtDesignerComponents4.dll" Delete "$INSTDIR\bin\QtGui4.dll" Delete "$INSTDIR\bin\QtNetwork4.dll" Delete "$INSTDIR\bin\qRFCView.exe" RMDir "$INSTDIR\bin" ; MUST REMOVE UNINSTALLER, too Delete "$INSTDIR\uninstall.exe" Delete "$INSTDIR\LICENSE" RMDir "$INSTDIR" ; !insertmacro MUI_UNFINISHHEADER SectionEnd Function .onInit ;Language selection !insertmacro MUI_LANGDLL_DISPLAY SectionSetFlags ${Sec_qrfcview} 17 FunctionEnd Function un.onInit !insertmacro MUI_UNGETLANGUAGE FunctionEnd qrfcview-0.62/bin/0000755000100300011300000000000010456624534015510 5ustar RomainHomeGateway00000000000000qrfcview-0.62/templates/0000755000100300011300000000000010456624534016736 5ustar RomainHomeGateway00000000000000qrfcview-0.62/templates/cpp0000644000100300011300000000000010360705007017416 0ustar RomainHomeGateway00000000000000qrfcview-0.62/templates/h0000644000100300011300000000000010360705007017063 0ustar RomainHomeGateway00000000000000qrfcview-0.62/rfcview.kdevses0000644000100300011300000000220710360705007017761 0ustar RomainHomeGateway00000000000000 qrfcview-0.62/README.txt0000644000100300011300000000402110455376676016445 0ustar RomainHomeGateway00000000000000==== qRFCView ==== == What is qRFCView? == qRFCView is a viewer for IETF RFC. Advantages: - automatic table of content, with direct opening of section; - handling of RFC internal cross-references; - automatic downloading of a referenced RFC from the IETF web site on a simple click; - caching of RFC in a local directory; - tab-browsing of RFC; - searching. It is available for Linux and Windows operating system (and potentially MacOS X). == How to install it? == qRFCView requires the Trolltech Qt4 library that is available under MAC OS, Windows and Linux platforms. Trolltech's dual license policy provides versions of Qt under the terms of the GNU General Public License (GPL). It can be downloaded from http://www.trolltech.com/products/qt/downloads. * Win32 building (WinNT/Win2k/WinXP) Makefile generation: qmake -win32 rfcview.pro qRFCView binary build: make Optionally, you can build a Windows installer * Unix building qmake -unix rfcview.pro qRFCView binary build: make * Win32 binary The qRFCView binary can be directly installed by using the provided Win32 installer file. The following DLLs will be added to the windows system directory: - mingwm10.dll - QtCore4.dll - QtDesignerComponents4.dll - QtGui4.dll - QtNetwork4.dll == How to use it? == Just start it. Use "File>Load RFC..." to load a RFC by its number. Double-click on a table of content item to open the corresponding section. Internal links and referenced RFC are active hyperlinks, underlined in blue. One can set the default directories where RFC are saved using "Edit>Set Directories...". == License == qRFCView is free software, licensed under GNU GPL (see LICENSE file). == Contact == qRFCView has been developped at Mitsubishi Electric, ITE-TCL, France. qRFCView developer is Romain ROLLET . == Known bugs == #1 Under Windows, qRFCView sometimes doesn't close when exiting Windows while qRFCView is still open. qrfcview-0.62/rfcview.kdevelop0000644000100300011300000000666310360705007020140 0ustar RomainHomeGateway00000000000000 Romain Rollet Romain@gradlon 0.1 KDevTrollProject C++ Qt false false *.o,*.lo,CVS false ada ada_bugs_gcc bash bash_bugs clanlib w3c-dom-level2-html fortran_bugs_gcc gnome1 gnustep gtk gtk_bugs haskell haskell_bugs_ghc java_bugs_gcc java_bugs_sun kde2book opengl pascal_bugs_fp php php_bugs perl perl_bugs python python_bugs ruby ruby_bugs sdl stl w3c-svg sw w3c-uaag10 wxwidgets_bugs KDE Libraries (Doxygen) ./bin/rfcview executable src Doxygen Documentation Collection rfcview.tag rfcview rfcview Rfcview RFCVIEW Romain Rollet Romain@gradlon Custom 0.1 2005 /home/u1/Romain/src/rfcview true true true false true true true 250 400 250