bigboard r7285 - in trunk/bigboard/stocks: files mail self



Author: marinaz
Date: Tue Apr  8 23:35:21 2008
New Revision: 7285
URL: http://svn.gnome.org/viewvc/bigboard?rev=7285&view=rev

Log:
Make sure that clicking on the same item in Self, Files, and Mail stocks closes the slideout.

Make left-click in the Files stock and browser open the file with default application. Make right-click show the slideout with information and options for which application to open the file with.


Modified:
   trunk/bigboard/stocks/files/FilesStock.py
   trunk/bigboard/stocks/files/filebrowser.py
   trunk/bigboard/stocks/mail/MailStock.py
   trunk/bigboard/stocks/self/SelfStock.py

Modified: trunk/bigboard/stocks/files/FilesStock.py
==============================================================================
--- trunk/bigboard/stocks/files/FilesStock.py	(original)
+++ trunk/bigboard/stocks/files/FilesStock.py	Tue Apr  8 23:35:21 2008
@@ -387,6 +387,7 @@
         
         self.__slideout = None 
         self.__slideout_target = None
+        self.__last_slideout_event_time = None   
 
         self.desktop_path = self._panel.get_desktop_path()
 
@@ -430,26 +431,32 @@
     def remove_google_data(self, gobj):
         self.__remove_files_for_key(gobj)
         
-    def __on_file_activated(self, fobj, lnk):
+    def on_file_activated(self, fobj, lnk, from_bigboard=True):
         _logger.debug("got file activated: %s", fobj)
         if self.__slideout is not None:
             self.__slideout.destroy()
-            self.__slideout = None
-        if fobj == self.__slideout_target:
+            self.__slideout = None      
+        if fobj == self.__slideout_target and \
+           self.__last_slideout_event_time == gtk.get_current_event_time():
             self.__slideout_target = None            
             return
         self.__slideout_target = fobj            
         self.__slideout = FileSlideout(fobj)
         def on_slideout_close(s, action_taken):
+            self.__last_slideout_event_time = gtk.get_current_event_time()
             if action_taken:
                 self._panel.action_taken()
             s.destroy()
             self.__slideout = None
-            self.__slideout_target = None
         self.__slideout.connect('close', on_slideout_close)
         item = lnk.link
         coords = item.get_context().translate_to_screen(item)
-        if not self.__slideout.slideout_from(204, coords[1]):
+        (coord_x, coord_y) = coords
+        if from_bigboard: 
+            coord_x = 204
+        else: 
+            coord_y = coord_y + 20
+        if not self.__slideout.slideout_from(coord_x, coord_y):
             self.__slideout.destroy()
             self.__slideout = None
             self.__slideout_target = None
@@ -460,7 +467,7 @@
         for document_entry in document_entries:
             google_file = GoogleFile(gobj, gobj.get_account().get_username_as_google_email(),
                                      document_entry)
-            google_file.connect('activated', self.__on_file_activated)
+            # google_file.connect('activated', self.on_file_activated)
             self.__files.append(google_file)
         self.__files.sort(compare_by_date)
         self.__refresh_files() 
@@ -507,7 +514,7 @@
             else:
                 local_file = LocalFile(url, child)
                 local_file.connect("changed", self.__on_local_file_changed)
-                local_file.connect('activated', self.__on_file_activated)            
+                # local_file.connect('activated', self.on_file_activated)            
                 self.__files.append(local_file)
 
         self.__files = filter(lambda f: f.get_url() not in old_files, self.__files)
@@ -524,8 +531,8 @@
             if i >= self.__display_limit: break
             if a_file.is_valid():                          
                 link = a_file.create_icon_link()
-                link.connect("button-press-event", self.on_button_press_event)
-                link.connect("button-release-event", self.on_button_release_event)
+                link.connect("button-press-event", self.on_button_press_event, a_file)
+                link.connect("button-release-event", self.on_button_release_event, a_file)
                 link.connect("motion-notify-event", self.on_motion_notify_event, a_file.get_url())
                 self._recentbox.append(link)
                 i += 1 
@@ -541,13 +548,18 @@
         subprocess.Popen(['gnome-open', fobj.get_url()])
     
     @log_except(_logger)
-    def on_button_press_event(self, widget, event):
-        if event.button == 1 :
+    def on_button_press_event(self, widget, event, a_file):
+        if event.button == 1:
             self.__drag_start_pos = event.x, event.y
+        elif event.button == 3:
+            self.on_file_activated(a_file, widget)
                         
         return False
     
-    def on_button_release_event(self, widget, hippo_event):
+    def on_button_release_event(self, widget, event, a_file):
+        if event.button == 1:
+            self.activate_file(a_file)
+
         self.__drag_start_pos = None
         return False
         

Modified: trunk/bigboard/stocks/files/filebrowser.py
==============================================================================
--- trunk/bigboard/stocks/files/filebrowser.py	(original)
+++ trunk/bigboard/stocks/files/filebrowser.py	Tue Apr  8 23:35:21 2008
@@ -131,6 +131,8 @@
         for a_file in self.__stock.get_files():         
             if a_file.is_valid():                          
                 link = a_file.create_icon_link()
