From 7531ecf186e25169260ec277b0643c5309c85d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=88=AC=E5=B1=B1=E8=99=8E?= Date: Sun, 11 Dec 2022 18:44:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=85=A51.19.2=E7=9A=84=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- src/CmpareMode.cpp | 52 +- src/CmpareMode.h | 2 +- src/RealCompare.pro | 2 +- src/RealCompare.qrc | 128 +- src/RealCompare.rc | Bin 5134 -> 5134 bytes src/RealCompare.vcxproj | 141 +- src/RealCompare.vcxproj.filters | 207 +- src/RealCompare.vcxproj.user | 4 +- src/Resources/edit/global/needsave.png | Bin 315 -> 412 bytes src/Resources/edit/global/needsave1.png | Bin 0 -> 315 bytes src/Resources/edit/global/needsave2.png | Bin 0 -> 282 bytes src/Resources/edit/global/noneedsavedark.png | Bin 0 -> 333 bytes src/Resources/edit/global/noneedsavedark1.png | Bin 0 -> 279 bytes src/Resources/edit/global/noneedsavedark2.png | Bin 0 -> 244 bytes src/Resources/edit/styleblue/autosave.png | Bin 0 -> 1562 bytes src/Resources/edit/styleblue/autosave1.png | Bin 0 -> 2990 bytes src/Resources/edit/styleblue/autosave2.png | Bin 0 -> 1837 bytes src/Resources/edit/styleblue/autosave3.png | Bin 0 -> 543 bytes src/Resources/edit/styleblue/bincmp.png | Bin 0 -> 1542 bytes src/Resources/edit/styleblue/clearsign.png | Bin 0 -> 1056 bytes src/Resources/edit/styleblue/closefile.png | Bin 1317 -> 579 bytes src/Resources/edit/styleblue/closefile1.png | Bin 0 -> 334 bytes src/Resources/edit/styleblue/dircompare.png | Bin 277 -> 473 bytes src/Resources/edit/styleblue/find.png | Bin 0 -> 702 bytes src/Resources/edit/styleblue/goto.png | Bin 0 -> 522 bytes src/Resources/edit/styleblue/indentGuide.png | Bin 0 -> 342 bytes src/Resources/edit/styleblue/mark.png | Bin 0 -> 779 bytes src/Resources/edit/styleblue/mark1.png | Bin 0 -> 1115 bytes src/Resources/edit/styleblue/next.png | Bin 0 -> 977 bytes .../edit/styleblue/other/autosave.png | Bin 0 -> 966 bytes .../edit/styleblue/other/closefile.png | Bin 0 -> 1317 bytes .../edit/styleblue/other/dircompare1.png | Bin 0 -> 277 bytes src/Resources/edit/styleblue/other/find1.png | Bin 0 -> 702 bytes .../edit/styleblue/other/newfile4.png | Bin 0 -> 481 bytes .../edit/styleblue/other/savebar1.png | Bin 0 -> 325 bytes .../edit/styleblue/other/标记2.png | Bin 0 -> 779 bytes src/Resources/edit/styleblue/pre.png | Bin 0 -> 946 bytes src/Resources/edit/styleblue/rename.png | Bin 0 -> 402 bytes src/Resources/edit/styleblue/sign.png | Bin 0 -> 726 bytes src/Resources/edit/styleblue/transcode.png | Bin 0 -> 776 bytes src/Resources/edit/styledark/autosave.png | Bin 0 -> 659 bytes src/Resources/edit/styledark/autosave1.png | Bin 0 -> 325 bytes src/Resources/edit/styledark/autosave3.png | Bin 0 -> 858 bytes src/Resources/edit/styledark/bincmp.png | Bin 0 -> 329 bytes src/Resources/edit/styledark/clearsign.png | Bin 0 -> 578 bytes src/Resources/edit/styledark/clearsign1.png | Bin 0 -> 469 bytes src/Resources/edit/styledark/closeall.png | Bin 0 -> 566 bytes src/Resources/edit/styledark/closefile.png | Bin 0 -> 405 bytes src/Resources/edit/styledark/closefile2.png | Bin 0 -> 315 bytes src/Resources/edit/styledark/closefile3.png | Bin 0 -> 790 bytes src/Resources/edit/styledark/copy.png | Bin 0 -> 501 bytes src/Resources/edit/styledark/copy1.png | Bin 0 -> 523 bytes src/Resources/edit/styledark/crlf.png | Bin 0 -> 327 bytes src/Resources/edit/styledark/crlf2.png | Bin 0 -> 368 bytes src/Resources/edit/styledark/cut.png | Bin 0 -> 802 bytes src/Resources/edit/styledark/dircompare.png | Bin 0 -> 399 bytes src/Resources/edit/styledark/filecompare.png | Bin 0 -> 648 bytes src/Resources/edit/styledark/find.png | Bin 0 -> 566 bytes src/Resources/edit/styledark/find1.png | Bin 0 -> 403 bytes src/Resources/edit/styledark/find2.png | Bin 0 -> 566 bytes src/Resources/edit/styledark/find3.png | Bin 0 -> 788 bytes src/Resources/edit/styledark/goto.png | Bin 0 -> 1022 bytes src/Resources/edit/styledark/goto1.png | Bin 0 -> 691 bytes src/Resources/edit/styledark/indentGuide.png | Bin 0 -> 322 bytes src/Resources/edit/styledark/indentGuide2.png | Bin 0 -> 264 bytes src/Resources/edit/styledark/indentGuide3.png | Bin 0 -> 312 bytes src/Resources/edit/styledark/mark.png | Bin 0 -> 652 bytes src/Resources/edit/styledark/mark1.png | Bin 0 -> 761 bytes src/Resources/edit/styledark/mark3.png | Bin 0 -> 848 bytes src/Resources/edit/styledark/needsaveall.png | Bin 0 -> 591 bytes src/Resources/edit/styledark/needsavebar.png | Bin 0 -> 505 bytes src/Resources/edit/styledark/needsavebar1.png | Bin 0 -> 476 bytes src/Resources/edit/styledark/newfile.png | Bin 0 -> 426 bytes src/Resources/edit/styledark/next.png | Bin 0 -> 831 bytes src/Resources/edit/styledark/openfile.png | Bin 0 -> 301 bytes src/Resources/edit/styledark/paste.png | Bin 0 -> 544 bytes src/Resources/edit/styledark/paste1.png | Bin 0 -> 500 bytes src/Resources/edit/styledark/pre.png | Bin 0 -> 871 bytes src/Resources/edit/styledark/redo.png | Bin 0 -> 706 bytes src/Resources/edit/styledark/redo1.png | Bin 0 -> 725 bytes src/Resources/edit/styledark/rename.png | Bin 0 -> 428 bytes src/Resources/edit/styledark/rename1.png | Bin 0 -> 356 bytes src/Resources/edit/styledark/rename3.png | Bin 0 -> 372 bytes src/Resources/edit/styledark/replace.png | Bin 0 -> 772 bytes src/Resources/edit/styledark/replace1.png | Bin 0 -> 563 bytes src/Resources/edit/styledark/sign.png | Bin 0 -> 738 bytes src/Resources/edit/styledark/sign1.png | Bin 0 -> 740 bytes src/Resources/edit/styledark/sign2.png | Bin 0 -> 817 bytes src/Resources/edit/styledark/sign3.png | Bin 0 -> 680 bytes src/Resources/edit/styledark/transcode.png | Bin 0 -> 299 bytes src/Resources/edit/styledark/transcode1.png | Bin 0 -> 637 bytes src/Resources/edit/styledark/transcode2.png | Bin 0 -> 372 bytes src/Resources/edit/styledark/undo.png | Bin 0 -> 747 bytes src/Resources/edit/styledark/white.png | Bin 0 -> 377 bytes src/Resources/edit/styledark/white2.png | Bin 0 -> 738 bytes src/Resources/edit/styledark/zoomin.png | Bin 0 -> 1028 bytes src/Resources/edit/styledark/zoomout.png | Bin 0 -> 776 bytes src/Resources/edit/styledark/zoomout1.png | Bin 0 -> 986 bytes src/Resources/edit/styledeepblue/autosave.png | Bin 0 -> 375 bytes src/Resources/edit/styledeepblue/bincmp.png | Bin 720 -> 940 bytes .../edit/styledeepblue/clearsign.png | Bin 0 -> 1045 bytes src/Resources/edit/styledeepblue/closeall.png | Bin 1013 -> 679 bytes .../edit/styledeepblue/closefile.png | Bin 1286 -> 482 bytes .../edit/styledeepblue/indentGuide.png | Bin 0 -> 346 bytes src/Resources/edit/styledeepblue/mark.png | Bin 0 -> 1106 bytes .../edit/styledeepblue/needsaveall.png | Bin 0 -> 591 bytes .../edit/styledeepblue/needsavebar.png | Bin 248 -> 462 bytes src/Resources/edit/styledeepblue/newfile.png | Bin 292 -> 486 bytes .../edit/styledeepblue/other/Save-01.png | Bin 0 -> 276 bytes .../edit/styledeepblue/other/autosave.png | Bin 0 -> 543 bytes .../edit/styledeepblue/other/bincmp.png | Bin 0 -> 720 bytes .../edit/styledeepblue/other/bincmp1.png | Bin 0 -> 1519 bytes .../edit/styledeepblue/other/bincmp2.png | Bin 0 -> 1064 bytes .../edit/styledeepblue/other/closeall.png | Bin 0 -> 1013 bytes .../edit/styledeepblue/other/closefile.png | Bin 0 -> 1286 bytes .../edit/styledeepblue/other/goto1.png | Bin 0 -> 425 bytes .../edit/styledeepblue/other/ic_save_all.png | Bin 0 -> 655 bytes .../edit/styledeepblue/other/icon_save.png | Bin 0 -> 427 bytes .../styledeepblue/other/needsaveallbar.png | Bin 0 -> 358 bytes .../styledeepblue/other/needsaveallbar2.png | Bin 0 -> 358 bytes .../styledeepblue/other/needsaveallbar3.png | Bin 0 -> 658 bytes .../edit/styledeepblue/other/needsavebar.png | Bin 0 -> 248 bytes .../edit/styledeepblue/other/needsavebar2.png | Bin 0 -> 283 bytes .../edit/styledeepblue/other/needsavebar5.png | Bin 0 -> 442 bytes .../edit/styledeepblue/other/newfile.png | Bin 0 -> 292 bytes .../edit/styledeepblue/other/newfile2.png | Bin 0 -> 559 bytes .../edit/styledeepblue/other/newfile3.png | Bin 0 -> 444 bytes .../styledeepblue/other/noneedsaveallbar.png | Bin 0 -> 364 bytes .../styledeepblue/other/noneedsaveallbar1.png | Bin 0 -> 589 bytes .../styledeepblue/other/noneedsaveallbar3.png | Bin 0 -> 364 bytes .../styledeepblue/other/noneedsaveallbar4.png | Bin 0 -> 672 bytes .../styledeepblue/other/noneedsavebar.png | Bin 0 -> 254 bytes .../styledeepblue/other/noneedsavebar1.png | Bin 0 -> 458 bytes .../styledeepblue/other/noneedsavebar2.png | Bin 0 -> 283 bytes .../edit/styledeepblue/other/rename.png | Bin 0 -> 676 bytes .../edit/styledeepblue/other/rename1.png | Bin 0 -> 1116 bytes .../edit/styledeepblue/other/replace.png | Bin 0 -> 912 bytes .../edit/styledeepblue/other/save (15).png | Bin 0 -> 247 bytes .../edit/styledeepblue/other/savebar2.png | Bin 0 -> 588 bytes .../edit/styledeepblue/other/sign.png | Bin 0 -> 718 bytes .../edit/styledeepblue/other/transcode.png | Bin 0 -> 629 bytes .../edit/styledeepblue/other/保存 (6).png | Bin 0 -> 385 bytes .../edit/styledeepblue/other/保存.png | Bin 0 -> 382 bytes .../edit/styledeepblue/other/保存所有.png | Bin 0 -> 512 bytes .../edit/styledeepblue/other/关闭 (10).png | Bin 0 -> 482 bytes .../edit/styledeepblue/other/关闭 (3).png | Bin 0 -> 1137 bytes .../edit/styledeepblue/other/关闭 (5).png | Bin 0 -> 868 bytes src/Resources/edit/styledeepblue/rename.png | Bin 676 -> 407 bytes src/Resources/edit/styledeepblue/replace.png | Bin 912 -> 704 bytes src/Resources/edit/styledeepblue/sign.png | Bin 0 -> 726 bytes .../edit/styledeepblue/transcode.png | Bin 629 -> 784 bytes src/Resources/img/aglin.png | Bin 0 -> 309 bytes src/Resources/img/bookmark1.png | Bin 0 -> 297 bytes src/Resources/img/diff2.png | Bin 0 -> 402 bytes src/Resources/img/diffall.png | Bin 0 -> 1447 bytes src/Resources/img/expand.png | Bin 0 -> 417 bytes src/Resources/img/fold.png | Bin 0 -> 465 bytes src/Resources/img/opendark.png | Bin 0 -> 315 bytes src/Resources/img/reloaddark.png | Bin 0 -> 676 bytes src/Resources/img/savedark.png | Bin 0 -> 352 bytes src/Resources/img/strict.png | Bin 934 -> 906 bytes src/Resources/img/vip.png | Bin 0 -> 1293 bytes src/Resources/img/vipdark.png | Bin 0 -> 1042 bytes src/cceditor/ccnotepad.cpp | 1211 ++++++-- src/cceditor/ccnotepad.h | 87 +- src/cceditor/ccnotepad.ui | 188 +- src/cceditor/filemanager.cpp | 1 + src/cceditor/filemanager.h | 1 + src/doctypelistview.cpp | 31 +- src/findresultwin.cpp | 86 +- src/findresultwin.h | 2 + src/findwin.cpp | 399 ++- src/findwin.h | 21 +- src/findwin.ui | 153 +- src/main.cpp | 2 +- src/nddsetting.cpp | 9 + src/nddsetting.h | 3 +- src/progresswin.ui | 19 +- src/qscidisplaywindow.cpp | 81 +- src/qscidisplaywindow.h | 6 +- src/qscint/scintilla/lexers/LexTXT.cpp | 5 +- src/qscint/scintilla/src/Editor.cpp | 3 +- src/qscint/src/PlatQt.cpp | 4 +- src/qscint/src/Qsci/qscilexerrust.h | 73 + src/qscint/src/Qsci/qscilexertext.h | 2 +- src/qscint/src/Qsci/qscilexervb.h | 70 + src/qscint/src/qscicommandset.cpp | 6 +- src/qscint/src/qscilexer.cpp | 11 +- src/qscint/src/qscilexerrust.cpp | 136 + src/qscint/src/qscilexertext.cpp | 10 +- src/qscint/src/qscilexervb.cpp | 139 + src/qscint/src/qscintilla.pro | 4 + src/qscint/src/qscintilla.vcxproj | 24 +- src/qscint/src/qscintilla.vcxproj.filters | 16 + src/qscint/src/qscintilla.vcxproj.user | 4 +- src/qscint/src/qsciscintilla.cpp | 10 +- src/qss/black.qss | 654 ++++ src/qss/lightbluestyle.qss | 23 +- src/qss/mystyle.qss | 14 +- src/qss/psblack/add_bottom.png | Bin 0 -> 201 bytes src/qss/psblack/add_left.png | Bin 0 -> 233 bytes src/qss/psblack/add_right.png | Bin 0 -> 235 bytes src/qss/psblack/add_top.png | Bin 0 -> 197 bytes src/qss/psblack/branch_close.png | Bin 0 -> 142 bytes src/qss/psblack/branch_open.png | Bin 0 -> 161 bytes src/qss/psblack/calendar_nextmonth.png | Bin 0 -> 318 bytes src/qss/psblack/calendar_prevmonth.png | Bin 0 -> 314 bytes src/qss/psblack/checkbox_checked.png | Bin 0 -> 307 bytes src/qss/psblack/checkbox_checked_disable.png | Bin 0 -> 338 bytes src/qss/psblack/checkbox_parcial.png | Bin 0 -> 188 bytes src/qss/psblack/checkbox_parcial_disable.png | Bin 0 -> 251 bytes src/qss/psblack/checkbox_unchecked.png | Bin 0 -> 150 bytes .../psblack/checkbox_unchecked_disable.png | Bin 0 -> 152 bytes src/qss/psblack/radiobutton_checked.png | Bin 0 -> 756 bytes .../psblack/radiobutton_checked_disable.png | Bin 0 -> 932 bytes src/qss/psblack/radiobutton_unchecked.png | Bin 0 -> 564 bytes .../psblack/radiobutton_unchecked_disable.png | Bin 0 -> 715 bytes src/qtlangset.cpp | 235 +- src/qtlangset.h | 19 +- src/qtlangset.ui | 515 +-- src/rcglobal.h | 2 +- src/realcompare_zh.qm | Bin 59085 -> 62703 bytes src/realcompare_zh.ts | 2760 +++++++++-------- src/scintillaeditview.cpp | 238 +- src/scintillaeditview.h | 17 +- src/styleset.cpp | 80 +- src/styleset.h | 15 +- vs2017_sln/RealCompare.sln | 31 + 229 files changed, 5640 insertions(+), 2319 deletions(-) create mode 100755 src/Resources/edit/global/needsave1.png create mode 100755 src/Resources/edit/global/needsave2.png create mode 100755 src/Resources/edit/global/noneedsavedark.png create mode 100755 src/Resources/edit/global/noneedsavedark1.png create mode 100755 src/Resources/edit/global/noneedsavedark2.png create mode 100755 src/Resources/edit/styleblue/autosave.png create mode 100755 src/Resources/edit/styleblue/autosave1.png create mode 100755 src/Resources/edit/styleblue/autosave2.png create mode 100755 src/Resources/edit/styleblue/autosave3.png create mode 100755 src/Resources/edit/styleblue/bincmp.png create mode 100755 src/Resources/edit/styleblue/clearsign.png create mode 100755 src/Resources/edit/styleblue/closefile1.png create mode 100755 src/Resources/edit/styleblue/find.png create mode 100755 src/Resources/edit/styleblue/goto.png create mode 100755 src/Resources/edit/styleblue/indentGuide.png create mode 100755 src/Resources/edit/styleblue/mark.png create mode 100755 src/Resources/edit/styleblue/mark1.png create mode 100755 src/Resources/edit/styleblue/next.png create mode 100755 src/Resources/edit/styleblue/other/autosave.png create mode 100755 src/Resources/edit/styleblue/other/closefile.png create mode 100755 src/Resources/edit/styleblue/other/dircompare1.png create mode 100755 src/Resources/edit/styleblue/other/find1.png create mode 100755 src/Resources/edit/styleblue/other/newfile4.png create mode 100755 src/Resources/edit/styleblue/other/savebar1.png create mode 100755 src/Resources/edit/styleblue/other/标记2.png create mode 100755 src/Resources/edit/styleblue/pre.png create mode 100755 src/Resources/edit/styleblue/rename.png create mode 100755 src/Resources/edit/styleblue/sign.png create mode 100755 src/Resources/edit/styleblue/transcode.png create mode 100755 src/Resources/edit/styledark/autosave.png create mode 100755 src/Resources/edit/styledark/autosave1.png create mode 100755 src/Resources/edit/styledark/autosave3.png create mode 100755 src/Resources/edit/styledark/bincmp.png create mode 100755 src/Resources/edit/styledark/clearsign.png create mode 100755 src/Resources/edit/styledark/clearsign1.png create mode 100755 src/Resources/edit/styledark/closeall.png create mode 100755 src/Resources/edit/styledark/closefile.png create mode 100755 src/Resources/edit/styledark/closefile2.png create mode 100755 src/Resources/edit/styledark/closefile3.png create mode 100755 src/Resources/edit/styledark/copy.png create mode 100755 src/Resources/edit/styledark/copy1.png create mode 100755 src/Resources/edit/styledark/crlf.png create mode 100755 src/Resources/edit/styledark/crlf2.png create mode 100755 src/Resources/edit/styledark/cut.png create mode 100755 src/Resources/edit/styledark/dircompare.png create mode 100755 src/Resources/edit/styledark/filecompare.png create mode 100755 src/Resources/edit/styledark/find.png create mode 100755 src/Resources/edit/styledark/find1.png create mode 100755 src/Resources/edit/styledark/find2.png create mode 100755 src/Resources/edit/styledark/find3.png create mode 100755 src/Resources/edit/styledark/goto.png create mode 100755 src/Resources/edit/styledark/goto1.png create mode 100755 src/Resources/edit/styledark/indentGuide.png create mode 100755 src/Resources/edit/styledark/indentGuide2.png create mode 100755 src/Resources/edit/styledark/indentGuide3.png create mode 100755 src/Resources/edit/styledark/mark.png create mode 100755 src/Resources/edit/styledark/mark1.png create mode 100755 src/Resources/edit/styledark/mark3.png create mode 100755 src/Resources/edit/styledark/needsaveall.png create mode 100755 src/Resources/edit/styledark/needsavebar.png create mode 100755 src/Resources/edit/styledark/needsavebar1.png create mode 100755 src/Resources/edit/styledark/newfile.png create mode 100755 src/Resources/edit/styledark/next.png create mode 100755 src/Resources/edit/styledark/openfile.png create mode 100755 src/Resources/edit/styledark/paste.png create mode 100755 src/Resources/edit/styledark/paste1.png create mode 100755 src/Resources/edit/styledark/pre.png create mode 100755 src/Resources/edit/styledark/redo.png create mode 100755 src/Resources/edit/styledark/redo1.png create mode 100755 src/Resources/edit/styledark/rename.png create mode 100755 src/Resources/edit/styledark/rename1.png create mode 100755 src/Resources/edit/styledark/rename3.png create mode 100755 src/Resources/edit/styledark/replace.png create mode 100755 src/Resources/edit/styledark/replace1.png create mode 100755 src/Resources/edit/styledark/sign.png create mode 100755 src/Resources/edit/styledark/sign1.png create mode 100755 src/Resources/edit/styledark/sign2.png create mode 100755 src/Resources/edit/styledark/sign3.png create mode 100755 src/Resources/edit/styledark/transcode.png create mode 100755 src/Resources/edit/styledark/transcode1.png create mode 100755 src/Resources/edit/styledark/transcode2.png create mode 100755 src/Resources/edit/styledark/undo.png create mode 100755 src/Resources/edit/styledark/white.png create mode 100755 src/Resources/edit/styledark/white2.png create mode 100755 src/Resources/edit/styledark/zoomin.png create mode 100755 src/Resources/edit/styledark/zoomout.png create mode 100755 src/Resources/edit/styledark/zoomout1.png create mode 100755 src/Resources/edit/styledeepblue/autosave.png create mode 100755 src/Resources/edit/styledeepblue/clearsign.png create mode 100755 src/Resources/edit/styledeepblue/indentGuide.png create mode 100755 src/Resources/edit/styledeepblue/mark.png create mode 100755 src/Resources/edit/styledeepblue/needsaveall.png create mode 100755 src/Resources/edit/styledeepblue/other/Save-01.png create mode 100755 src/Resources/edit/styledeepblue/other/autosave.png create mode 100755 src/Resources/edit/styledeepblue/other/bincmp.png create mode 100755 src/Resources/edit/styledeepblue/other/bincmp1.png create mode 100755 src/Resources/edit/styledeepblue/other/bincmp2.png create mode 100755 src/Resources/edit/styledeepblue/other/closeall.png create mode 100755 src/Resources/edit/styledeepblue/other/closefile.png create mode 100755 src/Resources/edit/styledeepblue/other/goto1.png create mode 100755 src/Resources/edit/styledeepblue/other/ic_save_all.png create mode 100755 src/Resources/edit/styledeepblue/other/icon_save.png create mode 100755 src/Resources/edit/styledeepblue/other/needsaveallbar.png create mode 100755 src/Resources/edit/styledeepblue/other/needsaveallbar2.png create mode 100755 src/Resources/edit/styledeepblue/other/needsaveallbar3.png create mode 100755 src/Resources/edit/styledeepblue/other/needsavebar.png create mode 100755 src/Resources/edit/styledeepblue/other/needsavebar2.png create mode 100755 src/Resources/edit/styledeepblue/other/needsavebar5.png create mode 100755 src/Resources/edit/styledeepblue/other/newfile.png create mode 100755 src/Resources/edit/styledeepblue/other/newfile2.png create mode 100755 src/Resources/edit/styledeepblue/other/newfile3.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsaveallbar.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsaveallbar1.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsaveallbar3.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsaveallbar4.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsavebar.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsavebar1.png create mode 100755 src/Resources/edit/styledeepblue/other/noneedsavebar2.png create mode 100755 src/Resources/edit/styledeepblue/other/rename.png create mode 100755 src/Resources/edit/styledeepblue/other/rename1.png create mode 100755 src/Resources/edit/styledeepblue/other/replace.png create mode 100755 src/Resources/edit/styledeepblue/other/save (15).png create mode 100755 src/Resources/edit/styledeepblue/other/savebar2.png create mode 100755 src/Resources/edit/styledeepblue/other/sign.png create mode 100755 src/Resources/edit/styledeepblue/other/transcode.png create mode 100755 src/Resources/edit/styledeepblue/other/保存 (6).png create mode 100755 src/Resources/edit/styledeepblue/other/保存.png create mode 100755 src/Resources/edit/styledeepblue/other/保存所有.png create mode 100755 src/Resources/edit/styledeepblue/other/关闭 (10).png create mode 100755 src/Resources/edit/styledeepblue/other/关闭 (3).png create mode 100755 src/Resources/edit/styledeepblue/other/关闭 (5).png create mode 100755 src/Resources/edit/styledeepblue/sign.png create mode 100755 src/Resources/img/aglin.png create mode 100755 src/Resources/img/bookmark1.png create mode 100755 src/Resources/img/diff2.png create mode 100755 src/Resources/img/diffall.png create mode 100755 src/Resources/img/expand.png create mode 100755 src/Resources/img/fold.png create mode 100755 src/Resources/img/opendark.png create mode 100755 src/Resources/img/reloaddark.png create mode 100755 src/Resources/img/savedark.png create mode 100755 src/Resources/img/vip.png create mode 100755 src/Resources/img/vipdark.png create mode 100755 src/qscint/src/Qsci/qscilexerrust.h create mode 100755 src/qscint/src/Qsci/qscilexervb.h create mode 100755 src/qscint/src/qscilexerrust.cpp create mode 100755 src/qscint/src/qscilexervb.cpp create mode 100755 src/qss/black.qss create mode 100755 src/qss/psblack/add_bottom.png create mode 100755 src/qss/psblack/add_left.png create mode 100755 src/qss/psblack/add_right.png create mode 100755 src/qss/psblack/add_top.png create mode 100755 src/qss/psblack/branch_close.png create mode 100755 src/qss/psblack/branch_open.png create mode 100755 src/qss/psblack/calendar_nextmonth.png create mode 100755 src/qss/psblack/calendar_prevmonth.png create mode 100755 src/qss/psblack/checkbox_checked.png create mode 100755 src/qss/psblack/checkbox_checked_disable.png create mode 100755 src/qss/psblack/checkbox_parcial.png create mode 100755 src/qss/psblack/checkbox_parcial_disable.png create mode 100755 src/qss/psblack/checkbox_unchecked.png create mode 100755 src/qss/psblack/checkbox_unchecked_disable.png create mode 100755 src/qss/psblack/radiobutton_checked.png create mode 100755 src/qss/psblack/radiobutton_checked_disable.png create mode 100755 src/qss/psblack/radiobutton_unchecked.png create mode 100755 src/qss/psblack/radiobutton_unchecked_disable.png create mode 100755 vs2017_sln/RealCompare.sln diff --git a/README.md b/README.md index 1ea1b64..0d76dca 100755 --- a/README.md +++ b/README.md @@ -12,9 +12,8 @@ 您可以在这个项目提交bug或反馈问题。 -最新版本下载地址:https://gitee.com/cxasm/notepad--/releases/tag/v1.18 +最新版本下载地址:https://gitee.com/cxasm/notepad--/releases/tag/v1.19 -最新预览版本下载地址:https://gitee.com/cxasm/notepad--/releases/tag/v1.19 做国人自己的免费编辑器,离不开您的支持,请通过微信赞赏我们。 diff --git a/src/CmpareMode.cpp b/src/CmpareMode.cpp index 9a87c34..b8fb335 100755 --- a/src/CmpareMode.cpp +++ b/src/CmpareMode.cpp @@ -115,7 +115,8 @@ CODE_ID CmpareMode::getTextFileEncodeType(uchar* fileFpr, int fileLength, QStrin //20210802:发现如果是CODE_ID::UNICODE_LE,\r\n变成了\r\0\n\0,读取readLine遇到\n就结束了,而且toUnicode也会变成乱码失败 //所以UNICODE_LE需要单独处理。该函数只处理Unicode_LE编码文件,事先一定要检查文件编码 -CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fileLength, QList& lineInfoVec, QList& blankLineInfoVec,int mode, int &maxLineSize) +//返回字符数,不是编码类型,注意是字符数,不是bytes +quint32 CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fileLength, QList& lineInfoVec, QList& blankLineInfoVec,int mode, int &maxLineSize) { QCryptographicHash md4(QCryptographicHash::Md4); @@ -166,6 +167,8 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi QByteArray line; + quint32 charNums = 0; + auto work = [mode, &md4](LineFileInfo& lineInfo, const int n) { if (mode == 0) { @@ -199,20 +202,14 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi //如果是头部有标识的格式,则后续不用详细检查每行编码,直接按照头部标识走 Encode::tranStrToUNICODE(code, line.data(), line.count(), lineInfo.unicodeStr); lineInfo.code = code; + + charNums += lineInfo.unicodeStr.size(); if (lineInfo.unicodeStr.endsWith("\r\r\n")) { //这里是一种错误,但确实可能出现 if (length > 3) { - /*if (mode == 0) - { - md4.addData(lineInfo.unicodeStr.trimmed().toUtf8()); - } - else if (mode == 1) - { - md4.addData(lineInfo.unicodeStr.left(lineInfo.unicodeStr.length() - 3).toUtf8()); - }*/ work(lineInfo, 3); } else @@ -227,14 +224,6 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi { if (length > 2) { - /*if (mode == 0) - { - md4.addData(lineInfo.unicodeStr.trimmed().toUtf8()); - } - else if(mode == 1) - { - md4.addData(lineInfo.unicodeStr.left(lineInfo.unicodeStr.length() - 2).toUtf8()); - }*/ work(lineInfo, 2); } else @@ -250,14 +239,6 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi { if (length > 1) { - /*if (mode == 0) - { - md4.addData(lineInfo.unicodeStr.trimmed().toUtf8()); - } - else if (mode == 1) - { - md4.addData(lineInfo.unicodeStr.left(lineInfo.unicodeStr.length() - 1).toUtf8()); - }*/ work(lineInfo, 1); } else @@ -273,14 +254,6 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi { if (length > 1) { - /* if (mode == 0) - { - md4.addData(lineInfo.unicodeStr.trimmed().toUtf8()); - } - else if (mode == 1) - { - md4.addData(lineInfo.unicodeStr.left(lineInfo.unicodeStr.length() - 1).toUtf8()); - }*/ work(lineInfo, 1); } else @@ -295,14 +268,6 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi { if (length > 0) { - /*if (mode == 0) - { - md4.addData(lineInfo.unicodeStr.trimmed().toUtf8()); - } - else if (mode == 1) - { - md4.addData(lineInfo.unicodeStr.toUtf8()); - }*/ work(lineInfo, 0); } else @@ -329,7 +294,7 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi ++lineNums; } - return code; + return charNums; } @@ -342,6 +307,7 @@ CODE_ID CmpareMode::readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fi //20210901 发现使用readLine的方式来读取一行不可靠。因为有些文件中一行中间有个\r,这种情况没有识别为多行。readLine是根据\n来识别的。 //进而导致中间的\r没有识别为多行,但是在编辑器中却多一行,导致对比错误。还是要自己来识别行。不依赖于readLine + //CODE_ID fileCode 事先预判定的编码 CODE_ID CmpareMode::readLineFromFile(uchar* m_fileFpr, const int fileLength, const CODE_ID fileCode, QList&lineInfoVec, QList&blankLineInfoVec, int mode, int &maxLineSize) { @@ -1015,7 +981,7 @@ CODE_ID CmpareMode::scanFileOutPut(CODE_ID code, QString filePath, QListsize(), outputLineInfoVec, outputLineInfoVec, 0, maxLineSize); + charsNums = readLineFromFileWithUnicodeLe(m_fileFpr, file->size(), outputLineInfoVec, outputLineInfoVec, 0, maxLineSize); } else { diff --git a/src/CmpareMode.h b/src/CmpareMode.h index c479109..836311f 100755 --- a/src/CmpareMode.h +++ b/src/CmpareMode.h @@ -85,7 +85,7 @@ private: static bool recognizeTextCode(QByteArray & text, LineFileInfo & lineInfo, QString & outUnicodeText); static CODE_ID getTextFileEncodeType(uchar* fileFpr, int fileLength, QString filePath); - CODE_ID static readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fileLength, QList& lineInfoVec, QList& blankLineInfoVec,int mode, int &maxLineSize); + quint32 static readLineFromFileWithUnicodeLe(uchar* m_fileFpr, const int fileLength, QList& lineInfoVec, QList& blankLineInfoVec,int mode, int &maxLineSize); }; diff --git a/src/RealCompare.pro b/src/RealCompare.pro index ab6d1bb..cef9d53 100755 --- a/src/RealCompare.pro +++ b/src/RealCompare.pro @@ -5,7 +5,7 @@ TARGET = Notepad-- CONFIG += qt warn_on release -QT += core gui widgets concurrent network +QT += core gui widgets concurrent network xmlpatterns HEADERS += *.h \ diff --git a/src/RealCompare.qrc b/src/RealCompare.qrc index fc7ce54..7c0aac4 100755 --- a/src/RealCompare.qrc +++ b/src/RealCompare.qrc @@ -27,50 +27,6 @@ Resources/edit/global/closehover.png Resources/edit/global/needsave.png Resources/edit/global/noneedsave.png - Resources/edit/styleblack/closeall.png - Resources/edit/styleblack/closefile.png - Resources/edit/styleblack/crlf.png - Resources/edit/styleblack/cut.png - Resources/edit/styleblack/dircompare.png - Resources/edit/styleblack/filecompare.png - Resources/edit/styleblack/find.png - Resources/edit/styleblack/needsavebar.png - Resources/edit/styleblack/newfile.png - Resources/edit/styleblack/noneedsaveallbar.png - Resources/edit/styleblack/noneedsavebar.png - Resources/edit/styleblack/openfile.png - Resources/edit/styleblack/paste.png - Resources/edit/styleblack/redo.png - Resources/edit/styleblack/replace.png - Resources/edit/styleblack/transcode.png - Resources/edit/styleblack/undo.png - Resources/edit/styleblack/white.png - Resources/edit/styleblack/zoomin.png - Resources/edit/styleblack/zoomout.png - Resources/edit/styleblack/copy.png - Resources/edit/styleblack/needsaveallbar.png - Resources/edit/styledeepblue/closeall.png - Resources/edit/styledeepblue/closefile.png - Resources/edit/styledeepblue/copy.png - Resources/edit/styledeepblue/crlf.png - Resources/edit/styledeepblue/cut.png - Resources/edit/styledeepblue/dircompare.png - Resources/edit/styledeepblue/filecompare.png - Resources/edit/styledeepblue/find.png - Resources/edit/styledeepblue/needsaveallbar.png - Resources/edit/styledeepblue/needsavebar.png - Resources/edit/styledeepblue/newfile.png - Resources/edit/styledeepblue/noneedsaveallbar.png - Resources/edit/styledeepblue/noneedsavebar.png - Resources/edit/styledeepblue/openfile.png - Resources/edit/styledeepblue/paste.png - Resources/edit/styledeepblue/redo.png - Resources/edit/styledeepblue/replace.png - Resources/edit/styledeepblue/transcode.png - Resources/edit/styledeepblue/undo.png - Resources/edit/styledeepblue/white.png - Resources/edit/styledeepblue/zoomin.png - Resources/edit/styledeepblue/zoomout.png Resources/edit/global/notebook.png Resources/img/next.png Resources/img/pre.png @@ -153,5 +109,89 @@ Resources/img/register.png notepad/rightClose.png Resources/img/bookmark.png + Resources/img/refresh.png + Resources/edit/styledeepblue/autosave.png + Resources/edit/styledeepblue/clearsign.png + Resources/edit/styledeepblue/closeall.png + Resources/edit/styledeepblue/closefile.png + Resources/edit/styledeepblue/copy.png + Resources/edit/styledeepblue/crlf.png + Resources/edit/styledeepblue/cut.png + Resources/edit/styledeepblue/dircompare.png + Resources/edit/styledeepblue/filecompare.png + Resources/edit/styledeepblue/find.png + Resources/edit/styledeepblue/indentGuide.png + Resources/edit/styledeepblue/mark.png + Resources/edit/styledeepblue/needsavebar.png + Resources/edit/styledeepblue/newfile.png + Resources/edit/styledeepblue/openfile.png + Resources/edit/styledeepblue/paste.png + Resources/edit/styledeepblue/redo.png + Resources/edit/styledeepblue/replace.png + Resources/edit/styledeepblue/sign.png + Resources/edit/styledeepblue/transcode.png + Resources/edit/styledeepblue/undo.png + Resources/edit/styledeepblue/white.png + Resources/edit/styledeepblue/zoomin.png + Resources/edit/styledeepblue/zoomout.png + Resources/edit/styledeepblue/needsaveall.png + qss/black.qss + qss/psblack/add_bottom.png + qss/psblack/add_left.png + qss/psblack/add_right.png + qss/psblack/add_top.png + qss/psblack/branch_close.png + qss/psblack/branch_open.png + qss/psblack/calendar_nextmonth.png + qss/psblack/calendar_prevmonth.png + qss/psblack/checkbox_checked.png + qss/psblack/checkbox_checked_disable.png + qss/psblack/checkbox_parcial.png + qss/psblack/checkbox_parcial_disable.png + qss/psblack/checkbox_unchecked.png + qss/psblack/checkbox_unchecked_disable.png + qss/psblack/radiobutton_checked.png + qss/psblack/radiobutton_checked_disable.png + qss/psblack/radiobutton_unchecked.png + qss/psblack/radiobutton_unchecked_disable.png + Resources/edit/styledark/needsaveall.png + Resources/edit/styledark/needsavebar.png + Resources/edit/styledark/autosave.png + Resources/edit/styledark/bincmp.png + Resources/edit/styledark/clearsign.png + Resources/edit/styledark/closefile.png + Resources/edit/styledark/copy.png + Resources/edit/styledark/crlf.png + Resources/edit/styledark/cut.png + Resources/edit/styledark/dircompare.png + Resources/edit/styledark/filecompare.png + Resources/edit/styledark/find.png + Resources/edit/styledark/goto.png + Resources/edit/styledark/indentGuide.png + Resources/edit/styledark/mark.png + Resources/edit/styledark/newfile.png + Resources/edit/styledark/next.png + Resources/edit/styledark/openfile.png + Resources/edit/styledark/paste.png + Resources/edit/styledark/pre.png + Resources/edit/styledark/redo.png + Resources/edit/styledark/rename.png + Resources/edit/styledark/replace.png + Resources/edit/styledark/sign.png + Resources/edit/styledark/transcode.png + Resources/edit/styledark/undo.png + Resources/edit/styledark/white.png + Resources/edit/styledark/zoomin.png + Resources/edit/styledark/zoomout.png + Resources/edit/styledark/closeall.png + Resources/img/savedark.png + Resources/img/opendark.png + Resources/img/reloaddark.png + Resources/img/vip.png + Resources/img/vipdark.png + Resources/edit/global/noneedsavedark.png + Resources/img/diffall.png + Resources/img/expand.png + Resources/img/fold.png diff --git a/src/RealCompare.rc b/src/RealCompare.rc index d4cb5dd7ff62a514256f1c35855ea9fdf56e1eaf..93ef05d53183eba092bf3ab64f6f01269d559b7c 100755 GIT binary patch delta 76 zcmeCv=+oHH!oh0Epu=D^xsyX5!rHu-V=@zvsRtBX&#gO|kDFt17q<*lB#_&1^BwMU NjBu{>=2N^bYyj3(67&E7 delta 78 zcmeCv=+oHH!oh06pu=D=xsyX5!rHu-V=@z?#pLz8(vv3$a7^MBo7}}M1C-MPs)7sh RZN9^Oju9fdc|C7D8vrtg6w?3z diff --git a/src/RealCompare.vcxproj b/src/RealCompare.vcxproj index e43f716..f64793d 100755 --- a/src/RealCompare.vcxproj +++ b/src/RealCompare.vcxproj @@ -11,11 +11,11 @@ - {3842E8A0-CF86-31D6-A247-40F65F8611D3} + {26BC87D0-189B-3661-B87D-347CF9E0A47F} Notepad-- QtVS_v304 - 10.0.18362.0 - 10.0.18362.0 + 10.0.19041.0 + 10.0.19041.0 $(MSBuildProjectDirectory)\QtMsBuild @@ -44,11 +44,11 @@ - x64\Debug\debug\Notepad--truex64\Release\release\Notepad--truefalsemsvc2017_64core;network;gui;widgets;concurrentmsvc2017_64core;network;gui;widgets;concurrent + x64\Debug\debug\Notepad--truex64\Release\release\Notepad--truefalse5.15.2_msvc2019_64core;network;gui;xmlpatterns;widgets;concurrent5.15.2_msvc2019_64core;network;gui;xmlpatterns;widgets;concurrent - .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;qscint\src;qscint\src\Qsci;qscint\scintilla\include;cceditor;x64\Release;release;/include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;qscint\src;qscint\src\Qsci;qscint\scintilla\include;cceditor;x64\Release;release;/include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) release\ false @@ -56,9 +56,8 @@ 4577;4467;%(DisableSpecificWarnings) Sync release\ - true MaxSpeed - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QSCINTILLA_DLL;QT_NO_DEBUG;NDEBUG;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QSCINTILLA_DLL;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) false MultiThreadedDLL @@ -68,12 +67,13 @@ true qmyedit_qt5.lib;shell32.lib;%(AdditionalDependencies) - x64\Release;C:\openssl\lib;C:\Utils\my_sql\mysql-5.6.11-winx64\lib;C:\Utils\postgresql\pgsql\lib;%(AdditionalLibraryDirectories) + x64\Release;C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true false true false + true $(OutDir)\Notepad--.exe true Windows @@ -85,12 +85,12 @@ 0 - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QSCINTILLA_DLL;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CONCURRENT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QSCINTILLA_DLL;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CONCURRENT_LIB;QT_XMLPATTERNS_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) msvc./$(Configuration)/moc_predefs.hMoc'ing %(Identity)...output$(Configuration)moc_%(Filename).cppRealComparedefaultRcc'ing %(Identity)...$(Configuration)qrc_%(Filename).cppUic'ing %(Identity)...$(ProjectDir)ui_%(Filename).h - .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;qscint\src;qscint\src\Qsci;qscint\scintilla\include;cceditor;x64\Release;debug;/include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;qscint\src;qscint\src\Qsci;qscint\scintilla\include;cceditor;x64\Release;debug;/include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions) debug\ false @@ -108,7 +108,7 @@ true x64\Debug\qmyedit_qt5d.lib;shell32.lib;%(AdditionalDependencies) - x64\Debug;C:\openssl\lib;C:\Utils\my_sql\mysql-5.6.11-winx64\lib;C:\Utils\postgresql\pgsql\lib;%(AdditionalLibraryDirectories) + x64\Debug;C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -124,7 +124,7 @@ 0 - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QSCINTILLA_DLL;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CONCURRENT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QSCINTILLA_DLL;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CONCURRENT_LIB;QT_XMLPATTERNS_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) msvc./$(Configuration)/moc_predefs.hMoc'ing %(Identity)...output$(Configuration)moc_%(Filename).cppRealComparedefaultRcc'ing %(Identity)...$(Configuration)qrc_%(Filename).cppUic'ing %(Identity)...$(ProjectDir)ui_%(Filename).h @@ -532,6 +532,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -596,7 +621,7 @@ Document $(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs) - cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus /openmp -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h + cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h Generate moc_predefs.h release\moc_predefs.h;%(Outputs) true @@ -947,15 +972,35 @@ + + + + + + + + + + + + + + + + + + + + @@ -965,9 +1010,9 @@ - + - + @@ -975,30 +1020,36 @@ - + - + - + + - + + - + - + + + + + @@ -1006,57 +1057,66 @@ + + - - - + + + - + + - - - - + - + + - + + + + + + - + + + + - + @@ -1065,31 +1125,36 @@ + + + - + - + - + + + - + - + diff --git a/src/RealCompare.vcxproj.filters b/src/RealCompare.vcxproj.filters index be4133d..536ad83 100755 --- a/src/RealCompare.vcxproj.filters +++ b/src/RealCompare.vcxproj.filters @@ -347,6 +347,31 @@ Header Files + + + + + + + + + + + + + + + + + + + + + + + + + Header Files @@ -564,33 +589,93 @@ Resource Files + + Resource Files + + + Resource Files + + + Resource Files + Resource Files + + Resource Files + Resource Files Resource Files + + Resource Files + + + Resource Files + Resource Files Resource Files + + Resource Files + Resource Files + + Resource Files + Resource Files + + Resource Files + + + Resource Files + Resource Files + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + Resource Files + + Resource Files + + + Resource Files + Resource Files @@ -618,13 +703,13 @@ Resource Files - + Resource Files Resource Files - + Resource Files @@ -648,7 +733,7 @@ Resource Files - + Resource Files @@ -657,13 +742,13 @@ Resource Files - + Resource Files Resource Files - + Resource Files @@ -678,10 +763,13 @@ Resource Files + + Resource Files + Resource Files - + Resource Files @@ -690,16 +778,19 @@ Resource Files + + Resource Files + Resource Files - + Resource Files Resource Files - + Resource Files @@ -711,15 +802,27 @@ Resource Files + + Resource Files + Resource Files + + Resource Files + Resource Files Resource Files + + Resource Files + + + Resource Files + Resource Files @@ -741,6 +844,12 @@ Resource Files + + Resource Files + + + Resource Files + Resource Files @@ -759,13 +868,13 @@ Resource Files - + Resource Files - + Resource Files - + Resource Files @@ -774,12 +883,15 @@ Resource Files - + Resource Files Resource Files + + Resource Files + Resource Files @@ -798,16 +910,7 @@ Resource Files - - Resource Files - - - Resource Files - - - Resource Files - - + Resource Files @@ -825,13 +928,16 @@ Resource Files - + + Resource Files + + Resource Files Resource Files - + Resource Files @@ -843,6 +949,9 @@ Resource Files + + Resource Files + Resource Files @@ -858,10 +967,22 @@ Resource Files + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + Resource Files - + Resource Files @@ -873,6 +994,9 @@ Resource Files + + Resource Files + Resource Files @@ -882,16 +1006,22 @@ Resource Files + + Resource Files + Resource Files + + Resource Files + Resource Files Resource Files - + Resource Files @@ -918,6 +1048,9 @@ Resource Files + + Resource Files + Resource Files @@ -927,6 +1060,12 @@ Resource Files + + Resource Files + + + Resource Files + Resource Files @@ -942,13 +1081,13 @@ Resource Files - + Resource Files Resource Files - + Resource Files @@ -966,7 +1105,13 @@ Resource Files - + + Resource Files + + + Resource Files + + Resource Files @@ -981,7 +1126,7 @@ Resource Files - + Resource Files @@ -990,7 +1135,7 @@ Resource Files - + Resource Files diff --git a/src/RealCompare.vcxproj.user b/src/RealCompare.vcxproj.user index b94385e..13f7103 100755 --- a/src/RealCompare.vcxproj.user +++ b/src/RealCompare.vcxproj.user @@ -2,9 +2,9 @@ - 2022-11-28T01:31:37.4770997Z + 2022-12-11T10:37:19.8112403Z - 2022-11-28T01:31:37.7020503Z + 2022-12-11T10:37:20.2889680Z \ No newline at end of file diff --git a/src/Resources/edit/global/needsave.png b/src/Resources/edit/global/needsave.png index 6d064fcebca2d39d526052db40a0cc118b112759..c8c12e3b3f111ead21e2590013cab07b41c8e246 100755 GIT binary patch literal 412 zcmV;N0b~A&P)Px$R!KxbR5(wSl0QoWK@i2?tX?7tc0vj-B!zg<#>T?RSSpB!V5^mljrawUd;=Rx zL2FUL(kAIFY;0l@EDU!R0UH~O+$J|Nk(HeJbLTX>Ec1Rd^L7XTYV(tMIpaj`y;JGW zBN3BQ=*S|LTzW@$`4S7^btuu3;nM<@N4LfnmgiQcb0PY>v-!YI#Ks95nOayeN30u=$>S)CeUB$c0P5o>}l&>E- zLd~`g30QSJeJp~yZJjgll=JjuEWlf4Ce;q~BQf8IfQj~!%38}dzgn>XlJt^Jo+$8v z+yl_nlG{Fu?LpL9k2En#7+USWCjLika(llpZu6p`vYFqIdHgDXxA)-y0000lso literal 315 zcmV-B0mS}^P)Px#^+`lQR9HvtmrV|WFc5`11UZGWGoq)^L+EwXo4EH7ateRq%ChqaCFz(Unh;Z9 zN@|G7bi;zqn{QqQIt4ZGf`RiZ0T2fo9k`{*7M0osYSLq-&BmqG2>@>hL|l>p0OVaz z1pXbD73HcIK&DLvd7X?-^mGZ`(_}&KrrMl8&T-k9koZx|-Lk2RMmcd)mGp0T2ho0de3z96)QGg9P`_ z2msYd*?S=2CTiV>n0o_|;AI@MPro*RIEtP$EqRS(K`Lj6$h|-ucmee}_#uIAsnGxc N002ovPDHLkV1n|Px#^+`lQR9HvtmrV|WFc5`11UZGWGoq)^L+EwXo4EH7ateRq%ChqaCFz(Unh;Z9 zN@|G7bi;zqn{QqQIt4ZGf`RiZ0T2fo9k`{*7M0osYSLq-&BmqG2>@>hL|l>p0OVaz z1pXbD73HcIK&DLvd7X?-^mGZ`(_}&KrrMl8&T-k9koZx|-Lk2RMmcd)mGp0T2ho0de3z96)QGg9P`_ z2msYd*?S=2CTiV>n0o_|;AI@MPro*RIEtP$EqRS(K`Lj6$h|-ucmee}_#uIAsnGxc N002ovPDHLkV1n|Px#)Ja4^R5(v#WS|f*g7n`IVc`AG!D0+EOY_N}12Fb=85Rc+8zcr}GqA8c(0uUY z0Z1HTfIM3?!+(Y)P=N;ZN52|j2HcQi`_J(I{{fB1za7DBDA0KH3#=DR+>~Rh|IfhC zK#BqX|NV0Wxr(3x$X-Bp0Zs$JF8u!=9tJ33%*Y5153mwkE+95ia2fE7k%3_r9zzuV zGcY9Jb^$cB@woyP4%l5V3=Cjkz#EAF85pz~7#KpSAB~{Y#>B*APiz|a_y7Mx&BwnN g!1DsJ8nLMZ0C2Cw5%3?my8r+H07*qoM6N<$f)8tOegFUf literal 0 HcmV?d00001 diff --git a/src/Resources/edit/global/noneedsavedark.png b/src/Resources/edit/global/noneedsavedark.png new file mode 100755 index 0000000000000000000000000000000000000000..14101a0c278ce3091eb0162acb2927441edf2845 GIT binary patch literal 333 zcmV-T0kZyyP)Px$2T4RhR5(wSlCeqyQ4~babXInPt$$!+VP&>d2qJ>5RyH=`519Ocjiq2}(LhQY z?JR8k48g_^5Jqlz51z?p_xYM#c4y9=oxK9EJ&0?~k@Q;Xl*}(RX5bq*m-LYJC7?+U z_kc(=UVvT$F?|G_WXK;t#Iqg3fuszab8JV-0IUO78L|oxQ`*i*(%AMLFa)-i09~c# z0*l_7RzMzYdn4{8eU)*l0JfiieP9ikNjfaRQF3(Bp1}4tFa-{PAK)1{lJrr0Vkh7X z*pYOR47b3$r2AUHCh!J4rr5{8uB6W@KoVU7rwK5TbW`0y-&(Ky3w_3g_e&-I(?6Ft f>e{?MVr=FwI;XCCd|=Fz00000NkvXXu0mjfX|{_8 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/global/noneedsavedark1.png b/src/Resources/edit/global/noneedsavedark1.png new file mode 100755 index 0000000000000000000000000000000000000000..7479f04e96361a8174c7b2551ace7b8391b2a02b GIT binary patch literal 279 zcmV+y0qFjTP)Px#(Md!>R9HvtmrV|WKn#WZuHz~25PBW)Chk3ioPxbuFHuvRNiYtyB||1AWy6C0 zeDm_41=RRLNiN^-vP030^~0GJ?|`62gG zA!a_LXJb~*k~ifnoyJpW4(G|M2_SwEb*@bS<|^(Dkd3JNa1RfN(N1dTPrwtvO*5~{ z1IETbVQX(s0E7aeKq&AZ3J_6ok#Kw&^Q7FikT@Exg%0kGC=C+x^ix1z07lnJR_Www dnfNaV1>POQ&>`SJS=j&p002ovPDHLkV1grHZubBH literal 0 HcmV?d00001 diff --git a/src/Resources/edit/global/noneedsavedark2.png b/src/Resources/edit/global/noneedsavedark2.png new file mode 100755 index 0000000000000000000000000000000000000000..e46bbb12a9a68773cc3daefa9bc4384caf00534a GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|)_J-(hFJLD zoxG8k$xwhLoqGX$krP*gep5$_U&Sp2r3Dl8pL%9Iz7V-B^bP0l+XkKMAlsa literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/autosave.png b/src/Resources/edit/styleblue/autosave.png new file mode 100755 index 0000000000000000000000000000000000000000..17d547ac547aa1bd30440787228a002215979068 GIT binary patch literal 1562 zcmV+#2IcvQP)Px))Ja4^R9HvFmuqYkRTRhnXSNS3ukN&kK#G9fTLKso1gj_rje;fyKB!=nM<5Di zr?pb$i;u*T2*!xi06WV=gF?k9`UOdhpn(KZvGPbT71-M%NCPQ!XImvmA3Mj)?9Q?~ z-9G3S?x&r5&*OIYd(wW((b`>dV`G* z!Q>}FY$_&Q%g$^+e6?)GEyrF0AU7zd5o13AMXApCq8X)E+g=w(-4JZ9Upn6JYvP_;XPctwrd5?i6CM;_6i!;`~4UoU%(r7cFfjv2%A^xjnV{YZv z{FUp;?wrd|=72E^3Z{aQ<~;3N!O#c9^sd{s;>jG-S~mWg4UnhH0}L!k zAvJkHq@wsBsvEM@g6v8t{010>11SXqrvTa+(R@2Cd3Bqd2?ce@x&-_X*2F?`M^C_+ zuqGb16}QXD%-Bl|`#HX%VAMmQdN%oYJB2favOJf;T7DW6-2c7d2 z05vG zq6=5-2cmU`-}gy6{}IG_gN51A6FVfYt%%G`cYym7-&y z0CBl4CVoERFHY1qMSqLTRx|JqfGh%U4{OE#)C}ly4*^!w{bp$5vEHKTaYytJq~nI> zo1IQy)#V8Qj{>MOH1UKh1Je5M&j+E#@QXJG4`7u9MKG45^wtf(2NY171k z-gH%6UIy?0i2gAAzNx7h2+ArjHd~t>MJc|qrpSIjxR<*JtO3K)io)_-BAT#& zCvL)_TVz322CmzNn7=T}i&yq$)EkhR$vDwoAx`(_*g01Nq1_-_VLh8>*Z8)I$yPb; z09X&I9@+uW>KG+28R%8pAB0yAy+WXPMtP^96_+_WDenUJaMIb0kpoF@UjQkY1)zXt zv}(RnX#wn7>2d=B@5BYp8Jd{fUxa;~tGcwtu}SgTZ;WUnWk5~IK%!o{+y&sZSU;eR z$y^xGCLX&R5U+k=HnDO5gxt8^XND$LxoxBe=s6Eso%>-#6HaFOWbx{9BLQ!x2qn#h z$@@J3;=|~-0H*Zx!iNCVGgEzLmZ$#uss~#vnUT9Lj_T@+mJqQu6_)@sKMi366fAaz z)AUUk`#?FIaL(pB(^O882k#RwH;qx}vJ&ny`(}({y`q@YL5e*G0BGp!Mrm?myGF9m z3MSee7p^iiVU5@JQgyiq1nah(*=POk+CAzgV9(1CB7W(h?~z z`Z}E>dvfZ)SSTn2#lMso%`nl7Y+Nx`^&I0YJMn>MRB});o_oCh2U@jtKYznwOaK4? M07*qoM6N<$g2A)Wv;Y7A literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/autosave1.png b/src/Resources/edit/styleblue/autosave1.png new file mode 100755 index 0000000000000000000000000000000000000000..a5422d1b512d1e9602a9af1c3a6b7a0b632aa852 GIT binary patch literal 2990 zcmV;f3sLlmP)Px=Xh}ptRA@u(SqW@h)fGMO&pzX2X1vDn9*-SofdmH=;*da;LIEja6H5y!r8KH- zgjArZ1cinQ%34t>d4gEl0u>ab&_EywB#@90vKl*aV#ixzJL7m6duHtMEPrPHf7N^T zI9_IKkDXE>aV2ZM|G)3Pd;Wdz-Fwd`_<;-gf%}gi0sOxscu68)u4>5wp(`nnPY786 zSuO@43n>s!05^a^uwP2u5Xc@$!uElOEZ0=#puv!P`VQk zzI0R;?22*hsQRn`n5?Zg6UfZzyTX?8q+S$D=TR(m!T>+ws0afUK?sEhT6l>X9-={u zVjfNjS!hyZjPaSgtoLi4vOSXJixo)B08Cq2HW5l+U=s;Mrq>5flCt0#q)`{2n^Hgw zhTsi^KnS1^1PFvcK>(dbHR_+8B;tUo7+bTnee;@!?-ym!q7hvyo@Ter{)krjGp;8FgsalTzsIQ6{#Ebx#tj+HbfUS8{_&>)o z=^O^VBAi|k!Jvfvf^6gzWWsDVj(c%!XV3HhbMv#t-FG-#Xm7FMY)c1}N&!Z_7Dj^x zwTe7gwKv2BVp;$uYxBJXc$Zmy-SZkZ-aFvs05Y@FQMjl8CUZi>h#%a041z+y)oV&3 zK6g3>(Ny08TSqtIbsD4@^;~bG;Wsk|F(rT`YwLOnc{j86toMDS&;fKg-0+AY?)+7& zuiz6kHJn36W-8+14dWb*2B5dwj()of#Y-(*|HwDraS#Tr8uLsBunqo%{+?l5l-%v8 zEchVWo`?#-w54SUq4W~~c@O({V2RWLm&cF3K_3<^wTw>A3~zmJ2U63Mam~8Y83Fig z+gC_SPsWOsmyPP5s%=DLeJe7|@z86OIHkzO-?TRY6vrL*Kp8eK4nzVG6@a;_=~WQ& z@TyQF?icsM9}L0P=f=Xt3$Xa|qH(s`&voMXp%YkEvIq-`az~$i_4z@5z3zsx(R*i3 zwc_;2M%=jJTIl13mrPiWep?G$dl#}(68Oe`U%eW8RZBo1Kha-N^ye7^7%2@-uF~gq zV#2C5C49ry)ihw$+7is0pEg&2`S^yqX4Ka;W9jl@6c*>YVOc&c0Hd{eg8+P-NWJtW?>odRhH$~*M#)u6k-H!ZLvAll)-<5Y)`Q&qOcX6H zKwSLzwH%&=ImRS>+Dx3>?-%jeM_=;WIr*7bw4{LVi?-JDs6J9R8inU|x8kgj2APEN zT;;`WW9>{@LZ+&wO@xpa)(7iwXW$@uT^QFj+8$Tnw1!L3tAz}jpF zko=POT^J-c+Ij|%SCEA(N|%1G5%}(C9Xif+A}=)&1H^#e>3JzOX(LC90Bir^t==~f z5(BXH4~`};mhwgaa6-(?&EQ4cOd>FqPI!NWqs4SthGu)Lss1eT(~Srb1uFEvW{+Hs z3d^|8Z!&x z&1JyRgSD`C*^!wP2NyA5lm0$XV4t(Xa@{niP}6%Lq4%8e! zg_UbcFhBERj}WPx4p*At+COZBRi!mYPw^&(H8V_J*ZhPNUIg;}{S`%T#{_^Wn?{ma zn8*rBGP+$Jh=CARUssB>dCA-+YwB5Z!T2#3cHw=aNTNaBT^ImL|hj1q2RrQ>ue&WVn^bnI6y!oM_Y_;W(ZFZwGB-kHw%m;f+klePI- z0zA&H+39pmsDU4`OcO2kJai5VB^%6iT$Yde0^LN1Iz={Wl=$kI*0r1H-pH?TODj%Z|9vk~@ELXN;snm{Cd0_aD4zjn3K9T^tkN`W0=bY!b z&r6i+-IjJ0aq(vYi=71vThSW79r$ncIR5lXuNS}n^$wbCn9_x*k$`}{g*xnuz5?8z(* k{0Lx{FYb~J`@u)xzuu(EZG>dY1poj507*qoM6N<$g27jX=>Px# literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/autosave2.png b/src/Resources/edit/styleblue/autosave2.png new file mode 100755 index 0000000000000000000000000000000000000000..fba3229f187dfd81b4cd2a773de8f0e638a89a7e GIT binary patch literal 1837 zcmV+|2h#Y7P)Px*=Sf6CR9HvFmwRke*B!^d=UzV(Cr%tEHYI88m^j1`plPx&7DhyAMK_>A1@fI4LWUY>AI;8w6>@O(NZet9uQa)3L(6bkcXX^gb>G0;=KI4 z_e|HR4SpoJs8Y{A*1hL)d)av} zhe;YBTW4OtGg!}nE(gJEo)T%SL59UKj>F-A$ageZpt}NmX?PoeH7W)5mKb>P{0BHz znF=UVX^6o+PT(E~nz~u;qLuNFd&#)pPt8tS%^P>~%CrDkhU%rD{4rH3hQ3!CoUz!% z;i{cMYo8QXx`5#^3Z;S|Bb6Xu%fqPg!IVc)*UaKX6FcN^lmGAp+lM+WSEmA*5=5*eyfueJLoKrGQZ{$823nNN;P`1lnvKv~-NZe$#^|Nn zOd^Pc0P6he6%_nOE6O-5F>yFpCxg`iY}t^9?^k9;^t4{> z1j7QxB17cekpmZMuZj<$iD+aPX9f1A}ilJ1mW1nJ5pa z^0#fxRPZ%>pY}`s^hqk7Tsae3c^@)WO6UxEcdMwV{k9e>xFCn#Q8hk1X2;K#P2l-= zB!2fesdjc+{*VwrQ(&%NSjd$xF5>ZzQ*s>n>%55Dl^N-ACl|sYtUFIFJfAyz5i+?9 zbLSU=VHvD`_Hrl}>RMRTx3XvZJ1i9m0di)UM}E1&pVrdL!Yfw8vUM`{Q?020V&$v$ zc0jKfght8Z<)ad~WD+TwclZUlNC+}?FX&i?vF-eUA1AL!VVa}GkDr+FwE(>SULWk% zTUb)$!*Bm70VU-A!Oq<`q5v`tFMfxiN@>f`&7VAcP<-T>+Ob2X7s+VbjANZ26lM1fE~B9&W!{tV9)ng?b zYxz)$_xH^O?;A$r7uTTE&x|X#>8hj4){By|IUrIc);)I(yPon2Etx;t%HDK#S|Uv) zsu5)w%o~*{c=e?XKH2-9%aE(nU{wVJrBZ=3r6Q@*hlNJnV{p62P$I0`9R?Gf`eIQ(lKU@+-Q67(1K9OTzbs_Y*vWW4f3(Z*YP<$&E1WtceAGs%l z=gu1*2=3py!Uvm!!NJp_AP=YfXK}nqhNG{|3jwsZ z+R)e2A2AZ!h=kJ1P$^Mpn!KJ@K64qBCJ&a)a~V<8H&;++WE( z68Wj+4+cwDFXYI{OCr?Pv)HmR7sWH(QP*)SfNNkFj#~q0bExpr8{Js5D2S!S9BLax z{HKjzkvNVYL>nskR6Qj5=9UE3_F0gCIk3A|N%3-+FIJX-8USpgRsNIw381;_LH*jXT92*QLa{kFA)&<})>Z1bZ5 z#yLXp-)mx=Y$6bg35+^9j9-pqZNf;_<$+pBu&^MArE>z1h!GmeE_AYlGIY*hM@@60 zES`2K4M8w;pDG0;Jd}=15cIf!UKax&H~BfGfGL-UK|9&`ZV#o*P0H}=rZPUQ2g0<% zh{m(nED_H4dy!2#1oxsm bnQ#6N-`eayYEQV?00000NkvXXu0mjfc#?Q{ literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/autosave3.png b/src/Resources/edit/styleblue/autosave3.png new file mode 100755 index 0000000000000000000000000000000000000000..8b0203983613d5ea7aaf8ec8d5cf39d5ca5877be GIT binary patch literal 543 zcmV+)0^t3LP)Px$*-1n}R9Hu26j7*f_|L=?!oa`~z`(#D%|IXUoPmL19pk@$YZ!$UtEw3o84~_6 zGUUC#+qRt^_6sRihcYt$U&ZjBp@vadsp>uh17r8wd#%&xVL8kW5#*-rK)<6o_F`!8cEd)QV+I!)B&R*Fd71*Auwb^z{;)P>Gj)ht3V~1 zs4!R9v0a7xNG%P?E(zU3r<*bUXFM1cV$1=ublIA-KmIfRx8J!s^AstLAlm_Y)}7}= z{PhiLOWnctHFxi1ShMlsg-b`v4e8-Npl)oOHc z04V->c{p}jTPU)CEIfAV!H-X$zI&6J4#DIPHy%?{Cu2O7#SJTt&Y|7+gfYtyBM^mSg~^de+K6E zclTR%4TuA%Wht^bWaR>CI%L!Vun-uKu9=WZr6uD(#{Qn#()1-0{}};qDbMNtzrNG002ovPDHLkV1fZ=2VwvK literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/bincmp.png b/src/Resources/edit/styleblue/bincmp.png new file mode 100755 index 0000000000000000000000000000000000000000..6bf77ee74e6fffec7c57571d5b139ca4b3a788b2 GIT binary patch literal 1542 zcmV+h2Ko7kP)Px)z)3_wR9HvFS8Z$*MHqhG+1s|ZeD$DIhz29Kr&0eHL82mo7!7DlG_eMgLXC>` z_DYoxKM+47Q4B;O*ei{}gows!2pAF~5EO$Vfx;gWfAmg@3Be%T9z_ml?{;1@bGPT- zaV=LRaemFt?7Yvj@7Fv__@4)j1b_S|y)&4o3BHz2#u+Tk^o z+O3E{eJt@jfu8{|qawqM^B`<>Y)hRPb_`3PJ{E5V@Dc%cX)BChh_Hj1esoN0k3BcFdbm>lJ zV{a~6ydh9JX$Wsky5=c0 z7e;0>+^WeE+>_6hZYOHZ_udP3B$k1At$r4~#(5$9inmuppgtDwQ3*$&_M{!!P%yA1 zK1QT7b*1j}6Ogj%5SVWu;CnJM&9cr+JI&U4btc%E*a+s<{P}e4<(h_*OK-fSz2X_o zms%G<`yD$p>uTU?-y;CfPXNzkqN8LCEEG(R-mf#$IFDrj-pbqS2QZe2ccvoYM~Vmp zW4(s}nhxS8ylhu)A4Kig(l0L!K|bau0*0}GG4PwW?@FVESbUIwUc}^@#74{u+u7FJ z{?Hy6w;?`T82Et+M^h0iSMvZSetN9YAM>F?0OoVTlr3O+xIj*t^T61o$uU->qSk6P zua6~C1Rlo_uchp%A8G>i9q|q#*hE;Jj94qw+SR_^9|8$_I$#X$E)ZmMnv~cEz#tNx z)grb0RO_^hIv+ZE4}j<%fDb!%_-;+0;C`n2oM`BPS{obtz1}p^HAA`IPe4~een=Nn zK<0KZ8X>4#(BP7cTX(tNo|00pjF0uc!Jzj5{>!n$WAX$Ned=OSEw#Vh(lKo8OiXme zpfM5xV!*A<25PngxPusbD3EDU=M7oqo{oh6Eb1{pCS_Yyc>?hZ0O|}L9DOEwyP9J{ z*RPX?125+RcFivtn9ZOg!Z4Z%msHm4AzgE(*Whw1#Eu;j*NlMV>h+Mai5Y#SNzIZ6 z`#f;hH6A61E}f9Be3%TeQ_a;Ka!o=&gidBe0Q8FhH-ocB%7IH4b0m0jz@RU{$U0HW zye3Ila5Ga&ATYRRDDZQOt$o2*Ts5V40Zu!1cvOx+M|>>^%LsTqX6fMSU- z2D;0E!^K=@v9(KM#S+H=R!Q2Ej9Sw*0WGxz9aMtDiCXu1Mk;PZ;8nuN>JF!dKjvUL z--+I$iB0_Ucw;u>o&*qp#IsJD^;zLA2*%T#tc^NG$Avo6Ok4-<-p5&z%$^#IFw2nPL>n+&7>V( zl><(MT<{7IJq7S}Idb^eiCRnjM8wkzKc_htXF)u` sOnuDQbgs?P8DGg55rIk!j`W?s0fvVPP9LTiSO5S307*qoM6N<$g6+%8)&Kwi literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/clearsign.png b/src/Resources/edit/styleblue/clearsign.png new file mode 100755 index 0000000000000000000000000000000000000000..9ec256b9334eba6d690e5abd6f9f08ca77deb50d GIT binary patch literal 1056 zcmV+*1mF9KP)Px&+DSw~R9Hu?mR)QVRTRhnXV#jSXzcESBEA@yyDj(;Blw^uMveA?fU#986-Y1y zVeXa^B?c0VVytLYBnUIx073kUNVH%KQD6LcFeE0$_yx6ht3DYMm^(J;({|>VUADE| z?(WQXXI}3)|MQ!3&;QI2Vt&&0Xcq&IAVK|lvp5?jPhkO#oL_xF-Ig#g%!IFrF&_rH z!ysY>NZM)#5nlFNS{5Y=g#iFd!ysY>NIB|r0M~0NZZ38%<*4If5OD(>0pSj9i6xU) z7X}e4K+;jW33y6NamDo6sRt1oK&zu3G=Pu6d{SpKk5&$EEr?hEQnu;RGoEqA7s1J$5@&Z~}y}fy{vhd$+(Jm40QiF82b~wTwEr2Uc*&lFYAG0p zIl%X`0Os4jEb!^_egGR77$)#Am@WdmkcqA%;GS}!vj7)-Kj<9a(*Apdwyy%=4`%#J zz_MaIld)Qh46L$W{K8Ei1_gGGqiFx|`ZYA{6gr;57mk z09eSt88Yyx-Yibf1aQ<>1f17WbVqGxXmREh#I(lk6`xd#oz(#ff>Qt=(=yZ33`BX* z?gL?sw!{~;v}Vmf%2CB7a-5joce9zbbAh;2obL)ikN+*jH}y2Cx?mClptrR&*Ea%D ze)DBSi5}Nl^j%nPO&d-@FplV~*bpXEvR6($4@Nh`@9|{&k5O{!E}|(2!Xa&mC&L8O zIkk=%?`SC^FSyXashI!`y3(}jL0og_w`(T~{$C7Zr6(7k3Ii^lhXRy;EJ}mPfbB`q zTi<%4KLB)2OR+jW06YH}h>w*7ncmb{b89W}l%qakAni$UZ!7>wN3A8`T`;W%aZv08 z2z#|9o~~9PX{-Gp+!PByI+tJ1%x^KU&XeN3>DK|!>sp%6R6?X2wU>cgn+8bP`Hdhx zNX$>T+04=Dh5jE*47gJ4s5tu;91Q7f+nzaJLDE)|2sVI?T8hKfgeD;v*zHNNvl!Ew zJ9mS@m;HnQ9lBSXo)bVim+xcdeN2#^C2}Djo02;~^rE)R=So|UIHj%3{ZWd~vSG?m z#lhM`pgvcc`=f|VTUNWkyp74Y)3eNqxqKr0BB3R&}ecT a@&5sqb*jcfz$dBz0000A40KuPmK7LtFzWNN#93VIm$2AURlBYNmy71;SGdK(~Bi8ReKQrSQSDD!PxsK&)+K@(2eCh=V?W8 go`TU@BNqqw1{#BOFz-Tl#Q*>R07*qoM6N<$f`~=+RR910 delta 1285 zcmV+g1^W8K1f>d)Fn)*K;OhfrNwKalm|^D)=NlD+L_Wus!6Ro z+lokf**Rt|yXNhDtc2`>>)!9a!S z00CnRjDd}heej(h4+phE9V-YxAf`P9<^v2g7NVGdZV(-dhl1bc4OF(^&!PD#$UQ6t$p7a9Z3BcbuR7XDU26&Al`~w+iV*?lU z{n9^f3dIg}1%C->U;(WF9<_OBgp<^mXs*8ECgTcVW!FfRZ)WCdT7VGI1JiA2S~s09 zq!#^Le~B0`X$2#a;!hSAubterW;j=V4uFbxe_cMad|4krwH7mDqaK#NF34~WlNeQ> z0pTnAng@z++^ipa{ec^qY;ypJG3^YPw_Cv@qcR?<{eNR2##1tZ*ucHaf|DzBRu2Vt zcmfDS2e&iP89T3NYg`U~x)|eW5Q?^i!Jk-qnRmp)HD^<_bOg$d4wng~$)C-nBcLZP zOIaniO3~^K<|-4JE=wP|0W0fNH<F2`Fke1DnmHG^TtHO|(=^*p50U zpbTtb2!9qzCSh|TRDB`Wh^VM+(HTl2EQK@a{-_!yf^6RDvNY#u{js4<#72*8)YuxA zYpv*}8AU}s3g93Jqk2eM?dsw2!6yWPE;+OoU6$I-|DvKE1YpX;NTOk)S?YC@7h~!* zFe(AG>$2363*b8dj}hoZTn>i3-aZi3-eBUxc7Kv4pSC07`^MsDMD(!qwx_J3#TdL7 z!1uZ=J)ZLfs>VPy%$g5*E3rI|Y3){PW{lfFP;RzfJrpz};d%T~RVG4|fT6f71#=^C z9l)K105AppiuOK%U$Gsh4-#_l)%lE@v@%6)6oB&p{?%pau0;V5qv|OTb~&N%(!kKv7#6IFf0QfJ1RvYFo?`SV_o?719WKdN>TVV`Rf`W5vE!JJ|=qRYW5Hzj4!!3PDRZUCzRKCH_%Z&^vH488-~^PhSxR|t z*%B4ijKWR^dYAboU-)y+BmZTB$ZSL)JgbK!Ye?N{L>=l16v3R?_qny=RGT%0yc*4_ zsMcW8XAS0Do?ERLzhf44shuLLWv1%XLEhxm^YdkUE?rdAm(4A~iY_CZ2un(eXMgTE zR@Bb{JZCWoSf}rme!E?Rnf&4j^?n%WckaH>W$F2x>d8?bxmYCLT{)9RxQLw~YZoww z)L)~;h&0U355Q`*S*5n1-5`*$16T$L+w{=f67^n6GsdTrtvv<_r`*PLZng_-?6zmW zeZ0ndRu#Ctb09Xb-hdDz#=~hkVSbdDE*Q*LnC!Kj7?lE19TRVI#;s!*KM62G@lfq$ zuRO~CVG`*t5z9;WL*N6M%I8f?6PQ8A^zo?Px$2uVaiR9Hvtm&*;pFbswrHlRD?0!zRW%z!#j#SAO~OTZ;Nlnp3KN}!O3O_E}e z+GF*{{^DmVfcX*3{$T=eA~0{%K>)1ANKFTDywq|%wCw;?jq1j5Zf&-;eDN6sco*hE z*^B)rK($i~9f5W$&y+~`^vMx0#;&k8j%TpJAVT^Q080Qk#UKXG9c?mzzIe>AO$nyS z0>B_J=jQyqy|cQ&=g35$uaRhqiU4>c(dPiKj}j3G(`~-kg2j5HqYY|3= z%yU`>i!rMUNPUh#Bm+>KQ>I}F0G?&^7(QIf-+jRYXA+Rz~7k_vML^opgPA>BWz~sJA zB}1UP7_*s&Tqk0b82o90pntDwBhg7@<;&v!p#XLjmAiy|tcK3qOA&zO_NIiWTmz`9 z*df4C$mm`U;8Flk>c~OBuVI8byOLY{TdXpc6CN z{ObU`yOaTYNq>bgc~i1vFNJ~0lSex-`nEOe=>folMjvRztahdafXRbrKurJVBuuO4 zm;r4J7(CcaLZIyyXs-h%*IWsI+6_xD#bW^a89422qf(uZoLXB;Gg5W>eezDrcPaCL z>H4>_7dUiT6-=oEiT)hO#;cKgfyI5jW4ZRlq*x+Vk}Rq8)hu^9%yOExW7?F57-czC dIr(qMd;+vuyD$(+?k)fT002ovPDHLkV1khS$MOIG delta 237 zcmV3eeL8p+rbk2aswR nvFeEq0b&g#Ro$oq20R1+5&7>Sm-H3(00000NkvXXu0mjfFfLzz diff --git a/src/Resources/edit/styleblue/find.png b/src/Resources/edit/styleblue/find.png new file mode 100755 index 0000000000000000000000000000000000000000..7fecf774f1603ab4e1043df615ef3eb3d6778d8b GIT binary patch literal 702 zcmV;v0zv(WP)Px%cu7P-R9Hvtm$7ftKorKm=LW<^)U~ZH^t~c zFKLI}ouL2{PSwtjR@Vg(DsY#{fl{yu;I9I|qdkST7tOC@qZF3)7%rWr3F7zYO0r*<# zYWsy>@<>t;Q~>}>Qs{dkQy{1Z81$enwDHIQf>wdce8?`OXCnjf7Fzp0z>XZ$w;@Xn zZ(h={CcJxHXfxhD)GwLZVI3&alr z90cJ?^H9>}fuvzRi~3aLHL0fAQl;uBE5Ea@gXi`+z0#>b*_;C7bi}8ltQ7ja)zTE} kDX5n}+ETEV!EucF0~)BmFf30J?EnA(07*qoM6N<$f-R0OO#lD@ literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/goto.png b/src/Resources/edit/styleblue/goto.png new file mode 100755 index 0000000000000000000000000000000000000000..22760858198581f1a96227657880ccf2404dd0ec GIT binary patch literal 522 zcmV+l0`>igP)Px$#7RU!R9Hvtm%UEIFc8Q8=cEe~Ln~G!q&5=+0}CTO0W5&jjSbR~jfFBH7RGjE zLxKgK07h0M2BcJ?qI>!Ru@5<|QBr83PEv$a53&4p_w(g^_7R4q-0s{FV-4UH(^pJQ zT_!yDk7_$wKIu=T6>u@iCQA){kEqfLZUF3>sSG?82}8hULjJ7=cn7eoJ2g>}%8l%V z#d{hcHox9^-}km=0Z?uQ55^L6fd6TMN;^0OqX|MYJo3(_^_#R0SO`nS4GV}Az_j#n z;4;u=@stpm0kT5m0+0nFHvn6R6u{EO>teLvtUD#)Fe{gtU7?frsZ8K9JoJu# z^$W7@+$JXEb_#5i>ka1uV5>YAfGoPx$5J^NqR9Hu2WEfz;IKcKZj5=WOg@E9++xuymF5YLUIwG5o5duQfZvUsH1Kwq+ zqS%SyfB_EyTKXQF*@G_;5*q@bsA6Pba3EGaOdY{AK&*i@bAZtF+q2$fs-_Wgh|u)g z^@P-5lYf_~+DJ?`yzrNqA^Bsv>N#>OAw>_~a^OD$Q|9|DtdiNJ(h;)Z$8n z1akrH5+RZ00L{_>u|YfF4xm{S5E}y2Qiquc$t>fEbr7+20kP(htd3xHJm76YauXM^ oK|!!GBGw>ksT;a&!eJ8v0I7U>Aviwqe*gdg07*qoM6N<$f|D+a{{R30 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/mark.png b/src/Resources/edit/styleblue/mark.png new file mode 100755 index 0000000000000000000000000000000000000000..578ecfd06e5279472f1cf374908c23c7041e164e GIT binary patch literal 779 zcmV+m1N8ifP)Px%#Ysd#R9Hvdmpf<_K^VvX-)tgQF}D$HL_Ex1jAEzQX@XdY7J_J@0Sgtgdx_vH zph3;~KmLW;+|HWQr% zp)2@Cia+M!vFl#DY!T3HXFGsC23`k3npVBjtGn*ltx0j9$%6^Zr)&V8z=GspRMWJy zS5+>K1?DngTIT^Q0>PA~@h|`?D?l)*Z_$jE(lT~7gxPbvSPs&7lGmdp`(e z5f%dx8oEAOQktn!ZoE_H*XeToDmTr?N`E|`npT*j32=$MP(%rO-Q_yt?a?J#hv7?1z}002ov JPDHLkV1flDRwDoa literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/mark1.png b/src/Resources/edit/styleblue/mark1.png new file mode 100755 index 0000000000000000000000000000000000000000..4139faea509cbba5af4e1bc13177cbceb1060e58 GIT binary patch literal 1115 zcmV-h1f=_kP)Px(6-h)vR9HvNS6yfvRTTctOp+IiWOtKVP_eNy8!SSUMk-n)MNtavgCJTfLerMk znN0&eRH!K?l}5q(P}%IP#fDa_RFFQ^UxYT`Llr5+LeTC^+G6ZOj61s;Yc$!pM`p}~ z$!4}=Hv@H^X77IYeBb@D!-kq5&(YwPOA!GR?Lk~woH z2**4S(FuXMgJtc$tM!UWPF1@TK9NEqfh0=gI&De3CQC~^sn{kEobM>&)1IpDR%=#4f;JJp&d2N|XzA2_V7<7}H=e%_Pkb@eDgW zBa=KMh|dE2Jrf-!#!0VYD*S$}T##g(t1AbRM&T`h_JsvzlD3qzHJ>C6^BVx`LovXM zC0#vPmjiwkBn)$ifDC}oLHO1uvNiRf`<@yaf1G8pVLciuHIk0MX@-L%oV-{(FQmBB^J9G*fLKvM$B(B(dz*2w&mZNu%~k__AU5# z6?D}*+1!Wd6j*!(kbBUq0{ABOPcagtOAlb>p2j6K?ykHFuzvLq(^;{lws{< zuq$K*z^83J{Y<<9^46!s?11PVwrm zo8P_MAvw+g5Ekt*h$e|KSk#ql^_<&}O(Yv;|0;UwgASE+WuX%$^5zTPiRl%NxT~nOU-R)H0<7HxKI+%E zaL^;k)Cceri-_69NUrr038S!$;9{^gfSCo+A%G>!A5IKhDCufvFix#&`Ii8mtg)v@ z=43HAy{G-x>i<)D>uJI0Bk;PgxeU3Zq~CinQh?WXjqz@Va7#*Ye>3oA)Ac_GC--$+ zkE(=(acL7lavgbe9(%fxNT1Y{U#jOuej7ID3J;X0)QcD(5kPx&i%CR5R9HvNmrH0AK@f)jp55p{BiUIoC?cro#EYOPf_l*C!3QdONE8H5KFF+! z;){r2L@>k$in_D-xOfoJ926C!2aP$XAO;05CcP#gq9~>ld>mr3Q_{1WxS5^VnMA_c zFfdG4SO48zUG)t^fg3CE{0J;SKQAVr2n&g@gu#AF2`E(yV89njKP`-*1$}rSck}N- z78giBBrXiba0tM(AWi{%AVNcTjGKP;`32N9hxJKQ?*dq5J0i3LxMx|oA73Pu#u*=;>*=4^Kss4zW z+z!xo2F$bV88*rqe#>pFtAJ=Cxr~S&X9hG%gI5Qc*lDAiLQPs_YhY}7S54Uyr%kSa zs#_twa&CId80usVKbAd6Pl%(=Z~4S2dl2fBjck4$Mq_m<+dfBtZnmEU*Z~6SyA6KW zIl1l3MOZ!&5mTICKrKM0q)~p*Q-FR^R71l}b>`g$pYL=UHIqjOblhuqd_=smW5U8l zx$|#44DLY5+0GJeY=0|&83eY&E8rrDtnI@r$5~*~Bn`eg`*?GKB+Y?+UPPx&fJsC_R9HvFS37GIQ562p{DSO8P%whx-UJm3AJwLbg@PtA3Q_DVl$een&EvY&$WwM%2SkAd#G*>lGb$Kt9H3m|Y_UwGOv#KT4> zQ2;{VP62oj+=oGi{X_yNTJ{K-FL{O<_Bj3GV^ju70K5u~$=z`A!QUpj<>;l$jegbu z@W=+fqof`TcB3Ajq2v8qwh8y%_rCZGe1KSX?`YP62#setm=Y}yus`x&@VGsMs; z07X;Y1#r%FF#^Vu0Kn3qc(u~o_8h?F`u&8mSO4RBT)k@=l^x5;5PCEXsud?3L!55_ z@MRjHPIfUw8is>Kjm`^}eTJCthbxo>AUx1keDjQBw06Y;fVOhrM77u^^IO|ra&HoI zPg(_nR`me8nDvv31mJH0GX`n{!c1#HkA#-I<^j;f^(^*O0!IoEKVCF0SGie+(eBeVPjdt(rn$LG)9VL0uXRwl`JPL z64SKH{5~wpHKM&t+~pm&|4WvKD^hRKvq}@B5OAJB_tL%xGFM>Dwp8pg6L&^^ni11X oAT+XeN$QtTR!8f#+i(E?0CM5PFj3>7iU0rr07*qoM6N<$g7UbmUH||9 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/other/closefile.png b/src/Resources/edit/styleblue/other/closefile.png new file mode 100755 index 0000000000000000000000000000000000000000..6dbfb8a1d91fed466c313527f098d504fd07e570 GIT binary patch literal 1317 zcmV+=1={+FP)Px(-$_J4R9HvFS6gfpWfcC-Y%f6+y0g?KS`4K-Z6ayB)L^2CQcc7QR4}o;DJ0x> zmI6)mp{U6k34PFn(z3HaNkHGkM5V=RqLc?sB-TqvP1>2#Myg4zJKKs#df7Q>)!9a!S00CnRjDd}heej(h z4+phE9V-YxAf`P9<^v2g7NVGdZV(-dhl1bc4OF(^&!PD#$UQ6t$p7a9Z3BcbuR7XDU26&Al`~w+iV*?lU{n9^f3dIg}1qoD|A*51$TG?2t)_BGtn74uV`yr z4t}~A<7p6zwuQl;SbCXv#KSdbQ?zsh%8m|~38l%O&7>osCoW4_CAUh^>J8>96PYec zAGrZ5>r^+G_eDOs{Her1C4y|;>9REEY5lRGO~gizZPeHrmus!)rWr*=Jqq9;2%~yP zTJ7rL@xdnqfi5|;7G0Lw&HtjJ9t2>@!$_iGqFL&7lNV#^H83gxwCl3ek_+HF0FM#q zL|hJryxu+#)!ty@!*-G;pSC07`^MsDMD(!qwx_J3#TdL7!1uZ=J)ZLfs>VPy%$g5* zE3rI|Y3){PW{lfFP;RzfJrpz};d%T~RVG4|fT6f71#=^C9l)K105AppiuOK%U$Gsh z4-#_l)%lE@v@%6)6oB&p{?%pau0;V5qv|OTb~&N%(!IxLWoZ0uewc=EpHHEwy&8n!@VA5v|=3Jgztr)*!7Imqe zBCBPl>eNBr)8J3ETA0+!FO(N;Af%ldU}l38&n~bZ)i_Z0xpYzkR&MdsY>=y>lQou-i=a|`eozdqE&u>o22Je6N%!eDlN3QB? z`666$V7E@_q|2QTw%kr==htVSFiA~frsOL}#Sj1Wot2A361;_7+!;?WZt)OSv2K`Q z(m0Rp!_v+`_MWx_85})r3E0#5fx}}J_Y%r>IkZE{l9TDr` z6WFtE`WgX=Eqn^9ybG$CqM2J?T;tQ=x^S6gp^HZ-`-CjXjjuZS7?XHaLhr6%X0u^o Z5d8UGarzh0Z$Pgxc)I$ztaD0e0swPNWxW6Z literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/other/find1.png b/src/Resources/edit/styleblue/other/find1.png new file mode 100755 index 0000000000000000000000000000000000000000..7fecf774f1603ab4e1043df615ef3eb3d6778d8b GIT binary patch literal 702 zcmV;v0zv(WP)Px%cu7P-R9Hvtm$7ftKorKm=LW<^)U~ZH^t~c zFKLI}ouL2{PSwtjR@Vg(DsY#{fl{yu;I9I|qdkST7tOC@qZF3)7%rWr3F7zYO0r*<# zYWsy>@<>t;Q~>}>Qs{dkQy{1Z81$enwDHIQf>wdce8?`OXCnjf7Fzp0z>XZ$w;@Xn zZ(h={CcJxHXfxhD)GwLZVI3&alr z90cJ?^H9>}fuvzRi~3aLHL0fAQl;uBE5Ea@gXi`+z0#>b*_;C7bi}8ltQ7ja)zTE} kDX5n}+ETEV!EucF0~)BmFf30J?EnA(07*qoM6N<$f-R0OO#lD@ literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/other/newfile4.png b/src/Resources/edit/styleblue/other/newfile4.png new file mode 100755 index 0000000000000000000000000000000000000000..fc05c0368f6e38e2653c0d769f6dcf07590ac4c6 GIT binary patch literal 481 zcmV<70UrK|P)Px$n@L1LR9HvtS3yp~P!N3s;(|!13pFvCxR8ywQ?~|Apc_4gF%(ZB#e3*RPXKYN zZj88*#0?UOiL`MmjG4BeM6tiLBxw3qP5+yjH?N)fe+a!*w$8!W0(i0iZY&Sf1mOyW z^scxkJBDHMSYmlO)ioj*<|%+Z2TL^&zj)aN+Gm;rIP3a269Ufw768mO~@>N=z@~AldLoK+w|d_6V?TPx#|4BqaR9Hvtm(dNvAP|O+vViFh-9v}aA(}XYI)h1v&>?gWb}%kbF+?#)xZ|jT zKG4VVbA0{bj-F@-r6J$5y7b+V3NJDPn6*iW7r;N$cHUM^#Iom`*umCt&8af01 zywG+O1qeAo0&u?E)nJ)IIe`MCE}o)yQ@jFH2dV@A>ww8sAz_n}-kTqT01*dqB$jt=+6P} XnA`cb8lywn00000NkvXXu0mjfbzy{s literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/other/标记2.png b/src/Resources/edit/styleblue/other/标记2.png new file mode 100755 index 0000000000000000000000000000000000000000..578ecfd06e5279472f1cf374908c23c7041e164e GIT binary patch literal 779 zcmV+m1N8ifP)Px%#Ysd#R9Hvdmpf<_K^VvX-)tgQF}D$HL_Ex1jAEzQX@XdY7J_J@0Sgtgdx_vH zph3;~KmLW;+|HWQr% zp)2@Cia+M!vFl#DY!T3HXFGsC23`k3npVBjtGn*ltx0j9$%6^Zr)&V8z=GspRMWJy zS5+>K1?DngTIT^Q0>PA~@h|`?D?l)*Z_$jE(lT~7gxPbvSPs&7lGmdp`(e z5f%dx8oEAOQktn!ZoE_H*XeToDmTr?N`E|`npT*j32=$MP(%rO-Q_yt?a?J#hv7?1z}002ov JPDHLkV1flDRwDoa literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/pre.png b/src/Resources/edit/styleblue/pre.png new file mode 100755 index 0000000000000000000000000000000000000000..f240739ef45241127f846d9d0b7cd351d99e8576 GIT binary patch literal 946 zcmV;j15NyiP)Px&Y)M2xR9HvNmrqC(Q5?s=Z+6W?Def3a5rKc6b_oh2s19l#`a?w>Tn}B#aMmK} zkJu%-9%;6n7Pk%aD zoFf4qzorm^1_0Zf7zHrSIa)$KswNwsSU^+IEpOWT6u@D_5XTUJXS$B(ZX$if@40Wr z_w^Z@=efQ`l5iBjF%T3-9rv&w6UWh1F&|GzTmf=G^Ma!@;uiw|=?E!B9m!TC`aSA! z4Zv#%P-=`PsAjda%Wkf%fZV|F0nT}EbV4^%sMm>O>lj(pgwrZR10j`DwMDP3W0ni3 z>T<~yyCPdg(8Ox#b*IkdfOgF~UVH;bld!>pAKmEohRybt36RyHn*h1Yf##4xucqSM zaAYIeqiQz@&uFs#2=8(ubbJf8U9MWTOKE`~-1x{A) z)cJxf**`Q2Lh=dplT%8`lNbTAsQ0N^20=$T{!Qgtru$*T4Mz-a(?m_qBV0^R`F zr-xB7eUA1e60j2I!d}ijtz2>;2;ePK=zhx)Xu}*Rlys?NvaV2MJlnQX=fc>=_K{*; z(gz7JGNsTW>kiBS*dWb>vnLz2i}z)1HO>tIEnl+qESD%!znDU^{x1Q!YWj~Ly+OE` zE;(*9AHB3D*U+!s0>MRdnqSO>azHx>j+dh5GaoHUCcwDYrb6SSaLImc&|n3EL#&p* ziVZ@6TyA_8)U(E^cpUTCv4Ctb)i8=){R~*x#c~%;f%8gH^CR|nD+_*Vv~pnL7_cis5majywB#f|2Px$Oi4sRR9HvtmrYK?Kn#VS8x8>F4Cw|TaRcB6Z0H)61eGf^y#f_w32WH&289z) z3A$;{K;QtRMlK!HpG+CUNCh<6CF9uNyx19=0HAuAHNiLlup{>i7a`40;#TRJ<>AC< zYFX}s&=sFl?PP}lZk9Ut4`9O81>gz5)`|cI0>CEtsKCArHrWF2nqxRf&%|Xfz6BI5ffdF z&m!jI=hND?%Zcet0dW*Xv@Jo4f*)O*S#JO?yDhW%{Q#>NOdhO5>F4<3eK<9q`{dO1 wDmotH+12m3W1URMP3w^AA7B8Wl_&A-J1?}S=*!4{Gynhq07*qoM6N<$f{v1@^#A|> literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/sign.png b/src/Resources/edit/styleblue/sign.png new file mode 100755 index 0000000000000000000000000000000000000000..df146519816b84313a86e760c33bb641e5c58d8b GIT binary patch literal 726 zcmV;{0xA88P)Px%kV!;AR9HvtmceV&P#nj$?v_-C%^Z5 zzxN3H{Lnu0@$U#^jrU6gT436d^DcO|^f zMuus!QW&31X^V9mv)~Bc1oXsVpx+5b{on-5=fWWd$z7#^Yn=+VGU#r z>pZn24yKVHAhhaZ?ExHD7{KZnSsHbxuMUZ@sZmwTei+nOCr&lyFeysqBfs< zAcDK!yY>O)*1K^gS^;P%&ScFPLdl+2Z^VrkHlnPtIYy9Ni4oDH1guwe^`azhCXya6B+1(76ad?%lKkwhZ=EC@?G z<2!+8n8+0f-hSH5HCtCNr4oqv^Ex|xwN})cTPx!B)8u9(Nvq^@W?TvXSrA@uUm@{~ zo!6fDiZlEQmTnu$hWXl8?Tn8O^K`waJq!Dz&`hN11F~Uq8$^UHGA#r@si2wiq07*qo IM6N<$g4D}RsQ>@~ literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styleblue/transcode.png b/src/Resources/edit/styleblue/transcode.png new file mode 100755 index 0000000000000000000000000000000000000000..2acdd4d4de5184bb97f289d02e136f6a0624c6ea GIT binary patch literal 776 zcmV+j1NZ!iP)Px%!bwCyR9Hu~S3z#tP!N6NAkkeBIY5boD|Hoef~F@(dV(ZN+(nZUl%61Afmw#0 zpxhvE1G1_VM+zJOVs?o{Jk|X0&4*y~h4N=*`+v`Wo_X_TOmJwW%ZCz*vwe@b29HW| z6un^ZLOhCpd>*KKSLc^ncQudb27o&FjS+Pw_3D{30Oc?m0{E2ofyC?-0PDjE=<90+ zDk(6=@2w(GYX7TvymJGPI9p>pG}k79pPo~0MGX*ssh73|P!6MW0GGD>d4B-rSFGa~ z&}ZPQUUCXR@;eUv!&MyRFiJVVKySeZuB7SNIt4}qasWu3@8?zl==)YAG>Mc2V6Fq* z%u*z3PU_WjX8`nJAT>m0Eu~0(U=z&g{B}b{n9;iDGs(;K-+C)J1?}qos zOgLKc2_p28r$RHn*o##Jc3XF+Omv-@uX(uix($G(dSCB2PM!;U3P3rGVgMiW2$L`$ z=mug1z``eh3sRwHNYfA-C4|$oWD=Yc;Yi&RH52B)a_JGBf?4kyB!CFh!k!DaUUBxQ zA0&it`r1?P(TTd3GBg3KGTI`HSwWK$tm(yEA#wy@379ni0E0>3AEab!-(P|Gr%n$6 zs&tk*8Zae54Hu~~cT7@m03e;M@Q_D9S(7}*bze!UB?(h0&h)LNcsGoCX7gBmA&(o` zQhe7*$+jNBG@)5dmEpXtt za3v9SF2$Qt>kNQIfQqwg0*=>!hzWEy4ys*e05P)Px%O-V#SR9Hvtm%nQiaS+8nuL>ffwpNOr7Dh`OO(B+QVL%W}X(RqP<5Ay%5&#^f)EU}Ygs-tpbAIae>Yx92quEFA3jX5P%aH{V$?Vbg@;vju={ zj}g#yNq74FHvw1&);a{T2RH&ON?OGQcvVrpx(nK(68O z--fo+uB$+%XupjYfbEyS8Q@*Xcm>!Gn3j zY=@ZBk~UQ`atlhSL#`*1=4>A-Af|vzl0K9(3HmiE>9hsKc_qQ4ky!yTB`Kuqne7at z%!o)amFQFj$u9cd4a`Y;RSTSVkAZNdSEWI7AbM@{VUnSfCl*;&11B7b{T94w4&;x? tqASZ(OfpOLvj4FHT}2(n&&0oue*w@lmoVhF%r^i4002ovPDHLkV1n@WDUkpG literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/autosave1.png b/src/Resources/edit/styledark/autosave1.png new file mode 100755 index 0000000000000000000000000000000000000000..0884b4510c1c05f1b64fe0c8a1e22ca9743939b4 GIT binary patch literal 325 zcmV-L0lNN)P)Px#|4BqaR9HvtmmyQcFc3!H=Ws|Q4v9Q{{0KY}g~Tx&Gv|<~lNbblf?6aJheYC# z%cPTZGAR*U+XRu7Y1(~#-EI<@nNcP#Bt537R1m=BzLNA1LyQ0K8Ab`CuI=iW%# zh8#rzT(Sh>UedK2pA2ATYv4Ar)=9ei&0+$vlXN*3z)O^HlLPQ3zJUWj|7mdmGwb0b zoq2#S;BdAY@Sh-SApB*axXtVnII0Qo0UXx^cn3~u0=xmIH343MRTco~_UMGJ7lcUf z57*-HVSeegVDxScU~(t?YrXi+n6H5)mg5+*0W<^6Kr_$`{C@*LzkOaX+##lINCv?_ X>Bc2$0ZXe!00000NkvXXu0mjf9g2gP literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/autosave3.png b/src/Resources/edit/styledark/autosave3.png new file mode 100755 index 0000000000000000000000000000000000000000..fca92f08b35efc3d2cb79d0a45a56dbceba0d193 GIT binary patch literal 858 zcmV-g1Eu_lP)Px&6iGxuR9HvVmqDmiRTPH5f2a^5@(40WNE8fIuoUYJ6r>PzAd(`Lph)T@^o52r zcsh9SFu`V_pom(7R1md+f%rhh&;%9A8rUF$R2oPK4S!jWeJ=Z+d(S=Ry?4RfaN%&z zKL7gm+H0-7ws^rqFW5d^0c?K=Ea(&5AHY3H_q*wJ0NDNwnBOPkh0J4Mhotjm-8KN* zSAiA4So-yYV;Qg-_#GIO^iM9@0Fs`4E;MZa3@iaYmh^2Ez%Z~sev%IK z8K6=-_rS{mU^_r(N&2j*m(n*~y*nWfWI|#4HA#OrftVD4?NvYo=2wz_Eg9b+=}Z{6 zeGqu30%R=WX|e!CO#A|bv2bCGmhl8oM0hub6Oy(}3LuFW5QTV~@h0vs>2zdRZ44y( zPk~*9+nXBB=OrD=DP9ZE)R^rkH17fL0`CJ4fh)jmN$09`CJbQvdtgA)%B<2I0m4gF z<4*G6^~$rLSD<8u!g!pNHzmbNBMY2~Mxg!_?}68W<-pEVhC2c{{;2eT?O4%1U~lYw zT6q|ctcYNY)Z77llK?)D^kX*{*ggq-lHN_1^j|Tr7eE+`6~~A)EE``0+)eM_3ZP!` zV*41d6*w$us1_i(H-~7gJiXfkL=kFBE!%T|IM$;GZOOJTw&VfuucX938Hpitl88vsT$_B;u#PZkVvsNfQ7)DNhjuS zC~J1Rm=t$|x}eHS@-$!s*ch!^>BBf1MkHP8CRlYfi&kuI9YMCTRvEUvG#$%-0yiW* k>ZSAlyqq>%d0(bI2QCG-FmEMFj{pDw07*qoM6N<$f|U<`TL1t6 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/bincmp.png b/src/Resources/edit/styledark/bincmp.png new file mode 100755 index 0000000000000000000000000000000000000000..c9564b4992afd379166b8cdd5e10acc47be1d000 GIT binary patch literal 329 zcmV-P0k-~$P)Px$14%?dR9HvtmeCEuFbqU}tMI`BEC9>E0DQ6lKV5(!Sb@$_i4Bk#;ZTr~sx(a; z6x0;8pOx#r+@0M*CcZH7`(*(bC_s`%TUr1+S4;9JB5TWY01o}SDgkbmleijB0n=ju zny3P%E(MF~oC1<28*(l1<$v24Qd0r838izVpqmds!Hgwa)fqzFZmA5oJPx${7FPXR9HvtmoaM=K@f)D=U+(DSXpS9I)A}JFeEWW3JIcMVXzPcO%X^DOc4mA zND)a2jW$|YnIhPUg~Un_M37*SDpiUJ1AF0E_V#wa?+bz8c6U27?{l-evvcT@2bZj` zs|8?YGm;i0Edl!_*&Rs+%Ph?Md2@^ia}WNgo2l zNf*RW0I@hQ)d-oHLpj7JNi)E43SwY@oOlA_bAULCAqD~{5l=vT2@t>A5Y+%R;t7ba zlBR*5&0H10AmRy#?*Zb6&lLjWazy*rG0j9I3AQEqE_u7@NDcx1$}E?0}18g>B@mI#2Jk4iU(PF` znf;M8E@=$-+vSvli00OT$9Px$k4Z#9R9HvdmOU>8K@^6cw-j29j#7wPb!iAuh~#Qj8Vco&O8f*8jY`cebZUwC z0U}zxD3qc(vdP?Jt-U)RyK58M&g^-g^PZVAM|AwDV}1S?fSJt$eMzUG&Nk+N6Tb#- z{v04xJaehG19ik}1Jo6-1<-_eGC)(}NdQfXM+4LqFY6P*x1b^MUwtA7pe^yB60|Aq z1!!A51mFVb0lSi3LLZoHUnqR#88EXqAcN=wE0W$rAVS3}9Wb*^U?8byW+(2MUGM?K zi2DF8fk#PK&QdQ#toT>}7wBHnbUtI}L{^H`q7y0Nr2zRrz>=h$G6-N@(pSuZD=XiR zLs-nhWn2ZZ2TTFclh6pJ2=H7SsXP!H4j^g_%R5m7SOlJcb4f>|jd=(&n*k295&*Mq zZ}1RWEJJA@FtbPx$@JU2LR9HvtmpyA0K@^7H=LcBYYhx2Te}LvsD8^4zQlwFg7%_s0f&l{t1gn4n z1BsZ{UQ?#96YKP;1+jUqtRjPwY zbIn$q)roTIvfhNcW|dK_3F=PYUL&q?so7W80zR`3sCJby_Pk zZvWeSKZO|)U*&&O8<~3=Gq`5_ccn_WnNPI7u2J*g7@GWRTK1We82|tP07*qoM6N<$ EfPx$Pf0{UR9Hvtmpe|xKoCS%7_K!S*kK?EFvBOnp-iC7{&AreQ}Ll7W{Az~#i z0fH+Onw4i|26ip4Jq9E@^ryR~+*REze)&>4zwJ$62iVPo>lV0^^c3Sy0oXnThM5wl zVTY2=!p#W)+v~t{N6BNF4N2n&;1W12o=nlT4JcvxO43mTa1U%vD3QL@MFtQqVm?UP z?g8`+{4WM<2eqsLH_=FPx#^+`lQR9Hvtm)i}(FbqX~*MTKq35H||SOV5DauuXN6UW$XQl$2?b$n0!N(vhM zV6Z;z0J8`%^Nom3E2ZWR;GFv|0q{!VlUo2EnpJ>r!zdIpPaFGB0A@ZU`llrlC3|-S zlCx_Pz5q}mYW7P29Es>bL{*4Pd}iwgkezFe-zjO?gaBF)E%CHI-UTJ06alFbHAUeF zD4~{5mimZCpaLPU)#6+%1)BgU)Iq-#3@yUOkdaZXc0#BNjD4;`xB)EUmT9;Ifavr; zjIuE-mx=zzvE}@?*tk<*ac;5s8NlMyV`I4!j=h$9b`@E(|C$YtzzgW+NHDncY`g#f N002ovPDHLkV1l{yfJXoT literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/closefile3.png b/src/Resources/edit/styledark/closefile3.png new file mode 100755 index 0000000000000000000000000000000000000000..e245b073762ab34abdbfc6b729f1bc8b799ee641 GIT binary patch literal 790 zcmV+x1L^#UP)Px%&`Cr=R9HvFmphD3K@`V-|5zOxolrX=cm$!a3av*%L%c#`H8w1v zA+fXy6a=vpSOpTXm5|tA69v%;I^@WaxnJhHJNL0!U%p8u-&p!hoBST+FzenYq(#VPLnU$N5Rd2r#orK(=JPl1`4>b2Pxr zP5`~(QHP{I@q8%(XMn>%pQPhqNf-F9q_=g%m|2s(nVkZT0sWGW6bgv;eOS_x$a%JZ zJyjxt^D*{j_A10gQ#>?Qz|5ur9&B@fJz2m-6D|ba0EHsTY(rpP20pqFN#FjhYPK9^ zwgtEaj7oA5jaElQO&fPU8`vu8c3!}FU_WqG(yshoSA3oCxi5R^Dw)|8U?*@v(t*5y zXTWk`wWOg`u%$!l=*faj7{LWJ8@#zzp~8S)+QLDIau zfFHmVpi`3nFKjsxZdV$dQJhT$yh#0&$M7t0Fi!Jv zB3cVP07fKrwI~t!3GkD!PSV4C5ISD z{eWN%5XqOSrC_}EQxT$qDtD0mY@7pfmFR1aV UFyP%zWB>pF07*qoM6N<$f}t#I82|tP literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/copy.png b/src/Resources/edit/styledark/copy.png new file mode 100755 index 0000000000000000000000000000000000000000..68e1619985ee70b14628b8aa630278195950233f GIT binary patch literal 501 zcmVPx$uSrBfR9Hvtm%T~@K@^3*Q;R=OpjI|w;}clfsHIp5R$A)|7_qmv60EFjv=cNw zK|ll_z(RZhvAc4^By2YOGn?!tDIC})bGh@)Irq*?#FU4oygsuFU}md;e`Vua(nncP z-h8G4W_AUfMkeh5JCeR4;|Id>04zkcN|LSv`@nO6_^k?22q39HA1v7dR#J=fAnt*; zF!w5{9RpJZ;2JoNNg84{B)yl#R{@B%rEgnO!Ky{rT`Xn6&~NFaX0{7F04~4V^&@Gn zNQKG@6z$5)4uM<1RagMdfKN%wlTyH2*IT$H>B7wJfCHc-X)_C=ZUv5jo1j2%J-5QY zCrR6Bh`IsR0B=Wc&8*Q?COJ_nKrgYG`Hts-MPMm>mpyA52gv9S2YRUuAnY(xPx$#Ysd#R9Hvtmpv~8Q51%sSEJB~P$)E7AsUI&b{aaO+?tw1Av?5`K1x{<35iNA zNK{G*f5Lxoaa3_Y53JdhHiaW;PGJ zmy|Rc=0VbW9zX*~g3%`MRRYW@Fz0b3DHh;aQmusKUeeA>4GmysD>+csqwFCjcd*mfAW9qrb^eNZ}MuBZf7v21$0VEy90+`uT z0PyL$2F8G0NhjGDl>#`lnXLg=z&Oy5bd-ju93U*Z)u6;Aa4c!B4e=)c0m7&02ABrU zCGE8KL~Iid(gRr^Gg}7kfEl1Ess5(`L5W4+9+(9VD+S1znl0eAN`Snn^`59kfxOJ2 z6ux2q0g5Y-K5Ap6&e+r>`5ECy_FyFl00ZQ1xx5SwFlgqi->?d_uW&_q{!7qNtbNfb zya`L5f+P*_0c=Y8Oc%C88g4`-PeBWy4qWDRQ&QwOj_J(Ki-o1|1}yb)tQH_ZEC3T- zApC+^JwUIw&-Or!yfHSvO3=?C^<5AXw}_1|v!w5bW9rZ-61a$M@&h_tyz6-eeSiP} N002ovPDHLkV1k=q-+}-D literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/crlf.png b/src/Resources/edit/styledark/crlf.png new file mode 100755 index 0000000000000000000000000000000000000000..46538ccbc915867f65e92f884f94fafac41ab3fc GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^Tph2k}3@7h4LRFTJl)JDuUm_658Sb1SYWZn0%o<89j> zFU`i(qQ8i3rcC_WY)6kX=ek#DyQDYRoVJn<3tc4M!1U;m(k?CskNw)~6K^xb?zd)e XO{h_PQc}AD7%~i=u6{1-oD!M<2pNB% literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/crlf2.png b/src/Resources/edit/styledark/crlf2.png new file mode 100755 index 0000000000000000000000000000000000000000..741ce5080dd44bfafe781454648ce111eeb5e9b4 GIT binary patch literal 368 zcmV-$0gwKPP)Px$DoI2^R9Hvtm$6F3KoEw%{{i$F?8Qp4u<|NFd}Kbi+4(0E0oXnUuEKrh@t_EB3XC!v59Tfszy`3J z8$icGlsQIX+#L?BZ?Faho)ec3(%E`jX*z@DT}+e6?cTsixJ zZ%H8vp#!S|wL&t1N^ZL z+=i~UmeutmpUyXo!}x3_!z7C?f*8yJjDhVgFINDf7m2FXKFN4mZ2JQ^sJ%Q`wAsJ^ z7udcA?vv5qa-fnYt=#RfDCX14A{F!s5RY>Uc$T!kjD0;m$IB@Doc{ri_J%S@@f@rG O0000Px%+(|@1R9HvtmP@ElVHCxGOBtX~X0OFACr9jYE#8^ph>VU948F-qVZIg7ZDz~W! zZSMj07m1Q;iPpBWW;-MuX#~7wLEGnn6{)}zNi&+UVEZ{RF`a3bw4vGgIsgU%cY&#` zM41#Hql>to=Kk%k03TbtkdE` zlxZx5=sF~=OXm)R4@i33V-46I0o(*)uP*}I!y=Nv#+M3*M}*}L1&#vYdf^2NC4K7l z8rmKL#2ja4$&V9={=mJ`2%~w3G@8%KazZDeiO*Fa8r=m0fS`JAN(wa>G=E4Sa+i!_ z%Tn`E6*;j%OC)_QgXjXlb|2s>uqZ1O#lzQQ9qYtHU}LiK0{Ha=;zwSf3cxNP1QZd! zJT9V_wg&^9z`U$Lm`xO%lRdi?&ME1O?HEfiRe(4wDc_>5Ynb`?@8(5u+sA>e>Hlcl z7Z?e|oa1lAANE@YQNB;A7zl@3Rlz{{b{r?^Ra&|E>H03P?viwlI%B&&>WT}I7* gc~9T<0_bJnCk<8vFsx*1n*aa+07*qoM6N<$f{epzmjD0& literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/dircompare.png b/src/Resources/edit/styledark/dircompare.png new file mode 100755 index 0000000000000000000000000000000000000000..f3d20c244348f0bbdae9c37256c7d2dc3efda71b GIT binary patch literal 399 zcmV;A0dW3_P)Px$Nl8ROR9HvtmoZMmKoCX$g9;FWIyBI51E}E;6r2Ewl7b7+A!<6r0XP69so@4x zsh|SE2|ilMwv36ru^qG|!KG(s=Ix(Z?-(V1NSt4@4Pg5+CDujBDU7w^sokBpoz3kAR)rUIXwbX|Ey15IBqh6bmYW0>G#Q5R!!w z?3do{N*dGvgbhvx01RVwwH=ZLfaeL;24$xU5KCIN+nz%J+h>y2fQy(KzoLNc4@n!6 zHi6G3i1`Dsy)5Z1Q(y~tNuj{8q*dT1Ne{%5F2pfRSAxINgbVx~2pyjMQ~ZAnvkPVg zxR0sP`ZB5sSd3)0mn6MscfkO7&H7?0BU#;sszd3IV`#hAP}+7Z9|zEVERWT(YPWqQ tX&pFe>pONV?;50!-)#RI_St#v`vr$rOE9$ge-i)z002ovPDHLkV1iCXq3{3z literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/filecompare.png b/src/Resources/edit/styledark/filecompare.png new file mode 100755 index 0000000000000000000000000000000000000000..b446a7ba8ab3dea9265ba1c2572fd3eb406f64b8 GIT binary patch literal 648 zcmV;30(bq1P)Px%LPOb5G|fnU3o}fN zWHIHhBq9rCVIfL3lE1Q%vXYXrkgas5X^yeb3W*u5+LJIq!Kz&5vq6 zpMM*`_S#TT(vwb=>`DRKPZPkJx&WRffK_z?yh;Eo>jHS20G9Oxz_x+wz)nd&s)E{n zmjITuuy;Ce8rU!CxA*=qVFI`Z^aDF2-7X7k`$GcgtJt>%I0?K5Hk1OyqU}Lo5_pi* z_?CBo?T-myQNj8g;3BXQ7?v~{Nmc?xFxxYLYrxi|#?`5Z*#4XV7UZn$2F8Fpz$r-$ z*p>mB0c{Temw-3Gc1fQyYhM$V@Z|^y3`v?u*?dm`v(oQj zU>rD~B>$PCOlu`5sOf6p7VrfKpS(`{Rsc7Exxi*gjs8#&qjP|a8l%8Lpqb&caJi%- zEnLT*02~93PXRa~>F8etu)P?#3q(`d1iZ|Y;3hB=*e2;k&r4uCBoFCFB^@d-;RtXB zxFBg?Pdt#aj_jf@3`&aY*m!K`UBgf*dd6&EucXHvUqjo?jK(D$$hlHwjc89O0Zd35 z%0O3}Fl8NGFlxF>((?j2t6K3=;2ba?7?Jd_vJnB1Y1A>==ixF}xA8Ix16(FT= z!*Foat}*RY0JQTuj@BHBtuF&uC+Shu!I^rtJ&@S$k5V*abUT#RK9bcwl-53$*ZX18 is#(kSb!Ec;0^k>`v{^7(@>m4`0000Px$@JU2LR9Hvtmpy9~VHAa*0~RT5(g;F=u!)*NqbckHNs*KmZs89|AVutiRBEM_ zU?7Ft18aeV#**nR{|MrV;+RiG;ANeB`LH~_8}89BE0p`@`Sfa@2eLT$0#6eq4gAD~46 z+pEA(#=O{<^suo;Dhq6X046d5)Fcg`7oY@O$^oEuE`W@I+rFO4f<8c-Drm~+ppflx zU>>*?o$r9pz`CT}q>8C5Xj28rjGh6uI#~5U(sKNMT7YB~1b})*+g=1-M2iOn-bgyK zJp$YXo<{d(C2i+g1-7Svoo>CO@wLGkNuMI{?7hJD3a|hyNqTmg1-9pamq0~QP$?*v z3&3084lpX|YX^X9z#;Ha((OC}&fGbZU)(DNP9$B)Q-QQOupuc_Ms7KfwhC@a`jQ(! z%KyM0U_jE}=)F)GVe41PyeG8X?N1njUjTjqB}u=N6_a^S*rpeJ2abW~z-!P)Px$O-V#SR9Hvt*C9v*K@`UE?_V_uHsOLrgUuus!(r597ZI~bo5kWqqv3+pBp5FV z27^`5U=l2XQR6cy=lI?%GoUN7TW7zW-@cuByNg;rXnB4$0?f?Dkw7+6dVUA^`xS^5 zY3Z|$uG3h7Ujw9f^wZn(V>f+PpaXOjXuSfZtN#D>f$<8M*{q}orz+RLQl>c-=iE+c zW_?K`XQC%yCIcwWMSvYiC&5HL;L#g1v*KI?IFhs<09Js@08pHZ0B4dm0>CD48UTuO z5#UDBVgNV*4g)}OE&{wrnhF3zU^@U5=e_~VY+BNDrZJ6x)pWcz=K+=_U1b3Gz`O&f z%6Wh-Ny7}_4VZ8MRXGnZkhItEZkPmKlkQoS^8n|P)*Ao|z-eXL;%OLv()YfOicp)FBe>fM5Us002ovPDHLkV1kz?qp|=1 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/find2.png b/src/Resources/edit/styledark/find2.png new file mode 100755 index 0000000000000000000000000000000000000000..be6cdee714e4681ae8accc4e30b19e7fbc2901a9 GIT binary patch literal 566 zcmV-60?GY}P)Px$@JU2LR9Hvtmpy9~VHAa*0~RT5(g;F=u!)*NqbckHNs*KmZs89|AVutiRBEM_ zU?7Ft18aeV#**nR{|MrV;+RiG;ANeB`LH~_8}89BE0p`@`Sfa@2eLT$0#6eq4gAD~46 z+pEA(#=O{<^suo;Dhq6X046d5)Fcg`7oY@O$^oEuE`W@I+rFO4f<8c-Drm~+ppflx zU>>*?o$r9pz`CT}q>8C5Xj28rjGh6uI#~5U(sKNMT7YB~1b})*+g=1-M2iOn-bgyK zJp$YXo<{d(C2i+g1-7Svoo>CO@wLGkNuMI{?7hJD3a|hyNqTmg1-9pamq0~QP$?*v z3&3084lpX|YX^X9z#;Ha((OC}&fGbZU)(DNP9$B)Q-QQOupuc_Ms7KfwhC@a`jQ(! z%KyM0U_jE}=)F)GVe41PyeG8X?N1njUjTjqB}u=N6_a^S*rpeJ2abW~z-!WP)Px%&PhZ;R9HvFmrHC-Q51&1Kfwe|iwF|&D3O$)L5+yUpc9D-ng|1o4Gg?yYDfel zh9opih(}|F(8S225$}PL4n#t{A48U`n|+$&xVPu*(<^pz@6FwNueH8&_Ihm*hMDaK zwgB^hNy&Vje?J0)K(C||u3P?PW(R@pIvdMV*DdLg%xp7oKI|RQkM~Ru)i*VEf4&dj~1nie|BuZ1s&1SX_I1GGp01JBBCH0ro86{?B zYk*r7CoBtKW)p$Az)xUE()Xeir2))rDsVFR%laKF#lr|1~9W`z!fwCwOWM+$i$3ej~NpB+orUxHzv89q8Ci4FSV5OwHu>kcvf@VpcDJ!GU8weZg;e@WL zQPP((0QCsN9!cAxqaeJ2(Iz5Svrv+!?couQz}vw5ay-gZ>^8me6tOaPx&xJg7oR9Hvlms{wjQxwL3PeP&OLdXT7L2`u)q!1dXhKXS&CPOomQyDp=A(SRU z4pGj=S;lFoF_Qcp8dnO188ys>nj04siVKgPfBT*Ge|z8W`+P23SoQVQe)n4YdDmX+ zSwyUH++Bic1?n}CX)sohixV9y2?N_wLL@nzwPqa}UT zt+xPjctG4K>88p#wEJ|S+mVyc_O-yhseVbfS25zBI4dQEx@S#gq^9R_1J?dli5Tu)~4l>apF&18KwWBpuvg!ng}P%ab8tOoC#{#M s0Cd6szu$&c2J+poz14Y>ra$}s0wFYps8FGn2mk;807*qoM6N<$f({hv%>V!Z literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/goto1.png b/src/Resources/edit/styledark/goto1.png new file mode 100755 index 0000000000000000000000000000000000000000..52b57d5edea601037afea88a65e5550ede0c39e1 GIT binary patch literal 691 zcmV;k0!;mhP)Px%ZAnByR9HvtmP?3^VHC%I|6=T{TvB3EHcS#BVweq)5xHdJ5(~*?8haUKOB#}7 z+_KT+Rum9%xn~}7uX0aDo8c}^h!FM>&$F3 zuoPGy66YqzfF4P&qGAXDGjqfjfK?T$yd-H`v@^3qKvxAnFJMyy(Ewm((}Byt{0c#$ zNr$BF|41JF97LO>!4$xCU~QJX2k@RZ0aJhuU}CU&2s{Ix0#`D>PryOoJ<#kG11mF| zJ(5oS0bpiJ01ueTZb_%p4`wzCSPa~g^fvf9fO&~sSIKGp$?iZeAfeE0&4OO&0G zj+X$q2y9Jsk0iB50R6y%L^))~Ln~$iN3(XE19l{S?||)+9;YBm*0f#Htq7p#hy%yy7R4ddvLke?&C{H3KyR ZzX2b0)FD9M%1ZzM002ovPDHLkV1l%RHJbnc literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/indentGuide.png b/src/Resources/edit/styledark/indentGuide.png new file mode 100755 index 0000000000000000000000000000000000000000..7df0ab38437000d9d4249f57fb436e86b71c1684 GIT binary patch literal 322 zcmV-I0lof-P)Px#{7FPXR9Hvtmfa1)FbstKZ3as)07ytof!G4^!YD8S;sw?*DxwlUX=7J04HA96 zo-gOK6J+F%k?YG}Kz$CV>LD^0!1S5_!vR&*U;!^RQv$|yAoBDn?)pM#b>I=!i51`C zfc^|v3Bv@a>JC`ugsAE|he`GvHkL6wi^u{v4JqRJC$|Syz&1sws_y}BL3D}nvpH(`m>-`@wNh=%gq015MU UA-(^e`Tzg`07*qoM6N<$f)KZeWB>pF literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/indentGuide2.png b/src/Resources/edit/styledark/indentGuide2.png new file mode 100755 index 0000000000000000000000000000000000000000..5fc1a9a822400263782734046e0c10ed0e6c4631 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}hdf;zLn7SY zPCLlkV8G$}bM{N2b&u_=TJqX1R$PeSHgUDta$TsRm0v`pMnGo1)B$DYGiTMb7+l-yci!Mg#F_d~0FwOY7=w%b<0foJ1gcIg7Z)S69x^n0Fvjge^ zmlUd6ExZ?0J~_*FVAfpb&cHb>AFdq`H4;(S!m?25kIIj@=ON-p_>^+vca}B^D&$FK zI;!q|RH|cn?cQ>ijJS=r653xa{qOKwH2PBH;cxXyYd&gq_kZBY`P)*UD4qUV9OxSc MPgg&ebxsLQ06ubR8UO$Q literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/indentGuide3.png b/src/Resources/edit/styledark/indentGuide3.png new file mode 100755 index 0000000000000000000000000000000000000000..486c315ff860963272ce49733e82a59dc3975909 GIT binary patch literal 312 zcmV-80muG{P)Px#@<~KNR9Hvtmc0$aFc5{mtC@fiXlZFEn1OW&OHd<3#}G7hv}{35{g9&&VS*xA zHg=GbGP3Tz_k2G#3V&8OKOTUjWk#T@nLSznNekeT5uh@&?Xa#Oqxv@0=)iwFAn6=Y zH#;*sMLAF$AVU4XyFk*$A-YMGLSPx%MoC0LR9HvtmrJOPQ5462|ACSTDKi5T%EYr6D7gcVlnJE_5E*z3B(E}Y3=ELm z2`Tc34BVKQcnnAxP@WTYO$^MWm`EA?wQlR&KIfjtKCju`^>sSmUT3Y}{_nNc-bc30 z@Wz;=?d{wv0ct~H2)}J1CIKX!88n3L9l*VI5JLrs1=-#W+-e0ebby4|2V83g(HDU2 z(-EL#`)nTot~5gQ3-Brd)|BLr?Zd!m6{2SV+e?8D8F-nbkA)D&fD3hqegKXG=QHRD zN#V3;*ggfEoq(wKfs%c!dbj-ySd{O^C9N-to<^BJwVnWMF9gPci|OxZz)1R13Q+`L z`#vzQiPHr@JezXvG4M5?|AfjfyCi*UP%tW}y#lt^0#|{>z>A85-@u#tw&iM80kbML z>wwR|en~GI7g3}@Hj$YL5gjcYZk80Qoic1kIo?fmZfEd6Eo?h0&>-1C;BvkjkyKSA zT5hcPdCnh_6iuh)C{~~WVkPht_#|nhVJ?C%0X9f_+bJ1)0>~}-3A_&g+Y<>Y>AUR! zST1Q!r{L+QyDi8cZ3P|xak$KnEY4u@8CiZE*e2;=Cy1UDu>A&{l!^U9THSOKhumjuL=D|5>SZ0}uzxz(@4}n@++h m3JhHDGKZ5_vNH1_Sp5S)7qWY-1~8)l0000Px%vq?ljR9HvtmraO`Q5eU6|D;e9R$?Knd@RLsL^d`kV`1YfJ8XP^WQ4(3VW+{$ z!YF2@Y(#9xWa*=nuLZI2QIwSU>$!8@+uQBl`@XLkvvTTm-`jc4^Z%dcf1c-@BLLe+ zfUUr+_&)~iEzm3Js1kVB7=Si|=n4X_f!V+^N%zKri0uyGF7PG@I6x(7EWk62I_`f0 zBZ+|R&@tp&R#m6_Jnl4YAV+Ww4-W!KCl>=3(QMBzNbYI0b=FRA`(%|J_9d-7pcehBT3I1 zaqXpkw)5cUB<*bD zb2##a`H~E5p8yU3O*Ku?%JxjRq=N;K8YW=-a*DvFf(es>ud&l5O>Ys_PbovDNcvWm zK&j){_Hy7hFeIraS31|@EU4WhY=@jnfEAMNj5dM&KsRs&i0~dt*SNsx1&#wD(}s{r z(#g>#a2;3!#P#hkFs=dM7jP_%-;lI+vssWdF>xUAiXB4B$JusZd? z90Ud=#c!!riGb}%IlurO-v(tM5gL^Av6WpR0oyZjpeq|34FUbB$50lHsDk-+KNp?n z4Ovs)1NEmF@S%;fTN$XN_sv#TKspFy(fJKL$ew2LGH&)b{h3>3zohS_#7#yeW$UUP r$GPYEgxo4`Rsk%sZP>U!vgi39vMslGCqnee00000NkvXXu0mjfq~>MN literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/mark3.png b/src/Resources/edit/styledark/mark3.png new file mode 100755 index 0000000000000000000000000000000000000000..090bbef2a494f2fbca700725cd98cf33b3545f2f GIT binary patch literal 848 zcmV-W1F!svP)Px&3Q0skR9HvNmtBZWQ5462e-B=GQYMAW6sbuKAwn_{Df6J@Gi8`OFuYNNn30dd z!)SOAlaUdndGeiN%EOS{U5yV60$^rafOEmA4QP_|VyIxuY?JRECoJP1awNOP75A#Tbss^nOX3umed*fmkPi|dV&D9B2pp#9Sz#1=p5aaT+kQW5BLF3)e`x zZe|aGIeC0GN@^bx1JNlkvs1u!;1=+xU%^t7znj@&U_lH(V|cHV-H&fXb-kq1kzdIG!Y(cW>w!jv-NypV0lghjkWdn#%rwVByWpiP$r>=T6<+m{0w)O0d&5{sU76N_97?AGdx3?(VM%8T zfh&fAo4|6QThfe#-BkhmfB`uM-UJ{m33J8(AHw)tNq@_Ef^$^&{nHdl-fq2?d$aMt zD{|)eouDE%_6ax?uY_i{A#_Z4n;^-r>VGWhM&#%FO!)5SyFO68Bqy-@IQ4yI=H=Pb zQ5p03?m&PMULC{u6G>jO`z_zK{0^`*PfnXd;P(matqefCLMB<2q@Gj&fpWiM`H^x( zyB!UIzvNlGf7r}iL(a(jFxUZXlk_%sZt8zSGn)?dNcxo)IDrvw&o1VV`R1kqC^l%Z a{=WfzhqN#$KHM1q0000Px%2}wjjR9Hvtm$6S2K@`Tncb6TAA)&%(v2!-(?I~88*gyiYqOdX1Kf%@p8XFW9C`@QeI zrKS`Q7?{TiJOs>>F9n~#*@s6S0(eSOH%J5)Uq24^<2j5$h_SNLjp)6kIMI5l0KOD2 z0o-KpwWU!waqNJGp0|SBd^}6{KZS zNj{V418G{cwcLu*3%!gk5g@IbC&lUOgr@)lkpU}23lbNQU9)?}n5D?`lzIj}ltk4q8l4e6bh!b2q_(B_1mZ_tD}0s-fG@>k zFs^ukp6NYY4BZ28+f(g{q#v57^;#pc6Y`Nb%ylc~zD6_>U4r8)ck d?Io;W4*-!sMWJXPI4=MI002ovPDHLkV1n5Q1!VvL literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/needsavebar.png b/src/Resources/edit/styledark/needsavebar.png new file mode 100755 index 0000000000000000000000000000000000000000..9132ea5f71f3b5e12e2b3d42356590c733f40728 GIT binary patch literal 505 zcmVPx$vq?ljR9HvtmoZGjKoo}mS8UbQ87m8+khnT)42g>xS4St^9Nj<{M^_yj-3_cJ zFc}ADfz2H1=B`D1=8D&p+Tu|PgoK;g=Jmbr{(JY{9RWadS+9X;T|6f_9B9P?`?%}p zlX?I+uMY(vCLw)vC-jyAidkkqMfvRku$b+>ODH0$=a_w}0@X5&5(moCM{`9#0H`0%+JUGM6i}=oN(YAK*eJAZejq9^qiM3`Ij$u*@6mqN}BowK*s=GTI};E z2oXyG0YI8o6V9aMQ2^cLG;ToHC!myL_L(1IECBauEG}t!6`)NHewb&SD+w_c01>Q_ zS;&y%Q~<0x9D9YfeJj3?4ZzKlw7$kQR6(E=VJG|Cd58@lCHyZ5gGtvg=eG&GBIP31EPx$mPtfGR9HvtmrG8=Fc60SF>0=WghY0zfwE-_?Fm@X>rk%KZs-XbI0J^B6?qC}EjhB65d* zaFqqo2Ed(^Ub1|p42OPjtp7=3>T+)!plnrXyAA^E4_0yfiuyCN>pXu>l4f4k`YgLm z|M}wqNg`>@={TlYB(4A!I=S?GdcDcc7=ofpH#Oe_bk_rAldy6wq&lLx4^%0`iWJF? zSi2EbJUf2&=?6>?(0icwK&L$LDtd4S7>R}}s|)J%fy9&SP2K|{O3y`_g<*I@O09|% zPu0Vd`co8`QtFI>8GvQ$;xrFdx?(IqMWizLRCMBhZdi5=gFgs#>-fP`*8BiShuT={ S*MPx$WJyFpR9Hvtm!VF@FcgNr{|R^lg2EsOf}lva2@VYcg#=Bw7Bsv74g?7aAn{y{ zB!L8nK;gmuq&K@{kZo<5=VS*}?uz+V^spyPC)B;GF`uZK&5XJPSSX?(yqlix0BkP; zUy|Nq%Pxm$XA0PU1Xh7%Nl#4>eF3GTR0!P_H<~f{68qZw50j~yy UFr*E^)&Kwi07*qoM6N<$f+dxxt^fc4 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/next.png b/src/Resources/edit/styledark/next.png new file mode 100755 index 0000000000000000000000000000000000000000..31e06350bf4aeb7068ecb223e2eb04a5699d4752 GIT binary patch literal 831 zcmV-F1Hk-=P)Px%`AI}UR9HvFmrICFVHn4M|43Poom{ezlBC2$GZsX-OevF0NNx*?VrDT4iISOI z$`A{)!4wmlv5;H2Ef5(gAtfu9Sc!#l>CrR2XF7A{obP+TZ>HwdyEx}O@ALfM=lXxe zFh3e*`$PjUv#~%eurRFgfG>Z(hV>Be^+eK-n8TF?U}mF$UBGT&a!ToE;7fR)08C8% z`v{x@PD}b-3P?!+X0{4A0L%$WI)QFU*YcDG`37Ju;J{x1hl}K0McL87y;rkunuTQN;B;NFF7y0Es`$800$cc4BE>k7)T5WrwV5LFSSLNJ&lj4~cVP?&_Rz}|F? z#`wIFUXbcFZIXH?Wx5Y618xDGk~R&s@o@T!z(!!Xq}y2lPPtwIQ-GS7*>7e(xauRj z;9S5H(Am<=gtBFa(GK8jARpUfybvp6X6JxyK527@QKHDqZU8I1EmuoKa{7q#NoPb( z(Tc}$h|@^mPj7sNo{;nnp#kGK(^eB+;GgRy-Hdg0Mo&US{BtfZEJaGwyl}9jbcv*U zd50)R%bg##1&ZeTyMQ}I<2sDnrNHVy%a40+k@T;~gHfb2P&EfKHKnN3#pFXUoG{|T z2u1-2$?25M2aR9NJhpjPGiSVhHG7ayu5!5(4WOK&YX1*Afd9&HSuoI86H@>H002ov JPDHLkV1g9FY)$|G literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/openfile.png b/src/Resources/edit/styledark/openfile.png new file mode 100755 index 0000000000000000000000000000000000000000..752cfe945fda995968e136b184a9b44a78ead5e3 GIT binary patch literal 301 zcmV+|0n+}7P)Px#=Sf6CR9Hvtm$41PFc3xm-vlZ)pasUDgOVvoCV`R>Kth5Hzz*5ukgXUYlt{U= zrBK|}{&z3Wu@Vy#7bl*N2p}Re00#g|1JDb=o#fS!{Q#T*>?{qsOiOZZ$tMHSg)0D! zqERpx;6rUlJ{8%x^cO(gL_`w2I$Ihb*c)3-vQ^T+*x_kiMY1jda8yoS0N6(Tp}J$3 zwT~JA5m^IxIKZF*jn0g$VgWgm+?TkTS%%*LTu8S6aXGa-LaEFfLgL>c8#L#Y00000NkvXXu0mjfm5_7Z literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/paste.png b/src/Resources/edit/styledark/paste.png new file mode 100755 index 0000000000000000000000000000000000000000..1c362a029430367f2c48176a673890f1a5c9024c GIT binary patch literal 544 zcmV+*0^j|KP)Px$+DSw~R9Hvtmpw}zK^TRfQ>L;AX+jWVk;W>8*7_InVPVo(3zEu8P>Xay2!XU| ztYRcZz}DCrND)YpJ)xxU|&cfwj{ksKehs}{S^3_EW1Io z6sshjRY_~*hHU|2nZ|ORm9$x>k78dr&WXD%z)rCmW(El?5o1=|9YB|XE(2W#x(xik z82}zjDqFIvt=)F-EXbPF+~H(9&Vo}(kLpgt@P1)FBX|mMB5A%bApuck(^H1tar{=& z@<4#7wEYEmp81m>lBS9_br+Sid)TsdN#AM#iU8qiCz4UlB=ucP8d|b*N&AgVX`Q*a i?fOPnv)c|@9`7F$^gJ*UezE8P0000Px$u1Q2eR9Hvtm$6F3KoEw%5v(n&1O*E_K`gz>yVg?CR$oDU0QCjLcMui4htO-Z z^#!c1uKA{(K&I3!c9NFZq8n z8^rd<#C;jSeayJ&`;_n$0nW_qT+$t|pY8soi12G>=OMW;vlB_an0{9PDGT>wIun2t z@zADI4>T2b`*9~B_>OWoru81E1CSIR*DBK^U==v4nQLTb52dFd0ibT;R0j^)0z{Kc z1<7{inf3s_g4E>(DcnQo9{dOR_rM?aK$Z!s4u~fxzmLuAvP~kIxUftmPsNcVI(vY! zejrQbv&{ol#YmF3aJRtTOcPNVfTRWB2G{|Hd4v094*;V`><$61cF{eMhd`3Ib=N*7 z6nC9AO=%KJDr?GiV}O`))AyhDX=gCq=B94|0000 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/pre.png b/src/Resources/edit/styledark/pre.png new file mode 100755 index 0000000000000000000000000000000000000000..2f70d392d777ba586cc98eb6ef3f947ed2656120 GIT binary patch literal 871 zcmV-t1DO1YP)Px&AxT6*R9HvFmrsb6RTRd5&t^c>jT`^rLJ$%i+Bk+KO0^KwT!=cTl%-UHQBk-E zH!6`X6hlSP5g`;AMhT)Kp^f3--^oRb28BR3nh_MD5VU#X$bE-z-tT?C_kK#ug?I6C z&pqck=REhEbHxNNO|X5s0$_U?@H(&pn4Z4S@n`x*fQ!Jeq(?c z-_!q0U{+~w02q)|$W-F#2*CEMz`8B<`P5ZW;WcnptXqB%5@GY<=NGIu3lk%K>+b;n(5-0jvi8&5{?Kgn$fUhO3 zZ&Gf1x}-mv-nH?RhNvrXwNFcWw+!GW zuvk*3+7Q?CnT!_>r5iCKDTp~P1$TiSNwcfGe;&_U_1V4;{3~g08Nd_Zwxr-f+p-;@ zixB3nTUEMj{|wBRG^GsSabk26fZW0~D(Qm?A_jmLBuy;?h-Nb>GX-ZQZOIKqMGF3r zG_MTc3h+u7B#c(Oy;~58gjXdkEd$sA90S%$`X=)lektkGTo9>UUu~@&t%Ya?a1R)g z^!EQ$h&}-h0b`Z6T#8So$!C?M7_Dkox|U~v%Q;c79S%l$f7E(A$^c^I3YNx9w>&qr zIdZm-03QO|CB?Y*bXB$EA_^CBnoOqg-H~^otv1w6M85zpcGGA&khZA*A<{PBbgKKs z6tiDa^zyEk?e}6bP6sQetEQ>=2Vi9)PXOsi%mQJ0Kg3YF4)_aLCTX)N&LchaL}Q!*CQ)n|3aD@j;|(staAc$kENo+Q)hVG@R;Qhwi*x5fyxDzH5V xcnerv^E8VGOZ17j%2}%`09hKl6q;}V{{gD7Rxt8?t5^U4002ovPDHLkV1iNwfkXfR literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/redo.png b/src/Resources/edit/styledark/redo.png new file mode 100755 index 0000000000000000000000000000000000000000..51a8cb56e92df278ccc502281ff95e486f346cda GIT binary patch literal 706 zcmV;z0zLhSP)Px%d`Uz>R9HvtmrIC_Q5eU6|AmFJVdt{2lB`j)!^lEPxs=4XX2ilRW?{jI5|fZ( zTuNk=BAZz#hO(lROGqi9Y~00y&0mksr{nFLdA}R8aq8WC?>XoHJI{BX|MR?Jn1_a0 zpQZt9&j2m}y^{9Sd!SYT>;iTt;VwxB>VarAKxl84bfi{@Rsuv6Dv?+(skau0Rs)Ox zb|&FflFpVvv=l&6x9$BvR}x+->Ecij4FTAm15C@FaS{Fi2r=6|z_uj3P|}sbAnF3J z-2tosW)(Jk19VF|S^3@eVPF&R9SDg2Y7jL6*lq*%X2S1)o4_^TA@D@fx1xaUW57n> zOMU^EAIvcD2R7RI$y7FKHv5^U^(zSK|F}}RRL@-1}>!yW=gu%jCdA_NXaF@JxNom z0@$7a+yEx!sr4@bP62EGf_V8~kVP|!3lYyte4`8gM57{Ow(+w^}vO0W@5WZNEsT-3lB^f~5|a0|1RTB(}c-;q&8@c)O&5vNS9J zG~SZgeh-XEf=4AqEiWB~ni2CGYf5e30j2{3lG;m^(}V&*<88U^$bk9LKuC(RS<@Ky o50jcGhnQ5_5j87Nw*EiBPe~FgFo&v|m;e9(07*qoM6N<$f=Px%k4Z#9R9HvtmP?3@VI0PPPZlg~C6tH}X%fj|k_FLNU~F6_Wq~ZntlV%D!Y%fR<0Tj8>Qwd^705TxqL_B8`$d^)(ngMJt0;T{H zf$_ky$bm``+MW&U0mdeX8`-^80oa}gECn_KAAzp)8~;B^x?hxVwzmMgfvXAReY{f$ zVEZz#2DkuRmvpa4EXR!|U@tH;L0rkRZUzvMy#|g+x;0qg()VnyPsj40EP(B4z{{YO zw69*mndDrZ0IvN3kP&Z{bhn=3wns;k0#*TSF++X>uss0?(e8RjZhLWx`kkbBlJv@Ulw*`qlwdr~ zmHL3~X5bJI*0)RQtJsKa$0+TRbSAqg<~^_$=#zA~44BIS*xsDZ`=X?6xvkiCB*k_~ zQF{H$_EaDQ=Kv=qb(Z@`+y}A%w#OtVqXTwGx>GoeY{#(Zl@xY`c;vuA;3m*1=}k^^ z`2}EmIdBws9QOlB--@az=J<5rMM|o-Aqb31Q5Vki0S9cK0M^AgE={yt2W-bprUO_A zoKC$xI#pFGUCAQi&q@4wRWGJZ;lQQTZd;=JN!nV=2NFO;-G6+wt^jxn`~Z3+#k3mM z6#y|7pGjIWtjd`qh--C=q~1mWtd!K<2=UM?ypRkv*nfbZg@_qV(kDfK00000NkvXX Hu0mjfLE1km literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/rename.png b/src/Resources/edit/styledark/rename.png new file mode 100755 index 0000000000000000000000000000000000000000..bc60fa32442d683e00cbb3fe54793838a14c1d1a GIT binary patch literal 428 zcmV;d0aN~oP)Px$W=TXrR9Hvtm%mEHKoEz2ANWFcc6!2fmUb34B9_*I=z-c=i=Dldm2lwMUFkar zzJiS~vdiX(F`I0->>Wx{ZL;&{%goNsE?V*~`#!J^ zfQ=u099#;LpQR&^>?tDnw*cJ2S@w@3`o+bixfx}0UN##A=;Lyl!aw=dj#IR9$b192 Wn@KR?FE1GY0000Px$9!W$&R9Hvtm(2~rFbsv?n+GAW0k8oVIKu$20%Zjl0M2k>17HG>pz|0R5~*q% znm`dhN-tIO=P$2zViN#FWD1}Mprzj>PeO9$=qqhDYbK64CjeVrlOoawu&!9VZUAd; zpa2&DjSm5&3LqKdT^9(+ec&(XJQ%;TeFcC}Lm^Pc-xMqY{Ez|_@m%Esh42-TFdxW8 zNtMAuKS^dAp8=Qy7zbOvPgszgyabR5ojgMufIVvUeaH_e3+Z45TszPChWAk&0ips? zfv7-K;I9-I0$7^6VnlM~b7R)2fF>4AWAyBs%+?0rv)i&U-w*JK!sPg%D78G^35T8F znarNFGSbS}RmHv=Ah~6%rb1Q_SCLw`0x5tQ$;}l;jDR!FvBn($0000Px$E=fc|R9HvtmoZMmKoCXWzXRbYpmd}`K+hF|L`RBHMwC!MhXhxkCnyc+A~;II z9e%WuL6)&$VQmr=yB^QH`7=8^D^~nz#qntY)>{GF`#?9bPiB%PRX!>euzd&gfoUSZ z9&j(|q|8q#fb9-22hJs3r2yC-0++zHq(#wJ6+obV26~c`6tMlJum1&LdlXX+Nf+;S zwJDHu^j%4UpCrK}V3J`NAWYe>`Nf-n1+Y)R6VR;xxx`_!?Wn=pcxCT0s z-l7(gOu9$lu%?x4Ea@nECClAx0bnOZ0pL~A_{U3WV$kT{*ZW-%okoITtH2URrUo#7 SBsie}0000Px%zDYzuR9HvFmQ9F_VHC%I|Ll|v3pP`X&!q*D2_t0`lEFkuvyh=|NK>*vNokUW zjmAR4DAS<9g5)DpRlgw0@&^bPA0&Iz#d62iv}JOz;-k69GIL5cuLa2{{?UeI01YIA``v9dtjcVpG87c z%fK^WAyC@2ZKt4Jk^-hM`vbuCM&L$@&@Ab#?ejnV+?2Wg>G(uE=* zejkDD5ZAqMDydp^3<4W~$C6eQ4bTT{2l^!K7|Xfsb-=CkY(Wv7F`I#Fz$Re5q}$bY zXZs4U4Ok^9TJ&F87GO5e6i#hV0X734CEclvV7s-5;HBfPlIm6<1UD>c)?aNg=i@wp zs)8&Esv5vl;A;xfCh2ZH0d0qfLr2j`D{VMhyrliv2esybxDTQgUzD`7PJjWRJ?GtS zNj>FvY5|1OL-AoXE2HepcIYPba};<~0kSf!KasR77a(4+9gQg()H`5Jw(e~o0bWSz z9}7Uzu`EDTP7?MgUDcckZ7)gPG0JjC(((jWb`}@cVo4)uz1R#Sry;1gqQl}E?v0@& zGoPx$?MXyIR9HvtmCK8dQ5eTRpJHLDTo$C11!gg1gAG;+WoP4(5=*mVH~0q>I~0qN z&156Sj@cmBP%ed1RxbYm_2^9Jr_(#{<)@*U#d~(|d(QKm&-p&z=Ny^m;XLn856~;n zsX#>B0rq6GPN{qAj2jWrVCd(-J>atXvAU)eAR-n4KPy3t)nC;_1;E*2ZUoo{tOo9? zgM<88(gkolkpmBarNBnugnFe3K%JGdfE!WYma$y`FM&~D3|Ix60$!<`{u1B=unt(O zejW-SBGv=%fF$>tEaQ_Lyg_|mCK{ZwR3IXfV!MI!z+-jm&>o10GeD~64fS9OjEEP& z=Ja1ZR|n8w#GAl)RsOWLu>=wE9askJS8rv2wCOnTLtWkgFkSp#l9fy4OAx2kPn{)* zh}3GgfwcHb$xyQ=j^lx|CWmCt0a}8$yABpRTIMx&TfB7k~-%NKLzK0iNamW9r2cARBiOmJYK6 zNEcEX2h_xm$XGUV(+zhX2L-ElGO?egg!W&mm{OPjLVM002ovPDHLkV1kbf B{A>UK literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/sign.png b/src/Resources/edit/styledark/sign.png new file mode 100755 index 0000000000000000000000000000000000000000..afb58073b858355afd26f29dfe958cbe10b53e5c GIT binary patch literal 738 zcmV<80v-K{P)Px%oJmAMR9HvFmQ9F_VHC%I|CKDpLfP3UC6tw&h=s9XVd0~Og%weXNn~S$q-ZS2 zG$bsPAuAtAV#7wWu%IY4z89k=h3#KwdhhhkGw*%xbLU>osdsVT_qpf)JLfs)Jdc=T zQ#bW(p9elj8qW3GH2~XZfn$a6fTWW-5M2SVy%_kC2xdWa3t$^C0z3v@0;h8`(Jg=z zz(72adfWX#)I(TpCjJXRsMOo+6u^>ijq&1@d11u{& z69FmdW3uOsmWb|LN;;GqeXL7Iartr) z-z&#yQkXICV|;&#Q&UoUIj!ZH0%#R^>Lr1Q&pRdEX(#%r474krY{x<1k)#;MZJTT_ z0HST;a?v#HZF|oALjaUpDC-E#^qsXV0Ah$l8;wi4oAs|QE^0Z7yQo#^YR&=v0ba-} UFxzcZcK`qY07*qoM6N<$f*@y0LjV8( literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/sign1.png b/src/Resources/edit/styledark/sign1.png new file mode 100755 index 0000000000000000000000000000000000000000..a446e0038cd46ed73c395c1006fcd6532689170b GIT binary patch literal 740 zcmVPx%o=HSOR9HvtmP=?8Q51&%+ax8SDU>F()ik8&&Z@;twG{-xm2Lt;1Ru>t+_=&T z-No2q5Tq@FBDfH=F4QV^Aw>}?Dkv&~2(E+@OI2#YWSZB^Br{j;K;q;vuOzh~&Sn;K zx!-rrJ@=d;*x-k3FdzSx0Ht(W;q%9+WBaa<*~~UA0}M{HnJ2>Ihkjx9R;c5_!mJsI zrU&Z^}s2{Z!dMW8hhKzI1~ zo3{N2hD*m|=B~0eYB+!YHk_dmu(#2}A}_*w$H(&yzyBg3bqJpd4SESvz;ClT|#ENS!&UDNqkwS3u&DclntcN5tn(6{wy>y>LwdrT9eQ9e4Cl zn>u7BVecO(8#s-?YYM0<-xk<{%;jiV+Dj4>W8jjaZj&)nwPk&vR=2Aq;W#`3TmMdc zk6i+BxlpUanSobjK+dF>*e{j3#j=Q*L?RXiFH(pF3P}Py;V|5TgRr^XRqfR*yh?yl zx&y!`Vg3Px%>q$gGR9Hu?mP_d6V;ILjpQVKj$!#MGMMy3Sln@p&GJ|0-MH*$&Xh@^TB@E*> z4NWvO?z!YLlCW`ENGaqJHew}(g|Je-di0*@%$alk?>YZ--reau&-4Af&-+|{vfz_s z6>t%7xB6`_ygh?i{!el|@EPzSZ~(Bn2eD{?n}K_Q!+|ZpQ9X!71H20ysvc9BOY%w& zV$lFQfs@rE2T#|7STw+9V57RvaP2Gwu`qxn=L4?+yVQ$Ei+2*lLI9GS1H2Br4_v7J zGp>8aLCg)19g_sK<$w|N)zzGlgMrhVP>tDo>k|KQinOl) zegggmPH6Tk_5et7F7Pz)2e3hXXG}Hk3!DcW0lch!KZW>8-~pg6R~M;zc}x9d6yO8k zS9SHY>6}8mE_J#3<~ZAN8F(9bNnJA!L@Ts2oA`T^VvVbT8X`5rUr?`D4nz|_6}U|O zXsH-u+c3!h;u-bISs~8Zo+P)|`fcK0bsc~u2hkA36Y4d+ zfJxQ@&#F@oxUS(4#N+C7*%&6W995**Wl6Ali;3~ED!|pRwm|N8P5+45VzHupM1 z5S!IoT6PWtzOFT1i)L8>Nj3o6fc5HQor)iH$6e}eZ3^zEo;8hl*^DluDy&Lft>P-C z?itF&9l(viDe5;}$7Zk_Aju}+z6zo~JZ*rM`U`++&28$gS$zKoNK$WDUqPGH`)3I- vudQu?RQhgJ@0mB?to{Q4)H`Q&UWEOB^oU3@b`UU}00000NkvXXu0mjfwrP2t literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/sign3.png b/src/Resources/edit/styledark/sign3.png new file mode 100755 index 0000000000000000000000000000000000000000..e40aa5adcccdc42732d9053c982a2489de192f31 GIT binary patch literal 680 zcmV;Z0$2TsP)Px%Vo5|nR9HvFmOW?`Q51#0gJNSLVrOHa7Ab8M3&Bo76m7KfrxC=zASnJJiou`| z6p4k9Dt6jLB0}s0i=d5_Sg5U?h($^{^1>Z?nVreZY_i$c?C$X1J>R|eygMs~yfkEe z1`1&NVoFfbv${kF0$_U`a1S^h!gG>Fs~}b#!1h+)F0dc?1Iz;lfl7!~1+cv<#7BT1 zz?h_Y+fVBtRt>=Rfe_yUd<^k#McL~hIs@3=4J=6dk_A5n+>YOGL;QES=NZI|q#KI{ z?Q#umUjfd=nNdk|wyy$bdf;ebyS&_EF$b>^Ujv(~3M0 z+2`Wlfm#UL`R!RbfbFt)`g4&)dW=~Te=aFa&i+kUB`zsdpqPgLAws2?8?`T{oTh0I z^<-X%7ePvMqIkUIh0|9Bmdm^xumtf&QZWIWZejKRfiB`%CDQcUAn9eJYPO-L1^tM3 z5iIXr0Px#L+@xdOHJ@{ZVkjfs1g2GQ|YS*}=NbPSg^|O7c z4$}BRPx%H%UZ6R9Hu~SK(PyF%X=oKs!(?kgGtcK&?QjK&SwyK&U{h06I`QfC_{PJSrHz zc_imv%)Ny7nf>$LeaXwt&hAe3h=C^QC4jd8_5k?Zb_3v^q@Um@|B~$VXK-A)x*&Nl z62KjRSB(IN0#I;%9o}CDV5f^1kmN&5ub(w@^qV!38$Xgx034@}76Uj0@U6FgMgWLW z)Nq*ccX?qnfNPTPOB9k~4g4x3L*o$0JzVs0dw|gX%Y4Sunt_!wBk9*!(jk& z*pmK94}d$8?v%eum^OYcT5IhnNdAaC7OhlGf%i-L2;f7dU0oAqU_CJ)=?j4GGs&9h z3Q_f>pw%f3?o9^ZA1@jOv&t7p4+D~V&OBnG-l}H12Vgd`IcigAI|p!?-n}R9bG2{S zN$a-&{)BV(!@Iw8s%@twfUSHMkv0h0S~e(m!DO>SR50+r0BoUo4uBhyt59rb0KSIw zOs$iuI$yO9X~>99FJe)*09Y1(cksJUa+1`}B8*bJ>-Z-rmgIvsmq%syTxxbnv02E) zRs&$>_A&so;J&qL#VN*JVL3gqXoS@C=zwRyd}h28?AQUHnbF}=+)C{*0BIt&x>}A) zGn)q_uSNoB)s;c5Mgr*Xf>xf&^`Z@}4X*fT9?7!2&nw|`omX_AdBljBuyuX+OK}ta zjt!E01LpsGwJMKeyY(QOwI)wV%ZAb((B1Pu&tXgUbWB;dB%h>sl%=b_Hk7VO`liJr X89YW_+?qr900000NkvXXu0mjfT4o{3 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/transcode2.png b/src/Resources/edit/styledark/transcode2.png new file mode 100755 index 0000000000000000000000000000000000000000..9f95ce53393e741e15b4744a610d9b59d1db9058 GIT binary patch literal 372 zcmV-)0gL{LP)Px$E=fc|R9Hvtmn}{NK@f$%XHkR%j|PDxLG4}uhrw_M3=+5j1{9oN%^rYcmkSUS z2?~iO9N>}K^pLQbpU(bdHlfS*tE$)Ebl1#?ocSTeFwzcu3`X8*Yv&c zE$L)7#;XR^>|ayE`Lgkjnf0DGFqAa4eF=oid)wQDu078pw!cNo~~Ae3id5zL9e|2FUx2e*UX zS=Jd?Px%rAb6VR9HvtmR*QVQ5462|0oYcC`s~_u(_WcAfT+;WZ0N9?K z#8>3vA(jF30&jtLz%!sr(${){`elLbX-Rx(QM>?9)OrbA2QEnZR4d3Y0JdiWH-SZE z;t3!EFxn_!F)$yP3(QIV&w=xjF4qFl2Vi@45??Tocr}BzR|3a?^=Vv>q)mfCH*>~eq)z&M~o(usORi(_ps1a1S9fU2Iz0Xl%=$ymFj(+xsI z;p#~?u1eZlX0I58Im97J=So&r3BoVH$9N>gd%tFTA8;l8SS#sXaZp(r<`8X?E*AE< zQi$^Is0ERNcO=~{jIY?cC27l`04ddSh*n9Rm5GHyG$S3&x!uP=XJwAVaGF8a~HF+R&dG3jwKx;aTN&&KY?ZBz@eFiuhg-%j!yeSJaLsCbqcvn0J3GJvv$)RcyQ d$^-u-zz>9<4=_zlOmhGL002ovPDHLkV1g=^PAC8X literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/white.png b/src/Resources/edit/styledark/white.png new file mode 100755 index 0000000000000000000000000000000000000000..54a9a8b9d7fc2d06ff4fdbefaea4fedb866e606b GIT binary patch literal 377 zcmV-<0fzpGP)Px$Gf6~2R9Hvtm$6F3KomvKtrh>k&Q3%@1g+G{(#l%I#?DeK#I+MEKVdt;4-mn^ zwN?=91uL<&u)gvj0g)sd$quoY2Z2C_ch9>MZYHAVQqTHifIm54dlpy*7F%xJqokXr zwXFbb?*J#jLQCOt*+|l6CxAlyx@d9-yaFE;O$R_+WyO6r0NY!@ZP9TkX|HM;+oy&2 zK+>7*4d8wf0A=F~Nk?^7rUZ!T!-W+|PkjJ<0yDt0q^~{zo`EG`PEx#lm6dV}E`dYf zSkieP0K332geBExMluIN*mh(<1X0vB@FMB$ryEHDDj=GIZL&G=Ys!6K4Oj){YbeqI zG>x5n3&wqbGC+19JCGgt4-Ui`a2Px%oJmAMR9HvtmrIC_Q5eU6{}KziMlQKuA{G=28|AVqC1T{Wv93&J-EEaW$-1mHtKewj-4_D2Op zymtxYWlRe_N{}hL#Ej#RbEOXxIY(jRkB^1f~MxfRDf@Nu7h92W)Q! zb^}`~$gmlB+MiV1<1)&F*xnB`rg!&&N5JP)x~)pjY)SXa$o90vJf2bSeFdVVx-03j z?TWWywwvuuz_m2qAt_GV)ohOj4yDt_`#%JdU&3rrE>~)IfYp_*;~aqo;2>~V(#dLf zgzZbf)-D3JcLL|qf+pZR@EDi^tWQ?SiqWbruzeBO9=?~fJISL$o6vJAZqJC3BWc_y=|B(|3w#6GB&{qVkh!T|((#gcQ6-(OBEf7~lcYT{$Xw6@Y)kSv zD(QP6dP6=}fk-SHCEch-Am_5k1?zxWz?hVXLQyS}+Ol~WfvD?l0?U9Oz^!EN$v}WF zP7CTJo%$PiE&q3Yn&ompB`Mwm8j8BE1*qEG9^ZzxN2Xj5$*2?Pkkl~{V3qdx1!|CZ U5^$tEegFUf07*qoM6N<$f(HjmN&o-= literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledark/zoomin.png b/src/Resources/edit/styledark/zoomin.png new file mode 100755 index 0000000000000000000000000000000000000000..d76caf08932279debdcd0b057920ef79024626a8 GIT binary patch literal 1028 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 V3NVVUN1Xrw002ovPDHLkV1l3jn8W}8 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/bincmp.png b/src/Resources/edit/styledeepblue/bincmp.png index 1a80ae6a065c1e3691bd76d41a68234bda9a19da..95173a2adbd4857e0c169d9f0c2b17ad650c3e84 100755 GIT binary patch delta 906 zcmV;519kk+1*`{*Cs<~XLQ<$$Mk5IHOG#y0DA6h~voswdX;ypDnZxOxxQ{va zs*g+O{q($?d(Q8k^S}2V3hO+mb&d}PfX~nKGj7-@@FYwCe1E&t>T5=7r=a4Z_V;9M z_02SoWn*Mw4%NjiG$+U}lM0TInqPDlc`P`|^2Z-DOtSM%RMM0%sa9Lxkj_mIU-x7M zP$SPrPD%wV0FvBBw6~_ODa6hF0`PBg+ zUPwUe43PIzDX~lddpPp#$eFuq3qaDW>>2_^0YX6-4j+oLS?#I=D7%Ls5`@_VArNHP z2PfaiKl|@)Yk)Y5jtoI4Kgb4v2(jn$r~??$z^A@3B!3-@{C^ERkgL$sI||~otSH$A zg6KfeJ!DgBVka$WW9*1XPyf>iA#p1M3$-LAP<9R42+^6?2$X1FIFl879k>OMcA*)! ztByn2J?OCAoB`C`dxKCu7a~D8GOs*FQ+=wX3~m9C^cR%2IX!Tk0azbU<%P+Xv%>8X ztmfIgY<~u%d5cHwY6f2LHKLn^X^uv2cBA86&~(3ZEn+(Lshu_>{+Mw7HryRo^{%Bg zYyM32&{*gP?i4mZXBv^%_#5(BdX9nM`D2TZH|_6=<@>l127_twH@)~65a^94tVh(UL^j6BV^1Pixf#*x1PebEF0|zuv8zh!wFSWUr1t61&Fi&36cQnU%d9&H6sqf9E zN7bA}d%>-^1lAK`q6;QVqPzmw02KGq231d4ARAj&86b{=BMKAPI9#y#HBkDJjXi4s gHqP9!S$BZHM~yZ?9KZ6q00000NkvXXt^-0~f@W)@5&!@I delta 684 zcmV;d0#p602hatOFnY;9KAl zPRK`GK}ZLr0z?HN4Hz{5(bc@C{qj~I5LifyF~NJ04x^pl{2xIsd~jj?@+N?a^UW10 zT`R?gF+gifMRXVj-sD(=tO06HrzuMANw^UH5kV-z%1Yttoqv!9M8=WkQy4t@HZX+% z#@Z6_-DnYF7|GQr40@rtyn55^ndjoUA3x2hIo+0kEfHZvJcL1ing@~#U@oKL02=Li z&>!w!lm)N_=`^Wic<9?i?jS(5-Z2Urnrw!_V~}M<9)OXrIK7I(i!Xq`c<#5e?#Kj) zEeG40WjAs6TYmu35FiFwUVH^$Vy+ZMTC;J;@&u;H1BqP4={A(2uQlBLoOlILt9N{p zY+1BfIRFuppmvA!=QHmvExZF@N{x`-V&=v5U36?cu<=;E8))iQxfMo0MmE+T zD#JYJb#A$fnPn{&oZfuqxkau&HVJp2 z>z%14+esKU0CB4YTJu@Ic}{>@9A*yZfj8O-!Lja4asZ@DU~CJ$mY*c;d*gu<0jvg3 zZ1D=%bjEmoe4G$mJPB7Z?SxvFopY9mpZ!XfKx~&% z`8p50pZkefxRe4vKzYa;@3w1skAiEEgGkE1EY|XS(`6%~ebQQr~3gLnHe$?69&jG#h=cy)v3G$j&-wo21?7KXs4A)O*~ae#kduih|e S3aK~%0000VP)Px&&q+i&-mlS%fJBxvV*euaHID@=gtGzi_SsevSj zOaXM$8V1Pyx1yPguTcA#X=M^bwg3hDD=@B?zPKf>T)to*PlCu6z;uoRe3$gaO|w^* z1d%a-EdV?teQ{N7@3ex*3?Oe<4>8ea08UC@tiQZ@n?Ym(kTZsR2{aC(Z{(8j5loDg z8%<9mh>iie4d)&O9tYv9c4b%pg~^e>TaE7J5FG*N=5u!fl@knjj1iY zb}wbEYm~uT0h(au323+k=HFuQ!od?^qvfgTiSt$lPiT)1R9h< z@rR_?repYjC2&;wVr!C7b-Yab1p)>XV{j@EKc|Ulxrk;VnCa~(C_b5Fs2kR15WO#b zk$S-;3TrCymh{C_tst&7?CUCozX(_x`r=d)@boT7acUqAOJ6+Qa`a65CoumO2JVIw z)+qrB&SS)UtZK;oh78;t&CGSv{uIo*4BY!N0niP569^wL(FQ1}cti;}5c*RpV<>k^jhQcJbZtEBzXIR^aXbglWq$lF{ zVeZuQ#6IbZ;o5JyX@5tI@h}kk7kmY}>1+r1Ff+DAfjH90Xbyr%NU!L`nrnK7dlqTh zFRXEI{Lm~2Krc8$U_J=&cImrswlbN8AjV5!AfBK8(Lhf6;(;{D>&7r|Iy)J>AA}+4 zi9=~j=6V7cAz+sx+&$%qU(>|S1JF%-4}g~$yesnE*V7urI=x^$422!ga8P>g$#!C^ zi%2(Y2ZT`&?U7#bm39m|)zZuZG6Ke48Hi%1hV8~z0pg&@7caIOoQ3{BGDzP`b`#!3 P00000NkvXXu0mjf@(AEw literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/closeall.png b/src/Resources/edit/styledeepblue/closeall.png index 1fab455e20a56cd65a0e34668079c28610c20826..890238b4368fb5c056150498477fb55a143c5708 100755 GIT binary patch literal 679 zcmV;Y0$BZtP)Px%VM#z=8dy+@XYUzmby|{~IP+Ct4VOn1o1CPS&)zjEunqQY;q*Hr;Pb zEp!fGvRtj~jB$MaFn%67?aRk+i>6C&TbCHx_t6U5D2#5}8vy1A^w5{x#XO)^+j>nz z=hAhgQJ9u#FD8`}fUBgiGm6i@y^K z)pMPq>8u5l1|ne1m*S2wZLc%q`cRyoDCyoW0*U%-!=!-#d;)MX#sEJJq@l7j^|-C@HRuZF}NP)pIYG0jdR~x1C2IelXlLc&R*bB@rFl_TX26bk7$7Rfb6w zy)7lhg|yh{7$R)@J#ls~pvo}GU5XfQd{4yXKC6uY^_3LuiNG8^W*r#}_(YlWv0+*> zgOGoG?XT>4)v4@E(fn8GKY+<|E!UYUHa8KI983PQtI9vPU+1{F^9#PSh;AS!!3qEX N002ovPDHLkV1my(H%kBj literal 1013 zcmVPx&uSrBfR9HvFmtANaRTRg6X9xs|wL6=JsKo3nq?NYN7f~NXtO%k=(HEmwgn~~6 zzba|nSrONl&Y04ov=0geeGn?Q=!1|#t7a!{v8A*-8!MWY-8nLAcb$wo zAKL`Fk9+^;p5Oi7bMCz(+~A+w;QaIjC|DIskli4gLGJ=?&jI?i?>P_V(5;aC51?RG zb_sF>7#VP~)dQGi`+k&f{!J`%K@hwJEG(UN{Q+Te%X<#2+f>^yboI(fpr~lA>A7#_ zo@Eun9)MZ04l zmi-y<2(S$D0m8Sc!P#66h%te3ALveCouC&Qo;x0mjXI#=fbTiI|B6=SDMda4<|Sad zaoRbNCvjY}p;W!CExZT11Ld&4=)Bm~Bm$V_>NZrr11|cWGkHCU<1waXe+6tuc9&gs2<7)y?sy>G3r@%4abDl{BD3tA^qCBT)x#_uH7ocEO zwj07&qwdb7K^4oDC&Tf$&a~_$h4W3%xij5?Yj#CzA`Ix-n08i#$yMd!cuhs)yYnV* zK>|Q=(%zy5;pAKUK}3^_=yV?kI(2Z}0O2ZyUew}$#{K}Z%JM4dZ5E=;QUqE*?W$f3@-=$v17r_;J45g_T%h<8C$7u|D& zGbndt-K1*<5HC2|GN0BRnKdwo14-4M)uO3gkQX4U)v_Q4*n;Zu@b+5I@J*gqTkci9 zRefL4U1_b>g;4mb={fhry5L7(qwhJltT>9}4iv1)8-mm%U~BvuE>7*6X#6^x`X;z} z${v#d^YVgosyp|XwfEK*L+60r12*xyz_hAQgB}B|`kw2gwN~D-V#$6*g@Y(Z{6*)5 z3d%4l`qHBNWjr<)Ks0Eyv~P1;j1@22Bp@S@ j3t11@fdK|ueGc(Io#6;SNG#DU00000NkvXXu0mjfhnw#8 diff --git a/src/Resources/edit/styledeepblue/closefile.png b/src/Resources/edit/styledeepblue/closefile.png index 6fd7e8a181d0e109e00706443eabe7b405eddf7d..7e50402e006a03eb992d79d67e5aa60bef57f88a 100755 GIT binary patch delta 444 zcmV;t0YmQkvpa;6KPp)tbAYO_ zI>gul(LMlS2uyTttx+fiDX{m46 zn_R&VK*N(xBMHFjhe-gne@)mA06H_BMGAzy0{FWpph^_LwlCdtohqp}?Y)5b-j}XS z#^>@tRaj>P>H{?LS_%GO?(p&jhKVc m(r9KvO=nMIW0;P(iunXfEqgGC^tSr|0000=a{?QC9~U|-ND2V&%fP!9^d`Wckj7FIL}7sxjz1%0Dt01Yn~5kHh^Z$pbrch z;K5ur^Xa)V8kqqz;mikkJ_z>$7!y+HG#Hx!+Nt{8ol(Hl1u$ONvwdJCfF)5927I;{ zK=%pheO)WACV-f*Iti2xB>05EUy(ukX$XC|py^Oy?e8;Fxe+P$xs^cI0=Tsl!{BsY zW}XQH5emReT7TQYw4fL`0Kiq!do>CRrm$B4Z~(Lv{E2s{Y-VA#*s1_bVXpzOwivKy z$iRxzecrE8ikE!Gr0h!@eQ3aQivP7M>8-2GF$#bwtR(=ws~zjn7X?sx8+oacnJvM% zG5|4Q2?Ff~Ai&tD`n|`Z6shN9ChQkMcocwS@Z7x2$bV8y8GyKO-ej;oW=9&BW*zT$ z|E!lh%KC(abI~yIw*V#+Xmd`w_l*J&6V6ox{yvO)Q`oNnxCcNl5nGj)j=r3j$p&yG zfF32ihl1dOtzgjAdFlR8&}YdhChS!NY|y_OX!x?@*>$~@yEBFT9)QIF4jV(p>=TE& z4r`zBQ-3?A_>I0k?^6J5Q_{PmGIm08&Gcbz_+?~+Se=*N^JM@`VSfl<5rBP4dN+ho zYYJOa*$QBflHOeHX9`>EMyq|llHRNuv3mhr9|U=p0aMsN0+?A(`DUtp9DL(D04acV zTQrfH?mk9SYhI@FH2_!uJOBrj^mMDrT5yzr=6`wsbkMjK>lVYH9=-WuG3EQb_~bz5 zvs$7wlg=_Qzs0~{UV4)%TfpaX_Tx#bjky29a=)cd zg?}N4C#)x#Xnl1JB%Sw(`A&egD(UK@R@Gv{*+k&`K{yEVuPZpQ@g*2D81zP7y34~w z==1>G#zY_Fv+iAGEr=)Vh;{(9BFc1IAMnP^`C zGM>_OFwmKonLWYv;7v$AuE-5|KbHY0>_j;40KD|SoCSK)D(T)`0#`naF7BAd!+a3n zvGuf2OYNguH`056PEiBR$o<~+M^ym&&zNvl61Z?rgXkrdb@dqi*JdW2jbMIcq<^)v zDlgscV6u=Gk@E$>g?SL=W(-4D{urUXO1d{z`i8#=g{>#uH?s4!FZ zLiqF`z_%Cuk0|NsNjb{uy^5bB(CR?c$3)oGz(a2zlg}OvW}7IUo-|C2%b0O9fZIxI z4Bn8JnJ2=4*ZnRqh5axKfkzeE(fRdP|0hn06PQ3tkE9t#li?zA{bnv(q%OnGj z6G-n)&+}TgkHNdx#|tM1GOAw7A^`{{iHUT~pueuE_HF3%h2PYA4^#v54-F>!Fn&lF Q=l}o!07*qoM6N<$f)&4A>Hq)$ diff --git a/src/Resources/edit/styledeepblue/indentGuide.png b/src/Resources/edit/styledeepblue/indentGuide.png new file mode 100755 index 0000000000000000000000000000000000000000..dadc5778929b19907ee814365017e6346a7608ac GIT binary patch literal 346 zcmV-g0j2(lP)Px$6iGxuR9Hu2WEfz;IKcKZj5=WOg@CYP<$hYGi?{dN9g)q)2mxWGs{b@~z`ZsU zJ24$F&>=ue-(xd-@FhZGLjasu85tdjRS#45mQWfX)81Z+-W;UjwPh%!CMY6GB9Soxz{=an}H$<6(q+$$ecG1 zIt~yF0aOba=fAzznuP8Mnxz5kB_ZS0|4jeF-rZ@x26G4<9e_OqXqpINzQmUXNJ(h; z)M8D9#N+~+B|>7$0h*-&VuNksT;a&!eJ8v0RH8AA(o@Gg8%>k07*qoM6N<$f=HN$7ytkO literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/mark.png b/src/Resources/edit/styledeepblue/mark.png new file mode 100755 index 0000000000000000000000000000000000000000..3bde27bcd2cc198748f81ba236f696d60a98b83a GIT binary patch literal 1106 zcmV-Y1g-mtP)Px(3`s;mR9HvNS6^sbWfcFNFI^EFvgM|A;KbzKs!)U}n@n`bhN2AC2SIcy!n%z; z=-ivq-kaG>a&L;8Fqu9~EmoXNkUh=62wTC2DKh8=dl^k`a1N}=jm0v$WzBcwi@D`C zxouo}Vdf>5FTZnszjMCx=Z0{bKXjY<@&6WZw~^_c=j->8#GRdHibU7dlIZ;nQwMH@ z`3TK`BEHGh_X*h9DRGnC6^0n86tbT-`wJDI8Rqw3JR1@Df*WRfq2k(K1^u=Nh^L14 z5YZzEVy9v>!`ubN2!JFQ=RDVWd|3gSZjJ%itw5^;_x>@JD=kO9COMRB zCs5PPVE~TuQLFFsMF;2cuVnr=SDz?MK|XVf#Z*jsV4s;w1fWnHi^9~j3x z*EtXtZ6Z0e)lW4T`#snB(8sMIwHJP&O3*LA|nyt zr;iwCf<_c-GbZa* z4mt_QAE~}*XdQrG0X#~Cm&$qP%SZ*p4eLc>_MM&<5^tA^&g4Rs8|E9}`o>!g;FMQz zo{v_5Zhb@G8b}=V^4T+CZP?SFSuL+uO#s7Q!CAEER$K!KJ-tIsy`@HN@Vv(u>Z=j; zRHkz0BAo+^+AfuTkOf;{ev+B(iktg*IdT6v0}0*ymVxaIOjZicBh60Nqz-O~Q7sK% z(H#Sr2Eq37&aq~jyVhsotGcUR{ao^6UNN^Y&Rbtd8gpM^1b%7 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/needsaveall.png b/src/Resources/edit/styledeepblue/needsaveall.png new file mode 100755 index 0000000000000000000000000000000000000000..239d9fc88488b0d5594d22698b45d6ddfc26e3b5 GIT binary patch literal 591 zcmV-V0Px%2}wjjR9Hvtm$6S2K@`Tncb6TAA)&%(v2!-(?I~88*gyiYqOdX1Kf%@p8XFW9C`@QeI zrKS`Q7?{TiJOs>>F9n~#*@s6S0(eSOH%J5)Uq24^<2j5$h_SNLjp)6kIMI5l0KOD2 z0o-KpwWU!waqNJGp0|SBd^}6{KZS zNj{V418G{cwcLu*3%!gk5g@IbC&lUOgr@)lkpU}23lbNQU9)?}n5D?`lzIj}ltk4q8l4e6bh!b2q_(B_1mZ_tD}0s-fG@>k zFs^ukp6NYY4BZ28+f(g{q#v57^;#pc6Y`Nb%ylc~zD6_>U4r8)ck d?Io;W4*-!sMWJXPI4=MI002ovPDHLkV1n5Q1!VvL literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/needsavebar.png b/src/Resources/edit/styledeepblue/needsavebar.png index 8763fd6e3aab029a9712b8d550173686806569dd..678b4de3449c10fe6e4f5e648703f88bfe9d1e55 100755 GIT binary patch delta 424 zcmV;Z0ayO`0nP)EFnBk7*JAD9RiB;e|QEL+MC4d)q5Ns9;@RPn+sWjz0VYfjz1nA5id|XdMm?@wM z&~p|XlJW__3X|Na`{Rcg;!gmgV6VbHl7tomZ*nPUG`a|)bu$2s8km;5FRU9TI%VRk zx*s-;0g?qZtABf*9V{Wt7* zAn%nd4X6SrM1frIhm?vpD#CvU(5-mYzCuz^0hF$QNg)6eTgp}4CXrOO%$+YRRj5zb SH`jUq000005AW}1NZ@uFn<8DNkl-S5x_cM+#kEq!wE14fDwae z0uZN8g=hvqg+KwgO_?tpW}-PjGI0Q`ahwC90N6I7{!bXn&rlkk790OYCH-+O;jtc_~|VGwG3QY_zy7ZbEi)L0000< KMNUMnLSTZPTvR9k diff --git a/src/Resources/edit/styledeepblue/newfile.png b/src/Resources/edit/styledeepblue/newfile.png index 1688b1283d37e0a6cb875816d6e8b0d256ef7e08..f435214058cfd64f826a74c4934ee0ce3d8e4280 100755 GIT binary patch delta 448 zcmV;x0YCnv0_FpdFn2j7gZ8N7!?yx!{uS30p2cXFA33!thKsPZA=>pBpL0Dm03rb>`xCy+S61AsYU z*MS%b@DT>>aUcrJs}2D~TpqxJ4ull|2iP6}X8@K|5LN)9uvv2}jTsD_a{$X}5Y_-h zQn%8`^S*OUgq2YcRsrN4a?9QgIISi@*Z@%7-M08d(rJ54x)<@CRL zoz|=B*zq!*n12EV=HC&p2%`C@dvu=$VFkctJ{L(v=TtSW3?Ng$Sb<{MTjQKARb`f7 zZ|5kt_1-;v5;kLi0`v9>bYK7=>SH4cgNuIw$l#O#81()k;rncy&Lp5$Es0000;b>{hxT=a1X1&;HhA#}fWdRT8`*>M+tM4%{ZiY0)3U)hCL zWqm+^28i_I+E!Dz-$}sTO^hnD6!=L3#dd%GPzq6*9&qD?sCA#0)6vAeJrJWnNCOi< zlbnG0<{pc^U0`a&;jKCV0000Px#&PhZ;R9HvtmrD-9AQVOKBT5~Vfo{mUGV98!8`79M0TXB(V6e6^fc+$;Ljv!f zo`we{O#INq`Ir}gSZCE3M(U?L*qjdof@j9Slr98;N*J7jzz9WGy;{k4ZYRJ)sgn(~ zQ0`a{40FbH&iU~L?}p{8O+n05g8&H5uK;bClDj)_O908h@(i@M=I90n2Y_Z5uWrcn z{%?)QE4Vc|x)a8Pe|?saR-6Emfn*>VSf&B*gU3VD&s(uat>CG>*YePx$*-1n}R9Hu26j7*f_|L=?!oa`~z`(#D%|IXUoPmL19pk@$YZ!$UtEw3o84~_6 zGUUC#+qRt^_6sRihcYt$U&ZjBp@vadsp>uh17r8wd#%&xVL8kW5#*-rK)<6o_F`!8cEd)QV+I!)B&R*Fd71*Auwb^z{;)P>Gj)ht3V~1 zs4!R9v0a7xNG%P?E(zU3r<*bUXFM1cV$1=ublIA-KmIfRx8J!s^AstLAlm_Y)}7}= z{PhiLOWnctHFxi1ShMlsg-b`v4e8-Npl)oOHc z04V->c{p}jTPU)CEIfAV!H-X$zI&6J4#DIPHy%?{Cu2O7#SJTt&Y|7+gfYtyBM^mSg~^de+K6E zclTR%4TuA%Wht^bWaR>CI%L!Vun-uKu9=WZr6uD(#{Qn#()1-0{}};qDbMNtzrNG002ovPDHLkV1fZ=2VwvK literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/bincmp.png b/src/Resources/edit/styledeepblue/other/bincmp.png new file mode 100755 index 0000000000000000000000000000000000000000..1a80ae6a065c1e3691bd76d41a68234bda9a19da GIT binary patch literal 720 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 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/closefile.png b/src/Resources/edit/styledeepblue/other/closefile.png new file mode 100755 index 0000000000000000000000000000000000000000..6fd7e8a181d0e109e00706443eabe7b405eddf7d GIT binary patch literal 1286 zcmV+h1^N1kP)Px(z)3_wR9HvVS8Hq(RTTctw6XpHb{0sHNB8b(#3(^ciNwSQs6h#sV6-G4CMrgJ zMZgE0nf~bdqcaN$7!y+HG#Hx!+Nt{8ol(Hl1u$ONvwdJCfF)5927I;{K=%pheO)WACV-f* zIti2xB>05EUy(ukX$XC|py^Oy?e8;Fxe+P$xs^cI0=Tsl!{BsYW}XQH5emReTHC?2 zpcps+z*W+FH3|!+uvY+Z0JIeRiFc@MW?{A1ssK!3uK}>O7_eu^z>3p--mg)Lmwd*g z>`NPcXuxxd|FtXWt*gv23V=sv9qZ8-1yFe#d8v|_Ey1`l05M?+0__GMz}Tqz zy~m;yspn%R>=!|J6o6##+`P=lQcM|uxNzQNus&u-8klAs?|1*Kmpsb)goJa^F!8ql zCKG6LPP+Gv0uU36QKraznm6wjboS4Z5a3z2qCB27&;DW7S(A9bA z{!q|o$tfo6RRnC%zZ+=yvg6rxy_LH&h5a6Y#Q+W)L&oeAhq?}HpYc;WrudD%KJQZi zY*W&^qcV0va?SK%Zun(ngIJxH-t%PuOksZrU=e_QN_sbhQELiYQ`rh&kCNV8?Pm&G z>qe`6zmndp8nJr;Tpt8^mH|`PKLVIpPx)r5eH?t_I{+zwbz3x%n(jVEQ)^zP^ECii z06YK(l=O6~%35%gfaZDtbkMjK>lVYH9=-WuG3EQb_~bz5vs$7wlg=_Qzs0~{UV4)% zTfpaX_Tx#bjky29a=)cdg&~M1tS6aheRT~ao%f0P zPJp&5>FT3a)ndZgMBw{DI0*8uD>$+7B^Wap^hRE~%fm(J^Z?w(L?7g{?pb;7e zBhczV)W<~F)xbk4Q87to}M&JjmwyEGl1JlYYg6ymzgKRfY<#lFopdvKq~>B zUXkP&fRdP|0hn06PQ3tkE9t#li?zA{bnv(q%OnGj6G-n)&+}TgkHNdx#|tM1GOAw7 wA^`{{iHUT~pueuE_HF3%h2PYA4^#v54-F>!Fn&lF=l}o!07*qoM6N<$f{oo^H2?qr literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/goto1.png b/src/Resources/edit/styledeepblue/other/goto1.png new file mode 100755 index 0000000000000000000000000000000000000000..c7e4bd522fda5b65735c4f82f7696262735d675f GIT binary patch literal 425 zcmV;a0apHrP)Px$V@X6oR9Hvt)-h7TKoo%C_ZSLG2RJ~?I2LN}*x@DUZ9M@=BNirHz@AzT0hMEA zr-g$t2S_rG2go{$B$#A@-Iruz0Syh=|Jxy<%32G_l-IMGJwZ1ZawlaYsCX9f&^H{+1c;R@s)~D1{CAz6HP)W0rGJM zFk0Qo%Wuj`NCQOi$aC&^wqx42xWcF+qyXFE$sa&P>;%Zf%OJJ_RN_>`MgS#FK?nh5 z;;M)Opo+K(A_J&0E{jM3b;M;5e@;Z!3=o$`GQPtln+)|Wm%lE*PlVq6dHzK7001|2 z#04uc2|ee!a3JBQqA!2!S2b(VI6c!k2|V{beTCH-lNo#GRxC3}ncwUIjjzBDAu#YE Tk~UNy00000NkvXXu0mjfZSJkU literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/ic_save_all.png b/src/Resources/edit/styledeepblue/other/ic_save_all.png new file mode 100755 index 0000000000000000000000000000000000000000..121da4287aa534ecc7ba4be96d1b9590694ab061 GIT binary patch literal 655 zcmV;A0&x9_P)Px%Nl8ROR9Hvtm%WSBKp4iKH*O~Dnk*tLVryYxB?t;4y4PqUSh=?Esl`HbNWHUN6P-Wg{;zuy?!L?5Pc{JQ$x8h}w!(gyzru%fUj^{XN*D&hdj;S& z|3%5x`ir7wtgJvFysuz<(Gy8qM5qpniN1w0x@${;QWea1S%P5f>O2D9+n4giLPOHBz;VCRy=()Z p)4}e~DB9I+{d+&BHg;-a<2TvZuRm-qSg8O2002ovPDHLkV1m}kDd+$I literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/icon_save.png b/src/Resources/edit/styledeepblue/other/icon_save.png new file mode 100755 index 0000000000000000000000000000000000000000..4d9ed5a90ac42eae57ba38c54ee08950f34c3324 GIT binary patch literal 427 zcmV;c0aX5pP)Px$Wl2OqR9HvtmoZMnFc3xmtca~h3Efg4PC&r{sFsor3N8VHE3jN)5nO@-I!dvPDw4uxH+U+mmlX&mZ-iAL|J)2BJ)eLjb#;6nYJ{ zep~=)HC|1Dcq81$Xn6-<+f#BI<{it?N%ECFm*Z9e!dQqmFugGGJk|Ot7Lpk}HDec` zNQg@UO%tuC7&A>kyq9Rb10b`p{s3%BdCrU(GtSan-I_^008E@Hkf%hrA;QI{QrC?D zv5@xwj#vjX6NPGdbG9*ow%o{)(O9r53N__ydHl@WMt7ltY6x{2>#E0ZAG1l{K=u$z~x!;mC Vm@qpuo-hCa002ovPDHLkV1mD>uAu+` literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/needsaveallbar.png b/src/Resources/edit/styledeepblue/other/needsaveallbar.png new file mode 100755 index 0000000000000000000000000000000000000000..5b0bcb37b9eec49a8f74bab184bc02264e141629 GIT binary patch literal 358 zcmV-s0h#`ZP)Px$AW1|)R9HvtmQ4yniz)XfP7Uc@m0m#8b2mptOviVyTy}+&jIK&-D@_RmzHwE~Z z@<0VZ({48cH0}1v0Q}pifMhd@lIq;<1wiL^ZvZN{dj-gwskX0j7swB6O{w#Sc+&h2 zz-c&G*!+Yh>20T*)Y=0!&CAx-_CN>FDd0*0Rh_Rq;4*lKCt(=?0pc-bn~y})6o4tp z6@jD!_!$N2x?g_3vIiW7(t<&ByJ|3FEO)JlT(5P2Cwc=(FjHl1MgRZ+07*qoM6N<$ Ef+ekyEC2ui literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/needsaveallbar2.png b/src/Resources/edit/styledeepblue/other/needsaveallbar2.png new file mode 100755 index 0000000000000000000000000000000000000000..5b0bcb37b9eec49a8f74bab184bc02264e141629 GIT binary patch literal 358 zcmV-s0h#`ZP)Px$AW1|)R9HvtmQ4yniz)XfP7Uc@m0m#8b2mptOviVyTy}+&jIK&-D@_RmzHwE~Z z@<0VZ({48cH0}1v0Q}pifMhd@lIq;<1wiL^ZvZN{dj-gwskX0j7swB6O{w#Sc+&h2 zz-c&G*!+Yh>20T*)Y=0!&CAx-_CN>FDd0*0Rh_Rq;4*lKCt(=?0pc-bn~y})6o4tp z6@jD!_!$N2x?g_3vIiW7(t<&ByJ|3FEO)JlT(5P2Cwc=(FjHl1MgRZ+07*qoM6N<$ Ef+ekyEC2ui literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/needsaveallbar3.png b/src/Resources/edit/styledeepblue/other/needsaveallbar3.png new file mode 100755 index 0000000000000000000000000000000000000000..5db4c7d52f54d7a69e28519829b3c93f28b23885 GIT binary patch literal 658 zcmV;D0&V??P)Px%Oi4sRR9Hvtm%ne*KorNn@339LfLJO(Y79c9Buq#kkPw1&fdz?)42T&d7#SHT z8-D{kOEb`cfvrVi1TmEwBBbE(L(mlvy(ah2xpg=vw#9`@%7CZXclYjd@5jAw2s`}H z4)2d4fYrnP3DMubXRQGWdNdzzYLvl`2W&H6sT+Kg8xA(jC&SgCa@ zBSK6AI0E1S04s-h{zD1{SKZ%qD9XFaZn4VtGFW zh>UOPZviybR!9mV#tNVTTVZg#3}Wm6`t)TG69F(Gn0dY0*_=;9H!%RcVUknKbr%3H z0Guop$+NPIt@y3(Eac2Nlmy$90KY%k2L}9SV;PV99 zpBD}We<9Fw&zHAm-{EUI#|ePGX15JC30Tbsz*ztn8F=-*E6<(!gda}IFbabu09XE` zWvBYW>=}RUfhY_Vd>yW$F$=UCzXHk^s4Px1or}?tvlzU3Pj*%XVE>N~vf4 ze!eB;GfBwIiBuCpT+r=z@IAL3=arLIGCjs)5avd0Ktt;Y*Q@X4qai_3v_WSEyT8FZ s;{?F-+O_u2wrT6%`*Z5#q!vbg0kt~EKPk8REdT%j07*qoM6N<$f;{OXivR!s literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/needsavebar.png b/src/Resources/edit/styledeepblue/other/needsavebar.png new file mode 100755 index 0000000000000000000000000000000000000000..8763fd6e3aab029a9712b8d550173686806569dd GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}n><|{Ln7SY zPP67~P~dSmeaLV|=e^_3uPS|f?pUyOCP_pXEYoeWxYBuKS*^_}cgN@crR(^a3XC^M z%4+GJPMSM^LyRtCQm)7&!2?$DcjR|pJj`jp-XPeV!6dNUuQh|sq1AzLhwn^%*|bHL z4n~CxYYOKuFJic1w&M0?$jm%0pFd14}e@Eg1;UhWTcJ%gvKpUXO@geCy;l3FYP literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/needsavebar2.png b/src/Resources/edit/styledeepblue/other/needsavebar2.png new file mode 100755 index 0000000000000000000000000000000000000000..708c2749b2ef79f256b2fae1af41e6730387ea61 GIT binary patch literal 283 zcmV+$0p$LPP)Px#)k#D_R9Hvtm%k3eAP|R-i+0ypS?%O2Sf5ONvg%WaEAG0}1WX4E5{v=tpQP8V z4R^nfFX@#s82DlX=fk)F#Cl%$VWhk_dz)iXqmW00>?@0AQg&Ew>V$1V9F+XTX0odpFQI zfY$mFGYt`O_qRb56YQ_eo`gB!er?hyCIB)(2FSoP4a9zUVl4eU6~{D7UHkP|p4u>{ hZe0I{IXg+MeF2o*a4^}5gueg)002ovPDHLkV1hPx$bV)=(R9Hvtm%&QIKoExiN$pC}Yel3YYT%2+Iv#4Z6F zCKO`ec{GrBn|*wS^Zircr8>7wY+VCbF;P5_qsKHpSnvEi1oKV+_!X4CEYSt?BM~)g zo;+(gf(dA-brPVqBTgA;xSpiHHFF(ATMJ`ZvAY=PToVAV&iwHhd``?qHGg=ef=mFY zJZ-yp$V8VG=w!|NzK8^9RmBY$dj%<%R^QQ20-(B7@mi^%0_ywQGRh+%K0vs2J90l7 zz%Jf{sIFww0dW-w7Yx7aX29HZ{ozgykSkzZf$)ql{u3q{LONCtqTq>|>J&^BIoD6c6uJGbIPe704CHxB?M|#MB&!Wk{kdnJIu+mMqGYngEDxN>#B`ZMp6?)r*M< k$&=*B=G`z!2eZch0?1XdFyZArQUCw|07*qoM6N<$f={%&9smFU literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/newfile.png b/src/Resources/edit/styledeepblue/other/newfile.png new file mode 100755 index 0000000000000000000000000000000000000000..1688b1283d37e0a6cb875816d6e8b0d256ef7e08 GIT binary patch literal 292 zcmV+<0o(qGP)Px#-bqA3R9HvtS5XeaAPjA<;5>ltBh%?0n{U`29qTWSyC7a8p~%X zuaCDrU@-A#-tvlRGA0>yTJ{!j{0nI3TCgs7jF)6vAeJrJWnNCOia&;jKCV0000Px$=}AOER9Hvtm(NQZK@`WoZ}3=)B&p}Pc&gCWYiU9Mh+d0edg{gY(j9Nc!lejVoqlvqTQpui{ef!>g<~#G99|Y^k%~e(f zi4_Jv1u$*LQoOgA@gZ)?{p)fm2^NawB^Kf!MMKx8FujhN!QNFrT>|92>Nfz-FMj;O zKr0Ij0re!G8E@jI+;P>j0oni_5NJ14K`Be)CO0?dzanBwetH|J;B$Xn8-PuafqJau zdR71z1OxA5CAaL_V+C+4fpVne#{^>R0B$9?7OTdFiQNi-10s%;%-L)0kd|PB4KOu>oAjcqyUeK)n{7ZyJ=WxES|RHk3kS41+Z66(t3Fq6(#_g6v)k2 z9*e&`YmalXd6^-wzw0SFiH{q<`{zVzfHXU$YhL`n07gnWfH*8sF5B_H;j2@9To$lwvHOlg_%onv$5L) x&^b1DSGR2dPs}}Wkfb+^{{irmwD#@u<3FeqxG;ZyBvJqX002ovPDHLkV1hs9_SXOa literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/newfile3.png b/src/Resources/edit/styledeepblue/other/newfile3.png new file mode 100755 index 0000000000000000000000000000000000000000..9d021048aa6562666c0b63ca7d4dea9f227c46f3 GIT binary patch literal 444 zcmV;t0YmPx$c1c7*R9HvtmoZMmKoCXe!wqa7052TGIRynYG&D3w2o$d+AO#MBf`*2MhK4Ip z;Y&~wa)2a9@Srs~SYhpWvvv@Yx1RAl|NS##gZ}uSPJPc0pBdP#6Z;c`H%|FvHjZDa z@|FU)LOv1EzFG0FXn@Wp@A2)*0IrB0iTFT0fQc^aLV!6SAW%88Q9M`)!13h+K!WkSLKv(>KPePqk2F4~OtGNOq>J#zMq>wiDd+8VhWczz_V~ mB?C~uXN6O_4Q-3sPx$CP_p=R9HvtmOT=JFc5_|cmwnR4r8UQ2k;c0z(XjFScsm*Q`lKqV&yO%KsW+% zQUpVWuw?Q>0~Nz0yWhTjAxmK3hYXw_P=GLsj|3nw2Bq+z6S^zkmzNj|1(-%LHBMd! zAQ=s+tq9Q@pvY5ntqL?;9G0XCZUA%z(1bvPas^BP7?=d{Eb{Z3efI|Nhaeey=LLBM zV2Nc#YXH}7=l)OvxORJQ0NxuFkZeY=qAs_40qAnOHvpB}y#lnk-5P-EZ`b7waSwV5 zFcW$Mn9cVaolEHZx!$`f)oy`K^0u|AJEV6DMu1TPTMA&uw!V&SO+NB*YXhJFNtvgo z#zf=_02}3;D=-3RD`4t=d4F#JYeT6(Ai7;u7&?~QRz!|BIKU5#*;X*iOy!yY0000< KMNUMnLSTYz_lyt# literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/noneedsaveallbar1.png b/src/Resources/edit/styledeepblue/other/noneedsaveallbar1.png new file mode 100755 index 0000000000000000000000000000000000000000..1ab59813f5777bdc382c053158d314ac07c64ac1 GIT binary patch literal 589 zcmV-T0Px%2T4RhR9Hvtm$6S2K@`Tnx2Pn>S28qDp>!-n9xh;k+9bzbG$wu^ETAXM-QvlO; z-T^!nhJ62^ocw;W6lfN6_5gBQ{Odjgb3oC(9=WdIvstf{7)D-^)IS$Pk}cK{zi z^jdlHVqpN+EN8ewycaUvJ80InOj`s*m<>GnwtLda?Gu=maA44+@@kKc8%o6m=z;R( zcp(5~TYLp!4$PmT0|`{8@WN=&THKDhTrL?XTVk3FyaZz>u52dWY1JP(@kRW1OgRapYj zUFFNkBr7i4&SN5;QJ#F5_Cpi3UTs8rLQaUYqQ%_Pi29-zPx$CP_p=R9HvtmOT=JFc5_|cmwnR4r8UQ2k;c0z(XjFScsm*Q`lKqV&yO%KsW+% zQUpVWuw?Q>0~Nz0yWhTjAxmK3hYXw_P=GLsj|3nw2Bq+z6S^zkmzNj|1(-%LHBMd! zAQ=s+tq9Q@pvY5ntqL?;9G0XCZUA%z(1bvPas^BP7?=d{Eb{Z3efI|Nhaeey=LLBM zV2Nc#YXH}7=l)OvxORJQ0NxuFkZeY=qAs_40qAnOHvpB}y#lnk-5P-EZ`b7waSwV5 zFcW$Mn9cVaolEHZx!$`f)oy`K^0u|AJEV6DMu1TPTMA&uw!V&SO+NB*YXhJFNtvgo z#zf=_02}3;D=-3RD`4t=d4F#JYeT6(Ai7;u7&?~QRz!|BIKU5#*;X*iOy!yY0000< KMNUMnLSTYz_lyt# literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/noneedsaveallbar4.png b/src/Resources/edit/styledeepblue/other/noneedsaveallbar4.png new file mode 100755 index 0000000000000000000000000000000000000000..909d988c92c923a30f1bf0de8869d984c8d6ffd9 GIT binary patch literal 672 zcmV;R0$=@!P)Px%T1iAfR9Hvtm%ob>K@`WoZ*mxHMDha_4$LnstOP+pM01Tcf|V)6T0twZF`L2_ zyd-~v{WZD5E3UB136_f0S%_KFcyiueuo4e-p3EK-W;eTwn{4hZ+-i2_&704>eZQ7) z$PXRz`IrDGmaKCOd3+i$ci7!Xy3YrYFE{%jswY*V<%zKB4%&?*`^Nx<(&IV{(PyTH z;NLq*lt{`HiMRrwn-pRKfTUcS#*_*;S8m-R;$9MnSb$v3K1On{1;&LW7V$nKv*!<- z!GqDq&iknS@c#>mgS$}x0^+UfJX;U0rv{KHDH+25 z0aCL-p=$M*aRtDMh|jSN;PnC>xxYQIziOFO092Y)3RT6EjLk3r0$&2?8kpZ@_p+C_ zw(RezgkipFt$}g#Z%X#Kzc6aX%ofO3tR*q0kh_-Tc>IPPhr`5#NZn~lO7~MXzn&TqPbfj z3P6S3ep@B_sudGbzS6R4F6e~B?6qoAh^wmn2H!)=aacI*cQW(>z?o?aP;eiC?zqnK z%0xpFb-?1{!=pbIvKP|;_yr8V4ZA~A*T463n#N6&==cL+Ajm&mqreIP0000Cu4i@BZ9nPth4VrbZR;AO-1@3&6)$vbIH zjq3S7Bh1j?&vmsY9J4GKo>V8vIvTSJyyj@)Q!ou&$+X zoN_yI>abJM6~@Ji4n-UjX7OGWRz2giN%-M{LWY&4%)9zE`5FV+d)f|Ua9pru=~$cQ z8R}jV=(FnJkyYw17?OAwO|#lG``%){1z{Wv4E(nI2JQRAT7iCG@O1TaS?83{1OV5! BS`q*N literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/noneedsavebar1.png b/src/Resources/edit/styledeepblue/other/noneedsavebar1.png new file mode 100755 index 0000000000000000000000000000000000000000..0a04c44c6a24558a72eab34f97f859cbe6b3acd0 GIT binary patch literal 458 zcmV;*0X6=KP)Px$gh@m}R9Hvtm%mHIFcinXj~he;Y0u52!Bxb`#YqPjCs*-55C^@f0S7_2xQK#- z|G}*{IonMTM{#m!ac~iP^MOVp=BOpDscCg-$B>uz>G%D}3;B#+16V_IUzEmTz36!I z8JErZo}9d!#^TcCX9AGMg7gLrm0h!e%-hW_ge#qQx>dFvN%JpB|2cn-6Tnyapd~he zcLUy&gi}b|r-@jq8{jj1TB#!Ce8z_Wwj^*cip6;r!c_q)0FQ-?Kz9J(@Hm*zlLZa?4`AnZxVvr&A~a|XyK)KAspv3-v) z9RXN|q@6VB4@woVDLvDkvhwuaRpo)xY(*z>@tA5_*S;j2e=Z7`RC$g%m4rY07*qoM6N<$f@0dr ATmS$7 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/noneedsavebar2.png b/src/Resources/edit/styledeepblue/other/noneedsavebar2.png new file mode 100755 index 0000000000000000000000000000000000000000..619faf03e4bb616ca49734aa9b54aad413d8a559 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}S3O-ELn7Rh zQzQ}&SRD9f%%jK7p&j;axqHW+z4za7Y-U$wX_>m}-~aT442Lon<&OXV|1)lqIdy= fj;KF*#mbQQV5PyF=;cR%9%S%z^>bP0l+XkKALDmx literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/rename.png b/src/Resources/edit/styledeepblue/other/rename.png new file mode 100755 index 0000000000000000000000000000000000000000..daf396d7393f5c09caacfd372da4cf5c79c314c9 GIT binary patch literal 676 zcmV;V0$crwP)Px%UP(kjR9HvtmQQHYP#njClvIfiK~cr*<~@gQvdNn!(C+w`SPOE1eMfxP!VpZ@-( zgb80XVLtW+Miv3hupbfV0)PVq{@_>Lg*53MiGVPz2Vh!i2NGe!ueb%7L}meD*cJdc z1Tj+tB;xY_yIdlZfH1B5V0se$O2)N%&3zp{YPyq8D>1Y{&TtkO{45SJ10R*?o%8R)egznq{@oEeYYL7R<=bUM;%OrN2Ge;WVi;X?S zDy!1=_rkDl1N6KT9TiWa;Fe-S0fb$CA8};gp3KW~;2z%cm6o&l?z^QuGJrpk#hJB70r$Ka_ zfwTQ)yR2xXMJROJ2cg1XzXd(kwJF74t+XOtT_6nm8-Tgi0Y3oR0(c8d9xJ<^3V1&& z%U)W5Y+aYY;n~GmRhd4@in<+m#b2@mvc8vo4YLAd`}YMV9)W)~;#n{Z(dktH0000< KMNUMnLSTZGYavAd literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/rename1.png b/src/Resources/edit/styledeepblue/other/rename1.png new file mode 100755 index 0000000000000000000000000000000000000000..cfe76d74af797f4a7d29a0838618b79eb5c45d54 GIT binary patch literal 1116 zcmV-i1f%Px(7D+@wR9Hu?mtANaRTRhnXSPj56qB74!B~=+Z7YHgDkyBkAcDcZSQGv^As%`XXq_-h_ULv@;W^z8IQ&WM*f# zGigF+b~BH6=luV_bM85J?h=}K)PlK{7|%$?1rR2EVSmzuOc+901M|B11_7l+9N`-Y zetWj+oXM(}31HQlkq4wyP6N1gaU&Y@MEUhB5Sak-x_Oj@9Kee8E~x%s~UL2H`KJ zwtM}l($!@F=q#A`DU2Zd+W=f6P|+3TUlQ3DjDuhr%3A(ZW7wrzA2Im(P@L!;zgm7R zk-cUeSBpjRy)PitI%Z&85W-qI~smAMH5?yr?eZgxfGXtMFFGMLRM`(wVaH)SU68yju_KpQzKM2s*(b`2;t`+^Mv5U(B&{;4Z zQJ8|SUGVq>F1o@ww;=oA#OteNPs6?_Cnh5+NTLZ<-TVr`)1f$Fk6*R-#s%}bv712e zMr)IvXzPnlMppC07DVUy`I-p-PAlh&?w@1-)I~cqt0za{dEXrd5;nP2`&cuk@t8&h z^4jPCk&I3~Hay`3pV!8tYQ}yLy%a4R_k=yzs(G>ky0MKw;oXjaEv~SS)D2c?R=*@} zOoGDPe`VS^wX6WDW?CTZ3q&R8(OFRro3W#})RD{0eFnx;p&{`hujptabt5SAet_<-Inm{uLVcH~_ElSUjs&g)XyyqJHU#UQu&GNo#~Iia zGx~!hzqs&FY8512fwKS}sto}qKqxlEiN9cKA4+@6$pRItfN=>#cij+7^s-kiAIKt_ z<=uD%I3CErZwg_zTeW}4BAE5v>*s)Oyh5P&qAmFRzZ}2%Z-%Q?R^$5n$)k9k)lGBr zYu%a3k4p)57R>d;c(_@^T7q)IpRR=W$W;Fe;%2IDP6Oy|2>_V!gsn9T@F{?;Edm_& iguSgPfEJB!2>&14`gbrd0KTID0000Px&N=ZaPR9HvNl}&6+Q547j=Z&Og!F$sLX;kl2EC>rh!$N!ov9T1f@v)E~k&u@6 zhQvr}?n@OLX@rQ6jfF&f)S_ik34-`oVI$^FQwwSOZYvr>`;NTPk?EM}yfTBEyv@7k zp7Xo^^Kl9Pc+o$OkD>rpeS9y7_WDo5MWx} zkvT?W7Z5pdB{a%aT>EMZ>;Xr@+jLpGQx zoGtC^DGCr3@%;=w1)wW;Dux01 zQLF`5Hxo_|q~xvaZczZU-d;pRj{sByyj3eVP$bkE1?Xn*vETr)Q48YP!J`I1O&S_p z*w@$oDYG}8N2}g$0nuRqPqdQDLPZCV1<*>a&OKuZCm8cl2Cp7aZf4w%3t)JQFiikx9!P39n@gNdIJC{bv17b-#m zUGm`{%U3P@AQFjc6JHJyXcvImF}G&4>9lOl{>v{ygJ=me)&W=_ytKKU5FQ{WqA8qx z1T+Dt1EUv29q{>%?vWjVS+OECg?%(o4M3|_@=(bl9JfP+(@w-Uyp-Ejss{2pAu}Vi zl9|i@mI9^PF@yrowUSFJ4#42iUN>q1UJM}kK*XE9lzXkx0J%ba2JjA`hraKh8|-nP mPpAz`N&YAM6{&%V0DT9{pk6TI)H#{}0000hsR`{ zRgn%iQ{U%(-$L|E8RBO!f8^NkCc3Ep%DJr^77PyVjw={`+$>hS!mvX?rD2QaelF{r5}E+{Q(g4{ literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/savebar2.png b/src/Resources/edit/styledeepblue/other/savebar2.png new file mode 100755 index 0000000000000000000000000000000000000000..0598ad7672e760b47588bdccf5a8056bc9309294 GIT binary patch literal 588 zcmV-S0<-;zP)Px%21!IgR9Hvtm$6UOa1_VC-*aQ}dU3&p!T_5IiHnn(Xf!4yFhEF1NN|9GK_}De zA}npAgH9%zkdQz^0vmw=7=VGzL>E^2W6?o#t$%>`%XSN)j$HdZ?aKhL+}}Zae!Nq@}`=ttpOD6@^b=j09lAs@S*;!9+61- zf266|hWfo_yPJSanm{xF>dy4n#ws|vEI=y|T>~(M=qi8-L?(b`JM#eF3pg4p@3Tqn zvuyHeA`{^Hkn^BWvjj=ib+DKx6_m3UP(tQvgaJtEK?43YPz6dl8A0PUHgA zb6EBPnE*Iq1VFxvLT@oU9pzmBPqf}t!eFZ@fRWP{jEc5%kKmy|mUN_g09QK#jeL0k z?zE8R-=@R~!R1Qm9V8EpYv9I!+y9gD5x`AdFzo;|+WVJl!rO_C7z0?gI}OMN3K)yd z{GE0HtN~{Rgqxte zh{E7?#|M+Y6*KAm0FDU^>vN{IA^5nWyuI#>W=(WEt&E)?PIH~}M}a&|cgL2;u6CMI a-kM)pGde#ee@D*%0000Px%h)G02R9Hvtmd|SwK@`WoZ_{jwc=Kenn~Iv%68Kn4Y%#Wh6p5b!pm zX!baPO0dGj6^H@b*K zLiCk^a{j#2 zj1&Je6Kis+m<<@ zfK>)2V*-D4gglZ)JhlWW#6jR^wy0hh7(j&hF94ZH5$0)UxB4;-L}&>j#P^u6KwJlC zd;PQst~)|r=?frCoPci%bbY)rT4AprUo@+zaJ=GeCxvLsK={r1i-NH*A-t!pL8BlD z=zR=JmiZ>o?G?ppeqy)wJnTjh@4(&xT+3u%h=32Ic)n1nzUY?D07S=wBd!#|-?0y{ zX&8L1P_Dj?3!uL@AUghZNql1$QIa72*!&0h4XzdOA;?)h1^@s607*qoM6N<$fPx%FG)l}R9HvtmoaG6P#DMm-x1q_C{4Om@SfsS1s6rf>r|lybx?3~a8RM>Aedw^ zg1rO>X-lQx(#^r5C`E)W6(;c3}CEbhv(n$lTbZSnZC`BdR z(aZqGVQZwe?tbnBLKoIbZU9|apOkb@bOpc=_B4ZU5oo3+tGDw)D2;P|E?zXRxW5b&YKx~H;2WCqZMISNNb5h(t!CIs6%d_N ze)VHv0ERHnG3X5wJtyX&sF#?(645mfPb%M=i+Kx4AQacj)+`8<0OD<{0JNxN^>TZf zg#m0qtb%ZC%TOuw4?{Y?{~N%Nu+9X)`)IF;$7;T}yuFqRO<*$x`vEA>l=RF@$8jfJ zkfmb^Paq8@6`-w()3g%rCw&d=I0vGsDC`9WU(M|tm%nrqU$pmM&`aPi4nPtxE!3?5 P00000NkvXXu0mjfvyKx1 literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/保存 (6).png b/src/Resources/edit/styledeepblue/other/保存 (6).png new file mode 100755 index 0000000000000000000000000000000000000000..258a51133698f13f2da396ee9db2a8b9dad0518a GIT binary patch literal 385 zcmV-{0e=38P)Px$J4r-AR9Hu2WEfz;IKcKZ3@!%X`{pkDp z^|UW!hXA=2<4KgH)diyt7!85Z5E!u`0P;ArSx&7mU@&H2VBjU9RXo5Q6RP=_1cL@w f-;e}{Q%xxVvp(Z6h&0(}00000NkvXXu0mjf##x>! literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/保存.png b/src/Resources/edit/styledeepblue/other/保存.png new file mode 100755 index 0000000000000000000000000000000000000000..2914e768d1f587e07e8f743aa07b07c278949e93 GIT binary patch literal 382 zcmV-^0fGLBP)Px$I7vi7R9Hvt)~!wiF%*X3XYYUnhr$zr!k|E4P*}np5DaJ>nm~f!4zR0MvyOxy zkvIhRfPs|EkYSkav^xx}n5w49>3RG0{EcvjZT+n&c4F6$@ZO*AubYo>)8wZL5ccIN zp{i#ooOQcRJQRj2c&%U36(D?HSf#{G;HS926V`tlpzbiH+!*^f!BrKas{*M2t9ZmR zws2oU{1rg(cYs?wV-0WNuq!}H3{(}r#xX7tVxu!aJ*L{SX9=M$Y~U~`(xyO4>c!GK zX1j+8Ua%Vj=u#bLR=$Gj9A_BE0Ooypj@{>X4FH1zg93fjfmkZm>%+`6>}yK;G4!;R z;@pWS_WGtCk)*%?uuux*bjZetFM7|n$vYPx$x=BPqR9Hvtmp^RNP!NZ|i<2F(wW_Kj!GKsGaS&`ls??zqD`a3rs0-@eWXRsF zQ>8L=V9LbOrQHy1UewMkkq|p8BF~3j9Or+cICa`ewHM3wdw1Xay}Rc-;g&Dy`Om%Z z2{NC7mEJq$0m8<$7?l>n9|S|&?2g(B0doFJ0{sCTqWY^hNW?k+0GurdQ38%oZ6Wdu zSjU=IgSJ9|On$F(51Q2>M_Ipw>M7Rrm5M{+6%>&-v>V|9MxTLX0ldO?$B{MPCOUKg zXc^l)j@FSZK-RCJ>SN8;bb!v6FIeNYHem(k0m$%?fCH?31edLwSHQ)Di>q#IBn#l> z--a>JtWVv7r2>p*$h0hot$=DJPWBC)BbAA17!x2oBNn|xs$=KC+yIL@oi;Dpk`y3S zAXOk$AXVTFC{QOORsJ>hXV(Mw=U?Cz-hqC?2Jc;+mh{3q_6AG*fkLHQ@4tSC_xCHv z=2DzTMqOd!dXI5{XvFg;c-{`kQ-oTgFi~@oD;5cYb8LGJu6|GGc=C_&2?bq$yFmmZ%J_4V3S+&B<_Ql(dr=_WlFPx$oJmAMR9HvtmoZMmKoCX$q@_tBk&=SsfM0(z>si!TcTTUJUEO42>Tttx+fiDX{m46n_R&VK*N(xBMHFj zhe-gne@)mA06H_BMGAzy0{FWpph^_LwlCdtohqp}?Y)5b-j}XS#^>@tRaj>P>H{?L z;Qow2Ag*76b8}X}{!umj7h!sHA35?Z1LIK(zZ_Z2JBhFeEd6utv(rLw?B;_0ZdE)sJR0`8_cKPt9uy(2uCxjbiwLs4FgSl6A+DPx(D@jB_R9HvFmR*P&RTRhn=SE!Is!d|CWl=LhVev(L(JF!;D1w5Tw7aDg6)SyF zAF5#6nJr~gZ8FnssaV8^7O@H<3RTP22fHn{h+V(hhpMeFyEDn|KE$#!iFE01wxIxVNggJUBc2Eg);>?8 zwvG3zrNW7&d^-XpB;_XntGgHWdoZxMVyOFr;w%Y}kdzq!eg9Xy$zOZmdktRn&O`WSl<#PY%z6pZy>-DtDFbh16FbOw-F#t**0gZCCzGx%bx)B zvTy4M({`Qj^K5(>=uq|l5Yd3C7sfh3j9(?n&gq4+Ym<@>l6zqV98U0h)6l+fW?BHr zySLxTb-UD|&@M7CSTWR70T5>?CNkzke#%{WTKNEsHcX`E5-H_b5Zp9( z7&F8eG>htZ3xa9Dwqu#<)UJu0&HfrlD{nJnPs9L!l8tp{Nj>k`cXdw?E?K(jK5DHRh^Lj8i1BFz0H1g=wSBEw z%pVRY%ub;uEJM9#Q3m9vnd!R_0H1h58u}98wIDlV>AOdxL-1+K&>ryt^!4R>FW-2@ zy}gzgLE?i=+j$~>!PK>5Q6Lzcs~Fl&AAs|bl$65^tO)?>o*mW`#g7B!N zt3R{@q~%S_bZ`+s6miexBC*Jr#r)|G5IU_+9Wl=m2T6TnFZ?<9!V0gfu}t?dF}?OjXG}&@qo82kpP;hYjsCag%;a64T`AMUo~e&rh{TcXv>uh0mA_9{|^u& zR&URag)P|P7@+`-O3uXvt_%abfkC&2gU}J!yvHi3KZe;x0$3O%F3CPON_chyB4Ynx+fL00000NkvXXu0mjf D)^rU- literal 0 HcmV?d00001 diff --git a/src/Resources/edit/styledeepblue/other/关闭 (5).png b/src/Resources/edit/styledeepblue/other/关闭 (5).png new file mode 100755 index 0000000000000000000000000000000000000000..ffa73c8280cf349c102883366038ed227635cbe7 GIT binary patch literal 868 zcmV-q1DpJbP)Px&9!W$&R9HvNmrZCBQ4q)flf)KLnruMg$!yw!2ek@{pchLO+X|u{+H((nfCzd} znuLN|DA^VY;=zL=vWh(&DeK`8a*m`gWRL=xMKY-*a_%_h4^i}67& zFZ1zxZ|2R+66(CD&i+vqK(JM5!fN&yGoJ#Xje&#u0SNdE#vBp7g0Ep_c~SZ9_F%36 z{NaHP53OAX&;_8u!FU$HbdJ4uSCT_-oIol9NX`9zUh|F;@kJ*?cKRYU`_HGZebHBfH%<3((%J z1ORwS6T@e$HcJ44a(s-zeP%(P0@EUZZV*}>z!n%hL7;X3`fp>|<%9_!AV>QMG-h!y zs|oc;VNa6dPXO*I6VVAxBzlXov5x=_8)b9sJ!yO$8vp@W2@o=$tVzdUB`t;rjYjMt z$mCp?56IEm1X3)plbTS^74{4OvGW8xwK>^>Ce;1beKSO0SjiIzq z()#`eKv0g|Vc>?Ft2KuMFkZWxP%&^JE!1Zw07;I%2k3bD1hYS-oqXjy0l*m5lIkrB zKupi_mdY9K4B_Z}-N8#usGVkjNbCm~I~|^w9<`EWb93#c=Ln?ILf!qJ0m$_ZLH(03 zo&Y%ZFPmVAx73R6?D5Va~zyqcK@u*d9- z9%v$QrIu1G$?^LDUv^cB^QAK!y$YgxW(9K_t*#kGp99owv{$wn72k5H5`YnfMWb&RRR6V>@1lP<)b{`R!bgs+JJ&|BP&Kt+c7B^iT5(|D0T~{9_e?y`IXm$x97(AF3!{bi!t^jl+`p5=k+C9Jt1|J0|1VSk9fRO??MW7Ek u;2qHTwlMK*8Gw_aTK{)_1GPGE()$BJBx^7bh%fK}0000J5Pf5Au*(6+QX(X70Nj8EYB&JY$SIN( ztf=7tP(#BFfD;f2Qj%~0HaEb7yvWgNWhXXR{N(M{9=-Sc?6GGE0J1{%0PGO3q5s<- z1O4f^9N6YuV;Ylyz5{Ov;6`Io*6HpN@zp%=*a8d}Gwo4cbbp@!Ui%3F0F5XwBpY&4 zYTG5`_2u*~WDAy8j<;O#EX3`Mvn?Q$C`6Qw)xwg1zvaNZd|tHww)71?1I%W(=m2lk0celdlbiK}gO3 O0000W delta 639 zcmV-_0)YLO1Ed9zFn1Y{&TtkO z{45SJ10R*?o%8R)egznq{@oEeYYL7R<=bUM; z%OrN2Ge;WVi+_zh#VV`P_V>cDZUgkZ6CSVWC85n(C#b2E0iI`t=L4_wbtr+H>D*%G z7fJA55;WDkhaGh-geP@GsuXCtb(4r*%HVAhWoG07`~h&VUpq<#glS&~V=XN_>VPQh z^jQXvW<|dm5W000L{V>tLnbb`etX(;o@o%}4CgX~-+zn~o)`g5w+lpAA2&QvK?JTNc!GfQ3g8>{>Wm5$o8t(3-y#%-{RzOS zdeuD?FL)G&eU2EXL3Esfv;AhftZ1c0D0JHgp~7Il1wGcaDaBu{v?5(yAPoB(fVtKI zKLFYScneG(E4!Wwct0!4URr=`U6;V&*~M8^nLf&jx*d4MU$O(TzL$OtvjSxM_XQ>% ZfqymPSuhOI=~Vy#002ovPDHLkV1mP^9A*Fj diff --git a/src/Resources/edit/styledeepblue/replace.png b/src/Resources/edit/styledeepblue/replace.png index db09ef076bc737f82e69bcf7a2f27ec352358c22..c20a556b6dcd708ee06dffcd2f26c18829e6cd2e 100755 GIT binary patch delta 668 zcmV;N0%QG<2fzi8FnV2r*_J0Vqtsqq5Yi7jdqp z07@irfrw@ac*?*o07J|?W)?EHy#NfUZ^~JR6C5*hnNRHlsEKz38V1og*y;o5GK1fn zGPCa=0loqlTz|8y$j{>SLGj+$iXWoB*5s=_A0e1jKwvPA|3n3|rKH%gil5qb)nh zBasi_`EzZT^o`Hd2k;g6{}kA+?)S>;52B7MuoVvN91bwejl3@a00009h26vzMPjihD4d(#AIRPR(Q2n#{OLVN|W zu@tfKv5+86q!fGJ~7E&AaEG^Sl4^aS8u;(Laulq5xKXd@qRi0O-+5Zhx#4XmJ4HyaC}l7;!zN zstT_YUn>Do5MWx}kvT?W7Z5pdB{a%aT> zEMZ>;Xr@+jLw`1yDV#0>8nu#UMFFPH+8>Qfs_qBST_DgZCfYWTN?s`^#F!LV!r2X= zy%+#Mx3x-csvto8KEO3v$p!gAqA}+lGuG0#kvi{vYj3$Aekw4v!Co2(dY-AtOD9j} z2QXvKCSu$K(LtR`o+vwj8FNk&*^0EVz%i%=*{Kv1M zaDu6~$mdAIV7etW(VK;}AMZ813SbLBQmbSqOi)EWioX7I7# z0I^XE;(yt}qXs}t8X8>K*Vq0jvp1ectKMz_(P02jw35q0MF)@t&`Pe(J!1(c81qpE zuO3itX55bpV2XrE`0@y#c?{f*3>!Q8dyl^#&9fL#t|~q+&|Lr^NKKzsa(c-WWDSA| zXfU5=P;lrafgDdIJ56D4H<%(`T3*P9$X8&rD1TQHQ4^S(wQ|pf1_%sm>JQFiikx9! zP39n@gNdIJC{bv17b-#mUGm`{%U3P@AQFjc6JHJyXcvImF}G&4>9lOl{>v{ygJ=me z)&W=_ytKKU5FQ{WqA8qx1T+Dt1EUv29q{>%?vWjVS+OECg?%(o4M3|_@=(bl9JfP+ z(`HV@H@uYFRjLN^Iw3P7w33<2|CR!!+A)Lz&$W_EDh|Nl(Ox%d0bUFs_&~&)y_9>c z(g3+aeFpFjpohNipBwCPpHHX_OG*AG`xU8yi2!{E%%EN{;?y~s00000NkvXXu0mjf DYcYxR diff --git a/src/Resources/edit/styledeepblue/sign.png b/src/Resources/edit/styledeepblue/sign.png new file mode 100755 index 0000000000000000000000000000000000000000..9e8affa66998cab12f8632916461b79f16a675d3 GIT binary patch literal 726 zcmV;{0xA88P)Px%kV!;AR9HvtmOp3{VHn1r_p1R19g@pp9W-~Mpi)pM2yTLdV5Ng`uyxSI$W_q>0; zkFdi(+F^bCI{->fUjpF<7$Qw5!HRf85XjS#|zA!&#FG_XW7q(X5)6`p*OcbQ((F z*WPyOQN3RJ=@-eU`Yi%Vam2f^%vf&K%fPbNQtYUi1f+xTjk0nl+V~4)<_JnU!dH@uyFbyVmp`>Doga*@H+cK_o z_k<9fm-awf)6WTp3$Z5=L`c_1ngT_eKLa=wFqB~-sEzUFd-JpGeCQaawZdruav|c? z8~{N~HLZmQGI96+fqOtvZ%zWjEyuwq$=nzQN-fL09W`FMh|)QILQtnCjzmbhW?SZk z2ywj-DM02>;V3z-3w&%~V!|i8YVMCCE-gW1@s27zwJqc9$N+-Hxed@*m5NJF905Hoe#zwn0PZ+M|HZ#Bbob${>c?ynm{hNn;p3QzEF zUn{BrC`c$$)Kz2d{|@V2^PW}w=Ow?Q6@J>lE8;WZ0Dp>}9|CxhdO<>_05}d# z=)}*Ak_AS<$E_GBl-`wcN(sHeWRcMbDqr0CRg*4Djsl<``H5V8=V}5@eIMIdesZW`Z{ zRJt%A_Qmq~F_@0#d;(yiw$}NpC=4RQK(Xwfg7GaSUxu#uR*7E5ni|;HDL^#Q`MrAp zo*w~tmR2xICO7Y1B>GUzQ$sTWm~(g3U=4qAUO`qH+cx$cMf9 zfpt*y{7V3DYOcr%2fazqrO)Ef?FQpFu{Q6`h)v*X?QoP1_ zEXBpL-+xXHk0txG+E_OW_AZ*X*w(}!O|-6Db-=Et-Plz;X{Kj>12R|gGb*99me+@tVahR-eomcVDo=( z@n}$#T-zB4tPL?&L1eb1t(Q^<)}3|?vk$m9+s0;7nizaN>^1JCIICk8QmvPkQc2OU d_gN+_{sYS+k+c!4JL3QV002ovPDHLkV1lD%U2p&Z delta 591 zcmV-V0fL=;#36}MaSz@p#^nN zaC2}_q39r(WHExh1P5tLrQp)d!J;Tdgf0~)2PY8`D&(~&E_&~7D0q0}lcWtC#WYQ> z@s`W>NcjJM`M>Y`UP9>dMP2qs51^O8jtLA3^WI(*X4m|(> diff --git a/src/Resources/img/aglin.png b/src/Resources/img/aglin.png new file mode 100755 index 0000000000000000000000000000000000000000..fd3b55e2fc5e56687789857adbb00ca30bebc9f4 GIT binary patch literal 309 zcmV-50m}Y~P)Px#?@2^KR9Hu2WEfz;IKcKZFcuXR{RcUsudffoF&;H*>lqms8qgj2|372cj@F>n z$l@N=>p~eB|F6PO%fQgEqb0ZzT^wdFP6v=;Im~cU9D&yXHFVP=6Gq4n)3IB~-h;ea~;lnnM zU^ETTI_?RUgaaN01MYwUkAeYrz<@^q-5o%$Ajf6TfcK68M%ht(iPx#<4Ht8R9HvtmAwuDQ4odCR62!C^p-;BT}alm>_(w+J%SfdQE0?F=yam6_5rL~ zvpcdvB0@4(B-6~TPv)F_^K%KxkCgpk0gQkVFakdj2wHK%gor>rFc%=&0zA*t>CE@A zc?D>8M(v_3*8sYoj2OJBm$gBbjjz%mUIBtI*?%*CF;FAKg&jl_NnvITFDJK< zXvG8?VZ6KdT=0mnJRe;okjg)!AWT?N@S!>6srxu5?={2()C1_ZKzj(Q-l?u(6+rzE vJttW06nm_pSSnsaaYav|1uz0ezzEy`DkNGVO1Fk?00000NkvXXu0mjf9a45D literal 0 HcmV?d00001 diff --git a/src/Resources/img/diff2.png b/src/Resources/img/diff2.png new file mode 100755 index 0000000000000000000000000000000000000000..cce09abb90d3694444652b4e33f13fef2733c147 GIT binary patch literal 402 zcmV;D0d4+?P))5jy%MywUH`dPk_UY|g6DoeFVtwoZ{=Wl$XeNxPIqKA(ZFwuz0srCs7DU$ordbfB z0VKrZjngbT{<^Bath-POKvD4+OuGjp;wb?C(cJ6|!+Zu%V>#ysj6OVk*yetp2fY+P zEi?lHPMjf_0a_T!f7Zq?`!oiIqfT(D2Otn%0&W5v+#9Fed&C#;sI?eOW6Yy2gI@ET z9A5^*okN%m90Q-;ENa@0+BO*HQ=lR4?0}ZI6M&|83ZO^`T?1#!z(xpjdq8;9wgpe# z1B&9}9?-Ns=}Ms<&<>pFheUd-Px)VM#Ao0I*iJXbM1@WlLIlBp2x?3KMS>y<3d)m$%EhRl z5#7#U#Kf5{3IQdNiv;jV1r;xW7(jS13L+RUU<9_OsJsw*W+6y4vYp?Y=}fonPTO7K zB=d02`7hu3??dRrYDuQ=ED%j3;2r?i1fP;{T73-ciZSm!lgoVFTd~v|!i3Q_n?Z{J z8rvIsfWIT~TY1s`ek1yZ0CdCr1iXMsi_c`+)mhEel4@%$u(q0j`vRh@6i#a`hME9$!;}ExzH;Uj zZZ5N=kvYrnlGiLhAwXW;kjyF#AMR`aYZ++=H@|yls zdm?PhXPsHqa(V#JQ8(`N#W$qW0?|4|}W-FSfj$DQK?!U3m#)+XU_S#s4G}{%9;*lRdga# zCf=I9kvuvYke>#4HM5o_&ASL-2$)ph_E+~F3IjUD@^jT7OQ}sXLuT#m6#x>3wSd8E z0oo&lJ*k>GVVFA^%H(uZ3VV2z1$4vw2EgqAZI;5G+Y^Ab8{oSMv@kDh<&JI(#0~RR z0+unb%oWaS<;;32{UDeW;(u7<(QZfP*C+sqf#$Uw!*Kxp81%3!?2pUoqI8s85L$pi zJ6&OiWz^@_lW7w~HUl5H!l~i^qN;>pZDjBhQ8^zstQ`ctH_`%O3^0&)h0{`L0rN93 zrUBG0g{^YB=87k+nMAx*^$u4!Q>!d+hJXa3VxT<83S7APY;L)q5o*Pg=6WK`1F%jC zXJK6cfhz%Qk;0i1(hf+zJTgYHAJv{U9u~T>vJe^85rBs=^E@|~dAF1yN$VL9uK}=I z3P%kiHJ6?;zXW44F)zvIGAp_tk$#GZHdF_31%QN+Ud5orARLfc=e9BnOd`TAAALlS zmVkDrGMK%|Zm!+u@#83E?gwKWfmi26=K1ivb}wLhPv-2$OCSt$9Rc&zo`~k>v-XCH zI5Et300i#gr=`fOEwkVj5I@$i7Zj0pcf;yb(hXCkRWRZ3DI(g>j0*t90~l0P$a|#7 zl@moS!2Wq7Mp&xi4bVsOG6R5vlpFpZ_MtBW}*w8Zx)EEbCXe`r-(UF#-gy0Pkp5?B8SOkFU&^ z#my`td>HKilEMk+#0m_JX2Q<_++VaFHgP>0{{L^(2g_s1ektf@Gm|%&`ls7N}$0EZwNqF_?83Dbwy@#J-`hC zDCR_~If^|Tt|zF6Z#9h0cQ`*Z;^`HDvR19+EhmD(Oa{P4Q2_}e7R(R;9sn@3yxd;0 z1$4vu3Sc#&9hAbU`*##K(klt{0ziAEuM0ttnlphI&gZl3J>n=5fF8cMH`@9@ zQ}Ddx*^})j%UNmwunqw{x(~8@Lwd5{c@wGu{0HDzS3h)a!59Dl002ovPDHLkV1oTb BnRNgF literal 0 HcmV?d00001 diff --git a/src/Resources/img/expand.png b/src/Resources/img/expand.png new file mode 100755 index 0000000000000000000000000000000000000000..ceb0d17233c5de81d2d0ef487e83eeef130620bc GIT binary patch literal 417 zcmV;S0bc%zP)Px$TS-JgR9Hu2WEfz;IKcKZP~-q1rK)<62j1OlYb4hrWIF(4IU@r@1IXh43=9qA zI)W?*AX^UeIk}D?*#X!rr^FE?IRKyKR2MDWGOEdoYKl?uegXjPMjA4w7|5t(2 z0F=$hz_9&43uEfrTdhxtO_U@#0A#4BXamn*p5LBK|Np-J&&0GJB*ysfpW{D9W>MxZ ztlM9|Zumm1#^*o7zeNlT41)g| z{%>PsVDy5t3E}Mbj0{Y1Z|=2hA=VKjIY3CUIuzCj!DRucaq{kd>uQ=f0AwgWN04ec z*$onGjv&W!vK@dP669J=kpp0k0QZbYh;#I`K~f?lHer#XZqxw)0hH7sz>~5K00000 LNkvXXu0mjf%yP0w literal 0 HcmV?d00001 diff --git a/src/Resources/img/fold.png b/src/Resources/img/fold.png new file mode 100755 index 0000000000000000000000000000000000000000..1ff5c55c1edf529b83da3a9894c7d191885592d2 GIT binary patch literal 465 zcmV;?0WSWDP)Px$i%CR5R9Hvtmn}~NK@f)Dxk7{P-4CFLMDhpt1(1-m!6QfzNJ8%fhdGKw)DSEo zPyrqR3fG`oLHdEf^}`fJ;D&6;(gPZ@yC+I$*WS&(&%85tvr8EBqA}}Z3XsSFJ6pH` z(XuFGw;3AkWfUa)W(qL54%k`G=M-Pk8%psebQZjeP9x0g{9Ck}(02VTfJ*>X!BJZR z5TVSB95ar4t#DHnLK`6CdS?Wze+W<&;Ki?ERAnp5_v!~V6$otrv8m(wCk)>BDWE4l zNI`{i)H`;za0H_5;WK^lL;xb#cKt(ucSI?4Y>y{o?10?FasB=(OD^)=gj%0SIvd0ubFZ&93z7!ILh8F~FzzQ1R|%CcWB!2s%0tMgSwk zrRKFYmtJevf@f6-ZGd0IrRG()na%;hs|rLCfIgTjauxto0eDHw1f7AT4Ir`-F2LgQ zSf*jz*2z7POb?}h#sO!3cW@~YtMgdARr&7!-!wGIIv(>5%RQ+fFkHwr00000NkvXX Hu0mjfj(o^d literal 0 HcmV?d00001 diff --git a/src/Resources/img/opendark.png b/src/Resources/img/opendark.png new file mode 100755 index 0000000000000000000000000000000000000000..9931b9ae6770d3cfabfb812ed231940922aa6dc0 GIT binary patch literal 315 zcmV-B0mS}^P)Px#^+`lQR9Hvtmc0$aFc5{`TLJcx` zB@#H2yR+}R@9fyb%pYgYj{q>40Z9U|CwVQleM*2GfJ+s^2|&^YfEmjXn>PWFkUX0; zdIQ+x4**8tYYu=TfHld(kmQoSEy$~PHE_x%Saq%tb`zG8PYn=}yj8*TJs>Fs5LE*5 zVPx%UP(kjR9HvtmQ9GwQ5eR5&xS-ctk_H}l#eWIsF{tzhJ5UlNs?$3`Ir)mp-_`C zMTA*MSlIYVN+~HLVx>@16opu@l49Y}t8?{l-1+~{|C*ZAymhEuR+4SDrvT5=!96EwTeIM%0Bp|& zUZsEmNn5ik7aVOL2YyQGwmm`8k1PgkZ;1PxoI535ZV^Dcq(R%$fF4OZasiwMx{`C7 zq_?dAh#1>(03QNRC9TN?a06KVuK;XM1qPF3->d^*FK}!WwqONtC*|pu)R)V^V&Ksz z9KxcCE|K&&3qabt_rQ!+uVKm&s}B}FND5W`%gS^hu24vCSSvzw7HC}Geo1@k0+91WnTSS^yG-?Lf5FhLtv>6tfHHFT`|&7L0U_D;tdMKMg4*8QzY+ z0t?e4WficjQ0%&-bt4u3&1~6ZW6pN8*Zn!Z1)rmmq9K)97Jx+UQs58}+frshcgSwm z`!E|ofsJ^K#wT7tL48Wef0000< KMNUMnLSTY^`zgi% literal 0 HcmV?d00001 diff --git a/src/Resources/img/savedark.png b/src/Resources/img/savedark.png new file mode 100755 index 0000000000000000000000000000000000000000..07a21744bb2f1a6cb997520f7b7e90c2196cc682 GIT binary patch literal 352 zcmV-m0iXVfP)Px$8c9S!R9HvtmoW~)FbqZg&%+2iurqTV%3+u|1Z9VniMtpX)m5pI*oBmWlt`#5 zPV8sbu3gZ?3lrO?7XW6S6Vc{Fr~`nzS4RuL%qt=~c@G-P3gL(lYdV=-n5xQ2k=o(0R7jSZ<|3Y;12^ezy$etLS2B%p_j` yxV{V|&D0|E-!hYtn3^+yT7|#$aXPZ+LG=$#1xhd}8_*2^0000HGY8euwa%gZ{HVMgRuwK%sVIM!S8oWq+Wf958@a)i)7Q5Ws8z z7ZM4_=xnKJ&lMzR0H5Dj&JGTOu)en#e*!2Z?2=kwbMjw7at82f#xVk_QUZihrh-Pv ziI+1_2GHk(oLt=brp6vp0H1nv4$C}OybU(_W*SpjMi{_2a-8L^5KGc709(O0Bbv=p z_sj(y`?H|#ws@g#RQIzt^n~NfFB9lTIDuVH2ow%6`744;w9~2>#37Y$nteL?gIp!oF-0GVLS`(1n;4u?dLSxO-^t@ z8yHtfazf0~GXO7zZ5F3-VVe^(a}}*}5gE#4EMWEwRJ9un309pX<5P!C{z!meUfwfG03!uxw4(=EZ0Cq(f zTqZ-l?Z7z)U?qV2!Zugr9iULt*GQmi06g7`3MIsJhr6&-v<5%q9l#Zsqz0BIiLVf# zGE+m$`(;0#U+l^hcfXaP-UDfo)JBB7QG|nmY{KcYyaDtl+G}&>?7;8mmIxKmuvz!7 zLSNbPJVlj7vLrnKP}CJKP`e$#g%-@UE1ab3bU=~a`s;v8i z1LFs-OlH<7AVbQ5YC`!*iOx+Ghc5@e8%b*iiDLjdq4<$o$X$pOP^q3!yGu^?`>?7E zGqZ<+3@GcXFvJDXJf*b!rein=z#^~=z^LokZ`bCl>VH7T+QFBn<=H&|7hT8xu-?6P zbbPja`lYrMC@BCf;dtHlJfn>j|iw8=aX=^hFST^JBuv zeQZ?+;%53|fahGtZptB7nVBsV-KWTIEx1eadaKfBCky$huwtr+7ILaayU;AIu}a@M z*qU&SUVn%hD^1w{G)opwrhkUQ5AJw=q^=YC0K>FCC*)m#TLHAr1o4u9r#&Zo;zfiQ zUFmnId6go4rDEPUrI~EuYvz+r80FjILI`5gc;0I${( zh{zGOto&tZY~)cGd18(AinQPl2t3!Zdm@b}0DoRh;&@rgM;|!DfB8Z2&h$o6+(}@d zX77Ke)~T>=%oZdVaEo>>Qa}YPz@X>YUo2FWf1l9I5ZDzspQa$y5|fj`wF`9fNldAp z`-SXyxPY#sZE=}&{u_>IY^XQ!@uYPK@C}Ho14;h{5X6;w5Z?dHJi z8hiS7RQ0tTS@BxRjKyN9`9G&QWK_NyC$zQ$xFkxt7xL|>wM&@RE&=vo=B+%B1sDmt z%6V&OnCVX`=yQwt_g-YjgV^@9sV)umJ~SVySo!a%!qBy-T#Y$lvuYZMTN1F;fkp4Y YbJOKwFuoEcmjD0&07*qoM6N<$f>(dNegFUf diff --git a/src/Resources/img/vip.png b/src/Resources/img/vip.png new file mode 100755 index 0000000000000000000000000000000000000000..73cae13b7a83d9d1d7919a082fc96236a4c38792 GIT binary patch literal 1293 zcmV+o1@iidP)Px($4Nv%R9HvdnQLqmRTRhn=WZbyV@h|n0uk-*3_d8BpaMmWM4~a#58^BM#NZc= z#j4R%yR%hV-JM1KK$L`-8e$@$DUT@NH{vVAglZ8!$Row>Y%z_AGP8{_1k-l!F|&`d zCf%K#eH7yTwwZJ8J-@qW&fN3AggT7CO>bV!Q*-VkDW72AMi2!6D7mFlr&6Y|rjj`deX0iYtNJ+t{lP-6PmRR0=~m%Tg5jGX z#6AYkPnkw@h0|m+z8Ysm)sq07uLV?L9EzqN0b_w}8lg(#s~9Yx>3f)|wboF15G54; zjs%^v62|&U;3@*k77BW}UQiCmH6eYzBphPGSCteL&tSQdK1f8Jl@^L}|AA~l;SZ4( ztG#{-yo0Iwc7RsdW^6^d0XlYmRo^UtM$0r__u{9hk)r_rWSd627e7y6P3l{X0=}~h z^rlQ>tCxkGcgC@|lkv5l{4~7-jQ1qcE#v0kUlR_W|5yoAK*rT0l|t&j2hX@UxZ~KQmq7 z)JQvn@6P@fhf-$Lv6~*bbo<3NjpvKZdl0~cZ5of)2P_mmMuJ9)mEauMI%d(CN=A1$ zK{RRMy9Cn@kh~PW~?gr690!=XZHGqeh>3Aw>yjW~bMbkHe z@vdze*VhZ|JTq-fC1ZPw2BC&uBBHg-JOI!eV33_O?)-1+>4N}Hr={%mk*|jcgO(Zl zq}ZIzYWIT@a<6R~S6w==;M;8wX(x!Xc2`mLAxM7N9*zHaDZyM*5v@IQm47CNN#HSS z#5h)Jhvx;mf<7Tm+E>hN!l|B#OP7i+#p7ZXbgCzPYn!p{rNDA2_Ks~Dt4rC{y?6vd z;Q=OUb31h_svZW=N>XMjW6|LgD_Qa)I~jk~1#Ax_ODh?7I`guIx9^x1c?8T~NWv|p zx?_K+>wW?`aIS-hKDA7vznI~I#o^{jNq>UqQ9BX)(sja|fhVwxNHf`xKT>^Ea+iZ$ z_mmTaHM-^dQg(_OX$Lq;bEaCnh(4acoB)(E4#CYqeYq6a4CZ-maO}gTQl0m#9D*}o zStaWK*S2KfW}(q+*18r;_U#Ap{#j`>^Qo0rrs~y2D{ACKHHwwzcdYQ8sii_yIIq*Y zG10PWl&Y%0a>b-(N>!%!65J1>pxd|7tteFu<}8p`tg01E!Mq8C;YyXMLfD#sT`VZm z68A1a@~~T%9niXNmn_y0=$Xq>;?D0>!KK9002%=vBcdZSUrO*D04)OG=otN%?WIIv z8e~KtZg>d9>%gqebd3Ze6HEsrO&#Px&%t=H+R9HvdnOn$ZV;shR&y5>tj6*}?FoYaNIgFV>M5MTIZX8GBh8U-4E|f61 zb0L&OlOn>%VcbnlP0C=H3#S}%N{VqvlA7YtGre28uWzr@Udv40`s&;5^}g%>+w1>6 z@ALmJF~G3B3vfDc5pW2w2e5m&)z83Bz-PcSz$=n|?>h|jxuEUCfa`&afw{ofz`MXl zz{llYhXY3d#{mm~UxBBA2PJ*dS3JFe*}kVheGWVUyejF#sz7Zo1Wp5%0|ytl+xmd( z1~9A3tT6#A{6Hi1r-q6 z^MLih%aU3PN^7tp=^KGnU4^3Q6DWdmFR--jQP2hKAz-njMNI=NPv8zBA8y08%y&=%}{;EPETY&!v;Q-ozrfjSX*6Nrz@*c_K4>Cf{0nZT34OBG1R{?8mSlyb6K14dj*B??{6KdC8zntlvF2I8T1h)^Pp~B=h(^Dz z?UXgwNqT#Gf;CCSoq$h)3nXPvP8_yVkEK?dD=Dct>##j|DprceC@R}g&(|d7Fs}kj zirp@0Y0Y(mi%0fN2wrfqW?VMpTy}LGmTUk|k7gsW@2`*r95dXijrNAXMhAuP@0$$ADe^O|UN&2WW zHB@ULt-H=0tJZsLe9!dRp_;L7`W*|W=~PVxR?@P!PL=JL<4FI4y0fxQl%@tNaHEdZ zv<=ghv1463Q{%9`fQ<=C%J{UnQ(tYUtFmn$3#99N*$&y_9ut(&ONmRiSHGSZO*GONcY6jM|Y0}i~t #include #include +#ifdef Q_OS_WIN +#include +#include +#endif +#include +#include +#include +#include +#include + #include "Sorters.h" #ifdef Q_OS_WIN @@ -247,39 +257,113 @@ const char *TransCodeIcon = ":/Resources/edit/styleblack/transcode.png"; const char *RenameIcon = ":/Resources/edit/styleblack/rename.png"; #endif -#ifdef STYLE_DEEPBLUE -const char *NewFileIcon = ":/Resources/edit/styledeepblue/newfile.png"; -const char *OpenFileIcon = ":/Resources/edit/styledeepblue/openfile.png"; -const char *NeedSaveBarIcon = ":/Resources/edit/styledeepblue/needsavebar.png"; -const char *NoNeedSaveBarIcon = ":/Resources/edit/styledeepblue/noneedsavebar.png"; -const char *NeedSaveAllBarIcon = ":/Resources/edit/styledeepblue/needsaveallbar.png"; -const char *NoNeedSaveAllBarIcon = ":/Resources/edit/styledeepblue/noneedsaveallbar.png"; -const char *CloseFileIcon = ":/Resources/edit/styledeepblue/closefile.png"; -const char *CloseAllFileIcon = ":/Resources/edit/styledeepblue/closeall.png"; -const char *CutIcon = ":/Resources/edit/styledeepblue/cut.png"; -const char *CopyFileIcon = ":/Resources/edit/styledeepblue/copy.png"; -const char *PasteIcon = ":/Resources/edit/styledeepblue/paste.png"; -const char *UndoIcon = ":/Resources/edit/styledeepblue/undo.png"; -const char *RedoIcon = ":/Resources/edit/styledeepblue/redo.png"; -const char *FindIcon = ":/Resources/edit/styledeepblue/find.png"; -const char *ReplaceIcon = ":/Resources/edit/styledeepblue/replace.png"; -const char *ZoominIcon = ":/Resources/edit/styledeepblue/zoomin.png"; -const char *ZoomoutIcon = ":/Resources/edit/styledeepblue/zoomout.png"; -const char *CrlfIcon = ":/Resources/edit/styledeepblue/crlf.png"; -const char *WhiteIcon = ":/Resources/edit/styledeepblue/white.png"; -const char *FileCompareIcon = ":/Resources/edit/styledeepblue/filecompare.png"; -const char *DirCompareIcon = ":/Resources/edit/styledeepblue/dircompare.png"; -const char *BinCmpIcon = ":/Resources/edit/styledeepblue/bincmp.png"; -const char *TransCodeIcon = ":/Resources/edit/styledeepblue/transcode.png"; -const char *RenameIcon = ":/Resources/edit/styledeepblue/rename.png"; -const char *PreHexIcon = ":/Resources/edit/styledeepblue/pre.png"; -const char *NextHexIcon = ":/Resources/edit/styledeepblue/next.png"; -const char *GotoHexIcon = ":/Resources/edit/styledeepblue/goto.png"; - -const char *TabNeedSave = ":/Resources/edit/global/needsave.png"; -const char *TabNoNeedSave = ":/Resources/edit/global/noneedsave.png"; +#ifdef STYLE_BLUDE +const char *NewFileIcon32 = ":/Resources/edit/styleblue/newfile.png"; +const char *OpenFileIcon32 = ":/Resources/edit/styleblue/openfile.png"; +const char *NeedSaveBarIcon32 = ":/Resources/edit/styleblue/needsavebar.png"; +const char *NoNeedSaveBarIcon32 = ":/Resources/edit/styleblue/needsavebar.png"; +const char *NeedSaveAllBarIcon32 = ":/Resources/edit/styleblue/needsaveall.png"; +const char *NoNeedSaveAllBarIcon32 = ":/Resources/edit/styleblue/needsaveall.png"; +const char* AutoTimeSaveBarIcon32 = ":/Resources/edit/styleblue/autosave.png"; +const char *CloseFileIcon32 = ":/Resources/edit/styleblue/closefile.png"; +const char *CloseAllFileIcon32 = ":/Resources/edit/styleblue/closeall.png"; +const char *CutIcon32 = ":/Resources/edit/styleblue/cut.png"; +const char *CopyFileIcon32 = ":/Resources/edit/styleblue/copy.png"; +const char *PasteIcon32 = ":/Resources/edit/styleblue/paste.png"; +const char *UndoIcon32 = ":/Resources/edit/styleblue/undo.png"; +const char *RedoIcon32 = ":/Resources/edit/styleblue/redo.png"; +const char *FindIcon32 = ":/Resources/edit/styleblue/find.png"; +const char *ReplaceIcon32 = ":/Resources/edit/styleblue/replace.png"; +const char* MarkIcon32 = ":/Resources/edit/styleblue/mark.png"; +const char* SignIcon32 = ":/Resources/edit/styleblue/sign.png"; +const char* ClearSignIcon32 = ":/Resources/edit/styleblue/clearsign.png"; +const char *ZoominIcon32 = ":/Resources/edit/styleblue/zoomin.png"; +const char *ZoomoutIcon32 = ":/Resources/edit/styleblue/zoomout.png"; +const char *CrlfIcon32 = ":/Resources/edit/styleblue/crlf.png"; +const char *WhiteIcon32 = ":/Resources/edit/styleblue/white.png"; +const char *IndentIcon32 = ":/Resources/edit/styleblue/indentGuide.png"; +const char *FileCompareIcon32 = ":/Resources/edit/styleblue/filecompare.png"; +const char *DirCompareIcon32 = ":/Resources/edit/styleblue/dircompare.png"; +const char *BinCmpIcon32 = ":/Resources/edit/styleblue/bincmp.png"; +const char *TransCodeIcon32 = ":/Resources/edit/styleblue/transcode.png"; +const char *RenameIcon32 = ":/Resources/edit/styleblue/rename.png"; +const char *PreHexIcon32 = ":/Resources/edit/styleblue/pre.png"; +const char *NextHexIcon32 = ":/Resources/edit/styleblue/next.png"; +const char *GotoHexIcon32 = ":/Resources/edit/styleblue/goto.png"; +const char *TabNeedSave32 = ":/Resources/edit/global/needsave.png"; +const char *TabNoNeedSave32 = ":/Resources/edit/global/noneedsave.png"; #endif +const char *NewFileIcon32 = ":/Resources/edit/styledeepblue/newfile.png"; +const char *OpenFileIcon32 = ":/Resources/edit/styledeepblue/openfile.png"; +const char *NeedSaveBarIcon32 = ":/Resources/edit/styledeepblue/needsavebar.png"; +const char *NoNeedSaveBarIcon32 = ":/Resources/edit/styledeepblue/needsavebar.png"; +const char *NeedSaveAllBarIcon32 = ":/Resources/edit/styledeepblue/needsaveall.png"; +const char *NoNeedSaveAllBarIcon32 = ":/Resources/edit/styledeepblue/needsaveall.png"; +const char* AutoTimeSaveBarIcon32 = ":/Resources/edit/styledeepblue/autosave.png"; +const char *CloseFileIcon32 = ":/Resources/edit/styledeepblue/closefile.png"; +const char *CloseAllFileIcon32 = ":/Resources/edit/styledeepblue/closeall.png"; +const char *CutIcon32 = ":/Resources/edit/styledeepblue/cut.png"; +const char *CopyFileIcon32 = ":/Resources/edit/styledeepblue/copy.png"; +const char *PasteIcon32 = ":/Resources/edit/styledeepblue/paste.png"; +const char *UndoIcon32 = ":/Resources/edit/styledeepblue/undo.png"; +const char *RedoIcon32 = ":/Resources/edit/styledeepblue/redo.png"; +const char *FindIcon32 = ":/Resources/edit/styledeepblue/find.png"; +const char *ReplaceIcon32 = ":/Resources/edit/styledeepblue/replace.png"; +const char* MarkIcon32 = ":/Resources/edit/styledeepblue/mark.png"; +const char* SignIcon32 = ":/Resources/edit/styledeepblue/sign.png"; +const char* ClearSignIcon32 = ":/Resources/edit/styledeepblue/clearsign.png"; +const char *ZoominIcon32 = ":/Resources/edit/styledeepblue/zoomin.png"; +const char *ZoomoutIcon32 = ":/Resources/edit/styledeepblue/zoomout.png"; +const char *CrlfIcon32 = ":/Resources/edit/styledeepblue/crlf.png"; +const char *WhiteIcon32 = ":/Resources/edit/styledeepblue/white.png"; +const char *IndentIcon32 = ":/Resources/edit/styledeepblue/indentGuide.png"; +const char *FileCompareIcon32 = ":/Resources/edit/styledeepblue/filecompare.png"; +const char *DirCompareIcon32 = ":/Resources/edit/styledeepblue/dircompare.png"; +const char *BinCmpIcon32 = ":/Resources/edit/styledeepblue/bincmp.png"; +const char *TransCodeIcon32 = ":/Resources/edit/styledeepblue/transcode.png"; +const char *RenameIcon32 = ":/Resources/edit/styledeepblue/rename.png"; +const char *PreHexIcon32 = ":/Resources/edit/styledeepblue/pre.png"; +const char *NextHexIcon32 = ":/Resources/edit/styledeepblue/next.png"; +const char *GotoHexIcon32 = ":/Resources/edit/styledeepblue/goto.png"; +//const char *TabNeedSave32 = ":/Resources/edit/global/needsave.png"; +//const char *TabNoNeedSave32 = ":/Resources/edit/global/noneedsave.png"; + +const char *NewFileIconDark32 = ":/Resources/edit/styledark/newfile.png"; +const char *OpenFileIconDark32 = ":/Resources/edit/styledark/openfile.png"; +const char *NeedSaveBarIconDark32 = ":/Resources/edit/styledark/needsavebar.png"; +const char *NoNeedSaveBarIconDark32 = ":/Resources/edit/styledark/needsavebar.png"; +const char *NeedSaveAllBarIconDark32 = ":/Resources/edit/styledark/needsaveall.png"; +const char *NoNeedSaveAllBarIconDark32 = ":/Resources/edit/styledark/needsaveall.png"; +const char* AutoTimeSaveBarIconDark32 = ":/Resources/edit/styledark/autosave.png"; +const char *CloseFileIconDark32 = ":/Resources/edit/styledark/closefile.png"; +const char *CloseAllFileIconDark32 = ":/Resources/edit/styledark/closeall.png"; +const char *CutIconDark32 = ":/Resources/edit/styledark/cut.png"; +const char *CopyFileIconDark32 = ":/Resources/edit/styledark/copy.png"; +const char *PasteIconDark32 = ":/Resources/edit/styledark/paste.png"; +const char *UndoIconDark32 = ":/Resources/edit/styledark/undo.png"; +const char *RedoIconDark32 = ":/Resources/edit/styledark/redo.png"; +const char *FindIconDark32 = ":/Resources/edit/styledark/find.png"; +const char *ReplaceIconDark32 = ":/Resources/edit/styledark/replace.png"; +const char* MarkIconDark32 = ":/Resources/edit/styledark/mark.png"; +const char* SignIconDark32 = ":/Resources/edit/styledark/sign.png"; +const char* ClearSignIconDark32 = ":/Resources/edit/styledark/clearsign.png"; +const char *ZoominIconDark32 = ":/Resources/edit/styledark/zoomin.png"; +const char *ZoomoutIconDark32 = ":/Resources/edit/styledark/zoomout.png"; +const char *CrlfIconDark32 = ":/Resources/edit/styledark/crlf.png"; +const char *WhiteIconDark32 = ":/Resources/edit/styledark/white.png"; +const char *IndentIconDark32 = ":/Resources/edit/styledark/indentGuide.png"; +const char *FileCompareIconDark32 = ":/Resources/edit/styledark/filecompare.png"; +const char *DirCompareIconDark32 = ":/Resources/edit/styledark/dircompare.png"; +const char *BinCmpIconDark32 = ":/Resources/edit/styledark/bincmp.png"; +const char *TransCodeIconDark32 = ":/Resources/edit/styledark/transcode.png"; +const char *RenameIconDark32 = ":/Resources/edit/styledark/rename.png"; +const char *PreHexIconDark32 = ":/Resources/edit/styledark/pre.png"; +const char *NextHexIconDark32 = ":/Resources/edit/styledark/next.png"; +const char *GotoHexIconDark32 = ":/Resources/edit/styledark/goto.png"; +const char *TabNeedSaveDark32 = ":/Resources/edit/global/needsave.png"; +const char *TabNoNeedSaveDark32 = ":/Resources/edit/global/noneedsavedark.png"; + #ifdef STYLE_NOTEPAD const char* NewFileIcon = ":/notepad/newFile.png"; const char* OpenFileIcon = ":/notepad/openFile.png"; @@ -324,11 +408,14 @@ QString watchFilePath; //文件后缀与语言关联,与在ScintillaEditView::langNames中的序号为关联 //static QMap s_fileTypeToLangMap; //使用ExtLexerManager进行了替换 -QList CCNotePad::s_findHistroy; +QStringList CCNotePad::s_findHistroy; int CCNotePad::s_autoWarp = 0; //自动换行 int CCNotePad::s_indent = 0; //自动缩进 +int CCNotePad::s_showblank = 0; //显示空白 int CCNotePad::s_restoreLastFile = 1;//自动恢复上次打开的文件 +int CCNotePad::s_curStyleId = 0; +int CCNotePad::s_curMarkColorId = SCE_UNIVERSAL_FOUND_STYLE_EXT5; //lexerName to index @@ -373,7 +460,10 @@ FileExtLexer s_fileExtMapLexerId[FileExtMapLexerIdLen] = { {QString("sql"), L_SQL}, {QString("yml"), L_YAML}, {QString("nsi"), L_NSIS}, +{QString("nsh"), L_NSIS}, {QString("v"), L_VERILOG}, +{QString("rs"), L_RUST}, +{QString("frm"), L_VB}, {QString("NULL"), L_EXTERNAL}, }; @@ -396,7 +486,6 @@ void initFileTypeLangMap() //标准的定义可以忽略后面的tag,因为标准lexer的tag都是存在的。 ExtLexerManager::getInstance()->addNewExtType(v.ext, v.id); - //s_fileTypeToLangMap.insert(s_fileExtMapLexerId[i].ext, s_fileExtMapLexerId[i].id); } } //在加载动态的关联部分,这部分是用户自定义的类型。这里最好不要放在多个文件,否则会慢,单独放一个文件即可。 @@ -663,6 +752,13 @@ void CCNotePad::initLexerNameToIndex() m_lexerNameToIndex.insert("ruby", pNodes[i]); ++i; + pNodes[i].pAct = ui.actionRust; + pNodes[i].index = L_RUST; + data.setValue(int(L_RUST)); + ui.actionRust->setData(data); + m_lexerNameToIndex.insert("rust", pNodes[i]); + ++i; + pNodes[i].pAct = ui.actionSpice; pNodes[i].index = L_SPICE; data.setValue(int(L_SPICE)); @@ -692,6 +788,13 @@ void CCNotePad::initLexerNameToIndex() m_lexerNameToIndex.insert("tex", pNodes[i]); ++i; + pNodes[i].pAct = ui.actionVb; + pNodes[i].index = L_VB; + data.setValue(int(L_VB)); + ui.actionVb->setData(data); + m_lexerNameToIndex.insert("vb", pNodes[i]); + ++i; + pNodes[i].pAct = ui.actionVerilog; pNodes[i].index = L_VERILOG; data.setValue(int(L_VERILOG)); @@ -798,84 +901,8 @@ void CCNotePad::initLexerNameToIndex() ui.actionUserDefine->setData(data); m_lexerNameToIndex.insert("UserDefine", pNodes[i]); ++i; - - - delete[]pNodes; -#if 0 //以下是目前不支持的 - pNodes[i].pAct = ui.actionNfo; - pNodes[i].index = L_R; - - pNodes[i].pAct = ui.actionVirsual_Basic; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionShell; - pNodes[i].index = L_R; - - pNodes[i].pAct = ui.actionNSIS; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionLisp; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionScheme; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionAssembly; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionSmalltalk; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionAutoIt; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionPowerShell; - pNodes[i].index = L_R; - - pNodes[i].pAct = ui.actionBaanC; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionS_Record; - pNodes[i].index = L_R; - - pNodes[i].pAct = ui.actionVisual_Prolog; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionTxt2tags; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionRust; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionRegistry; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionREBOL; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionOScript; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionNncrontab; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionNim; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionMMIXAL; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionLaTex; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionForth; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionESCRIPT; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionErlang; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionCsound; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionFreeBasic; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionBlitzBasic; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionPureBasic; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionAviSynth; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionASN1; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionSwift; - pNodes[i].index = L_R; - pNodes[i].pAct = ui.actionIntel_HEX; - pNodes[i].index = L_R; -#endif - } } @@ -947,7 +974,7 @@ LexerInfo CCNotePad::getLangLexerIdByFileExt(QString filePath) CCNotePad::CCNotePad(bool isMainWindows, QWidget *parent) : QMainWindow(parent), m_cutFile(nullptr),m_copyFile(nullptr), m_dockSelectTreeWin(nullptr), \ m_pResultWin(nullptr),m_isQuitCancel(false), m_tabRightClickMenu(nullptr), m_shareMem(nullptr),m_isMainWindows(isMainWindows),\ - m_openInNewWinAct(nullptr), m_showFileDirAct(nullptr), m_timerAutoSave(nullptr) + m_openInNewWinAct(nullptr), m_showFileDirAct(nullptr), m_timerAutoSave(nullptr), m_curColorIndex(-1) { ui.setupUi(this); @@ -983,6 +1010,7 @@ CCNotePad::CCNotePad(bool isMainWindows, QWidget *parent) break; } +#if 0 if (s_padInstances == nullptr) { s_padInstances = new QList(); @@ -1061,7 +1089,7 @@ CCNotePad::CCNotePad(bool isMainWindows, QWidget *parent) { restoreGeometry(lastGeo); } - +#endif } CCNotePad::~CCNotePad() @@ -1076,6 +1104,102 @@ CCNotePad::~CCNotePad() NddSetting::close(); } +//先快速让窗口展示处理,后续再去做复杂的初始化 +void CCNotePad::quickshow() +{ + QByteArray lastGeo = NddSetting::getKeyByteArrayValue(WIN_POS); + + if (!lastGeo.isEmpty()) + { + restoreGeometry(lastGeo); + } + + show(); + + QCoreApplication::processEvents(); + + if (s_padInstances == nullptr) + { + s_padInstances = new QList(); + s_padInstances->append(this); + } + //启用拖动 + setAcceptDrops(true); + + initFileTypeLangMap(); + initLexerNameToIndex(); + + //这里在主线程里面调用一下,避免后续因为没有创建,而可能在子线程中初始化里面的值,而且多个子线程引发重入竞争问题 + //20220402在1.11中发现这个问题。所以加上这里的手动调用 + DocTypeListView::initSupportFileTypes(); + + ui.editTabWidget->setTabsClosable(true); + + + QTabBar* pBar = ui.editTabWidget->tabBar(); + + connect(pBar, &QTabBar::tabCloseRequested, this, &CCNotePad::slot_tabClose); + + + m_codeStatusLabel = new QLabel("UTF8", ui.statusBar); +#ifdef Q_OS_WIN + m_lineEndLabel = new QLabel("Windows(CR LF)", ui.statusBar); +#endif +#ifdef Q_OS_UNIX + m_lineEndLabel = new QLabel("Windows(LF)", ui.statusBar); +#endif + m_lineNumLabel = new QLabel(tr("Ln:0 Col:0"), ui.statusBar); + + m_langDescLabel = new QLabel("Txt", ui.statusBar); + m_codeStatusLabel->setMinimumWidth(120); + m_lineEndLabel->setMinimumWidth(100); + m_lineNumLabel->setMinimumWidth(120); + m_langDescLabel->setMinimumWidth(100); + + //0在前面,越小越在左边 + ui.statusBar->insertPermanentWidget(0, m_langDescLabel); + ui.statusBar->insertPermanentWidget(1, m_lineNumLabel); + ui.statusBar->insertPermanentWidget(2, m_lineEndLabel); + ui.statusBar->insertPermanentWidget(3, m_codeStatusLabel); + + initToolBar(); + + m_saveFile->setEnabled(false); + m_saveAllFile->setEnabled(false); + + initReceneOpenFileMenu(); + + //最后加入退出菜单 + ui.menuFile->addSeparator(); + m_quitAction = ui.menuFile->addAction(tr("Quit"), this, &CCNotePad::slot_quit); + m_quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); + + connect(ui.editTabWidget, &QTabWidget::currentChanged, this, &CCNotePad::slot_tabCurrentChanged); + connect(ui.editTabWidget, &QTabWidget::tabBarClicked, this, &CCNotePad::slot_tabBarClicked); + ui.editTabWidget->installEventFilter(this); + + m_fileWatch = new QFileSystemWatcher(this); + connect(m_fileWatch, &QFileSystemWatcher::fileChanged, this, &CCNotePad::slot_fileChange); + + + //只有主窗口才监控openwith的文件 + if (m_isMainWindows) + { + + initNotePadSqlOptions(); + + + + + } + + slot_loadBookMarkMenu(); + + slot_loadMarkColor(); + + + } + #ifdef Q_OS_WIN void CCNotePad::checkAppFont() { @@ -1195,38 +1319,90 @@ void CCNotePad::slot_loadBookMarkMenu() } } +void CCNotePad::slot_markColorGroup(QAction *action) +{ + CCNotePad::s_curMarkColorId = action->data().toInt(); + slot_wordHighlight(); +} + +#define SCE_UNIVERSAL_FOUND_STYLE_START 20 + +void CCNotePad::slot_loadMarkColor() +{ + if (m_curColorIndex == -1) + { + m_curColorIndex = 0; + + QPixmap colorBar(36, 36); + + QActionGroup* markColorGroup = new QActionGroup(this); + connect(markColorGroup, &QActionGroup::triggered, this, &CCNotePad::slot_markColorGroup, Qt::QueuedConnection); + + int index = 1; + auto initColorBar = [this, markColorGroup,&index](QPixmap& colorBar) { + QAction* action = new QAction(ui.menuMark_Color); + action->setIcon(colorBar); + action->setText(tr("Color %1").arg(index)); + action->setData(index+ SCE_UNIVERSAL_FOUND_STYLE_START); + ++index; + ui.menuMark_Color->addAction(action); + markColorGroup->addAction(action); + }; + + colorBar.fill(QColor(0xffff00)); + initColorBar(colorBar); + + colorBar.fill(QColor(0x00ffff)); + initColorBar(colorBar); + + colorBar.fill(QColor(0xff8000)); + initColorBar(colorBar); + + colorBar.fill(QColor(0x8000ff)); + initColorBar(colorBar); + + colorBar.fill(QColor(0x0080ff)); + initColorBar(colorBar); + + } +} + void CCNotePad::syncCurSkinToMenu(int id) { switch (id) { - case 0: + case DEFAULT_SE: ui.actionDefaultStyle->setChecked(true); break; - case 1: + case LIGHT_SE: ui.actionLightBlueStyle->setChecked(true); break; - case 2: + case THIN_BLUE_SE: ui.actionThinBlue->setChecked(true); break; - case 3: + case THIN_YELLOW_SE: ui.actionYellow->setChecked(true); break; - case 4: + case RICE_YELLOW_SE: ui.actionRiceYellow->setChecked(true); break; - case 5: + case SILVER_SE: ui.actionSilver->setChecked(true); break; - case 6: + case LAVENDER_SE: ui.actionLavenderBlush->setChecked(true); break; - case 7: + case MISTYROSE_SE: ui.actionMistyRose->setChecked(true); break; + case BLACK_SE: + ui.actionDark->setChecked(true); + break; default: ui.actionDefaultStyle->setChecked(true); break; } + s_curStyleId = id; } void CCNotePad::slot_changeChinese() @@ -1610,10 +1786,11 @@ void CCNotePad::slot_openFileInNewWin() slot_actionClose(true); CCNotePad* pNewWin = new CCNotePad(false,nullptr); + pNewWin->quickshow(); pNewWin->setShareMem(this->getShareMem()); pNewWin->setAttribute(Qt::WA_DeleteOnClose); pNewWin->openFile(path); - pNewWin->show(); + #ifdef uos adjustWInPos(pNewWin); #endif @@ -1719,16 +1896,127 @@ void CCNotePad::slot_tabCurrentChanged(int index) pEdit->setWrapMode((QsciScintilla::WrapMode)s_autoWarp); } - if (QsciScintilla::WsVisible == pEdit->whitespaceVisibility()) + /*if (QsciScintilla::WsVisible == pEdit->whitespaceVisibility()) { m_allWhite->setChecked(true); } else { m_allWhite->setChecked(false); + }*/ } } } + +//快捷按钮的初始化 +void CCNotePad::setShoctIcon(int iconSize) +{ + auto setDark32Icon = [this]() + { + //黑色图标 + m_newFile->setIcon(QIcon(NewFileIconDark32)); + m_openFile->setIcon(QIcon(OpenFileIconDark32)); + m_saveFile->setIcon(QIcon(NoNeedSaveBarIconDark32)); + m_saveAllFile->setIcon(QIcon(NoNeedSaveAllBarIconDark32)); + m_autoSaveAFile->setIcon(QIcon(AutoTimeSaveBarIconDark32)); + m_closeFile->setIcon(QIcon(CloseFileIconDark32)); + m_closeAllFile->setIcon(QIcon(CloseAllFileIconDark32)); + m_cutFile->setIcon(QIcon(CutIconDark32)); + m_copyFile->setIcon(QIcon(CopyFileIconDark32)); + m_pasteFile->setIcon(QIcon(PasteIconDark32)); + m_undo->setIcon(QIcon(UndoIconDark32)); + m_redo->setIcon(QIcon(RedoIconDark32)); + m_findText->setIcon(QIcon(FindIconDark32)); + m_replaceText->setIcon(QIcon(ReplaceIconDark32)); + m_markText->setIcon(QIcon(MarkIconDark32)); + m_signText->setIcon(QIcon(SignIconDark32)); + m_clearMark->setIcon(QIcon(ClearSignIconDark32)); + m_zoomin->setIcon(QIcon(ZoominIconDark32)); + m_zoomout->setIcon(QIcon(ZoomoutIconDark32)); + m_wordwrap->setIcon(QIcon(CrlfIconDark32)); + m_allWhite->setIcon(QIcon(WhiteIconDark32)); + m_indentGuide->setIcon(QIcon(IndentIconDark32)); + m_preHexPage->setIcon(QIcon(PreHexIconDark32)); + m_nextHexPage->setIcon(QIcon(NextHexIconDark32)); + m_gotoHexPage->setIcon(QIcon(GotoHexIconDark32)); + m_transcode->setIcon(QIcon(TransCodeIconDark32)); + m_rename->setIcon(QIcon(RenameIconDark32)); + }; + + if (iconSize < 48) + { + if (iconSize == 36 && StyleSet::getCurrentSytleId() == BLACK_SE) + { + setDark32Icon(); +} + else + { + m_newFile->setIcon(QIcon(NewFileIcon)); + m_openFile->setIcon(QIcon(OpenFileIcon)); + m_saveFile->setIcon(QIcon(NoNeedSaveBarIcon)); + m_saveAllFile->setIcon(QIcon(NoNeedSaveAllBarIcon)); + m_autoSaveAFile->setIcon(QIcon(AutoTimeSaveBarIcon)); + m_closeFile->setIcon(QIcon(CloseFileIcon)); + m_closeAllFile->setIcon(QIcon(CloseAllFileIcon)); + m_cutFile->setIcon(QIcon(CutIcon)); + m_copyFile->setIcon(QIcon(CopyFileIcon)); + m_pasteFile->setIcon(QIcon(PasteIcon)); + m_undo->setIcon(QIcon(UndoIcon)); + m_redo->setIcon(QIcon(RedoIcon)); + m_findText->setIcon(QIcon(FindIcon)); + m_replaceText->setIcon(QIcon(ReplaceIcon)); + m_markText->setIcon(QIcon(MarkIcon)); + m_signText->setIcon(QIcon(SignIcon)); + m_clearMark->setIcon(QIcon(ClearSignIcon)); + m_zoomin->setIcon(QIcon(ZoominIcon)); + m_zoomout->setIcon(QIcon(ZoomoutIcon)); + m_wordwrap->setIcon(QIcon(CrlfIcon)); + m_allWhite->setIcon(QIcon(WhiteIcon)); + m_indentGuide->setIcon(QIcon(IndentIcon)); + m_preHexPage->setIcon(QIcon(PreHexIcon)); + m_nextHexPage->setIcon(QIcon(NextHexIcon)); + m_gotoHexPage->setIcon(QIcon(GotoHexIcon)); + m_transcode->setIcon(QIcon(TransCodeIcon)); + m_rename->setIcon(QIcon(RenameIcon)); + } + } + else + { + if (StyleSet::getCurrentSytleId() != BLACK_SE) + { + m_newFile->setIcon(QIcon(NewFileIcon32)); + m_openFile->setIcon(QIcon(OpenFileIcon32)); + m_saveFile->setIcon(QIcon(NoNeedSaveBarIcon32)); + m_saveAllFile->setIcon(QIcon(NoNeedSaveAllBarIcon32)); + m_autoSaveAFile->setIcon(QIcon(AutoTimeSaveBarIcon32)); + m_closeFile->setIcon(QIcon(CloseFileIcon32)); + m_closeAllFile->setIcon(QIcon(CloseAllFileIcon32)); + m_cutFile->setIcon(QIcon(CutIcon32)); + m_copyFile->setIcon(QIcon(CopyFileIcon32)); + m_pasteFile->setIcon(QIcon(PasteIcon32)); + m_undo->setIcon(QIcon(UndoIcon32)); + m_redo->setIcon(QIcon(RedoIcon32)); + m_findText->setIcon(QIcon(FindIcon32)); + m_replaceText->setIcon(QIcon(ReplaceIcon32)); + m_markText->setIcon(QIcon(MarkIcon32)); + m_signText->setIcon(QIcon(SignIcon32)); + m_clearMark->setIcon(QIcon(ClearSignIcon32)); + m_zoomin->setIcon(QIcon(ZoominIcon32)); + m_zoomout->setIcon(QIcon(ZoomoutIcon32)); + m_wordwrap->setIcon(QIcon(CrlfIcon32)); + m_allWhite->setIcon(QIcon(WhiteIcon32)); + m_indentGuide->setIcon(QIcon(IndentIcon32)); + m_preHexPage->setIcon(QIcon(PreHexIcon32)); + m_nextHexPage->setIcon(QIcon(NextHexIcon32)); + m_gotoHexPage->setIcon(QIcon(GotoHexIcon32)); + m_transcode->setIcon(QIcon(TransCodeIcon32)); + m_rename->setIcon(QIcon(RenameIcon32)); + } + else + { + setDark32Icon(); + } +} } void CCNotePad::initToolBar() @@ -1752,6 +2040,8 @@ void CCNotePad::initToolBar() ui.action48->setChecked(true); } + m_curIconSize = ICON_SIZE; + s_autoWarp = NddSetting::getKeyValueFromNumSets(AUTOWARP_KEY); s_zoomValue = NddSetting::getKeyValueFromNumSets(ZOOMVALUE); if (s_zoomValue > 10 || s_zoomValue < -5) @@ -1761,32 +2051,29 @@ void CCNotePad::initToolBar() } s_indent = NddSetting::getKeyValueFromNumSets(INDENT_KEY); + s_showblank = NddSetting::getKeyValueFromNumSets(SHOWSPACE_KEY); - QToolButton* newFile = new QToolButton(ui.mainToolBar); - connect(newFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionNewFile_toggle); - newFile->setFixedSize(ICON_SIZE, ICON_SIZE); - newFile->setIcon(QIcon(NewFileIcon)); - newFile->setToolTip(tr("New File")); - ui.mainToolBar->addWidget(newFile); + m_newFile = new QToolButton(ui.mainToolBar); + connect(m_newFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionNewFile_toggle); + m_newFile->setFixedSize(ICON_SIZE, ICON_SIZE); + m_newFile->setToolTip(tr("New File")); + ui.mainToolBar->addWidget(m_newFile); - QToolButton* openFile = new QToolButton(ui.mainToolBar); - connect(openFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionOpenFile_toggle); - openFile->setFixedSize(ICON_SIZE, ICON_SIZE); - openFile->setIcon(QIcon(OpenFileIcon)); - openFile->setToolTip(tr("Open File")); - ui.mainToolBar->addWidget(openFile); + m_openFile = new QToolButton(ui.mainToolBar); + connect(m_openFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionOpenFile_toggle); + m_openFile->setFixedSize(ICON_SIZE, ICON_SIZE); + m_openFile->setToolTip(tr("Open File")); + ui.mainToolBar->addWidget(m_openFile); m_saveFile = new QToolButton(ui.mainToolBar); connect(m_saveFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionSaveFile_toggle); m_saveFile->setFixedSize(ICON_SIZE, ICON_SIZE); - m_saveFile->setIcon(QIcon(NoNeedSaveBarIcon)); m_saveFile->setToolTip(tr("Save File")); ui.mainToolBar->addWidget(m_saveFile); m_saveAllFile = new QToolButton(ui.mainToolBar); connect(m_saveAllFile, &QAbstractButton::clicked, this, &CCNotePad::slot_saveAllFile); m_saveAllFile->setFixedSize(ICON_SIZE, ICON_SIZE); - m_saveAllFile->setIcon(QIcon(NoNeedSaveAllBarIcon)); m_saveAllFile->setToolTip(tr("Save All File")); ui.mainToolBar->addWidget(m_saveAllFile); @@ -1794,31 +2081,27 @@ void CCNotePad::initToolBar() m_autoSaveAFile->setCheckable(true); connect(m_autoSaveAFile, &QAbstractButton::clicked, this, &CCNotePad::slot_autoSaveFile); m_autoSaveAFile->setFixedSize(ICON_SIZE, ICON_SIZE); - m_autoSaveAFile->setIcon(QIcon(AutoTimeSaveBarIcon)); m_autoSaveAFile->setToolTip(tr("Cycle Auto Save")); ui.mainToolBar->addWidget(m_autoSaveAFile); - QToolButton* closeFile = new QToolButton(ui.mainToolBar); - connect(closeFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionClose); - closeFile->setFixedSize(ICON_SIZE, ICON_SIZE); - closeFile->setIcon(QIcon(CloseFileIcon)); - closeFile->setToolTip(tr("Close")); - ui.mainToolBar->addWidget(closeFile); + m_closeFile = new QToolButton(ui.mainToolBar); + connect(m_closeFile, &QAbstractButton::clicked, this, &CCNotePad::slot_actionClose); + m_closeFile->setFixedSize(ICON_SIZE, ICON_SIZE); + m_closeFile->setToolTip(tr("Close")); + ui.mainToolBar->addWidget(m_closeFile); - QToolButton* closeAllFile = new QToolButton(ui.mainToolBar); - connect(closeAllFile, &QAbstractButton::clicked, this, &CCNotePad::slot_closeAllFile); - closeAllFile->setFixedSize(ICON_SIZE, ICON_SIZE); - closeAllFile->setIcon(QIcon(CloseAllFileIcon)); - closeAllFile->setToolTip(tr("Close All")); - ui.mainToolBar->addWidget(closeAllFile); + m_closeAllFile = new QToolButton(ui.mainToolBar); + connect(m_closeAllFile, &QAbstractButton::clicked, this, &CCNotePad::slot_closeAllFile); + m_closeAllFile->setFixedSize(ICON_SIZE, ICON_SIZE); + m_closeAllFile->setToolTip(tr("Close All")); + ui.mainToolBar->addWidget(m_closeAllFile); ui.mainToolBar->addSeparator(); m_cutFile = new QToolButton(ui.mainToolBar); connect(m_cutFile, &QAbstractButton::clicked, this, &CCNotePad::slot_cut); m_cutFile->setFixedSize(ICON_SIZE, ICON_SIZE); - m_cutFile->setIcon(QIcon(CutIcon)); m_cutFile->setToolTip(tr("Cut")); ui.mainToolBar->addWidget(m_cutFile); @@ -1826,91 +2109,80 @@ void CCNotePad::initToolBar() connect(m_copyFile, &QAbstractButton::clicked, this, &CCNotePad::slot_copy); m_copyFile->setFixedSize(ICON_SIZE, ICON_SIZE); m_copyFile->setIcon(QIcon(CopyFileIcon)); - m_copyFile->setToolTip(tr("Copy")); ui.mainToolBar->addWidget(m_copyFile); - QToolButton* pasteFile = new QToolButton(ui.mainToolBar); - connect(pasteFile, &QAbstractButton::clicked, this, &CCNotePad::slot_paste); - pasteFile->setFixedSize(ICON_SIZE, ICON_SIZE); - pasteFile->setIcon(QIcon(PasteIcon)); - pasteFile->setToolTip(tr("Paste")); - ui.mainToolBar->addWidget(pasteFile); + m_pasteFile = new QToolButton(ui.mainToolBar); + connect(m_pasteFile, &QAbstractButton::clicked, this, &CCNotePad::slot_paste); + m_pasteFile->setFixedSize(ICON_SIZE, ICON_SIZE); + m_pasteFile->setToolTip(tr("Paste")); + ui.mainToolBar->addWidget(m_pasteFile); ui.mainToolBar->addSeparator(); m_undo = new QToolButton(ui.mainToolBar); connect(m_undo, &QAbstractButton::clicked, this, &CCNotePad::slot_undo); m_undo->setFixedSize(ICON_SIZE, ICON_SIZE); - m_undo->setIcon(QIcon(UndoIcon)); m_undo->setToolTip(tr("Undo")); ui.mainToolBar->addWidget(m_undo); m_redo = new QToolButton(ui.mainToolBar); connect(m_redo, &QAbstractButton::clicked, this, &CCNotePad::slot_redo); m_redo->setFixedSize(ICON_SIZE, ICON_SIZE); - m_redo->setIcon(QIcon(RedoIcon)); m_redo->setToolTip(tr("Redo")); ui.mainToolBar->addWidget(m_redo); ui.mainToolBar->addSeparator(); - QToolButton* findText = new QToolButton(ui.mainToolBar); - connect(findText, &QAbstractButton::clicked, this, &CCNotePad::slot_find); - findText->setFixedSize(ICON_SIZE, ICON_SIZE); - findText->setIcon(QIcon(FindIcon)); - findText->setToolTip(tr("Find")); - ui.mainToolBar->addWidget(findText); + m_findText = new QToolButton(ui.mainToolBar); + connect(m_findText, &QAbstractButton::clicked, this, &CCNotePad::slot_find); + m_findText->setFixedSize(ICON_SIZE, ICON_SIZE); + m_findText->setToolTip(tr("Find")); + ui.mainToolBar->addWidget(m_findText); - QToolButton* replaceText = new QToolButton(ui.mainToolBar); - connect(replaceText, &QAbstractButton::clicked, this, &CCNotePad::slot_replace); - replaceText->setFixedSize(ICON_SIZE, ICON_SIZE); - replaceText->setIcon(QIcon(ReplaceIcon)); - replaceText->setToolTip(tr("Replace")); - ui.mainToolBar->addWidget(replaceText); + m_replaceText = new QToolButton(ui.mainToolBar); + connect(m_replaceText, &QAbstractButton::clicked, this, &CCNotePad::slot_replace); + m_replaceText->setFixedSize(ICON_SIZE, ICON_SIZE); + m_replaceText->setToolTip(tr("Replace")); + ui.mainToolBar->addWidget(m_replaceText); - QToolButton* markText = new QToolButton(ui.mainToolBar); - connect(markText, &QAbstractButton::clicked, this, &CCNotePad::slot_markHighlight); - markText->setFixedSize(ICON_SIZE, ICON_SIZE); - markText->setIcon(QIcon(MarkIcon)); - markText->setToolTip(tr("Mark")); - ui.mainToolBar->addWidget(markText); + m_markText = new QToolButton(ui.mainToolBar); + connect(m_markText, &QAbstractButton::clicked, this, &CCNotePad::slot_markHighlight); + m_markText->setFixedSize(ICON_SIZE, ICON_SIZE); + m_markText->setToolTip(tr("Mark")); + ui.mainToolBar->addWidget(m_markText); ui.mainToolBar->addSeparator(); //选择单词高亮 - QToolButton* signText = new QToolButton(ui.mainToolBar); - connect(signText, &QAbstractButton::clicked, this, &CCNotePad::slot_wordHighlight); - signText->setFixedSize(ICON_SIZE, ICON_SIZE); - signText->setIcon(QIcon(SignIcon)); - signText->setToolTip(tr("word highlight(F8)")); - signText->setShortcut(QKeySequence(Qt::Key_F8)); - ui.mainToolBar->addWidget(signText); + m_signText = new QToolButton(ui.mainToolBar); + connect(m_signText, &QAbstractButton::clicked, this, &CCNotePad::slot_wordHighlight); + m_signText->setFixedSize(ICON_SIZE, ICON_SIZE); + m_signText->setToolTip(tr("word highlight(F8)")); + m_signText->setShortcut(QKeySequence(Qt::Key_F8)); + ui.mainToolBar->addWidget(m_signText); //选择单词高亮 - QToolButton* clearMark = new QToolButton(ui.mainToolBar); - connect(clearMark, &QAbstractButton::clicked, this, &CCNotePad::slot_clearMark); - clearMark->setFixedSize(ICON_SIZE, ICON_SIZE); - clearMark->setIcon(QIcon(ClearSignIcon)); - clearMark->setToolTip(tr("clear all highlight(F7)")); - clearMark->setShortcut(QKeySequence(Qt::Key_F7)); - ui.mainToolBar->addWidget(clearMark); + m_clearMark = new QToolButton(ui.mainToolBar); + connect(m_clearMark, &QAbstractButton::clicked, this, &CCNotePad::slot_clearMark); + m_clearMark->setFixedSize(ICON_SIZE, ICON_SIZE); + m_clearMark->setToolTip(tr("clear all highlight(F7)")); + m_clearMark->setShortcut(QKeySequence(Qt::Key_F7)); + ui.mainToolBar->addWidget(m_clearMark); ui.mainToolBar->addSeparator(); - QToolButton* zoomin = new QToolButton(ui.mainToolBar); - connect(zoomin, &QAbstractButton::clicked, this, &CCNotePad::slot_zoomin); - zoomin->setFixedSize(ICON_SIZE, ICON_SIZE); - zoomin->setIcon(QIcon(ZoominIcon)); - zoomin->setToolTip(tr("Zoom In")); - ui.mainToolBar->addWidget(zoomin); + m_zoomin = new QToolButton(ui.mainToolBar); + connect(m_zoomin, &QAbstractButton::clicked, this, &CCNotePad::slot_zoomin); + m_zoomin->setFixedSize(ICON_SIZE, ICON_SIZE); + m_zoomin->setToolTip(tr("Zoom In")); + ui.mainToolBar->addWidget(m_zoomin); - QToolButton* zoomout = new QToolButton(ui.mainToolBar); - connect(zoomout, &QAbstractButton::clicked, this, &CCNotePad::slot_zoomout); - zoomout->setFixedSize(ICON_SIZE, ICON_SIZE); - zoomout->setIcon(QIcon(ZoomoutIcon)); - zoomout->setToolTip(tr("Zoom Out")); - ui.mainToolBar->addWidget(zoomout); + m_zoomout = new QToolButton(ui.mainToolBar); + connect(m_zoomout, &QAbstractButton::clicked, this, &CCNotePad::slot_zoomout); + m_zoomout->setFixedSize(ICON_SIZE, ICON_SIZE); + m_zoomout->setToolTip(tr("Zoom Out")); + ui.mainToolBar->addWidget(m_zoomout); ui.mainToolBar->addSeparator(); @@ -1919,7 +2191,6 @@ void CCNotePad::initToolBar() m_wordwrap->setChecked((s_autoWarp == 1)); connect(m_wordwrap, &QAbstractButton::toggled, this, &CCNotePad::slot_wordwrap); m_wordwrap->setFixedSize(ICON_SIZE, ICON_SIZE); - m_wordwrap->setIcon(QIcon(CrlfIcon)); m_wordwrap->setToolTip(tr("Word Wrap")); ui.mainToolBar->addWidget(m_wordwrap); @@ -1936,18 +2207,27 @@ void CCNotePad::initToolBar() m_allWhite = new QToolButton(ui.mainToolBar); m_allWhite->setCheckable(true); + m_allWhite->setChecked((s_showblank == 1)); connect(m_allWhite, &QAbstractButton::toggled, this, &CCNotePad::slot_allWhite); m_allWhite->setFixedSize(ICON_SIZE, ICON_SIZE); - m_allWhite->setIcon(QIcon(WhiteIcon)); m_allWhite->setToolTip(tr("Show Blank")); ui.mainToolBar->addWidget(m_allWhite); + ui.actionShowAll->setChecked((s_showblank == 1)); + + connect(ui.actionShowAll, &QAction::toggled, m_allWhite, [&](bool check) { + //避免循环触发 + if (check != m_allWhite->isChecked()) + { + m_allWhite->setChecked(check); + } + }); + m_indentGuide = new QToolButton(ui.mainToolBar); m_indentGuide->setCheckable(true); m_indentGuide->setChecked((s_indent == 1)); connect(m_indentGuide, &QAbstractButton::toggled, this, &CCNotePad::slot_indentGuide); m_indentGuide->setFixedSize(ICON_SIZE, ICON_SIZE); - m_indentGuide->setIcon(QIcon(IndentIcon)); m_indentGuide->setToolTip(tr("Indent Guide")); ui.mainToolBar->addWidget(m_indentGuide); @@ -1956,40 +2236,37 @@ void CCNotePad::initToolBar() m_preHexPage = new QToolButton(ui.mainToolBar); connect(m_preHexPage, &QAbstractButton::clicked, this, &CCNotePad::slot_preHexPage); m_preHexPage->setFixedSize(ICON_SIZE, ICON_SIZE); - m_preHexPage->setIcon(QIcon(PreHexIcon)); m_preHexPage->setToolTip(tr("Pre Hex Page")); ui.mainToolBar->addWidget(m_preHexPage); m_nextHexPage = new QToolButton(ui.mainToolBar); connect(m_nextHexPage, &QAbstractButton::clicked, this, &CCNotePad::slot_nextHexPage); m_nextHexPage->setFixedSize(ICON_SIZE, ICON_SIZE); - m_nextHexPage->setIcon(QIcon(NextHexIcon)); m_nextHexPage->setToolTip(tr("Next Hex Page")); ui.mainToolBar->addWidget(m_nextHexPage); m_gotoHexPage = new QToolButton(ui.mainToolBar); connect(m_gotoHexPage, &QAbstractButton::clicked, this, &CCNotePad::slot_gotoHexPage); m_gotoHexPage->setFixedSize(ICON_SIZE, ICON_SIZE); - m_gotoHexPage->setIcon(QIcon(GotoHexIcon)); m_gotoHexPage->setToolTip(tr("Goto Hex Page")); ui.mainToolBar->addWidget(m_gotoHexPage); ui.mainToolBar->addSeparator(); - QToolButton* transcode = new QToolButton(ui.mainToolBar); - connect(transcode, &QAbstractButton::clicked, this, &CCNotePad::slot_batch_convert); - transcode->setFixedSize(ICON_SIZE, ICON_SIZE); - transcode->setIcon(QIcon(TransCodeIcon)); - transcode->setToolTip(tr("transform encoding")); - ui.mainToolBar->addWidget(transcode); - QToolButton* rename = new QToolButton(ui.mainToolBar); - connect(rename, &QAbstractButton::clicked, this, &CCNotePad::slot_batch_rename); - rename->setFixedSize(ICON_SIZE, ICON_SIZE); - rename->setIcon(QIcon(RenameIcon)); - rename->setToolTip(tr("batch rename file")); - ui.mainToolBar->addWidget(rename); + m_transcode = new QToolButton(ui.mainToolBar); + connect(m_transcode, &QAbstractButton::clicked, this, &CCNotePad::slot_batch_convert); + m_transcode->setFixedSize(ICON_SIZE, ICON_SIZE); + m_transcode->setToolTip(tr("transform encoding")); + ui.mainToolBar->addWidget(m_transcode); + m_rename = new QToolButton(ui.mainToolBar); + connect(m_rename, &QAbstractButton::clicked, this, &CCNotePad::slot_batch_rename); + m_rename->setFixedSize(ICON_SIZE, ICON_SIZE); + m_rename->setToolTip(tr("batch rename file")); + ui.mainToolBar->addWidget(m_rename); + + setShoctIcon(ICON_SIZE); //编码里面只能有一个当前被选中 @@ -2048,10 +2325,12 @@ void CCNotePad::initToolBar() m_pLexerActGroup->addAction(ui.actionProperties_file); m_pLexerActGroup->addAction(ui.actionPython); m_pLexerActGroup->addAction(ui.actionRuby); + m_pLexerActGroup->addAction(ui.actionRust); m_pLexerActGroup->addAction(ui.actionSpice); m_pLexerActGroup->addAction(ui.actionSql); m_pLexerActGroup->addAction(ui.actionTcl); m_pLexerActGroup->addAction(ui.actionTex); + m_pLexerActGroup->addAction(ui.actionVb); m_pLexerActGroup->addAction(ui.actionVerilog); m_pLexerActGroup->addAction(ui.actionVHDL); m_pLexerActGroup->addAction(ui.actionXML); @@ -2079,7 +2358,6 @@ void CCNotePad::initToolBar() m_pLexerActGroup->addAction(ui.actionTypeScript); m_pLexerActGroup->addAction(ui.actionVisual_Prolog); m_pLexerActGroup->addAction(ui.actionTxt2tags); - m_pLexerActGroup->addAction(ui.actionRust); m_pLexerActGroup->addAction(ui.actionRegistry); m_pLexerActGroup->addAction(ui.actionREBOL); m_pLexerActGroup->addAction(ui.actionOScript); @@ -2111,6 +2389,7 @@ void CCNotePad::initToolBar() skinStyleGroup->addAction(ui.actionSilver); skinStyleGroup->addAction(ui.actionLavenderBlush); skinStyleGroup->addAction(ui.actionMistyRose); + skinStyleGroup->addAction(ui.actionDark); connect(skinStyleGroup, &QActionGroup::triggered, this, &CCNotePad::slot_skinStyleGroup, Qt::QueuedConnection); QActionGroup* langsGroup = new QActionGroup(this); @@ -2136,6 +2415,22 @@ void CCNotePad::initToolBar() void CCNotePad::slot_skinStyleGroup(QAction* /*action*/) { + //切换图标 + setShoctIcon(m_curIconSize); + + if (s_curStyleId != StyleSet::m_curStyleId) + { + if (BLACK_SE == StyleSet::m_curStyleId) + { + //如果不存在暗黑配置,则需要修正一次。后续如果存在了,则不需要再修正颜色 + if (!QtLangSet::isExistDarkLangSetings()) + { + QtLangSet::setAllLangFontFgColorToDarkStyle(); + } + } + s_curStyleId = StyleSet::m_curStyleId; + } + for (int i = ui.editTabWidget->count() - 1; i >= 0; --i) { QWidget* pw = ui.editTabWidget->widget(i); @@ -2146,6 +2441,8 @@ void CCNotePad::slot_skinStyleGroup(QAction* /*action*/) autoSetDocLexer(pEdit); } } + + } void CCNotePad::slot_changeIconSize(QAction *action) @@ -2171,6 +2468,8 @@ void CCNotePad::slot_changeIconSize(QAction *action) ui.action48->setChecked(true); } + m_curIconSize = size; + const QObjectList & childs = ui.mainToolBar->children(); QToolButton* toolBt = nullptr; @@ -2183,6 +2482,8 @@ void CCNotePad::slot_changeIconSize(QAction *action) toolBt->setFixedSize(size, size); } } + + setShoctIcon(size); } void CCNotePad::setTxtLexer(ScintillaEditView* pEdit) @@ -2240,12 +2541,15 @@ void CCNotePad::slot_lexerActTrig(QAction *action) if (lexer != nullptr) { pEdit->setLexer(lexer); + QString tag = lexer->lexerTag(); + setLangsDescLable(tag); } else { //默认按txt处理 setTxtLexer(pEdit); } + } } @@ -2278,8 +2582,12 @@ void CCNotePad::saveReceneOpenFile() QString fileSaveText = fileText.join('|'); NddSetting::updataKeyValueFromSets(rFile, fileSaveText); } + else + { + NddSetting::updataKeyValueFromSets(rFile, ""); } } +} //从数据库读取最近对比的文件列表 void CCNotePad::initReceneOpenFileMenu() @@ -2451,8 +2759,15 @@ void CCNotePad::slot_editViewMofidyChange() int index = ui.editTabWidget->indexOf(pEditView); if (index != -1) { + if (StyleSet::getCurrentSytleId() != BLACK_SE) + { ui.editTabWidget->setTabIcon(index, QIcon(TabNeedSave)); } + else + { + ui.editTabWidget->setTabIcon(index, QIcon(TabNeedSaveDark32)); + } + } //设置状态栏也是红色 /*m_saveFile->setIcon(QIcon(NeedSaveBarIcon)); @@ -2632,7 +2947,6 @@ void CCNotePad::tabClose(int index, bool isInQuit) QString k = m_receneOpenFileList.takeLast(); if (m_receneOpenFile.contains(k)) { - delete m_receneOpenFile.value(k); m_receneOpenFile.remove(k); } @@ -2708,7 +3022,7 @@ ScintillaEditView* CCNotePad::newTxtFile(QString name, int index, QString conten QString label = name; - int curIndex = ui.editTabWidget->addTab(pEdit, QIcon(TabNoNeedSave), label); + int curIndex = ui.editTabWidget->addTab(pEdit, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE)? TabNoNeedSave:TabNoNeedSaveDark32), label); QVariant editViewFilePath(label); pEdit->setProperty(Edit_View_FilePath, editViewFilePath); @@ -2753,6 +3067,12 @@ ScintillaEditView* CCNotePad::newTxtFile(QString name, int index, QString conten pEdit->setWrapMode(QsciScintilla::WrapWord); } + if (s_showblank == 1) + { + pEdit->setWhitespaceVisibility(QsciScintilla::WsVisible); + pEdit->setEolVisibility(true); + } + if (s_zoomValue != 0) { pEdit->zoomTo(s_zoomValue); @@ -2859,7 +3179,7 @@ bool CCNotePad::openBigTextFile(QString filePath) showBigTextFile(pEdit, txtFile); - int curIndex = ui.editTabWidget->addTab(pEdit, QIcon(TabNoNeedSave), getShortName(fileLabel)); + int curIndex = ui.editTabWidget->addTab(pEdit, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE) ? TabNoNeedSave : TabNoNeedSaveDark32), getShortName(fileLabel)); ui.editTabWidget->setCurrentIndex(curIndex); @@ -2981,7 +3301,7 @@ bool CCNotePad::openTextFile(QString filePath, bool isCheckHex, CODE_ID code) saveFile(filePath, pEdit, false); } - int curIndex = ui.editTabWidget->addTab(pEdit, QIcon(TabNoNeedSave), getShortName(fileLabel)); + int curIndex = ui.editTabWidget->addTab(pEdit, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE) ? TabNoNeedSave : TabNoNeedSaveDark32), getShortName(fileLabel)); ui.editTabWidget->setCurrentIndex(curIndex); connect(pEdit, &ScintillaEditView::cursorPositionChanged, this, &CCNotePad::slot_LineNumIndexChange, Qt::QueuedConnection); @@ -3024,6 +3344,11 @@ bool CCNotePad::openTextFile(QString filePath, bool isCheckHex, CODE_ID code) { pEdit->setWrapMode(QsciScintilla::WrapWord); } + if (s_showblank == 1) + { + pEdit->setWhitespaceVisibility(QsciScintilla::WsVisible); + pEdit->setEolVisibility(true); + } if (s_indent == 1) { @@ -3190,7 +3515,7 @@ bool CCNotePad::openHexFile(QString filePath) showHexFile(pEdit,hexFile); - int curIndex = ui.editTabWidget->addTab(pEdit, QIcon(TabNoNeedSave), getShortName(fileLabel)); + int curIndex = ui.editTabWidget->addTab(pEdit, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE) ? TabNoNeedSave : TabNoNeedSaveDark32), getShortName(fileLabel)); ui.editTabWidget->setCurrentIndex(curIndex); @@ -3490,6 +3815,8 @@ void CCNotePad::updateProAfterSaveNewFile(int curTabIndex, QString fileName, Sci ui.editTabWidget->setTabToolTip(curTabIndex, fileName); + autoSetDocLexer(pEdit); + addWatchFilePath(fileName); } @@ -3579,7 +3906,7 @@ void CCNotePad::slot_actionSaveFile_toggle(bool /*checked*/) } //一旦保存后,设置tab为不需要保存状态 - ui.editTabWidget->setTabIcon(index, QIcon(TabNoNeedSave)); + ui.editTabWidget->setTabIcon(index, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE) ? TabNoNeedSave : TabNoNeedSaveDark32)); //m_saveFile->setIcon(QIcon(NoNeedSaveBarIcon)); m_saveFile->setEnabled(false); @@ -3767,7 +4094,7 @@ void CCNotePad::slot_actionSaveAsFile_toggle(bool /*checked*/) //保持完毕后,设置tab为蓝色,显示为不需要保持状态 - ui.editTabWidget->setTabIcon(index, QIcon(TabNoNeedSave)); + ui.editTabWidget->setTabIcon(index, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE) ? TabNoNeedSave : TabNoNeedSaveDark32)); //m_saveFile->setIcon(QIcon(NoNeedSaveBarIcon)); m_saveFile->setEnabled(false); @@ -3966,6 +4293,7 @@ void CCNotePad::slot_timerAutoSave() //凡是存在临时文件的,一定是脏文件,即关闭时没有保存的文件。 //而不存在临时文件,只有一个记录在list中的文件,表示不脏的文件,直接打开原始文件即可。 //1:非脏新建文件 2 非脏的已存在文件 3 脏的新建文件 4 脏的老文件。 +//5和3一样,但是多了一个语法设置保存 void CCNotePad::saveTempFile(ScintillaEditView* pEdit,int index, QSettings& qs) { //16进制的处理逻辑 @@ -4020,8 +4348,25 @@ void CCNotePad::saveTempFile(ScintillaEditView* pEdit,int index, QSettings& qs) QString fileName = pEdit->property(Edit_View_FilePath).toString(); //把文件记录到qs中去 //index一定不能重复。2表示新建 + int lexId = L_TXT; + if (pEdit->lexer() != nullptr) + { + lexId = pEdit->lexer()->lexerId(); + if (lexId > L_TXT) + { + lexId = L_TXT; + } + } + + if (lexId == L_TXT) + { qs.setValue(QString("%1").arg(index), QString("%1|3").arg(fileName)); } + else + { + qs.setValue(QString("%1").arg(index), QString("%1|%2|5").arg(fileName).arg(lexId)); + } + } } else @@ -4143,7 +4488,6 @@ void CCNotePad::closeFileStatic(int index, QSettings& qs) QString k = m_receneOpenFileList.takeLast(); if (m_receneOpenFile.contains(k)) { - delete m_receneOpenFile.value(k); m_receneOpenFile.remove(k); } @@ -4402,20 +4746,6 @@ void CCNotePad::slot_zoomin() } } - - - //QWidget* pw = ui.editTabWidget->currentWidget(); - //ScintillaEditView* pEdit = dynamic_cast(pw); - - //if (pEdit != nullptr) - //{ - // pEdit->zoomIn(); - - // int curZoomValue = pEdit->execute(SCI_GETZOOM); - // s_zoomValue = curZoomValue; - // NddSetting::updataKeyValueFromNumSets(ZOOMVALUE, s_zoomValue); - // ui.statusBar->showMessage(tr("Current Zoom Value is %1%").arg(100+10*curZoomValue)); - //} } void CCNotePad::slot_zoomout() @@ -4440,18 +4770,6 @@ void CCNotePad::slot_zoomout() } } - - /*QWidget* pw = ui.editTabWidget->currentWidget(); - ScintillaEditView* pEdit = dynamic_cast(pw); - - if (pEdit != nullptr) - { - pEdit->zoomOut(); - int curZoomValue = pEdit->execute(SCI_GETZOOM); - s_zoomValue = curZoomValue; - NddSetting::updataKeyValueFromNumSets(ZOOMVALUE, s_zoomValue); - ui.statusBar->showMessage(tr("Current Zoom Value is %1%").arg(100+10*curZoomValue)); - }*/ } //只切换了当前文档。可能会耗时,所以不全部换行。在文档切换的时候,需要检查下当前文档的自动换行状态。 @@ -4459,9 +4777,6 @@ void CCNotePad::slot_wordwrap(bool checked) { QWidget* pw = ui.editTabWidget->currentWidget(); - //ui.actionWrap->setChecked(checked); - //m_wordwrap->setChecked(checked); - //是m_wordwrap快捷按钮按钮发出,同步菜单上的状态 if (nullptr != dynamic_cast(sender())) { @@ -4488,7 +4803,16 @@ void CCNotePad::slot_wordwrap(bool checked) void CCNotePad::slot_allWhite(bool checked) { - QWidget* pw = ui.editTabWidget->currentWidget(); + //是m_wordwrap快捷按钮按钮发出,同步菜单上的状态 + if (nullptr != dynamic_cast(sender())) + { + ui.actionShowAll->setChecked(checked); + } + + for (int i = ui.editTabWidget->count() - 1; i >= 0; --i) + { + QWidget* pw = ui.editTabWidget->widget(i); + ScintillaEditView* pEdit = dynamic_cast(pw); if (pEdit != nullptr) @@ -4506,8 +4830,31 @@ void CCNotePad::slot_allWhite(bool checked) } } + s_showblank = (checked) ? 1 : 0; + NddSetting::updataKeyValueFromNumSets(SHOWSPACE_KEY, s_showblank); +} -//全部都会生效,和自动换行不一样,不会全部设置 + +void CCNotePad::slot_show_spaces(bool checked) +{ + QWidget* pw = ui.editTabWidget->currentWidget(); + ScintillaEditView* pEdit = dynamic_cast(pw); + + if (pEdit != nullptr) + { + if (checked) + { + pEdit->setWhitespaceVisibility(QsciScintilla::WsVisible); + } + else + { + pEdit->setWhitespaceVisibility(QsciScintilla::WsInvisible); + } + } +} + + +//全部都会生效,和自动换行不一样,会全部设置 void CCNotePad::slot_indentGuide(bool willBeShowed) { for (int i = ui.editTabWidget->count() - 1; i >= 0; --i) @@ -4573,7 +4920,24 @@ void CCNotePad::initFindWindow() if (m_pFindWin.isNull()) { m_pFindWin = new FindWin(this); + connect(m_pFindWin,&QObject::destroyed,this,&CCNotePad::slot_saveSearchHistory); + pFind = dynamic_cast(m_pFindWin.data()); + + if (s_findHistroy.isEmpty()) + { + //从历史查找记录文件中加载 + QString searchHistory = QString("notepad/searchHistory");//历史查找记录 + QSettings qs(QSettings::IniFormat, QSettings::UserScope, searchHistory); + qs.setIniCodec("UTF-8"); + + if (qs.contains("keys")) + { + QVariant history = qs.value("keys", ""); + s_findHistroy = history.toStringList(); + } + } + pFind->setFindHistory(&s_findHistroy); pFind->setTabWidget(ui.editTabWidget); @@ -4624,6 +4988,22 @@ void CCNotePad::initFindWindow() } +//保存历史查找记录 +void CCNotePad::slot_saveSearchHistory() +{ + //从历史查找记录文件中加载 + QString searchHistory = QString("notepad/searchHistory");//历史查找记录 + QSettings qs(QSettings::IniFormat, QSettings::UserScope, searchHistory); + qs.setIniCodec("UTF-8"); + + if (s_findHistroy.count() > 15) + { + s_findHistroy = s_findHistroy.mid(0, 15); + } + qs.setValue("keys", s_findHistroy); + qs.sync(); +} + void CCNotePad::slot_replace() { initFindWindow(); @@ -4631,6 +5011,9 @@ void CCNotePad::slot_replace() pFind->setCurrentTab(REPLACE_TAB); pFind->activateWindow(); pFind->showNormal(); +#ifdef uos + adjustWInPos(pFind); +#endif } //标记高亮 @@ -4641,6 +5024,9 @@ void CCNotePad::slot_markHighlight() pFind->setCurrentTab(MARK_TAB); pFind->activateWindow(); pFind->showNormal(); +#ifdef uos + adjustWInPos(pFind); +#endif } //取消所有标记高亮 @@ -4653,21 +5039,103 @@ void CCNotePad::slot_clearMark() { ScintillaEditView* pEdit = dynamic_cast(pw); int docEnd = pEdit->length(); - pEdit->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE); + for (int i = 0; i < 5; ++i) + { + pEdit->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE_EXT5+i); pEdit->execute(SCI_INDICATORCLEARRANGE, 0, docEnd); + } pEdit->releaseAllMark(); } } -void CCNotePad::slot_wordHighlight() +void CCNotePad::clearHighlightWord(QString signWord, ScintillaEditView* pEdit) { + if (pEdit == nullptr) + { + QWidget* pw = ui.editTabWidget->currentWidget(); + pEdit = dynamic_cast(pw); + if (HEX_TYPE == getDocTypeProperty(pw) || (pEdit == nullptr)) + { + return; + } + } + + //如果当前已经高亮,则取消高亮 + QList& curMarkRecord = pEdit->getCurMarkRecord(); + + bool isClearMark = false; + + int i = 0; + for (; i < curMarkRecord.size(); ++i) + { + if (signWord == curMarkRecord.at(i)->findText) + { + isClearMark = true; + break; + } + } + + if (isClearMark) + { + //取消高亮 + FindRecords* r = curMarkRecord.at(i); + + pEdit->execute(SCI_SETINDICATORCURRENT, r->hightLightColor); + + for (int j = 0; j < r->records.size(); ++j) + { + const FindRecord& oneRecord = r->records.at(j); + pEdit->execute(SCI_INDICATORCLEARRANGE, oneRecord.pos, oneRecord.end - oneRecord.pos); + } + + //必须删除释放,否则内存泄露 + delete r; + curMarkRecord.removeAt(i); + } + + } +void CCNotePad::slot_clearWordHighlight() +{ + QWidget* pw = ui.editTabWidget->currentWidget(); + int docType = getDocTypeProperty(pw); + QString signWord; + ScintillaEditView* pEdit; + int srcPostion = -1; + + if ((TXT_TYPE == docType) || (BIG_TEXT_TYPE == docType)) + { + pEdit = dynamic_cast(pw); + if (pEdit != nullptr && pEdit->hasSelectedText()) + { + signWord = pEdit->selectedText(); + } + } + else if (HEX_TYPE == docType) + { + return; + } + + if (signWord.isEmpty()) + { + //如果没有选择内容,则自动获取当前的单词,进行1个匹配。注意中文也是一样,检测到前后的空格,看做1个单词 + srcPostion = pEdit->execute(SCI_GETCURRENTPOS); + signWord = pEdit->wordAtPosition(srcPostion); + } + + if (!signWord.isEmpty()) + { + clearHighlightWord(signWord, pEdit); + } +} + +void CCNotePad::slot_wordHighlight() +{ QWidget* pw = ui.editTabWidget->currentWidget(); int docType = getDocTypeProperty(pw); QString signWord; ScintillaEditView* pEdit; int srcPostion = -1; -// int firstDisLineNum = 0; if ((TXT_TYPE == docType) || (BIG_TEXT_TYPE == docType)) { @@ -4679,11 +5147,6 @@ void CCNotePad::slot_wordHighlight() } else if (HEX_TYPE == docType) { - /*ScintillaHexEditView* pEdit = dynamic_cast(pw); - if (pEdit != nullptr && pEdit->hasSelectedText()) - { - signWord = pEdit->selectedText(); - }*/ return; } @@ -4691,8 +5154,6 @@ void CCNotePad::slot_wordHighlight() { //如果没有选择内容,则自动获取当前的单词,进行1个匹配。注意中文也是一样,检测到前后的空格,看做1个单词 srcPostion = pEdit->execute(SCI_GETCURRENTPOS); - //firstDisLineNum = pEdit->execute(SCI_GETFIRSTVISIBLELINE); - signWord = pEdit->wordAtPosition(srcPostion); } @@ -4713,12 +5174,15 @@ void CCNotePad::slot_wordHighlight() } } + bool isNeedReColor = false; + //取消高亮 if (isClearMark) { FindRecords* r = curMarkRecord.at(i); + isNeedReColor = (r->hightLightColor != CCNotePad::s_curMarkColorId); - pEdit->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE); + pEdit->execute(SCI_SETINDICATORCURRENT, r->hightLightColor); for (int j = 0; j < r->records.size(); ++j) { @@ -4730,20 +5194,15 @@ void CCNotePad::slot_wordHighlight() delete r; curMarkRecord.removeAt(i); } - else + + //如果就颜色和当前颜色不一样,则还需要重新高亮 + if(!isClearMark || isNeedReColor) { //反之高亮 initFindWindow(); FindWin* pFind = dynamic_cast(m_pFindWin.data()); //静默调用 pFind->markAllWord(signWord); - - //if (srcPostion != -1) - //{ - // //恢复原来的Pos位置 - // pEdit->execute(SCI_GOTOPOS, srcPostion); - // pEdit->execute(SCI_SETFIRSTVISIBLELINE, firstDisLineNum); - //} } } } @@ -5037,23 +5496,7 @@ void CCNotePad::slot_gotoline() } } -void CCNotePad::slot_show_spaces(bool checked) -{ - QWidget* pw = ui.editTabWidget->currentWidget(); - ScintillaEditView* pEdit = dynamic_cast(pw); - if (pEdit != nullptr) - { - if (checked) - { - pEdit->setWhitespaceVisibility(QsciScintilla::WsVisible); - } - else - { - pEdit->setWhitespaceVisibility(QsciScintilla::WsInvisible); - } - } -} void CCNotePad::slot_show_line_end(bool checked) { @@ -5073,25 +5516,7 @@ void CCNotePad::slot_show_line_end(bool checked) } } -void CCNotePad::slot_show_all(bool checked) -{ - QWidget* pw = ui.editTabWidget->currentWidget(); - ScintillaEditView* pEdit = dynamic_cast(pw); - if (pEdit != nullptr) - { - if (checked) - { - pEdit->setWhitespaceVisibility(QsciScintilla::WsVisible); - pEdit->setEolVisibility(true); - } - else - { - pEdit->setWhitespaceVisibility(QsciScintilla::WsInvisible); - pEdit->setEolVisibility(false); - } - } -} void CCNotePad::slot_load_with_gbk() { @@ -5503,6 +5928,15 @@ void CCNotePad::slot_aboutNdd() QString title = tr("Ndd Version %1").arg(VersionStr); pWin->setWindowTitle(title); pWin->appendText(title); + int status = NddSetting::getKeyValueFromNumSets(SOFT_STATUS); + if (1 == status) + { + pWin->appendText(tr("Registered Version")); + } + else + { + pWin->appendText(tr("Free Trial")); + } pWin->show(); registerEscKeyShort(pWin); #ifdef uos @@ -5614,17 +6048,17 @@ bool CCNotePad::nativeEvent(const QByteArray & eventType, void * message, long * ui.editTabWidget->setCurrentIndex(retIndex); } + //窗口如果最小化,则在任务栏下面闪动 + QApplication::alert(this); + activateWindow(); - showNormal(); - //showMaximized(); - *result = 1; return true; } else if (cds->dwData == OPEN_NOTEPAD_TYPE) { activateWindow(); - showNormal(); + QApplication::alert(this); *result = 1; return true; @@ -5770,7 +6204,7 @@ void CCNotePad::slot_tabFormatChange(bool tabLenChange, bool useTabChange) } if (useTabChange) { - pEdit->execute(SCI_SETUSETABS, !ScintillaEditView::s_noUseTab); + pEdit->setIndentationsUseTabs(!ScintillaEditView::s_noUseTab); } } } @@ -5856,6 +6290,12 @@ void CCNotePad::slot_toMistyRose() NddSetting::updataKeyValueFromNumSets(SKIN_KEY, 7); } +void CCNotePad::slot_toDarkStyle() +{ + StyleSet::setBlackStyle(); + NddSetting::updataKeyValueFromNumSets(SKIN_KEY, 8); +} + //获取注册码 void CCNotePad::slot_register() @@ -5971,10 +6411,24 @@ void CCNotePad::restoreCleanExistFile(QString& filePath) } //3 脏的新建文件。内容在tempFilePath中 -void CCNotePad::restoreDirtyNewFile(QString& fileName, QString& tempFilePath) +void CCNotePad::restoreDirtyNewFile(QString& fileName, QString& tempFilePath, int lexid) { int index = FileManager::getInstance().getNextNewFileId(); - newTxtFile(fileName, index, tempFilePath); + ScintillaEditView* pEdit = newTxtFile(fileName, index, tempFilePath); + if (lexid != L_TXT) + { + QsciLexer* lexer = pEdit->createLexer(lexid); + if (lexer != nullptr) + { + if (nullptr != pEdit->lexer()) + { + delete pEdit->lexer(); + } + + pEdit->setLexer(lexer); + syncCurDocLexerToMenu(pEdit); + } + } m_saveFile->setEnabled(true); m_saveAllFile->setEnabled(true); } @@ -6062,7 +6516,7 @@ bool CCNotePad::restoreDirtyExistFile(QString& filePath, QString& tempFilePath) } } - int curIndex = ui.editTabWidget->addTab(pEdit, QIcon(TabNoNeedSave), getShortName(fileLabel)); + int curIndex = ui.editTabWidget->addTab(pEdit, QIcon((StyleSet::getCurrentSytleId() != BLACK_SE) ? TabNoNeedSave : TabNoNeedSaveDark32), getShortName(fileLabel)); ui.editTabWidget->setCurrentIndex(curIndex); connect(pEdit, &ScintillaEditView::cursorPositionChanged, this, &CCNotePad::slot_LineNumIndexChange, Qt::QueuedConnection); @@ -6104,6 +6558,12 @@ bool CCNotePad::restoreDirtyExistFile(QString& filePath, QString& tempFilePath) pEdit->setWrapMode(QsciScintilla::WrapWord); } + if (s_showblank == 1) + { + pEdit->setWhitespaceVisibility(QsciScintilla::WsVisible); + pEdit->setEolVisibility(true); + } + if (s_indent == 1) { pEdit->setIndentGuide(true); @@ -6165,7 +6625,13 @@ int CCNotePad::restoreLastFiles() value = qs.value(key).toString(); if (!value.isEmpty()) { - int type = value.right(1).toInt(); + bool ok = false; + int type = value.right(1).toInt(&ok); + + if (!ok) + { + continue; + } QString path = value.left(value.size()-2); switch (type) @@ -6194,6 +6660,24 @@ int CCNotePad::restoreLastFiles() restoreDirtyExistFile(path, tempFileName); } break; + case 5: + { + //与3一样,不过需要恢复语法 + int pos = path.lastIndexOf("|"); + QString filePath = path.mid(0,pos); + int lexerId = path.mid(pos + 1).toInt(&ok); + if (!ok) + { + continue; + } + + QString qsSavePath = qs.fileName(); + QFileInfo fi(qsSavePath); + QString saveDir = fi.dir().absolutePath(); + QString tempFileName = QString("%1/%2").arg(saveDir).arg(key); + restoreDirtyNewFile(filePath, tempFileName, lexerId); + } + break; default: break; } @@ -6815,6 +7299,7 @@ void CCNotePad::slot_findNext() void CCNotePad::slot_findPrev() { + initFindWindow(); FindWin* pFind = dynamic_cast(m_pFindWin.data()); pFind->setCurrentTab(FIND_TAB); pFind->findPrev(); @@ -6849,3 +7334,85 @@ void CCNotePad::slot_escQuit() escSc->parentWidget()->close(); } } + +//格式化xml语言 +void CCNotePad::slot_formatXml() +{ + ScintillaEditView* _pEditView = getCurEditView(); + if (_pEditView == nullptr && _pEditView->isReadOnly()) + { + return; + } + + QString text = _pEditView->text(); + if (text.isEmpty()) + { + return; + } + + QString xmlOut; + + QXmlStreamReader reader(text); + QXmlStreamWriter writer(&xmlOut); + writer.setAutoFormatting(true); + + while (!reader.atEnd()) { + reader.readNext(); + if (!reader.isWhitespace()) { + writer.writeCurrentToken(reader); + } + } + + if (reader.hasError()) + { + ui.statusBar->showMessage(tr("Xml format error, please check!"), 8000); + QApplication::beep(); + return; + } + + _pEditView->setText(xmlOut); + +} + +void CCNotePad::slot_formatJson() +{ + ScintillaEditView* _pEditView = getCurEditView(); + if (_pEditView == nullptr && _pEditView->isReadOnly()) + { + return; + } + + QString text = _pEditView->text(); + if (text.isEmpty()) + { + return; + } + + QByteArray bytes = text.toUtf8(); + + QJsonParseError parseError; + QJsonDocument doc = QJsonDocument::fromJson(bytes, &parseError); + + if (QJsonParseError::NoError != parseError.error) + { + ui.statusBar->showMessage(tr("Json format error, please check!"),8000); + QApplication::beep(); + return; + } + + QString content(doc.toJson(QJsonDocument::Indented)); + _pEditView->setText(content); +} + +//清空历史打开记录 +void CCNotePad::slot_clearHistoryOpenList() +{ + for (QMap ::iterator it = m_receneOpenFile.begin(); it != m_receneOpenFile.end(); ++it) + { + delete (*it); + } + m_receneOpenFile.clear(); + + m_receneOpenFileList.clear(); + +} diff --git a/src/cceditor/ccnotepad.h b/src/cceditor/ccnotepad.h index 3189fbf..7a7c0cc 100755 --- a/src/cceditor/ccnotepad.h +++ b/src/cceditor/ccnotepad.h @@ -79,6 +79,8 @@ public: CCNotePad(bool isMainWindows = true, QWidget *parent = Q_NULLPTR); ~CCNotePad(); + void quickshow(); + void setCodeBarLabel(CODE_ID id); void setLineEndBarLabel(RC_LINE_FORM lineEnd); @@ -124,6 +126,9 @@ public: ScintillaEditView * getCurEditView(); void getCurUseLexerTags(QVector& tag); + void clearHighlightWord(QString signWord, ScintillaEditView* pEdit = nullptr); + + signals: void signSendRegisterKey(QString key); void signRegisterReplay(int code); @@ -151,6 +156,10 @@ public slots: void slot_viewLexerChange(QString tag); void slot_findInDir(); void slot_showFileInExplorer(); + void slot_wordHighlight(); + + void slot_clearWordHighlight(); + void slot_clearMark(); protected: void closeEvent(QCloseEvent *event) override; void dragEnterEvent(QDragEnterEvent* event) override; @@ -189,8 +198,7 @@ private slots: void slot_replace(); void slot_markHighlight(); - void slot_clearMark(); - void slot_wordHighlight(); + void slot_findResultPosChangeed(Qt::DockWidgetArea area); void slot_findResultItemDoubleClick(const QModelIndex & index); void slot_showFindAllInCurDocResult(FindRecords * record); @@ -203,7 +211,6 @@ private slots: void slot_gotoline(); void slot_show_spaces(bool check); void slot_show_line_end(bool check); - void slot_show_all(bool check); void slot_load_with_gbk(); void slot_load_with_utf8(); void slot_load_with_utf8_bom(); @@ -238,6 +245,7 @@ private slots: void slot_toRiceYellow(); void slot_toYellow(); void slot_toSilverStyle(); + void slot_toDarkStyle(); void slot_toLavenderBlush(); void slot_toMistyRose(); void slot_register(); @@ -294,15 +302,23 @@ private slots: void slot_findNext(); void slot_findPrev(); void slot_escQuit(); + void slot_formatXml(); + void slot_formatJson(); + + void slot_clearHistoryOpenList(); + void slot_bookMarkAction(); void slot_loadBookMarkMenu(); - + void slot_markColorGroup(QAction * action); + void slot_loadMarkColor(); + void slot_saveSearchHistory(); private: void initFindResultDockWin(); void enableEditTextChangeSign(ScintillaEditView * pEdit); void disEnableEditTextChangeSign(ScintillaEditView * pEdit); bool saveFile(QString fileName, ScintillaEditView * pEdit, bool isBakWrite=true, bool isStatic=false, bool isClearSwpFile=false); void updateProAfterSaveNewFile(int curTabIndex, QString fileName, ScintillaEditView * pEdit); + void setShoctIcon(int iconSize=24); void initToolBar(); void setTxtLexer(ScintillaEditView * pEdit); @@ -335,6 +351,7 @@ private: bool checkRoladFile(ScintillaEditView * pEdit); void reloadEditFile(ScintillaEditView * pEidt); void initFindWindow(); + void setToFileRightMenu(); QString getShortName(const QString& name); @@ -361,7 +378,7 @@ private: void restoreCleanNewFile(QString & fileName); void restoreCleanExistFile(QString & filePath); - void restoreDirtyNewFile(QString & fileName, QString & tempFilePath); + void restoreDirtyNewFile(QString & fileName, QString & tempFilePath, int lexid=L_TXT); bool restoreDirtyExistFile(QString & fileName, QString & tempFilePath); ScintillaEditView* newTxtFile(QString Name, int index, QString contentPath=""); @@ -385,14 +402,6 @@ private: QLabel* m_lineNumLabel; QLabel* m_langDescLabel; - QToolButton* m_saveFile; - QToolButton* m_saveAllFile; - QToolButton* m_autoSaveAFile; - QToolButton* m_cutFile; - QToolButton* m_copyFile; - QToolButton* m_undo; - QToolButton* m_redo; - QMenu* m_tabRightClickMenu; QDockWidget* m_dockSelectTreeWin; @@ -446,9 +455,6 @@ private: QAction* m_selectLeftCmp; QAction* m_selectRightCmp; - QToolButton* m_wordwrap; - QToolButton* m_allWhite; - QToolButton* m_indentGuide; //所有打开的notebook均保存起来。关闭时切换share里面保存的地址 static QList *s_padInstances; @@ -458,33 +464,54 @@ private: QPointer m_pHexGotoWin; - QToolButton* m_preHexPage; - QToolButton* m_nextHexPage; - QToolButton* m_gotoHexPage; - - static QList s_findHistroy; - + static QStringList s_findHistroy; static int s_padTimes; - //static QFont s_txtFont; - - //static QFont s_proLangFont; - int m_curSoftLangs; //当前语言0:自动 1 中文 2 英语 static int s_autoWarp; //自动换行 static int s_indent; //自动缩进 + static int s_showblank; //显示空白 static int s_zoomValue; - //QString m_txtFontStr;//从数据库读取的字体字符串 - //QString m_proLangFontStr;//从数据库读取的字体字符串 - QTranslator* m_translator; - QTimer * m_timerAutoSave; + QToolButton* m_newFile; + QToolButton* m_openFile; + QToolButton* m_saveFile; + QToolButton* m_saveAllFile; + QToolButton* m_autoSaveAFile; + QToolButton* m_closeFile; + QToolButton* m_closeAllFile; + QToolButton* m_cutFile; + QToolButton* m_copyFile; + QToolButton* m_pasteFile; + QToolButton* m_undo; + QToolButton* m_redo; + QToolButton* m_findText; + QToolButton* m_replaceText; + QToolButton* m_markText; + QToolButton* m_signText; + QToolButton* m_clearMark; + QToolButton* m_zoomin; + QToolButton* m_zoomout; + QToolButton* m_wordwrap; + QToolButton* m_allWhite; + QToolButton* m_indentGuide; + QToolButton* m_preHexPage; + QToolButton* m_nextHexPage; + QToolButton* m_gotoHexPage; + + QToolButton* m_transcode; + QToolButton* m_rename; + + int m_curIconSize; + int m_curColorIndex; public: static QString s_lastOpenDirPath; static int s_restoreLastFile; //自动恢复上次打开的文件 + static int s_curStyleId; + static int s_curMarkColorId; }; diff --git a/src/cceditor/ccnotepad.ui b/src/cceditor/ccnotepad.ui index b40b778..f29dbea 100755 --- a/src/cceditor/ccnotepad.ui +++ b/src/cceditor/ccnotepad.ui @@ -96,6 +96,7 @@ + @@ -186,6 +187,11 @@ Book Mark + + + Mark Color + + @@ -194,6 +200,7 @@ + @@ -203,9 +210,9 @@ Display symbols - + - + @@ -371,6 +378,7 @@ V + @@ -470,6 +478,7 @@ + @@ -478,11 +487,20 @@ + + + Format Language + + + + + + @@ -527,7 +545,10 @@ New - Ctrl+N + Ctrl+T + + + Qt::WindowShortcut @@ -674,7 +695,7 @@ Ctrl+G - + true @@ -690,7 +711,7 @@ Show end of line - + true @@ -1907,6 +1928,85 @@ 1 + + + Format Xml + + + + + Format Json + + + + + true + + + Dark + + + + + true + + + VB + + + + + true + + + 1 + + + + + true + + + 2 + + + + + true + + + 3 + + + + + true + + + 4 + + + + + true + + + 5 + + + + + true + + + loop + + + + + Clear History + + @@ -2218,7 +2318,7 @@ - actionshow_Spaces_tabs + actionShowSpaces triggered(bool) CCNotePad slot_show_spaces(bool) @@ -2250,10 +2350,10 @@ - actionshow_all + actionShowAll triggered(bool) CCNotePad - slot_show_all(bool) + slot_allWhite(bool) -1 @@ -2637,7 +2737,7 @@ actionLavenderBlush triggered() CCNotePad - slot_toThinBlueStyle() + slot_toLavenderBlush() -1 @@ -3353,6 +3453,70 @@ + + actionFormat_Xml + triggered() + CCNotePad + slot_formatXml() + + + -1 + -1 + + + 728 + 394 + + + + + actionFormat_Json + triggered() + CCNotePad + slot_formatJson() + + + -1 + -1 + + + 728 + 394 + + + + + actionDark + triggered() + CCNotePad + slot_toDarkStyle() + + + -1 + -1 + + + 728 + 394 + + + + + actionClear_History + triggered() + CCNotePad + slot_clearHistoryOpenList() + + + -1 + -1 + + + 728 + 394 + + + slot_actionNewFile_toggle(bool) @@ -3376,7 +3540,6 @@ slot_gotoline() slot_show_spaces(bool) slot_show_line_end(bool) - slot_show_all(bool) slot_encode_gbk() slot_encode_utf8() slot_encode_utf8_bom() @@ -3447,5 +3610,10 @@ slot_load_with_big5() slot_encode_big5() slot_aboutNdd() + slot_formatXml() + slot_formatJson() + slot_allWhite(bool) + slot_toDarkStyle() + slot_clearHistoryOpenList() diff --git a/src/cceditor/filemanager.cpp b/src/cceditor/filemanager.cpp index 6707b68..08c3091 100755 --- a/src/cceditor/filemanager.cpp +++ b/src/cceditor/filemanager.cpp @@ -9,6 +9,7 @@ #include #include + FileManager::FileManager():m_lastErrorCode(NONE_ERROR) { } diff --git a/src/cceditor/filemanager.h b/src/cceditor/filemanager.h index a2ff9cf..65ff725 100755 --- a/src/cceditor/filemanager.h +++ b/src/cceditor/filemanager.h @@ -6,6 +6,7 @@ #include #include #include +#include class ScintillaEditView; class ScintillaHexEditView; diff --git a/src/doctypelistview.cpp b/src/doctypelistview.cpp index 437d1b1..46b3a79 100755 --- a/src/doctypelistview.cpp +++ b/src/doctypelistview.cpp @@ -16,18 +16,16 @@ QStringList DocTypeListView::s_supportFileExt = (QStringList ()<< "common" << "m QMap* DocTypeListView::s_binFileExts = nullptr; - QStringList DocTypeListView::s_extBindFileType; -#if 0 -= (QStringList() << ".txt:.log" << ".ini:.inf" << ".h:.hh:.hpp:.hxx:.c:.cpp:.cxx:.cc:.m:.mm:.vcxproj:.vcproj:.props:vsprops:mainfest:.go:.mod" \ - << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:.js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ - << ".sh:.bsh:.bash:.bat:.cmd:.nsi:.nsh:.lua:.pl:.pm:.py" << ".rc:.as:.mx:.vb:.vbs" << ".f:.for:.f90:.f95:.f2k:.tex:.sql" \ - << ".nfo:.mak" << ".ui:.pro:.pri:.qrc" << ""); -#endif QStringList HEX_FILE_EXTS_LIST = (QStringList() << "exe" << "dll" << "png" << "jpg" << "doc" << "docx" << "ppt" << "pptx" \ << "zip" << "gz" << "rar" << "pdf" << "7z" << "lib" << "so" << "db" << "obj" << "pdb" << "bmp" << "ico" << "qm" << "icns" << "jpeg" << "res" << "exp" << "ilk" << "deb"); +QStringList INIT_EXTS_TYPES = (QStringList() << ".txt:.log" << ".ini:.inf" << ".h:.hh:.hpp:.hxx:.c:.cpp:.cxx:.cc:.m:.mm:.vcxproj:.vcproj:.props:vsprops:mainfest:.go:.mod" \ +<< ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:.js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ +<< ".sh:.bsh:.bash:.bat:.cmd:.nsi:.nsh:.lua:.pl:.pm:.py" << ".rc:.as:.mx:.vb:.vbs" << ".f:.for:.f90:.f95:.f2k:.tex:.sql" \ +<< "nfo:.mak" << ".ui:.pro:.pri:.qrc:.qss"); + //20220402发现bug:在1.11中引入深入对比后,会在子线程中调用这个初始化函数。引发了后续的sqlite错误。 //务必要保证这些实例和数据库对象,是在主线程中创建的。 void DocTypeListView::initSupportFileTypes() @@ -53,11 +51,13 @@ void DocTypeListView::initSupportFileTypes() //如果数据库不存在,则使用默认值来进行初始化 if (!NddSetting::isDbExist()) { - QStringList types; + QStringList types = INIT_EXTS_TYPES; +#if 0 types << ".txt:.log" << ".ini:.inf" << ".h:.hh:.hpp:.hxx:.c:.cpp:.cxx:.cc:.m:.mm:.vcxproj:.vcproj:.props:vsprops:mainfest:.go:.mod" \ - << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ + << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:.js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ << ".sh:.bsh:.bash:.bat:.cmd:.nsi:.nsh:.lua:.pl:.pm:.py" << ".rc:.as:.mx:.vb:.vbs" << ".f:.for:.f90:.f95:.f2k:.tex:.sql" \ << "nfo:.mak" << ".ui:.pro:.pri:.qrc"; +#endif QString typeStr = types.join(":"); @@ -71,10 +71,13 @@ void DocTypeListView::initSupportFileTypes() } } + s_extBindFileType << types << ""; +#if 0 s_extBindFileType << ".txt:.log" << ".ini:.inf" << ".h:.hh:.hpp:.hxx:.c:.cpp:.cxx:.cc:.m:.mm:.vcxproj:.vcproj:.props:vsprops:mainfest:.go:.mod" \ - << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ + << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:.js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ << ".sh:.bsh:.bash:.bat:.cmd:.nsi:.nsh:.lua:.pl:.pm:.py" << ".rc:.as:.mx:.vb:.vbs" << ".f:.for:.f90:.f95:.f2k:.tex:.sql" \ << ".nfo:.mak" << ".ui:.pro:.pri:.qrc" << ""; +#endif } else { @@ -87,11 +90,15 @@ void DocTypeListView::initSupportFileTypes() { //没有读取到,这是第一次启动软件,没有写入导致。在这里进行第一次的写入 - QStringList types; + QStringList types = INIT_EXTS_TYPES; + types << ""; + +#if 0 types << ".txt:.log" << ".ini:.inf" << ".h:.hh:.hpp:.hxx:.c:.cpp:.cxx:.cc:.m:.mm:.vcxproj:.vcproj:.props:vsprops:mainfest:.go:.mod" \ - << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ + << ".java:.cs:.pas:.pp:.inc" << ".html:.htm:.shtml:.shtm:.hta:.asp:.aspx:.css:.js:.json:.jsm:.jsp:.php:.php3:.php4:.php5:.phps:.phpt:.phtml:.xml:.xhtml:.xht:.xul:.kml:.xaml:.xsml" \ << ".sh:.bsh:.bash:.bat:.cmd:.nsi:.nsh:.lua:.pl:.pm:.py" << ".rc:.as:.mx:.vb:.vbs" << ".f:.for:.f90:.f95:.f2k:.tex:.sql" \ << ".nfo:.mak" << ".ui:.pro:.pri:.qrc" << ""; +#endif s_extBindFileType = types; diff --git a/src/findresultwin.cpp b/src/findresultwin.cpp index e0b2c21..2cfb3bd 100755 --- a/src/findresultwin.cpp +++ b/src/findresultwin.cpp @@ -1,7 +1,7 @@ #include "findresultwin.h" #include "findwin.h" #include "common.h" - +#include "styleset.h" #include #include #include @@ -17,7 +17,7 @@ //使用Html的转义解决了该问题 FindResultWin::FindResultWin(QWidget *parent) - : QWidget(parent), m_menu(nullptr) + : QWidget(parent), m_menu(nullptr), m_parent(parent) { ui.setupUi(this); @@ -32,19 +32,19 @@ FindResultWin::FindResultWin(QWidget *parent) ui.resultTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.resultTreeView->setSelectionMode(QAbstractItemView::ExtendedSelection); -#if defined (Q_OS_MAC) - QString qss = "QTreeView::item:selected{ \ - background:#e8e8ff; \ - } \ - QTreeView::item{ \ - height:18px; \ - }"; -#else - QString qss = "QTreeView::item:selected{ \ - background:#e8e8ff; \ - }"; -#endif - ui.resultTreeView->setStyleSheet(qss); +//#if defined (Q_OS_MAC) +// QString qss = "QTreeView::item:selected{ \ +// background:#e8e8ff; \ +// } \ +// QTreeView::item{ \ +// height:18px; \ +// }"; +//#else +// QString qss = "QTreeView::item:selected{ \ +// background:#e8e8ff; \ +// }"; +//#endif +// ui.resultTreeView->setStyleSheet(qss); connect(ui.resultTreeView, &QTreeView::doubleClicked, this, &FindResultWin::itemDoubleClicked); } @@ -70,6 +70,8 @@ void FindResultWin::contextMenuEvent(QContextMenuEvent *) m_menu->addAction(tr("copy select item (Ctrl Muli)"), this, &FindResultWin::slot_copyItemContents); m_menu->addAction(tr("copy select Line (Ctrl Muli)"), this, &FindResultWin::slot_copyContents); + m_menu->addSeparator(); + m_menu->addAction(tr("close"), m_parent, &QWidget::close); } m_menu->move(cursor().pos()); //让菜单显示的位置在鼠标的坐标上 @@ -381,9 +383,21 @@ QString FindResultWin::highlightFindText(FindRecord& record) int targetLens = record.end - record.pos; int tailStart = record.end - record.lineStartPos; - QString head = QString(utf8bytes.mid(0, targetStart)).toHtmlEscaped(); - QString src = QString("%1").arg(QString(utf8bytes.mid(targetStart, targetLens)).toHtmlEscaped()); - QString tail = QString(utf8bytes.mid(tailStart)).toHtmlEscaped(); + QString head; + QString src; + QString tail; + if (BLACK_SE != StyleSet::getCurrentSytleId()) + { + head = QString(utf8bytes.mid(0, targetStart)).toHtmlEscaped(); + src = QString("%1").arg(QString(utf8bytes.mid(targetStart, targetLens)).toHtmlEscaped()); + tail = QString(utf8bytes.mid(tailStart)).toHtmlEscaped(); + } + else + { + head = QString("%1").arg(QString(utf8bytes.mid(0, targetStart)).toHtmlEscaped()); + src = QString("%1").arg(QString(utf8bytes.mid(targetStart, targetLens)).toHtmlEscaped()); + tail = QString("%1").arg(QString(utf8bytes.mid(tailStart)).toHtmlEscaped()); + } return QString("%1%2%3").arg(head).arg(src).arg(tail); } @@ -416,8 +430,18 @@ void FindResultWin::appendResultsToShow(FindRecords* record) } QString desc = tr("%1 (%2 hits)").arg(record->findFilePath.toHtmlEscaped()).arg(record->records.size()); + QStandardItem* descItem = new QStandardItem(desc); + + if (BLACK_SE != StyleSet::getCurrentSytleId()) + { setItemBackground(descItem, QColor(0xd5ffd5)); + } + else + { + setItemBackground(descItem, QColor(0x484848)); + } + titleItem->appendRow(descItem); @@ -434,19 +458,6 @@ void FindResultWin::appendResultsToShow(FindRecords* record) { FindRecord v = record->records.at(i); - ////找到是第几次出现关键字 - //if (lastLineNum != v.lineNum) - //{ - // lastLineNum = v.lineNum; - // occurTimes = 1; - //} - //else - //{ - // occurTimes++; - //} - - //highlightFindText(occurTimes, v.lineContents, record->findText, (Qt::CaseSensitivity)record->caseSensitivity); - QString richText = highlightFindText(v); QString text = tr("Line %1 : %2").arg(v.lineNum + 1).arg(richText); @@ -492,14 +503,25 @@ void FindResultWin::appendResultsToShow(QVector* record, int hits, return; } + + for (int i = 0,count= record->size(); i < count; ++i) { FindRecords* pr = record->at(i); QString desc = tr("%1 (%2 hits)").arg(pr->findFilePath.toHtmlEscaped()).arg(pr->records.size()); - + QStandardItem* descItem = new QStandardItem(desc); + + if (BLACK_SE != StyleSet::getCurrentSytleId()) + { setItemBackground(descItem, QColor(0xd5ffd5)); + } + else + { + setItemBackground(descItem, QColor(0x484848)); + } + titleItem->insertRow(0,descItem); //默认全部收起来 diff --git a/src/findresultwin.h b/src/findresultwin.h index 9b0c146..c1e2f8f 100755 --- a/src/findresultwin.h +++ b/src/findresultwin.h @@ -51,4 +51,6 @@ private: QStandardItemModel* m_model; NdStyledItemDelegate* m_delegate; + + QWidget* m_parent; }; diff --git a/src/findwin.cpp b/src/findwin.cpp index df4ee8f..e5a8a78 100755 --- a/src/findwin.cpp +++ b/src/findwin.cpp @@ -4,16 +4,25 @@ #include "progresswin.h" #include "doctypelistview.h" #include "filemanager.h" +#include "ccnotepad.h" #include #include #include #include #include +#include #include +enum TAB_TYPES { + FIND_TYPE=0, + RELPACE_TYPE, + DIR_FIND_TYPE, + MARK_TYPE, +}; + FindWin::FindWin(QWidget *parent):QMainWindow(parent), m_editTabWidget(nullptr), m_isFindFirst(true), m_findHistory(nullptr), \ - pEditTemp(nullptr), m_curEditWin(nullptr), m_isStatic(false), m_isReverseFind(false) + pEditTemp(nullptr), m_curEditWin(nullptr), m_isStatic(false), m_isReverseFind(false), m_pMainPad(parent) { ui.setupUi(this); @@ -27,8 +36,11 @@ FindWin::FindWin(QWidget *parent):QMainWindow(parent), m_editTabWidget(nullptr), connect(ui.findModeRegularBt, &QRadioButton::toggled, this, &FindWin::slot_findModeRegularBtChange); connect(ui.replaceModeRegularBt, &QRadioButton::toggled, this, &FindWin::slot_replaceModeRegularBtChange); connect(ui.dealFileType, &QCheckBox::stateChanged, this,&FindWin::slot_dealFileTypeChange); + connect(ui.skipDir, &QCheckBox::stateChanged, this, &FindWin::slot_skipDirChange); connect(ui.clearBt, &QAbstractButton::clicked, this, &FindWin::sign_clearResult); connect(ui.findClearBt, &QAbstractButton::clicked, this, &FindWin::sign_clearResult); + connect(ui.findinfilesTab, &QTabWidget::currentChanged, this, &FindWin::slot_tabIndexChange); + #if 0 //这样是无效的,记住一下,不删除,避免后面再做无用功 Qt::WindowFlags m_flags = windowFlags(); @@ -56,6 +68,18 @@ FindWin::~FindWin() } } +void FindWin::slot_tabIndexChange(int index) +{ + TAB_TYPES type = (TAB_TYPES)index; + + m_isFindFirst = true; + + if (m_findHistory->isEmpty()) + { + return; + } + } + void FindWin::slot_dealFileTypeChange(int state) { if (state == Qt::Checked) @@ -68,6 +92,18 @@ void FindWin::slot_dealFileTypeChange(int state) } } +void FindWin::slot_skipDirChange(int state) +{ + if (state == Qt::Checked) + { + ui.skipDirNames->setEnabled(true); + } + else + { + ui.skipDirNames->setEnabled(false); + } +} + //自动调整当前窗口的状态,如果发生了变化,则需要认定为是首次查找 QWidget* FindWin::autoAdjustCurrentEditWin() { @@ -105,10 +141,6 @@ void FindWin::setTabWidget(QTabWidget *editTabWidget) void FindWin::setFindText(QString &text) { ui.findComboBox->setEditText(text); - ui.replaceTextBox->setEditText(text); - ui.markTextBox->setEditText(text); - ui.dirFindWhat->setEditText(text); - addFindHistory(text); } @@ -126,8 +158,11 @@ void FindWin::setFindHistory(QList* findHistory) ui.findComboBox->addItems(*m_findHistory); ui.replaceTextBox->addItems(*m_findHistory); ui.dirFindWhat->addItems(*m_findHistory); + ui.markTextBox->addItems(*m_findHistory); ui.findComboBox->clearEditText(); ui.replaceTextBox->clearEditText(); + ui.dirFindWhat->clearEditText(); + ui.markTextBox->clearEditText(); } } @@ -479,9 +514,12 @@ void FindWin::updateParameterFromUI() //本来的m_BackwardDir只控制是否勾选反向 m_forward = !m_BackwardDir; - //m_isReverseFind 控制是否还需要反向一直,只在查找前一个生效 + //m_isReverseFind 控制是否还需要反向一直,只在查找前一个生效,只影响查找界面 + if (ui.findinfilesTab->currentIndex() == 0) + { m_forward = (m_isReverseFind ? !m_forward : m_forward); } +} void FindWin::addFindHistory(QString &text) { @@ -723,7 +761,15 @@ void FindWin::dealWithZeroFoundShowTip(QsciScintilla* pEdit, bool isShowTip) FindState& state = pEdit->getLastFindState(); - ui.statusbar->showMessage(tr("target info linenum %1 pos is %2 - %3").arg(state.linenum + 1).arg(state.targstart).arg(state.targend), 8000); + //int linpos = pEdit->SendScintilla(SCI_POSITIONFROMLINE, state.linenum); + int line = 0; + int indexStart = 0; + int indexEnd = 0; + + pEdit->lineIndexFromPosition(state.targstart, &line, &indexStart); + pEdit->lineIndexFromPosition(state.targend, &line, &indexEnd); + + ui.statusbar->showMessage(tr("target info linenum %1 pos is %2 - %3").arg(state.linenum + 1).arg(indexStart).arg(indexEnd), 8000); if (state.targstart == state.targend) { @@ -869,7 +915,7 @@ void FindWin::slot_findCount() } //这里的forward一定要是true。回环一定是false - if (!pEdit->findFirst(whatFind, m_re, m_cs, m_wo, false, true, FINDNEXTTYPE_FINDNEXT, 0, 0)) + if (!pEdit->findFirst(whatFind, m_re, m_cs, m_wo, false, true, FINDNEXTTYPE_FINDNEXT, 0, 0,false)) { ui.statusbar->showMessage(tr("count %1 times with \'%2\'").arg(countNums).arg(m_expr), 8000); QApplication::beep(); @@ -1363,7 +1409,7 @@ void FindWin::slot_replaceModeRegularBtChange(bool checked) m_isFindFirst = true; } - +#if 0 //替换当前文档里面的所有 void FindWin::slot_replaceAll() { @@ -1411,30 +1457,6 @@ void FindWin::slot_replaceAll() replaceText = extendReplace; } -#if 0 - if (!pEdit->findFirst(whatFind, m_re, m_cs, m_wo, false, m_forward, 0, 0)) - { - ui.statusbar->showMessage(tr("cant't find text \'%1\'").arg(m_expr), 8000); - QApplication::beep(); - m_isFindFirst = true; - return; - } - else - { - m_isFound = true; - m_isFindFirst = false; - } - - //一定不能回环查找 - m_wrap = false; - - while (replace(pEdit)) - { - ++replaceNums; - } -#endif - - if (!pEdit->findFirst(whatFind, m_re, m_cs, m_wo, false, true, FINDNEXTTYPE_REPLACENEXT, 0,0)) { ui.statusbar->showMessage(tr("cant't find text \'%1\'").arg(m_expr), 8000); @@ -1474,7 +1496,170 @@ void FindWin::slot_replaceAll() QApplication::beep(); } } +#endif +// Find the first occurrence of a string. +int buildSearchFlags(bool re, bool cs, bool wo, bool wrap, bool forward, FindNextType findNextType, bool posix, bool cxx11) +{ + int flags = 0; + + flags = (cs ? SCFIND_MATCHCASE : 0) | + (wo ? SCFIND_WHOLEWORD : 0) | + (re ? SCFIND_REGEXP : 0) | + (posix ? SCFIND_POSIX : 0) | + (cxx11 ? SCFIND_CXX11REGEX : 0); + + switch (findNextType) + { + case FINDNEXTTYPE_FINDNEXT: + flags |= SCFIND_REGEXP_EMPTYMATCH_ALL | SCFIND_REGEXP_SKIPCRLFASONE; + break; + + case FINDNEXTTYPE_REPLACENEXT: + flags |= SCFIND_REGEXP_EMPTYMATCH_NOTAFTERMATCH | SCFIND_REGEXP_SKIPCRLFASONE; + break; + + case FINDNEXTTYPE_FINDNEXTFORREPLACE: + flags |= SCFIND_REGEXP_EMPTYMATCH_ALL | SCFIND_REGEXP_EMPTYMATCH_ALLOWATSTART | SCFIND_REGEXP_SKIPCRLFASONE; + break; + } + return flags; +} + +struct FindReplaceInfo +{ + intptr_t _startRange = -1; + intptr_t _endRange = -1; +}; + +//返回值替换数量 +int FindWin::doReplaceAll(ScintillaEditView* pEdit, QString &whatFind, QString& replaceText) +{ + int replaceNums = 0; + + int srcPostion = pEdit->execute(SCI_GETCURRENTPOS); + int firstDisLineNum = pEdit->execute(SCI_GETFIRSTVISIBLELINE); + + pEdit->execute(SCI_BEGINUNDOACTION); + + int flags = buildSearchFlags(m_re, m_cs, m_wo, false, true, FINDNEXTTYPE_REPLACENEXT, 0, 0); + + intptr_t targetStart = 0; + intptr_t targetEnd = 0; + + //Initial range for searching + pEdit->execute(SCI_SETSEARCHFLAGS, flags); + + FindReplaceInfo findReplaceInfo; + + findReplaceInfo._startRange = 0; + findReplaceInfo._endRange = pEdit->execute(SCI_GETLENGTH); + + QByteArray pTextFind = whatFind.toUtf8(); + QByteArray pTextReplace = replaceText.toUtf8(); + + + while (targetStart >= 0) + { + targetStart = pEdit->searchInTarget(pTextFind, findReplaceInfo._startRange, findReplaceInfo._endRange); + + // If we've not found anything, just break out of the loop + if (targetStart == -1 || targetStart == -2) + break; + + targetEnd = pEdit->execute(SCI_GETTARGETEND); + + if (targetEnd > findReplaceInfo._endRange) + { + //we found a result but outside our range, therefore do not process it + break; + } + + intptr_t foundTextLen = targetEnd - targetStart; + intptr_t replaceDelta = 0; + + intptr_t replacedLength; + if (m_re) + { + replacedLength = pEdit->replaceTargetRegExMode(pTextReplace); + } + else + { + replacedLength = pEdit->replaceTarget(pTextReplace); + } + + replaceDelta = replacedLength - foundTextLen; + + ++replaceNums; + + // After the processing of the last string occurrence the search loop should be stopped + // This helps to avoid the endless replacement during the EOL ("$") searching + if (targetStart + foundTextLen == findReplaceInfo._endRange) + break; + + findReplaceInfo._startRange = targetStart + foundTextLen + replaceDelta; //search from result onwards + findReplaceInfo._endRange += replaceDelta; //adjust end of range in case of replace + } + + + pEdit->execute(SCI_ENDUNDOACTION); + + pEdit->execute(SCI_GOTOPOS, srcPostion); + pEdit->execute(SCI_SETFIRSTVISIBLELINE, firstDisLineNum); + pEdit->execute(SCI_SETXOFFSET, 0); + + + + return replaceNums; +} + +//替换当前文档里面的所有。之前的要慢,是因为qscintilla中实时计算了行在屏幕需要的长度。 +//大量的这种计算一行实时长度的操作,非常耗时。查找、标记均不耗时,只有替换修改了文本才耗时。 +void FindWin::slot_replaceAll() +{ + if (ui.replaceTextBox->currentText().isEmpty()) + { + ui.statusbar->showMessage(tr("what find is null !"), 8000); + return; + } + + if (!m_isStatic && QMessageBox::Yes != QMessageBox::question(this, tr("Replace All current Doc"), tr("Are you sure replace all occurrences in current documents?"))) + { + return; + } + + QWidget* pw = autoAdjustCurrentEditWin(); + ScintillaEditView* pEdit = dynamic_cast(pw); + if (pEdit != nullptr) + { + if (pEdit->isReadOnly()) + { + ui.statusbar->showMessage(tr("The ReadOnly document does not allow replacement."), 8000); + QApplication::beep(); + return; + } + } + updateParameterFromUI(); + + QString whatFind = ui.replaceTextBox->currentText(); + QString replaceText = ui.replaceWithBox->currentText(); + + if (m_extend) + { + QString extendFind; + convertExtendedToString(whatFind, extendFind); + whatFind = extendFind; + + QString extendReplace; + convertExtendedToString(replaceText, extendReplace); + replaceText = extendReplace; + } + + int replaceNums = doReplaceAll(pEdit, whatFind, replaceText); + //全部替换后,下次查找,必须算第一次查找 + m_isFindFirst = true; + ui.statusbar->showMessage(tr("replace finished, total %1 replaced!").arg(replaceNums), 10000); +} void FindWin::slot_replaceAllInOpenDoc() { @@ -1520,31 +1705,8 @@ void FindWin::slot_replaceAllInOpenDoc() { continue; } + replaceNums += doReplaceAll(pEdit, whatFind, whatReplace); #if 0 - m_isFound = false; - - - //无条件进行第一次查找,从0行0列开始查找,而且不回环。如果没有找到,则替换完毕 - if (!pEdit->findFirst(whatFind, m_re, m_cs, m_wo, false, m_forward, 0, 0)) - { - continue; - } - else - { - m_isFound = true; - m_isFindFirst = false; - } - - //一定不能回环查找 - m_wrap = false; - - while (replace(pEdit)) - { - ++replaceNums; - } -#endif - - //无条件进行第一次查找,从0行0列开始查找,而且不回环。如果没有找到,则替换完毕 if (!pEdit->findFirst(whatFind, m_re, m_cs, m_wo, false, true, FINDNEXTTYPE_REPLACENEXT,0, 0)) { @@ -1564,7 +1726,9 @@ void FindWin::slot_replaceAllInOpenDoc() ++replaceNums; dealWithZeroFound(pEdit); } +#endif } + } //全部替换后,下次查找,必须算第一次查找 @@ -1590,6 +1754,7 @@ void FindWin::slot_markAll() { FindRecords *results = new FindRecords; results->pEdit = pEdit; + results->hightLightColor = CCNotePad::s_curMarkColorId; results->findFilePath = pw->property("filePath").toString(); @@ -1648,7 +1813,7 @@ void FindWin::slot_markAll() if (foundTextLen > 0) { - pEdit->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE); + pEdit->execute(SCI_SETINDICATORCURRENT,CCNotePad::s_curMarkColorId); pEdit->execute(SCI_INDICATORFILLRANGE, rs.pos, foundTextLen); } } @@ -1674,18 +1839,30 @@ void FindWin::slot_markAll() } } -//取消高亮 +//取消高亮当前关键字 void FindWin::slot_clearMark() { - QWidget* pw = autoAdjustCurrentEditWin(); - ScintillaEditView* pEdit = dynamic_cast(pw); - if (pEdit != nullptr) + if (ui.markTextBox->currentText().isEmpty()) { - int docEnd = pEdit->length(); - pEdit->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE); - pEdit->execute(SCI_INDICATORCLEARRANGE, 0, docEnd); + ui.statusbar->showMessage(tr("what mark is null !"), 8000); + QApplication::beep(); + return; + } - pEdit->releaseAllMark(); + CCNotePad* pMainPad = dynamic_cast(m_pMainPad); + if (pMainPad != nullptr) + { + pMainPad->clearHighlightWord(ui.markTextBox->currentText()); +} +} + +//取消所有高亮 +void FindWin::slot_clearAllMark() +{ + CCNotePad* pMainPad = dynamic_cast(m_pMainPad); + if (pMainPad != nullptr) + { + pMainPad->slot_clearMark(); } } @@ -1725,7 +1902,7 @@ bool FindWin::findTextInFile(QString &filePath, int &findNums, QVectorfindFirst(whatFind, m_re, m_cs, m_wo, false, m_forward, FINDNEXTTYPE_FINDNEXT, 0, 0)) + if (!pEditTemp->findFirst(whatFind, m_re, m_cs, m_wo, false, m_forward, FINDNEXTTYPE_FINDNEXT, 0, 0,false)) { delete results; return false; @@ -1775,7 +1952,10 @@ bool FindWin::replaceTextInFile(QString &filePath, int &replaceNums, QVectorfindFirst(find, m_re, m_cs, m_wo, false, m_forward, FINDNEXTTYPE_REPLACENEXT,0, 0)) + replaceNums += doReplaceAll(pEditTemp, find, replace); + +#if 0 + if (!pEditTemp->findFirst(find, m_re, m_cs, m_wo, false, m_forward, FINDNEXTTYPE_REPLACENEXT,0, 0,false)) { return false; } @@ -1792,6 +1972,7 @@ bool FindWin::replaceTextInFile(QString &filePath, int &replaceNums, QVector* allfileInDirRecord)> foundCallBack, bool isAskAbort) +int FindWin::walkDirfile(QString path, int &foundTimes, bool isSkipBinary, bool isSkipHide, int skipMaxSize, bool isfilterFileType, QStringList& fileExtType, bool isSkipDir, QStringList & skipDirNames, bool isSkipChildDirs, std::function* allfileInDirRecord)> foundCallBack, bool isAskAbort) { QList dirsList; QString oneDir(path); @@ -1841,22 +2022,6 @@ int FindWin::walkDirfile(QString path, int &foundTimes, bool isSkipBinary, bool //是否二进制文件 auto binaryFiltre = [](QFileInfo& fi)->bool { -#if 0 - //如果不支持该文件ext,则以二进制形式打开 - if (DocTypeListView::isSupportExt(fi.suffix())) - { - return false; - } - else - { - static QMimeDatabase db; - QMimeType mime = db.mimeTypeForFile(fi); - if (mime.name().startsWith("text")) { - return false; - } - } - return true; -#endif return DocTypeListView::isHexExt(fi.suffix()); }; @@ -1907,6 +2072,12 @@ int FindWin::walkDirfile(QString path, int &foundTimes, bool isSkipBinary, bool QString name = folderinfo.fileName(); //获取目录名 + if (isSkipDir && (-1 != skipDirNames.indexOf(name))) + { + loadFileProcessWin->info(tr("skip dir %1").arg(namepath)); + continue; + } + dirsList.push_front(namepath); dirNums++; @@ -2051,7 +2222,9 @@ void FindWin::slot_dirFindAll() } bool isfilterFileType = ui.dealFileType->isChecked(); + bool isSkipDirs = ui.skipDir->isChecked(); QStringList fileExtTypeList; + QStringList skipDirNameList; if (isfilterFileType) { @@ -2079,6 +2252,32 @@ void FindWin::slot_dirFindAll() } } + if (isSkipDirs) + { + QString dirNames = ui.skipDirNames->text().trimmed(); + if (dirNames.isEmpty()) + { + isSkipDirs = false; + } + else + { + + QStringList nameList = dirNames.split(":"); + foreach(QString var, nameList) + { + if (var.size() > 0) + { + //只取后面的h或或cpp后缀 + skipDirNameList.append(var); + } + } + if (skipDirNameList.isEmpty()) + { + isSkipDirs = false; + } + } + } + bool isSkipBinary = ui.skipBinary->isChecked(); bool isSkipHide = ui.skipHideFile->isChecked(); @@ -2097,7 +2296,7 @@ void FindWin::slot_dirFindAll() std::function* allfileInDirRecord)> foundCallBack = std::bind(&FindWin::findTextInFile, this, std::placeholders::_1, std::placeholders::_2, allfileInDirRecord); - int filesNum = walkDirfile(dirPath, foundNums, isSkipBinary, isSkipHide, skipMaxSize, isfilterFileType, fileExtTypeList, isSkipChildDir, foundCallBack); + int filesNum = walkDirfile(dirPath, foundNums, isSkipBinary, isSkipHide, skipMaxSize, isfilterFileType, fileExtTypeList, isSkipDirs, skipDirNameList, isSkipChildDir, foundCallBack); //全部替换后,下次查找,必须算第一次查找 m_isFindFirst = true; @@ -2146,6 +2345,8 @@ void FindWin::slot_dirReplaceAll() bool isfilterFileType = ui.dealFileType->isChecked(); QStringList fileExtTypeList; + bool isSkipDirs = ui.skipDir->isChecked(); + QStringList skipDirNameList; if (isfilterFileType) { @@ -2172,7 +2373,31 @@ void FindWin::slot_dirReplaceAll() } } } + if (isSkipDirs) + { + QString dirNames = ui.skipDirNames->text().trimmed(); + if (dirNames.isEmpty()) + { + isSkipDirs = false; + } + else + { + QStringList nameList = dirNames.split(":"); + foreach(QString var, nameList) + { + if (var.size() > 0) + { + //只取后面的h或或cpp后缀 + skipDirNameList.append(var); + } + } + if (skipDirNameList.isEmpty()) + { + isSkipDirs = false; + } + } + } bool isSkipBinary = ui.skipBinary->isChecked(); bool isSkipHide = ui.skipHideFile->isChecked(); @@ -2189,7 +2414,7 @@ void FindWin::slot_dirReplaceAll() std::function* allfileInDirRecord)> foundCallBack = std::bind(&FindWin::replaceTextInFile, this, std::placeholders::_1, std::placeholders::_2, nullptr); - int filesNum = walkDirfile(dirPath, replaceNums, isSkipBinary, isSkipHide, skipMaxSize, isfilterFileType, fileExtTypeList, isSkipChildDir, foundCallBack,false); + int filesNum = walkDirfile(dirPath, replaceNums, isSkipBinary, isSkipHide, skipMaxSize, isfilterFileType, fileExtTypeList, isSkipDirs, skipDirNameList,isSkipChildDir, foundCallBack,false); //全部替换后,下次查找,必须算第一次查找 m_isFindFirst = true; diff --git a/src/findwin.h b/src/findwin.h index 30d1e78..e8a6332 100755 --- a/src/findwin.h +++ b/src/findwin.h @@ -31,12 +31,14 @@ public: //是否区分大小写 //int caseSensitivity; //int totalMatch; //全词匹配 + int hightLightColor; //高亮颜色 ScintillaEditView* pEdit; QVector records; FindRecords() { pEdit = nullptr; + hightLightColor = 0; } ~FindRecords() { @@ -92,7 +94,7 @@ private: bool replaceTextInFile(QString & filePath, int & replaceNums, QVector* r = nullptr); - int walkDirfile(QString path, int & foundTimes, bool isSkipBinary, bool isSkipHide, int skipMaxSize, bool isfilterFileType, QStringList & fileExtType, bool isSkipChildDirs, std::function*allfileInDirRecord)> foundCallBack, bool isAskAbort=true); + int walkDirfile(QString path, int & foundTimes, bool isSkipBinary, bool isSkipHide, int skipMaxSize, bool isfilterFileType, QStringList & fileExtType, bool isSkipDir, QStringList & skipDirNames, bool isSkipChildDirs, std::function*allfileInDirRecord)> foundCallBack, bool isAskAbort=true); QWidget* autoAdjustCurrentEditWin(); @@ -106,10 +108,13 @@ private: bool replace(ScintillaEditView* pEdit); -private slots: - void slot_findNext(); + int doReplaceAll(ScintillaEditView * pEdit, QString& whatFind, QString& replaceText); +private slots: + + void slot_findNext(); + void slot_findPrev(); void slot_findCount(); @@ -134,19 +139,29 @@ private slots: void slot_clearMark(); + void slot_clearAllMark(); + void slot_dirSelectDest(); void slot_dealFileTypeChange(int state); + void slot_skipDirChange(int state); + void slot_dirFindAll(); void slot_dirReplaceAll(); + void slot_tabIndexChange(int index); + private: Ui::FindWin ui; + FindWin(const FindWin& other) = delete; + FindWin& operator=(const FindWin& other) = delete; + QTabWidget *m_editTabWidget; + QWidget* m_pMainPad; //第一次查找,查找参数变化,认定为第一次查找 bool m_isFindFirst; diff --git a/src/findwin.ui b/src/findwin.ui index 75047ff..d01419f 100755 --- a/src/findwin.ui +++ b/src/findwin.ui @@ -21,7 +21,7 @@ - :/Resources/edit/global/notebook.png:/Resources/edit/global/notebook.png + :/Resources/edit/global/ndd.ico:/Resources/edit/global/ndd.ico @@ -42,7 +42,7 @@ 300 - 0 + 32 @@ -190,6 +190,12 @@ + + + 0 + 28 + + Find Next(F3) @@ -200,6 +206,12 @@ + + + 0 + 28 + + Find Prev(F4) @@ -447,6 +459,12 @@ + + + 0 + 28 + + Find Next @@ -460,6 +478,12 @@ 0 + + + 0 + 28 + + Replace @@ -473,6 +497,12 @@ 0 + + + 0 + 28 + + Replace All @@ -532,10 +562,12 @@ Dir Find - + + + @@ -569,7 +601,7 @@ - + @@ -596,7 +628,7 @@ - + @@ -620,7 +652,7 @@ - + @@ -646,6 +678,29 @@ + + + + + + + Skip Dir Name + + + + + + + false + + + debug:Debug:.vs:.git:.svn + + + + + + @@ -833,7 +888,7 @@ 160 - 0 + 28 @@ -852,7 +907,7 @@ 160 - 0 + 28 @@ -871,7 +926,7 @@ 160 - 0 + 28 @@ -890,7 +945,7 @@ 160 - 0 + 28 @@ -1036,6 +1091,12 @@ + + + 0 + 28 + + Mark All @@ -1043,11 +1104,30 @@ + + + 0 + 28 + + Clear Mark + + + + + 0 + 28 + + + + Clear All + + + @@ -1056,6 +1136,12 @@ 0 + + + 0 + 28 + + Close @@ -1181,7 +1267,7 @@ 572 - 164 + 203 322 @@ -1212,8 +1298,8 @@ slot_replaceFindNext() - 519 - 55 + 94 + 60 588 @@ -1228,8 +1314,8 @@ close() - 519 - 182 + 94 + 45 588 @@ -1244,8 +1330,8 @@ slot_replace() - 519 - 84 + 94 + 64 588 @@ -1260,8 +1346,8 @@ slot_replaceAll() - 519 - 113 + 94 + 67 588 @@ -1276,8 +1362,8 @@ slot_replaceAllInOpenDoc() - 519 - 153 + 94 + 76 588 @@ -1324,8 +1410,8 @@ close() - 489 - 113 + 572 + 162 404 @@ -1356,8 +1442,8 @@ slot_dirSelectDest() - 403 - 53 + 402 + 54 502 @@ -1429,6 +1515,22 @@ + + markClearAllBox + clicked() + FindWin + slot_clearAllMark() + + + 538 + 112 + + + 574 + 366 + + + slot_findNext() @@ -1446,5 +1548,6 @@ slot_dirSelectDest() sign_clearResult() slot_findPrev() + slot_clearAllMark() diff --git a/src/main.cpp b/src/main.cpp index ac15634..a7d30c4 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -294,7 +294,7 @@ drop_old: CCNotePad *pMainNotepad = new CCNotePad(true); pMainNotepad->setAttribute(Qt::WA_DeleteOnClose); pMainNotepad->setShareMem(&shared); - pMainNotepad->show(); + pMainNotepad->quickshow(); pMainNotepad->syncCurSkinToMenu(id); diff --git a/src/nddsetting.cpp b/src/nddsetting.cpp index c6111a5..1383333 100755 --- a/src/nddsetting.cpp +++ b/src/nddsetting.cpp @@ -88,6 +88,9 @@ void NddSetting::init() //Զ addKeyValueToNumSets(INDENT_KEY, 0); + //ʾհ + addKeyValueToNumSets(SHOWSPACE_KEY, 0); + //ıļޡĬ100M.(50-300) addKeyValueToNumSets(MAX_BIG_TEXT, 100); @@ -146,6 +149,12 @@ void NddSetting::init() checkNoExistAdd(INDENT_KEY, v); } + { + QVariant v(0); + checkNoExistAdd(SHOWSPACE_KEY, v); + } + + { QVariant v(100); checkNoExistAdd(MAX_BIG_TEXT, v); diff --git a/src/nddsetting.h b/src/nddsetting.h index 0e62aa3..e322f85 100755 --- a/src/nddsetting.h +++ b/src/nddsetting.h @@ -6,6 +6,7 @@ static QString SKIN_KEY = "skinid"; static QString LANGS_KEY = "langs"; static QString AUTOWARP_KEY = "warp"; static QString INDENT_KEY = "indent"; +static QString SHOWSPACE_KEY = "blank"; static QString MAX_BIG_TEXT = "maxtsize"; static QString SOFT_STATUS = "rstatus"; static QString SOFT_KEY = "rkey"; @@ -55,4 +56,4 @@ private: static int s_reference; static QSettings* s_nddSet; -}; \ No newline at end of file +}; diff --git a/src/progresswin.ui b/src/progresswin.ui index 72a87df..1e301b1 100755 --- a/src/progresswin.ui +++ b/src/progresswin.ui @@ -9,7 +9,7 @@ 0 0 - 438 + 553 176 @@ -18,9 +18,24 @@ - :/Resources/img/main.png:/Resources/img/main.png + :/Resources/edit/global/ndd.ico:/Resources/edit/global/ndd.ico + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + diff --git a/src/qscidisplaywindow.cpp b/src/qscidisplaywindow.cpp index e27c907..5baf23b 100755 --- a/src/qscidisplaywindow.cpp +++ b/src/qscidisplaywindow.cpp @@ -58,6 +58,8 @@ QsciDisplayWindow::QsciDisplayWindow(QWidget *parent):QsciScintilla(parent), m_t execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE_SMART, false); execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_SMART, 0x00ff00); + setStyleOptions(); + //开启后可以保证长行在滚动条下完整显示 execute(SCI_SETSCROLLWIDTHTRACKING, true); connect(this, &QsciScintilla::selectionChanged, this, &QsciDisplayWindow::slot_clearHightWord, Qt::QueuedConnection); @@ -73,6 +75,61 @@ QsciDisplayWindow::~QsciDisplayWindow() } } +void QsciDisplayWindow::setFoldColor(int margin, QColor fgClack, QColor bkColor) +{ + SendScintilla(SCI_MARKERSETFORE, margin, fgClack); + SendScintilla(SCI_MARKERSETBACK, margin, bkColor); +} + +void QsciDisplayWindow::setStyleOptions() +{ + if (StyleSet::m_curStyleId != BLACK_SE) + { + setMarginsForegroundColor(QColor(0x80, 0x80, 0x80)); //默认0x80, 0x80, 0x80 + } + else + { + setMarginsForegroundColor(QColor(0xde, 0xde, 0xde)); //默认0x80, 0x80, 0x80 + } + setMarginsBackgroundColor(StyleSet::marginsBackgroundColor); + setFoldMarginColors(StyleSet::marginsBackgroundColor, StyleSet::marginsBackgroundColor); + + //如果是黑色主题,则单独做一些风格设置 + if (StyleSet::m_curStyleId == BLACK_SE) + { + this->setColor(QColor(0xff, 0xff, 0xff));//有lexer时无效 + this->setPaper(QColor(0x282020));//有lexer时无效 + + + setCaretLineBackgroundColor(QColor(0x333333)); + setMatchedBraceForegroundColor(QColor(246, 81, 246)); + setMatchedBraceBackgroundColor(QColor(18, 90, 36)); + setCaretForegroundColor(QColor(255, 255, 255)); + setFoldColor(SC_MARKNUM_FOLDEROPEN, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDER, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDERSUB, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDERTAIL, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDEREND, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDEROPENMID, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDERMIDTAIL, QColor(45, 130, 45), QColor(222, 222, 222)); + } + else + { + //setCaretLineBackgroundColor(QColor(0xe8e8ff)); + setCaretLineBackgroundColor(QColor(0xFAF9DE)); + setMatchedBraceForegroundColor(QColor(191, 141, 255)); + setMatchedBraceBackgroundColor(QColor(222, 222, 222)); + setCaretForegroundColor(QColor(0, 0, 0)); + setFoldColor(SC_MARKNUM_FOLDEROPEN, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDER, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDERSUB, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDERTAIL, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDEREND, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDEROPENMID, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDERMIDTAIL, QColor(Qt::white), QColor(128, 128, 128)); + } +} + void QsciDisplayWindow::setIsShowFindItem(bool v) { m_isShowFindItem = v; @@ -325,29 +382,6 @@ void QsciDisplayWindow::autoAdjustLineWidth(int xScrollValue) updateLineNumberWidth(); } } -// -//int nbDigitsFromNbLines(size_t nbLines) -//{ -// int nbDigits = 0; // minimum number of digit should be 4 -// if (nbLines < 10) nbDigits = 1; -// else if (nbLines < 100) nbDigits = 2; -// else if (nbLines < 1000) nbDigits = 3; -// else if (nbLines < 10000) nbDigits = 4; -// else if (nbLines < 100000) nbDigits = 5; -// else if (nbLines < 1000000) nbDigits = 6; -// else // rare case -// { -// nbDigits = 7; -// nbLines /= 1000000; -// -// while (nbLines) -// { -// nbLines /= 10; -// ++nbDigits; -// } -// } -// return nbDigits; -//} void QsciDisplayWindow::updateLineNumberWidth() { @@ -408,6 +442,7 @@ void QsciDisplayWindow::contextUserDefineMenuEvent(QMenu* menu) { menu->addAction(tr("Find Text"), this, SLOT(slot_findText())); menu->addAction(tr("Show File in Explorer"), this, SLOT(slot_showFileInExplorer())); + menu->addAction(tr("Save As ..."), this, &QsciDisplayWindow::sign_saveAsFile); } menu->show(); } diff --git a/src/qscidisplaywindow.h b/src/qscidisplaywindow.h index 0c95f78..e25129c 100755 --- a/src/qscidisplaywindow.h +++ b/src/qscidisplaywindow.h @@ -48,6 +48,7 @@ public: signals: void delayWork(); void sign_find(bool v=true); + void sign_saveAsFile(); private slots: void slot_delayWork(); @@ -66,10 +67,11 @@ protected: void clearIndicator(int indicatorNumber); void slot_clearHightWord(); void highlightViewWithWord(QString & word2Hilite); - - void updateLineNumberWidth(); + void setStyleOptions(); + void setFoldColor(int margin, QColor fgClack, QColor bkColor); + private: RC_DIRECTION m_direction; MediatorDisplay* m_mediator; diff --git a/src/qscint/scintilla/lexers/LexTXT.cpp b/src/qscint/scintilla/lexers/LexTXT.cpp index 73377b4..e8f9c98 100755 --- a/src/qscint/scintilla/lexers/LexTXT.cpp +++ b/src/qscint/scintilla/lexers/LexTXT.cpp @@ -292,14 +292,17 @@ void SCI_METHOD LexTXT::Lex(Sci_PositionU startPos, Sci_Position length, int ini } //最后一段不能遗漏,也需要识别 - if (IsAAsciiChar(sc.ch)) + if (sc.state == SCE_TXT_IDENTIFIER) { + if (IsAAsciiChar(sc.chPrev)) + { sc.ChangeState(SCE_TXT_ASCII); } else { sc.ChangeState(SCE_TXT_DEFAULT); } + } sc.SetState(SCE_TXT_DEFAULT); diff --git a/src/qscint/scintilla/src/Editor.cpp b/src/qscint/scintilla/src/Editor.cpp index 8f7e54e..3a9da95 100755 --- a/src/qscint/scintilla/src/Editor.cpp +++ b/src/qscint/scintilla/src/Editor.cpp @@ -4135,7 +4135,8 @@ Sci::Position Editor::SearchInTarget(const char *text, Sci::Position length) { const Sci::Position pos = pdoc->FindText(targetStart, targetEnd, text, searchFlags, &lengthFound); - if (pos != -1) { + //返回值为负,就是错误,不仅仅只有-1的情况 + if (pos >= 0) { targetStart = pos; targetEnd = pos + lengthFound; } diff --git a/src/qscint/src/PlatQt.cpp b/src/qscint/src/PlatQt.cpp index 16c8226..59c4c98 100755 --- a/src/qscint/src/PlatQt.cpp +++ b/src/qscint/src/PlatQt.cpp @@ -389,14 +389,16 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourDesired fore, void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, int style) { Q_ASSERT(painter); - + painter->save(); painter->setBrush((Qt::BrushStyle)style); + painter->setBackgroundMode(Qt::OpaqueMode); const int radius = (cornerSize ? 25 : 0); painter->drawRoundedRect( QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top), radius, radius, Qt::RelativeSize); + painter->restore(); } void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, diff --git a/src/qscint/src/Qsci/qscilexerrust.h b/src/qscint/src/Qsci/qscilexerrust.h new file mode 100755 index 0000000..4e504cc --- /dev/null +++ b/src/qscint/src/Qsci/qscilexerrust.h @@ -0,0 +1,73 @@ +#pragma once +#include +#include +#include + +enum RUST_STYLE{ + RUST_DEFAULT=0, + RUST_COMMENTBLOCK, + RUST_COMMENTLINE, + RUST_COMMENTBLOCKDOC, + RUST_COMMENTLINEDOC, + RUST_NUMBER, + RUST_WORD, + RUST_WORD2, + RUST_WORD3, + RUST_WORD4, + RUST_WORD5, + RUST_WORD6, + RUST_WORD7, + RUST_STRING, + RUST_STRINGR, + RUST_CHARACTER, + RUST_OPERATOR, + RUST_IDENTIFIER, + RUST_LIFETIME, + RUST_MACRO, + RUST_LEXERROR, + RUST_BYTESTRING, + RUST_BYTESTRINGR, + RUST_BYTECHARACTER, +}; +class QSCINTILLA_EXPORT QsciLexerRust : public QsciLexer +{ + Q_OBJECT + +public: + //enum { + // Default = 0,//中文 + // Ascii = 1,//英文 + // Keyword = 2, //关键字,只有以TXT为母版的自定义语言才有,默认txt是没有关键字说法的 + //}; + QsciLexerRust(QObject *parent=0); + virtual ~QsciLexerRust(); + + //! Returns the name of the language. + const char* language() const; + + const char * lexer() const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + int lexerId() const; + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char* keywords(int set); + + QColor defaultColor(int style) const; + + QFont defaultFont(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerRust(const QsciLexerRust&); + QsciLexerRust& operator=(const QsciLexerRust&); +}; diff --git a/src/qscint/src/Qsci/qscilexertext.h b/src/qscint/src/Qsci/qscilexertext.h index 269e947..d34fc2f 100755 --- a/src/qscint/src/Qsci/qscilexertext.h +++ b/src/qscint/src/Qsci/qscilexertext.h @@ -39,7 +39,7 @@ public: //! \sa defaultColor() QColor defaultPaper(int style) const; - int lexerId() const; + //int lexerId() const; //! Returns the set of keywords for the keyword set \a set recognised //! by the lexer as a space separated string. diff --git a/src/qscint/src/Qsci/qscilexervb.h b/src/qscint/src/Qsci/qscilexervb.h new file mode 100755 index 0000000..11d2420 --- /dev/null +++ b/src/qscint/src/Qsci/qscilexervb.h @@ -0,0 +1,70 @@ +#pragma once + +#pragma once +#include +#include +#include + +enum VB_STYLE { + VB_DEFAULT = 0, + VB_COMMENT, + VB_NUMBER, + VB_KEYWORD, + VB_STRING, + VB_PREPROCESSOR, + VB_OPERATOR, + VB_IDENTIFIER, + VB_DATE, + VB_STRINGEOL, + VB_KEYWORD2, + VB_KEYWORD3, + VB_KEYWORD4, + VB_CONSTANT, + VB_ASM, + VB_LABEL, + VB_ERROR, + VB_HEXNUMBER, + VB_BINNUMBER, + VB_COMMENTBLOCK, + VB_DOCLINE, + VB_DOCBLOCK, + VB_DOCKEYWORD, + VB_PROPS_DEFAULT, +}; + +class QSCINTILLA_EXPORT QsciLexerVB : public QsciLexer +{ + Q_OBJECT + +public: + QsciLexerVB(QObject *parent=0); + virtual ~QsciLexerVB(); + + //! Returns the name of the language. + const char* language() const; + + const char * lexer() const; + + //! Returns the background colour of the text for style number \a style. + //! + //! \sa defaultColor() + QColor defaultPaper(int style) const; + + + //! Returns the set of keywords for the keyword set \a set recognised + //! by the lexer as a space separated string. + const char* keywords(int set); + + QColor defaultColor(int style) const; + + QFont defaultFont(int style) const; + + //! Returns the descriptive name for style number \a style. If the + //! style is invalid for this language then an empty QString is returned. + //! This is intended to be used in user preference dialogs. + QString description(int style) const; + +private: + QsciLexerVB(const QsciLexerVB&); + QsciLexerVB& operator=(const QsciLexerVB&); +}; diff --git a/src/qscint/src/qscicommandset.cpp b/src/qscint/src/qscicommandset.cpp index 8541d3a..1945a56 100755 --- a/src/qscint/src/qscicommandset.cpp +++ b/src/qscint/src/qscicommandset.cpp @@ -722,13 +722,13 @@ QsciCommandSet::QsciCommandSet(QsciScintilla *qs) : qsci(qs) 0, QT_TRANSLATE_NOOP("QsciCommand", "Copy current line") }, - { + /* { QsciCommand::LineTranspose, - Qt::Key_T | Qt::CTRL, + Qt::Key_T | Qt::SHIFT, 0, QT_TRANSLATE_NOOP("QsciCommand", "Transpose current and previous lines") - }, + },*/ { QsciCommand::LineDuplicate, 0, diff --git a/src/qscint/src/qscilexer.cpp b/src/qscint/src/qscilexer.cpp index 7a66d39..0473b02 100755 --- a/src/qscint/src/qscilexer.cpp +++ b/src/qscint/src/qscilexer.cpp @@ -57,7 +57,8 @@ QsciLexer::QsciLexer(QObject *parent) // Set the default fore and background colours. QPalette pal = QApplication::palette(); - defColor = pal.text().color(); + //defColor = pal.text().color(); + defColor = QColor(Qt::black); defPaper = pal.base().color(); // Putting this on the heap means we can keep the style getters const. @@ -491,7 +492,7 @@ bool QsciLexer::readSettings(QSettings &qs,const char *prefix) } } -#if 0 //不读取背景颜色,和主题保存一致 +#if 1 //不读取背景颜色,和主题保存一致 // Read the background colour. full_key = key + "paper"; @@ -527,7 +528,7 @@ bool QsciLexer::readSettings(QSettings &qs,const char *prefix) else rc = false; -#if 0 +#if 1 // Read the default background colour. full_key = key + "defaultpaper"; @@ -653,7 +654,7 @@ bool QsciLexer::writeSettings(QSettings &qs,const char *prefix) const qs.setValue(key + "font2", fdesc); -#if 0 //背景颜色和主题皮肤保存一致,故不写入背景颜色 +#if 1 //背景颜色和主题皮肤保存一致,故不写入背景颜色 // Write the background colour. c = paper(i); num = (c.red() << 16) | (c.green() << 8) | c.blue(); @@ -676,7 +677,7 @@ bool QsciLexer::writeSettings(QSettings &qs,const char *prefix) const qs.setValue(key + "defaultcolor", num); -#if 0 +#if 1 // Write the default background colour. num = (defPaper.red() << 16) | (defPaper.green() << 8) | defPaper.blue(); diff --git a/src/qscint/src/qscilexerrust.cpp b/src/qscint/src/qscilexerrust.cpp new file mode 100755 index 0000000..3493771 --- /dev/null +++ b/src/qscint/src/qscilexerrust.cpp @@ -0,0 +1,136 @@ +#include "Qsci/qscilexerrust.h" +#include "Qsci/qsciscintillabase.h" + +#include +#include +#include + +QsciLexerRust::QsciLexerRust(QObject *parent) + : QsciLexer(parent) +{ + +} + +QsciLexerRust::~QsciLexerRust() +{ +} + +// Returns the language name. +const char* QsciLexerRust::language() const +{ + return "RUST"; +} + +// Returns the lexer name. +const char *QsciLexerRust::lexer() const +{ + return "rust"; +} + +// Returns the set of keywords. +const char* QsciLexerRust::keywords(int set) +{ + return "as break const continue crate dyn else enum extern " + "false fn for if impl in let loop match mod move mut " + "pub ref return Self self static struct super trait " + "true type unsafe use where while"; +} + +// Returns the foreground colour of the text for a style. +QColor QsciLexerRust::defaultColor(int style) const +{ + //if (style == VerbatimString) + // return QColor(0x00, 0x7f, 0x00); + switch (style) + { + case RUST_WORD: + case RUST_WORD2: + case RUST_WORD3: + case RUST_WORD4: + case RUST_WORD5: + case RUST_WORD6: + case RUST_WORD7: + return QColor(0x00, 0x00, 0xff); + default: + break; + } + return QsciLexer::defaultColor(style); +} + +// Returns the font of the text for a style. +QFont QsciLexerRust::defaultFont(int style) const +{ + return QsciLexer::defaultFont(style); +} + +// Returns the user name of a style. +QString QsciLexerRust::description(int style) const +{ + switch (style) + { + case RUST_DEFAULT: + return "default"; + case RUST_COMMENTBLOCK: + return "comment"; + case RUST_COMMENTLINE: + return "commentline"; + case RUST_COMMENTBLOCKDOC: + return "commentblockdoc"; + case RUST_COMMENTLINEDOC: + return "commentlinedoc"; + case RUST_NUMBER: + return "number"; + case RUST_WORD: + return "word"; + case RUST_WORD2: + return "word2"; + case RUST_WORD3: + return "word3"; + case RUST_WORD4: + return "word4"; + case RUST_WORD5: + return "word5"; + case RUST_WORD6: + return "word6"; + case RUST_WORD7: + return "word7"; + case RUST_STRING: + return "string"; + case RUST_STRINGR: + return "stringr"; + case RUST_CHARACTER: + return "character"; + case RUST_OPERATOR: + return "operator"; + case RUST_IDENTIFIER: + return "identifier"; + case RUST_LIFETIME: + return "lifetime"; + case RUST_MACRO: + return "macro"; + case RUST_LEXERROR: + return "lexerror"; + case RUST_BYTESTRING: + return "bytestring"; + case RUST_BYTESTRINGR: + return "bytestringr"; + case RUST_BYTECHARACTER: + return "bytecharacter"; + default: + break; + } + return QString(); +} + + +// Returns the background colour of the text for a style. +QColor QsciLexerRust::defaultPaper(int style) const +{ + return QsciLexer::defaultPaper(style); +} + +// Return the lexer identifier. +int QsciLexerRust::lexerId() const +{ + return L_RUST; +} diff --git a/src/qscint/src/qscilexertext.cpp b/src/qscint/src/qscilexertext.cpp index 47368a8..9ef5660 100755 --- a/src/qscint/src/qscilexertext.cpp +++ b/src/qscint/src/qscilexertext.cpp @@ -17,7 +17,7 @@ QFont QsciLexerText::s_defaultTxtFont(u8"宋体", QsciLexer::s_defaultFontSize); QsciLexerText::QsciLexerText(QObject *parent) : QsciLexer(parent) { - + setLexerId(L_TXT); } QsciLexerText::~QsciLexerText() @@ -166,7 +166,7 @@ QColor QsciLexerText::defaultPaper(int style) const } // Return the lexer identifier. -int QsciLexerText::lexerId() const -{ - return L_TXT; -} +//int QsciLexerText::lexerId() const +//{ +// return L_TXT; +//} diff --git a/src/qscint/src/qscilexervb.cpp b/src/qscint/src/qscilexervb.cpp new file mode 100755 index 0000000..ab5c20c --- /dev/null +++ b/src/qscint/src/qscilexervb.cpp @@ -0,0 +1,139 @@ +#include "Qsci/qscilexervb.h" + +QsciLexerVB::QsciLexerVB(QObject *parent) + : QsciLexer(parent) +{ + setLexerId(L_VB); +} + +QsciLexerVB::~QsciLexerVB() +{} + +const char * QsciLexerVB::language() const +{ + return "VB"; +} + +const char * QsciLexerVB::lexer() const +{ + return "vb"; +} + +QColor QsciLexerVB::defaultPaper(int style) const +{ + return QsciLexer::defaultPaper(style); +} + +const char * QsciLexerVB::keywords(int set) +{ + return "and beep begin boolean byte cbool cbyte ccur cdate cdbl cdec " + "cint clng csng cstr cverr cvar call case choose clear " + "command const currency date deftype dim do doevents double " + "each else end environ eqv erase err error exit explicit fix " + "for function get gosub goto if imp int integer is isarray isdate " + "isempty iserror ismissing isnull isnumeric isobject lbound let like " + "long loop me mod module new next not object on option or private " + "property public raise redim resume return select sendkeys shell single " + "static stop string sub switch then typename ubound vartype variant wend " + "while with xor"; +} + +QColor QsciLexerVB::defaultColor(int style) const +{ + switch (style) + { + case VB_KEYWORD: + case VB_KEYWORD2: + case VB_KEYWORD3: + case VB_KEYWORD4: + case VB_DOCKEYWORD: + return QColor(0x00, 0x00, 0xff); + case VB_NUMBER: + return QColor(0x00, 0x7f, 0x7f); + case VB_STRING: + return QColor(0x7f, 0x00, 0x7f); + case VB_OPERATOR: + return QColor(0xff, 0x00, 0x00); + default: + break; + } + return QsciLexer::defaultColor(style); +} + +QFont QsciLexerVB::defaultFont(int style) const +{ + switch (style) + { + case VB_KEYWORD: + case VB_KEYWORD2: + case VB_KEYWORD3: + case VB_KEYWORD4: + case VB_DOCKEYWORD: + { + QFont f = QsciLexer::defaultFont(style); + f.setBold(true); + return f; + } + default: + break; + } + return QsciLexer::defaultFont(style); +} + +QString QsciLexerVB::description(int style) const +{ + switch (style) + { + case VB_DEFAULT: + return "default"; + case VB_COMMENT: + return "comment"; + case VB_NUMBER: + return "num"; + case VB_KEYWORD: + return "keyword"; + case VB_STRING: + return "string"; + case VB_PREPROCESSOR: + return "preprocessor"; + case VB_OPERATOR: + return "operator"; + case VB_IDENTIFIER: + return "identifier"; + case VB_DATE: + return "date"; + case VB_STRINGEOL: + return "stringeol"; + case VB_KEYWORD2: + return "keyword2"; + case VB_KEYWORD3: + return "keyword3"; + case VB_KEYWORD4: + return "keyword4"; + case VB_CONSTANT: + return "constant"; + case VB_ASM: + return "asm"; + case VB_LABEL: + return "label"; + case VB_ERROR: + return "error"; + case VB_HEXNUMBER: + return "hexnumber"; + case VB_BINNUMBER: + return "binnumber"; + case VB_COMMENTBLOCK: + return "commentblock"; + case VB_DOCLINE: + return "docline"; + case VB_DOCBLOCK: + return "docblock"; + case VB_DOCKEYWORD: + return "dockeyword"; + case VB_PROPS_DEFAULT: + return "propdefault"; + default: + break; + } + return QString(); +} diff --git a/src/qscint/src/qscintilla.pro b/src/qscint/src/qscintilla.pro index 514b8a5..7557811 100755 --- a/src/qscint/src/qscintilla.pro +++ b/src/qscint/src/qscintilla.pro @@ -120,6 +120,7 @@ HEADERS = \ ./Qsci/qscilexergo.h \ ./Qsci/qscilexerglobal.h \ ./Qsci/qscilexertext.h \ + ./Qsci/qscilexerrust.h \ ./Qsci/qscilexerhtml.h \ ./Qsci/qscilexeridl.h \ ./Qsci/qscilexerjava.h \ @@ -150,6 +151,7 @@ HEADERS = \ ./Qsci/qscistyle.h \ ./Qsci/qscistyledtext.h \ ./Qsci/qscilexernsis.h \ + ./Qsci/qscilexervb.h \ ListBoxQt.h \ SciAccessibility.h \ SciClasses.h \ @@ -222,6 +224,7 @@ HEADERS = \ SOURCES = \ qscilexertext.cpp \ + qscilexerrust.cpp \ qscilexernsis.cpp \ qsciscintilla.cpp \ qsciscintillabase.cpp \ @@ -277,6 +280,7 @@ SOURCES = \ qscimacro.cpp \ qscistyle.cpp \ qscistyledtext.cpp \ + qscilexervb.cpp \ InputMethod.cpp \ ListBoxQt.cpp \ MacPasteboardMime.cpp \ diff --git a/src/qscint/src/qscintilla.vcxproj b/src/qscint/src/qscintilla.vcxproj index 0c136da..1662f5f 100755 --- a/src/qscint/src/qscintilla.vcxproj +++ b/src/qscint/src/qscintilla.vcxproj @@ -11,11 +11,11 @@ - {1A6F5081-AC34-3289-B3D1-C03725833468} + {9BC42707-EE25-3B28-9906-F7919E273020} qmyedit_qt5 QtVS_v304 - 10.0.18362.0 - 10.0.18362.0 + 10.0.19041.0 + 10.0.19041.0 $(MSBuildProjectDirectory)\QtMsBuild @@ -65,11 +65,11 @@ true - msvc2017_64 + 5.15.2_msvc2019_64 core;gui;widgets;printsupport - msvc2017_64 + 5.15.2_msvc2019_64 core;gui;widgets;printsupport @@ -77,7 +77,7 @@ - .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;..\scintilla\include;..\scintilla\lexlib;..\scintilla\src;..\scintilla\boostregex;release;/include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\scintilla\include;..\scintilla\lexlib;..\scintilla\src;..\scintilla\boostregex;release;/include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions) release\ false @@ -85,7 +85,7 @@ Sync release\ MaxSpeed - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;SCINTILLA_QT;SCI_LEXER;INCLUDE_DEPRECATED_FEATURES;QT_NO_DEBUG;NDEBUG;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;SCINTILLA_QT;SCI_LEXER;INCLUDE_DEPRECATED_FEATURES;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions) false @@ -105,7 +105,7 @@ 0 - _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;SCINTILLA_QT;SCI_LEXER;INCLUDE_DEPRECATED_FEATURES;QT_NO_DEBUG;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;SCINTILLA_QT;SCI_LEXER;INCLUDE_DEPRECATED_FEATURES;NDEBUG;QT_NO_DEBUG;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) msvc @@ -118,7 +118,7 @@ - .\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;..\scintilla\include;..\scintilla\lexlib;..\scintilla\src;..\scintilla\boostregex;debug;/include;%(AdditionalIncludeDirectories) + GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;..\scintilla\include;..\scintilla\lexlib;..\scintilla\src;..\scintilla\boostregex;debug;/include;%(AdditionalIncludeDirectories) -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions) debug\ false @@ -355,11 +355,13 @@ + + @@ -521,6 +523,8 @@ + + @@ -531,6 +535,8 @@ + + diff --git a/src/qscint/src/qscintilla.vcxproj.filters b/src/qscint/src/qscintilla.vcxproj.filters index 81da5ff..1fdb1a0 100755 --- a/src/qscint/src/qscintilla.vcxproj.filters +++ b/src/qscint/src/qscintilla.vcxproj.filters @@ -634,6 +634,9 @@ Source Files + + Source Files + Source Files @@ -649,6 +652,9 @@ Source Files + + Source Files + Source Files @@ -1008,6 +1014,9 @@ Header Files + + Header Files + Header Files @@ -1023,6 +1032,9 @@ Header Files + + Header Files + Header Files @@ -1163,6 +1175,10 @@ + + + + diff --git a/src/qscint/src/qscintilla.vcxproj.user b/src/qscint/src/qscintilla.vcxproj.user index 580bc81..4105086 100755 --- a/src/qscint/src/qscintilla.vcxproj.user +++ b/src/qscint/src/qscintilla.vcxproj.user @@ -2,9 +2,9 @@ - 2022-11-28T01:26:03.1073266Z + 2022-12-11T10:28:17.8337419Z - 2022-11-28T01:26:03.1753132Z + 2022-12-11T10:28:18.9624294Z \ No newline at end of file diff --git a/src/qscint/src/qsciscintilla.cpp b/src/qscint/src/qsciscintilla.cpp index 6ea4623..3d335d4 100755 --- a/src/qscint/src/qsciscintilla.cpp +++ b/src/qscint/src/qsciscintilla.cpp @@ -127,7 +127,9 @@ QsciScintilla::QsciScintilla(QWidget *parent) setMatchedBraceForegroundColor(Qt::blue); setUnmatchedBraceForegroundColor(Qt::red); - setAnnotationDisplay(AnnotationStandard); + //下面这个不能随意放开,否则在一个长行的情况下,进行替换操作将非常慢 + //20221123用户反馈替换非常慢,对比ndd后查找得到的问题。 + setAnnotationDisplay(AnnotationHidden); setLexer(); // Set the visible policy. These are the same as SciTE's defaults @@ -1721,6 +1723,9 @@ FindState& QsciScintilla::getLastFindState() // Find the first occurrence of a string. +//show:会保证找到的自动,在当前屏幕上可见,这个默认是true,注意该操作非常耗时。 +//在批量查找或者替换的时候,如果不需要可见,最好修改为不可见。否则在替换一个长行,长行中存在几百个的情况,速度会非常慢。 +//本来只需要2s的操作,结果会需要30s。 bool QsciScintilla::findFirst(const QString &expr, bool re, bool cs, bool wo, bool wrap, bool forward, FindNextType findNextType, int line, int index, bool show, bool posix, bool cxx11) @@ -1857,7 +1862,8 @@ bool QsciScintilla::doFind() pos = simpleFind(); } - if (pos == -1) + //替换boost正则库后,返回值不只有-1,可能-2-3,负数都是错误 + if (pos < 0) { // Restore the original selection. if (findState.status == FindState::FindingInSelection) diff --git a/src/qss/black.qss b/src/qss/black.qss new file mode 100755 index 0000000..3c592a8 --- /dev/null +++ b/src/qss/black.qss @@ -0,0 +1,654 @@ +QPalette{background:#444444;}*{outline:0px;color:#DCDCDC;} + +QWidget[form="true"],QLabel[frameShape="1"]{ +border:0px solid #242424; +border-radius:0px; +} + +QWidget[form="bottom"]{ +background:#484848; +} + +QWidget[form="bottom"] .QFrame{ +border:0px solid #DCDCDC; +} + +QWidget[form="bottom"] QLabel,QWidget[form="title"] QLabel{ +border-radius:0px; +color:#DCDCDC; +background:none; +border-style:none; +} + +QWidget[form="title"],QWidget[nav="left"],QWidget[nav="top"] QAbstractButton{ +border-style:none; +border-radius:0px; +padding:0px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QWidget[nav="top"] QAbstractButton:hover,QWidget[nav="top"] QAbstractButton:pressed,QWidget[nav="top"] QAbstractButton:checked{ +border-style:solid; +border-width:0px 0px 2px 0px; +padding:0px 0px 0px 0px; +border-color:#00BB9E; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QWidget[nav="left"] QAbstractButton{ +border-radius:0px; +color:#DCDCDC; +background:none; +border-style:none; +} + +QWidget[nav="left"] QAbstractButton:hover{ +color:#FFFFFF; +background-color:#00BB9E; +} + +QWidget[nav="left"] QAbstractButton:checked,QWidget[nav="left"] QAbstractButton:pressed{ +color:#DCDCDC; +border-style:solid; +border-width:0px 0px 0px 2px; +padding:4px 4px 4px 2px; +border-color:#00BB9E; +background-color:#444444; +} + +QWidget[video="true"] QLabel{ +color:#DCDCDC; +border:1px solid #242424; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QWidget[video="true"] QLabel:focus{ +border:1px solid #00BB9E; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QToolButton#leftBt,#leftSaveBt,#rightBt,#rightSaveBt,#leftReload,#rightReload,#toolButton,#toolButton1,#subToolButton,#addToolButton,#selectDir,#toolButtonBrowse,#definedFilterExt,#proLangBt{ +border-style:none; +border:1px solid #646464; +background-color:#383838; +/*color:#386487;*/ +padding:1px; +min-height:8px; +border-radius:1px; +} + +QToolButton#leftBt:hover,#leftSaveBt:hover,#rightBt:hover,#rightSaveBt:hover,#leftReload:hover,#rightReload:hover,#toolButton:hover,#toolButton1:hover,#subToolButton:hover,#addToolButton:hover,#selectDir:hover,#toolButtonBrowse:hover,#definedFilterExt:hover,#proLangBt:hover{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QToolBar,QMessageBox,QHeaderView::section{ + background-color:#444444; + border: none; + padding:0px; +} + +QTabBar QToolButton[accessibleName="Scroll Left"]{border:0px;background-color:#444444;} + +QTabBar QToolButton[accessibleName="Scroll Right"]{border:0px;background-color:#444444;} + +QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ +border:1px solid #242424; +border-radius:3px; +padding:2px; +background:none; +selection-background-color:#484848; +selection-color:#DCDCDC; +} + +QLineEdit:focus,QTextEdit:focus,QPlainTextEdit:focus,QSpinBox:focus,QDoubleSpinBox:focus,QComboBox:focus,QDateEdit:focus,QTimeEdit:focus,QDateTimeEdit:focus,QLineEdit:hover,QTextEdit:hover,QPlainTextEdit:hover,QSpinBox:hover,QDoubleSpinBox:hover,QComboBox:hover,QDateEdit:hover,QTimeEdit:hover,QDateTimeEdit:hover{ +border:1px solid #242424; +} + +QLineEdit[echoMode="2"]{ +lineedit-password-character:9679; +} + +.QFrame{ +border:1px solid #242424; +border-radius:3px; +} + +.QGroupBox{ +border:1px solid #242424; +border-radius:5px; +margin-top:3ex; +} + +.QGroupBox::title{ +subcontrol-origin:margin; +position:relative; +left:10px; +} + +.QPushButton{ +border-style:none; +border:1px solid #242424; +color:#DCDCDC; +padding:5px; +min-height:15px; +border-radius:5px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +.QPushButton:hover,.QToolButton:hover{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +border:0px; +} + +.QPushButton:pressed,.QToolButton:pressed{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +.QToolButton::menu-indicator{ +image:None; +} + +QToolButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{ +border-radius:3px; +color:#DCDCDC; +padding:3px; +margin:0px; +background:none; +border-style:none; +} + +QToolButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{ +color:#FFFFFF; +margin:1px 1px 2px 1px; +background-color:rgba(51,127,209,230); +} + +QPushButton#btnMenu_Close:hover{ +color:#FFFFFF; +margin:1px 1px 2px 1px; +background-color:rgba(238,0,0,128); +} + +QRadioButton::indicator{ +width:15px; +height:15px; +} + +QRadioButton::indicator::unchecked{ +image:url(:/qss/psblack/radiobutton_unchecked.png); +} + +QRadioButton::indicator::unchecked:disabled{ +image:url(:/qss/psblack/radiobutton_unchecked_disable.png); +} + +QRadioButton::indicator::checked{ +image:url(:/qss/psblack/radiobutton_checked.png); +} + +QRadioButton::indicator::checked:disabled{ +image:url(:/qss/psblack/radiobutton_checked_disable.png); +} + +QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{ +padding:0px -3px 0px 3px; +} + +/*高度务必一样,否则图标不一样高导致高度无法对齐*/ +QTreeWidget::item +{ +color:0xffffff; +height:20px; +} + + +QCheckBox::indicator,QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{ +width:13px; +height:13px; +} + + +QCheckBox::indicator:unchecked,QGroupBox::indicator:unchecked,QTreeWidget::indicator:unchecked,QListWidget::indicator:unchecked{ +image:url(:/qss/psblack/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled,QTreeWidget::indicator:unchecked:disabled,QListWidget::indicator:disabled{ +image:url(:/qss/psblack/checkbox_unchecked_disable.png); +} + +QCheckBox::indicator:checked,QGroupBox::indicator:checked,QTreeWidget::indicator:checked,QListWidget::indicator:checked{ +image:url(:/qss/psblack/checkbox_checked.png); +} + +QCheckBox::indicator:checked:disabled,QGroupBox::indicator:checked:disabled,QTreeWidget::indicator:checked:disabled,QListWidget::indicator:checked:disabled{ +image:url(:/qss/psblack/checkbox_checked_disable.png); +} + +QCheckBox::indicator:indeterminate,QGroupBox::indicator:indeterminate,QTreeWidget::indicator:indeterminate,QListWidget::indicator:indeterminate{ +image:url(:/qss/psblack/checkbox_parcial.png); +} + +QCheckBox::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeWidget::indicator:indeterminate:disabled,QListWidget::indicator:indeterminate:disabled{ +image:url(:/qss/psblack/checkbox_parcial_disable.png); +} + +QTimeEdit::up-button,QDateEdit::up-button,QDateTimeEdit::up-button,QDoubleSpinBox::up-button,QSpinBox::up-button{ +image:url(:/qss/psblack/add_top.png); +width:10px; +height:10px; +padding:2px 5px 0px 0px; +} + +QTimeEdit::down-button,QDateEdit::down-button,QDateTimeEdit::down-button,QDoubleSpinBox::down-button,QSpinBox::down-button{ +image:url(:/qss/psblack/add_bottom.png); +width:10px; +height:10px; +padding:0px 5px 2px 0px; +} + +QTimeEdit::up-button:pressed,QDateEdit::up-button:pressed,QDateTimeEdit::up-button:pressed,QDoubleSpinBox::up-button:pressed,QSpinBox::up-button:pressed{ +top:-2px; +} + +QTimeEdit::down-button:pressed,QDateEdit::down-button:pressed,QDateTimeEdit::down-button:pressed,QDoubleSpinBox::down-button:pressed,QSpinBox::down-button:pressed,QSpinBox::down-button:pressed{ +bottom:-2px; +} + +QComboBox::down-arrow,QDateEdit[calendarPopup="true"]::down-arrow,QTimeEdit[calendarPopup="true"]::down-arrow,QDateTimeEdit[calendarPopup="true"]::down-arrow{ +image:url(:/qss/psblack/add_bottom.png); +width:10px; +height:10px; +right:2px; +} + +QComboBox::drop-down,QDateEdit::drop-down,QTimeEdit::drop-down,QDateTimeEdit::drop-down{ +subcontrol-origin:padding; +subcontrol-position:top right; +width:15px; +border-left-width:0px; +border-left-style:solid; +border-top-right-radius:3px; +border-bottom-right-radius:3px; +border-left-color:#242424; +} + +QComboBox::drop-down:on{ +top:1px; +} + +QMenuBar::item{ +color:#DCDCDC; +background-color:#484848; +margin:0px; +padding:3px 10px; +} + +QMenu,QMenuBar,QMenu:disabled,QMenuBar:disabled{ +color:#DCDCDC; +background-color:#484848; +border:1px solid #242424; +margin:0px; +} + +QMenu::item{ +padding:3px 20px; +} + +QMenu::indicator{ +width:13px; +height:13px; +} + +QMenu::item:selected,QMenuBar::item:selected{ +color:#DCDCDC; +border:0px solid #242424; +background:#646464; +} + +QMenu::separator{ +height:1px; +background:#242424; +} + +QProgressBar{ +min-height:10px; +background:#484848; +border-radius:5px; +text-align:center; +border:1px solid #484848; +} + +QProgressBar:chunk{ +border-radius:5px; +background-color:#242424; +} + +QSlider::groove:horizontal{ +background:#484848; +height:8px; +border-radius:4px; +} + +QSlider::add-page:horizontal{ +background:#484848; +height:8px; +border-radius:4px; +} + +QSlider::sub-page:horizontal{ +background:#242424; +height:8px; +border-radius:4px; +} + +QSlider::handle:horizontal{ +width:13px; +margin-top:-3px; +margin-bottom:-3px; +border-radius:6px; +background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424); +} + +QSlider::groove:vertical{ +width:8px; +border-radius:4px; +background:#484848; +} + +QSlider::add-page:vertical{ +width:8px; +border-radius:4px; +background:#484848; +} + +QSlider::sub-page:vertical{ +width:8px; +border-radius:4px; +background:#242424; +} + +QSlider::handle:vertical{ +height:14px; +margin-left:-3px; +margin-right:-3px; +border-radius:6px; +background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424); +} + +QScrollBar:horizontal{ +background:#484848; +padding:0px; +border-radius:6px; +max-height:12px; +} + +QScrollBar::handle:horizontal{ +background:#525252; +min-width:50px; +border-radius:6px; +} + +QScrollBar::handle:horizontal:hover{ +background:#242424; +} + +QScrollBar::handle:horizontal:pressed{ +background:#242424; +} + +QScrollBar::add-page:horizontal{ +background:none; +} + +QScrollBar::sub-page:horizontal{ +background:none; +} + +QScrollBar::add-line:horizontal{ +background:none; +} + +QScrollBar::sub-line:horizontal{ +background:none; +} + +QScrollBar:vertical{ +background:#484848; +padding:0px; +border-radius:4px; +max-width:12px; +} + +QScrollBar::handle:vertical{ +width: 12px; +background:#808080; +min-height:50px; +border-radius:4px; +} + +QScrollBar::handle:vertical:hover{ +background:#242424; +} + +QScrollBar::handle:vertical:pressed{ +background:#ffffff; +} + +QScrollBar::add-page:vertical{ +background:none; +} + +QScrollBar::sub-page:vertical{ +background:none; +} + +QScrollBar::add-line:vertical{ +background:none; +} + +QScrollBar::sub-line:vertical{ +background:none; +} + +QScrollArea{ +border:0px; +} + +QTreeView,QListView,QTableView,QTabWidget::pane{ +border:1px solid #242424; +selection-background-color:#646464; +selection-color:#DCDCDC; +alternate-background-color:#525252; +gridline-color:#242424; +} + + +QTreeView::branch:closed:has-children{ +margin:4px; +border-image:url(:/qss/psblack/branch_open.png); +} + +QTreeView::branch:open:has-children{ +margin:4px; +border-image:url(:/qss/psblack/branch_close.png); +} + + +QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{ +background:#444444; +} + + + +QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{ +/*color:#FFAA00;*/ +/*background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #0000e0,stop:1 #8000ff);*/ +background:#646464; +} + + +/* +QTableView::item:hover,QListView::item:hover,QTreeView::item:hover{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +}*/ + +QTableView::item,QListView::item,QTreeView::item{ +padding:1px; +margin:0px; +} + + +QHeaderView::section,QTableCornerButton:section{ +padding:3px; +margin:0px; +color:#DCDCDC; +border:1px solid #242424; +border-left-width:0px; +border-right-width:1px; +border-top-width:0px; +border-bottom-width:1px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QTabBar::tab{ +border:0px solid #242424; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +margin-top:1px; +margin-right:1px; +margin-left:0px; +margin-bottom:0px; +padding:0px; +min-width:55px; +} + +QTabBar::tab:selected{ +border-style:solid; +border-color:#00BB9E; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +border-top:2px solid; +border-top-color:#FAAA3C; +margin-top:0px; +margin-right:1px; +margin-left:0px; +margin-bottom:0px; +padding:0px; +} + + +QStatusBar::item{ +color:0x222222; +border:0px solid #484848; +border-radius:3px; +} + +QToolBox::tab,QGroupBox#gboxDevicePanel,QGroupBox#gboxDeviceTitle,QFrame#gboxDevicePanel,QFrame#gboxDeviceTitle{ +padding:3px; +border-radius:5px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QToolTip{ +border:0px solid #DCDCDC; +padding:1px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QToolBox::tab:selected{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QPrintPreviewDialog QToolButton{ +border:0px solid #DCDCDC; +border-radius:0px; +margin:0px; +padding:3px; +background:none; +} + +QColorDialog QPushButton,QFileDialog QPushButton{ +min-width:80px; +} + +QToolButton#qt_calendar_prevmonth{ +icon-size:0px; +min-width:20px; +image:url(:/qss/psblack/calendar_prevmonth.png); +} + +QToolButton#qt_calendar_nextmonth{ +icon-size:0px; +min-width:20px; +image:url(:/qss/psblack/calendar_nextmonth.png); +} + +QToolButton#qt_calendar_prevmonth,QToolButton#qt_calendar_nextmonth,QToolButton#qt_calendar_monthbutton,QToolButton#qt_calendar_yearbutton{ +border:0px solid #DCDCDC; +border-radius:3px; +margin:3px 3px 3px 3px; +padding:3px; +background:none; +} + +QToolButton#qt_calendar_prevmonth:hover,QToolButton#qt_calendar_nextmonth:hover,QToolButton#qt_calendar_monthbutton:hover,QToolButton#qt_calendar_yearbutton:hover,QToolButton#qt_calendar_prevmonth:pressed,QToolButton#qt_calendar_nextmonth:pressed,QToolButton#qt_calendar_monthbutton:pressed,QToolButton#qt_calendar_yearbutton:pressed{ +border:0px solid #242424; +} + +QCalendarWidget QSpinBox#qt_calendar_yearedit{ +margin:2px; +} + +QCalendarWidget QToolButton::menu-indicator{ +image:None; +} + +QCalendarWidget QTableView{ +border-width:0px; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar{ +border:1px solid #242424; +border-width:1px 1px 0px 1px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QComboBox QAbstractItemView::item{ +min-height:20px; +min-width:10px; +} + +QTableView[model="true"]::item{ +padding:0px; +margin:0px; +} + +QTableView QLineEdit,QTableView QComboBox,QTableView QSpinBox,QTableView QDoubleSpinBox,QTableView QDateEdit,QTableView QTimeEdit,QTableView QDateTimeEdit{ +border-width:0px; +border-radius:0px; +} + +QTableView QLineEdit:focus,QTableView QComboBox:focus,QTableView QSpinBox:focus,QTableView QDoubleSpinBox:focus,QTableView QDateEdit:focus,QTableView QTimeEdit:focus,QTableView QDateTimeEdit:focus{ +border-width:0px; +border-radius:0px; +} + +QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ +background:#444444; +} + +*:disabled{ +background:#444444; +border-color:#484848; +} + +/*TextColor:#DCDCDC*/ +/*PanelColor:#444444*/ +/*BorderColor:#242424*/ +/*NormalColorStart:#484848*/ +/*NormalColorEnd:#383838*/ +/*DarkColorStart:#646464*/ +/*DarkColorEnd:#525252*/ +/*HighColor:#00BB9E*/ diff --git a/src/qss/lightbluestyle.qss b/src/qss/lightbluestyle.qss index baf098f..99b5cf2 100755 --- a/src/qss/lightbluestyle.qss +++ b/src/qss/lightbluestyle.qss @@ -3,7 +3,7 @@ border-style:none; border:1px solid #C0DCF2; color:#386487; padding:3px; -min-height:15px; +/*min-height:15px;*/ border-radius:3px; } @@ -20,7 +20,7 @@ QTabBar QToolButton[accessibleName="Scroll Left"]{border:0px;background-color:#E QTabBar QToolButton[accessibleName="Scroll Right"]{border:0px;background-color:#EAF7FF;} -QToolButton#leftBt,#leftSaveBt,#rightBt,#rightSaveBt,#leftReload,#rightReload,#toolButton,#subToolButton,#addToolButton,#selectDir,#toolButtonBrowse,#definedFilterExt,#proLangBt{ +QToolButton#leftBt,#leftSaveBt,#rightBt,#rightSaveBt,#leftReload,#rightReload,#toolButton,#toolButton1,#subToolButton,#addToolButton,#selectDir,#toolButtonBrowse,#definedFilterExt,#proLangBt{ border-style:none; border:1px solid #C0DCF2; background-color:#EAF7FF; @@ -31,7 +31,7 @@ border-radius:1px; } -QToolButton#leftBt:hover,#leftSaveBt:hover,#rightBt:hover,#rightSaveBt:hover,#leftReload:hover,#rightReload:hover,#toolButton:hover,#subToolButton:hover,#addToolButton:hover,#selectDir:hover,#toolButtonBrowse:hover,#definedFilterExt:hover,#proLangBt:hover{ +QToolButton#leftBt:hover,#leftSaveBt:hover,#rightBt:hover,#rightSaveBt:hover,#leftReload:hover,#rightReload:hover,#toolButton:hover,#toolButton1:hover,#subToolButton:hover,#addToolButton:hover,#selectDir:hover,#toolButtonBrowse:hover,#definedFilterExt:hover,#proLangBt:hover{ background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F2F9FF,stop:1 #DAEFFF); } @@ -41,7 +41,7 @@ background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #DEF0FE,stop:1 } QToolBar,QMessageBox,QHeaderView::section{ - background-color:#EAF7FF; + background-color:rgba(255, 255, 255, 255); border: none; padding: 1px; } @@ -144,10 +144,9 @@ QTabBar::close-button:hover{ image: url(\":/notepad/closeTabButton_hover.png\"); } - /*设置垂直滚动条基本样式*/ QScrollBar:vertical { - width: 10px; + width: 12px; background: rgba(0,0,0,0%); margin: 0px,0px,0px,0px; /*留出9px给上面和下面的箭头*/ @@ -157,7 +156,7 @@ QScrollBar:vertical { } QScrollBar::handle:vertical { - width: 10px; + width: 12px; background: rgba(0,0,0,25%); /*滚动条两端变成椭圆 */ border-radius: 4px; @@ -165,7 +164,7 @@ QScrollBar::handle:vertical { } QScrollBar::handle:vertical:hover { - width: 10px; + width: 12px; /*鼠标放到滚动条上的时候,颜色变深*/ background: rgba(0,0,0,50%); border-radius: 4px; @@ -176,7 +175,7 @@ QScrollBar::handle:vertical:hover { QScrollBar::add-line:vertical { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/3.png); subcontrol-position: bottom; } @@ -186,7 +185,7 @@ QScrollBar::add-line:vertical QScrollBar::sub-line:vertical { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/1.png); subcontrol-position: top; } @@ -195,7 +194,7 @@ QScrollBar::sub-line:vertical QScrollBar::add-line:vertical:hover { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/4.png); subcontrol-position: bottom; } @@ -204,7 +203,7 @@ QScrollBar::add-line:vertical:hover QScrollBar::sub-line:vertical:hover { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/2.png); subcontrol-position: top; } diff --git a/src/qss/mystyle.qss b/src/qss/mystyle.qss index c33d7c4..f5616d5 100755 --- a/src/qss/mystyle.qss +++ b/src/qss/mystyle.qss @@ -53,7 +53,7 @@ background-color:#00CCFF; /*设置垂直滚动条基本样式*/ QScrollBar:vertical { - width: 10px; + width: 12px; background: rgba(0,0,0,0%); margin: 0px,0px,0px,0px; /*留出9px给上面和下面的箭头*/ @@ -62,7 +62,7 @@ QScrollBar:vertical { } QScrollBar::handle:vertical { - width: 10px; + width: 12px; background: rgba(0,0,0,25%); /*滚动条两端变成椭圆 */ border-radius: 4px; @@ -70,7 +70,7 @@ QScrollBar::handle:vertical { } QScrollBar::handle:vertical:hover { - width: 10px; + width: 12px; /*鼠标放到滚动条上的时候,颜色变深*/ background: rgba(0,0,0,50%); border-radius: 4px; @@ -81,7 +81,7 @@ QScrollBar::handle:vertical:hover { QScrollBar::add-line:vertical { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/3.png); subcontrol-position: bottom; } @@ -91,7 +91,7 @@ QScrollBar::add-line:vertical QScrollBar::sub-line:vertical { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/1.png); subcontrol-position: top; } @@ -100,7 +100,7 @@ QScrollBar::sub-line:vertical QScrollBar::add-line:vertical:hover { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/4.png); subcontrol-position: bottom; } @@ -109,7 +109,7 @@ QScrollBar::add-line:vertical:hover QScrollBar::sub-line:vertical:hover { height: 9px; - width: 10px; + width: 12px; border-image: url(:/Resources/img/2.png); subcontrol-position: top; } diff --git a/src/qss/psblack/add_bottom.png b/src/qss/psblack/add_bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..2f8c0f2c250a2be650b4dd848847797269ce4a6c GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VORx%@(9)nl1b!G9|CCO{rnBgG-~! zKL&sKj9NX$1_7u1G~GQOPOMm!{r#2PH|GWajP_YKn7)wQ-QXX1OU?@!X5Kw%U*}j-&vHtw37vvcRPgg&ebxsLQ0F}~IuK)l5 literal 0 HcmV?d00001 diff --git a/src/qss/psblack/add_right.png b/src/qss/psblack/add_right.png new file mode 100755 index 0000000000000000000000000000000000000000..d01c2f7b4d3f1ffc6d62dbb0ecd76c7b97abf1fb GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOR9?ZSI9wjSu;T&J-#CMvsplDTno_F8>bo3G8g;~7(owN>OTpFhOi}LN+L_NMa~>*FNRa?Yr71bD!1z aO_UD{NH^z`yQd3u7=x#)pUXO@geCx{qfrR} literal 0 HcmV?d00001 diff --git a/src/qss/psblack/add_top.png b/src/qss/psblack/add_top.png new file mode 100755 index 0000000000000000000000000000000000000000..a5ceb4fa2c453a1c87fe476ae75af1694478a736 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VORw^ZITOXiaWs3eStZm>+VA9 mA0nRvs+yl(SjU!8yN1^;I-c7vvG**{N(N6?KbLh*2~7Y9gg-I> literal 0 HcmV?d00001 diff --git a/src/qss/psblack/branch_close.png b/src/qss/psblack/branch_close.png new file mode 100755 index 0000000000000000000000000000000000000000..10b6627571f61cadbd6db4781b261b14e6f1f9ce GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|JUm?-LoEE0 zQx*sq1g)5#c!hz@L*mc>|Mp!y2U5~fQet?F7tCvHT-fO1EF~c+DZNqhLr;TaP(Wo1 nqspzGMKva}4wnx$uqiP-?BN%zIiX_;G?T&8)z4*}Q$iB}&`B%) literal 0 HcmV?d00001 diff --git a/src/qss/psblack/branch_open.png b/src/qss/psblack/branch_open.png new file mode 100755 index 0000000000000000000000000000000000000000..2d6f93ce9a8b906bff3be67949c20d3acb943e15 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|qCH(4LoEEC zPChNjpvd7o`P{WrI=mdK II;Vst03;?iR{#J2 literal 0 HcmV?d00001 diff --git a/src/qss/psblack/calendar_nextmonth.png b/src/qss/psblack/calendar_nextmonth.png new file mode 100755 index 0000000000000000000000000000000000000000..c80aa2af455d64662a22d58f814d6a84f3a73916 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VORc#LCZbQRv+75#=%f1Bk#$lJNKM) zdBoz&twCAe*rbxLF0=6%PB6YR_klP*7Z4ZXL}pT%=hjK{m$#@i?Qd;h0t z-aj-aA$X0@mxBxoQnfogzB`}$`8Z;}Z{##>K}*wvS+1A)zj4K$>bIEb@#PKBuMD29 KelF{r5}E)e<91pA literal 0 HcmV?d00001 diff --git a/src/qss/psblack/calendar_prevmonth.png b/src/qss/psblack/calendar_prevmonth.png new file mode 100755 index 0000000000000000000000000000000000000000..421799e41fad0c0b216cd2b74d0efdf5b55c2d78 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VORC}_;rKI5OmZoDfTwKo0f37rX*MVc|)*JR-t1{>KaxiOw z{x`O5iMHBXudQ38u}Y%C?Qm4JOebT5(jwIhg0l^eG6)@;AK}}gcSrf+j*|>iA{+JIG_)vfbbhgk zNmYBv88#6UA4e$%v4aOA&b`)|Zy#B{iCOb$%W)S5Cl39H``=sQRCMnhJn?ghR>mim zhK;LN-eN4+yReP%NTlb&0v7WdlTGHcrfwH!%AY2J|3mdKI;Vst0EhQ= Aj>wrJQwfiCNy(@lX2GV`F|6dEd)5iiu?m2PA&`H40uVoXqrTvdo>m z)`1)cmrP+|XiMBt5?fv?{l$=B#p_=NzL$GD9!1Yf)=Q0i*LcFVrd2XI=k_+K4^iK` zfA6~IA_JsnYR%~pY?qe=auyZ-$>Q!miOcwn1G*JX=7`_RyhI;ZXa_Rsk| zr+8j_(zRQM9|r*SB=^h}Z%xwkU%sbpUE=-&`!5LO2*x-$Z=AlM|5(C-Q?Y%GG5?61)h?H|VHJk<7#Ng@b=d#Wzp$PzssyqMy literal 0 HcmV?d00001 diff --git a/src/qss/psblack/checkbox_parcial_disable.png b/src/qss/psblack/checkbox_parcial_disable.png new file mode 100755 index 0000000000000000000000000000000000000000..eca2c617adbd2a24f3740ec74b01533044d9c690 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VORGWy z*|#AYM?GySJQmiAd~;Udbmj=pn8C+zpt?T0apkLuEXLYpmN%w$ow2!6BQ`NrJms0< zu?oY@ds+np`#XZYUhccSaOTrFpOd*=j-;=w`?K)RLFT5Twk7B0UjOz+R_WDh2f;{z t!gVj7{q_p8*0Ei4wx7o}^my0c7hCqihc)I$ztaD0e0svmrUHJe2 literal 0 HcmV?d00001 diff --git a/src/qss/psblack/checkbox_unchecked.png b/src/qss/psblack/checkbox_unchecked.png new file mode 100755 index 0000000000000000000000000000000000000000..b06fd70c822bcfc1e27cba7e35165fed73cd66b1 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOR>U-D%b!3 literal 0 HcmV?d00001 diff --git a/src/qss/psblack/checkbox_unchecked_disable.png b/src/qss/psblack/checkbox_unchecked_disable.png new file mode 100755 index 0000000000000000000000000000000000000000..db00b2a168a24800f11bb204d78dc49e325c0f79 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VORy%Tld(?QP!xv06DKIPWJ8=x zC?pmRJ49kD>C&QB-I=LWb?h_rIZy{)0EP~zqDyI;$!gV384M92WI+)oX7GUV?LchO z0;QGs$E$n4^Pm5o0}m{@>%7ruw3JfozzR?spC19AbGh86@B3c>buZ9yoVuoI??mLu z-<&9=c7az12M7H-fv)Q|fn5iWrSX#Bq#LYM9IAp8CH3 z;|6f-?3;*`Ez6=*Dj{-vB1$QOARr7wlu|>WnL5p<;BlK}%d)U-J9}KK)u`9&03043 z((m^X5p3H=DaHBuc?H-2o@WjljmBf(Q=w2`c6K&%wzjrLv)RP5EC9kV#PdA1wze{- zgTa6}j!BYarQ7X()c{JR(pwQ(oSB)SSS)6+R;z_!7>EcWLa|uHaU67Ar_TJQtHM`GYLF`t2u+K-wea>PS|KPqSxyI5XUh9BGQ`#eugYu z`u#qh=Vg~C6~{52=W%>|%;Xzj4?qK`R4M`R^5WtG(=-tgI-L%>u2U|TnVOnHDaF~@ z8SQqP?d|QX?cs1pk|ZQa@+Js^e!2?cy6y)NS^aactJNxw=4`o8}&W!$jfy6&8aYyi)0wRf!@5qX_DyAzmdet!Ouh^&i9D;?VL mXzV3Pvf1r++xHZF82thxBoSPC?dBQ)0000bl+SM>Hx$R;^9(ivGnD2B z8 z?I!2E%or;oqF4bVW6WGBHPTxD>bmZ$)6>)7NnoSV*dn6ug%GVwCQ}qb3_0gB+qNYD zfYw?_DL0f-&*M0rODVgSW&POe_5Ms5*1EGKNq%q~=S#^RO>j^jjyLg6jq-{z~;s=L3xzfmri zT>wDe_Z1?N5MpMG$rDj&xm=prZ1x)ffSo45w(VvnlPP+h_e=W7@$vEJ&1SP<+qM7z zP)f;OuXo;Vw=VzyT-WW#ar{y#^`cg*bq0gM*aiULoHsbdckMAQI)F|EN2}Fp zR4SD`0Dur;#uzIaV|D-l7ytkwx`-&!Y;J9B<$(aNYnElzv)Swz5vkwr-#Lz>tJUiB zTrO8|94DX2Wb96-b9QoaatQ!njA20#G@~fG(psO)=kwsP_3HKdcez~d+gvV}6bgm6 z>3*eB$)^dJPN$31834e;!^3CG)fp$JU!nCUL1$`aOoO(|t0rR-Ri_0wQ5xKBCnjjzMQ!+a0~Ut5;-Vr_h7SJe<2WA2qwqa;aszVE-D zOeRl{uXWXGwH?lR!x*!Z7A+Ai7-J)?_4(D+)q7p^zvwUja;Bj2UL_d-0000;p literal 0 HcmV?d00001 diff --git a/src/qss/psblack/radiobutton_unchecked.png b/src/qss/psblack/radiobutton_unchecked.png new file mode 100755 index 0000000000000000000000000000000000000000..3d1e440250428fffc3571c48a63589ef66df5098 GIT binary patch literal 564 zcmV-40?Yl0P)bl(A~tP!xv0Bgumd5=hS4 z#K`hqGN+!>lE?56@=&FNpCW@hC81-Xoi8>trAx3Qq(zIYlfk;eA+cja`cL9q^yxq6 z{zvf6l5O=gO-HIa20j7DP5mCYbsT46jJX5!O<=#@KXG06n~0q6a-ynJ;Bq#b{oM*2 z3Ed%&!-~#@SC1>4jlP6h(-< zJ`q(V%QA|hKvfsOsdegDaMNZl3`62L-U^o+U|gCL&`I8QIV_(YUGWdSYkx-}MBdh`lB-A{HG00000T)WL4kKoADton3o2R_(^E zP)Mq(K}AZd9D0HyoH%meT@f$PUO7M|st`~@i`vu&lqPXv?|MDMr49uYNTvSQl|IeR z?5q$E99VU*x3||q#11nz0U#7Y2xd+J;M!W-zqq&eyz3c`o14)tuGOA?0KFMLI~%aHpXmQYj=vG zxG~0@DW%@_dc7Z&q3%{zmgSou2%ZH&kjHU+rnR0ar5pe-0I*WZX{~3qTJ4&d>q3Yp zMNve%ySrbKBq@FaqbPb61i|wl2=dL%%>ls5_6h)Ct@W6QHki4wSS)Bf9)A@=2w4rl z^SlG!_v0vvhAX8%5{BV7-}kqaQitt!ySW4rv4e;$t@R}U@VcOsk`VC<5nG7ZS%S>m zlv2isI9?a4qO~4NDPtn~RUrU`0HCXB-Y1^tXVc)k~73Xfzt%i=v2_`LVTjzbs1tfD!;oW`?3Dg2iIdn9t`2#+cj~ z^Fb-~?)?0GQaOJu?9tKD#(X}1p_Dqj^L^EX5Q3RABAQrhM`c;|(lk9ul4SMwbvNyH xyNQS$B5GETmYHW#%8_%fKO7E||MmDm@)P`_OqF>5SC{|*002ovPDHLkV1gZzKyLs5 literal 0 HcmV?d00001 diff --git a/src/qtlangset.cpp b/src/qtlangset.cpp index b0bcaad..d4067f1 100755 --- a/src/qtlangset.cpp +++ b/src/qtlangset.cpp @@ -3,6 +3,7 @@ #include "nddsetting.h" #include "rcglobal.h" #include "ccnotepad.h" +#include "styleset.h" #include #include @@ -36,6 +37,43 @@ enum LangType { }; #endif +static const QColor blackColor(Qt::black); +static const QColor lightColor(0xdedede); + +static const QColor blackColor1(0x0000ff); +static const QColor lightColor1(0xffaa00); + +//C++ע͵Ĭɫ +static const QColor blackColor2(0x007f00); +static const QColor lightColor2(0x009000); + +static const QColor blackColor3(0x7f7f00); +static const QColor lightColor3(0xfca287); + +static const QColor blackColor4(0x8000ff); +static const QColor lightColor4(0xffaa00); + +static const QColor blackColor5(0x007f7f); +static const QColor lightColor5(0xaaff7f); + +static const QColor blackColor6(0x7f007f); +static const QColor lightColor6(0x00ffff); + +QMap QtLangSet::s_darkColorMap; + +static void initDarkColorMap() +{ + if (QtLangSet::s_darkColorMap.isEmpty()) + { + QtLangSet::s_darkColorMap.insert(blackColor.name(), lightColor); + QtLangSet::s_darkColorMap.insert(blackColor1.name(), lightColor1); + QtLangSet::s_darkColorMap.insert(blackColor2.name(), lightColor2); + QtLangSet::s_darkColorMap.insert(blackColor3.name(), lightColor3); + QtLangSet::s_darkColorMap.insert(blackColor4.name(), lightColor4); + QtLangSet::s_darkColorMap.insert(blackColor5.name(), lightColor5); + QtLangSet::s_darkColorMap.insert(blackColor6.name(), lightColor6); + } +} QtLangSet::QtLangSet(QString initTag, QWidget *parent) : QMainWindow(parent), m_selectLexer(nullptr), m_selectStyleId(0), m_isStyleChange(false),m_isStyleChildChange(false), m_initShowLexerTag(initTag), m_previousSysLangItem(nullptr),m_isGlobelItem(false) @@ -45,6 +83,7 @@ QtLangSet::QtLangSet(QString initTag, QWidget *parent) initUserDefineLangList(); startSignSlot(); + initDarkColorMap(); } QtLangSet::~QtLangSet() @@ -277,7 +316,7 @@ void QtLangSet::getCurUseLexerTags(QVector& tag) } } -//ָԭķĿ +//ʹȫ趨Է void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) { QFont oldfont; @@ -363,6 +402,8 @@ void QtLangSet::updateAllLangeStyleWithGlobal(GLOBAL_STYLE_SET flag) case GLOBAL_BK_COLOR: { pLexer->setPaper(m_curStyleData.paper, -1); + //ĬֽɫQPaletteһ¡Ҫһ + pLexer->setDefaultPaper(m_curStyleData.paper); } break; default: @@ -394,7 +435,7 @@ void QtLangSet::restoreOriginLangAllStyle() } //Զãֱȫɾ - QString cfgPath = QString("notepad/userstyle/%1").arg(pLexer->lexerTag()); + QString cfgPath = QString("notepad/userstyle/%1/%2").arg(StyleSet::getCurrentStyle()).arg(pLexer->lexerTag()); QSettings qs(QSettings::IniFormat, QSettings::UserScope, cfgPath); if (QFile::exists(qs.fileName())) @@ -407,6 +448,27 @@ void QtLangSet::restoreOriginLangAllStyle() } } +//ֻrestoreOriginLangOneStyleе +static void restoreLangFontFgColorToDarkStyle(QsciLexer *pLexer, int i) +{ + if (QtLangSet::s_darkColorMap.contains(pLexer->color(i).name())) + { + pLexer->setColor(QtLangSet::s_darkColorMap.value(pLexer->color(i).name()), i); + } + } + +//ֻrestoreOriginLangOneStyleе +static void restoreLangPaperColorToDarkStyle(QsciLexer *pLexer, int i) +{ + //עɫvoid StyleSet::setBlackStyle()бһ + //Ҳɰɫ + if (StyleSet::foldbgColor != pLexer->paper(i)) + { + pLexer->setPaper(StyleSet::foldbgColor, i); + pLexer->setDefaultPaper(StyleSet::foldbgColor); + } +} + //ָԵijʼ,ָֻGLOBAL_STYLE_SETָķ void QtLangSet::restoreOriginLangOneStyle(GLOBAL_STYLE_SET flag) { @@ -471,12 +533,23 @@ void QtLangSet::restoreOriginLangOneStyle(GLOBAL_STYLE_SET flag) { oldClor = pOriginLexer->color(i); pLexer->setColor(oldClor, i); + + if (BLACK_SE == StyleSet::getCurrentSytleId()) + { + restoreLangFontFgColorToDarkStyle(pLexer, i); + } + } break; case GLOBAL_BK_COLOR: { oldClor = pOriginLexer->paper(i); pLexer->setPaper(oldClor, i); + + if (BLACK_SE == StyleSet::getCurrentSytleId()) + { + restoreLangPaperColorToDarkStyle(pLexer, i); + } } break; default: @@ -588,6 +661,11 @@ void QtLangSet::initLangList() //ǶӵģӳִСǵѡѡУǵһasp ui.langListWidget->sortItems(Qt::AscendingOrder); + //ֶ޸ĵһΪġ + if (ui.langListWidget->item(0)->text() == QString("AllGlobal")) + { + ui.langListWidget->item(0)->setText(tr("AllGlobal")); +} } //isLoadToUIǷʾǰUI @@ -942,7 +1020,7 @@ void QtLangSet::setStyleShow(QFont& font, QColor& fcColor, QColor &bkColor) //ȡضԵ bool QtLangSet::readLangSettings(QsciLexer *lexer, QString tag) { - QString cfgPath = QString("notepad/userstyle/%1").arg(tag); + QString cfgPath = QString("notepad/userstyle/%1/%2").arg(StyleSet::getCurrentStyle()).arg(tag); QSettings qs(QSettings::IniFormat, QSettings::UserScope, cfgPath); if (QFile::exists(qs.fileName())) @@ -960,7 +1038,7 @@ void QtLangSet::saveLangeSet(QsciLexer *lexer) { QString tag = lexer->lexerTag(); - QString cfgPath = QString("notepad/userstyle/%1").arg(tag); + QString cfgPath = QString("notepad/userstyle/%1/%2").arg(StyleSet::getCurrentStyle()).arg(tag); QSettings qs(QSettings::IniFormat, QSettings::UserScope, cfgPath); lexer->writeSettings(qs); @@ -1144,7 +1222,7 @@ void QtLangSet::slot_reset() m_isStyleChange = false; //ԶãҲɾ - QString cfgPath = QString("notepad/userstyle/%1").arg(m_selectLexer->lexerTag()); + QString cfgPath = QString("notepad/userstyle/%1/%2").arg(StyleSet::getCurrentStyle()).arg(m_selectLexer->lexerTag()); QSettings qs(QSettings::IniFormat, QSettings::UserScope, cfgPath); if (QFile::exists(qs.fileName())) @@ -1152,6 +1230,12 @@ void QtLangSet::slot_reset() QFile::remove(qs.fileName()); } + //ǰɫ񣬻Ҫһ滻ɫ²۵ɫ + if (BLACK_SE == StyleSet::getCurrentSytleId()) + { + setLangFontFgColorToDarkStyle((LangType)m_selectLexer->lexerId(), m_selectLexer->lexerTag()); + } + //һҪȱ棬ΪselectInitLangTagܻ仯 int row = ui.styleListWidget->currentRow(); @@ -1173,6 +1257,13 @@ void QtLangSet::slot_reset() return; } restoreOriginLangAllStyle(); + + //ǰɫ񣬻Ҫһ滻ɫ²۵ɫ + if (BLACK_SE == StyleSet::getCurrentSytleId()) + { + setAllLangFontFgColorToDarkStyle(); + } + previewAllGoblalChange(); //ֶˢUIȫĿǰֻһȫ @@ -1181,7 +1272,9 @@ void QtLangSet::slot_reset() { delete m_selectLexer; } - m_selectLexer = ScintillaEditView::createLexer(L_GLOBAL,"",true); + + //ǰڷܶȡԴָ;ǰȡԴ + m_selectLexer = ScintillaEditView::createLexer(L_GLOBAL,"",(BLACK_SE != StyleSet::getCurrentSytleId())); QListWidgetItem* styleItem = ui.styleListWidget->item(0); @@ -1289,3 +1382,133 @@ void QtLangSet::slot_useAlobalFontItalic(bool check) previewAllGoblalChange(); } } + + + +//ĬԷIJɫ滻Ϊɫ۵ɫ +//ǿԴԶԵġ +void QtLangSet::setLangFontFgColorToDarkStyle(LangType langId, QString tag) +{ + //QColor blackColor(Qt::black); + //QColor lightColor(0xdedede); + + //QColor blackColor1(0x0000ff); + //QColor lightColor1(0xffaa00); + + + ////C++ע͵Ĭɫ + //QColor blackColor2(0x007f00); + //QColor lightColor2(0x009000); + + //QColor blackColor3(0x7f7f00); + //QColor lightColor3(0xfca287); + + + //QColor blackColor4(0x8000ff); + //QColor lightColor4(0xffaa00); + + //עɫvoid StyleSet::setBlackStyle()бһ + //QColor bkPaperColor(0, 0, 0); + + QsciLexer *pLexer = ScintillaEditView::createLexer(langId, tag); + if (nullptr != pLexer) + { + for (int i = 0; i <= 255; ++i) + { + if (!pLexer->description(i).isEmpty()) + { + /*if (blackColor == pLexer->color(i)) + { + pLexer->setColor(lightColor, i); + } + else if (blackColor1 == pLexer->color(i)) + { + pLexer->setColor(lightColor1, i); + } + else if (blackColor2 == pLexer->color(i)) + { + pLexer->setColor(lightColor2, i); + } + else if (blackColor3 == pLexer->color(i)) + { + pLexer->setColor(lightColor3, i); + } + else if (blackColor4 == pLexer->color(i)) + { + pLexer->setColor(lightColor4, i); + }*/ + + if (QtLangSet::s_darkColorMap.contains(pLexer->color(i).name())) + { + pLexer->setColor(QtLangSet::s_darkColorMap.value(pLexer->color(i).name()), i); + } + + //Ҳɰɫ + if (StyleSet::foldbgColor != pLexer->paper(i)) + { + pLexer->setPaper(StyleSet::foldbgColor, i); + } + } + } + //ĬֽɫQPaletteһ¡Ϊɫɫ䱳QPaletteһҪһ + pLexer->setDefaultPaper(StyleSet::foldbgColor); + saveLangeSet(pLexer); + delete pLexer; + } + } + +//Ѱɫϵ治׿ɫ滻һ¡ĬзģĬϷɫϵġ +//ѷ0x000000壬0xdedede +//0x0000ffɫ0xffff00 +//ûдԶԡ +void QtLangSet::setAllLangFontFgColorToDarkStyle() +{ + initDarkColorMap(); + + for (int index = 0; index <= L_TXT; ++index) + { + setLangFontFgColorToDarkStyle((LangType)index); + } + } + +//鵱ǰǷѾڰɫ +bool QtLangSet::isExistDarkLangSetings() +{ + QString cfgPath = QString("notepad/userstyle/black/AllGlobal"); + QSettings qs(QSettings::IniFormat, QSettings::UserScope, cfgPath); + return QFile::exists(qs.fileName()); + } + +////ѷ0xdedede壬0x000000 +//void QtLangSet::setAllLangFontFgColorToLightStyle() +//{ +// QColor blackColor(Qt::black); +// QColor lightColor(0xdedede); +// +// QColor blackColor1(0xffaa00); +// QColor lightColor1(0x0000ff); +// +// for (int index = 0; index <= L_TXT; ++index) +// { +// QsciLexer *pLexer = ScintillaEditView::createLexer(index); +// if (nullptr != pLexer) +// { +// for (int i = 0; i <= 255; ++i) +// { +// if (!pLexer->description(i).isEmpty()) +// { +// if (lightColor == pLexer->color(i)) +// { +// pLexer->setColor(blackColor, i); +// } +// else if (blackColor1 == pLexer->color(i)) +// { +// pLexer->setColor(lightColor1, i); +// } +// } +// } +// saveLangeSet(pLexer); +// delete pLexer; +// } +// } +//} diff --git a/src/qtlangset.h b/src/qtlangset.h index a6575f1..230dbab 100755 --- a/src/qtlangset.h +++ b/src/qtlangset.h @@ -28,12 +28,14 @@ public: QtLangSet(QString initTag, QWidget *parent = nullptr); ~QtLangSet(); - + static void setAllLangFontFgColorToDarkStyle(); + static bool isExistDarkLangSetings(); + void selectInitLangTag(QString initLangTag); + static bool readLangSettings(QsciLexer * lexer, QString tag); +private: + static void setLangFontFgColorToDarkStyle(LangType langId, QString tag=""); void startSignSlot(); - void selectInitLangTag(QString initLangTag); - - static bool readLangSettings(QsciLexer * lexer, QString tag); signals: @@ -70,12 +72,15 @@ private slots: void slot_useAlobalFontUnderline(bool); void slot_useAlobalFontItalic(bool); + + + private: void initLangList(); bool readLangSetFile(QString langName, QString & keyword, QString & motherLang, QString & extTypes); void initUserDefineLangList(); void setStyleShow(QFont & font, QColor& fcColor, QColor &bkColor); - void saveLangeSet(QsciLexer * lexer); + static void saveLangeSet(QsciLexer * lexer); bool saveCurLangSettings(); void fillForegroundColor(QColor & fcColor); void fillBackgroundColor(QColor & bkColor); @@ -110,4 +115,8 @@ private: //是否是全局修改项 bool m_isGlobelItem; + +public: + //黑色模式下不显眼的颜色,替换到显眼颜色 + static QMap s_darkColorMap; }; diff --git a/src/qtlangset.ui b/src/qtlangset.ui index 7d9472f..3c6b1e6 100755 --- a/src/qtlangset.ui +++ b/src/qtlangset.ui @@ -20,126 +20,126 @@ - - - - - Language - - - - - - - - 100 - 0 - - - - + + + + + Language + + + + + + + + 100 + 0 + + + + 220 - 16777215 - - - - - - - - User Define Language - - - - - - - - 100 - 0 - - - - + 16777215 + + + + + + + + User Define Language + + + + + + + + 100 + 0 + + + + 220 - 150 - - - - - - - - - - - - Style - - + 150 + + + + + - - - - 250 - 0 - - - - - 500 - 16777215 - - - + + + + + Style + + + + + + + + 250 + 0 + + + + + 500 + 16777215 + + + + + - - - - - Color - - - - - - - - Foreground: - - - - - - - - 0 - 0 - - - - - 32 - 32 - - - - TextLabel - - - - - - - Select - - - + + + Color + + + + + + + Foreground: + + + + + + + + 0 + 0 + + + + + 32 + 32 + + + + TextLabel + + + + + + + Select + + + + All Style @@ -147,86 +147,93 @@ - - - Qt::Horizontal - - - - 40 - 20 - - - + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - - - + + + + + background: + + + + + + + + 0 + 0 + + + + + 32 + 32 + + + + Same As Theme + + + + + - background: + Select - - - - 0 - 0 - - - - - 32 - 32 - - - - Same As Theme - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - - - - - - Font - + + + + + + Font + - + - + Name: - - - - + + + + + + - - @@ -254,26 +261,26 @@ - + - + Font Size: - - - - + + + + 1 - - + + @@ -281,14 +288,14 @@ - + - - - + + + 1 @@ -296,67 +303,67 @@ - - - Keyword And Mother - - + + + Keyword And Mother + + + + + + true + + + + + + + + + Mother Language: + + + + + + + false + - - - true - - + + None + - - - - - Mother Language: - - - - - - - false - - - - None - - - - - Cpp - - - - - + + Cpp + - - - - - - Ext File Type: - - - - - - - true - - - - - - - - + + + + + + + + + + Ext File Type: + + + + + + + true + + + + + + + + @@ -367,7 +374,7 @@ Global Style Set - + Use Global Foreground Color @@ -377,7 +384,7 @@ - false + true Use Global Background Color @@ -656,6 +663,22 @@ + + toolButton1 + clicked() + QtLangSetClass + slot_changeBkColor() + + + 829 + 123 + + + 491 + 363 + + + slot_saveClick() diff --git a/src/rcglobal.h b/src/rcglobal.h index 18b6bca..cf86043 100755 --- a/src/rcglobal.h +++ b/src/rcglobal.h @@ -5,7 +5,7 @@ #include #include -static const char* VersionStr = "v1.18.0"; +static const char* VersionStr = "v1.19.2"; #define CMP_CODE_NOEQUAL diff --git a/src/realcompare_zh.qm b/src/realcompare_zh.qm index 5b78cf080b76dadc536cc09765ace04687f63d9c..c6e69bdf5f2fcda7a95ddf1b4706422d9a14b337 100755 GIT binary patch delta 9087 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 Dv{2l; delta 6433 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 DN}j_V diff --git a/src/realcompare_zh.ts b/src/realcompare_zh.ts index d2406b0..6bc064f 100755 --- a/src/realcompare_zh.ts +++ b/src/realcompare_zh.ts @@ -78,8 +78,8 @@ 编辑 - - + + Format Conversion 格式转换 @@ -92,8 +92,8 @@ 视图 - - + + Display symbols 显示符号 @@ -102,130 +102,130 @@ 编码 - - + + Language 语言 - - + + P - - - - + + + + C - - + + J - - - - + + + + R - - + + H - - + + M - - + + B - - + + I - - + + N - - + + A - - + + S - - + + V - - + + L - - + + T - - + + F - - - - - - + + + + + + D - - + + O - - + + E - - + + G @@ -234,14 +234,14 @@ 设置 - - + + Style 皮肤风格 - - + + About 关于 @@ -254,392 +254,385 @@ 最近对比 - - + + Dir ... 目录... - - + + File ... 文件... - - + + New 新建 - - - Ctrl+N - - - - - + + Open ... 打开 - - + + Ctrl+O - - + + Save 保存 - - + + Ctrl+S - - + + Save As ... 另存为 - - + + Ctrl+Alt+S - - - - + + + + Close 关闭 - - + + Ctrl+W - - + + Exit 退出 - - + + Ctrl+Q - - - + + + Close All 关闭所有 - - + + Ctrl+Shift+W - - - + + + Undo 撤销 - - + + Ctrl+Z - - - + + + Redo 重做 - - + + Ctrl+Y - - - + + + Cut 剪切 - - + + Ctrl+X - - - + + Copy 拷贝 - - + + Ctrl+C - - - + + + Paste 粘贴 - - + + Ctrl+V - - + + Select All 全选 - - + + Ctrl+A - - + + Windows(CR+LF) - - + + Unix(LF) - - + + Mac(CR) - - - + + + Find 查找 - - + + Ctrl+F - - - + + + Replace 替换 - - + + Go line 跳转 - - + + Ctrl+G - - + + Show spaces/tabs 显示空格 - - + + Show end of line 显示行尾 - - + + Show all 显示所有 - - + + Encode in GBK 编码 GBK - - + + Encode in UTF8 编码 UTF8 - - + + Encode in UTF8-BOM 编码 UTF8-BOM - - + + Encode in UCS-2 BE BOM 编码 UCS-2 BE BOM - - + + Encode in UCS-2 LE BOM 编码 UCS-2 LE BOM - - + + Convert to GBK 转换为 GBK 编码 - - + + Convert to UTF8 转换为 UTF8 编码 - - + + Convert to UTF8-BOM 转换为 UTF8-BOM 编码 - - + + Convert to UCS-2 BE BOM 转换为 UCS-2 BE BOM 编码 - - + + Convert to UCS-2 LE BOM 转换为 UCS-2 LE BOM 编码 - - + + Batch convert 批量转换编码 - - + + Options 选项 - - + + BugFix 问题反馈 - - + + Donate 捐赠作者 - - + + Default 默认 - - + + LightBlue 亮蓝 - - + + ThinBlue 淡蓝 - - + + RiceYellow 纸黄 - - - - + + + + Yellow 黄色 - - + + Silver 银色 - - + + LavenderBlush 淡紫红 - - + + MistyRose 浅玫瑰色 - - + + English 英文 - - + + Chinese 中文 @@ -648,1022 +641,1102 @@ 捐赠软件 - - + + TXT - - + + Search Result 查找结果 - - - - + + + + test - - + + go - - + + File compare 文件对比 - + notepad-- - + File(&F) 文件(&F) - - + + Edit(&E) 编辑(&E) - - + + Blank CharOperate 空白字符操作 - - + + Convert Case to 大小写转换 - - + + Line Operations 行编辑 - - + + Search(&S) 查找(&S) - - + + Book Mark 书签 - - + + + Mark Color + 标记颜色... + + + + View(&V) 视图(&V) - - + + Icon Size 图标大小 - - + + Encoding(&N) 编码(&N) - - + + Other 其它编码 - - + + Convert to Other 转换为其它编码 - - + + Language(&L) 语言(&L) - - + + Set(&T) 设置(&T) - - + + + Format Language + 格式化语言 + + + + Feedback 反馈问题 - - + + Compare(&C) 对比(&C) - - + + Recently(&R) 最近对比(&R) - - + + + Ctrl+T + + + + + Ctrl+H - - + + Dir compare 目录对比 - - + + XML - - + + YAML - - + + Php - - + + C++ - - + + C# - - + + Objective C - - + + Java - - + + RC - - + + HTML - - + + Makefile - - + + Pascal - - + + Batch - - + + ini - - + + Nfo - - + + Asp - - + + Sql - - + + Virsual Basic - - + + JavaScript - - + + Css - - + + Perl - - + + Python - - + + Lua - - + + Tex - - + + Fortran - - + + Shell - - + + ActionScript - - + + NSIS - - + + Tcl - - + + Lisp - - + + Scheme - - + + Assembly - - + + Diff - - + + Properties file - - + + PostScript - - + + Ruby - - + + Smalltalk - - + + VHDL - - + + AutoIt - - + + CMake - - + + PowerShell - - + + Jsp - - + + CoffeeScript - - + + BaanC - - + + S-Record - - + + TypeScript - - + + Visual Prolog - - + + Txt2tags - - + + Rust - - + + Registry - - + + REBOL - - + + OScript - - + + Nncrontab - - + + Nim - - + + MMIXAL - - + + LaTex - - + + Forth - - + + ESCRIPT - - + + Erlang - - + + Csound - - + + FreeBasic - - + + BlitzBasic - - + + PureBasic - - + + AviSynth - - + + ASN.1 - - + + Swift - - + + Intel HEX - - + + Fortran77 - - + + Edifact - - - - + + + + MarkDown - - + + Octave - - + + Po - - + + Pov - - + + json - - + + AVS - - + + Bash - - + + IDL - - + + Matlab - - + + Spice - - + + Verilog - - + + Register 注册版本 - - + + Language Format 编程语言格式 - - + + Open In Text 以文本模式打开 - - + + Open In Bin 以二进制模式打开 - - + + Remove Head Blank 去除行首空白 - - + + Remove End Blank 去除行尾空白 - - + + Remove Head End Blank 去除行首尾空白 - - + + Column Block Editing 列块编辑 - - + + Wrap 自动换行 - - + + Define Language 自定义语言 - - + + UPPERCASE 转成大写 - - + + lowercase 转成小写 - - + + Proper Case 每词转成仅首字母大写 - - + + Proper Case (blend) 每词的首字母转成大写 - - + + Sentence case 每句转成仅首字母大写 - - + + Sentence case (blend) 每句的首字母转成大写 - - + + Invert Case 大小写互换 - - + + Random Case 随机大小写 - - + + Remove Empty Lines 移除空行 - - + + Remove Empty Lines (Containing Blank characters) 移除空行(包括空白字符) - - + + UserDefine - + 用户自定义 - - + + Column Block Mode 列块模式... - - + + TAB to Space TAB 转空格 - - + + Space to TAB (All) 空格转 TAB (全部) - - + + Space to TAB (Leading) 空格转 TAB (行首) - - + + Duplicate Current Line 复制当前行 - - + + Ctrl+D - - + + Remove Duplicate Lines 删除重复行 - - + + Remove Consecutive Duplicate Lines 删除连续的重复行 - - + + Split Lines 分隔行 - - + + Join Lines 合并行 - - + + Move Up Current Line 上移当前行 - - + + Ctrl+Shift+Up - - + + Move Down Current Line 下移当前行 - - + + Ctrl+Shift+Down - - + + Insert Blank Line Above Current 在当前行上方插入空行 - - + + Ctrl+Alt+Return - - + + Insert Blank Line Below Current 在当前行下方插入空行 - - + + Ctrl+Alt+Shift+Return - - + + Reverse Line Order 反排序行 - - + + Randomize Line Order - - + + Sort Lines Lexicographically Ascending 升序排列文本行 - - + + Sort Lines Lex. Ascending Ignoring Case 升序排列文本行(不分大小写) - - + + Sort Lines As Integers Ascending - - + + Sort Lines As Decimals (Comma) Ascending - - + + Sort Lines As Decimals (Dot) Ascending - - + + Sort Lines Lexicographically Descending 降序排列文本行 - - + + Sort Lines Lex. Descending Ignoring Case 降序排列文本行(不分大小写) - - + + Sort Lines As Integers Descending - - + + Sort Lines As Decimals (Comma) Descending - - + + Sort Lines As Decimals (Dot) Descending - - + + Find In Dir 在目录查找 - - + + Ctrl+Shift+D - - + + + + 1 - - + + + Format Xml + 格式化 Xml + + + + + Format Json + 格式化 Json + + + + + Dark + 深色 + + + + + VB + + + + + + 2 + + + + + + 3 + + + + + + 4 + + + + + + 5 + + + + + + loop + + + + + + Clear History + 清除历史打开记录 + + + + Find Next 查找下一个 - - + + F3 - - + + Find Prev 查找前一个 - - + + F4 - - + + Red - - + + Blue - - - - + + + + Big5 Big5(繁体中文) - - + + 24x24 - - + + 36x36 - - + + 48x48 - - + + AboutNdd About ndd 关于Ndd @@ -1673,88 +1746,90 @@ 信息 - + + Ln:0 Col:0 行 0 列 0 - + + Quit 退出 - + Edit with Notepad-- Edit with Notebook CC - + Close Current Document 关闭当前文档 - + Close Non-Current documents 关闭所有非当前文档 - + Close Left All 关闭左边所有文档 - + Close Right All 关闭右边所有文档 - + Current Document Sava as... 当前文件另存为 - + Show File in Explorer... 定位到文件路径 - + Open in New Window 在新窗口中打开 - + Can't Get Admin Auth, Open File %1 failed 获取管理员权限失败,打开文件 %1 失败。修改系统文件请以管理员权限执行ndd程序。 - + Please run in admin auth 请在管理员权限下执行程序 - + Rename Current Document 重命名当前文件 - + Reload With Text Mode 重新以文本模式打开 - + Reload With Hex Mode 重新以二进制模式打开 - + Select Left Cmp File 选择为左边对比文件 - + Select Right Cmp File 选择为右边对比文件 @@ -1763,269 +1838,289 @@ 大文本文件只读模式 - + New File 新建 - + Open File 打开 - - + + Save File 保存 - + Save All File 保存所有 - + Cycle Auto Save 周期自动保存 - + Mark 标记 - + word highlight(F8) 高亮单词(F8) - + clear all highlight(F7) 取消所有高亮(F7) - + Zoom In 放大 - + Zoom Out 缩小 - + Word Wrap 自动换行 - + Show Blank 显示空白字符 - + Indent Guide 缩进参考线 - + Pre Hex Page 上一页/位置 - + Next Hex Page 下一页/位置 - + Goto Hex Page 跳转到文件偏移地址 - + File Compare 文件对比 - + Dir Compare 目录对比 - + Bin Compare 二进制对比 - + transform encoding 转换编码 - + batch rename file 批量重命名 - + Big5(Traditional Chinese) Big5(繁体中文) - + New File Finished [Text Mode] Zoom %1% 创建新文件成功 缩放率 %1% - + File %1 Open Finished [Text Mode] Zoom %2% 文件 %1 打开成功 [文本模式] 缩放率 %2% - - + + Current Zoom Value is %1% - + Ndd Version %1 - + + Registered Version + 注册过的正版软件!(恭喜) + + + + Free Trial + 免费永久试用版本(捐赠可获取注册码) + + + %1 is not a file, skip open it... %1 不是一个文件,跳过打开它...... - - - + + + The ReadOnly document does not allow this operation. 当前只读显示文件不允许该操作! - + Column Edit Mode Tips 列块模式提示 - + "ALT+Mouse Click" or "Alt+Shift+Arrow keys" Switch to mode! 请使用'ALT+鼠标点选' 或 'Alt+Shif+箭头键'切换列块模式。 - + SortingError 排序错误 - + Unable to perform numeric sorting due to line %1. - + 行 %1 不能进行排序操作! + + + + Xml format error, please check! + Xml 格式化错误,请检查文件格式! + + + + Json format error, please check! + Json 格式化错误,请检查文件格式! The window background that has been opened will take effect after it is reopened. 已打开的窗口背景颜色,将在文件重新打开后才会生效! - + GB18030(Simplified Chinese) GB18030(简体中文) - + Language: %1 语法:%1 - + Reload 重加载 - + Yes 保存 - - + + No 放弃修改 - + Cancel 取消 - - + + Restore Last Temp File %1 Failed 恢复临时文件 %1 失败! - + Recover File? 是否恢复文件? - + File %1 abnormally closed last time , Restore it ? 文件 %1 上次异常退出并留下未保存存档,是否恢复文件存档? - + Restore 恢复文件? - + File %1 Open Failed 文件 %1 打开失败! - + File %1 Open Finished [Text Mode] 文件 %1 打开成功 [文本模式] - - + + Current offset is %1 , load Contens Size is %2, File Total Size is %3 当前文件偏移 %1 , 加载内容大小是 %2,文件总大小是 %3 (字节) - + File %1 Open Finished [Hex ReayOnly Mode] 文件 %1 打开成功 [二进制只读模式] - + file %1 may be a hex file , try open with text file. 文件 %1 可能是二进制文件,尝试以文本格式打开。 - + Save File %1 failed. You may not have write privileges Please save as a new file! 保存文件 %1 失败! 你可能没有文件写权限,请另存为一个新文件! - + Cycle autosave on ... 周期性自动保存文件已开启... - + Cycle autosave off ... 周期性自动保存文件已关闭... - + The current document has been automatically saved 当前文件周期性自动保存完毕! @@ -2042,17 +2137,17 @@ Do you want to reload it? %1\n\n \n文件已在外部被其它程序修改。\n是否重新加载该文件? - + Ln: %1 Col: %2 行:%1 列:%2 - + Save File? 保存文件? - + if save file %1 ? 是否保存文件 %1 ? @@ -2061,30 +2156,30 @@ Do you want to reload it? 当前文件偏移 %1 , 文件大小是 %2 (字节) - - - - - - - + + + + + + + Error 错误 - + file %1 not exist. 文件 %1 不存在 - - + + file %1 already open at tab %2 文件 %1 已经在页面 %2 中打开 - - + + Save File %1 failed. Can not write auth, Please save as new file 保存 %1 失败。当前文件没有写权限,请另存为一个新文件 @@ -2093,128 +2188,133 @@ Do you want to reload it? 打开文件 %1 失败 - - - - + + + + Only Text File Can Use it, Current Doc is a Hex File ! 只有文本模式才能使用该功能,当前文件是二进制文件! - + "%1" This file has been modified by another program. Do you want to reload it? %1 该文件已在外部被其它程序修改,是否重新加载? - + Run As Admin Failed to save the file. Please check the file permissions. 以管理员模式保存文件失败!请检查文件的权限。 - + If display exceptions,Please Install System Font Courier 如果界面字体不满意,还请安装windows系统字体 Courier - + Set/Remove BookMark 设置/取消书签 - + Next BookMark 下一书签 - + Prev BookMark 上一书签 - + ClearAll BookMark 清除所有书签 - + Cut BookMark Lines 剪切书签行 - + Copy BookMark Lines 复制书签行 - + Paste BookMark Lines 粘贴(替换)书签行 - + Delete BookMark Lines 删除书签行 - + Delete UnBookMark Lines 删除未标记行 - + Clip BookMark 反向标记书签 - + + Color %1 + 颜色 %1 + + + The currently file %1 is already in text mode 当前文件 %1 已经是文本模式 - + The currently file %1 is already in bin mode 当前文件 %1 已经是二进制模式 - - + + File %1 Open Finished [Text ReadOnly Mode] (Note: display up to 50K bytes ...) 文件 %1 打开成功 [文本只读模式] (乱码:二进制文件强行以文本格式显示,最多显示50K字节的内容,后面忽略...) - - + + file %1 already open at tab %2, please select other file name. 文件 %1 已经存在于页面 %2 中,请选择一个其它名称 - + Rename File As ... 重命名... - + file %1 reanme failed! 文件 %1 重命名失败! - - + + Save File As ... 另存为文件 ... - + Close ? 关闭? - + already has child window open, close all ? 目前还有子窗口处于打开状态,关闭所有窗口吗? - + Find result 查找结果 @@ -2223,49 +2323,49 @@ Do you want to reload it? 文件已关闭 - - + + Find result - %1 hit 查找结果 - %1 命中 - + Convert end of line In progress, please wait ... 行尾转换中,请等待... - + Convert end of line finish. 行尾转换完毕 - + Go to line 跳转到行 - + Line Num: 行号 - + no more pre pos 没有前一个位置了 - + no more next pos 没有后一个位置了 - - + + The Last Page ! Current offset is %1 , load Contens Size is %2, File Total Size is %3 最后一页!当前文件偏移是 %1 ,加载内容大小是 %2 ,文件总大小是 %3 (字节) - + Only Hex File Can Use it, Current Doc not a Hex File ! 只有二进制文件具备该功能。当前文件不是二进制文件! @@ -2274,31 +2374,31 @@ Do you want to reload it? 最后一页!当前文件偏移是 %1 ,文件大小是 %2 (字节) - + file %1 was not exists ! 文件 %1 不存在! - - + + Error file offset addr , please check ! 错误的文件偏移量地址,请检查! - - + + File Size is %1, addr %2 is exceeds file size 文件大小是 %1,当前地址 %2 超过了文件大小。 - + Current Text Doc Can Not Use it ! Current Text Doc Canp Not Use it ! 当前是常规文本文档,不能使用该功能! - - + + bugfix: https://github.com/cxasm/notepad-- china: https://gitee.com/cxasm/notepad-- bugfix: https://github.com/cxasm/notepad-- @@ -2306,14 +2406,14 @@ china: https://gitee.com/cxasm/notepad-- 国内:https://gitee.com/cxasm/notepad-- - - + + notice 消息 - - + + file path not exist, remove recent record! 文件路径不存在,删除历史记录! @@ -2330,16 +2430,38 @@ china: https://gitee.com/cxasm/notepad-- CmpareMode - - + + File Compare Finished ! + 文件对比完成! + + + + Error : Max Bin File Size is 10M ! Exceeding file size ! 错误:二进制对比最大文件为10M ! 超过限制。 - + File Start Pos Exceeding File Size ! 文件开始偏移位置超过文件长度! + + + BigFile Compare, left linenum %1 , right lineNum %2, Please Waiting ! + 大文件对比,左文件行数 %1 ,右文件行数 %2, 请等待 ! + + + Compare Left, Total Step %1 Cur Deal step %2 ... + 对比左文件,总步数 %1 当前处理 %2 步 ... + + + Compare Right, Total Step %1 Cur Deal step %2 ... + 对比右文件,总步数 %1 当前处理 %2 步 ... + + + Outpu Compare Result, Total Step %1 , Current Step %2 ...... + 输出对比结果中,总步数 %1,当前第 %2 步 ...... + ColumnEdit @@ -2487,263 +2609,318 @@ china: https://gitee.com/cxasm/notepad-- 时间 - + rule 规则 - + all 全部 - + diff 不同 - + + expand + 展开 + + + + fold + 收起 + + + clear 清空 - + swap 交换 - + reload 重载 - + Status: normal 状态:正常 - - + + error: %1 not a dir ! 错误:%1 不是一个目录! - + now busy, please try later ... 当前忙,稍后再试... - - + + Copy to right 拷贝到右边 - - + + Cover Diffent File To Right 覆盖不同文件到右边 - - + + + Cover Diffent File To Right (Traverse subdirectories) + 覆盖不同文件到右边(递归子目录) + + + + Copy to left 拷贝到左边 - - + + Cover Diffent File To Left 覆盖不同文件到左边 - + + + Cover Diffent File To Left (Traverse subdirectories) + 覆盖不同文件到左边(递归子目录) + + + Mark as equal 标记为相等 - + Copy Unique File To Other Side 拷贝独有文件到对方 - + + Copy Unique File To Other Side (Traverse subdirectories) + 拷贝独有文件到对方(递归子目录) + + + Delete This File 删除该文件 - + Delete Only in This Side 删除本侧独有文件 - + Cope Path To Clipboard 拷贝文件路径到剪切板 - + Find File By Name 查找文件 - + %1 not exist, please check! 文件 %1 不存在,请检查! - - - - + + + + + + + Notice 消息 - + del file %1 success! 删除文件 %1 成功! - + del file %1 failed, maybe other place using ! 删除文件 %1 失败,可能其它地方在使用中! - + + Do you want to delete this files ? + 您确定删除该文件吗? + + + right Dirs No Find Prev! 右边目录没有找到前一个! - + right Dirs No Find Next! 右边目录没有找到下一个! - + + + Not Find 没有找到 - + left Dirs No Find Next! 左边目录没有找到下一个! - + left Dirs No Find Prev! 左边目录没有找到上一个! - + + can not find %1 + 没有找到相关文件 %1 + + + Do you want to overwrite all files (excluding folders) to the other side? 您确定覆盖目录下所有不同文件到对方吗?(不递归子目录) - + + cover file %1 please waiting 覆盖文件 %1 请等待 - - + + + + cover file finish, total cover %1 files 覆盖文件完成,一共覆盖 %1 个文件 - + + Do you want to overwrite all files (Traverse subdirs) to the other side? + 您确定覆盖目录下所有不同文件到对方吗?(递归覆盖子目录) + + + Do you want to copy unique files (excluding folders) to the other side? 您确定拷贝此目录下独有文件到对方?(不递归子目录) - + + Do you want to copy unique files (Traverse subdirs) to the other side? + 您确定拷贝此目录下独有文件到对方?(递归拷贝子目录) + + + Do you want to delete all files (excluding folders) only in this side? 您确定删除目录下的独有文件吗?(不递归子目录) - + delete file finish, total del %1 files 删除文件完成,一共删除 %1 个文件 - - - + + + %1 not exist, skip ... 文件 %1 不存在,跳过... - - - + + + %1 is exist, if replace ? %1 已经存在,是否替换文件? - - - + + + Replace ? 是否替换? - - - + + + copy file %1 failed, please check file auth ! 拷贝文件 %1 失败,请检查文件权限! - - + + current file: %1 current file %1 当前文件:%1 - + current exec rule mode is quick mode, please wait ... 当前执行的对比模式是快速模式,请等待... - + current exec rule mode is deep slow mode, please wait ... 当前执行的对比模式是深入文本慢速模式,请等待... - + There are still %1 files haven't returned comparison results 还有 %1 个文件正在对比中 - + file is %1 in comparing ! 文件 %1 对比进行中! - + load dir file tree in progress , please wait ... 正在加载文件树目录,请等待... - - + + skip dir %1 跳过目录 %1 - + load %1 dir %2 加载第 %1 个目录 %2 - + skip file ext %1 跳过文件类型 %1 - + skip file prefix %1 跳过文件前缀 %1 @@ -2757,65 +2934,65 @@ china: https://gitee.com/cxasm/notepad-- 文件 [%1] 可能不是文本文件,比较操作危险,强行比较吗?(不建议) - - + + Open Directory 打开目录 - + init dir file tree in progress total %1 file, please wait ... 初始化文件树目录中,一共 %1 文件,请等待... - - - + + + Comparison in progress, please wait ... 对比文件进行中,请等待... - - - - + + + + file [%1] may be not a text file, cmp in hex mode? 文件 %1 可能不是文本格式,是否进行二进制格式对比? - - - - + + + + compare canceled ... 对比被取消 - + compare not finished, user canceled ... 对比没有完成,用户取消 - - + + user canceled finished ... 用户取消完成 - - - + + + compare file finish ... 文件对比完成 - + load dir files, please wait ... 加载目录中,请等待... - + load dir finish, total %1 files 加载目录完成,一共加载 %1 个文件 @@ -2845,69 +3022,69 @@ total %1 file, please wait ... 保存 - + info 信息 - + rule 规则 - + clear 清空 - + swap 交换 - + reload 重载 - + Drag file support ... 支持文件拖动... - + Comparison in progress, please wait ... 对比文件进行中,请等待... - + Error : Max Bin File Size is 10M ! Exceeding file size ! 错误:二进制对比最大文件为10M ! 超过限制。 - + cmpare bin file in progress please wait ... 二进制文件对比中,请等待... - + now busy, please try later ... 当前忙,稍后再试... - - + + Compare Result 对比结果 - - + + Left size %1 byte, right size %2 byte Equal content size %3 Left Equal ratio %4 Right Equal ratio %5 @@ -2920,231 +3097,254 @@ Left Equal ratio %4 Right Equal ratio %5 CompareWin - + NetRegister File 对比文件 - - - + + + Open File 打开 - - - - - + + + + + Save File 保存 - - - + + + left text code 左边编码 - - - + + + UTF16-LE - - - + + + UTF16-BG - - - + + + UTF-8 - - - + + + UTF-8 BOM - - - + + + GBK - - - + + + EUC-JP - - - + + + Shift-JIS - - - + + + EUC-KR - - - + + + KOI8-R - - - + + + TSCII - - - + + + TIS_620 - - - + + + + BIG5 + + + + + + + UNKNOWN - - - - + + + + right text code 右边编码 - - + + white 空白 - - + + rule 规则 - - + + break 打断 - + pull 拉开 - + pull open 拉开对比显示 - - + + strict 严格 - - + + ignore 忽略 - - + + undo 撤销 - + pre 上一个 - + pre (F3) 上一个(F3) - + next 下一个 - + next (F4) 下一个(F4) - + zoomin 放大 - + zoomout 缩小 - + clear 清空 - + clear current compare 清空当前对比 - + swap 交换 + + + Can not save file ! + + + + + Save File As ... + 另存为文件 ... + + + + Diff Status + + reload 重载 @@ -3154,91 +3354,93 @@ Left Equal ratio %4 Right Equal ratio %5 重载(F5) - + Drag file support ... 支持文件拖动... - - - - - - + + + + + + current has %1 differents 当前有 %1 处不同块 - + Current mode can not save file ! 当前模式不能保存文件! - + + open file %1 failed 打开文件 %1 失败 - + + save file finished ! - 保存文件失败! + 保存文件成功! - - - - + + + + The left document has been modified. 左边文档已经被修改 - - - - + + + + The right document has been modified. 右边文档已经被修改 - - - - + + + + Do you want to save your changes? 是否保存修改? - - + + Save 保存 - - + + Discard 放弃修改 - - + + Cancel 取消 - - + + no more unequal block! 没有更多不等块! - + the first one! 第一个不等块! - - + + the %1 diff, total %2 diff 第 %1 处不同, 一共 %2 不同 @@ -3247,63 +3449,74 @@ Left Equal ratio %4 Right Equal ratio %5 第 %1 处不同,一共 %2 处不同。 - + already the first one! 已经是第一个不等块! - + the last one! 最后一个不等块! - + already the last one! 已经是最后一个不等块! - - - - + + + + + Error 错误 - + swap left Right windows 交换左右窗口位置 - + refresh 刷新 - + compare again (F5) 重新对比 - - + + status + 差异图 + + + + show diff views + 显示差异界面 + + + + The current comparison has encountered an error.Quit temporarily. 当前对比发生未知错误,暂时退出。 - + has %1 differents 有 %1 处不同 - - + + Comparison in progress, please wait ... 对比文件进行中,请等待... - - + + file [%1] maybe not a text file, forse cmpare?(dangerous, may be core) 文件 [%1] 可能不是文本,强行使用文本对比?(危险操作) @@ -3312,12 +3525,12 @@ Left Equal ratio %4 Right Equal ratio %5 文件 [%1] 不是文本文件,不能进行比较!!! - + no more undo operator! 没有更多撤销! - + now busy, please try later ... 当前忙,稍后再试... @@ -3331,6 +3544,15 @@ Left Equal ratio %4 Right Equal ratio %5 + + DiffStatusWinClass + + + + DIFF + 差异点 + + DirCmpExtWin @@ -3531,12 +3753,12 @@ Left Equal ratio %4 Right Equal ratio %5 支持文件后缀 - + input file ext() 输入文件后缀 - + ext (Split With :) 后缀(用:号分割开) @@ -4059,39 +4281,44 @@ Left Equal ratio %4 Right Equal ratio %5 全部选择 - - + + close + 关闭 + + + + %1 rows selected ! %1 行被选中! - + %1 items have been copied to the clipboard ! %1 项已经被复制到剪切板 - + %1 lines have been copied to the clipboard ! %1 行已经被复制到剪切板 - + <font style='font-weight:bold;color:#343497'>Search "%1" (%2 hits)</font> <font style='font-weight:bold;color:#343497'>查找 "%1" (%2 命中)</font> - - + + <font style='font-weight:bold;color:#309730'>%1 (%2 hits)</font> <font style='font-weight:bold;color:#309730'>%1 (%2 命中)</font> - + Line <font style='color:#ff8040'>%1</font> : %2 行 <font style='color:#ff8040'>%1</font> : %2 - + <font style='font-weight:bold;color:#343497'>Search "%1" (%2 hits in %3 files)</font> <font style='font-weight:bold;color:#343497'>查找 "%1" (%2 命中在 %3 个文件)</font> @@ -4112,534 +4339,558 @@ Left Equal ratio %4 Right Equal ratio %5 FindWin - + MainWindow 查找与替换 - + find 查找 - - - - - + + + + + Find what : 查找目标: - - - + + + Backward direction 反向查找 - - - - - - - + + + + + + + Match whole word only 全词匹配 - - - - - - - + + + + + + + Match case 匹配大小写 - - - + + + Wrap around 循环查找 - - - - - - - + + + + + + + Search Mode 查找模式 - - - - - - - + + + + + + + Regular expression 正则表达式 - - - - - - - + + + + + + + Normal 普通 - - - - - - - + + + + + + + Extend(\n,\r,\t,\0,\x...) 扩展(\n,\r,\t,\0,\x...) - - + + Find Next(F3) 查找下一个(F3) - - + + F3 - - + + Find Prev(F4) 查找上一个(F4) - - + + F4 - - + + Counter(T) 计数(T) - - + + Ctrl+T - - + + Find Next 查找下一个 - - + + + Clear All + 清除全部标记 + + + + Find All in Current Document 在当前文件中查找 - - + + Find All in All Opened Documents 查找所有打开文件 - - - - - - - - + + + + + + + + Close 关闭 - - - - + + + + Replace 替换 - - - - + + + + Replace with : 替换为: - - + + Replace All - 当前文件全部替换 + 在当前文件中替换 - - + + Replace All in All Opened Documents 替换所有打开文件 - - + + Replace In File - 替换当前文件 + 在目录文件中替换 - - - - + + + + Clear Result 清空结果 - - + + Mark 标记 - - + + Mark What 标记目标: - - + + Mark All 全部标记 - - + + Clear Mark 清除 - - + + Dir Find 在目录查找 - - + + Dest Dir : 目标目录: - - + + Select 选择 - - + + File Type 文件类型: - - + + *.c:*.cpp:*.h - - + + + Skip Dir Name + 跳过目录名 + + + + + debug:Debug:.vs:.git:.svn + + + + + Options 选项 - - + + Skip child dirs 跳过子目录 - - + + Skip hide file 跳过隐藏文件 - - + + Skip binary file 跳过二进制文件 - - + + Skip Big file exceed 跳过超过大小的文件 - - + + MB - - + + Find All 全部查找 - - - - - - - - - - + + + + + + + + + + + what find is null ! 查找字段为空 - - - - - - + + + + + cant't find text '%1' 找不到字段 '%1' - - + + no more find text '%1' 没有更多的字段 '%1' - - - - + + + + The ReadOnly document does not allow this operation. 当前只读显示文件不允许该操作! - - + + find finished, total %1 found! 查找完成,一共 %1 处发现。 - - + + The mode of the current document does not allow this operation. 当前模式下的文档不允许该操作! - - + + + The ReadOnly document does not allow replacement. 当前只读文档不允许执行替换操作! - - + + no more replace text '%1' 没有更多替换文本 '%1' - + find-regex-zero-length-match 正则查找零长匹配 - + target info linenum %1 pos is %2 - %3 目标在行 %1 位置 %2 - %3 - - + + count %1 times with '%2' 计数 %1 次匹配 '%2' - - + + The mode of the current document does not allow replacement. 当前模式的文档不允许执行替换操作! - + + Replace All current Doc 在所有打开文件中替换 - + + Are you sure replace all occurrences in current documents? 是否确认在当前打开的文档中替换? - + + replace finished, total %1 replaced! 替换完成,一共 %1 处替换! - + Replace All Open Doc 替换所有打开的文档 - + Are you sure replace all occurrences in all open documents? 是否确认在所有打开的文档中替换? - + Replace in Opened Files: %1 occurrences were replaced. 在打开的文档中替换:%1 处已经被替换。 - + + what mark is null ! 标记字段为空! - + cant't mark text '%1' 不能标记文本 ‘%1’ - + mark finished, total %1 found! 标记完成,一共 %1 处发现! - + The mode of the current document does not allow mark. 当前模式的文档不允许执行标记操作! - + Open Directory 打开目录 - + load dir file in progress , please wait ... 加载目录文件中,请等待... - + + skip dir %1 跳过目录 %1 - + found %1 dir %2 发现 %1 个目录 %2 - + ext type skip file %1 跳过类型文件 %1 - + found in dir canceled ... 查找取消... - + Continue Find ? 是否继续查找? - + The search results have been greater than %1 times in %2 files, and more may be slow. Continue to search? 查找结果已经有 %1 处在 %2 个文件中,结果太多会比较慢,是否继续查找? - + Yes 继续查找 - + Abort 终止查找 - - + + please select find dest dir ! 请选择目标文件夹! - + dest dir %1 not exist ! 目标文件夹 %1 不存在! - + find finished, total %1 found in %2 file! 查找完成,一共发现 %1 处在 %2 个文件中! - + Replace All Dirs 目录全部替换 - + Are you sure replace all "%1" to "%2" occurrences in selected dirs ? 您确定替换目录文件中所有 "%1" 为 "%2" 吗? - + replace finished, total %1 replace in %2 file! 替换完成,一共替换 %1 处在 %2 个文件中! @@ -5006,6 +5257,19 @@ Select a shorter range for comparison. 输入关键字 + + LcsLine + + + left Big Step %1, dealed %2 Step, compute %3 step, total %4 steps ... + 剩余步 %1次,已经处理 %2次, 当前小步对比循环 %3 次,还剩余 %4 次 ... + + + + Compare loop %1 times, %2 times left ... + 对比循环 %1 次,还剩余 %2 次 ... + + NetRegister @@ -5119,19 +5383,19 @@ Select a shorter range for comparison. ProgressWin - + work progress 工作进度 - - + + current progress 当前进度 - - + + Cancel 取消 @@ -5153,27 +5417,27 @@ Select a shorter range for comparison. QObject - + Text Mode 文本模式 - + Hex ReadOnly Mode 二进制只读模式 - + Bit Text ReadOnly Mode 大文本只读模式 - + Text ReadOnly Mode 文本只读模式 - + File Mode 文件模式 @@ -5181,28 +5445,33 @@ Select a shorter range for comparison. QsciDisplayWindow - + Find Text 查找文本 - + Show File in Explorer 定位到文件目录 - - + + Save As ... + 另存为 + + + + Not Find 没有找到 - + Not Find Next! 找不到下一个! - + Not Find Prev! 找不到前一个! @@ -5252,7 +5521,7 @@ Select a shorter range for comparison. QtLangSet - + Save Change 保存修改 @@ -5261,236 +5530,253 @@ Select a shorter range for comparison. 当前语言的格式风格已经被修改,是否保存? - + + AllGlobal + 全局格式统一设置 + + + %1 style configuration has been modified. Do you want to save it? %1 类型的显示风格已经被修改,是否保存? - + Read %1 language user define format error. - + 读取 %1 语言用户自定义格式失败! - + Style Foreground Color 风格背景色 风格前景色 - + Style Background Color 风格背景色 - + Reset Style 重置风格 - + Are you sure to reset language %1 sytle 您确定重置语言 %1 的风格吗? + + + Reset All Style + 重置所有风格 + + + + Are you sure to reset All language sytle + 您确定重置所有语言风格吗? + QtLangSetClass - + QtLangSet 编程语言风格设置 - + Language 语言 - + User Define Language 自定义语言 - + Style - 皮肤风格 + 语法风格项 - + Color 颜色 - + Foreground: 前景色 - + TextLabel - + + + Select 选择 - - - + + + All Style 修改所有风格 - + background: 背景色 - + Same As Theme 与主题保存一致 - - + + Font 字体 - - + + Font Size: 字体大小 - - + + Bold 粗体 - - + + Italic 斜体 - - + + Underline 下划线 - - + + Name: 名称: - - + + Keyword And Mother 关键词和母版 - - + + Mother Language: 母版语言: - - + + None - - + + Cpp - - + + Ext File Type: 关联文件后缀名: - - + + Global Style Set 全局风格设置 - - + + Use Global Foreground Color 使用全局前景色 - - + + Use Global Background Color 使用全局背景色 - - + + Use Global Font 使用全局字体 - - + + Use Global FontSize 使用全局字体大小 - - + + Use Global Bold Font 使用全局粗体样式 - - + + Use Global Italic Font 使用全局斜体样式 - - + + Use Global Underline Font 使用全局下划线样式 - - + + reset 重置 - - + + Save 保存 - - + + Close 关闭 @@ -5774,10 +6060,30 @@ Select a shorter range for comparison. ScintillaEditView - + Show File in Explorer 定位到文件目录 + + + mark with color + 使用颜色标记 + + + + Color %1 + 颜色 %1 + + + + Clear Select + 清除选择标记 + + + + Clear All + 清除全部标记 + StatusWidget @@ -5920,60 +6226,60 @@ Select a shorter range for comparison. UserRegister - + Free Trial - 免费永久试用版本(没有捐赠我们) + 免费永久试用版本(捐赠可获取注册码) - - + + Registered Version 注册过的正版软件!(恭喜) - + License Expired 许可证过期(可捐赠获取) - + License Error 错误的注册码(可重新输入) - - - - - - + + + + + + Licence Key 许可证 - + It is already a registered version. 当前已经是注册版! - + Please scanning the donation, Write your email address in the message area. You will get the registration code! 请微信扫描捐赠,在留言处留下您的邮件地址,注册码将通过邮件发送给您。 - + Please enter the correct registration code! 请输入正确的注册码! - + Congratulations on your successful registration. 恭喜注册成功! - - + + Registration failed. Please try again later. 注册失败,请稍后再试! diff --git a/src/scintillaeditview.cpp b/src/scintillaeditview.cpp index 3f938eb..43942c4 100755 --- a/src/scintillaeditview.cpp +++ b/src/scintillaeditview.cpp @@ -54,6 +54,8 @@ #include #include #include +#include +#include #include #include #include @@ -184,7 +186,7 @@ LanguageName ScintillaEditView::langNames[L_EXTERNAL + 1] = { #endif ScintillaEditView::ScintillaEditView(QWidget *parent) - : QsciScintilla(parent), m_NoteWin(nullptr), m_preFirstLineNum(0), m_curPos(0), m_hasHighlight(false), m_bookmarkPng(nullptr) + : QsciScintilla(parent), m_NoteWin(nullptr), m_preFirstLineNum(0), m_curPos(0), m_hasHighlight(false), m_bookmarkPng(nullptr), m_styleColorMenu(nullptr) { init(); } @@ -203,19 +205,15 @@ void ScintillaEditView::setLexer(QsciLexer * lexer) { QsciScintilla::setLexer(lexer); - if (lexer->lexerId() == L_TXT) + if (lexer != nullptr && lexer->lexerId() == L_TXT) { showMargin(_SC_MARGE_FOLDER,false); } + else if(lexer != nullptr && lexer->lexerId() != L_TXT) + { + showMargin(_SC_MARGE_FOLDER, true); +} } - -//void ScintillaEditView::resetDefaultFontStyle() -//{ -// QFont font(DEFAULT_FONT_NAME, 11/*QsciLexer::s_defaultFontSize*/, QFont::Normal); -// setFont(font); -// setMarginsFont(font); -// setMarginsForegroundColor(QColor(0x80, 0x80, 0x80)); -//} void ScintillaEditView::setNoteWidget(QWidget * win) { @@ -239,11 +237,11 @@ void ScintillaEditView::updateLineNumbersMargin(bool forcedToHide) { } -//根据现有滚动条来决定是否更新屏幕线宽长度。每滚动2000个单位必须调整line宽 +//根据现有滚动条来决定是否更新屏幕线宽长度。每滚动200个单位必须调整line宽 void ScintillaEditView::autoAdjustLineWidth(int xScrollValue) { - if (std::abs(xScrollValue - m_preFirstLineNum) > 400) + if (std::abs(xScrollValue - m_preFirstLineNum) > 200) { m_preFirstLineNum = xScrollValue; @@ -265,7 +263,7 @@ void ScintillaEditView::updateLineNumberWidth(int lineNumberMarginDynamicWidth) int lastVisibleLineDoc = execute(SCI_DOCLINEFROMVISIBLE, (long)lastVisibleLineVis); nbDigits = nbDigitsFromNbLines(lastVisibleLineDoc); - nbDigits = nbDigits < 4 ? 4 : nbDigits; + nbDigits = nbDigits < 3 ? 3 : nbDigits; } else { @@ -383,6 +381,7 @@ QsciLexer* ScintillaEditView::createLexer(int lexerId, QString tag, bool isOrigi ret = new QsciLexerSQL(); break; case L_VB: + ret = new QsciLexerVB(); break; case L_CSS: ret = new QsciLexerCSS(); @@ -528,6 +527,7 @@ QsciLexer* ScintillaEditView::createLexer(int lexerId, QString tag, bool isOrigi case L_REGISTRY: break; case L_RUST: + ret = new QsciLexerRust(); break; case L_SPICE: ret = new QsciLexerSpice(); @@ -572,13 +572,15 @@ QsciLexer* ScintillaEditView::createLexer(int lexerId, QString tag, bool isOrigi default: break; } - - - if (ret != nullptr && !isOrigin) + if (ret != nullptr) { ret->setLexerId(lexerId); + + if (!isOrigin) + { QtLangSet::readLangSettings(ret, ret->lexerTag()); } + } return ret; } @@ -605,15 +607,24 @@ QList& ScintillaEditView::getCurMarkRecord() //调整颜色 void ScintillaEditView::adjuctSkinStyle() { - setFoldMarginColors(StyleSet::foldfgColor, StyleSet::foldbgColor); + if (StyleSet::m_curStyleId != BLACK_SE) + { + setMarginsForegroundColor(QColor(0x80, 0x80, 0x80)); //默认0x80, 0x80, 0x80 + } + else + { + setMarginsForegroundColor(QColor(0xde, 0xde, 0xde)); //默认0x80, 0x80, 0x80 + } setMarginsBackgroundColor(StyleSet::marginsBackgroundColor); setMarginBackgroundColor(_SC_MARGE_SYBOLE, StyleSet::bookmarkBkColor); + setFoldMarginColors(StyleSet::marginsBackgroundColor, StyleSet::marginsBackgroundColor); + setStyleOptions(); } void ScintillaEditView::setIndentGuide(bool willBeShowed) { QsciLexer* pLexer = this->lexer(); - if (nullptr == pLexer || (pLexer->lexerId() == L_TXT)) + if (nullptr == pLexer) { return; } @@ -675,7 +686,17 @@ void ScintillaEditView::init() //开始括号匹配,比如html的<>,开启前后这类字段的匹配 setBraceMatching(SloppyBraceMatch); + + if (StyleSet::m_curStyleId != BLACK_SE) + { setMatchedBraceForegroundColor(QColor(191, 141, 255)); + setMatchedBraceBackgroundColor(QColor(222, 222, 222)); + } + else + { + setMatchedBraceForegroundColor(QColor(246, 81, 246)); + setMatchedBraceBackgroundColor(QColor(18, 90, 36)); + } //自动补全效果不好,不开启20211017 //setAutoCompletionSource(QsciScintilla::AcsAPIs); //设置源,自动补全所有地方出现的 @@ -686,13 +707,15 @@ void ScintillaEditView::init() QFont font(DEFAULT_FONT_NAME, 11, QFont::Normal); setFont(font); setMarginsFont(font); - setMarginsForegroundColor(QColor(0x80, 0x80, 0x80)); //默认0x80, 0x80, 0x80 - execute(SCI_SETTABWIDTH, 4); + + execute(SCI_SETTABWIDTH, ScintillaEditView::s_tabLens); //setMarginsBackgroundColor(QColor(0xff, 0xff, 0x80)); //setPaper(QColor(0xfc, 0xfc, 0xfc));//这个无效 //使用空格替换tab - execute(SCI_SETUSETABS, !ScintillaEditView::s_noUseTab); + //execute(SCI_SETUSETABS, !ScintillaEditView::s_noUseTab); + + setIndentationsUseTabs(!ScintillaEditView::s_noUseTab); //这个无比要设置false,否则双击后高亮单词,拷贝时会拷贝多个选择。 execute(SCI_SETMULTIPLESELECTION, true); @@ -711,10 +734,34 @@ void ScintillaEditView::init() execute(SCI_SETSELBACK, true, 0x9bff9b); //0x00ffff原来的黄色 //设置查找到Mark的风格。定义其前景颜色和形状 - execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE, INDIC_ROUNDBOX); - execute(SCI_INDICSETALPHA, SCE_UNIVERSAL_FOUND_STYLE, 130); - execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE, false); - execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE, 0x00ffff); + execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_EXT5, INDIC_ROUNDBOX); + execute(SCI_INDICSETALPHA, SCE_UNIVERSAL_FOUND_STYLE_EXT5, 130); + execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE_EXT5, false); + execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_EXT5, 0x00ffff); + + //设置查找到Mark的风格。定义其前景颜色和形状 + execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_EXT4, INDIC_ROUNDBOX); + execute(SCI_INDICSETALPHA, SCE_UNIVERSAL_FOUND_STYLE_EXT4, 130); + execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE_EXT4, false); + execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_EXT4, 0xffff00); + + //设置查找到Mark的风格。定义其前景颜色和形状 + execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_EXT3, INDIC_ROUNDBOX); + execute(SCI_INDICSETALPHA, SCE_UNIVERSAL_FOUND_STYLE_EXT3, 130); + execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE_EXT3, false); + execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_EXT3, 0x0080ff); + + //设置查找到Mark的风格。定义其前景颜色和形状 + execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_EXT2, INDIC_ROUNDBOX); + execute(SCI_INDICSETALPHA, SCE_UNIVERSAL_FOUND_STYLE_EXT2, 130); + execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE_EXT2, false); + execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_EXT2, 0xff0080); + + //设置查找到Mark的风格。定义其前景颜色和形状 + execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_EXT1, INDIC_ROUNDBOX); + execute(SCI_INDICSETALPHA, SCE_UNIVERSAL_FOUND_STYLE_EXT1, 130); + execute(SCI_INDICSETUNDER, SCE_UNIVERSAL_FOUND_STYLE_EXT1, false); + execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_EXT1, 0xff8000); //下面这两个是HTML文件的tag高亮的表示。 execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_TAGMATCH, INDIC_STRAIGHTBOX); @@ -734,7 +781,16 @@ void ScintillaEditView::init() execute(SCI_INDICSETFORE, SCE_UNIVERSAL_FOUND_STYLE_SMART, 0x00ff00); setCaretLineVisible(true); + + + if (StyleSet::m_curStyleId != BLACK_SE) + { setCaretLineBackgroundColor(QColor(0xe8e8ff)); + } + else + { + setCaretLineBackgroundColor(QColor(0x333333)); + } //记住position变化。不能使用cursorPositionChanged,因为他的列考虑uft8字符,中文一个也算1个,每次列不一定相等。 //要使用自定义的cursorPosChange,跟踪的是SCI_GETCURRENTPOS 的值。换行才会触发这个cursorPosChange。自定义的信号 @@ -1038,6 +1094,34 @@ void ScintillaEditView::slot_clearHightWord() } +intptr_t ScintillaEditView::searchInTarget(QByteArray& text2Find,size_t fromPos, size_t toPos) const +{ + execute(SCI_SETTARGETRANGE, fromPos, toPos); + return execute(SCI_SEARCHINTARGET, text2Find.size(), reinterpret_cast(text2Find.data())); +} + +intptr_t ScintillaEditView::replaceTargetRegExMode(QByteArray& re, intptr_t fromTargetPos, intptr_t toTargetPos) const +{ + if (fromTargetPos != -1 || toTargetPos != -1) + { + execute(SCI_SETTARGETRANGE, fromTargetPos, toTargetPos); + } + return execute(SCI_REPLACETARGETRE, re.size(), reinterpret_cast(re.data())); +} + + +//替换fromTargetPos 到 toTargetPos的内容为str2replace。 +intptr_t ScintillaEditView::replaceTarget(QByteArray& str2replace, intptr_t fromTargetPos, intptr_t toTargetPos) const +{ + if (fromTargetPos != -1 || toTargetPos != -1) + { + execute(SCI_SETTARGETRANGE, fromTargetPos, toTargetPos); + } + + return execute(SCI_REPLACETARGET, str2replace.size(), reinterpret_cast(str2replace.data())); +} + + void ScintillaEditView::highlightViewWithWord(QString & word2Hilite) { int originalStartPos = execute(SCI_GETTARGETSTART); @@ -1081,6 +1165,7 @@ void ScintillaEditView::highlightViewWithWord(QString & word2Hilite) if (foundTextLen > 0) { + this->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE_SMART); this->execute(SCI_INDICATORFILLRANGE, targetStart, foundTextLen); } @@ -1125,12 +1210,65 @@ void ScintillaEditView::highlightViewWithWord(QString & word2Hilite) this->execute(SCI_SETTARGETRANGE, originalStartPos, originalEndPos); } +void ScintillaEditView::slot_markColorGroup(QAction *action) +{ + CCNotePad::s_curMarkColorId = action->data().toInt(); + if (m_NoteWin != nullptr) + { + m_NoteWin->slot_wordHighlight(); + } +} + void ScintillaEditView::contextUserDefineMenuEvent(QMenu* menu) { //QAction* action; if (menu != nullptr && (m_NoteWin !=nullptr)) { menu->addAction(tr("Show File in Explorer"), m_NoteWin, &CCNotePad::slot_showFileInExplorer); + + if (m_styleColorMenu == nullptr) + { + m_styleColorMenu = new QMenu(tr("mark with color"),this); + QPixmap colorBar(36, 36); + + QActionGroup* markColorGroup = new QActionGroup(this); + connect(markColorGroup, &QActionGroup::triggered, this, &ScintillaEditView::slot_markColorGroup, Qt::QueuedConnection); + + int index = 1; + auto initColorBar = [this, markColorGroup, &index](QPixmap& colorBar) { + QAction* action = new QAction(m_styleColorMenu); + action->setIcon(colorBar); + action->setCheckable(true); + action->setText(tr("Color %1").arg(index)); + action->setData(index + SCE_UNIVERSAL_FOUND_STYLE_EXT5-1); + ++index; + m_styleColorMenu->addAction(action); + markColorGroup->addAction(action); + }; + + colorBar.fill(QColor(0xffff00)); + initColorBar(colorBar); + + colorBar.fill(QColor(0x00ffff)); + initColorBar(colorBar); + + colorBar.fill(QColor(0xff8000)); + initColorBar(colorBar); + + colorBar.fill(QColor(0x8000ff)); + initColorBar(colorBar); + + colorBar.fill(QColor(0x0080ff)); + initColorBar(colorBar); + + + m_styleColorMenu->addSeparator(); + + m_styleColorMenu->addAction(tr("Clear Select"), m_NoteWin, &CCNotePad::slot_clearWordHighlight); + m_styleColorMenu->addAction(tr("Clear All"), m_NoteWin, &CCNotePad::slot_clearMark); + } + menu->addMenu(m_styleColorMenu); + } menu->show(); } @@ -1403,17 +1541,7 @@ QString ScintillaEditView::getEOLString() -//替换fromTargetPos 到 toTargetPos的内容为str2replace。 -intptr_t ScintillaEditView::replaceTarget(QByteArray& str2replace, intptr_t fromTargetPos, intptr_t toTargetPos) const -{ - if (fromTargetPos != -1 || toTargetPos != -1) - { - execute(SCI_SETTARGETRANGE, fromTargetPos, toTargetPos); - } - - return execute(SCI_REPLACETARGET, str2replace.size(), reinterpret_cast(str2replace.data())); -} size_t vecRemoveDuplicates(QList& vec) { @@ -1591,3 +1719,43 @@ void ScintillaEditView::sortLines(size_t fromLine, size_t toLine, ISorter* pSort replaceTarget(bytes, startPos, endPos); } } + +void ScintillaEditView::setFoldColor(int margin, QColor fgClack, QColor bkColor) +{ + SendScintilla(SCI_MARKERSETFORE, margin, fgClack); + SendScintilla(SCI_MARKERSETBACK, margin, bkColor); +} + +void ScintillaEditView::setStyleOptions() +{ + //如果是黑色主题,则单独做一些风格设置 + if (StyleSet::m_curStyleId == BLACK_SE) + { + //setCaretLineBackgroundColor(QColor(0x3f3f12)); + setCaretLineBackgroundColor(QColor(0x333333)); + setMatchedBraceForegroundColor(QColor(246, 81, 246)); + setMatchedBraceBackgroundColor(QColor(18, 90, 36)); + setCaretForegroundColor(QColor(255, 255, 255)); + setFoldColor(SC_MARKNUM_FOLDEROPEN, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDER, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDERSUB, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDERTAIL, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDEREND, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDEROPENMID, QColor(45, 130, 45), QColor(222, 222, 222)); + setFoldColor(SC_MARKNUM_FOLDERMIDTAIL, QColor(45, 130, 45), QColor(222, 222, 222)); + } + else + { + setCaretLineBackgroundColor(QColor(0xe8e8ff)); + setMatchedBraceForegroundColor(QColor(191, 141, 255)); + setMatchedBraceBackgroundColor(QColor(222, 222, 222)); + setCaretForegroundColor(QColor(0, 0, 0)); + setFoldColor(SC_MARKNUM_FOLDEROPEN, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDER, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDERSUB, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDERTAIL, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDEREND, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDEROPENMID, QColor(Qt::white), QColor(128, 128, 128)); + setFoldColor(SC_MARKNUM_FOLDERMIDTAIL, QColor(Qt::white), QColor(128, 128, 128)); + } +} diff --git a/src/scintillaeditview.h b/src/scintillaeditview.h index 7b79939..2453ccd 100755 --- a/src/scintillaeditview.h +++ b/src/scintillaeditview.h @@ -95,6 +95,7 @@ public: void sortLines(size_t fromLine, size_t toLine, ISorter * pSort); + intptr_t lastZeroBasedLineNumber() const { auto endPos = execute(SCI_GETLENGTH); return execute(SCI_LINEFROMPOSITION, endPos); @@ -114,6 +115,13 @@ public: void pasteToMarkedLines(); void deleteMarkedLines(bool isMarked); void inverseMarks(); + intptr_t searchInTarget(QByteArray & text2Find, size_t fromPos, size_t toPos) const; + intptr_t replaceTargetRegExMode(QByteArray & re, intptr_t fromTargetPos = -1, intptr_t toTargetPos = -1) const; + intptr_t replaceTarget(QByteArray & str2replace, intptr_t fromTargetPos = -1, intptr_t toTargetPos = -1) const; + + //设置不同风格 + void setStyleOptions(); + signals: void delayWork(); @@ -124,10 +132,11 @@ private: QString getGenericTextAsQString(size_t start, size_t end) const; QString getEOLString(); - intptr_t replaceTarget(QByteArray & str2replace, intptr_t fromTargetPos, intptr_t toTargetPos) const; + void appandGenericText(const QByteArray & text2Append) const; QString getMarkedLine(int ln); void deleteMarkedline(int ln); + void setFoldColor(int margin, QColor fgClack, QColor bkColor); public: @@ -163,13 +172,13 @@ private: void highlightViewWithWord(QString & word2Hilite); - - + void slot_markColorGroup(QAction * action); private slots: void slot_delayWork(); void slot_scrollXValueChange(int value); void slot_clearHightWord(); + void slot_bookMarkClicked(int margin, int line, Qt::KeyboardModifiers state); @@ -193,6 +202,8 @@ private: QPixmap* m_bookmarkPng; + QMenu* m_styleColorMenu; + public: static int s_tabLens; static bool s_noUseTab; diff --git a/src/styleset.cpp b/src/styleset.cpp index 8802e99..10d32eb 100755 --- a/src/styleset.cpp +++ b/src/styleset.cpp @@ -35,6 +35,7 @@ void StyleSet::setCommonStyle(QColor foldfgColor_, QColor foldbgColor_, QColor m palette.setColor(QPalette::Base, foldbgColor_); palette.setColor(QPalette::Button, foldbgColor_); qApp->setPalette(palette); + if (colorName != "#EAF7FF") { styleSheet.replace("#EAF7FF", colorName); @@ -44,31 +45,6 @@ void StyleSet::setCommonStyle(QColor foldfgColor_, QColor foldbgColor_, QColor m file.close(); } -//void StyleSet::setBlackStyle() -//{ -// foldfgColor = QColor(57,58,60); -// foldbgColor = QColor(57, 58, 60); -// marginsBackgroundColor = QColor(57, 58, 60); -// -// QFile file(":/qss/black.qss"); //qssļ·:/lightblue.qss -// QString styleSheet; -// if (file.open(QIODevice::Text | QIODevice::ReadOnly)) -// { -// QPalette palette; -// palette.setColor(QPalette::Window, foldfgColor); -// palette.setColor(QPalette::Base, foldbgColor); -// palette.setColor(QPalette::Button, foldbgColor); -// //palette.setColor(QPalette::WindowText, QColor(0xff, 0xff, 0xff)); -// qApp->setPalette(palette); -// -// styleSheet = file.readAll(); -// //styleSheet.replace("#EAF7FF", "0x394041"); -// -// qApp->setStyleSheet(styleSheet); -// } -// file.close(); -//} - void StyleSet::setSkin(int id) { switch (id) @@ -97,6 +73,9 @@ void StyleSet::setSkin(int id) case MISTYROSE_SE: setMistyRoseStyle(); break; + case BLACK_SE: + setBlackStyle(); + break; default: id = 0; setDefaultStyle(); @@ -106,6 +85,12 @@ void StyleSet::setSkin(int id) m_curStyleId = id; } +QString StyleSet::getCurrentStyle() +{ + static const QString style[MAX_SE] = {"default","ligth","thinblue","thinyellow","riceyellow","slive","lavender","mistyrose","black" }; + return style[m_curStyleId]; +} + void StyleSet::setDefaultStyle() { m_curStyleId = DEFAULT_SE; @@ -134,14 +119,14 @@ void StyleSet::setLightStyle() { m_curStyleId = LIGHT_SE; bookmarkBkColor = QColor(0xE0F3Fc); - setCommonStyle(QColor(0xea, 0xf7, 0xff, 100), QColor(0xeaf7ff), QColor(0xeaf7ff), "#EAF7FF"); + setCommonStyle(QColor(0xea, 0xf7, 0xff, 100), QColor(0xeaf7ff), QColor(0xe8f5fd), "#EAF7FF"); } void StyleSet::setThinBlueStyle() { m_curStyleId = THIN_BLUE_SE; bookmarkBkColor = QColor(0xE3e0F0); - setCommonStyle(QColor(0xd7, 0xe3, 0xf4, 100), QColor(0xd7e3f4), QColor(0xd7e3f4), "#D7E3F4"); + setCommonStyle(QColor(0xd7, 0xe3, 0xf4, 100), QColor(0xd7e3f4), QColor(0xd5e1f1), "#D7E3F4"); } //ֽ @@ -149,7 +134,7 @@ void StyleSet::setThinYellowStyle() { m_curStyleId = THIN_YELLOW_SE; bookmarkBkColor = QColor(0xF4F0E0); - setCommonStyle(QColor(0xf9, 0xf0, 0xe1, 100), QColor(0xf9f0e1), QColor(0xf9f0e1), "#F9F0E1"); + setCommonStyle(QColor(0xf9, 0xf0, 0xe1, 100), QColor(0xf9f0e1), QColor(0xf7f0e0), "#F9F0E1"); } //ֽ @@ -157,7 +142,7 @@ void StyleSet::setRiceYellowStyle() { m_curStyleId = RICE_YELLOW_SE; bookmarkBkColor = QColor(0xF0F0E8); - setCommonStyle(QColor(0xf6, 0xf3, 0xea, 100), QColor(0xf6f3ea), QColor(0xf6f3ea), "#F6F3EA"); + setCommonStyle(QColor(0xf6, 0xf3, 0xea, 100), QColor(0xf6f3ea), QColor(0xf4f1e9), "#F6F3EA"); } //ɫ @@ -165,7 +150,7 @@ void StyleSet::setSilverStyle() { m_curStyleId = SILVER_SE; bookmarkBkColor = QColor(0xE4E4E4); - setCommonStyle(QColor(0xe9, 0xe8, 0xe4, 100), QColor(0xe9e8e4), QColor(0xe9e8e4), "#E9E8E4"); + setCommonStyle(QColor(0xe9, 0xe8, 0xe4, 100), QColor(0xe9e8e4), QColor(0xe7e6e2), "#E9E8E4"); } //̸ɫ#FFF0F5 @@ -173,7 +158,7 @@ void StyleSet::setLavenderBlushStyle() { m_curStyleId = LAVENDER_SE; bookmarkBkColor = QColor(0xFCF0F0); - setCommonStyle(QColor(0xff, 0xf0, 0xf5, 100), QColor(0xFFF0F5), QColor(0xFFF0F5), "#FFF0F5"); + setCommonStyle(QColor(0xff, 0xf0, 0xf5, 100), QColor(0xFFF0F5), QColor(0xFdF0F3), "#FFF0F5"); } //MistyRose @@ -181,5 +166,36 @@ void StyleSet::setMistyRoseStyle() { m_curStyleId = MISTYROSE_SE; bookmarkBkColor = QColor(0xFCE0E0); - setCommonStyle(QColor(0xff, 0xe4, 0xe1, 100), QColor(0xFFE4E1), QColor(0xFFE4E1), "#FFE4E1"); + setCommonStyle(QColor(0xff, 0xe4, 0xe1, 100), QColor(0xFFE4E1), QColor(0xFdE2E0), "#FFE4E1"); +} + +void StyleSet::setBlackStyle() +{ + m_curStyleId = BLACK_SE; + foldfgColor = QColor(0,0, 0); + foldbgColor = QColor(32, 32, 40); + + //עⰵģʽǵĴڱɫfoldbgColor˱༭ıɫ + //ģʽ屳ȫǺɫ686868 + QColor blackPaletteColor(68,68,68); + + marginsBackgroundColor = QColor(57, 58, 60); + bookmarkBkColor = QColor(53,54,56); + + QFile file(":/qss/black.qss"); //qssļ·:/lightblue.qss + QString styleSheet; + if (file.open(QIODevice::Text | QIODevice::ReadOnly)) + { + QPalette palette; + palette.setColor(QPalette::Window, blackPaletteColor); + palette.setColor(QPalette::Base, blackPaletteColor); + palette.setColor(QPalette::Button, blackPaletteColor); + + qApp->setPalette(palette); + + styleSheet = file.readAll(); + + qApp->setStyleSheet(styleSheet); + } + file.close(); } diff --git a/src/styleset.h b/src/styleset.h index c7b3f04..39af083 100755 --- a/src/styleset.h +++ b/src/styleset.h @@ -2,15 +2,18 @@ #include enum StyleId { - DEFAULT_SE, + DEFAULT_SE=0, LIGHT_SE, THIN_BLUE_SE, THIN_YELLOW_SE, RICE_YELLOW_SE, SILVER_SE, LAVENDER_SE, - MISTYROSE_SE + MISTYROSE_SE, + BLACK_SE, + MAX_SE, }; + class StyleSet { public: @@ -20,12 +23,17 @@ public: static void setCommonStyle(QColor foldfgColor_, QColor foldbgColor_, QColor marginsBackgroundColor_, QString colorName); static void setSkin(int id); - + static QString getCurrentStyle(); + static StyleId getCurrentSytleId() + { + return StyleId(m_curStyleId); + } static QColor foldfgColor; static QColor foldbgColor; static QColor marginsBackgroundColor; static QColor bookmarkBkColor; static int m_curStyleId; + static void setDefaultStyle(); static void setLightStyle(); static void setThinBlueStyle(); @@ -34,4 +42,5 @@ public: static void setSilverStyle(); static void setLavenderBlushStyle(); static void setMistyRoseStyle(); + static void setBlackStyle(); }; diff --git a/vs2017_sln/RealCompare.sln b/vs2017_sln/RealCompare.sln new file mode 100755 index 0000000..0b12021 --- /dev/null +++ b/vs2017_sln/RealCompare.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1972 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qscintilla", "..\src\qscint\src\qscintilla.vcxproj", "{9BC42707-EE25-3B28-9906-F7919E273020}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RealCompare", "..\src\RealCompare.vcxproj", "{26BC87D0-189B-3661-B87D-347CF9E0A47F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9BC42707-EE25-3B28-9906-F7919E273020}.Debug|x64.ActiveCfg = Debug|x64 + {9BC42707-EE25-3B28-9906-F7919E273020}.Debug|x64.Build.0 = Debug|x64 + {9BC42707-EE25-3B28-9906-F7919E273020}.Release|x64.ActiveCfg = Release|x64 + {9BC42707-EE25-3B28-9906-F7919E273020}.Release|x64.Build.0 = Release|x64 + {26BC87D0-189B-3661-B87D-347CF9E0A47F}.Debug|x64.ActiveCfg = Debug|x64 + {26BC87D0-189B-3661-B87D-347CF9E0A47F}.Debug|x64.Build.0 = Debug|x64 + {26BC87D0-189B-3661-B87D-347CF9E0A47F}.Release|x64.ActiveCfg = Release|x64 + {26BC87D0-189B-3661-B87D-347CF9E0A47F}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E8FE0D11-F49B-4EC0-9262-B44348F56F19} + EndGlobalSection +EndGlobal