bigboard r7279 - in trunk/bigboard: . stocks/google_calendar stocks/mail
- From: marinaz svn gnome org
- To: svn-commits-list gnome org
- Subject: bigboard r7279 - in trunk/bigboard: . stocks/google_calendar stocks/mail
- Date: Sat, 5 Apr 2008 00:41:46 +0100 (BST)
Author: marinaz
Date: Sat Apr 5 00:41:45 2008
New Revision: 7279
URL: http://svn.gnome.org/viewvc/bigboard?rev=7279&view=rev
Log:
Remove e-mails from the Email stock when the e-mail account is removed
or disabled.
Connect the CalendarStock to the close signal from the slideout, so that
the slideouts get closed.
Add code to let the parts of the bigboard re-process the event once it is
processed by the Slideout code and results in closing the slideout.
Add code to the CalendarStock to check if we are re-processing the same event
that got us to close the slideout for a given list item, so that we
don't re-open the slideout again. (Allow closing the slideout by clicking
on the same list item.) Still need to add this feauture to the Email and
Files stocks.
Modified:
trunk/bigboard/slideout.py
trunk/bigboard/stocks/google_calendar/CalendarStock.py
trunk/bigboard/stocks/mail/MailStock.py
Modified: trunk/bigboard/slideout.py
==============================================================================
--- trunk/bigboard/slideout.py (original)
+++ trunk/bigboard/slideout.py Sat Apr 5 00:41:45 2008
@@ -67,7 +67,7 @@
def __do_grabs(self):
# owner_events=True says "only grab events going to other applications"; treat
# events going to this application normally; We need that because we want
- # events to subwindows of ourwindow to be passed appropriately
+ # events to subwindows of our window to be passed appropriately
if gtk.gdk.pointer_grab(self.window,
owner_events=True,
event_mask=gtk.gdk.BUTTON_PRESS_MASK,
@@ -87,16 +87,20 @@
if event.window == self.window and event.x > 0 and event.x < self.allocation.width and event.y > 0 and event.y < self.allocation.height:
return BigWindow.do_button_press_event(self, event)
else:
- self.popdown()
+ other_part_of_bigboard = event.window != self.window
+ self.popdown(event)
+ if other_part_of_bigboard:
+ event_widget = event.window.get_user_data()
+ event_widget.event(event)
return True
def do_key_press_event(self, event):
if event.keyval == gtk.keysyms.Escape:
- self.popdown()
+ self.popdown(event)
return True
return False
- def popdown(self):
+ def popdown(self, event):
self.emit('close', False)
def __sync_opacity(self, *args):
Modified: trunk/bigboard/stocks/google_calendar/CalendarStock.py
==============================================================================
--- trunk/bigboard/stocks/google_calendar/CalendarStock.py (original)
+++ trunk/bigboard/stocks/google_calendar/CalendarStock.py Sat Apr 5 00:41:45 2008
@@ -1,4 +1,4 @@
-import logging, os, time, datetime, re, string, copy, urllib
+import logging, os, time, datetime, re, string, copy, urllib, gtk
import xml, xml.sax, xml.sax.saxutils
import gobject, pango, dbus, dbus.glib
@@ -430,6 +430,7 @@
self.__slideout = None
self.__slideout_event = None
+ self.__last_slideout_event_time = None
self.__event_alerts = {}
self.__event_notify_ids = {}
@@ -1016,15 +1017,18 @@
local_google_key.fetch_calendar(self.__on_calendar_load, self.__on_failed_load, calendar_feed_url, self.__event_range_start, self.__event_range_end)
def __close_slideout(self, *args):
+ self.__last_slideout_event_time = gtk.get_current_event_time()
if self.__slideout:
self.__slideout.destroy()
self.__slideout = None
- self.__slideout_event = None
+ # we set self.__slideout_event to None when we process a click on that event
def __handle_event_pressed(self, event, *args):
- same_event = (self.__slideout_event is None and [False] or [self.__slideout_event.get_event().get_link() == event.get_event().get_link()])[0]
- self.__close_slideout()
- if same_event:
+ # this avoids showing the slideout again when we are processing the click that got it to close
+ repeat_click_event = self.__last_slideout_event_time == gtk.get_current_event_time()
+ same_event_clicked = (self.__slideout_event is None and [False] or [self.__slideout_event.get_event().get_link() == event.get_event().get_link()])[0]
+ if repeat_click_event and same_event_clicked:
+ self.__slideout_event = None
return True
self.__slideout = slideout.ThemedSlideout()
@@ -1039,7 +1043,12 @@
p = EventDetailsDisplay(event.get_event(), calendar_dict_list)
self.__slideout.get_root().append(p)
+ # this signal is emitted if the slideout should be closed do to the event with the slideout,
+ # e.g. a web link was clicked
p.connect("close", self.__close_slideout)
+ # this signal is emmited if the slideout should be closed because the user clicked elsewhere
+ # on the desktop
+ self.__slideout.connect("close", self.__close_slideout)
return True
def get_events(self):
Modified: trunk/bigboard/stocks/mail/MailStock.py
==============================================================================
--- trunk/bigboard/stocks/mail/MailStock.py (original)
+++ trunk/bigboard/stocks/mail/MailStock.py Sat Apr 5 00:41:45 2008
@@ -126,10 +126,11 @@
Stock.__init__(self, *args, **kwargs)
google_stock.GoogleStock.__init__(self, 'gmail', **kwargs)
- self._box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, spacing=4, padding_top=2)
+ self._box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
self.__slideout = None
+ self.__current_gobj = None
self.__google_account = None
self.__folder = 'inbox'
@@ -145,10 +146,17 @@
return self._box
def update_google_data(self, gobj):
+ self.__current_gobj = gobj
username = gobj.get_account().get_username_as_google_email()
password = gobj.get_account().get_password()
self.__update_email_box(username, password)
+ def remove_google_data(self, gobj):
+ if self.__current_gobj == gobj:
+ self._box.remove_all()
+ self._login_button.set_property('text', google_stock.LOGIN_TO_GOOGLE_STRING)
+ self._box.append(self._login_button)
+
def __update_email_box (self, username, password):
_logger.debug("will update mailbox")
try:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]