Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
110 lines (85 sloc) 3.23 KB
from Popups import DialogBoxModal
from pyjamas.ui.AbsolutePanel import AbsolutePanel
from pyjamas import Window
from pyjamas import logging
log = logging.getAppendLogger(__name__, logging.DEBUG, logging.PLAIN_FORMAT)
class Application(DialogBoxModal):
def __init__(self, screen, title, width, height):
DialogBoxModal.__init__(self, title, None, False, screen)
self.screen = screen
self.setText(title)
self.dragged = False
#self.setWidth(width)
#self.setHeight(height)
def onMouseDown(self, sender, x, y):
#log.debug("down %d %d" % (x, y))
DialogBoxModal.onMouseDown(self, sender, x, y)
self.dragged = False
def onMouseMove(self, sender, x, y):
#log.debug("move %d %d" % (x, y))
if self.dragStartX != x or self.dragStartY != y:
if not self.dragged:
self.screen.raise_app(self)
self.dragged = True
DialogBoxModal.onMouseMove(self, sender, x, y)
def onMouseUp(self, sender, x, y):
#log.debug("up %d %d" % (x, y))
DialogBoxModal.onMouseUp(self, sender, x, y)
if not self.dragged:
self.screen.raise_or_lower(self)
def onClick(self, sender):
if sender == self.closeButton:
self.screen.close_app(self)
class Screen(AbsolutePanel):
def __init__(self, width, height):
AbsolutePanel.__init__(self)
self.setWidth(width)
self.setHeight(height)
self.window = {}
self.window_zindex = {}
def add_app(self, app, title, width, height):
sa = Application(self, title, width, height)
sa.setWidget(app)
self.window[title] = sa
self.window_zindex[title] = len(self.window)-1
return sa
def set_app_zindex(self, title, zi):
w = self.window[title]
self.window_zindex[title] = zi
w.setzIndex(zi)
def lower_app(self, app):
app_zi = self.window_zindex[app.identifier]
for t in self.window_zindex.keys():
w = self.window[t]
zi = self.window_zindex[t]
if zi < app_zi:
self.set_app_zindex(t, zi+1)
self.set_app_zindex(app.identifier, 0)
def raise_app(self, app):
app_zi = self.window_zindex[app.identifier]
for t in self.window_zindex.keys():
w = self.window[t]
zi = self.window_zindex[t]
if zi > app_zi:
self.set_app_zindex(t, zi-1)
app_zi = len(self.window)-1
self.set_app_zindex(app.identifier, app_zi)
def raise_or_lower(self, app):
app_zi = self.window_zindex[app.identifier]
if app_zi != len(self.window)-1:
self.raise_app(app)
else:
self.lower_app(app)
def close_app(self, app):
app_zi = self.window_zindex[app.identifier]
for t in self.window_zindex.keys():
w = self.window[t]
zi = self.window_zindex[t]
if zi > app_zi:
self.set_app_zindex(t, zi-1)
t = self.window[app.identifier]
if not self.remove(t):
Window.alert("%s not in app" % app.identifier)
t.hide()
del self.window[app.identifier]
del self.window_zindex[app.identifier]