From 76c7290e128bca24c24778ce3a1cd1be0ead00bc Mon Sep 17 00:00:00 2001 From: Vesa Pikki Date: Tue, 26 May 2009 18:21:39 +0300 Subject: [PATCH] Added 22x22 icons from http://tango.freedesktop.org. Also added icon source to AUTHORS file. Also added toolbar with the default actions. Added icons to result files and errors. --- AUTHORS | 2 ++ gui/images/dialog-error.png | Bin 0 -> 925 bytes gui/images/dialog-information.png | Bin 0 -> 1204 bytes gui/images/dialog-warning.png | Bin 0 -> 954 bytes gui/images/edit-clear.png | Bin 0 -> 1237 bytes gui/images/go-down.png | Bin 0 -> 874 bytes gui/images/help-browser.png | Bin 0 -> 1359 bytes gui/images/media-floppy.png | Bin 0 -> 787 bytes gui/images/preferences-system.png | Bin 0 -> 1151 bytes gui/images/process-stop.png | Bin 0 -> 1272 bytes gui/images/text-x-generic.png | Bin 0 -> 523 bytes gui/images/view-refresh.png | Bin 0 -> 1364 bytes gui/mainwindow.cpp | 48 +++++++++++++++++++++++++++++- gui/mainwindow.h | 18 +++++++++++ gui/resultstree.cpp | 32 ++++++++++++++++++-- gui/resultstree.h | 13 ++++++-- 16 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 gui/images/dialog-error.png create mode 100644 gui/images/dialog-information.png create mode 100644 gui/images/dialog-warning.png create mode 100644 gui/images/edit-clear.png create mode 100644 gui/images/go-down.png create mode 100644 gui/images/help-browser.png create mode 100644 gui/images/media-floppy.png create mode 100644 gui/images/preferences-system.png create mode 100644 gui/images/process-stop.png create mode 100644 gui/images/text-x-generic.png create mode 100644 gui/images/view-refresh.png diff --git a/AUTHORS b/AUTHORS index cf4d3d283..3c07611a2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -11,3 +11,5 @@ Reijo Tomperi Slava Semushin Vesa Pikki +GUI graphics courtesy of Tango Desktop Project: +http://tango.freedesktop.org diff --git a/gui/images/dialog-error.png b/gui/images/dialog-error.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6aaf6f257bee75a76325181f7a39b4b903034a GIT binary patch literal 925 zcmV;O17iG%P)G zK~y-))s#PI8)q2Cf2X_CKPM!%goULNnKWr=!H7($hn7Nz(0b2g(y2>^j)6c5g#Ot=1S|m4z#i}dcmUj4hVFj?UV(3cTW2bjT=CpFj^*<>uEVg`!)v}} zt5##<)vFe8Z5e(#67UM#m?;#lpTBsKtmhHFd4u-4s3@w6xGsrOiSE=C&mTX=+ugmn z4BsEdu@5tyDHLumUb=+y>={yTpu+*Gii#pCXb>Q~Eo{%DxVXq}z5e-ByirxO_) zP5=1v^5tB5eH}SCKt&(|R5OZ#Dyo8}GxW>z{QBr&3pf?mJP`|WzdgZMsM>hHZ~T-aZ<@rkyN>iTPz{@96iUSzOzHMRy+7D z2=4s=_kjQynlXspiimNV(R)zpF3thvQlUO zhCmt>3HULp_KkE;{Eg7`E`n$)}e800000NkvXXu0mjf5jCqS literal 0 HcmV?d00001 diff --git a/gui/images/dialog-information.png b/gui/images/dialog-information.png new file mode 100644 index 0000000000000000000000000000000000000000..07cf0102d3f31149f1eaf2abea4d9859fbb270c6 GIT binary patch literal 1204 zcmV;l1WWsgP)`rIfZuf&ys#RNoP>@O?X+RM~YSd~{Bjo{oAmKqx3?b@+ zB>Lc!F_P6_)P$9dLSoP~MieDJpok$9L!o8C0CA;2yZzYjot>SXnLF19*95A&5dX=^ z&B@9Aoqx{Fy_cYdw(r;_0^~(P<)=C4%i-E#2+}MeB+i-jExo;y%*tMiv(KHo`EI}`sNM-W)^U6hY^z_LY*QvY^i$+e|5qSHKU5^CAt>14R*s9vp zgZM-anipW4xfR=ST$k{r?S8SnNv6Yx4wjRXH=c+^BggB4x9`}s5P}$gY3J)Lmy;H* z&SkKw%kOF)k#TT`bGWHO#f(p6t$@#?ZCbui+xz~WoN1K0W6?oK6?Y`h^>Lx1mF?^LlB5T2{8#FR!*;^HLs+*98STogpj{6%$c*aE*OHC%od8BjjC)o zF3->8%4VxywIxan#(7RR?4;$eqR%VK4&y`s36#oaMWA%5?kE6$B9orw3!1%_N1~-w zoxzq+lSjvsJu_v@X`goT^cj*gJl1p*MjbveqG%_i;+Y12LTgdf|x_e0lp?2qSz>CMTx(Ni<`FYO6a z@RfbN%f+l-nFus0>R2MP$8p>ri>7^`QI%HfrgL1CJOigkPFZJ0M-T7cx96kVi~@k` zyf*sV$d$~@q?ftGF)D0I^NIunQ_ZSu1Bio*ZP`@PI&$Q@X_q;#{MXI<7dRG;*qk{- z-wY2+L7%sE{P#Z+h0I(F6^L_fA`ytkFZ@i2u=e1AgDoy&TVv6Pc}L(XJYkf}$*HO9 z4HU+sXGVT_S4p za81XjkG?aq?!gLtN}R7-H-HTrp2D(aD-dX==*s4@U=b(N~YssOv{)|?OgM}GmYuiL$5uuQc zi$WH))CSxL{R_J8s!$0u-4vuCbuod^p&AR)v?yq(24ZUxGdh{;VkV)9on&ec9Ny*L zcRu%f4~H*WYdXo(V08Mg)*3|z;fstPgXL+%xaW)XcT!_^0CnGhAKxAw4Xo5^;l|CI zH-Mh~>h@J^z*M-euhH)~j3$%Hw(V|T zf8B!kRjoH)NwEc=AIM~M@bP2J`J+@UT6VRHH!}ma z&FYymJV~ed;rjKbx0|Y;{wKw6!S}DlVk)@2OrTuGNG37jaqLowxCn<_*EHahwvyY- zZ1yvyp3R*+spnHE{adxFJS5PD6LcbNnWJ*EcYrtfeJ_ z=g*_UVO-b6^E^~n7r}`My4Kb>5{)VgraNkdFOuIhjQ;%L!-n42z?ql;z;#_**F{7K zo;}O+l@-Ru$IU^JkA0CN`-1Z@lN}l|jQjTqUbui*79xV@d4$7ZLveUbN- zWgQqicn~9#*#WKB>lBMc%H{GlR4GO1)F}vu$@TUsWmzd-nWUqo{7^|7NzE$-gM zotoMKFin%5o*oj3#P;6SdFUZuiGBRT4;G5m0K_@);6X2UZ<6TR!R%{YzwTl cuK!#83wh2#=*+j5WB>pF07*qoM6N<$f-^77nE(I) literal 0 HcmV?d00001 diff --git a/gui/images/edit-clear.png b/gui/images/edit-clear.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc77eb3d6c723dabcdf4660f81fcbeca56aaa66 GIT binary patch literal 1237 zcmV;`1SL zlYMB_RUF1Y=l6Q={oUO=x3;-?r)|E?8R>FZVnchAVkJg`G{}GQYEY>WL?O*wg_W37 zN+A_B8BtOhXo_HFin>jw)6JJnMb~mKZF6t;-rbkq@AOAk$y%WJg@<$Ca6aeZ;W=X6 z%ZeXZqzJKG3Xv+LvtenKy@LB3MF`%_8B_T2thvF!lcleCJ-!jkD$CRb_YGE6Jy=*g z+YDbjNWAw7Qy-mUDS~yCWvYH(V8@QfoJ0aeH5hC=i)DGp8a37rEZMqJys+aV^VnBQ z#63Tv0Nc;i9EkYxXJcheroW|zf}#?SnZ_E!mGZ5WOcOce-MeGSithGnl}Gk}Go+1} zfSL9nEuBY58=LN$w{W>TJ9k`EBzX8a((D)~yq;Qn~o&4N?~uXgRsL8&yqQ-&`){ z-&GXbR*Ah*=yOuj{9#XH%;W3`X$2Xh7>dWZ+SkRHPsWq=OaOOEF?~Jl)c&?V+}G35 z7>_$;!3uf#f58A-R*3)(lSY1~d^aI&WNLRbM7I_tZ@t7bTE#Ry=!S*M`v{t+h(E4f zkjD@13CE&?s~tyv8my3sVZpa%ud2RptMY@CS@|O8o$EqzNi@yGG(8xm2Te24H7~j~ zjkwI`boDQhD-B0_W3lKeV0*AaMu!ChY*{IyrDd-hp{|`sCxoUMn5KncTIhNj$S7{N z2USl6vxxoyi~8z);j0&F<5D_n9fvi_f2e?>(i$G@Ml~`4kWwP~+km1Bp_u_9p(xUh zA)+VoyXtxT=~B=0Wy}0hC@XHa;@=}3c6YV4IEHIHAW6g%NZSES?1YW3hR{6|>Fw#q zkp>`9R4NdArZHUhI`Rn=?q0A;od8F z{Q0>2CDb0;89(vskC%FS?UG=HjNAbhLMTEAACLuPA3n+2v$fSx(<(;QGci1wga?O+ zg|Cv5F`e#im4SZA@xyzfr|TL|tlXGb@b>2@LI|G_LMTb70IZ}^0AJP5+-UFUX}C~# zAYrA?#c|@eePijn396BYVU1(|uJy5#r<(RHT^%oP?Z8alwE*jO-GmU{~fB-uaXH(}4{@7Q4b6PHX%{s>9Ebr!Kom&Gf583%ti$Fg%v=kf00000NkvXXu0mjfl$J&e literal 0 HcmV?d00001 diff --git a/gui/images/go-down.png b/gui/images/go-down.png new file mode 100644 index 0000000000000000000000000000000000000000..af237881737d5135e8e8422acb00c75bf0682c58 GIT binary patch literal 874 zcmV-w1C{)VP)b zluv9FRUF4Z@6AkiR?`^3q=kcRIEa9rOf+pFX*408I6yEl9E>rfUNj~&C3;1pG!{>C zRudZpBQ~)nM3E3^i6RM6G%A%1Aqd7&s<7SJd4GN$c6K{mc3U~{l3(8M&Ai{|_uhAY zzfmH>{TTYbP=T=Bi-D2o2A-~Eqcwj`jhgOz0^{j=d*~yqH#l#xKE-*9^9Jh;sY^I? z_^q~y+k*j6oc`koRl7jdE|9vU;Xk)=&kC2h$DvUFYu^fBL0GIBk=k0svr;uJ3tohH z1Ydh1f^pRqPu$RW%Sd!mJcEslp-M!2EaLHaywogp6%t!+>=_u27LTquH8pAmmw>&K zv7YWnpWd_m&0-itII*$w7B3dGM~8y<2?@7|3K|{2E4$u^MZlOU6DP(OW^es@u+CF? ztprS@z?B?XuR|}V~&+MNb zHSf06cVxO13Kb>zMdVFu3ol3{eJG}%Dj8A znWI{j&6a(tQ>o~}_Ge${4IirLi}S|`LX8d;O2Ol+wo#eWGBJ7dx-<5P>4P%Y%xGC| zXAa11ZOq{0iKG7%+$uJ#=_l+^LmGcpW`)fh{(QV#P0h|T2a?~~#kZ6qKL$p^ovS<7e7yVlmmUZr#V4PASiU)X zbKmLF^n>N%mVlK~3J7wh0p0gnu=kPP-r=C2RB5JkGPrVwv69l^J{2?=xrkD(9GpGejHe0~d!BGy_>^HAX4r1D@(|SwSuh9HYtY1@S zmi1jjg60#aKq?~su8-GF=ghAstHWImE|P=&2Oa>1Tp;d96#xJL07*qoM6N<$g3Ao0 Am;e9( literal 0 HcmV?d00001 diff --git a/gui/images/help-browser.png b/gui/images/help-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..c67c7a60ef6fd3ad4b38aad127cae43de564cd1c GIT binary patch literal 1359 zcmV-V1+e;wP)RDDSDtx55KmK}&J+V?8*X6yHGikZo z&c|OLZ1y}x$74lpGJWptNd<#_&pi`j+jpliO&!zJ@qoi6)qJwEn6+CD@WYWyec*-D z0@${RZ5ix7aDl}$^O-zmXa*1=-8ulX=S~iAq@;=-$HUMSrlGUOaK{(L@i*%g#5u&#GBD|4MSHLhC){wrlDh* z20q(h_0maw;ES~_*p`W98Ca%4UE^H}Lw+HpnAcnJL?BU^@29e^1*J4}UG>Q@Qs1(6 z`D7+Pod>|RrhCLn>aZ;X+cYpuo%*Kxj2)GO=XqlR6wn4pAp}yBC{06Y5j*9>s$0eyG!6E&rsBUx}$36LASDZLiTJOxC8o)ACDmjo& znc$U0V^|Xj^Xj4kva>9Fwu!DZq$UwkU>l0UU=GD+t2%*_2fl?YA4GJB0uD5W8VKxu--Q->4q_hbF$eI0*XYS>tNVAGCX z*1yMQrVwI#R)+cV7aNvjOdmIt^H*+ht@%DTTH4WdjZyvqjL6HPFffQSWewh@FAsFI zcXWU7AoL+HDZ?`Tv)+u@*&}w$nG*EPpB6I1qw_@mh(Q2UH~d9;%`NxnnJdY&r8Tv; ztB!4Gtv+@cX!Sg=?U7(1L^d!G7^G+94Cxn`yU@tY37c6@6`(S51di);wl*hP8>_lo z8!xxk96t@-ZQu@Y8@TCtUgB{TE5HVPKvr7)fXuYn2~ugjpWfTk>hvCf{SCq*=OFh! Rj6eVY002ovPDHLkV1hz8a+v@C literal 0 HcmV?d00001 diff --git a/gui/images/media-floppy.png b/gui/images/media-floppy.png new file mode 100644 index 0000000000000000000000000000000000000000..af79de8525364f8e53d0a700bd2cd873701744a5 GIT binary patch literal 787 zcmV+u1MK{XP)L zmBDLNR}{v7XXd>iqedFjE-XY+aAVt*=(?e+f{?$U;KtUKF5^a_P;gNSQrrZ@RqVRp zN~vf!-2}|08y7+w43>dFCYq6Z^X~b&xbMx(GghYc!0_(7@4erA_niBkYv;cG`I@_b z2N*fT!FY4-U*9os%&rvfe(maoB`b?AXYc<2?uG;sl0XiU;hyi^LCPEnHTM#~es!JK zq2kWH^;-pC9W#FWW1CNI-+YUZ>Ep?%%Y43g44_*8mfT6nIr06i_X1ag%mF9>Qp!u7 z`})#*f%$2j%Q<0M6{x&oHSFn?6 zPF*}l?p*xw_iQT2u0q*h^%YbRbEj#R=~81W-8whvbF5NU_gwK z7$YGBVvJ2OkP87FS8fkYjvJ^n1~=QLiQV1Z7PJ9p#T_K!K$RvGSCs=}lkDy7O(=R7 z*s>t2d$KX^ZU!%(_XkH$9PjbG|7rvYAshftLPyW#NcG{Pu|W#KmmAMsJpAnBM@K*Y z@CZ+Vot+&*2rMlvvA@4h2!X+1&;qBrXmhhOm~{c+g1DamWRf`h&D}Ew4+O^+wtwl4 zPQN!oYP-`gHa|EI)~!!W%TTys2VOSo03~n;I1C(_xB?7;y@}szAWCXg`ya3A>w_7z R_{#tQ002ovPDHLkV1nrGbVL9E literal 0 HcmV?d00001 diff --git a/gui/images/preferences-system.png b/gui/images/preferences-system.png new file mode 100644 index 0000000000000000000000000000000000000000..cc91d65958ba457a0cfe5025a759dae3d10dbaeb GIT binary patch literal 1151 zcmV-_1c3XAP)@kuE^EJD#UMz{kifzpjVdVcK+`YLTID6N3@xlY0c&OO%pF)wFLPI*ha4wkB`t7X6;ggCCltyU|N^uU4CD1seb zpY5lor-y_2%L*;&@r3|JU`b3&%&|8Qmt%;DeHWx85kJA>rZ7W>z_g~{^n#QukBwAZr zY3hvS=Y|)tzH?@t%5biivuE%W%^xLmsbQuS!kha{Vq2)U~n863@#e zMby;P=mQ-EW*0SlICRhUjbv_KkD`q6Ny`;hrKVA_BL%a`$ohaP|I#&1NG$E|xog-sb){3x}TEs9+uX`tD2)?S6)~i$CyV zPd^xp%m#xYugbE_%7<4YNz#IFLnQR*YgYCb=W+VGcDnio$+OvTxo#2gPXpld`4qq3 zpDoKWD^@)M5Q4|W#f9JoJw?ip$1A_}EPJ+RbLz}R20dPiic4_0ZsB#`q@!QO7#!VD zUtfRMZnxhU85yza%4ht34jw!}Wo0FRBLr54JdPt}Pg7cuN$a`G40^oSo-3RO4UG0$ zrWAJ)umV`=bUFi0r?Xg=Wz4B*G&VNk^Z7!ZFzR>d>(ZE2HAaU9AAnB$-d3QvE(PX< zBm;)d&dwk(JTWn`x1pio>#?yhR8_qi2n6h*5n#odl&$AGyuEsZ?oCb5(XSF`m@H6}Q^x@% z%=bD_|D&jL@SqNz7wN5szO;;u4EO4FLSpRN>#Y?d;V}(^N>O60&RrUy{R52l-tl6f R>M8&L002ovPDHLkV1i=@C_MlG literal 0 HcmV?d00001 diff --git a/gui/images/process-stop.png b/gui/images/process-stop.png new file mode 100644 index 0000000000000000000000000000000000000000..b68290bf1ebf568d8ab080a4e3ec7d75048ec461 GIT binary patch literal 1272 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 WX #include #include +#include #include "../src/filelister.h" #include "../src/cppcheckexecutor.h" @@ -43,13 +44,17 @@ MainWindow::MainWindow() : mActionShowCheckAll(tr("Check all"), this), mActionShowUncheckAll(tr("Uncheck all"), this), mActionAbout(tr("About"), this), + mActionStop(tr("Stop checking"), this), + mActionSave(tr("Save results to a file"), this), mResults(mSettings, mApplications) { QMenu *menu = menuBar()->addMenu(tr("&File")); menu->addAction(&mActionCheckFiles); menu->addAction(&mActionCheckDirectory); menu->addAction(&mActionReCheck); + menu->addAction(&mActionStop); menu->addAction(&mActionClearResults); + menu->addAction(&mActionSave); menu->addSeparator(); menu->addAction(&mActionExit); @@ -93,12 +98,42 @@ MainWindow::MainWindow() : connect(&mActionReCheck, SIGNAL(triggered()), this, SLOT(ReCheck())); - connect(&mActionAbout, SIGNAL(triggered()), this, SLOT(About())); + //TODO: This crashed + //connect(&mActionStop, SIGNAL(triggered()), &mThread, SLOT(Stop())); + connect(&mActionSave, SIGNAL(triggered()), this, SLOT(Save())); + connect(&mActionAbout, SIGNAL(triggered()), this, SLOT(About())); connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone())); + + //Toolbar + QToolBar *toolbar = addToolBar("Toolbar"); + toolbar->setIconSize(QSize(22,22)); + + mActionCheckDirectory.setIcon(QIcon("icon.svg")); + mActionReCheck.setIcon(QIcon("images/view-refresh.png")); + mActionSettings.setIcon(QIcon("images/preferences-system.png")); + mActionAbout.setIcon(QIcon("images/help-browser.png")); + mActionStop.setIcon(QIcon("images/process-stop.png")); + mActionSave.setIcon(QIcon("images/media-floppy.png")); + mActionClearResults.setIcon(QIcon("images/edit-clear.png")); + + toolbar->addAction(&mActionCheckDirectory); + toolbar->addAction(&mActionSave); + toolbar->addAction(&mActionReCheck); + toolbar->addAction(&mActionStop); + toolbar->addAction(&mActionClearResults); + toolbar->addAction(&mActionSettings); + toolbar->addAction(&mActionAbout); + + + + + LoadSettings(); mThread.Initialize(&mResults); setWindowTitle(tr("Cppcheck")); + + EnableCheckButtons(true); } MainWindow::~MainWindow() @@ -272,6 +307,7 @@ void MainWindow::ClearResults() void MainWindow::EnableCheckButtons(bool enable) { + mActionStop.setEnabled(!enable); mActionCheckFiles.setEnabled(enable); mActionReCheck.setEnabled(enable); mActionCheckDirectory.setEnabled(enable); @@ -350,3 +386,13 @@ void MainWindow::About() ).arg(version)); msgBox.exec(); } + + +void MainWindow::Save() +{ + QMessageBox msgBox; + msgBox.setWindowTitle(tr("Not implemented yet...")); + msgBox.setText(tr("Not implemented yet...")); + msgBox.exec(); +} + diff --git a/gui/mainwindow.h b/gui/mainwindow.h index aac0e676d..8b35b23eb 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -120,6 +120,13 @@ public slots: */ void About(); + + /** + * @brief Slot to stop processing files + * + */ + void Save(); + protected slots: /** @@ -274,6 +281,17 @@ protected: */ QAction mActionAbout; + /** + * @brief Action stop checking files + * + */ + QAction mActionStop; + + /** + * @brief Action save found errors to a file + * + */ + QAction mActionSave; /** diff --git a/gui/resultstree.cpp b/gui/resultstree.cpp index c07bf8fcf..c80a57e92 100644 --- a/gui/resultstree.cpp +++ b/gui/resultstree.cpp @@ -84,7 +84,8 @@ void ResultsTree::AddErrorItem(const QString &file, lines[0].toInt(), severity, message, - hide); + hide, + SeverityToIcon(severity)); //Add user data to that item @@ -95,10 +96,17 @@ void ResultsTree::AddErrorItem(const QString &file, data["lines"] = lines; item->setData(QVariant(data)); + //Add backtrace files as children for (int i = 1;i < files.size() && i < lines.size();i++) { - AddBacktraceFiles(item, files[i], lines[i].toInt(), severity, message, hide); + AddBacktraceFiles(item, + files[i], + lines[i].toInt(), + severity, + message, + hide, + "images/go-down.png"); } //TODO just hide/show current error and it's file @@ -114,7 +122,8 @@ QStandardItem *ResultsTree::AddBacktraceFiles(QStandardItem *parent, const int line, const QString &severity, const QString &message, - const bool hide) + const bool hide, + const QString &icon) { if (!parent) @@ -135,6 +144,10 @@ QStandardItem *ResultsTree::AddBacktraceFiles(QStandardItem *parent, setRowHidden(parent->rowCount() - 1, parent->index(), hide); + if (!icon.isEmpty()) { + list[0]->setIcon(QIcon(icon)); + } + //TODO Does this leak memory? Should items from list be deleted? return list[0]; @@ -271,6 +284,7 @@ QStandardItem *ResultsTree::EnsureFileItem(const QString &name) } item = CreateItem(name); + item->setIcon(QIcon("images/text-x-generic.png")); mModel.appendRow(item); @@ -396,3 +410,15 @@ void ResultsTree::QuickStartApplication(const QModelIndex &index) { StartApplication(mModel.itemFromIndex(index), 0); } + +QString ResultsTree::SeverityToIcon(const QString &severity) +{ + if (severity == "all") + return "images/dialog-warning.png"; + if (severity == "error") + return "images/dialog-error.png"; + if (severity == "style") + return "images/dialog-information.png"; + + return ""; +} diff --git a/gui/resultstree.h b/gui/resultstree.h index c864283f8..557d8db5c 100644 --- a/gui/resultstree.h +++ b/gui/resultstree.h @@ -85,6 +85,13 @@ protected slots: */ void Context(int application); protected: + /** + * @brief Convert a severity string to a icon filename + * + * @param severity Severity string + * @param Icon filename + */ + QString SeverityToIcon(const QString &severity); /** * @brief Helper function to open an error within target with application @@ -110,7 +117,8 @@ protected: * @param line Line numer * @param severity Error severity * @param message Error message - * @param hide Should this be hidden (true) or shown (false) + * @param hide Should this be hidden (true) or shown (false) + * @param addicon Should a default backtrace item icon be added * @return newly created QStandardItem * */ QStandardItem *AddBacktraceFiles(QStandardItem *parent, @@ -118,7 +126,8 @@ protected: const int line, const QString &severity, const QString &message, - const bool hide); + const bool hide, + const QString &icon); /**