Esempio n. 1
0
    def layoutWidgets(self):
        gx, gy = self.theme.getGridParams()
        r = self.rect
        self.bar.rect = pygame.Rect(r.width - gx, 0, gx, r.height)

        self.labels = []
        rows = r.height / gy
        startRow = 0
        bIndex = 0
        lIndex = 0
        eIndex = 0
        if self.columnLabels:
            rowLabels = []
            y = 0
            x = 0
            remains = (r.width - gx) / gx
            for title, name, width, flags in self.columns:
                if len(self._buttons) <= bIndex:
                    label = Button(self, action='onSortByColumn')
                    label.subscribeAction('*', self)
                    self._buttons.append(label)
                label = self._buttons[bIndex]
                bIndex += 1
                label.set(text=title,
                          align=flags & Const.ALIGN_MASK,
                          data=name,
                          visible=1)
                if width == 0 or width > remains: width = remains
                label.rect = pygame.Rect(x, y, width * gx, gy)
                x += width * gx
                remains -= width
            startRow = 1
        for row in xrange(startRow, rows):
            rowLabels = []
            y = row * gy
            x = 0
            remains = (r.width - gx) / gx
            for title, name, width, flags in self.columns:
                if flags & Const.F_EDITABLE:
                    if len(self._entries) <= eIndex:
                        label = Entry(self,
                                      align=Const.ALIGN_E,
                                      action='onNewValue')
                        label.subscribeAction('*', self)
                        self._entries.append(label)
                    label = self._entries[eIndex]
                    eIndex += 1
                    label._listboxColumn = name
                    label.visible = 1
                    label.redraw()
                else:
                    if len(self._labels) <= lIndex:
                        label = Button(self,
                                       action='onItemSelect',
                                       rmbAction="onRmbItemSelect",
                                       hoverAction="onItemHighlight",
                                       style="listitem",
                                       toggle=1)
                        label.subscribeAction('*', self)
                        self._labels.append(label)
                    label = self._labels[lIndex]
                    lIndex += 1
                    label.set(align=flags & Const.ALIGN_MASK, visible=1)
                    label.redraw()
                if width == 0 or width > remains: width = remains
                label.rect = pygame.Rect(x, y, width * gx, gy)
                x += width * gx
                remains -= width
                rowLabels.append(label)
            self.labels.append(rowLabels)
        while lIndex < len(self._labels):
            self._labels[lIndex].visible = 0
            lIndex += 1
        while bIndex < len(self._buttons):
            self._buttons[bIndex].visible = 0
            bIndex += 1
        while eIndex < len(self._entries):
            self._entries[eIndex].visible = 0
            eIndex += 1

        self.bar.slider.position = 0
        self.bar.slider.min = 0
        if self.columnLabels:
            self.bar.slider.shown = rows - 1
        else:
            self.bar.slider.shown = rows

        self.itemsChanged()
Esempio n. 2
0
	def layoutWidgets(self):
		gx, gy = self.theme.getGridParams()
		r = self.rect
		self.bar.rect = Rect(r.width - gx, 0, gx, r.height)

		self.labels = []
		rows = r.height / gy
		startRow = 0
		bIndex = 0
		lIndex = 0
		eIndex = 0
		if self.columnLabels:
			rowLabels = []
			y = 0
			x = 0
			remains = (r.width - gx) / gx
			for title, name, width, flags in self.columns:
				if len(self._buttons) <= bIndex:
					label = Button(self, action = 'onSortByColumn')
					label.subscribeAction('*', self)
					self._buttons.append(label)
				label = self._buttons[bIndex]
				bIndex += 1
				label.set(text = title, align = flags & ALIGN_MASK,
					data = name, visible = 1)
				if width == 0 or width > remains: width = remains
				label.rect = Rect(x, y, width * gx, gy)
				x += width * gx
				remains -= width
			startRow = 1
		for row in xrange(startRow, rows):
			rowLabels = []
			y = row * gy
			x = 0
			remains = (r.width - gx) / gx
			for title, name, width, flags in self.columns:
				if flags & F_EDITABLE:
					if len(self._entries) <= eIndex:
						label = Entry(self, align = ALIGN_E, action = 'onNewValue')
						label.subscribeAction('*', self)
						self._entries.append(label)
					label = self._entries[eIndex]
					eIndex += 1
					label._listboxColumn = name
					label.visible = 1
					label.redraw()
				else:
					if len(self._labels) <= lIndex:
						label = Button(self, action = 'onItemSelect', rmbAction = "onRmbItemSelect", style = "listitem", toggle = 1)
						label.subscribeAction('*', self)
						self._labels.append(label)
					label = self._labels[lIndex]
					lIndex += 1
					label.set(align = flags & ALIGN_MASK, visible = 1)
					label.redraw()
				if width == 0 or width > remains: width = remains
				label.rect = Rect(x, y, width * gx, gy)
				x += width * gx
				remains -= width
				rowLabels.append(label)
			self.labels.append(rowLabels)
		while lIndex < len(self._labels):
			self._labels[lIndex].visible = 0
			lIndex += 1
		while bIndex < len(self._buttons):
			self._buttons[bIndex].visible = 0
			bIndex += 1
		while eIndex < len(self._entries):
			self._entries[eIndex].visible = 0
			eIndex += 1

		self.bar.slider.position = 0
		self.bar.slider.min = 0
		if self.columnLabels:
			self.bar.slider.shown = rows - 1
		else:
			self.bar.slider.shown = rows

		self.itemsChanged()