# -*- coding: utf-8 -*- from . import core as html5 @html5.tag class Label(html5.Label): _parserTagName = "ignite-label" def __init__(self, *args, **kwargs): super(Label, self).__init__(style="label ignt-label", *args, **kwargs) @html5.tag class Input(html5.Input): _parserTagName = "ignite-input" def __init__(self, *args, **kwargs): super(Input, self).__init__(style="input ignt-input", *args, **kwargs) @html5.tag class Switch(html5.Div): _parserTagName = "ignite-switch" def __init__(self, *args, **kwargs): super(Switch, self).__init__(style="switch ignt-switch", *args, **kwargs) self.input = html5.Input(style="switch-input") self.appendChild(self.input) self.input["type"] = "checkbox" switchLabel = html5.Label(forElem=self.input) switchLabel.addClass("switch-label") self.appendChild(switchLabel) def _setChecked(self, value): self.input["checked"] = bool(value) def _getChecked(self): return self.input["checked"] @html5.tag class Check(html5.Input): _parserTagName = "ignite-check" def __init__(self, *args, **kwargs): super(Check, self).__init__(style="check ignt-check", *args, **kwargs) checkInput = html5.Input() checkInput.addClass("check-input") checkInput["type"] = "checkbox" self.appendChild(checkInput) checkLabel = html5.Label(forElem=checkInput) checkLabel.addClass("check-label") self.appendChild(checkLabel) @html5.tag class Radio(html5.Div): _parserTagName = "ignite-radio" def __init__(self, *args, **kwargs): super(Radio, self).__init__(style="radio ignt-radio", *args, **kwargs) radioInput = html5.Input() radioInput.addClass("radio-input") radioInput["type"] = "radio" self.appendChild(radioInput) radioLabel = html5.Label(forElem=radioInput) radioLabel.addClass("radio-label") self.appendChild(radioLabel) @html5.tag class Select(html5.Select): _parserTagName = "ignite-select" def __init__(self, *args, **kwargs): super(Select, self).__init__(style="select ignt-select", *args, **kwargs) defaultOpt = html5.Option() defaultOpt["selected"] = True defaultOpt["disabled"] = True defaultOpt.element.innerHTML = "" self.appendChild(defaultOpt) @html5.tag class Textarea(html5.Textarea): _parserTagName = "ignite-textarea" def __init__(self, *args, **kwargs): super(Textarea, self).__init__(style="textarea ignt-textarea", *args, **kwargs) @html5.tag class Progress(html5.Progress): _parserTagName = "ignite-progress" def __init__(self, *args, **kwargs): super(Progress, self).__init__(style="progress ignt-progress", *args, **kwargs) @html5.tag class Item(html5.Div): _parserTagName = "ignite-item" def __init__(self, title=None, descr=None, className=None, *args, **kwargs): super(Item, self).__init__(style="item ignt-item", *args, **kwargs) if className: self.addClass(className) self.fromHTML("""
""") if title: self.itemHeadline.appendChild(html5.TextNode(title)) if descr: self.itemSubline = html5.Div() self.addClass("item-subline ignt-item-subline") self.itemSubline.appendChild(html5.TextNode(descr)) self.appendChild(self.itemSubline) @html5.tag class Table(html5.Table): _parserTagName = "ignite-table" def __init__(self, *args, **kwargs): super(Table, self).__init__(*args, **kwargs) self.head.addClass("ignt-table-head") self.body.addClass("ignt-table-body") def prepareRow(self, row): assert row >= 0, "Cannot create rows with negative index" for child in self.body._children: row -= child["rowspan"] if row < 0: return while row >= 0: tableRow = html5.Tr() tableRow.addClass("ignt-table-body-row") self.body.appendChild(tableRow) row -= 1 def prepareCol(self, row, col): assert col >= 0, "Cannot create cols with negative index" self.prepareRow(row) for rowChild in self.body._children: row -= rowChild["rowspan"] if row < 0: for colChild in rowChild._children: col -= colChild["colspan"] if col < 0: return while col >= 0: tableCell = html5.Td() tableCell.addClass("ignt-table-body-cell") rowChild.appendChild(tableCell) col -= 1 return def fastGrid( self, rows, cols, createHidden=False ): colsstr = "".join(['' for i in range(0, cols)]) tblstr = '' for r in range(0, rows): tblstr += '%s' %("is-hidden" if createHidden else "",colsstr) tblstr +="" self.fromHTML(tblstr)