bigboard r7279 - in trunk/bigboard: . stocks/google_calendar stocks/mail



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]