Exemplo n.º 1
0
    def __init__(self):
        super().__init__('Construct New Building')

        self.formset = []
        self.set_margin(10)
        lot = BuyBuilding.lot
        building_list = Map.getList()

        # Create list of functions to buy the buildings
        i = 0
        bboxes = []
        leftside = []

        self._buttons = [None] * 7
        self.buyfuncs = [None] * 7

        def get_buy_func(building):
            def buy():
                if global_vars.university.buy(building.constructionCost):
                    global_vars.map.construct_building(lot.pos, building)
                KeyStroker.AltF4()

            return buy

        for building in building_list:

            self.buyfuncs[i] = None
            #b1box = ControlToolBox()
            #b1box.value = []
            b1box = []
            b1box.append(building.name)
            effects = wrap_text(building.effects, 60)
            for eff in effects:
                b1box.append(eff)
            b1box.append('Price: $' + str(building.constructionCost))
            b1box.append('Build Time: ' + str(building.constructionTime) +
                         ' months')
            buy_button = ControlButton("Begin Construction")
            buy_button.value = get_buy_func(building)
            self._buttons[i] = buy_button

            b1box.append('_button' + str(i + 1))
            bboxes.append(b1box)

            if i % 2 == 0:
                leftside = bboxes[i]
            else:
                self.formset.append((leftside, ' ', bboxes[i]))
            i += 1

        if i % 2 == 1:
            self.formset.append((' ', leftside, ' '))

        self._button1 = self._buttons[0]
        self._button2 = self._buttons[1]
        self._button3 = self._buttons[2]
        self._button4 = self._buttons[3]
        self._button5 = self._buttons[4]
        self._button6 = self._buttons[5]
        self._button7 = self._buttons[6]
Exemplo n.º 2
0
    def __init__(self):
        super().__init__('Upgrade Building')

        self.formset = []
        prog_map = global_vars.programs
        building = UpgradeBuilding.building

        progs = prog_map[building.name]

        def buy1():
            progs[0].trigger()
            KeyStroker.AltF4()

        def buy2():
            progs[1].trigger()
            KeyStroker.AltF4()

        def buy3():
            progs[2].trigger()
            KeyStroker.AltF4()

        def buy4():
            progs[3].trigger()
            KeyStroker.AltF4()

        buycmd = [buy1, buy2, buy3, buy4]
        buttons = [None, None, None, None]

        b = ControlButton("test")
        print(b)

        def get_buy_func(index):
            return buycmd[index]

        p = 0
        self.formset.append('Pick a program to implement in the ' +
                            str(building.name))
        for prog in progs:
            self.formset.append(prog.title)
            self.formset.append(prog.desc)

            if prog.unlocked:
                button = ControlButton("Implement this program")
                button.value = get_buy_func(p)
                buttons[p] = button
                self.formset.append('_button' + str(p + 1))
            else:
                self.formset.append("Program already implemented")
            p += 1

        self._button1 = buttons[0]
        self._button2 = buttons[1]
        self._button3 = buttons[2]
        self._button4 = buttons[3]
Exemplo n.º 3
0
    def _set_desired_button(self, button_txt: str, button_action: callable,
                            trgt_attr_name: str):
        """
        Setts desired button using provided button spec
        Parameters
        ----------
        button_txt: str
            text to be displayed over button
        button_action: callable
            action to execute when button is clicked
        trgt_attr_name: str
            the target attribute name of view

        Returns
        -------

        """
        # trgt_object = ConfigParamCreatorCtrl.ctrld_cfg_f_creator
        trgt_object = self.ctrld_cfg_param_creator
        curr_butt = ControlButton()
        curr_butt.label = button_txt
        curr_butt.value = button_action
        setattr(trgt_object, trgt_attr_name, curr_butt)
Exemplo n.º 4
0
class CsvParserDialog(BaseWidget):

    def __init__(self, parent=None):
        super(CsvParserDialog, self).__init__('CSV Choose the columns', parent_win = parent)
        self._filename = None

        # Definition of the forms fields
        self._filename = ControlFile('CSV File')
        self._separator = ControlText('Separator', default=';')
        self._startingrow = ControlNumber('Starting row', default=0)
        self._frameCol = ControlNumber('Frame column', default=0, minumum=0, maximum=100)
        self._xCol = ControlNumber('X column', default=1, minumum=0, maximum=100)
        self._yCol = ControlNumber('Y column', default=2, minumum=0, maximum=100)
        self._zCol = ControlNumber('Z column', default=3, minumum=0, maximum=100)
        self._filePreview = ControlList('Preview')
        self._loadButton = ControlButton('Load')

        self._formset = [('_filename','_startingrow'), ('_separator', '_frameCol', '_xCol', '_yCol', '_zCol', '_loadButton'), '_filePreview']
        self._separator.changed_event = self.__refreshPreview
        self._filename.changed_event  = self.__refreshPreview
        self._startingrow.changed_event = self.__refreshPreview

        #self._filename.value = '/home/ricardo/Downloads/2012.12.01_13.48_3D_POSITIONS_version_03.06.2015.csv'

    @property
    def filename(self): return self._filename.value

    @filename.setter
    def filename(self, value):
        self._filename.value = value
        self.__refreshPreview()

    @property
    def load_file_event(self): return self._loadButton.value

    @load_file_event.setter
    def load_file_event(self, value): self._loadButton.value = value

    @property
    def separator(self): return self._separator.value

    @property
    def starting_row(self): return self._startingrow.value
    @starting_row.setter
    def starting_row(self, value): self._startingrow.value = value

    @property
    def frameColumn(self): return self._frameCol.value
    @frameColumn.setter
    def frameColumn(self, value): self._frameCol.value = value

    @property
    def xColumn(self): return self._xCol.value
    @xColumn.setter
    def xColumn(self, value): self._xCol.value = value

    @property
    def yColumn(self): return self._yCol.value
    @yColumn.setter
    def yColumn(self, value): self._yCol.value = value

    @property
    def zColumn(self): return self._zCol.value
    @zColumn.setter
    def zColumn(self, value): self._zCol.value = value

    @property
    def loadButton(self): return self._loadButton

    @property
    def xField(self): return self._xCol

    @property
    def yField(self): return self._yCol

    @property
    def zField(self): return self._zCol

    def __iter__(self):
        if self._filename.value != None and self._filename.value != '':

            csvfile = open(self._filename.value, 'U')
            self._spamreader = csv.reader(csvfile, delimiter=self._separator.value)
            for i in range(int(self._startingrow.value)): next(self._spamreader, None)  # skip the headers
            self._cols = [self.frameColumn]
            if self.xField.visible:
                self._cols.append(self.xColumn)
            if self.yField.visible:
                self._cols.append(self.yColumn)
            if self.zField.visible:
                self._cols.append(self.zColumn)
        else:
            self._spamreader = None
        return self

    # For compatibility with python 3
    def __next__(self): return self.next()

    def next(self):
        if self._spamreader != None:
            row = next(self._spamreader)
            return [row[int(col)] for col in self._cols]
        else:
            raise StopIteration()

    def __refreshPreview(self):
        if self._filename.value != None and self._filename.value != '':
            with open(self._filename.value, 'U') as csvfile:
                spamreader = csv.reader(csvfile, delimiter=self._separator.value)
                for i in range(int(self._startingrow.value)): next(spamreader, None)  # skip the headers
                self._filePreview.value = []
                self._filePreview.horizontalHeaders = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", ]
                for i, row in enumerate(spamreader):
                    self._filePreview += row
                    if i >= 10:
                        break

    def load(self): 
        self.__refreshPreview()
        self._loadButton.value()