Skip to content

Commit

Permalink
reworking lots more classes/panels - #34
Browse files Browse the repository at this point in the history
git-svn-id: https://pyjamas.svn.sourceforge.net/svnroot/pyjamas/trunk@852 7a2bd370-bda8-463c-979e-2900ccfb811e
  • Loading branch information
lkcl committed Jul 10, 2009
1 parent 2d352d0 commit 1ed2c49
Show file tree
Hide file tree
Showing 25 changed files with 98 additions and 110 deletions.
18 changes: 7 additions & 11 deletions examples/kitchensink/Layouts.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,10 @@ def __init__(self):
to see the nifty scroll bars!"""

contents = HTML(text)
scroller = ScrollPanel(contents)
scroller.setStyleName("ks-layouts-Scroller")
scroller = ScrollPanel(contents, StyleName="ks-layouts-Scroller")

dock = DockPanel()
dock.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
dock = DockPanel(HorizontalAlignment=HasAlignment.ALIGN_CENTER,
Spacing=10)
north0 = HTML("This is the <i>first</i> north component", True)
east = HTML("<center>This<br>is<br>the<br>east<br>component</center>", True)
south = HTML("This is the south component")
Expand All @@ -53,14 +52,12 @@ def __init__(self):
for i in range(8):
flow.add(CheckBox("Flow %d" % i))

horz = HorizontalPanel()
horz.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE)
horz = HorizontalPanel(VerticalAlignment=HasAlignment.ALIGN_MIDDLE)
horz.add(Button("Button"))
horz.add(HTML("<center>This is a<br>very<br>tall thing</center>", True))
horz.add(Button("Button"))

vert = VerticalPanel()
vert.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
vert = VerticalPanel(HorizontalAlignment=HasAlignment.ALIGN_CENTER)
vert.add(Button("Small"))
vert.add(Button("--- BigBigBigBig ---"))
vert.add(Button("tiny"))
Expand Down Expand Up @@ -91,9 +88,8 @@ def __init__(self):
disclose.add(HTML("""<b>Ta-daaaaa!</b><br />Ok - it could have
been<br />more of a surprise."""))

panel = VerticalPanel()
panel.setSpacing(8)
panel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER)
panel = VerticalPanel(Spacing=8,
HorizontalAlignment=HasAlignment.ALIGN_CENTER)

panel.add(self.makeLabel("Dock Panel"))
panel.add(dock)
Expand Down
15 changes: 5 additions & 10 deletions examples/kitchensink/Lists.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,11 @@ def __init__(self):
["foo3", "bar3", "baz3", "toto3", "tintin3"],
["foo4", "bar4", "baz4", "toto4", "tintin4"]]

self.combo=ListBox()
self.list=ListBox()
self.combo=ListBox(VisibleItemCount=1)
self.list=ListBox(MultipleSelect=True, VisibleItemCount=10)
self.echo=Label()

self.combo.setVisibleItemCount(1)
self.combo.addChangeListener(self)
self.list.setVisibleItemCount(10)
self.list.setMultipleSelect(True)

for i in range(len(self.sStrings)):
self.combo.addItem("List %d" % i)
Expand All @@ -32,14 +29,12 @@ def __init__(self):

self.list.addChangeListener(self)

horz = HorizontalPanel()
horz.setVerticalAlignment(HasAlignment.ALIGN_TOP)
horz.setSpacing(8)
horz = HorizontalPanel(VerticalAlignment=HasAlignment.ALIGN_TOP,
Spacing=8)
horz.add(self.combo)
horz.add(self.list)

panel = VerticalPanel()
panel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT)
panel = VerticalPanel(HorizontalAlignment=HasAlignment.ALIGN_LEFT)
panel.add(horz)
panel.add(self.echo)
self.initWidget(panel)
Expand Down
10 changes: 2 additions & 8 deletions examples/kitchensink/Tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
class Tables(Sink):
def __init__(self):
Sink.__init__(self)
inner = Grid(10, 5)
outer = FlexTable()
inner = Grid(10, 5, Width="100%", BorderWidth="1")
outer = FlexTable(Width="100%", BorderWidth="1")

outer.setWidget(0, 0, Image(self.baseURL() + "rembrandt/LaMarcheNocturne.jpg"))
outer.getFlexCellFormatter().setColSpan(0, 0, 2)
Expand All @@ -22,12 +22,6 @@ def __init__(self):
for j in range(5):
inner.setText(i, j, "%d" % i + ",%d" % j)

inner.setWidth("100%")
outer.setWidth("100%")

inner.setBorderWidth("1")
outer.setBorderWidth("1")

self.initWidget(outer)

def onShow(self):
Expand Down
5 changes: 3 additions & 2 deletions library/pyjamas/ui/AbsolutePanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@

class AbsolutePanel(ComplexPanel):

def __init__(self):
ComplexPanel.__init__(self)
def __init__(self, **kwargs):
self.setElement(DOM.createDiv())
DOM.setStyleAttribute(self.getElement(), "position", "relative")
DOM.setStyleAttribute(self.getElement(), "overflow", "hidden")
ComplexPanel.__init__(self, **kwargs)

def add(self, widget, left=None, top=None):
ComplexPanel.add(self, widget, self.getElement())
Expand Down Expand Up @@ -53,6 +53,7 @@ def getWidgetTop(self, widget):

def checkWidgetParent(self, widget):
if widget.getParent() != self:
# TODO: raise as exception instead
console.error("Widget must be a child of this panel.")


8 changes: 4 additions & 4 deletions library/pyjamas/ui/CellPanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@

class CellPanel(ComplexPanel):

def __init__(self):
ComplexPanel.__init__(self)

def __init__(self, **kwargs):
self.table = DOM.createTable()
self.setElement(self.table)
self.body = DOM.createTBody()
self.spacing = None
self.padding = None
DOM.appendChild(self.table, self.body)
self.setElement(self.table)

ComplexPanel.__init__(self, **kwargs)

def getTable(self):
return self.table
Expand Down
5 changes: 2 additions & 3 deletions library/pyjamas/ui/ComplexPanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@ class ComplexPanel(Panel):
"""
Superclass for widgets with multiple children.
"""
def __init__(self):
Panel.__init__(self)
self.children = []
def __init__(self, **kwargs):
Panel.__init__(self, **kwargs)

def add(self, widget, container):
self.insert(widget, container, len(self.children))
Expand Down
4 changes: 2 additions & 2 deletions library/pyjamas/ui/Composite.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
from pyjamas.ui.Widget import Widget

class Composite(Widget):
def __init__(self):
Widget.__init__(self)
def __init__(self, **kwargs):
self.widget = None
Widget.__init__(self, **kwargs)

def initWidget(self, widget):
if self.widget is not None:
Expand Down
4 changes: 2 additions & 2 deletions library/pyjamas/ui/DeckPanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
from pyjamas.ui.ComplexPanel import ComplexPanel

class DeckPanel(ComplexPanel):
def __init__(self):
ComplexPanel.__init__(self)
def __init__(self, **kwargs):
self.visibleWidget = None
self.setElement(DOM.createDiv())
ComplexPanel.__init__(self, **kwargs)

def add(self, widget):
self.insert(widget, self.getWidgetCount())
Expand Down
8 changes: 2 additions & 6 deletions library/pyjamas/ui/DialogBox.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,9 @@ def __init__(self, autoHide=None, modal=True):
self.dragging = False
self.dragStartX = 0
self.dragStartY = 0
self.panel = FlexTable()

self.panel = FlexTable(Height="100%", BorderWidth="0",
CellPadding="0", CellSpacing="0")
self.panel.setWidget(0, 0, self.caption)
self.panel.setHeight("100%")
self.panel.setBorderWidth("0")
self.panel.setCellPadding("0")
self.panel.setCellSpacing("0")
self.panel.getCellFormatter().setHeight(1, 0, "100%")
self.panel.getCellFormatter().setWidth(1, 0, "100%")
self.panel.getCellFormatter().setAlignment(1, 0, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_MIDDLE)
Expand Down
9 changes: 5 additions & 4 deletions library/pyjamas/ui/DockPanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,17 @@ class DockPanel(CellPanel):
SOUTH = "south"
WEST = "west"

def __init__(self):
CellPanel.__init__(self)
def __init__(self, **kwargs):

if not kwargs.has_key('Spacing'): kwargs['Spacing'] = 0
if not kwargs.has_key('Padding'): kwargs['Padding'] = 0

self.horzAlign = HasHorizontalAlignment.ALIGN_LEFT
self.vertAlign = HasVerticalAlignment.ALIGN_TOP
self.center = None
self.dock_children = [] # TODO: can self.children be used instead?

DOM.setAttribute(self.getTable(), "cellSpacing", "0")
DOM.setAttribute(self.getTable(), "cellPadding", "0")
CellPanel.__init__(self, **kwargs)

def add(self, widget, direction):
if direction == self.CENTER:
Expand Down
8 changes: 4 additions & 4 deletions library/pyjamas/ui/FlexTable.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
from pyjamas.ui.FlexCellFormatter import FlexCellFormatter

class FlexTable(HTMLTable):
def __init__(self):
HTMLTable.__init__(self)
self.cellFormatter = FlexCellFormatter(self)
self.rowFormatter = RowFormatter(self)
def __init__(self, **kwargs):
if not kwargs.has_key('CellFormatter'):
kwargs['CellFormatter'] = FlexCellFormatter(self)
HTMLTable.__init__(self, **kwargs)

def addCell(self, row):
self.insertCell(row, self.getCellCount(row))
Expand Down
6 changes: 2 additions & 4 deletions library/pyjamas/ui/Grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,10 @@

class Grid(HTMLTable):

def __init__(self, rows=0, columns=0):
HTMLTable.__init__(self)
self.cellFormatter = CellFormatter(self)
self.rowFormatter = RowFormatter(self)
def __init__(self, rows=0, columns=0, **kwargs):
self.numColumns = 0
self.numRows = 0
HTMLTable.__init__(self, **kwargs)
if rows > 0 or columns > 0:
self.resize(rows, columns)

Expand Down
13 changes: 9 additions & 4 deletions library/pyjamas/ui/HTMLTable.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,24 @@

class HTMLTable(Panel):

def __init__(self):
Panel.__init__(self)
self.cellFormatter = CellFormatter(self)
self.rowFormatter = RowFormatter(self)
def __init__(self, **kwargs):
if not kwargs.has_key('CellFormatter'):
kwargs['CellFormatter'] = CellFormatter(self)
if not kwargs.has_key('RowFormatter'):
kwargs['RowFormatter'] = RowFormatter(self)

self.tableListeners = []
self.widgetMap = {}

self.tableElem = DOM.createTable()
self.bodyElem = DOM.createTBody()
DOM.appendChild(self.tableElem, self.bodyElem)
self.setElement(self.tableElem)

self.sinkEvents(Event.ONCLICK)

Panel.__init__(self, **kwargs)

def addTableListener(self, listener):
self.tableListeners.append(listener)

Expand Down
11 changes: 6 additions & 5 deletions library/pyjamas/ui/HorizontalPanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,19 @@

class HorizontalPanel(CellPanel):

def __init__(self):
CellPanel.__init__(self)
def __init__(self, **kwargs):

if not kwargs.has_key('Spacing'): kwargs['Spacing'] = 0
if not kwargs.has_key('Padding'): kwargs['Padding'] = 0

self.horzAlign = HasHorizontalAlignment.ALIGN_LEFT
self.vertAlign = HasVerticalAlignment.ALIGN_TOP

CellPanel.__init__(self, **kwargs)

self.tableRow = DOM.createTR()
DOM.appendChild(self.getBody(), self.tableRow)

DOM.setAttribute(self.getTable(), "cellSpacing", "0")
DOM.setAttribute(self.getTable(), "cellPadding", "0")

def add(self, widget):
self.insert(widget, self.getWidgetCount())

Expand Down
14 changes: 7 additions & 7 deletions library/pyjamas/ui/Image.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@
prefetchImages = {}

class Image(Widget):
def __init__(self, url=""):
Widget.__init__(self)
def __init__(self, url="", **kwargs):
if not kwargs.has_key('StyleName'): kwargs['StyleName']="gwt-Image"
if url: kwargs['Url'] = url

self.setElement(DOM.createImg())

self.clickListeners = []
self.loadListeners = []
self.mouseListeners = []

self.setElement(DOM.createImg())
self.sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS | Event.ONLOAD | Event.ONERROR)
self.setStyleName("gwt-Image")

if url:
self.setUrl(url)
Widget.__init__(self, **kwargs)

def addClickListener(self, listener):
self.clickListeners.append(listener)
Expand Down
6 changes: 3 additions & 3 deletions library/pyjamas/ui/ListBox.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
from pyjamas.ui import Event

class ListBox(FocusWidget):
def __init__(self):
def __init__(self, **kwargs):
if not kwargs.has_key('StyleName'): kwargs['StyleName']="gwt-ListBox"
self.changeListeners = []
self.INSERT_AT_END = -1
FocusWidget.__init__(self, DOM.createSelect())
FocusWidget.__init__(self, DOM.createSelect(), **kwargs)
self.sinkEvents(Event.ONCHANGE)
self.setStyleName("gwt-ListBox")

def addChangeListener(self, listener):
self.changeListeners.append(listener)
Expand Down
4 changes: 2 additions & 2 deletions library/pyjamas/ui/Panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
from pyjamas.ui.Widget import Widget

class Panel(Widget):
def __init__(self):
Widget.__init__(self)
def __init__(self, **kwargs):
self.children = []
Widget.__init__(self, **kwargs)

def add(self):
console.error("This panel does not support no-arg add()")
Expand Down
7 changes: 4 additions & 3 deletions library/pyjamas/ui/PasswordTextBox.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
from pyjamas.ui.TextBoxBase import TextBoxBase

class PasswordTextBox(TextBoxBase):
def __init__(self):
TextBoxBase.__init__(self, DOM.createInputPassword())
self.setStyleName("gwt-PasswordTextBox")
def __init__(self, **kwargs):
if not kwargs.has_key('StyleName'):
kwargs['StyleName']="gwt-PasswordTextBox"
TextBoxBase.__init__(self, DOM.createInputPassword(), **kwargs)


11 changes: 5 additions & 6 deletions library/pyjamas/ui/RadioButton.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,13 @@
from pyjamas.ui.CheckBox import CheckBox

class RadioButton(CheckBox):
def __init__(self, group, label=None, asHTML=False):
self.initElement(DOM.createInputRadio(group))

self.setStyleName("gwt-RadioButton")
def __init__(self, group, label=None, asHTML=False, **kwargs):
if not kwargs.has_key('StyleName'):kwargs['StyleName']="gwt-RadioButton"
if label:
if asHTML:
self.setHTML(label)
kwargs['HTML'] = label
else:
self.setText(label)
kwargs['Text'] = label

self.initElement(DOM.createInputRadio(group), **kwargs)

Loading

0 comments on commit 1ed2c49

Please sign in to comment.