class StockSourceDisplayPanel:
    def __init__(self,parent,world):
        self.parent = parent
        self.world = world
        self.scrollable_display = 0
        self.button_display = 0
        self.button_list = []
        self.initUI()

    def initUI(self):
        self.scrollable_display = QScrollArea(self.parent)
        self.button_display = QFrame(self.scrollable_display)
        self.scrollable_display.setWidget(self.button_display)
        self.populate_button_list()
        self.scrollable_display.show()
        self.button_display.show()

    def populate_button_list(self):
        stock_list = self.world.get_stock_source_list()
        vbox = QVBoxLayout()
        button_list = []

        i = 0

        for entry in stock_list:
            entry_button = QPushButton(entry.get_name())
            button_list.append(entry_button)
            vbox.addWidget(entry_button)
            entry_button.clicked.connect(functools.partial(self.parent.stockUI,i,stock_target=entry.get_stock()))
            i += 1

        vbox.addStretch(1)
        self.button_display.setLayout(vbox)
        self.resize()

    def destroy(self):
        self.scrollable_display.hide()
        self.button_display.hide()
        self.parent.resize(self.parent.size())
        self.button_display.destroy(False, False)
        self.scrollable_display.destroy(False, False)

    def resize(self):
        self.scrollable_display.resize(self.parent.size())
        frameWidth = self.scrollable_display.lineWidth()
        self.button_display.resize(self.scrollable_display.size().width()-(frameWidth*2),self.scrollable_display.size().height()-(frameWidth*2))