bigboard r7308 - in trunk/bigboard: . httplib2 stocks/files



Author: marinaz
Date: Tue Apr 22 23:43:46 2008
New Revision: 7308
URL: http://svn.gnome.org/viewvc/bigboard?rev=7308&view=rev

Log:
Google Docs are back in the Files stock!

Needed to add back the name for the Google Docs service (writely) in the httplib, which was removed when it was last updated.

Made sure we have a sensible slideout for the Google Docs files.



Modified:
   trunk/bigboard/google.py
   trunk/bigboard/httplib2/__init__.py
   trunk/bigboard/stocks/files/FilesStock.py

Modified: trunk/bigboard/google.py
==============================================================================
--- trunk/bigboard/google.py	(original)
+++ trunk/bigboard/google.py	Tue Apr 22 23:43:46 2008
@@ -207,7 +207,7 @@
         
     def __handle_response_error(self, authcb, errcb, url, response, content):
         if response and response.status == 401:
-            _logger.debug("auth failure for fetch of %s; invoking auth callback", url)
+            _logger.debug("auth failure for fetch of %s; response message %s; invoking auth callback" % (url, response.reason))
             gobject.idle_add(lambda: authcb(url) and False)
         else:
             if response: 
@@ -523,7 +523,7 @@
         
         uri = 'http://docs.google.com/feeds/documents/private/full'
         # uri = 'http://spreadsheets.google.com/feeds/spreadsheets/private/full'
-
+       
         self.__fetcher.fetch(uri, username, password,
                              lambda url, data: self.__on_documents_load(url, data, cb, errcb),
                              lambda url, resp: self.__on_documents_error(url, resp, errcb),

Modified: trunk/bigboard/httplib2/__init__.py
==============================================================================
--- trunk/bigboard/httplib2/__init__.py	(original)
+++ trunk/bigboard/httplib2/__init__.py	Tue Apr 22 23:43:46 2008
@@ -571,9 +571,10 @@
         # For the rest we guess based on the URI
         if service == 'xapi' and  request_uri.find("calendar") > 0:
             service = "cl"
-        # No point in guessing Base or Spreadsheet
-        #elif request_uri.find("spreadsheets") > 0:
-        #    service = "wise"
+        elif service == 'xapi' and request_uri.find("documents") > 0: 
+            service = "writely"
+        elif service == 'xapi' and request_uri.find("spreadsheets") > 0:
+            service = "wise"
 
         auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent'])
         resp, content = self.http.request("https://www.google.com/accounts/ClientLogin";, method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'})

Modified: trunk/bigboard/stocks/files/FilesStock.py
==============================================================================
--- trunk/bigboard/stocks/files/FilesStock.py	(original)
+++ trunk/bigboard/stocks/files/FilesStock.py	Tue Apr 22 23:43:46 2008
@@ -76,6 +76,9 @@
     def get_source_key(self):
         return self._source_key
 
+    def get_type(self):
+        return None
+
     def create_icon_link(self):
         _logger.debug("Creating icon link for %s" % (self.get_image_name(),))
         link = IconLink(self.get_name())
@@ -129,7 +132,7 @@
             self.emit("changed")
         
     def __on_async_update(self, results):
-        _logger.debug("got async results: %s", results)
+        # _logger.debug("got async results: %s", results)
         (vfsstat, image_name) = results
         if not vfsstat:
             self._is_valid = False
@@ -184,6 +187,12 @@
         t.setDaemon(True)
         t.start()          
 
+    def get_type(self):
+        if self._mimetype:
+            _logger.debug("mimetype is %s class is %s dir %s" % (self._mimetype, self._mimetype.__class__, dir(self._mimetype)))  
+            return gnomevfs.mime_get_description(self._mimetype)
+        return None
+
 class GoogleFile(File):
     def __init__(self, google_key, google_name, doc_entry):
         super(GoogleFile, self).__init__()
@@ -207,6 +216,9 @@
 
     def get_doc_entry(self):
         return self.__doc_entry
+
+    def get_type(self):
+        return "Google Docs " + self.__doc_entry.category[0].label.title()
  
 def compare_by_date(file_a, file_b):
     # access time on all File types is currently UTC
@@ -314,10 +326,8 @@
         
         detailvbox = CanvasVBox(spacing=3)
         hbox.append(detailvbox) 
-        mime = fobj.get_mimetype()
-        if mime:
-            mimename = gnomevfs.mime_get_description(mime)
-            text = hippo.CanvasText(classes='subforeground', text=mimename, font='12px', xalign=hippo.ALIGNMENT_START)                  
+        if fobj.get_type():
+            text = hippo.CanvasText(classes='subforeground', text=fobj.get_type(), font='12px', xalign=hippo.ALIGNMENT_START)                  
             detailvbox.append(text)
         size = fobj.get_size()            
         if size is not None:
@@ -325,14 +335,26 @@
             text = hippo.CanvasText(classes='subforeground', text=sizestr, font='12px', xalign=hippo.ALIGNMENT_START)             
             detailvbox.append(text)
         fname = os.path.dirname(fobj.get_full_name())
-        if fname.startswith('file://'):
-            fname = fname[7:]
-        home = os.path.expanduser('~')
-        if fname.startswith(home):
-            fname = fname[:len(home)]
-        fname = urllib.unquote(fname)            
-        text = hippo.CanvasText(classes='subforeground', text=fname, font='12px', xalign=hippo.ALIGNMENT_START)          
-        detailvbox.append(text)
+        if fname is not None and len(fname) > 0: 
+            if fname.startswith('file://'):
+                fname = fname[7:]
+            home = os.path.expanduser('~')
+            if fname.startswith(home):
+                fname = fname[:len(home)]
+            fname = urllib.unquote(fname)            
+            text = hippo.CanvasText(classes='subforeground', text=fname, font='12px', xalign=hippo.ALIGNMENT_START)          
+            detailvbox.append(text)
+        if isinstance(fobj, GoogleFile) :
+            def activate_file(button):
+                subprocess.Popen(['gnome-open', fobj.get_url()])
+            button = hippo.CanvasButton(text="Open")
+            button.get_property('widget').connect('clicked', activate_file)
+            detailvbox.append(button)
+            return
+
+        mime = fobj.get_mimetype()
+        if not mime:
+            return    
         apps = gnomevfs.mime_get_all_applications(mime)
         if apps:
             text = hippo.CanvasText(text='Open With: ', font='14px')
@@ -377,6 +399,7 @@
 class FilesStock(Stock, google_stock.GoogleStock):
     """Shows recent files."""
     def __init__(self, *args, **kwargs):
+        _logger.debug("in files stock init")
         Stock.__init__(self, *args, **kwargs)
         google_stock.GoogleStock.__init__(self, 'files', **kwargs)
 
@@ -406,7 +429,8 @@
         
         self.__drag_window = None
         self.__drag_start_pos = None
-        # self._post_init()
+        _logger.debug("done with files stock init")
+        self._post_init()
         
     def _on_delisted(self):
         self._delist_google()
@@ -473,6 +497,7 @@
         self.__refresh_files() 
 
     def __on_failed_load(self, response):
+        _logger.debug("load failed: %s", response)
         pass
 
     def __on_more_button(self):



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