def buildSortedBinList(passedDictToBeSorted,passedTotalArea, passedMaxNumberOfWords, passedIsAllWords, passedAddToSize):
	sortedList = sorted(passedDictToBeSorted.items(), key=itemgetter(1), reverse=True)

	for keyWord, numberOfTimes in sortedList:	
   		#print "word:" + keyWord + " number:" + str(numberOfTimes) + " " + ('.' * numberOfTimes)


		#handle the bin packing algorithm
		#
		sortedBlockList = []
		totalArea = passedTotalArea

		#the number of words we are interested in seeing
		#
		numberOfWords = passedMaxNumberOfWords
		wordsCounted = 0
		isAllWords = passedIsAllWords

		#area additive for size
		#
		addToSize = passedAddToSize

		#build sorted list
		#
		for keyWord, numberOfTimes in sortedList:
	
			if(passedIsAllWords):
				blockObj = blockObject.blockObject(numberOfTimes+addToSize, numberOfTimes+addToSize)
				blockObj.word = keyWord
				#blockObj.story = passedWordSource;
				sortedBlockList.append(blockObj)
			else:
				if(wordsCounted <= numberOfWords):
					wordsCounted += 1
					#print "words counted"
					#print wordsCounted
			
					blockObj = blockObject.blockObject(numberOfTimes+addToSize, numberOfTimes+addToSize)
					blockObj.word = keyWord
					#blockObj.story = passedWordSource;
					sortedBlockList.append(blockObj)
					
	return sortedBlockList	
#!/usr/bin/python
import binPacker
import binPackerObject
import blockObject
from Tkinter import *
from random import randint

#this is the test script for the binPacker and block object
#

block1 = blockObject.blockObject(20, 20)
block2 = blockObject.blockObject(20, 20)
block3 = blockObject.blockObject(20, 20)
block4 = blockObject.blockObject(20, 20)

print '======================================================='
print 'block object test'

print block1.width
print block1.height

print '======================================================='

print '======================================================='
print 'binPacker object test'
binPackObj1 = binPackerObject.binPackerObject(1, 5, 200, 300)
binPackObj2 = binPackerObject.binPackerObject(2, 5, 200, 300)
binPackObj3 = binPackerObject.binPackerObject(3, 5, 200, 300)

binPackObj1.left = binPackObj2
binPackObj1.down = binPackObj3