+                link.connect("button-press-event", self.__on_link_pressed, a_file)
+                link.connect("button-release-event", self.__on_link_released, a_file)
                 self.__file_list.add_column_item(0, link)
                 self.__file_items.append(link)
                 self.__set_visibility(link)
@@ -178,8 +180,13 @@
             if not command_works(['tracker-search-tool', search]):
                 subprocess.Popen(['gnome-search-tool', '--named', search])
 
-    def __on_link_clicked(self, canvas_item, url):
-        subprocess.Popen(['gnome-open', url])
+    def __on_link_pressed(self, canvas_item, event, a_file):
+        if event.button == 3:
+            self.__stock.on_file_activated(a_file, canvas_item, False)
+
+    def __on_link_released(self, canvas_item, event, a_file):
+        if event.button == 1:
+            subprocess.Popen(['gnome-open', a_file.get_url()])
 
     def __hide(self):
         self.hide()

Modified: trunk/bigboard/stocks/mail/MailStock.py
==============================================================================
--- trunk/bigboard/stocks/mail/MailStock.py	(original)
+++ trunk/bigboard/stocks/mail/MailStock.py	Tue Apr  8 23:35:21 2008
@@ -92,7 +92,8 @@
         vbox = CanvasVBox(border_color=0x0000000ff, spacing=4)
         self.get_root().append(vbox)
         self.__header = Header(topborder=False)
-        
+        self.id = thread.id        
+
         subject = remove_strange_tags(thread.subject)
         
         subject_box = hippo.CanvasText(classes='header', text=subject)
@@ -129,7 +130,8 @@
         self._box = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
         
         self.__slideout = None
-        
+        self.__last_slideout_event_time = None       
+
         self.__current_gobj = None
         self.__google_account = None
         self.__folder = 'inbox'
@@ -170,7 +172,7 @@
             self._box.append(account)
             
             box = PrelightingCanvasBox()
-            box.connect("button-release-event", self.create_label_slideout, self.__google_account)
+            box.connect("button-press-event", self.create_label_slideout, self.__google_account)
             self._box.append(box)
             label = hippo.CanvasText(text=self.__folder, font="14px Bold Italic")
             box.append(label)
@@ -190,7 +192,7 @@
                 subject = remove_strange_tags(thread.subject, True)
                 
                 box = PrelightingCanvasBox()
-                box.connect("button-release-event", self.create_email_slideout, thread)
+                box.connect("button-press-event", self.create_email_slideout, thread)
                 self._box.append(box)
                 email = hippo.CanvasText(markup=subject, xalign=hippo.ALIGNMENT_START)
                 box.append(email)
@@ -210,10 +212,10 @@
 
     def show_slideout(self, widget):
         def on_slideout_close(s, action_taken):
+            self.__last_slideout_event_time = gtk.get_current_event_time() 
             if action_taken:
                 self._panel.action_taken()
             s.destroy()
-            self.__slideout = None
         self.__slideout.connect('close', on_slideout_close)
         y = widget.get_context().translate_to_screen(widget)[1]
         if not self.__slideout.slideout_from(204, y):
@@ -221,14 +223,22 @@
             self.__slideout = None
             return
     
-    def create_label_slideout(self, widget, hippo_event, data):
+    def create_label_slideout(self, widget, hippo_event, data):   
+        if type(self.__slideout) is LabelSlideout and \
+           self.__last_slideout_event_time == gtk.get_current_event_time():
+            self.__slideout = None
+            return 
         self.__slideout = LabelSlideout(data)
         self.__slideout.connect('changed', self.on_label_changed)
         self.show_slideout(widget)
     
     def create_email_slideout(self, widget, hippo_event, data):
-         self.__slideout = EmailSlideout(data)
-         self.show_slideout(widget)
+        if type(self.__slideout) is EmailSlideout and self.__slideout.id == data.id and \
+           self.__last_slideout_event_time == gtk.get_current_event_time():
+            self.__slideout = None
+            return 
+        self.__slideout = EmailSlideout(data)
+        self.show_slideout(widget)
     
     def on_label_changed (self, slideout, label):
         self.__folder = label

Modified: trunk/bigboard/stocks/self/SelfStock.py
==============================================================================
--- trunk/bigboard/stocks/self/SelfStock.py	(original)
+++ trunk/bigboard/stocks/self/SelfStock.py	Tue Apr  8 23:35:21 2008
@@ -286,6 +286,7 @@
         self.info_loaded = False
 
         self.__slideout = None
+        self.__last_slideout_event_time = None
         
         self.__portfolio_manager = None
 
@@ -379,12 +380,16 @@
         libbig.show_url(urlparse.urljoin(globals.get_baseurl(), url))
             
     @log_except(_logger)
-    def __on_activate(self):
+    def __on_activate(self): 
         if self.__slideout:
+            self.__last_slideout_event_time = gtk.get_current_event_time() 
             self.__slideout.destroy()
             self.__slideout = None
             return
 
+        if self.__last_slideout_event_time == gtk.get_current_event_time():
+            return 
+
         self.__create_fus_proxy()
         self.__slideout = SelfSlideout(self, self.__myself, fus=self.__fus_service, logger=_logger)
         self.__slideout.connect('account', lambda s: self.__do_account())        



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]