comparison libervia.py @ 6:a663b9955cf3

drap and drop first draft
author Goffi <goffi@goffi.org>
date Mon, 14 Feb 2011 01:46:07 +0100
parents 7325e787c22b
children c80b75bf2e91
comparison
equal deleted inserted replaced
5:c8d3821efc36 6:a663b9955cf3
28 from pyjamas.ui.Grid import Grid 28 from pyjamas.ui.Grid import Grid
29 from pyjamas.ui.Label import Label 29 from pyjamas.ui.Label import Label
30 from pyjamas.ui import HasAlignment 30 from pyjamas.ui import HasAlignment
31 from pyjamas.ui.MenuBar import MenuBar 31 from pyjamas.ui.MenuBar import MenuBar
32 from pyjamas.ui.MenuItem import MenuItem 32 from pyjamas.ui.MenuItem import MenuItem
33 from pyjamas.ui.AutoComplete import AutoCompleteTextBox
34 from pyjamas.ui.DropWidget import DropWidget
33 from pyjamas import Window 35 from pyjamas import Window
34 from pyjamas.ui.AutoComplete import AutoCompleteTextBox
35 from pyjamas.JSONService import JSONProxy 36 from pyjamas.JSONService import JSONProxy
36 from register import RegisterPanel, RegisterBox 37 from register import RegisterPanel, RegisterBox
37 from pyjamas import DOM 38 from pyjamas import DOM
38 from contact import ContactPanel 39 from contact import ContactPanel
39 from datetime import datetime 40 from datetime import datetime
156 if isinstance(sender, GroupLabel): 157 if isinstance(sender, GroupLabel):
157 for contact in self._contactList: 158 for contact in self._contactList:
158 if contact.jid in self.groups[sender.group]: 159 if contact.jid in self.groups[sender.group]:
159 contact.removeStyleName("selected") 160 contact.removeStyleName("selected")
160 161
162 class EmptyPanel(DropWidget, SimplePanel):
163 """Empty dropable panel"""
164
165 def __init__(self):
166 SimplePanel.__init__(self)
167 _panel = HTMLPanel("&nbsp;")
168 #_panel.setHeight('100%')
169 #_panel.setWidth('100%')
170 self.add(_panel)
171 self.setHeight('100%')
172 DropWidget.__init__(self)
173
174 def onDragEnter(self, event):
175 print "Empty Panel: onDragEnter"
176 self.addStyleName('dragover')
177 DOM.eventPreventDefault(event)
178
179 def onDragLeave(self, event):
180 print "Empty Panel: onDragLeave"
181 self.removeStyleName('dragover')
182
183 def onDragOver(self, event):
184 print "Empty Panel: onDragOver"
185 DOM.eventPreventDefault(event)
186
187 def onDrop(self, event):
188 print "Empty Panel: onDragOver"
189 dt = event.dataTransfer
190 #'text', 'text/plain', and 'Text' are equivalent.
191 try:
192 item = dt.getData("text/plain")
193 print "message: %s" % item
194 except:
195 print "no message found"
196 DOM.eventPreventDefault(event)
197
198
199
161 class MicroblogEntry(SimplePanel): 200 class MicroblogEntry(SimplePanel):
162 201
163 def __init__(self, body, author, timestamp): 202 def __init__(self, body, author, timestamp):
164 SimplePanel.__init__(self) 203 SimplePanel.__init__(self)
165 204
166 _datetime = datetime.fromtimestamp(timestamp) 205 _datetime = datetime.fromtimestamp(timestamp)
167 206
168 panel = HTMLPanel("<div class='mb_entry_author'>%(author)s on <span class='mb_entry_timestamp'>%(timestamp)s</span></div><p class='mb_entry_body'>%(body)s</p>" % 207 panel = HTMLPanel("<div class='mb_entry_header'><span class='mb_entry_author'>%(author)s</span> on <span class='mb_entry_timestamp'>%(timestamp)s</span></div><div class='mb_entry_body'>%(body)s</div>" %
169 {"author": author, 208 {"author": author,
170 "timestamp": _datetime, 209 "timestamp": _datetime,
171 "body": body} 210 "body": body}
172 ) 211 )
173 panel.setStyleName('microblogEntry') 212 panel.setStyleName('microblogEntry')
199 self._right.setHeight('100%') 238 self._right.setHeight('100%')
200 self.add(self._left) 239 self.add(self._left)
201 self.setCellWidth(self._left, "15%") 240 self.setCellWidth(self._left, "15%")
202 self.add(self._right) 241 self.add(self._right)
203 self.setCellWidth(self._right, "85%") 242 self.setCellWidth(self._right, "85%")
243 self.setHeight('100%')
204 244
205 def changePanel(self, idx, panel): 245 def changePanel(self, idx, panel):
206 print "panel:",panel 246 print "panel:",panel
207 print "idx:",idx 247 print "idx:",idx
208 self._right.setWidget(0,idx,panel) 248 self._right.setWidget(0,idx,panel)
241 self.contactPanel = ContactPanel(self) 281 self.contactPanel = ContactPanel(self)
242 self.panel = MainPanel(self) 282 self.panel = MainPanel(self)
243 self.middle_panel = self.panel.middle_panel 283 self.middle_panel = self.panel.middle_panel
244 self.mpanels = [MicroblogPanel()] 284 self.mpanels = [MicroblogPanel()]
245 self.middle_panel.changePanel(1,self.mpanels[0]) 285 self.middle_panel.changePanel(1,self.mpanels[0])
286 self.middle_panel.changePanel(0,EmptyPanel())
287 self.middle_panel.changePanel(2,EmptyPanel())
246 self._dialog = None 288 self._dialog = None
247 RootPanel().add(self.panel) 289 RootPanel().add(self.panel)
248 self._register = RegisterCall() 290 self._register = RegisterCall()
249 self._register.call('isRegistered',self._isRegisteredCB) 291 self._register.call('isRegistered',self._isRegisteredCB)
250 292