from direct.gui.DirectGui import DirectFrame, DirectButton, DirectLabel
from direct.gui.DirectGui import DirectScrolledList, DirectCheckButton
from direct.gui.DirectCheckBox import DirectCheckBox
from direct.gui import DirectGuiGlobals
from toontown.friends.FriendsListPanel import determineFriendName
from toontown.toonbase import ToontownGlobals
from pandac.PandaModules import Vec3, Vec4, PlaneNode, Plane, Point3, TextNode, VBase4, NodePath

class ScrolledFriendList(DirectScrolledList):

    def __init__(self, parent, gui, clickCallback = None, makeItemsCheckBoxes = False):
        self.makeItemsCheckBoxes = makeItemsCheckBoxes
        self.clickCallback = clickCallback
        self.parent = parent
        self.gui = gui
        self.scrollSpeed = 1
        DirectScrolledList.__init__(self, parent=parent, relief=None, incButton_image=(self.gui.find('**/inviteButtonDown_up'), self.gui.find('**/inviteButtonDown_down'), self.gui.find('**/inviteButtonDown_rollover')), incButton_relief=None, incButton_pos=(0.0, 0.0, -0.03), incButton_image3_color=Vec4(0.6, 0.6, 0.6, 0.6), decButton_image=(self.gui.find('**/inviteButtonUp_up'), self.gui.find('**/inviteButtonUp_down'), self.gui.find('**/inviteButtonUp_rollover')), decButton_relief=None, decButton_pos=(0.0, 0.0, 0.02), decButton_image3_color=Vec4(0.6, 0.6, 0.6, 0.6), itemFrame_relief=None, forceHeight=0.084, numItemsVisible=8, items=[], incButtonCallback=self.scrollButtonPressed, decButtonCallback=self.scrollButtonPressed, itemFrame_pos=(0.0, 0.0, -0.01))
        self.incButtonCallback = None
        self.decButtonCallback = None
        self.setForceHeight()
        return

    def scrollButtonPressed(self):
        pass

    def addFriend(self, id):
        name = determineFriendName(id)

        if self.makeItemsCheckBoxes:
            checkedImage = self.gui.find('**/inviteButtonChecked')
            uncheckedImage = self.gui.find('**/inviteButtonUnchecked')
            widget = DirectCheckButton(relief=None, scale=0.1, boxBorder=0.08, boxImage=(uncheckedImage, checkedImage, None), boxImageScale=10.0, boxRelief=None, text=name, text_align=TextNode.ALeft, text_scale=0.7, text_pos=(-3.7, -0.25), command=self.clickCallback, indicator_pos=(-4.8, 0.0, 0.0))
            widget['extraArgs'] = [widget]
        else:
            widget = DirectLabel(relief=None, text=name, text_align=TextNode.ALeft, text_pos=(-0.6, 0.0, 0.0), scale=0.055)
        widget.setPythonTag('id', id)
        self.addItem(widget)
        return
