Simple Folder Compare App
Posted: Wed Sep 21, 2011 2:42 pm
Should be a helpful little tool where I work. I know there are plenty of free ones out there with more features, but I wrote it anyway out of boredom.
Demonstrates walking through folders to find content pretty well I think..
I used this code btw for the icons so I didnt have to upload anything. Takes an image file and creates a text file with pb code to include so you dont need to load images externally or cache them in the exe
EDIT 09-23-2011 - Fixed a few bugs and added "Ignore Extension" button.
Demonstrates walking through folders to find content pretty well I think..
Code: Select all
Enumeration
#CHECKSUM
#STRING_PATH1
#STRING_PATH2
#BUTTON_GENERATEREPORT
#BUTTON_RESET
#BUTTON_IGNOREEXT
#TREE1
#TREE2
#TEXT_TREE1
#TEXT_TREE2
#TEXT_MESSAGE
#IMAGE_FOLDERICON
#IMAGE_FILEICON
#DIR
#REPORT
#REPORTFILE
#REPORT_FRAME
#REPORT_BOX_PATH1ALSO
#REPORT_BOX_PATH1NOT
#REPORT_BOX_PATH2ALSO
#REPORT_BOX_PATH2NOT
#REPORT_BOX_ITEMCOUNTS
#REPORT_BOX_FULLLIST1
#REPORT_BOX_FULLLIST2
#REPORT_BUTTON_SAVE
EndEnumeration
CreateImage(#IMAGE_FOLDERICON,16,16)
StartDrawing(ImageOutput(#IMAGE_FOLDERICON))
Box(0,0,1,1,RGB(255,255,255))
Box(0,1,1,1,RGB(255,255,255))
Box(0,2,1,1,RGB(255,255,255))
Box(0,3,1,1,RGB(0,0,0))
Box(0,4,1,1,RGB(0,0,0))
Box(0,5,1,1,RGB(0,0,0))
Box(0,6,1,1,RGB(0,0,0))
Box(0,7,1,1,RGB(0,0,0))
Box(0,8,1,1,RGB(0,0,0))
Box(0,9,1,1,RGB(0,0,0))
Box(0,10,1,1,RGB(0,0,0))
Box(0,11,1,1,RGB(0,0,0))
Box(0,12,1,1,RGB(0,35,59))
Box(0,13,1,1,RGB(255,255,255))
Box(0,14,1,1,RGB(255,255,255))
Box(0,15,1,1,RGB(255,255,255))
Box(1,0,1,1,RGB(255,255,255))
Box(1,1,1,1,RGB(255,255,255))
Box(1,2,1,1,RGB(0,0,0))
Box(1,3,1,1,RGB(204,255,255))
Box(1,4,1,1,RGB(174,227,243))
Box(1,5,1,1,RGB(131,205,229))
Box(1,6,1,1,RGB(93,188,219))
Box(1,7,1,1,RGB(58,176,215))
Box(1,8,1,1,RGB(3,157,205))
Box(1,9,1,1,RGB(0,160,215))
Box(1,10,1,1,RGB(0,173,230))
Box(1,11,1,1,RGB(0,176,235))
Box(1,12,1,1,RGB(0,193,255))
Box(1,13,1,1,RGB(0,0,0))
Box(1,14,1,1,RGB(255,255,255))
Box(1,15,1,1,RGB(255,255,255))
Box(2,0,1,1,RGB(255,255,255))
Box(2,1,1,1,RGB(255,255,255))
Box(2,2,1,1,RGB(0,0,0))
Box(2,3,1,1,RGB(255,255,255))
Box(2,4,1,1,RGB(177,203,212))
Box(2,5,1,1,RGB(137,182,197))
Box(2,6,1,1,RGB(98,163,184))
Box(2,7,1,1,RGB(62,147,176))
Box(2,8,1,1,RGB(0,119,160))
Box(2,9,1,1,RGB(0,125,169))
Box(2,10,1,1,RGB(0,136,181))
Box(2,11,1,1,RGB(0,143,191))
Box(2,12,1,1,RGB(0,207,255))
Box(2,13,1,1,RGB(0,0,0))
Box(2,14,1,1,RGB(255,255,255))
Box(2,15,1,1,RGB(255,255,255))
Box(3,0,1,1,RGB(255,255,255))
Box(3,1,1,1,RGB(255,255,255))
Box(3,2,1,1,RGB(0,0,0))
Box(3,3,1,1,RGB(255,255,255))
Box(3,4,1,1,RGB(159,191,202))
Box(3,5,1,1,RGB(126,174,190))
Box(3,6,1,1,RGB(88,158,179))
Box(3,7,1,1,RGB(56,143,173))
Box(3,8,1,1,RGB(0,117,157))
Box(3,9,1,1,RGB(0,125,168))
Box(3,10,1,1,RGB(0,136,181))
Box(3,11,1,1,RGB(0,142,190))
Box(3,12,1,1,RGB(0,206,255))
Box(3,13,1,1,RGB(0,0,0))
Box(3,14,1,1,RGB(255,255,255))
Box(3,15,1,1,RGB(255,255,255))
Box(4,0,1,1,RGB(255,255,255))
Box(4,1,1,1,RGB(255,255,255))
Box(4,2,1,1,RGB(0,0,0))
Box(4,3,1,1,RGB(255,255,255))
Box(4,4,1,1,RGB(161,192,203))
Box(4,5,1,1,RGB(127,175,190))
Box(4,6,1,1,RGB(89,158,180))
Box(4,7,1,1,RGB(57,143,173))
Box(4,8,1,1,RGB(0,117,157))
Box(4,9,1,1,RGB(0,125,168))
Box(4,10,1,1,RGB(0,136,181))
Box(4,11,1,1,RGB(0,142,190))
Box(4,12,1,1,RGB(0,206,255))
Box(4,13,1,1,RGB(0,0,0))
Box(4,14,1,1,RGB(255,255,255))
Box(4,15,1,1,RGB(255,255,255))
Box(5,0,1,1,RGB(255,255,255))
Box(5,1,1,1,RGB(255,255,255))
Box(5,2,1,1,RGB(0,0,0))
Box(5,3,1,1,RGB(255,255,255))
Box(5,4,1,1,RGB(159,191,202))
Box(5,5,1,1,RGB(126,175,190))
Box(5,6,1,1,RGB(89,156,180))
Box(5,7,1,1,RGB(57,145,173))
Box(5,8,1,1,RGB(0,120,161))
Box(5,9,1,1,RGB(0,124,168))
Box(5,10,1,1,RGB(0,136,181))
Box(5,11,1,1,RGB(0,142,190))
Box(5,12,1,1,RGB(0,206,255))
Box(5,13,1,1,RGB(0,0,0))
Box(5,14,1,1,RGB(255,255,255))
Box(5,15,1,1,RGB(255,255,255))
Box(6,0,1,1,RGB(255,255,255))
Box(6,1,1,1,RGB(255,255,255))
Box(6,2,1,1,RGB(0,0,0))
Box(6,3,1,1,RGB(255,255,255))
Box(6,4,1,1,RGB(182,208,215))
Box(6,5,1,1,RGB(126,174,191))
Box(6,6,1,1,RGB(88,156,179))
Box(6,7,1,1,RGB(57,144,172))
Box(6,8,1,1,RGB(8,124,164))
Box(6,9,1,1,RGB(0,123,167))
Box(6,10,1,1,RGB(0,136,181))
Box(6,11,1,1,RGB(0,142,190))
Box(6,12,1,1,RGB(0,206,255))
Box(6,13,1,1,RGB(0,0,0))
Box(6,14,1,1,RGB(255,255,255))
Box(6,15,1,1,RGB(255,255,255))
Box(7,0,1,1,RGB(255,255,255))
Box(7,1,1,1,RGB(255,255,255))
Box(7,2,1,1,RGB(0,0,0))
Box(7,3,1,1,RGB(44,137,166))
Box(7,4,1,1,RGB(173,221,236))
Box(7,5,1,1,RGB(153,200,217))
Box(7,6,1,1,RGB(88,155,179))
Box(7,7,1,1,RGB(53,143,171))
Box(7,8,1,1,RGB(23,133,169))
Box(7,9,1,1,RGB(0,122,166))
Box(7,10,1,1,RGB(0,136,180))
Box(7,11,1,1,RGB(0,142,190))
Box(7,12,1,1,RGB(0,206,255))
Box(7,13,1,1,RGB(0,0,0))
Box(7,14,1,1,RGB(255,255,255))
Box(7,15,1,1,RGB(255,255,255))
Box(8,0,1,1,RGB(255,255,255))
Box(8,1,1,1,RGB(255,255,255))
Box(8,2,1,1,RGB(255,255,255))
Box(8,3,1,1,RGB(0,0,0))
Box(8,4,1,1,RGB(0,0,0))
Box(8,5,1,1,RGB(178,229,244))
Box(8,6,1,1,RGB(87,155,178))
Box(8,7,1,1,RGB(49,140,170))
Box(8,8,1,1,RGB(36,139,173))
Box(8,9,1,1,RGB(0,122,167))
Box(8,10,1,1,RGB(0,135,180))
Box(8,11,1,1,RGB(0,142,190))
Box(8,12,1,1,RGB(0,206,255))
Box(8,13,1,1,RGB(0,0,0))
Box(8,14,1,1,RGB(255,255,255))
Box(8,15,1,1,RGB(255,255,255))
Box(9,0,1,1,RGB(255,255,255))
Box(9,1,1,1,RGB(255,255,255))
Box(9,2,1,1,RGB(255,255,255))
Box(9,3,1,1,RGB(255,255,255))
Box(9,4,1,1,RGB(0,0,0))
Box(9,5,1,1,RGB(192,245,255))
Box(9,6,1,1,RGB(86,154,178))
Box(9,7,1,1,RGB(46,139,168))
Box(9,8,1,1,RGB(42,142,175))
Box(9,9,1,1,RGB(0,125,168))
Box(9,10,1,1,RGB(0,135,180))
Box(9,11,1,1,RGB(0,142,190))
Box(9,12,1,1,RGB(0,206,255))
Box(9,13,1,1,RGB(0,0,0))
Box(9,14,1,1,RGB(255,255,255))
Box(9,15,1,1,RGB(255,255,255))
Box(10,0,1,1,RGB(255,255,255))
Box(10,1,1,1,RGB(255,255,255))
Box(10,2,1,1,RGB(255,255,255))
Box(10,3,1,1,RGB(255,255,255))
Box(10,4,1,1,RGB(0,0,0))
Box(10,5,1,1,RGB(192,245,255))
Box(10,6,1,1,RGB(87,155,178))
Box(10,7,1,1,RGB(46,139,168))
Box(10,8,1,1,RGB(43,143,176))
Box(10,9,1,1,RGB(0,126,170))
Box(10,10,1,1,RGB(0,133,180))
Box(10,11,1,1,RGB(0,143,190))
Box(10,12,1,1,RGB(0,206,255))
Box(10,13,1,1,RGB(0,0,0))
Box(10,14,1,1,RGB(255,255,255))
Box(10,15,1,1,RGB(255,255,255))
Box(11,0,1,1,RGB(255,255,255))
Box(11,1,1,1,RGB(255,255,255))
Box(11,2,1,1,RGB(255,255,255))
Box(11,3,1,1,RGB(255,255,255))
Box(11,4,1,1,RGB(0,0,0))
Box(11,5,1,1,RGB(192,245,255))
Box(11,6,1,1,RGB(87,155,178))
Box(11,7,1,1,RGB(46,139,168))
Box(11,8,1,1,RGB(45,143,176))
Box(11,9,1,1,RGB(0,126,170))
Box(11,10,1,1,RGB(0,133,180))
Box(11,11,1,1,RGB(0,143,190))
Box(11,12,1,1,RGB(0,206,255))
Box(11,13,1,1,RGB(0,0,0))
Box(11,14,1,1,RGB(255,255,255))
Box(11,15,1,1,RGB(255,255,255))
Box(12,0,1,1,RGB(255,255,255))
Box(12,1,1,1,RGB(255,255,255))
Box(12,2,1,1,RGB(255,255,255))
Box(12,3,1,1,RGB(255,255,255))
Box(12,4,1,1,RGB(0,0,0))
Box(12,5,1,1,RGB(191,244,255))
Box(12,6,1,1,RGB(85,154,177))
Box(12,7,1,1,RGB(45,138,168))
Box(12,8,1,1,RGB(43,143,176))
Box(12,9,1,1,RGB(0,127,168))
Box(12,10,1,1,RGB(0,133,180))
Box(12,11,1,1,RGB(0,143,190))
Box(12,12,1,1,RGB(0,206,255))
Box(12,13,1,1,RGB(0,0,0))
Box(12,14,1,1,RGB(255,255,255))
Box(12,15,1,1,RGB(255,255,255))
Box(13,0,1,1,RGB(255,255,255))
Box(13,1,1,1,RGB(255,255,255))
Box(13,2,1,1,RGB(255,255,255))
Box(13,3,1,1,RGB(255,255,255))
Box(13,4,1,1,RGB(0,0,0))
Box(13,5,1,1,RGB(210,255,255))
Box(13,6,1,1,RGB(102,165,185))
Box(13,7,1,1,RGB(57,144,174))
Box(13,8,1,1,RGB(45,144,178))
Box(13,9,1,1,RGB(0,124,168))
Box(13,10,1,1,RGB(0,136,181))
Box(13,11,1,1,RGB(0,143,191))
Box(13,12,1,1,RGB(0,207,255))
Box(13,13,1,1,RGB(0,0,0))
Box(13,14,1,1,RGB(255,255,255))
Box(13,15,1,1,RGB(255,255,255))
Box(14,0,1,1,RGB(255,255,255))
Box(14,1,1,1,RGB(255,255,255))
Box(14,2,1,1,RGB(255,255,255))
Box(14,3,1,1,RGB(255,255,255))
Box(14,4,1,1,RGB(0,0,0))
Box(14,5,1,1,RGB(146,235,255))
Box(14,6,1,1,RGB(73,177,210))
Box(14,7,1,1,RGB(40,167,208))
Box(14,8,1,1,RGB(26,168,213))
Box(14,9,1,1,RGB(0,159,215))
Box(14,10,1,1,RGB(0,173,230))
Box(14,11,1,1,RGB(0,183,244))
Box(14,12,1,1,RGB(0,200,255))
Box(14,13,1,1,RGB(0,0,0))
Box(14,14,1,1,RGB(255,255,255))
Box(14,15,1,1,RGB(255,255,255))
Box(15,0,1,1,RGB(255,255,255))
Box(15,1,1,1,RGB(255,255,255))
Box(15,2,1,1,RGB(255,255,255))
Box(15,3,1,1,RGB(255,255,255))
Box(15,4,1,1,RGB(0,0,0))
Box(15,5,1,1,RGB(0,0,0))
Box(15,6,1,1,RGB(0,0,0))
Box(15,7,1,1,RGB(0,0,0))
Box(15,8,1,1,RGB(0,0,0))
Box(15,9,1,1,RGB(0,0,0))
Box(15,10,1,1,RGB(0,0,0))
Box(15,11,1,1,RGB(0,0,0))
Box(15,12,1,1,RGB(0,0,0))
Box(15,13,1,1,RGB(255,255,255))
Box(15,14,1,1,RGB(255,255,255))
Box(15,15,1,1,RGB(255,255,255))
StopDrawing()
CreateImage(#IMAGE_FILEICON,16,16)
StartDrawing(ImageOutput(#IMAGE_FILEICON))
Box(0,0,1,1,RGB(255,255,255))
Box(0,1,1,1,RGB(255,255,255))
Box(0,2,1,1,RGB(255,255,255))
Box(0,3,1,1,RGB(255,255,255))
Box(0,4,1,1,RGB(255,255,255))
Box(0,5,1,1,RGB(255,255,255))
Box(0,6,1,1,RGB(255,255,255))
Box(0,7,1,1,RGB(255,255,255))
Box(0,8,1,1,RGB(255,255,255))
Box(0,9,1,1,RGB(255,255,255))
Box(0,10,1,1,RGB(255,255,255))
Box(0,11,1,1,RGB(255,255,255))
Box(0,12,1,1,RGB(255,255,255))
Box(0,13,1,1,RGB(255,255,255))
Box(0,14,1,1,RGB(255,255,255))
Box(0,15,1,1,RGB(255,255,255))
Box(1,0,1,1,RGB(255,255,255))
Box(1,1,1,1,RGB(255,255,255))
Box(1,2,1,1,RGB(255,255,255))
Box(1,3,1,1,RGB(255,255,255))
Box(1,4,1,1,RGB(255,255,255))
Box(1,5,1,1,RGB(255,255,255))
Box(1,6,1,1,RGB(255,255,255))
Box(1,7,1,1,RGB(255,255,255))
Box(1,8,1,1,RGB(255,255,255))
Box(1,9,1,1,RGB(255,255,255))
Box(1,10,1,1,RGB(255,255,255))
Box(1,11,1,1,RGB(255,255,255))
Box(1,12,1,1,RGB(255,255,255))
Box(1,13,1,1,RGB(255,255,255))
Box(1,14,1,1,RGB(255,255,255))
Box(1,15,1,1,RGB(255,255,255))
Box(2,0,1,1,RGB(255,255,255))
Box(2,1,1,1,RGB(0,0,0))
Box(2,2,1,1,RGB(0,0,0))
Box(2,3,1,1,RGB(0,0,0))
Box(2,4,1,1,RGB(0,0,0))
Box(2,5,1,1,RGB(0,0,0))
Box(2,6,1,1,RGB(0,0,0))
Box(2,7,1,1,RGB(0,0,0))
Box(2,8,1,1,RGB(0,0,0))
Box(2,9,1,1,RGB(0,0,0))
Box(2,10,1,1,RGB(0,0,0))
Box(2,11,1,1,RGB(0,0,0))
Box(2,12,1,1,RGB(0,0,0))
Box(2,13,1,1,RGB(0,0,0))
Box(2,14,1,1,RGB(255,255,255))
Box(2,15,1,1,RGB(255,255,255))
Box(3,0,1,1,RGB(255,255,255))
Box(3,1,1,1,RGB(0,0,0))
Box(3,2,1,1,RGB(0,206,255))
Box(3,3,1,1,RGB(0,206,255))
Box(3,4,1,1,RGB(0,206,255))
Box(3,5,1,1,RGB(0,206,255))
Box(3,6,1,1,RGB(0,206,255))
Box(3,7,1,1,RGB(0,206,255))
Box(3,8,1,1,RGB(0,206,255))
Box(3,9,1,1,RGB(0,206,255))
Box(3,10,1,1,RGB(0,206,255))
Box(3,11,1,1,RGB(0,206,255))
Box(3,12,1,1,RGB(0,206,255))
Box(3,13,1,1,RGB(0,0,0))
Box(3,14,1,1,RGB(143,143,143))
Box(3,15,1,1,RGB(255,255,255))
Box(4,0,1,1,RGB(255,255,255))
Box(4,1,1,1,RGB(0,0,0))
Box(4,2,1,1,RGB(0,206,255))
Box(4,3,1,1,RGB(255,255,255))
Box(4,4,1,1,RGB(255,255,255))
Box(4,5,1,1,RGB(255,255,255))
Box(4,6,1,1,RGB(255,255,255))
Box(4,7,1,1,RGB(255,255,255))
Box(4,8,1,1,RGB(255,255,255))
Box(4,9,1,1,RGB(255,255,255))
Box(4,10,1,1,RGB(255,255,255))
Box(4,11,1,1,RGB(255,255,255))
Box(4,12,1,1,RGB(0,117,157))
Box(4,13,1,1,RGB(0,0,0))
Box(4,14,1,1,RGB(143,143,143))
Box(4,15,1,1,RGB(255,255,255))
Box(5,0,1,1,RGB(255,255,255))
Box(5,1,1,1,RGB(0,0,0))
Box(5,2,1,1,RGB(0,206,255))
Box(5,3,1,1,RGB(255,255,255))
Box(5,4,1,1,RGB(255,255,255))
Box(5,5,1,1,RGB(255,255,255))
Box(5,6,1,1,RGB(255,255,255))
Box(5,7,1,1,RGB(0,0,0))
Box(5,8,1,1,RGB(255,255,255))
Box(5,9,1,1,RGB(255,255,255))
Box(5,10,1,1,RGB(0,0,0))
Box(5,11,1,1,RGB(255,255,255))
Box(5,12,1,1,RGB(0,117,157))
Box(5,13,1,1,RGB(0,0,0))
Box(5,14,1,1,RGB(143,143,143))
Box(5,15,1,1,RGB(255,255,255))
Box(6,0,1,1,RGB(255,255,255))
Box(6,1,1,1,RGB(0,0,0))
Box(6,2,1,1,RGB(0,206,255))
Box(6,3,1,1,RGB(255,255,255))
Box(6,4,1,1,RGB(255,255,255))
Box(6,5,1,1,RGB(255,255,255))
Box(6,6,1,1,RGB(255,255,255))
Box(6,7,1,1,RGB(0,0,0))
Box(6,8,1,1,RGB(255,255,255))
Box(6,9,1,1,RGB(255,255,255))
Box(6,10,1,1,RGB(0,0,0))
Box(6,11,1,1,RGB(255,255,255))
Box(6,12,1,1,RGB(0,117,157))
Box(6,13,1,1,RGB(0,0,0))
Box(6,14,1,1,RGB(143,143,143))
Box(6,15,1,1,RGB(255,255,255))
Box(7,0,1,1,RGB(255,255,255))
Box(7,1,1,1,RGB(0,0,0))
Box(7,2,1,1,RGB(0,206,255))
Box(7,3,1,1,RGB(255,255,255))
Box(7,4,1,1,RGB(255,255,255))
Box(7,5,1,1,RGB(255,255,255))
Box(7,6,1,1,RGB(255,255,255))
Box(7,7,1,1,RGB(0,0,0))
Box(7,8,1,1,RGB(255,255,255))
Box(7,9,1,1,RGB(255,255,255))
Box(7,10,1,1,RGB(0,0,0))
Box(7,11,1,1,RGB(255,255,255))
Box(7,12,1,1,RGB(0,117,157))
Box(7,13,1,1,RGB(0,0,0))
Box(7,14,1,1,RGB(143,143,143))
Box(7,15,1,1,RGB(255,255,255))
Box(8,0,1,1,RGB(255,255,255))
Box(8,1,1,1,RGB(0,0,0))
Box(8,2,1,1,RGB(0,0,0))
Box(8,3,1,1,RGB(0,0,0))
Box(8,4,1,1,RGB(0,0,0))
Box(8,5,1,1,RGB(0,0,0))
Box(8,6,1,1,RGB(255,255,255))
Box(8,7,1,1,RGB(0,0,0))
Box(8,8,1,1,RGB(255,255,255))
Box(8,9,1,1,RGB(255,255,255))
Box(8,10,1,1,RGB(0,0,0))
Box(8,11,1,1,RGB(255,255,255))
Box(8,12,1,1,RGB(0,117,157))
Box(8,13,1,1,RGB(0,0,0))
Box(8,14,1,1,RGB(143,143,143))
Box(8,15,1,1,RGB(255,255,255))
Box(9,0,1,1,RGB(255,255,255))
Box(9,1,1,1,RGB(207,207,207))
Box(9,2,1,1,RGB(43,43,43))
Box(9,3,1,1,RGB(255,255,255))
Box(9,4,1,1,RGB(255,255,255))
Box(9,5,1,1,RGB(0,0,0))
Box(9,6,1,1,RGB(255,255,255))
Box(9,7,1,1,RGB(255,255,255))
Box(9,8,1,1,RGB(255,255,255))
Box(9,9,1,1,RGB(255,255,255))
Box(9,10,1,1,RGB(255,255,255))
Box(9,11,1,1,RGB(255,255,255))
Box(9,12,1,1,RGB(0,117,157))
Box(9,13,1,1,RGB(0,0,0))
Box(9,14,1,1,RGB(143,143,143))
Box(9,15,1,1,RGB(255,255,255))
Box(10,0,1,1,RGB(255,255,255))
Box(10,1,1,1,RGB(255,255,255))
Box(10,2,1,1,RGB(176,176,176))
Box(10,3,1,1,RGB(33,33,33))
Box(10,4,1,1,RGB(255,255,255))
Box(10,5,1,1,RGB(0,0,0))
Box(10,6,1,1,RGB(255,255,255))
Box(10,7,1,1,RGB(255,255,255))
Box(10,8,1,1,RGB(255,255,255))
Box(10,9,1,1,RGB(255,255,255))
Box(10,10,1,1,RGB(255,255,255))
Box(10,11,1,1,RGB(255,255,255))
Box(10,12,1,1,RGB(0,117,157))
Box(10,13,1,1,RGB(0,0,0))
Box(10,14,1,1,RGB(143,143,143))
Box(10,15,1,1,RGB(255,255,255))
Box(11,0,1,1,RGB(255,255,255))
Box(11,1,1,1,RGB(255,255,255))
Box(11,2,1,1,RGB(255,255,255))
Box(11,3,1,1,RGB(180,180,180))
Box(11,4,1,1,RGB(31,31,31))
Box(11,5,1,1,RGB(0,0,0))
Box(11,6,1,1,RGB(0,117,157))
Box(11,7,1,1,RGB(0,117,157))
Box(11,8,1,1,RGB(0,117,157))
Box(11,9,1,1,RGB(0,117,157))
Box(11,10,1,1,RGB(0,117,157))
Box(11,11,1,1,RGB(0,117,157))
Box(11,12,1,1,RGB(0,117,157))
Box(11,13,1,1,RGB(0,0,0))
Box(11,14,1,1,RGB(143,143,143))
Box(11,15,1,1,RGB(255,255,255))
Box(12,0,1,1,RGB(255,255,255))
Box(12,1,1,1,RGB(255,255,255))
Box(12,2,1,1,RGB(255,255,255))
Box(12,3,1,1,RGB(255,255,255))
Box(12,4,1,1,RGB(175,175,175))
Box(12,5,1,1,RGB(0,0,0))
Box(12,6,1,1,RGB(0,0,0))
Box(12,7,1,1,RGB(0,0,0))
Box(12,8,1,1,RGB(0,0,0))
Box(12,9,1,1,RGB(0,0,0))
Box(12,10,1,1,RGB(0,0,0))
Box(12,11,1,1,RGB(0,0,0))
Box(12,12,1,1,RGB(0,0,0))
Box(12,13,1,1,RGB(0,0,0))
Box(12,14,1,1,RGB(143,143,143))
Box(12,15,1,1,RGB(255,255,255))
Box(13,0,1,1,RGB(255,255,255))
Box(13,1,1,1,RGB(255,255,255))
Box(13,2,1,1,RGB(255,255,255))
Box(13,3,1,1,RGB(255,255,255))
Box(13,4,1,1,RGB(255,255,255))
Box(13,5,1,1,RGB(227,227,227))
Box(13,6,1,1,RGB(143,143,143))
Box(13,7,1,1,RGB(143,143,143))
Box(13,8,1,1,RGB(143,143,143))
Box(13,9,1,1,RGB(143,143,143))
Box(13,10,1,1,RGB(143,143,143))
Box(13,11,1,1,RGB(143,143,143))
Box(13,12,1,1,RGB(143,143,143))
Box(13,13,1,1,RGB(143,143,143))
Box(13,14,1,1,RGB(143,143,143))
Box(13,15,1,1,RGB(255,255,255))
Box(14,0,1,1,RGB(255,255,255))
Box(14,1,1,1,RGB(255,255,255))
Box(14,2,1,1,RGB(255,255,255))
Box(14,3,1,1,RGB(255,255,255))
Box(14,4,1,1,RGB(255,255,255))
Box(14,5,1,1,RGB(255,255,255))
Box(14,6,1,1,RGB(255,255,255))
Box(14,7,1,1,RGB(255,255,255))
Box(14,8,1,1,RGB(255,255,255))
Box(14,9,1,1,RGB(255,255,255))
Box(14,10,1,1,RGB(255,255,255))
Box(14,11,1,1,RGB(255,255,255))
Box(14,12,1,1,RGB(255,255,255))
Box(14,13,1,1,RGB(255,255,255))
Box(14,14,1,1,RGB(255,255,255))
Box(14,15,1,1,RGB(255,255,255))
Box(15,0,1,1,RGB(255,255,255))
Box(15,1,1,1,RGB(255,255,255))
Box(15,2,1,1,RGB(255,255,255))
Box(15,3,1,1,RGB(255,255,255))
Box(15,4,1,1,RGB(255,255,255))
Box(15,5,1,1,RGB(255,255,255))
Box(15,6,1,1,RGB(255,255,255))
Box(15,7,1,1,RGB(255,255,255))
Box(15,8,1,1,RGB(255,255,255))
Box(15,9,1,1,RGB(255,255,255))
Box(15,10,1,1,RGB(255,255,255))
Box(15,11,1,1,RGB(255,255,255))
Box(15,12,1,1,RGB(255,255,255))
Box(15,13,1,1,RGB(255,255,255))
Box(15,14,1,1,RGB(255,255,255))
Box(15,15,1,1,RGB(255,255,255))
StopDrawing()
Global folderIcon = ImageID(#IMAGE_FOLDERICON)
Global fileIcon = ImageID(#IMAGE_FILEICON)
Global color_exsists1 = RGB(107,245,170)
Global color_exsists0 = RGB(255,150,150)
Structure dirStuff
path.s
name.s
nameNoExt.s
dirLevel.l
fof.l
exsists.l
EndStructure
Global NewList path1Stuff.dirStuff()
Global NewList path2Stuff.dirStuff()
Global path1.s,path2.s
Global SIM1.l,SIM2.l,DIF1.l,DIF2.l
Global ENDREPORT.l = 0
Global ENDCHECKSUM.l
Procedure error(message.s) : MessageRequester("Checksum - ERROR",message) : EndProcedure
Procedure findAndAddPath1(cFL.l,relPath.s)
path1.s = GetGadgetText(#STRING_PATH1)
If ExamineDirectory(cFL,path1+relPath,"")
Repeat
WEvent = WindowEvent() : If WEvent = #PB_Event_CloseWindow : End : EndIf
If IsDirectory(cFL)
NDEResult = NextDirectoryEntry(cFL)
If NDEResult <> 0
If DirectoryEntryType(cFL) = #PB_DirectoryEntry_Directory And DirectoryEntryName(cFL) <> "." And DirectoryEntryName(cFL) <> ".."
AddElement(path1Stuff())
path1Stuff()\path = relPath
path1Stuff()\name = DirectoryEntryName(cFL)
path1Stuff()\dirLevel = cFL
path1Stuff()\fof = #PB_DirectoryEntry_Directory
findAndAddPath1(cFL+1,relPath+DirectoryEntryName(cFL)+"\")
ElseIf DirectoryEntryType(cFL) = #PB_DirectoryEntry_File And DirectoryEntryName(cFL) <> "." And DirectoryEntryName(cFL) <> ".." And UCase(DirectoryEntryName(cFL)) <> "THUMBS.DB"
AddElement(path1Stuff())
path1Stuff()\path = relPath
path1Stuff()\name = DirectoryEntryName(cFL)
ext.s = "."+GetExtensionPart(path1Stuff()\name)
path1Stuff()\nameNoExt = Mid(path1Stuff()\name,1,Len(path1Stuff()\name)-Len(ext))
path1Stuff()\dirLevel = cFL
path1Stuff()\fof = #PB_DirectoryEntry_File
SetGadgetText(#TEXT_MESSAGE,"Looking for files..."+path1Stuff()\name)
EndIf
EndIf
EndIf
Until NDEResult = 0
FinishDirectory(cFL)
EndIf
EndProcedure
Procedure findAndAddPath2(cFL.l,relPath.s)
path2.s = GetGadgetText(#STRING_PATH2)
If ExamineDirectory(cFL,path2+relPath,"")
Repeat
WEvent = WindowEvent() : If WEvent = #PB_Event_CloseWindow : End : EndIf
If IsDirectory(cFL)
NDEResult = NextDirectoryEntry(cFL)
If NDEResult <> 0
If DirectoryEntryType(cFL) = #PB_DirectoryEntry_Directory And DirectoryEntryName(cFL) <> "." And DirectoryEntryName(cFL) <> ".."
AddElement(path2Stuff())
path2Stuff()\path = relPath
path2Stuff()\name = DirectoryEntryName(cFL)
path2Stuff()\dirLevel = cFL
path2Stuff()\fof = #PB_DirectoryEntry_Directory
findAndAddPath2(cFL+1,relPath+DirectoryEntryName(cFL)+"\")
ElseIf DirectoryEntryType(cFL) = #PB_DirectoryEntry_File And DirectoryEntryName(cFL) <> "." And DirectoryEntryName(cFL) <> ".." And UCase(DirectoryEntryName(cFL)) <> "THUMBS.DB"
AddElement(path2Stuff())
path2Stuff()\path = relPath
path2Stuff()\name = DirectoryEntryName(cFL)
ext.s = "."+GetExtensionPart(path2Stuff()\name)
path2Stuff()\nameNoExt = Mid(path2Stuff()\name,1,Len(path2Stuff()\name)-Len(ext))
path2Stuff()\dirLevel = cFL
path2Stuff()\fof = #PB_DirectoryEntry_File
SetGadgetText(#TEXT_MESSAGE,"Looking for files..."+path2Stuff()\name)
EndIf
EndIf
EndIf
Until NDEResult = 0
FinishDirectory(cFL)
EndIf
EndProcedure
Procedure refreshPath1Stuff()
ClearGadgetItemList(#TREE1)
SIM1 = 0
DIF1 = 0
Select GetGadgetState(#BUTTON_IGNOREEXT)
Case 0
ForEach path1Stuff()
If path1Stuff()\fof = #PB_DirectoryEntry_Directory
AddGadgetItem(#TREE1,-1,path1Stuff()\name,folderIcon,path1Stuff()\dirLevel)
Else
AddGadgetItem(#TREE1,-1,path1Stuff()\name,fileIcon,path1Stuff()\dirLevel)
EndIf
If path1Stuff()\exsists = 1
SetGadgetItemColor(#TREE1,CountGadgetItems(#TREE1)-1,#PB_Gadget_BackColor,color_exsists1)
SIM1 + 1
Else
SetGadgetItemColor(#TREE1,CountGadgetItems(#TREE1)-1,#PB_Gadget_BackColor,color_exsists0)
DIF1 + 1
EndIf
Next
Case 1
ForEach path1Stuff()
If path1Stuff()\fof = #PB_DirectoryEntry_Directory
AddGadgetItem(#TREE1,-1,path1Stuff()\name,folderIcon,path1Stuff()\dirLevel)
Else
AddGadgetItem(#TREE1,-1,path1Stuff()\nameNoExt,fileIcon,path1Stuff()\dirLevel)
EndIf
If path1Stuff()\exsists = 1
SetGadgetItemColor(#TREE1,CountGadgetItems(#TREE1)-1,#PB_Gadget_BackColor,color_exsists1)
SIM1 + 1
Else
SetGadgetItemColor(#TREE1,CountGadgetItems(#TREE1)-1,#PB_Gadget_BackColor,color_exsists0)
DIF1 + 1
EndIf
Next
EndSelect
SetGadgetText(#TEXT_TREE1,"#SIMILAR="+Str(SIM1)+" | #DIFFERENT="+Str(DIF1))
EndProcedure
Procedure refreshPath2Stuff()
ClearGadgetItemList(#TREE2)
SIM2 = 0
DIF2 = 0
Select GetGadgetState(#BUTTON_IGNOREEXT)
Case 0
ForEach path2Stuff()
If path2Stuff()\fof = #PB_DirectoryEntry_Directory
AddGadgetItem(#TREE2,-1,path2Stuff()\name,folderIcon,path2Stuff()\dirLevel)
Else
AddGadgetItem(#TREE2,-1,path2Stuff()\name,fileIcon,path2Stuff()\dirLevel)
EndIf
If path2Stuff()\exsists = 1
SetGadgetItemColor(#TREE2,CountGadgetItems(#TREE2)-1,#PB_Gadget_BackColor,color_exsists1)
SIM2 + 1
Else
SetGadgetItemColor(#TREE2,CountGadgetItems(#TREE2)-1,#PB_Gadget_BackColor,color_exsists0)
DIF2 + 1
EndIf
Next
Case 1
ForEach path2Stuff()
If path2Stuff()\fof = #PB_DirectoryEntry_Directory
AddGadgetItem(#TREE2,-1,path2Stuff()\name,folderIcon,path2Stuff()\dirLevel)
Else
AddGadgetItem(#TREE2,-1,path2Stuff()\nameNoExt,fileIcon,path2Stuff()\dirLevel)
EndIf
If path2Stuff()\exsists = 1
SetGadgetItemColor(#TREE2,CountGadgetItems(#TREE2)-1,#PB_Gadget_BackColor,color_exsists1)
SIM2 + 1
Else
SetGadgetItemColor(#TREE2,CountGadgetItems(#TREE2)-1,#PB_Gadget_BackColor,color_exsists0)
DIF2 + 1
EndIf
Next
EndSelect
SetGadgetText(#TEXT_TREE2,"#SIMILAR="+Str(SIM2)+" | #DIFFERENT="+Str(DIF2))
EndProcedure
Procedure resizeStuff()
WW = WindowWidth(#CHECKSUM)
WW_H = WW/2
WH = WindowHeight(#CHECKSUM)
ResizeGadget(#STRING_PATH1,0,5,WW_H,20)
ResizeGadget(#STRING_PATH2,WW_H,5,WW_H,20)
ResizeGadget(#TREE1,0,30,WW_H,WH-90)
ResizeGadget(#TREE2,WW_H,30,WW_H,WH-90)
ResizeGadget(#TEXT_TREE1,0,GadgetY(#TREE1)+GadgetHeight(#TREE1),WW_H,30)
ResizeGadget(#TEXT_TREE2,WW_H,GadgetY(#TREE2)+GadgetHeight(#TREE2),WW_H,30)
ResizeGadget(#BUTTON_RESET,WW_H-75-160,WH-35,150,30)
ResizeGadget(#BUTTON_GENERATEREPORT,WW_H+85,WH-35,150,30)
ResizeGadget(#BUTTON_IGNOREEXT,WW_H-75,WH-35,150,30)
SetGadgetText(#TEXT_TREE1,"#SIMILAR="+Str(SIM1)+" | #DIFFERENT="+Str(DIF1))
SetGadgetText(#TEXT_TREE2,"#SIMILAR="+Str(SIM2)+" | #DIFFERENT="+Str(DIF2))
EndProcedure
Procedure switchView(mode.l)
HideGadget(#STRING_PATH1,mode)
HideGadget(#STRING_PATH2,mode)
HideGadget(#TREE1,mode)
HideGadget(#TREE2,mode)
HideGadget(#BUTTON_GENERATEREPORT,mode)
HideGadget(#BUTTON_RESET,mode)
HideGadget(#BUTTON_IGNOREEXT,mode)
HideGadget(#TEXT_TREE1,mode)
HideGadget(#TEXT_TREE2,mode)
Select mode
Case 1 : HideGadget(#TEXT_MESSAGE,0)
Case 0 : HideGadget(#TEXT_MESSAGE,1)
EndSelect
EndProcedure
Procedure compareDiff()
Select GetGadgetState(#BUTTON_IGNOREEXT)
Case 0
ForEach path1Stuff()
FOUND = 0
ForEach path2Stuff()
If path1Stuff()\path+path1Stuff()\name = path2Stuff()\path+path2Stuff()\name
FOUND = 1
EndIf
Next
path1Stuff()\exsists = FOUND
Next
ForEach path2Stuff()
FOUND = 0
ForEach path1Stuff()
If path1Stuff()\path+path1Stuff()\name = path2Stuff()\path+path2Stuff()\name
FOUND = 1
EndIf
Next
path2Stuff()\exsists = FOUND
Next
Case 1
ForEach path1Stuff()
FOUND = 0
ForEach path2Stuff()
If path1Stuff()\path+path1Stuff()\nameNoExt = path2Stuff()\path+path2Stuff()\nameNoExt
FOUND = 1
EndIf
Next
path1Stuff()\exsists = FOUND
Next
ForEach path2Stuff()
FOUND = 0
ForEach path1Stuff()
If path1Stuff()\path+path1Stuff()\nameNoExt = path2Stuff()\path+path2Stuff()\nameNoExt
FOUND = 1
EndIf
Next
path2Stuff()\exsists = FOUND
Next
EndSelect
EndProcedure
Procedure open_report()
If OpenWindow(#REPORT,0,0,230,330,"Compare Files - Report",#PB_Window_WindowCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(#REPORT))
Frame3DGadget(#REPORT_FRAME,10,10,210,310,"Generate Report")
CheckBoxGadget(#REPORT_BOX_PATH1ALSO,20,30,210,30,"Stuff in path1 that is ALSO in path2")
CheckBoxGadget(#REPORT_BOX_PATH1NOT,20,60,210,30,"Stuff in path1 that is NOT in path2")
CheckBoxGadget(#REPORT_BOX_PATH2ALSO,20,90,210,30,"Stuff in path2 that is ALSO in path1")
CheckBoxGadget(#REPORT_BOX_PATH2NOT,20,120,210,30,"Stuff in path2 that is NOT in path1")
CheckBoxGadget(#REPORT_BOX_ITEMCOUNTS,20,180,210,30,"Item counts")
CheckBoxGadget(#REPORT_BOX_FULLLIST1,20,210,210,30,"Full list of stuff in path1")
CheckBoxGadget(#REPORT_BOX_FULLLIST2,20,240,210,30,"Full list of stuff in path2")
SetGadgetState(#REPORT_BOX_PATH1ALSO,1)
SetGadgetState(#REPORT_BOX_PATH1NOT,1)
SetGadgetState(#REPORT_BOX_PATH2ALSO,1)
SetGadgetState(#REPORT_BOX_PATH2NOT,1)
SetGadgetState(#REPORT_BOX_ITEMCOUNTS,1)
SetGadgetState(#REPORT_BOX_FULLLIST1,1)
SetGadgetState(#REPORT_BOX_FULLLIST2,1)
ButtonGadget(#REPORT_BUTTON_SAVE,20,280,190,30,"Save Report")
ENDREPORT = 0
Repeat
WEvent = WindowEvent()
If WEvent
Select WEvent
Case #PB_Event_CloseWindow
If EventWindow() = #CHECKSUM : ENDCHECKSUM = 1 : ENDREPORT = 1
ElseIf EventWindow() = #REPORT : ENDREPORT = 1
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #REPORT_BUTTON_SAVE
fileToSave.s = SaveFileRequester("Save file where?","","Text (*.txt)|*.txt",0)
If fileToSave <> ""
If UCase(Mid(fileToSave,Len(fileToSave)-3,4)) <> ".TXT" : fileToSave + ".TXT" : EndIf
fullPath = MessageRequester("Compare Files","Do you want to include the full path?",#PB_MessageRequester_YesNo)
If CreateFile(#REPORTFILE,fileToSave)
WriteStringN(#REPORTFILE,"Path1:"+path1)
WriteStringN(#REPORTFILE,"Path2:"+path2)
If GetGadgetState(#BUTTON_IGNOREEXT) = 1
WriteStringN(#REPORTFILE,"Extensions are ignored")
EndIf
If GetGadgetState(#REPORT_BOX_PATH1ALSO) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Contents of path1 that are ALSO in path2")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
ForEach path1Stuff()
If path1Stuff()\exsists = 1
If fullPath = #PB_MessageRequester_Yes
WriteStringN(#REPORTFILE,path1+path1Stuff()\path+path1Stuff()\name)
Else
WriteStringN(#REPORTFILE,path1Stuff()\path+path1Stuff()\name)
EndIf
EndIf
Next
EndIf
If GetGadgetState(#REPORT_BOX_PATH1NOT) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Contents of path1 that are NOT in path2")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
ForEach path1Stuff()
If path1Stuff()\exsists = 0
If fullPath = #PB_MessageRequester_Yes
WriteStringN(#REPORTFILE,path1+path1Stuff()\path+path1Stuff()\name)
Else
WriteStringN(#REPORTFILE,path1Stuff()\path+path1Stuff()\name)
EndIf
EndIf
Next
EndIf
If GetGadgetState(#REPORT_BOX_PATH2ALSO) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Contents of path2 that are ALSO in path1")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
ForEach path2Stuff()
If path2Stuff()\exsists = 1
If fullPath = #PB_MessageRequester_Yes
WriteStringN(#REPORTFILE,path2+path2Stuff()\path+path2Stuff()\name)
Else
WriteStringN(#REPORTFILE,path2Stuff()\path+path2Stuff()\name)
EndIf
EndIf
Next
EndIf
If GetGadgetState(#REPORT_BOX_PATH2NOT) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Contents of path2 that are NOT in path1")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
ForEach path2Stuff()
If path2Stuff()\exsists = 0
If fullPath = #PB_MessageRequester_Yes
WriteStringN(#REPORTFILE,path2+path2Stuff()\path+path2Stuff()\name)
Else
WriteStringN(#REPORTFILE,path2Stuff()\path+path2Stuff()\name)
EndIf
EndIf
Next
EndIf
If GetGadgetState(#REPORT_BOX_ITEMCOUNTS) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Item Counts")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
Focnt = 0
Ficnt = 0
ForEach path1Stuff()
If path1Stuff()\fof = #PB_DirectoryEntry_Directory : Focnt + 1
Else : Ficnt + 1
EndIf
Next
WriteStringN(#REPORTFILE,"Total # of folders in path1: "+Str(Focnt))
WriteStringN(#REPORTFILE,"Total # of files in path1: "+Str(Ficnt))
Focnt = 0
Ficnt = 0
ForEach path2Stuff()
If path2Stuff()\fof = #PB_DirectoryEntry_Directory : Focnt + 1
Else : Ficnt + 1
EndIf
Next
WriteStringN(#REPORTFILE,"Total # of folders in path2: "+Str(Focnt))
WriteStringN(#REPORTFILE,"Total # of files in path2: "+Str(Ficnt))
WriteStringN(#REPORTFILE,"Total # of items in path1 that are in path2: "+Str(SIM1))
WriteStringN(#REPORTFILE,"Total # of items in path1 that are NOT in path2: "+Str(DIF1))
WriteStringN(#REPORTFILE,"Total # of items in path2 that are in path1: "+Str(SIM2))
WriteStringN(#REPORTFILE,"Total # of items in path2 that are NOT in path1: "+Str(DIF2))
EndIf
If GetGadgetState(#REPORT_BOX_FULLLIST1) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Path 1 Contents")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
ForEach path1Stuff()
If fullPath = #PB_MessageRequester_Yes
WriteStringN(#REPORTFILE,path1+path1Stuff()\path+path1Stuff()\name)
Else
WriteStringN(#REPORTFILE,path1Stuff()\path+path1Stuff()\name)
EndIf
Next
EndIf
If GetGadgetState(#REPORT_BOX_FULLLIST2) = 1
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
WriteStringN(#REPORTFILE,"Path 2 Contents")
WriteStringN(#REPORTFILE,"-----------------------------------------------------")
ForEach path2Stuff()
If fullPath = #PB_MessageRequester_Yes
WriteStringN(#REPORTFILE,path2+path2Stuff()\path+path2Stuff()\name)
Else
WriteStringN(#REPORTFILE,path2Stuff()\path+path2Stuff()\name)
EndIf
Next
EndIf
CloseFile(#REPORTFILE)
MessageRequester("Compare Files","Saved!")
Else : ERROR("Could not create "+fileToSave)
EndIf
EndIf
EndSelect
EndSelect
EndIf
Until ENDREPORT <> 0
CloseWindow(#REPORT)
EndIf
EndIf
EndProcedure
;-open_main
If OpenWindow(#CHECKSUM,100,100,800,600,"Compare Files by Matt",#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#CHECKSUM))
StringGadget(#STRING_PATH1,110,5,580,20,"Click here to set path 1",#PB_String_ReadOnly)
StringGadget(#STRING_PATH2,110,35,580,20,"Click here to set path 2",#PB_String_ReadOnly)
TextGadget(#TEXT_MESSAGE,5,5,1000,20,"Working...") : HideGadget(#TEXT_MESSAGE,1)
TextGadget(#TEXT_TREE1,0,0,0,0,"#SIMILAR=0 | #DIFFERENT=0",#PB_Text_Center)
TextGadget(#TEXT_TREE2,0,0,0,0,"#SIMILAR=0 | #DIFFERENT=0",#PB_Text_Center)
ButtonGadget(#BUTTON_GENERATEREPORT,485,510,150,30,"Generate Report",#PB_Button_Default)
ButtonGadget(#BUTTON_RESET,485,510,150,30,"Reset")
ButtonGadget(#BUTTON_IGNOREEXT,0,0,0,0,"Ignore Extension",#PB_Button_Toggle)
TreeGadget(#TREE1,0,30,400,400)
TreeGadget(#TREE2,400,30,400,400)
resizeStuff()
ENDCHECKSUM = 0
Repeat
WEvent = WindowEvent()
Select WEvent
Case #PB_Event_CloseWindow
If EventWindow() = #CHECKSUM : ENDCHECKSUM = 1
ElseIf EventWindow() = #REPORT : ENDREPORT = 1
EndIf
Case #PB_Event_SizeWindow : resizeStuff()
Case #PB_Event_Gadget
Select EventGadget()
Case #BUTTON_IGNOREEXT
switchView(1)
compareDiff()
refreshPath1Stuff()
refreshPath2Stuff()
switchView(0)
Case #BUTTON_GENERATEREPORT
If CountList(path1Stuff()) = 0 And CountList(path2Stuff()) = 0
ERROR("Nothing to report.")
Else
switchView(1)
SetGadgetText(#TEXT_MESSAGE,"Generating Report...")
open_report()
switchView(0)
EndIf
Case #BUTTON_RESET
SetGadgetText(#STRING_PATH1,"Click here to set path 1")
SetGadgetText(#STRING_PATH2,"Click here to set path 2")
SetGadgetText(#TEXT_TREE1,"#SIMILAR=0 | #DIFFERENT=0")
SetGadgetText(#TEXT_TREE2,"#SIMILAR=0 | #DIFFERENT=0")
ClearGadgetItemList(#TREE1)
ClearGadgetItemList(#TREE2)
ClearList(path1Stuff())
ClearList(path2Stuff())
SIM1 = 0
SIM2 = 0
DIF1 = 0
DIF2 = 0
path1 = ""
path2 = ""
Case #STRING_PATH1
If EventType() = #PB_EventType_Focus
pathToTry.s = Trim(InputRequester("Compare Files","Enter Path 1, or leave blank to browse for path.",""))
If pathToTry = ""
pathToTry = PathRequester("Choose Path 1",GetGadgetText(#STRING_PATH1))
EndIf
If pathToTry <> ""
If ExamineDirectory(#DIR,pathToTry,"")
If Mid(pathToTry,Len(pathToTry),1) <> "\" : pathToTry + "\" : EndIf
SetGadgetText(#STRING_PATH1,pathToTry)
FinishDirectory(#DIR)
switchView(1)
ClearList(path1Stuff())
findAndAddPath1(0,"")
If CountList(path2Stuff()) > 0
compareDiff()
refreshPath2Stuff()
EndIf
switchView(0)
refreshPath1Stuff()
Else : error(pathToTry+" is not a valid path.")
EndIf
EndIf
EndIf
Case #STRING_PATH2
If EventType() = #PB_EventType_Focus
pathToTry.s = Trim(InputRequester("Compare Files","Enter Path 2, or leave blank to browse for path.",""))
If pathToTry = ""
pathToTry = PathRequester("Choose Path 2",GetGadgetText(#STRING_PATH2))
EndIf
If pathToTry <> ""
If ExamineDirectory(#DIR,pathToTry,"")
If Mid(pathToTry,Len(pathToTry),1) <> "\" : pathToTry + "\" : EndIf
SetGadgetText(#STRING_PATH2,pathToTry)
FinishDirectory(#DIR)
switchView(1)
ClearList(path2Stuff())
findAndAddPath2(0,"")
If CountList(path1Stuff()) > 0
compareDiff()
refreshPath1Stuff()
EndIf
switchView(0)
refreshPath2Stuff()
Else : error(pathToTry+" is not a valid path.")
EndIf
EndIf
EndIf
EndSelect
EndSelect
Until ENDCHECKSUM <> 0
EndIf
CloseWindow(#CHECKSUM)
EndIf
Code: Select all
Procedure error(message.s) : MessageRequester("ERROR",message) : EndProcedure
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
Structure dots
x.l
y.l
color.l
EndStructure
Global NewList dot.dots()
fileToConvert.s = OpenFileRequester("Select an image file to convert to purebasic code.","","",0)
If fileToConvert <> ""
If LoadImage(0,fileToConvert)
fileToSave.s = SaveFileRequester("Choose output file.","","",0)
If CreateFile(0,fileToSave)
StartDrawing(ImageOutput(0))
For x = 0 To ImageWidth(0)-1
For y = 0 To ImageHeight(0)-1
AddElement(dot())
dot()\x = x
dot()\y = y
dot()\color = Point(x,y)
Next y
Next x
StopDrawing()
WriteStringN(0,"CreateImage(#IMAGE,"+Str(ImageWidth(0))+","+Str(ImageHeight(0))+")")
WriteStringN(0,"StartDrawing(ImageOutput(#IMAGE))")
ForEach dot()
WriteStringN(0," Box("+Str(dot()\x)+","+Str(dot()\y)+",1,1,RGB("+Str(Red(dot()\color))+","+Str(Green(dot()\color))+","+Str(Blue(dot()\color))+"))")
Next
WriteStringN(0,"StopDrawing()")
MessageRequester("DONE!","DONE!")
Else : Error("Could not create "+fileToSave)
EndIf
Else : Error("Could not load "+fileToConvert+" as image.")
EndIf
EndIf